Change mbtk_source_v2
Change-Id: I0699762ab517b43060aad43fec0d87c2bfc1445d
diff --git a/build.sh b/build.sh
index fd48038..61f1207 100755
--- a/build.sh
+++ b/build.sh
@@ -1,33 +1,12 @@
#!/bin/bash
-# Config item.
-# static / shared
-#LIB_TYPE=static
-# gcc-4.9 / gcc-8.4
-#export PLATFORM=gcc-4.9
-
# static / shared
export BUILD_LIB_TYPE=shared
-# gcc-4.9 / gcc-8.4
+
+export STAGING_DIR=
ROOT_DIR=`pwd`
-cd ..
-grep "url" .git/config | cut -d " " -f 3 | grep "kernel_5.4.195"
-if [ $? -eq "0" ]; then
- export BUILD_PLATFORM=v2102
-else
- export BUILD_PLATFORM=master
-fi
-
-export BUILD_BRANCH=`git branch | grep "*" | cut -d " " -f 2`
-cd $ROOT_DIR
-
-BUILD_PROJECT_TEMP=`cat config | grep CONFIG_PROJECT | cut -d '=' -f 2`
-if [ "$BUILD_PROJECT_TEMP" == "DEFAULT" ];then
- BUILD_PROJECT_TEMP=`cat ../build_version | grep PROJECT | cut -d '=' -f 2`
-fi
-
BUILD_LIBC_TEMP=`cat config | grep CONFIG_MBTK_LIBC | cut -d '=' -f 2`
if [ "$BUILD_LIBC_TEMP" == "musl" ];then
export BUILD_STD_LIBC=musl
@@ -42,67 +21,6 @@
export MBTK_SOURCE_VERSION=1
fi
-if [ "$BUILD_PLATFORM" == "master" ];then
- if [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-4`" == "L509" ];then
- export BUILD_PROJECT=L509
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-4`" == "L508" ];then
- export BUILD_PROJECT=L508
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-6`" == "PN1803" ];then
- export BUILD_PROJECT=PN1803
- else
- echo "Unknown BUILD_PROJECT:$BUILD_PROJECT_TEMP"
- exit 1
- fi
-else
- if [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-4`" == "L509" ];then
- export BUILD_PROJECT=L509
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-7`" == "L508_X6" ];then
- export BUILD_PROJECT=L508_X6
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-4`" == "L508" ];then
- export BUILD_PROJECT=L508
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-6`" == "PN1803" ];then
- export BUILD_PROJECT=PN1803
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-6`" == "T108-2" ];then
- export BUILD_PROJECT=T108_2
- elif [ "`echo $BUILD_PROJECT_TEMP | cut -c 1-4`" == "T108" ];then
- export BUILD_PROJECT=T108
- else
- echo "Unknown BUILD_PROJECT:$BUILD_PROJECT_TEMP"
- exit 1
- fi
-fi
-
-export MBTK_AF_SUPPORT=`cat config | grep CONFIG_AF_SUPPORT | cut -d '=' -f 2`
-export MBTK_YX_SUPPORT=`cat config | grep CONFIG_YX_SUPPORT | cut -d '=' -f 2`
-export MBTK_SG_SUPPORT=`cat config | grep CONFIG_SG_SUPPORT | cut -d '=' -f 2`
-export MBTK_ALL_CID_SUPPORT=`cat config | grep CONFIG_MBTK_ALL_CID_SUPPORT | cut -d '=' -f 2`
-export MBTK_GNSS_MODE=`cat config | grep CONFIG_MBTK_GNSS_MODE | cut -d '=' -f 2`
-export MBTK_DUMP_SUPPORT=`cat config | grep CONFIG_MBTK_DUMP_SUPPORT | cut -d '=' -f 2`
-
-# 赛格默认打开 ALL_CID_SUPPORT
-if [ "$MBTK_SG_SUPPORT" == "y" ];then
- export MBTK_ALL_CID_SUPPORT=y
- export BUILD_STD_LIBC=musl
-fi
-
-# 安付默认打开 ALL_CID_SUPPORT
-if [ "$MBTK_AF_SUPPORT" == "y" ];then
- export BUILD_STD_LIBC=musl
-fi
-
-
-# musl 不支持mbtk dump
-if [ "$BUILD_STD_LIBC" == "musl" ];then
- export MBTK_DUMP_SUPPORT=n
-fi
-
-export STAGING_DIR=
-
-#TOOLCHAIN_DIR=$ROOT_DIR/toolchain/$BUILD_PLATFORM
-#echo "toolchain : $ROOT_DIR"
-
-
-
function build()
{
cd mbtk
@@ -125,31 +43,6 @@
echo "Build MBTK success."
}
-ln_lib()
-{
- PWD_TEMP=`pwd`
-
- cd $ROOTFS_DIR/lib
- [ ! -f libpoweralarm.so ] && ln -s liblynq_lib.so libpoweralarm.so
- [ ! -f liblynq-qser-audio.so ] && ln -s liblynq_lib.so liblynq-qser-audio.so
- [ ! -f liblynq-adc.so ] && ln -s liblynq_lib.so liblynq-adc.so
- [ ! -f liblynq-fota.so ] && ln -s liblynq_lib.so liblynq-fota.so
- [ ! -f liblynq-qser-gnss.so ] && ln -s liblynq_lib.so liblynq-qser-gnss.so
- [ ! -f liblynq-log.so ] && ln -s liblynq_lib.so liblynq-log.so
- [ ! -f liblynq-led.so ] && ln -s liblynq_lib.so liblynq-led.so
- [ ! -f liblynq-qser-autosuspend.so ] && ln -s liblynq_lib.so liblynq-qser-autosuspend.so
- [ ! -f liblynq-systime.so ] && ln -s liblynq_lib.so liblynq-systime.so
- [ ! -f liblynq-qser-thermal.so ] && ln -s liblynq_lib.so liblynq-qser-thermal.so
- [ ! -f liblynq-qser-sim.so ] && ln -s liblynq_lib.so liblynq-qser-sim.so
- [ ! -f liblynq-qser-sms.so ] && ln -s liblynq_lib.so liblynq-qser-sms.so
- [ ! -f liblynq-qser-voice.so ] && ln -s liblynq_lib.so liblynq-qser-voice.so
- [ ! -f liblynq-qser-network.so ] && ln -s liblynq_lib.so liblynq-qser-network.so
- [ ! -f liblynq-qser-data.so ] && ln -s liblynq_lib.so liblynq-qser-data.so
- [ ! -f liblynq-irq.so ] && ln -s liblynq_lib.so liblynq-irq.so
-
- cd $PWD_TEMP
-}
-
function copy_bin_and_lib()
{
# Copy All SO Files.
@@ -193,8 +86,6 @@
fi
copy_bin_and_lib $ROOTFS_DIR
-
- ln_lib
else
echo "No found rootfs : $ROOTFS_DIR"
fi
@@ -232,15 +123,8 @@
function print_arg()
{
- echo BUILD_PROJECT=$BUILD_PROJECT
echo BUILD_STD_LIBC=$BUILD_STD_LIBC
echo MBTK_SOURCE_VERSION=$MBTK_SOURCE_VERSION
- echo MBTK_GNSS_MODE=$MBTK_GNSS_MODE
- echo MBTK_AF_SUPPORT=$MBTK_AF_SUPPORT
- echo MBTK_YX_SUPPORT=$MBTK_YX_SUPPORT
- echo MBTK_SG_SUPPORT=$MBTK_SG_SUPPORT
- echo MBTK_ALL_CID_SUPPORT=$MBTK_ALL_CID_SUPPORT
- echo MBTK_DUMP_SUPPORT=$MBTK_DUMP_SUPPORT
}
function main()
@@ -255,7 +139,7 @@
print_arg
- file_copy
+ # file_copy
else
if [ ! -d out/lib ];then
mkdir -p out/lib
@@ -269,7 +153,7 @@
print_arg
- file_copy
+ # file_copy
fi
temp_mbtk_copy
diff --git a/config b/config
index 7e8a4e1..d379e8f 100755
--- a/config
+++ b/config
@@ -1,27 +1,5 @@
-# DEFAULT / L508 / L509 / L508_X6 / T108 / T108-2 / T108
-CONFIG_PROJECT=DEFAULT
-
# Libc glibc / musl
CONFIG_MBTK_LIBC=glibc
# mbtk_source version : 1 / 2
CONFIG_MBTK_SOURCE_VERSION=1
-
-# MBTK gnss mode (gnss_all / gnss_5311 / gnss_6228 / gnss_8122)
-CONFIG_MBTK_GNSS_MODE=gnss_all
-
-# Custom AF support?
-CONFIG_AF_SUPPORT=n
-
-# Custom YX support?
-CONFIG_YX_SUPPORT=n
-
-#Custom SG support?
-CONFIG_SG_SUPPORT=n
-
-#set all apn cid support?
-CONFIG_MBTK_ALL_CID_SUPPORT=n
-
-# MBTK dump support?
-CONFIG_MBTK_DUMP_SUPPORT=y
-
diff --git a/mbtk/Make.defines b/mbtk/Make.defines
index a5dccf4..ad6da5c 100755
--- a/mbtk/Make.defines
+++ b/mbtk/Make.defines
@@ -8,16 +8,6 @@
OUT_DIR = $(ROOT)/out
LOCAL_PATH=.
-ifeq ($(BUILD_PLATFORM), master)
-ifeq ($(BUILD_BRANCH), rls3895)
-BUILD_TOOLCHAIN_DIR = $(ROOT)/toolchain/gcc-4.9-rls3895
-else
-BUILD_TOOLCHAIN_DIR = $(ROOT)/toolchain/gcc-4.9
-endif
-CC=$(BUILD_TOOLCHAIN_DIR)/bin/arm-openwrt-linux-uclibcgnueabi-gcc
-AR=$(BUILD_TOOLCHAIN_DIR)/bin/arm-openwrt-linux-uclibcgnueabi-ar
-else ifeq ($(BUILD_PLATFORM), v2102)
-
ifeq ($(BUILD_STD_LIBC), glibc)
BUILD_TOOLCHAIN_DIR = $(ROOT)/toolchain/gcc-8.4-glibc
CC=$(BUILD_TOOLCHAIN_DIR)/bin/arm-openwrt-linux-gnueabi-gcc
@@ -27,10 +17,6 @@
CC=$(BUILD_TOOLCHAIN_DIR)/bin/arm-openwrt-linux-muslgnueabi-gcc
AR=$(BUILD_TOOLCHAIN_DIR)/bin/arm-openwrt-linux-muslgnueabi-ar
endif
-else
-CC=gcc
-AR=ar
-endif
MAKE=make
@@ -82,111 +68,6 @@
#BUILD_PROJECT_X=$(shell echo $(BUILD_PROJECT) | cut -c 1-4)
#$(info BUILD_PROJECT_X=$(BUILD_PROJECT_X))
-# 1806
-ifeq ($(BUILD_PLATFORM), v2102)
-DEFINE += -DMBTK_PLATFORM_KERNEL_5
-
-ifeq ($(BUILD_PROJECT), L508_X6)
-DEFINE += -DMBTK_PROJECT_L508_X6
-else
-ifeq ($(BUILD_PROJECT), T108_2)
-DEFINE += -DMBTK_PROJECT_T108
-else
-ifeq ($(BUILD_PROJECT), T108)
-DEFINE += -DMBTK_PROJECT_T108
-else
-ifeq ($(BUILD_PROJECT), L508)
-DEFINE += -DMBTK_PROJECT_L508
-else
-ifeq ($(BUILD_PROJECT), L509)
-DEFINE += -DMBTK_PROJECT_L509
-else
-$(info BUILD_PROJECT=Unknown)
-endif
-endif
-endif
-endif
-endif
-
-# 1803
-else
-DEFINE += -DMBTK_POLARSSL_SUPPORT
-
-ifeq ($(BUILD_BRANCH), rls3671)
-DEFINE += -DMBTK_MP3_SUPPORT
-endif
-
-DEFINE += -DMBTK_PLATFORM_KERNEL_3
-
-ifeq ($(BUILD_PROJECT), L508)
-DEFINE += -DMBTK_PROJECT_L508
-else
-ifeq ($(BUILD_PROJECT), L509)
-DEFINE += -DMBTK_PROJECT_L509
-else
-ifeq ($(BUILD_PROJECT), PN1803)
-DEFINE += -DMBTK_PROJECT_PN1803
-else
-$(info BUILD_PROJECT=Unknown)
-endif
-endif
-endif
-endif
-
-ifeq ($(MBTK_AF_SUPPORT), y)
-DEFINE += -DMBTK_AF_SUPPORT
-else
-ifeq ($(MBTK_AF_SUPPORT), Y)
-DEFINE += -DMBTK_AF_SUPPORT
-endif
-endif
-
-ifeq ($(MBTK_YX_SUPPORT), y)
-DEFINE += -DMBTK_YX_SUPPORT
-else
-ifeq ($(MBTK_YX_SUPPORT), Y)
-DEFINE += -DMBTK_YX_SUPPORT
-endif
-endif
-
-ifeq ($(MBTK_SG_SUPPORT), y)
-DEFINE += -DMBTK_SG_SUPPORT
-else
-ifeq ($(MBTK_SG_SUPPORT), Y)
-DEFINE += -DMBTK_SG_SUPPORT
-endif
-endif
-
-ifeq ($(MBTK_ALL_CID_SUPPORT), y)
-DEFINE += -DMBTK_ALL_CID_SUPPORT
-else
-ifeq ($(MBTK_ALL_CID_SUPPORT), Y)
-DEFINE += -DMBTK_ALL_CID_SUPPORT
-endif
-endif
-
-ifeq ($(MBTK_GNSS_MODE), gnss_6228)
-DEFINE += -DMBTK_GNSS_6228
-else
-ifeq ($(MBTK_GNSS_MODE), gnss_5311)
-DEFINE += -DMBTK_GNSS_5311
-else
-ifeq ($(MBTK_GNSS_MODE), gnss_8122)
-DEFINE += -DMBTK_GNSS_8122
-else
-DEFINE += -DMBTK_GNSS_ALL
-endif
-endif
-endif
-
-ifeq ($(MBTK_DUMP_SUPPORT), y)
-DEFINE += -DMBTK_DUMP_SUPPORT
-else
-ifeq ($(MBTK_DUMP_SUPPORT), Y)
-DEFINE += -DMBTK_DUMP_SUPPORT
-endif
-endif
-
ifeq ($(MBTK_SOURCE_VERSION), 2)
DEFINE += -DMBTK_SOURCE_VERSION_2
endif
diff --git a/mbtk/Makefile b/mbtk/Makefile
index c7157cf..322d28f 100755
--- a/mbtk/Makefile
+++ b/mbtk/Makefile
@@ -1,16 +1,11 @@
BUILD_ROOT = $(shell pwd)
include Make.defines
-# Build so file.
-DIRS = libmbtk_lib libmbtk_net libmbtk_coap libmbtk_tcpip libmbtk_http libmbtk_ftp libmbtk_mqtt \
- libmbtk_audio libmbtk_fota libmbtk_factory libmbtk_gnss
-
-# Build libmbtk_ril libql_lib and liblynq_lib.
+# Build a file.
ifeq ($(MBTK_SOURCE_VERSION), 2)
-DIRS += libmbtk_ril_v2
-# libql_lib_v2 liblynq_lib_v2
+DIRS = libmbtk_lib_v2
else
-DIRS += libmbtk_ril libql_lib liblynq_lib
+DIRS = libmbtk_lib
endif
# Build bin file.
@@ -23,7 +18,7 @@
DIRS += aboot-tiny mbtk_adbd mbtk_logd mbtk_utils mbtk_utils_linux mbtk_gnssd
# Build test file.
-DIRS += test
+#DIRS += test
#exclude_dirs := include bin
#test_dirs := $(shell find test/ -maxdepth 1 -type d)
diff --git a/mbtk/include/lynq/liblog.h b/mbtk/include/lynq/liblog.h
deleted file mode 100755
index 0f511ce..0000000
--- a/mbtk/include/lynq/liblog.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef __LIBLOG_H__
-#define __LIBLOG_H__
-
-#include <unistd.h>
-#include "mbtk_log.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum
-{
- LOG_UNSET = -1,
- LOG_VERBOSE = 8,
- LOG_ERROR = 3,
- LOG_WARNING = 4,
- LOG_INFO = 6,
- LOG_DEBUG = 7,
- LOG_LEVEL_MAX = 9
-}log_level_enum;
-
-void lynq_log_global_output(log_level_enum Level,const char *format,...);
-void lynq_log_configuration_init(const char *log_name);
-const char* lynq_read_log_version();
-
-//log level api
-int lynq_set_log_level(const char * module_name, log_level_enum level);
-int lynq_get_log_level(const char * module_name, log_level_enum *level);
-int lynq_set_special_log_level(const char * exe_name, const char * module_name, log_level_enum level);
-int lynq_get_special_log_level(const char * exe_name, const char * module_name, log_level_enum *level);
-int lynq_notify_recalc_log_level(pid_t pid);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif //__LOG_H__
diff --git a/mbtk/include/lynq/liblynq-at-common.h b/mbtk/include/lynq/liblynq-at-common.h
deleted file mode 100755
index 5ca8ca8..0000000
--- a/mbtk/include/lynq/liblynq-at-common.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef LIBLYNQ_AT_COMMON_H
-#define LIBLYNQ_AT_COMMON_H 1
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void ( *lynq_atsvc_incb )( const char *input,const int length);
-typedef void ( *lynq_atsvc_outcb )(char *output, int out_max_size, int mode);
-lynq_atsvc_incb lynq_register_at_common(lynq_atsvc_outcb out_cb);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
\ No newline at end of file
diff --git a/mbtk/include/lynq/libpoweralarm.h b/mbtk/include/lynq/libpoweralarm.h
deleted file mode 100755
index 4110fba..0000000
--- a/mbtk/include/lynq/libpoweralarm.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************
-*
-* @brief: none
-* @details: add libpoweralarm api
-* @author: l.yang
-* @date: 2023.8.21
-* @version: V1.0
-* @copyright:Copyright (c) MobileTek
-*
-*********************************************/
-
-#ifndef _LYNQ_POWERALARM_
-#define _LYNQ_POWERALARM_
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);
-int lynq_rtc_service_init(void);
-int lynq_rtc_service_deinit(void);
-ssize_t poweralarm(char *buffer,int src_id);
-ssize_t wakealarm(char *buffer,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify );
-ssize_t cancel_wakealarm(int src_id, int rtc_id);
-
-int lynq_set_wakealarm(unsigned long time_sec,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify );
-int lynq_set_poweralarm(unsigned long time_sec,int src_id);
-
-
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-
-
diff --git a/mbtk/include/lynq/lynq-adc.h b/mbtk/include/lynq/lynq-adc.h
deleted file mode 100755
index a0051cc..0000000
--- a/mbtk/include/lynq/lynq-adc.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-// #include <sc_bsp.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum ADC_CHANNEL_ENUM
-{
- QADC_NONE = 0,
- ADC0 =1,
- ADC1 =2,
- ADC2 =3,
- QADC_END
-}ADC_CHANNEL_E;
-
-int qser_adc_show(ADC_CHANNEL_E qadc);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/include/lynq/lynq-gpio.h b/mbtk/include/lynq/lynq-gpio.h
deleted file mode 100755
index b5377c5..0000000
--- a/mbtk/include/lynq/lynq-gpio.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-//#include <sc_bsp.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_GPIO_NUM (200)
-static void *test_gpio_handle[MAX_GPIO_NUM]={NULL};
-
-int lynq_gpio_init(int gpio, int direction, int value, int pullsel);
-
-int lynq_gpio_deinit(int gpio);
-
-int lynq_gpio_direction_set(int gpio, int direction);
-
-int lynq_gpio_value_set(int gpio, int value);
-
-int lynq_gpio_value_get(int gpio);
-
-int lynq_gpio_pullsel_set(int gpio, int pullsel);
-
-int lynq_gpio_pullsel_get(int gpio);
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/include/lynq/lynq-irq.h b/mbtk/include/lynq/lynq-irq.h
deleted file mode 100755
index 4ad03c5..0000000
--- a/mbtk/include/lynq/lynq-irq.h
+++ /dev/null
@@ -1,177 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-#include <time.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-
-struct sc_irq_info {
- unsigned int line;
- unsigned int type;
-};
-
-#define SC_IRQ_IOC_MAGIC 'I'
-
-/*ioctl cmd usd by device*/
-#define SC_IRQ_INSTALL _IOW(SC_IRQ_IOC_MAGIC, 1, char *)
-#define SC_IRQ_SET_TYPE _IOW(SC_IRQ_IOC_MAGIC, 2, char *)
-#define SC_IRQ_SET_WAKE _IOW(SC_IRQ_IOC_MAGIC, 3, char *)
-#define SC_IRQ_GET_WAKE _IOW(SC_IRQ_IOC_MAGIC, 4, char *)
-#define SC_IRQ_UNINSTALL _IOW(SC_IRQ_IOC_MAGIC, 5, char *)
-
-#define SC_IRQ_GET_STATUS _IOW(SC_IRQ_IOC_MAGIC, 6, char *)
-#define SC_IRQ_CLEAR_STATUS _IOW(SC_IRQ_IOC_MAGIC, 7, char *)
-
-#define SC_IRQ_DEV "/dev/sc_irq"
-
-
-
-/*----------------------------------------------------------*/
-struct sc_pm_info {
- unsigned int sleep_time; /* ms */
- unsigned int wake_event;
-};
-
-#define SC_PM_WL_EVENT_EXT0 ((unsigned int)1 << 0)
-#define SC_PM_WL_EVENT_EXT1 ((unsigned int)1 << 1)
-#define SC_PM_WL_EVENT_EXT2 ((unsigned int)1 << 2)
-#define SC_PM_WL_EVENT_EXT3 ((unsigned int)1 << 3)
-#define SC_PM_WL_EVENT_EXT4 ((unsigned int)1 << 4)
-#define SC_PM_WL_EVENT_EXT5 ((unsigned int)1 << 5)
-#define SC_PM_WL_EVENT_EXT6 ((unsigned int)1 << 6)
-#define SC_PM_WL_EVENT_EXT7 ((unsigned int)1 << 7)
-
-#define SC_PM_IOC_MAGIC 'P'
-
-/*ioctl cmd usd by device*/
-#define SC_PM_WL_SET _IOW(SC_PM_IOC_MAGIC, 1, char *)
-#define SC_PM_WL_CLEAR _IOW(SC_PM_IOC_MAGIC, 2, char *)
-#define SC_PM_WL_GET _IOW(SC_PM_IOC_MAGIC, 3, char *)
-
-#define SC_PM_DEV "/dev/sc_pm"
-
-
-typedef void (*irq_handler)(void);
-
-#define SC_LIBIRQ_EXT0 (0)
-#define SC_LIBIRQ_EXT1 (1)
-#define SC_LIBIRQ_EXT2 (2)
-#define SC_LIBIRQ_EXT3 (3)
-#define SC_LIBIRQ_EXT4 (4)
-#define SC_LIBIRQ_EXT5 (5)
-#define SC_LIBIRQ_EXT6 (6)
-#define SC_LIBIRQ_EXT7 (7)
-#define SC_LIBIRQ_EXT8 (8)
-#define SC_LIBIRQ_EXT9 (9)
-#define SC_LIBIRQ_EXT10 (10)
-#define SC_LIBIRQ_EXT11 (11)
-#define SC_LIBIRQ_EXT12 (12)
-#define SC_LIBIRQ_EXT13 (13)
-#define SC_LIBIRQ_EXT14 (14)
-#define SC_LIBIRQ_EXT15 (15)
-#define SC_LIBIRQ_MAX (200)
-
-#define SC_LIBIRQ_TYPE_RISING (0)
-#define SC_LIBIRQ_TYPE_FALLING (1)
-#define SC_LIBIRQ_TYPE_LEVEL_HIGH (2)
-#define SC_LIBIRQ_TYPE_LEVEL_LOW (3)
-#define SC_LIBIRQ_TYPE_MAX (4)
-
-/*
- * Add a handler for an interrupt line.
- *
- * line : The interrupt line
- * handler : Function to be called when the IRQ occurs.
- * trig_type : rising edge or fallling edge
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_install(unsigned int line, irq_handler handler, int trig_type);
-
-/*
- * free an interrupt allocated with sc_irq_install.
- *
- * line : The interrupt line
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_uninstall(unsigned int line);
-
-/*
- * set the irq trigger type for an irq.
- *
- * line : The interrupt line
- * trig_type : rising edge or fallling edge
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_set_type(unsigned int line, int trig_type);
-
-/*
- * get the irq trigger type for an irq.
- *
- * line : The interrupt line
- * trig_type : edge or level type
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_get_type(unsigned int line, int *trig_type);
-
-/*
- * control irq power management wakeup.
- *
- * line : The interrupt line
- * en : enable/disable power management wakeup
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_set_wake(unsigned int line, int en);
-
-/*
- * get the irq awake status for an irq.
- *
- * line : The interrupt line
- * en : enable/disable power management wakeup
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_get_wake(unsigned int line, int *en);
-
-typedef enum
-{
- Rising_edge_trigger = 0,//:上升沿触发
- Falling_edge_trigger = 1,//:下降沿触发
- High_level_trigger = 2,//:高电平触发
- Low_level_trigger = 3,//:低电平触发
-
-}trig_type_e;
-
-
-//int line_gpio[15]={-1,48,49,50,51,52,53,54,119,128,129,-1,131,-1,125};//this is the line match gpio
-int line_gpio[4]={21, 22, 23 ,24};//this is the line match gpio
-
-typedef void (*irq_handler)(void);
-
-int lynq_irq_install(int line, irq_handler irq_handler, trig_type_e trig_type);
-
-int lynq_irq_uninstall(int line);
-
-int lynq_irq_set_type(int line, int trig_type);
-
-int lynq_irq_get_type(int line);
-
-int lynq_irq_set_wake(int line, int en);
-
-int lynq_irq_get_wake(int line);
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/include/lynq/lynq-qser-audio.h b/mbtk/include/lynq/lynq-qser-audio.h
deleted file mode 100755
index d5a6f20..0000000
--- a/mbtk/include/lynq/lynq-qser-audio.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************
-*
-* @brief: Add audio api
-* @details: add liblynq-qser-audio api
-* @author: yu.dong
-* @date: 2023.9.28
-* @version: V1.0
-* @copyright:Copyright (c) MobileTek
-*
-*********************************************/
-#ifndef LYNQ_QSER_AUDIO
-#define LYNQ_QSER_AUDIO
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*_cb_onPlayer)(int);
-
-int qser_AudPlayer_Open(char* device, _cb_onPlayer cb_fun);
-int qser_AudPlayer_PlayFrmFile(int hdl, const char *fd, int offset);
-int qser_AudPlayer_PlayPcmBuf(const unsigned char *pcm_data, int data_size, int period_size,
- int period_count, int num_channels, int sample_rate, int ownerid);
-int qser_AudPlayer_Pause(int hdl);
-int qser_AudPlayer_Resume(int hdl);
-void qser_AudPlayer_Stop(int hdl);
-void qser_AudPlayer_Close(int hdl);
-
-int qser_AudRecorder_Open(char* device, _cb_onPlayer cb_fun);
-int qser_AudRecorder_StartRecord(int hdl, const char *fd, int offset);
-int qser_AudRecorder_StartRecord_Custom(char *file, int period_size, int period_count,
- int num_channels, int sample_rate);
-int qser_AudRecorder_Pause(void);
-int qser_AudRecorder_Resume(void);
-void qser_AudRecorder_Stop(void);
-void qser_AudRecorder_Close(void);
-
-void qser_Audio_Deinit(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/mbtk/include/lynq/lynq-qser-autosuspend.h b/mbtk/include/lynq/lynq-qser-autosuspend.h
deleted file mode 100644
index 8695be3..0000000
--- a/mbtk/include/lynq/lynq-qser-autosuspend.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdlib.h>
-#include <pthread.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MAX_LOCK_NUM 128
-
-#define E_READ -2
-#define E_WRITE -3
-#define E_TABLE_FULL -4
-#define E_LOCK_EXIST -5
-#define E_INPUT_ERROR -6
-
-typedef enum
-{
- E_QL_LPM_FALLING = 0, /* Falling, Means wakeupin falling to wakeup the module, or wakeupout falling to wakeup mcu
-. */
- E_QL_LPM_RISING = 1, /* Rising, Means wakeupin rising to wakeup the module, or wakeupout rising to wakeup mcu.
-*/
-}qser_lpm_edge_t;
-
-typedef int qser_lpm_pin_t;
-
-
-typedef struct{
- qser_lpm_pin_t wakeupin_pin;
- qser_lpm_edge_t wakeupin_edge;
-}qser_lpm_wakeupin_data_t;
-
-typedef struct{
- qser_lpm_pin_t wakeupout_pin;
- qser_lpm_edge_t wakeupout_edge;
-}qser_lpm_wakeupout_data_t;
-
-
-typedef void (*qser_lpm_Handler_t)
-(
- qser_lpm_edge_t lpm_edge
-);
-
-typedef struct{
- qser_lpm_wakeupin_data_t wakeupin;
- qser_lpm_wakeupout_data_t wakeupout;
-}qser_pm_cfg_t;
-
-
-typedef struct
-{
- char lock_name[MAX_LOCK_NUM][64];
- int lock_pid[MAX_LOCK_NUM];
-} LOCK_TABLE;
-
-typedef void (*mbtk_info_callback_func)(const void* data, int data_len);
-
-int read_lock_table(void);
-int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg);
-int qser_lpm_deinit(void);
-int qser_autosuspend_enable(char enable);
-int qser_wakelock_create(const char *name, size_t len);
-int qser_wakelock_lock(int fd);
-int qser_wakelock_unlock(int fd);
-int qser_wakelock_destroy(int fd);
-
-int qser_whitelist_set(char *whitelist);
-int qser_whitelist_get(char *whitelist);
-
-static void* suspend_timer_thread_run(void* arg);
-int suspend_timer_timer_init(void);
-int qser_suspend_timer_set(int time, mbtk_info_callback_func cb);
-
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/mbtk/include/lynq/lynq-qser-data.h b/mbtk/include/lynq/lynq-qser-data.h
deleted file mode 100644
index a480312..0000000
--- a/mbtk/include/lynq/lynq-qser-data.h
+++ /dev/null
@@ -1,287 +0,0 @@
-#ifndef __LYNQ_QSER_DATA_H__
-#define __LYNQ_QSER_DATA_H__
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include <stdbool.h>
-#include <netinet/in.h>
-
-typedef enum {
- QSER_DATA_CALL_ERROR_NONE = 0,
- QSER_DATA_CALL_ERROR_INVALID_PARAMS,
- QSER_DATA_CALL_ERROR_NO_INIT,
- QSER_DATA_CALL_ERROR_PDP_ACTIVATE,
- QSER_DATA_CALL_ERROR_PDP_NO_ACTIVATE,
- QSER_DATA_CALL_ERROR_IDX_NO_EXIST,
- QSER_DATA_CALL_ERROR_UNKNOWN,
-} qser_data_call_error_e;
-
-typedef enum {
- QSER_DATA_CALL_DISCONNECTED = 0, /*!< call is disconnected */
- QSER_DATA_CALL_CONNECTED, /*!< call is connected */
-} qser_data_call_state_e;
-
-typedef enum {
- QSER_DATA_CALL_TYPE_IPV4 = 0, /*!< IPv4 call. */
- QSER_DATA_CALL_TYPE_IPV6, /*!< IPv6 call. */
- QSER_DATA_CALL_TYPE_IPV4V6, /*!< IPv4 and IPv6 call (Only used call start or stop). */
-} qser_data_call_ip_family_e;
-
-typedef enum {
- QSER_APN_PDP_TYPE_IPV4 = 0,
- QSER_APN_PDP_TYPE_PPP,
- QSER_APN_PDP_TYPE_IPV6,
- QSER_APN_PDP_TYPE_IPV4V6,
-} qser_apn_pdp_type_e;
-
-typedef enum {
- QSER_APN_AUTH_PROTO_DEFAULT = 0,
- QSER_APN_AUTH_PROTO_NONE,
- QSER_APN_AUTH_PROTO_PAP,
- QSER_APN_AUTH_PROTO_CHAP,
- QSER_APN_AUTH_PROTO_PAP_CHAP,
-} qser_apn_auth_proto_e;
-
-#define QSER_APN_MAX_LIST 8
-#define QSER_APN_NAME_SIZE 150+1
-#define QSER_APN_USERNAME_SIZE 127+1
-#define QSER_APN_PASSWORD_SIZE 127+1
-
-struct v4_address_status {
- struct in_addr ip; /*!< Public IPv4 address. */
- struct in_addr gateway; /*!< Public IPv4 gateway. */
- struct in_addr pri_dns; /*!< Primary Domain Name Service IP address. */
- struct in_addr sec_dns; /*!< Secondary Domain Name Service IP address. */
-};
-
-struct v6_address_status {
- struct in6_addr ip; /*!< Public IPv6 address. */
- struct in6_addr gateway; /*!< Public IPv6 gateway. */
- struct in6_addr pri_dns; /*!< Primary Domain Name Service IPv6 address. */
- struct in6_addr sec_dns; /*!< Secondary Domain Name Service IPv6 address. */
-};
-
-typedef struct {
- char profile_idx; /*!< UMTS/CMDA profile ID. */
- char name[16]; /*!< Interface Name. */
- qser_data_call_ip_family_e ip_family; /*!< IP version. */
- qser_data_call_state_e state; /*!< The dial status. */
- qser_data_call_error_e err; /*!< The Reason code after data call disconnected. */
- struct v4_address_status v4; /*!< IPv4 information. */
- struct v6_address_status v6; /*!< IPv6 information. */
-} qser_data_call_state_s;
-
-/*
- *!< Client callback function used to post event indications.
- */
-typedef void (*qser_data_call_evt_cb_t)(qser_data_call_state_s *state);
-
-typedef struct {
- char profile_idx; /*!< UMTS/CMDA profile ID. */
- bool reconnect; /*!< Whether to re-dial after disconnecting the network. */
- qser_data_call_ip_family_e ip_family; /*!< IP version. */
- char cdma_username[QSER_APN_USERNAME_SIZE]; /*!< Username used during data network authentication. */
- char cdma_password[QSER_APN_PASSWORD_SIZE]; /*!< Password to be used during data network authentication. */
-} qser_data_call_s;
-
-struct pkt_stats {
- unsigned long pkts_tx; /*!< Number of packets transmitted. */
- unsigned long pkts_rx; /*!< Number of packets received. */
- long long bytes_tx; /*!< Number of bytes transmitted. */
- long long bytes_rx; /*!< Number of bytes received. */
- unsigned long pkts_dropped_tx; /*!< Number of transmit packets dropped. */
- unsigned long pkts_dropped_rx; /*!< Number of receive packets dropped. */
-};
-
-struct v4_info {
- char name[16]; /*!< Interface Name. */
- qser_data_call_state_e state; /*!< The dial status. */
- bool reconnect; /*!< re-dial flag. */
- struct v4_address_status addr; /*!< IPv4 IP Address information. */
- struct pkt_stats stats; /*!< IPv4 statics */
-};
-
-struct v6_info {
- char name[16]; /*!< Interface Name. */
- qser_data_call_state_e state; /*!< The dial status. */
- bool reconnect; /*!< re-dial flag. */
- struct v6_address_status addr; /*!< IPv6 IP Address information. */
- struct pkt_stats stats; /*!< IPv6 statics */
-};
-
-typedef struct {
- char profile_idx; /*!< UMTS/CDMA profile ID. */
- qser_data_call_ip_family_e ip_family; /*!< IP version. */
- struct v4_info v4; /*!< IPv4 information */
- struct v6_info v6; /*!< IPv6 information */
-} qser_data_call_info_s;
-
-typedef struct {
- unsigned char profile_idx; /*!< UMTS/CDMA profile ID. range: 0 - 7*/
- qser_apn_pdp_type_e pdp_type; /*!< Packet Data Protocol (PDP) type specifies the type of data payload
- exchanged over the airlink when the packet data session is
- established with this profile. */
- qser_apn_auth_proto_e auth_proto; /*!< Authentication Protocol. */
- char apn_name[QSER_APN_NAME_SIZE]; /*!< A string parameter that is a logical name used to select the GGSN
- and external packet data network. */
- char username[QSER_APN_USERNAME_SIZE]; /*!< Username used during data network authentication. */
- char password[QSER_APN_PASSWORD_SIZE]; /*!< Password to be used during data network authentication. */
- char apn_type[QSER_APN_NAME_SIZE];
-} qser_apn_info_s;
-
-typedef struct {
- qser_apn_pdp_type_e pdp_type; /*!< Packet Data Protocol (PDP) type specifies the type of data payload
- exchanged over the airlink when the packet data session is
- established with this profile. */
- qser_apn_auth_proto_e auth_proto; /*!< Authentication Protocol. */
- char apn_name[QSER_APN_NAME_SIZE]; /*!< A string parameter that is a logical name used to select the GGSN
- and external packet data network. */
- char username[QSER_APN_USERNAME_SIZE]; /*!< Username used during data network authentication. */
- char password[QSER_APN_PASSWORD_SIZE]; /*!< Password to be used during data network authentication. */
- char apn_type[QSER_APN_NAME_SIZE];
-} qser_apn_add_s;
-
-typedef struct {
- int cnt;
- qser_apn_info_s apn[QSER_APN_MAX_LIST];
-} qser_apn_info_list_s;
-
-
-/**
- * Initialization data call module, and callback function registered.
- *
- * @param [in] evt_cb callback fucntion
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_data_call_init(qser_data_call_evt_cb_t evt_cb);
-
-/**
- * Destroy data call module, and unregister callback funciton
- *
- * @param
- * None
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern void qser_data_call_destroy(void);
-
-/**
- * Starts a data call. If profile index is zero, it will call CDMA profile.
- *
- * @param [in] data_call The data call parameters
- * @param [out] error Error code returned by data call
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_data_call_start(qser_data_call_s *data_call, qser_data_call_error_e *err);
-
-/**
- * Starts a data call. If profile index is zero, it will call CDMA profile.
- *
- * @param [in] data_call The data call parameters
- * @param [out] error Error code returned by data call
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_data_call_start_async(qser_data_call_s *data_call, qser_data_call_error_e *err);
-
-/**
- * Stop a data call.
- *
- * @param [in] profile_idx UMTS/CDMA profile ID
- * @param [in] ip_family IP Version
- * @param [out] error Error code returned by data call
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_data_call_stop(char profile_idx, qser_data_call_ip_family_e ip_family, qser_data_call_error_e *err);
-
-/**
- * Get a data call information.
- *
- * @param [in] profile_idx UMTS/CDMA profile ID
- * @param [in] ip_family IP Version
- * @param [out] info The Data Call information
- * @param [out] error Error code returned by data call
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_data_call_info_get(char profile_idx,
- qser_data_call_ip_family_e ip_family,
- qser_data_call_info_s *info,
- qser_data_call_error_e *err);
-
-/**
- * Changes the settings in a configured profile.
- *
- * @param [in] apn the profile information.
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned, such apn not exist.
- *
- */
-extern int qser_apn_set(qser_apn_info_s *apn);
-
-/**
- * Retrieves the settings from a configured profile.
- *
- * @param [in] profile_idx UMTS/CDMA profile ID
- * @param [out] apn the profile information.
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn);
-
-/**
- * Retrieves the settings from a configured profile.
- *
- * @param [in] apn the profile information.
- * @param [out] profile_idx UMTS/CDMA profile ID
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_apn_add(qser_apn_add_s *apn, unsigned char *profile_idx);
-
-/**
- * Delete a configured profile.
- *
- * @param [in] profile_idx UMTS/CDMA profile ID
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_apn_del(unsigned char profile_idx);
-
-/**
- * Retrieves the settings from a configured profile list.
- *
- * @param [out] apn_list the profile list information.
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int qser_apn_get_list(qser_apn_info_list_s *apn_list);
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/mbtk/include/lynq/lynq-qser-fota.h b/mbtk/include/lynq/lynq-qser-fota.h
deleted file mode 100755
index bbc674c..0000000
--- a/mbtk/include/lynq/lynq-qser-fota.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************
-*
-* @brief:
-* @details: add fota upgrade api
-* @author: l.yang
-* @date: 2023.8.3
-* @version: V1.0
-* @copyright:Copyright (c) MobileTek
-*
-*********************************************/
-#ifndef LYNQ_QSER_FOTA
-#define LYNQ_QSER_FOTA
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*******************************************************************************
-* @brief get reboot upgrade status
- @param
- NULL
- @return
- if reboot the other system successfully return 1, else return 0
- *******************************************************************************/
-int lynq_get_reboot_upgrade_status(void);
-int lynq_get_upgrade_status(void);
-int lynq_fota_set_addr_value(char *value,int size);
-int lynq_fota_nrestart(void);
-int lynq_rock_main(int first_run);
-int lynq_read_process(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/mbtk/include/lynq/lynq-qser-usb.h b/mbtk/include/lynq/lynq-qser-usb.h
deleted file mode 100755
index 97428d4..0000000
--- a/mbtk/include/lynq/lynq-qser-usb.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************
-*
-* @brief: Add usb api
-* @details: add liblynq-qser-usb api
-* @author: wz.wang
-* @date: 2024.2.18
-* @version: V1.0
-* @copyright:Copyright (c) MobileTek
-*
-*********************************************/
-#ifndef LYNQ_QSER_USB
-#define LYNQ_QSER_USB
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int qser_get_usb_usermode_net_state(void);
-int qser_get_usb_usermode_adb_state(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/mbtk/include/lynq/lynq-qser-voice.h b/mbtk/include/lynq/lynq-qser-voice.h
deleted file mode 100755
index 668d6ce..0000000
--- a/mbtk/include/lynq/lynq-qser-voice.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
- *@file qser_voice.h
- *@date 2017-11-30
- *@author
- *@brief
- */
-
-
-#ifndef __LYNQ_QSER_VOICE_H__
-#define __LYNQ_QSER_VOICE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "mbtk_type.h"
-
-typedef enum
-{
- E_QSER_VCALL_EXTERNAL_SLOT_1,
- E_QSER_VCALL_EXTERNAL_SLOT_2,
- E_QSER_VCALL_EMBEDDED,
- E_QSER_VCALL_REMOTE,
- E_QSER_VCALL_ID_MAX
-}E_QSER_VCALL_ID_T;
-
-typedef enum
-{
- E_QSER_VOICE_CALL_STATE_INCOMING = 0x0000, /**< MT incoming; CC setup. */
- E_QSER_VOICE_CALL_STATE_DIALING = 0x0001, /**< Dialing state. */
- E_QSER_VOICE_CALL_STATE_ALERTING = 0x0002, /**< MT call waiting; MO alterting. */
- E_QSER_VOICE_CALL_STATE_ACTIVE = 0x0003, /**< Call is active. */
- E_QSER_VOICE_CALL_STATE_HOLDING = 0x0004, /**< Call is on hold. */
- E_QSER_VOICE_CALL_STATE_END = 0x0005, /**< Call is disconnected. */
- E_QSER_VOICE_CALL_STATE_WAITING = 0x0006, /**< Call is waiting. */
-}qser_voice_call_state_t;
-
-typedef enum
-{
- E_QSER_VOICE_CALL_WAITING_VOICE_ENABLED = 0, /**< Voice call waiting enabled. */
- E_QSER_VOICE_CALL_WAITING_DISABLED = 1, /**< Voice call waiting disabled. */
-}E_QSER_VOICE_CALL_WAITING_SERVICE_T;
-
-typedef struct
-{
- E_QSER_VOICE_CALL_WAITING_SERVICE_T waiting_service;
-}qser_voice_call_waiting_service_t;
-
-typedef qser_voice_call_state_t E_QSER_VOICE_CALL_STATE_T;
-
-typedef uint32_t voice_client_handle_type;
-
-/* Callback function registered via QSER_Voice_Call_AddStateHandler;
- This will be called if any stated changed of call_id
-*/
-typedef void (*QSER_VoiceCall_StateHandlerFunc_t)
-(
- int caLOCAL_C_INCLUDESll_id,
- char* phone_num,
- E_QSER_VOICE_CALL_STATE_T state,
- void *contextPtr
-);
-
-/* Init voice module and return h_voice, this should be called before any other APIs */
-int qser_voice_call_client_init(voice_client_handle_type *ph_voice);
-
-/* DeInit voice module and release resources, this should be called at last */
-int qser_voice_call_client_deinit(voice_client_handle_type h_voice);
-
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int qser_voice_call_addstatehandler(voice_client_handle_type h_voice,
- QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
- void* contextPtr);
-
-/* Remove callback function, won't receive any notify anymore */
-int qser_voice_call_removestatehandle(voice_client_handle_type h_voice);
-
-/* Start call and return call_id, this can be used in the later */
-int qser_voice_call_start(voice_client_handle_type h_voice,
- E_QSER_VCALL_ID_T simId,
- char* phone_number, ///< [IN] Destination identifier for the voice
- int *call_id); ///< [OUT] call id
-
-/* End call of call_id, which returned by QSER_Voice_Call_Start or callback func register via QSER_Voice_Call_AddStateHandler */
-int qser_voice_call_end( voice_client_handle_type h_voice,
- int call_id); ///< [IN] call id, return by QSER_Voice_Start
-
-/* Answer the call of call_id, which returned by callback func register via QSER_Voice_Call_AddStateHandler */
-int qser_voice_call_answer(voice_client_handle_type h_voice,
- int call_id );
-
-int qser_voice_call_switch_waiting_or_holding_and_active(voice_client_handle_type h_voice);
-
-//set voice speech volume
-int qser_voice_set_speech_volume(const int volume);
-
-//Get voice speech volume
-int qser_voice_get_speech_volume(int *volume);
-
-//Set voice call waiting
-int qser_voice_call_setwaiting
-(
- int h_voice,
- qser_voice_call_waiting_service_t e_service
-);
-
-//Get voice call waiting status
-int qser_voice_call_getwaitingstatus
-(
- int h_voice,
- qser_voice_call_waiting_service_t *pe_service
-);
-
-
-int qser_voice_set_dtmf(const char callnum);
-
-/*
-Usage 1 (register callback and wait for new call in, then answer):
-1, QSER_Voice_Call_Client_Init
-2, QSER_Voice_Call_AddStateHandler(pf_cb)
-3, wait for new call arrive, pf_cb will pass the call_id to app.
-4, QSER_Voice_Call_Answer(call_id)
-5, QSER_Voice_Call_End
-6, QSER_Voice_Call_Client_Deinit
-
-
-Usage 2 (call out):
-1, QSER_Voice_Call_Client_Init
-2, QSER_Voice_Call_AddStateHandler(pf_cb)
-3, QSER_Voice_Call_Start
-4, QSER_Voice_Call_End
-5, QSER_Voice_Call_Client_Deinit
-
-
-*/
-
-#ifdef ECALL_SUPPORT
-
-#define QSER_MSD_MAX_LENGTH 140
-
-typedef enum{
- E_QSER_VOICE_ECALL_SET_NUMBER = 0, /* Set Number */
- E_QSER_VOICE_ECALL_SET_URI = 1, /* Set Uri */
-}E_QSER_VOICE_ECALL_SET_TYPE_T;
-
-typedef enum{
- E_QSER_VOICE_ECALL_CAT_MANUAL = 0, /* Manual Emergency eCall */
- E_QSER_VOICE_ECALL_CAT_AUTO = 1, /* Automatic Emergency eCall */
-}E_QSER_VOICE_ECALL_CATEGORY_T;
-
-
-typedef enum{
- E_QSER_VOICE_ECALL_TEST = 0, /* Test eCall */
- E_QSER_VOICE_ECALL_EMERGENCY = 1, /* Emergency eCall */
- E_QSER_VOICE_ECALL_RECONFIG = 2, /* Reconfiguration eCall */
-}E_QSER_VOICE_ECALL_VARIANT_T;
-
-typedef enum{
- E_QSER_VOICE_ECALL_IND_SENDING_START = 1,
- E_QSER_VOICE_ECALL_IND_SENDING_MSD = 2,
- E_QSER_VOICE_ECALL_IND_LLACK_RECEIVED = 3,
- E_QSER_VOICE_ECALL_IND_ALACK_POSITIVE_RECEIVED = 4,
- E_QSER_VOICE_ECALL_IND_ALACK_CLEARDOWN_RECEIVED = 5,
- E_QSER_VOICE_ECALL_IND_DAILING = 9,
- E_QSER_VOICE_ECALL_IND_ALERTING = 10,
- E_QSER_VOICE_ECALL_IND_ACTIVE = 11,
- E_QSER_VOICE_ECALL_IND_DISCONNECTED = 12,
- E_QSER_VOICE_ECALL_IND_IMS_ACTIVE = 13,
- E_QSER_VOICE_ECALL_IND_IMS_DISCONNECTED = 14,
- E_QSER_VOICE_ECALL_IND_ABNORMAL_HANGUP=15,
- E_QSER_VOICE_ECALL_IND_IMS_MSD_ACK = 20,
- E_QSER_VOICE_ECALL_IND_IMS_UPDATE_MSD = 21,
- E_QSER_VOICE_ECALL_IND_IMS_IN_BAND_TRANSFER = 22,
- E_QSER_VOICE_ECALL_IND_IMS_MSD_NACK = 23,
- E_QSER_VOICE_ECALL_IND_IMS_SRVCC = 24,
- E_QSER_VOICE_ECALL_IND_ONLY_DEREGISTRATION = 31,
- E_QSER_VOICE_ECALL_IND_MAY_DEREGISTER = 32,
- E_QSER_VOICE_ECALL_IND_PSAP_CALLBACK_START = 40,
- E_QSER_VOICE_ECALL_IND_PSAP_CALLBACK_IMS_UPDATE_MSD = 41,
- E_QSER_VOICE_ECALL_IND_SENDING_START_IN_VOICE=8000,
- E_QSER_VOICE_ECALL_IND_T2_TIMER_OUT = 9000,
- E_QSER_VOICE_ECALL_IND_T5_TIMER_OUT = 9001,
- E_QSER_VOICE_ECALL_IND_T6_TIMER_OUT = 9002,
- E_QSER_VOICE_ECALL_IND_T7_TIMER_OUT = 9003,
- E_QSER_VOICE_ECALL_IND_REDIAL_TIMER_OUT = 9004,
- E_QSER_VOICE_ECALL_IND_AUTO_ANS_TIMER_OUT = 9005,
- E_QSER_VOICE_ECALL_IND_AUTO_ANS_IMS_TIMER_OUT = 9006,
- E_QSER_VOICE_ECALL_IND_UNSPECIFIED = 0xffff,
-}E_QSER_VOICE_ECALL_INDICATION_T;
-
-typedef void (*QSER_ECall_IndHandlerFunc_t)
-(
- int callid,
- E_QSER_VOICE_ECALL_INDICATION_T ind,
- void *contextPtr
-);
-
-int qser_voice_set_test_num(voice_client_handle_type* h_voice,E_QSER_VOICE_ECALL_SET_TYPE_T type, const char *test_num, int test_num_length);
-int qser_voice_fast_ecall(voice_client_handle_type* h_voice,
- int *call_id,
- E_QSER_VOICE_ECALL_CATEGORY_T cat,
- E_QSER_VOICE_ECALL_VARIANT_T variant,
- const char *addr,
- int addr_length,
- const unsigned char *msd_data,
- int msd_length); //msd_length should <= QSER_MSD_MAX_LENGTH
-int qser_voice_set_msd( int callid, const unsigned char *msd_data, int msd_length); // msd_length should <= QSER_MSD_MAX_LENGTH
-int qser_voice_add_ecall_indhandler(voice_client_handle_type* h_voice,
- QSER_ECall_IndHandlerFunc_t handlerPtr,
- void* contextPtr);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // __QSER_VOICE_H__
-
diff --git a/mbtk/include/lynq/lynq-qser-wifi.h b/mbtk/include/lynq/lynq-qser-wifi.h
deleted file mode 100755
index fa021c0..0000000
--- a/mbtk/include/lynq/lynq-qser-wifi.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************
-*
-* @brief: Add wifi api
-* @details: add liblynq-qser-wifi api
-* @author: wz.wang
-* @date: 2024.3.15
-* @version: V1.0
-* @copyright:Copyright (c) MobileTek
-*
-*********************************************/
-#ifndef LYNQ_QSER_WIFI
-#define LYNQ_QSER_WIFI
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- LYNQ_WIFI_AP_INDEX_AP0 = 0, /* Index 0 of AP/AP-STA/AP-AP Mode */
- LYNQ_WIFI_AP_INDEX_AP1 /* Index 1 of AP/AP-STA/AP-AP Mode */
-} lynq_wifi_ap_index_e;
-
-typedef enum
-{
- LYNQ_WIFI_MODE_MIN = -1,
- LYNQ_WIFI_MODE_80211B = 0,
- LYNQ_WIFI_MODE_80211BG,
- LYNQ_WIFI_MODE_80211BGN,
- LYNQ_WIFI_MODE_80211A,
- LYNQ_WIFI_MODE_80211AN,
- LYNQ_WIFI_MODE_80211AC,
- LYNQ_WIFI_MODE_80211BGNAX_2G,
- LYNQ_WIFI_AP_MODE_MAX
-} lynq_wifi_mode_type_e;
-
-typedef enum LYNQ_WIFI_BANDWIDTH_ENUM
-{
- LYNQ_WIFI_BANDWIDTH_MIN = -1,
- LYNQ_WIFI_BANDWIDTH_HT20 = 0,
- LYNQ_WIFI_BANDWIDTH_HT40,
- LYNQ_WIFI_BANDWIDTH_HT80,
- LYNQ_WIFI_BANDWIDTH_MAX
-} lynq_wifi_bandwidth_type_e;
-
-typedef enum
-{
- LYNQ_WIFI_AUTH_MIN = -1,
- LYNQ_WIFI_AUTH_OPEN = 0,
- LYNQ_WIFI_AUTH_WPA_PSK,
- LYNQ_WIFI_AUTH_WPA2_PSK, //AES
- LYNQ_WIFI_AUTH_WPA_WPA2_PSK_BOTH, //TKIP & AES
- LYNQ_WIFI_AUTH_WPA3_PSK, //AES
- LYNQ_WIFI_AUTH_WPA2_WPA3_PSK_BOTH, //AES
- LYNQ_WIFI_AUTH_MAX
-} lynq_wifi_auth_e;
-
-int qser_wifi_enable(void);
-int qser_wifi_disable(void);
-int qser_wifi_ap_ssid_set(lynq_wifi_ap_index_e idx, const char *ssid);
-int qser_wifi_ap_ssid_get(lynq_wifi_ap_index_e idx, char *ssid);
-int qser_wifi_ap_mode_set(lynq_wifi_ap_index_e idx, lynq_wifi_mode_type_e mode);
-int qser_wifi_ap_mode_get(lynq_wifi_ap_index_e idx, lynq_wifi_mode_type_e *mode);
-int qser_wifi_ap_bandwidth_set(lynq_wifi_ap_index_e idx, lynq_wifi_bandwidth_type_e bandwidth);
-int qser_wifi_ap_bandwidth_get(lynq_wifi_ap_index_e idx, lynq_wifi_bandwidth_type_e *bandwidth);
-int qser_wifi_ap_channel_set(lynq_wifi_ap_index_e idx, const char *country_code, int channel);
-int qser_wifi_ap_channel_get(lynq_wifi_ap_index_e idx, char *country_code, int *channel);
-int qser_wifi_ap_auth_set(lynq_wifi_ap_index_e idx, lynq_wifi_auth_e auth_mode, const char * auth_passwd);
-int qser_wifi_ap_auth_get(lynq_wifi_ap_index_e idx, lynq_wifi_auth_e *auth_mode, char * auth_passwd);
-int qser_wifi_ap_max_sta_set(lynq_wifi_ap_index_e idx, int max_sta_num);
-int qser_wifi_ap_max_sta_get(lynq_wifi_ap_index_e idx, int *max_sta_num);
-int qser_wifi_ap_start(lynq_wifi_ap_index_e idx);
-int qser_wifi_ap_stop(lynq_wifi_ap_index_e idx);
-int qser_wifi_ap_restart(lynq_wifi_ap_index_e idx);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/mbtk/include/lynq/lynq_alarm.h b/mbtk/include/lynq/lynq_alarm.h
deleted file mode 100755
index b9a9d02..0000000
--- a/mbtk/include/lynq/lynq_alarm.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-* qser_alarm.h
-*
-* QSER alarm header.
-*
-* Author : lb
-* Date : 2023/11/23 10:45:44
-*/
-#ifndef _QSER_ALARM_H
-#define _QSER_ALARM_H
-#include "mbtk_type.h"
-
-typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);
-int lynq_rtc_service_init(void);
-int lynq_rtc_service_deinit(void);
-ssize_t poweralarm(char *buffer,int src_id);
-ssize_t wakealarm(char *buffer,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify );
-ssize_t cancel_wakealarm(int src_id, int rtc_id);
-
-int lynq_set_wakealarm(unsigned long time_sec,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify );
-int lynq_set_poweralarm(unsigned long time_sec,int src_id);
-
-#endif /* _QSER_ALARM_H */
diff --git a/mbtk/include/lynq/lynq_autosuspend.h b/mbtk/include/lynq/lynq_autosuspend.h
deleted file mode 100755
index efd1219..0000000
--- a/mbtk/include/lynq/lynq_autosuspend.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <pthread.h>
-#include <stdbool.h>
-#include <time.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-struct time_info_t
-{
- long sleep_start_time;
- long wakeup_time;
-};
-
-int lynq_autosleep_enable(void);
-int lynq_autosleep_disable(void);
-int lynq_wait_wakeup_event(long *sleep_start_time, long * wakeup_time);
-
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-int lynq_set_lpmode(int lp_mode);
-int release_wake_lock(char *name);
-int acquire_wake_lock(int lock, char *name);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/include/lynq/lynq_call.h b/mbtk/include/lynq/lynq_call.h
deleted file mode 100755
index 3bb398f..0000000
--- a/mbtk/include/lynq/lynq_call.h
+++ /dev/null
@@ -1,181 +0,0 @@
-#ifndef LYNQ_CALL_H
-#define LYNQ_CALL_H 1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define LYNQ_PHONE_NUMBER_MAX 32
-#define INDEX_IS_NUMBER( alpha_char ) \
- ( ( (alpha_char >= '0') && (alpha_char <= '9') ) ? 1 : 0 )
-#define LYNQ_CALL_MAX 3
-#define LYNQ_CALL_FAIL_VENDOR_CAUSE 64
-#define MAX_IP_LENGTH 128
-#define MAX_VLAN_INFO_LENGTH 32
-#define MAX_SSRC_INFO_LENGTH 10 /*2^32=4294967296, 10 digit*/
-
-typedef enum {
- LYNQ_CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
- LYNQ_CALL_FAIL_NORMAL = 16,
- LYNQ_CALL_FAIL_BUSY = 17,
- LYNQ_CALL_FAIL_CONGESTION = 34,
- LYNQ_CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
- LYNQ_CALL_FAIL_CALL_BARRED = 240,
- LYNQ_CALL_FAIL_FDN_BLOCKED = 241,
- LYNQ_CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
- LYNQ_CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
- LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK Call Control */
- LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,
- LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,
- LYNQ_CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
- LYNQ_CALL_FAIL_CDMA_DROP = 1001,
- LYNQ_CALL_FAIL_CDMA_INTERCEPT = 1002,
- LYNQ_CALL_FAIL_CDMA_REORDER = 1003,
- LYNQ_CALL_FAIL_CDMA_SO_REJECT = 1004,
- LYNQ_CALL_FAIL_CDMA_RETRY_ORDER = 1005,
- LYNQ_CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
- LYNQ_CALL_FAIL_CDMA_PREEMPTED = 1007,
- LYNQ_CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
- during emergency callback mode */
- LYNQ_CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
- LYNQ_CALL_FAIL_ERROR_UNSPECIFIED = 0xffff
-} lynq_last_call_fail_cause_t;
-typedef struct
-{
- lynq_last_call_fail_cause_t cause_code;
- char vendor_cause[LYNQ_CALL_FAIL_VENDOR_CAUSE];
-}lynqLastCallFailCause;
-int lynq_init_call(int uToken);
-int lynq_deinit_call();
-int lynq_call(int *handle,char addr[]);
-int lynq_call_answer();
-int lynq_call_hungup(int*handle);
-int lynq_call_hungup_all();
-int lynq_set_auto_answercall(const int mode);
-int lynq_get_mute_mic(int *status);
-int lynq_set_mute_mic(const int enable);
-int lynq_get_speech_volume(int *volume);
-int lynq_set_speech_volume(const int volume);
-int lynq_incall_record_start(const char* file_path);
-int lynq_incall_record_stop();
-int lynq_set_DTMF(const char callnum);
-int lynq_set_DTMF_volume(const int volume);
-int lynq_get_current_call_state(int *handle, int *call_state,int *toa,int *direction,char addr[]);
-/*lei add for T8TSK-17 2022/7/20*/
-int lynq_switch_waiting_or_holding_and_active(void);
-int lynq_hangup_waiting_or_background(void);
-int lynq_hangup_foreground_resume_background(void);
-
-/* add for T106bug-213 2023/9/18 */
-void lynq_release_wait_call();
-
-/*lei add for API-163/API-164 2023/1/3*/
-/**
- * @brief wait_call_state_change
- *
- * @param handle call_id
- * @return int
- */
-int lynq_wait_call_state_change(int *handle);
-/*lei add for API-163/API-164 2023/1/3*/
-/*lei add for T8TSK-17 2022/7/20*/
-
-#ifdef ECALL_SUPPORT
-typedef enum{
- LYNQ_ECALL_SET_NUMBER = 0, /* Set Number */
- LYNQ_ECALL_SET_URI = 1, /* Set Uri */
-}LYNQ_ECall_Set_Type;
-
-typedef enum{
- LYNQ_EMER_CAT_MANUAL_ECALL = 0, /* Manual Emergency eCall */
- LYNQ_EMER_CAT_AUTO_ECALL = 1, /* Automatic Emergency eCall */
-}LYNQ_ECall_Category;
-
-typedef enum{
- LYNQ_ECALL_TEST = 0, /* Test eCall */
- LYNQ_ECALL_EMERGENCY = 1, /* Emergency eCall */
- LYNQ_ECALL_RECONFIG = 2, /* Reconfiguration eCall */
- LYNQ_ECALL_MO_MAX=3,
- LYNQ_ECALL_CALLBACK = 3, /* Callback eCall */
- LYNQ_ECALL_VAR_MAX,
- LYNQ_ECALL_VAR_NONE=LYNQ_ECALL_VAR_MAX,
-}LYNQ_ECall_Variant;
-
-typedef enum{
- LYNQ_ECALL_SENDING_START = 1,
- LYNQ_ECALL_SENDING_MSD = 2,
- LYNQ_ECALL_LLACK_RECEIVED = 3,
- LYNQ_ECALL_ALACK_POSITIVE_RECEIVED = 4,
- LYNQ_ECALL_ALACK_CLEARDOWN_RECEIVED = 5,
- LYNQ_ECALL_DAILING = 9,
- LYNQ_ECALL_ALERTING = 10,
- LYNQ_ECALL_ACTIVE = 11,
- LYNQ_ECALL_DISCONNECTED = 12,
- LYNQ_ECALL_IMS_ACTIVE = 13,
- LYNQ_ECALL_IMS_DISCONNECTED = 14,
- LYNQ_ECALL_ABNORMAL_HANGUP=15,
- LYNQ_ECALL_IMS_MSD_ACK = 20,
- LYNQ_ECALL_IMS_UPDATE_MSD = 21,
- LYNQ_ECALL_IMS_IN_BAND_TRANSFER = 22,
- LYNQ_ECALL_IMS_MSD_NACK = 23,
- LYNQ_ECALL_IMS_SRVCC = 24,
- LYNQ_ECALL_ONLY_DEREGISTRATION = 31,
- LYNQ_ECALL_MAY_DEREGISTER = 32,
- LYNQ_ECALL_PSAP_CALLBACK_START = 40,
- LYNQ_ECALL_PSAP_CALLBACK_IMS_UPDATE_MSD = 41,
- LYNQ_ECALL_SENDING_START_IN_VOICE=8000,
- LYNQ_ECALL_T2_TIMER_OUT = 9000,
- LYNQ_ECALL_T5_TIMER_OUT = 9001,
- LYNQ_ECALL_T6_TIMER_OUT = 9002,
- LYNQ_ECALL_T7_TIMER_OUT = 9003,
- LYNQ_ECALL_REDIAL_TIMER_OUT = 9004,
- LYNQ_ECALL_AUTO_ANS_TIMER_OUT = 9005,
- LYNQ_ECALL_AUTO_ANS_IMS_TIMER_OUT = 9006,
- LYNQ_ECALL_UNSPECIFIED = 0xffff,
-}LYNQ_ECall_Indication;
-
-int lynq_set_test_num(LYNQ_ECall_Set_Type type, const char *test_num, int test_num_length);
-int lynq_fast_ecall(int* handle, LYNQ_ECall_Category lynq_ecall_cat, LYNQ_ECall_Variant lynq_ecall_variant, const char *addr, int addr_length, const unsigned char *msd_data, int msd_length);
-int lynq_set_msd(int* handle, const unsigned char *msd_data, int msd_length);
-int lynq_set_ivs(int enable);
-int lynq_ivs_push_msd();
-int lynq_wait_ecall_indication(int* handle, LYNQ_ECall_Indication *eCall_Indication);
-#endif
-
-/*Audio Path setting begin*/
-typedef enum{
- AUDIO_MODE_CODEC = 0, /* Codec */
- AUDIO_MODE_RTP = 1, /* RTP */
-}LYNQ_Audio_Mode;
-
-typedef enum{
- RTP_CLIENT = 0,
- RTP_SERVER =1,
- RTP_MODE_MAX
-}LYNQ_Rtp_Mode;
-
-typedef enum{
- Rtp_Ssrc_random = 0,
- Rtp_Ssrc_specific =1,
-}LYNQ_Rtp_Ssrc_Mode;
-
-/*set*/
-int lynq_set_voice_audio_mode(const LYNQ_Audio_Mode audio_mode);
-int lynq_set_remote_rtp_ip(const char* ip, const int ip_length);
-int lynq_set_vlan_info(const char* vlan_info, const int vlan_info_length);
-int lynq_set_rtp_port(const LYNQ_Rtp_Mode rtp_mode, const int port);
-int lynq_set_rtp_param(const int clock_rate,const int channels,const int latency); //only for client
-int lynq_set_call_rtp_ssrc(const LYNQ_Rtp_Ssrc_Mode ssrc_mode, const unsigned int ssrc);
-
-/*get*/
-LYNQ_Audio_Mode lynq_get_voice_audio_mode();
-int lynq_get_remote_rtp_ip(char* ip, const int ip_length);
-int lynq_get_vlan_info(char* vlan_info, const int vlan_info_length);
-int lynq_get_rtp_port(const LYNQ_Rtp_Mode rtp_mode, int* port);
-int lynq_get_rtp_param(int* clock_rate,int* channels, int* latency);//only for client
-int lynq_get_call_rtp_ssrc(int* ssrc_mod, unsigned int* ssrc);
-/*Audio Path setting end*/
-
-void lynq_set_test_mode(const int test_mode);
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_chip_id.h b/mbtk/include/lynq/lynq_chip_id.h
deleted file mode 100755
index 4908ecf..0000000
--- a/mbtk/include/lynq/lynq_chip_id.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**@file lynq-systime.h
- *
- * @brief Sync systime form each time source.
- *
- * @author sj.zhang
- *
- * @date 2023-08-14
- *
- * @version V1.0
- *
- * @copyright Copyright (c) MobileTek
- */
-
-#ifndef _LYNQ_CHIP_ID_H_
-#define _LYNQ_CHIP_ID_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/**@brief get chip id.
-*
-* @param void
-*
-* @return
-* 0:success
-* other:failure
-*/
-int lynq_get_chip_id(char *chip_id);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_data.h b/mbtk/include/lynq/lynq_data.h
deleted file mode 100755
index 1ee15ba..0000000
--- a/mbtk/include/lynq/lynq_data.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#ifndef LYNQ_DATA_H
-#define LYNQ_DATA_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define LYNQ_APN_CHANNEL_MAX 10
-#define LYNQ_PDP_TYPE_MAX_LEN 16
-#define LYNQ_IFACE_NAME_MAX_LEN 50
-#define LYNQ_APN_MAX_LEN 50
-#define LYNQ_TYPE_MAX_LEN 50
-#define LYNQ_ADDRESSES_MAX_LEN 100
-#define LYNQ_DNSES_MAX_LEN 256
-#define LYNQ_GATEWAYS_MAX_LEN 50
-#define LYNQ_PCSCF_MAX_LEN 256
-#define LYNQ_APN_TYPE_MAX_LEN 50
-#define LYNQ_PDP_ADDR_MAX_LEN 64
-#define LYNQ_DNS_ADDR_MAX_LEN 256
-#define LYNQ_GETWAYS_ADDR_MAX_LEN 64
-#define LYNQ_POXY_ADDR_MAX_LEN 64
-
-
-typedef struct {
- int status; /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
- int suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
- back-off timer value RIL wants to override the one
- pre-configured in FW.
- The unit is miliseconds.
- The value < 0 means no value is suggested.
- The value 0 means retry should be done ASAP.
- The value of INT_MAX(0x7fffffff) means no retry. */
- int cid; /* Context ID, uniquely identifies this call */
- int active; /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
- char type[LYNQ_PDP_TYPE_MAX_LEN]; /* One of the PDP_type values in TS 27.007 section 10.1.1.
- For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
- PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
- such as "IP" or "IPV6" */
- char ifname[LYNQ_IFACE_NAME_MAX_LEN]; /* The network interface name */
- char addresses[LYNQ_PDP_ADDR_MAX_LEN]; /* A space-delimited list of addresses with optional "/" prefix length,
- e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
- May not be empty, typically 1 IPv4 or 1 IPv6 or
- one of each. If the prefix length is absent the addresses
- are assumed to be point to point with IPv4 having a prefix
- length of 32 and IPv6 128. */
- char dnses[LYNQ_DNS_ADDR_MAX_LEN]; /* A space-delimited list of DNS server addresses,
- e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
- May be empty. */
- char gateways[LYNQ_GETWAYS_ADDR_MAX_LEN]; /* A space-delimited list of default gateway addresses,
- e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
- May be empty in which case the addresses represent point
- to point connections. */
- char pcscf[LYNQ_POXY_ADDR_MAX_LEN]; /* the Proxy Call State Control Function address
- via PCO(Protocol Configuration Option) for IMS client. */
- int mtu; /* MTU received from network
- Value <= 0 means network has either not sent a value or
- sent an invalid value */
-} lynq_data_call_response_v11_t;
-
-typedef struct
-{
- int index;
- char apn[LYNQ_APN_MAX_LEN];
- char apnType[LYNQ_APN_TYPE_MAX_LEN];
-}lynq_apn_info;
-
-int lynq_init_data(int uToken);
-int lynq_deinit_data();
-int lynq_setup_data_call(int *handle);
-int lynq_deactive_data_call(int *handle);
-int lynq_setup_data_call_sp(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol);
-int lynq_setup_data_call_sp_t106(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol);
-//int lynq_deactive_data_call_sp(int *handle,char *apnType);
-int lynq_get_data_call_list(int *handle,lynq_data_call_response_v11_t *dataCallList);
-int lynq_wait_data_call_state_change(int *handle);
-int lynq_modify_apn_db(const int cmd,char *id,char *mcc,char *mnc,char *apn,char *apntype,char *user,char *password,char *normalprotocol,char *roamingprotocol,char *carrier,char *out);
-int lynq_reset_apn(char *result);
-int lynq_get_apn_table(int *size,lynq_apn_info **list);
-void lynq_release_wait_data_call();
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_deflog.h b/mbtk/include/lynq/lynq_deflog.h
deleted file mode 100755
index fd45185..0000000
--- a/mbtk/include/lynq/lynq_deflog.h
+++ /dev/null
@@ -1,211 +0,0 @@
-#ifndef __LYNQ_DEFLOG_H__
-#define __LYNQ_DEFLOG_H__
-#include "liblog.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void (*LYNQ_WRITE_LOG_PTR)(log_level_enum level, const char *format, ...);
-extern LYNQ_WRITE_LOG_PTR lynq_write_log;
-LYNQ_WRITE_LOG_PTR lynq_log_function_init(const char *log_name);
-
-int lynq_syslog_set_file_size(int value);
-int lynq_syslog_get_file_size(void);
-int lynq_syslog_set_file_rotate(int value);
-int lynq_syslog_get_file_rotate(void);
-
-#ifdef __cplusplus
-}
-#endif
-#define lynq_log_verbose(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_VERBOSE_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define lynq_log_error(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_ERR_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define lynq_log_warning(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_WARN_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define lynq_log_info(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_INFO_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define lynq_log_debug(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_DEBUG_LEVEL, "%s#%s: " fmt "\n", ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define LYVERBLOG(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_VERBOSE_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define LYERRLOG(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_ERR_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define LYWARNLOG(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_WARN_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define LYINFLOG(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_INFO_LEVEL, "%s#%s: " fmt, ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-
-#define LYDBGLOG(fmt, args...) \
- do{ \
- char *file_ptr_1001 = __FILE__; \
- char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \
- char line_1001[10] = {0}; \
- sprintf(line_1001, "%d", __LINE__); \
- while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \
- if(*ptr_1001 == '/') \
- break; \
- ptr_1001--; \
- } \
- mbtk_log(LOG_DEBUG_LEVEL, "%s#%s: " fmt "\n", ptr_1001 + 1, line_1001, ##args); \
- } while(0)
-// #define lynq_log_verbose(...) do { lynq_write_log(LOG_VERBOSE,__VA_ARGS__);} while (0)
-// #define lynq_log_error(...) do {lynq_write_log(LOG_ERROR,__VA_ARGS__);} while (0)
-// #define lynq_log_warning(...) do {lynq_write_log(LOG_WARNING,__VA_ARGS__);} while (0)
-// #define lynq_log_info(...) do {lynq_write_log(LOG_INFO,__VA_ARGS__);} while (0)
-// #define lynq_log_debug(...) do {lynq_write_log(LOG_DEBUG,__VA_ARGS__);} while (0)
-
-// #define LYVERBLOG(...) do {lynq_write_log(LOG_VERBOSE,__VA_ARGS__);} while (0)
-// #define LYERRLOG(...) do {lynq_write_log(LOG_ERROR,__VA_ARGS__);} while (0)
-// #define LYWARNLOG(...) do {lynq_write_log(LOG_WARNING,__VA_ARGS__);} while(0)
-// #define LYINFLOG(...) do {lynq_write_log(LOG_INFO,__VA_ARGS__);} while (0)
-// #define LYDBGLOG(...) do {lynq_write_log(LOG_DEBUG,__VA_ARGS__);} while (0)
-
-// // just for comcompatibility, do nothing
-// #define LYLOGSET(a) do{;}while(0)
-// #define LYLOGEINIT(Y) do{;}while(0)
-
-// #ifndef ALOGV
-// #define ALOGV(...) do {lynq_write_log(LOG_VERBOSE,__VA_ARGS__);} while (0)
-// #endif
-
-// #ifndef ALOGE
-// #define ALOGE(...) do {lynq_write_log(LOG_ERROR,__VA_ARGS__);} while (0)
-// #endif
-
-// #ifndef ALOGW
-// #define ALOGW(...) do {lynq_write_log(LOG_WARNING,__VA_ARGS__);} while (0)
-// #endif
-
-// #ifndef ALOGI
-// #define ALOGI(...) do {lynq_write_log(LOG_INFO,__VA_ARGS__);} while (0)
-// #endif
-
-// #ifndef ALOGD
-// #define ALOGD(...) do {lynq_write_log(LOG_DEBUG,__VA_ARGS__);} while (0)
-// #endif
-
-#define DEFINE_LYNQ_LIB_LOG(tag) \
- LYNQ_WRITE_LOG_PTR __attribute__ ((visibility ("hidden"))) lynq_write_log = NULL; \
- void __attribute__((constructor)) tag##_init() \
- { \
- lynq_write_log = lynq_log_function_init(#tag); \
- }
-
-#define DEFINE_LYNQ_EXE_LOG(tag) \
- LYNQ_WRITE_LOG_PTR __attribute__ ((visibility ("hidden"))) lynq_write_log = NULL; \
- void __attribute__((constructor)) tag##_init() \
- { \
- lynq_write_log = lynq_log_function_init(#tag); \
- lynq_log_configuration_init(#tag); \
- }
-
-#endif //__LYNQ_DEFLOG_H__
diff --git a/mbtk/include/lynq/lynq_gnss.h b/mbtk/include/lynq/lynq_gnss.h
deleted file mode 100755
index 893f6a8..0000000
--- a/mbtk/include/lynq/lynq_gnss.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-* qser_gnss.h
-*
-* QSER GNSS header file.
-*
-* Author : lb
-* Date : 2023/11/23 11:13:18
-*/
-#ifndef _QSER_GNSS_H
-#define _QSER_GNSS_H
-#include "mbtk_type.h"
-#include "mbtk_gnss.h"
-#include "mbtk_log.h"
-
-typedef unsigned int Uint_t;
-#define MOPEN_GNSS_NMEA_MAX_LENGTH 255 /* NMEA string maximum length. */
-
-#define QSER_LEN_MAX 128
-
-typedef enum
-{
- E_MT_LOC_MSG_ID_LOCATION_INFO = 1, /**< pv_data = & mopen_location_info_t */
- E_MT_LOC_MSG_ID_NMEA_INFO = 3, /**< pv_data = & mopen_gnss_nmea_info_t */
-} e_msg_id_t;
-
-typedef enum {
- QSER_GNSS_ERROR_SUCCESS = 0,
- QSER_GNSS_ERROR_FAIL,
-} qser_gnss_error_e;
-
-typedef void (*gnss_handler_func_t)
-(
- Uint_t *h_loc,
- e_msg_id_t e_msg_id, //消息 ID
- void *pv_data, //消息内容,取决于 ID,如下说明
- void *context_ptr //用于区分哪个返回的消息
-)/* lynq_AddRxIndMsgHandler_t*/;
-
-typedef void (*gnss_async_func_t)(qser_gnss_error_e state);
-
-typedef struct
-{
- char host[QSER_LEN_MAX];
- char id[QSER_LEN_MAX];
- char passwd[QSER_LEN_MAX];
-}qser_agps_info;
-
-typedef struct
-{
- int64_t timestamp; /**< System Timestamp, marked for when got the nmea data */
- int length; /**< NMEA string length. */
- char nmea[MOPEN_GNSS_NMEA_MAX_LENGTH + 1]; /**< NMEA string.*/
-}mopen_gnss_nmea_info_t; /* Message */
-
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_location_t. */
- int flags; /**< Contains GPS location flags bits. */
- int position_source; /**< Provider indicator for HYBRID or GPS. */ //功能暂未实现,可不用添加进结构体
- double latitude; /**< Latitude in degrees. */
- double longitude; /**< Longitude in degrees. */
- double altitude; /**< Altitude in meters above the WGS 84 reference ellipsoid. */
- float speed; /**< Speed in meters per second. */
- float bearing; /**< Heading in degrees. */ //功能暂未实现,可不用添加进结构体
- float accuracy; /**< Expected accuracy in meters. */ //功能暂未实现,可不用添加进结构体
- int64_t timestamp; /**< Timestamp for the location fix in UTC million-second base. */
- int32_t is_indoor; /**< Location is indoors. */ //功能暂未实现,可不用添加进结构体
- float floor_number; /**< Indicates the floor number. */
-}mopen_location_info_t;//功能暂未实现,可不用添加进结构体
-
-typedef struct
-{
- uint32_t year; // 大于 1980
- uint32_t month; // 1-12
- uint32_t day; // 1-31
- uint32_t hour; // 0-23
- uint32_t minute; // 0-59
- uint32_t second; // 0-59
- uint32_t millisecond; // 0-999
-} LYNQ_INJECT_TIME_INTO_T; /* Message */
-
-typedef enum {
- DELETE_NOTHING = 0, /*不删除数据*/
- DELETE_EPHEMERIS = 1, /*删除星历*/
- DELETE_ALMANAC = 2, /*删除历书*/
- DELETE_POSITION_TIME = 3, /*删除时间和位置信息. */
- DELETE_UTC = 4, /*删除 UTC 时间*/
- DELETE_ALL = 5 /*删除所有*/
-} DELETE_AIDING_DATA_TYPE_T;
-
-int qser_Gnss_Init (uint32_t *h_gnss);
-
-int qser_Gnss_Deinit (uint32_t h_gnss);
-
-int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss);
-
-int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type);
-
-int qser_Gnss_Set_Async_Callback(gnss_async_func_t cb);
-
-int qser_Gnss_Start (uint32_t h_gnss);
-
-int qser_Gnss_Start_Async(uint32_t h_gnss);
-
-int qser_Gnss_Stop (uint32_t h_gnss);
-
-int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency);
-
-int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
-
-int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
-
-int qser_Gnss_Server_Configuration(char *host, char *id, char *password);
-
-int qser_Gnss_download_tle();
-
-int qser_Gnss_injectEphemeris(uint32_t h_gnss);
-
-
-#endif /* _QSER_GNSS_H */
diff --git a/mbtk/include/lynq/lynq_led.h b/mbtk/include/lynq/lynq_led.h
deleted file mode 100755
index c95282b..0000000
--- a/mbtk/include/lynq/lynq_led.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef LYNQ_LED_H
-#define LYNQ_LED_H 1
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int lynq_set_netled_on(const int test_mode);
-int lynq_set_statusled_on(const int test_mode);
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_network.h b/mbtk/include/lynq/lynq_network.h
deleted file mode 100755
index e878e6b..0000000
--- a/mbtk/include/lynq/lynq_network.h
+++ /dev/null
@@ -1,147 +0,0 @@
-#ifndef LYNQ_NETWORK_H
-#define LYNQ_NETWORK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define MODEM_GEN97 1
-#define CELLINFO_MAX_NUM 10
-#define LY_RECOVER_TIMER_INTERVAL 128
-#define MAX_CELLINFO_ITEM_NUMBER 32
-#define MAX_OOS_CFG_ITEM_NUMBER 32
-/*T800 platform support gsm,wcdma lte,nr */
-typedef struct{
- int gw_sig_valid; /*1 valid,1 invalid*/
- int rssi; /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */
- int wcdma_sig_valid;/*1 valid,0 invalid*/
- int wcdma_signalstrength;
- int rscp; /* The Received Signal Code Power in dBm multipled by -1.
- * Range : 25 to 120
- * INT_MAX: 0x7FFFFFFF denotes invalid value.
- * Reference: 3GPP TS 25.123, section 9.1.1.1 */
- int ecno; /* Valid values are positive integers. This value is the actual Ec/Io multiplied
- * by -10. Example: If the actual Ec/Io is -12.5 dB, then this response value
- * will be 125.*/
- int lte_sig_valid;/*1 valid,0 invalid*/
- int lte_signalstrength;
- int rsrp; /* The current Reference Signal Receive Power in dBm multipled by -1.
- * Range: 44 to 140 dBm
- * INT_MAX: 0x7FFFFFFF denotes invalid value.
- * Reference: 3GPP TS 36.133 9.1.4 */
- int rsrq; /* The current Reference Signal Receive Quality in dB multiplied by -1.
- * Range: 20 to 3 dB.
- * INT_MAX: 0x7FFFFFFF denotes invalid value.
- * Reference: 3GPP TS 36.133 9.1.7 */
- int rssnr; /* The current reference signal signal-to-noise ratio in 0.1 dB units.
- * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).
- * INT_MAX : 0x7FFFFFFF denotes invalid value.
- * Reference: 3GPP TS 36.101 8.1.1 */
- int nr_sig_valid;/*1 valid,0 invalid*/
- int ssRsrp; /* SS(Synchronization Signal) reference signal received power, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [44, 140], INT_MAX means invalid/unreported.*/
- int ssRsrq; /* SS reference signal received quality, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [3, 20], INT_MAX means invalid/unreported.*/
- int ssSinr; /* SS signal-to-noise and interference ratio.
- * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
- * Range [-23, 40], INT_MAX means invalid/unreported.*/
- int csiRsrp; /* CSI reference signal received power, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [44, 140], INT_MAX means invalid/unreported.*/
- int csiRsrq; /* CSI reference signal received quality, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [3, 20], INT_MAX means invalid/unreported.*/
- int csiSinr; /* CSI signal-to-noise and interference ratio.
- * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
- * Range [-23, 40], INT_MAX means invalid/unreported.*/
-}signalStrength_t;
-
-typedef enum {
- NETWORK_RADIO_ON_TYPE_CFUN_0=0,
- NETWORK_RADIO_ON_TYPE_NORMAL_MODE=1,
- NETWORK_RADIO_ON_TYPE_FLIGHT_MODE=4,
-}lynq_network_radio_on_type;
-
-int lynq_network_init(int utoken);
-int lynq_network_deinit(void);
-int lynq_query_operater(char *OperatorFN,char *OperatorSH,char *MccMnc);
-int lynq_query_network_selection_mode(int *netselMode);
-int lynq_set_network_selection_mode(const char *mode,const char* mccmnc);
-int lynq_query_available_network(char *OperatorFN,char *OperatorSH,char *MccMnc,char * NetStatus);
-int lynq_query_registration_state(const char *type,int* regState,int* imsRegState,char * LAC,char * CID,int *netType,int *radioTechFam,int *netRejected);
-int lynq_query_prefferred_networktype(int *preNetType);
-int lynq_set_prefferred_networktype(const int preffertype);
-int lynq_query_cell_info(uint64_t cellinfo[CELLINFO_MAX_NUM],int tac[CELLINFO_MAX_NUM],int earfcn[CELLINFO_MAX_NUM],int * realNum);
-int lynq_set_unsol_cell_info_listrate(const int rate);
-int lynq_set_band_mode(const int bandmode);
-int lynq_query_available_bandmode(int availBanMode[]);
-int lynq_radio_on(const lynq_network_radio_on_type type);
-int lynq_query_radio_state(int *radio_state);
-int lynq_query_radio_tech(int* radioTech);
-int lynq_solicited_signal_strength(signalStrength_t *solSigStren);
-int lynq_set_ims(const int ims_mode);
-int lynq_wait_signalchanges(int *handle);
-int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id);
-
-typedef enum {
- LYNQ_CELL_INFO_TYPE_GSM = 2,
- LYNQ_CELL_INFO_TYPE_WCDMA = 3,
- LYNQ_CELL_INFO_TYPE_LTE = 4,
- LYNQ_CELL_INFO_TYPE_NR = 5
-} lynq_network_cell_info_type;
-
-int lynq_query_serve_cell_info(int serve_cell_info[MAX_CELLINFO_ITEM_NUMBER], int * valid_number);
-
-typedef enum {
- NETWORK_STATE_BUFFER_TYPE_VOICE_REG,
- NETWORK_STATE_BUFFER_TYPE_DATA_REG,
- NETWORK_STATE_BUFFER_TYPE_IMS_REG,
- NETWORK_STATE_BUFFER_TYPE_MAX,
-}lynq_network_state_buffer_type;
-int lynq_set_state_buffer_valid_period_of_network(lynq_network_state_buffer_type type,int valid_period);
-int lynq_get_state_buffer_valid_period_of_network(lynq_network_state_buffer_type type);
-#ifdef MODEM_GEN97
-/**@brief set or get OOS recover timer interval
-* @param mode [IN] <mode>:
-* 0:set
-* 1:get
-* @param interval [IN] <interval>: the recovery timer interval.
-* field:
-* T1,T2,...,T23:integer value 0~0xFFFFFFFF
-* The length of time in seconds.
-* defualt interval: 20,20,60,60,60,60,90,90,90,90,90,90,180,180,180,180,180,180,360,360,360,360,360
-* @param result [OUT] <result>: the recovery timer interval,when the mode is 1, this parameter is valid.
-
-* @return
-* 0:success
-* other:failure
-*/
-int lynq_oos_recover_timer_interval(int mode, char interval[LY_RECOVER_TIMER_INTERVAL],char result[LY_RECOVER_TIMER_INTERVAL]);
-/**@brief set deep sleep recover timer interval
-
-* @param recovery_threshold [IN] <recovery_threshold>: valid range 2-10 //After performing several rounds of normal recovery, deep sleep mode optimization will be applied
-
-* @param fullband_timer [IN] <fullband_timer>:valid range 90-360 //fullband intervarl length in deep sleep mode
-
-* @param sniffer_timer [IN] <sniffer_timer>:valid range 10-60 // sniffe intervarl length in deep sleep mode.
-
-* @param inactive_mode [IN] <inactive_mode>:
-* 0 Exit inactive mode
-* 1 enter inactive mode
-
-* @return
-* 0:success
-* other:failure
-*/
-int lynq_oos_deep_sleep_recover_timer_interval(int recovery_threshold,int fullband_timer,int sniffer_timer,int inactive_mode);
-#endif
-#if (defined MOBILETEK_TARGET_PLATFORM_T106) || (defined MODEM_GEN97)
-int lynq_set_oos_net_scan_cfg(int config_list[MAX_OOS_CFG_ITEM_NUMBER], int valid_num);
-int lynq_get_oos_net_scan_cfg(int config_list[MAX_OOS_CFG_ITEM_NUMBER], int* valid_num);
-#endif
-void lynq_set_test_mode(const int test_mode);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mbtk/include/lynq/lynq_qser_gnss.h b/mbtk/include/lynq/lynq_qser_gnss.h
deleted file mode 100755
index 9eead07..0000000
--- a/mbtk/include/lynq/lynq_qser_gnss.h
+++ /dev/null
@@ -1,134 +0,0 @@
-#ifndef __LYNQ_GNSS_H__
-#define __LYNQ_GNSS_H__
-#ifdef __cplusplus
-extern "C" {
-#endif
-struct mbtk_gnss_handle_t
-{
- int dev_fd;
- pthread_t uart_pthread;
- pthread_t gnss_pthread;
- gnss_handler_func_t gnss_handler_func;
- int mode; // 0 - stop, 1 - single, 2 - periodic, 3 - start
- pthread_mutex_t _cond_mutex;
- int reset_state;
- int inited;
- ring_buffer_t ring_buffer;
- int getap_status;
- char *rb;
-
-#if TTFF_TEST
- pthread_t ttff_pid;
- int location_state;
-#endif
- /********************
- save handle's adr
- phandle = &handle
- handle = mbtk_gnss_handle
- *********************/
- uint32_t *phandle; // handle's adr
-};
-
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_sv_info_t. */
- int prn; /**< Pseudo-random number for the SV. */
- float snr; /**< Signal-to-noise ratio. */
- float elevation; /**< Elevation of the SV in degrees. */
- float azimuth; /**< Azimuth of the SV in degrees. */
-}QL_LOC_SV_INFO_T; /* Type */
-
-struct login_information /*Used To Stored User Information*/
-{
- char* host;
- char* id;
- char* password;
-};
-
-static struct login_information *login_information_t = NULL;
-
-#define QL_LOC_GPS_SUPPORT_SVS_MAX 32 /** Maximum number of satellites in view. */
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_sv_status_t. */
- int num_svs; /**< Number of SVs currently visible. */
- QL_LOC_SV_INFO_T sv_list[QL_LOC_GPS_SUPPORT_SVS_MAX]; /**< Contains an array of SV information. */
- uint32_t ephemeris_mask; /**< Bitmask indicating which SVs have ephemeris data. */
- uint32_t almanac_mask; /**< Bitmask indicating which SVs have almanac data. */
- uint32_t used_in_fix_mask; /**< Bitmask indicating which SVs were used for computing the most recent position fix. */
-}QL_LOC_SV_STATUS_T; /* Type */
-
-typedef enum
-{
- LYNQ_POS_MODE_STANDALONE = 0, /**< Mode for running GPS standalone (no assistance). */
- LYNQ_POS_MODE_MS_BASED = 1, /**< AGPS MS-Based mode. */
- LYNQ_POS_MODE_MS_ASSISTED = 2, /**< AGPS MS-Assisted mode. */
-}LYNQ_POS_MODE_T;
-
-typedef enum
-{
- LYNQ_POS_RECURRENCE_PERIODIC = 0, /**< Receive GPS fixes on a recurring basis at a specified period. */
- LYNQ_POS_RECURRENCE_SINGLE = 1, /**< Request a single-shot GPS fix. */
-}LYNQ_POS_RECURRENCE_T;
-
-struct LYNQ_POS_MODE_INFO_T
-{
- LYNQ_POS_MODE_T mode; /* Position mode. */
- LYNQ_POS_RECURRENCE_T recurrence; /* Recurrence */
-};
-
-
-#endif
-typedef struct
-{
- uint32_t year; // 大于1980
- uint32_t month; // 1-12
- uint32_t day; // 1-31
- uint32_t hour; // 0-23
- uint32_t minute; // 0-59
- uint32_t second; // 0-59
- uint32_t millisecond; // 0-999
-}LYNQ_INJECT_TIME_INTO_T; /* Message */
-
-
-typedef enum {
- LOC_IND_STATUS_INFO_ON,//E_MT_LOC_MSG_ID_STATUS_INFO = 0,
- LOC_IND_LOCATION_INFO_ON,//E_MT_LOC_MSG_ID_LOCATION_INFO,
- LOC_IND_SV_INFO_ON,//E_MT_LOC_MSG_ID_SV_INFO,
- LOC_IND_NMEA_INFO_ON,//E_MT_LOC_MSG_ID_NMEA_INFO,
- LOC_IND_CAP_INFO_ON,//E_MT_LOC_MSG_ID_CAPABILITIES_INFO,
- LOC_IND_AGPS_DATA_CONN_CMD_REQ_ON,//E_MT_LOC_MSG_ID_AGPS_STATUS,
- LOC_IND_NI_NFY_USER_RESP_REQ_ON,//E_MT_LOC_MSG_ID_NI_NOTIFICATION,
- LOC_IND_XTRA_DATA_REQ_ON,//E_MT_LOC_MSG_ID_XTRA_REPORT_SERVER,
-}msg_t;
-
-typedef enum {
- DELETE_NOTHING = 0, /**< Delete nothing. */
- DELETE_EPHEMERIS = 1, /**< Delete ephemeris data. */
- DELETE_ALMANAC = 2, /**< Delete almanac data. */
- DELETE_POSITION_TIME = 3, /**< Delete position and time data. */
- DELETE_UTC = 4, /**< Delete UTC data. */
- DELETE_ALL = 5, /**< Delete all location data. */
-}DELETE_AIDING_DATA_TYPE_T;
-
-typedef void ( *lynq_atsvc_incb )( const char *input,const int length);
-typedef void ( *lynq_atsvc_outcb )(char *output, int out_max_size, int mode);
-lynq_atsvc_incb lynq_register_gnss(lynq_atsvc_outcb out_cb);
-
-int qser_Gnss_Init(uint32_t *h_gnss);
-int qser_Gnss_Deinit(uint32_t h_gnss);
-int qser_AddRxIndMsgHandler(gnss_handler_func_t handler_ptr,uint32_t h_gnss);
-int qser_Set_Indications(uint32_t h_gnss,e_msg_id_t type);
-int qser_Gnss_Start(uint32_t h_gnss);
-int qser_Gnss_Stop(uint32_t h_gnss);
-int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency);
-int qser_Gnss_Delete_Aiding_Data(uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
-int qser_Gnss_Server_Configuration(char *host, char *id, char *password);
-int qser_Gnss_InjectTime(uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
-int qser_firmware_update(uint32_t h_gnss);
-int qser_Gnss_injectEphemeris(uint32_t h_gnss);
-int qser_Gnss_download_tle();
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/mbtk/include/lynq/lynq_qser_network.h b/mbtk/include/lynq/lynq_qser_network.h
deleted file mode 100755
index 61d68f0..0000000
--- a/mbtk/include/lynq/lynq_qser_network.h
+++ /dev/null
@@ -1,474 +0,0 @@
-/**
- *@file QSER_nw.h
- *@date 2018-02-22
- *@author
- *@brief
- */
-#ifndef __LYNQ_QSER_NETWORK_H__
-#define __LYNQ_QSER_NETWORK_H__
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "mbtk_type.h"
-
-typedef uint32_t nw_client_handle_type;
-
-
-#define QSER_NW_MODE_NONE 0x00 /**< No network. */
-#define QSER_NW_MODE_GSM 0x01 /**< Include GSM networks. */
-#define QSER_NW_MODE_WCDMA 0x02 /**< Include WCDMA networks. */
-#define QSER_NW_MODE_CDMA 0x04 /**< Include CDMA networks. */
-#define QSER_NW_MODE_EVDO 0x08 /**< Include EVDO networks. */
-#define QSER_NW_MODE_LTE 0x10 /**< Include LTE networks. */
-#define QSER_NW_MODE_TDSCDMA 0x20 /**< Include TDSCDMA networks. */
-
-typedef enum
-{
- E_QSER_NW_ROAM_STATE_OFF = 0, /**< None, or roaming indicator off. */
- E_QSER_NW_ROAM_STATE_ON = 1 /**< Roaming indicator on. */
-}E_QSER_NW_ROAM_STATE_TYPE_T;
-
-/** Configures the settings that define the MCM network interface. */
-typedef struct
-{
- /* Configuration parameters for MCM network registration Network registration details Technology dependent network registration details */
- uint64_t preferred_nw_mode; /**< Preferred network mode for connections; a bitmask of QSER_NW_MODE_xxxx.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming_pref; /**< Roaming preference.*/
-}QSER_NW_CONFIG_INFO_T;
-
-typedef enum
-{
- E_QSER_NW_IMS_MODE_OFF = 0, /**< close ims. */
- E_QSER_NW_IMS_MODE_VOLTE_ENABLE = 1, /**< support volte. */
-}E_QSER_NW_IMS_MODE_TYPE_T;
-
-/** Configures the OOS (out of service) settings that define the MCM network interface. */
-#define QSER_NW_OOS_CFG_TYPE_FAST_SCAN 0x00 /**< fast net scan */
-#define QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN 0x01 /**< full band scan */
-
-typedef struct
-{
- /* Configuration parameters for MCM network fast network scan when OOS (out of service)*/
- char enable;
- uint16_t time_interval;
-}QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T;
-
-typedef struct
-{
- /* Configuration parameters for MCM network full band network scan when OOS (out of service)*/
- int t_min;
- int t_step;
- int t_num;
- int t_max;
-}QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T;
-
-
-typedef struct
-{
- char type; /**< QSER_NW_OOS_CFG_TYPE_xxxx.*/
- union {
- QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T fast_can_info; // 00
- QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T full_band_scan_info; // 01
- } u;
-}QSER_NW_OOS_CONFIG_INFO_T;
-
-//defined for QSER_NW_EventRegister
-#define NW_IND_VOICE_REG_EVENT_IND_FLAG (1 << 0) /**< msg format : QSER_NW_VOICE_REG_EVENT_IND_T */
-#define NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) /**< msg format : QSER_NW_DATA_REG_EVENT_IND_T */
-#define NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) /**< msg format : QSER_NW_SINGNAL_EVENT_IND_T */
-//#define NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG (1 << 3) /**< msg format : QL_MCM_NW_CELL_ACCESS_STATE_EVENT_IND_T */
-//#define NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG (1 << 4) /**< msg format : QL_MCM_NW_NITZ_TIME_EVENT_IND_T */
-#define NW_IND_IMS_REG_EVENT_IND_FLAG (1 << 5) /**< msg format : NULL */
-
-typedef struct
-{
- char long_eons[512 + 1]; /**< Long EONS.*/
- char short_eons[512 + 1]; /**< Short EONS.*/
- char mcc[3 + 1]; /**< Mobile country code.*/
- char mnc[3 + 1]; /**< Mobile network code.*/
-}QSER_NW_OPERATOR_NAME_INFO_T;
-
-typedef enum
-{
- E_QSER_NW_RADIO_TECH_TD_SCDMA = 1,
- E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */
- E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */
- E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */
- E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */
- E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */
- E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */
- E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */
- E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */
- E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */
- E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */
- E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */
- E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */
- E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */
- E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */
- E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */
- E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */
- E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
-}E_QSER_NW_RADIO_TECH_TYPE_T;
-
-
-typedef enum
-{
- E_QSER_NW_TECH_DOMAIN_NONE = 0, /**< None. */
- E_QSER_NW_TECH_DOMAIN_3GPP = 1, /**< 3GPP. */
- E_QSER_NW_TECH_DOMAIN_3GPP2 = 2, /**< 3GPP2. */
-}E_QSER_NW_TECH_DOMAIN_TYPE_T;
-
-typedef enum
-{
- E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON = 1, /**< IMSI unknown in HLR. */
- E_QSER_NW_ILLEGAL_MS_DENY_REASON = 2, /**< Illegal MS. */
- E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON = 3, /**< IMSI unknown in VLR. */
- E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON = 4, /**< IMEI not accepted. */
- E_QSER_NW_ILLEGAL_ME_DENY_REASON = 5, /**< Illegal ME. */
- E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON = 6, /**< PLMN not allowed. */
- E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON = 7, /**< Location area not allowed. */
- E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON = 8, /**< Roaming not allowed in this location area. */
- E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON = 9, /**< No suitable cells in location area. */
- E_QSER_NW_NETWORK_FAILURE_DENY_REASON = 10, /**< Network failure. */
- E_QSER_NW_MAC_FAILURE_DENY_REASON = 11, /**< MAC failure. */
- E_QSER_NW_SYNCH_FAILURE_DENY_REASON = 12, /**< Sync failure. */
- E_QSER_NW_CONGESTION_DENY_REASON = 13, /**< Congestion. */
- E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON = 14, /**< GSM authentication unacceptable. */
- E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON = 15, /**< Not authorized in this CSG. */
- E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON = 16, /**< Service option not supported. */
- E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON = 17, /**< Requested service option not subscribed. */
- E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON = 18, /**< Call cannot be identified. */
- E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON = 19, /**< Semantically incorrect message. */
- E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON = 20, /**< Invalid mandatory information. */
- E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON = 21, /**< Message type non-existent or not implemented. */
- E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON = 22, /**< Message type not compatible with the protocol state. */
- E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON = 23, /**< Conditional IE error. */
- E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON = 24, /**< Message not compatible with the protocol state. */
- E_QSER_NW_PROTOCOL_ERROR_DENY_REASON = 25, /**< Unspecified protocol error. */
-}E_QSER_NW_DENY_REASON_TYPE_T;
-
-
-typedef enum
-{
- E_QSER_NW_SERVICE_NONE = 0x0000, /**< Not registered or no data. */
- E_QSER_NW_SERVICE_LIMITED = 0x0001, /**< Registered; emergency service only. */
- E_QSER_NW_SERVICE_FULL = 0x0002, /**< Registered, full service. */
-}E_QSER_NW_SERVICE_TYPE_T;
-
-typedef struct
-{
- E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
- E_QSER_NW_DENY_REASON_TYPE_T deny_reason; /**< Set when registration state is #nw_deny_reason_t_v01.*/
- E_QSER_NW_SERVICE_TYPE_T registration_state; /**< Registration state.*/
-}QSER_NW_COMMON_REG_INFO_T;
-
-
-typedef struct
-{
- E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
- char mcc[3+1]; /**< Mobile country code.*/
- char mnc[3+1]; /**< Mobile network code.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
- uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
- uint32_t cid; /**< Cell ID for the registered 3GPP system.*/
- uint16_t lac; /**< Locatin area code for the registered 3GPP system.*/
- uint16_t psc; /**< Primary scrambling code (WCDMA only); 0 -- None.*/
- uint16_t tac; /**< Tracking area code information for LTE.*/
-}QSER_NW_3GPP_REG_INFO_T;
-
-
-typedef struct
-{
- E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
- char mcc[3+1]; /**< Mobile country code.*/
- char mnc[3+1]; /**< Mobile network code.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< Roaming status; see #nw_roam_state_t_v01.*/
- uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
- uint8_t inPRL; /**< 0 -- Not in PRL, 1 -- In PRL.*/
- uint8_t css; /**< Concurrent services supported: 0 -- No, 1 -- Yes.*/
- uint16_t sid; /**< CDMA system ID.*/
- uint16_t nid; /**< CDMA network ID.*/
- uint16_t bsid; /**< Base station ID. @newpagetable */
-}QSER_NW_3GPP2_REG_INFO_T;
-
-/** Gets the status associated with the connection of \<id\>. */
-typedef struct
-{
- uint8_t voice_registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T voice_registration; /**< Voice registration. */
-
- uint8_t data_registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T data_registration; /**< Data registration. */
-
- uint8_t voice_registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T voice_registration_details_3gpp; /**< Voice registration details for 3GPP. */
-
- uint8_t data_registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T data_registration_details_3gpp; /**< Data registration details for 3GPP. */
-
- uint8_t voice_registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T voice_registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
-
- uint8_t data_registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T data_registration_details_3gpp2; /**< Data registration details for 3GPP2. */
-}QSER_NW_REG_STATUS_INFO_T;
-
-typedef enum
-{
- E_QSER_NW_IMS_SERVICE_NONE = 0x0000, /**< Not registered */
- E_QSER_NW_IMS_SERVICE_REGISTERED = 0x0001, /**< Registered*/
-}E_QSER_NW_IMS_SERVICE_TYPE_T;
-
-typedef struct
-{
- E_QSER_NW_IMS_SERVICE_TYPE_T registration_state; /**< Registration state.*/
-}QSER_NW_IMS_REG_STATUS_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates received signal strength. A signed value; -125 or lower indicates no signal.*/
-}QSER_NW_GSM_SIGNAL_INFO_T;
-
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QSER_NW_WCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. a signed value; -125 or lower indicates no signal.*/
- int8_t rscp; /**< RSCP in dBm.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
- int8_t sinr; /**< Measured SINR in dB. @newpagetable */
-}QSER_NW_TDSCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
- int8_t rsrq; /**< RSRQ value in dB (signed integer value), as measured by L1. Range: -3 to -20 (-3 equals -3 dB, -20 equals -20 dB).*/
- int16_t rsrp; /**< Current RSRP in dBm, as measured by L1. Range: -44 to -140 (-44 equals -44 dBm, -140 equals -140 dBm).*/
- int16_t snr; /**< SNR level as a scaled integer in units of 0.1 dB; e.g., -16 dB has a value of -160 and 24.6 dB has a value of 246.*/
-}QSER_NW_LTE_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QSER_NW_CDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
- int8_t sinr; /**< SINR level.*/
- int32_t io; /**< Received IO in dBm. */
-}QSER_NW_HDR_SIGNAL_INFO_T;
-
-typedef struct
-{
- int16_t ssRsrp; /* SS(Synchronization Signal) reference signal received power, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [44, 140], INT_MAX means invalid/unreported.*/
- int16_t ssRsrq; /* SS reference signal received quality, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [3, 20], INT_MAX means invalid/unreported.*/
- int16_t ssSinr; /* SS signal-to-noise and interference ratio.
- * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
- * Range [-23, 40], INT_MAX means invalid/unreported.*/
- int16_t csiRsrp; /* CSI reference signal received power, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [44, 140], INT_MAX means invalid/unreported.*/
- int16_t csiRsrq; /* CSI reference signal received quality, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [3, 20], INT_MAX means invalid/unreported.*/
- int16_t csiSinr; /* CSI signal-to-noise and interference ratio.
- * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
- * Range [-23, 40], INT_MAX means invalid/unreported.*/
-}QSER_NW_NR_SIGNAL_INFO_T;
-
-
-/** Gets signal strength information. */
-typedef struct
-{
- uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
- QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM signal information. */
- uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
- QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA signal information. */
- uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
- QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA signal information. */
- uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
- QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE signal information. */
- uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
- QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA signal information. */
- uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
- QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR signal information. */
- uint8_t nr_sig_info_valid;
- QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
-}QSER_NW_SIGNAL_STRENGTH_INFO_T;
-
-
-
-
-
-/* @bridef Callback function registered to QSER_NW_AddRxMsgHandler
- * map of ind_flag and ind_msg_buf as bellow :
- * NW_IND_VOICE_REG_EVENT_IND_FLAG : QSER_NW_VOICE_REG_EVENT_IND_T
- * NW_IND_DATA_REG_EVENT_IND_FLAG : QSER_NW_DATA_REG_EVENT_IND_T
- * NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG : QSER_NW_SINGNAL_EVENT_IND_T
- * NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG : QSER_NW_CELL_ACCESS_STATE_EVENT_IND_T
- * NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG : QSER_NW_NITZ_TIME_EVENT_IND_T
- * */
-typedef void (*QSER_NW_RxMsgHandlerFunc_t)(
- nw_client_handle_type h_nw,
- uint32_t ind_flag,
- void *ind_msg_buf,
- uint32_t ind_msg_len,
- void *contextPtr
-);
-
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_VOICE_REG_EVENT_IND_FLAG */
-typedef struct {
-
- uint8_t registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T registration; /**< Voice registration. */
-
- uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Voice registration details for 3GPP. */
-
- uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
-}QSER_NW_VOICE_REG_EVENT_IND_T;
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_DATA_REG_EVENT_IND_FLAG */
-typedef struct {
-
- uint8_t registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T registration; /**< Data registration. */
-
- uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Data registration details for 3GPP. */
-
- uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Data registration details for 3GPP2. */
-}QSER_NW_DATA_REG_EVENT_IND_T;
-
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG */
-typedef struct {
- uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
- QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM singal information. */
-
- uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
- QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA singal information. */
-
- uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
- QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA singal information. */
-
- uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
- QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE singal information. */
-
- uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
- QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA singal information. */
-
- uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
- QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR singal information. */
-
- uint8_t nr_sig_info_valid;
- QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
-}QSER_NW_SINGNAL_EVENT_IND_T;
-
-typedef enum
-{
- E_QSER_NW_RF_MODE_CFUN_0 = 0, /**< CFUN 0. */
- E_QSER_NW_RF_MODE_CFUN_1 = 1, /**< CFUN 1. */
- E_QSER_NW_RF_MODE_FLIGHT = 4, /**< Flight Mode, CFUN 4. */
-}E_QSER_NW_RF_MODE_TYPE_T;
-
-int qser_nw_client_init(nw_client_handle_type *ph_nw);
-
-int qser_nw_client_deinit(nw_client_handle_type h_nw);
-
-int qser_nw_set_config
-(
- nw_client_handle_type h_nw,
- QSER_NW_CONFIG_INFO_T *pt_info
-);
-
-int qser_nw_set_ims_enable
-(
- nw_client_handle_type h_nw,
- E_QSER_NW_IMS_MODE_TYPE_T ims_mode
-);
-
-int qser_nw_set_oos_config
-(
- nw_client_handle_type h_nw,
- QSER_NW_OOS_CONFIG_INFO_T *pt_info
-);
-
-int qser_nw_get_oos_config
-(
- nw_client_handle_type h_nw,
- QSER_NW_OOS_CONFIG_INFO_T *pt_info
-);
-
-int qser_nw_event_register
-(
- nw_client_handle_type h_nw,
- uint32_t bitmask // bit OR of NW_IND_xxxx_EVENT_ON
-);
-
-int qser_nw_get_operator_name
-(
- nw_client_handle_type h_nw,
- QSER_NW_OPERATOR_NAME_INFO_T *pt_info //You should malloc this or may cause stack overflow
-);
-
-int qser_nw_get_reg_status
-(
- nw_client_handle_type h_nw,
- QSER_NW_REG_STATUS_INFO_T *pt_info
-);
-
-int qser_nw_get_ims_reg_status
-(
- nw_client_handle_type h_nw,
- QSER_NW_IMS_REG_STATUS_INFO_T *pt_info
-);
-
-int qser_nw_get_signal_strength
-(
- nw_client_handle_type h_nw,
- QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info
-);
-
-int qser_nw_add_rx_msg_handler
-(
- nw_client_handle_type h_nw,
- QSER_NW_RxMsgHandlerFunc_t handlerPtr,
- void* contextPtr
-);
-
-int qser_nw_set_rf_mode
-(
- nw_client_handle_type h_nw,
- E_QSER_NW_RF_MODE_TYPE_T rf_mode
-);
-
-int qser_nw_get_rf_mode
-(
- nw_client_handle_type h_nw,
- E_QSER_NW_RF_MODE_TYPE_T *rf_mode
-);
-
-#ifdef __cplusplus
-}
-#endif
-#endif//__QSER_NW_H__
diff --git a/mbtk/include/lynq/lynq_qser_sim.h b/mbtk/include/lynq/lynq_qser_sim.h
deleted file mode 100755
index f49e611..0000000
--- a/mbtk/include/lynq/lynq_qser_sim.h
+++ /dev/null
@@ -1,473 +0,0 @@
-#ifndef __LYNQ_QSER_SIM__
-#define __LYNQ_QSER_SIM__
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include <stdint.h>
-#include "mbtk_type.h"
-
-#define QSER_SIM_IMSI_LEN_MAX 16 /** Maximum length of IMSI data. */
-#define QSER_SIM_ICCID_LEN_MAX 20 /** Maximum length of ICCID data. */
-
-typedef enum
-{
- E_QSER_SUCCESS = 0, /**< Success. */
- E_QSER_ERROR_BADPARM = 4, /**< Bad parameter. */
-}E_QSER_ERROR_CODE_T;
-
-typedef uint32_t sim_client_handle_type;
-
-typedef enum
-{
- QSER_SIM_SLOT_ID_1 = 0xB01, /**< Identify card in slot 1. */
- QSER_SIM_SLOT_ID_2 = 0xB02, /**< Identify card in slot 2. */
-}QSER_SIM_SLOT_ID_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_APP_TYPE_UNKNOWN = 0xB00, /**< Unknown application type */
- QSER_SIM_APP_TYPE_3GPP = 0xB01, /**< Identify the SIM/USIM application on the card. */
- QSER_SIM_APP_TYPE_3GPP2 = 0xB02, /**< Identify the RUIM/CSIM application on the card. */
- QSER_SIM_APP_TYPE_ISIM = 0xB03, /**< Identify the ISIM application on the card. */
-}QSER_SIM_APP_TYPE_T;
-
-typedef struct
-{
- QSER_SIM_SLOT_ID_TYPE_T e_slot_id; /**< Indicates the slot to be used. */
- QSER_SIM_APP_TYPE_T e_app; /**< Indicates the type of the application. */
-}QSER_SIM_APP_ID_INFO_T; /* Type */
-
-#define QSER_SIM_PIN_LEN_MAX 8 + 1 /** Maximum length of PIN data. */
-
-typedef enum
-{
- QSER_SIM_PIN_ID_1 = 0xB01, /**< Level 1 user verification. */
- QSER_SIM_PIN_ID_2 = 0xB02, /**< Level 2 user verification. */
-}QSER_SIM_PIN_ID_TYPE_T;
-
-typedef struct
-{
- QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t pin_value_len; /**< Must be set to the number of elements in pin_value. */
- char pin_value[QSER_SIM_PIN_LEN_MAX]; /* Value of the PIN */
-}QSER_SIM_VERIFY_PIN_INFO_T;
-
-/** Changes the PIN value of an application. The application must pass both the
- new and the old values of the PIN to complete the operation.
- The same PIN can be used by multiple sessions (i.e., the PIN is shared
- between GSM and RUIM in an ICC card). The PIN is automatically verified
- for all the sessions when the command is executed. */
-typedef struct
-{
- QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t old_pin_value_len; /**< Must be set to the number of elements in old_pin_value. */
- char old_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the old PIN as a sequence of ASCII characters. */
- uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
- char new_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QSER_SIM_CHANGE_PIN_INFO_T;
-
-/** Unblocks a blocked PIN using the PUK code. The client must pass PUK1 to unblock PIN1 or PUK2 to unblock PIN2.
- The same PIN can be used by multiple sessions (i.e., the PIN is shared between GSM and RUIM in an ICC card).
- The PIN is automatically verified for all the sessions when the command is executed. */
-typedef struct
-{
- QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t puk_value_len; /**< Must be set to the number of elements in puk_value. */
- char puk_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the PUK as a sequence of ASCII characters. */
- uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
- char new_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QSER_SIM_UNBLOCK_PIN_INFO_T;
-
-/** Enables the PIN on an application. */
-typedef QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_ENABLE_PIN_INFO_T; //Same
-
-/** Disables the PIN of an application, */
-typedef QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_DISABLE_PIN_INFO_T; //Same
-
-
-typedef enum
-{
- QSER_SIM_PERSO_FEATURE_TYPE_UNKNOWN = 0xB00, /**< Unknown personalization feature. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK = 0xB01, /**< Featurization based on 3GPP MCC and MNC. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK_SUBSET = 0xB02, /**< Featurization based on 3GPP MCC, MNC, and IMSI digits 6 and 7. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SERVICE_PROVIDER = 0xB03, /**< Featurization based on 3GPP MCC, MNC, and GID1. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_CORPORATE = 0xB04, /**< Featurization based on 3GPP MCC, MNC, GID1, and GID2. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SIM = 0xB05, /**< Featurization based on the 3GPP IMSI. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_1 = 0xB06, /**< Featurization based on 3GPP2 MCC and MNC. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_2 = 0xB07, /**< Featurization based on 3GPP2 IRM code. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_RUIM = 0xB08, /**< Featurization based on 3GPP2 IMSI_M. */
-}QSER_SIM_PERSO_FEATURE_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_CARD_STATE_UNKNOWN = 0xB01, /**< Card state unknown. */
- QSER_SIM_CARD_STATE_ABSENT = 0xB02, /**< Card is absent. */
- QSER_SIM_CARD_STATE_PRESENT = 0xB03, /**< Card is present. */
- QSER_SIM_CARD_STATE_ERROR_UNKNOWN = 0xB04, /**< Unknown error state. */
- QSER_SIM_CARD_STATE_ERROR_POWER_DOWN = 0xB05, /**< Power down. */
- QSER_SIM_CARD_STATE_ERROR_POLL_ERROR = 0xB06, /**< Poll error. */
- QSER_SIM_CARD_STATE_ERROR_NO_ATR_RECEIVED = 0xB07, /**< Failed to receive an answer to reset. */
- QSER_SIM_CARD_STATE_ERROR_VOLT_MISMATCH = 0xB08, /**< Voltage mismatch. */
- QSER_SIM_CARD_STATE_ERROR_PARITY_ERROR = 0xB09, /**< Parity error. */
- QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS= 0xB0A, /**< Card returned technical problems. */
-}QSER_SIM_CARD_STATE_TYPE_T; /**< Card state. */
-
-typedef enum
-{
- QSER_SIM_CARD_TYPE_UNKNOWN = 0xB00, /**< Unidentified card type. */
- QSER_SIM_CARD_TYPE_ICC = 0xB01, /**< Card of SIM or RUIM type. */
- QSER_SIM_CARD_TYPE_UICC = 0xB02, /**< Card of USIM or CSIM type. */
-}QSER_SIM_CARD_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_PROV_STATE_NONE = 0xB00, /**< Nonprovisioning. */
- QSER_SIM_PROV_STATE_PRI = 0xB01, /**< Primary provisioning subscription. */
- QSER_SIM_PROV_STATE_SEC = 0xB02, /**< Secondary provisioning subscription. */
-}QSER_SIM_SUBSCRIPTION_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_APP_STATE_UNKNOWN = 0xB00, /**< Application state unknown. */
- QSER_SIM_APP_STATE_DETECTED = 0xB01, /**< Detected state. */
- QSER_SIM_APP_STATE_PIN1_REQ = 0xB02, /**< PIN1 required. */
- QSER_SIM_APP_STATE_PUK1_REQ = 0xB03, /**< PUK1 required. */
- QSER_SIM_APP_STATE_INITALIZATING = 0xB04, /**< Initializing. */
- QSER_SIM_APP_STATE_PERSO_CK_REQ = 0xB05, /**< Personalization control key required. */
- QSER_SIM_APP_STATE_PERSO_PUK_REQ = 0xB06, /**< Personalization unblock key required. */
- QSER_SIM_APP_STATE_PERSO_PERMANENTLY_BLOCKED= 0xB07, /**< Personalization is permanently blocked. */
- QSER_SIM_APP_STATE_PIN1_PERM_BLOCKED = 0xB08, /**< PIN1 is permanently blocked. */
- QSER_SIM_APP_STATE_ILLEGAL = 0xB09, /**< Illegal application state. */
- QSER_SIM_APP_STATE_READY = 0xB0A, /**< Application ready state. @newpage */
-}QSER_SIM_APP_STATE_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_PIN_STATE_UNKNOWN = 0xB01, /**< Unknown PIN state. */
- QSER_SIM_PIN_STATE_ENABLED_NOT_VERIFIED = 0xB02, /**< PIN required, but has not been verified. */
- QSER_SIM_PIN_STATE_ENABLED_VERIFIED = 0xB03, /**< PIN required and has been verified. */
- QSER_SIM_PIN_STATE_DISABLED = 0xB04, /**< PIN not required. */
- QSER_SIM_PIN_STATE_BLOCKED = 0xB05, /**< PIN verification has failed too many times and is blocked. Recoverable through PUK verification. */
- QSER_SIM_PIN_STATE_PERMANENTLY_BLOCKED = 0xB06, /**< PUK verification has failed too many times and is not recoverable. */
-}QSER_SIM_PIN_STATE_TYPE_T;
-
-typedef struct
-{
- QSER_SIM_SUBSCRIPTION_TYPE_T subscription; /**< Type of subscription (i.e., primary, secondary, etc.). */
- QSER_SIM_APP_STATE_TYPE_T app_state; /**< Current state of the application. */
- QSER_SIM_PERSO_FEATURE_TYPE_T perso_feature; /**< Current personalization state and feature enabled. */
- uint8_t perso_retries; /**< Number of personalization retries. */
- uint8_t perso_unblock_retries; /**< Number of personalization unblock retries. */
- QSER_SIM_PIN_STATE_TYPE_T pin1_state; /**< Current PIN 1 state. */
- uint8_t pin1_num_retries; /**< Number of PIN 1 retries. */
- uint8_t puk1_num_retries; /**< Number of PUK 1 retries. */
- QSER_SIM_PIN_STATE_TYPE_T pin2_state; /**< Current PIN 2 state. */
- uint8_t pin2_num_retries; /**< Number of PIN 2 retries. */
- uint8_t puk2_num_retries; /**< Number of PUK 2 retries. */
-}QSER_SIM_CARD_APP_INFO_T;
-
-typedef struct
-{
- QSER_SIM_CARD_APP_INFO_T app_3gpp; /**< Stores 3GPP application information. */
- QSER_SIM_CARD_APP_INFO_T app_3gpp2; /**< Stores 3GPP2 application information. */
- QSER_SIM_CARD_APP_INFO_T app_isim; /**< Stores ISIM application information. */
-}QSER_SIM_CARD_ALL_APP_INFO_T;
-
-typedef struct
-{
- QSER_SIM_CARD_STATE_TYPE_T e_card_state;/**< Current card and card error state. */
- QSER_SIM_CARD_TYPE_T e_card_type; /**< Card type. */
- QSER_SIM_CARD_ALL_APP_INFO_T card_app_info; /**< Stores all relevant application information. */
-}QSER_SIM_CARD_STATUS_INFO_T;
-
-typedef QSER_SIM_CARD_STATUS_INFO_T* QSER_SIM_MsgRef;
-/* Callback function registered to qser_sms_addrxmsghandler, msgRef contains the detail msg infor */
-typedef void (*QSER_SIM_RxMsgHandlerFunc_t)(QSER_SIM_MsgRef msgRef);
-
-
-int qser_sim_client_init(sim_client_handle_type *ph_sim);
-
-int qser_sim_client_deinit(sim_client_handle_type h_sim);
-
-/*===========================================================================
-
- FUNCTION: qser_sim_getimsi
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the IMSI (for 3GPP)
- or IMSI_M (for 3GPP2) from the SIM in ASCII form
-
- @return
- void
-*/
-/*=========================================================================*/
-int qser_sim_getimsi(
- sim_client_handle_type h_sim,
- QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier info.
- char *imsi, ///< [OUT] IMSI buffer
- size_t imsiLen ///< [IN] IMSI buffer length
-);
-
-
-/*===========================================================================
-
- FUNCTION: qser_sim_geticcid
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the ICCID from
- SIM in ASCII form
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_geticcid
-(
- sim_client_handle_type h_sim,
- QSER_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
- char *iccid, ///< [OUT] ICCID
- size_t iccidLen ///< [IN] ICCID buffer length
-);
-
-
-/*===========================================================================
-
- FUNCTION: qser_sim_getphonenumber
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the device phone
- number from MSISDN (for 3GPP) or MDN (for 3GPP2) from the SIM in
- ASCII form
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_getphonenumber
-(
- sim_client_handle_type h_sim,
- QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier.
- char *phone_num, ///< [OUT] phone number
- size_t phoneLen ///< [IN] phone number buffer length
-);
-
-/*===========================================================================
-
- FUNCTION: qser_sim_verifypin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to verify either PIN1 or PIN2
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_verifypin
-(
- sim_client_handle_type h_sim,
- QSER_SIM_VERIFY_PIN_INFO_T *pt_info ///< [IN] Verify PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: qser_sim_changepin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to change the value of
- either PIN1 or PIN2
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_changepin
-(
- sim_client_handle_type h_sim,
- QSER_SIM_CHANGE_PIN_INFO_T *pt_info ///< [IN] Change PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: qser_sim_unblockpin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to unblock a PIN1 or PIN2 that
- has been blocked
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_unblockpin
-(
- sim_client_handle_type h_sim,
- QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info ///< [IN] Unblock PIN infor
-);
-
-/*===========================================================================
-
- FUNCTION: qser_sim_enablepin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to enable PIN1 or PIN2
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_enablepin
-(
- sim_client_handle_type h_sim,
- QSER_SIM_ENABLE_PIN_INFO_T *pt_info ///< [IN] Enable PIN infor
-);
-
-/*===========================================================================
-
- FUNCTION: qser_sim_disablepin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to disable PIN1 or PIN2
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_disablepin
-(
- sim_client_handle_type h_sim,
- QSER_SIM_DISABLE_PIN_INFO_T *pt_info ///< [IN] Disable PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: qser_sim_getcardstatus
-
-===========================================================================*/
-/*
- @brief
- Function retrieves the server cached card status informations and
- sends the information to the client
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_getcardstatus
-(
- sim_client_handle_type h_sim,
- QSER_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
- QSER_SIM_CARD_STATUS_INFO_T *pt_info ///< [OUT] Cart status infor output
-);
-
-/*===========================================================================
-
- FUNCTION: qser_sim_getimei
-
-===========================================================================*/
-/*
- @brief
- get imei
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_sim_getimei(sim_client_handle_type h_sim, char *imei);
-int qser_get_imei_and_sv(sim_client_handle_type h_sim,char *imei, char*sv);
-
-
-/*===========================================================================
-
- FUNCTION: qser_get_imei_and_sv
-
-===========================================================================*/
-/*
- @brief
- get imei and sv
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_get_imei_and_sv
-(
- sim_client_handle_type h_sim,
- char *imei, char*sv
-);
-
-/*===========================================================================
-
- FUNCTION: qser_reset_modem
-
-===========================================================================*/
-/*
- @brief
- reboot modem
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_reset_modem(sim_client_handle_type h_sim);
-
-
-/*===========================================================================
-
- FUNCTION: qser_reset_modem
-
-===========================================================================*/
-/*
- @brief
- reboot modem
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_get_version(sim_client_handle_type h_sim, char *buf);
-
-
-/*===========================================================================
-
- FUNCTION: qser_reset_modem
-
-===========================================================================*/
-/*
- @brief
- reboot modem
-
- @return
- int
-*/
-/*=========================================================================*/
-int qser_reset_sim(sim_client_handle_type h_sim);
-
-int qser_sim_addrxmsghandler(QSER_SIM_RxMsgHandlerFunc_t handlerPtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
\ No newline at end of file
diff --git a/mbtk/include/lynq/lynq_qser_sms.h b/mbtk/include/lynq/lynq_qser_sms.h
deleted file mode 100755
index 7276fca..0000000
--- a/mbtk/include/lynq/lynq_qser_sms.h
+++ /dev/null
@@ -1,241 +0,0 @@
-#ifndef LYNQ_QSER_SMS_H
-#define LYNQ_QSER_SMS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <sys/types.h>
-#include <stdint.h>
-
-#define MIN_MSM_PARAM_NUM 4
-#define MIN_IMS_MSM_PARAM_NUM 6
-#define MIN_WRITMSM_PARAM_NUM 5
-#define MSG_MAX_LEN 1024
-#define TELEPHONNUM_LEN 64
-#define STORAGSMS_MAX_SIZE 128
-#define SMSC_MAX_LEN 22
-#define SMS_NUM_MAX 255
-
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef uint32_t sms_client_handle_type;
-
-/** Maximum length of an SMS. */
-#define QSER_SMS_MAX_MT_MSG_LENGTH 1440
-
-/** Maximum string length. */
-#define QSER_SMS_MAX_ADDR_LENGTH 252
-
-/** Maximum string length. */
-#define QSER_SMS_MAX_SCA_TYPLENGTH 3
-
-typedef enum
-{
- QSER_SMS_7BIT = 0,
- QSER_SMS_8BIT = 1,
- QSER_SMS_UCS2 = 2,
- //<2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao, <[SMS] Segment 1==> CharSet to Alpha implementation.>
- //QSER_SMS_IRA = 3,//just for inside test
- //>2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao
-
-}QSER_SMS_T;
-
-typedef enum
-{
- QSER_SMS_MO = 0, ///< SMS mobile terminated message.
- QSER_SMS_MT = 1, ///< SMS mobile originated message.
- QSER_SMS_BROADCAST_MT = 2 ///< SMS Cell Broadcast message.
-}QSER_SMS_TYPT;
-
-typedef enum
-{
- QSER_SMS_STORAGTYPNONE = -1, /**< Message no need to store. */
- QSER_SMS_STORAGTYPUIM = 0, /**< Message store to UIM. */
- QSER_SMS_STORAGTYPNV = 1, /**< Message store to NV. */
- QSER_SMS_STORAGTYPDB = 2, /**< Message store to NV. */
-}QSER_SMS_STORAGTYPT;
-
-typedef enum
-{
- QSER_SMS_MESSAGMODUNKNOWN = -1, /**< Message type CDMA */
- QSER_SMS_MESSAGMODCDMA = 0, /**< Message type CDMA */
- QSER_SMS_MESSAGMODGW = 1, /**< Message type GW. */
-}QSER_SMS_MODTYPT;
-
-typedef struct
- {
- uint8_t total_segments; /**< The number of long short message*/
- uint8_t seg_number; /**< Current number.*/
- uint8_t referencnumber; /**< referencnumber.*/
-}QSER_sms_user_data_head_t;
-
-typedef struct
-{
- /* If sms is stored, it won't parse, you need read it by yourself */
- QSER_SMS_STORAGTYPT storage; ///specify where stored this msg
-
- QSER_SMS_T format;
- QSER_SMS_TYPT type;
- char src_addr[QSER_SMS_MAX_ADDR_LENGTH]; ///Telephone number string.
- int sms_data_len;
- char sms_data[QSER_SMS_MAX_MT_MSG_LENGTH]; ///SMS content, data format depends on format
- char timestamp[21]; ///Message time stamp (in text mode). string format: "yy/MM/dd,hh:mm:ss+/-TimeZone"
- uint8_t user_data_head_valid; //indicate whether long sms. TRUE-long sms; FALSE-short message;
- QSER_sms_user_data_head_t user_data_head; //long sms user data head info.
- QSER_SMS_MODTYPT mode; ///specify where stored this msg cdma or gw area
- uint32_t storage_index; ///storage index, -1 means not store
-} QSER_sms_info_t;
-
-typedef struct
-{
- QSER_SMS_STORAGTYPT storage;
- QSER_SMS_MODTYPT mode;
- uint32_t storage_idx;
-} QSER_sms_storage_info_t;
-
-typedef enum
-{
- QSER_SMS_UNKNOWN = -1,
- QSER_SMS_DISCARD = 0x00, /* Incoming messages for this route are discarded by the WMS service without
- notifying QMI_WMS clients */
- QSER_SMS_STORAND_NOTIFY = 0x01, /* Incoming messages for this route are stored to the specified device
- memory, and new message notifications */
- QSER_SMS_TRANSFER_ONLY = 0x02, /* Incoming messages for this route are transferred to the client, and the
- client is expected to send ACK to the network */
- QSER_SMS_TRANSFER_AND_ACK = 0x03, /* Incoming messages for this route are transferred to the client, and ACK is
- sent to the network */
-}QSER_SMS_RECEPTION_ACTION_TYPT;
-
-#define QSER_WMS_MESSAGLENGTH_MAX 255
-
-typedef enum
- {
- QSER_WMS_MESSAGCDMA = 0x00, //- 0x00 -- MESSAGCDMA -- CDMA \n
- QSER_WMS_MESSAGGW_PP = 0x06, //- 0x06 -- MESSAGGW_PP -- GW_PP
-}QSER_WMS_MESSAGTYPE;
-
-
-typedef struct
- {
- QSER_WMS_MESSAGTYPE format;
- uint32_t raw_messaglen; /**< Must be set to # of elements in raw_message */
- uint8_t raw_message[QSER_WMS_MESSAGLENGTH_MAX]; /**< Raw message data*/
-}QSER_wms_send_raw_message_data_t;
-
-typedef enum
-{
- QSER_WMS_TL_CAUSCODADDR_VACANT = 0x00,
- QSER_WMS_TL_CAUSCODADDR_TRANSLATION_FAILURE = 0x01,
- QSER_WMS_TL_CAUSCODNETWORK_RESOURCSHORTAGE = 0x02,
- QSER_WMS_TL_CAUSCODNETWORK_FAILURE = 0x03,
- QSER_WMS_TL_CAUSCODINVALID_TELESERVICID = 0x04,
- QSER_WMS_TL_CAUSCODNETWORK_OTHER = 0x05,
- QSER_WMS_TL_CAUSCODNO_PAGRESPONSE = 0x20,
- QSER_WMS_TL_CAUSCODDEST_BUSY = 0x21,
- QSER_WMS_TL_CAUSCODNO_ACK = 0x22,
- QSER_WMS_TL_CAUSCODDEST_RESOURCSHORTAGE = 0x23,
- QSER_WMS_TL_CAUSCODSMS_DELIVERY_POSTPONED = 0x24,
- QSER_WMS_TL_CAUSCODDEST_OUT_OF_SERV = 0x25,
- QSER_WMS_TL_CAUSCODDEST_NOT_AT_ADDR = 0x26,
- QSER_WMS_TL_CAUSCODDEST_OTHER = 0x27,
- QSER_WMS_TL_CAUSCODRADIO_IF_RESOURCSHORTAGE = 0x40,
- QSER_WMS_TL_CAUSCODRADIO_IF_INCOMPATABILITY = 0x41,
- QSER_WMS_TL_CAUSCODRADIO_IF_OTHER = 0x42,
- QSER_WMS_TL_CAUSCODENCODING = 0x60,
- QSER_WMS_TL_CAUSCODSMS_ORIG_DENIED = 0x61,
- QSER_WMS_TL_CAUSCODSMS_TERM_DENIED = 0x62,
- QSER_WMS_TL_CAUSCODSUPP_SERV_NOT_SUPP = 0x63,
- QSER_WMS_TL_CAUSCODSMS_NOT_SUPP = 0x64,
- QSER_WMS_TL_CAUSCODMISSING_EXPECTED_PARAM = 0x65,
- QSER_WMS_TL_CAUSCODMISSING_MAND_PARAM = 0x66,
- QSER_WMS_TL_CAUSCODUNRECOGNIZED_PARAM_VAL = 0x67,
- QSER_WMS_TL_CAUSCODUNEXPECTED_PARAM_VAL = 0x68,
- QSER_WMS_TL_CAUSCODUSER_DATA_SIZERR = 0x69,
- QSER_WMS_TL_CAUSCODGENERAL_OTHER = 0x6A,
-}QSER_WMS_TL_CAUSCODTYPE;
-
-
-
-typedef struct
- {
- uint16_t messagid; /* Message ID */
- uint8_t causcodvalid; /**< Must be set to true if causcode is being passed */
- QSER_WMS_TL_CAUSCODTYPE causcode;
-}QSER_wms_raw_send_resp_t;
-
-typedef struct
- {
- char service_center_addr[QSER_SMS_MAX_ADDR_LENGTH + 1]; /**< Address of the service center.*/
- uint8_t service_center_addr_typvalid;
- char service_center_addr_type[QSER_SMS_MAX_SCA_TYPLENGTH + 1]; /**< 129 if the SMSC address does not start with a "+" characte;
- 145 if the SMSC address starts with a "+" character*/
-}QSER_sms_service_center_cfg_t;
-
-typedef QSER_sms_info_t QSER_SMS_Msg_t;
-typedef QSER_sms_info_t* QSER_SMS_MsgRef;
-
-/* Callback function registered to qser_sms_addrxmsghandler, msgRef contains the detail msg infor */
-typedef void (*QSER_SMS_RxMsgHandlerFunc_t)(QSER_SMS_MsgRef msgRef, void* contextPtr);
-
-/* Init SMS module and return h_sms, this should be called before any othe ones */
-int qser_sms_client_init(sms_client_handle_type *ph_sms);
-
-/* Add callback function, if any new msg arrived, it will notify app */
-int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
-
-/* Send sms, you just need to fill format/src_addr/sms_data_len/sms_data,
- if format is UCS2, the data should be Unicode-BE format.
-*/
-int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info);
-
-/* DeInit SMS module and release resource, this should be called in the last one. */
-int qser_sms_client_deinit(sms_client_handle_type h_sms);
-
-/* Delete the SMS specified in the pt_sms_storage */
-int qser_sms_deletefromstorage(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage);
-
-/* Send sms PDU.
-*/
-int qser_sms_send_smspdu( sms_client_handle_type h_sms,
- QSER_wms_send_raw_message_data_t *raw_messagdata,
- QSER_wms_raw_send_resp_t *rawresp);
-
-
-/* Get sms center address.
-*/
-int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms,
- QSER_sms_service_center_cfg_t *set_sca_cfg);
-
-/* Set sms center address.
-*/
-int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms,
- QSER_sms_service_center_cfg_t *get_sca_cfg);
-
-/*
-Usage 1 (register callback and wait for new sms arrive):
-1, qser_sms_client_init
-2, qser_sms_addrxmsghandler(pf_cb)
-3, wait for sms arrive, pf_cb will pass the detail sms info to app.
-4, qser_sms_client_deinit
-
-
-Usage 2 (Send sms):
-1, qser_sms_client_init
-2, qser_sms_addrxmsghandler(pf_cb)
-3, qser_sms_send_sms
-4, qser_sms_client_deinit
-
-
-Usage 3 (store sms):
-1, qser_sms_client_init
-2, qser_sms_addrxmsghandler(pf_cb)
-3, qser_sms_setroutelist (Notice: class-0 not allowed to store, class-2 must be stored to UIM)
-4, pf_cb will be called when new sms arrived, and tell you where the sms stored
-5, you can call qser_sms_deletefromstorage to delete specified sms, the location can be got from pf_cb.
-6, qser_sms_client_deinit
-*/
-
-#ifdef __cplusplus
-}
-#endif
-#endif
\ No newline at end of file
diff --git a/mbtk/include/lynq/lynq_qser_thermal.h b/mbtk/include/lynq/lynq_qser_thermal.h
deleted file mode 100755
index d776dde..0000000
--- a/mbtk/include/lynq/lynq_qser_thermal.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _LYNQ_QSER_THERMAL_H_
-#define _LYNQ_QSER_THERMAL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define MAX_SIZE 100
-int get_thermal_zone(int *numbers, int size);
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_sim.h b/mbtk/include/lynq/lynq_sim.h
deleted file mode 100755
index 8f2849a..0000000
--- a/mbtk/include/lynq/lynq_sim.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*=============================================================================
-# FileName: lynq_sim.h
-# Desc: about SIMAPI
-# Author: lei
-# Version: V2.0
-# LastChange: 2023-03-13
-# History:
-# If you need to use any API under lynq_sim, you must first call the lynq_sim_init() function to initialize these functions.
-=============================================================================*/
-#ifndef __LYNQ_SIM__
-#define __LYNQ_SIM__
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "mbtk_type.h"
-
-int lynq_get_sim_status(int *card_status);
-int lynq_get_imsi(char buf[]);
-int lynq_sim_init(int utoken);
-int lynq_sim_deinit(void);
-int lynq_enable_pin(char pin[]);
-int lynq_disable_pin(char pin[]);
-int lynq_get_iccid(char buf[]);
-int lynq_query_pin_lock(char *pin,int buf[]);
-int lynq_verify_pin(char *pin);
-int lynq_change_pin(char *old_pin, char *new_pin);
-int lynq_unlock_pin(char *puk, char *pin);
-int lynq_query_phone_number(char buf[]);
-int lynq_switch_card(int slot);
-int lynq_screen(int num);
-int lynq_get_imei(char buf[]);
-int lynq_get_imei_and_sv(char imei[],char sv[]);
-
-/**
- * @brief Request SIM I/O operation.
- * This is similar to the TS 27.007 "restricted SIM" operation
- * where it assumes all of the EF selection will be done by the callee.
- * @param list type: [IN] list[0]:one of the commands listed for TS 27.007 +CRSM.(command)
- * type: [IN] list[1]:EF id(fileid)
- * type: [IN] list[2]:offset(p1)
- * type: [IN] list[3]:offset(p2)
- * type: [IN] list[4]:response len,sometimes needn't care(p3)
- * @param path type: [IN] "pathid" from TS 27.007 +CRSM command.
- type: [IN] Path is in hex asciii format eg "7f205f70"
- type: [IN] Path must always be provided.
- * @param data type: [IN] May be NULL
- * @param pin2 type: [IN] May be NULL
- * @param aidPtr type: [IN] AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
- * @param sw type: [OUT]
- * @param simResponse type: [OUT] response
- * @return int
- */
-int lynq_req_sim_io(int list[5], char *path, char *data, char *pin2, char *aidPtr, int sw[2], char *simResponse);
-
-/**
- * @brief
- * @param options type: [IN] [options] define whether you want to halt, power-off, or reboot the machine.May be NULL
- * @param time type: [IN] [time] specifies when you want the shutdown to perform.May be NULL
- * @param message type: [IN] [message] adds a message that announces the shutdown.May be NULL
- * @return int
- */
-int lynq_shutdown(char options[], char time[], char message[]);
-
-/**
- * @brief get currnet version of mobiletek
- * @param buf type: [out] My Param doc
- * @return int
- */
-int lynq_get_version(char buf[]);
-
-/**
- * @brief sim power on/off
- *
- */
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-int lynq_reset_sim(void);
-#else
-int lynq_sim_power(int mode);
-#endif
-/**
- * @brief reset modem
- *
- */
-int lynq_reset_modem(void);
-
-/**
- * @brief factory test to both radio on/off
- *
- */
-int lynq_factory_radio_state(int num);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/mbtk/include/lynq/lynq_sms.h b/mbtk/include/lynq/lynq_sms.h
deleted file mode 100755
index 278278a..0000000
--- a/mbtk/include/lynq/lynq_sms.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef LYNQ_SMS_H
-#define LYNQ_SMS_H 1
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MIN_MSM_PARAM_NUM 4
-#define MIN_IMS_MSM_PARAM_NUM 6
-#define MIN_WRITE_MSM_PARAM_NUM 5
-#define MSG_MAX_LEN 1024
-#define TELEPHONE_NUM_LEN 64
-#define STORAGE_SMS_MAX_SIZE 128
-#define SMSC_MAX_LEN 22
-#define SMS_NUM_MAX 255
-
-typedef enum
-{
- SMS_ERR = -1,
- SMS_OK = 0,
- SMS_KNONW = 1,
- SMS_UNKNONW = 2
-}status_SMS;
-
-int lynq_sms_init(int uToken);
-int lynq_sms_deinit(void);
-int lynq_send_sms(char telephony_num[TELEPHONE_NUM_LEN], int charset, char *msg, int msglen);
-int lynq_read_sms(int index,int *status,int *charset,char smsc[SMSC_MAX_LEN],int *smscLen,int *smslen,char message[MSG_MAX_LEN],char teleNum[TELEPHONE_NUM_LEN],int *numLen,int *current,int *total);
-int lynq_get_smsc_address(char service_num[SMSC_MAX_LEN]);
-int lynq_set_smsc_address(const char* service_num);
-int lynq_list_sms(char index_list[SMS_NUM_MAX]);
-int lynq_delete_sms(int index);
-int lynq_wait_receive_new_sms(int *handle);
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_systime.h b/mbtk/include/lynq/lynq_systime.h
deleted file mode 100755
index a9d54d9..0000000
--- a/mbtk/include/lynq/lynq_systime.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/**@file lynq-systime.h
- *
- * @brief Sync systime form each time source.
- *
- * @author sj.zhang
- *
- * @date 2023-08-14
- *
- * @version V1.0
- *
- * @copyright Copyright (c) MobileTek
- */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include "lynq_uci.h"
-
-#ifndef _LYNQ_SYSTIME_H_
-#define _LYNQ_SYSTIME_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-typedef struct time_source_status
-{
- int ntp;
- int nitz;
- int gnss;
-}time_src_status_s;
-
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-
- /**@brief Set the rtc time to the system time.
- *
- * @param void
- *
- * @return
- * 0:success
- * other:failure
- */
- int lynq_sync_time_from_rtc(void);
-
- /**@brief Set the system time to the rtc time.
- *
- * @param void
- *
- * @return
- * 0:success
- * other:failure
- */
- int lynq_set_rtc_time(void);
-
- /**@brief Query the rtc time.
- *
- * @param [OUT] ulsec: rtc time, secconds from 1900.1.1 00:00
- *
- * @return
- * 0:success
- * other:failure
- */
- int lynq_get_rtc_time(unsigned long *ulsec);
-#endif
-
- /**@brief Query the time source status now.
- *
- * @param [OUT] ntp, nitz, gnss:
- * 0: disable
- * 1: enable
- *
- * @return
- * 0 : success
- * other:failure
- */
- int lynq_get_time_src_status(time_src_status_s *time_src);
-
- /**@brief Turn sntp on/off
- *
- * @param enable [IN] : 0 disenable; 1 enable;
- *
- * @return
- * 0 set success
- * 1 SNTP_DISENABLE
- * 2 SNTP_ALREADY_ENABLE
- */
- int ntp_sync_time(int enable);
-
- /**@brief Enable/Disenable sync time from NITZ.
- *
- * @param enable [IN] : 0 disenable; 1 enable;
- *
- * @return
- * 0:success
- * other:failure
- */
- int modem_time_enable(int enable);
-
- /**@brief Enable/Disenable sync time from GNSS.
- *
- * @param enable [IN] : 0 disenable; 1 enable;
- *
- * @return
- * 0:success
- * other:failure
- */
- int gnss_time_enable(int enable);
-
- /**@brief User set systime manually.
- *
- * @param enable [IN] : 0 disenable; 1 enable;
- *
- * @return
- * 0:success
- * other:failure
- */
- int user_set_time(char *date, char *time);
-
- int get_sync_time_result(void );
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/lynq/lynq_uci.h b/mbtk/include/lynq/lynq_uci.h
deleted file mode 100755
index 0a08c31..0000000
--- a/mbtk/include/lynq/lynq_uci.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef _LYNQ_UCI_H_
-#define _LYNQ_UCI_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <uci.h>
-
-#define LYNQ_UCI_MAX_LEN 128
-#define LYNQ_UCI_SUCCESS 0
-#define LYNQ_UCI_ERROR 1
-#define LYNQ_UCI_FILE "lynq_uci"
-#define LYNQ_UCI_RO_FILE "lynq_uci_ro"
-
-//static struct uci_context * ctx = NULL;
-
-int lynq_del(char *option);
-#if UCI_SUPPORT
- static int uci_get_value(struct uci_option *o, char *out_buf);
-#endif //uci_support
-int lynq_uci_get(const char *arg, char *out_buf);
-
-int lynq_uci_set(const char *arg);
-
-int lynq_add_section(char *section_type, char *section);
-
-int lynq_set_value(char *section, char *key, char *value);
-
-int lynq_get_value(char *file, char *section, char *key, char *tmp);
-
-
-int lynq_load_config(char *filename);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/mbtk/include/mbtk/mbtk_adc.h b/mbtk/include/mbtk/mbtk_adc.h
index e8a5f06..27cc783 100755
--- a/mbtk/include/mbtk/mbtk_adc.h
+++ b/mbtk/include/mbtk/mbtk_adc.h
@@ -13,6 +13,11 @@
#ifndef __MBTK_ADC_H__
#define __MBTK_ADC_H__
+#define ADC_DEVICE_802 "/sys/devices/soc.0/d4000000.apb/pxa2xx-i2c.2/i2c-2/2-0030/pm802-bat/adc"
+#define ADC_DEVICE_803 "/sys/kernel/debug/adc"
+#define ADC_DEVICE_PMIC802 "/sys/devices/platform/asr-adc/pm80x_adc"
+#define ADC_DEVICE_AUX "/sys/devices/platform/asr-adc/aux_adc"
+
/*
* MBTK ADC define.
*/
@@ -30,14 +35,15 @@
Get ADC's value.
PARAMETERS:
+ adc_dev : Refer to : ADC_DEVICE_802/ADC_DEVICE_803/ADC_DEVICE_PMIC802/ADC_DEVICE_AUX
adc [IN]: ADC path, refer to mbtk_adc_enum.
RETURN VALUE:
int : ADC value.
===========================================================================*/
-int mbtk_adc_get(mbtk_adc_enum adc);
-int mbtk_adc_close(void);
+int mbtk_adc_get(const char* adc_dev, mbtk_adc_enum adc);
+int mbtk_adc_close(const char* adc_dev);
#endif /* __MBTK_ADC_H__ */
diff --git a/mbtk/include/mbtk/mbtk_log.h b/mbtk/include/mbtk/mbtk_log.h
index f217adb..60b0cb1 100755
--- a/mbtk/include/mbtk/mbtk_log.h
+++ b/mbtk/include/mbtk/mbtk_log.h
@@ -143,19 +143,6 @@
void mbtk_debug_open(const char *log_file, bool thread_support);
-void ql_lib_info_print();
-void mbtk_tcpip_lib_info_print();
-void mbtk_net_lib_info_print();
-void mbtk_mqtt_lib_info_print();
-void mbtk_http_lib_info_print();
-void mbtk_gnss_lib_info_print();
-void mbtk_ftp_lib_info_print();
-void mbtk_fota_lib_info_print();
-void mbtk_factory_lib_info_print();
-void mbtk_coap_lib_info_print();
-void mbtk_audio_lib_info_print();
-void lynq_lib_info_print();
-void mbtk_ril_lib_info_print();
void mbtk_lib_info_print();
#endif /* MBTK_LOG_INCLUDE */
diff --git a/mbtk/include/ql/DSI_ConnectManager.h b/mbtk/include/ql/DSI_ConnectManager.h
deleted file mode 100755
index 3a8029f..0000000
--- a/mbtk/include/ql/DSI_ConnectManager.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- @file
- DSI_ConnectManager.h
-
- @brief
- This file provides the definitions for dsi, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-24/07/2019 Nebula.li create
-=============================================================================*/
-
-#ifndef __DSI_CONNECTMANAGER_H__
-#define __DSI_CONNECTMANAGER_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define QL_WAN_SUCCESS (0)
-#define QL_WAN_ERROR (-1)
-#define QL_INTERFACE_NAME_LEN 16
-#define QL_IPV4_MAX_ADDR_LEN 32
-#define QL_IPV6_MAX_ADDR_LEN 128
-
-
-/**
- * used to check network status, when timeout, start data call again.
-*/
-#define QL_WAN_NETWORK_STATUS_MAX_TIMEOUT (60)
-
-
-/**
- * DSI event define
- */
-typedef enum
-{
- CONNECT_DISCON = 0x00,
- CONNECT_CONSUCCESS,
- CONNECT_CONNING,
- CONNECT_REDIAL,
- CONNECT_DIAL_IMMEDIATELY,
- CONNECT_ROAM,
- CONNECT_WAIT_NWCHANGE,
- CONNECT_GET_GLOBALIP_ERR,
- CONNECT_DEACTIVATED,
- CONNECT_WAIT_PS_ATTACH,
-
- FAIL_BASE_INDEX=0x10,
- SIM_NOT_READY=FAIL_BASE_INDEX+0x01,
- NW_NOT_READY=FAIL_BASE_INDEX+0x02,
- PDP_OPERATOR_BARRED =FAIL_BASE_INDEX+0x08, /* no retry */
- PDP_INSUFFICIENT_RESOURCES =FAIL_BASE_INDEX+0x1A,
- PDP_MISSING_UKNOWN_APN = FAIL_BASE_INDEX+0x1B, /* no retry */
- PDP_UNKNOWN_PDP_ADDRESS_TYPE = FAIL_BASE_INDEX+0x1C, /* no retry */
- PDP_USER_AUTHENTICATION = FAIL_BASE_INDEX+0x1D, /* no retry */
- PDP_ACTIVATION_REJECT_GGSN = FAIL_BASE_INDEX+0x1E, /* no retry */
- PDP_ACTIVATION_REJECT_UNSPECIFIED = FAIL_BASE_INDEX+0x1F,
- PDP_SERVICE_OPTION_NOT_SUPPORTED = FAIL_BASE_INDEX+0x20, /* no retry */
- PDP_SERVICE_OPTION_NOT_SUBSCRIBED = FAIL_BASE_INDEX+0x21, /* no retry */
- PDP_SERVICE_OPTION_OUT_OF_ORDER = FAIL_BASE_INDEX+0x22,
- PDP_NSAPI_IN_USE = FAIL_BASE_INDEX+0x23, /* no retry */
- PDP_REGULAR_DEACTIVATION = FAIL_BASE_INDEX+0x24, /* possibly restart radio,
- based on framework config */
- PDP_ONLY_IPV4_ALLOWED = FAIL_BASE_INDEX+0x32, /* no retry */
- PDP_ONLY_IPV6_ALLOWED = FAIL_BASE_INDEX+0x33, /* no retry */
- PDP_ONLY_SINGLE_BEARER_ALLOWED = FAIL_BASE_INDEX+0x34,
- PDP_PROTOCOL_ERRORS = FAIL_BASE_INDEX+0x6F, /* no retry */
-
- /* Not mentioned in the specification */
- PDP_VOICE_REGISTRATION_FAIL = -1,
- PDP_DATA_REGISTRATION_FAIL = -2,
-
- /* reasons for data call drop - network/modem disconnect */
- PDP_SIGNAL_LOST = -3,
- PDP_PREF_RADIO_TECH_CHANGED = -4,/* preferred technology has changed, should retry
- with parameters appropriate for new technology */
- PDP_RADIO_POWER_OFF = -5, /* data call was disconnected because radio was resetting,
- powered off - no retry */
- PDP_TETHERED_CALL_ACTIVE = -6, /* data call was disconnected by modem because tethered
- mode was up on same APN/data profile - no retry until
- tethered call is off */
- PDP_CID_EXIST_FAIL = -7, /* cid is exist already*/
-
- PDP_NO_CCINET=-10,
- PDP_DHCP_SERVER_ERR_PIPE=-11,
-
- PDP_ERROR_UNSPECIFIED = 0xffff, /* retry silently */
- QL_DSI_EVT_MAX
-} QL_DSI_NET_EVT_T;
-
-#define SIM_REMOVED SIM_NOT_READY
-
-typedef struct
-{
- char ip[QL_IPV4_MAX_ADDR_LEN];
- char pri_dns[QL_IPV4_MAX_ADDR_LEN];
- char sec_dns[QL_IPV4_MAX_ADDR_LEN];
- char name[QL_INTERFACE_NAME_LEN];
- char gateway[QL_IPV4_MAX_ADDR_LEN];
-}v4_address_status;
-
-typedef struct
-{
- int state; //dial status
- v4_address_status addr; //IPv4 address information
-}v4_info;
-
-typedef struct
-{
- char ip[QL_IPV6_MAX_ADDR_LEN];
- char pri_dns[QL_IPV6_MAX_ADDR_LEN];
- char sec_dns[QL_IPV6_MAX_ADDR_LEN];
- char name[QL_INTERFACE_NAME_LEN];
- char gateway[QL_IPV6_MAX_ADDR_LEN];
-}v6_address_status;
-
-typedef struct
-{
- int state; //dial status
- v6_address_status addr; //IPv6 address information
-}v6_info;
-
-typedef struct
-{
- int profile_idx;
- int ip_type;
- v4_info v4;
- v6_info v6;
-}ql_data_call_info;
-
-/**
- * DSI auth pref define
-*/
-typedef enum
-{
- QL_DSI_AUTH_PREF_NULL = 0,
- QL_DSI_AUTH_PREF_ONLY_PAP,
- QL_DSI_AUTH_PREF_ONLY_CHAP,
- //QL_DSI_AUTH_PREF_BOTH_PAP_CHAP
-} QL_DSI_AUTH_PREF_T;
-
-/**
- * callback function used in ql_wan_start, when data call status changed,
- * Use callback functions for notifications, see enum QL_DSI_NET_EVT_T
-*/
-typedef void (*nw_status_cb)(int status);
-
-
-typedef void (*ex_conn_status_cb)(int cid,int iptype,int status,int cause);
-
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief data call init function, must call first.
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_init();
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief data call release function, must call finally.
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_release();
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief data call auto connect set, include auto status and interval(seconds).
- @param[in] auto_status When it is 0, the network cannot be automatically reconnected
- after disconnection; when it is 1, it can be automatically reconnected
- @param[in] interval_sec data call status check interval
- the max value is QL_WAN_NETWORK_STATUS_MAX_TIMEOUT
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_set_autoconnect(int auto_status, int interval_sec);
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief start data call, must call ql_wan_init first.
- @param[in] nw_cb this is a callback function, when data call status changed, Use callback
- functions for notifications
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_start(int profile_idx, int op, nw_status_cb nw_cb);
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief start data call, must call ql_wan_init first.
- @param[in] nw_cb this is a callback function, when data call status changed, Use callback
- functions for notifications
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_start_ex(int profile_idx, int op, ex_conn_status_cb nw_cb);
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief data call stop function.
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_stop(int profile_idx);
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief function to set apn.
- @param[in] apn apn name want to set
- @param[in] username user name of apn
- @param[in] password password of apn
- @param[in] auth auth type of apn, see enum QL_DSI_AUTH_PREF_T
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_wan_setapn(int profile_idx, int ip_type, const char *apn, const char *userName, const char *password, QL_DSI_AUTH_PREF_T auth);
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief function to get first apn infomation.
- @param[out] apn apn name to return
- @param[in ] apnLen apn name buffer size
- @param[out] userName username of apn to return
- @param[in ] userLen username buffer size
- @param[out] password password to return
- @param[in ] pwdLen password buffer size
- @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
- */
-/*-----------------------------------------------------------------------------------------------*/
-
-#define ql_wan_getapn(profile_idx,ip_type,apn,apnLen,userName,userLen,password,pwdLen,...) __ql_wan_getapn(profile_idx,ip_type,apn,apnLen,userName,userLen,password,pwdLen,(NULL,##__VA_ARGS__))
-
-int __ql_wan_getapn(int profile_idx, int *ip_type, char *apn, int apnLen, char *userName, int userLen, char *password, int pwdLen,int* auth);
-int ql_get_data_call_info(int profile_idx, ql_data_call_info *info);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mbtk/include/ql/ql_adc.h b/mbtk/include/ql/ql_adc.h
deleted file mode 100755
index a2c71df..0000000
--- a/mbtk/include/ql/ql_adc.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*****************************************************************************
-* Copyright Statement:
-* --------------------
-* This software is protected by Copyright and the information contained
-* herein is confidential. The software may not be copied and the information
-* contained herein may not be used or disclosed except with the written
-* permission of Quectel Co., Ltd. 2019
-*
-*****************************************************************************/
-/*****************************************************************************
- *
- * Filename:
- * ---------
- * ql_adc.h
- *
- * Project:
- * --------
- * OpenLinux
- *
- * Description:
- * ------------
- * ADC API defines.
- *
- *
- *============================================================================
- * HISTORY
- *----------------------------------------------------------------------------
- * WHO WHEN WHAT
- *----------------------------------------------------------------------------
- * Carola.Zhang 20/11/2019 Create.
- ****************************************************************************/
-
-#ifndef __QL_ADC_H__
-#define __QL_ADC_H__
-
-typedef enum {
- QADC_NONE = -1,
- ADC0 = 0,
- ADC1 = 1,
- QADC_END
-}Enum_QADC;
-
-
-int ql_adc_show(Enum_QADC qadc);
-
-
-#endif
\ No newline at end of file
diff --git a/mbtk/include/ql/ql_at.h b/mbtk/include/ql/ql_at.h
deleted file mode 100755
index 9cd6e8f..0000000
--- a/mbtk/include/ql/ql_at.h
+++ /dev/null
@@ -1,91 +0,0 @@
-
-#ifndef __QL_AT_H__
-#define __QL_AT_H__
-
-//#include <stdint.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define TRUE 1
-#define FALSE 0
-
-#define BUF_LEN 1024
-
-#define MAX_URC_EVENT_HANDLER_ARRAY_SIZE 10
-
-//typedef unsigned int size_t;
-typedef int URC_EVENT_HANDLE;
-typedef void (*ql_urc_event_handle_func_t)(const char* urc_content);
-
-typedef struct
-{
- char* urc_event;
- ql_urc_event_handle_func_t pfun;
-} st_urc_handle_node;
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Standard result codes.
- *
- * @note All error codes are negative integers. They allow functions with signed
- * integers to return non-negative values when successful or standard error codes on failure.
- * @deprecated the result code LE_NOT_POSSIBLE is scheduled to be removed.
- */
-//--------------------------------------------------------------------------------------------------
-typedef enum
-{
- E_QL_OK = 0, ///< Successful.
- E_QL_NOT_FOUND = -1, ///< Referenced item does not exist or could not be found.
- E_QL_NOT_POSSIBLE = -2, ///< @deprecated It is not possible to perform the requested action.
- E_QL_OUT_OF_RANGE = -3, ///< An index or other value is out of range.
- E_QL_NO_MEMORY = -4, ///< Insufficient memory is available.
- E_QL_NOT_PERMITTED = -5, ///< Current user does not have permission to perform requested action.
- E_QL_FAULT = -6, ///< Unspecified internal error.
- E_QL_COMM_ERROR = -7, ///< Communications error.
- E_QL_TIMEOUT = -8, ///< A time-out occurred.
- E_QL_OVERFLOW = -9, ///< An overflow occurred or would have occurred.
- E_QL_UNDERFLOW = -10, ///< An underflow occurred or would have occurred.
- E_QL_WOULD_BLOCK = -11, ///< Would have blocked if non-blocking behaviour was not requested.
- E_QL_DEADLOCK = -12, ///< Would have caused a deadlock.
- E_QL_FORMAT_ERROR = -13, ///< Format error.
- E_QL_DUPLICATE = -14, ///< Duplicate entry found or operation already performed.
- E_QL_BAD_PARAMETER = -15, ///< Parameter is invalid.
- E_QL_CLOSED = -16, ///< The resource is closed.
- E_QL_BUSY = -17, ///< The resource is busy.
- E_QL_UNSUPPORTED = -18, ///< The underlying resource does not support this operation.
- E_QL_IO_ERROR = -19, ///< An IO operation failed.
- E_QL_NOT_IMPLEMENTED = -20, ///< Unimplemented functionality.
- E_QL_UNAVAILABLE = -21, ///< A transient or temporary loss of a service or resource.
- E_QL_TERMINATED = -22, ///< The process, operation, data stream, session, etc. has stopped.
-}E_QL_RESULT;
-
-extern const char strDelimit[];
-
-extern st_urc_handle_node g_urc_handler[];
-
-/*
- Specify the AT port name used for sending/receiving AT cmd.
-*/
-extern int QL_AT_PortInit(char *device_path);
-
-extern void QL_AT_PortDeinit(void);
-
-/*
- register the URC event call back, such as "+CMT: ;+CDS: ;+CBM: ;+CMTI: ;" seperated by ";" for sms.
-*/
-extern URC_EVENT_HANDLE register_urc_callback_func(const char* urc_event, ql_urc_event_handle_func_t pfun);
-
-/*
- unregister the URC event call back.
-*/
-extern void unregister_urc_callback_func(URC_EVENT_HANDLE h_handle);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //__QL_AT_H__
diff --git a/mbtk/include/ql/ql_atc.h b/mbtk/include/ql/ql_atc.h
deleted file mode 100755
index 4c8d8a8..0000000
--- a/mbtk/include/ql/ql_atc.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- @file
- ql_atc.h
- @brief
- send at command api
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-06/07/2022 Wayen.xu create
-=============================================================================*/
-
-#ifndef QL_ATC_H
-#define QL_ATC_H
-
-/*******************************************************
-* @method: ql_atc_init
-* @Description: initialize environment variables.
-* @param: void
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_init();
-
-/*******************************************************
-* @method: ql_atc_release
-* @Description: release environment variables.
-* @param: void
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_release();
-
-/*******************************************************
-* @method: ql_atc_send
-* @Description: send at command(synchronous)
- use this api should first call init api and finish call release api
-* @param:
- cmd: at command
- resp: at return value
- len: response value length
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_send(char* cmd, char* resp, int resp_len);
-
-
-#endif
diff --git a/mbtk/include/ql/ql_audio.h b/mbtk/include/ql/ql_audio.h
deleted file mode 100755
index 68c2190..0000000
--- a/mbtk/include/ql/ql_audio.h
+++ /dev/null
@@ -1,627 +0,0 @@
-/**
- @file
- ql_audio.h
-
- @brief
- This file provides the definitions for audio & record, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-07/06/2018 Stanley.yong Revise the comments for API.
-19/04/2018 Zichar.zhang Add Ql_Update_wav_size function.
- Add Ql_AudPlayer_OpenExt function.
- Add Ql_AudRecorder_OpenExt function.
-19/12/2016 Stanley.yong Optimize the APIs, and add comments.
-13/12/2016 Running.qian Implement newly-designed APIs.
-18/07/2016 Jun.wu Create
-=============================================================================*/
-
-#ifndef __AUD_H__
-#define __AUD_H__
-
-//this two headers for alsa params setting
-// #include "asoundlib.h"
-//#include "alsa-intf/alsa_audio.h"
-
-#include "mbtk_type.h"
-
-#define QUEC_PCM_8K 8000
-#define QUEC_PCM_16K 16000
-#define QUEC_PCM_44k 44100
-#define QUEC_PCM_MONO 1
-#define QUEC_PCM_STEREO 2
-
-typedef enum {
- AUD_UP_LINK = 0,
- AUD_DOWN_LINK,
-} Enum_AudDlink;
-
-typedef enum {
- AUD_PLAYER_ERROR = -1,
- AUD_PLAYER_START = 0,
- AUD_PLAYER_PAUSE,
- AUD_PLAYER_RESUME,
- AUD_PLAYER_NODATA, //Buff no data and play tread will sleep
- AUD_PLAYER_LESSDATA, //Buff has less data
- AUD_PLAYER_FINISHED,
-} Enum_AudPlayer_State;
-
-typedef enum {
- AUD_RECORDER_ERROR = -1,
- AUD_RECORDER_START = 0,
- AUD_RECORDER_PAUSE,
- AUD_RECORDER_RESUME,
- AUD_RECORDER_FINISHED,
-} Enum_AudRecorder_State;
-
-
-/****************************************************************************
-* Audio Volume Level Definition
-***************************************************************************/
-typedef enum {
- AUD_VOLUME_LEVEL1 = 0,
- AUD_VOLUME_LEVEL2,
- AUD_VOLUME_LEVEL3,
- AUD_VOLUME_LEVEL4,
- AUD_VOLUME_LEVEL5,
- AUD_VOLUME_LEVEL_END
-}Enum_AudVolumeLevel;
-
-/****************************************************************************
-* Audio Format
-***************************************************************************/
-typedef enum {
- AUD_STREAM_FORMAT_MP3 = 0,
- AUD_STREAM_FORMAT_AMR = 1,
- AUD_STREAM_FORMAT_PCM = 2,
- AUD_STREAM_FORMAT_END
-} Enum_AudStreamFormat;
-
-/****************************************************************************
-* Audio Direct
-***************************************************************************/
-typedef enum {
- AUD_LINK_REVERSE = 0,
- AUD_LINK_FORWARD = 1,
- AUD_LINK_BOTH = 2,
- AUD_LINK_INVALID
-}Enum_AudStreamDirection;
-
-
-/*****************************************************************
-********************New Advanced Audio High API******************
-* ***************************************************************/
-struct wav_header {
- uint32_t riff_id;
- uint32_t riff_sz;
- uint32_t riff_fmt;
- uint32_t fmt_id;
- uint32_t fmt_sz;
- uint16_t audio_format;
- uint16_t num_channels;
- uint32_t sample_rate;
- uint32_t byte_rate; /* sample_rate * num_channels * bps / 8 */
- uint16_t block_align; /* num_channels * bps / 8 */
- uint16_t bits_per_sample;
- uint32_t data_id;
- uint32_t data_sz;
-};
-
-#define ID_RIFF 0x46464952
-#define ID_WAVE 0x45564157
-#define ID_FMT 0x20746d66
-#define ID_DATA 0x61746164
-#define FORMAT_PCM 1
-
-struct ST_MediaParams {
- Enum_AudStreamFormat format;
- Enum_AudVolumeLevel volume;
- Enum_AudStreamDirection direct;
-};
-
-
-//
-// Function: _cb_onPlayer
-//
-// Description:
-// This callback function handles the result of audio player.
-//
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-// @param result:
-// the executing result for previous operation, such as Open, Play, Pause, Resume, Stop.
-// see the definition of Enum_AudPlayer_State for the specific meaning.
-typedef int(*_cb_onPlayer)(int hdl, int result);
-//
-// Function: _cb_onRecorder
-//
-// Description:
-// This callback function handles the result of audio recorder.
-// If result < 0, the recorder will stop the recording automatically.
-//
-// @param result:
-// the executing result for previous operation, such as Open, StartRecord, Pause, Resume, Stop.
-// see the definition of Enum_AudRecorder_State for the specific meaning.
-// @param pBuf:
-// pointer to the output recording (PCM) data.
-// @param length:
-// the length of the output recording (PCM) data.
-typedef int(*_cb_onRecorder)(int result, unsigned char* pBuf, unsigned int length); //if result < 0 will stop record, else continue record
-
-/*****************************************************************
-* Function: Ql_AudPlayer_Open
-*
-* Description:
-* Open audio play device, and specify the callback function.
-* This function can be called twice to play different audio sources.
-*
-* Parameters:
-* device : a string that specifies the PCM device.
-* NULL, means the audio will be played on the default PCM device.
-*
-* If you want to mixedly play audio sources, you can call this
-* API twice with specifying different PCM device.
-* The string devices available:
-* "hw:0,0" (the default play device)
-* "hw:0,13" (this device can mix audio and TTS)
-* "hw:0,14"
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio player
-* are informed in callback function.
-*
-* Return:
-* pcm device handle on success
-* -1 for failure
-*****************************************************************/
-int Ql_AudPlayer_Open(char* device, _cb_onPlayer cb_func);
-
-/*========================================================================
- FUNCTION: Ql_AudPlayer_Play
-=========================================================================*/
-/** @brief
- This function writes pcm data to pcm device to play.
-
- @param[in] hdl, the handle returned by Ql_AudPlayer_Open().
- @param[in] pData, pointer to the start address of pcm data.
- @param[in] length, the length of pcm data.
-
- @return
- on success, the return value is the number of bytes to play
- on failure, the return value is -1;
-
- @dependencies
- Ql_AudPlayer_Open() must be first called successfully.
-*/
-/*=======================================================================*/
-int Ql_AudPlayer_Play(int hdl, unsigned char* pData, unsigned int length);
-
-/*========================================================================
- FUNCTION: Ql_AudPlayer_PlayFrmFile
-=========================================================================*/
-/** @brief
- This function plays the pcm data from the specified file.
-
- @param[in] hdl, the handle returned by Ql_AudPlayer_Open().
- @param[in] fd, a file descriptor that contains pcm data.
- Note:
- the file offset should be set to the start position of pcm
- data region, which means you should move the file offset
- skipping the file header (such as wave header, amr header).
- @param[in] offset, file offset. Please set it to -1 if no need to use.
-
- @return
- 0 on success
- -1 on failure
-
- @dependencies
- Ql_AudPlayer_Open() must be first called successfully.
-*/
-/*=======================================================================*/
-int Ql_AudPlayer_PlayFrmFile(int hdl, int fd, int offset);
-//
-// Function: Ql_AudPlayer_Pause
-//
-// Description:
-// Pause playing.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-int Ql_AudPlayer_Pause(int hdl);
-//
-// Function: Ql_AudPlayer_Resume
-//
-// Description:
-// Resume playing.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-int Ql_AudPlayer_Resume(int hdl);
-//
-// Function: Ql_AudPlayer_Stop
-//
-// Description:
-// Stop playing audio
-// hdl:
-// Handle received from Ql_AudPlayer_Open().
-void Ql_AudPlayer_Stop(int hdl);
-//
-// Function: Ql_AudPlayer_Close
-//
-// Description:
-// Close player, and free the resource.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-void Ql_AudPlayer_Close(int hdl);
-
-
-int Ql_AudPlayer_set_LessDataThreshold(int hdl, unsigned short threshSize);
-
-int Ql_AudPlayer_get_freeSpace(int hdl);
-
-
-/*****************************************************************
-* Function: Ql_AudRecorder_Open
-*
-* Description:
-* Open audio record device, and specify the callback function.
-*
-* Parameters:
-* device : not used. MUST be NULL.
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio recorder
-* are informed in callback function.
-*
-* Return:
-* pcm device handle
-* -1 for failure
-*****************************************************************/
-int Ql_AudRecorder_Open(char* device, _cb_onRecorder cb_fun);
-//
-// Function: Ql_AudRecorder_StartRecord
-//
-// Description:
-// Start to record.
-// The record data is output in _cb_onRecorder.
-//
-// Return:
-// 0 on success
-// -1 on failure
-int Ql_AudRecorder_StartRecord(void);
-//
-// Function: Ql_AudRecorder_Pause
-//
-// Description:
-// Pause recording
-int Ql_AudRecorder_Pause(void);
-//
-// Function: Ql_AudRecorder_Resume
-//
-// Description:
-// Resume recording
-int Ql_AudRecorder_Resume(void);
-//
-// Function: Ql_AudRecorder_Stop
-//
-// Description:
-// Stop recording
-void Ql_AudRecorder_Stop(void);
-//
-// Function: Ql_AudRecorder_Close
-//
-// Description:
-// Close recorder, and free the resource
-void Ql_AudRecorder_Close(void);
-
-//
-// Function: Ql_clt_set_mixer_value
-//
-// Description:
-// Close recorder, and free the resource
-boolean Ql_clt_set_mixer_value(const char *device, int count, const char *value);
-
-
-//****************QL TONE API************************//
-struct Ql_TonePara {
- unsigned int lowFreq; //100-4000HZ
- unsigned int highFreq; //100-4000HZ
- unsigned int volume; //0 -1000
- unsigned int duration; // >0 ms
-};
-
-int Ql_AudTone_Open(char* device, _cb_onPlayer cb);//cb not support now
-int Ql_AudTone_Start(int hdl, struct Ql_TonePara *para);
-void Ql_AudTone_Stop(int hdl);
-void Ql_AudTone_Close(int hdl);
-
-
-//****************QL Codec API************************//
-struct Ql_ALC5616_DRCAGC {
- unsigned short control1_mask;
- unsigned short control1_value;
- unsigned short control2_mask;
- unsigned short control2_value;
- unsigned short control3_mask;
- unsigned short control3_value;
-};
-
-//
-// Function: Ql_AudCodec_Set_ALC5616_DRCAGC
-//
-// Description:
-// Set ALC5616 DRC/AGC configuration
-int Ql_AudCodec_Set_ALC5616_DRCAGC(const char *i2c, struct Ql_ALC5616_DRCAGC *cfg);
-
-//
-// Function: Ql_Update_wav_size
-//
-// Description:
-// update wav format file size in the header
-// @param fd:
-// wav file discriptor
-// @param size:
-// wav file size to update
-int Ql_Update_wav_size(int fd, int size);
-
-//add by grady, 2018-5-29
-/*
- * describe : this function is use to open pcm device
- * paras :
- * device : this should be fix to hw:0,0
- * flags ; pcm play flags
- * rate: sample rate
- * channels : audio channal 1 or 2
- * format: format to play or record, 16bit line,MP3
- * hostless: if there is no file it is true
- * return :
- * pcm : pcm handle, use can use this handle to read write data
- */
-struct pcm *quec_pcm_open(char *device, unsigned flags, unsigned rate, unsigned channels, unsigned format, unsigned hostless);
-
-/*
- * describe : this function is use to close pcm handle
- * paras :
- * pcm : pcm handle to close
- * return :
- */
-int quec_pcm_close(struct pcm *pcm );
-
-/*
- * describe : this function is use to read pcm buffer
- * paras :
- * pcm : pcm handle to write date
- * buffer: data buffer
- * lenth: data length
- * return :
- */
-int quec_read_pcm(struct pcm *pcm, void * buffer, int length);
-
-/*
- * describe : this function is use to get pcm buffer lenth
- * paras :
- * lenth: data length
- * return
- * buffer length
- */
-int quec_get_pem_buffer_len(struct pcm *pcm);
-
-//add by grady, 2018-6-2
-/*
- * describe : this function is use to open mixer device
- * paras :
- * device: mixer device
- * return
- * mixer handle
- */
-struct mixer *quec_mixer_open(const char *device);
-
-/*
- * describe : this function is use to close mixer device
- * paras :
- * mixer: mixer handle
- * return
- * none
- */
-void quec_mixer_close(struct mixer *mixer);
-
-/*
- * describe : this function is use to get mixer devie control
- * paras :
- * mixer: mixer handle
- * name: mixer device
- * index: mixer index
- * return
- * mixer control
- */
-struct mixer_ctl *quec_mixer_get_control(struct mixer *mixer, const char *name, unsigned index);
-
-/*
- * describe : this function is use to set mulvalues
- * paras :
- * mixer: mixer handle
- * count: count
- * argv: data
- * return :
- *
- */
-int quec_mixer_ctl_mulvalues(struct mixer_ctl *ctl, int count, char ** argv);
-
-
-//end grady
-
-/**
- * @brief Set RX DSP Gain
- * @details
- * Gain support [-36,12] dB
- *
- * @param gain
- * DSP gain
- */
-
-int Ql_Rxgain_Set(int gain);
-
-/**
- * @brief Set Playback PCM Samprate
- * @details
- * 0 for NB 1 for WB
- *
- * @param samprate
- * samprate for PCM playback,default value is PCM NB
- */
-
-
-int Ql_Playback_Samprate_Set(int samprate);
-
-/*****************************************************************
-* Function: Ql_AudPlayer_OpenExt
-*
-* Description:
-* expend function from Ql_AudPlayer_OpenExt
-* Open audio play device, and specify the callback function.
-* This function can be called twice to play different audio sources.
-*
-* Parameters:
-* device : a string that specifies the PCM device.
-* NULL, means the audio will be played on the default PCM device.
-*
-* If you want to mixedly play audio sources, you can call this
-* API twice with specifying different PCM device.
-* The string devices available:
-* "hw:0,0" (the default play device)
-* "hw:0,13" (this device can mix audio and TTS)
-* "hw:0,14"
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio player
-* are informed in callback function.
-*
-* flags : pcm flags, eg: PCM_MMAP, PCM_NMMAP.
-*
-* channels: pcm sample channels.
-*
-* rate : pcm sample rate.
-*
-* format : pcm sample fromat
-*
-* Return:
-* pcm device handle
-* NULL, fail
-*****************************************************************/
-int Ql_AudPlayer_OpenExt(
- char *dev,
- _cb_onPlayer cb_fun,
- int flags,
- int channels,
- int rate,
- int format);
-
-/*****************************************************************
-* Function: Ql_AudRecorder_Open
-*
-* Description:
-* Open audio record device, and specify the callback function.
-*
-* Parameters:
-* device : not used. MUST be NULL.
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio recorder
-* are informed in callback function.
-*
-* flags : pcm flags, eg: PCM_MMAP, PCM_NMMAP.
-*
-* channels: pcm sample channels.
-*
-* rate : pcm sample rate.
-*
-* format : pcm sample fromat
-*
-* Return:
-* pcm device handle
-* NULL, fail
-*****************************************************************/
-int Ql_AudRecorder_OpenExt(
- char *dev,
- _cb_onRecorder cb_fun,
- int flags,
- int channels,
- int rate,
- int format);
-
-/*****************************************************************
-* Function: Ql_Mp3_To_Wav
-*
-* Description:
-* set mp3 file change to wav file.
-*
-* Parameters:
-* wavpath : wav path
-*
-* mp3path : mp3 path
-*
-* Return:
-* 0: success
-* -1: fail
-*****************************************************************/
-int Ql_Mp3_To_Wav(const char *wavpath, char *mp3path);
-
-
-/*****************************************************************
-* Function: Ql_Mp3_To_Wav
-*
-* Description:
-* flay mp3 file.
-*
-* Parameters:
-* wavpath : wav path
-*
-* hdl : Device handle
-*
-* sample_rate : 0 for NB(8000) 1 for WB(16000)
-*
-* Return:
-* 0: success
-* -1: fail
-*****************************************************************/
-
-int Ql_Mp3_To_Play(char *mp3path, int hdl,int sample_rate);
-/*
-* Function: uac enable
-*
-* Description:
-* uac enable
-*
-* Parameters:
-* none
-* Return:
-* TURE or FALSE
-*/
-int ql_uac_enable(void);
-
-/*
-* Function: uac disable
-*
-* Description:
-* uac disable
-*
-* Parameters:
-* none
-* Return:
-* TURE or FALSE
-*/
-int ql_uac_disable(void);
-
-#endif //__AUD_H__
diff --git a/mbtk/include/ql/ql_cell_locator.h b/mbtk/include/ql/ql_cell_locator.h
deleted file mode 100755
index 4244f82..0000000
--- a/mbtk/include/ql/ql_cell_locator.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @file ql_cell_locator.h
- @brief Common API
-*/
-/*-----------------------------------------------------------------------------------------------*/
-/*-------------------------------------------------------------------------------------------------
- Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
--------------------------------------------------------------------------------------------------*/
-/*-------------------------------------------------------------------------------------------------
- EDIT HISTORY
- This section contains comments describing changes made to the file.
- Notice that changes are listed in reverse chronological order.
- $Header: $
- when who what, where, why
- -------- --- ----------------------------------------------------------
- 20190321 baron.qian Created .
--------------------------------------------------------------------------------------------------*/
-#ifdef __cplusplus
- extern "C" {
-#endif
-#ifndef __QL_CELL_LOCATOR_H__
-#define __QL_CELL_LOCATOR_H__
-
-/**/
-#define LOCATOR_MAX_ADDRESS_SIZE (256)
-#define LOCATOR_MAX_ERR_MSG_SIZE (256)
-
-
-typedef enum {
- Q_LOC_ADDR_UTF8 = 0,
- Q_LOC_ADDR_GBK,
- Q_LOC_ADDR_ASCII,
- Q_LOC_ADDR_NUM,
-}QUECLOCATOR_CHARSET;
-
-typedef struct {
- int err_code;
- char err_msg[LOCATOR_MAX_ERR_MSG_SIZE];
-} ql_cell_err;
-
-typedef struct {
- /*longtitude*/
- double lon;
- /*latitude*/
- double lat;
- /*accuracy*/
- unsigned short accuracy;
- /*address charset, not support yet*/
- QUECLOCATOR_CHARSET charset;
- /*address info, not support yet*/
- unsigned char addrinfo[LOCATOR_MAX_ADDRESS_SIZE];
- /*address length, not support yet*/
- unsigned short addrlen;
- /*result*/
- ql_cell_err err;
-} ql_cell_resp;
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief cell locator init function, when you want to use cell locator, call this function first!
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_init();
-
-
-int ql_cell_locator_release();
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query server and port, server length must be less than 255 bytes.
- @param[in] server the query server ip address
- @param[in] port the query server port
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_server(const char *server, unsigned short port);
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query timeout, the value must between 1-300 [seconds]
- @param[in] timeout value of query timeout
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_timeout(unsigned short timeout);
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query token, token length must be 16 bytes. the token Used to verify that
- the client accessing the service is valid.
- @param[in] token string of token which want to be setted.
- @param[in] length of token string.
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_token(const char *token, int len);
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief perform cell locator query
- @param[out] resp include query result or set the error_msg and error_code
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_perform(ql_cell_resp *resp);
-
-
-#endif /* !__QL_CELL_LOCATOR_H__ */
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/include/ql/ql_common.h b/mbtk/include/ql/ql_common.h
deleted file mode 100755
index eef054d..0000000
--- a/mbtk/include/ql/ql_common.h
+++ /dev/null
@@ -1,76 +0,0 @@
-
-/**
- @file
- ql_common.h
-
- @brief
- This file provides the definitions for common functions, and declares the
- common functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-23/08/2019 Nebula.li create
-=============================================================================*/
-
-#ifndef __QL_COMMON_H__
-#define __QL_COMMON_H__
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-
-#include <libubox/ustream.h>
-#include <libubox/blobmsg_json.h>
-#include <libubox/kvlist.h>
-#include "libubus.h"
-#include "uci_blob.h"
-#include "libubox/uloop.h"
-#include "rilutil.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void Ql_Powerdown(int mode);
-
-int ql_start_main_thread();
-int ql_exit_main_thread();
-int ql_ril_sync_request(unsigned int requestid, const void * data, int len,void* priv,void * cb,int timeout);
-int ql_ril_async_request(unsigned int requestid, const void * data, int len,void* priv,void * cb);
-int ql_ubus_sync_request(char *obj_name, char *method,struct blob_buf *blob_buf,void* priv,void *cb,int timeout);
-int ql_ubus_async_request(char *obj_name, char *method,struct blob_buf *blob_buf,void* priv,void *cb);
-int ql_ubus_subscribe_reg(char *subscriber_name, struct ubus_subscriber *event_obj);
-int ql_ubus_subscribe_remove(char *subscriber_name, struct ubus_subscriber *event_obj);
-
-int atcmd_get_line_num(char * result, int result_len);
-char * atcmd_get_line(char * result, int result_len,int index);
-int atcmd_get_para_num(char * line);
-void atcmd_get_para_value_str(char * line,int index, char *para_value);
-void ql_set_response(struct kvlist *result_list,int reqid, int resp_type, int ret, void *data, int data_len);
-int ql_get_response(struct kvlist *result_list,int reqid, int * resp_type, void *data);
-int kvlist_get_len(struct kvlist *kv, const void *data);
-
-int utf8_to_usc2(unsigned char *utf8_data,int utf8_data_len, unsigned int *usc2_data);
-int usc2_to_utf8(unsigned int *usc2_data, int usc2_data_len, unsigned char *utf8_data);
-
-int set_config_option(const char *package, const char *section, const char *option, const char *value);
-char *get_config_option(char *package, char *section, char *option);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
\ No newline at end of file
diff --git a/mbtk/include/ql/ql_dev.h b/mbtk/include/ql/ql_dev.h
deleted file mode 100755
index 04a6dd5..0000000
--- a/mbtk/include/ql/ql_dev.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- @file
- ql_dev.h
-
- @brief
- This file provides the definitions for device, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-11/10/2019 Nebula.li create
-=============================================================================*/
-
-#ifndef __QL_DEV_H__
-#define __QL_DEV_H__
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum
-{
- QL_DEV_SUCCESS,
- QL_DEV_GENERIC_FAILURE,
- QL_DEV_RADIO_NOT_AVAILABLE,
-}QL_DEV_ERROR_CODE;
-
-typedef enum
-{
- QL_DEV_MODEM_MIN_FUN,
- QL_DEV_MODEM_FULL_FUN,
- QL_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS = 3,
- QL_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS,
- QL_DEV_MODEM_DISABLE_SIM,
- QL_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE,
-}QL_DEV_MODEM_FUNCTION;
-
-QL_DEV_ERROR_CODE ql_dev_init ();
-QL_DEV_ERROR_CODE ql_dev_release();
-
-/*
- Get the IMEI string.
- -imei : input buffer
-*/
-QL_DEV_ERROR_CODE ql_dev_get_imei(char* imei);
-
-
-/*
- Get the FirmwareVersion string.
- -version : input buffer
-*/
-QL_DEV_ERROR_CODE ql_dev_get_firmware_version(char* version);
-
-
-/*
- Get the DeviceModel string.
- -model : input buffer
-*/
-QL_DEV_ERROR_CODE ql_dev_get_model(char* model);
-
-
-/*
- Get the SN string.
- -sn : input buffer
-*/
-QL_DEV_ERROR_CODE ql_dev_get_sn(char* sn);
-
-/*
- Set the modem function.
- -function :[in] modem function
- -rst :[in] if it is to reset modem before setting modem function. (0: not to reset; 1: reset)
-*/
-QL_DEV_ERROR_CODE ql_dev_set_modem_fun(QL_DEV_MODEM_FUNCTION function,int rst);
-
-/*
- Get the modem function.
- -function :[out] modem function
-*/
-QL_DEV_ERROR_CODE ql_dev_get_modem_fun(int *function);
-
-/*
- Set the modem forbid urc.
- forbid NETWORK 0x01
- forbid SIM 0x02
- forbid SMS 0x04
- forbid CS CALL 0x08
- forbid PS DATA 0x10
- -bitmask :[in] modem forbid urc
- Set bitmask to 31 before sleep and 1 after wake up
-*/
-QL_DEV_ERROR_CODE ql_dev_forbidind(int bitmask);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mbtk/include/ql/ql_fota.h b/mbtk/include/ql/ql_fota.h
deleted file mode 100755
index fab1d48..0000000
--- a/mbtk/include/ql/ql_fota.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- @file
- ql_fota.h
-
- @brief
- This file provides the definitions for device, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-08/11/2019 baron.qian create
-=============================================================================*/
-#ifndef __QL_FOTA_H__
-#define __QL_FOTA_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum {
- QUEC_FOTA_OK, /*OK*/
- QUEC_FOTA_FAILED /*failed*/
-}QL_FOTA_STATUS;
-
-/*callback function define, used to get upgrade state and rate of process*/
-typedef int(*fota_callback)(int state, int percent);
-
-/*******************************************************************************
-* @brief fota initialize
- @param
-
- fota_callback: callback function
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_init(fota_callback cb);
-
-/*******************************************************************************
-* @brief write firmware package, the firmware package is written in segments.
- and The result of the write is output by calling the callback function.
- the firmware package size must less than 32MB
- @param
- fname: firmware package file
- segment_size: the length of once write, recommending 3*1024*1024 bytes
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_fw_write(char *fname, int segment_size);
-
-
-/*******************************************************************************
-* @brief download firmware by url, and write firmware package, the firmware
- package is written in segments. The result of the write is output by
- calling the callback function. the firmware package size must less than
- 32MB
- @param
- url: [IN] the address of download firmware package file, the url
- support http or https protocol.
- segment_size: [IN] the length of once write, recommending 3*1024*1024 bytes
- conn_timeout: [IN] timeout to connect to the server, if set 0 that means
- switch to the default build-in connection timeout(300s)
- download_timeout: [IN] timeout for download the firmware file. if set 0 that means
- it never time out
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_fw_write_by_url(char *url, int segment_size, int conn_timeout, int download_timeout);
-
-
-/*******************************************************************************
-* @brief reboot system and clear env
- @param
- is_reboot: if set 1, after fota success, reboot system
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_done(int is_reboot);
-
-#ifdef __cplusplus
-}
-#endif
-#endif //__QL_FOTA_H__
diff --git a/mbtk/include/ql/ql_gpio.h b/mbtk/include/ql/ql_gpio.h
deleted file mode 100755
index 0159438..0000000
--- a/mbtk/include/ql/ql_gpio.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/*****************************************************************************
-* Copyright Statement:
-* --------------------
-* This software is protected by Copyright and the information contained
-* herein is confidential. The software may not be copied and the information
-* contained herein may not be used or disclosed except with the written
-* permission of Quectel Co., Ltd. 2019
-*
-*****************************************************************************/
-/*****************************************************************************
- *
- * Filename:
- * ---------
- * ql_gpio.h
- *
- * Project:
- * --------
- * OpenLinux
- *
- * Description:
- * ------------
- * GPIO API defines.
- *
- *
- *============================================================================
- * HISTORY
- *----------------------------------------------------------------------------
- * WHO WHEN WHAT
- *----------------------------------------------------------------------------
- * Carola.Zhang 16/07/2019 Create.
- ****************************************************************************/
-
-#ifndef __QL_GPIO_H__
-#define __QL_GPIO_H__
-
-typedef enum{
- /*Invalid*/ PINNAME_BEGIN = -1,
- /*PIN-1*/ PINNAME_GPIO1 = 1,
- /*PIN-2*/ PINNAME_GPIO2 = 2,
- /*PIN-3*/ PINNAME_GPIO3 = 3,
- /*PIN-4*/ PINNAME_GPIO4 = 4,
- /*PIN-5*/ PINNAME_GPIO5 = 5,
- /*PIN-6*/ PINNAME_NET_STATUS = 6,
- /*PIN-11*/ PINNAME_DBG_RXD = 11,
- /*PIN-12*/ PINNAME_DBG_TXD = 12,
- /*PIN-13*/ PINNAME_USIM_PRESENCE = 13,
- /*PIN-23*/ PINNAME_SD_INT_DET = 23,
- /*PIN-24*/ PINNAME_PCM_IN = 24,
- /*PIN-25*/ PINNAME_PCM_OUT = 25,
- /*PIN-26*/ PINNAME_PCM_SYNC = 26,
- /*PIN-27*/ PINNAME_PCM_CLK = 27,
- /*PIN-28*/ PINNAME_SDC2_DATA3 = 28,
- /*PIN-29*/ PINNAME_SDC2_DATA2 = 29,
- /*PIN-30*/ PINNAME_SDC2_DATA1 = 30,
- /*PIN-31*/ PINNAME_SDC2_DATA0 = 31,
- /*PIN-32*/ PINNAME_SDC2_CLK = 32,
- /*PIN-33*/ PINNAME_SDC2_CMD = 33,
- /*PIN-37*/ PINNAME_SPI_CS_N = 37,
- /*PIN-38*/ PINNAME_SPI_MOSI = 38,
- /*PIN-39*/ PINNAME_SPI_MISO = 39,
- /*PIN-40*/ PINNAME_SPI_CLK = 40,
- /*PIN-41*/ PINNAME_I2C_SCL = 41,
- /*PIN-42*/ PINNAME_I2C_SDA = 42,
- /*PIN-45*/ PINNAME_GPIO20 = 45,
- /*PIN-49*/ PINNAME_STATUS = 49,
- /*PIN-51*/ PINNAME_NETLIGHT = 51,
- /*PIN-62*/ PINNAME_GPIO6 = 62,
- /*PIN-63*/ PINNAME_DCD = 63,
- /*PIN-66*/ PINNAME_DTR = 66,
- /*PIN-64*/ PINNAME_MAIN_CTS = 64,
- /*PIN-65*/ PINNAME_MAIN_RTS = 65,
- /*PIN-67*/ PINNAME_MAIN_TXD = 67,
- /*PIN-68*/ PINNAME_MAIN_RXD = 68,
- /*PIN-73*/ PINNAME_RMII_RXD1 = 73,
- /*PIN-74*/ PINNAME_RMII_RXCL = 74,
- /*PIN-75*/ PINNAME_RMII_CLK = 75,
- /*PIN-76*/ PINNAME_RMII_RXD0 = 76,
- /*PIN-77*/ PINNAME_RMII_TXD0 = 77,
- /*PIN-78*/ PINNAME_RMII_TXD1 = 78,
- /*PIN-79*/ PINNAME_RMII_RXD2 = 79,
- /*PIN-80*/ PINNAME_RMII_TXD2 = 80,
- /*PIN-81*/ PINNAME_RMII_TX_CTRL = 81,
- /*PIN-82*/ PINNAME_RMII_RXD3 = 82,
- /*PIN-83*/ PINNAME_RMII_TXCL = 83,
- /*PIN-84*/ PINNAME_RMII_TXD3 = 84,
- /*PIN-118*/ PINNAME_WLAN_SLP_CLK = 118,
- /*PIN-119*/ PINNAME_RMII_RST = 119,
- /*PIN-120*/ PINNAME_RMII_INT = 120,
- /*PIN-121*/ PINNAME_RMII_MDIO = 121,
- /*PIN-122*/ PINNAME_RMII_MDC = 122,
- /*PIN-123*/ PINNAME_PRI_TDI = 123,
- /*PIN-127*/ PINNAME_WLAN_PER_EN = 127,
- /*PIN-135*/ PINNAME_WLAN_WAKE = 135,
- /*PIN-136*/ PINNAME_WLAN_EN = 136,
- /*PIN-139*/ PINNAME_GPIO8 = 139,
- PINNAME_END
-}Enum_PinName;
-
-/****************************************************************************
- * Error Code Definition
- ***************************************************************************/
-enum {
- RES_OK = 0,
- RES_BAD_PARAMETER = -1, ///< Parameter is invalid.
- RES_IO_NOT_SUPPORT = -2,
- RES_IO_ERROR = -3,
- RES_NOT_IMPLEMENTED = -4
-};
-
-typedef enum{
- PINDIRECTION_IN = 0,
- PINDIRECTION_OUT = 1
-}Enum_PinDirection;
-
-typedef enum{
- PINLEVEL_LOW = 0,
- PINLEVEL_HIGH = 1
-}Enum_PinLevel;
-
-typedef enum{
- PINPULLSEL_DISABLE = (0<<13), // Disable pull selection
- PINPULLSEL_PULLDOWN = (5<<13), // Pull-down
- PINPULLSEL_PULLUP = (6<<13) // Pull-up
-}Enum_PinPullSel;
-
-/****************************************************************************
- * GPIO Config Items
- ***************************************************************************/
-typedef struct{
- Enum_PinName pin_name;
- Enum_PinDirection pinDirection;
- Enum_PinLevel pinLevel;
- Enum_PinPullSel pinPullSel;
-}ST_GPIOConfig;
-
-//------------------------------------------------------------------------------
-/**
- * The type of GPIO Edge Sensivity.
- */
-//------------------------------------------------------------------------------
-typedef enum {
- EINT_SENSE_NONE, // pin is input, but no an interrupt pin.
- EINT_SENSE_RISING,
- EINT_SENSE_FALLING,
- EINT_SENSE_BOTH
-}Enum_EintType;
-
-/*****************************************************************
-* Function: Ql_GPIO_Init
-*
-* Description:
-* This function enables the GPIO function of the specified pin,
-* and initialize the configurations, including direction,
-* level and pull selection.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* dir:
-* The initial direction of GPIO, one value of Enum_PinDirection.
-* level:
-* The initial level of GPIO, one value of Enum_PinLevel.
-* pull_sel:
-* Pull selection, one value of Enum_PinPullSel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_Init(Enum_PinName pin_name,
- Enum_PinDirection dir,
- Enum_PinLevel level,
- Enum_PinPullSel pull_sel
- );
-
-/*****************************************************************
-* Function: Ql_GPIO_Base_Init
-*
-* Description:
-* This function enables the GPIO function of the specified pin.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-*
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-*****************************************************************/
-int Ql_GPIO_Base_Init(Enum_PinName pin_name );
-
-/*****************************************************************
-* Function: Ql_GPIO_SetLevel
-*
-* Description:
-* This function sets the level of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* level:
-* The initial level of GPIO, one value of Enum_PinLevel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetLevel(Enum_PinName pin_name, Enum_PinLevel level);
-
-/*****************************************************************
-* Function: Ql_GPIO_GetLevel
-*
-* Description:
-* This function gets the level of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* The level value of the specified GPIO, which is
-* nonnegative integer.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-*****************************************************************/
-int Ql_GPIO_GetLevel(Enum_PinName pin_name);
-
-/*****************************************************************
-* Function: Ql_GPIO_SetDirection
-*
-* Description:
-* This function sets the direction of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* dir:
-* The initial direction of GPIO, one value of Enum_PinDirection.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetDirection(Enum_PinName pin_name, Enum_PinDirection dir);
-
-/*****************************************************************
-* Function: Ql_GPIO_GetDirection
-*
-* Description:
-* This function gets the direction of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* 0 INPUT
-* 1 OUTPUT
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_GetDirection(Enum_PinName pin_name);
-
-/*****************************************************************
-* Function: Ql_GPIO_SetPullSelection
-*
-* Description:
-* This function sets the pull selection of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Enum_PinPullSel:
-* Pull selection, one value of Enum_PinPullSel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetPullSelection(Enum_PinName pin_name, Enum_PinPullSel pull_sel);
-
-/*****************************************************************
-* Function: ql_gpio_get_pull_selection
-*
-* Description:
-* This function gets the pull selection of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* 0<<13 no pull
-* 5<<13 pull down
-* 6<<13 pull up
-*****************************************************************/
-int Ql_GPIO_GetPullSelection(Enum_PinName pin_name);
-
-/*****************************************************************
-* Function: Ql_GPIO_Uninit
-*
-* Description:
-* This function releases the specified GPIO that was
-* initialized by calling Ql_GPIO_Init() previously.
-* After releasing, the GPIO can be used for other purpose.
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_Uninit(Enum_PinName pin_name);
-
-//------------------------------------------------------------------------------
-/*
-* Description:
-* Definition for EINT callback function.
-*
-* Parameters:
-* PinName:
-* EINT pin name, one value of Enum_PinName.
-*
-* level:
-* The EINT level value, one value of Enum_PinLevel.
-* 0 or 1
-*/
-//------------------------------------------------------------------------------
-typedef void (*Ql_EINT_Callback)(Enum_PinName eint_pin_name, int level);
-
-//------------------------------------------------------------------------------
-/*
-* Function: Ql_EINT_Enable
-*
-* Description:
-* Set the interrupt sense mode, and enable interrupt.
-*
-* Parameters:
-* eint_pin_name:
-* EINT pin name, one value of Enum_PinName that has
-* the interrupt function.
-*
-* eint_type:
-* Interrupt type, level-triggered or edge-triggered.
-* Now, only edge-triggered interrupt is supported.
-*
-* eint_callback:
-* call back function
-*
-* Return:
-* RES_OK, this function succeeds.
-* else failed to execute the function.
-*/
-//------------------------------------------------------------------------------
-int Ql_EINT_Enable(Enum_PinName eint_pin_name, Enum_EintType eint_type, Ql_EINT_Callback eint_callback);
-
-
-//------------------------------------------------------------------------------
-/*
-* Function: Ql_EINT_Disable
-*
-* Description:
-* Disable the interrupt sense.
-*
-* Parameters:
-* eint_pin_name:
-* EINT pin name, one value of Enum_PinName that has
-* the interrupt function.
-*
-* Return:
-* RES_OK, this function succeeds.
-* else failed to execute the function.
-*/
-//------------------------------------------------------------------------------
-int Ql_EINT_Disable(Enum_PinName eint_pin_name);
-
-#endif // __QL_GPIO_H__
diff --git a/mbtk/include/ql/ql_i2c.h b/mbtk/include/ql/ql_i2c.h
deleted file mode 100755
index 52eb4c8..0000000
--- a/mbtk/include/ql/ql_i2c.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*****************************************************************************
-* Copyright Statement:
-* --------------------
-* This software is protected by Copyright and the information contained
-* herein is confidential. The software may not be copied and the information
-* contained herein may not be used or disclosed except with the written
-* permission of Quectel Co., Ltd. 2019
-*
-*****************************************************************************/
-/*****************************************************************************
- *
- * Filename:
- * ---------
- * ql_i2c.h
- *
- * Project:
- * --------
- * OpenLinux
- *
- * Description:
- * ------------
- * i2c API defines.
- *
- *
- *============================================================================
- * HISTORY
- *----------------------------------------------------------------------------
- * WHO WHEN WHAT
- *----------------------------------------------------------------------------
- * Carola.Zhang 16/07/2019 Create.
- ****************************************************************************/
-#ifndef __QL_UART_H__
-#define __QL_UART_H__
-
-
-int Ql_I2C_Init(char *dev_name);
-int Ql_I2C_Read(int fd, unsigned short slaveAddr, unsigned char ofstAddr, unsigned char* ptrBuff, unsigned short length);
-int Ql_I2C_Write(int fd, unsigned short slaveAddr, unsigned char ofstAddr, unsigned char* ptrData, unsigned short length);
-int Ql_I2C_Deinit(int fd);
-
-#endif /* __QL_i2c_H__ */
\ No newline at end of file
diff --git a/mbtk/include/ql/ql_log.h b/mbtk/include/ql/ql_log.h
deleted file mode 100755
index 83940d1..0000000
--- a/mbtk/include/ql/ql_log.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- @file
- DSI_ConnectManager.h
-
- @brief
- This file provides the definitions for quectel log api, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-24/07/2019 Nebula.li create
-=============================================================================*/
-
-#ifndef _QL_LOG_H_
-#define _QL_LOG_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- QL_LOG_MIN = -1,
- QL_LOG_EMERG_LEVEL=0, /* system is unusable */
- QL_LOG_INIT_LEVEL=0, /* log init level */
- QL_LOG_ALERT_LEVEL=1, /* action must be taken immediately */
- QL_LOG_CRIT_LEVEL=2, /* critical conditions */
- QL_LOG_ERR_LEVEL=3, /* error conditions */
- QL_LOG_WARN_LEVEL=4, /* warning conditions */
- QL_LOG_NOTICE_LEVEL=5, /* normal but significant condition */
- QL_LOG_INFO_LEVEL=6, /* informational */
- QL_LOG_DEBUG_LEVEL=7, /* debug-level messages */
- QL_LOG_MAX
-} QL_LOG_PRIORITY_E;
-
-#define QL_LOG_PRORIFY_VERIFY(prio) ((prio)>QL_LOG_MIN && (prio)<QL_LOG_MAX)
-
-typedef enum {
- QL_LOG_ID_MIN = -1,
- QL_LOG_ID_MAIN = 0,
- QL_LOG_ID_RADIO = 1,
- QL_LOG_ID_EVENTS = 2,
- QL_LOG_ID_SYSTEM = 3,
- QL_LOG_ID_KMSG = 4,
- QL_LOG_ID_STDOUT=5,
- QL_LOG_ID_MAX
-} QL_LOG_ID_E;
-
-#define QL_LOG_ID_VERIFY(log_id) ((log_id)>QL_LOG_ID_MIN && (log_id)<QL_LOG_ID_MAX)
-
-#define LOG_BUF_SIZE 2048
-
-#define QL_LOG_OPEN() ql_log_open()
-#define QL_LOG_CLOSE() ql_log_close()
-#define QL_LOG_SETPOS(log_id) ql_log_setpos(log_id)
-
-#define QL_LOG_DEBUG(fmt, ...) ql_log_print(QL_LOG_DEBUG_LEVEL,__FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
-#define QL_LOG_INFO(fmt, ...) ql_log_print(QL_LOG_INFO_LEVEL,__FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
-#define QL_LOG_WARN(fmt, ...) ql_log_print(QL_LOG_WARN_LEVEL,__FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
-#define QL_LOG_ERROR(fmt, ...) ql_log_print(QL_LOG_ERR_LEVEL,__FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
-
-
-extern void ql_log_open();
-extern void ql_log_close();
-extern int ql_log_print(QL_LOG_PRIORITY_E prio,const char *func, int line, const char *fmt, ...);
-
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
\ No newline at end of file
diff --git a/mbtk/include/ql/ql_mcm.h b/mbtk/include/ql/ql_mcm.h
deleted file mode 100755
index a5ae770..0000000
--- a/mbtk/include/ql/ql_mcm.h
+++ /dev/null
@@ -1,165 +0,0 @@
-#ifndef __QL_MCM_H__
-#define __QL_MCM_H__
-
-
-#define MCM_SERVICE_MAX (17)
-
-#define MCM_SERVICE_DATA 0x01
-#define MCM_SERVICE_DM 0x02
-#define MCM_SERVICE_LOC 0x03
-#define MCM_SERVICE_MOBILEAP 0x04
-#define MCM_SERVICE_NW 0x05
-#define MCM_SERVICE_ATC 0x06
-#define MCM_SERVICE_SMS 0x07
-#define MCM_SERVICE_CLIENT 0x08
-#define MCM_SERVICE_SIM 0x0B
-#define MCM_SERVICE_VCALL 0x10
-
-
-#define SERVICE_REQUIRED 1
-#define SERVICE_NOT_REQUIRED 0
-
-#define MAGIC_MSG_ID_SERVICE_UP 0x87654321
-#define MAGIC_MSG_ID_SERVICE_DOWN 0x87654320
-
-typedef enum
-{
- E_QL_SUCCESS = 0, /**< Success. */
- E_QL_SUCCESS_CONDITIONAL_SUCCESS = 1, /**< Conditional success. */
- E_QL_ERROR_MCM_SERVICES_NOT_AVAILABLE = 2, /**< MCM services not available. */
- E_QL_ERROR_GENERIC = 3, /**< Generic error. */
- E_QL_ERROR_BADPARM = 4, /**< Bad parameter. */
- E_QL_ERROR_MEMORY = 5, /**< Memory error. */
- E_QL_ERROR_INVALID_STATE = 6, /**< Invalid state. */
- E_QL_ERROR_MALFORMED_MSG = 7, /**< Malformed message. */
- E_QL_ERROR_NO_MEMORY = 8, /**< No memory. */
- E_QL_ERROR_INTERNAL = 9, /**< Internal error. */
- E_QL_ERROR_ABORTED = 10, /**< Action was aborted. */
- E_QL_ERROR_CLIENT_IDS_EXHAUSTED = 11, /**< Client IDs have been exhausted. */
- E_QL_ERROR_UNABORTABLE_TRANSACTION = 12, /**< Unabortable transaction. */
- E_QL_ERROR_INVALID_CLIENT_ID = 13, /**< Invalid client ID. */
- E_QL_ERROR_NO_THRESHOLDS = 14, /**< No thresholds. */
- E_QL_ERROR_INVALID_HANDLE = 15, /**< Invalid handle. */
- E_QL_ERROR_INVALID_PROFILE = 16, /**< Invalid profile. */
- E_QL_ERROR_INVALID_PINID = 17, /**< Invalid PIN ID. */
- E_QL_ERROR_INCORRECT_PIN = 18, /**< Incorrect PIN. */
- E_QL_ERROR_NO_NETWORK_FOUND = 19, /**< No network found. */
- E_QL_ERROR_CALL_FAILED = 20, /**< Call failed. */
- E_QL_ERROR_OUT_OF_CALL = 21, /**< Out of call. */
- E_QL_ERROR_NOT_PROVISIONED = 22, /**< Not provisioned. */
- E_QL_ERROR_MISSING_ARG = 23, /**< Missing argument. */
- E_QL_ERROR_ARG_TOO_LONG = 24, /**< Argument is too long. */
- E_QL_ERROR_INVALID_TX_ID = 25, /**< Invalid Tx ID. */
- E_QL_ERROR_DEVICE_IN_USE = 26, /**< Device is in use. */
- E_QL_ERROR_OP_NETWORK_UNSUPPORTED = 27, /**< OP network is not supported. */
- E_QL_ERROR_OP_DEVICE_UNSUPPORTED = 28, /**< OP device is not supported. */
- E_QL_ERROR_NO_EFFECT = 29, /**< No effect. */
- E_QL_ERROR_NO_FREE_PROFILE = 30, /**< No free profile. */
- E_QL_ERROR_INVALID_PDP_TYPE = 31, /**< Invalid PDP type. */
- E_QL_ERROR_INVALID_TECH_PREF = 32, /**< Invalid technical preference. */
- E_QL_ERROR_INVALID_PROFILE_TYPE = 33, /**< Invalid profile type. */
- E_QL_ERROR_INVALID_SERVICE_TYPE = 34, /**< Invalid service type. */
- E_QL_ERROR_INVALID_REGISTER_ACTION = 35, /**< Invalid register action. */
- E_QL_ERROR_INVALID_PS_ATTACH_ACTION = 36, /**< Invalid PS attach action. */
- E_QL_ERROR_AUTHENTICATION_FAILED = 37, /**< Authentication failed. */
- E_QL_ERROR_PIN_BLOCKED = 38, /**< PIN is blocked. */
- E_QL_ERROR_PIN_PERM_BLOCKED = 39, /**< PIN is permanently blocked. */
- E_QL_ERROR_SIM_NOT_INITIALIZED = 40, /**< SIM is not initialized. */
- E_QL_ERROR_MAX_QOS_REQUESTS_IN_USE = 41, /**< Maximum QoS requests are in use. */
- E_QL_ERROR_INCORRECT_FLOW_FILTER = 42, /**< Incorrect flow filter. */
- E_QL_ERROR_NETWORK_QOS_UNAWARE = 43, /**< Network QoS is unaware. */
- E_QL_ERROR_INVALID_ID = 44, /**< Invalid ID. */
- E_QL_ERROR_INVALID_QOS_ID = 45, /**< Invalid QoS ID. */
- E_QL_ERROR_REQUESTED_NUM_UNSUPPORTED= 46, /**< Requested number is not supported. */
- E_QL_ERROR_INTERFACE_NOT_FOUND = 47, /**< Interface was not found. */
- E_QL_ERROR_FLOW_SUSPENDED = 48, /**< Flow is suspended. */
- E_QL_ERROR_INVALID_DATA_FORMAT = 49, /**< Invalid data format. */
- E_QL_ERROR_GENERAL = 50, /**< General error. */
- E_QL_ERROR_UNKNOWN = 51, /**< Unknown error. */
- E_QL_ERROR_INVALID_ARG = 52, /**< Invalid argument. */
- E_QL_ERROR_INVALID_INDEX = 53, /**< Invalid index. */
- E_QL_ERROR_NO_ENTRY = 54, /**< No entry. */
- E_QL_ERROR_DEVICE_STORAGE_FULL = 55, /**< Device storage is full. */
- E_QL_ERROR_DEVICE_NOT_READY = 56, /**< Device is not ready. */
- E_QL_ERROR_NETWORK_NOT_READY = 57, /**< Network is not ready. */
- E_QL_ERROR_CAUSE_CODE = 58, /**< Cause code error. */
- E_QL_ERROR_MESSAGE_NOT_SENT = 59, /**< Message was not sent. */
- E_QL_ERROR_MESSAGE_DELIVERY_FAILURE = 60, /**< Message delivery failure. */
- E_QL_ERROR_INVALID_MESSAGE_ID = 61, /**< Invalid message ID. */
- E_QL_ERROR_ENCODING = 62, /**< Encoding error. */
- E_QL_ERROR_AUTHENTICATION_LOCK = 63, /**< Authentication lock error. */
- E_QL_ERROR_INVALID_TRANSITION = 64, /**< Invalid transition. */
- E_QL_ERROR_NOT_A_MCAST_IFACE = 65, /**< Not an MCast interface. */
- E_QL_ERROR_MAX_MCAST_REQUESTS_IN_USE= 66, /**< Maximum MCast requests are in use. */
- E_QL_ERROR_INVALID_MCAST_HANDLE = 67, /**< Invalid MCast handle. */
- E_QL_ERROR_INVALID_IP_FAMILY_PREF = 68, /**< Invalid IP family preference. */
- E_QL_ERROR_SESSION_INACTIVE = 69, /**< Session is inactive. */
- E_QL_ERROR_SESSION_INVALID = 70, /**< Session is invalid. */
- E_QL_ERROR_SESSION_OWNERSHIP = 71, /**< Session ownership error. */
- E_QL_ERROR_INSUFFICIENT_RESOURCES = 72, /**< Insufficient resources. */
- E_QL_ERROR_DISABLED = 73, /**< Disabled. */
- E_QL_ERROR_INVALID_OPERATION = 74, /**< Invalid operation. */
- E_QL_ERROR_INVALID_CMD = 75, /**< Invalid command. */
- E_QL_ERROR_TPDU_TYPE = 76, /**< Transfer Protocol data unit type error. */
- E_QL_ERROR_SMSC_ADDR = 77, /**< Short message service center address error. */
- E_QL_ERROR_INFO_UNAVAILABLE = 78, /**< Information is not available. */
- E_QL_ERROR_SEGMENT_TOO_LONG = 79, /**< Segment is too long. */
- E_QL_ERROR_SEGMENT_ORDER = 80, /**< Segment order error. */
- E_QL_ERROR_BUNDLING_NOT_SUPPORTED = 81, /**< Bundling is not supported. */
- E_QL_ERROR_OP_PARTIAL_FAILURE = 82, /**< OP partial failure. */
- E_QL_ERROR_POLICY_MISMATCH = 83, /**< Policy mismatch. */
- E_QL_ERROR_SIM_FILE_NOT_FOUND = 84, /**< SIM file was not found. */
- E_QL_ERROR_EXTENDED_INTERNAL = 85, /**< Extended internal error. */
- E_QL_ERROR_ACCESS_DENIED = 86, /**< Access is denied. */
- E_QL_ERROR_HARDWARE_RESTRICTED = 87, /**< Hardware is restricted. */
- E_QL_ERROR_ACK_NOT_SENT = 88, /**< Acknowledgement was not sent. */
- E_QL_ERROR_INJECT_TIMEOUT = 89, /**< Inject timeout error. */
- E_QL_ERROR_INCOMPATIBLE_STATE = 90, /**< Incompatible state. */
- E_QL_ERROR_FDN_RESTRICT = 91, /**< Fixed dialing number restrict error. */
- E_QL_ERROR_SUPS_FAILURE_CAUSE = 92, /**< SUPS failure cause. */
- E_QL_ERROR_NO_RADIO = 93, /**< No radio. */
- E_QL_ERROR_NOT_SUPPORTED = 94, /**< Not supported. */
- E_QL_ERROR_NO_SUBSCRIPTION = 95, /**< No subscription. */
- E_QL_ERROR_CARD_CALL_CONTROL_FAILED = 96, /**< Card call control failed. */
- E_QL_ERROR_NETWORK_ABORTED = 97, /**< Network was aborted. */
- E_QL_ERROR_MSG_BLOCKED = 98, /**< Message was blocked. */
- E_QL_ERROR_INVALID_SESSION_TYPE = 99, /**< Invalid session type. */
- E_QL_ERROR_INVALID_PB_TYPE = 100, /**< Invalid phonebook type. */
- E_QL_ERROR_NO_SIM = 101, /**< No SIM was found. */
- E_QL_ERROR_PB_NOT_READY = 102, /**< Phonebook not ready. */
- E_QL_ERROR_PIN_RESTRICTION = 103, /**< PIN restriction. */
- E_QL_ERROR_PIN2_RESTRICTION = 104, /**< PIN2 restriction. */
- E_QL_ERROR_PUK_RESTRICTION = 105, /**< PIN unlocking key restriction. */
- E_QL_ERROR_PUK2_RESTRICTION = 106, /**< PIN unlocking key2 restriction. */
- E_QL_ERROR_PB_ACCESS_RESTRICTED = 107, /**< Phonebook access is restricted. */
- E_QL_ERROR_PB_DELETE_IN_PROG = 108, /**< Phonebook delete is in progress. */
- E_QL_ERROR_PB_TEXT_TOO_LONG = 109, /**< Phonebook text is too long. */
- E_QL_ERROR_PB_NUMBER_TOO_LONG = 110, /**< Phonebook number is too long. */
- E_QL_ERROR_PB_HIDDEN_KEY_RESTRICTION= 111, /**< Phonebook hidden key restriction. */
- E_QL_ERROR_PB_NOT_AVAILABLE = 112, /**< Phonebook is not available. */
- E_QL_ERROR_DEVICE_MEMORY_ERROR = 113, /**< Device memory error. */
- E_QL_ERROR_SIM_PIN_BLOCKED = 114, /**< SIM PIN is blocked. */
- E_QL_ERROR_SIM_PIN_NOT_INITIALIZED = 115, /**< SIM PIN is not initialized. */
- E_QL_ERROR_SIM_INVALID_PIN = 116, /**< SIM PIN is invalid. */
- E_QL_ERROR_SIM_INVALID_PERSO_CK = 117, /**< SIM invalid personalization CK. */
- E_QL_ERROR_SIM_PERSO_BLOCKED = 118, /**< SIM personalization blocked. */
- E_QL_ERROR_SIM_PERSO_INVALID_DATA = 119, /**< SIM personalization contains invalid data. */
- E_QL_ERROR_SIM_ACCESS_DENIED = 120, /**< SIM access is denied. */
- E_QL_ERROR_SIM_INVALID_FILE_PATH = 121, /**< SIM file path is invalid. */
- E_QL_ERROR_SIM_SERVICE_NOT_SUPPORTED= 122, /**< SIM service is not supported. */
- E_QL_ERROR_SIM_AUTH_FAIL = 123, /**< SIM authorization failure. */
- E_QL_ERROR_SIM_PIN_PERM_BLOCKED = 124, /**< SIM PIN is permanently blocked. */
-}E_QL_ERROR_CODE_T;
-
-#if 0
-int QL_MCM_Client_Init( mcm_client_handle_type *ph_mcm,
- int client_type,
- mcm_client_ind_cb client_ind_cb,
- mcm_client_async_cb client_async_cb);
-
-int QL_MCM_Client_Deinit(mcm_client_handle_type h_mcm,
- int client_type);
-#endif
-
-#endif // __QL_MCM_H__
-
diff --git a/mbtk/include/ql/ql_mcm_call.h b/mbtk/include/ql/ql_mcm_call.h
deleted file mode 100755
index 973fb47..0000000
--- a/mbtk/include/ql/ql_mcm_call.h
+++ /dev/null
@@ -1,909 +0,0 @@
-/**
- *@file ql_mcm_voice.h
- *@date 2017-11-30
- *@author
- *@brief
- */
-
-#ifndef __QL_MCM_VOICE_H__
-#define __QL_MCM_VOICE_H__
-
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "ql_vcall.h"
-
-#define QL_MCM_MAX_VOICE_CALLS 8 /** GSM provides up to 8 calls; 3GPP2 provides 2. */
-#define QL_MCM_MAX_PHONE_NUMBER 82 /** Maximum phone number length. */
-#define QL_MCM_MAX_UUS_DATA 20 /** Maximum user-to-user data. */
-#define QL_MCM_MAX_DTMF_LENGTH 20 /** Maximum DTMF length. */
-#define QL_MCM_MAX_USSD_LENGTH 128 /** Maximum USSD length. */
-#define QL_MCM_MAX_PASSWORD_LENGTH 4 /** Maximum password length. */
-#define QL_MCM_MAX_CALL_FORWARDING_INFO 13 /** Maximum call forwarding information. */
-#define QL_MCM_MAX_ECALL_MSD 140 /** Maximum size of the MSD sent to the network with an eCall */
-#define QL_MCM_MAX_ECALL_URC_EVENT_LENGTH 128 /** Maximum size of the ecall urc event */
-
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_STATE_INCOMING = 0x0000, /**< MT incoming; CC setup. */
- E_QL_MCM_VOICE_CALL_STATE_DIALING = 0x0001, /**< Dialing state. */
- E_QL_MCM_VOICE_CALL_STATE_ALERTING = 0x0002, /**< MT call waiting; MO alterting. */
- E_QL_MCM_VOICE_CALL_STATE_ACTIVE = 0x0003, /**< Call is active. */
- E_QL_MCM_VOICE_CALL_STATE_HOLDING = 0x0004, /**< Call is on hold. */
- E_QL_MCM_VOICE_CALL_STATE_END = 0x0005, /**< Call is disconnected. */
- E_QL_MCM_VOICE_CALL_STATE_WAITING = 0x0006, /**< Call is waiting. */
-} ql_mcm_voice_call_state_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_TECH_NONE = 0, /**< None. */
- E_QL_MCM_VOICE_TECH_3GPP = 1, /**< 3GPP. */
- E_QL_MCM_VOICE_TECH_3GPP2 = 2, /**< 3GPP2. */
-} ql_mcm_voice_tech_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_NUMBER_UNKNOWN = 0x0000,
- E_QL_MCM_VOICE_CALL_NUMBER_ALLOWED = 0x0001, /**< Number allowed. */
- E_QL_MCM_VOICE_CALL_NUMBER_RESTRICTED = 0x0002, /**< Number restricted. */
- E_QL_MCM_VOICE_CALL_NUMBER_PAYPHONE = 0x0003, /**< Payhone number. */
-} ql_mcm_voice_call_number_presentation_type_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_MOBILE_ORIGINATED = 0x0000, /**< Mobile-originated. */
- E_QL_MCM_VOICE_CALL_MOBILE_TERMINATED = 0x0001, /**< Mobile-terminated. */
-} ql_mcm_voice_call_direction_type_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_ANSWER, //!<Answer the call.
- E_QL_MCM_VOICE_CALL_END, //!<Deprecated. Do not use.
- E_QL_MCM_VOICE_CALL_HOLD, //!<Hold the call.
- E_QL_MCM_VOICE_CALL_UNHOLD, //!<Release the call from hold.
- E_QL_MCM_VOICE_CALL_CONFERENCE, //!<Conference call.
- E_QL_MCM_VOICE_CALL_GO_PRIVATE, //!<Private call.
- E_QL_MCM_VOICE_CALL_END_ALL //!<End all calls.
-} ql_mcm_voice_call_operation_t; //!< Voice call operation type.
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_END_REASON_NONE = 0,
- E_QL_MCM_VOICE_CALL_END_CAUSE_OFFLINE = 1,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CDMA_LOCK = 2,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_SRV = 3,
- E_QL_MCM_VOICE_CALL_END_CAUSE_FADE = 4,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INTERCEPT = 5,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REORDER = 6,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REL_NORMAL = 7,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REL_SO_REJ = 8,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INCOM_CALL = 9,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ALERT_STOP = 10,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CLIENT_END = 11,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACTIVATION = 12,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MC_ABORT = 13,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MAX_ACCESS_PROBE = 14,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PSIST_N = 15,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UIM_NOT_PRESENT = 16,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACC_IN_PROG = 17,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACC_FAIL = 18,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RETRY_ORDER = 19,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CCS_NOT_SUPPORTED_BY_BS = 20,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_RESPONSE_FROM_BS = 21,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REJECTED_BY_BS = 22,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INCOMPATIBLE = 23,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_BLOCK = 24,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ALREADY_IN_TC = 25,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EMERGENCY_FLASHED = 26,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USER_CALL_ORIG_DURING_GPS = 27,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USER_CALL_ORIG_DURING_SMS = 28,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USER_CALL_ORIG_DURING_DATA= 29,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REDIR_OR_HANDOFF = 30,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_BLOCK_ALL = 31,
- E_QL_MCM_VOICE_CALL_END_CAUSE_OTASP_SPC_ERR = 32,
- E_QL_MCM_VOICE_CALL_END_CAUSE_IS707B_MAX_ACC = 33,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACC_FAIL_REJ_ORD = 34,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACC_FAIL_RETRY_ORD = 35,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TIMEOUT_T42 = 36,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TIMEOUT_T40 = 37,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SRV_INIT_FAIL = 38,
- E_QL_MCM_VOICE_CALL_END_CAUSE_T50_EXP = 39,
- E_QL_MCM_VOICE_CALL_END_CAUSE_T51_EXP = 40,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RL_ACK_TIMEOUT = 41,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BAD_FL = 42,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TRM_REQ_FAIL = 43,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TIMEOUT_T41 = 44,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INCOM_REJ = 45,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SETUP_REJ = 46,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NETWORK_END = 47,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_FUNDS = 48,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_GW_SRV = 49,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_CDMA_SRV = 50,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_FULL_SRV = 51,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MAX_PS_CALLS = 52,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNKNOWN_SUBSCRIBER = 53,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ILLEGAL_SUBSCRIBER = 54,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BEARER_SERVICE_NOT_PROVISIONED= 55,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TELE_SERVICE_NOT_PROVISIONED = 56,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ILLEGAL_EQUIPMENT = 57,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_BARRED = 58,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ILLEGAL_SS_OPERATION = 59,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SS_ERROR_STATUS = 60,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SS_NOT_AVAILABLE = 61,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SS_SUBSCRIPTION_VIOLATION = 62,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SS_INCOMPATIBILITY = 63,
- E_QL_MCM_VOICE_CALL_END_CAUSE_FACILITY_NOT_SUPPORTED = 64,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ABSENT_SUBSCRIBER = 65,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SHORT_TERM_DENIAL = 66,
- E_QL_MCM_VOICE_CALL_END_CAUSE_LONG_TERM_DENIAL = 67,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SYSTEM_FAILURE = 68,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DATA_MISSING = 69,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNEXPECTED_DATA_VALUE = 70,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PWD_REGISTRATION_FAILURE = 71,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NEGATIVE_PWD_CHECK = 72,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NUM_OF_PWD_ATTEMPTS_VIOLATION = 73,
- E_QL_MCM_VOICE_CALL_END_CAUSE_POSITION_METHOD_FAILURE = 74,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNKNOWN_ALPHABET = 75,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USSD_BUSY = 76,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REJECTED_BY_USER = 77,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REJECTED_BY_NETWORK = 78,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DEFLECTION_TO_SERVED_SUBSCRIBER = 79,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SPECIAL_SERVICE_CODE = 80,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_DEFLECTED_TO_NUMBER = 81,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MPTY_PARTICIPANTS_EXCEEDED= 82,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RESOURCES_NOT_AVAILABLE = 83,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNASSIGNED_NUMBER = 84,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_ROUTE_TO_DESTINATION = 85,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CHANNEL_UNACCEPTABLE = 86,
- E_QL_MCM_VOICE_CALL_END_CAUSE_OPERATOR_DETERMINED_BARRING = 87,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NORMAL_CALL_CLEARING = 88,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USER_BUSY = 89,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_USER_RESPONDING = 90,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USER_ALERTING_NO_ANSWER = 91,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_REJECTED = 92,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NUMBER_CHANGED = 93,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PREEMPTION = 94,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DESTINATION_OUT_OF_ORDER = 95,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_NUMBER_FORMAT = 96,
- E_QL_MCM_VOICE_CALL_END_CAUSE_FACILITY_REJECTED = 97,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RESP_TO_STATUS_ENQUIRY = 98,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NORMAL_UNSPECIFIED = 99,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_CIRCUIT_OR_CHANNEL_AVAILABLE = 100,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NETWORK_OUT_OF_ORDER = 101,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TEMPORARY_FAILURE = 102,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SWITCHING_EQUIPMENT_CONGESTION = 103,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_INFORMATION_DISCARDED = 104,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 105,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 106,
- E_QL_MCM_VOICE_CALL_END_CAUSE_QOS_UNAVAILABLE = 107,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUESTED_FACILITY_NOT_SUBSCRIBED = 108,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INCOMING_CALLS_BARRED_WITHIN_CUG = 109,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BEARER_CAPABILITY_NOT_AUTH = 110,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BEARER_CAPABILITY_UNAVAILABLE = 111,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVICE_OPTION_NOT_AVAILABLE = 112,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACM_LIMIT_EXCEEDED = 113,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BEARER_SERVICE_NOT_IMPLEMENTED = 114,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUESTED_FACILITY_NOT_IMPLEMENTED= 115,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 116,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVICE_OR_OPTION_NOT_IMPLEMENTED = 117,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_TRANSACTION_IDENTIFIER = 118,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USER_NOT_MEMBER_OF_CUG = 119,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INCOMPATIBLE_DESTINATION = 120,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_TRANSIT_NW_SELECTION = 121,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SEMANTICALLY_INCORRECT_MESSAGE = 122,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_MANDATORY_INFORMATION = 123,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MESSAGE_TYPE_NON_IMPLEMENTED = 124,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 125,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INFORMATION_ELEMENT_NON_EXISTENT = 126,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CONDITONAL_IE_ERROR = 127,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 128,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RECOVERY_ON_TIMER_EXPIRED = 129,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PROTOCOL_ERROR_UNSPECIFIED = 130,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INTERWORKING_UNSPECIFIED = 131,
- E_QL_MCM_VOICE_CALL_END_CAUSE_OUTGOING_CALLS_BARRED_WITHIN_CUG = 132,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_CUG_SELECTION = 133,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNKNOWN_CUG_INDEX = 134,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CUG_INDEX_INCOMPATIBLE = 135,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CUG_CALL_FAILURE_UNSPECIFIED = 136,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CLIR_NOT_SUBSCRIBED = 137,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CCBS_POSSIBLE = 138,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CCBS_NOT_POSSIBLE = 139,
- E_QL_MCM_VOICE_CALL_END_CAUSE_IMSI_UNKNOWN_IN_HLR = 140,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ILLEGAL_MS = 141,
- E_QL_MCM_VOICE_CALL_END_CAUSE_IMSI_UNKNOWN_IN_VLR = 142,
- E_QL_MCM_VOICE_CALL_END_CAUSE_IMEI_NOT_ACCEPTED = 143,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ILLEGAL_ME = 144,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PLMN_NOT_ALLOWED = 145,
- E_QL_MCM_VOICE_CALL_END_CAUSE_LOCATION_AREA_NOT_ALLOWED = 146,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ROAMING_NOT_ALLOWED_IN_THIS_LOCATION_AREA = 147,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_SUITABLE_CELLS_IN_LOCATION_AREA= 148,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NETWORK_FAILURE = 149,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MAC_FAILURE = 150,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SYNCH_FAILURE = 151,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NETWORK_CONGESTION = 152,
- E_QL_MCM_VOICE_CALL_END_CAUSE_GSM_AUTHENTICATION_UNACCEPTABLE = 153,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVICE_NOT_SUBSCRIBED = 154,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVICE_TEMPORARILY_OUT_OF_ORDER = 155,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_CANNOT_BE_IDENTIFIED = 156,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INCORRECT_SEMANTICS_IN_MESSAGE = 157,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MANDATORY_INFORMATION_INVALID = 158,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_FAILURE = 159,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_SIM = 160,
- E_QL_MCM_VOICE_CALL_END_CAUSE_WRONG_STATE = 161,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_CLASS_BLOCKED = 162,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_RESOURCES = 163,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_USER_DATA = 164,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TIMER_T3230_EXPIRED = 165,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_CELL_AVAILABLE = 166,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ABORT_MSG_RECEIVED = 167,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RADIO_LINK_LOST = 168,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TIMER_T303_EXPIRED = 169,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CNM_MM_REL_PENDING = 170,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_RR_REL_IND = 171,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_RR_RANDOM_ACCESS_FAILURE = 172,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_RRC_REL_IND = 173,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_RRC_CLOSE_SESSION_IND = 174,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_RRC_OPEN_SESSION_FAILURE = 175,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_LOW_LEVEL_FAIL = 176,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_LOW_LEVEL_FAIL_REDIAL_NOT_ALLOWED = 177,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_LOW_LEVEL_IMMED_RETRY = 178,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ACCESS_STRATUM_REJ_ABORT_RADIO_UNAVAILABLE = 179,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVICE_OPTION_NOT_SUPPORTED = 180,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_UL_DATA_CNF_FAILURE_TXN = 181,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_UL_DATA_CNF_FAILURE_HO = 182,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_UL_DATA_CNF_FAILURE_CONN_REL = 183,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_UL_DATA_CNF_FAILURE_RLF = 184,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_UL_DATA_CNF_FAILURE_CTRL_NOT_CONN = 185,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_SUCCESS = 186,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE = 187,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_ABORTED = 188,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_ACCESS_BARRED = 189,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_CELL_RESEL = 190,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_CONFIG_FAILURE = 191,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_TIMER_EXPIRED = 192,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_LINK_FAILURE = 193,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_NOT_CAMPED = 194,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_SI_FAILURE = 195,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_EST_FAILURE_CONN_REJECT = 196,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_NORMAL = 197,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_RLF = 198,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_CRE_FAILURE = 199,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_OOS_DURING_CRE = 200,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_ABORTED = 201,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_SIB_READ_ERROR = 202,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_CONN_REL_ABORTED_IRAT_SUCCESS = 203,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_LRRC_RADIO_LINK_FAILURE = 204,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_DETACH_WITH_REATTACH_LTE_NW_DETACH = 205,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AS_REJ_DETACH_WITH_OUT_REATTACH_LTE_NW_DETACH = 206,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BAD_REQ_WAIT_INVITE = 207,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BAD_REQ_WAIT_REINVITE = 208,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INVALID_REMOTE_URI = 209,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REMOTE_UNSUPP_MEDIA_TYPE = 210,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PEER_NOT_REACHABLE = 211,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NETWORK_NO_RESP_TIME_OUT = 212,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NETWORK_NO_RESP_HOLD_FAIL = 213,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DATA_CONNECTION_LOST = 214,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UPGRADE_DOWNGRADE_REJ = 215,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SIP_403_FORBIDDEN = 216,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NO_NETWORK_RESP = 217,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UPGRADE_DOWNGRADE_FAILED = 218,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UPGRADE_DOWNGRADE_CANCELLED = 219,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SSAC_REJECT = 220,
- E_QL_MCM_VOICE_CALL_END_CAUSE_THERMAL_EMERGENCY = 221,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_SOFT_FAILURE = 222,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_HARD_FAILURE = 223,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CONNECTION_EST_FAILURE = 224,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CONNECTION_FAILURE = 225,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RRC_CONN_REL_NO_MT_SETUP = 226,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ESR_FAILURE = 227,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MT_CSFB_NO_RESPONSE_FROM_NW = 228,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BUSY_EVERYWHERE = 229,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ANSWERED_ELSEWHERE = 230,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RLF_DURING_CC_DISCONNECT = 231,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TEMP_REDIAL_ALLOWED = 232,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PERM_REDIAL_NOT_NEEDED = 233,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MERGED_TO_CONFERENCE = 234,
- E_QL_MCM_VOICE_CALL_END_CAUSE_LOW_BATTERY = 235,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_DEFLECTED = 236,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RTP_RTCP_TIMEOUT = 237,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RINGING_RINGBACK_TIMEOUT = 238,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REG_RESTORATION = 239,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CODEC_ERROR = 240,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNSUPPORTED_SDP = 241,
- E_QL_MCM_VOICE_CALL_END_CAUSE_RTP_FAILURE = 242,
- E_QL_MCM_VOICE_CALL_END_CAUSE_QoS_FAILURE = 243,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MULTIPLE_CHOICES = 244,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MOVED_PERMANENTLY = 245,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MOVED_TEMPORARILY = 246,
- E_QL_MCM_VOICE_CALL_END_CAUSE_USE_PROXY = 247,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ALTERNATE_SERVICE = 248,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ALTERNATE_EMERGENCY_CALL = 249,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNAUTHORIZED = 250,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PAYMENT_REQUIRED = 251,
- E_QL_MCM_VOICE_CALL_END_CAUSE_METHOD_NOT_ALLOWED = 252,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NOT_ACCEPTABLE = 253,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PROXY_AUTHENTICATION_REQUIRED = 254,
- E_QL_MCM_VOICE_CALL_END_CAUSE_GONE = 255,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUEST_ENTITY_TOO_LARGE = 256,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUEST_URI_TOO_LARGE = 257,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNSUPPORTED_URI_SCHEME = 258,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BAD_EXTENSION = 259,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EXTENSION_REQUIRED = 260,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INTERVAL_TOO_BRIEF = 261,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_OR_TRANS_DOES_NOT_EXIST = 262,
- E_QL_MCM_VOICE_CALL_END_CAUSE_LOOP_DETECTED = 263,
- E_QL_MCM_VOICE_CALL_END_CAUSE_TOO_MANY_HOPS = 264,
- E_QL_MCM_VOICE_CALL_END_CAUSE_ADDRESS_INCOMPLETE = 265,
- E_QL_MCM_VOICE_CALL_END_CAUSE_AMBIGUOUS = 266,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUEST_TERMINATED = 267,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NOT_ACCEPTABLE_HERE = 268,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REQUEST_PENDING = 269,
- E_QL_MCM_VOICE_CALL_END_CAUSE_UNDECIPHERABLE = 270,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVER_INTERNAL_ERROR = 271,
- E_QL_MCM_VOICE_CALL_END_CAUSE_NOT_IMPLEMENTED = 272,
- E_QL_MCM_VOICE_CALL_END_CAUSE_BAD_GATEWAY = 273,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVER_TIME_OUT = 274,
- E_QL_MCM_VOICE_CALL_END_CAUSE_VERSION_NOT_SUPPORTED = 275,
- E_QL_MCM_VOICE_CALL_END_CAUSE_MESSAGE_TOO_LARGE = 276,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DOES_NOT_EXIST_ANYWHERE = 277,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SESS_DESCR_NOT_ACCEPTABLE = 278,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SRVCC_END_CALL = 279,
- E_QL_MCM_VOICE_CALL_END_CAUSE_INTERNAL_ERROR = 280,
- E_QL_MCM_VOICE_CALL_END_CAUSE_SERVER_UNAVAILABLE = 281,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PRECONDITION_FAILURE = 282,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DRVCC_IN_PROG = 283,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DRVCC_END_CALL = 284,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CS_HARD_FAILURE = 285,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CS_ACQ_FAILURE = 286,
- E_QL_MCM_VOICE_CALL_END_CAUSE_FALLBACK_TO_CS = 287,
- E_QL_MCM_VOICE_CALL_END_CAUSE_DEAD_BATTERY = 288,
- E_QL_MCM_VOICE_CALL_END_CAUSE_HO_NOT_FEASIBLE = 289,
- E_QL_MCM_VOICE_CALL_END_CAUSE_PDN_DISCONNECTED = 290,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REJECTED_ELSEWHERE = 291,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_PULLED = 292,
- E_QL_MCM_VOICE_CALL_END_CAUSE_CALL_PULL_OUT_OF_SYNC = 293,
- E_QL_MCM_VOICE_CALL_END_CAUSE_HOLD_RESUME_FAILED = 294,
- E_QL_MCM_VOICE_CALL_END_CAUSE_HOLD_RESUME_CANCELED = 295,
- E_QL_MCM_VOICE_CALL_END_CAUSE_REINVITE_COLLISION = 296,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_MSG_INVAILD = 297,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_MSG_IGNORE = 298,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_ACQ_FAIL = 299,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_CALL_REL_REL_ORDER= 300,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_CALL_REL_REORDER = 301,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_CALL_REL_INTERCEPT_ORDER = 302,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_CALL_REL_NORMAL = 303,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_CALL_REL_SO_REJ = 304,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAIL_CALL_REL_OTASP_SPC_ERR = 305,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAILURE_SRCH_TT_FAIL = 306,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAILURE_TCH_INIT_FAIL = 307,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAILURE_FAILURE_USER_CALL_END = 308,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAILURE_FAILURE_RETRY_EXHAUST = 309,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAILURE_FAILURE_CALL_REL_REG_REJ = 310,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_FAILURE_FAILURE_CALL_REL_NW_REL_ODR= 311,
- E_QL_MCM_VOICE_CALL_END_CAUSE_1XCSFB_HO_FAILURE = 312,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EMM_REJ_TIMER_T3417_EXT_EXP = 313,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EMM_REJ_TIMER_T3417_EXP = 314,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EMM_REJ_SERVICE_REQ_FAILURE_LTE_NW_REJECT = 315,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EMM_REJ_SERVICE_REQ_FAILURE_CS_DOMAIN_NOT_AVAILABLE = 316,
- E_QL_MCM_VOICE_CALL_END_CAUSE_EMM_REJ = 317,
-} ql_mcm_voice_call_end_reason_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_UUS_TYPE1_IMPLICIT, //!< Type 1 implicit.
- E_QL_MCM_VOICE_UUS_TYPE1_REQUIRED, //!< Type 1 required.
- E_QL_MCM_VOICE_UUS_TYPE1_NOT_REQUIRED, //!< Type 1 not required.
- E_QL_MCM_VOICE_UUS_TYPE2_REQUIRED, //!< Type 2 required.
- E_QL_MCM_VOICE_UUS_TYPE2_NOT_REQUIRED, //!< Type 2 not required.
- E_QL_MCM_VOICE_UUS_TYPE3_REQUIRED, //!< Type 3 required.
- E_QL_MCM_VOICE_UUS_TYPE3_NOT_REQUIRED, //!< Type 3 not required.
- E_QL_MCM_VOICE_UUS_TYPE_DATA //!< Data.
-} ql_mcm_voice_uus_type_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_UUS_DCS_IA5, //!< IA5.
- E_QL_MCM_VOICE_UUS_DCS_OHLP, //!< OHLP.
- E_QL_MCM_VOICE_UUS_DCS_USP, //!< USP.
- E_QL_MCM_VOICE_UUS_DCS_X244 //!< x244.
-} ql_mcm_voice_uus_dcs_type_t; //!< UUS data coding scheme.
-
-
-typedef struct
-{
- ql_mcm_voice_uus_type_t type; /**< UUS type; range -- 0 to 6.*/
- ql_mcm_voice_uus_dcs_type_t dcs; /**< UUS data coding scheme; range -- 0 to 4.*/
- uint32_t uus_data_len; /**< Must be set to the number of elements in uus_data. */
- uint8_t uus_data[QL_MCM_MAX_UUS_DATA];/**< Voice call UUS data.*/
-} ql_mcm_voice_uusdata_t;
-
-typedef struct
-{
- uint32_t call_id; /**< Call ID associated with this call.*/
- ql_mcm_voice_call_state_t state; /**< Current call state (mcm_voice_call_state).*/
- ql_mcm_voice_tech_t tech; /**< Technology (mcm_tech).*/
- char number[QL_MCM_MAX_PHONE_NUMBER + 1]; /**< Phone number.*/
- ql_mcm_voice_call_number_presentation_type_t number_presentation; /**< Number presentation.*/
- ql_mcm_voice_call_direction_type_t direction; /**< Voice call direction.*/
- uint8_t uusdata_valid; /**< Indicates whether UUS data is valid.*/
- ql_mcm_voice_uusdata_t uusdata; /**< User-to-user signaling data.*/
- uint8_t call_end_reason_valid; /**< Indicates whether call_end_reason is valid.*/
- ql_mcm_voice_call_end_reason_t call_end_reason;
-} ql_mcm_voice_call_record_t;
-
-typedef struct
-{
- uint32_t calls_len; /**< Must be set to # of elements in calls */
- ql_mcm_voice_call_record_t calls[QL_MCM_MAX_VOICE_CALLS]; /**< Calls.*/
-} ql_mcm_voice_calls_state_t;
-
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_FORWARDING_DISABLED = 0, /**< Disabled. */
- E_QL_MCM_VOICE_CALL_FORWARDING_ENABLED = 1, /**< Enabled. */
-} QL_MCM_VOICE_CALL_FORWARDING_STATUS_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_FORWARDING_TYPE_VOICE = 0, /**< Voice. */
- E_QL_MCM_VOICE_CALL_FORWARDING_TYPE_DATA = 1, /**< Data. */
- E_QL_MCM_VOICE_CALL_FORWARDING_TYPE_VOICE_DATA = 2, /**< Voice and data. */
-} QL_MCM_VOICE_CALL_FORWARDING_TYPE_T;
-
-typedef struct
-{
- QL_MCM_VOICE_CALL_FORWARDING_TYPE_T type; /**< Call forwarding type.*/
- char number[QL_MCM_MAX_PHONE_NUMBER + 1]; /**< Call forwarding number.*/
-} QL_MCM_VOICE_CALL_FORWARDING_INFO_T; /* Type */
-
-typedef struct
-{
- QL_MCM_VOICE_CALL_FORWARDING_STATUS_T status; /**< Call forwarding status.*/
- uint32_t info_len; /**< Must be set to # of elements in info */
- QL_MCM_VOICE_CALL_FORWARDING_INFO_T info[QL_MCM_MAX_CALL_FORWARDING_INFO];/**< Call forwarding information.*/
-} ql_mcm_voice_call_forwarding_status_list_t; /* Message */
-
-typedef enum
-{
- E_QL_MCM_VOICE_SERVICE_UNKOWN = 0,
- E_QL_MCM_VOICE_SERVICE_REGISTER = 1, /**< Register. */
- E_QL_MCM_VOICE_SERVICE_ERASE = 2, /**< Erase. */
-} E_QL_MCM_VOICE_CALL_SERVICE_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_FORWARD_UNCONDITIONALLY = 0, /**< Unconditional call forwarding. */
- E_QL_MCM_VOICE_CALL_FORWARD_MOBILEBUSY = 1, /**< Forward when the mobile device is busy. */
- E_QL_MCM_VOICE_CALL_FORWARD_NOREPLY = 2, /**< Forward when there is no reply. */
- E_QL_MCM_VOICE_CALL_FORWARD_UNREACHABLE = 3, /**< Forward when the call is unreachable. */
- E_QL_MCM_VOICE_CALL_FORWARD_ALLFORWARDING = 4, /**< All forwarding(0-3). */
- E_QL_MCM_VOICE_CALL_FORWARD_ALLCONDITIONAL = 5, /**< All conditional forwarding(1-3). */
-} E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T;
-
-
-typedef enum
-{
- E_QL_MCM_VOICE_CALL_WAITING_VOICE_ENABLED = 0, /**< Voice call waiting enabled. */
- E_QL_MCM_VOICE_CALL_WAITING_DISABLED = 1, /**< Voice call waiting disabled. */
-} E_QL_MCM_VOICE_CALL_WAITING_SERVICE_T;
-
-typedef struct
-{
- E_QL_MCM_VOICE_CALL_WAITING_SERVICE_T waiting_service;
-} ql_mcm_voice_call_waiting_service_t;
-
-
-
-typedef enum
-{
- E_QL_MCM_VOICE_CLIR_INVOCATION = 0, /**< Invocation. */
- E_QL_MCM_VOICE_CLIR_SUPPRESSION = 1, /**< Suppression. */
-} ql_mcm_voice_clir_action_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_CLIR_NOT_PROVISIONED = 0, /**< Not provisioned. */
- E_QL_MCM_VOICE_CLIR_PROVISIONED_PERMANENT_MODE = 1, /**< Permanently provisioned. */
- E_QL_MCM_VOICE_CLIR_PRESENTATION_RESTRICTED = 2, /**< Restricted presentation. */
- E_QL_MCM_VOICE_CLIR_PRESENTATION_ALLOWED = 3, /**< Allowed presentation. */
-} ql_mcm_voice_clir_presentation_t;
-
-typedef struct
-{
- ql_mcm_voice_clir_action_t action;
- ql_mcm_voice_clir_presentation_t presentation; /**< CLIR presentation.*/
-} ql_mcm_voice_clir_info_t;
-
-
-
-typedef enum
-{
- E_QL_MCM_VOICE_USSD_MSG_TYPE_NEW_MESSAGE = 0, /**< Initiate a new USSD sesion with network. */
- E_QL_MCM_VOICE_USSD_MSG_TYPE_REPLY_TO_IND = 1, /**< Reply to a USSD indication from the network. */
-} ql_mcm_voice_ussd_msg_type_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_USSD_ENCODING_ASCII = 0, /**< ASCII coding scheme. */
- E_QL_MCM_VOICE_USSD_ENCODING_8BIT = 1, /**< 8-bit coding scheme. */
- E_QL_MCM_VOICE_USSD_ENCODING_UCS2 = 2, /**< UCS2. */
-} ql_mcm_voice_ussd_encoding_type_t;
-
-typedef struct
-{
- ql_mcm_voice_ussd_msg_type_t type; /**< Whether sending a new request or a reply to indication*/
- ql_mcm_voice_ussd_encoding_type_t encoding; /**< USSD encoding.*/
- char ussd_string[QL_MCM_MAX_USSD_LENGTH + 1]; /**< USSD string.*/
-} ql_mcm_voice_ussd_info_t; /* Message */
-
-
-typedef enum
-{
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_ALLOUTGOING = 0, /**< All outgoing. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_OUTGOINGINT = 1, /**< Outgoing internal. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_OUTGOINGINTEXTOHOME = 2, /**< Outgoing external to home. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_ALLINCOMING = 3, /**< All incoming. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_INCOMINGROAMING = 4, /**< Roaming incoming. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_ALLBARRING = 5, /**< All calls are barred. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_ALLOUTGOINGBARRING = 6, /**< All outgoing calls are barred. */
- E_QL_MCM_SIMRIL_CHANGE_CALL_BARRING_PWD_REASON_ALLINCOMINGBARRING = 7, /**< All incoming calls are barred. */
-} ql_mcm_change_call_barring_pwd_reason_t;
-
-typedef struct
-{
- ql_mcm_change_call_barring_pwd_reason_t reason; /**< Reason for the password change. Refer to 3GPP TS 27.007 @xhyperref{S8,[S8]}, Section 7.4.*/
- char old_pwd[QL_MCM_MAX_PASSWORD_LENGTH + 1];
- char new_pwd[QL_MCM_MAX_PASSWORD_LENGTH + 1];
-} ql_mcm_change_call_barring_pwd_info_t; /* Message */
-
-
-typedef enum
-{
- E_QL_MCM_SIMRIL_E911_UNKNOWN = -1, /**< E911 unknown. */
- E_QL_MCM_SIMRIL_E911_INACTIVE = 0, /**< E911 INACTIVE. */
- E_QL_MCM_SIMRIL_E911_ACTIVE = 1, /**< E911 ACTIVE. */
-} ql_mcm_simril_e911_state_t;
-
-typedef ql_mcm_voice_call_state_t E_QL_VOICE_CALL_STATE_T;
-
-typedef enum
-{
- E_QL_MCM_ECALL_TEST = 0x01,
- E_QL_MCM_ECALL_EMERGENCY = 0x02,
- E_QL_MCM_ECALL_RECONFIG = 0x03,
-} E_QL_MCM_ECALL_VARIANT_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_AUTO_ANSWER_ENABLE = 0, /**< Enable auto-answer. */
- E_QL_MCM_VOICE_AUTO_ANSWER_DISABLE = 1, /**< Disable auto-answer. */
-} E_QL_MCM_VOICE_AUTO_ANSWER_T;
-
-
-//Laurence.yin-2018/04/03-QCM9XOL00004C011-P02, <[MCM-ECALL] : add ecall status ind info.>
-typedef enum
-{
- E_QL_MCM_VOICE_UNKOWN_IND = 0,
- E_QL_MCM_VOICE_CALL_IND,
- E_QL_MCM_VOICE_ECALL_STATUE_IND,
- E_QL_MCM_VOICE_ECALL_URC_IND,
- E_QL_MCM_VOICE_ECALL_EVENT_IND,
-
-} E_QL_MCM_VOICE_IND_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_MSD_TRANSMISSION_STATUS_SUCCESS = 0x00, /**< Success \n */
- E_QL_MCM_VOICE_ECALL_MSD_TRANSMISSION_STATUS_FAILURE = 0x01, /**< Generic failure */
-} E_QL_MCM_EALL_MSD_TRANSMISSION_STATUS_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_INACTIVE = 0,
- E_QL_MCM_VOICE_ECALL_ORIGINATING_CALL = 1,
- E_QL_MCM_VOICE_ECALL_IN_CALL_TRANSMITTING = 2, /**< ECALL APP TRANSMITTING */
- E_QL_MCM_VOICE_ECALL_WATING_FOR_AL_ACK = 3,
- E_QL_MCM_VOICE_ECALL_IN_CALL = 4,
- E_QL_MCM_VOICE_ECALL_IDLE_ALLOW_MT_ECALL = 5,
-} E_QL_MCM_ECALL_STATE_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_MODE_NOMAL = 0,
- E_QL_MCM_VOICE_ECALL_MODE_ONLY = 1,
- E_QL_MCM_VOICE_ECALL_MODE_DEFAULT = 2
-} E_QL_MCM_ECALL_MODE_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_CONFIG_ENABLE = 0,
- E_QL_MCM_VOICE_ECALL_CONFIG_VIOCECONF,
- E_QL_MCM_VOICE_ECALL_CONFIG_MODE,
- E_QL_MCM_VOICE_ECALL_CONFIG_PROCESSINFO,
- E_QL_MCM_VOICE_ECALL_CONFIG_START_TIMER,
- E_QL_MCM_VOICE_ECALL_CONFIG_HACK_TIMER,
- E_QL_MCM_VOICE_ECALL_CONFIG_MSD_TRANSMISSION,
- E_QL_MCM_VOICE_ECALL_CONFIG_MO_FAILR_REDIAL,
- E_QL_MCM_VOICE_ECALL_CONFIG_DROP_REDIAL
-} E_QL_MCM_ECALL_CONFIG_T;
-
-typedef struct
-{
- char ecall_msd[QL_MCM_MAX_ECALL_MSD]; //max msd length 140
- uint32_t msd_len;
- int manual;
- E_QL_MCM_ECALL_VARIANT_T eCallModeType;
-} ql_mcm_ecall_info;
-
-typedef struct
-{
- uint8_t enable; /* Enable or disable ecall ;0 -- Disable; 1 -- Enable */
- uint8_t voiceconfig; /* Enable or disable to mute IVS speaker in MSD
- 0 -- Disable to mute IVS speaker automatical in MSD transmission
- 1 -- Enable to mute IVS speaker automatical in MSD transmission */
- E_QL_MCM_ECALL_MODE_T ecallmode; /* The Ecall mode. */
- uint8_t processinfo; /* Enable or disable to report ecall event info. 0 -- Disable; 1 -- Enable */
- uint8_t T5; /* The timer of IVS waiting for "START". */
- uint8_t T6; /* The timer of IVS waiting for "HACK". */
- uint8_t T7; /* The timer of MSD transmission. */
- uint8_t mofailredial; /* The dial fail times. */
- uint8_t dropredial;
-} ql_mcm_ecall_config_info;
-
-
-typedef struct
-{
- uint8_t call_id; /**< call_id.*/
- uint8_t ecall_msd_tx_status_valid;
- E_QL_MCM_EALL_MSD_TRANSMISSION_STATUS_T ecall_msd_tx_status;
-} ql_mcm_voice_ecall_status_t; /* Message */
-
-typedef struct
-{
- uint8_t call_id; /**< call_id.*/
- uint32_t ecall_urc_event_len; /**< Must be set to # of elements in ecall_urc_event */
- char ecall_urc_event[QL_MCM_MAX_ECALL_URC_EVENT_LENGTH];
-} ql_mcm_voice_ecall_urc_t;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_EVENT_FAIL_START_TIMEOUT = 1, /**< Wait for START timeout. */
- E_QL_MCM_VOICE_ECALL_EVENT_FAIL_HACK_TIMEOUT = 2, /**< Wait for HACK timeout. */
- E_QL_MCM_VOICE_ECALL_EVENT_FAIL_MSD_TRANSMISSION_TIMEOUT = 3, /**< MSD transmission timeout. */
- E_QL_MCM_VOICE_ECALL_EVENT_FAIL_IVS_RESET_TIMEOUT = 4 /**< IVS reset. */
-} E_QL_MCM_VOICE_ECALL_EVENT_FAIL_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_IVS_START_RECEIVED_MSD = 1, /**< IVS Link Layer receives START message and starts to send MSD */
- E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_IVS_NACK_RECEIVED = 2, /**< IVS Link Layer receives NACK message. */
- E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_IVS_ACK_RECEIVED = 3, /**< IVS Link Layer receives the first LACK message. */
- E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_IVS_TX_COMPLETED = 4, /**< IVS MSD transmission is complete. */
- E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_IVS_HLACK_RECEIVED = 5 /**< IVS Link Layer receives first HACK message. */
-} E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_EVENT_MSDUPDATE_IVS_UPDATING_MSD = 0, /**< Indicates MSD has been updated. */
- E_QL_MCM_VOICE_ECALL_EVENT_MSDUPDATE_PSAP_REQURE_UPDATE_MSD = 1, /**< Indicate timeout of updating MSD and module starts to transfer the old MSD. */
- E_QL_MCM_VOICE_ECALL_EVENT_MSDUPDATE_IVS_UPDATE_MSD_TIMEOUT = 2 /**< Indicate to update MSD in 5 seconds. */
-} E_QL_MCM_VOICE_ECALL_EVENT_MSDUPDATE_T;
-
-typedef enum
-{
- E_QL_MCM_VOICE_ECALL_EVENT_ECALL_ESTABLISHNG_SUCCESS = 0, /**< Establish eCall successfully. */
- E_QL_MCM_VOICE_ECALL_EVENT_ECALL_ESTABLISHNG_FAIL = 1 /**< Establish eCall fails. */
-} E_QL_MCM_VOICE_ECALL_EVENT_ESTABLISH_T;
-
-typedef struct
-{
- uint16_t hack_code; /**< psap hack code.*/
-} ql_mcm_voice_ecall_event_hackcode_t; /* Type */
-
-typedef struct
-{
- uint8_t ori_remainder_times; /**< originate fail remainder times*/
- uint16_t time; /**< the minimum time duration between the previous call attempt*/
-} ql_mcm_voice_ecall_event_originate_fail_and_redial_t; /* Type */
-
-typedef struct
-{
- uint8_t drop_remainder_times; /**< dorp remainder times*/
- uint16_t time; /**< the minimum time duration between the previous call attempt*/
-} ql_mcm_voice_ecall_event_drop_and_redial_t; /* Type */
-
-
-typedef struct
-{
- uint8_t ecall_event_fails_valid;
- E_QL_MCM_VOICE_ECALL_EVENT_FAIL_T ecall_event_fails; /**< event of eCall Failed.*/
- uint8_t ecall_event_process_valid;
- E_QL_MCM_VOICE_ECALL_EVENT_PROCESS_T ecall_event_process; /**< event of eCall process.*/
- uint8_t ecall_event_msdupdate_valid;
- E_QL_MCM_VOICE_ECALL_EVENT_MSDUPDATE_T ecall_event_msdupdate; /**< event of ecall msd update.*/
- uint8_t ecall_event_establish_valid;
- E_QL_MCM_VOICE_ECALL_EVENT_ESTABLISH_T ecall_event_establish; /**< event of eCall establish.*/
- uint8_t ecall_event_hackcode_valid;
- ql_mcm_voice_ecall_event_hackcode_t ecall_event_hackcode; /**< event of eCall hack code.*/
- uint8_t ecall_event_ori_redial_valid;
- ql_mcm_voice_ecall_event_originate_fail_and_redial_t ecall_event_ori_redial; /**< event of originate fail and redial.*/
- uint8_t ecall_event_drop_redial_valid;
- ql_mcm_voice_ecall_event_drop_and_redial_t ecall_event_drop_redial; /**< event of drop and redial.*/
-} ql_mcm_voice_ecall_event_t; /* Message */
-
-
-typedef ql_mcm_voice_calls_state_t ql_mcm_voice_call_ind;
-typedef ql_mcm_voice_ecall_status_t ql_mcm_voice_ecall_status_ind;
-typedef ql_mcm_voice_ecall_urc_t ql_mcm_voice_ecall_urc_ind;
-typedef ql_mcm_voice_ecall_event_t ql_mcm_voice_ecall_event_ind;
-
-
-
-
-/* Callback function registered via QL_Voice_Call_AddStateHandler;
- This will be called if any stated changed of call_id
-*/
-typedef void (*QL_VoiceCall_CommonStateHandlerFunc_t)
-(
- unsigned long message_id,
- void *ind_data,
- uint32_t ind_data_len
-);
-
-
-typedef uint32 voice_client_handle_type;
-
-/* Callback function registered via QL_Voice_Call_AddStateHandler;
- This will be called if any stated changed of call_id
-*/
-typedef void (*QL_VoiceCall_StateHandlerFunc_t)
-(
- int call_id,
- char* phone_num,
- E_QL_VOICE_CALL_STATE_T state,
- void *contextPtr
-);
-
-/* Init voice module and return h_voice, this should be called before any other APIs */
-int QL_Voice_Call_Client_Init(voice_client_handle_type *ph_voice);
-
-/* DeInit voice module and release resources, this should be called at last */
-int QL_Voice_Call_Client_Deinit(voice_client_handle_type h_voice);
-
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int QL_Voice_Call_AddStateHandler(voice_client_handle_type h_voice,
- QL_VoiceCall_StateHandlerFunc_t handlerPtr,
- void* contextPtr);
-
-/* Remove callback function, won't receive any notify anymore */
-int QL_Voice_Call_RemoveStateHandler(voice_client_handle_type h_voice);
-
-//Laurence.yin-2018/04/03-QCM9XOL00004C011-P02, <[MCM-ECALL] : add ecall status ind info.>
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int QL_Voice_Call_AddCommonStateHandler(voice_client_handle_type h_voice,
- QL_VoiceCall_CommonStateHandlerFunc_t handlerPtr);
-
-/* Remove callback function, won't receive any notify anymore */
-int QL_Voice_Call_RemoveCommonStateHandler(voice_client_handle_type h_voice);
-
-
-/* Start call and return call_id, this can be used in the later */
-int QL_Voice_Call_Start(voice_client_handle_type h_voice,
- E_QL_VCALL_ID_T simId,
- char* phone_number, ///< [IN] Destination identifier for the voice
- int *call_id); ///< [OUT] call id
-
-/* End call of call_id, which returned by QL_Voice_Call_Start or callback func register via QL_Voice_Call_AddStateHandler */
-int QL_Voice_Call_End( voice_client_handle_type h_voice,
- int call_id); ///< [IN] call id, return by QL_Voice_Start
-
-/* Answer the call of call_id, which returned by callback func register via QL_Voice_Call_AddStateHandler */
-int QL_Voice_Call_Answer(voice_client_handle_type h_voice,
- int call_id );
-
-int QL_Voice_Call_Hold( voice_client_handle_type h_voice);
-
-int QL_Voice_Call_UnHold( voice_client_handle_type h_voice);
-
-int QL_Voice_Call_Conference( voice_client_handle_type h_voice);
-
-int QL_Voice_Call_EndConference( voice_client_handle_type h_voice);
-
-int QL_Voice_Call_Ecall(voice_client_handle_type h_voice,
- E_QL_VCALL_ID_T simId,
- char* phone_number,
- ql_mcm_ecall_info ecall_info,
- int *call_id);
-
-
-int QL_Voice_Call_SetAutoAnswer(voice_client_handle_type h_voice,
- E_QL_MCM_VOICE_AUTO_ANSWER_T eAnswerType,
- uint32_t uAnswerTime);
-
-int QL_Voice_Call_Ecall_HangUp(voice_client_handle_type h_voice);
-
-int QL_Voice_Call_Ecall_UpdateMsd(voice_client_handle_type h_voice,const char *msd,uint32_t msd_len);
-
-//Ecall Push caommand
-int QL_Voice_Call_Ecall_MsdPush(voice_client_handle_type h_voice,
- E_QL_MCM_ECALL_STATE_T *ecall_state);
-
-//Get Ecall config info
-int QL_Voice_Call_Ecall_GetConfigInfo(voice_client_handle_type h_voice,
- ql_mcm_ecall_config_info *ecall_config);
-
-int QL_Voice_Call_Ecall_SetConfigInfo(voice_client_handle_type h_voice,
- E_QL_MCM_ECALL_CONFIG_T ecall_config_type,
- uint8_t value);
-
-
-
-//Cancel dial
-int QL_Voice_Call_CancelDial( voice_client_handle_type h_voice);
-
-//VTS API
-int QL_Voice_Call_Dtmf( voice_client_handle_type h_voice,uint8_t digit,int call_id);
-
-
-int QL_Voice_Call_GetCallStatus
-(
- int h_voice,
- int call_id, // If call_id<0, means to get all calls state, or get specified call_id info
- ql_mcm_voice_calls_state_t *pt_callstate
-);
-
-//Set forwarding
-int QL_Voice_Call_SetForwarding
-(
- int h_voice,
- E_QL_MCM_VOICE_CALL_SERVICE_T service,
- E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T reason,
- char *number
-);
-
-//Get forwarding status
-int QL_Voice_Call_GetForwardingStatus
-(
- int h_voice,
- E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T reason,
- ql_mcm_voice_call_forwarding_status_list_t *pt_status
-);
-
-//Set voice call waiting
-int QL_Voice_Call_SetWaiting
-(
- int h_voice,
- ql_mcm_voice_call_waiting_service_t e_service
-);
-
-//Get voice call waiting status
-int QL_Voice_Call_GetWaitingStatus
-(
- int h_voice,
- ql_mcm_voice_call_waiting_service_t *pe_service
-);
-
-
-/*
-Usage 1 (register callback and wait for new call in, then answer):
-1, QL_Voice_Call_Client_Init
-2, QL_Voice_Call_AddStateHandler(pf_cb)
-3, wait for new call arrive, pf_cb will pass the call_id to app.
-4, QL_Voice_Call_Answer(call_id)
-5, QL_Voice_Call_End
-6, QL_Voice_Call_Client_Deinit
-
-
-Usage 2 (call out):
-1, QL_Voice_Call_Client_Init
-2, QL_Voice_Call_AddStateHandler(pf_cb)
-3, QL_Voice_Call_Start
-4, QL_Voice_Call_End
-5, QL_Voice_Call_Client_Deinit
-
-
-*/
-
-
-#endif // __QL_MCM_VOICE_H__
diff --git a/mbtk/include/ql/ql_mcm_gnss.h b/mbtk/include/ql/ql_mcm_gnss.h
deleted file mode 100755
index b2ee20a..0000000
--- a/mbtk/include/ql/ql_mcm_gnss.h
+++ /dev/null
@@ -1,414 +0,0 @@
-#ifndef __QL_MCM_GPS_H__
-#define __QL_MCM_GPS_H__
-#include "mbtk_type.h"
-
-
-#define LOC_IND_LOCATION_INFO_ON (1 << 0)
-#define LOC_IND_STATUS_INFO_ON (1 << 1)
-#define LOC_IND_SV_INFO_ON (1 << 2)
-#define LOC_IND_NMEA_INFO_ON (1 << 3)
-#define LOC_IND_CAP_INFO_ON (1 << 4)
-#define LOC_IND_UTC_TIME_REQ_ON (1 << 5)
-#define LOC_IND_XTRA_DATA_REQ_ON (1 << 6)
-#define LOC_IND_AGPS_DATA_CONN_CMD_REQ_ON (1 << 7)
-#define LOC_IND_NI_NFY_USER_RESP_REQ_ON (1 << 8)
-
-typedef uint32 loc_client_handle_type;
-
-typedef enum
-{
- E_QL_LOC_POS_MODE_STANDALONE = 0, /**< Mode for running GPS standalone (no assistance). */
- E_QL_LOC_POS_MODE_MS_BASED = 1, /**< AGPS MS-Based mode. */
- E_QL_LOC_POS_MODE_MS_ASSISTED = 2, /**< AGPS MS-Assisted mode. */
-}E_QL_LOC_POS_MODE_T;
-
-typedef enum
-{
- E_QL_LOC_POS_RECURRENCE_PERIODIC = 0, /**< Receive GPS fixes on a recurring basis at a specified period. */
- E_QL_LOC_POS_RECURRENCE_SINGLE = 1, /**< Request a single-shot GPS fix. */
-}E_QL_LOC_POS_RECURRENCE_T;
-
-typedef struct
-{
- E_QL_LOC_POS_MODE_T mode; /* Position mode. */
- E_QL_LOC_POS_RECURRENCE_T recurrence; /* Recurrence */
- uint32_t min_interval; /* Minimum Interval, NMEA report frequency, 1000 means 1Hz, 100 means 10Hz */
- uint32_t preferred_accuracy; /* Preferred Accuracy , 30m or more, the less it takes longer timer. */
- uint32_t preferred_time; /* Preferred Time, first cold-boot may take 100s or more, hot boot may take 2s */
-}QL_LOC_POS_MODE_INFO_T;
-
-typedef enum
-{
- E_QL_LOC_LOCATION_LAT_LONG_VALID = 0x0001, /**< GPS location has valid latitude and longitude. */
- E_QL_LOC_LOCATION_ALTITUDE_VALID = 0x0002, /**< GPS location has a valid altitude. */
- E_QL_LOC_LOCATION_SPEED_VALID = 0x0004, /**< GPS location has a valid speed. */
- E_QL_LOC_LOCATION_BEARING_VALID = 0x0008, /**< GPS location has a valid bearing. */
- E_QL_LOC_LOCATION_ACCURACY_VALID = 0x0010, /**< GPS location has valid accuracy. */
- E_QL_LOC_LOCATION_SOURCE_INFO_VALID= 0x0020, /**< GPS location has valid source information. */
- E_QL_LOC_LOCATION_IS_INDOOR_VALID = 0x0040, /**< GPS location has a valid "is indoor?" flag. */
- E_QL_LOC_LOCATION_FLOOR_NUMBE_VALID= 0x0080, /**< GPS location has a valid floor number. */
- E_QL_LOC_LOCATION_MAP_URL_VALID = 0x0100, /**< GPS location has a valid map URL. */
- E_QL_LOC_LOCATION_MAP_INDEX_VALID = 0x0200, /**< GPS location has a valid map index. */
-}E_QL_LOC_LOCATION_VALID_FLAG;
-
-typedef enum
-{
- E_QL_LOC_ULP_LOCATION_SOURCE_HYBRID= 0x0001, /**< Position source is ULP. */
- E_QL_LOC_ULP_LOCATION_SOURCE_GNSS = 0x0002, /**< Position source is GNSS only. */
-}E_QL_LOC_ULP_LOCATION_SOURCE;
-
-#define QL_LOC_GPS_RAW_DATA_LEN_MAX 256 /** Raw data maximum size. */
-#define QL_LOC_GPS_LOCATION_MAP_URL_SIZE 399 /** Location map URL maximum size (used for indoor positioning). */
-#define QL_LOC_GPS_LOCATION_MAP_IDX_SIZE 16 /** Location map index maximum size (used for indoor positioning). */
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_location_t. */
- E_QL_LOC_LOCATION_VALID_FLAG flags; /**< Contains GPS location flags bits. */
- E_QL_LOC_ULP_LOCATION_SOURCE position_source; /**< Provider indicator for HYBRID or GPS. */
- double latitude; /**< Latitude in degrees. */
- double longitude; /**< Longitude in degrees. */
- double altitude; /**< Altitude in meters above the WGS 84 reference ellipsoid. */
- float speed; /**< Speed in meters per second. */
- float bearing; /**< Heading in degrees. */
- float accuracy; /**< Expected accuracy in meters. */
- int64_t timestamp; /**< Timestamp for the location fix in UTC million-second base. */
- int32_t is_indoor; /**< Location is indoors. */
- float floor_number; /**< Indicates the floor number. */
- uint32_t raw_data_len; /**< Must be set to # of elements in raw_data */
- uint8_t raw_data[QL_LOC_GPS_RAW_DATA_LEN_MAX]; /**< Allows the HAL to pass additional information related to the location. */
- char map_url[QL_LOC_GPS_LOCATION_MAP_URL_SIZE + 1]; /**< Map URL. */
- uint8_t map_index[QL_LOC_GPS_LOCATION_MAP_IDX_SIZE]; /**< Map index. */
-}QL_LOC_LOCATION_INFO_T; /* Type */
-
-typedef enum
-{
- E_QL_LOC_STATUS_NONE = 0, /**< GPS status unknown. */
- E_QL_LOC_STATUS_SESSION_BEGIN = 1, /**< GPS has begun navigating. */
- E_QL_LOC_STATUS_SESSION_END = 2, /**< GPS has stopped navigating. */
- E_QL_LOC_STATUS_ENGINE_ON = 3, /**< GPS has powered on but is not navigating. */
- E_QL_LOC_STATUS_ENGINE_OFF = 4, /**< GPS is powered off. */
-}E_QL_LOC_STATUS_VALUE_T;
-
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_sv_info_t. */
- int prn; /**< Pseudo-random number for the SV. */
- float snr; /**< Signal-to-noise ratio. */
- float elevation; /**< Elevation of the SV in degrees. */
- float azimuth; /**< Azimuth of the SV in degrees. */
-}QL_LOC_SV_INFO_T; /* Type */
-
-#define QL_LOC_GPS_SUPPORT_SVS_MAX 32 /** Maximum number of satellites in view. */
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_sv_status_t. */
- int num_svs; /**< Number of SVs currently visible. */
- QL_LOC_SV_INFO_T sv_list[QL_LOC_GPS_SUPPORT_SVS_MAX]; /**< Contains an array of SV information. */
- uint32_t ephemeris_mask; /**< Bitmask indicating which SVs have ephemeris data. */
- uint32_t almanac_mask; /**< Bitmask indicating which SVs have almanac data. */
- uint32_t used_in_fix_mask; /**< Bitmask indicating which SVs were used for computing the most recent position fix. */
-}QL_LOC_SV_STATUS_T; /* Type */
-
-
-#define QL_LOC_NMEA_MAX_LENGTH 255 /** NMEA string maximum length. */
-typedef struct
-{
- int64_t timestamp; /**< System Timestamp, marked for when got the nmea data */
- int length; /**< NMEA string length. */
- char nmea[QL_LOC_NMEA_MAX_LENGTH + 1]; /**< NMEA string.*/
-}QL_LOC_NMEA_INFO_T; /* Message */
-
-typedef enum
-{
- E_QL_LOC_CAPABILITY_SCHEDULING = 0x01, /**< GPS HAL schedules fixes for GPS_POSITION_RECURRENCE_PERIODIC mode.
- If this is not set, the framework uses \n 1000 ms for min_interval
- and will call start() and stop() to schedule the GPS. */
- E_QL_LOC_CAPABILITY_MSB = 0x02, /**< GPS supports MS-Based AGPS mode. */
- E_QL_LOC_CAPABILITY_MSA = 0x04, /**< GPS supports MS-Assisted AGPS mode. */
- E_QL_LOC_CAPABILITY_SINGLE_SHOT = 0x08, /**< GPS supports single-shot fixes. */
- E_QL_LOC_CAPABILITY_ON_DEMAND_TIME = 0x10, /**< GPS supports on-demand time injection. */
-}E_QL_LOC_CAPABILITIES_T;
-
-
-#define QL_LOC_GPS_SSID_BUF_SIZE 32 /** Maximum SSID (Service Set Identifier) buffer size. */
-#define QL_LOC_IPV6_ADDR_LEN 16 /** IPv6 address length. */
-typedef enum
-{
- E_QL_LOC_AGPS_TYPE_INVALID = -1, /**< Invalid. */
- E_QL_LOC_AGPS_TYPE_ANY = 0, /**< Any. */
- E_QL_LOC_AGPS_TYPE_SUPL = 1, /**< SUPL. */
- E_QL_LOC_AGPS_TYPE_C2K = 2, /**< C2K. */
- E_QL_LOC_AGPS_TYPE_WWAN_ANY = 3, /**< WWAN any. */
- E_QL_LOC_AGPS_TYPE_WIFI = 4, /**< Wi-Fi. */
- E_QL_LOC_AGPS_TYPE_SUPL_ES = 5, /**< SUPL_ES. */
-}E_QL_LOC_AGPS_TYPE_T;
-
-typedef enum
-{
- E_QL_LOC_REQUEST_AGPS_DATA_CONN = 1, /**< GPS requests a data connection for AGPS. */
- E_QL_LOC_RELEASE_AGPS_DATA_CONN = 2, /**< GPS releases the AGPS data connection. */
- E_QL_LOC_AGPS_DATA_CONNECTED = 3, /**< AGPS data connection is initiated */
- E_QL_LOC_AGPS_DATA_CONN_DONE = 4, /**< AGPS data connection is completed. */
- E_QL_LOC_AGPS_DATA_CONN_FAILED = 5, /**< AGPS data connection failed. */
-}E_QL_LOC_AGPS_STATUS_VALUE_T;
-
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_agps_status_t. */
- E_QL_LOC_AGPS_TYPE_T type; /**< Type. */
- E_QL_LOC_AGPS_STATUS_VALUE_T status; /**< Status. */
- int ipv4_addr; /**< IPv4 address. */
- char ipv6_addr[QL_LOC_IPV6_ADDR_LEN + 1]; /**< IPv6 address. */
- char ssid[QL_LOC_GPS_SSID_BUF_SIZE + 1]; /**< SSID. */
- char password[QL_LOC_GPS_SSID_BUF_SIZE + 1]; /**< Password. */
-}QL_LOC_AGPS_STATUS_T;
-
-
-#define QL_LOC_NI_SHORT_STRING_MAXLEN 255 /** NI short string maximum length. */
-#define QL_LOC_NI_LONG_STRING_MAXLEN 2047 /** NI long string maximum length. */
-typedef enum
-{
- E_QL_LOC_NI_TYPE_VOICE = 1, /**< Voice. */
- E_QL_LOC_NI_TYPE_UMTS_SUPL = 2, /**< UMTS SUPL. */
- E_QL_LOC_NI_TYPE_UMTS_CTRL_PLANE= 3, /**< UMTS control plane. */
-}E_QL_LOC_NI_TYPE_T;
-
-typedef enum
-{
- E_QL_LOC_NI_NEED_NOTIFY = 0x0001, /**< NI requires notification. */
- E_QL_LOC_NI_NEED_VERIFY = 0x0002, /**< NI requires verification. */
- E_QL_LOC_NI_PRIVACY_OVERRIDE = 0x0004, /**< NI requires privacy override; no notification/minimal trace. */
-}E_QL_LOC_NI_NOTIFY_FLAGS_T;
-
-typedef enum
-{
- E_QL_LOC_NI_RESPONSE_ACCEPT = 1, /**< Accept. */
- E_QL_LOC_NI_RESPONSE_DENY = 2, /**< Deny. */
- E_QL_LOC_NI_RESPONSE_NORESP = 3, /**< No response. */
-}E_QL_LOC_NI_USER_RESPONSE_TYPE_T;
-
-typedef enum
-{
- E_QL_LOC_NI_ENC_NONE = 0, /**< None. */
- E_QL_LOC_NI_ENC_SUPL_GSM_DEFAULT= 1, /**< SUPL GSM default. */
- E_QL_LOC_NI_ENC_SUPL_UTF8 = 2, /**< SUPL UTF8. */
- E_QL_LOC_NI_ENC_SUPL_UCS2 = 3, /**< SUPL UCS2. */
- E_QL_LOC_NI_ENC_UNKNOWN = -1, /**< Unknown. */
-}E_QL_LOC_NI_ENC_TYPE_T;
-
-typedef struct
-{
- uint32_t size; /**< Set to the size of mcm_gps_ni_notification_t. */
- int notification_id; /**< An ID generated by the HAL to associate NI notifications and UI responses. */
- E_QL_LOC_NI_TYPE_T ni_type; /**< An NI type used to distinguish different categories of NI events, such as GPS_NI_TYPE_VOICE, GPS_NI_TYPE_UMTS_SUPL, etc. */
- E_QL_LOC_NI_NOTIFY_FLAGS_T notify_flags; /**< Notification/verification options; combinations of GpsNiNotifyFlags constants. */
- int timeout; /**< Timeout period to wait for a user response. Set to 0 for no timeout limit. */
- E_QL_LOC_NI_USER_RESPONSE_TYPE_T default_response; /**< Default response when the response times out. */
- char requestor_id[QL_LOC_NI_SHORT_STRING_MAXLEN + 1]; /**< Requestor ID. */
- char text[QL_LOC_NI_LONG_STRING_MAXLEN + 1]; /**< Notification message. It can also be used to store the client ID in some cases. */
- E_QL_LOC_NI_ENC_TYPE_T requestor_id_encoding; /**< Client ID encoding scheme. */
- E_QL_LOC_NI_ENC_TYPE_T text_encoding; /**< Client name encoding scheme. */
- char extras[QL_LOC_NI_LONG_STRING_MAXLEN + 1]; /**< Pointer to extra data. Format:\n- key_1 = value_1, - key_2 = value_2 @tablebulletend */
-}QL_LOC_NI_NOTIFICATION_INTO_T;
-
-#define QL_LOC_MAX_SEVER_ADDR_LENGTH 255 /** Maximum generic server address length for the host name. */
-typedef struct
-{/** Indication Message; Indication with the reported XTRA server URLs. */
- char server1[QL_LOC_MAX_SEVER_ADDR_LENGTH + 1]; /**< server1.*/
- char server2[QL_LOC_MAX_SEVER_ADDR_LENGTH + 1]; /**< server2.*/
- char server3[QL_LOC_MAX_SEVER_ADDR_LENGTH + 1]; /**< server3.*/
-}QL_LOC_XTRA_REPORT_SERVER_INTO_T;
-
-typedef enum
-{
- E_QL_LOC_NFY_MSG_ID_STATUS_INFO = 0, /**< pv_data = &E_QL_LOC_STATUS_VALUE_T */
- E_QL_LOC_NFY_MSG_ID_LOCATION_INFO, /**< pv_data = &QL_LOC_LOCATION_INFO_T */
- E_QL_LOC_NFY_MSG_ID_SV_INFO, /**< pv_data = &QL_LOC_SV_STATUS_T */
- E_QL_LOC_NFY_MSG_ID_NMEA_INFO, /**< pv_data = &QL_LOC_NMEA_INFO_T */
- E_QL_LOC_NFY_MSG_ID_CAPABILITIES_INFO, /**< pv_data = &E_QL_LOC_CAPABILITIES_T */
- E_QL_LOC_NFY_MSG_ID_AGPS_STATUS, /**< pv_data = &QL_LOC_AGPS_STATUS_T */
- E_QL_LOC_NFY_MSG_ID_NI_NOTIFICATION, /**< pv_data = &QL_LOC_NI_NOTIFICATION_INTO_T */
- E_QL_LOC_NFY_MSG_ID_XTRA_REPORT_SERVER, /**< pv_data = &QL_LOC_XTRA_REPORT_SERVER_INTO_T */
-}E_QL_LOC_NFY_MSG_ID_T;
-
-/* callback function register to QL_LOC_AddRxIndMsgHandler
- e_msg_id: which kind of msg can be received depend on the bit_mask set in QL_LOC_Set_Indications;
- pv_data: depend on the e_msg_id type.
-*/
-typedef void (*QL_LOC_RxIndMsgHandlerFunc_t)
-(
- loc_client_handle_type h_loc,
- E_QL_LOC_NFY_MSG_ID_T e_msg_id,
- void *pv_data,
- void *contextPtr
-);
-
-typedef enum
-{
- E_QL_LOC_DELETE_EPHEMERIS = (1 << 0), /**< Delete ephemeris data. */
- E_QL_LOC_DELETE_ALMANAC = (1 << 1), /**< Delete almanac data. */
- E_QL_LOC_DELETE_POSITION = (1 << 2), /**< Delete position data. */
- E_QL_LOC_DELETE_TIME = (1 << 3), /**< Delete time data. */
- E_QL_LOC_DELETE_IONO = (1 << 4), /**< Delete IONO data. */
- E_QL_LOC_DELETE_UTC = (1 << 5), /**< Delete UTC data. */
- E_QL_LOC_DELETE_HEALTH = (1 << 6), /**< Delete health data. */
- E_QL_LOC_DELETE_SVDIR = (1 << 7), /**< Delete SVDIR data. */
- E_QL_LOC_DELETE_SVSTEER = (1 << 8), /**< Delete SVSTEER data. */
- E_QL_LOC_DELETE_SADATA = (1 << 9), /**< Delete SA data. */
- E_QL_LOC_DELETE_RTI = (1 << 10), /**< Delete RTI data. */
- E_QL_LOC_DELETE_CELLDB_INFO = (1 << 11), /**< Delete cell DB information. */
- E_QL_LOC_DELETE_ALMANAC_CORR = (1 << 12), /**< Delete almanac correction data. */
- E_QL_LOC_DELETE_FREQ_BIAS_EST = (1 << 13), /**< Delete frequency bias estimate. */
- E_QL_LOC_DELETE_EPHEMERIS_GLO = (1 << 14), /**< Delete ephemeris GLO data. */
- E_QL_LOC_DELETE_ALMANAC_GLO = (1 << 15), /**< Delete almanac GLO data. */
- E_QL_LOC_DELETE_SVDIR_GLO = (1 << 16), /**< Delete SVDIR GLO data. */
- E_QL_LOC_DELETE_SVSTEER_GLO = (1 << 17), /**< Delete SVSTEER GLO data. */
- E_QL_LOC_DELETE_ALMANAC_CORR_GLO= (1 << 18), /**< Delete almanac correction GLO data. */
- E_QL_LOC_DELETE_TIME_GPS = (1 << 19), /**< Delete time GPS data. */
- E_QL_LOC_DELETE_TIME_GLO = (1 << 20), /**< Delete time GLO data. */
- E_QL_LOC_DELETE_ALL = 0xFFFFFFFF, /**< Delete all location data. */
-}E_QL_LOC_DELETE_AIDING_DATA_TYPE_T;
-
-typedef struct
-{
- int64_t time; /**< Inject time.*/
- int64_t time_reference; /**< Time reference.*/
- int32_t uncertainty; /**< Uncertainty.*/
-}QL_LOC_INJECT_TIME_INTO_T; /* Message */
-
-typedef struct
-{
- double latitude; /**< Latitude.*/
- double longitude; /**< Longitude.*/
- float accuracy; /**< Accuracy.*/
-}QL_LOC_INJECT_LOCATION_INTO_T;
-
-typedef enum
-{
- E_QL_LOC_AGPS_APN_BEARER_INVALID= -1, /**< Invalid. */
- E_QL_LOC_AGPS_APN_BEARER_IPV4 = 0, /**< IPv4. */
- E_QL_LOC_AGPS_APN_BEARER_IPV6 = 1, /**< IPv6. */
- E_QL_LOC_AGPS_APN_BEARER_IPV4V6 = 2, /**< IPv4/v6. */
-}E_QL_LOC_AGPS_APN_BEARER_TYPE_T;
-
-#define QL_LOC_APN_NAME_LENGTH_MAX 100
-typedef struct
-{
- E_QL_LOC_AGPS_TYPE_T e_agps_type; /**< AGPS type.*/
- char apn[QL_LOC_APN_NAME_LENGTH_MAX + 1];/**< APN.*/
- E_QL_LOC_AGPS_APN_BEARER_TYPE_T e_bearer_type; /**< Bearer type.*/
-}QL_LOC_AGPS_DATA_CONN_OPEN_INTO_T;
-
-#define QL_LOC_SEVER_ADDR_LENGTH_MAX 255
-typedef struct
-{
- E_QL_LOC_AGPS_TYPE_T e_agps_type; /**< AGPS type.*/
- char host_name[QL_LOC_SEVER_ADDR_LENGTH_MAX + 1];/**< Host name.*/
- uint32_t port; /**< Port.*/
-}QL_LOC_AGPS_SERVER_INTO_T;
-
-typedef struct
-{
- int32_t notify_id; /**< Notification ID.*/
- E_QL_LOC_NI_USER_RESPONSE_TYPE_T user_resp; /**< User response.*/
-}QL_LOC_NI_RESPONSE_INTO_T;
-
-
-
-/* Add callback function if anything changed specified by the mask in QL_LOC_Set_Indications*/
-int QL_LOC_AddRxIndMsgHandler(QL_LOC_RxIndMsgHandlerFunc_t handlerPtr, void* contextPtr);
-
-/* Set what we want callbacks for, for the detail mean of bit_mask, please refer to the macro of LOC_IND_xxxxx_INFO_ON */
-int QL_LOC_Set_Indications(loc_client_handle_type h_loc, int bit_mask);
-
-/* Set GPS position mode, detail info please refer to QL_LOC_POS_MODE_INFO_T */
-int QL_LOC_Set_Position_Mode(loc_client_handle_type h_loc, QL_LOC_POS_MODE_INFO_T *pt_mode);
-
-/* Start navigation, same as AT+QGPS=1, NMEA port start outputing nmea data */
-int QL_LOC_Start_Navigation(loc_client_handle_type h_loc);
-
-/* Stop navigation, same as AT+QGPSEND, NMEA port stop outputing nmea data */
-int QL_LOC_Stop_Navigation(loc_client_handle_type h_loc);
-
-/* Set up GPS connection and start getting coordinates , this api will call QL_LOC_Start_Navigation inside first,
- then wait for LOC_IND_LOCATION_INFO_ON event happen, if timeout, it will use last time stored loc_info.
- If got this event, location infor will save to pt_loc_info and call QL_LOC_Stop_Navigation stop and exit. */
-int QL_LOC_Get_Current_Location(loc_client_handle_type h_loc, QL_LOC_LOCATION_INFO_T *pt_loc_info, int timeout_sec);
-
-/* Init LOC module and return the h_loc, this should be called before any other QL_LOC_xxx api. */
-int QL_LOC_Client_Init(loc_client_handle_type *ph_loc);
-
-/* DeInit LOC module and release resource, this should be called at last. */
-int QL_LOC_Client_Deinit(loc_client_handle_type h_loc);
-
-/* Deletes location-aiding data. */
-int QL_LOC_Delete_Aiding_Data( loc_client_handle_type h_loc,
- E_QL_LOC_DELETE_AIDING_DATA_TYPE_T flags);
-
-/* Injects time. */
-int QL_LOC_InjectTime( loc_client_handle_type h_loc,
- QL_LOC_INJECT_TIME_INTO_T *pt_info);
-
-/* Injects Location. */
-int QL_LOC_InjectLocation( loc_client_handle_type h_loc,
- QL_LOC_INJECT_LOCATION_INTO_T *pt_info);
-
-/** Injects XTRA data.
- Since the IPC mechanism puts a limit on the size of the data transferable in one message at 64 KB,
- the application using this command must break the data down into chunks of a smaller size and repeatedly
- call this API until all the data has been injected. */
-int QL_LOC_Xtra_InjectData(loc_client_handle_type h_loc,
- char *data,
- int length); // QL_LOC_XTRA_FILE_DATA_SIZE_MAX
-
-#define QL_LOC_XTRA_FILE_DATA_SIZE_MAX 0xFC00
-/* Injects xtra data via file name. */
-int QL_LOC_Xtra_InjectFile( loc_client_handle_type h_loc,
- char *filename);
-
-/** Indicates that the AGPS data connection is open. */
-int QL_LOC_Agps_DataConnOpen( loc_client_handle_type h_loc,
- QL_LOC_AGPS_DATA_CONN_OPEN_INTO_T *pt_info);
-
-/** Indicates that the AGPS data connection is closed. */
-int QL_LOC_Agps_DataConnClose(loc_client_handle_type h_loc,
- E_QL_LOC_AGPS_TYPE_T atype);
-
-/** Indicates that the AGPS data connection failed to start. */
-int QL_LOC_Agps_NfyDataConnFailed(loc_client_handle_type h_loc,
- E_QL_LOC_AGPS_TYPE_T atype);
-
-/** Set AGPS server infor. */
-int QL_LOC_Agps_SetServer(loc_client_handle_type h_loc,
- QL_LOC_AGPS_SERVER_INTO_T *pt_info);
-
-/** Sends a user response for NI. */
-int QL_LOC_NI_SetResponse(loc_client_handle_type h_loc,
- QL_LOC_NI_RESPONSE_INTO_T *pt_info);
-
-/** Updates the network availability status. */
-int QL_LOC_Agps_UpdateNWAvailability(loc_client_handle_type h_loc,
- int available,
- const char *apn);
-
-/*
-Usage 1 (Normally use):
-1, QL_LOC_Client_Init
-2, QL_LOC_AddRxIndMsgHandler(pf_cb)
-3, QL_LOC_Set_Indications
-4, QL_LOC_Start_Navigation
-5, handle the events in pf_cb
-6, QL_LOC_Stop_Navigation
-7, QL_LOC_Client_Deinit
-
-
-Usage 2 (Just get position once):
-1, QL_LOC_Client_Init
-2, QL_LOC_AddRxIndMsgHandler(pf_cb) ---- This can be omitted!
-3, QL_LOC_Set_Indications, set bit_mask=LOC_IND_LOCATION_INFO_ON
-4, QL_LOC_Get_Current_Location, if not timeout, it will return current position infor or use last stored one.
-7, QL_LOC_Client_Deinit
-*/
-
-#endif // __QL_MCM_GPS_H__
-
diff --git a/mbtk/include/ql/ql_mcm_nw.h b/mbtk/include/ql/ql_mcm_nw.h
deleted file mode 100755
index 3ec6d62..0000000
--- a/mbtk/include/ql/ql_mcm_nw.h
+++ /dev/null
@@ -1,467 +0,0 @@
-/**
- *@file ql_mcm_nw.h
- *@date 2018-02-22
- *@author
- *@brief
- */
-#ifndef __QL_MCM_NW_H__
-#define __QL_MCM_NW_H__
-#include "ql_mcm.h"
-#include "mbtk_type.h"
-
-typedef uint32 nw_client_handle_type;
-
-
-#define QL_MCM_NW_MODE_NONE 0x00 /**< No network. */
-#define QL_MCM_NW_MODE_GSM 0x01 /**< Include GSM networks. */
-#define QL_MCM_NW_MODE_WCDMA 0x02 /**< Include WCDMA networks. */
-#define QL_MCM_NW_MODE_CDMA 0x04 /**< Include CDMA networks. */
-#define QL_MCM_NW_MODE_EVDO 0x08 /**< Include EVDO networks. */
-#define QL_MCM_NW_MODE_LTE 0x10 /**< Include LTE networks. */
-#define QL_MCM_NW_MODE_TDSCDMA 0x20 /**< Include TDSCDMA networks. */
-#define QL_MCM_NW_MODE_PRL 0x10000 /**< Give preference according to the preferred roaming list. */
-
-typedef enum
-{
- E_QL_MCM_NW_ROAM_STATE_OFF = 0, /**< None, or roaming indicator off. */
- E_QL_MCM_NW_ROAM_STATE_ON = 1 /**< Roaming indicator on. */
-}E_QL_MCM_NW_ROAM_STATE_TYPE_T;
-
-/** Configures the settings that define the MCM network interface. */
-typedef struct
-{
- /* Configuration parameters for MCM network registration Network registration details Technology dependent network registration details */
- uint64_t preferred_nw_mode; /**< Preferred network mode for connections; a bitmask of QL_MCM_NW_MODE_xxxx.*/
- E_QL_MCM_NW_ROAM_STATE_TYPE_T roaming_pref; /**< Roaming preference.*/
-}QL_MCM_NW_CONFIG_INFO_T;
-
-#define QL_MCM_NW_NITZ_BUF_LEN 30
-/** Get NITZ Time information. */
-typedef struct
-{
- //i.e.: nitz_time="18/09/19,07:40:18+32,00" format: YY/MM/DD,HH:MM:SS'+/-'TZ,daylight, Here TZ multiplied by 4.
- char nitz_time[QL_MCM_NW_NITZ_BUF_LEN + 1];
- uint64_t abs_time; // 0 means invalid
- int8_t leap_sec; // 0 means invalid
-}QL_MCM_NW_NITZ_TIME_INFO_T;
-
-
-//defined for QL_MCM_NW_EventRegister
-#define NW_IND_VOICE_REG_EVENT_IND_FLAG (1 << 0) /**< msg format : QL_MCM_NW_VOICE_REG_EVENT_IND_T */
-#define NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) /**< msg format : QL_MCM_NW_DATA_REG_EVENT_IND_T */
-#define NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) /**< msg format : QL_MCM_NW_SINGNAL_EVENT_IND_T */
-#define NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG (1 << 3) /**< msg format : QL_MCM_NW_CELL_ACCESS_STATE_EVENT_IND_T */
-#define NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG (1 << 4) /**< msg format : QL_MCM_NW_NITZ_TIME_EVENT_IND_T */
-
-
-
-typedef struct
-{
- char long_eons[512 + 1]; /**< Long EONS.*/
- char short_eons[512 + 1]; /**< Short EONS.*/
- char mcc[3 + 1]; /**< Mobile country code.*/
- char mnc[3 + 1]; /**< Mobile network code.*/
-}QL_MCM_NW_OPERATOR_NAME_INFO_T;
-
-typedef enum
-{
- E_QL_MCM_NW_NETWORK_STATUS_NONE = 0, /**< Network status not available. */
- E_QL_MCM_NW_NETWORK_STATUS_CURRENT_SERVING = 1, /**< Current serving network. */
- E_QL_MCM_NW_NETWORK_STATUS_PREFERRED = 2, /**< Preferred network. */
- E_QL_MCM_NW_NETWORK_STATUS_NOT_PREFERRED = 3, /**< Not the preferred network. */
- E_QL_MCM_NW_NETWORK_STATUS_AVAILABLE = 4, /**< Service available. */
- E_QL_MCM_NW_NETWORK_STATUS_FORBIDDEN = 5 /**< Forbidden service. */
-}E_QL_MCM_NW_NETWORK_STATUS_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_NW_RADIO_TECH_TD_SCDMA = 1,
- E_QL_MCM_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */
- E_QL_MCM_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */
- E_QL_MCM_NW_RADIO_TECH_LTE = 4, /**< LTE. */
- E_QL_MCM_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */
- E_QL_MCM_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */
- E_QL_MCM_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */
- E_QL_MCM_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */
- E_QL_MCM_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */
- E_QL_MCM_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */
- E_QL_MCM_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */
- E_QL_MCM_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */
- E_QL_MCM_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */
- E_QL_MCM_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */
- E_QL_MCM_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */
- E_QL_MCM_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */
- E_QL_MCM_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */
- E_QL_MCM_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
-}E_QL_MCM_NW_RADIO_TECH_TYPE_T;
-
-typedef struct
-{
- QL_MCM_NW_OPERATOR_NAME_INFO_T operator_name; /**< Operator name.*/
- E_QL_MCM_NW_NETWORK_STATUS_TYPE_T network_status; /**< Network status.*/
- E_QL_MCM_NW_RADIO_TECH_TYPE_T rat; /**< Radio technology.*/
-}QL_MCM_NW_SCAN_ENTRY_INFO_T; /* Type */
-
-#define QL_MCM_NW_SCAN_LIST_MAX 40
-/** Gets the status associated with the connection of \<id\>. */
-typedef struct
-{
- uint32_t entry_len; /**< Must be set to the number of elements in entry. */
- QL_MCM_NW_SCAN_ENTRY_INFO_T entry[QL_MCM_NW_SCAN_LIST_MAX]; /**< Scan entry.*/
-}QL_MCM_NW_SCAN_RESULT_LIST_INFO_T; /* Message */
-
-
-typedef enum
-{
- E_QL_MCM_NW_TECH_DOMAIN_NONE = 0, /**< None. */
- E_QL_MCM_NW_TECH_DOMAIN_3GPP = 1, /**< 3GPP. */
- E_QL_MCM_NW_TECH_DOMAIN_3GPP2 = 2, /**< 3GPP2. */
-}E_QL_MCM_NW_TECH_DOMAIN_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_NW_IMSI_UNKNOWN_HLR_DENY_REASON = 1, /**< IMSI unknown in HLR. */
- E_QL_MCM_NW_ILLEGAL_MS_DENY_REASON = 2, /**< Illegal MS. */
- E_QL_MCM_NW_IMSI_UNKNOWN_VLR_DENY_REASON = 3, /**< IMSI unknown in VLR. */
- E_QL_MCM_NW_IMEI_NOT_ACCEPTED_DENY_REASON = 4, /**< IMEI not accepted. */
- E_QL_MCM_NW_ILLEGAL_ME_DENY_REASON = 5, /**< Illegal ME. */
- E_QL_MCM_NW_PLMN_NOT_ALLOWED_DENY_REASON = 6, /**< PLMN not allowed. */
- E_QL_MCM_NW_LA_NOT_ALLOWED_DENY_REASON = 7, /**< Location area not allowed. */
- E_QL_MCM_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON = 8, /**< Roaming not allowed in this location area. */
- E_QL_MCM_NW_NO_SUITABLE_CELLS_LA_DENY_REASON = 9, /**< No suitable cells in location area. */
- E_QL_MCM_NW_NETWORK_FAILURE_DENY_REASON = 10, /**< Network failure. */
- E_QL_MCM_NW_MAC_FAILURE_DENY_REASON = 11, /**< MAC failure. */
- E_QL_MCM_NW_SYNCH_FAILURE_DENY_REASON = 12, /**< Sync failure. */
- E_QL_MCM_NW_CONGESTION_DENY_REASON = 13, /**< Congestion. */
- E_QL_MCM_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON = 14, /**< GSM authentication unacceptable. */
- E_QL_MCM_NW_NOT_AUTHORIZED_CSG_DENY_REASON = 15, /**< Not authorized in this CSG. */
- E_QL_MCM_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON = 16, /**< Service option not supported. */
- E_QL_MCM_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON = 17, /**< Requested service option not subscribed. */
- E_QL_MCM_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON = 18, /**< Call cannot be identified. */
- E_QL_MCM_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON = 19, /**< Semantically incorrect message. */
- E_QL_MCM_NW_INVALID_MANDATORY_INFO_DENY_REASON = 20, /**< Invalid mandatory information. */
- E_QL_MCM_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON = 21, /**< Message type non-existent or not implemented. */
- E_QL_MCM_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON = 22, /**< Message type not compatible with the protocol state. */
- E_QL_MCM_NW_CONDITIONAL_IE_ERR_DENY_REASON = 23, /**< Conditional IE error. */
- E_QL_MCM_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON = 24, /**< Message not compatible with the protocol state. */
- E_QL_MCM_NW_PROTOCOL_ERROR_DENY_REASON = 25, /**< Unspecified protocol error. */
-}E_QL_MCM_NW_DENY_REASON_TYPE_T;
-
-
-typedef enum
-{
- E_QL_MCM_NW_SERVICE_NONE = 0x0000, /**< Not registered or no data. */
- E_QL_MCM_NW_SERVICE_LIMITED = 0x0001, /**< Registered; emergency service only. */
- E_QL_MCM_NW_SERVICE_FULL = 0x0002, /**< Registered, full service. */
-}E_QL_MCM_NW_SERVICE_TYPE_T;
-
-typedef struct
-{
- E_QL_MCM_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type mcm_tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QL_MCM_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #mcm_nw_radio_tech_t_v01.*/
- E_QL_MCM_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
- E_QL_MCM_NW_DENY_REASON_TYPE_T deny_reason; /**< Set when registration state is #mcm_nw_deny_reason_t_v01.*/
- E_QL_MCM_NW_SERVICE_TYPE_T registration_state; /**< Registration state.*/
-}QL_MCM_NW_COMMON_REG_INFO_T;
-
-
-typedef struct
-{
- E_QL_MCM_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type mcm_tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QL_MCM_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #mcm_nw_radio_tech_t_v01.*/
- char mcc[3+1]; /**< Mobile country code.*/
- char mnc[3+1]; /**< Mobile network code.*/
- E_QL_MCM_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
- uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
- uint32_t cid; /**< Cell ID for the registered 3GPP system.*/
- uint16_t lac; /**< Locatin area code for the registered 3GPP system.*/
- uint16_t psc; /**< Primary scrambling code (WCDMA only); 0 -- None.*/
- uint16_t tac; /**< Tracking area code information for LTE.*/
-}QL_MCM_NW_3GPP_REG_INFO_T;
-
-
-typedef struct
-{
- E_QL_MCM_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine structure type mcm_tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QL_MCM_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #mcm_nw_radio_tech_t_v01.*/
- char mcc[3+1]; /**< Mobile country code.*/
- char mnc[3+1]; /**< Mobile network code.*/
- E_QL_MCM_NW_ROAM_STATE_TYPE_T roaming; /**< Roaming status; see #mcm_nw_roam_state_t_v01.*/
- uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
- uint8_t inPRL; /**< 0 -- Not in PRL, 1 -- In PRL.*/
- uint8_t css; /**< Concurrent services supported: 0 -- No, 1 -- Yes.*/
- uint16_t sid; /**< CDMA system ID.*/
- uint16_t nid; /**< CDMA network ID.*/
- uint16_t bsid; /**< Base station ID. @newpagetable */
-}QL_MCM_NW_3GPP2_REG_INFO_T;
-
-/** Gets the status associated with the connection of \<id\>. */
-typedef struct
-{
- uint8_t voice_registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
- QL_MCM_NW_COMMON_REG_INFO_T voice_registration; /**< Voice registration. */
-
- uint8_t data_registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
- QL_MCM_NW_COMMON_REG_INFO_T data_registration; /**< Data registration. */
-
- uint8_t voice_registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
- QL_MCM_NW_3GPP_REG_INFO_T voice_registration_details_3gpp; /**< Voice registration details for 3GPP. */
-
- uint8_t data_registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
- QL_MCM_NW_3GPP_REG_INFO_T data_registration_details_3gpp; /**< Data registration details for 3GPP. */
-
- uint8_t voice_registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
- QL_MCM_NW_3GPP2_REG_INFO_T voice_registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
-
- uint8_t data_registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
- QL_MCM_NW_3GPP2_REG_INFO_T data_registration_details_3gpp2; /**< Data registration details for 3GPP2. */
-}QL_MCM_NW_REG_STATUS_INFO_T;
-
-
-typedef enum
-{
- E_QL_MCM_NW_SELECTION_AUTOMATIC = 0, /**< Automatic network selection. */
- E_QL_MCM_NW_SELECTION_MANUAL = 1, /**< Manual network selection. */
-}E_QL_MCM_NW_SELECTION_TYPE_T;
-
-typedef struct
-{
- E_QL_MCM_NW_SELECTION_TYPE_T nw_selection_type; /**< Network selection type. */
- char mcc[3 + 1]; /**< Mobile country code for a manual network selection.*/
- char mnc[3 + 1]; /**< Mobile network code for a manual network selection.*/
- E_QL_MCM_NW_RADIO_TECH_TYPE_T rat; /**< Radio technology.*/
-}QL_MCM_NW_SELECTION_INFO_T;
-
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates received signal strength. A signed value; -125 or lower indicates no signal.*/
-}QL_MCM_NW_GSM_SIGNAL_INFO_T;
-
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QL_MCM_NW_WCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. a signed value; -125 or lower indicates no signal.*/
- int8_t rscp; /**< RSCP in dBm.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
- int8_t sinr; /**< Measured SINR in dB. @newpagetable */
-}QL_MCM_NW_TDSCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
- int8_t rsrq; /**< RSRQ value in dB (signed integer value), as measured by L1. Range: -3 to -20 (-3 equals -3 dB, -20 equals -20 dB).*/
- int16_t rsrp; /**< Current RSRP in dBm, as measured by L1. Range: -44 to -140 (-44 equals -44 dBm, -140 equals -140 dBm).*/
- int16_t snr; /**< SNR level as a scaled integer in units of 0.1 dB; e.g., -16 dB has a value of -160 and 24.6 dB has a value of 246.*/
-}QL_MCM_NW_LTE_SIGNAL_INFO_T;
-
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QL_MCM_NW_CDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
- int8_t sinr; /**< SINR level.*/
- int32_t io; /**< Received IO in dBm. */
-}QL_MCM_NW_HDR_SIGNAL_INFO_T;
-
-/** Gets signal strength information. */
-typedef struct
-{
- uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
- QL_MCM_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM signal information. */
- uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
- QL_MCM_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA signal information. */
- uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
- QL_MCM_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA signal information. */
- uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
- QL_MCM_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE signal information. */
- uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
- QL_MCM_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA signal information. */
- uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
- QL_MCM_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR signal information. */
-}QL_MCM_NW_SIGNAL_STRENGTH_INFO_T;
-
-
-
-typedef enum
-{
- E_QL_MCM_NW_CELL_ACCESS_NONE = 0x00, /**< Unknown cell access state. */
- E_QL_MCM_NW_CELL_ACCESS_NORMAL_ONLY = 0x01, /**< Cell access is allowed for normal calls only. */
- E_QL_MCM_NW_CELL_ACCESS_EMERGENCY_ONLY = 0x02, /**< Cell access is allowed for emergency calls only. */
- E_QL_MCM_NW_CELL_ACCESS_NO_CALLS = 0x03, /**< Cell access is not allowed for any call type. */
- E_QL_MCM_NW_CELL_ACCESS_ALL_CALLS = 0x04, /**< Cell access is allowed for all call types. */
-}E_QL_MCM_NW_CELL_ACCESS_STATE_TYPE_T;
-
-
-/* @bridef Callback function registered to QL_MCM_NW_AddRxMsgHandler
- * map of ind_flag and ind_msg_buf as bellow :
- * NW_IND_VOICE_REG_EVENT_IND_FLAG : QL_MCM_NW_VOICE_REG_EVENT_IND_T
- * NW_IND_DATA_REG_EVENT_IND_FLAG : QL_MCM_NW_DATA_REG_EVENT_IND_T
- * NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG : QL_MCM_NW_SINGNAL_EVENT_IND_T
- * NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG : QL_MCM_NW_CELL_ACCESS_STATE_EVENT_IND_T
- * NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG : QL_MCM_NW_NITZ_TIME_EVENT_IND_T
- * */
-typedef void (*QL_MCM_NW_RxMsgHandlerFunc_t)(
- nw_client_handle_type h_nw,
- uint32_t ind_flag,
- void *ind_msg_buf,
- uint32_t ind_msg_len,
- void *contextPtr
-);
-
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_VOICE_REG_EVENT_IND_FLAG */
-typedef struct {
-
- uint8_t registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
- QL_MCM_NW_COMMON_REG_INFO_T registration; /**< Voice registration. */
-
- uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
- QL_MCM_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Voice registration details for 3GPP. */
-
- uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
- QL_MCM_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
-}QL_MCM_NW_VOICE_REG_EVENT_IND_T;
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_DATA_REG_EVENT_IND_FLAG */
-typedef struct {
-
- uint8_t registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
- QL_MCM_NW_COMMON_REG_INFO_T registration; /**< Data registration. */
-
- uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
- QL_MCM_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Data registration details for 3GPP. */
-
- uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
- QL_MCM_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Data registration details for 3GPP2. */
-}QL_MCM_NW_DATA_REG_EVENT_IND_T;
-
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG */
-typedef struct {
- uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
- QL_MCM_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM singal information. */
-
- uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
- QL_MCM_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA singal information. */
-
- uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
- QL_MCM_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA singal information. */
-
- uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
- QL_MCM_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE singal information. */
-
- uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
- QL_MCM_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA singal information. */
-
- uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
- QL_MCM_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR singal information. */
-}QL_MCM_NW_SINGNAL_EVENT_IND_T;
-
-
-/** Indication message; Indication for a change in the cell access state, e.g., emergency only, CS call only.
- * Indication for the corresponding registered event flag NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG */
-typedef struct {
- E_QL_MCM_NW_CELL_ACCESS_STATE_TYPE_T state; /**< Network cell access state. */
-}QL_MCM_NW_CELL_ACCESS_STATE_EVENT_IND_T;
-
-/** Indication Message; Indication to update NITZ time.
- * Indication for the corresponding registered event flag NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG */
-typedef struct {
- QL_MCM_NW_NITZ_TIME_INFO_T info;
-}QL_MCM_NW_NITZ_TIME_EVENT_IND_T;
-
-
-
-
-E_QL_ERROR_CODE_T QL_MCM_NW_Client_Init(nw_client_handle_type *ph_nw);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_Client_Deinit(nw_client_handle_type h_nw);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_SetConfig
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_CONFIG_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_GetConfig
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_CONFIG_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_GetNitzTimeInfo
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_NITZ_TIME_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_EventRegister
-(
- nw_client_handle_type h_nw,
- uint32_t bitmask // bit OR of NW_IND_xxxx_EVENT_ON
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_GetOperatorName
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_OPERATOR_NAME_INFO_T *pt_info //You should malloc this or may cause stack overflow
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_PerformScan
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_SCAN_RESULT_LIST_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_GetRegStatus
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_REG_STATUS_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_SetLowPowerMode
-(
- nw_client_handle_type h_nw,
- uint32_t low_power_mode_on // 0: off, other: on
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_SetSelection
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_SELECTION_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_GetSignalStrength
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_SIGNAL_STRENGTH_INFO_T *pt_info
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_GetCellAccessState
-(
- nw_client_handle_type h_nw,
- E_QL_MCM_NW_CELL_ACCESS_STATE_TYPE_T *pe_state
-);
-
-E_QL_ERROR_CODE_T QL_MCM_NW_AddRxMsgHandler
-(
- nw_client_handle_type h_nw,
- QL_MCM_NW_RxMsgHandlerFunc_t handlerPtr,
- void* contextPtr
-);
-
-
-#endif//__QL_MCM_NW_H__
diff --git a/mbtk/include/ql/ql_mcm_sim.h b/mbtk/include/ql/ql_mcm_sim.h
deleted file mode 100755
index 4fc7b1c..0000000
--- a/mbtk/include/ql/ql_mcm_sim.h
+++ /dev/null
@@ -1,713 +0,0 @@
-/**
- *@file ql_mcm_sim.h
- *@date 2017-05-02
- *@author
- *@brief
- */
-#ifndef __QL_MCM_SIM_H__
-#define __QL_MCM_SIM_H__
-#include "mbtk_type.h"
-
-#include "ql_mcm.h"
-
-#define QL_SIM_IMSI_LEN_MAX 16 /** Maximum length of IMSI data. */
-#define QL_SIM_ICCID_LEN_MAX 20 /** Maximum length of ICCID data. */
-
-typedef uint32 sim_client_handle_type;
-
-typedef enum
-{
- E_QL_MCM_SIM_SLOT_ID_1 = 0xB01, /**< Identify card in slot 1. */
- E_QL_MCM_SIM_SLOT_ID_2 = 0xB02, /**< Identify card in slot 2. */
-}E_QL_MCM_SIM_SLOT_ID_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_APP_TYPE_UNKNOWN = 0xB00, /**< Unknown application type */
- E_QL_MCM_SIM_APP_TYPE_3GPP = 0xB01, /**< Identify the SIM/USIM application on the card. */
- E_QL_MCM_SIM_APP_TYPE_3GPP2 = 0xB02, /**< Identify the RUIM/CSIM application on the card. */
- E_QL_MCM_SIM_APP_TYPE_ISIM = 0xB03, /**< Identify the ISIM application on the card. */
-}E_QL_MCM_SIM_APP_TYPE_T;
-
-typedef struct
-{
- E_QL_MCM_SIM_SLOT_ID_TYPE_T e_slot_id; /**< Indicates the slot to be used. */
- E_QL_MCM_SIM_APP_TYPE_T e_app; /**< Indicates the type of the application. */
-}QL_SIM_APP_ID_INFO_T; /* Type */
-
-
-#define QL_SIM_MCC_LEN 3 /** Length of the MCC. */
-#define QL_SIM_MNC_MAX 3 /** Maximum length of the MNC. */
-#define QL_SIM_PLMN_NUM_MAX 24 /** Maximum number of PLMN data sets. */
-typedef struct
-{
- char mcc[QL_SIM_MCC_LEN]; /**< MCC value in ASCII characters.*/
- uint32_t mnc_len; /**< Must be set to the number of elements in the MNC. */
- char mnc[QL_SIM_MNC_MAX]; /**< MNC value in ASCII characters.*/
-}QL_SIM_PLMN_INFO_T;
-
-typedef struct
-{
- uint32_t preferred_operator_list_len; /**< Must be set to the number of elements in preferred_operator_list. */
- QL_SIM_PLMN_INFO_T preferred_operator_list[QL_SIM_PLMN_NUM_MAX]; /**< Preferred operator list. */
-}QL_SIM_PREFERRED_OPERATOR_LIST_T; /* Message */
-
-
-#define QL_MCM_SIM_PIN_LEN_MAX 8 /** Maximum length of PIN data. */
-typedef enum
-{
- E_QL_MCM_SIM_PIN_ID_1 = 0xB01, /**< Level 1 user verification. */
- E_QL_MCM_SIM_PIN_ID_2 = 0xB02, /**< Level 2 user verification. */
-}E_QL_MCM_SIM_PIN_ID_TYPE_T;
-
-typedef struct
-{
- QL_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- E_QL_MCM_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t pin_value_len; /**< Must be set to the number of elements in pin_value. */
- char pin_value[QL_MCM_SIM_PIN_LEN_MAX]; /* Value of the PIN */
-}QL_SIM_VERIFY_PIN_INFO_T;
-
-/** Changes the PIN value of an application. The application must pass both the
- new and the old values of the PIN to complete the operation.
- The same PIN can be used by multiple sessions (i.e., the PIN is shared
- between GSM and RUIM in an ICC card). The PIN is automatically verified
- for all the sessions when the command is executed. */
-typedef struct
-{
- QL_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- E_QL_MCM_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t old_pin_value_len; /**< Must be set to the number of elements in old_pin_value. */
- char old_pin_value[QL_MCM_SIM_PIN_LEN_MAX]; /**< Value of the old PIN as a sequence of ASCII characters. */
- uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
- char new_pin_value[QL_MCM_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QL_SIM_CHANGE_PIN_INFO_T;
-
-/** Unblocks a blocked PIN using the PUK code. The client must pass PUK1 to unblock PIN1 or PUK2 to unblock PIN2.
- The same PIN can be used by multiple sessions (i.e., the PIN is shared between GSM and RUIM in an ICC card).
- The PIN is automatically verified for all the sessions when the command is executed. */
-typedef struct
-{
- QL_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- E_QL_MCM_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t puk_value_len; /**< Must be set to the number of elements in puk_value. */
- char puk_value[QL_MCM_SIM_PIN_LEN_MAX]; /**< Value of the PUK as a sequence of ASCII characters. */
- uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
- char new_pin_value[QL_MCM_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QL_SIM_UNBLOCK_PIN_INFO_T;
-
-/** Enables the PIN on an application. */
-typedef QL_SIM_VERIFY_PIN_INFO_T QL_SIM_ENABLE_PIN_INFO_T; //Same
-
-/** Disables the PIN of an application, */
-typedef QL_SIM_VERIFY_PIN_INFO_T QL_SIM_DISABLE_PIN_INFO_T; //Same
-
-
-typedef enum
-{
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_UNKNOWN = 0xB00, /**< Unknown personalization feature. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK = 0xB01, /**< Featurization based on 3GPP MCC and MNC. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK_SUBSET = 0xB02, /**< Featurization based on 3GPP MCC, MNC, and IMSI digits 6 and 7. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP_SERVICE_PROVIDER = 0xB03, /**< Featurization based on 3GPP MCC, MNC, and GID1. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP_CORPORATE = 0xB04, /**< Featurization based on 3GPP MCC, MNC, GID1, and GID2. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP_SIM = 0xB05, /**< Featurization based on the 3GPP IMSI. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_1 = 0xB06, /**< Featurization based on 3GPP2 MCC and MNC. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_2 = 0xB07, /**< Featurization based on 3GPP2 IRM code. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_3GPP2_RUIM = 0xB08, /**< Featurization based on 3GPP2 IMSI_M. */
-}E_QL_MCM_SIM_PERSO_FEATURE_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_PERSO_OPERATION_DEACTIVATE = 0xB00, /**< Disable an active personalization feature. */
- E_QL_MCM_SIM_PERSO_OPERATION_UNBLOCK = 0xB01, /**< Unblock a personalization feature that has been blocked. */
-}E_QL_MCM_SIM_PERSO_OPERATION_TYPE_T;
-
-
-#define QL_MCM_SIM_CONTROL_KEY_LEN_MAX 16 /** Maximum length of personalization control key data */
-/** Deactivates or unblocks the personalization on the phone.
- Each feature can be deactivated/unblocked independently of the other features. */
-typedef struct
-{
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_T e_feature_type; /**< Indicates the personalization feature to deactivate or unblock. */
- E_QL_MCM_SIM_PERSO_OPERATION_TYPE_T e_operation; /**< Indicates the operation to perform. */
- uint32_t ctrl_key_value_len; /**< Must be set to the number of elements in ck_value. */
- char ctrl_key_value[QL_MCM_SIM_CONTROL_KEY_LEN_MAX];/**< Control key value. This value is a sequence of ASCII characters.*/
-}QL_MCM_SIM_DEPERSONALIZE_INFO_T; /* Type */
-
-
-typedef struct
-{
- char mcc[5]; /**< MCC value in ASCII characters.*/
- uint32_t mnc_len; /**< Must be set to the number of elements in the MNC. */
- char mnc[5]; /**< MNC value in ASCII characters.*/
-}QL_MCM_SIM_NW_PERSONAL_INFO_T;
-
-typedef struct
-{
- QL_MCM_SIM_NW_PERSONAL_INFO_T network; /**< MCC and MNC network information.*/
- char digit6; /**< Digit 6 of the IMSI in ASCII character.*/
- char digit7; /**< Digit 7 of the IMSI in ASCII character.*/
-}QL_MCM_SIM_NW_SUBSET_PERSONAL_INFO_T;
-
-typedef struct
-{
- QL_MCM_SIM_NW_PERSONAL_INFO_T network; /**< MCC and MNC network information.*/
- uint8_t gid1; /**< Service provider code found in GID1.*/
-}QL_MCM_SIM_NW_SP_PERSONAL_INFO_T;
-
-typedef struct
-{
- QL_MCM_SIM_NW_PERSONAL_INFO_T network; /**< MCC and MNC network information.*/
- uint8_t gid1; /**< Service provider code found in GID1.*/
- uint8_t gid2; /**< Corporate customer code found in GID2. @newpagetable */
-}QL_MCM_SIM_GW_CORPORATE_PERSONAL_INFO_T;
-
-#define QL_MCM_SIM_MSIN_LEN_MAX 10 /** Maximum length of the MSIN. */
-typedef struct
-{
- QL_MCM_SIM_NW_PERSONAL_INFO_T network; /**< MCC and MNC network information.*/
- uint32_t msin_len; /**< Must be set to the number of elements in MSIN. */
- char msin[QL_MCM_SIM_MSIN_LEN_MAX];/**< MSIN value stored on the card in ASCII characters.*/
-}QL_MCM_SIM_SIM_PERSONAL_INFO_T; /* Type */
-
-typedef struct
-{
- char irm_code[4];/**< First 4 digits of the IRM-based MIN of IMSI_M in ASCII characters.*/
-}QL_MCM_SIM_1X_NW_TYPE2_PERSONAL_INFO_T;
-
-
-#define QL_MCM_SIM_PERSO_NUM_NW_MAX 85 /** Maximum number of network personalization data sets. */
-#define QL_MCM_SIM_PERSO_NUM_NS_MAX 64 /** Maximum number of network subset personalization data sets. */
-#define QL_MCM_SIM_PERSO_NUM_GW_SP_MAX 64 /** Maximum number of service provider personalization data sets. */
-#define QL_MCM_SIM_PERSO_NUM_GW_CP_MAX 51 /** Maximum number of corporate personalization data sets. */
-#define QL_MCM_SIM_PERSO_NUM_SIM_MAX 32 /** Maximum number of SIM personalization data sets. */
-#define QL_MCM_SIM_PERSO_NUM_1X_NW2_MAX 128 /** Maximum number of network type 2 personalization data sets. */
-
-typedef union
-{
- QL_MCM_SIM_NW_PERSONAL_INFO_T feature_gw_network_perso[QL_MCM_SIM_PERSO_NUM_NW_MAX]; /**< GW network personalization. */
- QL_MCM_SIM_NW_SUBSET_PERSONAL_INFO_T feature_gw_network_subset_perso[QL_MCM_SIM_PERSO_NUM_NS_MAX]; /**< GW network subset personalization. */
- QL_MCM_SIM_NW_SP_PERSONAL_INFO_T feature_gw_sp_perso[QL_MCM_SIM_PERSO_NUM_GW_SP_MAX]; /**< GW service provider personalization. */
- QL_MCM_SIM_GW_CORPORATE_PERSONAL_INFO_T feature_gw_corporate_perso[QL_MCM_SIM_PERSO_NUM_GW_CP_MAX]; /**< GW corporate personalization. */
- QL_MCM_SIM_SIM_PERSONAL_INFO_T feature_gw_sim_perso[QL_MCM_SIM_PERSO_NUM_SIM_MAX]; /**< GW SIM personalization. */
- QL_MCM_SIM_NW_PERSONAL_INFO_T feature_1x_network1_perso[QL_MCM_SIM_PERSO_NUM_NW_MAX]; /**< 1X network type 1 personalization. */
- QL_MCM_SIM_1X_NW_TYPE2_PERSONAL_INFO_T feature_1x_network2_perso[QL_MCM_SIM_PERSO_NUM_1X_NW2_MAX]; /**< 1X network type 3 personalization. */
- QL_MCM_SIM_SIM_PERSONAL_INFO_T feature_1x_ruim_perso[QL_MCM_SIM_PERSO_NUM_SIM_MAX]; /* 1x RUIM Personalization */
-}QL_MCM_SIM_PERSONAL_FEATURE_INFO_DATA_T;
-
-/** Request message; Activates and sets the personalization data on the phone. Each feature can be activated
- independently of one another; however, network data configurations must be consistent across activated personalization
- modes in order to prevent contradicting featurization, and only one feature can be activated per message.
- If personalization is already activated, it must first be deactivated before being reactivated with new data. */
-typedef struct
-{
- uint32_t ctrl_key_value_len; /**< Must be set to the number of elements in ctrl_key_value. */
- char ctrl_key_value[60]; /**< Control key value. This value is a sequence of ASCII characters.*/
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_T e_feature_type;
- uint32_t feature_data_len; //Valid array count of t_feature_data
- QL_MCM_SIM_PERSONAL_FEATURE_INFO_DATA_T t_feature_data;
-}QL_MCM_SIM_PERSONALIZE_FEATURE_INFO_T;
-
-
-typedef enum
-{
- E_QL_MCM_SIM_CARD_STATE_UNKNOWN = 0xB01, /**< Card state unknown. */
- E_QL_MCM_SIM_CARD_STATE_ABSENT = 0xB02, /**< Card is absent. */
- E_QL_MCM_SIM_CARD_STATE_PRESENT = 0xB03, /**< Card is present. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_UNKNOWN = 0xB04, /**< Unknown error state. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_POWER_DOWN = 0xB05, /**< Power down. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_POLL_ERROR = 0xB06, /**< Poll error. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_NO_ATR_RECEIVED = 0xB07, /**< Failed to receive an answer to reset. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_VOLT_MISMATCH = 0xB08, /**< Voltage mismatch. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_PARITY_ERROR = 0xB09, /**< Parity error. */
- E_QL_MCM_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS= 0xB0A, /**< Card returned technical problems. */
-}E_QL_MCM_SIM_CARD_STATE_TYPE_T; /**< Card state. */
-
-typedef enum
-{
- E_QL_MCM_SIM_CARD_TYPE_UNKNOWN = 0xB00, /**< Unidentified card type. */
- E_QL_MCM_SIM_CARD_TYPE_ICC = 0xB01, /**< Card of SIM or RUIM type. */
- E_QL_MCM_SIM_CARD_TYPE_UICC = 0xB02, /**< Card of USIM or CSIM type. */
-}E_QL_MCM_SIM_CARD_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_PROV_STATE_NONE = 0xB00, /**< Nonprovisioning. */
- E_QL_MCM_SIM_PROV_STATE_PRI = 0xB01, /**< Primary provisioning subscription. */
- E_QL_MCM_SIM_PROV_STATE_SEC = 0xB02, /**< Secondary provisioning subscription. */
-}QL_MCM_SIM_SUBSCRIPTION_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_APP_STATE_UNKNOWN = 0xB00, /**< Application state unknown. */
- E_QL_MCM_SIM_APP_STATE_DETECTED = 0xB01, /**< Detected state. */
- E_QL_MCM_SIM_APP_STATE_PIN1_REQ = 0xB02, /**< PIN1 required. */
- E_QL_MCM_SIM_APP_STATE_PUK1_REQ = 0xB03, /**< PUK1 required. */
- E_QL_MCM_SIM_APP_STATE_INITALIZATING = 0xB04, /**< Initializing. */
- E_QL_MCM_SIM_APP_STATE_PERSO_CK_REQ = 0xB05, /**< Personalization control key required. */
- E_QL_MCM_SIM_APP_STATE_PERSO_PUK_REQ = 0xB06, /**< Personalization unblock key required. */
- E_QL_MCM_SIM_APP_STATE_PERSO_PERMANENTLY_BLOCKED= 0xB07, /**< Personalization is permanently blocked. */
- E_QL_MCM_SIM_APP_STATE_PIN1_PERM_BLOCKED = 0xB08, /**< PIN1 is permanently blocked. */
- E_QL_MCM_SIM_APP_STATE_ILLEGAL = 0xB09, /**< Illegal application state. */
- E_QL_MCM_SIM_APP_STATE_READY = 0xB0A, /**< Application ready state. @newpage */
-}QL_MCM_SIM_APP_STATE_TYPE_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_PIN_STATE_UNKNOWN = 0xB01, /**< Unknown PIN state. */
- E_QL_MCM_SIM_PIN_STATE_ENABLED_NOT_VERIFIED = 0xB02, /**< PIN required, but has not been verified. */
- E_QL_MCM_SIM_PIN_STATE_ENABLED_VERIFIED = 0xB03, /**< PIN required and has been verified. */
- E_QL_MCM_SIM_PIN_STATE_DISABLED = 0xB04, /**< PIN not required. */
- E_QL_MCM_SIM_PIN_STATE_BLOCKED = 0xB05, /**< PIN verification has failed too many times and is blocked. Recoverable through PUK verification. */
- E_QL_MCM_SIM_PIN_STATE_PERMANENTLY_BLOCKED = 0xB06, /**< PUK verification has failed too many times and is not recoverable. */
-}QL_MCM_SIM_PIN_STATE_TYPE_T;
-
-typedef struct
-{
- QL_MCM_SIM_SUBSCRIPTION_TYPE_T subscription; /**< Type of subscription (i.e., primary, secondary, etc.). */
- QL_MCM_SIM_APP_STATE_TYPE_T app_state; /**< Current state of the application. */
- E_QL_MCM_SIM_PERSO_FEATURE_TYPE_T perso_feature; /**< Current personalization state and feature enabled. */
- uint8_t perso_retries; /**< Number of personalization retries. */
- uint8_t perso_unblock_retries; /**< Number of personalization unblock retries. */
- QL_MCM_SIM_PIN_STATE_TYPE_T pin1_state; /**< Current PIN 1 state. */
- uint8_t pin1_num_retries; /**< Number of PIN 1 retries. */
- uint8_t puk1_num_retries; /**< Number of PUK 1 retries. */
- QL_MCM_SIM_PIN_STATE_TYPE_T pin2_state; /**< Current PIN 2 state. */
- uint8_t pin2_num_retries; /**< Number of PIN 2 retries. */
- uint8_t puk2_num_retries; /**< Number of PUK 2 retries. */
-}QL_MCM_SIM_CARD_APP_INFO_T;
-
-typedef struct
-{
- QL_MCM_SIM_CARD_APP_INFO_T app_3gpp; /**< Stores 3GPP application information. */
- QL_MCM_SIM_CARD_APP_INFO_T app_3gpp2; /**< Stores 3GPP2 application information. */
- QL_MCM_SIM_CARD_APP_INFO_T app_isim; /**< Stores ISIM application information. */
-}QL_MCM_SIM_CARD_ALL_APP_INFO_T;
-
-typedef struct
-{
- E_QL_MCM_SIM_CARD_STATE_TYPE_T e_card_state;/**< Current card and card error state. */
- E_QL_MCM_SIM_CARD_TYPE_T e_card_type; /**< Card type. */
- QL_MCM_SIM_CARD_ALL_APP_INFO_T card_app_info; /**< Stores all relevant application information. */
-}QL_MCM_SIM_CARD_STATUS_INFO_T;
-
-#define QL_MCM_SIM_PATH_LEN_MAX 20 /** Maximum length of a full file path in ASCII format. */
-typedef struct
-{
- uint16_t offset; /**< Offset is only required for write file access where data length is indicated.*/
- uint8_t record_num; /**< Number of records involved in file access. A record number of 0 indicates transparent file access.*/
- uint32_t path_len; /**< Must be set to the number of elements in the path. */
- char path[QL_MCM_SIM_PATH_LEN_MAX]; /**< File path in ASCII characters. @newpagetable */
-}QL_MCM_SIM_CARD_FILE_ACCESS_INFO_T;
-
-#define QL_MCM_SIM_DATA_LEN_MAX 4096 /** Maximum size of data to be read/written. */
-typedef struct
-{
- QL_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QL_MCM_SIM_CARD_FILE_ACCESS_INFO_T file_access; /**< File access information. */
- uint32_t data_len; /**< Must be set to the number of elements in data. */
- uint8_t data[QL_MCM_SIM_DATA_LEN_MAX]; /**< Data to be updated on the card. */
-}QL_MCM_SIM_CARD_WRITE_FILE_INFO_T;
-
-
-/** Request message; Reads data to a specific file on a specified application on the card. The type of file is determined
- by the record number field, which indicates a transparent file when zero and a record-based file otherwise.*/
-typedef struct
-{
- QL_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QL_MCM_SIM_CARD_FILE_ACCESS_INFO_T file_access; /**< File access information. */
-}QL_MCM_SIM_CARD_FILE_INFO_TO_READ_T;
-
-typedef struct
-{
- uint32_t data_len; /**< Must be set to the number of elements in data. */
- uint8_t data[QL_MCM_SIM_DATA_LEN_MAX]; /**< Data retrieved from the card. */
-}QL_MCM_SIM_CARD_FILE_DATA_T;
-
-/** Retrieves the size of a specific file on a specified application on the card. */
-typedef struct
-{
- QL_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- uint32_t path_len; /**< Must be set to the number of elements in path. */
- char path[QL_MCM_SIM_PATH_LEN_MAX]; /**< File path in ASCII characters.*/
-}QL_MCM_SIM_CARD_GET_FILE_SIZE_INPUT_INFO_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_FILE_TYPE_UNKNOWN = 0xB00,/**< Unknown file type */
- E_QL_MCM_SIM_FILE_TYPE_TRANSPARENT = 0xB01,/**< File structure consisting of a sequence of bytes. */
- E_QL_MCM_SIM_FILE_TYPE_CYCLIC = 0xB02,/**< File structure consisting of a sequence of records, each containing the same fixed size in
- chronological order. Once all the records have been used, the oldest data is overwritten. */
- MCM_SIM_FILE_TYPE_LINEAR_FIXED = 0xB03, /**< File structure consisting of a sequence of records, each containing the same fixed size. */
-}E_QL_MCM_SIM_FILE_TYPE_T;
-
-typedef struct
-{
- E_QL_MCM_SIM_FILE_TYPE_T e_file_type; /**< File type: */
- uint16_t file_size; /**< Size of transparent files.*/
- uint16_t record_size; /**< Size of each cyclic or linear fixed file record.*/
- uint16_t record_count; /**< Number of cyclic or linear fixed file records.*/
-}QL_MCM_SIM_FILE_SIZE_INFO_T;
-
-typedef enum
-{
- E_QL_MCM_SIM_REFRESH_EVENT = 0xB00, /**< Card refresh event */
- E_QL_MCM_SIM_CARD_STATUS_UPDATE_EVENT = 0xB01, /**< Card status update event. */
-}E_QL_SIM_NFY_MSG_ID_T;
-
-
-typedef void (*QL_SIM_CardStatusIndMsgHandlerFunc_t)
-(
- sim_client_handle_type h_sim,
- E_QL_SIM_NFY_MSG_ID_T e_msg_id,
- void *pv_data,
- void *contextPtr
-);
-
-
-int QL_MCM_SIM_Client_Init(sim_client_handle_type *ph_sim);
-
-int QL_MCM_SIM_Client_Deinit(sim_client_handle_type h_sim);
-
-/* Add callback function if anything changed specified by the mask in QL_LOC_Set_Indications*/
-int QL_MCM_SIM_AddRxIndMsgHandler(QL_SIM_CardStatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_GetIMSI
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the IMSI (for 3GPP)
- or IMSI_M (for 3GPP2) from the SIM in ASCII form
-
- @return
- void
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetIMSI
-(
- sim_client_handle_type h_sim,
- QL_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier info.
- char *imsi, ///< [OUT] IMSI buffer
- size_t imsiLen ///< [IN] IMSI buffer length
-);
-
-
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetIMEI
-(
- sim_client_handle_type h_sim,
- char *imei, ///< [OUT] IMSI buffer
- size_t imeiLen ///< [IN] IMSI buffer length
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_GetICCID
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the ICCID from
- SIM in ASCII form
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetICCID
-(
- sim_client_handle_type h_sim,
- E_QL_MCM_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
- char *iccid, ///< [OUT] ICCID
- size_t iccidLen ///< [IN] ICCID buffer length
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_GetPhoneNumber
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the device phone
- number from MSISDN (for 3GPP) or MDN (for 3GPP2) from the SIM in
- ASCII form
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetPhoneNumber
-(
- sim_client_handle_type h_sim,
- QL_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier.
- char *phone_num, ///< [OUT] phone number
- size_t phoneLen ///< [IN] phone number buffer length
-);
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_GetOperatorPlmnList
-
-===========================================================================*/
-/*
- @brief
- Function sends multiple record based read commands to the modem
- to retrieve a list of operator preffered PLMN.
-
- @note
- Function should only be called for SIM/USIM
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetOperatorPlmnList
-(
- sim_client_handle_type h_sim,
- E_QL_MCM_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
- QL_SIM_PREFERRED_OPERATOR_LIST_T *pt_info ///< [OUT] Preferred operator list
-);
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_VerifyPIN
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to verify either PIN1 or PIN2
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_VerifyPIN
-(
- sim_client_handle_type h_sim,
- QL_SIM_VERIFY_PIN_INFO_T *pt_info ///< [IN] Verify PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_ChangePin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to change the value of
- either PIN1 or PIN2
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_ChangePin
-(
- sim_client_handle_type h_sim,
- QL_SIM_CHANGE_PIN_INFO_T *pt_info ///< [IN] Change PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_UnblockPIN
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to unblock a PIN1 or PIN2 that
- has been blocked
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_UnblockPIN
-(
- sim_client_handle_type h_sim,
- QL_SIM_UNBLOCK_PIN_INFO_T *pt_info ///< [IN] Unblock PIN infor
-);
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_EnablePIN
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to enable PIN1 or PIN2
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_EnablePIN
-(
- sim_client_handle_type h_sim,
- QL_SIM_ENABLE_PIN_INFO_T *pt_info ///< [IN] Enable PIN infor
-);
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_DisablePIN
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to disable PIN1 or PIN2
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_DisablePIN
-(
- sim_client_handle_type h_sim,
- QL_SIM_DISABLE_PIN_INFO_T *pt_info ///< [IN] Disable PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_GetCardStatus
-
-===========================================================================*/
-/*
- @brief
- Function retrieves the server cached card status informations and
- sends the information to the client
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetCardStatus
-(
- sim_client_handle_type h_sim,
- E_QL_MCM_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
- QL_MCM_SIM_CARD_STATUS_INFO_T *pt_info ///< [OUT] Cart status infor output
-);
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_Depersonalization
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to disable or unblock SIM Lock
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_Depersonalization
-(
- sim_client_handle_type h_sim,
- QL_MCM_SIM_DEPERSONALIZE_INFO_T *pt_info ///< [OUT] Depersonalize information
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_Personalization
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to set the SIM Lock data
- and concurrently enable SIM Lock.
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_Personalization
-(
- sim_client_handle_type h_sim,
- QL_MCM_SIM_PERSONALIZE_FEATURE_INFO_T *pt_info ///< [OUT] Unblock PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_WriteFile
-
-===========================================================================*/
-/*
- @brief
- Function will determine whether the request is for transparent or
- record based write command based on the record number and calls the
- corresponding function to send the message to the card.
-
- record number = 0 - transparent
- record number > 0 - record based
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_WriteFile
-(
- sim_client_handle_type h_sim,
- QL_MCM_SIM_CARD_WRITE_FILE_INFO_T *pt_info ///< [OUT] Verify PIN infor
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_ReadFile
-
-===========================================================================*/
-/*
- @brief
- Function will determine whether the request is for transparent or
- record based read command based on the record number and calls the
- corresponding function to send the message to the card.
-
- record number = 0 - transparent
- record number > 0 - record based
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_ReadFile
-(
- sim_client_handle_type h_sim,
- QL_MCM_SIM_CARD_FILE_INFO_TO_READ_T *pt_info, ///< [IN] input file info which to be read
- QL_MCM_SIM_CARD_FILE_DATA_T *pt_out ///< [OUT] File data of the specified one by pt_info
-);
-
-/*===========================================================================
-
- FUNCTION: QL_MCM_SIM_GetFileSize
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the file type, file
- size(transparent files) or record size and record count (record based files)
-
- @return
- E_QL_ERROR_CODE_T
-*/
-/*=========================================================================*/
-E_QL_ERROR_CODE_T QL_MCM_SIM_GetFileSize
-(
- sim_client_handle_type h_sim,
- QL_MCM_SIM_CARD_GET_FILE_SIZE_INPUT_INFO_T *pt_info, ///< [IN] input file info which to be read
- QL_MCM_SIM_FILE_SIZE_INFO_T *pt_out ///< [OUT] output file size info
-);
-
-
-
-#endif // __QL_MCM_SIM_H__
-
diff --git a/mbtk/include/ql/ql_mcm_sms.h b/mbtk/include/ql/ql_mcm_sms.h
deleted file mode 100755
index 1055325..0000000
--- a/mbtk/include/ql/ql_mcm_sms.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/**
- *@file ql_sms.h
- *@date 2017-05-02
- *@author
- *@brief
- */
-
-#ifndef __QL_SMS_H__
-#define __QL_SMS_H__
-
-#include "mbtk_type.h"
-
-typedef uint32 sms_client_handle_type;
-
-/** Maximum length of an SMS. */
-#define QL_SMS_MAX_MT_MSG_LENGTH 1440
-
-/** Maximum string length. */
-#define QL_SMS_MAX_ADDR_LENGTH 252
-
-/** Maximum string length. */
-#define QL_SMS_MAX_SCA_TYPE_LENGTH 3
-
-
-typedef enum
-{
- E_QL_SMS_FORMAT_GSM_7BIT = 0,
- E_QL_SMS_FORMAT_BINARY_DATA = 1,
- E_QL_SMS_FORMAT_UCS2 = 2,
- //<2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao, <[SMS] Segment 1==> CharSet to Alpha implementation.>
- E_QL_SMS_FORMAT_IRA = 3,
- //>2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao
-
-}E_QL_SMS_FORMAT_T;
-
-typedef enum
-{
- E_QL_SMS_TYPE_RX = 0, ///< SMS mobile terminated message.
- E_QL_SMS_TYPE_TX = 1, ///< SMS mobile originated message.
- E_QL_SMS_TYPE_BROADCAST_RX = 2 ///< SMS Cell Broadcast message.
-}E_QL_SMS_TYPE_T;
-
-typedef enum
-{
- E_QL_SMS_STORAGE_TYPE_NONE = -1, /**< Message no need to store. */
- E_QL_SMS_STORAGE_TYPE_UIM = 0, /**< Message store to UIM. */
- E_QL_SMS_STORAGE_TYPE_NV = 1, /**< Message store to NV. */
-}E_QL_SMS_STORAGE_TYPE_T;
-
-typedef enum
-{
- E_QL_SMS_MESSAGE_MODE_UNKNOWN = -1, /**< Message type CDMA */
- E_QL_SMS_MESSAGE_MODE_CDMA = 0, /**< Message type CDMA */
- E_QL_SMS_MESSAGE_MODE_GW = 1, /**< Message type GW. */
-}E_QL_SMS_MODE_TYPE_T;
-
-typedef struct
- {
- uint8_t total_segments; /**< The number of long short message*/
- uint8_t seg_number; /**< Current number.*/
- uint8_t reference_number; /**< reference_number.*/
-}ql_sms_user_data_head_t;
-
-typedef struct
-{
- /* If sms is stored, it won't parse, you need read it by yourself */
- E_QL_SMS_STORAGE_TYPE_T e_storage; ///specify where stored this msg
-
- E_QL_SMS_FORMAT_T format;
- E_QL_SMS_TYPE_T type;
- char sms_number_addr[QL_SMS_MAX_ADDR_LENGTH]; ///Telephone number string
- char sca_number_addr[QL_SMS_MAX_ADDR_LENGTH]; //.SMS Center Number
- int sms_data_len;
- char sms_data[QL_SMS_MAX_MT_MSG_LENGTH]; ///SMS content, data format depends on format
- char timestamp[21]; ///Message time stamp (in text mode). string format: "yy/MM/dd,hh:mm:ss+/-TimeZone"
- uint8_t user_data_head_valid; //indicate whether long sms. TRUE-long sms; FALSE-short message;
- ql_sms_user_data_head_t user_data_head; //long sms user data head info.
- E_QL_SMS_MODE_TYPE_T e_mode; ///specify where stored this msg cdma or gw area
- uint32_t storage_index; ///storage index, -1 means not store
-} ql_sms_info_t;
-
-
-typedef struct
-{
- E_QL_SMS_STORAGE_TYPE_T e_storage;
- E_QL_SMS_MODE_TYPE_T e_mode;
- uint32_t storage_idx;
-} ql_sms_storage_info_t;
-
-/* 0 = "REC UNREAD" */
-/* 1 = "REC READ" */
-/* 2 = "STO UNSENT" */
-/* 3 = "STO SENT" */
-typedef enum _ql_SMS_SIM_STATUS
-{
- REC_UNREAD = 0,
- REC_READ = 1,
- STO_UNSENT = 2,
- STO_SENT = 3
-}ql_SMS_SIM_STATUS;
-
-typedef enum
-{
- E_QL_SMS_MESSAGE_CLASS_0 = 0x00, //display only
- E_QL_SMS_MESSAGE_CLASS_1 = 0x01, //store in ME
- E_QL_SMS_MESSAGE_CLASS_2 = 0x02, //store in SIM
- E_QL_SMS_MESSAGE_CLASS_3 = 0x03, //
- E_QL_SMS_MESSAGE_CLASS_NONE = 0x04,
- E_QL_SMS_MESSAGE_CLASS_CDMA = 0x05,
- E_QL_SMS_MESSAGE_CLASS_MAX = 0x06,
-}E_QL_SMS_MESSAGE_CLASS_TYPE_T;
-
-typedef enum
-{
- E_QL_SMS_UNKNOWN = -1,
- E_QL_SMS_DISCARD = 0x00, /* Incoming messages for this route are discarded by the WMS service without
- notifying QMI_WMS clients */
- E_QL_SMS_STORE_AND_NOTIFY = 0x01, /* Incoming messages for this route are stored to the specified device
- memory, and new message notifications */
- E_QL_SMS_TRANSFER_ONLY = 0x02, /* Incoming messages for this route are transferred to the client, and the
- client is expected to send ACK to the network */
- E_QL_SMS_TRANSFER_AND_ACK = 0x03, /* Incoming messages for this route are transferred to the client, and ACK is
- sent to the network */
-}E_QL_SMS_RECEPTION_ACTION_TYPE_T;
-
-typedef struct
-{
- E_QL_SMS_MESSAGE_CLASS_TYPE_T message_class;
- E_QL_SMS_STORAGE_TYPE_T route_storage;
- E_QL_SMS_RECEPTION_ACTION_TYPE_T receipt_action;
-}ql_sms_route_info_t; /* Type */
-
-typedef struct
-{
- ql_sms_route_info_t route_list[E_QL_SMS_MESSAGE_CLASS_MAX];
-}ql_sms_route_info_list_t; /* Message */
-
-#define QL_WMS_MESSAGE_LENGTH_MAX 255
-
-typedef enum
- {
- E_QL_WMS_MESSAGE_FORMAT_CDMA = 0x00, //- 0x00 -- MESSAGE_FORMAT_CDMA -- CDMA \n
- E_QL_WMS_MESSAGE_FORMAT_GW_PP = 0x06, //- 0x06 -- MESSAGE_FORMAT_GW_PP -- GW_PP
-}E_QL_WMS_MESSAGE_FORMAT_TYPE;
-
-
-typedef struct
- {
- E_QL_WMS_MESSAGE_FORMAT_TYPE format;
- uint32_t raw_message_len; /**< Must be set to # of elements in raw_message */
- uint8_t raw_message[QL_WMS_MESSAGE_LENGTH_MAX]; /**< Raw message data*/
-}ql_wms_send_raw_message_data_t;
-
-
-typedef enum
-{
- E_QL_WMS_TL_CAUSE_CODE_ADDR_VACANT = 0x00,
- E_QL_WMS_TL_CAUSE_CODE_ADDR_TRANSLATION_FAILURE = 0x01,
- E_QL_WMS_TL_CAUSE_CODE_NETWORK_RESOURCE_SHORTAGE = 0x02,
- E_QL_WMS_TL_CAUSE_CODE_NETWORK_FAILURE = 0x03,
- E_QL_WMS_TL_CAUSE_CODE_INVALID_TELESERVICE_ID = 0x04,
- E_QL_WMS_TL_CAUSE_CODE_NETWORK_OTHER = 0x05,
- E_QL_WMS_TL_CAUSE_CODE_NO_PAGE_RESPONSE = 0x20,
- E_QL_WMS_TL_CAUSE_CODE_DEST_BUSY = 0x21,
- E_QL_WMS_TL_CAUSE_CODE_NO_ACK = 0x22,
- E_QL_WMS_TL_CAUSE_CODE_DEST_RESOURCE_SHORTAGE = 0x23,
- E_QL_WMS_TL_CAUSE_CODE_SMS_DELIVERY_POSTPONED = 0x24,
- E_QL_WMS_TL_CAUSE_CODE_DEST_OUT_OF_SERV = 0x25,
- E_QL_WMS_TL_CAUSE_CODE_DEST_NOT_AT_ADDR = 0x26,
- E_QL_WMS_TL_CAUSE_CODE_DEST_OTHER = 0x27,
- E_QL_WMS_TL_CAUSE_CODE_RADIO_IF_RESOURCE_SHORTAGE = 0x40,
- E_QL_WMS_TL_CAUSE_CODE_RADIO_IF_INCOMPATABILITY = 0x41,
- E_QL_WMS_TL_CAUSE_CODE_RADIO_IF_OTHER = 0x42,
- E_QL_WMS_TL_CAUSE_CODE_ENCODING = 0x60,
- E_QL_WMS_TL_CAUSE_CODE_SMS_ORIG_DENIED = 0x61,
- E_QL_WMS_TL_CAUSE_CODE_SMS_TERM_DENIED = 0x62,
- E_QL_WMS_TL_CAUSE_CODE_SUPP_SERV_NOT_SUPP = 0x63,
- E_QL_WMS_TL_CAUSE_CODE_SMS_NOT_SUPP = 0x64,
- E_QL_WMS_TL_CAUSE_CODE_MISSING_EXPECTED_PARAM = 0x65,
- E_QL_WMS_TL_CAUSE_CODE_MISSING_MAND_PARAM = 0x66,
- E_QL_WMS_TL_CAUSE_CODE_UNRECOGNIZED_PARAM_VAL = 0x67,
- E_QL_WMS_TL_CAUSE_CODE_UNEXPECTED_PARAM_VAL = 0x68,
- E_QL_WMS_TL_CAUSE_CODE_USER_DATA_SIZE_ERR = 0x69,
- E_QL_WMS_TL_CAUSE_CODE_GENERAL_OTHER = 0x6A,
-}E_QL_WMS_TL_CAUSE_CODE_TYPE;
-
-typedef struct
- {
- uint16_t message_id; /* Message ID */
- uint8_t cause_code_valid; /**< Must be set to true if cause_code is being passed */
- E_QL_WMS_TL_CAUSE_CODE_TYPE cause_code;
-}ql_wms_raw_send_resp_t;
-
-typedef struct
- {
- char service_center_addr[QL_SMS_MAX_ADDR_LENGTH + 1]; /**< Address of the service center.*/
- uint8_t service_center_addr_type_valid;
- char service_center_addr_type[QL_SMS_MAX_SCA_TYPE_LENGTH + 1]; /**< 129 if the SMSC address does not start with a "+" characte;
- 145 if the SMSC address starts with a "+" character*/
-}ql_sms_service_center_cfg_t;
-
-typedef ql_sms_info_t QL_SMS_Msg_t;
-typedef ql_sms_info_t* QL_SMS_MsgRef;
-
-/* Callback function registered to QL_SMS_AddRxMsgHandler, msgRef contains the detail msg infor */
-typedef void (*QL_SMS_RxMsgHandlerFunc_t)
-(
- QL_SMS_MsgRef msgRef,
- void* contextPtr
-);
-
-/* Init SMS module and return h_sms, this should be called before any othe ones */
-int QL_SMS_Client_Init(sms_client_handle_type *ph_sms);
-
-/* Add callback function, if any new msg arrived, it will notify app */
-int QL_SMS_AddRxMsgHandler(QL_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
-
-/* Send sms, you just need to fill format/src_addr/sms_data_len/sms_data,
- if format is UCS2, the data should be Unicode-BE format.
-*/
-int QL_SMS_Send_Sms(sms_client_handle_type h_sms, ql_sms_info_t *pt_sms_info);
-
-/* DeInit SMS module and release resource, this should be called in the last one. */
-int QL_SMS_Client_Deinit(sms_client_handle_type h_sms);
-
-/* Delete the SMS specified in the pt_sms_storage */
-int QL_SMS_DeleteFromStorage(sms_client_handle_type h_sms, ql_sms_storage_info_t *pt_sms_storage);
-
-/* Set route list, normally, sms won't be stored, the route set to transfer_and_ack by default.
- If you want to save to storage, you can specify it with this api.
-*/
-int QL_SMS_SetRouteList(sms_client_handle_type h_sms, ql_sms_route_info_list_t *pt_route_list);
-
-/* Send sms PDU.
-*/
-int QL_SMS_Send_SmsPdu( sms_client_handle_type h_sms,
- ql_wms_send_raw_message_data_t *raw_message_data,
- ql_wms_raw_send_resp_t *rawresp);
-
-int QL_SMS_Get_By_id(ql_sms_storage_info_t *pt_sms_storage);
-
-/* Get sms center address.
-*/
-int QL_SMS_GetSmsCenterAddress( sms_client_handle_type h_sms,
- ql_sms_service_center_cfg_t *set_sca_cfg);
-
-/* Set sms center address.
-*/
-int QL_SMS_SetSmsCenterAddress( sms_client_handle_type h_sms,
- ql_sms_service_center_cfg_t *get_sca_cfg);
-
-int QL_SMS_Get_Storage(sms_client_handle_type *ph_sms);
-
-int QL_SMS_Save_Sms(sms_client_handle_type h_sms, ql_sms_info_t *pt_sms_info);
-
-int QL_SMS_Delete_Sms(sms_client_handle_type h_sms, ql_sms_info_t *pt_sms_info);
-/*
-Usage 1 (register callback and wait for new sms arrive):
-1, QL_SMS_Client_Init
-2, QL_SMS_AddRxMsgHandler(pf_cb)
-3, wait for sms arrive, pf_cb will pass the detail sms info to app.
-4, QL_SMS_Client_Deinit
-
-
-Usage 2 (Send sms):
-1, QL_SMS_Client_Init
-2, QL_SMS_AddRxMsgHandler(pf_cb)
-3, QL_SMS_Send_Sms
-4, QL_SMS_Client_Deinit
-
-
-Usage 3 (store sms):
-1, QL_SMS_Client_Init
-2, QL_SMS_AddRxMsgHandler(pf_cb)
-3, QL_SMS_SetRouteList (Notice: class-0 not allowed to store, class-2 must be stored to UIM)
-4, pf_cb will be called when new sms arrived, and tell you where the sms stored
-5, you can call QL_SMS_DeleteFromStorage to delete specified sms, the location can be got from pf_cb.
-6, QL_SMS_Client_Deinit
-*/
-
-#endif // __QL_SMS_H__
-
diff --git a/mbtk/include/ql/ql_network.h b/mbtk/include/ql/ql_network.h
deleted file mode 100755
index 241c718..0000000
--- a/mbtk/include/ql/ql_network.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file ql_network.h
- * @brief Quectel Openlinux network public function declarations.
- *
- * @note
- *
- * @copyright Copyright (c) 2009-2017 @ Quectel Wireless Solutions Co., Ltd.
- */
-
-#ifndef __QL_NETWORK_H__
-#define __QL_NETWORK_H__
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-
- typedef struct {
- char gw_ip[20]; /* Gateway Address*/
- char netmask[20]; /* netmask */
- unsigned char enable_dhcp; /* Whether to enable DHCP; boolean value. */
- char dhcp_start_ip[20]; /*DHCP start IP address.*/
- char dhcp_end_ip[20]; /*DHCP end IP address. */
- unsigned int lease_time; /*DHCP lease time, in seconds.*/
- }ql_lan_dhcp_config_s;
-
-
-
-/**
-* Set the network configuration: dhcp configuration.
-*s
-* @param [in] lan_dhcp_config
-*
-* @return
-* On success, 0 is returned. On error, -1 is returned.
-*
-*/
-extern int QL_LAN_DHCP_Config_Set(ql_lan_dhcp_config_s lan_dhcp_config);
-
-/**
-* Get the network configuration: dhcp configuration.
-*
-* @param [out] lan_dhcp_config
-*
-* @return
-* On success, 0 is returned. On error, -1 is returned.
-*
-*/
-extern int QL_LAN_DHCP_Config_Get(ql_lan_dhcp_config_s *lan_dhcp_config);
-
-#endif
-
-
diff --git a/mbtk/include/ql/ql_nw.h b/mbtk/include/ql/ql_nw.h
deleted file mode 100755
index 8e1d237..0000000
--- a/mbtk/include/ql/ql_nw.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/**
- @file
- ql_nw.h
-
- @brief
- This file provides the definitions for nw, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-14/08/2019 Nebula.li create
-=============================================================================*/
-
-#ifndef __QL_NW_H__
-#define __QL_NW_H__
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define QL_NW_IND_VOICE_REG_EVENT_FLAG (1 << 0) //VOICE注册事件
-#define QL_NW_IND_DATA_REG_EVENT_FLAG (1 << 1) //DATA注册事件
-#define QL_NW_IND_SIGNAL_STRENGTH_EVENT_FLAG (1 << 2) //信号强度事件
-#define QL_NW_IND_NITZ_TIME_UPDATE_EVENT_FLAG (1 << 3) //时间跟新事件
-//START baron-2020.02.29: add for ims register state indication
-#define QL_NW_IND_IMS_NETWORK_STATE_CHANGED_FLAG (1 << 4) //ims register state change
-//END
-#define CELL_MAX_NUM 20
-
-typedef enum
-{
- QL_NW_SUCCESS,
- QL_NW_GENERIC_FAILURE,
- QL_NW_RADIO_NOT_AVAILABLE,
-}QL_NW_ERROR_CODE;
-
-typedef enum {
- QL_NW_PREF_NET_TYPE_GSM_WCDMA = 0,
- QL_NW_PREF_NET_TYPE_GSM_ONLY = 1,
- QL_NW_PREF_NET_TYPE_WCDMA = 2,
- QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO = 3, //根据 PRL自动选择GSM、WCDMA
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA = 9, //自动选择LTE、GSM、WCDMA
- QL_NW_PREF_NET_TYPE_LTE_ONLY = 11,
- QL_NW_PREF_NET_TYPE_LTE_WCDMA = 12,
- QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF = 13, //优先GSM
- QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF = 14, //优先LTE
- QL_NW_PREF_NET_TYPE_LTE_GSM = 15,
- QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF = 16,
- QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF = 17,
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF = 19,
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF = 20,
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF = 21,
-} QL_NW_PREFERRED_NETWORK_TYPE;
-
-typedef struct
-{
- QL_NW_PREFERRED_NETWORK_TYPE preferred_nw_mode; //首选的网络制式,见QL_NW_PREFERRED_NETWORK_TYPE
- int roaming_pref; //漫游开关。 0 关; 1 开
-}QL_NW_CONFIG_INFO_T;
-
-typedef struct
-{
- char nitz_time[32]; //格式:format: YY/MM/DD HH:MM:SS '+/-'TZ daylight, 18/09/19 07:40:18 +32 00.
- unsigned long abs_time; //0表示不可用
- unsigned char leap_sec; //0表示不可用
-}QL_NW_NITZ_TIME_INFO_T;
-
-typedef struct
-{
- char long_eons[128];
- char short_eons[128];
- char mcc[4];
- char mnc[4];
-}QL_NW_OPERATOR_INFO_T;
-
-//START baron-2020.02.29: add for ims register state
-typedef struct __volte_state
-{
- int reg_state; /*0: not registered, 1: registered*/
-}VOLTE_STATE;
-//END
-
-typedef enum
-{
- QL_NW_ACCESS_TECH_GSM = 0,
- QL_NW_ACCESS_TECH_GSM_COMPACT = 1,
- QL_NW_ACCESS_TECH_UTRAN = 2,
- QL_NW_ACCESS_TECH_GSM_wEGPRS = 3,
- QL_NW_ACCESS_TECH_UTRAN_wHSDPA = 4,
- QL_NW_ACCESS_TECH_UTRAN_wHSUPA = 5,
- QL_NW_ACCESS_TECH_UTRAN_wHSDPA_HSUPA = 6,
- QL_NW_ACCESS_TECH_E_UTRAN = 7,
- QL_NW_ACCESS_TECH_UTRAN_HSPAP = 8,
- QL_NW_ACCESS_TECH_E_UTRAN_CA = 9,
- QL_NW_ACCESS_TECH_NONE = 10,
-}QL_NW_ACCESS_TECHNOLOGY;
-
-typedef struct
-{
- int status; //0:未知的网络;1:可用的网络;2:当前的网络;3:禁止使用的网络
- QL_NW_OPERATOR_INFO_T operator_name; //运营商信息,见QL_NW_OPERATOR_INFO_T。
- QL_NW_ACCESS_TECHNOLOGY act; //注网制式,见QL_NW_RADIO_TECH_TYPE_T。
-}QL_NW_SCAN_ENTRY_INFO_T;
-
-typedef struct
-{
- int entry_len; //可用网络的个数
- QL_NW_SCAN_ENTRY_INFO_T entry[40]; //可用网络的列表,见QL_NW_SCAN_ENTRY_INFO_T。
-}QL_NW_SCAN_RESULT_LIST_INFO_T;
-
-
-typedef enum {
- QL_NW_RADIO_TECH_UNKNOWN = 0,
- QL_NW_RADIO_TECH_GPRS = 1,
- QL_NW_RADIO_TECH_EDGE = 2,
- QL_NW_RADIO_TECH_UMTS = 3,
- QL_NW_RADIO_TECH_IS95A = 4,
- QL_NW_RADIO_TECH_IS95B = 5,
- QL_NW_RADIO_TECH_1xRTT = 6,
- QL_NW_RADIO_TECH_HSDPA = 9,
- QL_NW_RADIO_TECH_HSUPA = 10,
- QL_NW_RADIO_TECH_HSPA = 11,
- QL_NW_RADIO_TECH_EHRPD = 13,
- QL_NW_RADIO_TECH_LTE = 14,
- QL_NW_RADIO_TECH_HSPAP = 15, // HSPA+
- QL_NW_RADIO_TECH_GSM = 16,
- QL_NW_RADIO_TECH_TD_SCDMA = 17,
- QL_NW_RADIO_TECH_IWLAN = 18,
- QL_NW_RADIO_TECH_LTEP = 19,
- QL_NW_RADIO_TECH_DC_HSPA = 20
-} QL_NW_RADIO_TECHNOLOGY;
-
-typedef enum {
- QL_NW_REG_STATE_NOT_REGISTERED=0, //not registered, MT is not currently searching an operator to register to
- QL_NW_REG_STATE_HOME_NETWORK=1, //registered, home network
- QL_NW_REG_STATE_TRYING_ATTACH_OR_SEARCHING=2, //not registered, but MT is currently trying to attach or searching an operator to register to
- QL_NW_REG_STATE_DENIED=3, //registration denied
- QL_NW_REG_STATE_UNKNOWN=4, //unknown
- QL_NW_REG_STATE_ROAMING=5, //registered, roaming
- QL_NW_REG_STATE_HOME_NETWORK_SMS_ONLY=6, //registered for “SMS only”, home network (not applicable)
- QL_NW_REG_STATE_ROAMING_SMS_ONLY=7,// registered for “SMS only”, roaming (not applicable)
- QL_NW_REG_STATE_ATTACHED_EMERGENCY_ONLY=8, //attached for emergency bearer services only
- QL_NW_REG_STATE_HOME_NETWORK_CSFB_NOT_PREFERRED=9, //registered for “CSFB not preferred”, home network (not applicable)
- QL_NW_REG_STATE_ROAMING_CSFB_NOT_PREFERRED=10,//registered for “CSFB not preferred”, roaming (not applicable)
- QL_NW_REG_STATE_EMERGENCY_ONLY=11,//emergency bearer services only
-}QL_NW_REG_STATE;
-
-typedef struct
-{
- QL_NW_REG_STATE state; //注册状态
- int lac;
- int cid;
- QL_NW_RADIO_TECHNOLOGY rat;
- int rejectCause; //注册被拒绝的原因
- int psc; //Primary Scrambling Code
-} QL_NW_COMMON_REG_STATUS_INFO_T;
-
-typedef struct
-{
- QL_NW_COMMON_REG_STATUS_INFO_T voice_reg; //VOICE注册信息,见QL_NW_COMMON_REG_STATUS_INFO_T
- QL_NW_COMMON_REG_STATUS_INFO_T data_reg; //DATA注册信息。
-}QL_NW_REG_STATUS_INFO_T;
-
-typedef struct
-{
- int nw_selection_mode; //0 自动;1手动
- char mcc[4];
- char mnc[4];
- QL_NW_ACCESS_TECHNOLOGY act; //selection 制式,见QL_NW_ACCESS_TECHNOLOGY。
-}QL_NW_SELECTION_INFO_T;
-
-typedef struct {
- int rssi;
- int bitErrorRate;
- int rscp;
- int ecio;
-} QL_NW_GW_SIGNAL_STRENGTH_INFO_T;
-
-typedef struct {
- int rssi;
- int rsrp;
- int rsrq;
- int rssnr;
- int cqi;
-} QL_NW_LTE_SIGNAL_STRENGTH_INFO_T;
-
-typedef struct {
- QL_NW_GW_SIGNAL_STRENGTH_INFO_T GW_SignalStrength;
- QL_NW_LTE_SIGNAL_STRENGTH_INFO_T LTE_SignalStrength;
-}QL_NW_SIGNAL_STRENGTH_INFO_T;
-
-/* CSQ: just get rssi and ber */
-typedef struct {
- int rssi;
- int bitErrorRate;
-} QL_NW_CSQ_SIGNAL_STRENGTH_INFO_T;
-
-typedef struct
-{
- int flag; /**Cell type, 0:present,1:neighbor.*/
- int cid; /**Cell ID, (0 indicates information is not represent).*/
- int mcc; /**This field should be ignored when cid is not present*/
- int mnc; /**This field should be ignored when cid is not present*/
- int lac; /**Location area code.(This field should be ignord when cid is not present). */
- int arfcn; /**Absolute RF channel number. */
- char bsic; /**Base station identity code. (0 indicates information is not present). */
- int lenOfMnc; /**Length of MNC, value range (2,3) */
-}QL_MCM_NW_GSM_CELL_INFO_T;
-
-typedef struct
-{
- int flag; /**Cell type, 0:present,1:inter,2:intra.*/
- int cid; /**Cell ID, (0 indicates information is not represent).*/
- int lcid; /**UTRAN Cell ID (0 indicates information is not present). */
- int mcc; /**This field should be ignored when cid is not present*/
- int mnc; /**This field should be ignored when cid is not present*/
- int lac; /**Location area code. (This field should be ignored when cid is not present). */
- int uarfcn; /**UTRA absolute RF channel number. */
- int psc; /**Primary scrambling code. */
- int lenOfMnc; /**Length of MNC, value range (2,3) */
-}QL_MCM_NW_UMTS_CELL_INFO_T;
-
-typedef struct
-{
- int flag; /**Cell type, 0:present,1:inter,2:intra.*/
- int cid; /**<Cell ID, (0 indicates information is not represent).*/
- int mcc; /**This field should be ignored when cid is not present*/
- int mnc; /**This field should be ignored when cid is not present*/
- int tac; /**Tracing area code (This field should be ignored when cid is not present). */
- int pci; /**Physical cell ID. Range: 0 to 503. */
- int earfcn; /**E-UTRA absolute radio frequency channel number of the cell. RANGE: 0 TO 65535. */
- int lenOfMnc; /**Length of MNC, value range (2,3) */
- int rsrp;
- int rsrq;
-}QL_MCM_NW_LTE_CELL_INFO_T;
-
-/** Gets cell information. */
-typedef struct
-{
- int gsm_info_valid; /**< Must be set to TRUE if gsm_info is being passed. */
- int gsm_info_num; /**< Must be set to the number of elements in entry*/
- QL_MCM_NW_GSM_CELL_INFO_T gsm_info[CELL_MAX_NUM]; /**< GSM cell information (Serving and neighbor. */
- int umts_info_valid; /**< Must be set to TRUE if umts_info is being passed. */
- int umts_info_num; /**< Must be set to the number of elements in entry*/
- QL_MCM_NW_UMTS_CELL_INFO_T umts_info[CELL_MAX_NUM];/**< UMTS cell information (Serving and neighbor). */
- int lte_info_valid; /**< Must be set to TRUE if lte_info is being passed. */
- int lte_info_num; /**< Must be set to the number of elements in entry*/
- QL_MCM_NW_LTE_CELL_INFO_T lte_info[CELL_MAX_NUM]; /**< LTE cell information (Serving and neighbor). */
-}QL_NW_CELL_INFO_T;
-
-
-typedef void (*QL_NW_EventHandlerFunc_t)(unsigned int ind_flag, void *ind_msg_buf, unsigned int ind_msg_len, void *contextPtr);
-
-QL_NW_ERROR_CODE ql_nw_init ();
-QL_NW_ERROR_CODE ql_nw_release();
-QL_NW_ERROR_CODE ql_nw_set_config(QL_NW_CONFIG_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_get_config(QL_NW_CONFIG_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_get_nitz_time_info(QL_NW_NITZ_TIME_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_event_register(unsigned int bitmask);
-QL_NW_ERROR_CODE ql_nw_get_operator_name(QL_NW_OPERATOR_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_perform_scan(QL_NW_SCAN_RESULT_LIST_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_get_reg_status(QL_NW_REG_STATUS_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_set_selection(QL_NW_SELECTION_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_get_selection(QL_NW_SELECTION_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_get_signal_strength(QL_NW_SIGNAL_STRENGTH_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_get_cell_info(QL_NW_CELL_INFO_T *pt_info);
-QL_NW_ERROR_CODE ql_nw_add_event_handler(QL_NW_EventHandlerFunc_t handlerPtr, void* contextPtr);
-QL_NW_ERROR_CODE ql_nw_get_volte_state(VOLTE_STATE *state);
-/* CSQ: just get rssi and ber */
-QL_NW_ERROR_CODE ql_nw_csq_get_signal_strength(QL_NW_CSQ_SIGNAL_STRENGTH_INFO_T *pt_info);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mbtk/include/ql/ql_oe.h b/mbtk/include/ql/ql_oe.h
deleted file mode 100755
index ad4f7db..0000000
--- a/mbtk/include/ql/ql_oe.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- @file
- ql_oe.h
-
- @brief
- Include related header file for quectel common api.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-24/07/2019 Nebula.li create
-03/08/2019 Juson.zhang add spi and uart head file
-03/08/2019 Carola.zhang add i2c and gpio head file
-=============================================================================*/
-
-#ifndef _QL_OE_H_
-#define _QL_OE_H_
-
-#include "DSI_ConnectManager.h"
-#include "ql_log.h"
-
-//-------------------------peripheral head file-------------------//
-#include "ql_uart.h"
-#include "ql_spi.h"
-#include "ql_gpio.h"
-#include "ql_i2c.h"
-#include "ql_sms.h"
-
-#endif
diff --git a/mbtk/include/ql/ql_sgmii.h b/mbtk/include/ql/ql_sgmii.h
deleted file mode 100755
index 292ab8c..0000000
--- a/mbtk/include/ql/ql_sgmii.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * @file ql_sgmii.h
- * @brief Quectel Openlinux SGMII public function declarations.
- *
- * @note
- *
- * @copyright Copyright (c) 2009-2017 @ Quectel Wireless Solutions Co., Ltd.
- */
-
-#ifndef __QL_SGMII_H__
-#define __QL_SGMII_H__
-#include "mbtk_type.h"
-
-
-typedef enum {
- QL_SGMII_AUTONEG_OFF = 0,
- QL_SGMII_AUTONEG_ON
-} ql_sgmii_autoneg_e;
-
-typedef enum {
- QL_SGMII_SPEED_10MHZ = 0,
- QL_SGMII_SPEED_100MHZ,
- QL_SGMII_SPEED_1000MHZ /* this speed can not support */
-} ql_sgmii_speed_e;
-
-typedef enum {
- QL_SGMII_DUPLEX_FULL = 0,
- QL_SGMII_DUPLEX_HALF
-} ql_sgmii_duplex_e;
-
-struct ql_sgmii_info {
- ql_sgmii_autoneg_e autoneg;
- ql_sgmii_speed_e speed;
- ql_sgmii_duplex_e duplex;
- unsigned long tx_bytes;
- unsigned long rx_bytes;
- unsigned long tx_pkts;
- unsigned long rx_pkts;
-};
-
-/**
- * Enables the SGMII ethernet module.
- *
- * @param None
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_sgmii_enable(void);
-
-/**
- * Disable the SGMII ethernet module.
- *
- * @param None
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_sgmii_disable(void);
-
-/**
- * Set the SGMII ethernet configuration: the ethernet auto negotiation configuration.
- *
- * @param [in] auto negotiation
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_sgmii_autoneg_set(ql_sgmii_autoneg_e autoneg);
-
-/**
- * Get the SGMII ethernet configuration: the ethernet auto negotiation configuration.
- *
- * @param [out] auto negotiation
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_sgmii_autoneg_get(ql_sgmii_autoneg_e *autoneg);
-
-/**
- * Set the SGMII ethernet configuration: the ethernet speed configuration.
- *
- * @param [in] ethernet speed
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_sgmii_speed_set(ql_sgmii_speed_e speed);
-
-/**
- * Get the SGMII ethernet configuration: the ethernet speed configuration.
- *
- * @param [out] the ethernet current speed
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_sgmii_speed_get(ql_sgmii_speed_e *speed);
-
-/**
- * Set the SGMII ethernet configuration: the ethernet duplex configuration.
- *
- * @param [in] ethernet duplex
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_sgmii_duplex_set(ql_sgmii_duplex_e duplex);
-
-/**
- * Get the SGMII ethernet configuration: the ethernet duplex configuration.
- *
- * @param [out] the ethernet current duplex
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_sgmii_duplex_get(ql_sgmii_duplex_e *duplex);
-
-/**
- * Get the sgmii ethernet information: transmit and receive bytes, transmit and receive packets, speed, duplex.
- *
- * @param [out] the ethernet information
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * the ql_sgmii_enable must be set enable
- *
- */
-extern int ql_smgii_info_get(struct ql_sgmii_info *info);
-
-
-#endif /* end of __QL_SGMII_H__ */
diff --git a/mbtk/include/ql/ql_sim.h b/mbtk/include/ql/ql_sim.h
deleted file mode 100755
index 38ad65c..0000000
--- a/mbtk/include/ql/ql_sim.h
+++ /dev/null
@@ -1,840 +0,0 @@
-/**
- @file
- ql_sim.h
-
- @brief
- This file provides the definitions for sim, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-21/08/2019 Nebula.li create
-=============================================================================*/
-
-#ifndef __QL_SIM_H__
-#define __QL_SIM_H__
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef unsigned char UINT8;
-typedef unsigned short UINT16;
-typedef unsigned long UINT32;
-typedef unsigned int UINT;
-
-typedef enum
-{
- QL_SIM_SUCCESS,
- QL_SIM_GENERIC_FAILURE,
- QL_SIM_RADIO_NOT_AVAILABLE,
- QL_SIM_INCORRECT_PASSWORD,
- QL_SIM_CARD_NO_INSERTED,
- QL_SIM_CARD_BUSY,
- QL_SIM_CARD_BLOCKED,
-}QL_SIM_ERROR_CODE;
-
-
-#define QL_SIM_MCC_LEN 4 /** Length of the MCC. */
-#define QL_SIM_MNC_MAX 4 /** Maximum length of the MNC. */
-#define QL_SIM_PLMN_NUM_MAX 24 /** Maximum number of PLMN data sets. */
-typedef struct
-{
- uint8_t mcc[QL_SIM_MCC_LEN]; /**< MCC value in ASCII characters.*/
- uint8_t mnc[QL_SIM_MNC_MAX]; /**< MNC value in ASCII characters.*/
-}QL_SIM_PLMN_INFO;
-typedef struct
-{
- uint32_t preferred_operator_list_num; /**< Must be set to the number of elements in preferred_operator_list. */
- QL_SIM_PLMN_INFO preferred_operator_list[QL_SIM_PLMN_NUM_MAX]; /**< Preferred operator list. */
-}QL_SIM_PREFERRED_OPERATOR_LIST; /* Message */
-
-#define QL_SIM_PIN_LEN_MAX 16 /** Maximum length of PIN data. */
-#define QUEC_CI_SIM_MAX_CMD_DATA_SIZE 261
-
-typedef struct
-{
- uint8_t pin_value[QL_SIM_PIN_LEN_MAX]; /* Value of the PIN */
-}QL_SIM_VERIFY_PIN_INFO;
-
-typedef struct
-{
- uint8_t old_pin_value[QL_SIM_PIN_LEN_MAX]; /**< Value of the old PIN as a sequence of ASCII characters. */
- uint8_t new_pin_value[QL_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QL_SIM_CHANGE_PIN_INFO;
-
-typedef struct
-{
- uint8_t puk_value[QL_SIM_PIN_LEN_MAX]; /**< Value of the PUK as a sequence of ASCII characters. */
- uint8_t new_pin_value[QL_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QL_SIM_UNBLOCK_PIN_INFO;
-
-typedef enum
-{
- QL_SIM_STAT_NOT_INSERTED,
- QL_SIM_STAT_READY,
- QL_SIM_STAT_SIM_PIN,
- QL_SIM_STAT_SIM_PUK,
- QL_SIM_STAT_PH_SIM_LOCK_PIN,
- QL_SIM_STAT_PH_SIM_LOCK_PUK,
- QL_SIM_STAT_PH_FSIM_PIN,
- QL_SIM_STAT_PH_FSIM_PUK,
- QL_SIM_STAT_SIM_PIN2,
- QL_SIM_STAT_SIM_PUK2,
- QL_SIM_STAT_PH_NET_PIN,
- QL_SIM_STAT_PH_NET_PUK,
- QL_SIM_STAT_PH_NET_SUB_PIN,
- QL_SIM_STAT_PH_NET_SUB_PUK,
- QL_SIM_STAT_PH_SP_PIN,
- QL_SIM_STAT_PH_SP_PUK,
- QL_SIM_STAT_PH_CORP_PIN,
- QL_SIM_STAT_PH_CORP_PUK,
- QL_SIM_STAT_BUSY,
- QL_SIM_STAT_BLOCKED,
- QL_SIM_STAT_UNKNOWN
-}QL_SIM_CARD_STATE; /**< Card state. */
-typedef enum
-{
- QL_SIM_CARD_TYPE_UNKNOWN = 0, /**< Unidentified card type. */
- QL_SIM_CARD_TYPE_ICC = 1, /**< Card of SIM or RUIM type. */
- QL_SIM_CARD_TYPE_UICC = 2, /**< Card of USIM or CSIM type. */
-}QL_SIM_CARD_TYPE;
-
-typedef enum CI_SIM_PRIM
-{
- CI_SIM_PRIM_EXECCMD_REQ = 1, /**< \brief Requests to execute a SIM command \details */
- CI_SIM_PRIM_EXECCMD_CNF, /**< \brief Confirms the request to execute a SIM command \details */
- CI_SIM_PRIM_DEVICE_IND, /**< \brief Indicates that the current SIM status changed \details */
- CI_SIM_PRIM_PERSONALIZEME_REQ, /**< \brief Requests that ME personalization be activated, deactivated, disabled, or queried \details */
- CI_SIM_PRIM_PERSONALIZEME_CNF, /**< \brief Confirms the request to activate, deactivate, disable, or query ME personalization \details */
- CI_SIM_PRIM_OPERCHV_REQ, /**< \brief Requests that CHVs be verified, enabled, disabled, changed, unblocked, or queried \details */
- CI_SIM_PRIM_OPERCHV_CNF, /**< \brief Confirms the request to verify, enable, disable, change, unblock, or query CHVs \details */
- CI_SIM_PRIM_DOWNLOADPROFILE_REQ, /**< \brief Requests a download of the profile that shows ME capabilities relevant to SIM Application Toolkit functionality \details The functionality of this primitive is equivalent to using the SIM command TERMINAL PROFILE in the CI_SIM_PRIM_EXECCMD_REQ primitive.
- * This primitive saves upper layer effort to build a header for the Terminal Profile SIM command.
- * If the pProfile pointer is NULL for this request, the communications interface assumes that the application layer does not support
- * SIM Application Toolkit operations. */
- CI_SIM_PRIM_DOWNLOADPROFILE_CNF, /**< \brief Confirms the request to download the profile that shows ME capabilities relevant to SIM Application Toolkit functionality \details */
- CI_SIM_PRIM_ENDATSESSION_IND, /**< \brief \details NOT SUPPORTED REMOVE FROM API */
- CI_SIM_PRIM_PROACTIVE_CMD_IND, /**< \brief Indicates a SIMAT proactive command \details This primitive forwards the SIMAT proactive command with its original syntax. The primitive CI_SIM_PRIM_ENABLE_SIMAT_INDS_REQ enables and disables proactive command indication. */
- CI_SIM_PRIM_PROACTIVE_CMD_RSP, /**< \brief Responds to the SIMAT proactive command \details The primitive forwards a SIMAT proactive command response from the entity, such as DISPLAY or TERMINAL, that received the proactive command. */
- CI_SIM_PRIM_ENVELOPE_CMD_REQ, /**< \brief Requests that an ENVELOPE command be executed \details */
- CI_SIM_PRIM_ENVELOPE_CMD_CNF, /**< \brief Confirms the request to execute an ENVELOPE command \details */
- CI_SIM_PRIM_GET_SUBSCRIBER_ID_REQ, /**< \brief Requests the subscriber ID \details */
- CI_SIM_PRIM_GET_SUBSCRIBER_ID_CNF, /**< \brief Confirms the request for the subscriber ID \details */
- CI_SIM_PRIM_GET_PIN_STATE_REQ, /**< \brief Requests the current PIN state \details */
- CI_SIM_PRIM_GET_PIN_STATE_CNF, /**< \brief Confirms the request for the current PIN state \details */
- CI_SIM_PRIM_GET_TERMINALPROFILE_REQ, /**< \brief Requests the SIMAT terminal profile \details */
- CI_SIM_PRIM_GET_TERMINALPROFILE_CNF, /**< \brief Confirms the request and returns the SIMAT terminal profile \details */
- CI_SIM_PRIM_ENABLE_SIMAT_INDS_REQ, /**< \brief Requests that SIMAT related indications, such as the proactive SIM command indication and the SIMAT session ended indication, be enabled or disabled \details */
- CI_SIM_PRIM_ENABLE_SIMAT_INDS_CNF, /**< \brief Confirms the request to enable or disable SIMAT related indications \details */
- CI_SIM_PRIM_LOCK_FACILITY_REQ, /**< \brief Requests to lock, unlock, or query SIM-related ME \details */
- CI_SIM_PRIM_LOCK_FACILITY_CNF, /**< \brief Confirms a request to lock, unlock, or query SIM-related ME \details */
- CI_SIM_PRIM_GET_FACILITY_CAP_REQ, /**< \brief Requests the bitmask of supported SIM-related facility codes \details */
- CI_SIM_PRIM_GET_FACILITY_CAP_CNF, /**< \brief Confirms the request for the bitmask of supported SIM-related facility codes \details */
- CI_SIM_PRIM_GET_SIMAT_NOTIFY_CAP_REQ, /**< \brief Requests SIM Application Toolkit (SIMAT) notification capability information. \details */
- CI_SIM_PRIM_GET_SIMAT_NOTIFY_CAP_CNF, /**< \brief Confirms the request for SIM Application Toolkit (SIMAT) notification capability information \details */
- CI_SIM_PRIM_GET_CALL_SETUP_ACK_IND, /**< \brief Indicates that the SIM Application Toolkit (SIMAT) has initiated an outgoing CALL SETUP operation, and requests confirmation/acknowledgment from the mobile user \details The application returns the required acknowledgment in a CI_SIM_PRIM_GET_CALL_SETUP_ACK_RSP response. */
- CI_SIM_PRIM_GET_CALL_SETUP_ACK_RSP, /**< \brief Responds with an acknowledgment from the mobile user for an outgoing CALL SETUP indication \details The mobile user may accept (allow) or reject (disallow) the SIMAT initiated CALL SETUP operation.
-* If the user allows the CALL SETUP, it proceeds. If the user disallows the CALL SETUP, it is aborted.
-* If the CALL SETUP is allowed to proceed, the MO call progression is managed by the normal call control procedures. See the
-* CI CC Service Group API definition for more information. */
-
- /* service provider name */
- CI_SIM_PRIM_GET_SERVICE_PROVIDER_NAME_REQ, /**< \brief Requests the service provider name, as stored on SIM or USIM \details The PIN status is not required to read this information. */
- CI_SIM_PRIM_GET_SERVICE_PROVIDER_NAME_CNF, /**< \brief Confirms the request to get the service provider name, as stored on SIM or USIM \details The service provider name is coded as 7-bit GSM characters, with the most-significant bit of each character set to zero.
- * The service provider name pointer is NULL if the result code indicates an error. */
-
- /* Message Waiting Information */
- CI_SIM_PRIM_GET_MESSAGE_WAITING_INFO_REQ, /**< \brief Requests to get message waiting information stored on SIM or USIM \details The PIN status is required to read this information. */
- CI_SIM_PRIM_GET_MESSAGE_WAITING_INFO_CNF, /**< \brief Confirms the request to get message waiting information stored on SIM or USIM \details If the result code indicates an error, the message waiting status information is not useful.
- * There is a difference between the message categories defined for 2G and 3G SIM storage. This is rationalized by the CCI implementation. */
- CI_SIM_PRIM_SET_MESSAGE_WAITING_INFO_REQ, /**< \brief Requests to set message waiting information on SIM or USIM \details Requires PIN status to write this information. There is a difference between the message categories defined for 2G and 3G SIM storage. This is rationalized by the CCI implementation. */
- CI_SIM_PRIM_SET_MESSAGE_WAITING_INFO_CNF, /**< \brief Confirms a request to set the message waiting information on SIM or USIM \details */
-
- /* SIM Service Table */
- CI_SIM_PRIM_GET_SIM_SERVICE_TABLE_REQ, /**< \brief Requests to get the SIM Service Table from SIM or USIM \details The PIN status is required to read this information. If CPHS features are not supported by the handset, this information is unavailable. */
- CI_SIM_PRIM_GET_SIM_SERVICE_TABLE_CNF, /**< \brief Confirms the request to get the SIM Service Table from SIM or USIM \details If CPHS features are not supported by the handset, this information is unavailable. */
-
- /* CPHS Customer Service Profile */
- CI_SIM_PRIM_GET_CUSTOMER_SERVICE_PROFILE_REQ, /**< \brief Requests to get the CPHS customer service profile from SIM or USIM \details The PIN status is required to read this information. If CPHS features are not supported by the handset, this information is unavailable. */
- CI_SIM_PRIM_GET_CUSTOMER_SERVICE_PROFILE_CNF, /**< \brief Confirms the request and returns the CPHS customer service profile from SIM or USIM. \details If CPHS features are not supported by the handset, this information is unavailable. */
-
- /* Display Alpha and Icon Identifiers */
- CI_SIM_PRIM_SIMAT_DISPLAY_INFO_IND, /**< \brief Indicates to the application that text and optionally an icon should be displayed.
- * The text to be displayed results from a SAT transaction such as SS, SMS, USSD, SS, or send DTMF. \details */
-
- /* Default Language */
- CI_SIM_PRIM_GET_DEFAULT_LANGUAGE_REQ, /**< \brief Requests the default language stored on the SIM/USIM card \details */
- CI_SIM_PRIM_GET_DEFAULT_LANGUAGE_CNF, /**< \brief Confirms the request to get the default language stored on the SIM/USIM card and returns the first entry in the EF_LP file \details Extract from ETSI TS 102.221: "the language code is a pair of alphanumeric characters, as defined in ISO 639 [30].
- * Each alphanumeric character shall be coded on one byte using the SMS default 7-bit coded alphabet as defined in TS 23.038
- * ("Man-machine Interface (MMI) of the User Equipment", revision 3.4.0, Doc Number 3GPP TS 22.030)
- * with bit 8 set to 0.". 'FF FF' means undefined default language. */
-
- /* Generic SIM commands */
- CI_SIM_PRIM_GENERIC_CMD_REQ, /**< \brief Requests to send a generic command to the SIM/USIM card
- * \details The request reflects the structure of a SIM application protocol data unit (APDU),
- * as defined in ETSI 102.221. The 'class of instruction' element is not controlled by the user, comm. use class 0x0 or 0xa depending on the command.
- * Note that updating a file using this command only updates the file on the SIM; it does not trigger a REFRESH of the ME memory. */
- CI_SIM_PRIM_GENERIC_CMD_CNF, /**< \brief Confirms a request to send a generic command to the SIM or USIM \details */
-
- /* Indication of card type, status and PIN state */
- CI_SIM_PRIM_CARD_IND, /**< \brief Indicates that the current SIM/USIM status changed \details This indication is sent each time CI_SIM_PRIM_DEVICE_IND is sent. */
-
- CI_SIM_PRIM_IS_EMERGENCY_NUMBER_REQ, /**< \brief Requests to determine if the specified dial number is an emergency call code \details */
- CI_SIM_PRIM_IS_EMERGENCY_NUMBER_CNF, /**< \brief Confirms the request to determine if the specified number is an emergency call code \details If a SIM card is present, the EF_ECC SIM card file is searched for the specified number. If a SIM card is not present, a default table of possible emergency call codes is searched for the specified number, as per TS 22.101. */
-
- CI_SIM_PRIM_SIM_OWNED_IND, /**< \brief Indicates whether the SIM is owned
- * \details This indication is sent each time a SIM-OK notification is received
- * from the protocol stack and indicates that the SIM card can be accessed. SIM owned is TRUE if the IMSI did not change
- * since the last SIM-OK notification. */
- CI_SIM_PRIM_SIM_CHANGED_IND, /**< \brief Indicates whether the IMSI on the current SIM has changed
- * \details This indication is sent each time a SIM-OK notification is received
- * from the protocol stack. */
- CI_SIM_PRIM_DEVICE_STATUS_REQ, /**< \brief Requests SIM status \details */
- CI_SIM_PRIM_DEVICE_STATUS_CNF, /**< \brief Confirms the request for the current SIM status \details */
- CI_SIM_PRIM_READ_MEP_CODES_REQ, /**< \brief Requests the MEP codes for a specified category \details This operation does not require a password.*/
- CI_SIM_PRIM_READ_MEP_CODES_CNF, /**< \brief Confirms the request and returns the MEP codes for the specified category \details */
- CI_SIM_PRIM_UDP_LOCK_REQ, /**< \brief Requests an activate, deactivate, or query UDP lock \details An operation can be done on only one category at a time. A password is required for an unlock operation. */
- CI_SIM_PRIM_UDP_LOCK_CNF, /**< \brief Confirms the UDP lock request \details */
- CI_SIM_PRIM_UDP_CHANGE_PASSWORD_REQ, /**< \brief Requests to set a new password for a UDP lock \details */
- CI_SIM_PRIM_UDP_CHANGE_PASSWORD_CNF, /**< \brief Confirms the request to set a new password for a UDP lock \details */
- CI_SIM_PRIM_UDP_ASL_REQ, /**< \brief Requests to manipulate the UDP authorized SIM list \details */
- CI_SIM_PRIM_UDP_ASL_CNF, /**< \brief Confirms the request to manipulate the UDP authorized SIM list \details */
-/* Michal Bukai - Virtual SIM support - START */
- CI_SIM_PRIM_SET_VSIM_REQ, /**< \brief Requests to enable virtual SIM
- * \details Virtual SIM can be enabled if no SIM is inserted.
- * An error is sent if the user tried to enable virtual SIM while a SIM is inserted.
- * The application needs to reset the communication subsystem after receiving a confirmation. */
- CI_SIM_PRIM_SET_VSIM_CNF, /**< \brief Confirms setting virtual SIM
- * \details Virtual SIM can be enabled if no SIM is inserted.
- * An error is sent if the user tried to enable virtual SIM while a SIM is inserted.
- * The application needs to reset the communication subsystem after receiving a confirmation. */
- CI_SIM_PRIM_GET_VSIM_REQ, /**< \brief Requests the current setting of the virtual SIM (enabled / disabled) \details*/
- CI_SIM_PRIM_GET_VSIM_CNF, /**< \brief Confirms the request and returns the current setting of the virtual SIM (enabled / disabled) \details*/
-/* Michal Bukai - Virtual SIM support - END */
-/*Michal Bukai - OTA support for AT&T - START*/
- CI_SIM_PRIM_CHECK_MMI_STATE_IND, /**< \brief \details NOT SUPPORTED REMOVE FROM API */
- CI_SIM_PRIM_CHECK_MMI_STATE_RSP, /**< \brief \details NOT SUPPORTED REMOVE FROM API */
-/*Michal Bukai - OTA support for AT&T - END*/
-/*Michal Bukai - BT SAP support - START*/
- CI_SIM_PRIM_BTSAP_CONNECT_REQ, /**< \brief Requests to start a BT SAP session \details */
- CI_SIM_PRIM_BTSAP_CONNECT_CNF, /**< \brief Confirms the request to start a BT SAP session \details */
- CI_SIM_PRIM_BTSAP_DISCONNECT_REQ, /**< \brief Requests to disconnect from a BT SAP session \details */
- CI_SIM_PRIM_BTSAP_DISCONNECT_CNF, /**< \brief Confirms the request to disconnect from a BT SAP session \details */
- CI_SIM_PRIM_BTSAP_TRANSFER_APDU_REQ, /**< \brief Requests to transfer APDU to the SIM/USIM \details */
- CI_SIM_PRIM_BTSAP_TRANSFER_APDU_CNF, /**< \brief Confirms the request to transfer APDU to the SIM/USIM and may return a response APDU from the SIM/USIM \details */
- CI_SIM_PRIM_BTSAP_TRANSFER_ATR_REQ, /**< \brief Requests to get Answer To Reset data from SIM/USIM \details */
- CI_SIM_PRIM_BTSAP_TRANSFER_ATR_CNF, /**< \brief Confirms the request to get Answer To Reset data from SIM/USIM \details */
- CI_SIM_PRIM_BTSAP_SIM_CONTROL_REQ, /**< \brief Requests to control SIM/USIM status, this command can be used to power off, power on or reset the SIM/USIM \details */
- CI_SIM_PRIM_BTSAP_SIM_CONTROL_CNF, /**< \brief Confirms the SIM control request \details */
- CI_SIM_PRIM_BTSAP_STATUS_IND, /**< \brief indicates a change in the availably of the subscription module during BT SAP connection \details */
- CI_SIM_PRIM_BTSAP_STATUS_REQ, /**< \brief Requests the subscription module availability status during BT SAP connection \details */
- CI_SIM_PRIM_BTSAP_STATUS_CNF, /**< \brief Confirms the request and returns the status of the subscription module during BT SAP connection \details */
- CI_SIM_PRIM_BTSAP_SET_TRANSPORT_PROTOCOL_REQ, /**< \brief Requests to set transport protocol \details */
- CI_SIM_PRIM_BTSAP_SET_TRANSPORT_PROTOCOL_CNF, /**< \brief Confirms the request to set transport protocol \details */
-/*Michal Bukai - BT SAP support - END*/
-/*Michal Bukai - Add IMSI to MEP code group - START*/
- CI_SIM_PRIM_MEP_ADD_IMSI_REQ, /**< \brief Requests to add the current IMSI to MEP SIM /USIM code group
- * \details This operation requires a password.
- * This operation requires that SIM/USIM personalization is deactivated.*/
- CI_SIM_PRIM_MEP_ADD_IMSI_CNF, /**< \brief Confirms the request to add the current IMSI to MEP SIM /USIM code group. \details */
-/*Michal Bukai - Add IMSI to MEP code group - END*/
-/*Michal Bukai - SIM Logic CH - NFC\ISIM support - START*/
- CI_SIM_PRIM_OPEN_LOGICAL_CHANNEL_REQ, /**< \brief Requests to open a logical channel that will be used to access the UICC application identified by DFname. \details The UICC will open a new logical channel; select the application identified by the DFname, and return a session ID that will be used to identify the new channel.*/
- CI_SIM_PRIM_OPEN_LOGICAL_CHANNEL_CNF, /**< \brief Confirms the request to open a logical channel and returns the session ID. \details */
- CI_SIM_PRIM_CLOSE_LOGICAL_CHANNEL_REQ, /**< \brief Requests to close a logical channel. \details */
- CI_SIM_PRIM_CLOSE_LOGICAL_CHANNEL_CNF, /**< \brief Confirms the request to close a logical channel. \details */
-/*Michal Bukai - SIM Logic CH - NFC\ISIM support support - END*/
-/*Michal Bukai - additional SIMAT primitives - START*/
- CI_SIM_PRIM_SIMAT_CC_STATUS_IND, /**< \brief Indicates the SIM Application Toolkit (SIMAT) call control status response
- * \details If call control service in SIMAT is activated, all dialled digit strings, supplementary service control strings and USSD strings are passed to the UICC before the call setup request,
- * the supplementary service operation or the USSD operation is sent to the network.
- * The SIMAT has the ability to allow, bar or modify the request.
- * In addition SIMAT has the ability to replace the request by another operation, for instance call request may be replaced by SS or USSD operation.
- */
- CI_SIM_PRIM_SIMAT_SEND_CALL_SETUP_RSP_IND, /**< \brief Indicates the response sent to SIM Application Toolkit (SIMAT) after call setup. \details */
- CI_SIM_PRIM_SIMAT_SEND_SS_USSD_RSP_IND, /**< \brief Indicates the response sent to SIM Application Toolkit (SIMAT) after SS or USSD operation. \details */
- CI_SIM_PRIM_SIMAT_SM_CONTROL_STATUS_IND, /**< \brief Indicates the SIM Application Toolkit (SIMAT) short message control status response.
- \details If SM control service in SIMAT is activated, all MO short messages are passed to the UICC before the short message is sent to the network.
- * The SIMAT has the ability to allow, bar or modify the destination address.
- */
- CI_SIM_PRIM_SIMAT_SEND_SM_RSP_IND, /**< \brief Indicates the response sent to SIM Application Toolkit (SIMAT) after SM operation. \details */
-/*Michal Bukai - additional SIMAT primitives - END*/
-
-/*Michal Bukai - RSAP support - START*/
- CI_SIM_PRIM_RSAP_CONN_REQ_IND, /**< \brief Request to connect to a remote SIM received from the protocol stack \details */
- CI_SIM_PRIM_RSAP_CONN_REQ_RSP, /**< \Response to protocol stack request to connect to a remote SIM \details */
- CI_SIM_PRIM_RSAP_STAT_REQ, /**< \brief Request received from a SAP conversion module to update the RSAP card status.
- * \details This request is actually an indication from a remote SAP conversion module indicating a status change in the remote connection or card status */
- CI_SIM_PRIM_RSAP_STAT_CNF, /**< \brief Confirms that the update of the remote card status was received by the protocol stack \details */
- CI_SIM_PRIM_RSAP_DISCONN_REQ_IND, /**< \brief Request to disconnect from a remote SIM received from the protocol stack \details */
- CI_SIM_PRIM_RSAP_DISCONN_REQ_RSP, /**< \Response to protocol stack request to disconnect from a remote SIM \details */
- CI_SIM_PRIM_RSAP_GET_ATR_IND, /**< \brief Request to get ATR from a remote SIM received from the protocol stack \details */
- CI_SIM_PRIM_RSAP_GET_ATR_RSP, /**< \brief Response from a remote SIM with the ATR APDU \details */
- CI_SIM_PRIM_RSAP_GET_STATUS_REQ_IND, /**< \brief Request from the protocol stack to get the RSAP connection status.
- * \details The request is answered by CI_SIM_PRIM_RSAP_CONN_STAT_REQ */
-
- CI_SIM_PRIM_RSAP_SET_TRAN_P_REQ_IND, /**< \brief Request from the protocol stack to change the transport protocol of the remote SIM \details */
- CI_SIM_PRIM_RSAP_SET_TRAN_P_REQ_RSP, /**< \brief Response to a protocol stack request to change the transport protocol of the remote SIM.
- * \details If the requested transport protocol is supported by the remote SIM and by the SAP conversion module,
- * the requested transport protocol is selected and the remote SIM is reset. If the requested transport protocol is not supported,
- * SIM status is changed to CARD_NOT_ACC. The request is followed by CI_SIM_PRIM_RSAP_CONN_STAT_REQ, which indicates the new remote SIM status.*/
- CI_SIM_PRIM_RSAP_SIM_CONTROL_REQ_IND, /**< \brief Request from the protocol stack to control the remote SIM status.
- * \details This command can be used to power off, power on, or reset the remote SIM */
- CI_SIM_PRIM_RSAP_SIM_CONTROL_REQ_RSP, /**< \brief Response to a protocol stack request to control the remote SIM status.
- * \details The response is followed by CI_SIM_PRIM_RSAP_CONN_STAT_REQ, which indicates the new status of the remote SIM.*/
- CI_SIM_PRIM_RSAP_SIM_SELECT_REQ, /**< \brief Request to select the local or remote SIM \details */
- CI_SIM_PRIM_RSAP_SIM_SELECT_CNF, /**< \brief Confirms the request to select the local or remote SIM \details */
- CI_SIM_PRIM_RSAP_STATUS_IND, /**< \brief Indicates that the current SIM/USIM status changed during RSAP connection \details */
- CI_SIM_PRIM_RSAP_TRANSFER_APDU_IND, /**< \brief Request from the protocol stack to transfer APDU to the remote SIM \details */
- CI_SIM_PRIM_RSAP_TRANSFER_APDU_RSP, /**< \brief Request from the protocol stack to transfer APDU to the remote SIM.
- * \details A response APDU is returned if the transfer of APDU is successful.*/
- /*Michal Bukai - RSAP support - END*/
-
- CI_SIM_PRIM_DEVICE_RSP, /**< \brief Response to CI_SIM_PRIM_DEVICE_RSP.
- * \details This response is confirms that the CI_SIM_PRIM_DEVICE_RSP has been received and handled. Specially the SIM clock stop level. This indicates the Comm that D2 can be enabled on SIM driver level.*/
-//ICC ID feature
- CI_SIM_PRIM_ICCID_IND, /**< \brief Indicates the content of the EF-ICCID file. This indication is sent at init. The EF-ICCID can be accessed even if PIN is required.*/
- CI_SIM_PRIM_GET_ICCID_REQ, /**< \brief Request to get the content of the EF-ICCID file. Can be sent if ICC is ready.
- * \details Can be sent when the SIM state is CI_SIM_ST_READY or CI_SIM_ST_INSERTED. Otherwise the request will fail.*/
-
- CI_SIM_PRIM_GET_ICCID_CNF, /**< \brief Confirmation with the ICC id to the request to get the ICC Id.*/
-//ICC ID feature
- CI_SIM_PRIM_EAP_AUTHENTICATION_REQ, /**< \brief Requests to exchange EAP packets with the UICC. */
- CI_SIM_PRIM_EAP_AUTHENTICATION_CNF, /**< \brief Confirms the EAP authentication request and returns the authentication response */
-
- CI_SIM_EAP_RETRIEVE_PARAMETERS_REQ, /**< \brief Requests to retrieve EAP parameters from the UICC. */
- CI_SIM_EAP_RETRIEVE_PARAMETERS_CNF, /**< \brief Confirms the request to retrieve EAP parameters and returns the contents of the
- * \elementary file corresponding to requested parameter.*/
-
- CI_SIM_PRIM_GET_NUM_UICC_APPLICATIONS_REQ,/**< \brief Requests to get number of applications available on the UICC. */
- CI_SIM_PRIM_GET_NUM_UICC_APPLICATIONS_CNF,/**< \brief Confirms the request to get number of applications available on the UICC. */
-
- CI_SIM_PRIM_GET_UICC_APPLICATIONS_INFO_REQ, /**< \brief Requests to get list of applications available on the UICC. */
- CI_SIM_PRIM_GET_UICC_APPLICATIONS_INFO_CNF, /**< \brief Confirms the request to get list of applications available on the UICC. */
- /* ADD NEW COMMON PRIMITIVES HERE, BEFORE 'CI_SIM_PRIM_LAST_COMMON_PRIM' */
- /*2013.12.11, added by Xili for CQ00051618, begin*/
- CI_SIM_PRIM_ISIM_AID_IND, /**< \brief Indicates the content of the ISIM Aid. This indication is sent at init if it had one. */
- /*2013.12.11, added by Xili for CQ00051618, end*/
-
- /* Add by jungle for CQ00057999 on 2014-04-02 Begin */
- CI_SIM_PRIM_APP_PIN_REQ,
- CI_SIM_PRIM_APP_PIN_CNF,
- /* Add by jungle for CQ00057999 on 2014-04-02 End*/
-
- /*2014.05.08, added by Xili for CQ00060947, begin*/
- CI_SIM_PRIM_ADMIN_DATA_IND,
- /*2014.05.08, added by Xili for CQ00060947, end*/
-
- /*2015.03.19, mod by Xili for adding ECC list indication, CQ00088196 begin*/
- CI_SIM_PRIM_ECC_LIST_IND,
- /*2015.03.19, mod by Xili for adding ECC list indication, CQ00088196 end*/
-
- /* Mod by jungle for CQ00089692 on 2015-04-08 Begin */
- CI_SIM_PRIM_EXEC_LARGE_CMD_CNF,
- CI_SIM_PRIM_GENERIC_LARGE_CMD_CNF,
- /* Mod by jungle for CQ00089692 on 2015-04-08 End */
-
- CI_SIM_PRIM_UPDATE_COUNT_REQ,
- CI_SIM_PRIM_UPDATE_COUNT_CNF,
-
- /* END OF COMMON PRIMITIVES LIST */
- CI_SIM_PRIM_LAST_COMMON_PRIM
-
- /* The customer specific extension primitives are added starting from
- * CI_SIM_PRIM_firstCustPrim = CI_SIM_PRIM_LAST_COMMON_PRIM as the first identifier.
- * The actual primitive names and IDs are defined in the associated
- * 'ci_sim_cust_xxx.h' file.
- */
-
- /* DO NOT ADD ANY MORE PRIMITIVES HERE */
-
-} _QuecCiSimPrim;
-
-typedef struct
-{
- uint8_t pin1_num_retries; /**< Number of PIN 1 retries. */
- uint8_t puk1_num_retries; /**< Number of PUK 1 retries. */
- uint8_t pin2_num_retries; /**< Number of PIN 2 retries. */
- uint8_t puk2_num_retries; /**< Number of PUK 2 retries. */
-}QL_SIM_CARD_PIN_INFO;
-
-typedef struct
-{
- QL_SIM_CARD_TYPE card_type; // SIM card type
- QL_SIM_CARD_STATE card_state; //SIM card state
- QL_SIM_CARD_PIN_INFO card_pin_info; // PIN info
-}QL_SIM_CARD_STATUS_INFO;
-
-
-#define QL_SIM_DATA_LEN_MAX 255
-typedef struct
-{
- uint32_t data_len; /**< Must be set to the number of elements in data. */
- uint8_t data[QL_SIM_DATA_LEN_MAX]; /**< Data retrieved from the card. */
-}QL_SIM_CARD_FILE_DATA;
-
-typedef enum
-{
- QL_SIM_FILE_TYPE_UNKNOWN = 0,/**< Unknown file type */
- QL_SIM_FILE_TYPE_TRANSPARENT = 1,/**< File structure consisting of a sequence of bytes. */
- QL_SIM_FILE_TYPE_CYCLIC = 2,/**< File structure consisting of a sequence of records, each containing the same fixed size in
- chronological order. Once all the records have been used, the oldest data is overwritten. */
- QL_SIM_FILE_TYPE_LINEAR_FIXED = 3, /**< File structure consisting of a sequence of records, each containing the same fixed size. */
-}QL_SIM_FILE_TYPE;
-
-typedef enum
-{
- QL_SIM_FILE_ACCESS_TYPE_ALWAYS =0,
- QL_SIM_FILE_ACCESS_TYPE_CHV1 =1,
- QL_SIM_FILE_ACCESS_TYPE_CHV2 =2,
- QL_SIM_FILE_ACCESS_TYPE_ADM =3,
-}QL_SIM_FILE_ACCESS_TYPE;
-
-typedef enum
-{
- QL_SIM_FILE_STATUS_INVALID =0,
- QL_SIM_FILE_STATUS_EFFECTIVE =1,
-}QL_SIM_FILE_STATUS;
-
-typedef struct
-{
- QL_SIM_FILE_ACCESS_TYPE read_access;
- QL_SIM_FILE_ACCESS_TYPE update_access;
-}QL_SIM_FILE_ACCESS_INFO;
-
-typedef struct
-{
- unsigned int id;
- QL_SIM_FILE_TYPE type; /**< File type: */
- QL_SIM_FILE_ACCESS_INFO access; /**< File access conditions: */
- QL_SIM_FILE_STATUS status; /**< File status: */
- unsigned int size; /**< Size of transparent files.*/
- unsigned int record_len; /**< Size of each cyclic or linear fixed file record.*/
- unsigned int record_count; /**< Number of cyclic or linear fixed file records.*/
-}QL_SIM_FILE_INFO;
-
-typedef struct
-{
- int sw1;
- int sw2;
-}QL_SIM_FILE_OPERATION_RET;
-
-typedef struct
-{ // when write, if phonenum is empty, it means to delete this item specified by index
- int index; // the record index in phone book
- uint8_t username[32]; // username
- uint8_t phonenum[24]; // Phone number, it can include '+'*/
-}QL_SIM_PHONE_BOOK_RECORD_INFO;
-
-typedef struct
-{
- int total; //total number of locations
- int used; //used number of locations
-}QL_SIM_PHONEBOOK_STATE;
-
-#define QL_SIM_PHONE_BOOK_RECORDS_MAX_COUNT 20
-typedef struct
-{
- int record_count; //the count of record
- QL_SIM_PHONE_BOOK_RECORD_INFO record[QL_SIM_PHONE_BOOK_RECORDS_MAX_COUNT]; // the list of record
-}QL_SIM_PHONE_BOOK_RECORDS_INFO;
-
-typedef enum
-{
- QL_SIM_PHONE_BOOK_STORAGE_DC,
- QL_SIM_PHONE_BOOK_STORAGE_EN,
- QL_SIM_PHONE_BOOK_STORAGE_FD,
- QL_SIM_PHONE_BOOK_STORAGE_LD,
- QL_SIM_PHONE_BOOK_STORAGE_MC,
- QL_SIM_PHONE_BOOK_STORAGE_ME,
- QL_SIM_PHONE_BOOK_STORAGE_MT,
- QL_SIM_PHONE_BOOK_STORAGE_ON,
- QL_SIM_PHONE_BOOK_STORAGE_RC,
- QL_SIM_PHONE_BOOK_STORAGE_SM,
- QL_SIM_PHONE_BOOK_STORAGE_AP,
- QL_SIM_PHONE_BOOK_STORAGE_MBDN,
- QL_SIM_PHONE_BOOK_STORAGE_MN,
- QL_SIM_PHONE_BOOK_STORAGE_SDN,
- QL_SIM_PHONE_BOOK_STORAGE_ICI,
- QL_SIM_PHONE_BOOK_STORAGE_OCI,
-}QL_SIM_PHONE_BOOK_STORAGE;
-
-
-
-typedef enum
-{
- QL_SIM_CARD_STATUS_UPDATE_EVENT = 0, /**< Card status update event. */
-
-}QL_SIM_NFY_MSG_ID;
-
-typedef void (*QL_SIM_CardStatusIndMsgHandlerFunc_t)
-(
- QL_SIM_NFY_MSG_ID msg_id,
- void *pv_data,
- int pv_data_len,
- void *contextPtr
-);
-
-
-QL_SIM_ERROR_CODE ql_sim_init();
-
-QL_SIM_ERROR_CODE ql_sim_release();
-
-/* Add callback function if anything changed specified by the mask in QL_LOC_Set_Indications*/
-QL_SIM_ERROR_CODE ql_sim_add_event_handler(QL_SIM_CardStatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_get_imsi
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the IMSI (for 3GPP)
- or IMSI_M (for 3GPP2) from the SIM in ASCII form
-
- @return
- void
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_imsi
-(
- uint8_t *imsi, ///< [OUT] IMSI buffer
- size_t imsiLen ///< [IN] IMSI buffer length
-);
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_get_iccid
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the ICCID from
- SIM in ASCII form
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_iccid
-(
- uint8_t *iccid, ///< [OUT] ICCID
- size_t iccidLen ///< [IN] ICCID buffer length
-);
-
-
-/*===========================================================================
-
- FUNCTION: QL_SIM_GetPhoql_sim_get_phonenumberneNumber
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the device phone
- number from MSISDN (for 3GPP) or MDN (for 3GPP2) from the SIM in
- ASCII form
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_phonenumber
-(
- uint8_t *phone_num, ///< [OUT] phone number
- size_t phoneLen ///< [IN] phone number buffer length
-);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_get_operator_plmn_list
-
-===========================================================================*/
-/*
- @brief
- Function sends multiple record based read commands to the modem
- to retrieve a list of operator preffered PLMN.
-
- @note
- Function should only be called for SIM/USIM
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_operator_plmn_list
-(
- QL_SIM_PREFERRED_OPERATOR_LIST *pt_info ///< [OUT] Preferred operator list
-);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_verify_pin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to verify either PIN1 or PIN2
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_verify_pin
-(
- QL_SIM_VERIFY_PIN_INFO *pt_info // [IN] PIN/PIN2
-);
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_change_pin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to change the value of
- either PIN
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_change_pin
-(
- QL_SIM_CHANGE_PIN_INFO *pt_info // [IN] PIN
-);
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_unblock_pin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to unblock a PIN1 or PIN2 that
- has been blocked
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_unblock_pin
-(
- QL_SIM_UNBLOCK_PIN_INFO *pt_info // [IN] input PUK/PUK2 and new PIN/PIN2
-);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_enable_pin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to enable PIN
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_enable_pin
-(
- QL_SIM_VERIFY_PIN_INFO *pt_info // [IN] PIN
-);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_disable_pin
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to disable PIN
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_disable_pin
-(
- QL_SIM_VERIFY_PIN_INFO *pt_info // [IN] PIN
-);
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_get_card_status
-
-===========================================================================*/
-/*
- @brief
- Function get sim card status informations
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_card_status
-(
- QL_SIM_CARD_STATUS_INFO *pt_info ///< [OUT] sim card status info output
-);
-
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_get_file_info
-
-===========================================================================*/
-/*
- @brief
- Function sends a command to the modem to retrieve the file info
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_file_info
-(
- unsigned int fileid,
- QL_SIM_FILE_INFO *file_info, // [OUT] output file info
- QL_SIM_FILE_OPERATION_RET *operation_ret // [OUT] return the operation status code
-);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_read_file
-
-===========================================================================*/
-/*
- @brief
- Function get the data of a EF file.
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_read_file
-(
- unsigned int fileid, // EF file id
- unsigned int index, // the index of record for a record EF file, the offest of date for a transparent EF file.
- unsigned int data_max_len, // the max length of output data.
- QL_SIM_CARD_FILE_DATA *file_data, // [OUT] File data
- QL_SIM_FILE_OPERATION_RET *operation_ret // [OUT] return the operation status code
-);
-
-/*===========================================================================
-
- FUNCTION: ql_sim_write_file
-
-===========================================================================*/
-/*
- @brief
- Function write data to a EF file.
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_write_file
-(
- unsigned int fileid, // EF file id
- int index, // the index of record for a record EF file, the offest of date for a transparent EF file.
- QL_SIM_CARD_FILE_DATA *file_data, ///< [IN] File data of the specified one by pt_info
- QL_SIM_FILE_OPERATION_RET *operation_ret // [OUT] return the operation status code
-);
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_read_phonebook_record
-
-===========================================================================*/
-/*
- @brief
- Function will get the phone book record.
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_read_phonebook_record
-(
- QL_SIM_PHONE_BOOK_STORAGE storage, //IN the storage position of the phone book
- int start_index, // the start index of records, 0: read record by username.
- int end_index, // the end index of records
- uint8_t *username, // the username in a record, it is valid when start_index is 0
- QL_SIM_PHONE_BOOK_RECORDS_INFO *records // the list of records
-);
-
-
-/*===========================================================================
-
- FUNCTION: ql_sim_write_phonebook_record
-
-===========================================================================*/
-/*
- @brief
- Function will write a record to a phone book.
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_write_phonebook_record
-(
- QL_SIM_PHONE_BOOK_STORAGE storage, //IN the storage position of the phone book
- QL_SIM_PHONE_BOOK_RECORD_INFO *record //IN a record
-);
-
-
-/*===========================================================================*/
-/*
- @brief
- Function will return the state of currently selected phonebook
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_get_phonebook_state(QL_SIM_PHONEBOOK_STATE *state);
-
-
-/*===========================================================================*/
-/*
- @brief
- Function will request to select the local or remote SIM
-
- @return
- QL_SIM_ERROR_CODE
-*/
-/*=========================================================================*/
-QL_SIM_ERROR_CODE ql_sim_select(UINT service, UINT is_remote);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mbtk/include/ql/ql_sleep_wakelock.h b/mbtk/include/ql/ql_sleep_wakelock.h
deleted file mode 100755
index e3266d1..0000000
--- a/mbtk/include/ql/ql_sleep_wakelock.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __QL_SLEEP_WAKELOCK_H__
-#define __QL_SLEEP_WAKELOCK_H__
-#include <stddef.h>
-
-/*
- * create wakelock, return the file description of the wakelock
- */
-extern int Ql_SLP_WakeLock_Create(const char *name, size_t len);
-
-/*
- * lock the wakelock by the file description of the wakelock
- */
-extern int Ql_SLP_WakeLock_Lock(int fd);
-
-
-/*
- * unlock the wakelock by the file description of the wakelock
- */
-extern int Ql_SLP_WakeLock_Unlock(int fd);
-
-/*
- * destroy the wakelock by the file description of the wakelock
- */
-extern int Ql_SLP_WakeLock_Destroy(int fd);
-
-/*
- * Enable/Disable autosleep function
- */
-extern int Ql_Autosleep_Enable(char enable);
-
-#endif //__QL_SLEEP_WAKELOCK_H__
diff --git a/mbtk/include/ql/ql_sms.h b/mbtk/include/ql/ql_sms.h
deleted file mode 100755
index cf5c872..0000000
--- a/mbtk/include/ql/ql_sms.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/*****************************************************************************
- * Copyright Statement:
- * --------------------
- * This software is protected by Copyright and the information contained
- * herein is confidential. The software may not be copied and the information
- * contained herein may not be used or disclosed except with the written
- * permission of Quectel Co., Ltd. 2016
- *
- *****************************************************************************/
-/*****************************************************************************
- *
- * Filename:
- * ---------
- * ql_sms.h
- *
- * Project:
- * --------
- * OpenLinux
- *
- * Description:
- * ------------
- * API definition for SMS.
- *
- *============================================================================
- * HISTORY
- *----------------------------------------------------------------------------
- * WHO WHEN WHAT
- *----------------------------------------------------------------------------
- * Pony.ma 19/09/2019 Create
- ****************************************************************************/
-
-#ifndef __QL_SMS_H__
-#define __QL_SMS_H__
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define MAX_ADDR_LEN 24
-#define FALSE 0
-#define TRUE 1
-
-#define QL_SMS_MIN_LEN 1
-#define MAX_LONGSMS_SEGMENT 8
-#define MAX_SMS_LENGTH (160*4)
-#define SMS_BUF_LEN (MAX_SMS_LENGTH + 32)
-#define MAX_LONGSMS_LENGTH (160*4*MAX_LONGSMS_SEGMENT)
-#define CI_MAX_COUNT_SMS_OF_SIM 50
-
-
-typedef unsigned char UINT8;
-typedef unsigned short UINT16;
-typedef unsigned int UINT32;
-
-typedef enum{
- QL_SMS_SUCCESS,
- QL_SMS_GENERIC_FAILURE,
- QL_SMS_PRAR_ERROR,
- QL_GET_RESPONSE_ERROR,
-}QL_SMS_ERROR_CODE;
-
-typedef enum
-{
- QL_SMS_RECV_EVENT = 0, /**< SMS come event. */
- QL_SMS_RECV_INDEX_EVENT, /**< SMS come event for index. */
-}QL_SMS_NFY_MSG_ID;
-
-typedef enum
-{
- QL_SMS_MODE_GSM = 0, //GSM
- QL_SMS_MODE_UCS2 //UCS2
-}QL_SMS_CODE_MODE;
-
-typedef struct
-{
- char number[32];
- char body[280]; // 姣忔潯鏀跺埌鐨勭煭淇¢暱搴︽渶澶т负280
- char time[32];
- int body_len;
- QL_SMS_CODE_MODE code_mode;
- char *pdu_str;
-}QL_SMS_STATUS_INFO;
-
-typedef struct
-{
- int item;
- char *name;
-}ql_sms_item;
-
-typedef void (*QL_SMS_StatusIndMsgHandlerFunc_t)
- (
- QL_SMS_NFY_MSG_ID msg_id,
- void *pv_data,
- int pv_data_len,
- void *contextPtr
- );
-
-typedef enum{
- QL_SMS_ClientInit = 0,
- QL_SMS_ClientRelease,
- //QL_SMS_SendSMS,
- QL_SMS_DeleteSMS,
- QL_SMS_SearchSMSTextMessage,
- QL_SMS_SearchSMSPduMessage,
- QL_SMS_AddSMSEventHandler,
- QL_SMS_GetSMSCenterAddress,
- QL_SMS_SetSMSCenterAddress,
- QL_SMS_SetSaveLocation,
- QL_SMS_GetSaveLocation,
- QL_SMS_SetSMSNotSave,
- QL_SMS_SetSMSMsgMode,
- QL_SMS_GetSMSMsgMode,
- QL_SMS_SetSMSCodeMode,
- QL_SMS_GetSMSCodeMode,
- QL_SMS_SetSMSReceiveDealmode,
- QL_SMS_SendTextSMS,
- QL_SMS_SendPduSMS,
- QL_SMS_GetSimNum,
- QL_SMS_GetIndex,
- QL_SMS_OptionMax,
-}QL_SMS_OPTION;
-
-typedef struct
-{
- char mem[5];
- int cur_num; //current sms numbers
- int max_nums; //Maximum number of messages that can be stored
-}sms_mem_t;
-
-typedef struct
-{
- sms_mem_t mem1; //messages to be read and deleted from this memory storage.
- sms_mem_t mem2; //messages will be written and sent to this memory storage.
- sms_mem_t mem3; //received messages will be placed in this memory storage if routing to PC is not set.
-}ql_sms_mem_info_t;
-
-typedef struct recvmessage_struct{
- char num[32];
- char buf[400];
- int buflen;
-}recvmessage;
-typedef struct{
- int storage_index; // 存贮索引
-} ql_sms_recv_index_event_t;
-
-
-typedef struct{
- int sms_index[CI_MAX_COUNT_SMS_OF_SIM];
- int count;
-} ql_auto_sms_index;
-
-
-
-
-/* init sms client */
-QL_SMS_ERROR_CODE ql_sms_init();
-/* deinit sms clint */
-QL_SMS_ERROR_CODE ql_sms_release();
-/* send message api */
-//QL_SMS_ERROR_CODE ql_sms_send_msg(uint8_t *destNum,uint8_t *data,size_t dataLen,int sms_type);
-/* get smsc api */
-QL_SMS_ERROR_CODE ql_sms_get_sms_center_address(uint8_t *sms_center_addree);
-/* register sms event header api*/
-QL_SMS_ERROR_CODE ql_sms_add_event_handler(QL_SMS_StatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr);
-/* set smsc api */
-QL_SMS_ERROR_CODE ql_sms_set_sms_center_address(unsigned char *destNum);
-/* delete message api */
-QL_SMS_ERROR_CODE ql_sms_delete_msg(size_t index);
-/* set sms storage api */
-QL_SMS_ERROR_CODE ql_sms_set_sms_pref_storage(size_t location);
-/* set sms not storage api */
-QL_SMS_ERROR_CODE ql_sms_set_sms_desave();
-QL_SMS_ERROR_CODE ql_set_sms_msg_mode(int messagemode);
-QL_SMS_ERROR_CODE ql_get_sms_msg_mode(int *messagemode);
-QL_SMS_ERROR_CODE ql_set_sms_code_mode(char* codemode);
-QL_SMS_ERROR_CODE ql_get_sms_code_mode(char *codemode);
-QL_SMS_ERROR_CODE ql_sms_get_sms_pref_storage(ql_sms_mem_info_t *mem_info);
-//QL_SMS_ERROR_CODE ql_search_sms_message(int index, recvmessage* payload);
-QL_SMS_ERROR_CODE ql_search_sms_text_message(int index, recvmessage* payload);
-QL_SMS_ERROR_CODE ql_search_sms_pdu_message(int index, recvmessage* payload);
-QL_SMS_ERROR_CODE ql_set_sms_recive_dealmode(int dealmode);
-QL_SMS_ERROR_CODE ql_sms_send_pdu_msg(uint8_t *phone_num,uint8_t *data,int sms_type);
-QL_SMS_ERROR_CODE ql_sms_send_text_msg(uint8_t *phone_num,uint8_t *data,int sms_type);
-QL_SMS_ERROR_CODE ql_sms_get_sim_num(uint8_t *sim_num);
-QL_SMS_ERROR_CODE ql_get_sms_index( int *sms_msg_info_ptr,int *smsnum);
-QL_SMS_ERROR_CODE ql_sms_list_sms(int stat, int index, char *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/mbtk/include/ql/ql_spi.h b/mbtk/include/ql/ql_spi.h
deleted file mode 100755
index d33660b..0000000
--- a/mbtk/include/ql/ql_spi.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- @file
- ql_spi.h
-
- @brief
- This file provides the definitions for spi driver, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-2019/08/20 Juson create
-=============================================================================*/
-#ifndef __QL_SPI_H__
-#define __QL_SPI_H__
-
-#define SPI_CPHA 0x01
-#define SPI_CPOL 0x02
-
-typedef enum
-{
- SPIMODE0 = (0|0),
- SPIMODE1 = (0|SPI_CPHA),
- SPIMODE2 = (SPI_CPOL|0),
- SPIMODE3 = (SPI_CPOL|SPI_CPHA),
-}SPI_MODE;
-
-typedef enum
-{
- S_6_5M = 6500000,
- S_13M = 13000000,
- S_26M = 26000000,
- S_52M = 50000000,
-}SPI_SPEED;
-
-/**
- * Function: Ql_SPI_Init
- * Description: spi init
- * Parameters: dev_name---device name
- * mode---spi mode
- * bits---spi per word
- * speed---spi transfer clock
- * Return: spi fd
- **/
-int Ql_SPI_Init(const char *dev_name, SPI_MODE mode, unsigned char bits, SPI_SPEED speed);
-
-/**
- * Function: Ql_SPI_DeInit
- * Description: spi deinit
- * Parameters: fd---spi fd
- * Return:
- */
-int Ql_SPI_DeInit(int fd);
-
-/**
- * Function: Ql_SPI_Write_Read
- * Description: spi write read function
- * Parameters: fd---spi fd
- * w_buf---write buffer
- * r_buf---read buffer
- * len---spi transfer length
- * Return: 0---transfer success
- * other---failed
- **/
-int Ql_SPI_Write_Read(int fd, unsigned char *w_buf, unsigned char *r_buf, unsigned int len);
-
-#endif/* __QL_SPI_H__ */
\ No newline at end of file
diff --git a/mbtk/include/ql/ql_tlv_user.h b/mbtk/include/ql/ql_tlv_user.h
deleted file mode 100755
index a4e710a..0000000
--- a/mbtk/include/ql/ql_tlv_user.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- *
- * Filename: ql_tlv_user.h
- *
- * Description: flash tlv format param config header file.
- *
- * When Who Why
- * 2019/09/28 juson Creation of file
- *
- * Notes:
- *
- ******************************************************************************/
-#ifndef __QL_TLV_USER_H__
-#define __QL_TLV_USER_H__
-
-typedef enum {
- SYS_CONFIG_START = 0,
- SYS_CONFIG_AP_RSTLEVEL_ID,
- SYS_CONFIG_MODEM_RSTLEVEL_ID,
- SYS_CONFIG_RECOVERY_ID,
- SYS_CONFIG_CONSOLE_LOG_ID,
- SYS_CONFIG_END,
-}SYS_CFG_ID_E;
-
-/* 128bytes */
-typedef struct ql_tlv_struct {
- SYS_CFG_ID_E type;
- unsigned int len;
- char value[120];
-}ql_tlv_t;
-
-int quectel_tlv_write(SYS_CFG_ID_E param_id, ql_tlv_t tlv_data);
-int quectel_tlv_read(SYS_CFG_ID_E param_id, ql_tlv_t *tlv_data);
-int ql_onoff_console_log(unsigned char onoff_flag);
-
-#endif /* __QL_TLV_USER_H__ */
-
-
diff --git a/mbtk/include/ql/ql_uart.h b/mbtk/include/ql/ql_uart.h
deleted file mode 100755
index 3808419..0000000
--- a/mbtk/include/ql/ql_uart.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- @file
- ql_uart.h
-
- @brief
- This file provides the definitions for uart, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-2019/08/20 Juson create
-=============================================================================*/
-
-#ifndef __QL_UART_H__
-#define __QL_UART_H__
-
-typedef enum {
- FC_NONE = 0, // None Flow Control
- FC_RTSCTS, // Hardware Flow Control (rtscts)
- FC_XONXOFF // Software Flow Control (xon/xoff)
-}Enum_FlowCtrl;
-
-typedef enum {
- PB_NONE = 0, //none parity check
- PB_ODD, //odd parity check
- PB_EVEN //even parity check
-}Enum_ParityBit;
-
-typedef enum {
- DB_CS5 = 5,
- DB_CS6 = 6,
- DB_CS7 = 7,
- DB_CS8 = 8
-}Enum_DataBit;
-
-typedef enum {
- SB_1 = 1,
- SB_2 = 2
-}Enum_StopBit;
-
-typedef enum {
- B_300 = 300,
- B_600 = 600,
- B_1200 = 1200,
- B_2400 = 2400,
- B_4800 = 4800,
- B_9600 = 9600,
- B_19200 = 19200,
- B_38400 = 38400,
- B_57600 = 57600,
- B_115200 = 115200,
- B_230400 = 230400,
- B_460800 = 460800,
- B_921600 = 921600,
- B_3000000 = 3000000,
- B_4000000 = 4000000,
-}Enum_BaudRate;
-
-typedef struct {
- Enum_BaudRate baudrate;
- Enum_DataBit databit;
- Enum_StopBit stopbit;
- Enum_ParityBit parity;
- Enum_FlowCtrl flowctrl;
-}ST_UARTDCB;
-
-int Ql_UART_Open(const char* port, Enum_BaudRate baudrate, Enum_FlowCtrl flowctrl);
-int Ql_UART_Read(int fd, char* buf, unsigned int buf_len);
-int Ql_UART_Write(int fd, const char* buf, unsigned int buf_len);
-int Ql_UART_SetDCB(int fd, ST_UARTDCB *dcb);
-int Ql_UART_GetDCB(int fd, ST_UARTDCB *dcb);
-int Ql_UART_IoCtl(int fd, unsigned int cmd, void* pValue);
-int Ql_UART_Close(int fd);
-
-#endif /* __QL_UART_H__ */
-
diff --git a/mbtk/include/ql/ql_vcall.h b/mbtk/include/ql/ql_vcall.h
deleted file mode 100755
index c1b0545..0000000
--- a/mbtk/include/ql/ql_vcall.h
+++ /dev/null
@@ -1,296 +0,0 @@
-/**
- *@file ql_voicecall.h
- *@date 2017-05-02
- *@author
- *@brief
- */
-
-#ifndef __QL_VCALL_H__
-#define __QL_VCALL_H__
-
-#define QL_QMI_VCALL_ECALL_MSD_MAX_LEN 140
-
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Reference returned by Start function and used by End function
- */
-//--------------------------------------------------------------------------------------------------
-//typedef struct QL_VCALL_Call* ST_VCALL_CallRef;
-typedef int ST_VCALL_CallRef;
-
-//--------------------------------------------------------------------------------------------------
-/**
- * SIM identifiers.
- *
- */
-//--------------------------------------------------------------------------------------------------
-typedef enum
-{
- E_QL_VCALL_EXTERNAL_SLOT_1,
- E_QL_VCALL_EXTERNAL_SLOT_2,
- E_QL_VCALL_EMBEDDED,
- E_QL_VCALL_REMOTE,
- E_QL_VCALL_ID_MAX
-}E_QL_VCALL_ID_T;
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Voice call establishment states.
- */
-//--------------------------------------------------------------------------------------------------
-typedef enum
-{
- E_QL_VCALL_EVENT_ALERTING = 0,
- ///< Voice call establishment in progress.
- ///< Far end is now alerting its user (outgoing call).
-
- E_QL_VCALL_EVENT_CONNECTED = 1,
- ///< Call has been established, and is media is active.
-
- E_QL_VCALL_EVENT_TERMINATED = 2,
- ///< Call has terminated.
-
- E_QL_VCALL_EVENT_OFFLINE = 3,
- ///< NO Service available to try establish a voice call.
-
- E_QL_VCALL_EVENT_BUSY = 4,
- ///< Remote party (callee) is busy.
-
- E_QL_VCALL_EVENT_RESOURCE_BUSY = 5,
- ///< All local connection resources (lines/channels) are in use.
-
- E_QL_VCALL_EVENT_CALL_END_FAILED = 6,
- ///< Call ending failed.
-
- E_QL_VCALL_EVENT_CALL_ANSWER_FAILED = 7,
- ///< Call answering failed.
-
- E_QL_VCALL_EVENT_INCOMING = 8
- ///< Incoming voice call in progress.
-}E_QL_VCALL_EVENT_T;
-
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Voice call termination reason.
- */
-//--------------------------------------------------------------------------------------------------
-typedef enum
-{
- E_QL_VCALL_TERM_NETWORK_FAIL = 0,
- ///< Network could not complete the call.
-
- E_QL_VCALL_TERM_BAD_ADDRESS = 1,
- ///< Remote address could not be resolved.
-
- E_QL_VCALL_TERM_BUSY = 2,
- ///< Caller is currently busy and cannot take the call.
-
- E_QL_VCALL_TERM_LOCAL_ENDED = 3,
- ///< Local party ended the call.
-
- E_QL_VCALL_TERM_REMOTE_ENDED = 4,
- ///< Remote party ended the call.
-
- E_QL_VCALL_TERM_UNDEFINED = 5
- ///< Undefined reason.
-}E_QL_VCALL_TerminationReason_t;
-
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Reference type used by Add/Remove functions for EVENT 'QL_VCALL_State'
- */
-//--------------------------------------------------------------------------------------------------
-//typedef struct QL_VCALL_StateHandler* QL_VCALL_StateHandlerRef_t;
-typedef int QL_VCALL_StateHandlerRef_t;
-
-
-typedef enum
-{
- E_QL_VCALL_DIRECTION_MO = 1,
- E_QL_VCALL_DIRECTION_MT = 2
-}E_QL_VCALL_DIRECTION_T;
-
-typedef enum
-{
- E_QL_VCALL_STATE_ORIGINATING = 1, //Origination
- E_QL_VCALL_STATE_INCOMING, //Incoming
- E_QL_VCALL_STATE_CONVESATION, //Conversation
- E_QL_VCALL_STATE_CC_IN_PROGRESS, //Call is originating but waiting for call control to complete
- E_QL_VCALL_STATE_ALERTING, //Alerting
- E_QL_VCALL_STATE_HOLD, //Hold
- E_QL_VCALL_STATE_WAITING, //Waiting
- E_QL_VCALL_STATE_DISCONNECTING, //Disconnecting
- E_QL_VCALL_STATE_END, //End
- E_QL_VCALL_STATE_SETUP, //MT call is in setup state in 3GPP
-}E_QL_VCALL_STATE_T;
-
-typedef enum
-{
- E_QL_VCALL_TYPE_VOICE = 0, //Voice
- E_QL_VCALL_TYPE_VOICE_FORCED, //Avoid modem call classification
- E_QL_VCALL_TYPE_VOICE_IP, //Voice over IP
- E_QL_VCALL_TYPE_VT, //VideoTelephony call over IP
- E_QL_VCALL_TYPE_VIDEOSHARE , //Videoshare
- E_QL_VCALL_TYPE_TEST, //Test call
- E_QL_VCALL_TYPE_OTAPA, //OTAPA
- E_QL_VCALL_TYPE_STD_OTASP, //Standard OTASP
- E_QL_VCALL_TYPE_NON_STD_OTASP, //Nonstandard OTASP
- E_QL_VCALL_TYPE_EMERGENCY, //Emergency
- E_QL_VCALL_TYPE_SUPS, //Supplementary Service
- E_QL_VCALL_TYPE_EMERGENCY_IP, //Emergency VoIP
- E_QL_VCALL_TYPE_ECALL //eCall
-}E_QL_VCALL_TYPE_T;
-
-typedef struct
-{
- uint8_t call_id;
- char PhoneNum[20]; ///Telephone number string.
- E_QL_VCALL_DIRECTION_T e_direct;
- E_QL_VCALL_STATE_T e_state;
- E_QL_VCALL_TYPE_T e_type;
-} vcall_info_t;
-
-typedef enum
-{
- E_QL_VCALL_ECALL_MANUAL = 5,
- E_QL_VCALL_ECALL_AUTO = 6
-}E_QL_VCALL_ECALL_CAT_T;
-
-typedef enum
-{
- E_QL_VCALL_ECALL_TEST = 0x01,
- E_QL_VCALL_ECALL_EMERGENCY = 0x02,
- E_QL_VCALL_ECALL_RECONFIG = 0x03,
-}E_QL_VCALL_ECALL_VARIANT_T;
-
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Handler for voice call state changes.
- *
- * @param reference
- * Event voice call object reference.
- * @param identifier
- * Identifier of the remote party
- * @param event
- * Voice call event.
- * @param contextPtr
- */
-//--------------------------------------------------------------------------------------------------
-typedef void (*QL_VCALL_StateHandlerFunc_t)
-(
- ST_VCALL_CallRef reference,
- const char* identifier,
- E_QL_VCALL_STATE_T event,
- void* contextPtr
-);
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Add handler function for EVENT 'QL_VCALL_State'
- *
- * This event provides information on voice call state changes
- */
-//--------------------------------------------------------------------------------------------------
-QL_VCALL_StateHandlerRef_t QL_VCALL_AddStateHandler
-(
- QL_VCALL_StateHandlerFunc_t handlerPtr,
- ///< [IN]
-
- void* contextPtr
- ///< [IN]
-);
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Remove handler function for EVENT 'QL_VCALL_State'
- */
-//--------------------------------------------------------------------------------------------------
-void QL_VCALL_RemoveStateHandler
-(
- QL_VCALL_StateHandlerRef_t addHandlerRef
- ///< [IN]
-);
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Start a voice call.
- *
- * @return
- * - Reference to the voice call (to be used later for releasing the voice call)
- * - NULL if the voice call could not be processed
- */
-//--------------------------------------------------------------------------------------------------
-ST_VCALL_CallRef QL_VCALL_Start
-(
- E_QL_VCALL_ID_T simId,
- const char* DestinationID
- ///< [IN] Destination identifier for the voice
-);
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Release a voice call.
- *
- * @return
- * - E_QL_OK if the end of voice call can be processed.
- * - E_QL_NOT_FOUND if the voice call object reference is not found.
- */
-//--------------------------------------------------------------------------------------------------
-int QL_VCALL_End
-(
- ST_VCALL_CallRef reference
- ///< [IN] Voice call object reference to hang-up.
-);
-
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Answer to incoming voice call.
- *
- * @return
- * - E_QL_OK if the incoming voice call can be answered
- * - E_QL_NOT_FOUND if the incoming voice call object reference is not found.
- */
-//--------------------------------------------------------------------------------------------------
-int QL_VCALL_Answer
-(
- ST_VCALL_CallRef reference
- ///< [IN] Incoming voice call object reference to answer.
-);
-
-//--------------------------------------------------------------------------------------------------
-/**
- * Get the termination reason of a voice call reference.
- *
- * @return
- * - E_QL_OK if the termination reason is got
- * - E_QL_NOT_FOUND if the incoming voice call object reference is not found.
- * - E_QL_FAULT if the voice call is not terminated.
- */
-//--------------------------------------------------------------------------------------------------
-int QL_VCALL_GetTerminationReason
-(
- ST_VCALL_CallRef reference,
- ///< [IN] Voice call object reference to read from.
-
- E_QL_VCALL_TerminationReason_t* reasonPtr
- ///< [OUT] Termination reason of the voice call.
-);
-
-
-int QL_VCALL_Ecall(E_QL_VCALL_ID_T simId,
- char* phone_number,
- char* ecall_msd,
- E_QL_VCALL_ECALL_CAT_T emer_cat,
- E_QL_VCALL_ECALL_VARIANT_T eCallModeType,
- ST_VCALL_CallRef *reference); //call id
-
-int QL_VCALL_UpdateMsd( const char *msd);
-
-
-#endif // __QL_VCALL_H__
-
diff --git a/mbtk/include/ql/ql_voice.h b/mbtk/include/ql/ql_voice.h
deleted file mode 100755
index 7d4e038..0000000
--- a/mbtk/include/ql/ql_voice.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/**
- @file
- ql_voice.h
-
- @brief
- This file provides the definitions for voice, and declares the
- API functions.
-
-*/
-/*============================================================================
- Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
- =============================================================================*/
-/*===========================================================================
-
- EDIT HISTORY FOR MODULE
-
-This section contains comments describing changes made to the module.
-Notice that changes are listed in reverse chronological order.
-
-
-WHEN WHO WHAT, WHERE, WHY
----------- ------------ ----------------------------------------------------
-14/11/2019 gunner.yang create
-06/01/2020 pony.made add net_state
-18/02/2020 gale.gao Add API: imsd get, wait status get, voice unhold;
-=============================================================================*/
-
-#ifndef __QL_VOICE_H__
-#define __QL_VOICE_H__
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum
-{
- QL_VOICE_SUCCESS,
- QL_VOICE_GENERIC_FAILURE,
- QL_VOICE_RADIO_NOT_AVAILABLE,
-}QL_VOICE_ERROR_CODE;
-
-typedef enum{
- GSM = 0,
- GSM_COMPACT,
- GSM_wEGPRS,
- UTRAN,
- UTRAN_wHSDPA,
- UTRAN_wHSUPA,
- UTRAN_wHSDPA_HSUPA,
- E_UTRAN,
- UTRAN_HSPA_PLUS,
-}QL_REG_STATE;
-
-typedef enum{
- REASON_INVALID=-1,
- REASON_UNCONDITIONAL =0,
- REASON_DEVICE_BUSY =1,
- REASON_DEVICE_NO_REPLY =2,
- REASON_DEVICE_UNREACHABLE =3,
- REASON_DEVICE_ALL_FORWARDING =4,
- REASON_DEVICE_ALL_CONDITIONAL =5,
-}QL_VOICE_CALL_FW_REASON;
-
-typedef enum{
- MODE_DISABLE=0,
- MODE_ENABLE,
- MODE_QUERY_STATUS,
- MODE_REGISTRATION,
- MODE_ERASURE,
-}QL_VOICE_CALL_FW_MODE;
-
-typedef struct
-{
- int status;
- int fw_class;
- char num[20];
- int type;
- char subaddr[20];
- int satype;
- int time;
-} ql_voice_call_fw_list_t;
-
-typedef enum {
- QL_CALL_ACTIVE = 0,
- QL_CALL_HOLDING = 1,
- QL_CALL_DIALING = 2, /* MO call only */
- QL_CALL_ALERTING = 3, /* MO call only */
- QL_CALL_INCOMING = 4, /* MT call only */
- QL_CALL_WAITING = 5, /* MT call only */
- QL_CALL_OFFERING = 6, /*MT call offering (call setup)*/
- QL_CALL_DISCONNECTING = 7, /*call in disconnect procedure*/
- QL_CALL_DISCONNECTED = 8, /*call is disconnected*/
-} QL_CallState;
-
-typedef struct
-{
- int idx; /*call index, identification number*/
- int dir; /*0: mobile originated(MO) call, 1: mobile terminated(MT) call*/
- int state; /*define in QL_CallState*/
- char number[20]; /*string type phone number in format specified by <type>*/
- int type; /*type of address octet in interger format(refer TS24.008 subclause 10.5.4.7)*/
-}ql_voice_call_item;
-
-typedef struct
-{
- int count;
- ql_voice_call_item items[16];
-}ql_voice_call_list_t;
-/*
- callbackfunction prototype
-*/
-typedef void (*QL_VOICE_EventHandlerFunc_t)(QL_CallState voice_flag, char *number,void *contextPtr);
-
-QL_VOICE_ERROR_CODE ql_voice_call_init ();
-QL_VOICE_ERROR_CODE ql_voice_call_release();
-
-/*
- Register voice call event.
- -handlerPtr : user_cb
- -contextPtr : user_cb_data
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_event_register(QL_VOICE_EventHandlerFunc_t handlerPtr, void* contextPtr);
-
-
-/*
- Phone call.
- -call_num : dst phone number
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_start(char* call_num);
-
-
-/*
- Put through.
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_answer();
-QL_VOICE_ERROR_CODE ql_voice_auto_answer(int seconds);
-
-
-/*
- Hang up.
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_end();
-
-
-/* dfmf call */
-QL_VOICE_ERROR_CODE ql_voice_call_dtmf(char *dtmf,int duration);
-
-/* get voice net state
- * Just use in call to judge Volte or CS-vioce
- * regstate:
- * 7 -> Volte call
- * else -> CS call
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_get_regstate(int* regstate);
-
-/* set imsd value
- 1: open votle
- 0: close votle
- */
-QL_VOICE_ERROR_CODE ql_voice_call_set_imsd(int imsd);
-
-/* get imsd value
- 1: open volte
- 0: close volte
- */
-QL_VOICE_ERROR_CODE ql_voice_call_get_imsd(int *imsd);
-
-/* set call wait
- 0: close
- 1: open */
-QL_VOICE_ERROR_CODE ql_voice_call_set_wait(int wait);
-
-/* get call wait status
- 0: close
- 1: open */
-QL_VOICE_ERROR_CODE ql_voice_call_get_wait(int *wait);
-
-/* hold the voice */
-QL_VOICE_ERROR_CODE ql_voice_call_hold();
-
-/* unhold the voice */
-QL_VOICE_ERROR_CODE ql_voice_call_unhold();
-
-QL_VOICE_ERROR_CODE ql_voice_call_fw_set(QL_VOICE_CALL_FW_REASON reason, QL_VOICE_CALL_FW_MODE mode, char *num);
-
-QL_VOICE_ERROR_CODE ql_voice_call_fw_query(QL_VOICE_CALL_FW_REASON reason, ql_voice_call_fw_list_t *resp_data);
-
-/**
- * get the current call list, same as AT+CLCC
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_get_current_list(ql_voice_call_list_t *resp_data);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mbtk/include/ql/ql_wifi.h b/mbtk/include/ql/ql_wifi.h
deleted file mode 100755
index a5f97d7..0000000
--- a/mbtk/include/ql/ql_wifi.h
+++ /dev/null
@@ -1,652 +0,0 @@
-/**
- * @file ql_wifi.h
- * @brief Quectel Openlinux WiFi public function declarations.
- *
- * @note
- *
- * @copyright Copyright (c) 2009-2017 @ Quectel Wireless Solutions Co., Ltd.
- */
-/*================================================================
- Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
- Quectel Wireless Solution Proprietary and Confidential.
-=================================================================*/
-
-/*=====================================================================
-
- EDIT HISTORY FOR MODULE
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
- WHEN WHO WHAT, WHERE, WHY
- ------------ ------- ----------------------------------------
- 11/20/2011 Paddy Initial creation.
-
-=======================================================================*/
-
-#ifndef __QL_WIFI_H__
-#define __QL_WIFI_H__
-
-#include <stdbool.h>
-#include <netinet/in.h>
-
-#define QL_WIFI_AP_AUTH_OPEN "none"
-#define QL_WIFI_AP_AUTH_WPA_PSK "psk"
-#define QL_WIFI_AP_AUTH_WPA2_PSK "psk2"
-#define QL_WIFI_AP_AUTH_WPA_WPA2_PSK "psk-mixed"
-
-#define QL_WIFI_AP_AUTH_WPA_PAIRWISE_TKIP "tkip"
-#define QL_WIFI_AP_AUTH_WPA_PAIRWISE_AES "aes"
-#define QL_WIFI_AP_AUTH_WPA_PAIRWISE_BOTH "tkip+aes"
-
-#define QL_WIFI_AP_BANDWIDTH_20MHZ "HT20"
-#define QL_WIFI_AP_BANDWIDTH_40MHZ "HT40-"
-#define QL_WIFI_AP_BANDWIDTH_80MHZ "HT40+"
-
-#define QL_WIFI_AP_MODE_80211B "11b"
-#define QL_WIFI_AP_MODE_80211BG "11bg"
-#define QL_WIFI_AP_MODE_80211BGN "11bgn"
-
-
-typedef enum {
- WIFI_WORK_MODE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- WIFI_WORK_MODE_AP_V01 = 0,
- WIFI_WORK_MODE_STA_V01 = 1,
- WIFI_WORK_MODE_AP_STA_V01 = 2,
- WIFI_WORK_MODE_AP_AP_V01 = 3,
- WIFI_WORK_MODE_MAX_V01 = 4,
- WIFI_WORK_MODE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}wifi_work_mode_e_v01;
-
-typedef enum {
- WIFI_IEEE80211_MODE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- WIFI_MODE_11A_V01 = 0,
- WIFI_MODE_11AN_V01 = 1,
- WIFI_MODE_11B_V01 = 2,
- WIFI_MODE_11BG_V01 = 3,
- WIFI_MODE_11BGN_V01 = 4,
- WIFI_MODE_11AC_V01 = 5,
- WIFI_IEEE80211_MODE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}wifi_ieee80211_mode_e_v01;;
-
-
-
-typedef enum {
- WIFI_BANDWIDTH_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- WIFI_BANDWIDTH_20MHZ_V01 = 0,
- WIFI_BANDWIDTH_40MHZ_V01 = 1,
- WIFI_BANDWIDTH_80MHZ_V01 = 2,
- WIFI_BANDWIDTH_160MHZ_V01 = 3,
- WIFI_BANDWIDTH_MAX_V01 = 4,
- WIFI_BANDWIDTH_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}wifi_bandwidth_e_v01;
-
-typedef enum {
- WIFI_AUTH_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- WIFI_AUTH_OPEN_V01 = 0,
- WIFI_AUTH_WEP_V01 = 1,
- WIFI_AUTH_WPA_PSK_V01 = 2,
- WIFI_AUTH_WPA2_PSK_V01 = 3,
- WIFI_AUTH_WPA_WPA2_PSK_BOTH_V01 = 4,
- WIFI_AUTH_WPA_V01 = 5,
- WIFI_AUTH_WPA2_V01 = 6,
- WIFI_AUTH_WPA_WPA2_BOTH_V01 = 7,
- WIFI_AUTH_WPS_V01 = 8,
- WIFI_AUTH_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}wifi_auth_e_v01;
-/**
- @}
- */
-
-/** @addtogroup ql_manager_access_msgr_wifi_qmi_enums
- @{
- */
-typedef enum {
- WIFI_WPA_PAIRWISE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- WIFI_AUTH_WPA_PAIRWISE_TKIP_V01 = 0,
- WIFI_AUTH_WPA_PAIRWISE_AES_V01 = 1,
- WIFI_AUTH_WPA_PAIRWISE_BOTH_V01 = 2,
- WIFI_WPA_PAIRWISE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}wifi_wpa_pairwise_e_v01;
-
-typedef enum {
- QL_WIFI_EVENT_ENABLE_STATUS = 0,
- QL_WIFI_EVENT_DISABLE_STATUS,
- QL_WIFI_EVENT_AP_STATION,
- QL_WIFI_EVENT_STA_STATUS,
- QL_WIFI_EVENT_STA_SCAN_DONE,
-} ql_wifi_event_type_e;
-
-typedef enum {
- QL_WIFI_STATUS_ENABLE = 0,
- QL_WIFI_STATUS_DISABLE,
- QL_WIFI_STATUS_ERR_DRIVER,
- QL_WIFI_STATUS_ERR_SOFTWARE,
-} ql_wifi_status_e;
-
-typedef enum {
- QL_WIFI_STATION_DISABLE = 0, /* WiFi station is not enable */
- QL_WIFI_STATION_CONNECTED, /* WiFi station is connected hotspot */
- QL_WIFI_STATION_DISCONNECTED /* WiFi station is disconnect hotspot */
-} ql_wifi_station_status_e;
-
-typedef struct {
- ql_wifi_event_type_e id;
- union {
- /* the QL_WIFI_ENABLE_STATUS or QL_WIFI_DISABLE_STATUS event */
- ql_wifi_status_e status;
- struct {
- /*
- * If connected is true, the station is connected wifi hotspot.
- * If connected is false, the station is disconnected wifi hotspot.
- */
- bool connected;
- unsigned char mac[6];
- } ap_sta_info;
- ql_wifi_station_status_e sta_status;
- };
-} ql_wifi_event_s;
-
-typedef void (*wifi_event_handle)(ql_wifi_event_s *event, void *arg);
-
-typedef enum {
- QL_WIFI_WORK_MODE_STA = 0, /* WiFi is in STA Mode */
- QL_WIFI_WORK_MODE_AP0, /* WiFi is in AP Mode */
- QL_WIFI_WORK_MODE_AP0_STA, /* WiFi is in AP/STA Mode */
- QL_WIFI_WORK_MODE_AP0_AP1 /* WiFi is in AP/AP Mode */
-} ql_wifi_work_mode_e;
-
-typedef enum {
- QL_WIFI_AP_INDEX_AP0 = 0, /* Index 0 of AP/AP-STA/AP-AP Mode */
- QL_WIFI_AP_INDEX_AP1 /* Index 1 of AP/AP-STA/AP-AP Mode */
-} ql_wifi_ap_index_e;
-
-typedef enum {
- QL_WIFI_MODE_80211B = 0, /* IEEE 802.11b (2.4 GHz) */
- QL_WIFI_MODE_80211BG, /* IEEE 802.11bg (2.4 GHz) */
- QL_WIFI_MODE_80211BGN, /* IEEE 802.11bgn (2.4 GHz) */
- QL_WIFI_MODE_80211A, /* IEEE 802.11a (5 GHz) */
- QL_WIFI_MODE_80211AN, /* IEEE 802.11an (5 GHz) */
- QL_WIFI_MODE_80211AC /* IEEE 802.11ac (5 GHz) */
-} ql_wifi_mode_type_e;
-
-typedef enum {
- QL_WIFI_BANDWIDTH_HT20 = 0,
- QL_WIFI_BANDWIDTH_HT40,
- QL_WIFI_BANDWIDTH_HT80
-} ql_wifi_bandwidth_type_e;
-
-typedef enum {
- QL_WIFI_SSID_HIDE_DISABLE = 0,
- QL_WIFI_SSID_HIDE_ENABLE,
-} ql_wifi_ssidhide_type_e;
-
-typedef enum {
- QL_WIFI_AUTH_OPEN = 0, /* Open */
- QL_WIFI_AUTH_WPA_PSK, /* WPA Personal */
- QL_WIFI_AUTH_WPA2_PSK, /* WPA2 Personal */
- QL_WIFI_AUTH_WPA_WPA2_PSK_BOTH, /* WPA&WPA2 Personal */
-} ql_wifi_auth_e;
-
-typedef enum {
- QL_WIFI_AUTH_WPA_PAIRWISE_AUTO = 0, /* contain TKIP and AES */
- QL_WIFI_AUTH_WPA_PAIRWISE_TKIP,
- QL_WIFI_AUTH_WPA_PAIRWISE_AES
-} ql_wifi_auth_wpa_psk_e;
-
-typedef struct {
- int auth;
- union {
- struct {
- int default_index;
- char passwd[4][64];
- } wep;
-
- struct {
- short pairwise;
- char passwd[64];
- int group_rekey;
- } wpa_psk;
- };
-} ql_wifi_ap_auth_s;
-
-
-typedef enum {
- WIFI_IDX_AP_0 = 1,
- WIFI_IDX_AP_1,
- WIFI_IDX_STA_0
-} wifi_index_e;
-
-typedef enum {
- WIFI_WORK_MODE_AP = 0,
- WIFI_WORK_MODE_STA,
- WIFI_WORK_MODE_AP_STA,
- WIFI_WORK_MODE_AP_AP,
- WIFI_WORK_MODE_MAX
-} wifi_work_mode_e;
-
-typedef enum {
- WIFI_START = 0,
- WIFI_STOP,
- WIFI_RESTART,
-} wifi_active_e;
-
-typedef enum {
- WIFI_MODE_11A = 0,
- WIFI_MODE_11AN,
- WIFI_MODE_11B,
- WIFI_MODE_11BG,
- WIFI_MODE_11BGN,
- WIFI_MODE_11AC
-} wifi_ieee80211_mode_e;
-
-typedef enum {
- WIFI_BANDWIDTH_20MHZ = 0,
- WIFI_BANDWIDTH_40MHZ,
- WIFI_BANDWIDTH_80MHZ,
- WIFI_BANDWIDTH_160MHZ,
- WIFI_BANDWIDTH_MAX,
-} wifi_bandwidth_e;
-
-typedef enum {
- WIFI_AUTH_OPEN = 0,
- WIFI_AUTH_WEP,
- WIFI_AUTH_WPA_PSK,
- WIFI_AUTH_WPA2_PSK,
- WIFI_AUTH_WPA_WPA2_PSK_BOTH,
- WIFI_AUTH_WPA,
- WIFI_AUTH_WPA2,
- WIFI_AUTH_WPA_WPA2_BOTH,
- WIFI_AUTH_WPS
-} wifi_auth_e;
-
-typedef enum {
- WIFI_AUTH_WPA_PAIRWISE_TKIP = 0,
- WIFI_AUTH_WPA_PAIRWISE_AES,
- WIFI_AUTH_WPA_PAIRWISE_BOTH
-} wifi_wpa_pairwise_e;
-
-typedef enum {
- WIFI_SSID_HIDE_DISABLE = 0,
- WIFI_SSID_HIDE_ENABLE
-} wifi_ssid_hide_state_e;
-
-
-struct _auth {
- unsigned char auth;
- struct {
- unsigned char pairwise;
- unsigned char group_rekey;
- unsigned char passwd[64];
- } wpa_psk;
-
-};
-
-
-typedef enum {
- WIFI_INDEX_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- WIFI_IDX_AP_0_V01 = 1,
- WIFI_IDX_AP_1_V01 = 2,
- WIFI_IDX_STA_0_V01 = 3,
- WIFI_INDEX_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}wifi_index_e_v01;
-
-typedef enum {
- RTK_WIFI_IEEE80211_MODE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum. Do not change or use*/
- RTK_WIFI_WORKMODE_11B_V01 = 1,
- RTK_WIFI_WORKMODE_11BG_V01 = 3,
- RTK_WIFI_WORKMODE_11BGN_V01 = 11,
- RTK_WIFI_IEEE80211_MODE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum. Do not change or use*/
-}rtk_wifi_ieee80211_mode_e_v01;
-
-typedef enum {
- QL_WIFI_AUTH_OPEN_V01 = 0, /* Open */
- QL_WIFI_SHARED_KEY, /* Shared key */
- QL_WIFI_AUTO /* Auto */
-} ql_wifi_auth_type_e;
-
-typedef enum {
- QL_WIFI_ENCRYPT_TKIP = 2, /* TKIP */
- QL_WIFI_ENCRYPT_AES = 8, /* AES */
- QL_WIFI_ENCRYPT_TKIP_AES_MIXED = 10 /* TKIP & AES MIXED */
-} ql_wifi_encrypt_mode_e;
-
-typedef enum {
- QL_WIFI_PSK_DISABLE = 0, /* Encrypt disable */
- QL_WIFI_PSK_WPA, /* WPA */
- QL_WIFI_PSK_WPA2, /* WPA2 */
- QL_WIFI_PSK_WPA_WPA2, /* WPA-WPA2 */
-} ql_wifi_psk_enable_e;
-
-
-
-#define QL_WIFI_MAX_STA_NUM 16
-
- struct ql_mgmt_client_wifi_work_mode {
- /*
- * WiFi work mode support AP, STA, AP+STA, AP-AP
- */
- wifi_work_mode_e work_mode;
- };
-
- struct ql_mgmt_client_wifi_enable {
- bool state;
- };
-
- struct ql_mgmt_client_wifi_country_code {
- char country_code[2];
- };
-
- struct ql_mgmt_client_wifi_mode {
- wifi_index_e id;
- wifi_ieee80211_mode_e mode;
- };
-
- struct ql_mgmt_client_wifi_channel {
- wifi_index_e id;
- int channel;
- };
-
- struct ql_mgmt_client_wifi_essid {
- wifi_index_e id;
- char ssid[32];
- };
-
- struct ql_mgmt_client_wifi_ssid_hide {
- wifi_index_e id;
- wifi_ssid_hide_state_e state;
- };
-
- struct ql_mgmt_client_wifi_bandwidth {
- wifi_index_e id;
- wifi_bandwidth_e bandwidth;
- };
-
- struct ql_mgmt_client_wifi_max_sta {
- wifi_index_e id;
- int num;
- };
-
-
- struct ql_mgmt_client_wifi_active {
- wifi_index_e_v01 id;
- unsigned char action_type;
- };
-
- struct ql_mgmt_client_wifi_auth {
- wifi_index_e id;
- wifi_auth_e auth;
- union {
- struct {
- int default_index;
- char password[4][64];
- } wep;
- struct {
- wifi_wpa_pairwise_e pairwise;
- char password[64];
- int group_rekey;
- } wpa_psk;
- };
- };
-
- struct ql_mgmt_client_wifi_rssi {
- wifi_index_e id;
- int rssi;
- };
-
- struct ql_mgmt_client_wifi_sta_info {
- int count;
- struct {
- int ip;
- char mac[6];
- char hostname[32];
- char ssid[32];
- int uptime;
- long long tx_bytes;
- long long rx_bytes;
- } sta[QL_WIFI_MAX_STA_NUM];
- };
- typedef struct{
- struct ql_mgmt_client_wifi_enable enable;
-
-
- }ql_mgmt_client_wifi_s_test;
-
- typedef struct {
- union {
- struct ql_mgmt_client_wifi_work_mode work_mode;
- struct ql_mgmt_client_wifi_enable enable;
- struct ql_mgmt_client_wifi_country_code country_code;
- struct ql_mgmt_client_wifi_mode mode;
- struct ql_mgmt_client_wifi_channel channel;
- struct ql_mgmt_client_wifi_essid ssid;
- struct ql_mgmt_client_wifi_ssid_hide ssid_hide;
- struct ql_mgmt_client_wifi_bandwidth bandwidth;
- struct ql_mgmt_client_wifi_max_sta max_sta;
- struct ql_mgmt_client_wifi_active active;
- struct ql_mgmt_client_wifi_auth auth;
- struct ql_mgmt_client_wifi_rssi rssi;
- struct ql_mgmt_client_wifi_sta_info sta_info;
- };
- } ql_mgmt_client_wifi_s;
-
-
-extern int ql_wifi_enable(void);
-
-/**
- * Disables the WLAN. This function removes the kernel module for the Wi-Fi driver.
- *
- * @param None
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_disable(void);
-
-/**
- * Create thread to enables the WLAN. This function enables the WLAN based on the hostpad or wpa_supplicant
- * configuration provided. This function inserts the WLAN kernel module and advertises the SSID.
- *
- * @param None
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-
-
-extern int ql_wifi_status_get(ql_wifi_status_e *status);
-
-/**
- * Set the WiFi configuration: WiFi work mode configuration.
- *
- * @param [in] WiFi work mode
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * ql_wifi_disable is must be disable
- *
- */
-
-extern int ql_wifi_ap_ssid_set(ql_wifi_ap_index_e idx, char *ssid);
-
-/**
- * Get the WiFi configuration: the hotspot ssid mode configuration.
- *
- * @param [in] Index of AP mode
- * @param [out] the hotspot ssid name
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_ssid_get(ql_wifi_ap_index_e idx, char *ssid);
-
-/**
- * Set the WiFi configuration: hidden hotspot configuration.
- *
- * @param [in] Index of AP mode
- * @param [in] If set true, hidden hotspot
- * If set false, open hotspot
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_ssid_hide_set(ql_wifi_ap_index_e idx, bool hide);
-
-/**
- * Get the WiFi configuration: hidden hotspot configuration.
- *
- * @param [in] Index of AP mode
- * @param [in] Get the hotspot hidden status
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_ssid_hide_get(ql_wifi_ap_index_e idx, bool *hide);
-
-/**
- * Set the WiFi configuration: Operation mode configuration, such as 802.11a/b/n/ac.
- *
- * @param [in] Index of AP mode
- * @param [in] Operation mode
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_mode_set(ql_wifi_ap_index_e idx, ql_wifi_mode_type_e mode);
-
-/**
- * Get the WiFi configuration: Operation mode configuration, such as 802.11a/b/n/ac.
- *
- * @param [in] Index of AP mode
- * @param [out] Operation mode
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_mode_get(ql_wifi_ap_index_e idx, ql_wifi_mode_type_e *mode);
-
-/**
- * Set the WiFi configuration: HT or VHT capabilities (20MHz, 40MHz, 80MHz).
- *
- * @param [in] Index of AP mode
- * @param [in] Bandwidth
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * The WiFi Operation mode must be set 802.11bgn/802.11an/802.11ac.
- */
-extern int ql_wifi_ap_bandwidth_set(ql_wifi_ap_index_e idx, ql_wifi_bandwidth_type_e bandwidth);
-
-/**
- * Get the WiFi configuration: HT or VHT capabilities (20MHz, 40MHz, 80MHz).
- *
- * @param [in] Index of AP mode
- * @param [Out] Bandwidth
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * The WiFi Operation mode must be set 802.11bgn/802.11an/802.11ac.
- */
-extern int ql_wifi_ap_bandwidth_get(ql_wifi_ap_index_e idx, ql_wifi_bandwidth_type_e *bandwidth);
-
-/**
- * Set the WiFi configuration: channel number configuration.
- *
- * @param [in] Index of AP mode
- * @param [in] Channel number
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * 1. if WiFi set 2.4GHz, the channel list:
- * 0/1/2/3/4/5/6/7/8/9/10/11/12/13/14
- * 2. if WiFi set 5GHz, the channel list:
- * 36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/128/132/136/140/144/149/153/157/161/165/175/181
- */
-extern int ql_wifi_ap_channel_set(ql_wifi_ap_index_e idx, int channel);
-
-/**
- * Get the WiFi configuration: channel number configuration.
- *
- * @param [in] Index of AP mode
- * @param [out] Channel number
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- * @dependencies
- * 1. if WiFi set 2.4GHz, the channel list:
- * 0/1/2/3/4/5/6/7/8/9/10/11/12/13/14
- * 2. if WiFi set 5GHz, the channel list:
- * 36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/128/132/136/140/144/149/153/157/161/165/175/181
- */
-extern int ql_wifi_ap_channel_get(ql_wifi_ap_index_e idx, int *channel);
-
-/**
- * Set the WiFi configuration: IEEE 802.11 specifies two authentication algorithms and WPA/IEEE 802.11i configuration.
- *
- * @param [in] Index of AP mode
- * @param [in] authentication configuration
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_auth_set(ql_wifi_ap_index_e idx, ql_wifi_ap_auth_s *auth);
-
-/**
- * Get the WiFi configuration: IEEE 802.11 specifies two authentication algorithms and WPA/IEEE 802.11i configuration.
- *
- * @param [in] Index of AP mode
- * @param [out] authentication configuration
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_auth_get(ql_wifi_ap_index_e idx, ql_wifi_ap_auth_s *auth);
-
-/**
- * Set the WiFi configuration: Maximum number of stations allowed in station table.
- *
- * @param [in] Index of AP mode
- * @param [in] Maximum number of stations
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_max_sta_set(ql_wifi_ap_index_e idx, int max_sta_num);
-
-/**
- * Get the WiFi configuration: Maximum number of stations allowed in station table.
- *
- * @param [in] Index of AP mode
- * @param [out] Maximum number of stations
- *
- * @return
- * On success, 0 is returned. On error, -1 is returned.
- *
- */
-extern int ql_wifi_ap_max_sta_get(ql_wifi_ap_index_e idx, int *max_sta_num);
-
-extern int ql_wifi_set_to_ap(ql_wifi_ap_index_e idx);
-
-extern int ql_wifi_set_to_sta(ql_wifi_ap_index_e idx);
-
-#endif /* end of __QL_WIFI_H__ */
-
diff --git a/mbtk/liblynq_lib/Makefile b/mbtk/liblynq_lib/Makefile
deleted file mode 100644
index 2cbc49f..0000000
--- a/mbtk/liblynq_lib/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/lynq_lib
-
-INC_DIR +=
-
-LIB_DIR +=
-
-#LIBS += -llog -lmbtk_lib
-LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -llog -ljson-c -lblobmsg_json
-LIBS += -lmbtk_audio -lmbtk_ril -lmbtk_fota -lmbtk_factory -lmbtk_net -lmbtk_gnss
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE +=
-
-MY_FILES_PATH:=$(LOCAL_PATH)/src
-#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
-#MY_FILES_PATH += $(LOCAL_PATH)/ql
-#endif
-
-#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
-#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
-#endif
-
-#LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
-LOCAL_SRC_FILES = src/lynq_adc.c \
- src/lynq_alarm.c \
- src/lynq_data_call.c \
- src/lynq_fota.c \
- src/lynq_gpio.c \
- src/lynq_irq.c \
- src/lynq_log.c \
- src/lynq_net_light.c \
- src/lynq_network.c \
- src/lynq_sim.c \
- src/lynq_sleep.c \
- src/lynq_sms.c \
- src/lynq_thermal.c \
- src/lynq_time.c \
- src/lynq_voice_call.c \
- src/lynq_chip_id.c \
- src/lynq_gnss.c
-
-ifeq ($(BUILD_PLATFORM), v2102)
-LOCAL_SRC_FILES += src/lynq_audio.c
-endif
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/liblynq_lib.so
-
-all: $(dtarget)
-
-$(dtarget): $(OBJS)
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/liblynq_lib/src/lynq_adc.c b/mbtk/liblynq_lib/src/lynq_adc.c
deleted file mode 100755
index 4317e17..0000000
--- a/mbtk/liblynq_lib/src/lynq_adc.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "lynq-adc.h"
-#include "mbtk_type.h"
-#include "mbtk_adc.h"
-#include "mbtk_log.h"
-
-int qser_adc_show(ADC_CHANNEL_E qadc)
-{
- UNUSED(qadc);
-
- mbtk_adc_enum adc = MBTK_ADC0;
- switch(qadc) {
- case QADC_NONE:
- {
- return 0;
- }
- case ADC0:
- adc = MBTK_ADC0;
- break;
- case ADC1:
- adc = MBTK_ADC1;
- break;
-#if defined(MBTK_PROJECT_T108) || defined(MBTK_PROJECT_L508_X6)
- case ADC2:
- adc = MBTK_ADC2;
- break;
-#endif
- default:
- LOGE("Unsupport adc : %d", qadc);
- return -1;
- }
-
- return mbtk_adc_get(adc);
-}
-
diff --git a/mbtk/liblynq_lib/src/lynq_alarm.c b/mbtk/liblynq_lib/src/lynq_alarm.c
deleted file mode 100755
index 461a045..0000000
--- a/mbtk/liblynq_lib/src/lynq_alarm.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include <math.h>
-#include <stdlib.h>
-
-#include "mbtk_alarm.h"
-#include "lynq_alarm.h"
-#include "mbtk_str.h"
-
-
-bool rtc_flag = FALSE;
-int lynq_rtc_service_init(void)
-{
- int ret = 0;
- if(!rtc_flag)
- {
- rtc_flag = TRUE;
- ret = 1;
- }
- else
- {
- ret = -1;
- }
- return ret;
-}
-
-int lynq_rtc_service_deinit(void)
-{
- int ret = 0;
- if(rtc_flag)
- {
- rtc_flag = FALSE;
- ret = 0;
- }
- else{
- ret = -1;
- }
-
- return ret;
-}
-
-int lynq_set_wakealarm(unsigned long time_sec,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify )
-{
- UNUSED(time_sec);
- if(time_sec < 1 || time_sec > pow(2, 28)) {
- return -1;
- }
-
- return -1;
-}
-
-//int lynq_set_poweralarm(unsigned long time_sec)
-int lynq_set_poweralarm(unsigned long time_sec,int src_id)
-{
- UNUSED(time_sec);
- if(time_sec < 1 || time_sec > pow(2, 28)) {
- return -1;
- }
- char buf[50] ={0};
- sprintf(buf, "rtcwake -d rtc0 -s %d -m on &", time_sec);
- system(buf);
-
- return 0;
-}
-
-// min:1 max:2^28
-ssize_t wakealarm(char *buffer,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify )
-{
- UNUSED(buffer);
- if(str_empty(buffer)) {
- return -1;
- }
- return lynq_set_wakealarm(atol(buffer), src_id, rtc_id, wakealarm_notify);
-}
-
-// min:1 max:2^28
-ssize_t poweralarm(char *buffer,int src_id)
-{
- UNUSED(buffer);
- if(str_empty(buffer)) {
- return -1;
- }
- return lynq_set_poweralarm(atol(buffer), 0);
-}
-
-ssize_t cancel_wakealarm(int src_id, int rtc_id)
-{
- return -1;
-}
-
diff --git a/mbtk/liblynq_lib/src/lynq_audio.c b/mbtk/liblynq_lib/src/lynq_audio.c
deleted file mode 100755
index 259661e..0000000
--- a/mbtk/liblynq_lib/src/lynq_audio.c
+++ /dev/null
@@ -1,271 +0,0 @@
-#include "lynq-qser-audio.h"
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "mbtk_audio2.h"
-
-#define AUDIO_DEV_PLAY "device1"
-#define AUDIO_DEV_RECORDER "device2"
-#define AUDIO_HDL_DEFAULT 0
-
-static _cb_onPlayer play_cb = NULL;
-static int play_hdl = -1;
-
-static _cb_onPlayer recv_cb = NULL;
-static int recv_hdl = -1;
-
-int qser_AudPlayer_Open(char* device, _cb_onPlayer cb_fun)
-{
- UNUSED(device);
- UNUSED(cb_fun);
- if(device == NULL || strcmp(device, AUDIO_DEV_PLAY)) {
- LOGE("device must be %s for play.", AUDIO_DEV_PLAY);
- return -1;
- }
-
- if(mbtk_audio_wav_init()) {
- LOGE("mbtk_audio_wav_init() fail.");
- return -1;
- }
-
- play_cb = cb_fun;
-
- return 0;
-}
-
-int qser_AudPlayer_PlayFrmFile(int hdl, const char *fd, int offset)
-{
- UNUSED(hdl);
- UNUSED(fd);
- UNUSED(offset);
- if(play_hdl >= 0) {
- LOGE("Play busy.");
- if(play_cb) {
- play_cb(-1);
- }
- return -1;
- }
-
- if(mbtk_audio_wav_play_start(fd)) {
- LOGE("mbtk_audio_wav_play_start() fail.");
- if(play_cb) {
- play_cb(-2);
- }
- return -1;
- }
-
- play_hdl = hdl;
-
- if(play_cb) {
- play_cb(0);
- }
-
- return 0;
-}
-
-int qser_AudPlayer_PlayPcmBuf(const unsigned char *pcm_data, int data_size, int period_size,
- int period_count, int num_channels, int sample_rate, int ownerid)
-{
-
- if(play_hdl >= 0) {
- LOGE("Play busy.");
- if(play_cb) {
- play_cb(-1);
- }
- return -1;
- }
-
- if(mbtk_audio_wav_stream_play_start(pcm_data, data_size, sample_rate, num_channels)) {
- LOGE("mbtk_audio_wav_stream_play_start() fail.");
- if(play_cb) {
- play_cb(-2);
- }
- return -1;
- }
-
- play_hdl = AUDIO_HDL_DEFAULT;
- if(play_cb) {
- play_cb(0);
- }
- return 0;
-}
-
-int qser_AudPlayer_Pause(int hdl)
-{
- UNUSED(hdl);
- if((play_hdl != AUDIO_HDL_DEFAULT && hdl != play_hdl) || play_hdl < 0) {
- LOGE("Play busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_play_pause()) {
- LOGE("mbtk_audio_wav_play_pause() fail.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_AudPlayer_Resume(int hdl)
-{
- UNUSED(hdl);
- if((play_hdl != AUDIO_HDL_DEFAULT && hdl != play_hdl) || play_hdl < 0) {
- LOGE("Play busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_play_resume()) {
- LOGE("mbtk_audio_wav_play_resume() fail.");
- return -1;
- }
-
- return 0;
-}
-
-void qser_AudPlayer_Stop(int hdl)
-{
- UNUSED(hdl);
- if((play_hdl != AUDIO_HDL_DEFAULT && hdl != play_hdl) || play_hdl < 0) {
- LOGE("Play busy or hdl error.");
- return;
- }
-
- if(mbtk_audio_wav_play_stop()) {
- LOGE("mbtk_audio_wav_play_stop() fail.");
- return;
- }
-
- play_hdl = -1;
-}
-
-
-void qser_AudPlayer_Close(int hdl)
-{
- UNUSED(hdl);
-
- if(play_hdl >= 0) {
- qser_AudPlayer_Stop(hdl);
- }
-
- if(mbtk_audio_wav_deinit()) {
- LOGE("mbtk_audio_wav_deinit() fail.");
- return;
- }
-
- play_cb = NULL;
-}
-
-int qser_AudRecorder_Open(char* device, _cb_onPlayer cb_fun)
-{
- UNUSED(device);
- UNUSED(cb_fun);
- if(device == NULL || strcmp(device, AUDIO_DEV_RECORDER)) {
- LOGE("device must be %s for recv.", AUDIO_DEV_RECORDER);
- return -1;
- }
-
- if(mbtk_audio_wav_init()) {
- LOGE("mbtk_audio_wav_init() fail.");
- return -1;
- }
-
- recv_cb = cb_fun;
-
- return 0;
-}
-
-int qser_AudRecorder_StartRecord(int hdl, const char *fd, int offset)
-{
- UNUSED(hdl);
- UNUSED(fd);
- UNUSED(offset);
- if(recv_hdl >= 0) {
- LOGE("Recv busy.");
- if(recv_cb) {
- recv_cb(-1);
- }
- return -1;
- }
-
- if(mbtk_audio_wav_recorder_start(fd, MBTK_AUDIO_SAMPLE_RATE_8000)) {
- LOGE("mbtk_audio_wav_recorder_start() fail.");
- if(recv_cb) {
- recv_cb(-2);
- }
- return -1;
- }
-
- recv_hdl = hdl;
- if(recv_cb) {
- recv_cb(0);
- }
- return 0;
-}
-
-int qser_AudRecorder_StartRecord_Custom(char *file, int period_size, int period_count,
- int num_channels, int sample_rate)
-{
- return qser_AudRecorder_StartRecord(0, file, 0);
-}
-
-int qser_AudRecorder_Pause(void)
-{
- if(recv_hdl < 0) {
- LOGE("Recv busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_recorder_pause()) {
- LOGE("mbtk_audio_wav_recorder_pause() fail.");
- return -1;
- }
- return 0;
-}
-
-int qser_AudRecorder_Resume(void)
-{
- if(recv_hdl < 0) {
- LOGE("Recv busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_recorder_resume()) {
- LOGE("mbtk_audio_wav_recorder_resume() fail.");
- return -1;
- }
- return 0;
-}
-
-void qser_AudRecorder_Stop(void)
-{
- if(recv_hdl < 0) {
- LOGE("Recv busy or hdl error.");
- return;
- }
-
- if(mbtk_audio_wav_recorder_stop()) {
- LOGE("mbtk_audio_wav_recorder_stop() fail.");
- return;
- }
-
- recv_hdl = -1;
-}
-
-void qser_AudRecorder_Close(void)
-{
- if(recv_hdl >= 0) {
- qser_AudRecorder_Stop();
- }
-
- if(mbtk_audio_wav_deinit()) {
- LOGE("mbtk_audio_wav_deinit() fail.");
- return;
- }
-
- recv_cb = NULL;
-}
-
-void qser_Audio_Deinit(void)
-{
- // Do nothing...
-}
-
diff --git a/mbtk/liblynq_lib/src/lynq_chip_id.c b/mbtk/liblynq_lib/src/lynq_chip_id.c
deleted file mode 100755
index 10e21c9..0000000
--- a/mbtk/liblynq_lib/src/lynq_chip_id.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-#include <time.h>
-#include "mbtk_info_api.h"
-
-int lynq_get_time_sec(char *time_t)
-{
- struct timeval tv;
- int ret=gettimeofday(&tv,NULL);
- sprintf(time_t, "%ld", tv.tv_sec);
- return 0;
-}
-
-int lynq_imet_get(char *imei_t)
-{
- static mbtk_info_handle_t* info_handle = NULL;
- info_handle = mbtk_info_handle_get();
- if(!info_handle)
- {
- return -1;
- }
-
- int err;
- err = mbtk_imei_get(info_handle, imei_t);
- if(err) {
- // printf("Error : %d\n", err);
- return -1;
- } else {
- // printf("IMEI : %s\n", imei_t);
- }
- return 0;
-}
-
-
-int lynq_get_chip_id(char *chip_id)
-{
- char time[50]={0};
- char imei[50]={0};
- int ret = 0;
- lynq_get_time_sec(time);
- ret = lynq_imet_get(imei);
- if(!ret)
- {
- sprintf(chip_id,"%s%s",imei, time);
-// printf("%s\n",chip_id );
- }
- else{
- return -1;
- }
-
- return 0;
-}
-
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_data_call.c b/mbtk/liblynq_lib/src/lynq_data_call.c
deleted file mode 100644
index 7b75631..0000000
--- a/mbtk/liblynq_lib/src/lynq_data_call.c
+++ /dev/null
@@ -1,870 +0,0 @@
-#include "lynq-qser-data.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-#include <pthread.h>
-#include <cutils/properties.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-/****************************DEFINE***************************************/
-#define QSER_RESULT_SUCCESS 0
-#define QSER_RESULT_FAIL -1
-
-#define MBTK_INFO_ERR_CID_EXIST 311
-#define MBTK_INFO_ERR_CID_NO_EXIST 312
-#define MBTK_INFO_ERR_NO_APN 500
-
-#define QSER_APN_NUM 8
-//default range: 0 - 7
-//AT+CGACT range: 1 - 8
-//1 default IDX, 8 IMS IDX
-#if defined(MBTK_ALL_CID_SUPPORT)
-#if defined(MBTK_SG_SUPPORT)
-#define QSER_PROFILE_IDX_MIN 0
-#else
-#define QSER_PROFILE_IDX_MIN 1
-#endif
-#else
-#define QSER_PROFILE_IDX_MIN 1
-#endif
-#define QSER_PROFILE_IDX_MAX 6
-
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-mbtk_info_handle_t* qser_info_handle = NULL;
-int qser_info_handle_num = 0;
-static bool inited = FALSE;
-static qser_data_call_evt_cb_t qser_net_status_cb = NULL;
-/****************************VARIABLE***************************************/
-
-/******************************FUNC*****************************************/
-static int qser_apn_info_param_convert(int profile_idx, qser_apn_info_s *new_apn, mbtk_qser_apn_info_s *old_apn)
-{
- if(new_apn == NULL || old_apn == NULL)
- {
- LOGE("[qser_data] qser_apn_info_param_convert apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(new_apn, 0x0, sizeof(qser_apn_info_s));
- new_apn->profile_idx = old_apn->cid - 1;
- //get ip type
- if(old_apn->ip_type == MBTK_IP_TYPE_IPV4V6) // IPV4V6
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_IPV4V6;
- }
- else if(old_apn->ip_type == MBTK_IP_TYPE_IP) // IPV4
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_IPV4;
- }
- else if(old_apn->ip_type == MBTK_IP_TYPE_IPV6) // IPV6
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_IPV6;
- }
- else
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_PPP;
- }
-
- //get apn name
- if(strlen((char *)old_apn->apn_name) > QSER_APN_NAME_SIZE)
- {
- LOGE("[qser_data] apn_nmea length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->apn_name) > 0)
- {
- memcpy(new_apn->apn_name, old_apn->apn_name,strlen((char *)old_apn->apn_name));
- }
- }
-
- //get apn user
- if(strlen((char *)old_apn->user_name) > QSER_APN_USERNAME_SIZE)
- {
- LOGE("[qser_data] apn_user length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->user_name) > 0)
- {
- memcpy(new_apn->username, old_apn->user_name, strlen((char *)old_apn->user_name));
- }
- }
-
- //get apn password
- if(strlen((char *)old_apn->user_pass) > QSER_APN_PASSWORD_SIZE)
- {
- LOGE("[qser_data] apn_password length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->user_pass) > 0)
- {
- memcpy(new_apn->password, old_apn->user_pass, strlen((char *)old_apn->user_pass));
- }
- }
-
- //get apn proto
- new_apn->auth_proto = (qser_apn_auth_proto_e)old_apn->auth_proto;
-
- //get apn type
- if(strlen((char *)old_apn->apn_type) > QSER_APN_PASSWORD_SIZE)
- {
- LOGE("[qser_data] apn_type length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->apn_type) > 0)
- {
- memcpy(new_apn->apn_type, old_apn->apn_type, strlen((char *)old_apn->apn_type));
- }
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-static void qser_state_init(qser_data_call_state_s *state)
-{
- if(state != NULL)
- {
- state->profile_idx = 0;
- memset(state->name, 0x0, 16);
- state->ip_family = QSER_DATA_CALL_TYPE_IPV4V6;
- state->state = QSER_DATA_CALL_DISCONNECTED;
- state->err = QSER_DATA_CALL_ERROR_NONE;
- inet_aton("0.0.0.0", &(state->v4.ip));
- inet_aton("0.0.0.0", &(state->v4.gateway));
- inet_aton("0.0.0.0", &(state->v4.pri_dns));
- inet_aton("0.0.0.0", &(state->v4.sec_dns));
- inet_pton(AF_INET6, "::", &(state->v6.ip));
- inet_pton(AF_INET6, "::", &(state->v6.gateway));
- inet_pton(AF_INET6, "::", &(state->v6.pri_dns));
- inet_pton(AF_INET6, "::", &(state->v6.sec_dns));
- }
-}
-
-void qser_wan_net_state_change_cb(const void* data, int data_len)
-{
- if(data == NULL || data_len == 0)
- {
- return;
- }
-
- uint8 *net_data = NULL;
- net_data = (uint8 *)data;
-
- if(*net_data > 100 && *net_data < 200)
- {
- int idx = *net_data - 101;
- if(idx <= QSER_PROFILE_IDX_MAX)
- {
- qser_data_call_state_s state = {0};
- qser_state_init(&state);
- state.profile_idx = idx;
- state.state = QSER_DATA_CALL_DISCONNECTED;
- if(qser_net_status_cb != NULL)
- {
- qser_net_status_cb(&state);
- }
- }
- else
- {
- LOGE("[qser_data] cb fail,idx is %d.", idx);
- }
-
- }
- else if(*net_data > 200 && *net_data < 220)
- {
- LOGE("[qser_data] cid[%d] is open.", *net_data - 201);
- }
- else if(*net_data > 220)
- {
- LOGE("[qser_data] cid[%d] is reopen.", *net_data - 221);
- int idx = *net_data - 221;
- if(idx <= QSER_PROFILE_IDX_MAX)
- {
- qser_data_call_state_s state = {0};
- qser_state_init(&state);
- state.profile_idx = idx;
- state.state = QSER_DATA_CALL_CONNECTED;
- snprintf(state.name, 16, "ccinet%d", idx);
- if(qser_net_status_cb != NULL)
- {
- qser_net_status_cb(&state);
- }
- }
- }
- else if(*net_data == 1)
- {
- LOGE("[qser_data] pdp is open.");
- }
- else
- {
- LOGE("[qser_data] unkonwn param [%d].", *net_data);
- }
-}
-
-static void* data_call_async_thread(void* arg)
-{
- LOGE("[qser_data] entry data_call_async_thread.");
- qser_data_call_error_e err = QSER_DATA_CALL_ERROR_NONE;
-
- qser_data_call_s qser_data_backup = {0};
- qser_data_call_info_s info = {0};
- if(arg != NULL)
- {
- memcpy(&qser_data_backup, (qser_data_call_s *)arg, sizeof(qser_data_call_s));
- }
- else
- {
- LOGE("[qser_data] arg is NULL.");
- }
-
- qser_data_call_state_s state = {0};
- qser_state_init(&state);
- state.profile_idx = qser_data_backup.profile_idx;
- snprintf(state.name, 16, "ccinet%d", qser_data_backup.profile_idx);
- state.ip_family = qser_data_backup.ip_family;
-
- int ret = qser_data_call_start(&qser_data_backup, &err);
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_data] qser_data_call_start() fail.");
- state.err = err;
- }
- else
- {
- state.state = QSER_DATA_CALL_CONNECTED;
- ret = qser_data_call_info_get(qser_data_backup.profile_idx, qser_data_backup.ip_family, &info, &err);
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_data] qser_data_call_info_get() fail.");
- state.err = err;
- }
- else
- {
- memcpy(&(state.v4), &(info.v4.addr), sizeof(struct v4_address_status));
- memcpy(&(state.v6), &(info.v6.addr), sizeof(struct v6_address_status));
- }
- }
-
- if(qser_net_status_cb != NULL)
- {
- qser_net_status_cb(&state);
- }
- return NULL;
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int qser_data_call_init(qser_data_call_evt_cb_t evt_cb)
-{
- //UNUSED(evt_cb);
- if(!inited && qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- else
- {
- LOGE("[qser_data] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- if(!inited)
- {
- qser_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- }
- qser_net_status_cb = evt_cb;
-
- LOGE("[qser_data] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-void qser_data_call_destroy(void)
-{
- if(qser_info_handle)
- {
- LOGE("[qser_data] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_data] mbtk_info_handle_free() fail.");
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- qser_net_status_cb = NULL;
- inited = FALSE;
- }
- }
- else
- {
- qser_info_handle_num--;
- qser_net_status_cb = NULL;
- }
- }
- else
- {
- LOGE("[qser_data] handle not inited.");
- }
-}
-
-int qser_data_call_start(qser_data_call_s *data_call, qser_data_call_error_e *err)
-{
- //UNUSED(data_call);
- //UNUSED(err);
- if(data_call == NULL || err == NULL)
- {
- LOGE("[qser_data] data_call or err is NULL.");
- if(err != NULL)
- {
- *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- }
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- int ret = -1;
- ret = mbtk_data_call_start(qser_info_handle, data_call->profile_idx + 1, 0, FALSE, 0);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_data_call_start fail.[ret = %d]", ret);
- if(ret == MBTK_INFO_ERR_CID_EXIST)
- {
- *err = QSER_DATA_CALL_ERROR_PDP_ACTIVATE;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- }
- return QSER_RESULT_FAIL;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_NONE;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_data_call_start_async(qser_data_call_s *data_call, qser_data_call_error_e *err)
-{
- //UNUSED(data_call);
- UNUSED(err);
- if(data_call == NULL || err == NULL)
- {
- LOGE("[qser_data] data_call or err is NULL.");
- if(err != NULL)
- {
- *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- }
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- pthread_attr_t thread_attr;
- pthread_t data_call_thread_id;
- pthread_attr_init(&thread_attr);
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("[qser_data] pthread_attr_setdetachstate() fail.");
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- return QSER_RESULT_FAIL;
- }
-
- //memcpy(&qser_data_backup, data_call, sizeof(qser_data_call_s));
- if(pthread_create(&data_call_thread_id, &thread_attr, data_call_async_thread, (void *) data_call))
- {
- LOGE("[qser_data] pthread_create() fail.");
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- return QSER_RESULT_FAIL;
- }
- pthread_attr_destroy(&thread_attr);
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_data_call_stop(char profile_idx, qser_data_call_ip_family_e ip_family, qser_data_call_error_e *err)
-{
- //UNUSED(profile_idx);
- UNUSED(ip_family);
- //UNUSED(err);
- if(err == NULL)
- {
- LOGE("[qser_data] err is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- int ret = -1;
- ret = mbtk_data_call_stop(qser_info_handle, profile_idx + 1, 15);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_data_call_stop fail.[ret = %d]", ret);
- if(ret == MBTK_INFO_ERR_CID_NO_EXIST)
- {
- *err = QSER_DATA_CALL_ERROR_PDP_NO_ACTIVATE;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- }
- return QSER_RESULT_FAIL;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_NONE;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_data_call_info_get(char profile_idx,qser_data_call_ip_family_e ip_family,
- qser_data_call_info_s *info, qser_data_call_error_e *err)
-{
- //UNUSED(profile_idx);
- UNUSED(ip_family);
- //UNUSED(info);
- //UNUSED(err);
-
- if(info == NULL || err == NULL)
- {
- LOGE("[qser_data] info or err is NULL.");
- if(err != NULL)
- {
- *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- }
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- int ret = -1;
- mbtk_ipv4_info_t ipv4;
- mbtk_ipv6_info_t ipv6;
-#ifdef QSER_TEST
- char v4_buff[32] = {0};
- char v6_buff[128] = {0};
-#endif
- memset(info, 0, sizeof(qser_data_call_info_s));
- ret = mbtk_data_call_state_get(qser_info_handle, profile_idx + 1, &ipv4, &ipv6);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_data_call_state_get fail.[ret = %d]", ret);
- if(ret == MBTK_INFO_ERR_CID_NO_EXIST)
- {
- *err = QSER_DATA_CALL_ERROR_PDP_NO_ACTIVATE;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- }
- return QSER_RESULT_FAIL;
- }
- else
- {
- info->profile_idx = profile_idx;
- if(ipv4.valid)
- {
- info->ip_family = QSER_DATA_CALL_TYPE_IPV4;
- info->v4.state = QSER_DATA_CALL_CONNECTED;
- sprintf(info->v4.name, "ccinet%d", profile_idx);
- info->v4.addr.ip.s_addr = ipv4.IPAddr;
- info->v4.addr.pri_dns.s_addr = ipv4.PrimaryDNS;
- info->v4.addr.sec_dns.s_addr = ipv4.SecondaryDNS;
- info->v4.reconnect = 1;
-
-#ifdef QSER_TEST
- //LOGE("[qser_data] IP: %x pri_DNS: %x sec_DNS: %x.", ipv4.IPAddr, ipv4.PrimaryDNS, ipv4.SecondaryDNS);
- if(inet_ntop(AF_INET, &(info->v4.addr.ip), v4_buff, 32) == NULL) {
- LOGE("[qser_data] IP error.");
- } else {
- LOGE("[qser_data] IP : %s", v4_buff);
- }
- if(inet_ntop(AF_INET, &(info->v4.addr.pri_dns), v4_buff, 32) == NULL) {
- LOGE("[qser_data] PrimaryDNS error.");
- } else {
- LOGE("[qser_data] PrimaryDNS : %s", v4_buff);
- }
- if(inet_ntop(AF_INET, &(info->v4.addr.sec_dns), v4_buff, 32) == NULL) {
- LOGE("[qser_data] SecondaryDNS error.");
- } else {
- LOGE("[qser_data] SecondaryDNS : %s", v4_buff);
- }
-#endif
- }
-
- if(ipv6.valid)
- {
- info->ip_family = QSER_DATA_CALL_TYPE_IPV6;
- info->v6.state = QSER_DATA_CALL_CONNECTED;
- sprintf(info->v6.name, "ccinet%d", profile_idx);
- memcpy(&(info->v6.addr.ip), &(ipv6.IPV6Addr), sizeof(ipv6.IPV6Addr));
- memcpy(&(info->v6.addr.pri_dns), &(ipv6.PrimaryDNS), sizeof(ipv6.PrimaryDNS));
- memcpy(&(info->v6.addr.sec_dns), &(ipv6.SecondaryDNS), sizeof(ipv6.SecondaryDNS));
- info->v6.reconnect = 1;
-
-#ifdef QSER_TEST
- if(ipv6_2_str(&(info->v6.addr.ip), v6_buff))
- {
- LOGE("[qser_data] IP error.");
- } else {
- LOGE("[qser_data] IP : %s", v6_buff);
- }
- if(ipv6_2_str(&(info->v6.addr.pri_dns), v6_buff))
- {
- LOGE("[qser_data] PrimaryDNS error.");
- } else {
- LOGE("[qser_data] PrimaryDNS : %s", v6_buff);
- }
- if(ipv6_2_str(&(info->v6.addr.sec_dns), v6_buff))
- {
- LOGE("[qser_data] SecondaryDNS error.");
- } else {
- LOGE("[qser_data] SecondaryDNS : %s", v6_buff);
- }
-#endif
- }
-
- if(ipv4.valid && ipv6.valid)
- {
- info->ip_family = QSER_DATA_CALL_TYPE_IPV4V6;
- }
-
- if(!ipv4.valid && !ipv6.valid)
- {
- info->v4.state = QSER_DATA_CALL_DISCONNECTED;
- info->v6.state = QSER_DATA_CALL_DISCONNECTED;
- }
- }
-
- *err = QSER_DATA_CALL_ERROR_NONE;
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_set(qser_apn_info_s *apn)
-{
- //UNUSED(apn);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn == NULL)
- {
- LOGE("[qser_data] apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int ret = 0;
- mbtk_qser_apn_info_s apninfo;
- memset(&apninfo, 0x0, sizeof(mbtk_qser_apn_info_s));
- apninfo.cid = apn->profile_idx + 1;
-
- if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IP;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4V6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV4V6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_PPP)
- {
- apninfo.ip_type = MBTK_IP_TYPE_PPP;
- }
- else
- {
- LOGE("[qser_data] pdp_type error.");
- return QSER_RESULT_FAIL;
- }
-
-
- apninfo.req_type = MBTK_APN_REQ_TYPE_SET;
- apninfo.auth_proto = (mbtk_apn_auth_proto_enum)apn->auth_proto;
- if(strlen(apn->apn_name))
- {
- memcpy(apninfo.apn_name, apn->apn_name, strlen(apn->apn_name));
- }
- else
- {
- LOGE("[qser_data] apn_name is NULL.");
- return QSER_RESULT_FAIL;
- }
- if(strlen(apn->username))
- {
- memcpy(apninfo.user_name, apn->username, strlen(apn->username));
- }
- if(strlen(apn->password))
- {
- memcpy(apninfo.user_pass, apn->password, strlen(apn->password));
- }
- if(strlen(apn->apn_type))
- {
- memcpy(apninfo.apn_type, apn->apn_type, strlen(apn->apn_type));
- }
- ret = mbtk_qser_apn_set(qser_info_handle, &apninfo, NULL);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_qser_apn_set fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn)
-{
- //UNUSED(profile_idx);
- //UNUSED(apn);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn == NULL)
- {
- LOGE("[qser_data] apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- //get apn info
- mbtk_qser_apn_info_s apns[10] = {0};
- int apn_num = 10;
- int ret = mbtk_qser_apn_get(qser_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_apn_get fail. [ret = %d]",ret);
- return QSER_RESULT_FAIL;
- }
- else
- {
- int i = 0;
- for(i = 0; i < apn_num; i++)
- {
- if(apns[i].cid == profile_idx + 1)
- {
- LOGE("[qser_data] find IDX.");
- break;
- }
- }
-
- if(i == apn_num)
- {
- LOGE("[qser_data] not find IDX.[apn_num = %d]", apn_num);
- return QSER_RESULT_FAIL;
- }
-
- if(qser_apn_info_param_convert(profile_idx, apn, &apns[i]) != 0)
- {
- LOGE("[qser_data] qser_apn_info_param_convert fail");
- return QSER_RESULT_FAIL;
- }
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_add(qser_apn_add_s *apn, unsigned char *profile_idx)
-{
- //UNUSED(apn);
- //UNUSED(profile_idx);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn == NULL || profile_idx == NULL)
- {
- LOGE("[qser_data] apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int ret = 0;
- unsigned char idx[2] = {0};
- mbtk_qser_apn_info_s apninfo;
- memset(&apninfo, 0x0, sizeof(mbtk_qser_apn_info_s));
- apninfo.cid = 0;
-
- if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IP;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4V6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV4V6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_PPP)
- {
- apninfo.ip_type = MBTK_IP_TYPE_PPP;
- }
- else
- {
- LOGE("[qser_data] pdp_type error.");
- return QSER_RESULT_FAIL;
- }
-
- apninfo.req_type = MBTK_APN_REQ_TYPE_ADD;
- apninfo.auth_proto = (mbtk_apn_auth_proto_enum)apn->auth_proto;
- if(strlen(apn->apn_name))
- {
- memcpy(apninfo.apn_name, apn->apn_name, strlen(apn->apn_name));
- }
-
- if(strlen(apn->username))
- {
- memcpy(apninfo.user_name, apn->username, strlen(apn->username));
- }
- if(strlen(apn->password))
- {
- memcpy(apninfo.user_pass, apn->password, strlen(apn->password));
- }
- if(strlen(apn->apn_type))
- {
- memcpy(apninfo.apn_type, apn->apn_type, strlen(apn->apn_type));
- }
- ret = mbtk_qser_apn_set(qser_info_handle, &apninfo, idx);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_qser_apn_set fail.");
- return QSER_RESULT_FAIL;
- }
- *profile_idx = idx[0] - 1;
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_del(unsigned char profile_idx)
-{
- int ret = 0;
-
- //UNUSED(profile_idx);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_apn_del(qser_info_handle, profile_idx);
- if(ret < 0)
- {
- LOGE("[qser_data] mbtk_apn_del fail!");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_get_list(qser_apn_info_list_s *apn_list)
-{
- //UNUSED(apn_list);
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn_list == NULL)
- {
- LOGE("[qser_data] apn_list param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_qser_apn_info_s apns[10] = {0};
- int apn_num = 10;
- int ret = mbtk_qser_apn_get(qser_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- if(ret == MBTK_INFO_ERR_NO_APN)
- {
- apn_list->cnt = 0;
- return QSER_RESULT_SUCCESS;
- }
- LOGE("[qser_data] mbtk_apn_get fail. [ret = %d]",ret);
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(apn_num > 0 && apn_num <= QSER_APN_MAX_LIST)
- {
- int i = 0;
- apn_list->cnt = 0;
- for(i = 0; i < apn_num; i++)
- {
- if(qser_apn_info_param_convert(apns[i].cid - 1, &apn_list->apn[apn_list->cnt], &apns[i]) != 0)
- {
- LOGE("[qser_data] qser_apn_info_param_convert fail");
- return QSER_RESULT_FAIL;
- }
- apn_list->cnt++;
- }
- }
- else if(apn_num > QSER_APN_MAX_LIST)
- {
- LOGE("[qser_data] apn_num overlong");
- return QSER_RESULT_FAIL;
- }
- else
- {
- apn_list->cnt = 0;
- }
- }
- return QSER_RESULT_SUCCESS;
-}
-/****************************API***************************************/
-
diff --git a/mbtk/liblynq_lib/src/lynq_fota.c b/mbtk/liblynq_lib/src/lynq_fota.c
deleted file mode 100755
index 9b12656..0000000
--- a/mbtk/liblynq_lib/src/lynq_fota.c
+++ /dev/null
@@ -1,113 +0,0 @@
-#include "lynq-qser-fota.h"
-#include "mbtk_type.h"
-#include "mbtk_fota.h"
-#include "mbtk_log.h"
-
-
-char addr_buf[128]={0};
-int segment_size =0;
-
-
-int Process_flag = 0;
-
-
-int fota_cb(int status, int percent)
-{
- LOGE("%d: percent: %d%%\n", percent/10, percent);
- Process_flag = percent/10;
- return 0;
-}
-
-int lynq_read_process(void)
-{
- return Process_flag;
-}
-
-int lynq_rock_main(int first_run)
-{
- UNUSED(first_run);
- LOGE("%s, %d", __FUNCTION__, __LINE__);
- int ret = 0;
-
- LOGE("addr_buf:%s, segment_size:%d\n", addr_buf, segment_size);
- ret = mbtk_fota_init(fota_cb);
- if(strncmp(addr_buf, "http", 4) == 0)
- {
-
- ret = mbtk_fota_fw_write_by_url(addr_buf, segment_size,10, 600);
- }
- else
- {
- ret =mbtk_fota_fw_write(addr_buf, segment_size);
- }
-
- if(ret)
- {
- LOGE("lynq_rock_main fail\n");
- return -1;
- }
-
- mbtk_fota_done1(1);
-
-
- return 0;
-}
-
-int lynq_fota_set_addr_value(char *value,int size)
-{
- UNUSED(value);
- UNUSED(size);
- LOGE("%s, %d", __FUNCTION__, __LINE__);
-
- if(value == NULL)
- {
- return -1;
- }
-
- memset(addr_buf, 0, sizeof(addr_buf));
- memcpy(addr_buf, value, strlen(value));
- segment_size = size;
-
- LOGE("addr_buf:%s, value:%s\n", addr_buf, value);
- LOGE("segment_size:%d, size:%d\n", segment_size, size);
-
- return 0;
-}
-
-int lynq_fota_nrestart(void)
-{
- LOGE("%s, %d", __FUNCTION__, __LINE__);
- int ret = 0;
-
- LOGE("addr_buf:%s", addr_buf);
- ret = mbtk_fota_init(fota_cb);
- if(strncmp(addr_buf, "http", 4) == 0)
- {
- ret = mbtk_fota_fw_write_by_url(addr_buf, segment_size,10, 600);
- }
- else
- {
- ret =mbtk_fota_fw_write(addr_buf, segment_size);
- }
-
- if(ret)
- {
- LOGE("lynq_fota_nrestart fail\n");
- return -1;
- }
-
- return 0;
-}
-
-int lynq_get_upgrade_status(void)
-{
- LOGE("%s, %d", __FUNCTION__, __LINE__);
-
- return mbtk_fota_status();
-}
-
-int lynq_get_reboot_upgrade_status(void)
-{
- return mbtk_fota_get_asr_reboot_cnt_flag();
-}
-
diff --git a/mbtk/liblynq_lib/src/lynq_gnss.c b/mbtk/liblynq_lib/src/lynq_gnss.c
deleted file mode 100755
index 3b5236c..0000000
--- a/mbtk/liblynq_lib/src/lynq_gnss.c
+++ /dev/null
@@ -1,519 +0,0 @@
-#include <time.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lynq_gnss.h"
-
-#define QSER_RESULT_SUCCESS 0
-#define QSER_RESULT_FAIL -1
-#define QSER_GNSS_TIMEOUT 5
-#define QSER_AGNSS_DOWNLOAD_TIMEPUT 60
-#define QSER_AGNSS_INJECT_TIMEOUT 20
-
-/**********************************VARIABLE***********************************/
-static bool inited = FALSE;
-static uint32_t qser_h_gnss = 0x5F6F7F8F;
-gnss_handler_func_t qser_gnss_callback = NULL;
-static time_t qser_gnss_time = 0;
-qser_agps_info qser_agps_info_save = {0};
-gnss_async_func_t qser_gnss_async_callback = NULL;
-
-extern long timezone;
-/**********************************VARIABLE***********************************/
-
-/**********************************FUNC***********************************/
-static void qser_gnss_async_set_cb(gnss_async_func_t cb)
-{
- qser_gnss_async_callback = cb;
-}
-
-static gnss_async_func_t qser_gnss_async_get_cb(void)
-{
- return qser_gnss_async_callback;
-}
-
-
-static time_t qser_get_timestamp(char *time)
-{
- char tmp_char[4] = {0};
- struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));
-
- memset(tmp_time, 0, sizeof(struct tm));
- memset(tmp_char, 0, sizeof(tmp_char));
- memcpy(tmp_char, &time[4], 2);
- tmp_time->tm_sec = atoi(tmp_char);
- memcpy(tmp_char, &time[2], 2);
- tmp_time->tm_min = atoi(tmp_char);
- memcpy(tmp_char, &time[0], 2);
- tmp_time->tm_hour = atoi(tmp_char);
- memcpy(tmp_char, &time[6], 2);
- tmp_time->tm_mday = atoi(tmp_char);
- memcpy(tmp_char, &time[8], 2);
- tmp_time->tm_mon = atoi(tmp_char) - 1;
- memcpy(tmp_char, &time[10], 2);
- tmp_time->tm_year = 100 + atoi(tmp_char);
-
- time_t _t = mktime(tmp_time);//按当地时区解析tmp_time
- //gnss_log("timestamp: %ld\n",_t);
- tzset(); // 自动设置本地时区
- _t = _t - timezone;
- //gnss_log("timestamp: %ld\n",_t);
-
- free(tmp_time);
- return _t;
-}
-
-static time_t qser_get_gnss_time_sec(const void *data, int data_len)
-{
- int i = 0, num = 0;
- const char *nmea = (const char *)data;
- char time[15] = {0};
- char *check_state = NULL;
-
- //$GNRMC,024142.000,A,3039.364421,N,10403.417935,E,0.051,0.00,030124,,E,A*00
- check_state = strstr(nmea, "RMC");
- if(check_state != NULL)
- {
- for(i = 0; i < data_len; i++)
- {
- if(check_state[i] == ',')
- {
- num++;
- i++;
- if(num == 1)//get time
- {
- if(check_state[i] >= '0' && check_state[i] <= '9')
- {
- memcpy(time, check_state + i, 6);
- //LOGE("[qser_gnss] %s.", time);
- }
- else
- {
- qser_gnss_time = 0;
- return qser_gnss_time;
- }
- }
- else if(num == 9)//get date
- {
- if(check_state[i] >= '0' && check_state[i] <= '9')
- {
- memcpy(time + 6, check_state + i, 6);
- //LOGE("[qser_gnss] %s.", time);
- break;
- }
- else
- {
- qser_gnss_time = 0;
- return qser_gnss_time;
- }
- }
- else if(num > 9)
- {
- qser_gnss_time = 0;
- return qser_gnss_time;
- }
- }
- }
-
- qser_gnss_time = qser_get_timestamp(time);
- }
-
- return qser_gnss_time;
-}
-
-static void* gnss_async_thread(void* arg)
-{
- qser_gnss_error_e state = QSER_GNSS_ERROR_SUCCESS;
- gnss_async_func_t cb = qser_gnss_async_get_cb();
- int ret = qser_Gnss_Start(qser_h_gnss);
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_gnss] gnss_async_thread() fail.");
- state = QSER_GNSS_ERROR_FAIL;
- }
-
- if(cb != NULL)
- {
- cb(state);
- }
- return NULL;
-}
-
-static void gnss_callback(uint32 ind_type, const void* data, uint32 data_len)
-{
- if(data == NULL || data_len <= 0)
- {
- LOGE("[qser_gnss] data is NULL.");
- return;
- }
-
- if(qser_gnss_callback == NULL)
- {
- //LOGE("[qser_gnss] qser_gnss_callback is NULL.");
- return;
- }
-
- if(ind_type == MBTK_GNSS_IND_LOCATION) {
- if(data_len != sizeof(mbtk_gnss_location_info_t))
- {
- LOGE("[qser_gnss] data size error");
- return;
- }
- mbtk_gnss_location_info_t *locl_info = (mbtk_gnss_location_info_t *)data;
- mopen_location_info_t qser_locl_info;
- memset(&qser_locl_info, 0x0, sizeof(mopen_location_info_t));
- qser_locl_info.latitude = locl_info->latitude;
- qser_locl_info.longitude = locl_info->longitude;
- qser_locl_info.altitude = locl_info->altitude;
- qser_locl_info.speed = locl_info->speed;
- qser_locl_info.bearing = locl_info->bearing;
- qser_locl_info.timestamp = locl_info->timestamp;
- qser_gnss_callback(NULL, E_MT_LOC_MSG_ID_LOCATION_INFO, (void *)(&qser_locl_info), NULL);
- } else if(ind_type == MBTK_GNSS_IND_NMEA) {
- mopen_gnss_nmea_info_t qser_nmea = {0};
- memset(&qser_nmea, 0x0, sizeof(mopen_gnss_nmea_info_t));
- qser_nmea.length = data_len;
- memcpy(qser_nmea.nmea, (char *)data, data_len);
- qser_nmea.timestamp = qser_get_gnss_time_sec(data, data_len);
- qser_gnss_callback(NULL, E_MT_LOC_MSG_ID_NMEA_INFO, (void *)(&qser_nmea), NULL);
- } else {
- printf("Unknown IND : %d\n", ind_type);
- }
-}
-
-
-/**********************************FUNC***********************************/
-
-/**********************************API***********************************/
-int qser_Gnss_Init (uint32_t *h_gnss)
-{
- //UNUSED(h_gnss);
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
-
- if(!inited)
- {
- ret = mbtk_gnss_init(gnss_callback);
- if(ret == GNSS_ERR_OK)
- {
- ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_NMEA, QSER_GNSS_TIMEOUT);
- if(ret == GNSS_ERR_OK)
- {
- inited = TRUE;
- }
- else
- {
- LOGE("[qser_gnss] init mbtk_gnss_ind_set() fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- LOGE("[qser_gnss] mbtk_gnss_init() fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- }
- *h_gnss = qser_h_gnss;
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Deinit (uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
-
- if(inited)
- {
- ret = mbtk_gnss_deinit();
- if(ret == GNSS_ERR_OK)
- {
- inited = FALSE;
- }
- else
- {
- LOGE("[qser_gnss] mbtk_gnss_init() fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss)
-{
- //UNUSED(handler_ptr);
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(handler_ptr == NULL)
- {
- LOGE("[qser_gnss] handler_ptr is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- qser_gnss_callback = handler_ptr;
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type)
-{
- //UNUSED(h_gnss);
- //UNUSED(type);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_OK;
- if(type == E_MT_LOC_MSG_ID_LOCATION_INFO)
- {
- ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_LOCATION, QSER_GNSS_TIMEOUT);
- }
- else if(type == E_MT_LOC_MSG_ID_NMEA_INFO)
- {
- ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_NMEA, QSER_GNSS_TIMEOUT);
- }
- else
- {
- LOGE("[qser_gnss] type is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_ind_set() fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Set_Async_Callback(gnss_async_func_t cb)
-{
- qser_gnss_async_set_cb(cb);
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Start (uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
-
- ret = mbtk_gnss_open(255, QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_open is error.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Start_Async(uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- pthread_attr_t thread_attr;
- pthread_t gnss_thread_id;
- pthread_attr_init(&thread_attr);
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("[qser_gnss] pthread_attr_setdetachstate() fail.");
- return QSER_RESULT_FAIL;
- }
-
- //memcpy(&qser_data_backup, data_call, sizeof(qser_data_call_s));
- if(pthread_create(&gnss_thread_id, &thread_attr, gnss_async_thread, NULL))
- {
- LOGE("[qser_gnss] pthread_create() fail.");
- return QSER_RESULT_FAIL;
- }
- pthread_attr_destroy(&thread_attr);
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Stop (uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- ret = mbtk_gnss_close(QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_close is error.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
-{
- //UNUSED(h_gnss);
- UNUSED(time_info);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
-{
- //UNUSED(h_gnss);
- //UNUSED(flags);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Server_Configuration(char *host, char *id, char *password)
-{
- //UNUSED(host);
- //UNUSED(id);
- //UNUSED(password);
-
- if(!inited)
- {
- LOGE("[qser_gnss] api not init.");
- return QSER_RESULT_FAIL;
- }
-
- memset(qser_agps_info_save.host, 0x0, QSER_LEN_MAX);
- if(host != NULL && strlen(host) > 0 && strlen(host) < QSER_LEN_MAX)
- {
- memcpy(qser_agps_info_save.host, host, strlen(host));
- }
-
- memset(qser_agps_info_save.id, 0x0, QSER_LEN_MAX);
- if(id != NULL && strlen(id) > 0 && strlen(id) < QSER_LEN_MAX)
- {
- memcpy(qser_agps_info_save.id, id, strlen(id));
- }
-
- memset(qser_agps_info_save.passwd, 0x0, QSER_LEN_MAX);
- if(password != NULL && strlen(password) > 0 && strlen(password) < QSER_LEN_MAX)
- {
- memcpy(qser_agps_info_save.passwd, password, strlen(password));
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- char write_buff[512] = {0};
- int write_length = 0;
- write_length = snprintf(write_buff, 512, "$AGPSCFG,%s,%s,%s", strlen(qser_agps_info_save.host) > 0 ? qser_agps_info_save.host : "NULL",
- strlen(qser_agps_info_save.id) > 0 ? qser_agps_info_save.id : "NULL",
- strlen(qser_agps_info_save.passwd) > 0 ? qser_agps_info_save.passwd : "NULL");
- ret = mbtk_gnss_setting(write_buff, QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_download_tle()
-{
- if(!inited)
- {
- LOGE("[qser_gnss] api not init.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- ret = mbtk_gnss_eph_download(QSER_AGNSS_DOWNLOAD_TIMEPUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_eph_download fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_injectEphemeris(uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- ret = mbtk_gnss_eph_inject(QSER_AGNSS_INJECT_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_eph_inject fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency)
-{
- //UNUSED(h_gnss);
- //UNUSED(frequency);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(frequency != 1 && frequency != 2 && frequency != 5)
- {
- LOGE("[qser_gnss] frequency out of range.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- char param_buf[32] = {0};
- int length = 0;
- length = snprintf(param_buf, 32, "$FREQCFG,%d", frequency);
- ret = mbtk_gnss_setting(param_buf, QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-/**********************************API***********************************/
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_gpio.c b/mbtk/liblynq_lib/src/lynq_gpio.c
deleted file mode 100755
index 4dcd694..0000000
--- a/mbtk/liblynq_lib/src/lynq_gpio.c
+++ /dev/null
@@ -1,339 +0,0 @@
-#include "mbtk_type.h"
-#include "lynq-gpio.h"
-#include "unistd.h"
-#include "fcntl.h"
-#include "mbtk_log.h"
-
-#include <errno.h>
-static int gpio_export(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
-
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == 0)
- {
- LOGD("%d has export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/export",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio export file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result = write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- LOGE("Gpio[%d] export fail. err = %d", gpio, errno);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_unexport(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == -1)
- {
- LOGD("%d not export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/unexport",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio unexport file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result=write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- close(file);
- LOGE("Gpio[%d] unexport fail.", gpio);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_direct_get(int gpio, char *value, int value_size)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- memset(value, 0x0, value_size);
- result = read(file,value,value_size);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-
-static int gpio_direct_set(int gpio, char *value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- result = write(file,value,strlen(value));
- if(result != strlen(value))
- {
- LOGE("Set gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_value_get(int gpio)
-{
- char buffer[50];
- char path[10];
- int file =-1;
- int result =-1;
- int value;
-
- memset(path,0,50);
- memset(buffer,0,10);
- sprintf(path,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(path,O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] fail.", gpio);
- return -1;
- }
- result = read(file,buffer,5);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] value fail", gpio);
- close(file);
- return -1;
- }
- close(file);
- value = atoi(buffer);
- return value;
-}
-
-static int gpio_value_set(int gpio, int value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(buffer,O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] value fail.", gpio);
- return -1;
- }
- if(value == 0) {
- result = write(file,"0",1);
- } else {
- result = write(file,"1",1);
- }
- if(result != 1)
- {
- LOGE("Set gpio[%d] value fail err =%d.", gpio, errno);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-
-int lynq_gpio_init(int gpio, int direction, int value, int pullsel)
-{
- //UNUSED(gpio);
- //UNUSED(direction);
- //UNUSED(value);
- UNUSED(pullsel);
-
- if (direction != 1 && direction != 0)
- {
- LOGE("[lynq_gpio_init] direction fail.");
- return -1;
- }
-
- if (value != 1 && value != 0)
- {
- LOGE("[lynq_gpio_init] value fail.");
- return -1;
- }
-
- if(gpio_export(gpio))
- {
- LOGE("[lynq_gpio_init]gpio_export fail.");
- return -1;
- }
-
- if(gpio_direct_set(gpio, direction == 0 ? "in" : "out"))
- {
- LOGE("[lynq_gpio_init]gpio_direct_set fail.");
- return -1;
- }
-
- if(direction == 1 && (gpio_value_set(gpio, value) != 0))
- {
- LOGE("[lynq_gpio_init]gpio_value_set fail.");
- return -1;
- }
-
-
- return 0;
-}
-
-int lynq_gpio_deinit(int gpio)
-{
- UNUSED(gpio);
-
- if(gpio_unexport(gpio))
- {
- LOGE("[lynq_gpio_deinit]gpio_unexport fail.");
- return -1;
- }
-
- return 0;
-}
-
-int lynq_gpio_direction_set(int gpio, int direction)
-{
- //UNUSED(gpio);
- //UNUSED(direction);
-
- if(gpio_direct_set(gpio, direction == 0 ? "in" : "out"))
- {
- LOGE("[lynq_gpio_direction_set]gpio_direct_set fail.");
- return -1;
- }
-
- return 0;
-}
-
-
-int lynq_gpio_value_set(int gpio, int value)
-{
- //UNUSED(gpio);
- //UNUSED(value);
-
- if(gpio_value_set(gpio, value))
- {
- LOGE("[lynq_gpio_value_set]gpio_value_set fail.");
- return -1;
- }
-
- return 0;
-}
-
-int lynq_gpio_value_get(int gpio)
-{
- //UNUSED(gpio);
- int ret = -1;
-
- ret = gpio_value_get(gpio);
- if (ret == -1)
- {
- LOGE("[lynq_gpio_value_get]gpio_value_get fail.");
- return -1;
- }
-
- return ret;
-}
-
-int lynq_gpio_pullsel_set(int gpio, int pullsel)
-{
- //UNUSED(gpio);
- //UNUSED(pullsel);
- int ret = -1;
- int value_t;
-
- if (pullsel == 1)
- value_t = 0;
- else if (pullsel == 2)
- value_t = 1;
- else
- {
- LOGE("[lynq_gpio_pullsel_set] value_t fail.");
- return -1;
- }
-
- ret = gpio_value_set(gpio, value_t);
- if(ret == -1)
- {
- LOGE("[lynq_gpio_pullsel_set]gpio_value_set() fail.");
- return -1;
- }
-
- return ret;
-}
-
-
-int lynq_gpio_pullsel_get(int gpio)
-{
- //UNUSED(gpio);
- int ret = -1;
-
- ret = gpio_value_get(gpio);
- if (ret == -1)
- {
- LOGE("[lynq_gpio_pullsel_get]gpio_value_get() fail.");
- return -1;
- }
-
- return ret + 1;
-}
-
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_irq.c b/mbtk/liblynq_lib/src/lynq_irq.c
deleted file mode 100755
index 3563b0b..0000000
--- a/mbtk/liblynq_lib/src/lynq_irq.c
+++ /dev/null
@@ -1,498 +0,0 @@
-#include "lynq-irq.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-#include "mbtk_log.h"
-
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-
-#define _GNU_SOURCE
-
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <poll.h>
-
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <sys/sysmacros.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-
-struct libirq_info {
- unsigned int line;
- unsigned int type;
- int wake;
- int fd;
- irq_handler handler;
- unsigned int used;
-};
-
-struct libirq_context {
- unsigned int inited;
- int fd;
- pthread_t th;
- struct libirq_info info[SC_LIBIRQ_MAX];
-};
-static struct libirq_context irq_ctx = {0};
-
-#define irq_init() irq_ctx.inited
-#define line_used(l) irq_ctx.info[l].used
-#define irq_fd(l) irq_ctx.info[l].fd
-#define libirq_fd() irq_ctx.fd
-
-static void *libirq_loop(void *arg)
-{
- unsigned int int_status = 0;
- int fd = libirq_fd();
- int ret = 0;
- int i;
-
- while(1) {
- ret = ioctl(fd, SC_IRQ_GET_STATUS, &int_status);
- if (ret < 0) {
- LOGE("libirq_loop get status failed:%d", ret);
- } else {
-/* printf("libirq_loop get status :0x%x\n", int_status); */
- }
-
- for (i=0; i<SC_LIBIRQ_MAX; i++) {
- if ((int_status & (1<<i)) && line_used(i) && irq_ctx.info[i].handler) {
- irq_ctx.info[i].handler();
-
- ret = ioctl(fd, SC_IRQ_CLEAR_STATUS, 0);
- if (ret < 0) {
- LOGE("libirq_loop clear status failed:%d", ret);
- }
- }
- }
- }
-
- return NULL;
-}
-
-static int libirq_init_thread(void)
-{
- int ret = 0;
- pthread_attr_t attribute;
-
- pthread_attr_init(&attribute);
- pthread_attr_setstacksize(&attribute, 32*1024);
-
- ret = pthread_create(&irq_ctx.th, &attribute, libirq_loop, NULL);
- if(ret) {
- return ret;
- }
-
- return 0;
-}
-
-/*
- * Add a handler for an interrupt line.
- *
- * line : The interrupt line
- * handler : Function to be called when the IRQ occurs.
- * trig_type : rising edge or fallling edge
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_install(unsigned int line, irq_handler handler, int trig_type)
-{
- int fd;
- struct libirq_info *info;
- char *usr_name;
- int ret = 0;
-
- if ((line >= SC_LIBIRQ_MAX) || (handler == NULL) || (trig_type >= SC_LIBIRQ_TYPE_MAX))
- return -EINVAL;
-
- if (line_used(line))
- return -EEXIST;
-
- ret = asprintf(&usr_name, "%s%d", SC_IRQ_DEV, line);
- if (ret < 0) {
- return -ENOMEM;
- }
-
- fd = open(usr_name, O_RDWR);
- if(fd < 0) {
- free(usr_name);
- return -ENODEV;
- }
- irq_fd(line) = fd;
- free(usr_name);
- info = &irq_ctx.info[line];
- info->line = line;
- info->type = trig_type;
- info->handler = handler;
-
- if (ioctl(fd, SC_IRQ_INSTALL, trig_type) < 0) {
- return -EPERM;
- }
-
- line_used(line) = 1;
-
- if (!irq_init()) {
- ret = libirq_init_thread();
- if (ret) {
- LOGE("libirq_init_thread, err:%d", ret);
- return ret;
- }
-
- libirq_fd() = fd;
- irq_init() = 1;
- }
-
- return 0;
-}
-
-/*
- * free an interrupt allocated with sc_irq_install.
- *
- * line : The interrupt line
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_uninstall(unsigned int line)
-{
- int fd;
-
- if (line >= SC_LIBIRQ_MAX)
- return -EINVAL;
-
- if (!line_used(line))
- return -ENODEV;
-
- if (ioctl(irq_fd(line), SC_IRQ_UNINSTALL, 0) < 0) {
- return -EPERM;
- }
-
- fd = libirq_fd();
- if (fd)
- close(fd);
-
- line_used(line) = 0;
-
- return 0;
-}
-
-/*
- * set the irq trigger type for an irq.
- *
- * line : The interrupt line
- * trig_type : edge or level type
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_set_type(unsigned int line, int trig_type)
-{
- struct libirq_info *info;
-
- if ((line >= SC_LIBIRQ_MAX) || (trig_type >= SC_LIBIRQ_TYPE_MAX))
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- info = &irq_ctx.info[line];
- //if (info->type != trig_type) {
- if (ioctl(irq_fd(line), SC_IRQ_SET_TYPE, trig_type) < 0) {
- return -EPERM;
- }
- //}
-
- info->type = trig_type;
-
- return 0;
-}
-
-/*
- * get the irq trigger type for an irq.
- *
- * line : The interrupt line
- * trig_type : edge or level type
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_get_type(unsigned int line, int *trig_type)
-{
- struct libirq_info *info;
-
- if ((line >= SC_LIBIRQ_MAX) || !trig_type)
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- info = &irq_ctx.info[line];
- *trig_type = info->type;
-
- return 0;
-}
-
-/*
- * control irq power management wakeup.
- *
- * line : The interrupt line
- * en : enable/disable power management wakeup
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_set_wake(unsigned int line, int en)
-{
- struct libirq_info *info;
-
- if (line >= SC_LIBIRQ_MAX)
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- info = &irq_ctx.info[line];
- if (info->wake != en) {
- if (ioctl(irq_fd(line), SC_IRQ_SET_WAKE, en) < 0) {
- return -EPERM;
- }
- }
-
- info->wake = en;
-
- return 0;
-}
-
-/*
- * get the irq awake status for an irq.
- *
- * line : The interrupt line
- * en : enable/disable power management wakeup
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_get_wake(unsigned int line, int *en)
-{
- struct libirq_info *info;
- unsigned int wake;
-
- if (line >= SC_LIBIRQ_MAX)
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- if (ioctl(irq_fd(line), SC_IRQ_GET_WAKE, &wake) < 0) {
- return -EPERM;
- }
-
- info = &irq_ctx.info[line];
- info->wake = wake;
- *en = wake;
-
- return 0;
-}
-
-
-
-
-/*****************************************
-* @brief:lynq_irq_install
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-
-int lynq_irq_install(int line, irq_handler irq_test_handler, trig_type_e trig_type)
-{
- int ret;
- if(trig_type < 0)
- {
- return -1;
- }
-#if defined(MBTK_PROJECT_T108)
-
- if (trig_type != 0 && trig_type != 1)
- {
- LOGE("lynq_irq_install error trig_type:%d", trig_type);
- return -1;
- }
-
- line = line-117;
-
- if (line < 0)
- {
- LOGE("lynq_irq_install error line:%d", line);
- return -1;
- }
-
-#endif
-
- ret = sc_irq_install(line, irq_test_handler, trig_type);
- if (ret != 0)
- {
- LOGE("do_install_irq failed, ret:%d", ret);
- return ret;
- }
- return 0;
-}
-
-
-/*****************************************
-* @brief:lynq_irq_uninstall
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-
-int lynq_irq_uninstall(int line)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- ret = sc_irq_uninstall(line);
- if (ret != 0)
- {
- LOGE("unistall failed, ret:%d", ret);
- return ret;
- }
- LOGI("uninstall irq(%d) ok", line);
- return 0;
-}
-
-
-/*****************************************
-* @brief:lynq_irq_set_type
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_set_type(int line, int trig_type)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-
- if (trig_type != 0 && trig_type != 1)
- {
- LOGE("lynq_irq_set_type error trig_type:%d", trig_type);
- return -1;
- }
-#endif
-
- int ret;
- if(trig_type < 0)
- {
- return -1;
- }
- ret = sc_irq_set_type(line, trig_type);
- if (ret != 0)
- {
- LOGE("set_type failed, ret:%d", ret);
- return ret;
- }
- return 0;
-
-}
-
-/*****************************************
-* @brief:lynq_irq_get_type
-* @param count [IN]:1
-* @param sum [OUT]:NA
-* @return :success >= 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_get_type(int line)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- int trig_type;
- ret = sc_irq_get_type(line, &trig_type);
- if (ret != 0)
- {
- LOGE("get_type failed, ret:%d", ret);
- return ret;
- }
- LOGI("get_type readback(%d)", trig_type);
- return trig_type;
-}
-
-
-/*****************************************
-* @brief:lynq_irq_set_wake
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_set_wake(int line, int en)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- if((en != 0) && (en != 1))
- {
- LOGE("wake_state is not 0 or 1");
- return -1;
- }
-
- ret = sc_irq_set_wake(line, en);
- if (ret != 0)
- {
- LOGE("set_wake failed, ret:%d", ret);
- return ret;
- }
- return 0;
-}
-
-/*****************************************
-* @brief:lynq_irq_get_wake
-* @param count [IN]:1
-* @param sum [OUT]:NA
-* @return :success >= 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_get_wake(int line)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- int en;
- ret = sc_irq_get_wake(line, &en);
- if (ret != 0)
- {
- LOGE("get_wake failed, ret:%d", ret);
- return ret;
- }
-
- LOGI("get_wake readback(%d)", en);
- return en;
-}
-
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_log.c b/mbtk/liblynq_lib/src/lynq_log.c
deleted file mode 100755
index 3dbb33b..0000000
--- a/mbtk/liblynq_lib/src/lynq_log.c
+++ /dev/null
@@ -1,499 +0,0 @@
-#include <stdarg.h>
-#include <sys/un.h>
-#include <sys/socket.h>
-#include "json-c/json.h"
-#include "lynq_deflog.h"
-#include "mbtk_type.h"
-
-#define LOG_CONFIG_PATH "/etc/mbtk/mbtk_log.json"
-#define SYSLOG_PATCH "syslog"
-#define SYSLOG_NAME "syslog"
-#define SYSLOG_INDEX 0
-
-void lynq_log_configuration_init(const char *log_name)
-{
- //UNUSED(log_name);
- mbtk_log_init(SYSLOG_PATCH, log_name);
-}
-
-void lynq_log_global_output(log_level_enum Level,const char *format,...)
-{
- va_list args;
- va_start(args,format);
- mbtk_log(Level, format, args);
- va_end(args);
-}
-
-const char* lynq_read_log_version()
-{
- return "LOG-V1.0";
-}
-
-int lynq_syslog_set_file_size(int value)
-{
-// UNUSED(value);
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- if(value < 1)
- {
- value = 1;
- }
- else if(value > 100)
- {
- value = 100;
- }
- value = value*1024;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- system("echo Can't open config file > /dev/console");
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- printf("NULL == datajson\n");
- system("echo NULL == datajson > /dev/console");
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- printf("SYSLOG_NAME error, tmp_int != 1\n");
- system("echo SYSLOG_NAME error, tmp_int != 1 > /dev/console");
- return -1;
- }
-
- json_object_object_add(datajson, "rotate_file_size", json_object_new_int(value));
-
- /***释放json对象***/
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return 0;
-}
-
-int lynq_syslog_get_file_size(void)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "rotate_file_size", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- /***释放json对象***/
- json_object_put(jsonobj);
-
- return tmp_int/1024;
-// return tmp_int;
-}
-
-int lynq_syslog_set_file_rotate(int value)
-{
- //UNUSED(value);
-
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- if(value < 0)
- {
- value = 0;
- }
- else if(value > 99)
- {
- value = 99;
- }
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_add(datajson, "rotate_file_count", json_object_new_int(value));
-
- /***释放json对象***/
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return 0;
-}
-
-int lynq_syslog_get_file_rotate(void)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "rotate_file_count", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- /***释放json对象***/
- json_object_put(jsonobj);
-
- return tmp_int;
-}
-
-log_level_enum filter_char_to_pri(char c)
-{
- switch (c) {
- case 'v':
- return LOG_VERBOSE;
- case 'd':
- return LOG_DEBUG;
- case 'i':
- return LOG_INFO;
- case 'w':
- return LOG_WARNING;
- case 'e':
- return LOG_ERROR;
- case '*':
- default:
- return LOG_LEVEL_MAX;
- }
-}
-
-char filter_pri_to_char(log_level_enum level)
-{
- char char_level;
- switch (level) {
- case LOG_VERBOSE:
- char_level = 'v';
- break;
- case LOG_DEBUG:
- char_level = 'd';
- break;
- case LOG_INFO:
- char_level = 'i';
- break;
- case LOG_WARNING:
- char_level = 'w';
- break;
- case LOG_ERROR:
- char_level = 'e';
- break;
- case LOG_LEVEL_MAX:
- default:
- char_level = '*';
- break;
- }
- return char_level;
-}
-
-int lynq_set_log_level(const char * module_name, log_level_enum level)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
- json_object* fileterjson = NULL;
- json_object* fileter_listjson = NULL;
- json_object* new_fileter = NULL;
-
- int n = 0, array_length = 0;
- char* tmp_string = NULL;
- char level_string[5] = {'\0'};
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "filter_list", &listjson);
- if (NULL == listjson) {
- printf("%s %d: object failure!\n", __FUNCTION__, __LINE__);
- json_object_put(listjson);
- return -1;
- }
- array_length = json_object_array_length(listjson);
- for (n = 0; n <= array_length; n++) {
- fileterjson = json_object_array_get_idx(listjson, n);
- if (NULL == fileterjson) {
- new_fileter = json_object_new_object();
- sprintf(level_string, "%c", filter_pri_to_char(level));
- json_object_object_add(new_fileter, "priority", json_object_new_string(level_string));
- json_object_object_add(new_fileter, "tag", json_object_new_string(module_name));
- json_object_array_add(listjson, new_fileter);
- break;
- }
-
- json_object_object_get_ex(fileterjson, "tag", &fileter_listjson);
- char *str = json_object_get_string(fileter_listjson);
- if (str) {
- tmp_string = strdup(str);
- if(strcmp(module_name, tmp_string) == 0)
- {
- sprintf(level_string, "%c", filter_pri_to_char(level));
- json_object_object_add(fileterjson, "priority", json_object_new_string(level_string));
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return 0;
- }
- }
- else
- {
- continue;
- }
- }
- /***释放json对象***/
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
-
- return 0;
-}
-
-int lynq_get_log_level(const char * module_name, log_level_enum *level)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
- json_object* fileterjson = NULL;
- json_object* fileter_listjson = NULL;
-
- int n;
- char* tmp_string = NULL;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "filter_list", &listjson);
- if (NULL == listjson) {
- printf("%s %d: object failure!\n", __FUNCTION__, __LINE__);
- json_object_put(listjson);
- return -1;
- }
-
- for (n = 0 ; n < 5; n++) {
- fileterjson = json_object_array_get_idx(listjson, n);
- if (NULL == fileterjson) {
- printf("the fileterjson exit\n");
- break;
- }
-
- json_object_object_get_ex(fileterjson, "tag", &fileter_listjson);
- char *str = json_object_get_string(fileter_listjson);
- if (str) {
- tmp_string = strdup(str);
- printf("tag is %s\n", tmp_string);
- if(strcmp(module_name, tmp_string) == 0)
- {
- json_object_object_get_ex(fileterjson, "priority", &fileter_listjson);
- str = json_object_get_string(fileter_listjson);
- if (str) {
- tmp_string = str[0];
- printf("fileter_listjson: %c\n", tmp_string);
- *level = filter_char_to_pri(tmp_string);
- //get the log level
- json_object_put(jsonobj);
- return 0;
- }
- else
- {
- break;
- }
- }
- }
- else
- {
- continue;
- }
- }
- *level = LOG_UNSET;
- /***释放json对象***/
- json_object_put(jsonobj);
-
- return 0;
-}
-
-int lynq_set_special_log_level(const char * exe_name, const char * module_name, log_level_enum level)
-{
- UNUSED(exe_name);
- UNUSED(module_name);
- UNUSED(level);
-
-
- return 0;
-}
-
-int lynq_get_special_log_level(const char * exe_name, const char * module_name, log_level_enum *level)
-{
- UNUSED(exe_name);
- UNUSED(module_name);
- UNUSED(level);
-
-
- return 0;
-}
-
-int lynq_notify_recalc_log_level(pid_t pid)
-{
- UNUSED(pid);
- char sendBuff[100]={'\0'};
- int serverFd,clientFd,addrLen,nwrite,nread;
- struct sockaddr_un serverAddr,clientAddr;
-
- unlink("/var/log_client.socket"); /* in case it already exists */
-
- memset(&clientAddr,0,sizeof(clientAddr));
- memset(&serverAddr,0,sizeof(serverAddr));
- clientAddr.sun_family = AF_UNIX;
- sprintf(clientAddr.sun_path,"%s","/var/log_client.socket");
-
- if ((clientFd = socket(AF_UNIX,SOCK_STREAM,0)) < 0)
- {
- printf("err -1\n");
- return -1;
- }
-
- if (bind(clientFd, (struct sockaddr *)&clientAddr, sizeof(clientAddr)) < 0)
- {
- printf("err -2\n");
- close(clientFd);
- return -2;
- }
-
- serverAddr.sun_family = AF_UNIX;
- sprintf(serverAddr.sun_path, "/var/log_server.socket");
- if (connect(clientFd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0)
- {
- printf("err -3\n");
- close(clientFd);
- return -3;
- }
-
- sprintf(sendBuff,"%s","update");
- if ((nwrite = write(clientFd, sendBuff, 100)) < 0)
- {
- printf("err -4\n");
- close(clientFd);
- return -4;
- }
-
- close(clientFd);
- return 0;
-}
-
-void lynq_lib_info_print()
-{
- MBTK_SOURCE_INFO_PRINT("lynq_lib");
-}
\ No newline at end of file
diff --git a/mbtk/liblynq_lib/src/lynq_net_light.c b/mbtk/liblynq_lib/src/lynq_net_light.c
deleted file mode 100755
index ee84b71..0000000
--- a/mbtk/liblynq_lib/src/lynq_net_light.c
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "lynq_led.h"
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "mbtk_info_api.h"
-
-/****************************DEFINE***************************************/
-#define QSER_RESULT_FAIL -1
-#define QSER_RESULT_SUCCESS 0
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-extern mbtk_info_handle_t* qser_info_handle;
-extern int qser_info_handle_num;
-/****************************VARIABLE***************************************/
-
-
-/******************************FUNC*****************************************/
-static int qser_led_client_init(void)
-{
- if(qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- }
- else
- {
- LOGE("[qser_led] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- qser_info_handle_num++;
- }
-
- LOGE("[qser_led] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-static int qser_led_client_deinit(void)
-{
- if(qser_info_handle)
- {
- LOGE("[qser_led] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_led] mbtk_info_handle_free() fail.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- }
- }
- else
- {
- qser_info_handle_num--;
- }
- }
- else
- {
- LOGE("[qser_led] handle not inited.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int lynq_set_netled_on(int led_mode)
-{
- //UNUSED(led_mode);
-
- if(led_mode != 0 && led_mode != 1)
- {
- LOGE("[qser_led]param is fail.");
- return QSER_RESULT_FAIL;
- }
-
-
- int ret = qser_led_client_init();
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_led]qser_led_client_init fail.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_led_set(qser_info_handle, MBTK_LED_TYPE_NET, led_mode);
- if(ret != 0)
- {
- LOGE("[qser_led]mbtk_led_gpio_init fail.");
- qser_led_client_init();
- return QSER_RESULT_FAIL;
- }
-
- ret = qser_led_client_init();
-
- return QSER_RESULT_SUCCESS;
-}
-
-int lynq_set_statusled_on(int led_mode)
-{
- //UNUSED(led_mode);
-
- if(led_mode != 0 && led_mode != 1)
- {
- LOGE("[qser_led]param is fail.");
- return QSER_RESULT_FAIL;
- }
-
- int ret = qser_led_client_init();
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_led]qser_led_client_init fail.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_led_set(qser_info_handle, MBTK_LED_TYPE_STATUS, led_mode);
- if(ret != 0)
- {
- LOGE("[qser_led]mbtk_led_gpio_init fail.");
- qser_led_client_init();
- return QSER_RESULT_FAIL;
- }
-
- ret = qser_led_client_init();
-
- return QSER_RESULT_SUCCESS;
-}
-/****************************API***************************************/
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_network.c b/mbtk/liblynq_lib/src/lynq_network.c
deleted file mode 100755
index be3816e..0000000
--- a/mbtk/liblynq_lib/src/lynq_network.c
+++ /dev/null
@@ -1,1225 +0,0 @@
-#include "lynq_qser_network.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-#include "mbtk_log.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-mbtk_info_handle_t* lynq_nw_info_handle = NULL;
-uint64_t tmp_mode = 0xFF;
-
-nw_client_handle_type g_nw_val = -1;
-
-typedef struct
-{
- QSER_NW_RxMsgHandlerFunc_t handlerPtr;
- void* contextPtr;
-} lynq_cust_cb_func;
-
-static lynq_cust_cb_func lynq_func_cb_handle;
-
-static int roaming_pref = 1; // Open roaming for default.
-
-typedef enum {
- RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
- RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
-} RIL_RadioTechnologyFamily;
-
-
-typedef struct
-{
- uint8 *lynq_operator_l;
- uint8 *lynq_operator_s;
- uint32 lynq_mcc_mnc;
-} lynq_operator_mcc_mnc_t;
-
-static lynq_operator_mcc_mnc_t lynq_operator_mcc_mnc[] =
-{
- {"China Mobile","CMCC",46000},
- {"China Unicom","CU",46001},
- {"China Mobile","CMCC",46002},
- {"China Telecom","CT",46003},
- {"China Mobile","CMCC",46004},
- {"China Telecom","CT",46005},
- {"China Unicom","CU",46006},
- {"China Mobile","CMCC",46007},
- {"China Mobile","CMCC",46008},
- {"China Unicom","CU",46009},
- {"China Telecom","CT",46011}
-};
-
-#if 0
-//T106的实现
-/*Used to wait for an update signal*/
-int lynq_wait_signalchanges(int *handle)
-{
- LYDBGLOG("start wait signalchanges info");
- if(NULL == handle)
- {
- LYERRLOG("illegal input");
- return LYNQ_E_PARAMETER_ANONALY;
- }
- wait_urc_signal_changes();
- LYDBGLOG("get signalchanges");
- *handle = s_module_wait_urc_id;
- return RESULT_OK;
-}
-
-bool is_support_urc(int urc_id)
-{
- switch(urc_id)
- {
- case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
- case RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
- case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED:
- case RIL_UNSOL_SIGNAL_STRENGTH:
- return true;
- default:
- return false;
- }
-}
-
-/*Used to get urc info*/
-int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id)
-{
- if(g_module_init_flag != MODULE_RUNNING)
- {
- LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
- return -1;
- }
- LYDBGLOG("start get urc info");
- if(is_support_urc(handle)==false)
- {
- LYINFLOG("invalid handle!!!");
- return -1;
- }
- if((handle ==RIL_UNSOL_SIGNAL_STRENGTH && NULL == solSigStren) ||
- (handle !=RIL_UNSOL_SIGNAL_STRENGTH && NULL == slot_id))
- {
- LYINFLOG("incoming solSigStren or slot_id is NULL!!!");
- return -1;
- }
- switch(handle)
- {
- case RIL_UNSOL_SIGNAL_STRENGTH: //1009
- {
- LYDBGLOG("get state update to signal info");
- solSigStren->gw_sig_valid = s_network_urc_solSigStren.gw_sig_valid;
- solSigStren->rssi = s_network_urc_solSigStren.rssi;
- solSigStren->wcdma_signalstrength = s_network_urc_solSigStren.wcdma_signalstrength;
- solSigStren->wcdma_sig_valid = s_network_urc_solSigStren.wcdma_sig_valid;
- solSigStren->rscp = s_network_urc_solSigStren.rscp;
- solSigStren->ecno = s_network_urc_solSigStren.ecno;
- solSigStren->lte_signalstrength = s_network_urc_solSigStren.lte_signalstrength;
- solSigStren->lte_sig_valid = s_network_urc_solSigStren.lte_sig_valid;
- solSigStren->rsrp = s_network_urc_solSigStren.rsrp;
- solSigStren->rsrq = s_network_urc_solSigStren.rsrq;
- solSigStren->rssnr = s_network_urc_solSigStren.rssnr;
- solSigStren->nr_sig_valid = s_network_urc_solSigStren.nr_sig_valid;
- solSigStren->ssRsrp = s_network_urc_solSigStren.ssRsrp;
- solSigStren->ssRsrq = s_network_urc_solSigStren.ssRsrq;
- solSigStren->ssSinr = s_network_urc_solSigStren.ssSinr;
- solSigStren->csiRsrp = s_network_urc_solSigStren.csiRsrp;
- solSigStren->csiRsrq = s_network_urc_solSigStren.csiRsrq;
- solSigStren->csiSinr = s_network_urc_solSigStren.csiSinr;
- break;
- }
- default:
- {
- *slot_id = s_module_urc_slot_id;
- LYINFLOG("slot_id = %d",s_module_urc_slot_id);
- }
- }
- return 0;
-}
-
-
-void urc_msg_process_voice_reg()
-{
- if(s_handlerPtr != NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_VOICE_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
- }
-}
-
-void urc_msg_process_data_reg()
-{
- if(s_handlerPtr != NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_DATA_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
- }
-}
-
-void urc_msg_process_ims_reg()
-{
- if(s_handlerPtr != NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_IMS_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
- }
-}
-
-void *new_network_thread_recv(void *context)
-{
- int handle = -1;
- uint32_t ind_flag = 0;
-
- while (1)
- {
- lynq_wait_signalchanges(&handle);
-
- switch(handle)
- {
- case 1002: //RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
- {
- urc_msg_process_voice_reg();
-
- break;
- }
- case 3015://RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
- {
- urc_msg_process_data_reg();
- break;
- }
- case 1009://RIL_UNSOL_SIGNAL_STRENGTH:
- {
- urc_msg_process_signal_strength();
- break;
- }
- case 1037://RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED:
- {
- urc_msg_process_ims_reg();
- break;
- }
- }
- }
- return NULL;
-}
-
-void urc_msg_process_signal_strength()
-{
- signalStrength_t signalstrength;
- int slot_id;
-
- int ret = lynq_get_urc_info(1009,&signalstrength,&slot_id);
- if (ret == 0)
- {
- QSER_NW_SINGNAL_EVENT_IND_T msg_buf;
- msg_buf.gsm_sig_info_valid = signalstrength.gw_sig_valid;
- msg_buf.gsm_sig_info.rssi = signalstrength.rssi;
- msg_buf.wcdma_sig_info_valid = signalstrength.wcdma_sig_valid;
- msg_buf.wcdma_sig_info.rssi = signalstrength.rscp;
- msg_buf.wcdma_sig_info.ecio = signalstrength.ecno;
- msg_buf.tdscdma_sig_info_valid = 0;
- msg_buf.lte_sig_info_valid = signalstrength.lte_sig_valid;
- msg_buf.lte_sig_info.rssi = -125;
- msg_buf.lte_sig_info.rsrp = signalstrength.rsrp;
- msg_buf.lte_sig_info.rsrq = signalstrength.rsrq;
- msg_buf.lte_sig_info.snr = signalstrength.rssnr;
- msg_buf.cdma_sig_info_valid = 0;
- msg_buf.hdr_sig_info_valid = 0;
- msg_buf.nr_sig_info_valid = signalstrength.nr_sig_valid;
- msg_buf.nr_sig_info.ssRsrp = signalstrength.ssRsrp;
- msg_buf.nr_sig_info.ssRsrq = signalstrength.ssRsrq;
- msg_buf.nr_sig_info.ssSinr = signalstrength.ssSinr;
- msg_buf.nr_sig_info.csiRsrp = signalstrength.csiRsrp;
- msg_buf.nr_sig_info.csiRsrq = signalstrength.csiRsrq;
- msg_buf.nr_sig_info.csiSinr = signalstrength.csiSinr;
- void *ind_msg_buf= &msg_buf;
- if(s_handlerPtr!=NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG,ind_msg_buf,sizeof (msg_buf) ,s_contextPtr);
- }
- }
-}
-
-#endif
-
-
-
-void lynq_signal_state_change_cb(const void* data, int data_len)
-{
-#if 0
-
-/*
- uint8 *net_data = NULL;
-
- net_data = (uint8*)data;
-
- if(data && data_len > 0)
- {
- if(*net_data == 0)
- { // CS
- printf("CS:act=%d, mode=%d\n", *(net_data + 1), *(net_data + 2));
- }
- else
- { // PS
- printf("PS[%s]:act=%d, mode=%d\n", *(net_data + 3) == 0 ? "GSM/WCDMA" : "LTE", *(net_data + 1), *(net_data + 2));
- }
- }
- else
- {
- printf("NET_CB : NULL");
- }
-*/
-
- if(s_handlerPtr != NULL)//数据原样输出
- {
- s_handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG, data, data_len, NULL);
- }
-#endif
-
- /*
- data_signal[0] = signal.type;
- data_signal[1] = signal.rssi;
- data_signal[2] = signal.rxlev;
- data_signal[3] = signal.ber;
- data_signal[4] = signal.rscp;
- data_signal[5] = signal.ecno;
- data_signal[6] = signal.rsrq;
- data_signal[7] = signal.rsrp;
- */
-
- uint8 *net_data = NULL;
- QSER_NW_SINGNAL_EVENT_IND_T msg_buf;
-
- if(data && data_len > 0)
- {
- net_data = (uint8*)data;
- //printf("net_data[0] => *net_data =%d\n",*net_data);
- msg_buf.gsm_sig_info_valid = FALSE;
- msg_buf.lte_sig_info_valid = FALSE;
- msg_buf.wcdma_sig_info_valid = FALSE;
-
- if(*net_data == MBTK_RADIO_TECH_GSM || *net_data == MBTK_RADIO_TECH_GSM_COMPACT || \
- *net_data == MBTK_RADIO_TECH_GSM_EGPRS) //GSM
- {
- msg_buf.gsm_sig_info_valid = TRUE;
- msg_buf.gsm_sig_info.rssi = *(net_data + 1);
- }
- else if(*net_data == MBTK_RADIO_TECH_E_UTRAN) //LTE
- {
- msg_buf.lte_sig_info_valid = TRUE;
- msg_buf.lte_sig_info.rssi = *(net_data + 1);
- msg_buf.lte_sig_info.rsrp = *(net_data + 7);//signalstrength.rsrp;
- msg_buf.lte_sig_info.rsrq = *(net_data + 6);//signalstrength.rsrq;
- msg_buf.lte_sig_info.snr = 0x7FFFFFFFF; //signalstrength.rssnr;(当前mbtk没有该参数)
- }
- else if (*net_data == MBTK_RADIO_TECH_UTRAN || *net_data == MBTK_RADIO_TECH_UTRAN_HSDPA || \
- *net_data == MBTK_RADIO_TECH_UTRAN_HSUPA || *net_data == MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA || \
- *net_data == MBTK_RADIO_TECH_UTRAN_HSPA )//WCDMA
- {
- msg_buf.wcdma_sig_info_valid = TRUE;
- msg_buf.wcdma_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
- msg_buf.wcdma_sig_info.ecio = *(net_data + 5);//signalstrength.ecno;
- }
-
- //msg_buf.gsm_sig_info_valid = TRUE;//signalstrength.gw_sig_valid;
- //msg_buf.gsm_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
- //printf("rssi = %d\n", *(net_data + 1));
- //msg_buf.wcdma_sig_info_valid = TRUE;//.wcdma_sig_valid;
- //msg_buf.wcdma_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
- //printf("rscp = %d\n", *(net_data + 4));
- //msg_buf.wcdma_sig_info.ecio = *(net_data + 5);//signalstrength.ecno;
- //printf("ecno = %d\n", *(net_data + 5));
- //msg_buf.lte_sig_info_valid = TRUE;//signalstrength.lte_sig_valid;
- //msg_buf.lte_sig_info.rssi = *(net_data + 1);
- //msg_buf.lte_sig_info.rsrp = *(net_data + 7);//signalstrength.rsrp;
- //printf("rsrp = %d\n", *(net_data + 7));
- //msg_buf.lte_sig_info.rsrq = *(net_data + 6);//signalstrength.rsrq;
- //printf("rsrq = %d\n", *(net_data + 6));
- //msg_buf.lte_sig_info.snr = 0x7FFFFFFFF; //signalstrength.rssnr;(当前mbtk没有该参数)
- msg_buf.tdscdma_sig_info_valid = FALSE;
- msg_buf.cdma_sig_info_valid = FALSE;
- msg_buf.hdr_sig_info_valid = FALSE;
- msg_buf.nr_sig_info_valid = FALSE;//(当前mbtk没有该参数)
- msg_buf.nr_sig_info.ssRsrp = 0;
- msg_buf.nr_sig_info.ssRsrq = 0;
- msg_buf.nr_sig_info.ssSinr = 0;
- msg_buf.nr_sig_info.csiRsrp = 0;
- msg_buf.nr_sig_info.csiRsrq = 0;
- msg_buf.nr_sig_info.csiSinr = 0;
-
- void *ind_msg_buf= &msg_buf;
- if(lynq_func_cb_handle.handlerPtr != NULL)
- {
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG, ind_msg_buf, sizeof (msg_buf), lynq_func_cb_handle.contextPtr);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_VOICE_REG_EVENT_IND_FLAG, NULL, 0, lynq_func_cb_handle.contextPtr);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG, NULL, 0, lynq_func_cb_handle.contextPtr);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_IMS_REG_EVENT_IND_FLAG, NULL, 0, lynq_func_cb_handle.contextPtr);
- }
- }
- else
- {
- LOGE("lynq_nw_state_change_cb : NULL");
- }
-
-}
-
-
-static uint8 lynq_net_pre_change(bool mbtk_2_lynq,int net_mode)
-{
- uint8 mbtk_net_pre = 0xFF;
-
-#if 0
- 此参数表在别处使用
- E_QSER_NW_RADIO_TECH_TD_SCDMA = 1, Y3 1
- E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */ YL2 0
- E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */ 3 1
- E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */ 4 5
- E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */ 3 1
- E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */ D3 1
- E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */ 3 1
- E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */ 3.5 1
- E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */ 3.5 1
- E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */ D3 1
- E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */ D3 1
- E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */ 2 0
- E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */ 3 0
- E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */ 3 0
- E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */ L3 1
- E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */ 2.75 0
- E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */ 2.5 0
- E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
-#endif
- /*
- 0 : GSM only
- 1 : UMTS only
- 2 : GSM/UMTS(auto)
- 3 : GSM/UMTS(GSM preferred)
- 4 : GSM/UMTS(UMTS preferred)
- 5 : LTE only
- 6 : GSM/LTE(auto)
- 7 : GSM/LTE(GSM preferred)
- 8 : GSM/LTE(LTE preferred)
- 9 : UMTS/LTE(auto)
- 10 : UMTS/LTE(UMTS preferred)
- 11 : UMTS/LTE(LTE preferred)
- 12 : GSM/UMTS/LTE(auto)
- 13 : GSM/UMTS/LTE(GSM preferred)
- 14 : GSM/UMTS/LTE(UMTS preferred)
- 15 : GSM/UMTS/LTE(LTE preferred)
- */
-
- if(mbtk_2_lynq)
- {
- switch(net_mode)
- {
- //使用之前set的tmp_mode的值来进行回显get
- case QSER_NW_MODE_GSM:
- mbtk_net_pre = QSER_NW_MODE_GSM;
- break;
- case QSER_NW_MODE_WCDMA:
- mbtk_net_pre = QSER_NW_MODE_WCDMA;
- break;
- case QSER_NW_MODE_CDMA:
- mbtk_net_pre = QSER_NW_MODE_CDMA;
- break;
- case QSER_NW_MODE_EVDO:
- mbtk_net_pre = QSER_NW_MODE_EVDO;
- break;
- case QSER_NW_MODE_LTE:
- mbtk_net_pre = QSER_NW_MODE_LTE;
- break;
- case QSER_NW_MODE_TDSCDMA:
- mbtk_net_pre = QSER_NW_MODE_TDSCDMA;
- break;
- default:
- mbtk_net_pre = 0xFF;
- break;
- }
- }
- else
- {
- if(QSER_NW_MODE_GSM == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_ONLY;
- }
- else if(QSER_NW_MODE_WCDMA == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_UMTS_ONLY;
- }
- else if(QSER_NW_MODE_LTE == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_LTE_ONLY;
- }
- else if((QSER_NW_MODE_GSM | QSER_NW_MODE_WCDMA) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
- }
- else if((QSER_NW_MODE_WCDMA | QSER_NW_MODE_LTE) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_LTE_PREF;
- }
- else if((QSER_NW_MODE_GSM | QSER_NW_MODE_LTE) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_LTE_PREF;
- }
- else if((QSER_NW_MODE_GSM | QSER_NW_MODE_WCDMA | QSER_NW_MODE_LTE) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF;
- }
- else
- {
- mbtk_net_pre = 0xFF;
- }
- }
- return mbtk_net_pre;
-}
-
-int qser_nw_client_init(nw_client_handle_type *ph_nw)
-{
- //UNUSED(ph_nw);
-
- if(lynq_nw_info_handle == NULL)
- {
- lynq_nw_info_handle = mbtk_info_handle_get();
- if(lynq_nw_info_handle)
- {
- LOGI("creat lynq_nw_info_handle is success");
- *ph_nw = lynq_nw_info_handle->client_fd;
- g_nw_val = lynq_nw_info_handle->client_fd;
- }
- else
- {
- LOGE("creat lynq_nw_info_handle is fail");
- return -1;
- }
- }
-
- return 0;
-}
-
-int qser_nw_client_deinit(nw_client_handle_type h_nw)
-{
- //UNUSED(h_nw);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- mbtk_signal_state_change_cb_reg(lynq_nw_info_handle, NULL);
-
- if(lynq_nw_info_handle)
- {
- mbtk_info_handle_free(&lynq_nw_info_handle);
- }
- else
- {
- LOGE("deinit lynq_nw_info_handle is fail");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_set_config(nw_client_handle_type h_nw,QSER_NW_CONFIG_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- roaming_pref = pt_info->roaming_pref;
-
- mbtk_band_info_t band;
- memset(&band, 0, sizeof(mbtk_band_info_t));
- tmp_mode = pt_info->preferred_nw_mode;//临时保存一下原本的mode
-
- //printf("tmp_mode = [%llu]",tmp_mode);
- band.net_pref = lynq_net_pre_change(FALSE, pt_info->preferred_nw_mode);
- LOGI("band.net_pref = [%d] ",band.net_pref);
-
- if(band.net_pref == 0xFF)
- {
- LOGE("lynq_net_pre_change() fail.");
- return -1;
- }
-
- if(mbtk_current_band_set(lynq_nw_info_handle, &band))
- {
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_get_operator_name(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(lynq_nw_info_handle, &net) && net.plmn > 0)
- {
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(lynq_operator_mcc_mnc))
- {
- if(lynq_operator_mcc_mnc[i].lynq_mcc_mnc == net.plmn)
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(lynq_operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- strcpy(OperatorFN, lynq_operator_mcc_mnc[i].lynq_operator_l);
- strcpy(OperatorSH, lynq_operator_mcc_mnc[i].lynq_operator_s);
- sprintf(MccMnc, "%d", lynq_operator_mcc_mnc[i].lynq_mcc_mnc);
- }
- memset(pt_info->long_eons,0,128);
- memcpy(pt_info->long_eons,lynq_operator_mcc_mnc[i].lynq_operator_l,strlen(lynq_operator_mcc_mnc[i].lynq_operator_l));
- memset(pt_info->short_eons,0,128);
- memcpy(pt_info->short_eons,lynq_operator_mcc_mnc[i].lynq_operator_s,strlen(lynq_operator_mcc_mnc[i].lynq_operator_s));
- memset(pt_info->mcc,0,4);
- memset(pt_info->mnc,0,4);
- sprintf(pt_info->mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
- sprintf(pt_info->mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
- //pt_info->act;
- return 0;
- }
-
- return -1;
-}
-
-int qser_nw_get_reg_status(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- /*VOICE/DATA/IMS*/
- mbtk_net_reg_info_t reg;
- int err = mbtk_net_reg_get(lynq_nw_info_handle, ®);
- if(err)
- {
- LOGE("mbtk_net_reg_get fail.");
- return -1;
- }
- else
- {
- memset(pt_info, 0x0, sizeof(QSER_NW_REG_STATUS_INFO_T));
-
-
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(lynq_nw_info_handle, &net) && net.plmn > 0)
- {
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(lynq_operator_mcc_mnc))
- {
- if(lynq_operator_mcc_mnc[i].lynq_mcc_mnc == net.plmn)
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(lynq_operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- sprintf(MccMnc, "%d", lynq_operator_mcc_mnc[i].lynq_mcc_mnc);
- }
- sprintf(pt_info->data_registration_details_3gpp.mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
- sprintf(pt_info->data_registration_details_3gpp.mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
- sprintf(pt_info->voice_registration_details_3gpp.mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
- sprintf(pt_info->voice_registration_details_3gpp.mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
- //pt_info->act;
- }
-
- //暂时未知是否其他也被使用,现根据ql模块的传输情况,
- //只配置3gpp,涉及call,data状态没有对应的匹配的就没有赋值
-
- pt_info->voice_registration_valid = TRUE;
- pt_info->voice_registration.deny_reason = 0;
- pt_info->voice_registration.roaming = 0;
- pt_info->voice_registration.tech_domain = 0;
-
-
- pt_info->data_registration_valid = TRUE;
- pt_info->data_registration.deny_reason = 0;
- pt_info->data_registration.roaming = 0;
- pt_info->data_registration.tech_domain = 0;
-
- if (reg.call_state == 1 || reg.call_state == 5)
- {
- pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_FULL;
- }
- else if (reg.call_state == 0 || reg.call_state == 2 || reg.call_state == 3 || reg.call_state == 4)
- {
- pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- }
-
- if (reg.data_state == 1 || reg.data_state == 5)
- {
- pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_FULL;
- }
- else if (reg.data_state == 0 || reg.data_state == 2 || reg.data_state == 3 || reg.data_state == 4)
- {
- pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- }
-
-
- pt_info->voice_registration_details_3gpp_valid = TRUE;
- pt_info->voice_registration_details_3gpp.lac = reg.lac;
- pt_info->voice_registration_details_3gpp.cid = reg.ci;
- //补位填0 or 1
- pt_info->voice_registration_details_3gpp.tech_domain = 1;
- pt_info->voice_registration_details_3gpp.roaming = 0;
- pt_info->voice_registration_details_3gpp.forbidden = 0;
- pt_info->voice_registration_details_3gpp.psc = 0;
- pt_info->voice_registration_details_3gpp.tac = 0;
-
- pt_info->data_registration_details_3gpp_valid = TRUE;
- pt_info->data_registration_details_3gpp.lac = reg.lac;
- pt_info->data_registration_details_3gpp.cid = reg.ci;
- //补位填0 or 1
- pt_info->data_registration_details_3gpp.tech_domain = 1;
- pt_info->data_registration_details_3gpp.roaming = 0;
- pt_info->data_registration_details_3gpp.forbidden = 0;
- pt_info->data_registration_details_3gpp.psc = 0;
- pt_info->data_registration_details_3gpp.tac = 0;
-
-
- pt_info->voice_registration_details_3gpp2_valid = FALSE;
- //pt_info->voice_registration_details_3gpp2
-
- pt_info->data_registration_details_3gpp2_valid = FALSE;
- //pt_info->data_registration_details_3gpp2
-
-
- switch(reg.type)
- {
- case MBTK_RADIO_TECH_GSM:
- case MBTK_RADIO_TECH_GSM_COMPACT:
- case MBTK_RADIO_TECH_GSM_EGPRS:
- case MBTK_RADIO_TECH_UTRAN_HSPA:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_GPRS;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_GSM;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_GPRS;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_GSM;
- break;
- }
- case MBTK_RADIO_TECH_UTRAN:
- case MBTK_RADIO_TECH_UTRAN_HSDPA:
- case MBTK_RADIO_TECH_UTRAN_HSUPA:
- case MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- break;
- }
- case MBTK_RADIO_TECH_E_UTRAN:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- break;
- }
- default:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- break;
- }
- }
- }
-
- return 0;
-}
-
-int qser_nw_get_signal_strength(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- int ret;
- mbtk_signal_info_t signal;
- ret = mbtk_net_signal_get(lynq_nw_info_handle, &signal);
- if(ret != 0) {
- LOGE("mbtk_net_signal_get fail.");
- return -1;
- }
- else
- {
- memset(pt_info, 0x0, sizeof(QSER_NW_SIGNAL_STRENGTH_INFO_T));
-
- if(signal.type == MBTK_RADIO_TECH_GSM || signal.type == MBTK_RADIO_TECH_GSM_COMPACT || \
- signal.type == MBTK_RADIO_TECH_GSM_EGPRS) //GSM
- {
- pt_info->gsm_sig_info_valid = TRUE;
- pt_info->gsm_sig_info.rssi = signal.rssi;
- }
- else if(signal.type == MBTK_RADIO_TECH_E_UTRAN) //LTE
- {
- pt_info->lte_sig_info_valid = TRUE;
- pt_info->lte_sig_info.rsrp = signal.rsrp;
- pt_info->lte_sig_info.rsrq = signal.rsrq;
- pt_info->lte_sig_info.snr = 0x7FFFFFFFF; //->MBTK接口无该参数(对应参数为rssnr,该值INT_MAX:0x7FFFFFFFF表示无效值),写死值为0x7FFFFFFFF
- pt_info->lte_sig_info.rssi = signal.rssi;
- }
- else if (signal.type == MBTK_RADIO_TECH_UTRAN || signal.type == MBTK_RADIO_TECH_UTRAN_HSDPA || \
- signal.type == MBTK_RADIO_TECH_UTRAN_HSUPA || signal.type == MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA || \
- signal.type == MBTK_RADIO_TECH_UTRAN_HSPA )//WCDMA
- {
- pt_info->wcdma_sig_info_valid = TRUE;
- pt_info->wcdma_sig_info.rssi = signal.rssi;
- pt_info->wcdma_sig_info.ecio = signal.ecno;
- }
- else
- {
- return -1;
- }
- /*
- pt_info->gsm_sig_info_valid = 1//signal.gw_sig_valid;
- pt_info->gsm_sig_info.rssi = signal.rssi;//signal.rssi-110;
- pt_info->wcdma_sig_info_valid = 1//signal.wcdma_sig_valid;
- pt_info->wcdma_sig_info.rssi = signal.rscp;//signal.wcdma_signalstrength-110;
- pt_info->wcdma_sig_info.ecio = //signal.ecno/5;
- pt_info->tdscdma_sig_info_valid = 0;
- pt_info->lte_sig_info_valid = 1//signal.lte_sig_valid;
- pt_info->lte_sig_info.rssi = -125;//signal.lte_signalstrength-110;
- pt_info->lte_sig_info.rsrp = signal.rsrp;//signal.rsrp*(-1);
- pt_info->lte_sig_info.rsrq = signal.rsrq;//signal.rsrq*(-1);
- pt_info->lte_sig_info.snr = 0x7FFFFFFFF;//signal.rssnr;
- pt_info->cdma_sig_info_valid = 0;
- pt_info->hdr_sig_info_valid = 0;
- //mbtk 无nr
- pt_info->nr_sig_info_valid = 0//signal.nr_sig_valid;
- pt_info->nr_sig_info.ssRsrp = 0//signal.ssRsrp;
- pt_info->nr_sig_info.ssRsrq = 0//signal.ssRsrq;
- pt_info->nr_sig_info.ssSinr = 0//signal.ssSinr;
- pt_info->nr_sig_info.csiRsrp = 0//signal.csiRsrp;
- pt_info->nr_sig_info.csiRsrq = 0//signal.csiRsrq;
- pt_info->nr_sig_info.csiSinr = 0//signal.csiSinr;
- */
- }
-
- return 0;
-}
-
-void net_state_change_cb(const void* data, int data_len)
-{
- printf("Recv event indication : NET REG EVENT\n");
- if(data && data_len > 0) {
- const uint8 *ptr = (const uint8*)data;
- if(*ptr == 0) { // CS
- printf("CS:act=%d, mode=%d\n", *(ptr + 1), *(ptr + 2));
- } else { // PS
- printf("PS[%s]:act=%d, mode=%d\n", *(ptr + 3) == 0 ? "GSM/WCDMA" : "LTE", *(ptr + 1), *(ptr + 2));
- }
- } else
- LOGD("ind is NULL");
-}
-
-
-int qser_nw_add_rx_msg_handler (nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)
-{
- //UNUSED(h_nw);
- //UNUSED(handlerPtr);
- //UNUSED(contextPtr);
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- lynq_func_cb_handle.handlerPtr = handlerPtr;
- lynq_func_cb_handle.contextPtr = contextPtr;
-
- mbtk_signal_state_change_cb_reg(lynq_nw_info_handle, lynq_signal_state_change_cb);
- mbtk_net_state_change_cb_reg(lynq_nw_info_handle, net_state_change_cb);
-
- return 0;
-}
-
-int qser_nw_set_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if (pt_info == NULL)
- {
- LOGE("QSER_NW_OOS_CONFIG_INFO_T NULL");
- return -1;
- }
-
- uint32 oosPhase_0, oosPhase_1, oosPhase_2;
- char tmp_type;
- mbtk_oos_info oos_info;
-
- memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
-
-
- tmp_type = pt_info->type;
-
- if (tmp_type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
- {//如果没有配置对应的值,例如,10,20
- //oosPhase_2这个位置没有配置,则使用默认值20,既不限制次数的5s进行一次扫描
- //同理oosPhase_0,oosPhase_1这个位置没有配置,则使用默认值5,10,既限制次数5次的5s,10s进行一次扫描
- //输入多少配置多少,可以缺省使用默认值
- if (pt_info->u.full_band_scan_info.t_min < 0 || pt_info->u.full_band_scan_info.t_step < 0 || pt_info->u.full_band_scan_info.t_max < 0)
- {
- LOGE("qser_nw_set_oos_config set time < 0 ");
- return -1;
- }
- else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
- {
- oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
- oos_info.mode = 1;
- oos_info.oosPhase[0] = oosPhase_0;
- }
- else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && pt_info->u.full_band_scan_info.t_max == 0)
- {
- oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
- oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
- oos_info.mode = 1;
- oos_info.oosPhase[0] = oosPhase_0;
- oos_info.oosPhase[1] = oosPhase_1;
- }
- else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && (pt_info->u.full_band_scan_info.t_max > 0 && pt_info->u.full_band_scan_info.t_max <= 255))
- {
- oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
- oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
- oosPhase_2 = pt_info->u.full_band_scan_info.t_max;
- oos_info.mode = 1;
- oos_info.oosPhase[0] = oosPhase_0;
- oos_info.oosPhase[1] = oosPhase_1;
- oos_info.oosPhase[2] = oosPhase_2;
- }
- else if (pt_info->u.full_band_scan_info.t_min == 0 && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
- {
- oos_info.mode = 0;
- }
- else
- {
- LOGE("qser_nw_set_oos_config set Format err");
- return -1;
- }
-
- int err = mbtk_oos_set(lynq_nw_info_handle, &oos_info);
- if (err != 0)
- {
- LOGE("qser_nw_set_oos_config mbtk_oos_set err");
- return -1;
- }
- }
- else if (tmp_type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
- {
- LOGE("Not currently supported");
- return -1;
- }
- else
- {
- LOGE("type is error");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_get_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- mbtk_oos_info oos_info;
- uint32 oosPhase_0, oosPhase_1, oosPhase_2;
- char cmd[100] = {0};
-
- memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
-
- int err = mbtk_oos_get(lynq_nw_info_handle, &oos_info);
- if (err != 0)
- {
- LOGE("qser_nw_get_oos_config mbtk_oos_get err ");
- return -1;
- }
-/*
- printf("oos_info.mode =[%d] \n",oos_info.mode);
- printf("oos_info.1 =[%d] \n",oos_info.oosPhase[0]);
- printf("oos_info.2 =[%d] \n",oos_info.oosPhase[1]);
- printf("oos_info.3 =[%d] \n",oos_info.oosPhase[2]);
-*/
- if(oos_info.mode == 0)//关闭状态
- {
- pt_info->u.full_band_scan_info.t_min = 0;
- pt_info->u.full_band_scan_info.t_step = 0;
- pt_info->u.full_band_scan_info.t_max = 0;
- }
- else
- {
- pt_info->u.full_band_scan_info.t_min = (int)oos_info.oosPhase[0];
- pt_info->u.full_band_scan_info.t_step = (int)oos_info.oosPhase[1];
- pt_info->u.full_band_scan_info.t_max = (int)oos_info.oosPhase[2];
- }
- pt_info->type = QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN;
-
-
- if (pt_info == NULL)
- {
- LOGE("qser_nw_get_oos_config pt_info is null ");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_set_rf_mode (nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode)
-{
- //UNUSED(h_nw);
- //UNUSED(rf_mode);
- int ret;
- mbtk_modem_info_t info;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
-/*
- if (rf_mode == 4)
- {
- printf("Flight Mode no Support Now\n");
- return -1;
- }
-*/
- if (rf_mode != 4 && rf_mode != 0 && rf_mode != 1)
- {
- LOGE("mode is error!");
- return -1;
- }
-
- info.fun = rf_mode;
- info.rst = 0;
- ret = mbtk_set_modem_fun(lynq_nw_info_handle, &info);
-
- //ret = mbtk_radio_state_set(lynq_nw_info_handle, rf_mode);
- if (ret != 0)
- {
- LOGE("mbtk_radio_state_set fail.");
- return -1;
- }
- else
- {
- LOGI("qser_nw_set_rf_mode is success\n");
- }
-
- return 0;
-}
-
-int qser_nw_get_rf_mode (nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T *rf_mode)
-{
- //UNUSED(h_nw);
- //UNUSED(rf_mode);
- int ret;
- int tmp_rf;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- ret = mbtk_get_modem_fun(lynq_nw_info_handle, &tmp_rf);
-
- //ret = mbtk_radio_state_get(lynq_nw_info_handle, &tmp_rf);
- if (ret != 0)
- {
- LOGE("mbtk_radio_state_get fail.");
- return -1;
- }
- else
- {
- LOGI("qser_nw_get_rf_mode is success\n");
- *rf_mode = tmp_rf;
- }
-
-
- return 0;
-}
-
-int qser_nw_set_ims_enable(nw_client_handle_type h_nw, E_QSER_NW_IMS_MODE_TYPE_T ims_mode)
-{
- int ret = 0;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- ret = mbtk_net_ims_set(lynq_nw_info_handle, ims_mode);
- if (ret != 0)
- {
- LOGE("mbtk_net_ims_set fail.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_get_ims_reg_status(nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info)
-{
- int ret = 0;
- int tmp_pt;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- ret = mbtk_net_ims_reg_state_get(lynq_nw_info_handle, &tmp_pt);
- if (ret != 0)
- {
- LOGE("mbtk_net_ims_get fail.");
- return -1;
- }
-
- if (tmp_pt == 0)
- pt_info->registration_state = E_QSER_NW_IMS_SERVICE_NONE;
- else if (tmp_pt == 1)
- pt_info->registration_state = E_QSER_NW_IMS_SERVICE_REGISTERED;
- else
- {
- LOGE("mbtk_net_ims_get value error fail.");
- return -1;
- }
-
- return 0;
-}
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_sim.c b/mbtk/liblynq_lib/src/lynq_sim.c
deleted file mode 100644
index 78af51b..0000000
--- a/mbtk/liblynq_lib/src/lynq_sim.c
+++ /dev/null
@@ -1,746 +0,0 @@
-#include "lynq_qser_sim.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-/****************************DEFINE***************************************/
-#define QSER_RESULT_SUCCESS 0
-#define QSER_RESULT_FAIL -1
-
-#define QSER_IMEI_SV_VERSION "01"
-
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-extern mbtk_info_handle_t* qser_info_handle;
-extern int qser_info_handle_num;
-static bool inited = FALSE;
-static uint qser_h_sim = 0x5F6F7F8F;
-static QSER_SIM_RxMsgHandlerFunc_t qser_sim_state_cb = NULL;
-static bool qser_sim_cb_state = false;
-/****************************VARIABLE***************************************/
-
-/******************************FUNC*****************************************/
-void qser_sim_state_change_cb(const void* data, int data_len)
-{
- uint8 *ptr = (uint8*)data;
- LOGE("[qser_sim] SIM state : %d\n", *ptr);
- QSER_SIM_CARD_STATUS_INFO_T qser_sim_statue = {0};
- if(*ptr == 0)
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- }
- else if(*ptr == 1)
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- }
- else if(*ptr == 18)
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- }
- else
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
- }
- if(qser_sim_state_cb != NULL)
- {
- qser_sim_state_cb(&qser_sim_statue);
- }
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int qser_sim_client_init(sim_client_handle_type *ph_sim)
-{
- //UNUSED(ph_sim);
- if(ph_sim == NULL)
- {
- LOGE("[qser_sim] ph_sim is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(!inited && qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- inited = TRUE;
- //mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- else
- {
- LOGE("[qser_sim] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- if(!inited)
- {
- qser_info_handle_num++;
- inited = TRUE;
- //mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- }
- *ph_sim = qser_h_sim;
-
- LOGE("[qser_sim] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getimsi(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info,char *imsi,size_t imsiLen)
-{
- //UNUSED(h_sim);
- UNUSED(pt_info);
- //UNUSED(imsi);
- //UNUSED(imsiLen);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(imsi == NULL || imsiLen < 15)
- {
- LOGE("[qser_sim] imsi is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(imsi,0,imsiLen);
- int err = mbtk_imsi_get(qser_info_handle, imsi);
- if(err)
- {
- LOGE("[qser_sim] mbtk_imsi_get is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(strlen(imsi) > imsiLen)
- {
- LOGE("[qser_sim] get datalength out of range.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_geticcid(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,char *iccid, size_t iccidLen)
-{
- //UNUSED(h_sim);
- UNUSED(simId);
- //UNUSED(iccid);
- //UNUSED(iccidLen);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(iccid == NULL || iccidLen < QSER_SIM_ICCID_LEN_MAX)
- {
- LOGE("[qser_sim] iccid is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(iccid, 0, iccidLen);
- int err = mbtk_iccid_get(qser_info_handle, iccid);
- if(err)
- {
- LOGE("[qser_sim] mbtk_iccid_get is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(strlen(iccid) > iccidLen)
- {
- LOGE("[qser_sim] get datalength out of range.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getphonenumber(sim_client_handle_type h_sim,QSER_SIM_APP_ID_INFO_T *pt_info, char*phone_num, size_t phoneLen)
-{
- //UNUSED(h_sim);
- UNUSED(pt_info);
- //UNUSED(phone_num);
- //UNUSED(phoneLen);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(phone_num == NULL || phoneLen < 11)
- {
- LOGE("[qser_sim] phone_num is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(phone_num, 0, phoneLen);
- int err = mbtk_phone_number_get(qser_info_handle, phone_num);
- if(err)
- {
- LOGE("[qser_sim] mbtk_phone_number_get is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(strlen(phone_num) > phoneLen)
- {
- LOGE("[qser_sim] get datalength out of range.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_verifypin(sim_client_handle_type h_sim,QSER_SIM_VERIFY_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_verify_pin(qser_info_handle, pt_info->pin_value);
- if(err)
- {
- LOGE("[qser_sim] mbtk_verify_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_changepin(sim_client_handle_type h_sim,QSER_SIM_CHANGE_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_change_pin_info pin_info = {0};
- memcpy(pin_info.old_pin_value, pt_info->old_pin_value, pt_info->old_pin_value_len);
- memcpy(pin_info.new_pin_value, pt_info->new_pin_value, pt_info->new_pin_value_len);
- int err = mbtk_change_pin(qser_info_handle, &pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_change_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_unblockpin(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_unlock_pin_info puk_pin_info = {0};
- memcpy(puk_pin_info.pin_value, pt_info->new_pin_value, pt_info->new_pin_value_len);
- memcpy(puk_pin_info.puk_value, pt_info->puk_value, pt_info->puk_value_len);
- int err = mbtk_unlock_pin(qser_info_handle, &puk_pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_unlock_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_enablepin(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, pt_info->pin_value_len);
- pin_info.enable = 1;
- int err = mbtk_enable_pin(qser_info_handle, &pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_enable_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_disablepin(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, pt_info->pin_value_len);
- pin_info.enable = 0;
- int err = mbtk_enable_pin(qser_info_handle, &pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_enable_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getcardstatus(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,QSER_SIM_CARD_STATUS_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(simId);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_sim_state_enum sim;
- mbtk_sim_card_type_enum sim_card_type;
- mbtk_pin_puk_last_times qser_last_times = {0};
- int err = mbtk_sim_state_get(qser_info_handle, &sim);
- if(err)
- {
- LOGE("[qser_sim] mbtk_sim_state_get fail [err = %d].", err);
- return QSER_RESULT_FAIL;
- }
- else
- {
- LOGE("[qser_sim] sim = %d.", sim);
- memset(pt_info, 0x0, sizeof(QSER_SIM_CARD_STATUS_INFO_T));
- switch (sim)
- {
- case 0: //ABSENT
- pt_info->e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- break;
- case 1: //NOT READY
- pt_info->e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- break;
- case 2: //READY
- pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- break;
- case 3: //SIM PIN
- pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- break;
- case 4: //SIM PUK
- pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- break;
- case 5: //NETWORK
- pt_info->e_card_state = QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS;
- break;
- default:
- pt_info->e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
- break;
- }
- }
-
- err = mbtk_sim_card_type_get(qser_info_handle, &sim_card_type);
- if(err)
- {
- LOGE("[qser_sim] mbtk_sim_state_get fail [err = %d].", err);
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(sim_card_type == 0 || sim_card_type == 2)
- pt_info->e_card_type = QSER_SIM_CARD_TYPE_ICC;
- else if(sim_card_type == 1 || sim_card_type == 3)
- pt_info->e_card_type = QSER_SIM_CARD_TYPE_UICC;
- else
- pt_info->e_card_type = QSER_SIM_CARD_TYPE_UNKNOWN;
- }
-
- err = mbtk_pin_last_num_get(qser_info_handle, &qser_last_times);
- if(err)
- {
- LOGE("[qser_sim] mbtk_sim_state_get fail [err = %d].", err);
- return QSER_RESULT_FAIL;
- }
- else
- {
- pt_info->card_app_info.app_3gpp.pin1_num_retries = qser_last_times.p1_retry;
- pt_info->card_app_info.app_3gpp.pin2_num_retries = qser_last_times.p2_retry;
- pt_info->card_app_info.app_3gpp.puk1_num_retries = qser_last_times.puk1_retry;
- pt_info->card_app_info.app_3gpp.puk2_num_retries = qser_last_times.puk2_retry;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getimei(sim_client_handle_type h_sim, char *imei)
-{
- //UNUSED(h_sim);
- //UNUSED(imei);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(imei == NULL)
- {
- LOGE("[qser_sim] imei is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_imei_get(qser_info_handle, imei);
- if(err)
- {
- LOGE("[qser_sim] mbtk_imei_get Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_get_imei_and_sv(sim_client_handle_type h_sim,char *imei, char*sv)
-{
- //UNUSED(h_sim);
- //UNUSED(imei);
- //UNUSED(sv);
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(imei == NULL || sv == NULL)
- {
- LOGE("[qser_sim] param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_imei_get(qser_info_handle, imei);
- if(err)
- {
- LOGE("[qser_sim] mbtk_imei_get Error: %d\n", err);
- return QSER_RESULT_FAIL;
- }
-
- memcpy(sv, QSER_IMEI_SV_VERSION, strlen(QSER_IMEI_SV_VERSION));
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_reset_modem(sim_client_handle_type h_sim)
-{
- //UNUSED(h_sim);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- for(int cid =0; cid < MBTK_APN_CID_MAX; cid++)
- {
- mbtk_data_call_stop(qser_info_handle, cid, 1);
- }
-
-
- //mbtk_system_reboot(0);
- mbtk_modem_info_t info;
- info.fun = MBTK_DEV_MODEM_MIN_FUN;
- info.rst = 0;
- int err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
-
- info.fun = MBTK_DEV_MODEM_FULL_FUN;
- err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_get_version(sim_client_handle_type h_sim, char *buf)
-{
- //UNUSED(h_sim);
- //UNUSED(buf);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(buf == NULL)
- {
- LOGE("[qser_sim] buf is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_version_get(qser_info_handle, buf);
- if(err)
- {
- LOGE("[qser_sim] mbtk_version_get Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_reset_sim(sim_client_handle_type h_sim)
-{
- //UNUSED(h_sim);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- //mbtk_sim_power_set(0);
- //sleep(1);
- //mbtk_sim_power_set(1);
- mbtk_modem_info_t info;
- info.fun = MBTK_DEV_MODEM_DISABLE_SIM;
- info.rst = 0;
- int err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
-
- info.fun = MBTK_DEV_MODEM_FULL_FUN;
- err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_addrxmsghandler(QSER_SIM_RxMsgHandlerFunc_t handlerPtr)
-{
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(handlerPtr == NULL)
- {
- LOGE("[qser_sim] param is NULL.");
- qser_sim_state_cb = NULL;
- return QSER_RESULT_SUCCESS;
- }
-
- qser_sim_state_cb = handlerPtr;
- if(!qser_sim_cb_state)
- {
- int ret = mbtk_sim_state_change_cb_reg(qser_info_handle, qser_sim_state_change_cb);
- if(ret != 0)
- {
- LOGE("[qser_sim] set cb fail.");
- qser_sim_state_cb = NULL;
- return QSER_RESULT_FAIL;
- }
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-
-int qser_sim_client_deinit(sim_client_handle_type h_sim)
-{
- //UNUSED(h_sim);
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle)
- {
- LOGE("[qser_sim] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_sim] mbtk_info_handle_free() fail.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- qser_sim_state_cb = NULL;
- inited = FALSE;
- }
- }
- else
- {
- qser_info_handle_num--;
- qser_sim_state_cb = NULL;
- }
- }
- else
- {
- LOGE("[qser_sim] handle not inited.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-/****************************API***************************************/
-
diff --git a/mbtk/liblynq_lib/src/lynq_sleep.c b/mbtk/liblynq_lib/src/lynq_sleep.c
deleted file mode 100644
index 0741ab5..0000000
--- a/mbtk/liblynq_lib/src/lynq_sleep.c
+++ /dev/null
@@ -1,813 +0,0 @@
-#include "lynq-qser-autosuspend.h"
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/epoll.h>
-#include <linux/input.h>
-
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "mbtk_info_api.h"
-#include "mbtk_power.h"
-
-/*
-This module is system sleep, the system cannot sleep when the lock exists
-To verify whether it is in sleep state, it is necessary to test the power consumption
-Power management principle, as long as a wakelock lock exists, the system will not enter the Suspend state
-So the name can be arbitrarily chosen to indicate that such a lock is needed so that the system does not sleep
-*/
-#if defined(MBTK_PLATFORM_KERNEL_5)
-#define MTBK_POWERIND "/system/etc/powerind" //1806
-#elif defined(MBTK_PLATFORM_KERNEL_3)
-#define MTBK_POWERIND "/etc/powerind" //1803
-#endif
-
-static bool call_Off = FALSE;
-static bool nw_off = FALSE;
-static bool sms_off = FALSE;
-static bool data_off = FALSE;
-
-static pthread_t lpm_t;
-static int edge_t = 0;
-static int epoll_fd_t = -1;
-static int fd_t = -1;
-static int socket_t[2];
-
-typedef struct{
- qser_lpm_wakeupin_data_t wakeupin;
- qser_lpm_wakeupout_data_t wakeupout;
- qser_lpm_Handler_t wakehandle;
-}lynq_wake_t;
-
-static lynq_wake_t lpm_init;
-
-
-typedef struct
-{
- int fd;
- char name[64];
-} lock_name;
-
-#define LOCK_MAX_SIZE 129
-
-lock_name lynq_lock_name[LOCK_MAX_SIZE]={0};
-static bool autosleep_enable = FALSE;
-
-static mbtk_info_handle_t* whitelist_info_handle = NULL;
-
-
-#define EPOLL_SIZE_HINT 128
-int mEpollFd = -1;
-mbtk_info_callback_func g_sleep_timer_cb;
-
-
-
-static int powerrind_get()
-{
- char buffer[4];
- int ret = 0;
-
- int fd = open(MTBK_POWERIND, O_RDWR | O_SYNC, 0662);
- if (fd != -1)
- {
- read(fd, buffer, strlen(buffer)+1);
- close(fd);
- }
-
- ret = atoi(buffer);
-
- return ret;
-}
-
-#if 1
-static int sleep_epoll_deregister(int epoll_fd,int fd )
-{
- int ret;
- do {
- ret = epoll_ctl( epoll_fd, EPOLL_CTL_DEL, fd, NULL );
- } while (ret < 0 && errno == EINTR);
- return ret;
-}
-
-static int sleep_epoll_register(int epoll_fd, int fd)
-{
- struct epoll_event ev;
- int ret, flags;
-
- /* important: make the fd non-blocking */
- flags = fcntl(fd, F_GETFL);
- fcntl(fd, F_SETFL, flags | O_NONBLOCK);
-
- ev.events = EPOLLIN;
- ev.data.fd = fd;
- do {
- ret = epoll_ctl( epoll_fd, EPOLL_CTL_ADD, fd, &ev );
- } while (ret < 0 && errno == EINTR);
-
- return ret;
-}
-#endif
-
-int qser_autosuspend_enable(char enable)
-{
- //UNUSED(enable);
-
- if((enable == 1) || enable == '1')
- {
- //if(!mbtk_system_sleep())
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo mem > /sys/power/autosleep");
- autosleep_enable = TRUE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
- else if((enable == 0) || enable == '0')
- {
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo off > /sys/power/autosleep");
- autosleep_enable = FALSE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
- else
- {
- LOGE("qser_autosuspend_enablecan enable err.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_wakelock_create(const char* name , size_t len)
-{
- //UNUSED(name);
- //UNUSED(len);
- int len_t;
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- len_t = strlen(name);
-
- if((name != NULL) && (len < 33) && (len_t < 33))
- {
- int i;
- //name
- for(i=1 ;i<LOCK_MAX_SIZE;i++)
- {
- if(strcmp(lynq_lock_name[i].name, name) == 0)
- {
- LOGE("Repeated names.");
- return -1;
- }
- }
-
- for(i=1 ;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd == 0)
- break;
- }
-
- if (i >= LOCK_MAX_SIZE)
- {
- LOGE("Fd is full.");
- return -1;
- }
-
- memcpy(lynq_lock_name[i].name, name, strlen(name)+1);
- lynq_lock_name[i].fd = i;
- return lynq_lock_name[i].fd -1;//Starting from scratch
- }
- else
- return -1;
-
- return -1;
-}
-
-int qser_wakelock_lock(int fd)
-{
- //UNUSED(fd);
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- int i;
- for(i=1;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd -1 == fd)
- break;
- }
- if(i == LOCK_MAX_SIZE)
- {
- LOGE("LOCK_MAX_SIZE is full\n");
- return -1;
- }
-
- if(!access("/sys/power/wake_lock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_lock", lynq_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- LOGE("/sys/power/wake_lock can not write.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_wakelock_unlock(int fd)
-{
- //UNUSED(fd);
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- int i;
- for(i=1;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd -1 == fd)
- break;
- }
- if(i == LOCK_MAX_SIZE)
- {
- LOGE("LOCK_MAX_SIZE is full\n");
- return -1;
- }
-
- if(!access("/sys/power/wake_unlock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_unlock", lynq_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- LOGE("/sys/power/wake_unlock can not write.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_wakelock_destroy(int fd)
-{
- //UNUSED(fd);
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- int i;
- for(i=1;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd -1 == fd)
- break;
- }
-
- if(i == LOCK_MAX_SIZE)
- {
- LOGE("LOCK_MAX_SIZE is full\n");
- return -1;
- }
- else
- {
- lynq_lock_name[i].fd = 0;
- memset(lynq_lock_name[i].name, 0, 64);
- return 0;
- }
-
- return 0;
-}
-
-void *threadFunction(void *arg)
-{
- int pinValue;
- int i;
- char buf[8] = {0};
- struct input_event ev_input = { 0 };
- const int size = sizeof(struct input_event);
-
- epoll_fd_t = epoll_create(2);
-/*
- struct epoll_event event;
- memset(&event, 0, sizeof(struct epoll_event));
- event.events = EPOLLIN | EPOLLET;
- event.data.fd = open("/dev/input/event0", O_RDONLY); // 根据实际情况指定正确的GPIO设备文件名
-
- fd_t = event.data.fd;
- if (epoll_ctl(epoll_fd_t, EPOLL_CTL_ADD, event.data.fd, &event) == -1)
- {
- LOGE("Failed to add GPIO device file.");
- return NULL;
- }
-
- memset(&event, 0, sizeof(struct epoll_event));
- event.events = EPOLLIN | EPOLLET;
- event.data.fd = socket_t[0];
- LOGE("threadFunction event.data.fd =[%d] ", event.data.fd);
-
- if (epoll_ctl(epoll_fd_t, EPOLL_CTL_ADD, event.data.fd, &event) == -1)
- {
- LOGE("Failed to add GPIO device file.");
- return NULL;
- }
-*/
-
-#if defined(MBTK_SG_SUPPORT)
- fd_t = open("/dev/input/event1", O_RDONLY);
- LOGI("init pthread_event1");
-#else
- fd_t = open("/dev/input/event2", O_RDONLY);
- LOGI("init pthread_event2");
-#endif
-
- sleep_epoll_register(epoll_fd_t, fd_t);
- sleep_epoll_register(epoll_fd_t, socket_t[1]);
-
- while (true)
- {
- struct epoll_event events[2];
- struct epoll_event ev;
- int cmd = 0;
-
- int numEvents = epoll_wait(epoll_fd_t, events, 2, -1);
-
- for (i = 0; i < numEvents; ++i)
- {
- if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP))
- {
- LOGE("Error on GPIO device.");
- return NULL;
- }
- else if ((events[i].events & EPOLLIN) || (events[i].events & EPOLLET))
- {
- //handleInterrupt(events[i].data.fd);
- if (events[i].data.fd == socket_t[1])
- {
- memset(buf, 0, sizeof(buf));
- read(socket_t[1], buf, sizeof(buf));
- if (1 == atoi(buf))
- {
- if(close(fd_t) == 0)
- LOGI("close(fd_t)ing");
-
- sleep_epoll_deregister(epoll_fd_t, socket_t[1]);
- sleep_epoll_deregister(epoll_fd_t, fd_t);
- /*
- memset(&ev, 0, sizeof(struct epoll_event));
- ev.events = EPOLLIN | EPOLLET;
- ev.data.fd = socket_t[1];
- epoll_ctl( epoll_fd_t, EPOLL_CTL_DEL, ev.data.fd, &ev);
-
- memset(&ev, 0, sizeof(struct epoll_event));
- ev.events = EPOLLIN | EPOLLET;
- ev.data.fd = fd_t;
- epoll_ctl( epoll_fd_t, EPOLL_CTL_DEL, ev.data.fd, &ev);
- */
- LOGI("do pthread_exit");
- return NULL;
- }
- }
- else if (events[i].data.fd == fd_t)
- {
- LOGI("go pthread_event");
- memset(&ev_input, 0x00, size);
- read(fd_t, &ev_input, size);
- LOGI("ev_input type = %x, code = %x, value = %x", ev_input.type, ev_input.code,ev_input.value);
-#if defined(MBTK_SG_SUPPORT)
- if (ev_input.code == 2)
- {
- LOGI(">>>>ev_input.value = [%d]",ev_input.value);
- pinValue = (int)ev_input.value;
- edge_t = pinValue;
- lpm_init.wakehandle(edge_t);
- }
-#else
- if (ev_input.type == 4 && ev_input.code == 3)
- {
- LOGI(">>>>ev_input.value = [%d]",ev_input.value);
- pinValue = (int)ev_input.value;
- edge_t = pinValue;
- lpm_init.wakehandle(edge_t);
- }
-#endif
-
- }
- else
- {
- LOGE("Unknown events[i].data.fd = %d", events[i].data.fd);
- }
- }
- }
- }
- return NULL;
-}
-
-int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg)
-{
- //UNUSED(qser_lpm_handler);
- //UNUSED(qser_lpm_cfg);
- if (socketpair( AF_LOCAL, SOCK_STREAM, 0, socket_t ) < 0 )
- {
- LOGE("[qser_lpm_init] could not create thread control socket pair: %s", strerror(errno));
-
- /*close the control socket pair && Retry again.*/
- if(socket_t[0] > 0)
- {
- close(socket_t[0] );
- socket_t[0] = -1;
- }
-
- if(socket_t[1] > 0)
- {
- close(socket_t[1] );
- socket_t[1] = -1;
- }
- return -1;
- }
- lpm_init.wakeupin.wakeupin_pin = qser_lpm_cfg->wakeupin.wakeupin_pin;
- LOGI(">>pin = %d",lpm_init.wakeupin.wakeupin_pin);
- lpm_init.wakeupin.wakeupin_edge = qser_lpm_cfg->wakeupin.wakeupin_edge;
- LOGI(">>edge = %d",lpm_init.wakeupin.wakeupin_edge);
- edge_t = qser_lpm_cfg->wakeupin.wakeupin_edge;//保留原始状态值 0 or 1
- lpm_init.wakehandle = qser_lpm_handler;
-
- pthread_attr_t thread_attr;
- pthread_attr_init(&thread_attr);
-
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("pthread_attr_setdetachstate() fail");
- return -1;
- }
-
- if(pthread_create(&lpm_t, &thread_attr, threadFunction, NULL))
- //if(pthread_create(&lpm_t, NULL, threadFunction, NULL))
- {
- LOGE("qser_lpm_init can't create thread");
- return -1;
- }
-
- pthread_attr_destroy(&thread_attr);
-
- //if (edge_t != qser_lpm_cfg->wakeupin.wakeupin_edge)//说明有变化,并且和原来的值不相同
- //qser_lpm_handler(edge_t);
-
- return 0;
-}
-
-int qser_lpm_deinit(void)
-{
- char buf[4]={0};
-
- if (fd_t == -1)
- return 0;
-
- if (fd_t != -1)
- {
- //char cmd = 1;
- strcpy(buf, "1");
- void* dummy = NULL;
- write( socket_t[0], buf, sizeof(buf) );
- //pthread_join(lpm_t, &dummy);
-
- sleep(1);
- // close the control socket pair
- if(socket_t[0] > 0)
- {
- close(socket_t[0] );
- socket_t[0] = -1;
- }
- if(socket_t[1] > 0)
- {
- close(socket_t[1] );
- socket_t[1] = -1;
- }
-
- //重置还原
- fd_t = -1;
-
- }
-
- return 0;
-}
-
-/*
-例如AT*POWERIND=31,就相当于设置NETWORK、SIM、SMS、CS CALL、PS DATA变化时都不主动上报,
-其中PS DATA目前暂时不支持,只是保留了这个标志位;
-AP power state: 1~31 means suspend, bitmap: bit0 - NETWORK;bit1 - SIM;bit2 - SMS;bit3 - CS CALL;bit4 - PS DATA
-0 means resume all.
-目标文件"/system/etc/powerind"
-如果bit0-bit3都配置可以采用的值是1-15,如果是当前采用NETWORK SMS CALL 则值的取值是 1 4 8 5 9 12 13
-
-*/
-
-int qser_whitelist_set(char* whitelish)
-{
- //UNUSED(whitelish);
- uint32 on = 0;
- int call_t, nw_t, data_t, sms_t, tmp;
-
- int len = strlen(whitelish);
-
- if (len != 4)
- {
- LOGE("whitelish num error num=[%d]",len);
- return -1;
- }
-
- tmp = atoi(whitelish);
-
- call_t = tmp/1000;
- nw_t = tmp%1000/100;
- data_t = tmp%1000%100/10;
- sms_t = tmp%1000%100%10;
-
- if (call_t == 1)
- call_Off = TRUE;
- else
- call_Off = FALSE;
-
- if (nw_t == 1)
- nw_off = TRUE;
- else
- nw_off = FALSE;
-
- if (data_t == 1)
- data_off = TRUE;
- else
- data_off = FALSE;
-
- if (sms_t == 1)
- sms_off = TRUE;
- else
- sms_off = FALSE;
-
- if (call_Off == FALSE && nw_off == FALSE && data_off == FALSE && sms_off == FALSE)
- {
- on = 29;//0000的情况,所有上报源都屏蔽,SIM的上报会一直被包含在内
- }
- else
- {
- if (call_Off == TRUE)
- call_t = 8;
- else
- call_t = 0;
-
- if (nw_off == TRUE)
- nw_t = 1;
- else
- nw_t = 0;
-
- if (data_off == TRUE)
- data_t = 16;
- else
- data_t = 0;
-
- if (sms_off == TRUE)
- sms_t = 4;
- else
- sms_t = 0;
-
- on = 29 - (call_t + nw_t + data_t + sms_t);//SIM的上报会一直被包含在内
- }
-
- if(whitelist_info_handle == NULL)
- {
- whitelist_info_handle = mbtk_info_handle_get();
- if(whitelist_info_handle)
- {
- LOGI("creat whitelist_info_handle is success");
- }
- else
- {
- LOGE("creat whitelist_info_handle is fail");
- return -1;
- }
- }
-
- int err = mbtk_wakeup_state_set(whitelist_info_handle, on);
- if(err)
- {
- LOGE("whitelist_info_handle Error : %d", err);
- return -1;
- }
-
- return 0;
-}
-
-
-int qser_whitelist_get(char* whitelish)
-{
- //UNUSED(whitelish);
- char list[10]={0};
- int call_t, nw_t, data_t, sms_t;
- int get_tmp;
-
- get_tmp = powerrind_get();
- //LOGI(">>>get_tmp: %d",get_tmp);
-
- //call 8 nw 1 data 16 sms 4 SIM的上报会一直被包含在内
- switch(get_tmp)
- {
- case 0:
- sprintf(list, "%d%d%d%d", 1, 1, 1, 1);
- break;
- case 8:
- sprintf(list, "%d%d%d%d", 0, 1, 1, 1);
- break;
- case 1:
- sprintf(list, "%d%d%d%d", 1, 0, 1, 1);
- break;
- case 16:
- sprintf(list, "%d%d%d%d", 1, 1, 0, 1);
- break;
- case 4:
- sprintf(list, "%d%d%d%d", 1, 1, 1, 0);
- break;
-
- case 9:
- sprintf(list, "%d%d%d%d", 0, 0, 1, 1);
- break;
- case 24:
- sprintf(list, "%d%d%d%d", 0, 1, 0, 1);
- break;
- case 12:
- sprintf(list, "%d%d%d%d", 0, 1, 1, 0);
- break;
- case 17:
- sprintf(list, "%d%d%d%d", 1, 0, 0, 1);
- break;
- case 5:
- sprintf(list, "%d%d%d%d", 1, 0, 1, 0);
- break;
- case 20:
- sprintf(list, "%d%d%d%d", 1, 1, 0, 0);
- break;
-
- case 25:
- sprintf(list, "%d%d%d%d", 0, 0, 0, 1);
- break;
- case 13:
- sprintf(list, "%d%d%d%d", 0, 0, 1, 0);
- break;
- case 28:
- sprintf(list, "%d%d%d%d", 0, 1, 0, 0);
- break;
- case 21:
- sprintf(list, "%d%d%d%d", 1, 0, 0, 0);
- break;
-
- case 29:
- sprintf(list, "%d%d%d%d", 0, 0, 0, 0);
- break;
-
- default :
- LOGE("qser_whitelist_get is error");
- break;
- }
-
- //LOGI(">>>get list: %s",list);
- strncpy(whitelish, list, strlen(list));
-
- if(whitelist_info_handle != NULL)
- {
- mbtk_info_handle_free(&whitelist_info_handle);
- LOGI("deinit whitelist_info_handle is succuess");
- }
-
- return 0;
-}
-
-static void* suspend_timer_thread_run(void* arg)
-{
- struct epoll_event eventItems[EPOLL_SIZE_HINT];
- int eventCount = epoll_wait(mEpollFd, eventItems, EPOLL_SIZE_HINT, -1);
-
- int timerFd = -1;
- int eventIndex = 0;
- uint64_t readCounter;
-
- if (eventCount < 0) {
- LOGE("Poll failed with an unexpected error: %s\n", strerror(errno));
- return -1;
- }
-
- for (; eventIndex < eventCount; ++eventIndex) {
- timerFd = eventItems[eventIndex].data.fd;
-
- int retRead = read(timerFd, &readCounter, sizeof(uint64_t));
- if (retRead < 0) {
- LOGE("read %d failed...\n", timerFd);
-
- continue;
- } else {
-
- g_sleep_timer_cb(NULL, 0);
- qser_autosuspend_enable(0);
- LOGI("suspend_timer_success\n");
- }
- }
-
- return 0;
-}
-
-
-
-int suspend_timer_timer_init(void)
-{
- int ret = -1;
-
-
- pthread_attr_t thread_attr;
- pthread_t net_led_thread_id;
- pthread_t status_led_thread_id;
- pthread_attr_init(&thread_attr);
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("[suspend] pthread_attr_setdetachstate() fail.");
- return -1;
- }
-
- if(pthread_create(&net_led_thread_id, &thread_attr, suspend_timer_thread_run, NULL))
- {
- LOGE("[suspend] pthread_create() fail.");
- return -1;
- }
-
- pthread_attr_destroy(&thread_attr);
- return 0;
-}
-
-
-int qser_suspend_timer_set(int time, mbtk_info_callback_func cb)
-{
- mEpollFd = epoll_create(EPOLL_SIZE_HINT);
-
- int fd = timerfd_create(CLOCK_BOOTTIME_ALARM, 0);
- if (fd < 0) {
- LOGE("Could not create timer fd: %s\n", strerror(errno));
- return 0;
- }
-
- struct itimerspec timerSet;
- timerSet.it_interval.tv_sec = 0;
- timerSet.it_interval.tv_nsec = 0;
- timerSet.it_value.tv_sec = time;
- timerSet.it_value.tv_nsec = 0;
- if (timerfd_settime(fd, 0, &timerSet, NULL) != 0) {
- LOGE("timerfd_settime failed: %s\n", strerror(errno));
- close(fd);
- return 0;
- }
-
- struct epoll_event eventItem;
- memset(&eventItem, 0, sizeof(eventItem));
- eventItem.events = EPOLLIN | EPOLLET;
- eventItem.data.fd = fd;
- int result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, fd, &eventItem);
- if (result != 0) {
- LOGE("Could not add timer fd(%d) to epoll instance: %s\n", fd, strerror(errno));
- }
-
- qser_autosuspend_enable(1);
- g_sleep_timer_cb = cb;
- suspend_timer_timer_init();
-
-
- return 0;
-}
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_sms.c b/mbtk/liblynq_lib/src/lynq_sms.c
deleted file mode 100755
index ed9c1b3..0000000
--- a/mbtk/liblynq_lib/src/lynq_sms.c
+++ /dev/null
@@ -1,563 +0,0 @@
-#include "lynq_qser_sms.h"
-#include "mbtk_type.h"
-#include "mbtk_pdu_sms.h"
-#include "mbtk_info_api.h"
-#include "lynq_sms.h"
-#include "mbtk_log.h"
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-#define TELEPHONE_NUM_MAX 16
-#define MSM_NUMBER_MAX 1024+1
-#define RES_NUM_MIN 128
-
-
-#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))
-
-static mbtk_info_handle_t* sms_info_handle = NULL;
-static char sms_center_address[128] = {0};
-
-typedef struct
-{
- QSER_SMS_RxMsgHandlerFunc_t handlerPtr;
- void* contextPtr;
-} lynq_sms_cb_func;
-
-static lynq_sms_cb_func lynq_sms_func_cb_handle;
-
-sms_client_handle_type g_sms_val = -1;
-
-
-void lynq_sms_state_change_cb(const void* data, int data_len)
-{
- LOGV("sms_state_change_cb()----------start\n");
- uint8 *ptr = (uint8*)data;
- //printf("3sms_state_change_cb() : %s\n", ptr);
-
- if (!strncmp("+CMT:", ptr, 5))//丢弃无用消息
- return ;
-
- struct SMS_Struct s = PDUDecoding(ptr);
- /*
- printf("服务中心地址: %s\n", s.SCA);
- printf("发送方地址: %s\n", s.OA);
- printf("服务中心时间戳: %s\n", s.SCTS);
- printf("消息内容: %s\n", s.UD);
- printf("数据编码方案: %s\n", DSC_to_msg(s.DCS));
- */
- QSER_SMS_Msg_t* tmp_data = NULL;
-
- tmp_data = (QSER_SMS_Msg_t*)malloc(sizeof(QSER_SMS_Msg_t));
- memset(tmp_data,0x00, sizeof(QSER_SMS_Msg_t));
-
- tmp_data->format = s.DCS;
- //printf("t数据编码方案: %d\n", tmp_data->format);
- memcpy(tmp_data->src_addr, s.OA, strlen(s.OA));
- //printf("t发送方地址: %s\n", tmp_data->src_addr);
- memcpy(tmp_data->timestamp, s.SCTS, strlen(s.SCTS));
- //printf("t服务中心时间戳: %s\n", tmp_data->timestamp);
- tmp_data->sms_data_len = strlen(s.UD);
- //printf("t消息内容长度: %d\n", tmp_data->sms_data_len);
- memcpy(tmp_data->sms_data, s.UD, strlen(s.UD));
- //printf("t消息内容: %s\n", tmp_data->sms_data);
-
- lynq_sms_func_cb_handle.handlerPtr(tmp_data, NULL);
-
- free(tmp_data);
-
-}
-
-
-int qser_sms_client_init(sms_client_handle_type *ph_sms)//out
-{
- //UNUSED(ph_sms);
-
- if(sms_info_handle == NULL)
- {
- sms_info_handle = mbtk_info_handle_get();
- if(sms_info_handle)
- {
- LOGI("creat sms_info_handle is success");
- *ph_sms = sms_info_handle->client_fd;
- g_sms_val = sms_info_handle->client_fd;
- }
- else
- {
- LOGE("creat sms_info_handle is fail");
- return -1;
- }
- }
-
- return 0;
-}
-
-int qser_sms_client_deinit(sms_client_handle_type h_sms)//in
-{
- //UNUSED(h_sms);
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL\n");
- return -1;
- }
-
- mbtk_sms_state_change_cb_reg(sms_info_handle, NULL);
-
- if(sms_info_handle)
- {
- mbtk_info_handle_free(&sms_info_handle);
- LOGI("deinit sms_info_handle is succuess");
- }
- else
- {
- LOGE("deinit sms_info_handle is fail");
- return -1;
- }
-
- return 0;
-}
-
-int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info)//in in 发送短信的内容、目的号码
-{
- //UNUSED(h_sms);
- //UNUSED(pt_sms_info);
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if (pt_sms_info == NULL)
- {
- LOGE("QSER_sms_info_t NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_send_sms sms_info_handle NULL");
- return -1;
- }
-
- uint8_t *phone_num = NULL, *data = NULL;
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- char resp[RES_NUM_MIN] = {0};
- char pdu_data[512] = {0};
- char phone_lenth[10] = {0};
- char mem[10] = {0};
- char *p = pdu_data;
- int mode = 0;
- int err = 0;
- int i = 0;
-
- data = pt_sms_info->sms_data;
-
- phone_num = pt_sms_info->src_addr;
-
- if (pt_sms_info->format == 0)//7
- mode = 1;
- else if (pt_sms_info->format == 1)//8
- return SMS_ERR;
- else if (pt_sms_info->format == 2)//USC2
- mode = 0;
- else
- return -1;
-
- //设置存储器
-/*
- if (pt_sms_info->storage == 0)
- {
- strcpy(mem, "SM");
- }
- else if (pt_sms_info->storage == 1)
- {
- strcpy(mem, "ME");
- }
- else
- {
- LOGE("qser_sms_deletefromstorage storage is no Support");
- return -1;
- }
-
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cpms_set(sms_info_handle, mem, resp);
- if(err) {
- LOGE("Error : %d", err);
- } else {
- LOGI("cpms set success. resp:%s", resp);
- }
-*/
- if(data == NULL)
- {
- LOGE("qser_sms_send_sms data NULL");
- return -1;
- }
-
- if(phone_num == NULL)
- {
- LOGE("qser_sms_send_sms phone_num NULL");
- return -1;
- }
-
- if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
- {
- LOGE("strlen(telephony_num):%d", strlen(phone_num));
- LOGE("strlen(msg):%d", strlen(data));
- return -1;
- }
-
- if (mode == 0)// PDU
- {
-#if 1
- if (sms_center_address[0] == '\0')
- {
- memset(sms_center_address, 0, sizeof(sms_center_address));
- memcpy(sms_center_address, "+8613800280500", strlen("+8613800280500"));
- }
-
- //printf("phone_num:%s\n", phone_num);
- //printf("sms_center_address:%s\n", sms_center_address);
- //printf("data:%s\n", data);
-
- char* pdu = NULL;
- char* smsc = SCAEncoding(sms_center_address);
- struct PDUS *pdus = PDUEncoding(sms_center_address,phone_num, data, NULL);
-
- for (i = 0; i < pdus->count; i++)
- {
- LOGI("第 %d 条:", i + 1);
- LOGI("%s\n", pdus->PDU[i]);
- pdu = pdus->PDU[i];
- }
-
- sprintf(p, "%s",smsc);
- LOGI("pdu_data:%s", pdu_data);
- sprintf(p+strlen(p), "%s", pdu);
- LOGI("pdu_data:%s",pdu_data);
-
- //sprintf(cmgs,"%d,%s",strlen(pdu_data), pdu_data);
- int t = strlen(pdu_data);
- sprintf(cmgs,"%d,%s",(t-18)/2, pdu_data);
- LOGI("cmgs:%s", cmgs);
-#else
- char *tmp_t = "0891683108200805F011000D91688189914026F3000800044F60597D";
- sprintf(cmgs,"%d,%s",19,tmp_t);
- printf("cmgs:%s\n", cmgs);
-#endif
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgf_set(sms_info_handle, mode);
- if(err)
- {
- LOGE("cmgf set error : %d", err);
- }
- else
- {
- LOGI("cmgf set success");
- }
-
- err = mbtk_sms_cmgs_set(sms_info_handle, cmgs, resp);
- if(err)
- {
- LOGE("Error : %d", err);
- return -1;
- }
- else
- {
- LOGI("cmgs set success . resp:%s", resp);
- }
- }
- else if (mode == 1) // text
- {
- err = mbtk_sms_cmgf_set(sms_info_handle, mode);
- if(err)
- {
- LOGE("cmgf set error : %d", err);
- }
- else
- {
- LOGI("cmgf set success");
- }
-
- sprintf(cmgs,"%s,%s", phone_num, data);
- LOGI("cmgs:%s", cmgs);
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgs_set(sms_info_handle, cmgs, resp);
- if(err)
- {
- LOGE("Error : %d", err);
- return -1;
- }
- else
- {
- LOGI("cmgs set success . resp:%s", resp);
- }
- }
- else
- {
- LOGE("Error : mode");
- return -1;
- }
-
- return 0;
-}
-
-//注册接收新短信
-int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)//in sms电话状态回调函数 in 主要是获取 上报 的内容
-{
- //UNUSED(handlerPtr);
- //UNUSED(contextPtr);
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_addrxmsghandler sms_info_handle NULL");
- return -1;
- }
-
- int err = mbtk_sms_cnmi_set(sms_info_handle);
- if(err)
- {
- LOGE("set cnmi fail");
- return -1;
- }
-
- lynq_sms_func_cb_handle.handlerPtr = handlerPtr;
- lynq_sms_func_cb_handle.contextPtr = contextPtr;
-
- mbtk_sms_state_change_cb_reg(sms_info_handle, lynq_sms_state_change_cb);
-
- return 0;
-}
-
-//删除短信
-int qser_sms_deletefromstorage(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage)//in in 删除短信的信息
-{
- //UNUSED(h_sms);
- //UNUSED(pt_sms_storage);
- char cmgd[128] = {0};
- int err = 0;
-
- int t_storage = 0;
- char mem[10] = {0};
- char resp[RES_NUM_MIN] = {0};
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(pt_sms_storage == NULL)
- {
- LOGE("qser_sms_deletefromstorage pt_sms_storage NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_deletefromstorage sms_info_handle NULL");
- return -1;
- }
-/*
- t_storage = pt_sms_storage->storage; //设置存储器
-
- if (t_storage == 0)
- {
- strncpy(mem, "SM", 2);
- }
- else if (t_storage == 1)
- {
- strncpy(mem, "ME", 2);
- }
- else
- {
- LOGE("qser_sms_deletefromstorage storage is no Support");
- return -1;
- }
-
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cpms_set(sms_info_handle, mem, resp);
- if(err) {
- LOGE("Error : %d", err);
- } else {
- LOGI("cpms set success. resp:%s", resp);
- }
-*/
- uint32_t id_x = 0; //若后面其他产品是int类型则用宏控制
- id_x = pt_sms_storage->storage_idx;//获取idx的值
-
- if(id_x == -1) //delete all
- {
- memcpy(cmgd, "0,4", strlen("0,4"));
- }
- else
- {
- sprintf(cmgd,"%d",id_x);
- }
-
- LOGI("cmgd:%s", cmgd);
-
- err = mbtk_sms_cmgd_set(sms_info_handle, cmgd);
- if(err)
- {
- LOGE("qser_sms_deletefromstorage Error : %d", err);
- return -1;
- }
- else
- {
- LOGI("qser_sms_deletefromstorage set success");
- }
-
- return 0;
-}
-
-//获取短信中心号码
-int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms,QSER_sms_service_center_cfg_t *set_sca_cfg)//in out
-{
- //UNUSED(h_sms);
- //UNUSED(set_sca_cfg);
- char sms_center_addree[254] = {0};
- int len_t;
- char *p1, *p2 ,*substr;
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if (set_sca_cfg == NULL)
- {
- LOGE("QSER_sms_service_center_cfg_t NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_getsmscenteraddress sms_info_handle NULL");
- return -1;
- }
-
- int err = mbtk_sms_csca_get(sms_info_handle, sms_center_addree);
- if(sms_center_addree[0] == '\0')
- {
- LOGE("qser_sms_getsmscenteraddress Error : %d", err);
- return -1;
- }
- else
- {
- p1 = strchr(sms_center_addree, '\"');
- p2 = strrchr(sms_center_addree, '\"');
- if (p1 && p2 && p2 > p1)
- {
- len_t = p2 - p1 - 1;
- char substr_t[len_t + 1];
- strncpy(substr_t, p1 + 1, len_t);
- substr_t[len_t] = '\0';
-
- substr = substr_t;
-
- memcpy(set_sca_cfg->service_center_addr, substr, strlen(substr));
- memcpy(sms_center_address, substr, strlen(substr));
-
- LOGI("qser_sms_getsmscenteraddress success");
- }
- else
- {
- LOGE("String inside double quotes not found");
- return -1;
- }
- }
-
- return 0;
-}
-
-//设置短信中心号码
-int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg)//in in
-{
- //UNUSED(h_sms);
- //UNUSED(get_sca_cfg);
- char *destNum = NULL;
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_setsmscenteraddress sms_info_handle NULL");
- return -1;
- }
-
- if(get_sca_cfg == NULL)
- {
- LOGE("qser_sms_setsmscenteraddress get_sca_cfg NULL");
- return -1;
- }
-
- destNum = get_sca_cfg->service_center_addr;
-
- //printf("1destNum:%s\n", destNum);
- memset(sms_center_address, 0, sizeof(sms_center_address));
- memcpy(sms_center_address, destNum, strlen(destNum));
-
- if (destNum == NULL)
- {
- LOGE("qser_sms_setsmscenteraddress destNum NULL");
- return -1;
- }
-
- int err = mbtk_sms_csca_set(sms_info_handle, destNum);
- if(err)
- {
- LOGE("Error : %d", err);
- return -1;
- }
- else
- {
- // memset(sms_center_address, 0, sizeof(sms_center_address));
- // memcpy(sms_center_address, destNum, strlen(destNum));
- //printf("destNum:%s\n", destNum);
- LOGI("qser_sms_setsmscenteraddress success");
- }
-
- return 0;
-}
-
-
-//显示删除列表
-int qser_sms_deletefromstoragelist( sms_client_handle_type h_sms, char* del_list)//in out
-{
- //UNUSED(h_sms);
- //UNUSED(get_sca_cfg);
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_deletefromstoragelist sms_info_handle NULL");
- return -1;
- }
-
- int err = mbtk_sms_cmgd_get(sms_info_handle, del_list);
- if(err > 0 && err != 300)//MBTK_INFO_ERR_SUCCESS
- {
- LOGE("Error : %d", err);
- return -1;
- }
-
- return 0;
-}
-
diff --git a/mbtk/liblynq_lib/src/lynq_thermal.c b/mbtk/liblynq_lib/src/lynq_thermal.c
deleted file mode 100755
index f3e6e3d..0000000
--- a/mbtk/liblynq_lib/src/lynq_thermal.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#if 1
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "lynq_qser_thermal.h"
-#include "mbtk_info_api.h"
-
-/****************************DEFINE***************************************/
-#define QSER_RESULT_FAIL -1
-#define QSER_RESULT_SUCCESS 0
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-extern mbtk_info_handle_t* qser_info_handle;
-extern int qser_info_handle_num;
-/****************************VARIABLE***************************************/
-
-
-/******************************FUNC*****************************************/
-static int qser_thermal_client_init(void)
-{
- if(qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- }
- else
- {
- LOGE("[qser_thermal] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- qser_info_handle_num++;
- }
-
- LOGE("[qser_thermal] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-static int qser_thermal_client_deinit(void)
-{
- if(qser_info_handle)
- {
- LOGE("[qser_thermal] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_thermal] mbtk_info_handle_free() fail.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- }
- }
- else
- {
- qser_info_handle_num--;
- }
- }
- else
- {
- LOGE("[qser_thermal] handle not inited.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int get_thermal_zone(int *numbers, int size)
-{
- if(numbers == NULL || size < 6)
- {
- LOGE("[qser_thermal]: numbers is NULL!");
- return QSER_RESULT_FAIL;
- }
-
- int ret = 0;
- int thermal = -1;
- int thermal_num = 0;
- mbtk_thermal_info_t temp;
- memset(&temp, 0, sizeof(mbtk_thermal_info_t));
-
- ret = qser_thermal_client_init();
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_thermal]qser_led_client_init fail.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_temp_get(qser_info_handle, 0, &temp);
- thermal = temp.ther;
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_thermal]mbtk_temp_get fail.");
- qser_thermal_client_deinit();
- return QSER_RESULT_FAIL;
- }
-
- qser_thermal_client_deinit();
- numbers[thermal_num++] = thermal;
- for(; thermal_num < size; thermal_num++)
- {
- numbers[thermal_num] = 0;
- }
-
- return 6;
-}
-/****************************API***************************************/
-
-#endif
diff --git a/mbtk/liblynq_lib/src/lynq_time.c b/mbtk/liblynq_lib/src/lynq_time.c
deleted file mode 100644
index 57383a1..0000000
--- a/mbtk/liblynq_lib/src/lynq_time.c
+++ /dev/null
@@ -1,383 +0,0 @@
-#include "lynq_systime.h"
-#include "mbtk_type.h"
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <errno.h>
-#include <netdb.h>
-#include <string.h>
-#include <unistd.h>
-#include <time.h>
-#include <netinet/in.h>
-
-#include <cutils/properties.h>
-#include <sys/time.h>
-
-
-#include "mbtk_ntp.h"
-#include "mbtk_net_control.h"
-#include "lynq_systime.h"
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-
-
-#define MBTK_AT_NTP_LEN_MAX 128
-
-
-
-
-typedef enum {
- LYNQ_TIME_TYPE_CELL = 0, //NITZ
- LYNQ_TIME_TYPE_NTP,
- LYNQ_TIME_TYPE_GNSS,
- LYNQ_TIME_TYPE_USER,
-
- LYNQ_TIME_TYPE_UNUSE
-} lynq_time_type_enum;
-
-//enable set time from ntp
-int ntp_sync_time(int enable);
-//enable set time from nitz
-int modem_time_enable(int enable);
-//enable set time from gnss
-int gnss_time_enable(int enable);
-//enable set time from user
-int user_set_time(char* date, char* time);
-// RTC TIME set to system
-int lynq_sync_time_from_rtc(void);
-//check sysytem type
-int lynq_get_time_src_status (time_src_status_s * time_src);
-// system time set to RTC
-int lynq_set_rtc_time(void);
-// get RTC time
-int lynq_get_rtc_time(unsigned long *ulsec);
-
-int sync_time_flag = 0;
-
-//int req_time_set(int type, char *time, int *cme_err);
-static int metis_strptime(char *str_time)
-{
- LOGD("%s(), str_time:%s\n", __FUNCTION__, str_time);
- struct tm stm;
- char dateTime[30];
- struct timeval tv;
- if(strptime(str_time, "%Y-%m-%d %H:%M:%S",&stm) != NULL)
- {
- time_t _t = (long)mktime(&stm);
- tzset();
- tv.tv_sec = _t;
- tv.tv_usec = 0;
- if(_t == -1)
- {
- LOGD("Set time :%s", str_time);
- LOGD("timestamp:%ld", _t);
- LOGD("mktime error, reason: %s\n", strerror(errno));
- return -1;
- }
-
- if(settimeofday(&tv, NULL)) {
- LOGD("Set time :%s", str_time);
- LOGD("timestamp:%ld", _t);
- LOGD("mktime error, reason: %s\n", strerror(errno));
- return -1;
- }
-
- LOGD("Success Set time to %s.\n", str_time);
- return 0;
-
- } else {
- LOGD("Set time fail.");
- return -1;
- }
- return 0;
-}
-
-
-static void* ntp_pthread_run(int* ntp_flag)
-{
- if (mbtk_net_state_get() == MBTK_NET_STATE_OFF)
- {
- LOGD("Network is disconnected. Set time fail.");
- if(NULL != ntp_flag)
- {
- *ntp_flag = -1;
- }
- return NULL;
- }
- LOGD("Network is connected.");
-
- char time_type[10];
- while(1){
- memset(time_type, 0, 10);
- property_get("persist.mbtk.time_type", time_type, "0");
- if(atoi(time_type) == LYNQ_TIME_TYPE_NTP) // NTP time
- {
- char time_str[100] = {0};
- time_t time = 0;
- if((time = (time_t)mbtk_at_systime()) == 0)
- {
- LOGD("NTP client fail!\n");
- if(NULL != ntp_flag)
- {
- *ntp_flag = -1;
- }
- return NULL;
- }
-#if 1
- struct tm CurlocalTime;
- localtime_r(&time, &CurlocalTime);
- // CurlocalTime.tm_hour += 8; //cst
- char dateTime[30];
- strftime(dateTime, 30, "%Y-%m-%d %H:%M:%S %A", &CurlocalTime);
-
- // printf("dateTime:%s, %ld\n", dateTime, time+28800); //cst
- LOGD("dateTime:%s, %ld\n", dateTime, time);
-
- struct timeval tv;
- tv.tv_sec = time;
- // tv.tv_sec += 28800; //cst
- tv.tv_usec = 0;
-
- if(settimeofday(&tv, NULL)) {
- LOGD("Set time :%s", dateTime);
- LOGD("timestamp:%ld, tv.tv_sec:%ld\n", time, tv.tv_sec);
-
- if(settimeofday(&tv, NULL)) {
- *ntp_flag = -1;
- LOGD("mktime error, reason: %s\n", strerror(errno));
- return NULL;
- }
- }
- LOGD("Set time success\n");
- lynq_set_rtc_time();
-#else
-
- struct tm *tm_t;
- tm_t = localtime(&time);
- tm_t->tm_hour += 8;
- strftime(time_str,128,"%F %T",tm_t);
-
- // NTP time
- if(metis_strptime(time_str))
- {
- *ntp_flag = -1;
- return NULL;
- }
-#endif
- break;
- } else {
- break;
- }
-
- sleep(64); // Sleep 64s.
- }
- if(NULL != ntp_flag)
- {
- *ntp_flag = 0;
- }
- return NULL;
-}
-
-int set_time_user(char* data_time_str)
-{
-
- int ret = 0;
- if(strlen(data_time_str) > 0)
- {
- ret = metis_strptime(data_time_str);
- }
-
- return ret;
-}
-
-
-//MBTK_TIME_TYPE_CELL = 0, //NITZ
-//MBTK_TIME_TYPE_NTP,
-//MBTK_TIME_TYPE_GNSS,
-//MBTK_TIME_TYPE_USER
-void set_time_type(int mbtk_time_type)
-{
- char type_str[10] = {0};
- sprintf(type_str, "%d", mbtk_time_type);
- property_set("persist.mbtk.time_type", type_str);
-
- return;
-}
-
-
-
-
-int ntp_sync_time(int enable)
-{
- if(0 != enable && 1 != enable)
- {
- return -1;
- }
- UNUSED(enable);
- int ntp_status = 0;
- int ret = 0;
- sync_time_flag = 0;
- if(enable)
- {
- set_time_type(LYNQ_TIME_TYPE_NTP);
- ntp_pthread_run(&ntp_status);
- if(ntp_status == 0)
- {
- ret = 0;
- sync_time_flag = 0;
- }
- else
- {
- ret = -1;
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- sync_time_flag = -1;
- }
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
-
- return ret;
-}
-
-//enable set time from nitz
-int modem_time_enable(int enable)
-{
- UNUSED(enable);
- sync_time_flag = 0;
-
- if(enable)
- {
- set_time_type(LYNQ_TIME_TYPE_CELL);
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
- return 0;
-}
-
-
-//enable set time from gnss
-int gnss_time_enable(int enable)
-{
- UNUSED(enable);
- sync_time_flag = 0;
- if(enable)
- {
- set_time_type(LYNQ_TIME_TYPE_GNSS);
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
-
- return 0;
-}
-
-
-//enable set time from user
-int user_set_time(char* date, char* time)
-{
- UNUSED(date);
- UNUSED(time);
- if(date == NULL || time == NULL)
- {
- return -1;
- }
-
- int ret = 0;
- char time_str[128] ={0};
- memset(time_str, 0x0, MBTK_AT_NTP_LEN_MAX);
-
- char *p = time;
- char *p1 = strstr(p, ":");
- char *p2 = strstr(p1+1, ":");
- if(p2 == NULL)
- {
- sprintf(time_str, "%s %s:00", date, time); //2023-11-30 11:30
- set_time_type(LYNQ_TIME_TYPE_USER);
- ret = set_time_user(time_str);
- }else
- {
- sprintf(time_str, "%s %s", date, time); //2023-11-30 11:30:31
- set_time_type(LYNQ_TIME_TYPE_USER);
- ret = set_time_user(time_str);
- }
-
- return ret;
-}
-
-
-//check sysytem type
-int lynq_get_time_src_status (time_src_status_s * time_src)
-{
- UNUSED(time_src);
- int type = 0;
- char time_type[] ={0};
- property_get("persist.mbtk.time_type", time_type, "0");
-
- type = atoi(time_type);
- printf("time_type :%d", type);
- if(type == LYNQ_TIME_TYPE_NTP)
- {
- time_src->ntp = 1;
- time_src->nitz = 0;
- time_src->gnss = 0;
- }
- else if(type == LYNQ_TIME_TYPE_CELL)
- {
- time_src->ntp = 0;
- time_src->nitz = 1;
- time_src->gnss = 0;
- }
- else if(type == LYNQ_TIME_TYPE_GNSS)
- {
- time_src->ntp = 0;
- time_src->nitz = 0;
- time_src->gnss = 1;
- }
- else if(type == LYNQ_TIME_TYPE_UNUSE)
- {
- time_src->ntp = 0;
- time_src->nitz = 0;
- time_src->gnss = 0;
- }
-
- return 0;
-}
-
-// RTC TIME set to system
-int lynq_sync_time_from_rtc(void)
-{
- system("hwclock --hctosys");
- return 0;
-}
-
-// system time set to RTC
-int lynq_set_rtc_time(void)
-{
-// system("hwclock --systohc");
- system("hwclock -w rtc0");
- return 0;
-}
-
-int lynq_get_rtc_time(unsigned long *ulsec)
-{
- UNUSED(ulsec);
-
- return 0;
-}
-
-int get_sync_time_result(void )
-{
-
- return sync_time_flag;
-}
-
-
-
-
-
diff --git a/mbtk/liblynq_lib/src/lynq_voice_call.c b/mbtk/liblynq_lib/src/lynq_voice_call.c
deleted file mode 100644
index 9aea174..0000000
--- a/mbtk/liblynq_lib/src/lynq_voice_call.c
+++ /dev/null
Binary files differ
diff --git a/mbtk/liblynq_lib_v2/Makefile b/mbtk/liblynq_lib_v2/Makefile
deleted file mode 100755
index e756641..0000000
--- a/mbtk/liblynq_lib_v2/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/lynq_lib_v2
-
-INC_DIR +=
-
-LIB_DIR +=
-
-#LIBS += -llog -lmbtk_lib
-LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -llog -ljson-c -lblobmsg_json
-LIBS += -lmbtk_audio -lmbtk_ril -lmbtk_fota -lmbtk_factory -lmbtk_net -lmbtk_gnss
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE +=
-
-MY_FILES_PATH:=$(LOCAL_PATH)/src
-#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
-#MY_FILES_PATH += $(LOCAL_PATH)/ql
-#endif
-
-#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
-#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
-#endif
-
-#LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
-LOCAL_SRC_FILES = src/lynq_adc.c \
- src/lynq_alarm.c \
- src/lynq_data_call.c \
- src/lynq_fota.c \
- src/lynq_gpio.c \
- src/lynq_irq.c \
- src/lynq_log.c \
- src/lynq_net_light.c \
- src/lynq_network.c \
- src/lynq_sim.c \
- src/lynq_sleep.c \
- src/lynq_sms.c \
- src/lynq_thermal.c \
- src/lynq_time.c \
- src/lynq_voice_call.c \
- src/lynq_chip_id.c \
- src/lynq_gnss.c
-
-ifeq ($(BUILD_PLATFORM), v2102)
-LOCAL_SRC_FILES += src/lynq_audio.c
-endif
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/liblynq_lib.so
-
-all: $(dtarget)
-
-$(dtarget): $(OBJS)
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_adc.c b/mbtk/liblynq_lib_v2/src/lynq_adc.c
deleted file mode 100755
index 4317e17..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_adc.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "lynq-adc.h"
-#include "mbtk_type.h"
-#include "mbtk_adc.h"
-#include "mbtk_log.h"
-
-int qser_adc_show(ADC_CHANNEL_E qadc)
-{
- UNUSED(qadc);
-
- mbtk_adc_enum adc = MBTK_ADC0;
- switch(qadc) {
- case QADC_NONE:
- {
- return 0;
- }
- case ADC0:
- adc = MBTK_ADC0;
- break;
- case ADC1:
- adc = MBTK_ADC1;
- break;
-#if defined(MBTK_PROJECT_T108) || defined(MBTK_PROJECT_L508_X6)
- case ADC2:
- adc = MBTK_ADC2;
- break;
-#endif
- default:
- LOGE("Unsupport adc : %d", qadc);
- return -1;
- }
-
- return mbtk_adc_get(adc);
-}
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_alarm.c b/mbtk/liblynq_lib_v2/src/lynq_alarm.c
deleted file mode 100755
index 461a045..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_alarm.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include <math.h>
-#include <stdlib.h>
-
-#include "mbtk_alarm.h"
-#include "lynq_alarm.h"
-#include "mbtk_str.h"
-
-
-bool rtc_flag = FALSE;
-int lynq_rtc_service_init(void)
-{
- int ret = 0;
- if(!rtc_flag)
- {
- rtc_flag = TRUE;
- ret = 1;
- }
- else
- {
- ret = -1;
- }
- return ret;
-}
-
-int lynq_rtc_service_deinit(void)
-{
- int ret = 0;
- if(rtc_flag)
- {
- rtc_flag = FALSE;
- ret = 0;
- }
- else{
- ret = -1;
- }
-
- return ret;
-}
-
-int lynq_set_wakealarm(unsigned long time_sec,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify )
-{
- UNUSED(time_sec);
- if(time_sec < 1 || time_sec > pow(2, 28)) {
- return -1;
- }
-
- return -1;
-}
-
-//int lynq_set_poweralarm(unsigned long time_sec)
-int lynq_set_poweralarm(unsigned long time_sec,int src_id)
-{
- UNUSED(time_sec);
- if(time_sec < 1 || time_sec > pow(2, 28)) {
- return -1;
- }
- char buf[50] ={0};
- sprintf(buf, "rtcwake -d rtc0 -s %d -m on &", time_sec);
- system(buf);
-
- return 0;
-}
-
-// min:1 max:2^28
-ssize_t wakealarm(char *buffer,int src_id,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify )
-{
- UNUSED(buffer);
- if(str_empty(buffer)) {
- return -1;
- }
- return lynq_set_wakealarm(atol(buffer), src_id, rtc_id, wakealarm_notify);
-}
-
-// min:1 max:2^28
-ssize_t poweralarm(char *buffer,int src_id)
-{
- UNUSED(buffer);
- if(str_empty(buffer)) {
- return -1;
- }
- return lynq_set_poweralarm(atol(buffer), 0);
-}
-
-ssize_t cancel_wakealarm(int src_id, int rtc_id)
-{
- return -1;
-}
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_audio.c b/mbtk/liblynq_lib_v2/src/lynq_audio.c
deleted file mode 100755
index 259661e..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_audio.c
+++ /dev/null
@@ -1,271 +0,0 @@
-#include "lynq-qser-audio.h"
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "mbtk_audio2.h"
-
-#define AUDIO_DEV_PLAY "device1"
-#define AUDIO_DEV_RECORDER "device2"
-#define AUDIO_HDL_DEFAULT 0
-
-static _cb_onPlayer play_cb = NULL;
-static int play_hdl = -1;
-
-static _cb_onPlayer recv_cb = NULL;
-static int recv_hdl = -1;
-
-int qser_AudPlayer_Open(char* device, _cb_onPlayer cb_fun)
-{
- UNUSED(device);
- UNUSED(cb_fun);
- if(device == NULL || strcmp(device, AUDIO_DEV_PLAY)) {
- LOGE("device must be %s for play.", AUDIO_DEV_PLAY);
- return -1;
- }
-
- if(mbtk_audio_wav_init()) {
- LOGE("mbtk_audio_wav_init() fail.");
- return -1;
- }
-
- play_cb = cb_fun;
-
- return 0;
-}
-
-int qser_AudPlayer_PlayFrmFile(int hdl, const char *fd, int offset)
-{
- UNUSED(hdl);
- UNUSED(fd);
- UNUSED(offset);
- if(play_hdl >= 0) {
- LOGE("Play busy.");
- if(play_cb) {
- play_cb(-1);
- }
- return -1;
- }
-
- if(mbtk_audio_wav_play_start(fd)) {
- LOGE("mbtk_audio_wav_play_start() fail.");
- if(play_cb) {
- play_cb(-2);
- }
- return -1;
- }
-
- play_hdl = hdl;
-
- if(play_cb) {
- play_cb(0);
- }
-
- return 0;
-}
-
-int qser_AudPlayer_PlayPcmBuf(const unsigned char *pcm_data, int data_size, int period_size,
- int period_count, int num_channels, int sample_rate, int ownerid)
-{
-
- if(play_hdl >= 0) {
- LOGE("Play busy.");
- if(play_cb) {
- play_cb(-1);
- }
- return -1;
- }
-
- if(mbtk_audio_wav_stream_play_start(pcm_data, data_size, sample_rate, num_channels)) {
- LOGE("mbtk_audio_wav_stream_play_start() fail.");
- if(play_cb) {
- play_cb(-2);
- }
- return -1;
- }
-
- play_hdl = AUDIO_HDL_DEFAULT;
- if(play_cb) {
- play_cb(0);
- }
- return 0;
-}
-
-int qser_AudPlayer_Pause(int hdl)
-{
- UNUSED(hdl);
- if((play_hdl != AUDIO_HDL_DEFAULT && hdl != play_hdl) || play_hdl < 0) {
- LOGE("Play busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_play_pause()) {
- LOGE("mbtk_audio_wav_play_pause() fail.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_AudPlayer_Resume(int hdl)
-{
- UNUSED(hdl);
- if((play_hdl != AUDIO_HDL_DEFAULT && hdl != play_hdl) || play_hdl < 0) {
- LOGE("Play busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_play_resume()) {
- LOGE("mbtk_audio_wav_play_resume() fail.");
- return -1;
- }
-
- return 0;
-}
-
-void qser_AudPlayer_Stop(int hdl)
-{
- UNUSED(hdl);
- if((play_hdl != AUDIO_HDL_DEFAULT && hdl != play_hdl) || play_hdl < 0) {
- LOGE("Play busy or hdl error.");
- return;
- }
-
- if(mbtk_audio_wav_play_stop()) {
- LOGE("mbtk_audio_wav_play_stop() fail.");
- return;
- }
-
- play_hdl = -1;
-}
-
-
-void qser_AudPlayer_Close(int hdl)
-{
- UNUSED(hdl);
-
- if(play_hdl >= 0) {
- qser_AudPlayer_Stop(hdl);
- }
-
- if(mbtk_audio_wav_deinit()) {
- LOGE("mbtk_audio_wav_deinit() fail.");
- return;
- }
-
- play_cb = NULL;
-}
-
-int qser_AudRecorder_Open(char* device, _cb_onPlayer cb_fun)
-{
- UNUSED(device);
- UNUSED(cb_fun);
- if(device == NULL || strcmp(device, AUDIO_DEV_RECORDER)) {
- LOGE("device must be %s for recv.", AUDIO_DEV_RECORDER);
- return -1;
- }
-
- if(mbtk_audio_wav_init()) {
- LOGE("mbtk_audio_wav_init() fail.");
- return -1;
- }
-
- recv_cb = cb_fun;
-
- return 0;
-}
-
-int qser_AudRecorder_StartRecord(int hdl, const char *fd, int offset)
-{
- UNUSED(hdl);
- UNUSED(fd);
- UNUSED(offset);
- if(recv_hdl >= 0) {
- LOGE("Recv busy.");
- if(recv_cb) {
- recv_cb(-1);
- }
- return -1;
- }
-
- if(mbtk_audio_wav_recorder_start(fd, MBTK_AUDIO_SAMPLE_RATE_8000)) {
- LOGE("mbtk_audio_wav_recorder_start() fail.");
- if(recv_cb) {
- recv_cb(-2);
- }
- return -1;
- }
-
- recv_hdl = hdl;
- if(recv_cb) {
- recv_cb(0);
- }
- return 0;
-}
-
-int qser_AudRecorder_StartRecord_Custom(char *file, int period_size, int period_count,
- int num_channels, int sample_rate)
-{
- return qser_AudRecorder_StartRecord(0, file, 0);
-}
-
-int qser_AudRecorder_Pause(void)
-{
- if(recv_hdl < 0) {
- LOGE("Recv busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_recorder_pause()) {
- LOGE("mbtk_audio_wav_recorder_pause() fail.");
- return -1;
- }
- return 0;
-}
-
-int qser_AudRecorder_Resume(void)
-{
- if(recv_hdl < 0) {
- LOGE("Recv busy or hdl error.");
- return -1;
- }
-
- if(mbtk_audio_wav_recorder_resume()) {
- LOGE("mbtk_audio_wav_recorder_resume() fail.");
- return -1;
- }
- return 0;
-}
-
-void qser_AudRecorder_Stop(void)
-{
- if(recv_hdl < 0) {
- LOGE("Recv busy or hdl error.");
- return;
- }
-
- if(mbtk_audio_wav_recorder_stop()) {
- LOGE("mbtk_audio_wav_recorder_stop() fail.");
- return;
- }
-
- recv_hdl = -1;
-}
-
-void qser_AudRecorder_Close(void)
-{
- if(recv_hdl >= 0) {
- qser_AudRecorder_Stop();
- }
-
- if(mbtk_audio_wav_deinit()) {
- LOGE("mbtk_audio_wav_deinit() fail.");
- return;
- }
-
- recv_cb = NULL;
-}
-
-void qser_Audio_Deinit(void)
-{
- // Do nothing...
-}
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_chip_id.c b/mbtk/liblynq_lib_v2/src/lynq_chip_id.c
deleted file mode 100755
index 10e21c9..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_chip_id.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-#include <time.h>
-#include "mbtk_info_api.h"
-
-int lynq_get_time_sec(char *time_t)
-{
- struct timeval tv;
- int ret=gettimeofday(&tv,NULL);
- sprintf(time_t, "%ld", tv.tv_sec);
- return 0;
-}
-
-int lynq_imet_get(char *imei_t)
-{
- static mbtk_info_handle_t* info_handle = NULL;
- info_handle = mbtk_info_handle_get();
- if(!info_handle)
- {
- return -1;
- }
-
- int err;
- err = mbtk_imei_get(info_handle, imei_t);
- if(err) {
- // printf("Error : %d\n", err);
- return -1;
- } else {
- // printf("IMEI : %s\n", imei_t);
- }
- return 0;
-}
-
-
-int lynq_get_chip_id(char *chip_id)
-{
- char time[50]={0};
- char imei[50]={0};
- int ret = 0;
- lynq_get_time_sec(time);
- ret = lynq_imet_get(imei);
- if(!ret)
- {
- sprintf(chip_id,"%s%s",imei, time);
-// printf("%s\n",chip_id );
- }
- else{
- return -1;
- }
-
- return 0;
-}
-
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_data_call.c b/mbtk/liblynq_lib_v2/src/lynq_data_call.c
deleted file mode 100755
index 73e4692..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_data_call.c
+++ /dev/null
@@ -1,867 +0,0 @@
-#include "lynq-qser-data.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-#include <pthread.h>
-#include <cutils/properties.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-/****************************DEFINE***************************************/
-#define QSER_RESULT_SUCCESS 0
-#define QSER_RESULT_FAIL -1
-
-#define MBTK_INFO_ERR_CID_EXIST 311
-#define MBTK_INFO_ERR_CID_NO_EXIST 312
-#define MBTK_INFO_ERR_NO_APN 500
-
-#define QSER_APN_NUM 8
-//default range: 0 - 7
-//AT+CGACT range: 1 - 8
-//1 default IDX, 8 IMS IDX
-#if defined(MBTK_ALL_CID_SUPPORT)
-#if defined(MBTK_SG_SUPPORT)
-#define QSER_PROFILE_IDX_MIN 0
-#else
-#define QSER_PROFILE_IDX_MIN 1
-#endif
-#else
-#define QSER_PROFILE_IDX_MIN 1
-#endif
-#define QSER_PROFILE_IDX_MAX 6
-
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-mbtk_info_handle_t* qser_info_handle = NULL;
-int qser_info_handle_num = 0;
-static bool inited = FALSE;
-static qser_data_call_evt_cb_t qser_net_status_cb = NULL;
-/****************************VARIABLE***************************************/
-
-/******************************FUNC*****************************************/
-static int qser_apn_info_param_convert(int profile_idx, qser_apn_info_s *new_apn, mbtk_qser_apn_info_s *old_apn)
-{
- if(new_apn == NULL || old_apn == NULL)
- {
- LOGE("[qser_data] qser_apn_info_param_convert apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(new_apn, 0x0, sizeof(qser_apn_info_s));
- new_apn->profile_idx = old_apn->cid - 1;
- //get ip type
- if(old_apn->ip_type == MBTK_IP_TYPE_IPV4V6) // IPV4V6
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_IPV4V6;
- }
- else if(old_apn->ip_type == MBTK_IP_TYPE_IP) // IPV4
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_IPV4;
- }
- else if(old_apn->ip_type == MBTK_IP_TYPE_IPV6) // IPV6
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_IPV6;
- }
- else
- {
- new_apn->pdp_type = QSER_APN_PDP_TYPE_PPP;
- }
-
- //get apn name
- if(strlen((char *)old_apn->apn_name) > QSER_APN_NAME_SIZE)
- {
- LOGE("[qser_data] apn_nmea length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->apn_name) > 0)
- {
- memcpy(new_apn->apn_name, old_apn->apn_name,strlen((char *)old_apn->apn_name));
- }
- }
-
- //get apn user
- if(strlen((char *)old_apn->user_name) > QSER_APN_USERNAME_SIZE)
- {
- LOGE("[qser_data] apn_user length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->user_name) > 0)
- {
- memcpy(new_apn->username, old_apn->user_name, strlen((char *)old_apn->user_name));
- }
- }
-
- //get apn password
- if(strlen((char *)old_apn->user_pass) > QSER_APN_PASSWORD_SIZE)
- {
- LOGE("[qser_data] apn_password length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->user_pass) > 0)
- {
- memcpy(new_apn->password, old_apn->user_pass, strlen((char *)old_apn->user_pass));
- }
- }
-
- //get apn proto
- new_apn->auth_proto = (qser_apn_auth_proto_e)old_apn->auth_proto;
-
- //get apn type
- if(strlen((char *)old_apn->apn_type) > QSER_APN_PASSWORD_SIZE)
- {
- LOGE("[qser_data] apn_type length verylong.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(strlen((char *)old_apn->apn_type) > 0)
- {
- memcpy(new_apn->apn_type, old_apn->apn_type, strlen((char *)old_apn->apn_type));
- }
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-static void qser_state_init(qser_data_call_state_s *state)
-{
- if(state != NULL)
- {
- state->profile_idx = 0;
- memset(state->name, 0x0, 16);
- state->ip_family = QSER_DATA_CALL_TYPE_IPV4V6;
- state->state = QSER_DATA_CALL_DISCONNECTED;
- state->err = QSER_DATA_CALL_ERROR_NONE;
- inet_aton("0.0.0.0", &(state->v4.ip));
- inet_aton("0.0.0.0", &(state->v4.gateway));
- inet_aton("0.0.0.0", &(state->v4.pri_dns));
- inet_aton("0.0.0.0", &(state->v4.sec_dns));
- inet_pton(AF_INET6, "::", &(state->v6.ip));
- inet_pton(AF_INET6, "::", &(state->v6.gateway));
- inet_pton(AF_INET6, "::", &(state->v6.pri_dns));
- inet_pton(AF_INET6, "::", &(state->v6.sec_dns));
- }
-}
-
-void qser_wan_net_state_change_cb(const void* data, int data_len)
-{
- if(data == NULL || data_len == 0)
- {
- return;
- }
-
- uint8 *net_data = NULL;
- net_data = (uint8 *)data;
-
- if(*net_data > 100 && *net_data < 200)
- {
- int idx = *net_data - 101;
- if(idx <= QSER_PROFILE_IDX_MAX)
- {
- qser_data_call_state_s state = {0};
- qser_state_init(&state);
- state.profile_idx = idx;
- state.state = QSER_DATA_CALL_DISCONNECTED;
- if(qser_net_status_cb != NULL)
- {
- qser_net_status_cb(&state);
- }
- }
- else
- {
- LOGE("[qser_data] cb fail,idx is %d.", idx);
- }
-
- }
- else if(*net_data > 200 && *net_data < 220)
- {
- LOGE("[qser_data] cid[%d] is open.", *net_data - 201);
- }
- else if(*net_data > 220)
- {
- LOGE("[qser_data] cid[%d] is reopen.", *net_data - 221);
- int idx = *net_data - 221;
- if(idx <= QSER_PROFILE_IDX_MAX)
- {
- qser_data_call_state_s state = {0};
- qser_state_init(&state);
- state.profile_idx = idx;
- state.state = QSER_DATA_CALL_CONNECTED;
- snprintf(state.name, 16, "ccinet%d", idx);
- if(qser_net_status_cb != NULL)
- {
- qser_net_status_cb(&state);
- }
- }
- }
- else if(*net_data == 1)
- {
- LOGE("[qser_data] pdp is open.");
- }
- else
- {
- LOGE("[qser_data] unkonwn param [%d].", *net_data);
- }
-}
-
-static void* data_call_async_thread(void* arg)
-{
- LOGE("[qser_data] entry data_call_async_thread.");
- qser_data_call_error_e err = QSER_DATA_CALL_ERROR_NONE;
-
- qser_data_call_s qser_data_backup = {0};
- qser_data_call_info_s info = {0};
- if(arg != NULL)
- {
- memcpy(&qser_data_backup, (qser_data_call_s *)arg, sizeof(qser_data_call_s));
- }
- else
- {
- LOGE("[qser_data] arg is NULL.");
- }
-
- qser_data_call_state_s state = {0};
- qser_state_init(&state);
- state.profile_idx = qser_data_backup.profile_idx;
- snprintf(state.name, 16, "ccinet%d", qser_data_backup.profile_idx);
- state.ip_family = qser_data_backup.ip_family;
-
- int ret = qser_data_call_start(&qser_data_backup, &err);
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_data] qser_data_call_start() fail.");
- state.err = err;
- }
- else
- {
- state.state = QSER_DATA_CALL_CONNECTED;
- ret = qser_data_call_info_get(qser_data_backup.profile_idx, qser_data_backup.ip_family, &info, &err);
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_data] qser_data_call_info_get() fail.");
- state.err = err;
- }
- else
- {
- memcpy(&(state.v4), &(info.v4.addr), sizeof(struct v4_address_status));
- memcpy(&(state.v6), &(info.v6.addr), sizeof(struct v6_address_status));
- }
- }
-
- if(qser_net_status_cb != NULL)
- {
- qser_net_status_cb(&state);
- }
- return NULL;
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int qser_data_call_init(qser_data_call_evt_cb_t evt_cb)
-{
- //UNUSED(evt_cb);
- if(!inited && qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- else
- {
- LOGE("[qser_data] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- if(!inited)
- {
- qser_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- }
- qser_net_status_cb = evt_cb;
-
- LOGE("[qser_data] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-void qser_data_call_destroy(void)
-{
- if(qser_info_handle)
- {
- LOGE("[qser_data] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_data] mbtk_info_handle_free() fail.");
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- qser_net_status_cb = NULL;
- inited = FALSE;
- }
- }
- else
- {
- qser_info_handle_num--;
- qser_net_status_cb = NULL;
- }
- }
- else
- {
- LOGE("[qser_data] handle not inited.");
- }
-}
-
-int qser_data_call_start(qser_data_call_s *data_call, qser_data_call_error_e *err)
-{
- //UNUSED(data_call);
- //UNUSED(err);
- if(data_call == NULL || err == NULL)
- {
- LOGE("[qser_data] data_call or err is NULL.");
- if(err != NULL)
- {
- *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- }
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- int ret = -1;
- ret = mbtk_data_call_start(qser_info_handle, data_call->profile_idx + 1, 0, FALSE, 0);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_data_call_start fail.[ret = %d]", ret);
- if(ret == MBTK_INFO_ERR_CID_EXIST)
- {
- *err = QSER_DATA_CALL_ERROR_PDP_ACTIVATE;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- }
- return QSER_RESULT_FAIL;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_NONE;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_data_call_start_async(qser_data_call_s *data_call, qser_data_call_error_e *err)
-{
- //UNUSED(data_call);
- UNUSED(err);
- if(data_call == NULL || err == NULL)
- {
- LOGE("[qser_data] data_call or err is NULL.");
- if(err != NULL)
- {
- *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- }
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- pthread_attr_t thread_attr;
- pthread_t data_call_thread_id;
- pthread_attr_init(&thread_attr);
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("[qser_data] pthread_attr_setdetachstate() fail.");
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- return QSER_RESULT_FAIL;
- }
-
- //memcpy(&qser_data_backup, data_call, sizeof(qser_data_call_s));
- if(pthread_create(&data_call_thread_id, &thread_attr, data_call_async_thread, (void *) data_call))
- {
- LOGE("[qser_data] pthread_create() fail.");
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- return QSER_RESULT_FAIL;
- }
- pthread_attr_destroy(&thread_attr);
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_data_call_stop(char profile_idx, qser_data_call_ip_family_e ip_family, qser_data_call_error_e *err)
-{
- //UNUSED(profile_idx);
- UNUSED(ip_family);
- //UNUSED(err);
- if(err == NULL)
- {
- LOGE("[qser_data] err is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- int ret = -1;
- ret = mbtk_data_call_stop(qser_info_handle, profile_idx + 1, 15);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_data_call_stop fail.[ret = %d]", ret);
- if(ret == MBTK_INFO_ERR_CID_NO_EXIST)
- {
- *err = QSER_DATA_CALL_ERROR_PDP_NO_ACTIVATE;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- }
- return QSER_RESULT_FAIL;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_NONE;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_data_call_info_get(char profile_idx,qser_data_call_ip_family_e ip_family,
- qser_data_call_info_s *info, qser_data_call_error_e *err)
-{
- //UNUSED(profile_idx);
- UNUSED(ip_family);
- //UNUSED(info);
- //UNUSED(err);
-
- if(info == NULL || err == NULL)
- {
- LOGE("[qser_data] info or err is NULL.");
- if(err != NULL)
- {
- *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- }
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- *err = QSER_DATA_CALL_ERROR_NO_INIT;
- return QSER_RESULT_FAIL;
- }
-
- int ret = -1;
- mbtk_ipv4_info_t ipv4;
- mbtk_ipv6_info_t ipv6;
-#ifdef QSER_TEST
- char v4_buff[32] = {0};
- char v6_buff[128] = {0};
-#endif
- memset(info, 0, sizeof(qser_data_call_info_s));
- ret = mbtk_data_call_state_get(qser_info_handle, profile_idx + 1, &ipv4, &ipv6);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_data_call_state_get fail.[ret = %d]", ret);
- if(ret == MBTK_INFO_ERR_CID_NO_EXIST)
- {
- *err = QSER_DATA_CALL_ERROR_PDP_NO_ACTIVATE;
- }
- else
- {
- *err = QSER_DATA_CALL_ERROR_UNKNOWN;
- }
- return QSER_RESULT_FAIL;
- }
- else
- {
- info->profile_idx = profile_idx;
- if(ipv4.valid)
- {
- info->ip_family = QSER_DATA_CALL_TYPE_IPV4;
- info->v4.state = QSER_DATA_CALL_CONNECTED;
- sprintf(info->v4.name, "ccinet%d", profile_idx);
- info->v4.addr.ip.s_addr = ipv4.IPAddr;
- info->v4.addr.pri_dns.s_addr = ipv4.PrimaryDNS;
- info->v4.addr.sec_dns.s_addr = ipv4.SecondaryDNS;
-
-#ifdef QSER_TEST
- //LOGE("[qser_data] IP: %x pri_DNS: %x sec_DNS: %x.", ipv4.IPAddr, ipv4.PrimaryDNS, ipv4.SecondaryDNS);
- if(inet_ntop(AF_INET, &(info->v4.addr.ip), v4_buff, 32) == NULL) {
- LOGE("[qser_data] IP error.");
- } else {
- LOGE("[qser_data] IP : %s", v4_buff);
- }
- if(inet_ntop(AF_INET, &(info->v4.addr.pri_dns), v4_buff, 32) == NULL) {
- LOGE("[qser_data] PrimaryDNS error.");
- } else {
- LOGE("[qser_data] PrimaryDNS : %s", v4_buff);
- }
- if(inet_ntop(AF_INET, &(info->v4.addr.sec_dns), v4_buff, 32) == NULL) {
- LOGE("[qser_data] SecondaryDNS error.");
- } else {
- LOGE("[qser_data] SecondaryDNS : %s", v4_buff);
- }
-#endif
- }
-
- if(ipv6.valid)
- {
- info->ip_family = QSER_DATA_CALL_TYPE_IPV6;
- info->v6.state = QSER_DATA_CALL_CONNECTED;
- sprintf(info->v6.name, "ccinet%d", profile_idx);
- memcpy(&(info->v6.addr.ip), &(ipv6.IPV6Addr), sizeof(ipv6.IPV6Addr));
- memcpy(&(info->v6.addr.pri_dns), &(ipv6.PrimaryDNS), sizeof(ipv6.PrimaryDNS));
- memcpy(&(info->v6.addr.sec_dns), &(ipv6.SecondaryDNS), sizeof(ipv6.SecondaryDNS));
-#ifdef QSER_TEST
- if(ipv6_2_str(&(info->v6.addr.ip), v6_buff))
- {
- LOGE("[qser_data] IP error.");
- } else {
- LOGE("[qser_data] IP : %s", v6_buff);
- }
- if(ipv6_2_str(&(info->v6.addr.pri_dns), v6_buff))
- {
- LOGE("[qser_data] PrimaryDNS error.");
- } else {
- LOGE("[qser_data] PrimaryDNS : %s", v6_buff);
- }
- if(ipv6_2_str(&(info->v6.addr.sec_dns), v6_buff))
- {
- LOGE("[qser_data] SecondaryDNS error.");
- } else {
- LOGE("[qser_data] SecondaryDNS : %s", v6_buff);
- }
-#endif
- }
-
- if(ipv4.valid && ipv6.valid)
- {
- info->ip_family = QSER_DATA_CALL_TYPE_IPV4V6;
- }
-
- if(!ipv4.valid && !ipv6.valid)
- {
- info->v4.state = QSER_DATA_CALL_DISCONNECTED;
- info->v6.state = QSER_DATA_CALL_DISCONNECTED;
- }
- }
-
- *err = QSER_DATA_CALL_ERROR_NONE;
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_set(qser_apn_info_s *apn)
-{
- //UNUSED(apn);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn == NULL)
- {
- LOGE("[qser_data] apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int ret = 0;
- mbtk_qser_apn_info_s apninfo;
- memset(&apninfo, 0x0, sizeof(mbtk_qser_apn_info_s));
- apninfo.cid = apn->profile_idx + 1;
-
- if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IP;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4V6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV4V6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_PPP)
- {
- apninfo.ip_type = MBTK_IP_TYPE_PPP;
- }
- else
- {
- LOGE("[qser_data] pdp_type error.");
- return QSER_RESULT_FAIL;
- }
-
-
- apninfo.req_type = MBTK_APN_REQ_TYPE_SET;
- apninfo.auth_proto = (mbtk_apn_auth_proto_enum)apn->auth_proto;
- if(strlen(apn->apn_name))
- {
- memcpy(apninfo.apn_name, apn->apn_name, strlen(apn->apn_name));
- }
- else
- {
- LOGE("[qser_data] apn_name is NULL.");
- return QSER_RESULT_FAIL;
- }
- if(strlen(apn->username))
- {
- memcpy(apninfo.user_name, apn->username, strlen(apn->username));
- }
- if(strlen(apn->password))
- {
- memcpy(apninfo.user_pass, apn->password, strlen(apn->password));
- }
- if(strlen(apn->apn_type))
- {
- memcpy(apninfo.apn_type, apn->apn_type, strlen(apn->apn_type));
- }
- ret = mbtk_qser_apn_set(qser_info_handle, &apninfo, NULL);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_qser_apn_set fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn)
-{
- //UNUSED(profile_idx);
- //UNUSED(apn);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn == NULL)
- {
- LOGE("[qser_data] apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- //get apn info
- mbtk_qser_apn_info_s apns[10] = {0};
- int apn_num = 10;
- int ret = mbtk_qser_apn_get(qser_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_apn_get fail. [ret = %d]",ret);
- return QSER_RESULT_FAIL;
- }
- else
- {
- int i = 0;
- for(i = 0; i < apn_num; i++)
- {
- if(apns[i].cid == profile_idx + 1)
- {
- LOGE("[qser_data] find IDX.");
- break;
- }
- }
-
- if(i == apn_num)
- {
- LOGE("[qser_data] not find IDX.[apn_num = %d]", apn_num);
- return QSER_RESULT_FAIL;
- }
-
- if(qser_apn_info_param_convert(profile_idx, apn, &apns[i]) != 0)
- {
- LOGE("[qser_data] qser_apn_info_param_convert fail");
- return QSER_RESULT_FAIL;
- }
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_add(qser_apn_add_s *apn, unsigned char *profile_idx)
-{
- //UNUSED(apn);
- //UNUSED(profile_idx);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn == NULL || profile_idx == NULL)
- {
- LOGE("[qser_data] apn param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int ret = 0;
- unsigned char idx[2] = {0};
- mbtk_qser_apn_info_s apninfo;
- memset(&apninfo, 0x0, sizeof(mbtk_qser_apn_info_s));
- apninfo.cid = 0;
-
- if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IP;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4V6)
- {
- apninfo.ip_type = MBTK_IP_TYPE_IPV4V6;
- }
- else if(apn->pdp_type == QSER_APN_PDP_TYPE_PPP)
- {
- apninfo.ip_type = MBTK_IP_TYPE_PPP;
- }
- else
- {
- LOGE("[qser_data] pdp_type error.");
- return QSER_RESULT_FAIL;
- }
-
- apninfo.req_type = MBTK_APN_REQ_TYPE_ADD;
- apninfo.auth_proto = (mbtk_apn_auth_proto_enum)apn->auth_proto;
- if(strlen(apn->apn_name))
- {
- memcpy(apninfo.apn_name, apn->apn_name, strlen(apn->apn_name));
- }
-
- if(strlen(apn->username))
- {
- memcpy(apninfo.user_name, apn->username, strlen(apn->username));
- }
- if(strlen(apn->password))
- {
- memcpy(apninfo.user_pass, apn->password, strlen(apn->password));
- }
- if(strlen(apn->apn_type))
- {
- memcpy(apninfo.apn_type, apn->apn_type, strlen(apn->apn_type));
- }
- ret = mbtk_qser_apn_set(qser_info_handle, &apninfo, idx);
- if(ret != 0)
- {
- LOGE("[qser_data] mbtk_qser_apn_set fail.");
- return QSER_RESULT_FAIL;
- }
- *profile_idx = idx[0] - 1;
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_del(unsigned char profile_idx)
-{
- int ret = 0;
-
- //UNUSED(profile_idx);
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_apn_del(qser_info_handle, profile_idx);
- if(ret < 0)
- {
- LOGE("[qser_data] mbtk_apn_del fail!");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_apn_get_list(qser_apn_info_list_s *apn_list)
-{
- //UNUSED(apn_list);
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_data] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(apn_list == NULL)
- {
- LOGE("[qser_data] apn_list param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_qser_apn_info_s apns[10] = {0};
- int apn_num = 10;
- int ret = mbtk_qser_apn_get(qser_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- if(ret == MBTK_INFO_ERR_NO_APN)
- {
- apn_list->cnt = 0;
- return QSER_RESULT_SUCCESS;
- }
- LOGE("[qser_data] mbtk_apn_get fail. [ret = %d]",ret);
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(apn_num > 0 && apn_num <= QSER_APN_MAX_LIST)
- {
- int i = 0;
- apn_list->cnt = 0;
- for(i = 0; i < apn_num; i++)
- {
- if(qser_apn_info_param_convert(apns[i].cid - 1, &apn_list->apn[apn_list->cnt], &apns[i]) != 0)
- {
- LOGE("[qser_data] qser_apn_info_param_convert fail");
- return QSER_RESULT_FAIL;
- }
- apn_list->cnt++;
- }
- }
- else if(apn_num > QSER_APN_MAX_LIST)
- {
- LOGE("[qser_data] apn_num overlong");
- return QSER_RESULT_FAIL;
- }
- else
- {
- apn_list->cnt = 0;
- }
- }
- return QSER_RESULT_SUCCESS;
-}
-/****************************API***************************************/
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_fota.c b/mbtk/liblynq_lib_v2/src/lynq_fota.c
deleted file mode 100755
index 1ac1b68..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_fota.c
+++ /dev/null
@@ -1,111 +0,0 @@
-#include "lynq-qser-fota.h"
-#include "mbtk_type.h"
-#include "mbtk_fota.h"
-
-
-char addr_buf[128]={0};
-int segment_size =0;
-
-
-int Process_flag = 0;
-
-
-int fota_cb(int status, int percent)
-{
-// printf("%d: percent: %d%%\n", percent/10, percent);
- Process_flag = percent/10;
- return 0;
-}
-
-int lynq_read_process(void)
-{
- return Process_flag;
-}
-
-int lynq_rock_main(int first_run)
-{
- UNUSED(first_run);
- printf("%s, %d", __FUNCTION__, __LINE__);
- int ret = 0;
-
- printf("addr_buf:%s, segment_size:%d\n", addr_buf, segment_size);
- ret = mbtk_fota_init(fota_cb);
- if(!strcmp(addr_buf, "http"))
- {
-
- ret = mbtk_fota_fw_write_by_url(addr_buf, segment_size,10, 600);
- }
- else
- {
- ret =mbtk_fota_fw_write(addr_buf, segment_size);
- }
-
- if(ret)
- {
- printf("lynq_rock_main fail\n");
- return -1;
- }
-
- mbtk_fota_done1(1);
-
-
- return 0;
-}
-
-int lynq_fota_set_addr_value(char *value,int size)
-{
- UNUSED(value);
- UNUSED(size);
- printf("111%s, %d", __FUNCTION__, __LINE__);
-
- if(value == NULL)
- {
- return -1;
- }
-
- memset(addr_buf, 0, sizeof(addr_buf));
- memcpy(addr_buf, value, strlen(value));
- segment_size = size;
-
- printf("addr_buf:%s, value:%s\n", addr_buf, value);
- printf("segment_size:%d, size:%d\n", segment_size, size);
-
- return 0;
-}
-
-int lynq_fota_nrestart(void)
-{
- printf("%s, %d", __FUNCTION__, __LINE__);
- int ret = 0;
-
- ret = mbtk_fota_init(fota_cb);
- if(!strcmp(addr_buf, "http"))
- {
- ret = mbtk_fota_fw_write_by_url(addr_buf, segment_size,10, 600);
- }
- else
- {
- ret =mbtk_fota_fw_write(addr_buf, segment_size);
- }
-
- if(ret)
- {
- printf("lynq_fota_nrestart fail\n");
- return -1;
- }
-
- return 0;
-}
-
-int lynq_get_upgrade_status(void)
-{
- printf("%s, %d", __FUNCTION__, __LINE__);
-
- return mbtk_fota_status();
-}
-
-int lynq_get_reboot_upgrade_status(void)
-{
- return mbtk_fota_get_asr_reboot_cnt_flag();
-}
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_gnss.c b/mbtk/liblynq_lib_v2/src/lynq_gnss.c
deleted file mode 100755
index 2bb1fc1..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_gnss.c
+++ /dev/null
@@ -1,485 +0,0 @@
-#include <time.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lynq_gnss.h"
-
-#define QSER_RESULT_SUCCESS 0
-#define QSER_RESULT_FAIL -1
-#define QSER_GNSS_TIMEOUT 5
-
-/**********************************VARIABLE***********************************/
-static bool inited = FALSE;
-static uint32_t qser_h_gnss = 0x5F6F7F8F;
-gnss_handler_func_t qser_gnss_callback = NULL;
-static time_t qser_gnss_time = 0;
-qser_agps_info qser_agps_info_save = {0};
-gnss_async_func_t qser_gnss_async_callback = NULL;
-
-extern long timezone;
-/**********************************VARIABLE***********************************/
-
-/**********************************FUNC***********************************/
-static void qser_gnss_async_set_cb(gnss_async_func_t cb)
-{
- qser_gnss_async_callback = cb;
-}
-
-static gnss_async_func_t qser_gnss_async_get_cb(void)
-{
- return qser_gnss_async_callback;
-}
-
-
-static time_t qser_get_timestamp(char *time)
-{
- char tmp_char[4] = {0};
- struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));
-
- memset(tmp_time, 0, sizeof(struct tm));
- memset(tmp_char, 0, sizeof(tmp_char));
- memcpy(tmp_char, &time[4], 2);
- tmp_time->tm_sec = atoi(tmp_char);
- memcpy(tmp_char, &time[2], 2);
- tmp_time->tm_min = atoi(tmp_char);
- memcpy(tmp_char, &time[0], 2);
- tmp_time->tm_hour = atoi(tmp_char);
- memcpy(tmp_char, &time[6], 2);
- tmp_time->tm_mday = atoi(tmp_char);
- memcpy(tmp_char, &time[8], 2);
- tmp_time->tm_mon = atoi(tmp_char) - 1;
- memcpy(tmp_char, &time[10], 2);
- tmp_time->tm_year = 100 + atoi(tmp_char);
-
- time_t _t = mktime(tmp_time);//按当地时区解析tmp_time
- //gnss_log("timestamp: %ld\n",_t);
- tzset(); // 自动设置本地时区
- _t = _t - timezone;
- //gnss_log("timestamp: %ld\n",_t);
-
- free(tmp_time);
- return _t;
-}
-
-static time_t qser_get_gnss_time_sec(const void *data, int data_len)
-{
- int i = 0, num = 0;
- const char *nmea = (const char *)data;
- char time[15] = {0};
- char *check_state = NULL;
-
- //$GNRMC,024142.000,A,3039.364421,N,10403.417935,E,0.051,0.00,030124,,E,A*00
- check_state = strstr(nmea, "RMC");
- if(check_state != NULL)
- {
- for(i = 0; i < data_len; i++)
- {
- if(check_state[i] == ',')
- {
- num++;
- i++;
- if(num == 1)//get time
- {
- if(check_state[i] >= '0' && check_state[i] <= '9')
- {
- memcpy(time, check_state + i, 6);
- LOGE("[qser_gnss] %s.", time);
- }
- else
- {
- qser_gnss_time = 0;
- return qser_gnss_time;
- }
- }
- else if(num == 9)//get date
- {
- if(check_state[i] >= '0' && check_state[i] <= '9')
- {
- memcpy(time + 6, check_state + i, 6);
- LOGE("[qser_gnss] %s.", time);
- break;
- }
- else
- {
- qser_gnss_time = 0;
- return qser_gnss_time;
- }
- }
- else if(num > 9)
- {
- qser_gnss_time = 0;
- return qser_gnss_time;
- }
- }
- }
-
- qser_gnss_time = qser_get_timestamp(time);
- }
-
- return qser_gnss_time;
-}
-
-static void* gnss_async_thread(void* arg)
-{
- qser_gnss_error_e state = QSER_GNSS_ERROR_SUCCESS;
- gnss_async_func_t cb = qser_gnss_async_get_cb();
- int ret = qser_Gnss_Start(qser_h_gnss);
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_gnss] gnss_async_thread() fail.");
- state = QSER_GNSS_ERROR_FAIL;
- }
-
- if(cb != NULL)
- {
- cb(state);
- }
- return NULL;
-}
-
-static void gnss_callback(uint32 ind_type, const void* data, uint32 data_len)
-{
- if(data == NULL || data_len <= 0)
- {
- LOGE("[qser_gnss] data is NULL.");
- return;
- }
-
- if(qser_gnss_callback == NULL)
- {
- //LOGE("[qser_gnss] qser_gnss_callback is NULL.");
- return;
- }
-
- if(ind_type == MBTK_GNSS_IND_LOCATION) {
- if(data_len != sizeof(mbtk_gnss_location_info_t))
- {
- LOGE("[qser_gnss] data size error");
- return;
- }
- mbtk_gnss_location_info_t *locl_info = (mbtk_gnss_location_info_t *)data;
- mopen_location_info_t qser_locl_info;
- memset(&qser_locl_info, 0x0, sizeof(mopen_location_info_t));
- qser_locl_info.latitude = locl_info->latitude;
- qser_locl_info.longitude = locl_info->longitude;
- qser_locl_info.altitude = locl_info->altitude;
- qser_locl_info.speed = locl_info->speed;
- qser_locl_info.bearing = locl_info->bearing;
- qser_locl_info.timestamp = locl_info->timestamp;
- qser_gnss_callback(NULL, E_MT_LOC_MSG_ID_LOCATION_INFO, (void *)(&qser_locl_info), NULL);
- } else if(ind_type == MBTK_GNSS_IND_NMEA) {
- mopen_gnss_nmea_info_t qser_nmea = {0};
- memset(&qser_nmea, 0x0, sizeof(mopen_gnss_nmea_info_t));
- qser_nmea.length = data_len;
- memcpy(qser_nmea.nmea, (char *)data, data_len);
- qser_nmea.timestamp = qser_get_gnss_time_sec(data, data_len);
- qser_gnss_callback(NULL, E_MT_LOC_MSG_ID_NMEA_INFO, (void *)(&qser_nmea), NULL);
- } else {
- printf("Unknown IND : %d\n", ind_type);
- }
-}
-
-
-/**********************************FUNC***********************************/
-
-/**********************************API***********************************/
-int qser_Gnss_Init (uint32_t *h_gnss)
-{
- //UNUSED(h_gnss);
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
-
- if(!inited)
- {
- ret = mbtk_gnss_init(gnss_callback);
- if(ret == GNSS_ERR_OK)
- {
- ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_NMEA, QSER_GNSS_TIMEOUT);
- if(ret == GNSS_ERR_OK)
- {
- inited = TRUE;
- }
- else
- {
- LOGE("[qser_gnss] init mbtk_gnss_ind_set() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- LOGE("[qser_gnss] mbtk_gnss_init() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- *h_gnss = qser_h_gnss;
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Deinit (uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
-
- if(inited)
- {
- ret = mbtk_gnss_deinit();
- if(ret == GNSS_ERR_OK)
- {
- inited = FALSE;
- }
- else
- {
- LOGE("[qser_gnss] mbtk_gnss_init() fail.");
- return QSER_RESULT_FAIL;
- }
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss)
-{
- //UNUSED(handler_ptr);
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(handler_ptr == NULL)
- {
- LOGE("[qser_gnss] handler_ptr is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- qser_gnss_callback = handler_ptr;
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type)
-{
- //UNUSED(h_gnss);
- //UNUSED(type);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_OK;
- if(type == E_MT_LOC_MSG_ID_LOCATION_INFO)
- {
- ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_LOCATION, QSER_GNSS_TIMEOUT);
- }
- else if(type == E_MT_LOC_MSG_ID_NMEA_INFO)
- {
- ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_NMEA, QSER_GNSS_TIMEOUT);
- }
- else
- {
- LOGE("[qser_gnss] type is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_ind_set() fail.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Set_Async_Callback(gnss_async_func_t cb)
-{
- qser_gnss_async_set_cb(cb);
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Start (uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
-
- ret = mbtk_gnss_open(255, QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_open is error.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Start_Async(uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- pthread_attr_t thread_attr;
- pthread_t gnss_thread_id;
- pthread_attr_init(&thread_attr);
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("[qser_gnss] pthread_attr_setdetachstate() fail.");
- return QSER_RESULT_FAIL;
- }
-
- //memcpy(&qser_data_backup, data_call, sizeof(qser_data_call_s));
- if(pthread_create(&gnss_thread_id, &thread_attr, gnss_async_thread, NULL))
- {
- LOGE("[qser_gnss] pthread_create() fail.");
- return QSER_RESULT_FAIL;
- }
- pthread_attr_destroy(&thread_attr);
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Stop (uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- ret = mbtk_gnss_close(QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_close is error.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
-{
- //UNUSED(h_gnss);
- UNUSED(time_info);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
-{
- //UNUSED(h_gnss);
- //UNUSED(flags);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Server_Configuration(char *host, char *id, char *password)
-{
- //UNUSED(host);
- //UNUSED(id);
- //UNUSED(password);
-
- if(!inited)
- {
- LOGE("[qser_gnss] api not init.");
- return QSER_RESULT_FAIL;
- }
-
- if(host != NULL)
- {
- memcpy(qser_agps_info_save.host, host, QSER_LEN_MAX);
- }
-
- if(id != NULL)
- {
- memcpy(qser_agps_info_save.id, id, QSER_LEN_MAX);
- }
-
- if(password != NULL)
- {
- memcpy(qser_agps_info_save.passwd, password, QSER_LEN_MAX);
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_download_tle()
-{
- if(!inited)
- {
- LOGE("[qser_gnss] api not init.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_injectEphemeris(uint32_t h_gnss)
-{
- //UNUSED(h_gnss);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency)
-{
- //UNUSED(h_gnss);
- //UNUSED(frequency);
-
- if(h_gnss != qser_h_gnss)
- {
- LOGE("[qser_gnss] h_gnss is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(frequency != 1 && frequency != 2 && frequency != 5)
- {
- LOGE("[qser_gnss] frequency out of range.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- char param_buf[32] = {0};
- int length = 0;
- length = snprintf(param_buf, 32, "$FREQCFG,%d", frequency);
- ret = mbtk_gnss_setting(param_buf, QSER_GNSS_TIMEOUT);
- if(ret != GNSS_ERR_OK)
- {
- LOGE("[qser_gnss] mbtk_gnss_setting fail.");
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-/**********************************API***********************************/
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_gpio.c b/mbtk/liblynq_lib_v2/src/lynq_gpio.c
deleted file mode 100755
index 4dcd694..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_gpio.c
+++ /dev/null
@@ -1,339 +0,0 @@
-#include "mbtk_type.h"
-#include "lynq-gpio.h"
-#include "unistd.h"
-#include "fcntl.h"
-#include "mbtk_log.h"
-
-#include <errno.h>
-static int gpio_export(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
-
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == 0)
- {
- LOGD("%d has export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/export",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio export file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result = write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- LOGE("Gpio[%d] export fail. err = %d", gpio, errno);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_unexport(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == -1)
- {
- LOGD("%d not export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/unexport",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio unexport file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result=write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- close(file);
- LOGE("Gpio[%d] unexport fail.", gpio);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_direct_get(int gpio, char *value, int value_size)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- memset(value, 0x0, value_size);
- result = read(file,value,value_size);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-
-static int gpio_direct_set(int gpio, char *value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- result = write(file,value,strlen(value));
- if(result != strlen(value))
- {
- LOGE("Set gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_value_get(int gpio)
-{
- char buffer[50];
- char path[10];
- int file =-1;
- int result =-1;
- int value;
-
- memset(path,0,50);
- memset(buffer,0,10);
- sprintf(path,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(path,O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] fail.", gpio);
- return -1;
- }
- result = read(file,buffer,5);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] value fail", gpio);
- close(file);
- return -1;
- }
- close(file);
- value = atoi(buffer);
- return value;
-}
-
-static int gpio_value_set(int gpio, int value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(buffer,O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] value fail.", gpio);
- return -1;
- }
- if(value == 0) {
- result = write(file,"0",1);
- } else {
- result = write(file,"1",1);
- }
- if(result != 1)
- {
- LOGE("Set gpio[%d] value fail err =%d.", gpio, errno);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-
-int lynq_gpio_init(int gpio, int direction, int value, int pullsel)
-{
- //UNUSED(gpio);
- //UNUSED(direction);
- //UNUSED(value);
- UNUSED(pullsel);
-
- if (direction != 1 && direction != 0)
- {
- LOGE("[lynq_gpio_init] direction fail.");
- return -1;
- }
-
- if (value != 1 && value != 0)
- {
- LOGE("[lynq_gpio_init] value fail.");
- return -1;
- }
-
- if(gpio_export(gpio))
- {
- LOGE("[lynq_gpio_init]gpio_export fail.");
- return -1;
- }
-
- if(gpio_direct_set(gpio, direction == 0 ? "in" : "out"))
- {
- LOGE("[lynq_gpio_init]gpio_direct_set fail.");
- return -1;
- }
-
- if(direction == 1 && (gpio_value_set(gpio, value) != 0))
- {
- LOGE("[lynq_gpio_init]gpio_value_set fail.");
- return -1;
- }
-
-
- return 0;
-}
-
-int lynq_gpio_deinit(int gpio)
-{
- UNUSED(gpio);
-
- if(gpio_unexport(gpio))
- {
- LOGE("[lynq_gpio_deinit]gpio_unexport fail.");
- return -1;
- }
-
- return 0;
-}
-
-int lynq_gpio_direction_set(int gpio, int direction)
-{
- //UNUSED(gpio);
- //UNUSED(direction);
-
- if(gpio_direct_set(gpio, direction == 0 ? "in" : "out"))
- {
- LOGE("[lynq_gpio_direction_set]gpio_direct_set fail.");
- return -1;
- }
-
- return 0;
-}
-
-
-int lynq_gpio_value_set(int gpio, int value)
-{
- //UNUSED(gpio);
- //UNUSED(value);
-
- if(gpio_value_set(gpio, value))
- {
- LOGE("[lynq_gpio_value_set]gpio_value_set fail.");
- return -1;
- }
-
- return 0;
-}
-
-int lynq_gpio_value_get(int gpio)
-{
- //UNUSED(gpio);
- int ret = -1;
-
- ret = gpio_value_get(gpio);
- if (ret == -1)
- {
- LOGE("[lynq_gpio_value_get]gpio_value_get fail.");
- return -1;
- }
-
- return ret;
-}
-
-int lynq_gpio_pullsel_set(int gpio, int pullsel)
-{
- //UNUSED(gpio);
- //UNUSED(pullsel);
- int ret = -1;
- int value_t;
-
- if (pullsel == 1)
- value_t = 0;
- else if (pullsel == 2)
- value_t = 1;
- else
- {
- LOGE("[lynq_gpio_pullsel_set] value_t fail.");
- return -1;
- }
-
- ret = gpio_value_set(gpio, value_t);
- if(ret == -1)
- {
- LOGE("[lynq_gpio_pullsel_set]gpio_value_set() fail.");
- return -1;
- }
-
- return ret;
-}
-
-
-int lynq_gpio_pullsel_get(int gpio)
-{
- //UNUSED(gpio);
- int ret = -1;
-
- ret = gpio_value_get(gpio);
- if (ret == -1)
- {
- LOGE("[lynq_gpio_pullsel_get]gpio_value_get() fail.");
- return -1;
- }
-
- return ret + 1;
-}
-
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_irq.c b/mbtk/liblynq_lib_v2/src/lynq_irq.c
deleted file mode 100755
index c6050ae..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_irq.c
+++ /dev/null
@@ -1,498 +0,0 @@
-#include "lynq-irq.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-#include "mbtk_log.h"
-
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-
-#define _GNU_SOURCE
-
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <poll.h>
-
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <sys/sysmacros.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-
-struct libirq_info {
- unsigned int line;
- unsigned int type;
- int wake;
- int fd;
- irq_handler handler;
- unsigned int used;
-};
-
-struct libirq_context {
- unsigned int inited;
- int fd;
- pthread_t th;
- struct libirq_info info[SC_LIBIRQ_MAX];
-};
-static struct libirq_context irq_ctx = {0};
-
-#define irq_init() irq_ctx.inited
-#define line_used(l) irq_ctx.info[l].used
-#define irq_fd(l) irq_ctx.info[l].fd
-#define libirq_fd() irq_ctx.fd
-
-static void *libirq_loop(void *arg)
-{
- unsigned int int_status = 0;
- int fd = libirq_fd();
- int ret = 0;
- int i;
-
- while(1) {
- ret = ioctl(fd, SC_IRQ_GET_STATUS, &int_status);
- if (ret < 0) {
- LOGE("libirq_loop get status failed:%d", ret);
- } else {
-/* printf("libirq_loop get status :0x%x\n", int_status); */
- }
-
- for (i=0; i<SC_LIBIRQ_MAX; i++) {
- if ((int_status & (1<<i)) && line_used(i) && irq_ctx.info[i].handler) {
- irq_ctx.info[i].handler();
-
- ret = ioctl(fd, SC_IRQ_CLEAR_STATUS, 0);
- if (ret < 0) {
- LOGE("libirq_loop clear status failed:%d", ret);
- }
- }
- }
- }
-
- return NULL;
-}
-
-static int libirq_init_thread(void)
-{
- int ret = 0;
- pthread_attr_t attribute;
-
- pthread_attr_init(&attribute);
- pthread_attr_setstacksize(&attribute, 32*1024);
-
- ret = pthread_create(&irq_ctx.th, &attribute, libirq_loop, NULL);
- if(ret) {
- return ret;
- }
-
- return 0;
-}
-
-/*
- * Add a handler for an interrupt line.
- *
- * line : The interrupt line
- * handler : Function to be called when the IRQ occurs.
- * trig_type : rising edge or fallling edge
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_install(unsigned int line, irq_handler handler, int trig_type)
-{
- int fd;
- struct libirq_info *info;
- char *usr_name;
- int ret = 0;
-
- if ((line >= SC_LIBIRQ_MAX) || (handler == NULL) || (trig_type >= SC_LIBIRQ_TYPE_MAX))
- return -EINVAL;
-
- if (line_used(line))
- return -EEXIST;
-
- ret = asprintf(&usr_name, "%s%d", SC_IRQ_DEV, line);
- if (ret < 0) {
- return -ENOMEM;
- }
-
- fd = open(usr_name, O_RDWR);
- if(fd < 0) {
- free(usr_name);
- return -ENODEV;
- }
- irq_fd(line) = fd;
- free(usr_name);
- info = &irq_ctx.info[line];
- info->line = line;
- info->type = trig_type;
- info->handler = handler;
-
- if (ioctl(fd, SC_IRQ_INSTALL, trig_type) < 0) {
- return -EPERM;
- }
-
- line_used(line) = 1;
-
- if (!irq_init()) {
- ret = libirq_init_thread();
- if (ret) {
- LOGE("libirq_init_thread, err:%d", ret);
- return ret;
- }
-
- libirq_fd() = fd;
- irq_init() = 1;
- }
-
- return 0;
-}
-
-/*
- * free an interrupt allocated with sc_irq_install.
- *
- * line : The interrupt line
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_uninstall(unsigned int line)
-{
- int fd;
-
- if (line >= SC_LIBIRQ_MAX)
- return -EINVAL;
-
- if (!line_used(line))
- return -ENODEV;
-
- if (ioctl(irq_fd(line), SC_IRQ_UNINSTALL, 0) < 0) {
- return -EPERM;
- }
-
- fd = libirq_fd();
- if (fd)
- close(fd);
-
- line_used(line) = 0;
-
- return 0;
-}
-
-/*
- * set the irq trigger type for an irq.
- *
- * line : The interrupt line
- * trig_type : edge or level type
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_set_type(unsigned int line, int trig_type)
-{
- struct libirq_info *info;
-
- if ((line >= SC_LIBIRQ_MAX) || (trig_type >= SC_LIBIRQ_TYPE_MAX))
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- info = &irq_ctx.info[line];
- if (info->type != trig_type) {
- if (ioctl(irq_fd(line), SC_IRQ_SET_TYPE, trig_type) < 0) {
- return -EPERM;
- }
- }
-
- info->type = trig_type;
-
- return 0;
-}
-
-/*
- * get the irq trigger type for an irq.
- *
- * line : The interrupt line
- * trig_type : edge or level type
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_get_type(unsigned int line, int *trig_type)
-{
- struct libirq_info *info;
-
- if ((line >= SC_LIBIRQ_MAX) || !trig_type)
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- info = &irq_ctx.info[line];
- *trig_type = info->type;
-
- return 0;
-}
-
-/*
- * control irq power management wakeup.
- *
- * line : The interrupt line
- * en : enable/disable power management wakeup
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_set_wake(unsigned int line, int en)
-{
- struct libirq_info *info;
-
- if (line >= SC_LIBIRQ_MAX)
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- info = &irq_ctx.info[line];
- if (info->wake != en) {
- if (ioctl(irq_fd(line), SC_IRQ_SET_WAKE, en) < 0) {
- return -EPERM;
- }
- }
-
- info->wake = en;
-
- return 0;
-}
-
-/*
- * get the irq awake status for an irq.
- *
- * line : The interrupt line
- * en : enable/disable power management wakeup
- *
- * return 0 if succeed, others failed
- */
-int sc_irq_get_wake(unsigned int line, int *en)
-{
- struct libirq_info *info;
- unsigned int wake;
-
- if (line >= SC_LIBIRQ_MAX)
- return -EINVAL;
-
- if (!line_used(line))
- return -EEXIST;
-
- if (ioctl(irq_fd(line), SC_IRQ_GET_WAKE, &wake) < 0) {
- return -EPERM;
- }
-
- info = &irq_ctx.info[line];
- info->wake = wake;
- *en = wake;
-
- return 0;
-}
-
-
-
-
-/*****************************************
-* @brief:lynq_irq_install
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-
-int lynq_irq_install(int line, irq_handler irq_test_handler, trig_type_e trig_type)
-{
- int ret;
- if(trig_type < 0)
- {
- return -1;
- }
-#if defined(MBTK_PROJECT_T108)
-
- if (trig_type != 0 && trig_type != 1)
- {
- LOGE("lynq_irq_install error trig_type:%d", trig_type);
- return -1;
- }
-
- line = line-117;
-
- if (line < 0)
- {
- LOGE("lynq_irq_install error line:%d", line);
- return -1;
- }
-
-#endif
-
- ret = sc_irq_install(line, irq_test_handler, trig_type);
- if (ret != 0)
- {
- LOGE("do_install_irq failed, ret:%d", ret);
- return ret;
- }
- return 0;
-}
-
-
-/*****************************************
-* @brief:lynq_irq_uninstall
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-
-int lynq_irq_uninstall(int line)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- ret = sc_irq_uninstall(line);
- if (ret != 0)
- {
- LOGE("unistall failed, ret:%d", ret);
- return ret;
- }
- LOGI("uninstall irq(%d) ok", line);
- return 0;
-}
-
-
-/*****************************************
-* @brief:lynq_irq_set_type
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_set_type(int line, int trig_type)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-
- if (trig_type != 0 && trig_type != 1)
- {
- LOGE("lynq_irq_set_type error trig_type:%d", trig_type);
- return -1;
- }
-#endif
-
- int ret;
- if(trig_type < 0)
- {
- return -1;
- }
- ret = sc_irq_set_type(line, trig_type);
- if (ret != 0)
- {
- LOGE("set_type failed, ret:%d", ret);
- return ret;
- }
- return 0;
-
-}
-
-/*****************************************
-* @brief:lynq_irq_get_type
-* @param count [IN]:1
-* @param sum [OUT]:NA
-* @return :success >= 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_get_type(int line)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- int trig_type;
- ret = sc_irq_get_type(line, &trig_type);
- if (ret != 0)
- {
- LOGE("get_type failed, ret:%d", ret);
- return ret;
- }
- LOGI("get_type readback(%d)", trig_type);
- return trig_type;
-}
-
-
-/*****************************************
-* @brief:lynq_irq_set_wake
-* @param count [IN]:2
-* @param sum [OUT]:NA
-* @return :success 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_set_wake(int line, int en)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- if((en != 0) && (en != 1))
- {
- LOGE("wake_state is not 0 or 1");
- return -1;
- }
-
- ret = sc_irq_set_wake(line, en);
- if (ret != 0)
- {
- LOGE("set_wake failed, ret:%d", ret);
- return ret;
- }
- return 0;
-}
-
-/*****************************************
-* @brief:lynq_irq_get_wake
-* @param count [IN]:1
-* @param sum [OUT]:NA
-* @return :success >= 0, failed other
-* @todo:NA
-* @see:NA
-* @warning:NA
-******************************************/
-int lynq_irq_get_wake(int line)
-{
-#if defined(MBTK_PROJECT_T108)
- line = line-117;
-#endif
-
- int ret;
- int en;
- ret = sc_irq_get_wake(line, &en);
- if (ret != 0)
- {
- LOGE("get_wake failed, ret:%d", ret);
- return ret;
- }
-
- LOGI("get_wake readback(%d)", en);
- return en;
-}
-
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_log.c b/mbtk/liblynq_lib_v2/src/lynq_log.c
deleted file mode 100755
index 3dbb33b..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_log.c
+++ /dev/null
@@ -1,499 +0,0 @@
-#include <stdarg.h>
-#include <sys/un.h>
-#include <sys/socket.h>
-#include "json-c/json.h"
-#include "lynq_deflog.h"
-#include "mbtk_type.h"
-
-#define LOG_CONFIG_PATH "/etc/mbtk/mbtk_log.json"
-#define SYSLOG_PATCH "syslog"
-#define SYSLOG_NAME "syslog"
-#define SYSLOG_INDEX 0
-
-void lynq_log_configuration_init(const char *log_name)
-{
- //UNUSED(log_name);
- mbtk_log_init(SYSLOG_PATCH, log_name);
-}
-
-void lynq_log_global_output(log_level_enum Level,const char *format,...)
-{
- va_list args;
- va_start(args,format);
- mbtk_log(Level, format, args);
- va_end(args);
-}
-
-const char* lynq_read_log_version()
-{
- return "LOG-V1.0";
-}
-
-int lynq_syslog_set_file_size(int value)
-{
-// UNUSED(value);
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- if(value < 1)
- {
- value = 1;
- }
- else if(value > 100)
- {
- value = 100;
- }
- value = value*1024;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- system("echo Can't open config file > /dev/console");
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- printf("NULL == datajson\n");
- system("echo NULL == datajson > /dev/console");
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- printf("SYSLOG_NAME error, tmp_int != 1\n");
- system("echo SYSLOG_NAME error, tmp_int != 1 > /dev/console");
- return -1;
- }
-
- json_object_object_add(datajson, "rotate_file_size", json_object_new_int(value));
-
- /***释放json对象***/
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return 0;
-}
-
-int lynq_syslog_get_file_size(void)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "rotate_file_size", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- /***释放json对象***/
- json_object_put(jsonobj);
-
- return tmp_int/1024;
-// return tmp_int;
-}
-
-int lynq_syslog_set_file_rotate(int value)
-{
- //UNUSED(value);
-
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- if(value < 0)
- {
- value = 0;
- }
- else if(value > 99)
- {
- value = 99;
- }
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_add(datajson, "rotate_file_count", json_object_new_int(value));
-
- /***释放json对象***/
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return 0;
-}
-
-int lynq_syslog_get_file_rotate(void)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
-
- int tmp_int;
- char* tmp_string = NULL;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "name", &listjson);
- tmp_string = json_object_get_string(listjson);
-
- json_object_object_get_ex(datajson, "enable", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- if(strcmp(tmp_string, SYSLOG_NAME) != 0 || tmp_int != 1)
- {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "rotate_file_count", &listjson);
- tmp_int = json_object_get_int(listjson);
-
- /***释放json对象***/
- json_object_put(jsonobj);
-
- return tmp_int;
-}
-
-log_level_enum filter_char_to_pri(char c)
-{
- switch (c) {
- case 'v':
- return LOG_VERBOSE;
- case 'd':
- return LOG_DEBUG;
- case 'i':
- return LOG_INFO;
- case 'w':
- return LOG_WARNING;
- case 'e':
- return LOG_ERROR;
- case '*':
- default:
- return LOG_LEVEL_MAX;
- }
-}
-
-char filter_pri_to_char(log_level_enum level)
-{
- char char_level;
- switch (level) {
- case LOG_VERBOSE:
- char_level = 'v';
- break;
- case LOG_DEBUG:
- char_level = 'd';
- break;
- case LOG_INFO:
- char_level = 'i';
- break;
- case LOG_WARNING:
- char_level = 'w';
- break;
- case LOG_ERROR:
- char_level = 'e';
- break;
- case LOG_LEVEL_MAX:
- default:
- char_level = '*';
- break;
- }
- return char_level;
-}
-
-int lynq_set_log_level(const char * module_name, log_level_enum level)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
- json_object* fileterjson = NULL;
- json_object* fileter_listjson = NULL;
- json_object* new_fileter = NULL;
-
- int n = 0, array_length = 0;
- char* tmp_string = NULL;
- char level_string[5] = {'\0'};
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "filter_list", &listjson);
- if (NULL == listjson) {
- printf("%s %d: object failure!\n", __FUNCTION__, __LINE__);
- json_object_put(listjson);
- return -1;
- }
- array_length = json_object_array_length(listjson);
- for (n = 0; n <= array_length; n++) {
- fileterjson = json_object_array_get_idx(listjson, n);
- if (NULL == fileterjson) {
- new_fileter = json_object_new_object();
- sprintf(level_string, "%c", filter_pri_to_char(level));
- json_object_object_add(new_fileter, "priority", json_object_new_string(level_string));
- json_object_object_add(new_fileter, "tag", json_object_new_string(module_name));
- json_object_array_add(listjson, new_fileter);
- break;
- }
-
- json_object_object_get_ex(fileterjson, "tag", &fileter_listjson);
- char *str = json_object_get_string(fileter_listjson);
- if (str) {
- tmp_string = strdup(str);
- if(strcmp(module_name, tmp_string) == 0)
- {
- sprintf(level_string, "%c", filter_pri_to_char(level));
- json_object_object_add(fileterjson, "priority", json_object_new_string(level_string));
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
- return 0;
- }
- }
- else
- {
- continue;
- }
- }
- /***释放json对象***/
- json_object_to_file(LOG_CONFIG_PATH, jsonobj);
- json_object_put(jsonobj);
-
- return 0;
-}
-
-int lynq_get_log_level(const char * module_name, log_level_enum *level)
-{
- json_object* jsonobj = NULL;
- json_object* tmpjson = NULL;
- json_object* datajson = NULL;
- json_object* listjson = NULL;
- json_object* fileterjson = NULL;
- json_object* fileter_listjson = NULL;
-
- int n;
- char* tmp_string = NULL;
-
- jsonobj = json_object_from_file(LOG_CONFIG_PATH);
- if (NULL == jsonobj) {
- printf("Can't open config file: %s\n", LOG_CONFIG_PATH);
- return -1;
- }
- /***获取data***/
- json_object_object_get_ex(jsonobj, "buffer_list", &tmpjson);
- datajson = json_object_array_get_idx(tmpjson, SYSLOG_INDEX);
- if (NULL == datajson) {
- json_object_put(jsonobj);
- return -1;
- }
-
- json_object_object_get_ex(datajson, "filter_list", &listjson);
- if (NULL == listjson) {
- printf("%s %d: object failure!\n", __FUNCTION__, __LINE__);
- json_object_put(listjson);
- return -1;
- }
-
- for (n = 0 ; n < 5; n++) {
- fileterjson = json_object_array_get_idx(listjson, n);
- if (NULL == fileterjson) {
- printf("the fileterjson exit\n");
- break;
- }
-
- json_object_object_get_ex(fileterjson, "tag", &fileter_listjson);
- char *str = json_object_get_string(fileter_listjson);
- if (str) {
- tmp_string = strdup(str);
- printf("tag is %s\n", tmp_string);
- if(strcmp(module_name, tmp_string) == 0)
- {
- json_object_object_get_ex(fileterjson, "priority", &fileter_listjson);
- str = json_object_get_string(fileter_listjson);
- if (str) {
- tmp_string = str[0];
- printf("fileter_listjson: %c\n", tmp_string);
- *level = filter_char_to_pri(tmp_string);
- //get the log level
- json_object_put(jsonobj);
- return 0;
- }
- else
- {
- break;
- }
- }
- }
- else
- {
- continue;
- }
- }
- *level = LOG_UNSET;
- /***释放json对象***/
- json_object_put(jsonobj);
-
- return 0;
-}
-
-int lynq_set_special_log_level(const char * exe_name, const char * module_name, log_level_enum level)
-{
- UNUSED(exe_name);
- UNUSED(module_name);
- UNUSED(level);
-
-
- return 0;
-}
-
-int lynq_get_special_log_level(const char * exe_name, const char * module_name, log_level_enum *level)
-{
- UNUSED(exe_name);
- UNUSED(module_name);
- UNUSED(level);
-
-
- return 0;
-}
-
-int lynq_notify_recalc_log_level(pid_t pid)
-{
- UNUSED(pid);
- char sendBuff[100]={'\0'};
- int serverFd,clientFd,addrLen,nwrite,nread;
- struct sockaddr_un serverAddr,clientAddr;
-
- unlink("/var/log_client.socket"); /* in case it already exists */
-
- memset(&clientAddr,0,sizeof(clientAddr));
- memset(&serverAddr,0,sizeof(serverAddr));
- clientAddr.sun_family = AF_UNIX;
- sprintf(clientAddr.sun_path,"%s","/var/log_client.socket");
-
- if ((clientFd = socket(AF_UNIX,SOCK_STREAM,0)) < 0)
- {
- printf("err -1\n");
- return -1;
- }
-
- if (bind(clientFd, (struct sockaddr *)&clientAddr, sizeof(clientAddr)) < 0)
- {
- printf("err -2\n");
- close(clientFd);
- return -2;
- }
-
- serverAddr.sun_family = AF_UNIX;
- sprintf(serverAddr.sun_path, "/var/log_server.socket");
- if (connect(clientFd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0)
- {
- printf("err -3\n");
- close(clientFd);
- return -3;
- }
-
- sprintf(sendBuff,"%s","update");
- if ((nwrite = write(clientFd, sendBuff, 100)) < 0)
- {
- printf("err -4\n");
- close(clientFd);
- return -4;
- }
-
- close(clientFd);
- return 0;
-}
-
-void lynq_lib_info_print()
-{
- MBTK_SOURCE_INFO_PRINT("lynq_lib");
-}
\ No newline at end of file
diff --git a/mbtk/liblynq_lib_v2/src/lynq_net_light.c b/mbtk/liblynq_lib_v2/src/lynq_net_light.c
deleted file mode 100755
index ee84b71..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_net_light.c
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "lynq_led.h"
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "mbtk_info_api.h"
-
-/****************************DEFINE***************************************/
-#define QSER_RESULT_FAIL -1
-#define QSER_RESULT_SUCCESS 0
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-extern mbtk_info_handle_t* qser_info_handle;
-extern int qser_info_handle_num;
-/****************************VARIABLE***************************************/
-
-
-/******************************FUNC*****************************************/
-static int qser_led_client_init(void)
-{
- if(qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- }
- else
- {
- LOGE("[qser_led] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- qser_info_handle_num++;
- }
-
- LOGE("[qser_led] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-static int qser_led_client_deinit(void)
-{
- if(qser_info_handle)
- {
- LOGE("[qser_led] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_led] mbtk_info_handle_free() fail.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- }
- }
- else
- {
- qser_info_handle_num--;
- }
- }
- else
- {
- LOGE("[qser_led] handle not inited.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int lynq_set_netled_on(int led_mode)
-{
- //UNUSED(led_mode);
-
- if(led_mode != 0 && led_mode != 1)
- {
- LOGE("[qser_led]param is fail.");
- return QSER_RESULT_FAIL;
- }
-
-
- int ret = qser_led_client_init();
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_led]qser_led_client_init fail.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_led_set(qser_info_handle, MBTK_LED_TYPE_NET, led_mode);
- if(ret != 0)
- {
- LOGE("[qser_led]mbtk_led_gpio_init fail.");
- qser_led_client_init();
- return QSER_RESULT_FAIL;
- }
-
- ret = qser_led_client_init();
-
- return QSER_RESULT_SUCCESS;
-}
-
-int lynq_set_statusled_on(int led_mode)
-{
- //UNUSED(led_mode);
-
- if(led_mode != 0 && led_mode != 1)
- {
- LOGE("[qser_led]param is fail.");
- return QSER_RESULT_FAIL;
- }
-
- int ret = qser_led_client_init();
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_led]qser_led_client_init fail.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_led_set(qser_info_handle, MBTK_LED_TYPE_STATUS, led_mode);
- if(ret != 0)
- {
- LOGE("[qser_led]mbtk_led_gpio_init fail.");
- qser_led_client_init();
- return QSER_RESULT_FAIL;
- }
-
- ret = qser_led_client_init();
-
- return QSER_RESULT_SUCCESS;
-}
-/****************************API***************************************/
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_network.c b/mbtk/liblynq_lib_v2/src/lynq_network.c
deleted file mode 100755
index be3816e..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_network.c
+++ /dev/null
@@ -1,1225 +0,0 @@
-#include "lynq_qser_network.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-#include "mbtk_log.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-mbtk_info_handle_t* lynq_nw_info_handle = NULL;
-uint64_t tmp_mode = 0xFF;
-
-nw_client_handle_type g_nw_val = -1;
-
-typedef struct
-{
- QSER_NW_RxMsgHandlerFunc_t handlerPtr;
- void* contextPtr;
-} lynq_cust_cb_func;
-
-static lynq_cust_cb_func lynq_func_cb_handle;
-
-static int roaming_pref = 1; // Open roaming for default.
-
-typedef enum {
- RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
- RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
-} RIL_RadioTechnologyFamily;
-
-
-typedef struct
-{
- uint8 *lynq_operator_l;
- uint8 *lynq_operator_s;
- uint32 lynq_mcc_mnc;
-} lynq_operator_mcc_mnc_t;
-
-static lynq_operator_mcc_mnc_t lynq_operator_mcc_mnc[] =
-{
- {"China Mobile","CMCC",46000},
- {"China Unicom","CU",46001},
- {"China Mobile","CMCC",46002},
- {"China Telecom","CT",46003},
- {"China Mobile","CMCC",46004},
- {"China Telecom","CT",46005},
- {"China Unicom","CU",46006},
- {"China Mobile","CMCC",46007},
- {"China Mobile","CMCC",46008},
- {"China Unicom","CU",46009},
- {"China Telecom","CT",46011}
-};
-
-#if 0
-//T106的实现
-/*Used to wait for an update signal*/
-int lynq_wait_signalchanges(int *handle)
-{
- LYDBGLOG("start wait signalchanges info");
- if(NULL == handle)
- {
- LYERRLOG("illegal input");
- return LYNQ_E_PARAMETER_ANONALY;
- }
- wait_urc_signal_changes();
- LYDBGLOG("get signalchanges");
- *handle = s_module_wait_urc_id;
- return RESULT_OK;
-}
-
-bool is_support_urc(int urc_id)
-{
- switch(urc_id)
- {
- case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
- case RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
- case RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED:
- case RIL_UNSOL_SIGNAL_STRENGTH:
- return true;
- default:
- return false;
- }
-}
-
-/*Used to get urc info*/
-int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id)
-{
- if(g_module_init_flag != MODULE_RUNNING)
- {
- LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
- return -1;
- }
- LYDBGLOG("start get urc info");
- if(is_support_urc(handle)==false)
- {
- LYINFLOG("invalid handle!!!");
- return -1;
- }
- if((handle ==RIL_UNSOL_SIGNAL_STRENGTH && NULL == solSigStren) ||
- (handle !=RIL_UNSOL_SIGNAL_STRENGTH && NULL == slot_id))
- {
- LYINFLOG("incoming solSigStren or slot_id is NULL!!!");
- return -1;
- }
- switch(handle)
- {
- case RIL_UNSOL_SIGNAL_STRENGTH: //1009
- {
- LYDBGLOG("get state update to signal info");
- solSigStren->gw_sig_valid = s_network_urc_solSigStren.gw_sig_valid;
- solSigStren->rssi = s_network_urc_solSigStren.rssi;
- solSigStren->wcdma_signalstrength = s_network_urc_solSigStren.wcdma_signalstrength;
- solSigStren->wcdma_sig_valid = s_network_urc_solSigStren.wcdma_sig_valid;
- solSigStren->rscp = s_network_urc_solSigStren.rscp;
- solSigStren->ecno = s_network_urc_solSigStren.ecno;
- solSigStren->lte_signalstrength = s_network_urc_solSigStren.lte_signalstrength;
- solSigStren->lte_sig_valid = s_network_urc_solSigStren.lte_sig_valid;
- solSigStren->rsrp = s_network_urc_solSigStren.rsrp;
- solSigStren->rsrq = s_network_urc_solSigStren.rsrq;
- solSigStren->rssnr = s_network_urc_solSigStren.rssnr;
- solSigStren->nr_sig_valid = s_network_urc_solSigStren.nr_sig_valid;
- solSigStren->ssRsrp = s_network_urc_solSigStren.ssRsrp;
- solSigStren->ssRsrq = s_network_urc_solSigStren.ssRsrq;
- solSigStren->ssSinr = s_network_urc_solSigStren.ssSinr;
- solSigStren->csiRsrp = s_network_urc_solSigStren.csiRsrp;
- solSigStren->csiRsrq = s_network_urc_solSigStren.csiRsrq;
- solSigStren->csiSinr = s_network_urc_solSigStren.csiSinr;
- break;
- }
- default:
- {
- *slot_id = s_module_urc_slot_id;
- LYINFLOG("slot_id = %d",s_module_urc_slot_id);
- }
- }
- return 0;
-}
-
-
-void urc_msg_process_voice_reg()
-{
- if(s_handlerPtr != NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_VOICE_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
- }
-}
-
-void urc_msg_process_data_reg()
-{
- if(s_handlerPtr != NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_DATA_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
- }
-}
-
-void urc_msg_process_ims_reg()
-{
- if(s_handlerPtr != NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_IMS_REG_EVENT_IND_FLAG,NULL,0,s_contextPtr);
- }
-}
-
-void *new_network_thread_recv(void *context)
-{
- int handle = -1;
- uint32_t ind_flag = 0;
-
- while (1)
- {
- lynq_wait_signalchanges(&handle);
-
- switch(handle)
- {
- case 1002: //RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
- {
- urc_msg_process_voice_reg();
-
- break;
- }
- case 3015://RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
- {
- urc_msg_process_data_reg();
- break;
- }
- case 1009://RIL_UNSOL_SIGNAL_STRENGTH:
- {
- urc_msg_process_signal_strength();
- break;
- }
- case 1037://RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED:
- {
- urc_msg_process_ims_reg();
- break;
- }
- }
- }
- return NULL;
-}
-
-void urc_msg_process_signal_strength()
-{
- signalStrength_t signalstrength;
- int slot_id;
-
- int ret = lynq_get_urc_info(1009,&signalstrength,&slot_id);
- if (ret == 0)
- {
- QSER_NW_SINGNAL_EVENT_IND_T msg_buf;
- msg_buf.gsm_sig_info_valid = signalstrength.gw_sig_valid;
- msg_buf.gsm_sig_info.rssi = signalstrength.rssi;
- msg_buf.wcdma_sig_info_valid = signalstrength.wcdma_sig_valid;
- msg_buf.wcdma_sig_info.rssi = signalstrength.rscp;
- msg_buf.wcdma_sig_info.ecio = signalstrength.ecno;
- msg_buf.tdscdma_sig_info_valid = 0;
- msg_buf.lte_sig_info_valid = signalstrength.lte_sig_valid;
- msg_buf.lte_sig_info.rssi = -125;
- msg_buf.lte_sig_info.rsrp = signalstrength.rsrp;
- msg_buf.lte_sig_info.rsrq = signalstrength.rsrq;
- msg_buf.lte_sig_info.snr = signalstrength.rssnr;
- msg_buf.cdma_sig_info_valid = 0;
- msg_buf.hdr_sig_info_valid = 0;
- msg_buf.nr_sig_info_valid = signalstrength.nr_sig_valid;
- msg_buf.nr_sig_info.ssRsrp = signalstrength.ssRsrp;
- msg_buf.nr_sig_info.ssRsrq = signalstrength.ssRsrq;
- msg_buf.nr_sig_info.ssSinr = signalstrength.ssSinr;
- msg_buf.nr_sig_info.csiRsrp = signalstrength.csiRsrp;
- msg_buf.nr_sig_info.csiRsrq = signalstrength.csiRsrq;
- msg_buf.nr_sig_info.csiSinr = signalstrength.csiSinr;
- void *ind_msg_buf= &msg_buf;
- if(s_handlerPtr!=NULL)
- {
- s_handlerPtr(g_nw_val,NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG,ind_msg_buf,sizeof (msg_buf) ,s_contextPtr);
- }
- }
-}
-
-#endif
-
-
-
-void lynq_signal_state_change_cb(const void* data, int data_len)
-{
-#if 0
-
-/*
- uint8 *net_data = NULL;
-
- net_data = (uint8*)data;
-
- if(data && data_len > 0)
- {
- if(*net_data == 0)
- { // CS
- printf("CS:act=%d, mode=%d\n", *(net_data + 1), *(net_data + 2));
- }
- else
- { // PS
- printf("PS[%s]:act=%d, mode=%d\n", *(net_data + 3) == 0 ? "GSM/WCDMA" : "LTE", *(net_data + 1), *(net_data + 2));
- }
- }
- else
- {
- printf("NET_CB : NULL");
- }
-*/
-
- if(s_handlerPtr != NULL)//数据原样输出
- {
- s_handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG, data, data_len, NULL);
- }
-#endif
-
- /*
- data_signal[0] = signal.type;
- data_signal[1] = signal.rssi;
- data_signal[2] = signal.rxlev;
- data_signal[3] = signal.ber;
- data_signal[4] = signal.rscp;
- data_signal[5] = signal.ecno;
- data_signal[6] = signal.rsrq;
- data_signal[7] = signal.rsrp;
- */
-
- uint8 *net_data = NULL;
- QSER_NW_SINGNAL_EVENT_IND_T msg_buf;
-
- if(data && data_len > 0)
- {
- net_data = (uint8*)data;
- //printf("net_data[0] => *net_data =%d\n",*net_data);
- msg_buf.gsm_sig_info_valid = FALSE;
- msg_buf.lte_sig_info_valid = FALSE;
- msg_buf.wcdma_sig_info_valid = FALSE;
-
- if(*net_data == MBTK_RADIO_TECH_GSM || *net_data == MBTK_RADIO_TECH_GSM_COMPACT || \
- *net_data == MBTK_RADIO_TECH_GSM_EGPRS) //GSM
- {
- msg_buf.gsm_sig_info_valid = TRUE;
- msg_buf.gsm_sig_info.rssi = *(net_data + 1);
- }
- else if(*net_data == MBTK_RADIO_TECH_E_UTRAN) //LTE
- {
- msg_buf.lte_sig_info_valid = TRUE;
- msg_buf.lte_sig_info.rssi = *(net_data + 1);
- msg_buf.lte_sig_info.rsrp = *(net_data + 7);//signalstrength.rsrp;
- msg_buf.lte_sig_info.rsrq = *(net_data + 6);//signalstrength.rsrq;
- msg_buf.lte_sig_info.snr = 0x7FFFFFFFF; //signalstrength.rssnr;(当前mbtk没有该参数)
- }
- else if (*net_data == MBTK_RADIO_TECH_UTRAN || *net_data == MBTK_RADIO_TECH_UTRAN_HSDPA || \
- *net_data == MBTK_RADIO_TECH_UTRAN_HSUPA || *net_data == MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA || \
- *net_data == MBTK_RADIO_TECH_UTRAN_HSPA )//WCDMA
- {
- msg_buf.wcdma_sig_info_valid = TRUE;
- msg_buf.wcdma_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
- msg_buf.wcdma_sig_info.ecio = *(net_data + 5);//signalstrength.ecno;
- }
-
- //msg_buf.gsm_sig_info_valid = TRUE;//signalstrength.gw_sig_valid;
- //msg_buf.gsm_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
- //printf("rssi = %d\n", *(net_data + 1));
- //msg_buf.wcdma_sig_info_valid = TRUE;//.wcdma_sig_valid;
- //msg_buf.wcdma_sig_info.rssi = *(net_data + 1);//signalstrength.rssi;
- //printf("rscp = %d\n", *(net_data + 4));
- //msg_buf.wcdma_sig_info.ecio = *(net_data + 5);//signalstrength.ecno;
- //printf("ecno = %d\n", *(net_data + 5));
- //msg_buf.lte_sig_info_valid = TRUE;//signalstrength.lte_sig_valid;
- //msg_buf.lte_sig_info.rssi = *(net_data + 1);
- //msg_buf.lte_sig_info.rsrp = *(net_data + 7);//signalstrength.rsrp;
- //printf("rsrp = %d\n", *(net_data + 7));
- //msg_buf.lte_sig_info.rsrq = *(net_data + 6);//signalstrength.rsrq;
- //printf("rsrq = %d\n", *(net_data + 6));
- //msg_buf.lte_sig_info.snr = 0x7FFFFFFFF; //signalstrength.rssnr;(当前mbtk没有该参数)
- msg_buf.tdscdma_sig_info_valid = FALSE;
- msg_buf.cdma_sig_info_valid = FALSE;
- msg_buf.hdr_sig_info_valid = FALSE;
- msg_buf.nr_sig_info_valid = FALSE;//(当前mbtk没有该参数)
- msg_buf.nr_sig_info.ssRsrp = 0;
- msg_buf.nr_sig_info.ssRsrq = 0;
- msg_buf.nr_sig_info.ssSinr = 0;
- msg_buf.nr_sig_info.csiRsrp = 0;
- msg_buf.nr_sig_info.csiRsrq = 0;
- msg_buf.nr_sig_info.csiSinr = 0;
-
- void *ind_msg_buf= &msg_buf;
- if(lynq_func_cb_handle.handlerPtr != NULL)
- {
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG, ind_msg_buf, sizeof (msg_buf), lynq_func_cb_handle.contextPtr);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_VOICE_REG_EVENT_IND_FLAG, NULL, 0, lynq_func_cb_handle.contextPtr);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG, NULL, 0, lynq_func_cb_handle.contextPtr);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_IMS_REG_EVENT_IND_FLAG, NULL, 0, lynq_func_cb_handle.contextPtr);
- }
- }
- else
- {
- LOGE("lynq_nw_state_change_cb : NULL");
- }
-
-}
-
-
-static uint8 lynq_net_pre_change(bool mbtk_2_lynq,int net_mode)
-{
- uint8 mbtk_net_pre = 0xFF;
-
-#if 0
- 此参数表在别处使用
- E_QSER_NW_RADIO_TECH_TD_SCDMA = 1, Y3 1
- E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */ YL2 0
- E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */ 3 1
- E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */ 4 5
- E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */ 3 1
- E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */ D3 1
- E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */ 3 1
- E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */ 3.5 1
- E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */ 3.5 1
- E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */ D3 1
- E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */ D3 1
- E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */ 2 0
- E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */ 3 0
- E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */ 3 0
- E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */ L3 1
- E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */ 2.75 0
- E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */ 2.5 0
- E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
-#endif
- /*
- 0 : GSM only
- 1 : UMTS only
- 2 : GSM/UMTS(auto)
- 3 : GSM/UMTS(GSM preferred)
- 4 : GSM/UMTS(UMTS preferred)
- 5 : LTE only
- 6 : GSM/LTE(auto)
- 7 : GSM/LTE(GSM preferred)
- 8 : GSM/LTE(LTE preferred)
- 9 : UMTS/LTE(auto)
- 10 : UMTS/LTE(UMTS preferred)
- 11 : UMTS/LTE(LTE preferred)
- 12 : GSM/UMTS/LTE(auto)
- 13 : GSM/UMTS/LTE(GSM preferred)
- 14 : GSM/UMTS/LTE(UMTS preferred)
- 15 : GSM/UMTS/LTE(LTE preferred)
- */
-
- if(mbtk_2_lynq)
- {
- switch(net_mode)
- {
- //使用之前set的tmp_mode的值来进行回显get
- case QSER_NW_MODE_GSM:
- mbtk_net_pre = QSER_NW_MODE_GSM;
- break;
- case QSER_NW_MODE_WCDMA:
- mbtk_net_pre = QSER_NW_MODE_WCDMA;
- break;
- case QSER_NW_MODE_CDMA:
- mbtk_net_pre = QSER_NW_MODE_CDMA;
- break;
- case QSER_NW_MODE_EVDO:
- mbtk_net_pre = QSER_NW_MODE_EVDO;
- break;
- case QSER_NW_MODE_LTE:
- mbtk_net_pre = QSER_NW_MODE_LTE;
- break;
- case QSER_NW_MODE_TDSCDMA:
- mbtk_net_pre = QSER_NW_MODE_TDSCDMA;
- break;
- default:
- mbtk_net_pre = 0xFF;
- break;
- }
- }
- else
- {
- if(QSER_NW_MODE_GSM == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_ONLY;
- }
- else if(QSER_NW_MODE_WCDMA == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_UMTS_ONLY;
- }
- else if(QSER_NW_MODE_LTE == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_LTE_ONLY;
- }
- else if((QSER_NW_MODE_GSM | QSER_NW_MODE_WCDMA) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
- }
- else if((QSER_NW_MODE_WCDMA | QSER_NW_MODE_LTE) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_LTE_PREF;
- }
- else if((QSER_NW_MODE_GSM | QSER_NW_MODE_LTE) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_LTE_PREF;
- }
- else if((QSER_NW_MODE_GSM | QSER_NW_MODE_WCDMA | QSER_NW_MODE_LTE) == net_mode)
- {
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF;
- }
- else
- {
- mbtk_net_pre = 0xFF;
- }
- }
- return mbtk_net_pre;
-}
-
-int qser_nw_client_init(nw_client_handle_type *ph_nw)
-{
- //UNUSED(ph_nw);
-
- if(lynq_nw_info_handle == NULL)
- {
- lynq_nw_info_handle = mbtk_info_handle_get();
- if(lynq_nw_info_handle)
- {
- LOGI("creat lynq_nw_info_handle is success");
- *ph_nw = lynq_nw_info_handle->client_fd;
- g_nw_val = lynq_nw_info_handle->client_fd;
- }
- else
- {
- LOGE("creat lynq_nw_info_handle is fail");
- return -1;
- }
- }
-
- return 0;
-}
-
-int qser_nw_client_deinit(nw_client_handle_type h_nw)
-{
- //UNUSED(h_nw);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- mbtk_signal_state_change_cb_reg(lynq_nw_info_handle, NULL);
-
- if(lynq_nw_info_handle)
- {
- mbtk_info_handle_free(&lynq_nw_info_handle);
- }
- else
- {
- LOGE("deinit lynq_nw_info_handle is fail");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_set_config(nw_client_handle_type h_nw,QSER_NW_CONFIG_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- roaming_pref = pt_info->roaming_pref;
-
- mbtk_band_info_t band;
- memset(&band, 0, sizeof(mbtk_band_info_t));
- tmp_mode = pt_info->preferred_nw_mode;//临时保存一下原本的mode
-
- //printf("tmp_mode = [%llu]",tmp_mode);
- band.net_pref = lynq_net_pre_change(FALSE, pt_info->preferred_nw_mode);
- LOGI("band.net_pref = [%d] ",band.net_pref);
-
- if(band.net_pref == 0xFF)
- {
- LOGE("lynq_net_pre_change() fail.");
- return -1;
- }
-
- if(mbtk_current_band_set(lynq_nw_info_handle, &band))
- {
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_get_operator_name(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(lynq_nw_info_handle, &net) && net.plmn > 0)
- {
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(lynq_operator_mcc_mnc))
- {
- if(lynq_operator_mcc_mnc[i].lynq_mcc_mnc == net.plmn)
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(lynq_operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- strcpy(OperatorFN, lynq_operator_mcc_mnc[i].lynq_operator_l);
- strcpy(OperatorSH, lynq_operator_mcc_mnc[i].lynq_operator_s);
- sprintf(MccMnc, "%d", lynq_operator_mcc_mnc[i].lynq_mcc_mnc);
- }
- memset(pt_info->long_eons,0,128);
- memcpy(pt_info->long_eons,lynq_operator_mcc_mnc[i].lynq_operator_l,strlen(lynq_operator_mcc_mnc[i].lynq_operator_l));
- memset(pt_info->short_eons,0,128);
- memcpy(pt_info->short_eons,lynq_operator_mcc_mnc[i].lynq_operator_s,strlen(lynq_operator_mcc_mnc[i].lynq_operator_s));
- memset(pt_info->mcc,0,4);
- memset(pt_info->mnc,0,4);
- sprintf(pt_info->mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
- sprintf(pt_info->mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
- //pt_info->act;
- return 0;
- }
-
- return -1;
-}
-
-int qser_nw_get_reg_status(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- /*VOICE/DATA/IMS*/
- mbtk_net_reg_info_t reg;
- int err = mbtk_net_reg_get(lynq_nw_info_handle, ®);
- if(err)
- {
- LOGE("mbtk_net_reg_get fail.");
- return -1;
- }
- else
- {
- memset(pt_info, 0x0, sizeof(QSER_NW_REG_STATUS_INFO_T));
-
-
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(lynq_nw_info_handle, &net) && net.plmn > 0)
- {
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(lynq_operator_mcc_mnc))
- {
- if(lynq_operator_mcc_mnc[i].lynq_mcc_mnc == net.plmn)
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(lynq_operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- sprintf(MccMnc, "%d", lynq_operator_mcc_mnc[i].lynq_mcc_mnc);
- }
- sprintf(pt_info->data_registration_details_3gpp.mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
- sprintf(pt_info->data_registration_details_3gpp.mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
- sprintf(pt_info->voice_registration_details_3gpp.mcc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);
- sprintf(pt_info->voice_registration_details_3gpp.mnc, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);
- //pt_info->act;
- }
-
- //暂时未知是否其他也被使用,现根据ql模块的传输情况,
- //只配置3gpp,涉及call,data状态没有对应的匹配的就没有赋值
-
- pt_info->voice_registration_valid = TRUE;
- pt_info->voice_registration.deny_reason = 0;
- pt_info->voice_registration.roaming = 0;
- pt_info->voice_registration.tech_domain = 0;
-
-
- pt_info->data_registration_valid = TRUE;
- pt_info->data_registration.deny_reason = 0;
- pt_info->data_registration.roaming = 0;
- pt_info->data_registration.tech_domain = 0;
-
- if (reg.call_state == 1 || reg.call_state == 5)
- {
- pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_FULL;
- }
- else if (reg.call_state == 0 || reg.call_state == 2 || reg.call_state == 3 || reg.call_state == 4)
- {
- pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- }
-
- if (reg.data_state == 1 || reg.data_state == 5)
- {
- pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_FULL;
- }
- else if (reg.data_state == 0 || reg.data_state == 2 || reg.data_state == 3 || reg.data_state == 4)
- {
- pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- }
-
-
- pt_info->voice_registration_details_3gpp_valid = TRUE;
- pt_info->voice_registration_details_3gpp.lac = reg.lac;
- pt_info->voice_registration_details_3gpp.cid = reg.ci;
- //补位填0 or 1
- pt_info->voice_registration_details_3gpp.tech_domain = 1;
- pt_info->voice_registration_details_3gpp.roaming = 0;
- pt_info->voice_registration_details_3gpp.forbidden = 0;
- pt_info->voice_registration_details_3gpp.psc = 0;
- pt_info->voice_registration_details_3gpp.tac = 0;
-
- pt_info->data_registration_details_3gpp_valid = TRUE;
- pt_info->data_registration_details_3gpp.lac = reg.lac;
- pt_info->data_registration_details_3gpp.cid = reg.ci;
- //补位填0 or 1
- pt_info->data_registration_details_3gpp.tech_domain = 1;
- pt_info->data_registration_details_3gpp.roaming = 0;
- pt_info->data_registration_details_3gpp.forbidden = 0;
- pt_info->data_registration_details_3gpp.psc = 0;
- pt_info->data_registration_details_3gpp.tac = 0;
-
-
- pt_info->voice_registration_details_3gpp2_valid = FALSE;
- //pt_info->voice_registration_details_3gpp2
-
- pt_info->data_registration_details_3gpp2_valid = FALSE;
- //pt_info->data_registration_details_3gpp2
-
-
- switch(reg.type)
- {
- case MBTK_RADIO_TECH_GSM:
- case MBTK_RADIO_TECH_GSM_COMPACT:
- case MBTK_RADIO_TECH_GSM_EGPRS:
- case MBTK_RADIO_TECH_UTRAN_HSPA:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_GPRS;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_GSM;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_GPRS;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_GSM;
- break;
- }
- case MBTK_RADIO_TECH_UTRAN:
- case MBTK_RADIO_TECH_UTRAN_HSDPA:
- case MBTK_RADIO_TECH_UTRAN_HSUPA:
- case MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_UMTS;
- break;
- }
- case MBTK_RADIO_TECH_E_UTRAN:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_LTE;
- break;
- }
- default:
- {
- pt_info->data_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->voice_registration_details_3gpp.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->data_registration.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->voice_registration.radio_tech = E_QSER_NW_RADIO_TECH_NONE;
- pt_info->data_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- pt_info->voice_registration.registration_state = E_QSER_NW_SERVICE_NONE;
- break;
- }
- }
- }
-
- return 0;
-}
-
-int qser_nw_get_signal_strength(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- if(pt_info == NULL)
- {
- LOGE("pt_info == NULL.");
- return -1;
- }
-
- int ret;
- mbtk_signal_info_t signal;
- ret = mbtk_net_signal_get(lynq_nw_info_handle, &signal);
- if(ret != 0) {
- LOGE("mbtk_net_signal_get fail.");
- return -1;
- }
- else
- {
- memset(pt_info, 0x0, sizeof(QSER_NW_SIGNAL_STRENGTH_INFO_T));
-
- if(signal.type == MBTK_RADIO_TECH_GSM || signal.type == MBTK_RADIO_TECH_GSM_COMPACT || \
- signal.type == MBTK_RADIO_TECH_GSM_EGPRS) //GSM
- {
- pt_info->gsm_sig_info_valid = TRUE;
- pt_info->gsm_sig_info.rssi = signal.rssi;
- }
- else if(signal.type == MBTK_RADIO_TECH_E_UTRAN) //LTE
- {
- pt_info->lte_sig_info_valid = TRUE;
- pt_info->lte_sig_info.rsrp = signal.rsrp;
- pt_info->lte_sig_info.rsrq = signal.rsrq;
- pt_info->lte_sig_info.snr = 0x7FFFFFFFF; //->MBTK接口无该参数(对应参数为rssnr,该值INT_MAX:0x7FFFFFFFF表示无效值),写死值为0x7FFFFFFFF
- pt_info->lte_sig_info.rssi = signal.rssi;
- }
- else if (signal.type == MBTK_RADIO_TECH_UTRAN || signal.type == MBTK_RADIO_TECH_UTRAN_HSDPA || \
- signal.type == MBTK_RADIO_TECH_UTRAN_HSUPA || signal.type == MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA || \
- signal.type == MBTK_RADIO_TECH_UTRAN_HSPA )//WCDMA
- {
- pt_info->wcdma_sig_info_valid = TRUE;
- pt_info->wcdma_sig_info.rssi = signal.rssi;
- pt_info->wcdma_sig_info.ecio = signal.ecno;
- }
- else
- {
- return -1;
- }
- /*
- pt_info->gsm_sig_info_valid = 1//signal.gw_sig_valid;
- pt_info->gsm_sig_info.rssi = signal.rssi;//signal.rssi-110;
- pt_info->wcdma_sig_info_valid = 1//signal.wcdma_sig_valid;
- pt_info->wcdma_sig_info.rssi = signal.rscp;//signal.wcdma_signalstrength-110;
- pt_info->wcdma_sig_info.ecio = //signal.ecno/5;
- pt_info->tdscdma_sig_info_valid = 0;
- pt_info->lte_sig_info_valid = 1//signal.lte_sig_valid;
- pt_info->lte_sig_info.rssi = -125;//signal.lte_signalstrength-110;
- pt_info->lte_sig_info.rsrp = signal.rsrp;//signal.rsrp*(-1);
- pt_info->lte_sig_info.rsrq = signal.rsrq;//signal.rsrq*(-1);
- pt_info->lte_sig_info.snr = 0x7FFFFFFFF;//signal.rssnr;
- pt_info->cdma_sig_info_valid = 0;
- pt_info->hdr_sig_info_valid = 0;
- //mbtk 无nr
- pt_info->nr_sig_info_valid = 0//signal.nr_sig_valid;
- pt_info->nr_sig_info.ssRsrp = 0//signal.ssRsrp;
- pt_info->nr_sig_info.ssRsrq = 0//signal.ssRsrq;
- pt_info->nr_sig_info.ssSinr = 0//signal.ssSinr;
- pt_info->nr_sig_info.csiRsrp = 0//signal.csiRsrp;
- pt_info->nr_sig_info.csiRsrq = 0//signal.csiRsrq;
- pt_info->nr_sig_info.csiSinr = 0//signal.csiSinr;
- */
- }
-
- return 0;
-}
-
-void net_state_change_cb(const void* data, int data_len)
-{
- printf("Recv event indication : NET REG EVENT\n");
- if(data && data_len > 0) {
- const uint8 *ptr = (const uint8*)data;
- if(*ptr == 0) { // CS
- printf("CS:act=%d, mode=%d\n", *(ptr + 1), *(ptr + 2));
- } else { // PS
- printf("PS[%s]:act=%d, mode=%d\n", *(ptr + 3) == 0 ? "GSM/WCDMA" : "LTE", *(ptr + 1), *(ptr + 2));
- }
- } else
- LOGD("ind is NULL");
-}
-
-
-int qser_nw_add_rx_msg_handler (nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)
-{
- //UNUSED(h_nw);
- //UNUSED(handlerPtr);
- //UNUSED(contextPtr);
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- lynq_func_cb_handle.handlerPtr = handlerPtr;
- lynq_func_cb_handle.contextPtr = contextPtr;
-
- mbtk_signal_state_change_cb_reg(lynq_nw_info_handle, lynq_signal_state_change_cb);
- mbtk_net_state_change_cb_reg(lynq_nw_info_handle, net_state_change_cb);
-
- return 0;
-}
-
-int qser_nw_set_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if (pt_info == NULL)
- {
- LOGE("QSER_NW_OOS_CONFIG_INFO_T NULL");
- return -1;
- }
-
- uint32 oosPhase_0, oosPhase_1, oosPhase_2;
- char tmp_type;
- mbtk_oos_info oos_info;
-
- memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
-
-
- tmp_type = pt_info->type;
-
- if (tmp_type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
- {//如果没有配置对应的值,例如,10,20
- //oosPhase_2这个位置没有配置,则使用默认值20,既不限制次数的5s进行一次扫描
- //同理oosPhase_0,oosPhase_1这个位置没有配置,则使用默认值5,10,既限制次数5次的5s,10s进行一次扫描
- //输入多少配置多少,可以缺省使用默认值
- if (pt_info->u.full_band_scan_info.t_min < 0 || pt_info->u.full_band_scan_info.t_step < 0 || pt_info->u.full_band_scan_info.t_max < 0)
- {
- LOGE("qser_nw_set_oos_config set time < 0 ");
- return -1;
- }
- else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
- {
- oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
- oos_info.mode = 1;
- oos_info.oosPhase[0] = oosPhase_0;
- }
- else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && pt_info->u.full_band_scan_info.t_max == 0)
- {
- oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
- oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
- oos_info.mode = 1;
- oos_info.oosPhase[0] = oosPhase_0;
- oos_info.oosPhase[1] = oosPhase_1;
- }
- else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && (pt_info->u.full_band_scan_info.t_max > 0 && pt_info->u.full_band_scan_info.t_max <= 255))
- {
- oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
- oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
- oosPhase_2 = pt_info->u.full_band_scan_info.t_max;
- oos_info.mode = 1;
- oos_info.oosPhase[0] = oosPhase_0;
- oos_info.oosPhase[1] = oosPhase_1;
- oos_info.oosPhase[2] = oosPhase_2;
- }
- else if (pt_info->u.full_band_scan_info.t_min == 0 && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
- {
- oos_info.mode = 0;
- }
- else
- {
- LOGE("qser_nw_set_oos_config set Format err");
- return -1;
- }
-
- int err = mbtk_oos_set(lynq_nw_info_handle, &oos_info);
- if (err != 0)
- {
- LOGE("qser_nw_set_oos_config mbtk_oos_set err");
- return -1;
- }
- }
- else if (tmp_type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
- {
- LOGE("Not currently supported");
- return -1;
- }
- else
- {
- LOGE("type is error");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_get_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
-{
- //UNUSED(h_nw);
- //UNUSED(pt_info);
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- mbtk_oos_info oos_info;
- uint32 oosPhase_0, oosPhase_1, oosPhase_2;
- char cmd[100] = {0};
-
- memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
-
- int err = mbtk_oos_get(lynq_nw_info_handle, &oos_info);
- if (err != 0)
- {
- LOGE("qser_nw_get_oos_config mbtk_oos_get err ");
- return -1;
- }
-/*
- printf("oos_info.mode =[%d] \n",oos_info.mode);
- printf("oos_info.1 =[%d] \n",oos_info.oosPhase[0]);
- printf("oos_info.2 =[%d] \n",oos_info.oosPhase[1]);
- printf("oos_info.3 =[%d] \n",oos_info.oosPhase[2]);
-*/
- if(oos_info.mode == 0)//关闭状态
- {
- pt_info->u.full_band_scan_info.t_min = 0;
- pt_info->u.full_band_scan_info.t_step = 0;
- pt_info->u.full_band_scan_info.t_max = 0;
- }
- else
- {
- pt_info->u.full_band_scan_info.t_min = (int)oos_info.oosPhase[0];
- pt_info->u.full_band_scan_info.t_step = (int)oos_info.oosPhase[1];
- pt_info->u.full_band_scan_info.t_max = (int)oos_info.oosPhase[2];
- }
- pt_info->type = QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN;
-
-
- if (pt_info == NULL)
- {
- LOGE("qser_nw_get_oos_config pt_info is null ");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_set_rf_mode (nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode)
-{
- //UNUSED(h_nw);
- //UNUSED(rf_mode);
- int ret;
- mbtk_modem_info_t info;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
-/*
- if (rf_mode == 4)
- {
- printf("Flight Mode no Support Now\n");
- return -1;
- }
-*/
- if (rf_mode != 4 && rf_mode != 0 && rf_mode != 1)
- {
- LOGE("mode is error!");
- return -1;
- }
-
- info.fun = rf_mode;
- info.rst = 0;
- ret = mbtk_set_modem_fun(lynq_nw_info_handle, &info);
-
- //ret = mbtk_radio_state_set(lynq_nw_info_handle, rf_mode);
- if (ret != 0)
- {
- LOGE("mbtk_radio_state_set fail.");
- return -1;
- }
- else
- {
- LOGI("qser_nw_set_rf_mode is success\n");
- }
-
- return 0;
-}
-
-int qser_nw_get_rf_mode (nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T *rf_mode)
-{
- //UNUSED(h_nw);
- //UNUSED(rf_mode);
- int ret;
- int tmp_rf;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- ret = mbtk_get_modem_fun(lynq_nw_info_handle, &tmp_rf);
-
- //ret = mbtk_radio_state_get(lynq_nw_info_handle, &tmp_rf);
- if (ret != 0)
- {
- LOGE("mbtk_radio_state_get fail.");
- return -1;
- }
- else
- {
- LOGI("qser_nw_get_rf_mode is success\n");
- *rf_mode = tmp_rf;
- }
-
-
- return 0;
-}
-
-int qser_nw_set_ims_enable(nw_client_handle_type h_nw, E_QSER_NW_IMS_MODE_TYPE_T ims_mode)
-{
- int ret = 0;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- ret = mbtk_net_ims_set(lynq_nw_info_handle, ims_mode);
- if (ret != 0)
- {
- LOGE("mbtk_net_ims_set fail.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_nw_get_ims_reg_status(nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info)
-{
- int ret = 0;
- int tmp_pt;
-
- if (h_nw != g_nw_val || g_nw_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(lynq_nw_info_handle == NULL)
- {
- LOGE("lynq_nw_info_handle == NULL.");
- return -1;
- }
-
- ret = mbtk_net_ims_reg_state_get(lynq_nw_info_handle, &tmp_pt);
- if (ret != 0)
- {
- LOGE("mbtk_net_ims_get fail.");
- return -1;
- }
-
- if (tmp_pt == 0)
- pt_info->registration_state = E_QSER_NW_IMS_SERVICE_NONE;
- else if (tmp_pt == 1)
- pt_info->registration_state = E_QSER_NW_IMS_SERVICE_REGISTERED;
- else
- {
- LOGE("mbtk_net_ims_get value error fail.");
- return -1;
- }
-
- return 0;
-}
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_sim.c b/mbtk/liblynq_lib_v2/src/lynq_sim.c
deleted file mode 100755
index 78af51b..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_sim.c
+++ /dev/null
@@ -1,746 +0,0 @@
-#include "lynq_qser_sim.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-/****************************DEFINE***************************************/
-#define QSER_RESULT_SUCCESS 0
-#define QSER_RESULT_FAIL -1
-
-#define QSER_IMEI_SV_VERSION "01"
-
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-extern mbtk_info_handle_t* qser_info_handle;
-extern int qser_info_handle_num;
-static bool inited = FALSE;
-static uint qser_h_sim = 0x5F6F7F8F;
-static QSER_SIM_RxMsgHandlerFunc_t qser_sim_state_cb = NULL;
-static bool qser_sim_cb_state = false;
-/****************************VARIABLE***************************************/
-
-/******************************FUNC*****************************************/
-void qser_sim_state_change_cb(const void* data, int data_len)
-{
- uint8 *ptr = (uint8*)data;
- LOGE("[qser_sim] SIM state : %d\n", *ptr);
- QSER_SIM_CARD_STATUS_INFO_T qser_sim_statue = {0};
- if(*ptr == 0)
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- }
- else if(*ptr == 1)
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- }
- else if(*ptr == 18)
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- }
- else
- {
- qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
- }
- if(qser_sim_state_cb != NULL)
- {
- qser_sim_state_cb(&qser_sim_statue);
- }
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int qser_sim_client_init(sim_client_handle_type *ph_sim)
-{
- //UNUSED(ph_sim);
- if(ph_sim == NULL)
- {
- LOGE("[qser_sim] ph_sim is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(!inited && qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- inited = TRUE;
- //mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- else
- {
- LOGE("[qser_sim] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- if(!inited)
- {
- qser_info_handle_num++;
- inited = TRUE;
- //mbtk_pdp_state_change_cb_reg(qser_info_handle, qser_wan_net_state_change_cb);
- }
- }
- *ph_sim = qser_h_sim;
-
- LOGE("[qser_sim] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getimsi(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info,char *imsi,size_t imsiLen)
-{
- //UNUSED(h_sim);
- UNUSED(pt_info);
- //UNUSED(imsi);
- //UNUSED(imsiLen);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(imsi == NULL || imsiLen < 15)
- {
- LOGE("[qser_sim] imsi is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(imsi,0,imsiLen);
- int err = mbtk_imsi_get(qser_info_handle, imsi);
- if(err)
- {
- LOGE("[qser_sim] mbtk_imsi_get is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(strlen(imsi) > imsiLen)
- {
- LOGE("[qser_sim] get datalength out of range.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_geticcid(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,char *iccid, size_t iccidLen)
-{
- //UNUSED(h_sim);
- UNUSED(simId);
- //UNUSED(iccid);
- //UNUSED(iccidLen);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(iccid == NULL || iccidLen < QSER_SIM_ICCID_LEN_MAX)
- {
- LOGE("[qser_sim] iccid is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(iccid, 0, iccidLen);
- int err = mbtk_iccid_get(qser_info_handle, iccid);
- if(err)
- {
- LOGE("[qser_sim] mbtk_iccid_get is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(strlen(iccid) > iccidLen)
- {
- LOGE("[qser_sim] get datalength out of range.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getphonenumber(sim_client_handle_type h_sim,QSER_SIM_APP_ID_INFO_T *pt_info, char*phone_num, size_t phoneLen)
-{
- //UNUSED(h_sim);
- UNUSED(pt_info);
- //UNUSED(phone_num);
- //UNUSED(phoneLen);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(phone_num == NULL || phoneLen < 11)
- {
- LOGE("[qser_sim] phone_num is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- memset(phone_num, 0, phoneLen);
- int err = mbtk_phone_number_get(qser_info_handle, phone_num);
- if(err)
- {
- LOGE("[qser_sim] mbtk_phone_number_get is fail.");
- return QSER_RESULT_FAIL;
- }
-
- if(strlen(phone_num) > phoneLen)
- {
- LOGE("[qser_sim] get datalength out of range.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_verifypin(sim_client_handle_type h_sim,QSER_SIM_VERIFY_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_verify_pin(qser_info_handle, pt_info->pin_value);
- if(err)
- {
- LOGE("[qser_sim] mbtk_verify_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_changepin(sim_client_handle_type h_sim,QSER_SIM_CHANGE_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_change_pin_info pin_info = {0};
- memcpy(pin_info.old_pin_value, pt_info->old_pin_value, pt_info->old_pin_value_len);
- memcpy(pin_info.new_pin_value, pt_info->new_pin_value, pt_info->new_pin_value_len);
- int err = mbtk_change_pin(qser_info_handle, &pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_change_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_unblockpin(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_unlock_pin_info puk_pin_info = {0};
- memcpy(puk_pin_info.pin_value, pt_info->new_pin_value, pt_info->new_pin_value_len);
- memcpy(puk_pin_info.puk_value, pt_info->puk_value, pt_info->puk_value_len);
- int err = mbtk_unlock_pin(qser_info_handle, &puk_pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_unlock_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_enablepin(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, pt_info->pin_value_len);
- pin_info.enable = 1;
- int err = mbtk_enable_pin(qser_info_handle, &pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_enable_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_disablepin(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, pt_info->pin_value_len);
- pin_info.enable = 0;
- int err = mbtk_enable_pin(qser_info_handle, &pin_info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_enable_pin is fail.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getcardstatus(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,QSER_SIM_CARD_STATUS_INFO_T *pt_info)
-{
- //UNUSED(h_sim);
- //UNUSED(simId);
- //UNUSED(pt_info);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(pt_info == NULL)
- {
- LOGE("[qser_sim] pt_info is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- mbtk_sim_state_enum sim;
- mbtk_sim_card_type_enum sim_card_type;
- mbtk_pin_puk_last_times qser_last_times = {0};
- int err = mbtk_sim_state_get(qser_info_handle, &sim);
- if(err)
- {
- LOGE("[qser_sim] mbtk_sim_state_get fail [err = %d].", err);
- return QSER_RESULT_FAIL;
- }
- else
- {
- LOGE("[qser_sim] sim = %d.", sim);
- memset(pt_info, 0x0, sizeof(QSER_SIM_CARD_STATUS_INFO_T));
- switch (sim)
- {
- case 0: //ABSENT
- pt_info->e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- break;
- case 1: //NOT READY
- pt_info->e_card_state = QSER_SIM_CARD_STATE_ABSENT;
- break;
- case 2: //READY
- pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- break;
- case 3: //SIM PIN
- pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- break;
- case 4: //SIM PUK
- pt_info->e_card_state = QSER_SIM_CARD_STATE_PRESENT;
- break;
- case 5: //NETWORK
- pt_info->e_card_state = QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS;
- break;
- default:
- pt_info->e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
- break;
- }
- }
-
- err = mbtk_sim_card_type_get(qser_info_handle, &sim_card_type);
- if(err)
- {
- LOGE("[qser_sim] mbtk_sim_state_get fail [err = %d].", err);
- return QSER_RESULT_FAIL;
- }
- else
- {
- if(sim_card_type == 0 || sim_card_type == 2)
- pt_info->e_card_type = QSER_SIM_CARD_TYPE_ICC;
- else if(sim_card_type == 1 || sim_card_type == 3)
- pt_info->e_card_type = QSER_SIM_CARD_TYPE_UICC;
- else
- pt_info->e_card_type = QSER_SIM_CARD_TYPE_UNKNOWN;
- }
-
- err = mbtk_pin_last_num_get(qser_info_handle, &qser_last_times);
- if(err)
- {
- LOGE("[qser_sim] mbtk_sim_state_get fail [err = %d].", err);
- return QSER_RESULT_FAIL;
- }
- else
- {
- pt_info->card_app_info.app_3gpp.pin1_num_retries = qser_last_times.p1_retry;
- pt_info->card_app_info.app_3gpp.pin2_num_retries = qser_last_times.p2_retry;
- pt_info->card_app_info.app_3gpp.puk1_num_retries = qser_last_times.puk1_retry;
- pt_info->card_app_info.app_3gpp.puk2_num_retries = qser_last_times.puk2_retry;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_getimei(sim_client_handle_type h_sim, char *imei)
-{
- //UNUSED(h_sim);
- //UNUSED(imei);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(imei == NULL)
- {
- LOGE("[qser_sim] imei is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_imei_get(qser_info_handle, imei);
- if(err)
- {
- LOGE("[qser_sim] mbtk_imei_get Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_get_imei_and_sv(sim_client_handle_type h_sim,char *imei, char*sv)
-{
- //UNUSED(h_sim);
- //UNUSED(imei);
- //UNUSED(sv);
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(imei == NULL || sv == NULL)
- {
- LOGE("[qser_sim] param is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_imei_get(qser_info_handle, imei);
- if(err)
- {
- LOGE("[qser_sim] mbtk_imei_get Error: %d\n", err);
- return QSER_RESULT_FAIL;
- }
-
- memcpy(sv, QSER_IMEI_SV_VERSION, strlen(QSER_IMEI_SV_VERSION));
-
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_reset_modem(sim_client_handle_type h_sim)
-{
- //UNUSED(h_sim);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- for(int cid =0; cid < MBTK_APN_CID_MAX; cid++)
- {
- mbtk_data_call_stop(qser_info_handle, cid, 1);
- }
-
-
- //mbtk_system_reboot(0);
- mbtk_modem_info_t info;
- info.fun = MBTK_DEV_MODEM_MIN_FUN;
- info.rst = 0;
- int err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
-
- info.fun = MBTK_DEV_MODEM_FULL_FUN;
- err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_get_version(sim_client_handle_type h_sim, char *buf)
-{
- //UNUSED(h_sim);
- //UNUSED(buf);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(buf == NULL)
- {
- LOGE("[qser_sim] buf is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- int err = mbtk_version_get(qser_info_handle, buf);
- if(err)
- {
- LOGE("[qser_sim] mbtk_version_get Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_reset_sim(sim_client_handle_type h_sim)
-{
- //UNUSED(h_sim);
-
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- //mbtk_sim_power_set(0);
- //sleep(1);
- //mbtk_sim_power_set(1);
- mbtk_modem_info_t info;
- info.fun = MBTK_DEV_MODEM_DISABLE_SIM;
- info.rst = 0;
- int err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
-
- info.fun = MBTK_DEV_MODEM_FULL_FUN;
- err = mbtk_set_modem_fun(qser_info_handle, &info);
- if(err)
- {
- LOGE("[qser_sim] mbtk_set_modem_fun Error : %d\n", err);
- return QSER_RESULT_FAIL;
- }
- return QSER_RESULT_SUCCESS;
-}
-
-int qser_sim_addrxmsghandler(QSER_SIM_RxMsgHandlerFunc_t handlerPtr)
-{
- if(qser_info_handle == NULL)
- {
- LOGE("[qser_sim] handle is NULL.");
- return QSER_RESULT_FAIL;
- }
-
- if(handlerPtr == NULL)
- {
- LOGE("[qser_sim] param is NULL.");
- qser_sim_state_cb = NULL;
- return QSER_RESULT_SUCCESS;
- }
-
- qser_sim_state_cb = handlerPtr;
- if(!qser_sim_cb_state)
- {
- int ret = mbtk_sim_state_change_cb_reg(qser_info_handle, qser_sim_state_change_cb);
- if(ret != 0)
- {
- LOGE("[qser_sim] set cb fail.");
- qser_sim_state_cb = NULL;
- return QSER_RESULT_FAIL;
- }
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-
-int qser_sim_client_deinit(sim_client_handle_type h_sim)
-{
- //UNUSED(h_sim);
- if(h_sim != qser_h_sim)
- {
- LOGE("[qser_sim] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- if(qser_info_handle)
- {
- LOGE("[qser_sim] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_sim] mbtk_info_handle_free() fail.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- qser_sim_state_cb = NULL;
- inited = FALSE;
- }
- }
- else
- {
- qser_info_handle_num--;
- qser_sim_state_cb = NULL;
- }
- }
- else
- {
- LOGE("[qser_sim] handle not inited.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-/****************************API***************************************/
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_sleep.c b/mbtk/liblynq_lib_v2/src/lynq_sleep.c
deleted file mode 100755
index 8c14793..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_sleep.c
+++ /dev/null
@@ -1,694 +0,0 @@
-#include "lynq-qser-autosuspend.h"
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/epoll.h>
-#include <linux/input.h>
-
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "mbtk_info_api.h"
-#include "mbtk_power.h"
-
-/*
-This module is system sleep, the system cannot sleep when the lock exists
-To verify whether it is in sleep state, it is necessary to test the power consumption
-Power management principle, as long as a wakelock lock exists, the system will not enter the Suspend state
-So the name can be arbitrarily chosen to indicate that such a lock is needed so that the system does not sleep
-*/
-#if defined(MBTK_PLATFORM_KERNEL_5)
-#define MTBK_POWERIND "/system/etc/powerind" //1806
-#elif defined(MBTK_PLATFORM_KERNEL_3)
-#define MTBK_POWERIND "/etc/powerind" //1803
-#endif
-
-static bool call_Off = FALSE;
-static bool nw_off = FALSE;
-static bool sms_off = FALSE;
-static bool data_off = FALSE;
-
-static pthread_t lpm_t;
-static int edge_t = 0;
-static int epoll_fd_t = -1;
-static int fd_t = -1;
-static int socket_t[2];
-
-typedef struct{
- qser_lpm_wakeupin_data_t wakeupin;
- qser_lpm_wakeupout_data_t wakeupout;
- qser_lpm_Handler_t wakehandle;
-}lynq_wake_t;
-
-static lynq_wake_t lpm_init;
-
-
-typedef struct
-{
- int fd;
- char name[64];
-} lock_name;
-
-#define LOCK_MAX_SIZE 129
-
-lock_name lynq_lock_name[LOCK_MAX_SIZE]={0};
-static bool autosleep_enable = FALSE;
-
-static mbtk_info_handle_t* whitelist_info_handle = NULL;
-
-static int powerrind_get()
-{
- char buffer[4];
- int ret = 0;
-
- int fd = open(MTBK_POWERIND, O_RDWR | O_SYNC, 0662);
- if (fd != -1)
- {
- read(fd, buffer, strlen(buffer)+1);
- close(fd);
- }
-
- ret = atoi(buffer);
-
- return ret;
-}
-
-#if 1
-static int sleep_epoll_deregister(int epoll_fd,int fd )
-{
- int ret;
- do {
- ret = epoll_ctl( epoll_fd, EPOLL_CTL_DEL, fd, NULL );
- } while (ret < 0 && errno == EINTR);
- return ret;
-}
-
-static int sleep_epoll_register(int epoll_fd, int fd)
-{
- struct epoll_event ev;
- int ret, flags;
-
- /* important: make the fd non-blocking */
- flags = fcntl(fd, F_GETFL);
- fcntl(fd, F_SETFL, flags | O_NONBLOCK);
-
- ev.events = EPOLLIN;
- ev.data.fd = fd;
- do {
- ret = epoll_ctl( epoll_fd, EPOLL_CTL_ADD, fd, &ev );
- } while (ret < 0 && errno == EINTR);
-
- return ret;
-}
-#endif
-
-int qser_autosuspend_enable(char enable)
-{
- //UNUSED(enable);
-
- if((enable == 1) || enable == '1')
- {
- //if(!mbtk_system_sleep())
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo mem > /sys/power/autosleep");
- autosleep_enable = TRUE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
- else if((enable == 0) || enable == '0')
- {
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo off > /sys/power/autosleep");
- autosleep_enable = FALSE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
- else
- {
- LOGE("qser_autosuspend_enablecan enable err.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_wakelock_create(const char* name , size_t len)
-{
- //UNUSED(name);
- //UNUSED(len);
- int len_t;
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- len_t = strlen(name);
-
- if((name != NULL) && (len < 33) && (len_t < 33))
- {
- int i;
- //name
- for(i=1 ;i<LOCK_MAX_SIZE;i++)
- {
- if(strcmp(lynq_lock_name[i].name, name) == 0)
- {
- LOGE("Repeated names.");
- return -1;
- }
- }
-
- for(i=1 ;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd == 0)
- break;
- }
-
- if (i >= LOCK_MAX_SIZE)
- {
- LOGE("Fd is full.");
- return -1;
- }
-
- memcpy(lynq_lock_name[i].name, name, strlen(name)+1);
- lynq_lock_name[i].fd = i;
- return lynq_lock_name[i].fd -1;//Starting from scratch
- }
- else
- return -1;
-
- return -1;
-}
-
-int qser_wakelock_lock(int fd)
-{
- //UNUSED(fd);
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- int i;
- for(i=1;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd -1 == fd)
- break;
- }
- if(i == LOCK_MAX_SIZE)
- {
- LOGE("LOCK_MAX_SIZE is full\n");
- return -1;
- }
-
- if(!access("/sys/power/wake_lock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_lock", lynq_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- LOGE("/sys/power/wake_lock can not write.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_wakelock_unlock(int fd)
-{
- //UNUSED(fd);
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- int i;
- for(i=1;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd -1 == fd)
- break;
- }
- if(i == LOCK_MAX_SIZE)
- {
- LOGE("LOCK_MAX_SIZE is full\n");
- return -1;
- }
-
- if(!access("/sys/power/wake_unlock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_unlock", lynq_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- LOGE("/sys/power/wake_unlock can not write.");
- return -1;
- }
-
- return 0;
-}
-
-int qser_wakelock_destroy(int fd)
-{
- //UNUSED(fd);
-/*
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-*/
- int i;
- for(i=1;i<LOCK_MAX_SIZE;i++)
- {
- if(lynq_lock_name[i].fd -1 == fd)
- break;
- }
-
- if(i == LOCK_MAX_SIZE)
- {
- LOGE("LOCK_MAX_SIZE is full\n");
- return -1;
- }
- else
- {
- lynq_lock_name[i].fd = 0;
- memset(lynq_lock_name[i].name, 0, 64);
- return 0;
- }
-
- return 0;
-}
-
-void *threadFunction(void *arg)
-{
- int pinValue;
- int i;
- char buf[8] = {0};
- struct input_event ev_input = { 0 };
- const int size = sizeof(struct input_event);
-
- epoll_fd_t = epoll_create(2);
-/*
- struct epoll_event event;
- memset(&event, 0, sizeof(struct epoll_event));
- event.events = EPOLLIN | EPOLLET;
- event.data.fd = open("/dev/input/event0", O_RDONLY); // 根据实际情况指定正确的GPIO设备文件名
-
- fd_t = event.data.fd;
- if (epoll_ctl(epoll_fd_t, EPOLL_CTL_ADD, event.data.fd, &event) == -1)
- {
- LOGE("Failed to add GPIO device file.");
- return NULL;
- }
-
- memset(&event, 0, sizeof(struct epoll_event));
- event.events = EPOLLIN | EPOLLET;
- event.data.fd = socket_t[0];
- LOGE("threadFunction event.data.fd =[%d] ", event.data.fd);
-
- if (epoll_ctl(epoll_fd_t, EPOLL_CTL_ADD, event.data.fd, &event) == -1)
- {
- LOGE("Failed to add GPIO device file.");
- return NULL;
- }
-*/
-
-#if defined(MBTK_SG_SUPPORT)
- fd_t = open("/dev/input/event1", O_RDONLY);
- LOGI("init sg pthread_event");
-#else
- fd_t = open("/dev/input/event0", O_RDONLY);
-#endif
-
- sleep_epoll_register(epoll_fd_t, fd_t);
- sleep_epoll_register(epoll_fd_t, socket_t[1]);
-
- while (true)
- {
- struct epoll_event events[2];
- struct epoll_event ev;
- int cmd = 0;
-
- int numEvents = epoll_wait(epoll_fd_t, events, 2, -1);
-
- for (i = 0; i < numEvents; ++i)
- {
- if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP))
- {
- LOGE("Error on GPIO device.");
- return NULL;
- }
- else if ((events[i].events & EPOLLIN) || (events[i].events & EPOLLET))
- {
- //handleInterrupt(events[i].data.fd);
- if (events[i].data.fd == socket_t[1])
- {
- memset(buf, 0, sizeof(buf));
- read(socket_t[1], buf, sizeof(buf));
- if (1 == atoi(buf))
- {
- if(close(fd_t) == 0)
- LOGI("close(fd_t)ing");
-
- sleep_epoll_deregister(epoll_fd_t, socket_t[1]);
- sleep_epoll_deregister(epoll_fd_t, fd_t);
- /*
- memset(&ev, 0, sizeof(struct epoll_event));
- ev.events = EPOLLIN | EPOLLET;
- ev.data.fd = socket_t[1];
- epoll_ctl( epoll_fd_t, EPOLL_CTL_DEL, ev.data.fd, &ev);
-
- memset(&ev, 0, sizeof(struct epoll_event));
- ev.events = EPOLLIN | EPOLLET;
- ev.data.fd = fd_t;
- epoll_ctl( epoll_fd_t, EPOLL_CTL_DEL, ev.data.fd, &ev);
- */
- LOGI("do pthread_exit");
- return NULL;
- }
- }
- else if (events[i].data.fd == fd_t)
- {
- LOGI("go pthread_event");
- memset(&ev_input, 0x00, size);
- read(fd_t, &ev_input, size);
- LOGI("ev_input type = %x, code = %x, value = %x", ev_input.type, ev_input.code,ev_input.value);
- if (ev_input.code == 2)
- {
- LOGI(">>>>ev_input.value = [%d]",ev_input.value);
- pinValue = (int)ev_input.value;
- edge_t = pinValue;
- lpm_init.wakehandle(edge_t);
- }
- }
- else
- {
- LOGE("Unknown events[i].data.fd = %d", events[i].data.fd);
- }
- }
- }
- }
- return NULL;
-}
-
-int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg)
-{
- //UNUSED(qser_lpm_handler);
- //UNUSED(qser_lpm_cfg);
- if (socketpair( AF_LOCAL, SOCK_STREAM, 0, socket_t ) < 0 )
- {
- LOGE("[qser_lpm_init] could not create thread control socket pair: %s", strerror(errno));
-
- /*close the control socket pair && Retry again.*/
- if(socket_t[0] > 0)
- {
- close(socket_t[0] );
- socket_t[0] = -1;
- }
-
- if(socket_t[1] > 0)
- {
- close(socket_t[1] );
- socket_t[1] = -1;
- }
- return -1;
- }
- lpm_init.wakeupin.wakeupin_pin = qser_lpm_cfg->wakeupin.wakeupin_pin;
- LOGI(">>pin = %d",lpm_init.wakeupin.wakeupin_pin);
- lpm_init.wakeupin.wakeupin_edge = qser_lpm_cfg->wakeupin.wakeupin_edge;
- LOGI(">>edge = %d",lpm_init.wakeupin.wakeupin_edge);
- edge_t = qser_lpm_cfg->wakeupin.wakeupin_edge;//保留原始状态值 0 or 1
- lpm_init.wakehandle = qser_lpm_handler;
-
- pthread_attr_t thread_attr;
- pthread_attr_init(&thread_attr);
-
- if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
- {
- LOGE("pthread_attr_setdetachstate() fail");
- return -1;
- }
-
- if(pthread_create(&lpm_t, &thread_attr, threadFunction, NULL))
- //if(pthread_create(&lpm_t, NULL, threadFunction, NULL))
- {
- LOGE("qser_lpm_init can't create thread");
- return -1;
- }
-
- pthread_attr_destroy(&thread_attr);
-
- //if (edge_t != qser_lpm_cfg->wakeupin.wakeupin_edge)//说明有变化,并且和原来的值不相同
- //qser_lpm_handler(edge_t);
-
- return 0;
-}
-
-int qser_lpm_deinit(void)
-{
- char buf[4]={0};
-
- if (fd_t == -1)
- return 0;
-
- if (fd_t != -1)
- {
- //char cmd = 1;
- strcpy(buf, "1");
- void* dummy = NULL;
- write( socket_t[0], buf, sizeof(buf) );
- //pthread_join(lpm_t, &dummy);
-
- sleep(1);
- // close the control socket pair
- if(socket_t[0] > 0)
- {
- close(socket_t[0] );
- socket_t[0] = -1;
- }
- if(socket_t[1] > 0)
- {
- close(socket_t[1] );
- socket_t[1] = -1;
- }
-
- //重置还原
- fd_t = -1;
-
- }
-
- return 0;
-}
-
-/*
-例如AT*POWERIND=31,就相当于设置NETWORK、SIM、SMS、CS CALL、PS DATA变化时都不主动上报,
-其中PS DATA目前暂时不支持,只是保留了这个标志位;
-AP power state: 1~31 means suspend, bitmap: bit0 - NETWORK;bit1 - SIM;bit2 - SMS;bit3 - CS CALL;bit4 - PS DATA
-0 means resume all.
-目标文件"/system/etc/powerind"
-如果bit0-bit3都配置可以采用的值是1-15,如果是当前采用NETWORK SMS CALL 则值的取值是 1 4 8 5 9 12 13
-
-*/
-
-int qser_whitelist_set(char* whitelish)
-{
- //UNUSED(whitelish);
- uint32 on = 0;
- int call_t, nw_t, data_t, sms_t, tmp;
-
- int len = strlen(whitelish);
-
- if (len != 4)
- {
- LOGE("whitelish num error num=[%d]",len);
- return -1;
- }
-
- tmp = atoi(whitelish);
-
- call_t = tmp/1000;
- nw_t = tmp%1000/100;
- data_t = tmp%1000%100/10;
- sms_t = tmp%1000%100%10;
-
- if (call_t == 1)
- call_Off = TRUE;
- else
- call_Off = FALSE;
-
- if (nw_t == 1)
- nw_off = TRUE;
- else
- nw_off = FALSE;
-
- if (data_t == 1)
- data_off = TRUE;
- else
- data_off = FALSE;
-
- if (sms_t == 1)
- sms_off = TRUE;
- else
- sms_off = FALSE;
-
- if (call_Off == FALSE && nw_off == FALSE && data_off == FALSE && sms_off == FALSE)
- {
- on = 29;//0000的情况,所有上报源都屏蔽,SIM的上报会一直被包含在内
- }
- else
- {
- if (call_Off == TRUE)
- call_t = 8;
- else
- call_t = 0;
-
- if (nw_off == TRUE)
- nw_t = 1;
- else
- nw_t = 0;
-
- if (data_off == TRUE)
- data_t = 16;
- else
- data_t = 0;
-
- if (sms_off == TRUE)
- sms_t = 4;
- else
- sms_t = 0;
-
- on = 29 - (call_t + nw_t + data_t + sms_t);//SIM的上报会一直被包含在内
- }
-
- if(whitelist_info_handle == NULL)
- {
- whitelist_info_handle = mbtk_info_handle_get();
- if(whitelist_info_handle)
- {
- LOGI("creat whitelist_info_handle is success");
- }
- else
- {
- LOGE("creat whitelist_info_handle is fail");
- return -1;
- }
- }
-
- int err = mbtk_wakeup_state_set(whitelist_info_handle, on);
- if(err)
- {
- LOGE("whitelist_info_handle Error : %d", err);
- return -1;
- }
-
- return 0;
-}
-
-
-int qser_whitelist_get(char* whitelish)
-{
- //UNUSED(whitelish);
- char list[10]={0};
- int call_t, nw_t, data_t, sms_t;
- int get_tmp;
-
- get_tmp = powerrind_get();
- //LOGI(">>>get_tmp: %d",get_tmp);
-
- //call 8 nw 1 data 16 sms 4 SIM的上报会一直被包含在内
- switch(get_tmp)
- {
- case 0:
- sprintf(list, "%d%d%d%d", 1, 1, 1, 1);
- break;
- case 8:
- sprintf(list, "%d%d%d%d", 0, 1, 1, 1);
- break;
- case 1:
- sprintf(list, "%d%d%d%d", 1, 0, 1, 1);
- break;
- case 16:
- sprintf(list, "%d%d%d%d", 1, 1, 0, 1);
- break;
- case 4:
- sprintf(list, "%d%d%d%d", 1, 1, 1, 0);
- break;
-
- case 9:
- sprintf(list, "%d%d%d%d", 0, 0, 1, 1);
- break;
- case 24:
- sprintf(list, "%d%d%d%d", 0, 1, 0, 1);
- break;
- case 12:
- sprintf(list, "%d%d%d%d", 0, 1, 1, 0);
- break;
- case 17:
- sprintf(list, "%d%d%d%d", 1, 0, 0, 1);
- break;
- case 5:
- sprintf(list, "%d%d%d%d", 1, 0, 1, 0);
- break;
- case 20:
- sprintf(list, "%d%d%d%d", 1, 1, 0, 0);
- break;
-
- case 25:
- sprintf(list, "%d%d%d%d", 0, 0, 0, 1);
- break;
- case 13:
- sprintf(list, "%d%d%d%d", 0, 0, 1, 0);
- break;
- case 28:
- sprintf(list, "%d%d%d%d", 0, 1, 0, 0);
- break;
- case 21:
- sprintf(list, "%d%d%d%d", 1, 0, 0, 0);
- break;
-
- case 29:
- sprintf(list, "%d%d%d%d", 0, 0, 0, 0);
- break;
-
- default :
- LOGE("qser_whitelist_get is error");
- break;
- }
-
- //LOGI(">>>get list: %s",list);
- strncpy(whitelish, list, strlen(list));
-
- if(whitelist_info_handle != NULL)
- {
- mbtk_info_handle_free(&whitelist_info_handle);
- LOGI("deinit whitelist_info_handle is succuess");
- }
-
- return 0;
-}
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_sms.c b/mbtk/liblynq_lib_v2/src/lynq_sms.c
deleted file mode 100755
index ed9c1b3..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_sms.c
+++ /dev/null
@@ -1,563 +0,0 @@
-#include "lynq_qser_sms.h"
-#include "mbtk_type.h"
-#include "mbtk_pdu_sms.h"
-#include "mbtk_info_api.h"
-#include "lynq_sms.h"
-#include "mbtk_log.h"
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-#define TELEPHONE_NUM_MAX 16
-#define MSM_NUMBER_MAX 1024+1
-#define RES_NUM_MIN 128
-
-
-#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))
-
-static mbtk_info_handle_t* sms_info_handle = NULL;
-static char sms_center_address[128] = {0};
-
-typedef struct
-{
- QSER_SMS_RxMsgHandlerFunc_t handlerPtr;
- void* contextPtr;
-} lynq_sms_cb_func;
-
-static lynq_sms_cb_func lynq_sms_func_cb_handle;
-
-sms_client_handle_type g_sms_val = -1;
-
-
-void lynq_sms_state_change_cb(const void* data, int data_len)
-{
- LOGV("sms_state_change_cb()----------start\n");
- uint8 *ptr = (uint8*)data;
- //printf("3sms_state_change_cb() : %s\n", ptr);
-
- if (!strncmp("+CMT:", ptr, 5))//丢弃无用消息
- return ;
-
- struct SMS_Struct s = PDUDecoding(ptr);
- /*
- printf("服务中心地址: %s\n", s.SCA);
- printf("发送方地址: %s\n", s.OA);
- printf("服务中心时间戳: %s\n", s.SCTS);
- printf("消息内容: %s\n", s.UD);
- printf("数据编码方案: %s\n", DSC_to_msg(s.DCS));
- */
- QSER_SMS_Msg_t* tmp_data = NULL;
-
- tmp_data = (QSER_SMS_Msg_t*)malloc(sizeof(QSER_SMS_Msg_t));
- memset(tmp_data,0x00, sizeof(QSER_SMS_Msg_t));
-
- tmp_data->format = s.DCS;
- //printf("t数据编码方案: %d\n", tmp_data->format);
- memcpy(tmp_data->src_addr, s.OA, strlen(s.OA));
- //printf("t发送方地址: %s\n", tmp_data->src_addr);
- memcpy(tmp_data->timestamp, s.SCTS, strlen(s.SCTS));
- //printf("t服务中心时间戳: %s\n", tmp_data->timestamp);
- tmp_data->sms_data_len = strlen(s.UD);
- //printf("t消息内容长度: %d\n", tmp_data->sms_data_len);
- memcpy(tmp_data->sms_data, s.UD, strlen(s.UD));
- //printf("t消息内容: %s\n", tmp_data->sms_data);
-
- lynq_sms_func_cb_handle.handlerPtr(tmp_data, NULL);
-
- free(tmp_data);
-
-}
-
-
-int qser_sms_client_init(sms_client_handle_type *ph_sms)//out
-{
- //UNUSED(ph_sms);
-
- if(sms_info_handle == NULL)
- {
- sms_info_handle = mbtk_info_handle_get();
- if(sms_info_handle)
- {
- LOGI("creat sms_info_handle is success");
- *ph_sms = sms_info_handle->client_fd;
- g_sms_val = sms_info_handle->client_fd;
- }
- else
- {
- LOGE("creat sms_info_handle is fail");
- return -1;
- }
- }
-
- return 0;
-}
-
-int qser_sms_client_deinit(sms_client_handle_type h_sms)//in
-{
- //UNUSED(h_sms);
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL\n");
- return -1;
- }
-
- mbtk_sms_state_change_cb_reg(sms_info_handle, NULL);
-
- if(sms_info_handle)
- {
- mbtk_info_handle_free(&sms_info_handle);
- LOGI("deinit sms_info_handle is succuess");
- }
- else
- {
- LOGE("deinit sms_info_handle is fail");
- return -1;
- }
-
- return 0;
-}
-
-int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info)//in in 发送短信的内容、目的号码
-{
- //UNUSED(h_sms);
- //UNUSED(pt_sms_info);
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if (pt_sms_info == NULL)
- {
- LOGE("QSER_sms_info_t NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_send_sms sms_info_handle NULL");
- return -1;
- }
-
- uint8_t *phone_num = NULL, *data = NULL;
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- char resp[RES_NUM_MIN] = {0};
- char pdu_data[512] = {0};
- char phone_lenth[10] = {0};
- char mem[10] = {0};
- char *p = pdu_data;
- int mode = 0;
- int err = 0;
- int i = 0;
-
- data = pt_sms_info->sms_data;
-
- phone_num = pt_sms_info->src_addr;
-
- if (pt_sms_info->format == 0)//7
- mode = 1;
- else if (pt_sms_info->format == 1)//8
- return SMS_ERR;
- else if (pt_sms_info->format == 2)//USC2
- mode = 0;
- else
- return -1;
-
- //设置存储器
-/*
- if (pt_sms_info->storage == 0)
- {
- strcpy(mem, "SM");
- }
- else if (pt_sms_info->storage == 1)
- {
- strcpy(mem, "ME");
- }
- else
- {
- LOGE("qser_sms_deletefromstorage storage is no Support");
- return -1;
- }
-
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cpms_set(sms_info_handle, mem, resp);
- if(err) {
- LOGE("Error : %d", err);
- } else {
- LOGI("cpms set success. resp:%s", resp);
- }
-*/
- if(data == NULL)
- {
- LOGE("qser_sms_send_sms data NULL");
- return -1;
- }
-
- if(phone_num == NULL)
- {
- LOGE("qser_sms_send_sms phone_num NULL");
- return -1;
- }
-
- if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
- {
- LOGE("strlen(telephony_num):%d", strlen(phone_num));
- LOGE("strlen(msg):%d", strlen(data));
- return -1;
- }
-
- if (mode == 0)// PDU
- {
-#if 1
- if (sms_center_address[0] == '\0')
- {
- memset(sms_center_address, 0, sizeof(sms_center_address));
- memcpy(sms_center_address, "+8613800280500", strlen("+8613800280500"));
- }
-
- //printf("phone_num:%s\n", phone_num);
- //printf("sms_center_address:%s\n", sms_center_address);
- //printf("data:%s\n", data);
-
- char* pdu = NULL;
- char* smsc = SCAEncoding(sms_center_address);
- struct PDUS *pdus = PDUEncoding(sms_center_address,phone_num, data, NULL);
-
- for (i = 0; i < pdus->count; i++)
- {
- LOGI("第 %d 条:", i + 1);
- LOGI("%s\n", pdus->PDU[i]);
- pdu = pdus->PDU[i];
- }
-
- sprintf(p, "%s",smsc);
- LOGI("pdu_data:%s", pdu_data);
- sprintf(p+strlen(p), "%s", pdu);
- LOGI("pdu_data:%s",pdu_data);
-
- //sprintf(cmgs,"%d,%s",strlen(pdu_data), pdu_data);
- int t = strlen(pdu_data);
- sprintf(cmgs,"%d,%s",(t-18)/2, pdu_data);
- LOGI("cmgs:%s", cmgs);
-#else
- char *tmp_t = "0891683108200805F011000D91688189914026F3000800044F60597D";
- sprintf(cmgs,"%d,%s",19,tmp_t);
- printf("cmgs:%s\n", cmgs);
-#endif
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgf_set(sms_info_handle, mode);
- if(err)
- {
- LOGE("cmgf set error : %d", err);
- }
- else
- {
- LOGI("cmgf set success");
- }
-
- err = mbtk_sms_cmgs_set(sms_info_handle, cmgs, resp);
- if(err)
- {
- LOGE("Error : %d", err);
- return -1;
- }
- else
- {
- LOGI("cmgs set success . resp:%s", resp);
- }
- }
- else if (mode == 1) // text
- {
- err = mbtk_sms_cmgf_set(sms_info_handle, mode);
- if(err)
- {
- LOGE("cmgf set error : %d", err);
- }
- else
- {
- LOGI("cmgf set success");
- }
-
- sprintf(cmgs,"%s,%s", phone_num, data);
- LOGI("cmgs:%s", cmgs);
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgs_set(sms_info_handle, cmgs, resp);
- if(err)
- {
- LOGE("Error : %d", err);
- return -1;
- }
- else
- {
- LOGI("cmgs set success . resp:%s", resp);
- }
- }
- else
- {
- LOGE("Error : mode");
- return -1;
- }
-
- return 0;
-}
-
-//注册接收新短信
-int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)//in sms电话状态回调函数 in 主要是获取 上报 的内容
-{
- //UNUSED(handlerPtr);
- //UNUSED(contextPtr);
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_addrxmsghandler sms_info_handle NULL");
- return -1;
- }
-
- int err = mbtk_sms_cnmi_set(sms_info_handle);
- if(err)
- {
- LOGE("set cnmi fail");
- return -1;
- }
-
- lynq_sms_func_cb_handle.handlerPtr = handlerPtr;
- lynq_sms_func_cb_handle.contextPtr = contextPtr;
-
- mbtk_sms_state_change_cb_reg(sms_info_handle, lynq_sms_state_change_cb);
-
- return 0;
-}
-
-//删除短信
-int qser_sms_deletefromstorage(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage)//in in 删除短信的信息
-{
- //UNUSED(h_sms);
- //UNUSED(pt_sms_storage);
- char cmgd[128] = {0};
- int err = 0;
-
- int t_storage = 0;
- char mem[10] = {0};
- char resp[RES_NUM_MIN] = {0};
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(pt_sms_storage == NULL)
- {
- LOGE("qser_sms_deletefromstorage pt_sms_storage NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_deletefromstorage sms_info_handle NULL");
- return -1;
- }
-/*
- t_storage = pt_sms_storage->storage; //设置存储器
-
- if (t_storage == 0)
- {
- strncpy(mem, "SM", 2);
- }
- else if (t_storage == 1)
- {
- strncpy(mem, "ME", 2);
- }
- else
- {
- LOGE("qser_sms_deletefromstorage storage is no Support");
- return -1;
- }
-
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cpms_set(sms_info_handle, mem, resp);
- if(err) {
- LOGE("Error : %d", err);
- } else {
- LOGI("cpms set success. resp:%s", resp);
- }
-*/
- uint32_t id_x = 0; //若后面其他产品是int类型则用宏控制
- id_x = pt_sms_storage->storage_idx;//获取idx的值
-
- if(id_x == -1) //delete all
- {
- memcpy(cmgd, "0,4", strlen("0,4"));
- }
- else
- {
- sprintf(cmgd,"%d",id_x);
- }
-
- LOGI("cmgd:%s", cmgd);
-
- err = mbtk_sms_cmgd_set(sms_info_handle, cmgd);
- if(err)
- {
- LOGE("qser_sms_deletefromstorage Error : %d", err);
- return -1;
- }
- else
- {
- LOGI("qser_sms_deletefromstorage set success");
- }
-
- return 0;
-}
-
-//获取短信中心号码
-int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms,QSER_sms_service_center_cfg_t *set_sca_cfg)//in out
-{
- //UNUSED(h_sms);
- //UNUSED(set_sca_cfg);
- char sms_center_addree[254] = {0};
- int len_t;
- char *p1, *p2 ,*substr;
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if (set_sca_cfg == NULL)
- {
- LOGE("QSER_sms_service_center_cfg_t NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_getsmscenteraddress sms_info_handle NULL");
- return -1;
- }
-
- int err = mbtk_sms_csca_get(sms_info_handle, sms_center_addree);
- if(sms_center_addree[0] == '\0')
- {
- LOGE("qser_sms_getsmscenteraddress Error : %d", err);
- return -1;
- }
- else
- {
- p1 = strchr(sms_center_addree, '\"');
- p2 = strrchr(sms_center_addree, '\"');
- if (p1 && p2 && p2 > p1)
- {
- len_t = p2 - p1 - 1;
- char substr_t[len_t + 1];
- strncpy(substr_t, p1 + 1, len_t);
- substr_t[len_t] = '\0';
-
- substr = substr_t;
-
- memcpy(set_sca_cfg->service_center_addr, substr, strlen(substr));
- memcpy(sms_center_address, substr, strlen(substr));
-
- LOGI("qser_sms_getsmscenteraddress success");
- }
- else
- {
- LOGE("String inside double quotes not found");
- return -1;
- }
- }
-
- return 0;
-}
-
-//设置短信中心号码
-int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg)//in in
-{
- //UNUSED(h_sms);
- //UNUSED(get_sca_cfg);
- char *destNum = NULL;
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_setsmscenteraddress sms_info_handle NULL");
- return -1;
- }
-
- if(get_sca_cfg == NULL)
- {
- LOGE("qser_sms_setsmscenteraddress get_sca_cfg NULL");
- return -1;
- }
-
- destNum = get_sca_cfg->service_center_addr;
-
- //printf("1destNum:%s\n", destNum);
- memset(sms_center_address, 0, sizeof(sms_center_address));
- memcpy(sms_center_address, destNum, strlen(destNum));
-
- if (destNum == NULL)
- {
- LOGE("qser_sms_setsmscenteraddress destNum NULL");
- return -1;
- }
-
- int err = mbtk_sms_csca_set(sms_info_handle, destNum);
- if(err)
- {
- LOGE("Error : %d", err);
- return -1;
- }
- else
- {
- // memset(sms_center_address, 0, sizeof(sms_center_address));
- // memcpy(sms_center_address, destNum, strlen(destNum));
- //printf("destNum:%s\n", destNum);
- LOGI("qser_sms_setsmscenteraddress success");
- }
-
- return 0;
-}
-
-
-//显示删除列表
-int qser_sms_deletefromstoragelist( sms_client_handle_type h_sms, char* del_list)//in out
-{
- //UNUSED(h_sms);
- //UNUSED(get_sca_cfg);
-
- if (h_sms != g_sms_val || g_sms_val == -1)
- {
- LOGE("handle NULL");
- return -1;
- }
-
- if(sms_info_handle == NULL)
- {
- LOGE("qser_sms_deletefromstoragelist sms_info_handle NULL");
- return -1;
- }
-
- int err = mbtk_sms_cmgd_get(sms_info_handle, del_list);
- if(err > 0 && err != 300)//MBTK_INFO_ERR_SUCCESS
- {
- LOGE("Error : %d", err);
- return -1;
- }
-
- return 0;
-}
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_thermal.c b/mbtk/liblynq_lib_v2/src/lynq_thermal.c
deleted file mode 100755
index f3e6e3d..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_thermal.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#if 1
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-#include "lynq_qser_thermal.h"
-#include "mbtk_info_api.h"
-
-/****************************DEFINE***************************************/
-#define QSER_RESULT_FAIL -1
-#define QSER_RESULT_SUCCESS 0
-/****************************DEFINE***************************************/
-
-/****************************VARIABLE***************************************/
-extern mbtk_info_handle_t* qser_info_handle;
-extern int qser_info_handle_num;
-/****************************VARIABLE***************************************/
-
-
-/******************************FUNC*****************************************/
-static int qser_thermal_client_init(void)
-{
- if(qser_info_handle == NULL)
- {
- qser_info_handle = mbtk_info_handle_get();
- if(qser_info_handle)
- {
- qser_info_handle_num++;
- }
- else
- {
- LOGE("[qser_thermal] mbtk_info_handle_get() fail.");
- return QSER_RESULT_FAIL;
- }
- }
- else
- {
- qser_info_handle_num++;
- }
-
- LOGE("[qser_thermal] mbtk_info_handle_get() success.");
- return QSER_RESULT_SUCCESS;
-}
-
-static int qser_thermal_client_deinit(void)
-{
- if(qser_info_handle)
- {
- LOGE("[qser_thermal] qser_info_handle_num = %d", qser_info_handle_num);
- if(qser_info_handle_num == 1)
- { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&qser_info_handle);
- if(ret)
- {
- LOGE("[qser_thermal] mbtk_info_handle_free() fail.");
- return QSER_RESULT_FAIL;
- }
- else
- {
- qser_info_handle_num = 0;
- qser_info_handle = NULL;
- }
- }
- else
- {
- qser_info_handle_num--;
- }
- }
- else
- {
- LOGE("[qser_thermal] handle not inited.");
- return QSER_RESULT_FAIL;
- }
-
- return QSER_RESULT_SUCCESS;
-}
-
-/******************************FUNC*****************************************/
-
-/****************************API***************************************/
-int get_thermal_zone(int *numbers, int size)
-{
- if(numbers == NULL || size < 6)
- {
- LOGE("[qser_thermal]: numbers is NULL!");
- return QSER_RESULT_FAIL;
- }
-
- int ret = 0;
- int thermal = -1;
- int thermal_num = 0;
- mbtk_thermal_info_t temp;
- memset(&temp, 0, sizeof(mbtk_thermal_info_t));
-
- ret = qser_thermal_client_init();
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_thermal]qser_led_client_init fail.");
- return QSER_RESULT_FAIL;
- }
-
- ret = mbtk_temp_get(qser_info_handle, 0, &temp);
- thermal = temp.ther;
- if(ret != QSER_RESULT_SUCCESS)
- {
- LOGE("[qser_thermal]mbtk_temp_get fail.");
- qser_thermal_client_deinit();
- return QSER_RESULT_FAIL;
- }
-
- qser_thermal_client_deinit();
- numbers[thermal_num++] = thermal;
- for(; thermal_num < size; thermal_num++)
- {
- numbers[thermal_num] = 0;
- }
-
- return 6;
-}
-/****************************API***************************************/
-
-#endif
diff --git a/mbtk/liblynq_lib_v2/src/lynq_time.c b/mbtk/liblynq_lib_v2/src/lynq_time.c
deleted file mode 100755
index 8f432f0..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_time.c
+++ /dev/null
@@ -1,318 +0,0 @@
-#include "lynq_systime.h"
-#include "mbtk_type.h"
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <errno.h>
-#include <netdb.h>
-#include <string.h>
-#include <unistd.h>
-#include <time.h>
-#include <netinet/in.h>
-
-#include <cutils/properties.h>
-#include <sys/time.h>
-
-
-#include "mbtk_ntp.h"
-#include "mbtk_net_control.h"
-#include "lynq_systime.h"
-#include "mbtk_type.h"
-
-
-#define MBTK_AT_NTP_LEN_MAX 128
-
-
-
-
-typedef enum {
- LYNQ_TIME_TYPE_CELL = 0, //NITZ
- LYNQ_TIME_TYPE_NTP,
- LYNQ_TIME_TYPE_GNSS,
- LYNQ_TIME_TYPE_USER,
-
- LYNQ_TIME_TYPE_UNUSE
-} lynq_time_type_enum;
-
-//enable set time from ntp
-int ntp_sync_time(int enable);
-//enable set time from nitz
-int modem_time_enable(int enable);
-//enable set time from gnss
-int gnss_time_enable(int enable);
-//enable set time from user
-int user_set_time(char* date, char* time);
-// RTC TIME set to system
-int lynq_sync_time_from_rtc(void);
-//check sysytem type
-int lynq_get_time_src_status (time_src_status_s * time_src);
-// system time set to RTC
-int lynq_set_rtc_time(void);
-// get RTC time
-int lynq_get_rtc_time(unsigned long *ulsec);
-
-
-
-//int req_time_set(int type, char *time, int *cme_err);
-static int metis_strptime(char *str_time)
-{
- printf("%s(), str_time:%s\n", __FUNCTION__, str_time);
- struct tm stm;
- char dateTime[30];
- struct timeval tv;
- if(strptime(str_time, "%Y-%m-%d %H:%M:%S",&stm) != NULL)
- {
- time_t _t = mktime(&stm);
- tv.tv_sec = _t;
- if(settimeofday(&tv, NULL)) {
- printf("Set time fail:%d");
- return -1;
- } else {
- printf("Set time to %s.", str_time);
- return 0;
- }
- } else {
- printf("Set time fail.");
- return -1;
- }
- return 0;
-}
-
-
-
-static void* ntp_pthread_run(int* ntp_flag)
-{
- if (mbtk_net_state_get() == MBTK_NET_STATE_OFF)
- {
- printf("Network is disconnected. Set time fail.");
- if(NULL != ntp_flag)
- {
- *ntp_flag = -1;
- }
- return NULL;
- }
- printf("Network is connected.");
-
- char time_type[10];
- while(1){
- memset(time_type, 0, 10);
- property_get("persist.mbtk.time_type", time_type, "0");
- if(atoi(time_type) == LYNQ_TIME_TYPE_NTP) // NTP time
- {
- char time_str[100] = {0};
- time_t time = 0;
- if((time = (time_t)mbtk_at_systime()) == 0)
- {
- printf("NTP client fail!\n");
- if(NULL != ntp_flag)
- {
- *ntp_flag = -1;
- }
- return NULL;
- }
- struct tm *tm_t;
- tm_t = localtime(&time);
- strftime(time_str,128,"%F %T",tm_t);
-
- // NTP time
- metis_strptime(time_str);
- break;
- } else {
- break;
- }
-
- sleep(64); // Sleep 64s.
- }
- if(NULL != ntp_flag)
- {
- *ntp_flag = 0;
- }
- return NULL;
-}
-
-int set_time_user(char* data_time_str)
-{
-
- int ret = 0;
- if(strlen(data_time_str) > 0)
- {
- ret = metis_strptime(data_time_str);
- }
-
- return ret;
-}
-
-
-//MBTK_TIME_TYPE_CELL = 0, //NITZ
-//MBTK_TIME_TYPE_NTP,
-//MBTK_TIME_TYPE_GNSS,
-//MBTK_TIME_TYPE_USER
-void set_time_type(int mbtk_time_type)
-{
- char type_str[10] = {0};
- sprintf(type_str, "%d", mbtk_time_type);
- property_set("persist.mbtk.time_type", type_str);
-
- return;
-}
-
-
-
-
-int ntp_sync_time(int enable)
-{
- if(0 != enable && 1 != enable)
- {
- return -1;
- }
- UNUSED(enable);
- int ntp_status = 0;
- if(enable)
- {
- ntp_pthread_run(&ntp_status);
- if(ntp_status == 0)
- {
- set_time_type(LYNQ_TIME_TYPE_NTP);
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
-
- return 0;
-}
-
-//enable set time from nitz
-int modem_time_enable(int enable)
-{
- UNUSED(enable);
-
- if(enable)
- {
- set_time_type(LYNQ_TIME_TYPE_CELL);
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
- return 0;
-}
-
-
-//enable set time from gnss
-int gnss_time_enable(int enable)
-{
- UNUSED(enable);
- if(enable)
- {
- set_time_type(LYNQ_TIME_TYPE_GNSS);
- }
- else
- {
- set_time_type(LYNQ_TIME_TYPE_UNUSE);
- }
-
- return 0;
-}
-
-
-//enable set time from user
-int user_set_time(char* date, char* time)
-{
- UNUSED(date);
- UNUSED(time);
- if(date == NULL || time == NULL)
- {
- return -1;
- }
-
- int ret = 0;
- char time_str[128] ={0};
- memset(time_str, 0x0, MBTK_AT_NTP_LEN_MAX);
-
- char *p = time;
- char *p1 = strstr(p, ":");
- char *p2 = strstr(p1+1, ":");
- if(p2 == NULL)
- {
- sprintf(time_str, "%s %s:00", date, time); //2023-11-30 11:30
- set_time_type(LYNQ_TIME_TYPE_USER);
- ret = set_time_user(time_str);
- }else
- {
- sprintf(time_str, "%s %s", date, time); //2023-11-30 11:30:31
- set_time_type(LYNQ_TIME_TYPE_USER);
- ret = set_time_user(time_str);
- }
-
- return ret;
-}
-
-
-//check sysytem type
-int lynq_get_time_src_status (time_src_status_s * time_src)
-{
- UNUSED(time_src);
- int type = 0;
- char time_type[] ={0};
- property_get("persist.mbtk.time_type", time_type, "0");
-
- type = atoi(time_type);
- printf("time_type :%d", type);
- if(type == LYNQ_TIME_TYPE_NTP)
- {
- time_src->ntp = 1;
- time_src->nitz = 0;
- time_src->gnss = 0;
- }
- else if(type == LYNQ_TIME_TYPE_CELL)
- {
- time_src->ntp = 0;
- time_src->nitz = 1;
- time_src->gnss = 0;
- }
- else if(type == LYNQ_TIME_TYPE_GNSS)
- {
- time_src->ntp = 0;
- time_src->nitz = 0;
- time_src->gnss = 1;
- }
- else if(type == LYNQ_TIME_TYPE_UNUSE)
- {
- time_src->ntp = 0;
- time_src->nitz = 0;
- time_src->gnss = 0;
- }
-
- return 0;
-}
-
-// RTC TIME set to system
-int lynq_sync_time_from_rtc(void)
-{
- system("hwclock --hctosys");
- return 0;
-}
-
-// system time set to RTC
-int lynq_set_rtc_time(void)
-{
-// system("hwclock --systohc");
- system("hwclock -w rtc0");
- return 0;
-}
-
-int lynq_get_rtc_time(unsigned long *ulsec)
-{
- UNUSED(ulsec);
-
- return 0;
-}
-
-
diff --git a/mbtk/liblynq_lib_v2/src/lynq_voice_call.c b/mbtk/liblynq_lib_v2/src/lynq_voice_call.c
deleted file mode 100755
index 9aea174..0000000
--- a/mbtk/liblynq_lib_v2/src/lynq_voice_call.c
+++ /dev/null
Binary files differ
diff --git a/mbtk/libmbtk_audio/Makefile b/mbtk/libmbtk_audio/Makefile
deleted file mode 100755
index 5a5da35..0000000
--- a/mbtk/libmbtk_audio/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_audio
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lubus -lubox -lblobmsg_json -lmbtk_lib -lcutils -laudio-apu -lprop2uci
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE +=
-
-MY_FILES_PATH:=$(LOCAL_PATH)/src
-#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
-#MY_FILES_PATH += $(LOCAL_PATH)/ql
-#endif
-
-#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
-#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
-#endif
-
-#MY_FILES_SUFFIX:=%.c %.cpp
-#My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-#MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-#MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-
-#LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
-#$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
-
-LOCAL_SRC_FILES = src/mbtk_audio.c \
- src/mbtk_audio_gain.c \
- src/mbtk_pcm_stream.c \
- src/mbtk_wav.c \
- src/mbtk_audio_ubus.c
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_audio.so
-
-all: $(dtarget)
-
-$(dtarget): $(OBJS)
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_coap/Makefile b/mbtk/libmbtk_coap/Makefile
deleted file mode 100755
index b5afc6a..0000000
--- a/mbtk/libmbtk_coap/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_coap
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net
-
-# -lubus -lubox -luci -lprop2uci -lrilutil -lblobmsg_json
-
-ifeq ($(BUILD_PLATFORM), master)
-#LIBS += -lcutils -laudio-apu
-endif
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-#DEFINE += -DMBTK_NET_MONITOR_SUPPORT
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_coap.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_ecall/Makefile b/mbtk/libmbtk_ecall/Makefile
deleted file mode 100755
index 59b1aeb..0000000
--- a/mbtk/libmbtk_ecall/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_ftp
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_ftp.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_factory/Makefile b/mbtk/libmbtk_factory/Makefile
deleted file mode 100755
index 25e7b9e..0000000
--- a/mbtk/libmbtk_factory/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_factory
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_audio -lubox -lubus
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_factory.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_fota/Makefile b/mbtk/libmbtk_fota/Makefile
deleted file mode 100755
index c51f997..0000000
--- a/mbtk/libmbtk_fota/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_fota
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lubus -lubox -lcutils -lblobmsg_json -lprop2uci
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_fota.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_ftp/Makefile b/mbtk/libmbtk_ftp/Makefile
deleted file mode 100755
index 59b1aeb..0000000
--- a/mbtk/libmbtk_ftp/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_ftp
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_ftp.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_gnss/Makefile b/mbtk/libmbtk_gnss/Makefile
deleted file mode 100755
index dd61f5a..0000000
--- a/mbtk/libmbtk_gnss/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_gnss
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lubus -lubox -lmbtk_lib
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-LOCAL_SRC_FILES = mbtk_gnss.c
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_gnss.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_http/Makefile b/mbtk/libmbtk_http/Makefile
deleted file mode 100755
index 5307d5c..0000000
--- a/mbtk/libmbtk_http/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_http
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_http.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_lib/Makefile b/mbtk/libmbtk_lib/Makefile
index 8183ffd..679250b 100755
--- a/mbtk/libmbtk_lib/Makefile
+++ b/mbtk/libmbtk_lib/Makefile
@@ -4,17 +4,31 @@
LOCAL_PATH=$(BUILD_ROOT)/libmbtk_lib
INC_DIR += \
- -I$(LOCAL_PATH)/inc
+ -I$(LOCAL_PATH)/audio \
+ -I$(LOCAL_PATH)/coap \
+ -I$(LOCAL_PATH)/common \
+ -I$(LOCAL_PATH)/ecall \
+ -I$(LOCAL_PATH)/fota \
+ -I$(LOCAL_PATH)/ftp \
+ -I$(LOCAL_PATH)/gnss \
+ -I$(LOCAL_PATH)/http \
+ -I$(LOCAL_PATH)/mqtt \
+ -I$(LOCAL_PATH)/mqtt/MQTTPacket \
+ -I$(LOCAL_PATH)/net \
+ -I$(LOCAL_PATH)/tcpip \
+ -I$(LOCAL_PATH)/ril
LIB_DIR +=
-LIBS += -llog -lubus -lubox -luci -lprop2uci -lrilutil -lblobmsg_json -ldl
+LIBS += -llog -lubus -lubox -luci -lprop2uci -lrilutil -lblobmsg_json -ldl -lcutils -laudio-apu -lssl -lcrypto
+ifeq ($(BUILD_LIB_TYPE), shared)
CFLAGS += -shared -Wl,-shared,-Bsymbolic
+endif
DEFINE += -DMBTK_NET_MONITOR_SUPPORT
-MY_FILES_PATH:=$(LOCAL_PATH)/src
+#MY_FILES_PATH:=$(LOCAL_PATH)/src
#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
#MY_FILES_PATH += $(LOCAL_PATH)/ql
#endif
@@ -29,34 +43,108 @@
#MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
#LOCAL_SRC_FILES += $(MY_SRC_LIST)
-LOCAL_SRC_FILES = src/ds_ASBuffer.cpp \
- src/ds_ASString.cpp \
- src/mbtk_at.c \
- src/mbtk_bs_position.c \
- src/mbtk_file.c \
- src/mbtk_list.c \
- src/mbtk_log.c \
- src/mbtk_map.c \
- src/mbtk_ntp.c \
- src/mbtk_queue.c \
- src/mbtk_str.c \
- src/mbtk_task.c \
- src/mbtk_utf.c \
- src/mbtk_utils.c \
- src/ringbuffer.c \
- src/mbtk_mtd.c \
- src/mbtk_device_info.c \
- src/mbtk_version.c \
- src/mbtk_gpio.c
+# common
+LOCAL_SRC_FILES = \
+ common/ds_ASBuffer.cpp \
+ common/ds_ASString.cpp \
+ common/mbtk_at.c \
+ common/mbtk_bs_position.c \
+ common/mbtk_file.c \
+ common/mbtk_list.c \
+ common/mbtk_log.c \
+ common/mbtk_map.c \
+ common/mbtk_ntp.c \
+ common/mbtk_queue.c \
+ common/mbtk_str.c \
+ common/mbtk_task.c \
+ common/mbtk_utf.c \
+ common/mbtk_utils.c \
+ common/ringbuffer.c \
+ common/mbtk_mtd.c \
+ common/mbtk_device_info.c \
+ common/mbtk_version.c \
+ common/mbtk_gpio.c \
+ common/mbtk_adc.c \
+ common/mbtk_debug.c
-ifeq ($(MBTK_DUMP_SUPPORT), y)
-LOCAL_SRC_FILES += src/mbtk_debug.c
-endif
+# audio
+LOCAL_SRC_FILES += \
+ audio/mbtk_audio.c \
+ audio/mbtk_audio_gain.c \
+ audio/mbtk_pcm_stream.c \
+ audio/mbtk_wav.c \
+ audio/mbtk_audio_ubus.c
+
+# coap
+LOCAL_SRC_FILES += \
+ coap/mbtk_coap.c \
+ coap/mbtk_coap_api.cpp \
+ coap/mbtk_coap_pdu.cpp
+
+# fota
+LOCAL_SRC_FILES += \
+ fota/mbtk_fota.c
+
+# gnss
+LOCAL_SRC_FILES += \
+ gnss/mbtk_gnss.c
+
+# net
+LOCAL_SRC_FILES += \
+ net/mbtk_dhcp.c \
+ net/mbtk_ifc.c \
+ net/mbtk_net_control.c \
+ net/mbtk_sock.c \
+ net/mbtk_sock2.c
+
+# ril
+LOCAL_SRC_FILES += \
+ ril/mbtk_info.c \
+ ril/mbtk_info_api.c \
+ ril/mbtk_pdu_sms.c
+
+# ftp
+LOCAL_SRC_FILES += \
+ ftp/mbtk_ftp.c \
+ ftp/mbtk_ftp_at.c
+
+# http
+LOCAL_SRC_FILES += \
+ http/mbtk_http.c \
+ http/mbtk_http_base.c \
+ http/mbtk_http_chunks.c
+
+# mqtt
+LOCAL_SRC_FILES += \
+ mqtt/mbtk_mqtt.c \
+ mqtt/MQTTClient.c \
+ mqtt/MQTTLinux.c \
+ mqtt/MQTTPacket/core_sha1.c \
+ mqtt/MQTTPacket/core_sha256.c \
+ mqtt/MQTTPacket/MQTTConnectClient.c \
+ mqtt/MQTTPacket/MQTTConnectServer.c \
+ mqtt/MQTTPacket/MQTTDeserializePublish.c \
+ mqtt/MQTTPacket/MQTTFormat.c \
+ mqtt/MQTTPacket/MQTTPacket.c \
+ mqtt/MQTTPacket/MQTTSerializePublish.c \
+ mqtt/MQTTPacket/MQTTSubscribeClient.c \
+ mqtt/MQTTPacket/MQTTSubscribeServer.c \
+ mqtt/MQTTPacket/MQTTUnsubscribeClient.c \
+ mqtt/MQTTPacket/MQTTUnsubscribeServer.c
+
+# tcpip
+LOCAL_SRC_FILES += \
+ tcpip/mbtk_tcpip_at.c
+
OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
$(info OBJS = $(OBJS))
+ifeq ($(BUILD_LIB_TYPE), shared)
dtarget := $(OUT_DIR)/lib/libmbtk_lib.so
+else
+dtarget := $(OUT_DIR)/lib/libmbtk_lib.a
+endif
all: $(dtarget)
diff --git a/mbtk/libmbtk_audio/src/g711_pcm_convert.c b/mbtk/libmbtk_lib/audio/g711_pcm_convert.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/g711_pcm_convert.c
rename to mbtk/libmbtk_lib/audio/g711_pcm_convert.c
diff --git a/mbtk/libmbtk_audio/inc/g711_pcm_convert.h b/mbtk/libmbtk_lib/audio/g711_pcm_convert.h
similarity index 100%
rename from mbtk/libmbtk_audio/inc/g711_pcm_convert.h
rename to mbtk/libmbtk_lib/audio/g711_pcm_convert.h
diff --git "a/mbtk/libmbtk_audio/src/mbtk_audio \0502\051.c" "b/mbtk/libmbtk_lib/audio/mbtk_audio \0502\051.c"
similarity index 100%
rename from "mbtk/libmbtk_audio/src/mbtk_audio \0502\051.c"
rename to "mbtk/libmbtk_lib/audio/mbtk_audio \0502\051.c"
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio.c b/mbtk/libmbtk_lib/audio/mbtk_audio.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_audio.c
rename to mbtk/libmbtk_lib/audio/mbtk_audio.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio_alsa.c b/mbtk/libmbtk_lib/audio/mbtk_audio_alsa.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_audio_alsa.c
rename to mbtk/libmbtk_lib/audio/mbtk_audio_alsa.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio_gain.c b/mbtk/libmbtk_lib/audio/mbtk_audio_gain.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_audio_gain.c
rename to mbtk/libmbtk_lib/audio/mbtk_audio_gain.c
diff --git a/mbtk/libmbtk_audio/inc/mbtk_audio_internal.h b/mbtk/libmbtk_lib/audio/mbtk_audio_internal.h
similarity index 100%
rename from mbtk/libmbtk_audio/inc/mbtk_audio_internal.h
rename to mbtk/libmbtk_lib/audio/mbtk_audio_internal.h
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio_ubus.c b/mbtk/libmbtk_lib/audio/mbtk_audio_ubus.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_audio_ubus.c
rename to mbtk/libmbtk_lib/audio/mbtk_audio_ubus.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_mp3.c b/mbtk/libmbtk_lib/audio/mbtk_mp3.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_mp3.c
rename to mbtk/libmbtk_lib/audio/mbtk_mp3.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_mp3_to_wav.c b/mbtk/libmbtk_lib/audio/mbtk_mp3_to_wav.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_mp3_to_wav.c
rename to mbtk/libmbtk_lib/audio/mbtk_mp3_to_wav.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_pcm_stream.c b/mbtk/libmbtk_lib/audio/mbtk_pcm_stream.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_pcm_stream.c
rename to mbtk/libmbtk_lib/audio/mbtk_pcm_stream.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_wav.c b/mbtk/libmbtk_lib/audio/mbtk_wav.c
similarity index 100%
rename from mbtk/libmbtk_audio/src/mbtk_wav.c
rename to mbtk/libmbtk_lib/audio/mbtk_wav.c
diff --git a/mbtk/libmbtk_coap/mbtk_coap.c b/mbtk/libmbtk_lib/coap/mbtk_coap.c
similarity index 100%
rename from mbtk/libmbtk_coap/mbtk_coap.c
rename to mbtk/libmbtk_lib/coap/mbtk_coap.c
diff --git a/mbtk/libmbtk_coap/mbtk_coap_api.cpp b/mbtk/libmbtk_lib/coap/mbtk_coap_api.cpp
similarity index 100%
rename from mbtk/libmbtk_coap/mbtk_coap_api.cpp
rename to mbtk/libmbtk_lib/coap/mbtk_coap_api.cpp
diff --git a/mbtk/libmbtk_coap/mbtk_coap_pdu.cpp b/mbtk/libmbtk_lib/coap/mbtk_coap_pdu.cpp
similarity index 100%
rename from mbtk/libmbtk_coap/mbtk_coap_pdu.cpp
rename to mbtk/libmbtk_lib/coap/mbtk_coap_pdu.cpp
diff --git a/mbtk/libmbtk_coap/mbtk_coap_pdu.h b/mbtk/libmbtk_lib/coap/mbtk_coap_pdu.h
similarity index 100%
rename from mbtk/libmbtk_coap/mbtk_coap_pdu.h
rename to mbtk/libmbtk_lib/coap/mbtk_coap_pdu.h
diff --git a/mbtk/libmbtk_lib/src/ds_ASBuffer.cpp b/mbtk/libmbtk_lib/common/ds_ASBuffer.cpp
similarity index 100%
rename from mbtk/libmbtk_lib/src/ds_ASBuffer.cpp
rename to mbtk/libmbtk_lib/common/ds_ASBuffer.cpp
diff --git a/mbtk/libmbtk_lib/src/ds_ASString.cpp b/mbtk/libmbtk_lib/common/ds_ASString.cpp
similarity index 100%
rename from mbtk/libmbtk_lib/src/ds_ASString.cpp
rename to mbtk/libmbtk_lib/common/ds_ASString.cpp
diff --git a/mbtk/libmbtk_lib/common/mbtk_adc.c b/mbtk/libmbtk_lib/common/mbtk_adc.c
new file mode 100755
index 0000000..55cce7c
--- /dev/null
+++ b/mbtk/libmbtk_lib/common/mbtk_adc.c
@@ -0,0 +1,102 @@
+/**
+ * \file mbtk_adc.c
+ * \brief A Documented file.
+ *
+ * Detailed description
+ * \Author: js.wang <js.wang@mobiletek.cn>
+ * \Version: 1.0.0
+ * \Date: 2022-04-22
+ */
+#include <fcntl.h>
+#include <stdint.h>
+#include <limits.h>
+#include <termios.h>
+#include <stdarg.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+#include <sys/types.h>
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+#include "mbtk_adc.h"
+
+int mbtk_adc_close(const char* adc_dev)
+{
+ int ret = 0;
+ int fd = 0;
+ char adc = '3';
+ //system("echo 3 > /sys/kernel/debug/adc");
+ if(adc_dev != NULL && !access(adc_dev, R_OK))
+ {
+ //LOGI("DEV:%s", ADC_DEVICE_803);
+ fd = open(adc_dev, O_RDWR|O_CREAT|O_TRUNC, 0644);
+ }
+ else
+ {
+ LOGE("No found ADC devices.");
+ return -1;
+ }
+
+ if(fd < 0) {
+ LOGE("[%s] file open error\n", __FUNCTION__);
+ return -2;
+ }
+ ret = write(fd, &adc, 1);
+ if (ret < 0) {
+ LOGE("%s: error writing to file!\n", __FUNCTION__);
+ close(fd);
+ return -2;
+ }
+ close(fd);
+ return 0;
+}
+
+int mbtk_adc_get(const char* adc_dev, mbtk_adc_enum channle)
+{
+ int ret = 0;
+ int fd = 0;
+ char adc_buf[24] = {0};
+ char *adc_value = NULL;
+ char adc =(channle == MBTK_ADC0 ? '0' : (channle == MBTK_ADC1 ? '1' : '2'));
+
+
+ if(adc_dev != NULL && !access(adc_dev, R_OK))
+ {
+ LOGI("[adc] DEV:%s", adc_dev);
+ fd = open(adc_dev, O_RDWR|O_CREAT|O_TRUNC, 0644);
+ }
+ else
+ {
+ LOGE("No found ADC devices : %s", adc_dev ? adc_dev : "NULL");
+ return -1;
+ }
+
+ if(fd < 0) {
+ LOGE("[%s] file open error\n", __FUNCTION__);
+ return -2;
+ }
+ ret = write(fd, &adc, 1);
+ if (ret < 0) {
+ LOGE("%s: error writing to file!\n", __FUNCTION__);
+ close(fd);
+ return -2;
+ }
+ ret = read(fd, adc_buf, 24);
+ if (ret < 0) {
+ LOGE("%s: error writing to file!\n", __FUNCTION__);
+ close(fd);
+ return -2;
+ }else{
+ //LOGI("%s %d adc:%s\n", __FUNCTION__, __LINE__, adc_buf);
+ adc_value = strstr(adc_buf, "channel");
+ }
+ close(fd);
+ if(adc_value)
+ {
+ //LOGI("%s adc: %s\n", __FUNCTION__, adc_value);
+ }
+ else
+ return -2;
+
+ return atoi(&adc_value[9]);
+}
diff --git a/mbtk/libmbtk_lib/src/mbtk_alarm.c b/mbtk/libmbtk_lib/common/mbtk_alarm.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_alarm.c
rename to mbtk/libmbtk_lib/common/mbtk_alarm.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_at.c b/mbtk/libmbtk_lib/common/mbtk_at.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_at.c
rename to mbtk/libmbtk_lib/common/mbtk_at.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_bs_position.c b/mbtk/libmbtk_lib/common/mbtk_bs_position.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_bs_position.c
rename to mbtk/libmbtk_lib/common/mbtk_bs_position.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_debug.c b/mbtk/libmbtk_lib/common/mbtk_debug.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_debug.c
rename to mbtk/libmbtk_lib/common/mbtk_debug.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_device_info.c b/mbtk/libmbtk_lib/common/mbtk_device_info.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_device_info.c
rename to mbtk/libmbtk_lib/common/mbtk_device_info.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_file.c b/mbtk/libmbtk_lib/common/mbtk_file.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_file.c
rename to mbtk/libmbtk_lib/common/mbtk_file.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_gpio.c b/mbtk/libmbtk_lib/common/mbtk_gpio.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_gpio.c
rename to mbtk/libmbtk_lib/common/mbtk_gpio.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_list.c b/mbtk/libmbtk_lib/common/mbtk_list.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_list.c
rename to mbtk/libmbtk_lib/common/mbtk_list.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_log.c b/mbtk/libmbtk_lib/common/mbtk_log.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_log.c
rename to mbtk/libmbtk_lib/common/mbtk_log.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_map.c b/mbtk/libmbtk_lib/common/mbtk_map.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_map.c
rename to mbtk/libmbtk_lib/common/mbtk_map.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_mtd.c b/mbtk/libmbtk_lib/common/mbtk_mtd.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_mtd.c
rename to mbtk/libmbtk_lib/common/mbtk_mtd.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_ntp.c b/mbtk/libmbtk_lib/common/mbtk_ntp.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_ntp.c
rename to mbtk/libmbtk_lib/common/mbtk_ntp.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_queue.c b/mbtk/libmbtk_lib/common/mbtk_queue.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_queue.c
rename to mbtk/libmbtk_lib/common/mbtk_queue.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_str.c b/mbtk/libmbtk_lib/common/mbtk_str.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_str.c
rename to mbtk/libmbtk_lib/common/mbtk_str.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_task.c b/mbtk/libmbtk_lib/common/mbtk_task.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_task.c
rename to mbtk/libmbtk_lib/common/mbtk_task.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_utf.c b/mbtk/libmbtk_lib/common/mbtk_utf.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_utf.c
rename to mbtk/libmbtk_lib/common/mbtk_utf.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_utils.c b/mbtk/libmbtk_lib/common/mbtk_utils.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_utils.c
rename to mbtk/libmbtk_lib/common/mbtk_utils.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_version.c b/mbtk/libmbtk_lib/common/mbtk_version.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/mbtk_version.c
rename to mbtk/libmbtk_lib/common/mbtk_version.c
diff --git a/mbtk/libmbtk_lib/src/ringbuffer.c b/mbtk/libmbtk_lib/common/ringbuffer.c
similarity index 100%
rename from mbtk/libmbtk_lib/src/ringbuffer.c
rename to mbtk/libmbtk_lib/common/ringbuffer.c
diff --git a/mbtk/libmbtk_factory/gpio-define.h b/mbtk/libmbtk_lib/factory/gpio-define.h
similarity index 100%
rename from mbtk/libmbtk_factory/gpio-define.h
rename to mbtk/libmbtk_lib/factory/gpio-define.h
diff --git a/mbtk/libmbtk_factory/mbtk_adc.c b/mbtk/libmbtk_lib/factory/mbtk_adc.c
similarity index 100%
rename from mbtk/libmbtk_factory/mbtk_adc.c
rename to mbtk/libmbtk_lib/factory/mbtk_adc.c
diff --git a/mbtk/libmbtk_factory/mbtk_audio.c b/mbtk/libmbtk_lib/factory/mbtk_audio.c
similarity index 100%
rename from mbtk/libmbtk_factory/mbtk_audio.c
rename to mbtk/libmbtk_lib/factory/mbtk_audio.c
diff --git a/mbtk/libmbtk_factory/mbtk_basic_at_wrapper.c b/mbtk/libmbtk_lib/factory/mbtk_basic_at_wrapper.c
similarity index 100%
rename from mbtk/libmbtk_factory/mbtk_basic_at_wrapper.c
rename to mbtk/libmbtk_lib/factory/mbtk_basic_at_wrapper.c
diff --git a/mbtk/libmbtk_factory/mbtk_gpio.c b/mbtk/libmbtk_lib/factory/mbtk_gpio.c
similarity index 100%
rename from mbtk/libmbtk_factory/mbtk_gpio.c
rename to mbtk/libmbtk_lib/factory/mbtk_gpio.c
diff --git a/mbtk/libmbtk_factory/mbtk_gpio_def.h b/mbtk/libmbtk_lib/factory/mbtk_gpio_def.h
similarity index 100%
rename from mbtk/libmbtk_factory/mbtk_gpio_def.h
rename to mbtk/libmbtk_lib/factory/mbtk_gpio_def.h
diff --git a/mbtk/libmbtk_factory/mbtk_power.c b/mbtk/libmbtk_lib/factory/mbtk_power.c
similarity index 100%
rename from mbtk/libmbtk_factory/mbtk_power.c
rename to mbtk/libmbtk_lib/factory/mbtk_power.c
diff --git a/mbtk/libmbtk_fota/mbtk_fota.c b/mbtk/libmbtk_lib/fota/mbtk_fota.c
similarity index 100%
rename from mbtk/libmbtk_fota/mbtk_fota.c
rename to mbtk/libmbtk_lib/fota/mbtk_fota.c
diff --git a/mbtk/libmbtk_ftp/mbtk_ftp.c b/mbtk/libmbtk_lib/ftp/mbtk_ftp.c
similarity index 100%
rename from mbtk/libmbtk_ftp/mbtk_ftp.c
rename to mbtk/libmbtk_lib/ftp/mbtk_ftp.c
diff --git a/mbtk/libmbtk_ftp/mbtk_ftp_at.c b/mbtk/libmbtk_lib/ftp/mbtk_ftp_at.c
similarity index 100%
rename from mbtk/libmbtk_ftp/mbtk_ftp_at.c
rename to mbtk/libmbtk_lib/ftp/mbtk_ftp_at.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss.c b/mbtk/libmbtk_lib/gnss/mbtk_gnss.c
similarity index 100%
rename from mbtk/libmbtk_gnss/mbtk_gnss.c
rename to mbtk/libmbtk_lib/gnss/mbtk_gnss.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_5311.c b/mbtk/libmbtk_lib/gnss/mbtk_gnss_5311.c
old mode 100644
new mode 100755
similarity index 100%
rename from mbtk/libmbtk_gnss/mbtk_gnss_5311.c
rename to mbtk/libmbtk_lib/gnss/mbtk_gnss_5311.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_6228.c b/mbtk/libmbtk_lib/gnss/mbtk_gnss_6228.c
similarity index 100%
rename from mbtk/libmbtk_gnss/mbtk_gnss_6228.c
rename to mbtk/libmbtk_lib/gnss/mbtk_gnss_6228.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_inter.h b/mbtk/libmbtk_lib/gnss/mbtk_gnss_inter.h
similarity index 100%
rename from mbtk/libmbtk_gnss/mbtk_gnss_inter.h
rename to mbtk/libmbtk_lib/gnss/mbtk_gnss_inter.h
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_update.c b/mbtk/libmbtk_lib/gnss/mbtk_gnss_update.c
similarity index 100%
rename from mbtk/libmbtk_gnss/mbtk_gnss_update.c
rename to mbtk/libmbtk_lib/gnss/mbtk_gnss_update.c
diff --git a/mbtk/libmbtk_http/mbtk_http.c b/mbtk/libmbtk_lib/http/mbtk_http.c
similarity index 100%
rename from mbtk/libmbtk_http/mbtk_http.c
rename to mbtk/libmbtk_lib/http/mbtk_http.c
diff --git a/mbtk/libmbtk_http/mbtk_http_base.c b/mbtk/libmbtk_lib/http/mbtk_http_base.c
similarity index 100%
rename from mbtk/libmbtk_http/mbtk_http_base.c
rename to mbtk/libmbtk_lib/http/mbtk_http_base.c
diff --git a/mbtk/libmbtk_http/mbtk_http_base.h b/mbtk/libmbtk_lib/http/mbtk_http_base.h
similarity index 100%
rename from mbtk/libmbtk_http/mbtk_http_base.h
rename to mbtk/libmbtk_lib/http/mbtk_http_base.h
diff --git a/mbtk/libmbtk_http/mbtk_http_chunks.c b/mbtk/libmbtk_lib/http/mbtk_http_chunks.c
similarity index 100%
rename from mbtk/libmbtk_http/mbtk_http_chunks.c
rename to mbtk/libmbtk_lib/http/mbtk_http_chunks.c
diff --git a/mbtk/libmbtk_http/mbtk_http_chunks.h b/mbtk/libmbtk_lib/http/mbtk_http_chunks.h
similarity index 100%
rename from mbtk/libmbtk_http/mbtk_http_chunks.h
rename to mbtk/libmbtk_lib/http/mbtk_http_chunks.h
diff --git a/mbtk/libmbtk_mqtt/MQTTClient.c b/mbtk/libmbtk_lib/mqtt/MQTTClient.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTClient.c
rename to mbtk/libmbtk_lib/mqtt/MQTTClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTClient.h b/mbtk/libmbtk_lib/mqtt/MQTTClient.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTClient.h
rename to mbtk/libmbtk_lib/mqtt/MQTTClient.h
diff --git a/mbtk/libmbtk_mqtt/MQTTLinux.c b/mbtk/libmbtk_lib/mqtt/MQTTLinux.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTLinux.c
rename to mbtk/libmbtk_lib/mqtt/MQTTLinux.c
diff --git a/mbtk/libmbtk_mqtt/MQTTLinux.h b/mbtk/libmbtk_lib/mqtt/MQTTLinux.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTLinux.h
rename to mbtk/libmbtk_lib/mqtt/MQTTLinux.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnect.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTConnect.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnect.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTConnect.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectClient.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTConnectClient.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectClient.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTConnectClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectServer.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTConnectServer.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectServer.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTConnectServer.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTDeserializePublish.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTDeserializePublish.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTDeserializePublish.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTDeserializePublish.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTFormat.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTFormat.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTFormat.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTFormat.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTPacket.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTPacket.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTPacket.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTPacket.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTPublish.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTPublish.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTPublish.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTPublish.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSerializePublish.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSerializePublish.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSerializePublish.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSerializePublish.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribe.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSubscribe.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribe.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSubscribe.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeClient.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSubscribeClient.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeClient.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSubscribeClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeServer.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSubscribeServer.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeServer.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTSubscribeServer.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribe.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTUnsubscribe.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribe.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTUnsubscribe.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeClient.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTUnsubscribeClient.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeClient.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTUnsubscribeClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeServer.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTUnsubscribeServer.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeServer.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/MQTTUnsubscribeServer.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/StackTrace.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/StackTrace.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/StackTrace.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/StackTrace.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha1.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha1.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha1.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha1.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.c b/mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha256.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.c
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha256.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha256.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/core_sha256.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_stdinc.h b/mbtk/libmbtk_lib/mqtt/MQTTPacket/core_stdinc.h
similarity index 100%
rename from mbtk/libmbtk_mqtt/MQTTPacket/core_stdinc.h
rename to mbtk/libmbtk_lib/mqtt/MQTTPacket/core_stdinc.h
diff --git a/mbtk/libmbtk_mqtt/mbtk_mqtt.c b/mbtk/libmbtk_lib/mqtt/mbtk_mqtt.c
similarity index 100%
rename from mbtk/libmbtk_mqtt/mbtk_mqtt.c
rename to mbtk/libmbtk_lib/mqtt/mbtk_mqtt.c
diff --git a/mbtk/libmbtk_net/mbtk_dhcp.c b/mbtk/libmbtk_lib/net/mbtk_dhcp.c
similarity index 100%
rename from mbtk/libmbtk_net/mbtk_dhcp.c
rename to mbtk/libmbtk_lib/net/mbtk_dhcp.c
diff --git a/mbtk/libmbtk_net/mbtk_ifc.c b/mbtk/libmbtk_lib/net/mbtk_ifc.c
similarity index 100%
rename from mbtk/libmbtk_net/mbtk_ifc.c
rename to mbtk/libmbtk_lib/net/mbtk_ifc.c
diff --git a/mbtk/libmbtk_net/mbtk_net_control.c b/mbtk/libmbtk_lib/net/mbtk_net_control.c
similarity index 100%
rename from mbtk/libmbtk_net/mbtk_net_control.c
rename to mbtk/libmbtk_lib/net/mbtk_net_control.c
diff --git a/mbtk/libmbtk_net/mbtk_sock.c b/mbtk/libmbtk_lib/net/mbtk_sock.c
similarity index 100%
rename from mbtk/libmbtk_net/mbtk_sock.c
rename to mbtk/libmbtk_lib/net/mbtk_sock.c
diff --git a/mbtk/libmbtk_net/mbtk_sock2.c b/mbtk/libmbtk_lib/net/mbtk_sock2.c
similarity index 100%
rename from mbtk/libmbtk_net/mbtk_sock2.c
rename to mbtk/libmbtk_lib/net/mbtk_sock2.c
diff --git a/mbtk/libmbtk_net/mbtk_sock_internal.h b/mbtk/libmbtk_lib/net/mbtk_sock_internal.h
similarity index 100%
rename from mbtk/libmbtk_net/mbtk_sock_internal.h
rename to mbtk/libmbtk_lib/net/mbtk_sock_internal.h
diff --git a/mbtk/libmbtk_ril/Makefile b/mbtk/libmbtk_lib/ril/Makefile
similarity index 100%
rename from mbtk/libmbtk_ril/Makefile
rename to mbtk/libmbtk_lib/ril/Makefile
diff --git a/mbtk/libmbtk_ril/mbtk_alphabet.h b/mbtk/libmbtk_lib/ril/mbtk_alphabet.h
similarity index 100%
rename from mbtk/libmbtk_ril/mbtk_alphabet.h
rename to mbtk/libmbtk_lib/ril/mbtk_alphabet.h
diff --git a/mbtk/libmbtk_ril/mbtk_info.c b/mbtk/libmbtk_lib/ril/mbtk_info.c
similarity index 100%
rename from mbtk/libmbtk_ril/mbtk_info.c
rename to mbtk/libmbtk_lib/ril/mbtk_info.c
diff --git a/mbtk/libmbtk_ril/mbtk_info.h b/mbtk/libmbtk_lib/ril/mbtk_info.h
similarity index 100%
rename from mbtk/libmbtk_ril/mbtk_info.h
rename to mbtk/libmbtk_lib/ril/mbtk_info.h
diff --git a/mbtk/libmbtk_ril/mbtk_info_api.c b/mbtk/libmbtk_lib/ril/mbtk_info_api.c
similarity index 100%
rename from mbtk/libmbtk_ril/mbtk_info_api.c
rename to mbtk/libmbtk_lib/ril/mbtk_info_api.c
diff --git a/mbtk/libmbtk_ril/mbtk_pdu_sms.c b/mbtk/libmbtk_lib/ril/mbtk_pdu_sms.c
similarity index 100%
rename from mbtk/libmbtk_ril/mbtk_pdu_sms.c
rename to mbtk/libmbtk_lib/ril/mbtk_pdu_sms.c
diff --git a/mbtk/libmbtk_tcpip/mbtk_tcpip_at.c b/mbtk/libmbtk_lib/tcpip/mbtk_tcpip_at.c
similarity index 100%
rename from mbtk/libmbtk_tcpip/mbtk_tcpip_at.c
rename to mbtk/libmbtk_lib/tcpip/mbtk_tcpip_at.c
diff --git a/mbtk/libmbtk_lib_v2/Makefile b/mbtk/libmbtk_lib_v2/Makefile
new file mode 100755
index 0000000..295f873
--- /dev/null
+++ b/mbtk/libmbtk_lib_v2/Makefile
@@ -0,0 +1,161 @@
+BUILD_ROOT = $(shell pwd)/..
+include $(BUILD_ROOT)/Make.defines
+
+LOCAL_PATH=$(BUILD_ROOT)/libmbtk_lib_v2
+
+INC_DIR += \
+ -I$(LOCAL_PATH)/audio \
+ -I$(LOCAL_PATH)/coap \
+ -I$(LOCAL_PATH)/common \
+ -I$(LOCAL_PATH)/ecall \
+ -I$(LOCAL_PATH)/fota \
+ -I$(LOCAL_PATH)/ftp \
+ -I$(LOCAL_PATH)/gnss \
+ -I$(LOCAL_PATH)/http \
+ -I$(LOCAL_PATH)/mqtt \
+ -I$(LOCAL_PATH)/mqtt/MQTTPacket \
+ -I$(LOCAL_PATH)/net \
+ -I$(LOCAL_PATH)/tcpip \
+ -I$(LOCAL_PATH)/ril
+
+LIB_DIR +=
+
+LIBS += -llog -lubus -lubox -luci -lprop2uci -lrilutil -lblobmsg_json -ldl -lcutils -laudio-apu -lssl -lcrypto
+
+ifeq ($(BUILD_LIB_TYPE), shared)
+CFLAGS += -shared -Wl,-shared,-Bsymbolic
+endif
+
+DEFINE += -DMBTK_NET_MONITOR_SUPPORT
+
+#MY_FILES_PATH:=$(LOCAL_PATH)/src
+#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
+#MY_FILES_PATH += $(LOCAL_PATH)/ql
+#endif
+
+#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
+#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
+#endif
+
+#MY_FILES_SUFFIX:=%.c %.cpp
+#My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
+#MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
+#MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
+#LOCAL_SRC_FILES += $(MY_SRC_LIST)
+
+# common
+LOCAL_SRC_FILES = \
+ common/ds_ASBuffer.cpp \
+ common/ds_ASString.cpp \
+ common/mbtk_at.c \
+ common/mbtk_bs_position.c \
+ common/mbtk_file.c \
+ common/mbtk_list.c \
+ common/mbtk_log.c \
+ common/mbtk_map.c \
+ common/mbtk_ntp.c \
+ common/mbtk_queue.c \
+ common/mbtk_str.c \
+ common/mbtk_task.c \
+ common/mbtk_utf.c \
+ common/mbtk_utils.c \
+ common/ringbuffer.c \
+ common/mbtk_mtd.c \
+ common/mbtk_device_info.c \
+ common/mbtk_version.c \
+ common/mbtk_gpio.c \
+ common/mbtk_debug.c
+
+# audio
+LOCAL_SRC_FILES += \
+ audio/mbtk_audio.c \
+ audio/mbtk_audio_gain.c \
+ audio/mbtk_pcm_stream.c \
+ audio/mbtk_wav.c \
+ audio/mbtk_audio_ubus.c
+
+# coap
+LOCAL_SRC_FILES += \
+ coap/mbtk_coap.c \
+ coap/mbtk_coap_api.cpp \
+ coap/mbtk_coap_pdu.cpp
+
+# fota
+LOCAL_SRC_FILES += \
+ fota/mbtk_fota.c
+
+# gnss
+LOCAL_SRC_FILES += \
+ gnss/mbtk_gnss.c
+
+# net
+LOCAL_SRC_FILES += \
+ net/mbtk_dhcp.c \
+ net/mbtk_ifc.c \
+ net/mbtk_net_control.c \
+ net/mbtk_sock.c \
+ net/mbtk_sock2.c
+
+# ril
+LOCAL_SRC_FILES += \
+ ril/ril_utils.c \
+ ril/mbtk_ril_api.c \
+ ril/mbtk_pdu_sms.c
+
+# ftp
+LOCAL_SRC_FILES += \
+ ftp/mbtk_ftp.c \
+ ftp/mbtk_ftp_at.c
+
+# http
+LOCAL_SRC_FILES += \
+ http/mbtk_http.c \
+ http/mbtk_http_base.c \
+ http/mbtk_http_chunks.c
+
+# mqtt
+LOCAL_SRC_FILES += \
+ mqtt/mbtk_mqtt.c \
+ mqtt/MQTTClient.c \
+ mqtt/MQTTLinux.c \
+ mqtt/MQTTPacket/core_sha1.c \
+ mqtt/MQTTPacket/core_sha256.c \
+ mqtt/MQTTPacket/MQTTConnectClient.c \
+ mqtt/MQTTPacket/MQTTConnectServer.c \
+ mqtt/MQTTPacket/MQTTDeserializePublish.c \
+ mqtt/MQTTPacket/MQTTFormat.c \
+ mqtt/MQTTPacket/MQTTPacket.c \
+ mqtt/MQTTPacket/MQTTSerializePublish.c \
+ mqtt/MQTTPacket/MQTTSubscribeClient.c \
+ mqtt/MQTTPacket/MQTTSubscribeServer.c \
+ mqtt/MQTTPacket/MQTTUnsubscribeClient.c \
+ mqtt/MQTTPacket/MQTTUnsubscribeServer.c
+
+# tcpip
+LOCAL_SRC_FILES += \
+ tcpip/mbtk_tcpip_at.c
+
+
+OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
+$(info OBJS = $(OBJS))
+
+ifeq ($(BUILD_LIB_TYPE), shared)
+dtarget := $(OUT_DIR)/lib/libmbtk_lib.so
+else
+dtarget := $(OUT_DIR)/lib/libmbtk_lib.a
+endif
+
+all: $(dtarget)
+
+$(dtarget):$(OBJS)
+ $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
+
+%.o:%.c
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+%.o:%.cpp
+ $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+clean:
+ rm -f $(OBJS) $(dtarget)
+
diff --git a/mbtk/libmbtk_audio/src/g711_pcm_convert.c b/mbtk/libmbtk_lib_v2/audio/g711_pcm_convert.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/g711_pcm_convert.c
copy to mbtk/libmbtk_lib_v2/audio/g711_pcm_convert.c
diff --git a/mbtk/libmbtk_audio/inc/g711_pcm_convert.h b/mbtk/libmbtk_lib_v2/audio/g711_pcm_convert.h
similarity index 100%
copy from mbtk/libmbtk_audio/inc/g711_pcm_convert.h
copy to mbtk/libmbtk_lib_v2/audio/g711_pcm_convert.h
diff --git "a/mbtk/libmbtk_audio/src/mbtk_audio \0502\051.c" "b/mbtk/libmbtk_lib_v2/audio/mbtk_audio \0502\051.c"
similarity index 100%
copy from "mbtk/libmbtk_audio/src/mbtk_audio \0502\051.c"
copy to "mbtk/libmbtk_lib_v2/audio/mbtk_audio \0502\051.c"
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio.c b/mbtk/libmbtk_lib_v2/audio/mbtk_audio.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_audio.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_audio.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio_alsa.c b/mbtk/libmbtk_lib_v2/audio/mbtk_audio_alsa.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_audio_alsa.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_audio_alsa.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio_gain.c b/mbtk/libmbtk_lib_v2/audio/mbtk_audio_gain.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_audio_gain.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_audio_gain.c
diff --git a/mbtk/libmbtk_audio/inc/mbtk_audio_internal.h b/mbtk/libmbtk_lib_v2/audio/mbtk_audio_internal.h
similarity index 100%
copy from mbtk/libmbtk_audio/inc/mbtk_audio_internal.h
copy to mbtk/libmbtk_lib_v2/audio/mbtk_audio_internal.h
diff --git a/mbtk/libmbtk_audio/src/mbtk_audio_ubus.c b/mbtk/libmbtk_lib_v2/audio/mbtk_audio_ubus.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_audio_ubus.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_audio_ubus.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_mp3.c b/mbtk/libmbtk_lib_v2/audio/mbtk_mp3.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_mp3.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_mp3.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_mp3_to_wav.c b/mbtk/libmbtk_lib_v2/audio/mbtk_mp3_to_wav.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_mp3_to_wav.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_mp3_to_wav.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_pcm_stream.c b/mbtk/libmbtk_lib_v2/audio/mbtk_pcm_stream.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_pcm_stream.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_pcm_stream.c
diff --git a/mbtk/libmbtk_audio/src/mbtk_wav.c b/mbtk/libmbtk_lib_v2/audio/mbtk_wav.c
similarity index 100%
copy from mbtk/libmbtk_audio/src/mbtk_wav.c
copy to mbtk/libmbtk_lib_v2/audio/mbtk_wav.c
diff --git a/mbtk/libmbtk_coap/mbtk_coap.c b/mbtk/libmbtk_lib_v2/coap/mbtk_coap.c
similarity index 100%
copy from mbtk/libmbtk_coap/mbtk_coap.c
copy to mbtk/libmbtk_lib_v2/coap/mbtk_coap.c
diff --git a/mbtk/libmbtk_coap/mbtk_coap_api.cpp b/mbtk/libmbtk_lib_v2/coap/mbtk_coap_api.cpp
similarity index 100%
copy from mbtk/libmbtk_coap/mbtk_coap_api.cpp
copy to mbtk/libmbtk_lib_v2/coap/mbtk_coap_api.cpp
diff --git a/mbtk/libmbtk_coap/mbtk_coap_pdu.cpp b/mbtk/libmbtk_lib_v2/coap/mbtk_coap_pdu.cpp
similarity index 100%
copy from mbtk/libmbtk_coap/mbtk_coap_pdu.cpp
copy to mbtk/libmbtk_lib_v2/coap/mbtk_coap_pdu.cpp
diff --git a/mbtk/libmbtk_coap/mbtk_coap_pdu.h b/mbtk/libmbtk_lib_v2/coap/mbtk_coap_pdu.h
similarity index 100%
copy from mbtk/libmbtk_coap/mbtk_coap_pdu.h
copy to mbtk/libmbtk_lib_v2/coap/mbtk_coap_pdu.h
diff --git a/mbtk/libmbtk_lib/src/ds_ASBuffer.cpp b/mbtk/libmbtk_lib_v2/common/ds_ASBuffer.cpp
similarity index 100%
copy from mbtk/libmbtk_lib/src/ds_ASBuffer.cpp
copy to mbtk/libmbtk_lib_v2/common/ds_ASBuffer.cpp
diff --git a/mbtk/libmbtk_lib/src/ds_ASString.cpp b/mbtk/libmbtk_lib_v2/common/ds_ASString.cpp
similarity index 100%
copy from mbtk/libmbtk_lib/src/ds_ASString.cpp
copy to mbtk/libmbtk_lib_v2/common/ds_ASString.cpp
diff --git a/mbtk/libmbtk_lib/src/mbtk_alarm.c b/mbtk/libmbtk_lib_v2/common/mbtk_alarm.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_alarm.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_alarm.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_at.c b/mbtk/libmbtk_lib_v2/common/mbtk_at.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_at.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_at.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_bs_position.c b/mbtk/libmbtk_lib_v2/common/mbtk_bs_position.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_bs_position.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_bs_position.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_debug.c b/mbtk/libmbtk_lib_v2/common/mbtk_debug.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_debug.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_debug.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_device_info.c b/mbtk/libmbtk_lib_v2/common/mbtk_device_info.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_device_info.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_device_info.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_file.c b/mbtk/libmbtk_lib_v2/common/mbtk_file.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_file.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_file.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_gpio.c b/mbtk/libmbtk_lib_v2/common/mbtk_gpio.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_gpio.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_gpio.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_list.c b/mbtk/libmbtk_lib_v2/common/mbtk_list.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_list.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_list.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_log.c b/mbtk/libmbtk_lib_v2/common/mbtk_log.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_log.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_log.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_map.c b/mbtk/libmbtk_lib_v2/common/mbtk_map.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_map.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_map.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_mtd.c b/mbtk/libmbtk_lib_v2/common/mbtk_mtd.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_mtd.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_mtd.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_ntp.c b/mbtk/libmbtk_lib_v2/common/mbtk_ntp.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_ntp.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_ntp.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_queue.c b/mbtk/libmbtk_lib_v2/common/mbtk_queue.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_queue.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_queue.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_str.c b/mbtk/libmbtk_lib_v2/common/mbtk_str.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_str.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_str.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_task.c b/mbtk/libmbtk_lib_v2/common/mbtk_task.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_task.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_task.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_utf.c b/mbtk/libmbtk_lib_v2/common/mbtk_utf.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_utf.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_utf.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_utils.c b/mbtk/libmbtk_lib_v2/common/mbtk_utils.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_utils.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_utils.c
diff --git a/mbtk/libmbtk_lib/src/mbtk_version.c b/mbtk/libmbtk_lib_v2/common/mbtk_version.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/mbtk_version.c
copy to mbtk/libmbtk_lib_v2/common/mbtk_version.c
diff --git a/mbtk/libmbtk_lib/src/ringbuffer.c b/mbtk/libmbtk_lib_v2/common/ringbuffer.c
similarity index 100%
copy from mbtk/libmbtk_lib/src/ringbuffer.c
copy to mbtk/libmbtk_lib_v2/common/ringbuffer.c
diff --git a/mbtk/libmbtk_factory/gpio-define.h b/mbtk/libmbtk_lib_v2/factory/gpio-define.h
similarity index 100%
copy from mbtk/libmbtk_factory/gpio-define.h
copy to mbtk/libmbtk_lib_v2/factory/gpio-define.h
diff --git a/mbtk/libmbtk_factory/mbtk_adc.c b/mbtk/libmbtk_lib_v2/factory/mbtk_adc.c
similarity index 100%
copy from mbtk/libmbtk_factory/mbtk_adc.c
copy to mbtk/libmbtk_lib_v2/factory/mbtk_adc.c
diff --git a/mbtk/libmbtk_factory/mbtk_audio.c b/mbtk/libmbtk_lib_v2/factory/mbtk_audio.c
similarity index 100%
copy from mbtk/libmbtk_factory/mbtk_audio.c
copy to mbtk/libmbtk_lib_v2/factory/mbtk_audio.c
diff --git a/mbtk/libmbtk_factory/mbtk_basic_at_wrapper.c b/mbtk/libmbtk_lib_v2/factory/mbtk_basic_at_wrapper.c
similarity index 100%
copy from mbtk/libmbtk_factory/mbtk_basic_at_wrapper.c
copy to mbtk/libmbtk_lib_v2/factory/mbtk_basic_at_wrapper.c
diff --git a/mbtk/libmbtk_factory/mbtk_gpio.c b/mbtk/libmbtk_lib_v2/factory/mbtk_gpio.c
similarity index 100%
copy from mbtk/libmbtk_factory/mbtk_gpio.c
copy to mbtk/libmbtk_lib_v2/factory/mbtk_gpio.c
diff --git a/mbtk/libmbtk_factory/mbtk_gpio_def.h b/mbtk/libmbtk_lib_v2/factory/mbtk_gpio_def.h
similarity index 100%
copy from mbtk/libmbtk_factory/mbtk_gpio_def.h
copy to mbtk/libmbtk_lib_v2/factory/mbtk_gpio_def.h
diff --git a/mbtk/libmbtk_factory/mbtk_power.c b/mbtk/libmbtk_lib_v2/factory/mbtk_power.c
similarity index 100%
copy from mbtk/libmbtk_factory/mbtk_power.c
copy to mbtk/libmbtk_lib_v2/factory/mbtk_power.c
diff --git a/mbtk/libmbtk_fota/mbtk_fota.c b/mbtk/libmbtk_lib_v2/fota/mbtk_fota.c
similarity index 100%
copy from mbtk/libmbtk_fota/mbtk_fota.c
copy to mbtk/libmbtk_lib_v2/fota/mbtk_fota.c
diff --git a/mbtk/libmbtk_ftp/mbtk_ftp.c b/mbtk/libmbtk_lib_v2/ftp/mbtk_ftp.c
similarity index 100%
copy from mbtk/libmbtk_ftp/mbtk_ftp.c
copy to mbtk/libmbtk_lib_v2/ftp/mbtk_ftp.c
diff --git a/mbtk/libmbtk_ftp/mbtk_ftp_at.c b/mbtk/libmbtk_lib_v2/ftp/mbtk_ftp_at.c
similarity index 100%
copy from mbtk/libmbtk_ftp/mbtk_ftp_at.c
copy to mbtk/libmbtk_lib_v2/ftp/mbtk_ftp_at.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss.c b/mbtk/libmbtk_lib_v2/gnss/mbtk_gnss.c
similarity index 100%
copy from mbtk/libmbtk_gnss/mbtk_gnss.c
copy to mbtk/libmbtk_lib_v2/gnss/mbtk_gnss.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_5311.c b/mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_5311.c
old mode 100644
new mode 100755
similarity index 100%
copy from mbtk/libmbtk_gnss/mbtk_gnss_5311.c
copy to mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_5311.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_6228.c b/mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_6228.c
similarity index 100%
copy from mbtk/libmbtk_gnss/mbtk_gnss_6228.c
copy to mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_6228.c
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_inter.h b/mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_inter.h
similarity index 100%
copy from mbtk/libmbtk_gnss/mbtk_gnss_inter.h
copy to mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_inter.h
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss_update.c b/mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_update.c
similarity index 100%
copy from mbtk/libmbtk_gnss/mbtk_gnss_update.c
copy to mbtk/libmbtk_lib_v2/gnss/mbtk_gnss_update.c
diff --git a/mbtk/libmbtk_http/mbtk_http.c b/mbtk/libmbtk_lib_v2/http/mbtk_http.c
similarity index 100%
copy from mbtk/libmbtk_http/mbtk_http.c
copy to mbtk/libmbtk_lib_v2/http/mbtk_http.c
diff --git a/mbtk/libmbtk_http/mbtk_http_base.c b/mbtk/libmbtk_lib_v2/http/mbtk_http_base.c
similarity index 100%
copy from mbtk/libmbtk_http/mbtk_http_base.c
copy to mbtk/libmbtk_lib_v2/http/mbtk_http_base.c
diff --git a/mbtk/libmbtk_http/mbtk_http_base.h b/mbtk/libmbtk_lib_v2/http/mbtk_http_base.h
similarity index 100%
copy from mbtk/libmbtk_http/mbtk_http_base.h
copy to mbtk/libmbtk_lib_v2/http/mbtk_http_base.h
diff --git a/mbtk/libmbtk_http/mbtk_http_chunks.c b/mbtk/libmbtk_lib_v2/http/mbtk_http_chunks.c
similarity index 100%
copy from mbtk/libmbtk_http/mbtk_http_chunks.c
copy to mbtk/libmbtk_lib_v2/http/mbtk_http_chunks.c
diff --git a/mbtk/libmbtk_http/mbtk_http_chunks.h b/mbtk/libmbtk_lib_v2/http/mbtk_http_chunks.h
similarity index 100%
copy from mbtk/libmbtk_http/mbtk_http_chunks.h
copy to mbtk/libmbtk_lib_v2/http/mbtk_http_chunks.h
diff --git a/mbtk/libmbtk_mqtt/MQTTClient.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTClient.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTClient.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTClient.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTClient.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTClient.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTClient.h
diff --git a/mbtk/libmbtk_mqtt/MQTTLinux.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTLinux.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTLinux.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTLinux.c
diff --git a/mbtk/libmbtk_mqtt/MQTTLinux.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTLinux.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTLinux.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTLinux.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnect.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTConnect.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnect.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTConnect.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectClient.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTConnectClient.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectClient.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTConnectClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectServer.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTConnectServer.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTConnectServer.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTConnectServer.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTDeserializePublish.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTDeserializePublish.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTDeserializePublish.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTDeserializePublish.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTFormat.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTFormat.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTFormat.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTFormat.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTFormat.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTPacket.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTPacket.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTPacket.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTPacket.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTPacket.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTPublish.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTPublish.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTPublish.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTPublish.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSerializePublish.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSerializePublish.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSerializePublish.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSerializePublish.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribe.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSubscribe.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribe.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSubscribe.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeClient.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSubscribeClient.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeClient.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSubscribeClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeServer.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSubscribeServer.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTSubscribeServer.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTSubscribeServer.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribe.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTUnsubscribe.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribe.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTUnsubscribe.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeClient.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTUnsubscribeClient.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeClient.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTUnsubscribeClient.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeServer.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTUnsubscribeServer.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/MQTTUnsubscribeServer.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/MQTTUnsubscribeServer.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/StackTrace.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/StackTrace.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/StackTrace.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/StackTrace.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha1.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha1.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha1.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/core_sha1.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha1.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.c b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha256.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.c
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha256.c
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha256.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/core_sha256.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_sha256.h
diff --git a/mbtk/libmbtk_mqtt/MQTTPacket/core_stdinc.h b/mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_stdinc.h
similarity index 100%
copy from mbtk/libmbtk_mqtt/MQTTPacket/core_stdinc.h
copy to mbtk/libmbtk_lib_v2/mqtt/MQTTPacket/core_stdinc.h
diff --git a/mbtk/libmbtk_mqtt/mbtk_mqtt.c b/mbtk/libmbtk_lib_v2/mqtt/mbtk_mqtt.c
similarity index 100%
copy from mbtk/libmbtk_mqtt/mbtk_mqtt.c
copy to mbtk/libmbtk_lib_v2/mqtt/mbtk_mqtt.c
diff --git a/mbtk/libmbtk_net/mbtk_dhcp.c b/mbtk/libmbtk_lib_v2/net/mbtk_dhcp.c
similarity index 100%
copy from mbtk/libmbtk_net/mbtk_dhcp.c
copy to mbtk/libmbtk_lib_v2/net/mbtk_dhcp.c
diff --git a/mbtk/libmbtk_net/mbtk_ifc.c b/mbtk/libmbtk_lib_v2/net/mbtk_ifc.c
similarity index 100%
copy from mbtk/libmbtk_net/mbtk_ifc.c
copy to mbtk/libmbtk_lib_v2/net/mbtk_ifc.c
diff --git a/mbtk/libmbtk_net/mbtk_net_control.c b/mbtk/libmbtk_lib_v2/net/mbtk_net_control.c
similarity index 100%
copy from mbtk/libmbtk_net/mbtk_net_control.c
copy to mbtk/libmbtk_lib_v2/net/mbtk_net_control.c
diff --git a/mbtk/libmbtk_net/mbtk_sock.c b/mbtk/libmbtk_lib_v2/net/mbtk_sock.c
similarity index 100%
copy from mbtk/libmbtk_net/mbtk_sock.c
copy to mbtk/libmbtk_lib_v2/net/mbtk_sock.c
diff --git a/mbtk/libmbtk_net/mbtk_sock2.c b/mbtk/libmbtk_lib_v2/net/mbtk_sock2.c
similarity index 100%
copy from mbtk/libmbtk_net/mbtk_sock2.c
copy to mbtk/libmbtk_lib_v2/net/mbtk_sock2.c
diff --git a/mbtk/libmbtk_net/mbtk_sock_internal.h b/mbtk/libmbtk_lib_v2/net/mbtk_sock_internal.h
similarity index 100%
copy from mbtk/libmbtk_net/mbtk_sock_internal.h
copy to mbtk/libmbtk_lib_v2/net/mbtk_sock_internal.h
diff --git a/mbtk/libmbtk_ril/mbtk_alphabet.h b/mbtk/libmbtk_lib_v2/ril/mbtk_alphabet.h
similarity index 100%
copy from mbtk/libmbtk_ril/mbtk_alphabet.h
copy to mbtk/libmbtk_lib_v2/ril/mbtk_alphabet.h
diff --git a/mbtk/libmbtk_ril/mbtk_pdu_sms.c b/mbtk/libmbtk_lib_v2/ril/mbtk_pdu_sms.c
similarity index 100%
copy from mbtk/libmbtk_ril/mbtk_pdu_sms.c
copy to mbtk/libmbtk_lib_v2/ril/mbtk_pdu_sms.c
diff --git a/mbtk/libmbtk_ril_v2/inc/mbtk_ril.h b/mbtk/libmbtk_lib_v2/ril/mbtk_ril.h
similarity index 100%
rename from mbtk/libmbtk_ril_v2/inc/mbtk_ril.h
rename to mbtk/libmbtk_lib_v2/ril/mbtk_ril.h
diff --git a/mbtk/libmbtk_ril_v2/src/mbtk_ril_api.c b/mbtk/libmbtk_lib_v2/ril/mbtk_ril_api.c
similarity index 100%
rename from mbtk/libmbtk_ril_v2/src/mbtk_ril_api.c
rename to mbtk/libmbtk_lib_v2/ril/mbtk_ril_api.c
diff --git a/mbtk/libmbtk_ril_v2/src/ril_utils.c b/mbtk/libmbtk_lib_v2/ril/ril_utils.c
similarity index 100%
rename from mbtk/libmbtk_ril_v2/src/ril_utils.c
rename to mbtk/libmbtk_lib_v2/ril/ril_utils.c
diff --git a/mbtk/libmbtk_tcpip/mbtk_tcpip_at.c b/mbtk/libmbtk_lib_v2/tcpip/mbtk_tcpip_at.c
similarity index 100%
copy from mbtk/libmbtk_tcpip/mbtk_tcpip_at.c
copy to mbtk/libmbtk_lib_v2/tcpip/mbtk_tcpip_at.c
diff --git a/mbtk/libmbtk_mqtt/Makefile b/mbtk/libmbtk_mqtt/Makefile
deleted file mode 100755
index 7cf0ddb..0000000
--- a/mbtk/libmbtk_mqtt/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_mqtt
-
-INC_DIR += -I. \
- -I$(LOCAL_PATH)/MQTTPacket
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net -lmbtk_http
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE +=
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-#MY_FILES_PATH += $(LOCAL_PATH)/MQTTPacket
-
-#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
-#MY_FILES_PATH += $(LOCAL_PATH)/ql
-#endif
-
-#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
-#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
-#endif
-
-LOCAL_SRC_FILES = $(wildcard MQTTPacket/*.c) $(wildcard *.c)
-OBJS = $(patsubst %.c, %.o, $(LOCAL_SRC_FILES))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_mqtt.so
-
-all: $(dtarget)
-
-$(dtarget): $(OBJS)
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_net/Makefile b/mbtk/libmbtk_net/Makefile
deleted file mode 100755
index bbf1198..0000000
--- a/mbtk/libmbtk_net/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_net
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lprop2uci
-
-ifeq ($(BUILD_PLATFORM), master)
-LIBS += -lpolarssl
-else
-LIBS += -lssl -lcrypto
-endif
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE += -DMBTK_NET_MONITOR_SUPPORT
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_net.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_ril_v2/Makefile b/mbtk/libmbtk_ril_v2/Makefile
deleted file mode 100755
index 617a549..0000000
--- a/mbtk/libmbtk_ril_v2/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_ril_v2
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-LOCAL_SRC_FILES = $(wildcard src/*.cpp) $(wildcard src/*.c)
-OBJS = $(patsubst %.c, %.o, $(LOCAL_SRC_FILES))
-$(info OBJS = $(OBJS))
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_ril.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libmbtk_ril_v2/inc/mbtk_alphabet.h b/mbtk/libmbtk_ril_v2/inc/mbtk_alphabet.h
deleted file mode 100755
index 1ffece7..0000000
--- a/mbtk/libmbtk_ril_v2/inc/mbtk_alphabet.h
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// Created by hitmoon on 15-12-10.
-//
-
-
-struct map_node {
- unsigned short key;
- unsigned short value;
-};
-
-
-#define map_size(map) (sizeof(map) / sizeof(struct map_node))
-
-
-// Unicode编码到GSM编码转换
-struct map_node UCS2ToBIT7[] = {
- {0x000C, 0x1B0A},
- {0x0024, 0x0002},
- {0x0040, 0x0000},
- {0x005B, 0x1B3C},
- {0x005C, 0x1B2F},
- {0x005D, 0x1B3E},
- {0x005E, 0x1B14},
- {0x005F, 0x0011},
- {0x007B, 0x1B28},
- {0x007C, 0x1B40},
- {0x007D, 0x1B29},
- {0x007E, 0x1B3D},
- {0x00A0, 0x001B},
- {0x00A1, 0x0040},
- {0x00A3, 0x0001},
- {0x00A4, 0x0024},
- {0x00A5, 0x0003},
- {0x00A7, 0x005F},
- {0x00BF, 0x0060},
- {0x00C4, 0x005B},
- {0x00C5, 0x000E},
- {0x00C6, 0x001C},
- {0x00C9, 0x001F},
- {0x00D1, 0x005D},
- {0x00D6, 0x005C},
- {0x00D8, 0x000B},
- {0x00DC, 0x005E},
- {0x00DF, 0x001E},
- {0x00E0, 0x007F},
- {0x00E4, 0x007B},
- {0x00E5, 0x000F},
- {0x00E6, 0x001D},
- {0x00E7, 0x0009},
- {0x00E8, 0x0004},
- {0x00E9, 0x0005},
- {0x00EC, 0x0007},
- {0x00F1, 0x007D},
- {0x00F2, 0x0008},
- {0x00F6, 0x007C},
- {0x00F8, 0x000C},
- {0x00F9, 0x0006},
- {0x00FC, 0x007E},
- {0x0393, 0x0013},
- {0x0394, 0x0010},
- {0x0398, 0x0019},
- {0x039B, 0x0014},
- {0x039E, 0x001A},
- {0x03A0, 0x0016},
- {0x03A3, 0x0018},
- {0x03A6, 0x0012},
- {0x03A8, 0x0017},
- {0x03A9, 0x0015},
- {0x20AC, 0x1B65}
-};
-
-// GSM编码到Unicode编码转换
-struct map_node BIT7ToUCS2[] = {
- {0x0000, 0x0040},
- {0x0001, 0x00A3},
- {0x0002, 0x0024},
- {0x0003, 0x00A5},
- {0x0004, 0x00E8},
- {0x0005, 0x00E9},
- {0x0006, 0x00F9},
- {0x0007, 0x00EC},
- {0x0008, 0x00F2},
- {0x0009, 0x00E7},
- {0x000B, 0x00D8},
- {0x000C, 0x00F8},
- {0x000E, 0x00C5},
- {0x000F, 0x00E5},
- {0x0010, 0x0394},
- {0x0011, 0x005F},
- {0x0012, 0x03A6},
- {0x0013, 0x0393},
- {0x0014, 0x039B},
- {0x0015, 0x03A9},
- {0x0016, 0x03A0},
- {0x0017, 0x03A8},
- {0x0018, 0x03A3},
- {0x0019, 0x0398},
- {0x001A, 0x039E},
- {0x001B, 0x00A0},
- {0x001C, 0x00C6},
- {0x001D, 0x00E6},
- {0x001E, 0x00DF},
- {0x001F, 0x00C9},
- {0x0024, 0x00A4},
- {0x0040, 0x00A1},
- {0x005B, 0x00C4},
- {0x005C, 0x00D6},
- {0x005D, 0x00D1},
- {0x005E, 0x00DC},
- {0x005F, 0x00A7},
- {0x0060, 0x00BF},
- {0x007B, 0x00E4},
- {0x007C, 0x00F6},
- {0x007D, 0x00F1},
- {0x007E, 0x00FC},
- {0x007F, 0x00E0}
-};
-// GSM编码转义序列到Unicode编码转换
-struct map_node BIT7EToUCS2[] = {
- {0x000A, 0x000C},
- {0x0014, 0x005E},
- {0x0028, 0x007B},
- {0x0029, 0x007D},
- {0x002F, 0x005C},
- {0x003C, 0x005B},
- {0x003D, 0x007E},
- {0x003E, 0x005D},
- {0x0040, 0x007C},
- {0x0065, 0x20AC}
-};
-
-// map 中查询键值
-int32_t map_get_value(struct map_node *map, unsigned int size, unsigned short key) {
- int i = 0;
- for (i = 0; i < size; i++) {
- if (map[i].key == key)
- return map[i].value;
- }
- return -1;
-}
diff --git a/mbtk/libmbtk_ril_v2/src/mbtk_pdu_sms.c b/mbtk/libmbtk_ril_v2/src/mbtk_pdu_sms.c
deleted file mode 100755
index 5825cb6..0000000
--- a/mbtk/libmbtk_ril_v2/src/mbtk_pdu_sms.c
+++ /dev/null
@@ -1,1086 +0,0 @@
-//
-// Created by hitmoon on 15-12-9.
-//
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "mbtk_pdu_sms.h"
-#include "mbtk_alphabet.h"
-
-#define SUB_STR_SIZE 512
-char temp[SUB_STR_SIZE];
-
-// some constant
-
-//长短信信息元素参考号
-enum EnumCSMIEI mCSMIEI;
-// 服务中心地址
-char *mSCA;
-// 请求状态报告
-bool mSRR;
-// 拒绝副本
-bool mRD;
-// 短信有效期
-char *mVP;
-// 长短信信息元素消息参考号
-int mCSMMR;
-
-// initialize PDU constants
-void sms_init()
-{
- mCSMMR = 0;
- mRD = false;
- mSRR = false;
- mSCA = "";
- mVP = "";
- mCSMIEI = BIT8MIEI;
-}
-
-
-char *sub_str(const char *str, int start, int size) {
- memset(temp, '\0', SUB_STR_SIZE);
- if (size > 0)
- strncpy(temp, str + start, size);
- else if (size < 0)
- strcpy(temp, str + start);
-
- return temp;
-}
-
-struct SMS_Struct PDUDecoding(const char *data) {
-
- struct SMS_Struct sms;
- int end_index;
- int PDUType;
- // 短信中心
- sms.SCA = SCADecoding(data, &end_index);
-
- // 协议数据单元类型
- PDUType = strtol(sub_str(data, end_index, 2), NULL, 16);
- end_index += 2;
-
- sms.RP = PDUType & (1 << 7) ? true : false; // 应答路径
- sms.UDHI = PDUType & (1 << 6) ? true : false; // 用户数据头标识
- sms.SRI = PDUType & (1 << 5) ? true : false; // 状态报告指示
- sms.MMS = PDUType & (1 << 2) ? false : true; // 更多信息发送
- sms.MTI = PDUType & 3; // 信息类型指示
-
- // 发送方SME的地址
- sms.OA = OADecoding(data, end_index, &end_index);
-
- // 协议标识
- sms.PID = strtol(sub_str(data, end_index, 2), NULL, 16);
- end_index += 2;
-
- // 数据编码方案
- int DCSType = strtol(sub_str(data, end_index, 2), NULL, 16);
- end_index += 2;
-
- // 文本压缩指示
- sms.TC = DCSType & (1 << 5);
- // 编码字符集
- sms.DCS = (enum EnumDCS) ((DCSType >> 2) & 3);
-
- if (DCSType & (1 << 4)) {
- // 信息类型信息 0:立即显示 1:移动设备特定类型 2:SIM特定类型 3:终端设备特定类型
- sms.MC = DCSType & 3;
- }
- else {
- // 不含信息类型信息
- sms.MC = -1;
- }
- // 服务中心时间戳(BCD编码)
- sms.SCTS = SCTSDecoding(data, end_index);
- end_index += 14;
-
- // 用户数据头
- if (sms.UDHI) {
- sms.UDH = UDHDecoding(data, end_index + 2);
- }
- else {
- sms.UDH = NULL;
- }
-
- // 用户数据
- sms.UD = UserDataDecoding(data, end_index, sms.UDHI, sms.DCS);
-
- return sms;
-}
-
-
-char *SCADecoding(const char *data, int *EndIndex) {
- int len;
-
- char *result;
- char *buf;
- int i = 0;
-
- len = strtol(sub_str(data, 0, 2), NULL, 16);
- if (len == 0) {
- *EndIndex = 2;
- return NULL;
- }
-
- *EndIndex = (len + 1) * 2;
-
- result = (char *) malloc(sizeof(char) * len * 2);
- //wmemset(result, '0', sizeof(char) * (len * 2 + 1));
-
- buf = result;
- len *= 2;
-
- // 服务中心地址类型
- if (strncmp(data + 2, "91", 2) == 0) {
- sprintf(buf++, "+");
- }
-
- // 服务中心地
-
- for (i = 4; i < *EndIndex; i += 2) {
- sprintf(buf++, "%c", data[i + 1]);
- sprintf(buf++, "%c", data[i]);
- }
-
- // 去掉填充的 'F'
- if (result[strlen(result) - 1] == L'F') {
- result[strlen(result) - 1] = L'\0';
- }
-
- return result;
-}
-
-char *OADecoding(const char *data, int index, int *EndIndex) {
- int len;
- char *result, *buf;
-
- len = strtol(sub_str(data, index, 2), NULL, 16);
-
- if (len == 0) {
- *EndIndex = index + 2;
- return NULL;
- }
-
- *EndIndex = index + 4 + len;
-
- result = (char *) malloc(sizeof(char) * (len + 2));
- //wmemset(result, 0, sizeof(char) * (len + 1));
- buf = result;
-
- if (strncmp(data + index + 2, "91", 2) == 0) {
- sprintf(buf++, "+");
- }
-
- // 电话号码
- int i = 0;
- for (i = 0; i < len; i += 2) {
- sprintf(buf++, "%c", data[index + i + 5]);
- sprintf(buf++, "%c", data[index + i + 4]);
-
- }
-
- if (len % 2 != 0) {
- result[strlen(result) - 1] = '\0';
- (*EndIndex)++;
- }
- return result;
-}
-
-char *SCTSDecoding(const char *data, int index) {
-
- char *result;
-
- result = (char *) malloc(sizeof(char) * 32);
- sprintf(result, "20%02d-%02d-%02d %02d:%02d:%02d",
- BCDDecoding(data, index, 0), // 年
- BCDDecoding(data, index + 2, 0), // 月
- BCDDecoding(data, index + 4, 0), // 日
- BCDDecoding(data, index + 6, 0), // 时
- BCDDecoding(data, index + 8, 0), // 分
- BCDDecoding(data, index + 10, 0) // 秒
-
- );
- return result;
-}
-
-int BCDDecoding(const char *data, int index, bool isMSB) {
-
- int n1, n10;
-
- n1 = strtol(sub_str(data, index, 1), NULL, 10);
- n10 = strtol(sub_str(data, index + 1, 1), NULL, 10);
-
- if (isMSB) {
- if (n10 >= 8)
- return -((n10 - 8) * 10 + n1); // 负值
- else
- return n10 * 10 + n1;
- }
- else {
- return n10 * 10 + n1;
- }
-}
-
-struct UDHS *UDHDecoding(const char *data, int index) {
-
- int len;
- struct UDHS *result;
-
- len = strtol(sub_str(data, index, 2), NULL, 16);
- index += 2;
- int i = 0;
-
- result = (struct UDHS *) malloc(sizeof(struct UDHS));
- result->UDH = (struct PDUUDH *) malloc(sizeof(struct PDUUDH) * len);
- result->count = 0;
- memset(result->UDH, 0, sizeof(struct PDUUDH) * len);
-
- while (i < len) {
- // 信息元素标识(Information Element Identifier
- char IEI = strtol(sub_str(data, index, 2), NULL, 16);
- index += 2;
- // 信息元素数据长度(Length of Information Element)
- int IEDL = strtol(sub_str(data, index, 2), NULL, 16);
- index += 2;
- // 信息元素数据(Information Element Data)
- char *IED = (char *) malloc(sizeof(char) * (IEDL + 1));
- int j = 0;
- for (j = 0; j < IEDL; j++) {
- IED[j] = strtol(sub_str(data, index, 2), NULL, 16);
- index += 2;
- }
- result->UDH[result->count].IEI = IEI;
- result->UDH[result->count].IED = IED;
- result->count++;
- i += IEDL + 2;
- }
-
- return result;
-}
-
-char *UserDataDecoding(const char *data, int index, bool UDHI, enum EnumDCS dcs) {
- char *result = NULL;
- char *buf;
-
- // 用户数据区长度
- int UDL = strtol(sub_str(data, index, 2), NULL, 16);
- index += 2;
-
- // 跳过用户数据头
- int UDHL = 0;
- if (UDHI) {
- // 用户数据头长度
- UDHL = strtol(sub_str(data, index, 2), NULL, 16);
- UDHL++;
- index += UDHL << 1;
-
- }
-
- // 获取用户数据
- if (dcs == UCS2) {
- int len = (UDL - UDHL) >> 1;
- int utf8_len;
-
- result = (char *) malloc(sizeof(char) * (len * 3));
- buf = result;
- u_int32_t code[2];
-
- int i = 0;
- for (i = 0; i < len; i++) {
- code[0] = strtol(sub_str(data, (i << 2) + index, 4), NULL, 16);
- code[1] = 0;
- utf32toutf8((wchar_t*)code, (unsigned char*)buf, len * 3, &utf8_len);
- buf += utf8_len;
- }
-
- buf[0] = '\0';
- return result;
- }
- else if (dcs == BIT7) {
- int Septets = UDL - (UDHL * 8 + 6) / 7; // 7-Bit编码字符数
-
- int FillBits = (UDHL * 8 + 6) / 7 * 7 - UDHL * 8; // 填充位数
- return BIT7Decoding(BIT7Unpack(data, index, Septets, FillBits), Septets);
- }
- else {// 8Bit编码
- // 获取数据长度
- UDL -= UDHL;
- result = (char *) malloc(sizeof(char) * (UDL + 1));
- int i = 0;
- for (i = 0; i < UDL; i++) {
- result[i] = strtol(sub_str(data, (i << 1) + index, 2), NULL, 16);
- }
- return result;
- }
-
- return "Error!";
-}
-
-char *BIT7Unpack(const char *data, int index, int Septets, int FillBits) {
- char *result;
-
- result = (char *) malloc(sizeof(char) * (Septets + 1));
- // 每8个7-Bit编码字符存放到7个字节
- int PackLen = (Septets * 7 + FillBits + 7) / 8;
- int n = 0;
- int left = 0;
-
-// printf("Unapck data = %s\n", data + index);
-// printf("Septets = %d\n", Septets);
-// printf("pack len = %d\n", PackLen);
-// printf("fillbits = %d\n", FillBits);
-
- int i = 0;
- for (i = 0; i < PackLen; i++) {
-
- int Order = (i + (7 - FillBits)) % 7;
- int Value = strtol(sub_str(data, (i << 1) + index, 2), NULL, 16);
- if (i != 0 || FillBits == 0) {
- result[n++] = ((Value << Order) + left) & 0x7F;
- }
-// printf("left = %d, i = %d, order = %d, value = %d\n", left, i, Order, Value);
-// printf("result[%d] = %d\n", n - 1, result[n - 1]);
- left = Value >> (7 - Order);
- if (Order == 6) {
- if (n == Septets)
- break;
- result[n++] = left;
- //printf("result[%d] = %d\n", n - 1, result[n - 1]);
- left = 0;
- }
- }
-
- return result;
-}
-
-char *BIT7Decoding(char *BIT7Data, unsigned int size)
-{
- char *result, *buf;
-
- result = (char *) malloc(sizeof(char) * (size + 1));
- buf = result;
-
- int i = 0;
- for (i = 0; i < size; i++) {
- u_int16_t key = BIT7Data[i];
- if (isBIT7Same(key)) {
- sprintf(buf++, "%c", key);
- }
- else if (map_get_value(BIT7ToUCS2, map_size(BIT7ToUCS2), key) >= 0) {
- u_int16_t value;
- if (key == 0x1B) { // 转义字符
- value = map_get_value(BIT7EToUCS2, map_size(BIT7EToUCS2), BIT7Data[i + 1]);
- if (i < size - 1 && value > 0) {
- sprintf(buf++, "%c", value);
- i++;
- }
- else {
- value = map_get_value(BIT7ToUCS2, map_size(BIT7ToUCS2), key);
- sprintf(buf++, "%c", value);
- }
- }
- else {
- //printf("go b\n");
- value = map_get_value(BIT7ToUCS2, map_size(BIT7ToUCS2), key);
- //printf("value = %u\n", value);
- sprintf(buf++, "%c", value);
-
- }
- }
- else {// 异常数据
- sprintf(buf++, "?");
- }
-
- }
- return result;
-
-}
-
-int isBIT7Same(u_int16_t UCS2) {
- if ((UCS2 >= 0x61 && UCS2 <= 0x7A) ||
- (UCS2 >= 0x41 && UCS2 <= 0x5A) ||
- (UCS2 >= 0x25 && UCS2 <= 0x3F) ||
- (UCS2 >= 0x20 && UCS2 <= 0x23) ||
- UCS2 == 0x0A || UCS2 == 0x0D) {
- return 1;
- }
- return 0;
-}
-
-struct PDUS *PDUEncoding(char *SCA, char *DA, char *UDC, struct UDHS *udhs) {
- enum EnumDCS DCS;
-
- sms_init();
-
-// if (isGSMString(UDC))
-// DCS = BIT7;
-// else
- DCS = UCS2;
-
- return PDUDoEncoding(SCA, DA, UDC, udhs, DCS);
-}
-
-struct PDUS *PDUDoEncoding(char *SCA, char *DA, char *UDC, struct UDHS *udhs, enum EnumDCS DCS) {
- // 短信拆分
- struct UDS *uds = UDCSplit(UDC, udhs, DCS);
- struct PDUS *pdus;
-
- if (uds == NULL)
- return NULL;
- pdus = (struct PDUS *) malloc(sizeof(struct PDUS));
- pdus->count = 0;
- pdus->PDU = (char **) malloc(sizeof(char *) * uds->total);
-
- if (uds->total > 1) {
- // 长短信
- int CSMMR = mCSMMR;
- if (++mCSMMR > 0xFFFF)
- mCSMMR = 0;
- // 生成短信编码序列
- int i = 0;
- for (i = 0; i < uds->total; i++) {
- // 更新用户数据头
- struct UDHS *CSMUDH = UpdateUDH(udhs, CSMMR, uds->total, i);
- pdus->PDU[i] = SoloPDUEncoding(SCA, DA, uds->Data[i], CSMUDH, DCS);
- pdus->count++;
- }
-
- }
- else { // 单条短信
- pdus->PDU[0] = SoloPDUEncoding(SCA, DA, uds->Data[0], udhs, DCS);
- pdus->count = 1;
- }
-
- return pdus;
-}
-
-int isGSMString(char *Data) {
-
- if (Data == NULL || strcmp(Data, "") == 0)
- return 1;
-
- if (is_acsii((unsigned char*)Data) == 0) {
- int len;
- len = utf8len((unsigned char *) Data);
-
- u_int16_t *code = (u_int16_t *) malloc(sizeof(u_int16_t) * len);
- utf8toutf16((unsigned char *) Data, code, len, &len);
-
- while (*code) {
- if (!(isBIT7Same(*code) || map_get_value(UCS2ToBIT7, map_size(UCS2ToBIT7), *code) >= 0))
- return 0;
- code++;
- }
-
- return 1;
- }
- else
- return 1;
-
-}
-
-struct UDS *UDCSplit(char *UDC, struct UDHS *udhs, enum EnumDCS DCS) {
- int UDHL = getUDHL(udhs);
- struct UDS *result;
-
- if (DCS == BIT7) {
- // 7-Bit编码
- // 计算剩余房间数
- int room = BIT7UDL - (UDHL * 8 + 6) / 7;
- if (room < 1) {
- if (UDC == NULL || strcmp(UDC, "") == 0) {
- result = (struct UDS *) malloc(sizeof(struct UDS));
- result->Data = (char **)malloc(sizeof(char *));
- result->total = 1;
- result->Data[0] = UDC;
- return result;
- }
- else
- return NULL;
- }
-
- // 不需要拆分
- if (SeptetsLength(UDC) <= room) {
- result = (struct UDS *) malloc(sizeof(struct UDS));
- result->Data = (char **)malloc(sizeof(char *));
- result->total = 1;
- result->Data[0] = UDC;
- return result;
- }
- else // 拆分短信
- {
- if (UDHL == 0)
- UDHL++;
- if (mCSMIEI == BIT8MIEI)
- UDHL += 5; // 1字节消息参考号
- else
- UDHL += 6; // 2字节消息参考号
- // 更新剩余房间数
- room = BIT7UDL - (UDHL * 8 + 6) / 7;
- if (room < 1)
- return NULL;
-
- int i = 0;
- int len = strlen(UDC);
-
- result = (struct UDS *) malloc(sizeof(struct UDS));
- result->total = 0;
- result->Data = (char **) malloc(MAX_SMS_NR * sizeof(char *));
-
- while (i < len) {
- int step = SeptetsToChars(UDC, i, room);
- if (i + step < len) {
- result->Data[result->total] = (char *) malloc(sizeof(char) * (step + 1));
- strcpy(result->Data[result->total++], sub_str(UDC, i, step));
- }
- else {
- result->Data[result->total] = (char *) malloc(sizeof(char) * (len - i + 1));
- strcpy(result->Data[result->total++], sub_str(UDC, i, -1));
- }
-
- i += step;
-
- }
- return result;
-
- }
- }
- else { // UCS2编码
- // 计算剩余房间数
- int room = (BIT8UDL - UDHL) >> 1;
- if (room < 1) {
- if (UDC == NULL || strcmp(UDC, "") == 0) {
- result = (struct UDS *) malloc(sizeof(struct UDS));
- result->Data = (char **)malloc(sizeof(char *));
- result->total = 1;
- result->Data[0] = UDC;
- return result;
- }
- else
- return NULL;
- }
- if (UDC == NULL || utf8len(UDC) <= room) {
- result = (struct UDS *) malloc(sizeof(struct UDS));
- result->Data = (char **)malloc(sizeof(char *));
- result->total = 1;
- result->Data[0] = UDC;
- return result;
- }
- else // 需要拆分成多条短信
- {
- if (UDHL == 0)
- UDHL++;
- if (mCSMIEI == BIT8MIEI)
- UDHL += 5; // 1字节消息参考号
- else
- UDHL += 6; // 2字节消息参考号
-
- // 更新剩余房间数
- room = (BIT8UDL - UDHL) >> 1;
- if (room < 1)
- return NULL;
-
- int len = utf8len(UDC);
-
- result = (struct UDS *) malloc(sizeof(struct UDS));
- result->total = 0;
- result->Data = (char **) malloc(MAX_SMS_NR * sizeof(char *));
- int index = 0;
- int i = 0;
- for (i = 0; i < len; i += room) {
- int real_size;
- if (i + room < len) {
- real_size = utf8_get_size(UDC + index, room);
- result->Data[result->total] = (char*)malloc(sizeof(char) * (real_size + 1));
- strcpy(result->Data[result->total++],sub_str(UDC, index, real_size));
- }
- else {
- real_size = utf8_get_size(UDC + index, len - i);
- result->Data[result->total] = (char*)malloc(sizeof(char) * (real_size + 1));
- strcpy(result->Data[result->total++], sub_str(UDC, index, -1));
- }
- index += real_size;
- }
- return result;
- }
-
- }
-}
-
-int getUDHL(struct UDHS *udhs) {
- if (udhs == NULL)
- return 0;
-
- // 加上1字节的用户数据头长度
- int UDHL = 1;
- int i = 0;
- for (i = 0; i < udhs->count; i++) {
- UDHL += strlen(udhs->UDH[i].IED) + 2;
- }
- return UDHL;
-}
-
-int SeptetsLength(char *source) {
- if (source == NULL || strcmp(source, "") == 0) {
- return 0;
- }
- int len = strlen(source);
- while (*source) {
- u_int16_t code = (u_int16_t) *source;
- if (map_get_value(UCS2ToBIT7, map_size(UCS2ToBIT7), code) > 0xFF) {
- len++;
- }
- source++;
- }
- return len;
-}
-
-int SeptetsToChars(char *source, int index, int septets) {
- if (source == NULL || strcmp(source, "") == 0)
- return 0;
- int count = 0;
- int i;
-
- for (i = index; i < strlen(source); i++) {
- u_int16_t code = (u_int16_t) source[i];
- if (map_get_value(UCS2ToBIT7, map_size(UCS2ToBIT7), code) > 0xFF)
- count++;
-
- if (++count >= septets) {
- if (count == septets)
- i++;
- break;
- }
- }
- return i - index;
-}
-
-struct UDHS *UpdateUDH(struct UDHS *udhs, int CSMMR, int total, int index) {
- struct UDHS *result;
-
- result = (struct UDHS *) malloc(sizeof(struct UDHS));
-
- if (udhs == NULL || udhs->count == 0) {
- result->UDH = (struct PDUUDH *) malloc(sizeof(struct PDUUDH));
- result->count = 1;
-
- }
- else {
- result->UDH = (struct PDUUDH *) malloc(sizeof(struct PDUUDH) * (udhs->count + 1));
- result->count = udhs->count + 1;
- // 复制 UDH
- memcpy(&result->UDH[1], udhs->UDH, sizeof(struct PDUUDH) * udhs->count);
- }
- // 插入第一个位置
- if (mCSMIEI == BIT8MIEI) {
- result->UDH[0].IED = (char *) malloc(sizeof(char) * 3);
- result->UDH[0].count = 3;
- result->UDH[0].IED[0] = CSMMR & 0xFF;
- result->UDH[0].IED[1] = total;
- result->UDH[0].IED[2] = index + 1;
- result->UDH[0].IEI = 0;
- }
- else {
- result->UDH[0].IED = (char *) malloc(sizeof(char) * 4);
- result->UDH[0].count = 4;
- result->UDH[0].IED[0] = (CSMMR >> 8) & 0xFF;
- result->UDH[0].IED[1] = CSMMR & 0xFF;
- result->UDH[0].IED[2] = total;
- result->UDH[0].IED[3] = index + 1;
- result->UDH[0].IEI = 8;
- }
-
- return result;
-}
-
-char *SoloPDUEncoding(char *SCA, char *DA, char *UC, struct UDHS *udhs, enum EnumDCS DCS) {
- char *result;
- char *buf, *ret;
- int index;
-
- result = (char *) malloc(sizeof(char) * 400);
- buf = result;
-
-/* // 短信中心
- ret = SCAEncoding(SCA);
- index = strlen(ret);
- sprintf(buf, "%s", ret);
- printf("buf:%s\n",buf);
- buf += index;
-
-*/
- // 协议数据单元类型
- if (udhs == NULL || udhs->count == 0) {
- ret = PDUTypeEncoding(false);
- sprintf(buf, "%s", ret);
- buf += strlen(ret);
- }
- else {
- ret = PDUTypeEncoding(true);
- sprintf(buf, "%s", ret);
- buf += strlen(ret);
- }
- // 消息参考值
- ret = MREncoding();
- sprintf(buf, "%s", ret);
- buf += strlen(ret);
- // 接收方SME地址
- ret = DAEncoding(DA);
- sprintf(buf, "%s", ret);
- buf += strlen(ret);
- // 协议标识
- ret = PIDEncoding();
- sprintf(buf, "%s", ret);
- buf += strlen(ret);
- // 编码方案
- ret = DCSEncoding(UC, DCS);
- sprintf(buf, "%s", ret);
- buf += strlen(ret);
- // 有效期
- sprintf(buf, "%s", mVP);
- buf += strlen(mVP);
-
- // 用户数据长度及内容
- ret = UDEncoding(UC, udhs, DCS);
- sprintf(buf, "%s", ret);
-
- return result;
-}
-
-char *SCAEncoding(char *SCA) {
-
- if (SCA == NULL || strcmp(SCA, "") == 0) {
- // 表示使用SIM卡内部的设置值,该值通过AT+CSCA指令设置
- return "00";
- }
-
- char *result;
- char *buf;
- int len;
- len = strlen(SCA);
- result = (char *) malloc((len + 5) * sizeof(char));
- buf = result;
-
- int index = 0;
- if (SCA[0] == '+') {
- // 国际号码
- sprintf(buf, "%02X", len / 2 + 1);
- buf += 2;
- sprintf(buf, "91");
- buf += 2;
- index = 1;
- }
- else {
- // 国内号码
- sprintf(buf, "%02X", len / 2 + 1);
- buf += 2;
- sprintf(buf, "81");
- buf += 2;
- }
- // SCA地址编码
- for (; index < len; index += 2) {
- if (index == len - 1) {
- // 补“F”凑成偶数个
- sprintf(buf++, "F");
- sprintf(buf++, "%c", SCA[index]);
-
- }
- else {
- sprintf(buf++, "%c", SCA[index + 1]);
- sprintf(buf++, "%c", SCA[index]);
- }
- }
-
- return result;
-}
-
-char *PDUTypeEncoding(bool UDH) {
- // 信息类型指示(Message Type Indicator)
- // 01 SMS-SUBMIT(MS -> SMSC)
- int PDUType = 0x11; // 508TLC change
-// int PDUType = 0x01;
- char *result;
- result = (char *) malloc(3 * sizeof(char));
-
- // 用户数据头标识(User Data Header Indicator)
- if (UDH) {
- PDUType |= 0x40;
- }
- // 有效期格式(Validity Period Format)
- if (strlen(mVP) == 2) {
- // VP段以整型形式提供(相对的)
- PDUType |= 0x10;
- }
- else if (strlen(mVP) == 14) {
- // VP段以8位组的一半(semi-octet)形式提供(绝对的)
- PDUType |= 0x18;
- }
-
- // 请求状态报告(Status Report Request)
- if (mSRR) {
- // 请求状态报告
- PDUType |= 0x20;
- }
-
- // 拒绝复本(Reject Duplicate)
- if (mRD) {
- PDUType |= 0x04;
- }
- sprintf(result, "%02X", PDUType);
- return result;
-}
-
-char *MREncoding() {
- // 由手机设置
- return "00";
-}
-
-char *DAEncoding(char *DA) {
- if (DA == NULL || strcmp(DA, "") == 0) {
- // 地址长度0,地址类型未知
- return "0080";
- }
- char *result, *buf;
- int len = strlen(DA);
- int index;
-
- result = (char *) malloc(sizeof(char) * (len + 5));
- buf = result;
-
- if (DA[0] == '+') {
- // 国际号码
- // 地址长度编码
- sprintf(buf, "%02X", len - 1);
- buf += 2;
- // 地址类型
- sprintf(buf, "91");
- buf += 2;
- index = 1;
- }
- else {
- // 国内号码
- // 地址长度编码
- sprintf(buf, "%02X", len);
- buf += 2;
- // 地址类型
- sprintf(buf, "81");
- buf += 2;
- }
-
- for (; index < len; index += 2) {
- // 号码部分奇偶位对调
- if (index == len - 1) {
- sprintf(buf++, "F");
- sprintf(buf++, "%c", DA[index]);
- }
- else {
- sprintf(buf++, "%c", DA[index + 1]);
- sprintf(buf++, "%c", DA[index]);
- }
- }
- return result;
-
-}
-
-char *PIDEncoding() {
- return "00";
-}
-
-char *DCSEncoding(char *UD, enum EnumDCS DCS) {
- if (DCS == BIT7) {
- // 7-Bit编码
- return "00";
- }
- else {
- // UCS2编码
- return "0800";
- }
-}
-
-char *UDEncoding(char *UD, struct UDHS *udhs, enum EnumDCS DCS) {
- int UDHL;
-
- char *result;
-
- // 用户数据头编码
- char *header = UDHEncoding(udhs, &UDHL);
-
- // 用户数据内容编码
- int UDCL;
- char *body;
-
- body = UDCEncoding(UD, &UDCL, UDHL, DCS);
-
- // 用户数据区长度
- int UDL;
- if (DCS == BIT7) {
- // 7-Bit编码
- UDL = (UDHL * 8 + 6) / 7 + UDCL;
- }
- else {
- // UCS2编码或者8-Bit编码
- UDL = UDHL + UDCL;
- }
-
- int len = strlen(header) + strlen(body) + 2;
- result = (char *) malloc(sizeof(char) * (len + 1));
- sprintf(result, "%02X%s%s", UDL, header, body);
-
- return result;
-
-}
-
-char *UDHEncoding(struct UDHS *udhs, int *UDHL) {
-
- *UDHL = 0;
-
- if (udhs == NULL || udhs->count == 0)
- return "";
- int i = 0;
- for (i = 0; i < udhs->count; i++) {
- *UDHL += udhs->UDH[i].count + 2;
- }
-
- char *result;
- char *buf;
- result = (char *) malloc(sizeof(char) * ((*UDHL + 1) * 2 + 1));
- buf = result;
-
- sprintf(buf, "%02X", *UDHL);
- buf += 2;
-
- for (i = 0; i < udhs->count; i++) {
- // 信息元素标识1字节
- sprintf(buf, "%02X", udhs->UDH[i].IEI);
- buf += 2;
- // 信息元素长度1字节
- sprintf(buf, "%02X", udhs->UDH[i].count);
- buf += 2;
- // 信息元素数据
- int j = 0;
- for (j = 0; j < udhs->UDH[i].count; j++) {
- sprintf(buf, "%02X", udhs->UDH[i].IED[j]);
- buf += 2;
- }
-
- }
- // 加上1字节的用户数据头长度
- (*UDHL)++;
- return result;
-
-}
-
-char *UDCEncoding(char *UDC, int *UDCL, int UDHL, enum EnumDCS DCS) {
- if (UDC == NULL || strcmp(UDC, "") == 0) {
- *UDCL = 0;
- return "";
- }
-
- if (DCS == BIT7) {
- // 7-Bit编码,需要参考用户数据头长度,已保证7-Bit边界对齐
- return BIT7Pack(BIT7Encoding(UDC, UDCL), UDHL);
- }
- else {
- // UCS2编码
-
- int len = utf8len((unsigned char*)UDC);
- int len2;
- unsigned short *code;
-
- code = (unsigned short*)malloc(sizeof(unsigned short) * len);
- utf8toutf16((unsigned char*)UDC, code, len, &len2);
- *UDCL = len * 2;
- char *result = (char *) malloc(sizeof(char) * (*UDCL * 2 + 1));
- char *buf = result;
-
- int i = 0;
- for (i = 0; i < len; i++) {
- sprintf(buf, "%04X", code[i]);
- buf += 4;
- }
- free(code);
- return result;
- }
-}
-
-struct ByteArray *BIT7Encoding(char *UDC, int *Septets) {
- struct ByteArray *result;
-
- int len = strlen(UDC);
-
- result = (struct ByteArray *) malloc(sizeof(struct ByteArray));
- result->len = 0;
- result->array = (char *) malloc(sizeof(char) * (len * 2 + 1));
- *Septets = 0;
-
- int i = 0;
- for (i = 0; i < len; i++) {
- u_int16_t code = (u_int16_t) UDC[i];
- if (isBIT7Same(code)) {
- // 编码不变
- result->array[(*Septets)++] = code;
- }
- else {
- u_int16_t value = map_get_value(UCS2ToBIT7, map_size(UCS2ToBIT7), code);
- if (value >= 0) {
- if (value > 0xFF) {
- // 转义序列
- result->array[(*Septets)++] = value >> 8;
- result->array[(*Septets)++] = value & 0xFF;
- }
- else {
- result->array[(*Septets)++] = value;
- }
- }
- else {
- // 未知字符
- result->array[(*Septets)++] = (u_int16_t) '?';
- }
- }
- }
- // 重新调整大小
- result->len = *Septets;
-
- return result;
-}
-
-char *BIT7Pack(struct ByteArray *Bit7Array, int UDHL) {
- // 7Bit对齐需要的填充位
- int fillBits = (UDHL * 8 + 6) / 7 * 7 - (UDHL * 8);
-
- // 压缩字节数
- int len = Bit7Array->len;
- int packLen = (len * 7 + fillBits + 7) / 8;
- char *result;
- char *buf;
-
- result = (char *) malloc(sizeof(char) * (packLen * 2 + 1));
- buf = result;
-
- int left = 0;
- int i = 0;
- for (i = 0; i < len; i++) {
- // 每8个字节压缩成7个字节
- int32_t Value = Bit7Array->array[i];
- int32_t index = (i + 8 - fillBits) % 8;
- if (index == 0) {
- left = Value;
- }
- else {
- int32_t n = ((Value << (8 - index)) | left) & 0xFF;
- sprintf(buf, "%02X", n);
- buf += 2;
- left = Value >> index;
- }
- }
-
-
- if ((len * 7 + fillBits) % 8 != 0) {
- // 写入剩余数据
- sprintf(buf, "%02X", left);
- buf += 2;
- }
- buf[0] = '\0';
- return result;
-}
-
diff --git a/mbtk/libmbtk_tcpip/Makefile b/mbtk/libmbtk_tcpip/Makefile
deleted file mode 100755
index 02b5e71..0000000
--- a/mbtk/libmbtk_tcpip/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libmbtk_tcpip
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lmbtk_lib -lmbtk_net
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-MY_FILES_PATH:=$(LOCAL_PATH)
-MY_FILES_SUFFIX:=%.c %.cpp
-My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-LOCAL_SRC_FILES += $(MY_SRC_LIST)
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libmbtk_tcpip.so
-
-all: $(dtarget)
-
-$(dtarget):$(OBJS)
- $(CC) $(CFLAGS) $(DEFINE) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libql_lib/Makefile b/mbtk/libql_lib/Makefile
deleted file mode 100755
index 5a34460..0000000
--- a/mbtk/libql_lib/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libql_lib
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lubus -lubox -lblobmsg_json -lrilutil -lmbtk_lib -lmbtk_ril -lmbtk_fota -lmbtk_http -lmbtk_factory -lmbtk_audio
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE +=
-
-MY_FILES_PATH:=$(LOCAL_PATH)/src
-#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
-#MY_FILES_PATH += $(LOCAL_PATH)/ql
-#endif
-
-#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
-#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
-#endif
-
-#MY_FILES_SUFFIX:=%.c %.cpp
-#My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-#MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-#MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-
-LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
-$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libql_lib.so
-
-all: $(dtarget)
-
-$(dtarget): $(OBJS)
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libql_lib/src/ql_adc.c b/mbtk/libql_lib/src/ql_adc.c
deleted file mode 100755
index 812427e..0000000
--- a/mbtk/libql_lib/src/ql_adc.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "mbtk_adc.h"
-#include "ql/ql_adc.h"
-
-int ql_adc_show(Enum_QADC qadc)
-{
- if(qadc == ADC0 || qadc == ADC1) {
- return mbtk_adc_get((mbtk_adc_enum)qadc);
- } else {
- return -1;
- }
-}
-
diff --git a/mbtk/libql_lib/src/ql_atc.c b/mbtk/libql_lib/src/ql_atc.c
deleted file mode 100755
index cd1cf49..0000000
--- a/mbtk/libql_lib/src/ql_atc.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "mbtk_at.h"
-/*******************************************************
-* @method: ql_atc_init
-* @Description: initialize environment variables.
-* @param: void
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_init()
-{
- return mbtk_at_init();
-}
-
-/*******************************************************
-* @method: ql_atc_release
-* @Description: release environment variables.
-* @param: void
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_release()
-{
- return mbtk_at_deinit();
-}
-
-/*******************************************************
-* @method: ql_atc_send
-* @Description: send at command(synchronous)
- use this api should first call init api and finish call release api
-* @param:
- cmd: at command
- resp: at return value
- len: response value length
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_send(char* cmd, char* resp, int resp_len)
-{
- return mbtk_at_send(cmd, resp, resp_len);
-}
diff --git a/mbtk/libql_lib/src/ql_audio.c b/mbtk/libql_lib/src/ql_audio.c
deleted file mode 100755
index d95ca9e..0000000
--- a/mbtk/libql_lib/src/ql_audio.c
+++ /dev/null
@@ -1,875 +0,0 @@
-
-#include "ql/ql_audio.h"
-#include "mbtk_log.h"
-#include "mbtk_audio2.h"
-
-typedef enum {
- AUDIO_PLAY_STATE_STOP,
- AUDIO_PLAY_STATE_RUNNING,
- AUDIO_PLAY_STATE_PAUSE
-} audio_play_state_enum;
-
-#define AUDIO_HANDLE 1
-#define WAV_PLAY_BUFF 1024
-
-#ifdef MBTK_AF_SUPPORT
-static mbtk_audio_handle player_hdl = NULL;
-static int player_hdl_1 = AUDIO_HANDLE;
-static _cb_onRecorder record_cb_fun = NULL;
-static int Samprate = 8000;
-#endif
-
-static int sample_rate = 8000;
-static int play_handle = AUDIO_HANDLE;
-static _cb_onPlayer play_cb_func = NULL;
-static _cb_onRecorder recorder_cb_fun = NULL;
-static int is_running = 0;
-static audio_play_state_enum play_state = AUDIO_PLAY_STATE_STOP;
-static int play_exit = 1;
-
-static void recorder_cb_func(void *data, uint32 data_len)
-{
- if(recorder_cb_fun) {
- recorder_cb_fun(AUD_RECORDER_START, (unsigned char*)data, data_len);
- }
-}
-
-static int play_stream(unsigned char* pData, unsigned int length)
-{
- int rc, len, frames = 0;
- int result = 0;
-
- play_state = AUDIO_PLAY_STATE_RUNNING;
- play_exit = 0;
- int data_send = 0;
-
- if (mbtk_audio_pcm_play_start()) {
- printf("%s: error opening output device.", __FUNCTION__);
- return -1;
- }
-
- if(pData && length > 0) {
- while (play_state != AUDIO_PLAY_STATE_STOP) {
- if(play_state == AUDIO_PLAY_STATE_RUNNING) {
- if (data_send >= length) {
- LOGE("%s: Read pcm stream end.", __FUNCTION__);
- break;
- }
-
- if(length - data_send > WAV_PLAY_BUFF) {
- len = WAV_PLAY_BUFF;
- } else {
- len = length - data_send;
- }
-
- if((rc = mbtk_audio_pcm_play_data_send(pData + data_send, len)) != len) {
- LOGE("Send data %d/%d", rc, len);
- result = -1;
- goto thread_end;
- }
-
- data_send += len;
-
- LOGD("%s: No.%d frame playback", __FUNCTION__, ++frames);
- } else {
- usleep(200000);
- }
- }
- } else {
- result = -1;
- }
-
- play_state = AUDIO_PLAY_STATE_STOP;
-
-
-thread_end:
- mbtk_audio_pcm_play_stop();
- play_exit = 1;
- LOGD("%s: finished pcm playback.", __FUNCTION__);
- return result;
-}
-
-static int play_by_fd(int fd, int offset)
-{
- int rc, len, frames = 0;
- int result = 0;
- char buf[WAV_PLAY_BUFF];
-
- play_state = AUDIO_PLAY_STATE_RUNNING;
- if(play_cb_func)
- play_cb_func(play_handle , AUDIO_PLAY_STATE_RUNNING);
- play_exit = 0;
- if(fd > 0) {
- if(offset > 0) {
- lseek(fd, offset, SEEK_SET);
- }
-
- if (mbtk_audio_pcm_play_start()) {
- printf("%s: error opening output device.", __FUNCTION__);
- return -1;
- }
-
-
- while (play_state != AUDIO_PLAY_STATE_STOP) {
- if(play_state == AUDIO_PLAY_STATE_RUNNING) {
- memset(buf, 0x00, sizeof(buf));
- len = read(fd, buf, WAV_PLAY_BUFF);
- if (len == -1) {
- LOGE("%s: error reading from file", __FUNCTION__);
- result = -1;
- goto thread_end;
- }
-
- if (len == 0) {
- /* reached EOF */
- LOGE("%s: Read wav file end.", __FUNCTION__);
- break;
- }
-
- if((rc = mbtk_audio_pcm_play_data_send(buf, len)) < len) {
- LOGE("Send data %d/%d", rc, len);
- result = -1;
- goto thread_end;
- }
-
- LOGD("%s: No.%d frame playback", __FUNCTION__, ++frames);
- } else {
- usleep(200000);
- }
- }
- } else {
- result = -1;
- }
-
- play_state = AUDIO_PLAY_STATE_STOP;
- if(play_cb_func)
- play_cb_func(play_handle , AUDIO_PLAY_STATE_STOP);
-
-thread_end:
- mbtk_audio_pcm_play_stop();
- play_exit = 1;
- LOGD("%s: finished pcm playback.", __FUNCTION__);
- return result;
-}
-
-/*****************************************************************
-* Function: Ql_AudPlayer_Open
-*
-* Description:
-* Open audio play device, and specify the callback function.
-* This function can be called twice to play different audio sources.
-*
-* Parameters:
-* device : a string that specifies the PCM device.
-* NULL, means the audio will be played on the default PCM device.
-*
-* If you want to mixedly play audio sources, you can call this
-* API twice with specifying different PCM device.
-* The string devices available:
-* "hw:0,0" (the default play device)
-* "hw:0,13" (this device can mix audio and TTS)
-* "hw:0,14"
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio player
-* are informed in callback function.
-*
-* Return:
-* pcm device handle on success
-* -1 for failure
-*****************************************************************/
-int Ql_AudPlayer_Open(char* device, _cb_onPlayer cb_func)
-{
-#ifdef MBTK_AF_SUPPORT
- player_hdl = mbtk_audio_open_new(MBTK_AUTIO_TYPE_OUT, 1, Samprate, cb_func);
- if(player_hdl == NULL)
- {
- return -1;
- }
- else
- {
- return player_hdl_1 = AUDIO_HANDLE;
- }
-#else
- if(is_running || mbtk_audio_pcm_init()) {
- return -1;
- } else {
- play_cb_func = cb_func;
- is_running = 1;
- return play_handle;
- }
-#endif
-}
-
-/*========================================================================
- FUNCTION: Ql_AudPlayer_Play
-=========================================================================*/
-/** @brief
- This function writes pcm data to pcm device to play.
-
- @param[in] hdl, the handle returned by Ql_AudPlayer_Open().
- @param[in] pData, pointer to the start address of pcm data.
- @param[in] length, the length of pcm data.
-
- @return
- on success, the return value is the number of bytes to play
- on failure, the return value is -1;
-
- @dependencies
- Ql_AudPlayer_Open() must be first called successfully.
-*/
-/*=======================================================================*/
-int Ql_AudPlayer_Play(int hdl, unsigned char* pData, unsigned int length)
-{
-#ifdef MBTK_AF_SUPPORT
- if(hdl != player_hdl_1 || player_hdl == NULL){
- LOGE("Handle error : %d", hdl);
- return -1;
- }
- return mbtk_audio_play_stream_new((void *)player_hdl, pData, length,50);
-
-#else
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- return play_stream(pData, length);
-#endif
-}
-
-/*========================================================================
- FUNCTION: Ql_AudPlayer_PlayFrmFile
-=========================================================================*/
-/** @brief
- This function plays the pcm data from the specified file.
-
- @param[in] hdl, the handle returned by Ql_AudPlayer_Open().
- @param[in] fd, a file descriptor that contains pcm data.
- Note:
- the file offset should be set to the start position of pcm
- data region, which means you should move the file offset
- skipping the file header (such as wave header, amr header).
- @param[in] offset, file offset. Please set it to -1 if no need to use.
-
- @return
- 0 on success
- -1 on failure
-
- @dependencies
- Ql_AudPlayer_Open() must be first called successfully.
-*/
-/*=======================================================================*/
-
-int Ql_AudPlayer_PlayFrmFile(int hdl, int fd, int offset)
-{
-#ifdef MBTK_AF_SUPPORT
- if(hdl != player_hdl_1 || player_hdl == NULL){
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- return mbtk_audio_play_file_new((void *)player_hdl, fd, offset);
-
-#else
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- return play_by_fd(fd, offset);
-#endif
-}
-
-//
-// Function: Ql_AudPlayer_Pause
-//
-// Description:
-// Pause playing.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-int Ql_AudPlayer_Pause(int hdl)
-{
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- play_state = AUDIO_PLAY_STATE_PAUSE;
-
- while(!play_exit) {
- usleep(10000);
- }
-
- return 0;
-}
-
-//
-// Function: Ql_AudPlayer_Resume
-//
-// Description:
-// Resume playing.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-int Ql_AudPlayer_Resume(int hdl)
-{
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- play_state = AUDIO_PLAY_STATE_RUNNING;
-
- while(!play_exit) {
- usleep(10000);
- }
- return 0;
-}
-
-//
-// Function: Ql_AudPlayer_Stop
-//
-// Description:
-// Stop playing audio
-// hdl:
-// Handle received from Ql_AudPlayer_Open().
-void Ql_AudPlayer_Stop(int hdl)
-{
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return;
- }
-
- play_state = AUDIO_PLAY_STATE_STOP;
-
- while(!play_exit) {
- usleep(10000);
- }
-}
-
-//
-// Function: Ql_AudPlayer_Close
-//
-// Description:
-// Close player, and free the resource.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-void Ql_AudPlayer_Close(int hdl)
-{
-#ifdef MBTK_AF_SUPPORT
- if(hdl != player_hdl_1 || player_hdl == NULL){
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- mbtk_audio_close_new((void *)player_hdl);
- player_hdl_1 = 0;
-
-#else
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return;
- }
- play_state = AUDIO_PLAY_STATE_STOP;
-
- while(!play_exit) {
- usleep(10000);
- }
-
- is_running = 0;
- mbtk_audio_pcm_deinit();
-#endif
-}
-
-
-int Ql_AudPlayer_set_LessDataThreshold(int hdl, unsigned short threshSize)
-{
-
- return 0;
-}
-
-int Ql_AudPlayer_get_freeSpace(int hdl)
-{
-
- return 0;
-}
-
-
-/*****************************************************************
-* Function: Ql_AudRecorder_Open
-*
-* Description:
-* Open audio record device, and specify the callback function.
-*
-* Parameters:
-* device : not used. MUST be NULL.
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio recorder
-* are informed in callback function.
-*
-* Return:
-* pcm device handle
-* -1 for failure
-*****************************************************************/
-int Ql_AudRecorder_Open(char* device, _cb_onRecorder cb_fun)
-{
- if(is_running || mbtk_audio_pcm_init()) {
- return -1;
- } else {
- is_running = 1;
- recorder_cb_fun = cb_fun;
- return play_handle;
- }
-}
-
-//
-// Function: Ql_AudRecorder_StartRecord
-//
-// Description:
-// Start to record.
-// The record data is output in _cb_onRecorder.
-//
-// Return:
-// 0 on success
-// -1 on failure
-int Ql_AudRecorder_StartRecord(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return -1;
- }
-
- return mbtk_audio_pcm_recorder_start(recorder_cb_func);
-}
-
-//
-// Function: Ql_AudRecorder_Pause
-//
-// Description:
-// Pause recording
-int Ql_AudRecorder_Pause(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return -1;
- }
-
- return mbtk_audio_pcm_recorder_pause();
-}
-
-//
-// Function: Ql_AudRecorder_Resume
-//
-// Description:
-// Resume recording
-int Ql_AudRecorder_Resume(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return -1;
- }
-
- return mbtk_audio_pcm_recorder_resume();
-}
-
-//
-// Function: Ql_AudRecorder_Stop
-//
-// Description:
-// Stop recording
-void Ql_AudRecorder_Stop(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return;
- }
-
- mbtk_audio_pcm_recorder_stop();
-}
-
-//
-// Function: Ql_AudRecorder_Close
-//
-// Description:
-// Close recorder, and free the resource
-void Ql_AudRecorder_Close(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return;
- }
-
- is_running = 0;
- mbtk_audio_pcm_deinit();
-}
-
-//
-// Function: Ql_clt_set_mixer_value
-//
-// Description:
-// Close recorder, and free the resource
-boolean Ql_clt_set_mixer_value(const char *device, int count, const char *value)
-{
-
- return FALSE;
-}
-
-
-int Ql_AudTone_Open(char* device, _cb_onPlayer cb)//cb not support now
-{
- return 0;
-}
-
-int Ql_AudTone_Start(int hdl, struct Ql_TonePara *para)
-{
- return 0;
-}
-
-void Ql_AudTone_Stop(int hdl)
-{
-
-}
-
-void Ql_AudTone_Close(int hdl)
-{
-
-}
-
-
-//****************QL Codec API************************//
-
-//
-// Function: Ql_AudCodec_Set_ALC5616_DRCAGC
-//
-// Description:
-// Set ALC5616 DRC/AGC configuration
-int Ql_AudCodec_Set_ALC5616_DRCAGC(const char *i2c, struct Ql_ALC5616_DRCAGC *cfg)
-{
- return 0;
-}
-
-//
-// Function: Ql_Update_wav_size
-//
-// Description:
-// update wav format file size in the header
-// @param fd:
-// wav file discriptor
-// @param size:
-// wav file size to update
-int Ql_Update_wav_size(int fd, int size)
-{
- return 0;
-}
-
-//add by grady, 2018-5-29
-/*
- * describe : this function is use to open pcm device
- * paras :
- * device : this should be fix to hw:0,0
- * flags ; pcm play flags
- * rate: sample rate
- * channels : audio channal 1 or 2
- * format: format to play or record, 16bit line,MP3
- * hostless: if there is no file it is true
- * return :
- * pcm : pcm handle, use can use this handle to read write data
- */
-struct pcm *quec_pcm_open(char *device, unsigned flags, unsigned rate, unsigned channels, unsigned format, unsigned hostless)
-{
- return NULL;
-}
-
-/*
- * describe : this function is use to close pcm handle
- * paras :
- * pcm : pcm handle to close
- * return :
- */
-int quec_pcm_close(struct pcm *pcm )
-{
- return 0;
-}
-
-/*
- * describe : this function is use to read pcm buffer
- * paras :
- * pcm : pcm handle to write date
- * buffer: data buffer
- * lenth: data length
- * return :
- */
-int quec_read_pcm(struct pcm *pcm, void * buffer, int length)
-{
-
- return 0;
-}
-
-/*
- * describe : this function is use to get pcm buffer lenth
- * paras :
- * lenth: data length
- * return
- * buffer length
- */
-int quec_get_pem_buffer_len(struct pcm *pcm)
-{
-
- return 0;
-}
-
-void dtmf_cb1(char dtmf)
-{
- printf("%s:%c\n", __FUNCTION__, dtmf);
-}
-
-/**
- * @brief Set RX DSP Gain
- * @details
- * Gain support [-36,12] dB
- *
- * @param gain
- * DSP gain
- */
-
-int Ql_Rxgain_Set(int value)
-{
-#ifdef MBTK_AF_SUPPORT
- int volume =0;
- if(value < -36 || value > 13)
- {
- volume = 0;
- }
- else
- {
- volume = value;
- }
-
- if(player_hdl==NULL)
- return 0;
-
- char databuf[1025]={0};
- memcpy(databuf, " ", 1024);
-
- mbtk_audio_play_stream_new(player_hdl, databuf, 1024, volume);
- return 0;
-#else
- mbtk_dsp_gain_set(1, value);
- return 0;
-#endif
- return 0;
-}
-
-
-/** Ql_Playback_Samprate_Set
- * @brief Set Playback PCM Samprate
- * @details
- * 0 for NB 1 for WB
- *
- * @param samprate
- * samprate for PCM playback,default value is PCM NB
- */
-int Ql_Playback_Samprate_Set(int samprate)
-{
- printf("samprate is %d \n",samprate);
- if(samprate == 1)
- {
- sample_rate = 16000;
- mbtk_audio_pcm_sample_rate_set(MBTK_AUDIO_SAMPLE_RATE_16000);
- }
- else{
- mbtk_audio_pcm_sample_rate_set(MBTK_AUDIO_SAMPLE_RATE_8000);
- sample_rate = 8000;
- }
-
- return 0;
-}
-
-int Ql_Mp3_To_Wav(const char *wavpath, char *mp3path)
-{
- return 0;
-}
-
-int Ql_Mp3_To_Play(char *mp3path, int hdl,int sample_rate)
-{
- return 0;
-}
-
-//add by grady, 2018-6-2
-/*
- * describe : this function is use to open mixer device
- * paras :
- * device: mixer device
- * return
- * mixer handle
- */
-struct mixer *quec_mixer_open(const char *device)
-{
-
- return NULL;
-}
-
-/*
- * describe : this function is use to close mixer device
- * paras :
- * mixer: mixer handle
- * return
- * none
- */
-void quec_mixer_close(struct mixer *mixer)
-{
-
-
-}
-
-/*
- * describe : this function is use to get mixer devie control
- * paras :
- * mixer: mixer handle
- * name: mixer device
- * index: mixer index
- * return
- * mixer control
- */
-struct mixer_ctl *quec_mixer_get_control(struct mixer *mixer, const char *name, unsigned index)
-{
-
- return NULL;
-}
-
-/*
- * describe : this function is use to set mulvalues
- * paras :
- * mixer: mixer handle
- * count: count
- * argv: data
- * return :
- *
- */
-int quec_mixer_ctl_mulvalues(struct mixer_ctl *ctl, int count, char ** argv)
-{
-
- return 0;
-}
-
-
-//end grady
-
-/*****************************************************************
-* Function: Ql_AudPlayer_OpenExt
-*
-* Description:
-* expend function from Ql_AudPlayer_OpenExt
-* Open audio play device, and specify the callback function.
-* This function can be called twice to play different audio sources.
-*
-* Parameters:
-* device : a string that specifies the PCM device.
-* NULL, means the audio will be played on the default PCM device.
-*
-* If you want to mixedly play audio sources, you can call this
-* API twice with specifying different PCM device.
-* The string devices available:
-* "hw:0,0" (the default play device)
-* "hw:0,13" (this device can mix audio and TTS)
-* "hw:0,14"
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio player
-* are informed in callback function.
-*
-* flags : pcm flags, eg: PCM_MMAP, PCM_NMMAP.
-*
-* channels: pcm sample channels.
-*
-* rate : pcm sample rate.
-*
-* format : pcm sample fromat
-*
-* Return:
-* pcm device handle
-* NULL, fail
-*****************************************************************/
-int Ql_AudPlayer_OpenExt(
- char *dev,
- _cb_onPlayer cb_fun,
- int flags,
- int channels,
- int rate,
- int format)
-{
- return 0;
-}
-
-/*****************************************************************
-* Function: Ql_AudRecorder_Open
-*
-* Description:
-* Open audio record device, and specify the callback function.
-*
-* Parameters:
-* device : not used. MUST be NULL.
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio recorder
-* are informed in callback function.
-*
-* flags : pcm flags, eg: PCM_MMAP, PCM_NMMAP.
-*
-* channels: pcm sample channels.
-*
-* rate : pcm sample rate.
-*
-* format : pcm sample fromat
-*
-* Return:
-* pcm device handle
-* NULL, fail
-*****************************************************************/
-int Ql_AudRecorder_OpenExt(
- char *dev,
- _cb_onRecorder cb_fun,
- int flags,
- int channels,
- int rate,
- int format)
-{
-
-
- return 0;
-}
-
-/*
-* Function: uac enable
-*
-* Description:
-* uac enable
-*
-* Parameters:
-* none
-* Return:
-* TURE or FALSE
-*/
-int ql_uac_enable(void)
-{
-
- return 0;
-}
-
-/*
-* Function: uac disable
-*
-* Description:
-* uac disable
-*
-* Parameters:
-* none
-* Return:
-* TURE or FALSE
-*/
-int ql_uac_disable(void)
-{
-
- return 0;
-}
diff --git a/mbtk/libql_lib/src/ql_call.c b/mbtk/libql_lib/src/ql_call.c
deleted file mode 100755
index 700f93d..0000000
--- a/mbtk/libql_lib/src/ql_call.c
+++ /dev/null
@@ -1,821 +0,0 @@
-/**
- * \file ql_call.c
- * \brief A Documented file.
- *
- * Detailed description
- * \Author: js.wang<js.wang@mobiletek.cn>
- * \Version: 1.0.0
- * \Date: 2022-01-18
- */
-#include "ql/ql_mcm_call.h"
-#include <telephony/ril.h>
-#include <telephony/ril_ext.h>
-#include "ql/ql_mcm.h"
-#include "rilutil.h"
-#include "mbtk_log.h"
-
-// #define DEBUG 1
-
-#ifdef DEBUG
- #define mbtk_call_log(...) printf(__VA_ARGS__)
-#else
- #define mbtk_call_log(...)
-#endif
-
-struct ql_call_ubus_t
-{
- struct ubus_context *ctx;
-
- /* RIL */
- struct ubus_subscriber ril_ind_event;
- uint32_t ril_subscriber_id;
- uint32_t ril_request_id;
- uint8_t auto_answer;
- uint32_t answer_time;
- pthread_t call_status_pthread;
- ql_mcm_voice_calls_state_t call_state;
- QL_VoiceCall_CommonStateHandlerFunc_t _voice_call_common_state_handler;
- QL_VoiceCall_StateHandlerFunc_t _voice_call_state_handler;
-};
-
-const char *RIL_MessageMap[] =
-{
- "RIL_CALL_ACTIVE", //0,
- "RIL_CALL_HOLDING", //1,
- "RIL_CALL_DIALING", //2, /* MO call only */
- "RIL_CALL_ALERTING", //3, /* MO call only */
- "RIL_CALL_INCOMING", //4, /* MT call only */
- "RIL_CALL_WAITING", //5, /* MT call only */
- "RIL_CALL_OFFERING", //6, /* MT call offering (call setup) */
- "RIL_CALL_DISCONNECTING",//7, /* call in disconnect procedure */
- "RIL_CALL_DISCONNECTED" //8, /* call is disconnected */
-};
-static struct ql_call_ubus_t *ql_call_ubus = NULL;
-static void ql_voice_call_answer(struct uloop_timeout *timeout);
-static struct uloop_timeout voice_call_answer_timeout =
-{
- .cb = ql_voice_call_answer,
-};
-
-static void ql_voice_call_answer(struct uloop_timeout *timeout)
-{
- QL_Voice_Call_Answer(ql_call_ubus, 0);
- // uloop_timeout_set(timeout, 2000);
- return;
-}
-
-int ql_call_handle_ril_ind(struct ubus_context *ctx, unsigned int rilid, unsigned int rilerror, char *data, int data_len)
-{
- UNUSED(data_len);
- UNUSED(ctx);
-
- int datalen = 0, callID = 0;
- int ret = 0;
-
- if (rilerror) {
- return -1;
- }
-
- mbtk_call_log("call_handle_ril_ind: rcv %d\n", rilid);
-
- switch(rilid)
- {
- case RIL_UNSOL_ECALLDATA: //+ecalldata
- // ecallHandleEcalldata(data);
- break;
-
- case RIL_UNSOL_ECALLONLY: //+ecallonly
- // ecallHandleEcallonly(data);
- break;
-
- case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED_EXT: /*"CC" 1510*/
- {
- RIL_Call *rilCall = (RIL_Call *)data;
- callID = rilCall->index;
-
- mbtk_call_log("%s: id %d=RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED_EXT (len=%d) (state=%s), call index=%d\n",
- __FUNCTION__, rilid, datalen, RIL_MessageMap[(int)rilCall->state], callID);
-
- mbtk_call_log("Received from Ril, name=%s, num=%s\n", rilCall->name, rilCall->number);
- ql_call_ubus->call_state.calls_len = 1;
- ql_call_ubus->call_state.calls[0].call_id;
- memcpy(ql_call_ubus->call_state.calls[0].number, rilCall->number, strlen(rilCall->number));
- ql_call_ubus->call_state.calls[0].state = rilCall->state;
- switch (rilCall->state)
- {
- //Call connected, for MO & MT both
- case RIL_CALL_ACTIVE:
- mbtk_call_log("%s, RIL_CALL_ACTIVE, call index=%d connected!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_ACTIVE;
- break;
-
- //MT call only
- case RIL_CALL_INCOMING:
- mbtk_call_log("%s, RIL_CALL_INCOMING!!\n", __FUNCTION__);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_INCOMING;
- if(!ql_call_ubus->auto_answer)
- {
- mbtk_call_log("%s, auto_answer:%d!!\n", __FUNCTION__, ql_call_ubus->answer_time);
- uloop_timeout_set(&voice_call_answer_timeout, ql_call_ubus->answer_time);
- }
- break;
-
- //MO call only
- case RIL_CALL_ALERTING:
- mbtk_call_log("%s, RIL_CALL_ALERTING, call index=%d alerting!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_ALERTING;
- break;
-
- case RIL_CALL_WAITING: //MT call only
- mbtk_call_log("%s, RIL_CALL_WAITING, call index=%d alerting!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_WAITING;
- break;
-
- case RIL_CALL_DISCONNECTED:
- mbtk_call_log("%s, RIL_CALL_DISCONNECTED, call index=%d disconnected!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- break;
-
- case RIL_CALL_HOLDING:
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_HOLDING;
- mbtk_call_log("%s, RIL_CALL_HOLDING, call index=%d hold!!\n", __FUNCTION__, callID);
- break;
-
- case RIL_CALL_DIALING: //MO call only
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_DIALING;
- mbtk_call_log("%s, RIL_CALL_DIALING, call index=%d hold!!\n", __FUNCTION__, callID);
- break;
- case RIL_CALL_OFFERING:
- case RIL_CALL_DISCONNECTING:
- default:
- printf("%s, state=%s ignored!!\n", __FUNCTION__, RIL_MessageMap[(int)rilCall->state]);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- break;
- }
- if(ql_call_ubus->_voice_call_common_state_handler && ql_call_ubus)
- {
- ql_call_ubus->_voice_call_common_state_handler(E_QL_MCM_VOICE_CALL_IND, &ql_call_ubus->call_state, sizeof(ql_mcm_voice_call_ind));
- }
- }
- break;
- case RIL_UNSOL_CALL_NO_CARRIER_EXT: /*"CC" 1511*/
- mbtk_call_log("%s: id %d=RIL_UNSOL_CALL_NO_CARRIER_EXT (len=%d)\n",
- __FUNCTION__, rilid, datalen);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- if(ql_call_ubus->_voice_call_common_state_handler && ql_call_ubus)
- {
- ql_call_ubus->_voice_call_common_state_handler(E_QL_MCM_VOICE_CALL_IND, &ql_call_ubus->call_state, sizeof(ql_mcm_voice_call_ind));
- }
- break;
-
- case RIL_UNSOL_CALL_RING: /*"CC" 1018*/
- printf("%s: id %d=RIL_UNSOL_CALL_RING (len=%d), ignored!!\n",
- __FUNCTION__, rilid, datalen);
- break;
-
- case RIL_UNSOL_DISCONNECT_CALLID: /*"CC" 1538*/
- callID = *(int *)data;
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- mbtk_call_log("%s: id %d=RIL_UNSOL_DISCONNECT_CALLID (len=%d), call index=%d!\n",
- __FUNCTION__, rilid, datalen, *(int *)data);
- break;
- default:
- break;
- }
-
- return ret;
-}
-static void ql_call_requset_cb(struct ubus_request *req, int type, struct blob_attr *msg)
-{
- unsigned int requestid;
- unsigned int rilerrno;
- void *response = NULL;
- int responselen;
- int ret = 0;
-
- ret = rilutil_parseResponse(msg, &requestid, &rilerrno, &response, &responselen);
- if(ret)
- {
- fprintf(stderr, "parse blob error\n");
- goto done;
- }
-
- if(rilerrno)
- {
- // RIL_REQUEST_RELEASE_CALL
- fprintf(stderr, "unsolicited id %d, error code %d\n", requestid, rilerrno);
- goto done;
- }
-
- //process response here
-
-done:
- if(response)
- rilutil_freeResponseData(requestid, response, responselen);
-
- return;
-}
-
-int ql_call_subscriber_cb(struct ubus_context *ctx, struct ubus_object *obj,
- struct ubus_request_data *req, const char *method, struct blob_attr *msg)
-{
- UNUSED(ctx);
- UNUSED(obj);
- UNUSED(req);
- UNUSED(method);
-
- unsigned int requestid = 0;
- unsigned int rilerrno = 0;
- void *response = NULL;
- int responselen = 0;
- int ret = 0;
-
- ret = rilutil_parseResponse(msg, &requestid, &rilerrno, &response, &responselen);
- if (ret)
- goto end;
-
- mbtk_call_log("call_subscriber_cb: rcv %d\n", requestid);
-
- ql_call_handle_ril_ind(ctx, requestid, rilerrno, response, responselen);
-
-end:
- if (response)
- rilutil_freeResponseData(requestid,response,responselen);
-
- return 0;
-}
-
-void ql_call_subscriber_remove_cb(struct ubus_context *ctx, struct ubus_subscriber *obj, uint32_t id)
-{
- UNUSED(ctx);
- UNUSED(obj);
- UNUSED(id);
- mbtk_call_log("ql_call_subscriber_remove_cb\n");
-}
-
-static void ql_call_register_ril(void* hdl)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)hdl;
- int ret;
-
- if(hdl == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- pthread_detach(pthread_self());
- ret = ubus_register_subscriber(voice_call_ubus->ctx, &voice_call_ubus->ril_ind_event);
- if (ret) {
- printf("call_daemon: Failed to add ecall_subscriber: %s\n", ubus_strerror(ret));
- return ret;
- }
-
- voice_call_ubus->ril_ind_event.cb = ql_call_subscriber_cb;
- voice_call_ubus->ril_ind_event.remove_cb = ql_call_subscriber_remove_cb;
-
- //register for CC ind
- if (ubus_lookup_id(voice_call_ubus->ctx, "ril.unsol.cc", &voice_call_ubus->ril_subscriber_id)) {
- printf("call_daemon: Failed to look up ril.unsol.cc object\n");
- return ret;
- }
-
- ubus_subscribe(voice_call_ubus->ctx, &voice_call_ubus->ril_ind_event, voice_call_ubus->ril_subscriber_id);
- mbtk_call_log("call_daemon: subscribe ril.unsol.cc object ok\n");
- mbtk_call_log("%s!\n", __FUNCTION__);
- while(1)
- {
- uloop_run();
- printf("%s uloop_run done!\n", __FUNCTION__);
- }
- pthread_exit(NULL);
-}
-/* Init voice module and return h_voice, this should be called before any other APIs */
-int QL_Voice_Call_Client_Init(voice_client_handle_type *ph_voice)
-{
- int id;
- // Set call handle.
- //*ph_voice = 1;
- if(ph_voice == NULL)
- {
- printf("ARG error or has inited.");
- return -1;
- }
- ql_call_ubus = malloc(sizeof(struct ql_call_ubus_t));
- if(NULL == ql_call_ubus)
- {
- printf("malloc memory error\n");
- }
- memset(ql_call_ubus, 0, sizeof(struct ql_call_ubus_t));
- uloop_init();
-
- ql_call_ubus->ctx = ubus_connect(NULL);
- if(!ql_call_ubus->ctx)
- {
- printf("Failed to connect to ubus");
- goto out;
- }
-
- ubus_add_uloop(ql_call_ubus->ctx);
-
- if (ubus_lookup_id(ql_call_ubus->ctx, "ril", &ql_call_ubus->ril_request_id)) {
- fprintf(stderr, "%s, Failed to look up test object\n", __FUNCTION__);
- return -1;
- }
- ql_call_ubus->auto_answer = E_QL_MCM_VOICE_AUTO_ANSWER_DISABLE;
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- pthread_create(&ql_call_ubus->call_status_pthread, NULL, (void *)ql_call_register_ril, (void *)ql_call_ubus);
- *ph_voice = ql_call_ubus;
-
- return 0;
-out:
- //uloop_done();
-
- return 0;
-}
-
-/* DeInit voice module and release resources, this should be called at last */
-int QL_Voice_Call_Client_Deinit(voice_client_handle_type h_voice)
-{
- int ret;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- // Free handle.
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- printf("ARG error or not inited.");
- return -1;
- }
- ret = pthread_cancel(voice_call_ubus->call_status_pthread);
- mbtk_call_log("kill pthread : %d \n", ret);
- pthread_join(voice_call_ubus->call_status_pthread, NULL);
- do{
- ret = pthread_kill(voice_call_ubus->call_status_pthread, 0);
- mbtk_call_log("kill pthread: %d \n", ret);
- if(ret == ESRCH)
- printf("The specified thread does not exist or has terminated\n");
- else if(ret == EINVAL)
- printf("Useless signal\n");
- else
- mbtk_call_log("The thread exists\n");
- usleep(100000);
- }while(0 == ret);
- free(h_voice);
- ql_call_ubus = NULL;
- uloop_done();
- ubus_free(voice_call_ubus->ctx);
- return 0;
-}
-
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int QL_Voice_Call_AddStateHandler(voice_client_handle_type h_voice,
- QL_VoiceCall_StateHandlerFunc_t handlerPtr,
- void* contextPtr)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- ret = pthread_kill(voice_call_ubus->call_status_pthread, 0);
- mbtk_call_log("kill pthread: %d \n", ret);
- if(ret == ESRCH)
- mbtk_call_log("The specified thread does not exist or has terminated\n");
- else if(ret == EINVAL)
- printf("Useless signal\n");
- else
- mbtk_call_log("The thread exists\n");
- if(voice_call_ubus->ril_subscriber_id)
- {
- voice_call_ubus->_voice_call_state_handler = handlerPtr;
- }
- else
- {
- printf("%s error!!\n", __func__);
- return -1;
- }
-
- return 0;
-}
-
-/* Remove callback function, won't receive any notify anymore */
-int QL_Voice_Call_RemoveStateHandler(voice_client_handle_type h_voice)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- return -1;
- }
- voice_call_ubus->_voice_call_state_handler = NULL;
-
- return 0;
-}
-
-
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int QL_Voice_Call_AddCommonStateHandler(voice_client_handle_type h_voice,
- QL_VoiceCall_CommonStateHandlerFunc_t handlerPtr)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- return -1;
- }
- ret = pthread_kill(voice_call_ubus->call_status_pthread, 0);
- mbtk_call_log("kill pthread: %d \n", ret);
- if(ret == ESRCH)
- mbtk_call_log("The specified thread does not exist or has terminated\n");
- else if(ret == EINVAL)
- printf("Useless signal\n");
- else
- mbtk_call_log("The thread exists\n");
- if(voice_call_ubus->ril_subscriber_id)
- {
- voice_call_ubus->_voice_call_common_state_handler = handlerPtr;
- }
- else
- {
- printf("%s error!!\n", __func__);
- return -1;
- }
-
-
- return 0;
-}
-
-/* Remove callback function, won't receive any notify anymore */
-int QL_Voice_Call_RemoveCommonStateHandler(voice_client_handle_type h_voice)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- return -1;
- }
- voice_call_ubus->_voice_call_common_state_handler = NULL;
-
- return 0;
-}
-
-
-/* Start call and return call_id, this can be used in the later */
-int QL_Voice_Call_Start(voice_client_handle_type h_voice,
- E_QL_VCALL_ID_T simId,
- char* phone_number, ///< [IN] Destination identifier for the voice
- int *call_id) ///< [OUT] call id
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int id, ret;
- RIL_Dial dial_data;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- if(voice_call_ubus->call_state.calls[0].state == E_QL_MCM_VOICE_CALL_STATE_ACTIVE ||
- voice_call_ubus->call_state.calls[0].state == E_QL_MCM_VOICE_CALL_STATE_INCOMING ||
- voice_call_ubus->call_state.calls[0].state == E_QL_MCM_VOICE_CALL_STATE_ALERTING)
- {
- printf("A call already exists, Voice Call incoming or active!!\n");
- return -1;
- }
- memset(&dial_data, 0, sizeof(RIL_Dial));
- dial_data.address = phone_number;
- printf("call number %s\n", dial_data.address);
- if (ubus_lookup_id(ql_call_ubus->ctx, "ril", &ql_call_ubus->ril_request_id)) {
- fprintf(stderr, "%s, Failed to look up test object\n", __FUNCTION__);
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_DIAL, &dial_data, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("sim_get_imsi,ubus_invoke Failed %s\n", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
-
- return 0;
-}
-
-/* End call of call_id, which returned by QL_Voice_Call_Start or callback func register via QL_Voice_Call_AddStateHandler */
-int QL_Voice_Call_End(voice_client_handle_type h_voice,
- int call_id) ///< [IN] call id, return by QL_Voice_Start
-{
- static struct ubus_request req;
- static struct blob_buf b;
- int ret;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- mbtk_call_log("Voice Call State:%s, %d\n", voice_call_ubus->call_state.calls[0].number, voice_call_ubus->call_state.calls[0].state);
- if(voice_call_ubus->call_state.calls[0].state != E_QL_MCM_VOICE_CALL_STATE_ACTIVE &&
- voice_call_ubus->call_state.calls[0].state != E_QL_MCM_VOICE_CALL_STATE_INCOMING &&
- voice_call_ubus->call_state.calls[0].state != E_QL_MCM_VOICE_CALL_STATE_ALERTING)
- {
- printf("No Voice Call incoming or active!!\n");
- return -1;
- }
- //use rilutil's API, just a example
- rilutil_makeRequestBlob(&b, RIL_REQUEST_RELEASE_CALL, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("sim_get_imsi,ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-/* Answer the call of call_id, which returned by callback func register via QL_Voice_Call_AddStateHandler */
-int QL_Voice_Call_Answer(voice_client_handle_type h_voice,
- int call_id )
-{
- static struct ubus_request req;
- static struct blob_buf b;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_ANSWER, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_Hold( voice_client_handle_type h_voice)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_HANGUP, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_UnHold( voice_client_handle_type h_voice)
-{
-
- return 0;
-}
-
-int QL_Voice_Call_Conference( voice_client_handle_type h_voice)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_CONFERENCE, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_EndConference( voice_client_handle_type h_voice)
-{
-
- return 0;
-}
-
-int QL_Voice_Call_Ecall(voice_client_handle_type h_voice,
- E_QL_VCALL_ID_T simId,
- char* phone_number,
- ql_mcm_ecall_info ecall_info,
- int *call_id)
-{
-// RIL_REQUEST_SET_CECALL
-// RIL_REQUEST_GET_CECALL
-// RIL_REQUEST_SET_ECALLONLY
-// RIL_REQUEST_GET_ECALLONLY
-// RIL_REQUEST_SET_ECALLREG
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- //use rilutil's API, just a example
- rilutil_makeRequestBlob(&b, RIL_REQUEST_CONFERENCE, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-
-int QL_Voice_Call_SetAutoAnswer(voice_client_handle_type h_voice,
- E_QL_MCM_VOICE_AUTO_ANSWER_T eAnswerType,
- uint32_t uAnswerTime)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- voice_call_ubus->auto_answer = eAnswerType;
- voice_call_ubus->answer_time = uAnswerTime;
-
- return 0;
-}
-
-int QL_Voice_Call_Ecall_HangUp(voice_client_handle_type h_voice)
-{
- return 0;
-}
-
-int QL_Voice_Call_Ecall_UpdateMsd(voice_client_handle_type h_voice,const char *msd,uint32_t msd_len)
-{
- return 0;
-}
-
-//Ecall Push caommand
-int QL_Voice_Call_Ecall_MsdPush(voice_client_handle_type h_voice,
- E_QL_MCM_ECALL_STATE_T *ecall_state)
-{
- return 0;
-}
-
-//Get Ecall config info
-int QL_Voice_Call_Ecall_GetConfigInfo(voice_client_handle_type h_voice,
- ql_mcm_ecall_config_info *ecall_config)
-{
-// RIL_REQUEST_SET_ECALLCFG
-// RIL_REQUEST_GET_ECALLCFG
- return 0;
-}
-
-int QL_Voice_Call_Ecall_SetConfigInfo(voice_client_handle_type h_voice,
- E_QL_MCM_ECALL_CONFIG_T ecall_config_type,
- uint8_t value)
-{
- return 0;
-}
-
-//Cancel dial
-int QL_Voice_Call_CancelDial( voice_client_handle_type h_voice)
-{
- static struct ubus_request req;
- static struct blob_buf b;
- int ret;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- //use rilutil's API, just a example
- rilutil_makeRequestBlob(&b, RIL_REQUEST_RELEASE_CALL, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("sim_get_imsi,ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-//VTS API
-int QL_Voice_Call_Dtmf(voice_client_handle_type h_voice, uint8_t digit, int call_id)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
- char code = digit;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_DTMF, &code, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_GetCallStatus
-(
- int h_voice,
- int call_id, // If call_id<0, means to get all calls state, or get specified call_id info
- ql_mcm_voice_calls_state_t *pt_callstate
-)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- memcpy((void *)pt_callstate, &voice_call_ubus->call_state, sizeof(ql_mcm_voice_calls_state_t));
- return 0;
-}
-
-//Set forwarding
-int QL_Voice_Call_SetForwarding
-(
- int h_voice,
- E_QL_MCM_VOICE_CALL_SERVICE_T service,
- E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T reason,
- char *number
-)
-{
-
- return 0;
-}
-
-//Get forwarding status
-int QL_Voice_Call_GetForwardingStatus(
- int h_voice,
- E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T reason,
- ql_mcm_voice_call_forwarding_status_list_t *pt_status)
-{
-
- return 0;
-}
-
-
-//Set voice call waiting
-int QL_Voice_Call_SetWaiting
-(
- int h_voice,
- ql_mcm_voice_call_waiting_service_t e_service
-)
-{
-// RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND
- return 0;
-}
-
-//Get voice call waiting status
-int QL_Voice_Call_GetWaitingStatus
-(
- int h_voice,
- ql_mcm_voice_call_waiting_service_t *pe_service
-)
-{
-
- return 0;
-}
diff --git a/mbtk/libql_lib/src/ql_cell_locator.c b/mbtk/libql_lib/src/ql_cell_locator.c
deleted file mode 100755
index b36075d..0000000
--- a/mbtk/libql_lib/src/ql_cell_locator.c
+++ /dev/null
@@ -1,347 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#define LOG_TAG "mbtk_http"
-#include "mbtk_type.h"
-#include "mbtk_http.h"
-#include "mbtk_log.h"
-#include "mbtk_info_api.h"
-#include "ql/ql_cell_locator.h"
-
-
-static int http_handle;
-static int http_session;
-
-static char Server[128]={0};
-static char Token[128] = {0};
-static char Loction[128]={0};
-static int PORT = 0;
-static int locator_timeout = 60; // 60s for default.
-
-static int mbtk_lbs_http_parse_location(char* buf, int len, char* rspBuf)
-{
- if(buf != NULL && len != 0)
- {
- char* pos0 = NULL;
- char* pos1 = NULL;
- char fac[64] = {'\0'};
- pos0 = strstr(buf, "<info>");
- if(pos0 != NULL)
- {
- pos1 = strstr(pos0 + 1, "</info>");
- if(pos1 != NULL)
- {
- strncpy(fac, pos0 + 6, pos1 - pos0 - 6);
- }
- if(strcmp(fac, "OK") == 0)
- {
- char* l_pos0 = NULL;
- char* l_pos1 = NULL;
- char* type_pos0 = NULL;
- char* type_pos1 = NULL;
- char fac_type[64] = {'\0'};
- type_pos0 = strstr(buf, "<type>");
- if(type_pos0 != NULL)
- {
- type_pos1 = strstr(type_pos0 + 1, "</type>");
- if(type_pos1 != NULL)
- {
- strncpy(fac_type, type_pos0 + 6, type_pos1 - type_pos0 - 6);
- if(strcmp(fac_type, "0") == 0)
- {
- return -1;
- }
- }
- }
- l_pos0 = strstr(buf, "<location>");
- if(l_pos0 != NULL)
- {
- l_pos1 = strstr(l_pos0 + 1, "</location>");
- if(l_pos1 != NULL)
- {
- strncpy(rspBuf, l_pos0 + 10, l_pos1 - l_pos0 - 10);
- }
- return 0;
- }
- }
- else //key error http chunk
- {
- printf("info is %s", fac);
- }
- }
- }
- return -1;
-}
-
-
-
-static void http_data_cb_func1(
- int session_id, mbtk_http_data_type_enum type,
- void *data,int data_len)
-{
- if(type == MBTK_HTTP_DATA_HEADER) {
- LOGE("Header(%d):%s\n",data_len,(char*)data);
- } else if(type == MBTK_HTTP_DATA_CONTENT) {
- LOGE("Data(%d):%s\n",data_len,(char*)data);
- mbtk_lbs_http_parse_location((char*)data, data_len, Loction);
- } else {
- LOGI(">>>>>Complete<<<<<\n");
- }
-}
-
-
-int ql_cell_locator_init()
-{
- http_handle = mbtk_http_handle_get(TRUE, http_data_cb_func1);
- if(http_handle < 0)
- {
- LOGE("mbtk_http_handle_get() fail.");
- return -1;
- }
-
- http_session = mbtk_http_session_create(http_handle,HTTP_OPTION_GET,HTTP_VERSION_1_1);
- if(http_session < 0)
- {
- LOGE("mbtk_http_session_create() fail.");
- return -1;
- }
-
- return 0;
-}
-
-
-int ql_cell_locator_release()
-{
- if(mbtk_http_handle_free(http_handle))
- {
- LOGE("mbtk_http_handle_free() fail.");
- return -1;
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query server and port, server length must be less than 255 bytes.
- @param[in] server the query server ip address
- @param[in] port the query server port
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_server(const char *server, unsigned short port)
-{
- if(server == NULL)
- {
- return -1;
- }
-
- memset(Server, 0, sizeof(Server));
- memcpy(Server, server, strlen(server));
- PORT = port;
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query timeout, the value must between 1-300 [seconds]
- @param[in] timeout value of query timeout
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_timeout(unsigned short timeout)
-{
- locator_timeout = timeout;
- return 0;
-}
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query token, token length must be 16 bytes. the token Used to verify that
- the client accessing the service is valid.
- @param[in] token string of token which want to be setted.
- @param[in] length of token string.
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_token(const char *token, int len)
-{
- if(token == NULL && (strlen(token) != len) && len > 128)
- {
- return -1;
- }
-
- memset(Token, 0, sizeof(token));
- memcpy(Token, token, strlen(token));
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief perform cell locator query
- @param[out] resp include query result or set the error_msg and error_code
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_perform(ql_cell_resp *resp)
-{
-
- int ret = 0;
- int ret1 = 0;
-
- char url[1024] = {0};
- char imei[50] ={0};
- char cellinfo[512] = {0};
- char *p = cellinfo;
- int i =0;
- int mcc,mnc,tac,ci,rsrp;
-
- mbtk_info_handle_t* info_handle = mbtk_info_handle_get();
- if(!info_handle)
- {
- return -1;
- }
-
- mbtk_imei_get(info_handle, imei);
-
- list_node_t* cell_list = NULL;
- int type, err;
- int CellId;
- err = mbtk_cell_get(info_handle, &type, &cell_list);
- if(err || cell_list == NULL) {
- printf("Error : %d\n", err);
- }
- else
- {
- list_first(cell_list);
- mbtk_cell_info_t* cell = (mbtk_cell_info_t*) list_next(cell_list);
- if(cell)
- { // Current server cell.
- switch(type)
- {
- case 0:
- LOGE("GSM : mcc=%d, mnc=%d, lac=%d, ci=%d, arfcn=%d, bsic=%d\n",cell->value5, cell->value6,cell->value1, cell->value2, cell->value3, cell->value4);
- mcc = cell->value5;
- mnc = cell->value6;
- tac = cell->value1;
- ci = cell->value2;
- rsrp = 30;
- break;
- case 1:
- LOGE("UMTS : lac=%d, ci=%d, arfcn=%d\n", cell->value1, cell->value2, cell->value3);
- break;
- case 2:
- LOGE("LTE : tac=%d, PCI=%d, dlEuarfcn=%d, ulEuarfcn=%d, band=%d, mcc=%d, mnc=%d ,cid=%d, rsrp=%d\n",
- cell->value1, cell->value2, cell->value3, cell->value4, cell->value5,cell->value6, cell->value7, cell->value8,cell->value9);
-//// LTE server cell: tac, PCI, dlEuarfcn, ulEuarfcn, band, mcc, mnc ,cid, rsrp
- mcc = cell->value6;
- mnc = cell->value7;
- tac = cell->value1;
- ci = cell->value10;
- rsrp = cell->value9;
-
- // LOGE(cellinfo,"&bts=%X,%X,%d,%d,%d&nearbts=",mcc,mnc,tac,ci,rsrp-140);
- // LOGE("cellinfo:%s\n", cellinfo);
-
- break;
- default:
- break;
- }
- }
-
- sprintf(cellinfo,"&bts=%X,%X,%d,%d,%d&nearbts=",mcc,mnc,tac,ci,rsrp-140);
- while ((cell = (mbtk_cell_info_t*) list_next(cell_list)))
- {
- switch(type)
- {
- case 0:
- LOGE("CELL : %d, %d, %d, %d, %d", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- if(i < 3)
- {
- sprintf(p+strlen(p),"%X,%X,%d,%d,%d|",cell->value5,cell->value6,cell->value1,cell->value2,29-140);
- i++;
- }
- break;
- case 1:
- LOGE("CELL : lac=%d, ci=%d, arfcn=%d\n", cell->value1, cell->value2, cell->value3);
- break;
- case 2:
- CellId = cell->value5;
- // if(CellId > 0 && cell->value5 != -1)
- if(CellId > 0 )
- {
- if(i < 3)
- {
- sprintf(p+strlen(p),"%X,%X,%d,%d,%d|",mcc,mnc,tac,cell->value5,cell->value3-140);
- i++;
- }
- }
- LOGE("CELL : phyCellId=%d, euArfcn=%d, rsrp=%d, rsrq=%d, cellId:%d\n", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- break;
- default:
- break;
- }
- }
- }
- list_free(cell_list);
-
- sprintf(url,"http://%s:%d/position?accesstype=0&imei=%s&cdma=0%s&output=xml&key=%s",\
- Server, PORT, imei,cellinfo, Token);
-
-
- memset(Loction, 0, sizeof(Loction));
-
-
- if(mbtk_http_session_url_set(http_handle, http_session, url)) {
- LOGE("mbtk_http_session_url_set() fail.\n");
- return -1;
- }
-
- const mbtk_http_session_t* session = mbtk_http_session_get(http_handle, http_session);
- LOGI("HTTP:%d,%s,%d,%s\n",session->option,session->host,session->port,session->uri);
-
-
- mbtk_http_session_head_add(http_handle, http_session, "Connection", "KeepAlive");
-
-
- if(mbtk_http_session_start(http_handle, http_session)) {
- LOGE("mbtk_http_session_start() fail.\n");
- return -1;
- }
-
- if(strlen(Loction))
- {
- char Lon[20] ={0};
- char Lat[20] = {0};
- char *lon = Loction;
- char *lat = strstr(Loction, ",");
- if(lat != NULL )
- {
- memcpy(Lon, Loction, lat- lon);
-
- lat++;
- memcpy(Lat, lat, strlen(lat));
-
- sscanf((char*)Lon,"%lf",&resp->lon);
- sscanf((char*)Lat,"%lf",&resp->lat);
- }
-
- }
-
-// printf("lon:%f, lat:%f\n", resp->lon, resp->lat);
-// printf("\nloction:%s\n", Loction);
-
- return 0;
-}
-
-
-
-
-
diff --git a/mbtk/libql_lib/src/ql_common.c b/mbtk/libql_lib/src/ql_common.c
deleted file mode 100755
index eee9fa2..0000000
--- a/mbtk/libql_lib/src/ql_common.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <stdlib.h>
-#include "ql/ql_common.h"
-#include "mbtk_log.h"
-
-void Ql_Powerdown(int mode)
-{
- switch (mode)
- {
- case 1:
- system("halt");
- break;
- case 2:
- system("reboot");
- break;
- default:
- printf("mode error");
- }
-
- return ;
-
-}
-
-void ql_lib_info_print()
-{
- MBTK_SOURCE_INFO_PRINT("ql_lib");
-}
-
-
diff --git a/mbtk/libql_lib/src/ql_data_call.c b/mbtk/libql_lib/src/ql_data_call.c
deleted file mode 100755
index 218e14b..0000000
--- a/mbtk/libql_lib/src/ql_data_call.c
+++ /dev/null
@@ -1,658 +0,0 @@
-#include "ql/DSI_ConnectManager.h"
-#include "mbtk_info_api.h"
-#include <fcntl.h>
-
-extern mbtk_info_handle_t* ql_info_handle;
-extern int ql_info_handle_num;
-static bool inited = FALSE;
-
-typedef struct
-{
- bool active;
- uint8 cid;
- int ip_type;
- char user[128];
- char pass[128];
- QL_DSI_AUTH_PREF_T auth;
-} apn_info;
-
-// 2 - 7
-static apn_info ql_apn_info[9]={0};
-static int mbtk_interval_sec = 0;
-static nw_status_cb ql_net_status_cb = NULL;
-static ex_conn_status_cb ql_net_ex_status_cb = NULL;
-static int now_cid = 0;
-
-void ql_wan_net_state_change_cb(const void* data, int data_len)
-{
- uint8 *net_data = NULL;
- net_data = (uint8 *)data;
-
- if(*net_data > 100 && *net_data < 200)
- {
- int cid;
- cid = *net_data;
- cid = cid - 100;
- ql_apn_info[cid].active = FALSE;//close
- if(ql_net_ex_status_cb != NULL)
- {
- ql_net_ex_status_cb(cid, ql_apn_info[cid].ip_type, CONNECT_DISCON, 0);
- }
- }
- else if(*net_data > 200)
- {
- int cid;
- cid = *net_data;
- cid = cid - 200;
- ql_apn_info[cid].active = TRUE;//open
- }
- else
- {
- if(ql_net_status_cb != NULL)
- {
- ql_net_status_cb(*net_data);
-
- if(*net_data == 25 || *net_data == 26 || *net_data == 27)
- {
- ql_net_status_cb(CONNECT_CONSUCCESS);
- }
- }
-
- if(ql_net_ex_status_cb != NULL)
- {
- if(*net_data == 1)
- {
- ql_net_ex_status_cb(now_cid, ql_apn_info[now_cid].ip_type, CONNECT_CONSUCCESS, 0);
- }
- }
- }
-
-}
-
-int ql_wan_init(void)
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(ql_info_handle, ql_wan_net_state_change_cb);
-
- //return 0;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return -1;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(ql_info_handle, ql_wan_net_state_change_cb);
- }
- //return 0;
- }
-
- mbtk_apn_info_t apns[10] = {0};
- int apn_num = MBTK_APN_CID_MAX;
- int ret = mbtk_apn_get(ql_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- LOGD("mbtk_apn_get ret = %d",ret);
- }
- else
- {
- int i;
- int profile_idx;
- for(i=0;i<MBTK_APN_CID_MAX;i++)
- {
- if(apns[i].cid > 0 && apns[i].cid <= MBTK_APN_CID_MAX)
- {
- profile_idx = apns[i].cid;
- if(apns[i].ip_type == MBTK_IP_TYPE_IPV4V6) // IPV4V6
- ql_apn_info[profile_idx].ip_type = 0;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IP) // IPV4
- ql_apn_info[profile_idx].ip_type = 1;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IPV6) // IPV6
- ql_apn_info[profile_idx].ip_type = 2;
- else
- ql_apn_info[profile_idx].ip_type = 0;
- }
- }
- }
- return 0;
-}
-
-int ql_wan_release(void)
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return -1;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return 0;
- }
- } else {
- ql_info_handle_num--;
- return 0;
- }
- }
- else
- {
- LOGE("DATA handle not inited.");
- return -1;
- }
-}
-/*
-*Set data call over time.
-*/
-int ql_wan_set_autoconnect(int auto_status, int interval_sec)
-{
- if(auto_status == 0) //不开启失败重连
- mbtk_interval_sec = 0;
- else //开启失败重连等待时间
- {
- if(interval_sec <= 0)
- mbtk_interval_sec = interval_sec;
- else
- mbtk_interval_sec = 5; // 默认为5s
- }
- return 0;
-}
-
-#ifdef MBTK_AF_SUPPORT
-int mbtk_route_config(int profile_idx)
-{
- char buf[1024] = {0};
- char dns[128] = {0};
- int offset = 0;
- int fd = -1;
- mbtk_ipv4_info_t ipv4;
- mbtk_ipv6_info_t ipv6;
- sprintf(buf, "route add default dev ccinet%d", profile_idx -1);
- system(buf);
-
- int ret = mbtk_data_call_state_get(ql_info_handle, profile_idx, &ipv4, &ipv6);
- if(ret != 0)
- return -1;
- else
- {
- memset(buf, 0x0, 1024);
- memset(dns, 0x0, 128);
- offset = sprintf(buf, "search lan\n");
- if(ipv4.valid)
- {
- if(inet_ntop(AF_INET, &(ipv4.PrimaryDNS), dns, 32) == NULL) {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- memset(dns, 0x0, 128);
- if(inet_ntop(AF_INET, &(ipv4.SecondaryDNS), dns, 32) == NULL) {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- }
- if(ipv6.valid)
- {
- memset(dns, 0x0, 128);
- if(ipv6_2_str(&(ipv6.PrimaryDNS), dns))
- {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- memset(dns, 0x0, 128);
- if(ipv6_2_str(&(ipv6.SecondaryDNS), dns))
- {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- }
-
- if(offset > 0)
- {
- fd = open("/tmp/resolv.conf", O_WRONLY | O_TRUNC);
- if(fd < 0)
- {
- LOGD("mbtk_route_config : open fail.");
- return -1;
- }
-
- ret = write(fd, buf, offset);
- if(ret < 0)
- {
- LOGD("mbtk_route_config : write fail.");
- }
-
- close(fd);
- }
- }
-
- return 0;
-}
-#endif
-
-int ql_wan_start_ex(int profile_idx, int op, ex_conn_status_cb nw_cb)
-{
- int ret = -1;
- int count = 0;
- if(ql_info_handle == NULL)
- {
- return -1;
- }
-
- ql_net_ex_status_cb = nw_cb;
- ql_net_status_cb = NULL;
- now_cid = profile_idx;
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGD("ql_wan_start_ex() cid out of range.");
-#if 0
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type ,PDP_CID_EXIST_FAIL, 0);
-#endif
- return -1;
- }
-
- //ql_netw_status_cb(ql_apn_info[profile_idx].cid);
- if(op == 0)
- {
- ret = ql_wan_stop(profile_idx);
- goto exit;
- }
-
-#if 0
- if(ql_apn_info[profile_idx].active)
- {
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, PDP_CID_EXIST_FAIL, 0);
- return -1;
- }
-#endif
-
- if(ql_net_ex_status_cb) {
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_DIAL_IMMEDIATELY, 0);
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_CONNING, 0);
- }
-
-data_call_continue:
- ret = mbtk_data_call_start(ql_info_handle, profile_idx, 0, op == 3 ? TRUE : FALSE, 0);
- if(ret != 0)
- {
- if(mbtk_interval_sec <= 0)
- {
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_DISCON, 0);
- return ret;
- }
- else
- {
- if(count >= 5)
- goto exit;
- sleep(mbtk_interval_sec);
- count++;
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_REDIAL, 0);
- goto data_call_continue;
- }
- LOGD("mbtk_data_call_start() fail.");
- }
- else
- {
- //ql_apn_info[8].cid=profile_idx;
- //ql_netw_status_cb(CONNECT_CONSUCCESS);
-#ifdef MBTK_AF_SUPPORT
- if(profile_idx == 1)
- {
- mbtk_route_config(profile_idx);
-
- }
-#endif
- LOGD("mbtk_data_call_start() success.");
- }
-exit:
- return ret;
-}
-
-
-/*
-* Start data call.
-*/
-int ql_wan_start(int profile_idx, int op, nw_status_cb nw_cb)
-{
- int ret = -1;
- int count = 0;
- if(ql_info_handle == NULL)
- {
- return -1;
- }
-
- ql_net_status_cb = nw_cb;
- ql_net_ex_status_cb = NULL;
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- ql_net_status_cb(PDP_ERROR_UNSPECIFIED);
- return -1;
- }
-
- //ql_netw_status_cb(ql_apn_info[profile_idx].cid);
- if(op == 0)
- {
- ret = ql_wan_stop(profile_idx);
- goto exit;
- }
-
- if(ql_apn_info[profile_idx].active)
- {
- ql_net_status_cb(PDP_CID_EXIST_FAIL);
- return -1;
- }
-
- ql_net_status_cb(CONNECT_DIAL_IMMEDIATELY);
- ql_net_status_cb(CONNECT_CONNING);
-data_call_continue:
- ret = mbtk_data_call_start(ql_info_handle, profile_idx, 0, op == 3 ? TRUE : FALSE, 0);
- if(ret != 0)
- {
- if(mbtk_interval_sec <= 0)
- {
- ql_net_status_cb(CONNECT_DISCON);
- return ret;
- }
- else
- {
- if(count >= 5)
- goto exit;
- sleep(mbtk_interval_sec);
- count++;
- ql_net_status_cb(CONNECT_REDIAL);
- goto data_call_continue;
- }
- }
- else
- {
- //ql_apn_info[8].cid=profile_idx;
- //ql_netw_status_cb(CONNECT_CONSUCCESS);
- LOGD("mbtk_data_call_start() success.");
- }
-exit:
- return ret;
-}
-
-/*
-* Stop data call.
-*/
-int ql_wan_stop(int profile_idx)
-{
- int err;
- if(ql_info_handle == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
-
-#if 0 //mbtk wyq for data_call add "if 0"
- if(!ql_apn_info[profile_idx].active)
- {
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type ,PDP_CID_EXIST_FAIL, 0);
- if(ql_net_status_cb)
- ql_net_status_cb(PDP_CID_EXIST_FAIL);
- return -1;
- }
-#endif
- err = mbtk_data_call_stop(ql_info_handle, profile_idx, 15);
-
- return err;
-}
-
-/*
-* Query data call state.
-*/
-int ql_get_data_call_info(int profile_idx, ql_data_call_info *info)
-{
- if(ql_info_handle == NULL || info == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
- mbtk_ipv4_info_t ipv4;
- mbtk_ipv6_info_t ipv6;
- memset(info, 0, sizeof(ql_data_call_info));
- int ret = mbtk_data_call_state_get(ql_info_handle, profile_idx, &ipv4, &ipv6);
- if(ret != 0)
- return -1;
- else
- {
- info->profile_idx = profile_idx;
- if(ipv4.valid)
- {
- info->ip_type = 1; // IPV4
- info->v4.state = 1;
- sprintf(info->v4.addr.name, "ccinet%d", profile_idx - 1);
- if(inet_ntop(AF_INET, &(ipv4.IPAddr), info->v4.addr.ip, 32) == NULL) {
- LOGD("IP error.");
- } else {
- LOGD("IP : %s", info->v4.addr.ip);
- }
- if(inet_ntop(AF_INET, &(ipv4.PrimaryDNS), info->v4.addr.pri_dns, 32) == NULL) {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", info->v4.addr.pri_dns);
- }
- if(inet_ntop(AF_INET, &(ipv4.SecondaryDNS), info->v4.addr.sec_dns, 32) == NULL) {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", info->v4.addr.sec_dns);
- }
- }
- if(ipv6.valid)
- {
- info->ip_type = 2; // IPV6
- info->v6.state = 1;
- sprintf(info->v6.addr.name, "ccinet%d", profile_idx - 1);
- if(ipv6_2_str(&(ipv6.IPV6Addr), info->v6.addr.ip))
- {
- LOGD("IP error.");
- } else {
- LOGD("IP : %s", info->v6.addr.ip);
- }
- if(ipv6_2_str(&(ipv6.PrimaryDNS), info->v6.addr.pri_dns))
- {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", info->v6.addr.pri_dns);
- }
- if(ipv6_2_str(&(ipv6.SecondaryDNS), info->v6.addr.sec_dns))
- {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", info->v6.addr.sec_dns);
- }
- }
- if(ipv4.valid && ipv6.valid)
- info->ip_type = 0; // IPV4V6
- if(!ipv4.valid && !ipv6.valid)
- {
- info->v4.state = 0;
- info->v6.state = 0;
- }
- return 0;
- }
-
-}
-
-/*
-* Set specific APN informations.
-*
-* cid : 2-7
-*/
-int ql_wan_setapn(int profile_idx, int ip_type, const char *apn, const char *userName,
- const char *password, QL_DSI_AUTH_PREF_T auth)
-{
- if(ql_info_handle == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
- /*
- QL_DSI_AUTH_PREF_NULL = 0, //无认证
- QL_DSI_AUTH_PREF_ONLY_PAP, //PAP 认证
- QL_DSI_AUTH_PREF_ONLY_CHAP, //CHAP 认证
- QL_DSI_AUTH_PREF_BOTH_PAP_CHAP //PAP 和 CHAP 认证
- */
- char mbtk_auth[64]={0};
- if(auth == QL_DSI_AUTH_PREF_NULL)
- memcpy(mbtk_auth,"NONE",strlen("NONE")+1);
- else if(auth == QL_DSI_AUTH_PREF_ONLY_PAP)
- memcpy(mbtk_auth,"PAP",strlen("PAP")+1);
- else if(auth == QL_DSI_AUTH_PREF_ONLY_CHAP)
- memcpy(mbtk_auth,"CHAP",strlen("CHAP")+1);
- else
- {
- LOGD("auth input error!");
- return -1;
- }
-
- memset(&(ql_apn_info[profile_idx]), 0, sizeof(apn_info));
- ql_apn_info[profile_idx].cid = profile_idx;
- ql_apn_info[profile_idx].ip_type = ip_type;
- if(!str_empty(userName) && !str_empty(password)) {
- memcpy(ql_apn_info[profile_idx].user, userName, strlen(userName));
- memcpy(ql_apn_info[profile_idx].pass, password, strlen(password));
- ql_apn_info[profile_idx].auth = auth;
- LOGD("ql_wan_setapn: %d, %d, %s, %s, %s, %s",profile_idx, ip_type, apn, userName, password, mbtk_auth);
- } else {
- LOGD("ql_wan_setapn: %d, %d, %s, NULL, NULL, %s",profile_idx, ip_type, apn, mbtk_auth);
- }
-
- /*
- if(ip_type < 0 || ip_type > 3)
- ql_netw_status_cb(PDP_UNKNOWN_PDP_ADDRESS_TYPE);
- */
- if(ip_type == 0) // IPV4V6
- ip_type = MBTK_IP_TYPE_IPV4V6;
- else if(ip_type == 1) // IPV4
- ip_type = MBTK_IP_TYPE_IP;
- else if(ip_type == 2) // IPV6
- ip_type = MBTK_IP_TYPE_IPV6;
-
- return mbtk_apn_set(ql_info_handle, profile_idx, ip_type, apn, userName, password, mbtk_auth);
-}
-
-/*
-* Get current all APN informations.
-*/
-int __ql_wan_getapn(int profile_idx, int *ip_type, char *apn, int apnLen, char *userName, int userLen, char *password, int pwdLen,int* auth)
-{
- if(ql_info_handle == NULL || apn == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
- mbtk_apn_info_t apns[10];
- int apn_num = MBTK_APN_CID_MAX;
- int ret = mbtk_apn_get(ql_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- LOGD("mbtk_apn_get ret = %d",ret);
- return -1;
- }
- else
- {
- int i;
- for(i=0;i<MBTK_APN_CID_MAX;i++)
- {
- if(apns[i].cid == profile_idx)
- break;
- }
- if(i == MBTK_APN_CID_MAX)
- return -1;
- LOGD("cid = %d",i);
- if(apns[i].ip_type == MBTK_IP_TYPE_IPV4V6) // IPV4V6
- *ip_type = 0;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IP) // IPV4
- *ip_type = 1;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IPV6) // IPV6
- *ip_type = 2;
- else
- *ip_type = 0;
-
- if(strlen(apns[i].apn)+1 > apnLen)
- return -1;
- else
- memcpy(apn, apns[i].apn,strlen(apns[i].apn)+1);
-
- if(strlen(apns[i].user)+1 > userLen)
- return -1;
- else
- {
- if(strlen(apns[i].user) > 0)
- memcpy(userName, apns[i].user, strlen(apns[i].user)+1);
- else
- memcpy(userName, ql_apn_info[profile_idx].user, strlen(ql_apn_info[profile_idx].user)+1);
- }
-
- if(strlen(apns[i].pass)+1 > pwdLen)
- return -1;
- else
- {
- if(strlen(apns[i].pass) > 0)
- memcpy(password, apns[i].pass, strlen(apns[i].pass)+1);
- else
- memcpy(password, ql_apn_info[profile_idx].pass, strlen(ql_apn_info[profile_idx].pass)+1);
- }
-
- if(strlen(apns[i].auth) > 0) {
- if(strcmp(apns[i].auth, "NONE") == 0)
- *auth = QL_DSI_AUTH_PREF_NULL;
- else if(strcmp(apns[i].auth, "PAP") == 0)
- *auth = QL_DSI_AUTH_PREF_ONLY_PAP;
- else if(strcmp(apns[i].auth, "CHAP") == 0)
- *auth = QL_DSI_AUTH_PREF_ONLY_CHAP;
- else
- {
- LOGD("auth error!");
- return -1;
- }
- } else {
- *auth = ql_apn_info[profile_idx].auth;
- }
-
- return 0;
- }
-}
-
-
diff --git a/mbtk/libql_lib/src/ql_dev_api.c b/mbtk/libql_lib/src/ql_dev_api.c
deleted file mode 100755
index d473ab8..0000000
--- a/mbtk/libql_lib/src/ql_dev_api.c
+++ /dev/null
@@ -1,179 +0,0 @@
-//**********************
-#include "ql/ql_dev.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-//**********************
-
-mbtk_info_handle_t* ql_info_handle = NULL;
-int ql_info_handle_num = 0;
-static bool inited = FALSE;
-
-//**********************
-QL_DEV_ERROR_CODE ql_dev_init()
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- return QL_DEV_SUCCESS;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return QL_DEV_GENERIC_FAILURE;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- }
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_release()
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return QL_DEV_GENERIC_FAILURE;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return QL_DEV_SUCCESS;
- }
- } else {
- ql_info_handle_num--;
- return QL_DEV_SUCCESS;
- }
- }
- else
- {
- LOGE("DEV handle not inited.");
- return QL_DEV_GENERIC_FAILURE;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_imei(char* imei)
-{
- if(ql_info_handle == NULL || imei == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_imei_get(ql_info_handle, imei)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_firmware_version(char* version)
-{
- if(ql_info_handle == NULL || version == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_version_get(ql_info_handle, version)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_model(char* model)
-{
- if(ql_info_handle == NULL || model == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_model_get(ql_info_handle, model)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_sn(char* sn)
-{
- if(ql_info_handle == NULL || sn == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_sn_get(ql_info_handle, sn)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_set_modem_fun(QL_DEV_MODEM_FUNCTION function, int rst)
-{
- if(ql_info_handle == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
- mbtk_modem_info_t modem;
- modem.rst = rst;
- switch (function)
- {
- case QL_DEV_MODEM_MIN_FUN:
- modem.fun = MBTK_DEV_MODEM_MIN_FUN;
- break;
- case QL_DEV_MODEM_FULL_FUN:
- modem.fun = MBTK_DEV_MODEM_FULL_FUN;
- break;
- case QL_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS:
- modem.fun = MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS;
- break;
- case QL_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS:
- modem.fun = MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS;
- break;
- case QL_DEV_MODEM_DISABLE_SIM:
- modem.fun = MBTK_DEV_MODEM_DISABLE_SIM;
- break;
- case QL_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE:
- modem.fun = MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE;
- break;
- default:
- break;
- }
- if(mbtk_set_modem_fun(ql_info_handle, &modem)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_modem_fun(int *function)
-{
- if(ql_info_handle == NULL || function == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_get_modem_fun(ql_info_handle, function)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-//**********************
diff --git a/mbtk/libql_lib/src/ql_fota.c b/mbtk/libql_lib/src/ql_fota.c
deleted file mode 100755
index eb0afc7..0000000
--- a/mbtk/libql_lib/src/ql_fota.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <fcntl.h>
-#include "mbtk_fota.h"
-
-
-int ql_fota_init(fota_callback cb)
-{
- return mbtk_fota_init(cb);
-}
-
-/*******************************************************************************
-* @brief write firmware package, the firmware package is written in segments.
- and The result of the write is output by calling the callback function.
- the firmware package size must less than 32MB
- @param
- fname: firmware package file
- segment_size: the length of once write, recommending 3*1024*1024 bytes
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_fw_write(char* fname, int segment_size)
-{
- return mbtk_fota_fw_write(fname, segment_size);
-}
-
-
-/*******************************************************************************
-* @brief download firmware by url, and write firmware package, the firmware
- package is written in segments. The result of the write is output by
- calling the callback function. the firmware package size must less than
- 32MB
- @param
- url: [IN] the address of download firmware package file, the url
- support http or https protocol.
- segment_size: [IN] the length of once write, recommending 3*1024*1024 bytes
- conn_timeout: [IN] timeout to connect to the server, if set 0 that means
- switch to the default build-in connection timeout(300s)
- download_timeout: [IN] timeout for download the firmware file. if set 0 that means
- it never time out
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_fw_write_by_url(char* url, int segment_size,
- int conn_timeout, int download_timeout)
-{
- return mbtk_fota_fw_write_by_url(url, segment_size,conn_timeout, download_timeout);
-}
-/*******************************************************************************
-* @brief reboot system and clear env
- @param
- is_reboot: if set 1, after fota success, reboot system
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_done(int is_reboot)
-{
- return mbtk_fota_done1(is_reboot);
-}
diff --git a/mbtk/libql_lib/src/ql_gpio.c b/mbtk/libql_lib/src/ql_gpio.c
deleted file mode 100755
index 9be2026..0000000
--- a/mbtk/libql_lib/src/ql_gpio.c
+++ /dev/null
@@ -1,741 +0,0 @@
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "mbtk_log.h"
-#include "mbtk_utils.h"
-#include "ql/ql_gpio.h"
-
-typedef struct {
- int pin;
- int gpio;
-} pin_gpio_mmap_s;
-
-#ifdef MBTK_PROJECT_L508
-static pin_gpio_mmap_s pin_gpio_mmap[] = {
- {PINNAME_GPIO1, -1}, /*PIN-1*/
- {PINNAME_GPIO2, -1}, /*PIN-2*/
- {PINNAME_GPIO3, -1}, /*PIN-3*/
- {PINNAME_GPIO4, -1}, /*PIN-4*/
- {PINNAME_GPIO5, -1}, /*PIN-5*/
- {PINNAME_NET_STATUS, -1}, /*PIN-6*/
- {PINNAME_DBG_RXD, -1}, /*PIN-11*/
- {PINNAME_DBG_TXD, -1}, /*PIN-12*/
- {PINNAME_USIM_PRESENCE, 19}, /*PIN-13*/
- {PINNAME_SD_INT_DET, -1}, /*PIN-23*/
- {PINNAME_PCM_IN, 28}, /*PIN-24*/
- {PINNAME_PCM_OUT, 27}, /*PIN-25*/
- {PINNAME_PCM_SYNC, -1}, /*PIN-26*/
- {PINNAME_PCM_CLK, -1}, /*PIN-27*/
- {PINNAME_SDC2_DATA3, 21}, /*PIN-28*/
- {PINNAME_SDC2_DATA2, -1}, /*PIN-29*/
- {PINNAME_SDC2_DATA1, 4}, /*PIN-30*/
- {PINNAME_SDC2_DATA0, -1}, /*PIN-31*/
- {PINNAME_SDC2_CLK, -1}, /*PIN-32*/
- {PINNAME_SDC2_CMD, -1}, /*PIN-33*/
- {PINNAME_SPI_CS_N, -1}, /*PIN-37*/
- {PINNAME_SPI_MOSI, -1}, /*PIN-38*/
- {PINNAME_SPI_MISO, -1}, /*PIN-39*/
- {PINNAME_SPI_CLK, -1}, /*PIN-40*/
- {PINNAME_I2C_SCL, -1}, /*PIN-41*/
- {PINNAME_I2C_SDA, -1}, /*PIN-42*/
- {PINNAME_GPIO20, 20}, /*PIN-45*/
- {PINNAME_STATUS, 13}, /*PIN-49*/
- {PINNAME_NETLIGHT, 14}, /*PIN-51*/
- {PINNAME_GPIO6, -1}, /*PIN-62*/
- {PINNAME_DCD, -1}, /*PIN-63*/
- {PINNAME_DTR, -1}, /*PIN-66*/
- {PINNAME_MAIN_CTS, -1}, /*PIN-64*/
- {PINNAME_MAIN_RTS, -1}, /*PIN-65*/
- {PINNAME_MAIN_TXD, -1}, /*PIN-67*/
- {PINNAME_MAIN_RXD, -1}, /*PIN-68*/
- {PINNAME_RMII_RXD1, -1}, /*PIN-73*/
- {PINNAME_RMII_RXCL, -1}, /*PIN-74*/
- {PINNAME_RMII_CLK, 3}, /*PIN-75*/
- {PINNAME_RMII_RXD0, 1}, /*PIN-76*/
- {PINNAME_RMII_TXD0, -1}, /*PIN-77*/
- {PINNAME_RMII_TXD1, -1}, /*PIN-78*/
- {PINNAME_RMII_RXD2, -1}, /*PIN-79*/
- {PINNAME_RMII_TXD2, -1}, /*PIN-80*/
- {PINNAME_RMII_TX_CTRL, -1}, /*PIN-81*/
- {PINNAME_RMII_RXD3, -1}, /*PIN-82*/
- {PINNAME_RMII_TXCL, -1}, /*PIN-83*/
- {PINNAME_RMII_TXD3, 5}, /*PIN-84*/
- {PINNAME_WLAN_SLP_CLK, -1}, /*PIN-118*/
- {PINNAME_RMII_RST, 20}, /*PIN-119*/
- {PINNAME_RMII_INT, -1}, /*PIN-120*/
- {PINNAME_RMII_MDIO, 17}, /*PIN-121*/
- {PINNAME_RMII_MDC, 16}, /*PIN-122*/
- {PINNAME_PRI_TDI, 117}, /*PIN-123*/
- {PINNAME_WLAN_PER_EN, 24}, /*PIN-127*/
- {PINNAME_WLAN_WAKE, 21}, /*PIN-135*/
- {PINNAME_WLAN_EN, 22}, /*PIN-136*/
- {PINNAME_GPIO8, -1}, /*PIN-139*/
-};
-#else
-static pin_gpio_mmap_s pin_gpio_mmap[] = {
- {PINNAME_GPIO1, -1}, /*PIN-1*/
- {PINNAME_GPIO2, -1}, /*PIN-2*/
- {PINNAME_GPIO3, -1}, /*PIN-3*/
- {PINNAME_GPIO4, -1}, /*PIN-4*/
- {PINNAME_GPIO5, -1}, /*PIN-5*/
- {PINNAME_NET_STATUS, -1}, /*PIN-6*/
- {PINNAME_DBG_RXD, -1}, /*PIN-11*/
- {PINNAME_DBG_TXD, -1}, /*PIN-12*/
- {PINNAME_USIM_PRESENCE, 19}, /*PIN-13*/
- {PINNAME_SD_INT_DET, -1}, /*PIN-23*/
- {PINNAME_PCM_IN, 28}, /*PIN-24*/
- {PINNAME_PCM_OUT, 27}, /*PIN-25*/
- {PINNAME_PCM_SYNC, -1}, /*PIN-26*/
- {PINNAME_PCM_CLK, -1}, /*PIN-27*/
- {PINNAME_SDC2_DATA3, 21}, /*PIN-28*/
- {PINNAME_SDC2_DATA2, -1}, /*PIN-29*/
- {PINNAME_SDC2_DATA1, 4}, /*PIN-30*/
- {PINNAME_SDC2_DATA0, -1}, /*PIN-31*/
- {PINNAME_SDC2_CLK, -1}, /*PIN-32*/
- {PINNAME_SDC2_CMD, -1}, /*PIN-33*/
- {PINNAME_SPI_CS_N, -1}, /*PIN-37*/
- {PINNAME_SPI_MOSI, -1}, /*PIN-38*/
- {PINNAME_SPI_MISO, -1}, /*PIN-39*/
- {PINNAME_SPI_CLK, -1}, /*PIN-40*/
- {PINNAME_I2C_SCL, -1}, /*PIN-41*/
- {PINNAME_I2C_SDA, -1}, /*PIN-42*/
- {PINNAME_GPIO20, 20}, /*PIN-45*/
- {PINNAME_STATUS, 13}, /*PIN-49*/
- {PINNAME_NETLIGHT, 14}, /*PIN-51*/
- {PINNAME_GPIO6, -1}, /*PIN-62*/
- {PINNAME_DCD, -1}, /*PIN-63*/
- {PINNAME_DTR, -1}, /*PIN-66*/
- {PINNAME_MAIN_CTS, -1}, /*PIN-64*/
- {PINNAME_MAIN_RTS, -1}, /*PIN-65*/
- {PINNAME_MAIN_TXD, -1}, /*PIN-67*/
- {PINNAME_MAIN_RXD, -1}, /*PIN-68*/
- {PINNAME_RMII_RXD1, -1}, /*PIN-73*/
- {PINNAME_RMII_RXCL, -1}, /*PIN-74*/
- {PINNAME_RMII_CLK, 3}, /*PIN-75*/
- {PINNAME_RMII_RXD0, 1}, /*PIN-76*/
- {PINNAME_RMII_TXD0, -1}, /*PIN-77*/
- {PINNAME_RMII_TXD1, -1}, /*PIN-78*/
- {PINNAME_RMII_RXD2, -1}, /*PIN-79*/
- {PINNAME_RMII_TXD2, -1}, /*PIN-80*/
- {PINNAME_RMII_TX_CTRL, -1}, /*PIN-81*/
- {PINNAME_RMII_RXD3, -1}, /*PIN-82*/
- {PINNAME_RMII_TXCL, -1}, /*PIN-83*/
- {PINNAME_RMII_TXD3, 5}, /*PIN-84*/
- {PINNAME_WLAN_SLP_CLK, -1}, /*PIN-118*/
- {PINNAME_RMII_RST, 20}, /*PIN-119*/
- {PINNAME_RMII_INT, -1}, /*PIN-120*/
- {PINNAME_RMII_MDIO, 17}, /*PIN-121*/
- {PINNAME_RMII_MDC, 16}, /*PIN-122*/
- {PINNAME_PRI_TDI, 117}, /*PIN-123*/
- {PINNAME_WLAN_PER_EN, 24}, /*PIN-127*/
- {PINNAME_WLAN_WAKE, 21}, /*PIN-135*/
- {PINNAME_WLAN_EN, 22}, /*PIN-136*/
- {PINNAME_GPIO8, -1}, /*PIN-139*/
-};
-
-#endif
-
-static int gpio_export(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
-
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == 0)
- {
- LOGD("%d has export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/export",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio export file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result = write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- LOGE("Gpio[%d] export fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_unexport(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == -1)
- {
- LOGD("%d not export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/unexport",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio unexport file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result=write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- close(file);
- LOGE("Gpio[%d] unexport fail.", gpio);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_direct_get(int gpio, char *value, int value_size)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- memset(value, 0x0, value_size);
- result = read(file,value,value_size);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-
-static int gpio_direct_set(int gpio, char *value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- result = write(file,value,strlen(value));
- if(result != strlen(value))
- {
- LOGE("Set gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_value_get(int gpio)
-{
- char buffer[50];
- char path[10];
- int file =-1;
- int result =-1;
- int value;
-
- memset(path,0,50);
- memset(buffer,0,10);
- sprintf(path,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(path,O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] fail.", gpio);
- return -1;
- }
- result = read(file,buffer,5);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] value fail", gpio);
- close(file);
- return -1;
- }
- close(file);
- value = atoi(buffer);
- return value;
-}
-
-static int gpio_value_set(int gpio, int value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(buffer,O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] value fail.", gpio);
- return -1;
- }
- if(value == 0) {
- result = write(file,"0",1);
- } else {
- result = write(file,"1",1);
- }
- if(result != 1)
- {
- LOGE("Set gpio[%d] value fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int pin_2_gpio(Enum_PinName pin_name)
-{
-#if 0
- switch(pin_name){
- case PINNAME_USIM_PRESENCE: /*PIN-13*/
- return 19;
- case PINNAME_PCM_IN: /*PIN-24*/
- return 28;
- case PINNAME_PCM_OUT: /*PIN-25*/
- return 27;
- case PINNAME_RMII_CLK: /*PIN-75*/
- return 3;
- case PINNAME_RMII_RXD0: /*PIN-76*/
- return 1;
- case PINNAME_RMII_RST: /*PIN-119*/
- return 20;
- case PINNAME_RMII_MDIO: /*PIN-121*/
- return 17;
- case PINNAME_RMII_MDC: /*PIN-122*/
- return 16;
- case PINNAME_WLAN_PER_EN: /*PIN-127*/
- return 24;
- case PINNAME_WLAN_WAKE: /*PIN-135*/
- return 21;
- case PINNAME_WLAN_EN: /*PIN-136*/
- return 22;
-
- // Unknown PIN.
- case PINNAME_GPIO1: /*PIN-1*/
- case PINNAME_GPIO2: /*PIN-2*/
- case PINNAME_GPIO3: /*PIN-3*/
- case PINNAME_GPIO4: /*PIN-4*/
- case PINNAME_GPIO5: /*PIN-5*/
- case PINNAME_NET_STATUS: /*PIN-6*/
- case PINNAME_DBG_RXD: /*PIN-11*/
- case PINNAME_DBG_TXD: /*PIN-12*/
- case PINNAME_SD_INT_DET: /*PIN-23*/
- case PINNAME_PCM_SYNC: /*PIN-26*/
- case PINNAME_PCM_CLK: /*PIN-27*/
- case PINNAME_SDC2_DATA3: /*PIN-28*/
- case PINNAME_SDC2_DATA2: /*PIN-29*/
- case PINNAME_SDC2_DATA1: /*PIN-30*/
- case PINNAME_SDC2_DATA0: /*PIN-31*/
- case PINNAME_SDC2_CLK: /*PIN-32*/
- case PINNAME_SDC2_CMD: /*PIN-33*/
- case PINNAME_SPI_CS_N: /*PIN-37*/
- case PINNAME_SPI_MOSI: /*PIN-38*/
- case PINNAME_SPI_MISO: /*PIN-39*/
- case PINNAME_SPI_CLK: /*PIN-40*/
- case PINNAME_I2C_SCL: /*PIN-41*/
- case PINNAME_I2C_SDA: /*PIN-42*/
- case PINNAME_GPIO6: /*PIN-62*/
- case PINNAME_DCD: /*PIN-63*/
- case PINNAME_DTR: /*PIN-66*/
- case PINNAME_MAIN_CTS: /*PIN-64*/
- case PINNAME_MAIN_RTS: /*PIN-65*/
- case PINNAME_MAIN_TXD: /*PIN-67*/
- case PINNAME_MAIN_RXD: /*PIN-68*/
- case PINNAME_RMII_RXD1: /*PIN-73*/
- case PINNAME_RMII_RXCL: /*PIN-74*/
- case PINNAME_RMII_TXD0: /*PIN-77*/
- case PINNAME_RMII_TXD1: /*PIN-78*/
- case PINNAME_RMII_RXD2: /*PIN-79*/
- case PINNAME_RMII_TXD2: /*PIN-80*/
- case PINNAME_RMII_TX_CTRL: /*PIN-81*/
- case PINNAME_RMII_RXD3: /*PIN-82*/
- case PINNAME_RMII_TXCL: /*PIN-83*/
- case PINNAME_RMII_TXD3: /*PIN-84*/
- case PINNAME_WLAN_SLP_CLK: /*PIN-118*/
- case PINNAME_RMII_INT: /*PIN-120*/
- case PINNAME_GPIO8: /*PIN-139*/
- default:
- LOGE("Unknown PIN : %d", pin_name);
- return -1;
- }
-#else
- int i = 0;
- while(i < ARRAY_SIZE(pin_gpio_mmap)) {
- if(pin_name == pin_gpio_mmap[i].pin) {
- return pin_gpio_mmap[i].gpio;
- }
- i++;
- }
-
- LOGE("No found PIN : %d", pin_name);
- return -1;
-#endif
-}
-
-
-/*****************************************************************
-* Function: Ql_GPIO_Init
-*
-* Description:
-* This function enables the GPIO function of the specified pin,
-* and initialize the configurations, including direction,
-* level and pull selection.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* dir:
-* The initial direction of GPIO, one value of Enum_PinDirection.
-* level:
-* The initial level of GPIO, one value of Enum_PinLevel.
-* pull_sel:
-* Pull selection, one value of Enum_PinPullSel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_Init(Enum_PinName pin_name,
- Enum_PinDirection dir,
- Enum_PinLevel level,
- Enum_PinPullSel pull_sel
- )
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_export(gpio))
- {
- LOGE("gpio_export() fail.");
- return RES_IO_ERROR;
- }
-
- if(gpio_direct_set(gpio, dir == PINDIRECTION_IN ? "in" : "out"))
- {
- LOGE("gpio_direct_set() fail.");
- return RES_IO_ERROR;
- }
-
- if(dir == PINDIRECTION_OUT){
- if(gpio_value_set(gpio, level))
- {
- LOGE("gpio_value_set() fail.");
- return RES_IO_ERROR;
- }
- }
- // No support pull mode now.
-
- return RES_OK;
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_Base_Init
-*
-* Description:
-* This function enables the GPIO function of the specified pin.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-*
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-*****************************************************************/
-int Ql_GPIO_Base_Init(Enum_PinName pin_name );
-
-/*****************************************************************
-* Function: Ql_GPIO_SetLevel
-*
-* Description:
-* This function sets the level of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* level:
-* The initial level of GPIO, one value of Enum_PinLevel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetLevel(Enum_PinName pin_name, Enum_PinLevel level)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_value_set(gpio, level)) {
- LOGE("gpio_value_set() fail.");
- return RES_IO_ERROR;
- } else {
- return RES_OK;
- }
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_GetLevel
-*
-* Description:
-* This function gets the level of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* The level value of the specified GPIO, which is
-* nonnegative integer.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-*****************************************************************/
-int Ql_GPIO_GetLevel(Enum_PinName pin_name)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- return gpio_value_get(gpio);
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_SetDirection
-*
-* Description:
-* This function sets the direction of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* dir:
-* The initial direction of GPIO, one value of Enum_PinDirection.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetDirection(Enum_PinName pin_name, Enum_PinDirection dir)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_direct_set(gpio, dir == PINDIRECTION_IN ? "in" : "out")) {
- LOGE("gpio_direct_set() fail.");
- return RES_IO_ERROR;
- } else {
- return RES_OK;
- }
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_GetDirection
-*
-* Description:
-* This function gets the direction of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* 0 INPUT
-* 1 OUTPUT
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_GetDirection(Enum_PinName pin_name)
-{
- char buff[10];
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_direct_get(gpio, buff, 10)) {
- LOGE("gpio_direct_get() fail.");
- return RES_IO_NOT_SUPPORT;
- } else {
- if(strncmp(buff, "in",2) == 0) {
- return PINDIRECTION_IN;
- } else if(strncmp(buff, "out",3) == 0) {
- return PINDIRECTION_OUT;
- } else {
- return RES_IO_NOT_SUPPORT;
- }
- }
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_SetPullSelection
-*
-* Description:
-* This function sets the pull selection of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Enum_PinPullSel:
-* Pull selection, one value of Enum_PinPullSel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetPullSelection(Enum_PinName pin_name, Enum_PinPullSel pull_sel);
-
-/*****************************************************************
-* Function: ql_gpio_get_pull_selection
-*
-* Description:
-* This function gets the pull selection of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* 0<<13 no pull
-* 5<<13 pull down
-* 6<<13 pull up
-*****************************************************************/
-int Ql_GPIO_GetPullSelection(Enum_PinName pin_name);
-
-
-/*****************************************************************
-* Function: Ql_GPIO_Uninit
-*
-* Description:
-* This function releases the specified GPIO that was
-* initialized by calling Ql_GPIO_Init() previously.
-* After releasing, the GPIO can be used for other purpose.
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_Uninit(Enum_PinName pin_name)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_unexport(gpio))
- {
- LOGE("gpio_unexport() fail.");
- return RES_IO_ERROR;
- }
-
- return RES_OK;
-}
-
-//------------------------------------------------------------------------------
-/*
-* Function: Ql_EINT_Enable
-*
-* Description:
-* Set the interrupt sense mode, and enable interrupt.
-*
-* Parameters:
-* eint_pin_name:
-* EINT pin name, one value of Enum_PinName that has
-* the interrupt function.
-*
-* eint_type:
-* Interrupt type, level-triggered or edge-triggered.
-* Now, only edge-triggered interrupt is supported.
-*
-* eint_callback:
-* call back function
-*
-* Return:
-* RES_OK, this function succeeds.
-* else failed to execute the function.
-*/
-//------------------------------------------------------------------------------
-int Ql_EINT_Enable(Enum_PinName eint_pin_name, Enum_EintType eint_type, Ql_EINT_Callback eint_callback);
-
-
-//------------------------------------------------------------------------------
-/*
-* Function: Ql_EINT_Disable
-*
-* Description:
-* Disable the interrupt sense.
-*
-* Parameters:
-* eint_pin_name:
-* EINT pin name, one value of Enum_PinName that has
-* the interrupt function.
-*
-* Return:
-* RES_OK, this function succeeds.
-* else failed to execute the function.
-*/
-//------------------------------------------------------------------------------
-int Ql_EINT_Disable(Enum_PinName eint_pin_name);
-
diff --git a/mbtk/libql_lib/src/ql_i2c.c b/mbtk/libql_lib/src/ql_i2c.c
deleted file mode 100755
index 8b8c6a0..0000000
--- a/mbtk/libql_lib/src/ql_i2c.c
+++ /dev/null
@@ -1,222 +0,0 @@
-#include <stdio.h>
-#include <linux/types.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <assert.h>
-#include <string.h>
-#include <linux/i2c.h>
-#include <linux/i2c-dev.h>
-
-#include "mbtk_log.h"
-#include "ql/ql_i2c.h"
-
-int Ql_I2C_Init(char *dev_name)
-{
- int fd = open(dev_name, O_RDWR);
- if(fd <= 0) {
- LOGE("open (%s) fail:errno - %d", dev_name, errno);
- return -1;
- }
- return fd;
-}
-
-
-int Ql_I2C_Read(int fd, unsigned short slaveAddr, unsigned char ofstAddr, unsigned char* ptrBuff, unsigned short length)
-{
- uint8_t outbuf[1];
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[2];
-
- outbuf[0] = ofstAddr;
- messages[0].addr = slaveAddr;
- messages[0].flags = 0;
- messages[0].len = sizeof(outbuf);
- messages[0].buf = outbuf;
-
- /* The data will get returned in this structure */
- messages[1].addr = slaveAddr;
- messages[1].flags = I2C_M_RD/* | I2C_M_NOSTART*/;
- messages[1].len = length;
- messages[1].buf = ptrBuff;
-
- /* Send the request to the kernel and get the result back */
- packets.msgs = messages;
- packets.nmsgs = 2;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- LOGE("Error: Unable to send data");
- return -1;
- }
-
- return 0;
-}
-
-
-int Ql_I2C_Write(int fd, unsigned short slaveAddr, unsigned char ofstAddr, unsigned char* ptrData, unsigned short length)
-{
- uint8_t *outbuf = NULL;
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[1];
-
- outbuf = malloc(length + 1);
- if (!outbuf) {
- printf("Error: No memory for buffer\n");
- return -1;
- }
-
- outbuf[0] = ofstAddr;
- memcpy(outbuf + 1, ptrData, length);
-
- messages[0].addr = slaveAddr;
- messages[0].flags = 0;
- messages[0].len = length + 1;
- messages[0].buf = outbuf;
-
- /* Transfer the i2c packets to the kernel and verify it worked */
- packets.msgs = messages;
- packets.nmsgs = 1;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- printf("Error: Unable to send data");
- free(outbuf);
- return -1;
- }
-
- free(outbuf);
-
- return 0;
-}
-
-
-int Ql_I2C_Deinit(int fd)
-{
- if (fd <= 0)
- return -1;
-
- close(fd);
- return 0;
-}
-
-#if 0
-int open_i2c_dev(int i2cbus, char *filename, size_t size, int quiet)
-{
- int file, len;
-
- len = snprintf(filename, size, "/dev/i2c/%d", i2cbus);
- if (len >= (int)size) {
- fprintf(stderr, "%s: path truncated\n", filename);
- return -EOVERFLOW;
- }
- file = open(filename, O_RDWR);
-
- if (file < 0 && (errno == ENOENT || errno == ENOTDIR)) {
- len = snprintf(filename, size, "/dev/i2c-%d", i2cbus);
- if (len >= (int)size) {
- fprintf(stderr, "%s: path truncated\n", filename);
- return -EOVERFLOW;
- }
- file = open(filename, O_RDWR);
- }
- ...
- return file;
-}
-
-static int i2c_read_bytes(int fd, uint8_t slave_addr, uint8_t reg_addr, uint8_t *values, uint8_t len)
-{
- uint8_t outbuf[1];
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[2];
-
- outbuf[0] = reg_addr;
- messages[0].addr = slave_addr;
- messages[0].flags = 0;
- messages[0].len = sizeof(outbuf);
- messages[0].buf = outbuf;
-
- /* The data will get returned in this structure */
- messages[1].addr = slave_addr;
- messages[1].flags = I2C_M_RD/* | I2C_M_NOSTART*/;
- messages[1].len = len;
- messages[1].buf = values;
-
- /* Send the request to the kernel and get the result back */
- packets.msgs = messages;
- packets.nmsgs = 2;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- printf("Error: Unable to send data");
- return -1;
- }
-
- return 0;
-}
-
-
-static int i2c_write_bytes(int fd, uint8_t slave_addr, uint8_t reg_addr, uint8_t *values, uint8_t len)
-{
- uint8_t *outbuf = NULL;
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[1];
-
- outbuf = malloc(len + 1);
- if (!outbuf) {
- printf("Error: No memory for buffer\n");
- return -1;
- }
-
- outbuf[0] = reg_addr;
- memcpy(outbuf + 1, values, len);
-
- messages[0].addr = slave_addr;
- messages[0].flags = 0;
- messages[0].len = len + 1;
- messages[0].buf = outbuf;
-
- /* Transfer the i2c packets to the kernel and verify it worked */
- packets.msgs = messages;
- packets.nmsgs = 1;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- printf("Error: Unable to send data");
- free(outbuf);
- return -1;
- }
-
- free(outbuf);
-
- return 0;
-}
-
-
-int set_slave_addr(int file, int address, int force)
-{
- /* With force, let the user read from/write to the registers
- even when a driver is also running */
- if (ioctl(file, force ? I2C_SLAVE_FORCE : I2C_SLAVE, address) < 0) {
- fprintf(stderr,
- "Error: Could not set address to 0x%02x: %s\n",
- address, strerror(errno));
- return -errno;
- }
-
- return 0;
-}
-
-
-int main(void)
-{
- int fd = -1;
- char send_data[64] = {0};
- send_data[0] = 0x55;
- send_data[1] = 0x00;
- send_data[2] = 0x84;
- fd= open_i2c_dev(0, "i2c_test", 5, 0);
- i2c_write_bytes(fd, 0x12, 0x10,send_data, 3)
-}
-#endif
diff --git a/mbtk/libql_lib/src/ql_quec_nw.c b/mbtk/libql_lib/src/ql_quec_nw.c
deleted file mode 100644
index 51598e9..0000000
--- a/mbtk/libql_lib/src/ql_quec_nw.c
+++ /dev/null
@@ -1,945 +0,0 @@
-#include "ql/ql_nw.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-extern mbtk_info_handle_t* ql_info_handle;
-extern int ql_info_handle_num;
-static bool inited = FALSE;
-
-#define SIGNAL_STRENGTH_INVALID_1 99
-#define SIGNAL_STRENGTH_INVALID_2 255
-
-
-typedef struct
-{
- uint8 *operator_l;
- uint8 *operator_s;
- uint32 mcc_mnc;
-} operator_mcc_mnc_t;
-
-typedef struct
-{
- QL_NW_EventHandlerFunc_t handlerPtr;
- void* contextPtr;
-} ql_cust_cb_func;
-
-static ql_cust_cb_func ql_func_cb_handle;
-
-static int roaming_pref = 1; // Open roaming for default.
-
-static operator_mcc_mnc_t operator_mcc_mnc [] =
-{
- {"China Mobile","CMCC",46000},
- {"China Unicom","CU",46001},
- {"China Mobile","CMCC",46002},
- {"China Telecom","CT",46003},
- {"China Mobile","CMCC",46004},
- {"China Telecom","CT",46005},
- {"China Unicom","CU",46006},
- {"China Mobile","CMCC",46007},
- {"China Mobile","CMCC",46008},
- {"China Unicom","CU",46009},
- {"China Telecom","CT",46011}
-};
-
-typedef enum {
- RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
- RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
-} RIL_RadioTechnologyFamily;
-
-void ql_nw_state_change_cb(const void* data, int data_len)
-{
- ///mbtk_net_info_t *reg = (mbtk_net_info_t *)data;
- uint8 *net_data = NULL;
-
- net_data = (uint8*)data;
- /*
- uint8 data[3];
- data[0] = (uint8)MBTK_NET_CS_STATE;
-
- net_data[0] = *(uint8 *)(data); //MBTK_NET_PS_STATE
- net_data[1] = *(uint8 *)(data + sizeof(uint8)); //mbtk_net_reg_state_enum state Reg State
- net_data[2] = *(uint8 *)(data + sizeof(uint8) + sizeof(uint8)); //act
- */
- if(roaming_pref == 0)
- {
- mbtk_modem_info_t info;
- if(*net_data == 5)
- {
- info.fun=4;
- //ql_netw_status_cb(5);
- }
- else
- info.fun=1;
- info.rst=0;
- //mbtk_set_modem_fun(ql_info_handle, &info);
- }
-
- if(ql_func_cb_handle.handlerPtr != NULL)
- {
- ql_func_cb_handle.handlerPtr(QL_NW_IND_DATA_REG_EVENT_FLAG,&(net_data[2]), sizeof(&(net_data[2])), NULL);
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_init()
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- return QL_NW_SUCCESS;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- }
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_release()
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return QL_NW_SUCCESS;
- }
- } else {
- ql_info_handle_num--;
- return QL_NW_SUCCESS;
- }
- }
- else
- {
- LOGE("NW handle not inited.");
- return QL_NW_GENERIC_FAILURE;
- }
-}
-
-static uint8 net_pre_change(bool mbtk_2_ql,int net_mode)
-{
- uint8 mbtk_net_pre = 0xFF;
-
- /*
- QL_NW_PREF_NET_TYPE_GSM_WCDMA = 0, //4
- QL_NW_PREF_NET_TYPE_GSM_ONLY = 1, //0
- QL_NW_PREF_NET_TYPE_WCDMA = 2, //1
- QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO = 3, //2
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA = 9, //12
- QL_NW_PREF_NET_TYPE_LTE_ONLY = 11, //5
- QL_NW_PREF_NET_TYPE_LTE_WCDMA = 12, //9
- QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF = 13, //7
- QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF = 14, //8
- QL_NW_PREF_NET_TYPE_LTE_GSM = 15, //6
- QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF = 16, //10
- QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF = 17, //11
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF = 19, //13
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF = 20, //14
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF = 21, //15
- */
- /*
- 0 : GSM only
- 1 : UMTS only
- 2 : GSM/UMTS(auto)
- 3 : GSM/UMTS(GSM preferred)
- 4 : GSM/UMTS(UMTS preferred)
- 5 : LTE only
- 6 : GSM/LTE(auto)
- 7 : GSM/LTE(GSM preferred)
- 8 : GSM/LTE(LTE preferred)
- 9 : UMTS/LTE(auto)
- 10 : UMTS/LTE(UMTS preferred)
- 11 : UMTS/LTE(LTE preferred)
- 12 : GSM/UMTS/LTE(auto)
- 13 : GSM/UMTS/LTE(GSM preferred)
- 14 : GSM/UMTS/LTE(UMTS preferred)
- 15 : GSM/UMTS/LTE(LTE preferred)
- */
-
- if(mbtk_2_ql) {
- switch(net_mode)
- {
- case MBTK_NET_PREF_GSM_UMTS_UMTS_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_GSM_WCDMA;
- break;
- case MBTK_NET_PREF_GSM_ONLY:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_GSM_ONLY;
- break;
- case MBTK_NET_PREF_UMTS_ONLY:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_WCDMA;
- break;
- case MBTK_NET_PREF_GSM_UMTS_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA;
- break;
- case MBTK_NET_PREF_LTE_ONLY:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_ONLY;
- break;
- case MBTK_NET_PREF_UMTS_LTE_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_WCDMA;
- break;
- case MBTK_NET_PREF_GSM_LTE_GSM_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF;
- break;
- case MBTK_NET_PREF_GSM_LTE_LTE_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF;
- break;
- case MBTK_NET_PREF_GSM_LTE_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM;
- break;
- case MBTK_NET_PREF_UMTS_LTE_UMTS_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF;
- break;
- case MBTK_NET_PREF_UMTS_LTE_LTE_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_GSM_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_UMTS_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF;
- break;
- default:
- mbtk_net_pre = 0xFF;
- break;
- }
- } else {
- switch(net_mode)
- {
- case QL_NW_PREF_NET_TYPE_GSM_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_GSM_ONLY:
- mbtk_net_pre = MBTK_NET_PREF_GSM_ONLY;
- break;
- case QL_NW_PREF_NET_TYPE_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_ONLY;
- break;
- case QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_ONLY:
- mbtk_net_pre = MBTK_NET_PREF_LTE_ONLY;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_GSM_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_LTE_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM:
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_UMTS_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_LTE_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_GSM_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_UMTS_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF;
- break;
- default:
- mbtk_net_pre = 0xFF;
- break;
- }
- }
- return mbtk_net_pre;
-}
-
-QL_NW_ERROR_CODE ql_nw_set_config(QL_NW_CONFIG_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- if(pt_info->preferred_nw_mode < QL_NW_PREF_NET_TYPE_GSM_WCDMA || pt_info->preferred_nw_mode > QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF)
- {
- LOGE("Unknown preferred_nw_mode(%d) error.", pt_info->preferred_nw_mode);
- return QL_NW_GENERIC_FAILURE;
- }
-
- roaming_pref = pt_info->roaming_pref;
-
- mbtk_band_info_t band;
- memset(&band, 0, sizeof(mbtk_band_info_t));
- band.net_pref = net_pre_change(FALSE, pt_info->preferred_nw_mode);
- if(band.net_pref == 0xFF)
- {
- LOGE("net_pre_change() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- if(mbtk_current_band_set(ql_info_handle, &band)) {
- return QL_NW_GENERIC_FAILURE;
- } else {
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_config(QL_NW_CONFIG_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- pt_info->roaming_pref = roaming_pref;
- mbtk_band_info_t band;
- if(mbtk_current_band_get(ql_info_handle, &band)) {
- return QL_NW_GENERIC_FAILURE;
- } else {
- pt_info->preferred_nw_mode = (QL_NW_PREFERRED_NETWORK_TYPE)net_pre_change(TRUE, band.net_pref);
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_nitz_time_info(QL_NW_NITZ_TIME_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- memset(pt_info, 0x0, sizeof(QL_NW_NITZ_TIME_INFO_T));
- char time_str[100]={0};
- ///printf("mbtk_net_time_get begin\n");
- int err = mbtk_net_time_get(ql_info_handle, time_str);
- if(err) {
- LOGE("mbtk_net_time_get() fail.");
- return QL_NW_GENERIC_FAILURE;
- } else {
- memset(pt_info->nitz_time,0,32);
- memcpy(pt_info->nitz_time,time_str,strlen(time_str));
- if(mbtk_get_abs_time(time_str, &(pt_info->abs_time))) {
- LOGE("mbtk_get_abs_time() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- pt_info->leap_sec = 0;
-
- return QL_NW_SUCCESS;
- }
-}
-
-//--------------------------------------------------------------------------------------
-QL_NW_ERROR_CODE ql_nw_event_register(unsigned int bitmask)
-{
- /*
- NW_IND_VOICE_REG_EVENT_IND_FLAG 语音拨号注册事件
- NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) 数据拨号注册事件
- NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) 信号强度事件
- NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG (1 << 3) 网络时间更新事件
- */
- if(bitmask == QL_NW_IND_VOICE_REG_EVENT_FLAG)
- {}
- if(bitmask == QL_NW_IND_DATA_REG_EVENT_FLAG)
- {}
- if(bitmask == QL_NW_IND_SIGNAL_STRENGTH_EVENT_FLAG)
- {}
- if(bitmask == QL_NW_IND_NITZ_TIME_UPDATE_EVENT_FLAG)
- {}
- return QL_NW_SUCCESS;
-}
-//--------------------------------------------------------------------------------------
-
-QL_NW_ERROR_CODE ql_nw_get_operator_name(QL_NW_OPERATOR_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(ql_info_handle, &net) && net.plmn > 0)
- {
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(operator_mcc_mnc[i].mcc_mnc == net.plmn)
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- strcpy(OperatorFN, operator_mcc_mnc[i].operator_l);
- strcpy(OperatorSH, operator_mcc_mnc[i].operator_s);
- sprintf(MccMnc, "%d", operator_mcc_mnc[i].mcc_mnc);
- }
- memset(pt_info->long_eons,0,128);
- memcpy(pt_info->long_eons,operator_mcc_mnc[i].operator_l,strlen(operator_mcc_mnc[i].operator_l));
- memset(pt_info->short_eons,0,128);
- memcpy(pt_info->short_eons,operator_mcc_mnc[i].operator_s,strlen(operator_mcc_mnc[i].operator_s));
- memset(pt_info->mcc,0,4);
- memset(pt_info->mnc,0,4);
- sprintf(pt_info->mcc, "%d", (operator_mcc_mnc[i].mcc_mnc)/100);
- if(0 == operator_mcc_mnc[i].mcc_mnc % 100)
- {
- strcpy(pt_info->mnc, "00");
- }
- else
- {
- sprintf(pt_info->mnc, "%d", (operator_mcc_mnc[i].mcc_mnc)%100);
- }
- //pt_info->act;
- return QL_NW_SUCCESS;
- }
-
- return QL_NW_GENERIC_FAILURE;
-}
-
-QL_NW_ERROR_CODE ql_nw_perform_scan(QL_NW_SCAN_RESULT_LIST_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return -1;
- }
- list_node_t* net_list = NULL;
- int ret = mbtk_available_net_get(ql_info_handle, &net_list);
- if(ret != 0)
- {
- LOGE("mbtk_available_net_get fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- else
- {
- memset(pt_info, 0x0, sizeof(QL_NW_SCAN_RESULT_LIST_INFO_T));
- mbtk_net_info_t* net = NULL;
- list_first(net_list);
- int i=0;
- while ((net = (mbtk_net_info_t*) list_next(net_list)))
- {
- //printf("Net : %d, %d, %d, %d\n", net->net_sel_mode, net->net_type, net->net_state, net->plmn);
- if(net->net_state == 8)
- pt_info->entry[i].status = QL_NW_ACCESS_TECH_E_UTRAN_CA;
- else if(net->net_state == 0xff)
- pt_info->entry[i].status = QL_NW_ACCESS_TECH_NONE;
- else
- pt_info->entry[i].status = net->net_state;
-
- int j = 0;
- while(j < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(operator_mcc_mnc[j].mcc_mnc == net->plmn)
- break;
- j++;
- }
- if(j == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(pt_info->entry[i].operator_name.long_eons, "UNKNOWN");
- strcpy(pt_info->entry[i].operator_name.short_eons, "UNKNOWN");
- sprintf(pt_info->entry[i].operator_name.mcc, "%d", (net->plmn)/100);
- sprintf(pt_info->entry[i].operator_name.mnc, "%d", (net->plmn)%100);
- }
- else
- {
- strcpy(pt_info->entry[i].operator_name.long_eons, operator_mcc_mnc[j].operator_l);
- strcpy(pt_info->entry[i].operator_name.short_eons, operator_mcc_mnc[j].operator_s);
- sprintf(pt_info->entry[i].operator_name.mcc, "%d", (net->plmn)/100);
- sprintf(pt_info->entry[i].operator_name.mnc, "%d", (net->plmn)%100);
- }
- pt_info->entry[i].operator_name ;
- pt_info->entry[i].act = net->net_type;
- i++;
- if(i > 40)
- break;
- }
- pt_info->entry_len = i;
- list_free(net_list);
- return QL_NW_SUCCESS;
- }
-}
-
-#if 0
-static int ql_query_registration_state(const char *type, int* regState,int *imsRegState,int * LAC, int *CID,int *netType,int * radioTechFam,int *netRejected)
-{
- if(ql_info_handle == NULL || str_empty(type) || regState == NULL || imsRegState == NULL
- || LAC == NULL || CID == NULL || netType == NULL || radioTechFam == NULL || netRejected == NULL)
- {
- return -1;
- }
- mbtk_net_reg_info_t reg;
- int err = mbtk_net_reg_get(ql_info_handle, ®);
- if(err) {
- *netRejected = err;
- return -1;
- } else {
- //printf("REG : %d, %d, %d, %04x, %08o\n", reg.state, reg.type, reg.ims_reg, reg.lac, reg.ci);
- // Voice/Data/IMS
- if(strcmp("VOICE", type) == 0) {
- *regState = reg.call_state;
- } else if(strcmp("DATA", type) == 0) {
- *regState = reg.data_state;
- } else if(strcmp("IMS", type) == 0) {
- *imsRegState = reg.ims_state;
- } else {
- return -1;
- }
-
- if(reg.call_state != MBTK_NET_REG_STATE_NON || reg.data_state != MBTK_NET_REG_STATE_NON || reg.ims_state != MBTK_NET_REG_STATE_NON) {
- sprintf(LAC, "%04x", reg.lac);
- sprintf(CID, "%08o", reg.ci);
- *netType = reg.type;
- *radioTechFam = RADIO_TECH_3GPP;
- }
- return 0;
- }
-
-}
-#endif
-
-QL_NW_ERROR_CODE ql_nw_get_reg_status(QL_NW_REG_STATUS_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- /*VOICE/DATA/IMS*/
- mbtk_net_reg_info_t reg;
- int err = mbtk_net_reg_get(ql_info_handle, ®);
- if(err) {
- LOGE("mbtk_net_reg_get fail.");
- return QL_NW_GENERIC_FAILURE;
- } else {
- memset(pt_info, 0x0, sizeof(QL_NW_REG_STATUS_INFO_T));
- pt_info->data_reg.state = (QL_NW_REG_STATE)reg.data_state;
- pt_info->data_reg.lac = reg.lac;
- pt_info->data_reg.cid = reg.ci;
- pt_info->voice_reg.state = (QL_NW_REG_STATE)reg.call_state;
- pt_info->voice_reg.lac = reg.lac;
- pt_info->voice_reg.cid = reg.ci;
- switch(reg.type)
- {
- case MBTK_RADIO_TECH_GSM:
- case MBTK_RADIO_TECH_GSM_COMPACT:
- case MBTK_RADIO_TECH_GSM_EGPRS:
- case MBTK_RADIO_TECH_UTRAN_HSPA:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_GPRS;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_GSM;
- break;
- }
- case MBTK_RADIO_TECH_UTRAN:
- case MBTK_RADIO_TECH_UTRAN_HSDPA:
- case MBTK_RADIO_TECH_UTRAN_HSUPA:
- case MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_UMTS;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_UMTS;
- break;
- }
- case MBTK_RADIO_TECH_E_UTRAN:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_LTE;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_LTE;
- break;
- }
- default:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_UNKNOWN;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_UNKNOWN;
- break;
- }
- }
- }
-
- return 0;
-
-#if 0
- int ret = ql_query_registration_state("VOICE", &(pt_info->voice_reg.state), &imsRegState, &(pt_info->voice_reg.lac), &(pt_info->voice_reg.cid), &netType, &(pt_info->voice_reg.rejectCause), &netRejected);
- if(ret != 0)
- err = QL_NW_GENERIC_FAILURE;
- else
- err = QL_NW_SUCCESS;
- ret = ql_query_registration_state("DATA", &(pt_info->data_reg.state), &imsRegState, &(pt_info->data_reg.lac), &(pt_info->data_reg.cid), &netType, &(pt_info->data_reg.rejectCause), &netRejected);
- if(ret != 0)
- err = QL_NW_GENERIC_FAILURE;
- else
- err = QL_NW_SUCCESS;
-
- if(err == QL_NW_SUCCESS)
- {
- if(netType < 0 || netType > 8)
- pt_info->data_reg.rat = QL_NW_ACCESS_TECH_NONE;
- else
- pt_info->data_reg.rat = netType;
- }
- return err;
-#endif
-}
-
-QL_NW_ERROR_CODE ql_nw_set_selection(QL_NW_SELECTION_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- mbtk_net_info_t net;
- net.net_type = 0xFF;
- char mccmnc[10];
- if(pt_info->nw_selection_mode == 0)
- {
- net.net_sel_mode = 0;
- net.plmn = 0;
- }
- else if(pt_info->nw_selection_mode == 1 && !str_empty(pt_info->mnc) && !str_empty(pt_info->mcc))
- {
- net.net_sel_mode = 1;
- memset(mccmnc, 0, 10);
- //memcpy(mccmnc, pt_info->mcc, 3);
- //memcpy(mccmnc + 3, pt_info->mnc, 3);
- sprintf(mccmnc,"%s%s",pt_info->mcc,pt_info->mnc);
- net.plmn = (uint32)atoi(mccmnc);
- if(pt_info->act < QL_NW_ACCESS_TECH_GSM || pt_info->act > QL_NW_ACCESS_TECH_UTRAN_HSPAP)
- net.net_type = 0xff;
- else
- net.net_type = pt_info->act;
- }
- else
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- //printf("mccmnc = %s\n",mccmnc);
- //printf("net.plmn = %d\n",net.plmn);
- int ret = mbtk_net_sel_mode_set(ql_info_handle, &net);
- if(ret == 0)
- {
- return QL_NW_SUCCESS;
- }
- else
- {
- printf("mbtk_net_sel_mode_set error: %d\n",ret );
- return QL_NW_GENERIC_FAILURE;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_selection(QL_NW_SELECTION_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(ql_info_handle, &net) && net.plmn > 0)
- {
- memset(pt_info, 0x0, sizeof(QL_NW_SELECTION_INFO_T));
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(operator_mcc_mnc[i].mcc_mnc == net.plmn)
- break;
- i++;
- }
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- strcpy(OperatorFN, operator_mcc_mnc[i].operator_l);
- strcpy(OperatorSH, operator_mcc_mnc[i].operator_s);
- sprintf(MccMnc, "%d", operator_mcc_mnc[i].mcc_mnc);
-
- sprintf(pt_info->mcc,"%d",operator_mcc_mnc[i].mcc_mnc/100);
- sprintf(pt_info->mnc,"%d",operator_mcc_mnc[i].mcc_mnc%100);
-
- }
- pt_info->nw_selection_mode = net.net_sel_mode;
-
- pt_info->act = net.net_type;
- return QL_NW_SUCCESS;
- }
-
- return QL_NW_GENERIC_FAILURE;
-
-}
-
-QL_NW_ERROR_CODE ql_nw_get_signal_strength(QL_NW_SIGNAL_STRENGTH_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- int ret;
- mbtk_signal_info_t signal;
- ret = mbtk_net_signal_get(ql_info_handle, &signal);
- if(ret != 0) {
- LOGE("mbtk_net_signal_get fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- else
- {
- int rssi = 0;
- if(SIGNAL_STRENGTH_INVALID_1 == signal.rssi)
- {
- rssi = SIGNAL_STRENGTH_INVALID_1;
- }
- else
- {
- rssi = 2 * signal.rssi - 113;
- }
- if(signal.type == MBTK_RADIO_TECH_GSM) //GSM
- {
- pt_info->GW_SignalStrength.bitErrorRate = signal.ber;
- pt_info->GW_SignalStrength.ecio = signal.ecno;
- pt_info->GW_SignalStrength.rscp = signal.rscp;
- pt_info->GW_SignalStrength.rssi = rssi;
-
- pt_info->LTE_SignalStrength.rsrp = SIGNAL_STRENGTH_INVALID_1;
- pt_info->LTE_SignalStrength.rsrq = SIGNAL_STRENGTH_INVALID_1;
- pt_info->LTE_SignalStrength.rssnr = SIGNAL_STRENGTH_INVALID_2;
- pt_info->LTE_SignalStrength.rssi = SIGNAL_STRENGTH_INVALID_1;
- }
- else if(signal.type == MBTK_RADIO_TECH_E_UTRAN) //LTE
- {
- pt_info->LTE_SignalStrength.cqi = SIGNAL_STRENGTH_INVALID_1;
- pt_info->LTE_SignalStrength.rsrp = signal.rsrp;
- pt_info->LTE_SignalStrength.rsrq = signal.rsrq;
- pt_info->LTE_SignalStrength.rssnr = signal.ecno;
- pt_info->LTE_SignalStrength.rssi = rssi;
-
- pt_info->GW_SignalStrength.bitErrorRate = SIGNAL_STRENGTH_INVALID_1;
- pt_info->GW_SignalStrength.ecio = SIGNAL_STRENGTH_INVALID_2;
- pt_info->GW_SignalStrength.rscp = SIGNAL_STRENGTH_INVALID_2;
- pt_info->GW_SignalStrength.rssi = SIGNAL_STRENGTH_INVALID_1;
- }
- else
- {
- return QL_NW_GENERIC_FAILURE;
- }
- LOGI("ql_GW_SignalStrength: %d , %d, %d, %d", pt_info->GW_SignalStrength.rssi,
- pt_info->GW_SignalStrength.bitErrorRate, pt_info->GW_SignalStrength.rscp, pt_info->GW_SignalStrength.ecio);
- LOGI("ql_LTE_SignalStrength: %d , %d, %d, %d", pt_info->LTE_SignalStrength.rssi,
- pt_info->LTE_SignalStrength.rsrp, pt_info->LTE_SignalStrength.rsrq, pt_info->LTE_SignalStrength.rssnr, pt_info->LTE_SignalStrength.cqi);
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_cell_info(QL_NW_CELL_INFO_T *pt_info)
-{
- list_node_t* cell_list = NULL;
- mbtk_cell_type_enum type;
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- memset(pt_info, 0, sizeof(QL_NW_CELL_INFO_T));
- int err = mbtk_cell_get(ql_info_handle, &type, &cell_list);
- if(err || cell_list == NULL) {
- LOGE("mbtk_cell_get fail.");
- return QL_NW_GENERIC_FAILURE;
- } else {
- list_first(cell_list);
- mbtk_cell_info_t* cell = (mbtk_cell_info_t*) list_next(cell_list);
- if(cell) { // Current server cell.
- switch(type)
- {
- case MBTK_CELL_TYPE_GSM:
- {
- LOGD("GSM : lac=%d, ci=%d, arfcn=%d, bsic=%d", cell->value1, cell->value2, cell->value3, cell->value4);
- pt_info->gsm_info[0].lac = cell->value1;
- pt_info->gsm_info[0].cid = cell->value2;
- pt_info->gsm_info[0].arfcn = cell->value3;
- pt_info->gsm_info[0].bsic = cell->value4;
- pt_info->gsm_info[0].mcc = cell->value5;
- pt_info->gsm_info[0].mnc = cell->value6;
- pt_info->gsm_info[0].flag = 0;
- pt_info->gsm_info_num++;
- pt_info->gsm_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_UMTS:
- {
- LOGD("UMTS : lac=%d, ci=%d, arfcn=%d", cell->value1, cell->value2, cell->value3);
- pt_info->umts_info[0].lac = cell->value1;
- pt_info->umts_info[0].cid = cell->value2;
- pt_info->umts_info[0].uarfcn = cell->value3;
- pt_info->umts_info[0].mcc = cell->value4;
- pt_info->umts_info[0].mnc = cell->value5;
- pt_info->umts_info[0].psc = cell->value6;
- pt_info->umts_info[0].flag = 0;
- pt_info->umts_info_num++;
- pt_info->umts_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_LTE:
- {
- LOGD("LTE : tac=%d, PCI=%d, dlEuarfcn=%d, ulEuarfcn=%d, band=%d", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- pt_info->lte_info[0].tac = cell->value1;
- pt_info->lte_info[0].pci = cell->value2;
- pt_info->lte_info[0].earfcn = cell->value3;
- pt_info->lte_info[0].cid = cell->value8;
- pt_info->lte_info[0].mcc = cell->value6;
- pt_info->lte_info[0].mnc = cell->value7;
- pt_info->lte_info[0].flag = 0;
- pt_info->lte_info_num++;
- pt_info->lte_info_valid = 1;
- break;
- }
- default:
- break;
- }
- }
- while ((cell = (mbtk_cell_info_t*) list_next(cell_list)))
- {
- switch(type)
- {
- case MBTK_CELL_TYPE_GSM:
- {
- LOGD("CELL : %d, %d, %d, %d, %d", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- pt_info->gsm_info[pt_info->gsm_info_num].lac = cell->value1;
- pt_info->gsm_info[pt_info->gsm_info_num].cid = cell->value2;
- pt_info->gsm_info[pt_info->gsm_info_num].arfcn = cell->value3;
- pt_info->gsm_info[pt_info->gsm_info_num].bsic = cell->value4;
- pt_info->gsm_info[pt_info->gsm_info_num].flag = 1;
- pt_info->gsm_info_num++;
- pt_info->gsm_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_UMTS:
- {
- LOGD("CELL : lac=%d, ci=%d, arfcn=%d", cell->value1, cell->value2, cell->value3);
- pt_info->umts_info[pt_info->umts_info_num].lac = cell->value1;
- pt_info->umts_info[pt_info->umts_info_num].cid = cell->value2;
- pt_info->umts_info[pt_info->umts_info_num].uarfcn = cell->value3;
- pt_info->umts_info[pt_info->umts_info_num].flag = 1;
- pt_info->umts_info_num++;
- pt_info->umts_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_LTE:
- {
- LOGD("CELL : phyCellId=%d, euArfcn=%d, rsrp=%d, rsrq=%d", cell->value1, cell->value2, cell->value3, cell->value4);
- pt_info->lte_info[pt_info->lte_info_num].cid = cell->value1;
- pt_info->lte_info[pt_info->lte_info_num].earfcn = cell->value2;
- pt_info->lte_info[pt_info->lte_info_num].tac = cell->value3;
- pt_info->lte_info[pt_info->lte_info_num].pci = cell->value4;
- pt_info->lte_info[pt_info->lte_info_num].flag = 1;
- pt_info->lte_info_num++;
- pt_info->lte_info_valid = 1;
- }
- break;
- default:
- break;
- }
- }
- list_free(cell_list);
- }
-
- LOGD("get_cell_success: %d, %d, %d.",pt_info->gsm_info_valid, pt_info->umts_info_valid, pt_info->lte_info_valid);
- return QL_NW_SUCCESS;
-}
-
-QL_NW_ERROR_CODE ql_nw_add_event_handler(QL_NW_EventHandlerFunc_t handlerPtr,void* contextPtr)
-{
- if(ql_info_handle == NULL || handlerPtr == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- mbtk_net_state_change_cb_reg(ql_info_handle, ql_nw_state_change_cb);
- ql_func_cb_handle.handlerPtr = handlerPtr;
- ql_func_cb_handle.contextPtr = contextPtr;
- return QL_NW_SUCCESS;
-}
-
-QL_NW_ERROR_CODE ql_nw_get_volte_state(VOLTE_STATE *state)
-{
- int ret;
- if(ql_info_handle == NULL || state == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- ret = mbtk_volte_state_get(ql_info_handle, &(state->reg_state));
- if(ret != 0)
- return QL_NW_GENERIC_FAILURE;
- else
- return QL_NW_SUCCESS;
-}
-
-QL_NW_ERROR_CODE ql_nw_csq_get_signal_strength(QL_NW_CSQ_SIGNAL_STRENGTH_INFO_T *pt_info)
-{
- int ret;
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- mbtk_signal_info_t signal;
- ret = mbtk_net_signal_get(ql_info_handle, &signal);
- if(ret != 0)
- return QL_NW_GENERIC_FAILURE;
- else
- {
- pt_info->rssi = (signal.rssi * 2 - 113);
- pt_info->bitErrorRate = signal.ber;
- LOGD("pt_info->rssi = %d pt_info->bitErrorRate = %d",pt_info->rssi,pt_info->bitErrorRate);
- return QL_NW_SUCCESS;
- }
-}
-
-//*********************************************************************************
-
diff --git a/mbtk/libql_lib/src/ql_quec_sim.c b/mbtk/libql_lib/src/ql_quec_sim.c
deleted file mode 100755
index edcef9a..0000000
--- a/mbtk/libql_lib/src/ql_quec_sim.c
+++ /dev/null
@@ -1,406 +0,0 @@
-#include "ql/ql_sim.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-extern mbtk_info_handle_t* ql_info_handle;
-extern int ql_info_handle_num;
-static bool inited = FALSE;
-
-QL_SIM_CardStatusIndMsgHandlerFunc_t handlerPtr_cb = NULL;
-
-typedef struct
-{
- uint8 *operator_l;
- uint8 *operator_s;
- uint32 mcc_mnc;
-} operator_mcc_mnc_t;
-
-static operator_mcc_mnc_t operator_mcc_mnc[] =
-{
- {"China Mobile","CMCC",46000},
- {"China Unicom","CU",46001},
- {"China Mobile","CMCC",46002},
- {"China Telecom","CT",46003},
- {"China Mobile","CMCC",46004},
- {"China Telecom","CT",46005},
- {"China Unicom","CU",46006},
- {"China Mobile","CMCC",46007},
- {"China Mobile","CMCC",46008},
- {"China Unicom","CU",46009},
- {"China Telecom","CT",46011}
-};
-
-void ql_sim_state_change_cb(const void* data, int data_len)
-{
- if(handlerPtr_cb != NULL)
- {
- //QL_SIM_NFY_MSG_ID msg_id, void *pv_data, int pv_data_len, void *contextPtr
- //handlerPtr_cb(net_data[2]);
- }
- mbtk_sim_card_info *info = NULL;
- info = (mbtk_sim_card_info*)data;
-
- QL_SIM_CARD_STATUS_INFO sim_card_info = {0};
- sim_card_info.card_state = info->sim;
- sim_card_info.card_type = info->sim_card_type;
- /*
- sim_client_handle_type h_sim,
- E_QL_SIM_NFY_MSG_ID_T e_msg_id,
- void *pv_data,
- void *contextPtr
- */
- handlerPtr_cb(QL_SIM_CARD_STATUS_UPDATE_EVENT, &sim_card_info, sizeof(QL_SIM_CARD_STATUS_INFO), NULL);
-}
-
-QL_SIM_ERROR_CODE ql_sim_init()
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- return QL_SIM_SUCCESS;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return QL_SIM_GENERIC_FAILURE;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- }
- return QL_SIM_SUCCESS;
- }
-}
-
-
-QL_SIM_ERROR_CODE ql_sim_release()
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return QL_SIM_GENERIC_FAILURE;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return QL_SIM_SUCCESS;
- }
- } else {
- ql_info_handle_num--;
- return QL_SIM_SUCCESS;
- }
- }
- else
- {
- LOGE("Sim handle not inited.");
- return QL_SIM_GENERIC_FAILURE;
- }
-}
-
-
-QL_SIM_ERROR_CODE ql_sim_get_imsi(uint8_t *imsi, size_t imsiLen)
-{
- if(ql_info_handle == NULL || imsi == NULL || imsiLen <= 0)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- memset(imsi,0,imsiLen);
- int err = mbtk_imsi_get(ql_info_handle, imsi);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_iccid(uint8_t *iccid, size_t iccidLen)
-{
- if(ql_info_handle == NULL || iccid == NULL || iccidLen <= 0)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- memset(iccid, 0, iccidLen);
- int err = mbtk_iccid_get(ql_info_handle, iccid);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_phonenumber(uint8_t *phone_num, size_t phoneLen)
-{
- if(ql_info_handle == NULL || phone_num == NULL || phoneLen <= 0)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- memset(phone_num, 0, phoneLen);
- int err = mbtk_phone_number_get(ql_info_handle, phone_num);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_operator_plmn_list(QL_SIM_PREFERRED_OPERATOR_LIST *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
-
- mbtk_plmn_info plmn;
- int err = mbtk_get_plmn_list(ql_info_handle, &plmn);
- if(err) {
- LOGE("mbtk_get_plmn_list file : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- memset(pt_info, 0x0, sizeof(QL_SIM_PREFERRED_OPERATOR_LIST));
- pt_info->preferred_operator_list_num = plmn.count;
- int list_count;
- for(list_count = 0; list_count < plmn.count; list_count++)
- {
- if(plmn.mbtk_plmn_name[list_count].format == 2) //number
- {
- uint32 plmn_name = (uint32)atoi(plmn.mbtk_plmn_name[list_count].plmn_name);
- sprintf(pt_info->preferred_operator_list[list_count].mcc,"%d",plmn_name/100);
- sprintf(pt_info->preferred_operator_list[list_count].mnc,"%02d",plmn_name%100);
- }
- else if(plmn.mbtk_plmn_name[list_count].format == 0)
- {
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(!strcmp(operator_mcc_mnc[i].operator_l,plmn.mbtk_plmn_name))
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- memcpy(pt_info->preferred_operator_list[list_count].mcc,0,3);
- memcpy(pt_info->preferred_operator_list[list_count].mnc,0,3);
- }
- else
- {
- sprintf(pt_info->preferred_operator_list[list_count].mcc, "%d", (operator_mcc_mnc[i].mcc_mnc)/100);
- sprintf(pt_info->preferred_operator_list[list_count].mnc, "%d", (operator_mcc_mnc[i].mcc_mnc)%100);
- }
- }
- else
- {
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(!strcmp(operator_mcc_mnc[i].operator_s,plmn.mbtk_plmn_name))
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- memcpy(pt_info->preferred_operator_list[list_count].mcc,0,3);
- memcpy(pt_info->preferred_operator_list[list_count].mnc,0,3);
- }
- else
- {
- sprintf(pt_info->preferred_operator_list[list_count].mcc, "%d", (operator_mcc_mnc[i].mcc_mnc)/100);
- sprintf(pt_info->preferred_operator_list[list_count].mnc, "%d", (operator_mcc_mnc[i].mcc_mnc)%100);
- }
- }
- }
- int i;
- for (i=0;i<pt_info->preferred_operator_list_num;i++)
- {
- LOGD("pt_info->preferred_operator_list[%d].mcc=%s",i, pt_info->preferred_operator_list[i].mcc);
- LOGD("pt_info->preferred_operator_list[%d].mnc=%s",i, pt_info->preferred_operator_list[i].mnc);
- }
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_verify_pin(QL_SIM_VERIFY_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
-
- int err = mbtk_verify_pin(ql_info_handle, pt_info->pin_value);
- if(err) {
- LOGE("mbtk_verify_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_change_pin(QL_SIM_CHANGE_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_change_pin_info pin_info = {0};
- memcpy(pin_info.old_pin_value, pt_info->old_pin_value, strlen(pt_info->old_pin_value));
- memcpy(pin_info.new_pin_value, pt_info->new_pin_value, strlen(pt_info->new_pin_value));
- int err = mbtk_change_pin(ql_info_handle, &pin_info);
- if(err) {
- LOGE("mbtk_change_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_unblock_pin(QL_SIM_UNBLOCK_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_unlock_pin_info puk_pin_info = {0};
- memcpy(puk_pin_info.pin_value, pt_info->new_pin_value, strlen(pt_info->new_pin_value));
- memcpy(puk_pin_info.puk_value, pt_info->puk_value, strlen(pt_info->puk_value));
- int err = mbtk_unlock_pin(ql_info_handle, &puk_pin_info);
- if(err) {
- LOGE("mbtk_unlock_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_enable_pin(QL_SIM_VERIFY_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, strlen(pt_info->pin_value));
- pin_info.enable = 1;
- int err = mbtk_enable_pin(ql_info_handle, &pin_info);
- if(err) {
- LOGE("mbtk_enable_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_disable_pin(QL_SIM_VERIFY_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, strlen(pt_info->pin_value));
- pin_info.enable = 0;
- int err = mbtk_enable_pin(ql_info_handle, &pin_info);
- if(err) {
- LOGE("ql_sim_disable_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_card_status(QL_SIM_CARD_STATUS_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("sim not init.");
- return QL_SIM_GENERIC_FAILURE;
- }
-
- mbtk_sim_state_enum sim;
- mbtk_sim_card_type_enum sim_card_type;
- mbtk_pin_puk_last_times ql_last_times = {0};
- int err = mbtk_sim_state_get(ql_info_handle, &sim);
- LOGD("mbtk_sim_state_get - %d");
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- memset(pt_info, 0x0, sizeof(QL_SIM_CARD_STATUS_INFO));
- pt_info->card_state = sim;
- switch (sim)
- {
- case 0: //ABSENT
- pt_info->card_state = QL_SIM_STAT_NOT_INSERTED;
- break;
- case 1: //NOT READY
- pt_info->card_state = QL_SIM_STAT_UNKNOWN;
- break;
- case 2: //READY
- pt_info->card_state = QL_SIM_STAT_READY;
- break;
- case 3: //SIM PIN
- pt_info->card_state = QL_SIM_STAT_SIM_PIN;
- break;
- case 4: //SIM PUK
- pt_info->card_state = QL_SIM_STAT_SIM_PUK;
- break;
- case 5: //NETWORK
- pt_info->card_state = QL_SIM_STAT_UNKNOWN;
- break;
- default:
- pt_info->card_state = QL_SIM_STAT_UNKNOWN;
- break;
- }
- }
- err = mbtk_sim_card_type_get(ql_info_handle, &sim_card_type);
- LOGD("mbtk_sim_card_type_get - %d", err);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- if(sim_card_type == 0 || sim_card_type == 2)
- pt_info->card_type = QL_SIM_CARD_TYPE_ICC;
- else if(sim_card_type == 1 || sim_card_type == 3)
- pt_info->card_type = QL_SIM_CARD_TYPE_UICC;
- else
- pt_info->card_type = QL_SIM_CARD_TYPE_UNKNOWN;
- }
- err = mbtk_pin_last_num_get(ql_info_handle, &ql_last_times);
- LOGD("mbtk_pin_last_num_get - %d", err);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- pt_info->card_pin_info.pin1_num_retries = ql_last_times.p1_retry;
- pt_info->card_pin_info.pin2_num_retries = ql_last_times.p2_retry;
- pt_info->card_pin_info.puk1_num_retries = ql_last_times.puk1_retry;
- pt_info->card_pin_info.puk2_num_retries = ql_last_times.puk2_retry;
- }
- return QL_SIM_SUCCESS;
-}
-
-QL_SIM_ERROR_CODE ql_sim_add_event_handler(QL_SIM_CardStatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr)
-{
- if(ql_info_handle == NULL || handlerPtr == NULL)
- {
- return QL_SIM_GENERIC_FAILURE;
- }
- handlerPtr_cb = handlerPtr;
- mbtk_sim_state_change_cb_reg(ql_info_handle, ql_sim_state_change_cb);
- return QL_SIM_SUCCESS;
-}
-
diff --git a/mbtk/libql_lib/src/ql_sleep_wakelock.c b/mbtk/libql_lib/src/ql_sleep_wakelock.c
deleted file mode 100755
index 03f356c..0000000
--- a/mbtk/libql_lib/src/ql_sleep_wakelock.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-*
-* Data : 2023/03/28 16:00:28
-* Author : Hanzhiyu
-*
-*/
-#include "ql/ql_sleep_wakelock.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stddef.h>
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-
-typedef struct
-{
- int fd;
- char name[128];
-} lock_name;
-
-lock_name ql_lock_name[512]={0};
-static bool autosleep_enable = FALSE;
-
-extern int Ql_Autosleep_Enable(char enable)
-{
- if(enable == 1)
- {
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo mem > /sys/power/autosleep");
- autosleep_enable = TRUE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
- else
- {
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo off > /sys/power/autosleep");
- autosleep_enable = FALSE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
-}
-
-extern int Ql_SLP_WakeLock_Create(const char *name, size_t len)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- if(name != NULL && len < 127)
- {
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == 0)
- break;
- }
- memcpy(ql_lock_name[i].name, name, strlen(name)+1);
- ql_lock_name[i].fd = i;
- return ql_lock_name[i].fd;
- }
- else
- return -1;
-}
-
-extern int Ql_SLP_WakeLock_Lock(int fd)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == fd)
- break;
- }
- if(i == 512)
- return -1;
-
- if(!access("/sys/power/wake_lock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_lock", ql_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- printf("/sys/power/wake_lock can not write.");
- return -1;
- }
-}
-
-extern int Ql_SLP_WakeLock_Unlock(int fd)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == fd)
- break;
- }
- if(i == 512)
- return -1;
-
- if(!access("/sys/power/wake_unlock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_unlock", ql_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- printf("/sys/power/wake_unlock can not write.");
- return -1;
- }
-
-}
-
-extern int Ql_SLP_WakeLock_Destroy(int fd)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == fd)
- break;
- }
- if(i == 512)
- return -1;
- else
- {
- ql_lock_name[i].fd = 0;
- memset(ql_lock_name[i].name, 0, 128);
- return 0;
- }
-}
-
diff --git a/mbtk/libql_lib/src/ql_sms.c b/mbtk/libql_lib/src/ql_sms.c
deleted file mode 100755
index cbad623..0000000
--- a/mbtk/libql_lib/src/ql_sms.c
+++ /dev/null
@@ -1,493 +0,0 @@
-//#include "lynq/lynq_sms_api.h"
-#include "mbtk_info_api.h"
-#include "mbtk_pdu_sms.h"
-#include "ql/ql_sms.h"
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-#define TELEPHONE_NUM_MAX 16
-#define MSM_NUMBER_MAX 1024+1
-#define RES_NUM_MIN 128
-
-#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))
-
-static mbtk_info_handle_t* info_handle = NULL;
-static char center_address[15] = {0};
-
-
-// 编码后短信
-
-#if 0
-struct PDUS {
- unsigned int count;
- char **PDU;
-};
-#endif
-
-void lynq_sms_state_change_cb(const void* data, int data_len)
-{
- LOGV("sms_state_change_cb()----------start\n");
- uint8 *ptr = (uint8*)data;
- printf("3sms_state_change_cb() : %s\n", ptr);
-
- struct SMS_Struct s = PDUDecoding(ptr);
- printf("服务中心地址: %s\n", s.SCA);
- printf("发送方地址: %s\n", s.OA);
- printf("服务中心时间戳: %s\n", s.SCTS);
- printf("消息内容: %s\n", s.UD);
- printf("数据编码方案: %s\n", DSC_to_msg(s.DCS));
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_init()
-{
- if(info_handle == NULL)
- {
- info_handle = mbtk_info_handle_get();
- if(info_handle)
- {
- printf("creat info_handle is success\n");
- }
- else{
- printf("creat info_handle is fail\n");
- return QL_SMS_GENERIC_FAILURE;
- }
- }
-
- return QL_SMS_SUCCESS;
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_release()
-{
- int ret = QL_SMS_SUCCESS;
- if(info_handle)
- {
- ret = mbtk_info_handle_free(&info_handle);
- }
- else
- {
- ret = QL_SMS_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-
-/*
-*AT+CMGS="10086", CMGS TEST // Send a SMS
-> CMGS TEST
-+CMGS: 17
-OK
-*/
-/*
-int charset: send sms mode
- 0:pdu, 1:text
-
-*/
-//当state 设置为 0(pdu)模式时,telephony_num应该设置为pud 数据大小的长度;msg:为pud 数据
-
-QL_SMS_ERROR_CODE ql_sms_send_pdu_msg(uint8_t *phone_num,uint8_t *data,int sms_type)
-{
- if(info_handle == NULL || phone_num == NULL || data == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- char resp[RES_NUM_MIN] = {0};
- char pdu_data[512] = {0};
- char phone_lenth[10] = {0};
- char *p = pdu_data;
- int mode = 0;
- int err = 0;
- int i = 0;
-
- if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
- {
- printf("strlen(telephony_num):%d\n", strlen(phone_num));
- printf("strlen(msg):%d\n", strlen(data));
- return -1;
- }
-
- memset(center_address, 0, sizeof(center_address));
- memcpy(center_address, "+8613800280500", strlen("+8613800280500"));
-
- printf("phone_num:%s\n", phone_num);
- printf("center_address:%s\n", center_address);
- printf("data:%s\n", data);
-
-
- mode = 0; // PDU
-
- char* pdu = NULL;
- char* smsc = SCAEncoding(center_address);
- struct PDUS *pdus = PDUEncoding(center_address,phone_num, data, NULL);
-
- for (i = 0; i < pdus->count; i++) {
- printf("第 %d 条:\n", i + 1);
- printf("%s\n", pdus->PDU[i]);
- pdu = pdus->PDU[i];
- }
-
- sprintf(p, "%s",smsc);
- printf("pdu_data:%s\n", pdu_data);
- sprintf(p+strlen(p), "%s", pdu);
- printf("pdu_data:%s\n",pdu_data);
-
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
- sprintf(cmgs,"%d,%s",strlen(pdu_data), pdu_data);
- printf("cmgs:%s\n", cmgs);
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgs_set(info_handle, cmgs, resp);
- if(err) {
- printf("Error : %d\n", err);
- return -1;
- } else {
- printf("cmgs set success . resp:%s\n", resp);
- }
-
- return 0;
-
-}
-QL_SMS_ERROR_CODE ql_sms_send_text_msg(uint8_t *phone_num,uint8_t *data,int sms_type)
-{
- if(info_handle == NULL || phone_num == NULL || data == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- char resp[RES_NUM_MIN] = {0};
- int mode = 0;
- int err = 0;
- if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
- {
- printf("strlen(telephony_num):%d\n", strlen(phone_num));
- printf("strlen(msg):%d\n", strlen(data));
- return -1;
- }
-
- mode = 1; // text
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
- sprintf(cmgs,"%s,%s",phone_num, data);
- printf("cmgs:%s\n", cmgs);
-
-/* char *ptr = strstr(cmd, "cmgs,"); //CMGS="10086",hf
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgs, 0, sizeof(cmgs));
- memcpy(cmgs, ptr, strlen(ptr));
- printf("1cmgs:%s, strlen(cmgs):%d\n", cmgs, strlen(cmgs));
- }
-*/
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgs_set(info_handle, cmgs, resp);
- if(err) {
- printf("Error : %d\n", err);
- return -1;
- } else {
- printf("cmgs set success . resp:%s\n", resp);
- }
-
- return 0;
-
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_add_event_handler(QL_SMS_StatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr)
-{
- if(info_handle == NULL)
- {
- return QL_SMS_GENERIC_FAILURE;
- }
-
- int ret = mbtk_sms_cnmi_set(info_handle);
- if(ret)
- {
- printf("set cnmi fail\n");
- return QL_SMS_GENERIC_FAILURE;
- }
-
- mbtk_sms_state_change_cb_reg(info_handle, lynq_sms_state_change_cb);
- return QL_SMS_SUCCESS;
-}
-
-
-/*
- AT+CMGD=<index>[,<delflag>]
-
- Deletes message based on index
- node:
- index is -1, delete all message
- delflag set 4
-*/
-
-QL_SMS_ERROR_CODE ql_sms_delete_msg(size_t index)
-{
- char cmgd[128] = {0};
- int err = 0;
-
- if(index == -1) //delete all
- {
- memcpy(cmgd, ",4", strlen(",4"));
- }
- else
- {
- sprintf(cmgd,"%d",index);
- }
-
- printf("cmgd:%s\n", cmgd);
-
- err = mbtk_sms_cmgd_set(info_handle, cmgd);
- if(err) {
- printf("lynq_delete_sms Error : %d\n", err);
- return -1;
- } else {
- printf("lynq_delete_sms set success\n");
- }
-
- return 0;
-
-}
-
-
-QL_SMS_ERROR_CODE ql_search_sms_text_message(int index, recvmessage* payload)
-{
- if(info_handle == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- int mode = 1; // text
- int err = 0;
- char *data = "ALL";
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
-
- char cmgl[128] = {0};
- char resp[1024+1] ={0};
- sprintf(cmgl,"%d,%s", index, data);
-/*
- char *ptr = strstr(cmd, "cmgl,"); // AT+CMGL[=<stat>]
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgl, 0, sizeof(cmgl));
- memcpy(cmgl, ptr, strlen(ptr));
- printf("0cmgl:%s\n", cmgl);
- }
-*/
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);
- if(err) {
- printf("lynq_list_sms Error : %d\n", err);
- return -1;
- } else {
- printf("cmgl set success, reg:%s\n",resp);
- }
-
- return 0;
-
-}
-QL_SMS_ERROR_CODE ql_search_sms_pdu_message(int index, recvmessage* payload)
-{
- if(info_handle == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- int mode = 0; // pud
- int err = 0;
- char *data = "ALL";
-
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
-
- char cmgl[128] = {0};
- char resp[1024+1] ={0};
- sprintf(cmgl,"%d,%s", index, data);
-/*
- char *ptr = strstr(cmd, "cmgl,"); // AT+CMGL[=<stat>]
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgl, 0, sizeof(cmgl));
- memcpy(cmgl, ptr, strlen(ptr));
- printf("0cmgl:%s\n", cmgl);
- }
-*/
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);
- if(err) {
- printf("lynq_list_sms Error : %d\n", err);
- return -1;
- } else {
- printf("cmgl set success, reg:%s\n",resp);
- }
-
- return 0;
-
-}
-
-
-/*
-function: lynq_list_sms
-stat:0:pud, 1:text
-index: 0, list index;
- > 0,
-
-*/
-QL_SMS_ERROR_CODE ql_sms_list_sms(int stat, int index, char *data)
-{
- if(info_handle == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- int mode = 0;
- int err = 0;
-
- if(stat) // text
- {
- mode = 1;
- }
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
-
- char cmgl[128] = {0};
- char resp[1024+1] ={0};
- sprintf(cmgl,"%d,%s", index, data);
-/*
- char *ptr = strstr(cmd, "cmgl,"); // AT+CMGL[=<stat>]
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgl, 0, sizeof(cmgl));
- memcpy(cmgl, ptr, strlen(ptr));
- printf("0cmgl:%s\n", cmgl);
- }
-*/
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);
- if(err) {
- printf("lynq_list_sms Error : %d\n", err);
- return -1;
- } else {
- printf("cmgl set success, reg:%s\n",resp);
- }
-
- return 0;
-}
-
-
-
-int ql_sms_query_sms_storage_status(void)
-{
- char mem[128] = {0};
- int err = mbtk_sms_cpms_get(info_handle, mem);
- if(err) {
- printf("cpms query is fail Error : %d\n", err);
- return -1;
- } else {
- printf("cpms query is success : %s\n", mem);
- }
-
- return 0;
-}
-
-QL_SMS_ERROR_CODE ql_sms_get_sms_center_address(uint8_t *sms_center_addree)
-{
- char csca[128] = {0};
- if(info_handle == NULL || sms_center_addree == NULL)
- {
- return QL_SMS_GENERIC_FAILURE;
- }
-
- int err = mbtk_sms_csca_get(info_handle, sms_center_addree);
- if(err) {
- printf("lynq_get_smsc_address Error : %d\n", err);
- return QL_GET_RESPONSE_ERROR;
- } else {
- printf("lynq_get_smsc_address success\n");
- }
-
- return 0;
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_set_sms_center_address(unsigned char *destNum)
-{
- printf("1destNum:%s\n", destNum);
- memset(center_address, 0, sizeof(center_address));
- memcpy(center_address, destNum, strlen(destNum));
- if(info_handle == NULL || destNum == NULL)
- {
- return -1;
- }
-
- int err = mbtk_sms_csca_set(info_handle, destNum);
- if(err) {
- printf("Error : %d\n", err);
- return err;
- } else {
- // memset(center_address, 0, sizeof(center_address));
- // memcpy(center_address, destNum, strlen(destNum));
- printf("destNum:%s\n", destNum);
- printf("lynq_set_smsc_address success\n");
- }
- return 0;
-
-}
-
-
-
-
-
diff --git a/mbtk/libql_lib/src/ql_spi.c b/mbtk/libql_lib/src/ql_spi.c
deleted file mode 100755
index 4fc5d9f..0000000
--- a/mbtk/libql_lib/src/ql_spi.c
+++ /dev/null
@@ -1,342 +0,0 @@
-#include <stdio.h>
-#include <malloc.h>
-#include <string.h>
-#include <linux/types.h>
-#include <linux/spi/spidev.h>
-
-#include <stdint.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <linux/types.h>
-#include <linux/spi/spidev.h>
-#include <errno.h>
-
-#include "ql/ql_spi.h"
-#include "mbtk_log.h"
-
-#if 0
-static const char *device = "/dev/spidev1.0\0";
-static uint8_t mode = 3; /* SPI通信使用全双工,设置CPOL=0,CPHA=0。 */
-static uint8_t bits = 8; /* 8bits读写,MSB first。*/
-static uint32_t speed = 100 * 1000;/* 设置0.5M传输速度 */
-static uint16_t delay = 500;
-
-int SPI_Transfer(const uint8_t *TxBuf, uint8_t *RxBuf, int len)
-{
- int ret;
- int fd = g_SPI_Fd;
-
-
- struct spi_ioc_transfer tr ;
- memset(&tr,0x00,sizeof(tr));
- tr.tx_buf = (unsigned long) TxBuf,
- tr.rx_buf = (unsigned long) RxBuf,
- tr.len =len,
- tr.delay_usecs = delay;
- tr.speed_hz=speed;
- tr.bits_per_word=bits;
- ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
- if (ret < 1)
- {
- printf("can't send spi message");
- }
- else
- {
- //printf("Send spi message OK %d\n",RxBuf[0]);
- }
- return 1;
-}
-
-/**
-* 功 能:关闭SPI模块
-*/
-int SPI_Close(void)
-{
- int fd = g_SPI_Fd;
-
-
- if (fd == 0) /* SPI是否已经打开*/
- return 0;
- close(fd);
- g_SPI_Fd = 0;
-
-
- return 0;
-}
-
-int SPI_Write(uint8_t *TxBuf, int len)
-{
- int ret;
- int fd = g_SPI_Fd;
-
- printf("fd : %d\n",fd);
- ret = write(fd, TxBuf, len);
- if (ret < 0)
- printf("SPI Write errorn");
-
- return ret;
-}
-
-int SPI_Open(void)
-{
- int fd;
- int ret = 0;
-
- printf("open spi dev:%s \r\n", device);
- fd = open(device, O_RDWR);
- if (fd < 0)
- {
- printf("can't open device \n");
- return -1;
- }
- else
- printf("SPI - Open Succeed. Start Init SPI...n\n");
-
- /*
- * spi mode
- */
- ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
- if (ret == -1)
- printf("can't set spi mode\n");
-
-
- ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
- if (ret == -1)
- printf("can't get spi mode\n");
-
-
- /*
- * bits per word
- */
- ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
- if (ret == -1)
- printf("can't set bits per word\n");
-
-
- ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
- if (ret == -1)
- printf("can't get bits per word\n");
-
-
- /*
- * max speed hz
- */
- ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
- if (ret == -1)
- printf("can't set max speed hz\n");
-
-
- ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
- if (ret == -1)
- printf("can't get max speed hz\n");
-
- g_SPI_Fd=fd;
- return ret;
-}
-#endif
-
-/**
- * Function: Ql_SPI_Init
- * Description: spi init
- * Parameters: dev_name---device name
- * mode---spi mode
- * bits---spi per word
- * speed---spi transfer clock
- * Return: spi fd
- **/
-int Ql_SPI_Init(const char *dev_name, SPI_MODE mode, unsigned char bits, SPI_SPEED speed)
-{
- int fd;
- int ret = 0;
-
- LOGD("open spi dev:%s.", dev_name);
- fd = open(dev_name, O_RDWR);
- if (fd < 0)
- {
- LOGE("can't open device, errno - %d", errno);
- return -1;
- }
- else
- LOGD("SPI - Open Succeed. Start Init SPI...");
-
- /*
- * spi mode
- */
- ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
- if (ret == -1) {
- LOGE("can't set spi mode");
- goto error;
- }
-
-#if 0
- ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
- if (ret == -1) {
- LOGE("can't get spi mode");
- goto error;
- }
-#endif
-
- /*
- * bits per word
- */
- ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
- if (ret == -1) {
- LOGE("can't set bits per word");
- goto error;
- }
-
-#if 0
- ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
- if (ret == -1) {
- LOGE("can't get bits per word");
- goto error;
- }
-#endif
-
- /*
- * max speed hz
- */
- ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
- if (ret == -1) {
- LOGE("can't set max speed hz");
- goto error;
- }
-
-#if 0
- ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
- if (ret == -1) {
- LOGE("can't get max speed hz");
- goto error;
- }
-#endif
-
- return fd;
-error:
- if(fd > 0)
- {
- close(fd);
- }
- return -1;
-}
-
-/**
- * Function: Ql_SPI_DeInit
- * Description: spi deinit
- * Parameters: fd---spi fd
- * Return:
- */
-int Ql_SPI_DeInit(int fd)
-{
- if (fd <= 0)
- return -1;
-
- close(fd);
- return 0;
-}
-
-/**
- * Function: Ql_SPI_Write_Read
- * Description: spi write read function
- * Parameters: fd---spi fd
- * w_buf---write buffer
- * r_buf---read buffer
- * len---spi transfer length
- * Return: 0---transfer success
- * other---failed
- **/
-int Ql_SPI_Write_Read(int fd, unsigned char *w_buf, unsigned char *r_buf, unsigned int len)
-{
- int ret;
- struct spi_ioc_transfer tr ;
- memset(&tr,0x00,sizeof(tr));
- tr.tx_buf = (unsigned long) w_buf,
- tr.rx_buf = (unsigned long) r_buf,
- tr.len =len,
- tr.delay_usecs = 500;
- //tr.speed_hz=speed;
- //tr.bits_per_word=bits;
- ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
- if (ret < 1)
- {
- LOGE("can't send spi message");
- return -1;
- }
- else
- {
- return 0;
- }
-}
-
-
-#if 0
-int main(int argc, char *argv[])
-{
-
- char send_data[64] = {0};
- char read_data[64] = {0};
- char crc = 0;
- int i = 0;
- int j = 0;
-
- system("echo PB6 > /sys/kernel/debug/sunxi_pinctrl/sunxi_pin");
- system("echo PB6 1 > /sys/kernel/debug/sunxi_pinctrl/function");
- system("echo PB6 0 > /sys/kernel/debug/sunxi_pinctrl/data");
-
- /* spi 初始化程序 */
- SPI_Open();
-
- send_data[0] = 0x55;
- send_data[1] = 0x00;
- send_data[2] = 0x84;
- send_data[3] = 0x00;
- send_data[4] = 0x08;
- send_data[5] = 0x00;
- send_data[6] = 0x00;
-
- crc = send_data[1];
- for (i = 2; i < 7; i++)
- {
- crc ^= send_data[i];
- }
- crc = ~crc;
-
- send_data[7] = crc;
-
- printf("send data:");
- for (i = 0; i < 8; i++)
- {
- printf("%#x, ", send_data[i]);
- }
- printf("\n");
-
- /* spi 发送数据 */
- SPI_Transfer(send_data,read_data,8);
-
- printf("read data:");
- for (j = 0; j < 20; j++)
- {
- printf("%#x, ", read_data[j]);
- }
-
- usleep(10000);
-
-
- memset(read_data, 0, sizeof(read_data));
- memset(send_data, 0, sizeof(send_data));
-
- /* spi 读取数据 */
- SPI_Transfer(send_data,read_data,16);
-
- printf("read data:");
- for (j = 0; j < 20; j++)
- {
- printf("%#x, ", read_data[j]);
- }
-
- return 0;
-}
-#endif
diff --git a/mbtk/libql_lib/src/ql_uart.c b/mbtk/libql_lib/src/ql_uart.c
deleted file mode 100755
index ca6f779..0000000
--- a/mbtk/libql_lib/src/ql_uart.c
+++ /dev/null
@@ -1,432 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <errno.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include "mbtk_log.h"
-#include "ql/ql_uart.h"
-
-int Ql_UART_Open(const char* port, Enum_BaudRate baudrate, Enum_FlowCtrl flowctrl)
-{
- int fd;
- if((fd = open(port, O_RDWR | O_NOCTTY)) < 0)
- {
- LOGE("open %s failed - %d", port, errno);
- return -1;
- }
-
- LOGD("Open %s success.", port);
-
- /* set newtio */
- struct termios newtio;
- memset(&newtio, 0, sizeof(newtio));
- if (tcflush(fd, TCIOFLUSH) < 0) {
- LOGE("Could not flush uart port");
- return -1;
- }
-
- newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
- newtio.c_cc[VMIN] = 0; /* blocking read until 5 chars received */
-
- if(flowctrl == FC_RTSCTS) {
- newtio.c_cflag |= CRTSCTS;
- } else if(flowctrl == FC_XONXOFF) {
- newtio.c_cflag |= (IXON | IXOFF);
- } else {
- // newtio.c_cflag |= CRTSCTS;
- }
- /* c_iflag 输入模式 */
- newtio.c_iflag &= ~(ICRNL | INLCR);
- newtio.c_iflag &= ~(IXON | IXOFF | IXANY);
-
- // /* c_lflag 本地模式 */
- newtio.c_cflag &= ~ INPCK;
- newtio.c_cflag |= (CLOCAL | CREAD);
-
- // /* c_lflag 本地模式 */
- newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
- /* c_oflag 输出模式 */
- newtio.c_oflag &= ~ OPOST;
- newtio.c_oflag &= ~(ONLCR | OCRNL);
-
- /* c_cflag 控制模式 */
- newtio.c_cflag &= ~ CSIZE;
- newtio.c_cflag |= CS8;
- newtio.c_cflag &= ~ CSTOPB;
- newtio.c_cflag &= ~ PARENB;
-
- switch(baudrate)
- {
- case B_300:
- cfsetospeed(&newtio, B300);
- cfsetispeed(&newtio, B300);
- break;
- case B_600:
- cfsetospeed(&newtio, B600);
- cfsetispeed(&newtio, B600);
- break;
- case B_1200:
- cfsetospeed(&newtio, B1200);
- cfsetispeed(&newtio, B1200);
- break;
- case B_2400:
- cfsetospeed(&newtio, B2400);
- cfsetispeed(&newtio, B2400);
- break;
- case B_4800:
- cfsetospeed(&newtio, B4800);
- cfsetispeed(&newtio, B4800);
- break;
- case B_9600:
- cfsetospeed(&newtio, B9600);
- cfsetispeed(&newtio, B9600);
- break;
- case B_19200:
- cfsetospeed(&newtio, B19200);
- cfsetispeed(&newtio, B19200);
- break;
- case B_38400:
- cfsetospeed(&newtio, B38400);
- cfsetispeed(&newtio, B38400);
- break;
- case B_57600:
- cfsetospeed(&newtio, B57600);
- cfsetispeed(&newtio, B57600);
- break;
- case B_115200:
- cfsetospeed(&newtio, B115200);
- cfsetispeed(&newtio, B115200);
- break;
- case B_230400:
- cfsetospeed(&newtio, B230400);
- cfsetispeed(&newtio, B230400);
- break;
- case B_460800:
- cfsetospeed(&newtio, B460800);
- cfsetispeed(&newtio, B460800);
- break;
- case B_921600:
- cfsetospeed(&newtio, B921600);
- cfsetispeed(&newtio, B921600);
- break;
- case B_3000000:
- cfsetospeed(&newtio, B3000000);
- cfsetispeed(&newtio, B3000000);
- break;
- case B_4000000:
- cfsetospeed(&newtio, B4000000);
- cfsetispeed(&newtio, B4000000);
- break;
- default:
- cfsetospeed(&newtio, B115200);
- cfsetispeed(&newtio, B115200);
- break;
- }
-
- if (tcsetattr(fd, TCSANOW, &newtio) < 0) {
- LOGE("Can't set port setting");
- return -1;
- }
- /* Blocking behavior */
- fcntl(fd, F_SETFL, 0);
-
- return fd;
-}
-
-int Ql_UART_Read(int fd, char* buf, unsigned int buf_len)
-{
- return read(fd, buf, buf_len);
-}
-
-
-int Ql_UART_Write(int fd, const char* buf, unsigned int buf_len)
-{
- return write(fd, buf, buf_len);
-}
-
-
-int Ql_UART_SetDCB(int fd, ST_UARTDCB *dcb)
-{
- struct termios newtio;
- memset(&newtio, 0, sizeof(newtio));
-
- if(tcgetattr(fd, &newtio) != 0)
- {
- LOGE("Serial port configuration backup errno");
- return -1;
- }
-
- switch(dcb->baudrate)
- {
- case B_300:
- cfsetospeed(&newtio, B300);
- cfsetispeed(&newtio, B300);
- break;
- case B_600:
- cfsetospeed(&newtio, B600);
- cfsetispeed(&newtio, B600);
- break;
- case B_1200:
- cfsetospeed(&newtio, B1200);
- cfsetispeed(&newtio, B1200);
- break;
- case B_2400:
- cfsetospeed(&newtio, B2400);
- cfsetispeed(&newtio, B2400);
- break;
- case B_4800:
- cfsetospeed(&newtio, B4800);
- cfsetispeed(&newtio, B4800);
- break;
- case B_9600:
- cfsetospeed(&newtio, B9600);
- cfsetispeed(&newtio, B9600);
- break;
- case B_19200:
- cfsetospeed(&newtio, B19200);
- cfsetispeed(&newtio, B19200);
- break;
- case B_38400:
- cfsetospeed(&newtio, B38400);
- cfsetispeed(&newtio, B38400);
- break;
- case B_57600:
- cfsetospeed(&newtio, B57600);
- cfsetispeed(&newtio, B57600);
- break;
- case B_115200:
- cfsetospeed(&newtio, B115200);
- cfsetispeed(&newtio, B115200);
- break;
- case B_230400:
- cfsetospeed(&newtio, B230400);
- cfsetispeed(&newtio, B230400);
- break;
- case B_460800:
- cfsetospeed(&newtio, B460800);
- cfsetispeed(&newtio, B460800);
- break;
- case B_921600:
- cfsetospeed(&newtio, B921600);
- cfsetispeed(&newtio, B921600);
- break;
- case B_3000000:
- cfsetospeed(&newtio, B3000000);
- cfsetispeed(&newtio, B3000000);
- break;
- case B_4000000:
- cfsetospeed(&newtio, B4000000);
- cfsetispeed(&newtio, B4000000);
- break;
- default:
- LOGD("No set speed.");
- break;
- }
-
- switch(dcb->databit)
- {
- case DB_CS5:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS5;
- break;
- case DB_CS6:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS6;
- break;
- case DB_CS7:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS7;
- break;
- case DB_CS8:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS8;
- break;
- default:
- LOGD("No set databit.");
- break;
- }
-
- if(dcb->stopbit == SB_2) {
- newtio.c_cflag |= CSTOPB;
- } else {
- newtio.c_cflag &= ~CSTOPB;
- }
-
- switch (dcb->parity)
- {
- case PB_ODD:// 奇校验
- newtio.c_cflag |= PARENB;
- newtio.c_cflag |= PARODD;
- break;
- case PB_EVEN:// 偶校验
- newtio.c_cflag |= PARENB;
- newtio.c_cflag &= ~PARODD;
- break;
- case PB_NONE:// 无奇偶校验
- newtio.c_cflag &= ~PARENB;
- break;
- default:
- LOGD("No set parity.");
- break;
- }
-
- switch (dcb->flowctrl)
- {
- case FC_RTSCTS:
- newtio.c_cflag |= CRTSCTS;
- tcflush(fd, TCIFLUSH);
- break;
- case FC_XONXOFF:
- newtio.c_iflag |= (IXON | IXOFF);
- tcflush(fd, TCIFLUSH);
- break;
- case FC_NONE:
- newtio.c_cflag &= ~CRTSCTS;
- newtio.c_iflag &= ~(IXON | IXOFF);
- tcflush(fd, TCIFLUSH);
- break;
- default:
- LOGD("No set flow ctrl.");
- break;
- }
-
- if(tcsetattr(fd, TCSANOW, &newtio) != 0)
- {
- LOGE("Serial port configuration backup errno");
- return -1;
- }
-
- return 0;
-}
-
-
-int Ql_UART_GetDCB(int fd, ST_UARTDCB *dcb)
-{
- struct termios newtio;
- memset(&newtio, 0, sizeof(newtio));
-
- if(tcgetattr(fd, &newtio) != 0)
- {
- LOGE("Serial port configuration backup errno");
- return -1;
- }
-
- switch(cfgetispeed(&newtio))
- {
- case B300:
- dcb->baudrate = B_300;
- break;
- case B600:
- dcb->baudrate = B_600;
- break;
- case B1200:
- dcb->baudrate = B_1200;
- break;
- case B2400:
- dcb->baudrate = B_2400;
- break;
- case B4800:
- dcb->baudrate = B_4800;
- break;
- case B9600:
- dcb->baudrate = B_9600;
- break;
- case B19200:
- dcb->baudrate = B_19200;
- break;
- case B38400:
- dcb->baudrate = B_38400;
- break;
- case B57600:
- dcb->baudrate = B_57600;
- break;
- case B115200:
- dcb->baudrate = B_115200;
- break;
- case B230400:
- dcb->baudrate = B_230400;
- break;
- case B460800:
- dcb->baudrate = B_460800;
- break;
- case B921600:
- dcb->baudrate = B_921600;
- break;
- case B3000000:
- dcb->baudrate = B_3000000;
- break;
- case B4000000:
- dcb->baudrate = B_4000000;
- break;
- default:
- dcb->baudrate = B_115200;
- break;
- }
-
- switch(newtio.c_cflag & CSIZE)
- {
- case CS5:
- dcb->databit = DB_CS5;
- break;
- case CS6:
- dcb->databit = DB_CS6;
- break;
- case CS7:
- dcb->databit = DB_CS7;
- break;
- case CS8:
- dcb->databit = DB_CS8;
- break;
- default:
- dcb->databit = DB_CS8;
- break;
- }
-
- if(newtio.c_cflag & CSTOPB) {
- dcb->stopbit = SB_2;
- } else {
- dcb->stopbit = SB_1;
- }
-
- if(newtio.c_cflag & PARENB) { // 启用了奇偶校验
- if(newtio.c_cflag & PARODD) {
- dcb->parity = PB_ODD; // 奇校验
- } else {
- dcb->parity = PB_EVEN; // 偶校验
- }
- } else {
- dcb->parity = PB_NONE;
- }
-
- if(newtio.c_cflag & CRTSCTS) {
- dcb->flowctrl = FC_RTSCTS;
- } else if(newtio.c_iflag & (IXON | IXOFF) == (IXON | IXOFF)){
- dcb->flowctrl = FC_XONXOFF;
- } else {
- dcb->flowctrl = FC_NONE;
- }
-
- return 0;
-}
-
-
-int Ql_UART_IoCtl(int fd, unsigned int cmd, void* pValue)
-{
- return 0;
-}
-
-
-int Ql_UART_Close(int fd)
-{
- if (fd <= 0)
- return -1;
-
- close(fd);
- return 0;
-}
-
diff --git a/mbtk/libql_lib/src/ql_voice.c b/mbtk/libql_lib/src/ql_voice.c
deleted file mode 100755
index 9df4053..0000000
--- a/mbtk/libql_lib/src/ql_voice.c
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "mbtk_type.h"
-#include "ql/ql_at.h"
-#include "ql/ql_vcall.h"
-#include "ql/ql_mcm_call.h"
-#include "ql/ql_voice.h"
-
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "print_help"},
- {1, "QL_Voice_Call_Ecall"},
- {2, "QL_Voice_Call_Ecall_HangUp"},
-
- {-1, NULL}
-};
-
-
-voice_client_handle_type h_voice = 0;
-
-
-void print_help(void)
-{
- int i;
-
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-static void ql_voice_call_ind_func(unsigned int ind_id,
- void* ind_data,
- uint32_t ind_data_len)
-{
- if(NULL == ind_data)
- {
- return;
- }
-
- switch(ind_id)
- {
- case E_QL_MCM_VOICE_CALL_IND:
- {
- if(ind_data_len != sizeof(ql_mcm_voice_call_ind))
- {
- break;
- }
-
- ql_mcm_voice_call_ind *pVoiceCallInd = (ql_mcm_voice_call_ind*)ind_data;
-
- char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};
-
- int i = 0;
- for(i = 0; i < pVoiceCallInd->calls_len; i++)
- {
- printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n",
- pVoiceCallInd->calls[i].call_id, pVoiceCallInd->calls[i].number, call_state[pVoiceCallInd->calls[i].state]);
- }
-
- break;
- }
-
- case E_QL_MCM_VOICE_ECALL_STATUE_IND:
- {
- if(ind_data_len != sizeof(ql_mcm_voice_ecall_status_ind))
- {
- break;
- }
-
- ql_mcm_voice_ecall_status_ind *pEcallStatusInd
- = (ql_mcm_voice_ecall_status_ind*)ind_data;
-
- if (pEcallStatusInd->ecall_msd_tx_status_valid)
- {
- if (pEcallStatusInd->ecall_msd_tx_status == E_QL_MCM_VOICE_ECALL_MSD_TRANSMISSION_STATUS_SUCCESS)
- {
- printf("========== Ecall status call_id =%d , ecall msd tx success.\r\n", pEcallStatusInd->call_id);
- }
- else
- {
- printf("========== Ecall status call_id =%d , ecall msd tx failure.\r\n", pEcallStatusInd->call_id);
- }
- }
- else
- {
- printf("========== Ecall status call_id =%d \r\n", pEcallStatusInd->call_id);
- }
-
- break;
- }
-
- case E_QL_MCM_VOICE_UNKOWN_IND:
- default:
- break;
- }
-}
-
-//"\t1 call init\n"
-QL_VOICE_ERROR_CODE ql_voice_call_init()
-{
- int ret = 0;
- ret = QL_Voice_Call_Client_Init(&h_voice);
- if(ret < 0)
- {
- printf("QL_Voice_Call_Client_Init FAIL. ret:%d\n",ret);
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- else{
- printf("QL_Voice_Call_Client_Init ret = %d, with h_voice=%d\n", ret, h_voice);
- }
-
- return ret;
-}
-
-//"\t9 call deinit\n"
-QL_VOICE_ERROR_CODE ql_voice_call_release()
-{
- int ret = 0;
- ret = QL_Voice_Call_Client_Deinit(h_voice);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-//\t2 call register handle\n"
-QL_VOICE_ERROR_CODE ql_voice_call_event_register(QL_VOICE_EventHandlerFunc_t handlerPtr, void* contextPtr)
-{
- int ret = 0;
- ret = QL_Voice_Call_AddCommonStateHandler(h_voice, (QL_VoiceCall_CommonStateHandlerFunc_t)ql_voice_call_ind_func);
- if(ret < 0)
- {
- printf("QL_Voice_Call_AddCommonStateHandler FAIL. ret:%d\n",ret);
- ret = QL_VOICE_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-/*
- Phone call.
- -call_num : dst phone number
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_start(char* call_num)
-{
- int ret = 0;
-
- ret = QL_Voice_Call_Start(h_voice, 0, call_num, NULL);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- return ret;
-}
-
-
-/*
- Put through.
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_answer()
-{
- int ret = 0;
- ret = QL_Voice_Call_Answer(h_voice, 0);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- return ret;
-}
-QL_VOICE_ERROR_CODE ql_voice_auto_answer(int seconds)
-{
- int ret = 0;
-
- ret = QL_Voice_Call_SetAutoAnswer(h_voice, E_QL_MCM_VOICE_AUTO_ANSWER_ENABLE, 6000);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- return ret;
-}
-
-/*
- Hang up.
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_end()
-{
- int ret = 0;
- ret = QL_Voice_Call_End(h_voice, 0);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-
-/* hold the voice */
-QL_VOICE_ERROR_CODE ql_voice_call_hold()
-{
- int ret = 0;
- QL_Voice_Call_Hold(h_voice);
-
- return ret;
-}
-
-/* unhold the voice */
-QL_VOICE_ERROR_CODE ql_voice_call_unhold()
-{
- int ret = 0;
-
- QL_Voice_Call_UnHold(h_voice);
-
- return ret;
-}
-
diff --git a/mbtk/libql_lib_v2/Makefile b/mbtk/libql_lib_v2/Makefile
deleted file mode 100755
index 43259aa..0000000
--- a/mbtk/libql_lib_v2/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-BUILD_ROOT = $(shell pwd)/..
-include $(BUILD_ROOT)/Make.defines
-
-LOCAL_PATH=$(BUILD_ROOT)/libql_lib_v2
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -llog -lubus -lubox -lblobmsg_json -lrilutil -lmbtk_lib -lmbtk_ril -lmbtk_fota -lmbtk_http -lmbtk_factory -lmbtk_audio
-
-CFLAGS += -shared -Wl,-shared,-Bsymbolic
-
-DEFINE +=
-
-MY_FILES_PATH:=$(LOCAL_PATH)/src
-#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
-#MY_FILES_PATH += $(LOCAL_PATH)/ql
-#endif
-
-#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
-#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
-#endif
-
-#MY_FILES_SUFFIX:=%.c %.cpp
-#My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
-#MY_SRC_LIST := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
-#MY_SRC_LIST := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
-
-LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
-$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
-
-OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
-$(info OBJS = $(OBJS))
-
-dtarget := $(OUT_DIR)/lib/libql_lib.so
-
-all: $(dtarget)
-
-$(dtarget): $(OBJS)
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS) $(dtarget)
-
diff --git a/mbtk/libql_lib_v2/src/ql_adc.c b/mbtk/libql_lib_v2/src/ql_adc.c
deleted file mode 100755
index 812427e..0000000
--- a/mbtk/libql_lib_v2/src/ql_adc.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "mbtk_adc.h"
-#include "ql/ql_adc.h"
-
-int ql_adc_show(Enum_QADC qadc)
-{
- if(qadc == ADC0 || qadc == ADC1) {
- return mbtk_adc_get((mbtk_adc_enum)qadc);
- } else {
- return -1;
- }
-}
-
diff --git a/mbtk/libql_lib_v2/src/ql_atc.c b/mbtk/libql_lib_v2/src/ql_atc.c
deleted file mode 100755
index cd1cf49..0000000
--- a/mbtk/libql_lib_v2/src/ql_atc.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "mbtk_at.h"
-/*******************************************************
-* @method: ql_atc_init
-* @Description: initialize environment variables.
-* @param: void
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_init()
-{
- return mbtk_at_init();
-}
-
-/*******************************************************
-* @method: ql_atc_release
-* @Description: release environment variables.
-* @param: void
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_release()
-{
- return mbtk_at_deinit();
-}
-
-/*******************************************************
-* @method: ql_atc_send
-* @Description: send at command(synchronous)
- use this api should first call init api and finish call release api
-* @param:
- cmd: at command
- resp: at return value
- len: response value length
-* @return:
- success: return 0
- error: return !0
-********************************************************/
-int ql_atc_send(char* cmd, char* resp, int resp_len)
-{
- return mbtk_at_send(cmd, resp, resp_len);
-}
diff --git a/mbtk/libql_lib_v2/src/ql_audio.c b/mbtk/libql_lib_v2/src/ql_audio.c
deleted file mode 100755
index d95ca9e..0000000
--- a/mbtk/libql_lib_v2/src/ql_audio.c
+++ /dev/null
@@ -1,875 +0,0 @@
-
-#include "ql/ql_audio.h"
-#include "mbtk_log.h"
-#include "mbtk_audio2.h"
-
-typedef enum {
- AUDIO_PLAY_STATE_STOP,
- AUDIO_PLAY_STATE_RUNNING,
- AUDIO_PLAY_STATE_PAUSE
-} audio_play_state_enum;
-
-#define AUDIO_HANDLE 1
-#define WAV_PLAY_BUFF 1024
-
-#ifdef MBTK_AF_SUPPORT
-static mbtk_audio_handle player_hdl = NULL;
-static int player_hdl_1 = AUDIO_HANDLE;
-static _cb_onRecorder record_cb_fun = NULL;
-static int Samprate = 8000;
-#endif
-
-static int sample_rate = 8000;
-static int play_handle = AUDIO_HANDLE;
-static _cb_onPlayer play_cb_func = NULL;
-static _cb_onRecorder recorder_cb_fun = NULL;
-static int is_running = 0;
-static audio_play_state_enum play_state = AUDIO_PLAY_STATE_STOP;
-static int play_exit = 1;
-
-static void recorder_cb_func(void *data, uint32 data_len)
-{
- if(recorder_cb_fun) {
- recorder_cb_fun(AUD_RECORDER_START, (unsigned char*)data, data_len);
- }
-}
-
-static int play_stream(unsigned char* pData, unsigned int length)
-{
- int rc, len, frames = 0;
- int result = 0;
-
- play_state = AUDIO_PLAY_STATE_RUNNING;
- play_exit = 0;
- int data_send = 0;
-
- if (mbtk_audio_pcm_play_start()) {
- printf("%s: error opening output device.", __FUNCTION__);
- return -1;
- }
-
- if(pData && length > 0) {
- while (play_state != AUDIO_PLAY_STATE_STOP) {
- if(play_state == AUDIO_PLAY_STATE_RUNNING) {
- if (data_send >= length) {
- LOGE("%s: Read pcm stream end.", __FUNCTION__);
- break;
- }
-
- if(length - data_send > WAV_PLAY_BUFF) {
- len = WAV_PLAY_BUFF;
- } else {
- len = length - data_send;
- }
-
- if((rc = mbtk_audio_pcm_play_data_send(pData + data_send, len)) != len) {
- LOGE("Send data %d/%d", rc, len);
- result = -1;
- goto thread_end;
- }
-
- data_send += len;
-
- LOGD("%s: No.%d frame playback", __FUNCTION__, ++frames);
- } else {
- usleep(200000);
- }
- }
- } else {
- result = -1;
- }
-
- play_state = AUDIO_PLAY_STATE_STOP;
-
-
-thread_end:
- mbtk_audio_pcm_play_stop();
- play_exit = 1;
- LOGD("%s: finished pcm playback.", __FUNCTION__);
- return result;
-}
-
-static int play_by_fd(int fd, int offset)
-{
- int rc, len, frames = 0;
- int result = 0;
- char buf[WAV_PLAY_BUFF];
-
- play_state = AUDIO_PLAY_STATE_RUNNING;
- if(play_cb_func)
- play_cb_func(play_handle , AUDIO_PLAY_STATE_RUNNING);
- play_exit = 0;
- if(fd > 0) {
- if(offset > 0) {
- lseek(fd, offset, SEEK_SET);
- }
-
- if (mbtk_audio_pcm_play_start()) {
- printf("%s: error opening output device.", __FUNCTION__);
- return -1;
- }
-
-
- while (play_state != AUDIO_PLAY_STATE_STOP) {
- if(play_state == AUDIO_PLAY_STATE_RUNNING) {
- memset(buf, 0x00, sizeof(buf));
- len = read(fd, buf, WAV_PLAY_BUFF);
- if (len == -1) {
- LOGE("%s: error reading from file", __FUNCTION__);
- result = -1;
- goto thread_end;
- }
-
- if (len == 0) {
- /* reached EOF */
- LOGE("%s: Read wav file end.", __FUNCTION__);
- break;
- }
-
- if((rc = mbtk_audio_pcm_play_data_send(buf, len)) < len) {
- LOGE("Send data %d/%d", rc, len);
- result = -1;
- goto thread_end;
- }
-
- LOGD("%s: No.%d frame playback", __FUNCTION__, ++frames);
- } else {
- usleep(200000);
- }
- }
- } else {
- result = -1;
- }
-
- play_state = AUDIO_PLAY_STATE_STOP;
- if(play_cb_func)
- play_cb_func(play_handle , AUDIO_PLAY_STATE_STOP);
-
-thread_end:
- mbtk_audio_pcm_play_stop();
- play_exit = 1;
- LOGD("%s: finished pcm playback.", __FUNCTION__);
- return result;
-}
-
-/*****************************************************************
-* Function: Ql_AudPlayer_Open
-*
-* Description:
-* Open audio play device, and specify the callback function.
-* This function can be called twice to play different audio sources.
-*
-* Parameters:
-* device : a string that specifies the PCM device.
-* NULL, means the audio will be played on the default PCM device.
-*
-* If you want to mixedly play audio sources, you can call this
-* API twice with specifying different PCM device.
-* The string devices available:
-* "hw:0,0" (the default play device)
-* "hw:0,13" (this device can mix audio and TTS)
-* "hw:0,14"
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio player
-* are informed in callback function.
-*
-* Return:
-* pcm device handle on success
-* -1 for failure
-*****************************************************************/
-int Ql_AudPlayer_Open(char* device, _cb_onPlayer cb_func)
-{
-#ifdef MBTK_AF_SUPPORT
- player_hdl = mbtk_audio_open_new(MBTK_AUTIO_TYPE_OUT, 1, Samprate, cb_func);
- if(player_hdl == NULL)
- {
- return -1;
- }
- else
- {
- return player_hdl_1 = AUDIO_HANDLE;
- }
-#else
- if(is_running || mbtk_audio_pcm_init()) {
- return -1;
- } else {
- play_cb_func = cb_func;
- is_running = 1;
- return play_handle;
- }
-#endif
-}
-
-/*========================================================================
- FUNCTION: Ql_AudPlayer_Play
-=========================================================================*/
-/** @brief
- This function writes pcm data to pcm device to play.
-
- @param[in] hdl, the handle returned by Ql_AudPlayer_Open().
- @param[in] pData, pointer to the start address of pcm data.
- @param[in] length, the length of pcm data.
-
- @return
- on success, the return value is the number of bytes to play
- on failure, the return value is -1;
-
- @dependencies
- Ql_AudPlayer_Open() must be first called successfully.
-*/
-/*=======================================================================*/
-int Ql_AudPlayer_Play(int hdl, unsigned char* pData, unsigned int length)
-{
-#ifdef MBTK_AF_SUPPORT
- if(hdl != player_hdl_1 || player_hdl == NULL){
- LOGE("Handle error : %d", hdl);
- return -1;
- }
- return mbtk_audio_play_stream_new((void *)player_hdl, pData, length,50);
-
-#else
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- return play_stream(pData, length);
-#endif
-}
-
-/*========================================================================
- FUNCTION: Ql_AudPlayer_PlayFrmFile
-=========================================================================*/
-/** @brief
- This function plays the pcm data from the specified file.
-
- @param[in] hdl, the handle returned by Ql_AudPlayer_Open().
- @param[in] fd, a file descriptor that contains pcm data.
- Note:
- the file offset should be set to the start position of pcm
- data region, which means you should move the file offset
- skipping the file header (such as wave header, amr header).
- @param[in] offset, file offset. Please set it to -1 if no need to use.
-
- @return
- 0 on success
- -1 on failure
-
- @dependencies
- Ql_AudPlayer_Open() must be first called successfully.
-*/
-/*=======================================================================*/
-
-int Ql_AudPlayer_PlayFrmFile(int hdl, int fd, int offset)
-{
-#ifdef MBTK_AF_SUPPORT
- if(hdl != player_hdl_1 || player_hdl == NULL){
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- return mbtk_audio_play_file_new((void *)player_hdl, fd, offset);
-
-#else
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- return play_by_fd(fd, offset);
-#endif
-}
-
-//
-// Function: Ql_AudPlayer_Pause
-//
-// Description:
-// Pause playing.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-int Ql_AudPlayer_Pause(int hdl)
-{
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- play_state = AUDIO_PLAY_STATE_PAUSE;
-
- while(!play_exit) {
- usleep(10000);
- }
-
- return 0;
-}
-
-//
-// Function: Ql_AudPlayer_Resume
-//
-// Description:
-// Resume playing.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-int Ql_AudPlayer_Resume(int hdl)
-{
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- play_state = AUDIO_PLAY_STATE_RUNNING;
-
- while(!play_exit) {
- usleep(10000);
- }
- return 0;
-}
-
-//
-// Function: Ql_AudPlayer_Stop
-//
-// Description:
-// Stop playing audio
-// hdl:
-// Handle received from Ql_AudPlayer_Open().
-void Ql_AudPlayer_Stop(int hdl)
-{
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return;
- }
-
- play_state = AUDIO_PLAY_STATE_STOP;
-
- while(!play_exit) {
- usleep(10000);
- }
-}
-
-//
-// Function: Ql_AudPlayer_Close
-//
-// Description:
-// Close player, and free the resource.
-// @param hdl:
-// Handle received from Ql_AudPlayer_Open().
-void Ql_AudPlayer_Close(int hdl)
-{
-#ifdef MBTK_AF_SUPPORT
- if(hdl != player_hdl_1 || player_hdl == NULL){
- LOGE("Handle error : %d", hdl);
- return -1;
- }
-
- mbtk_audio_close_new((void *)player_hdl);
- player_hdl_1 = 0;
-
-#else
- if(!is_running || hdl != play_handle) {
- LOGE("Handle error : %d", hdl);
- return;
- }
- play_state = AUDIO_PLAY_STATE_STOP;
-
- while(!play_exit) {
- usleep(10000);
- }
-
- is_running = 0;
- mbtk_audio_pcm_deinit();
-#endif
-}
-
-
-int Ql_AudPlayer_set_LessDataThreshold(int hdl, unsigned short threshSize)
-{
-
- return 0;
-}
-
-int Ql_AudPlayer_get_freeSpace(int hdl)
-{
-
- return 0;
-}
-
-
-/*****************************************************************
-* Function: Ql_AudRecorder_Open
-*
-* Description:
-* Open audio record device, and specify the callback function.
-*
-* Parameters:
-* device : not used. MUST be NULL.
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio recorder
-* are informed in callback function.
-*
-* Return:
-* pcm device handle
-* -1 for failure
-*****************************************************************/
-int Ql_AudRecorder_Open(char* device, _cb_onRecorder cb_fun)
-{
- if(is_running || mbtk_audio_pcm_init()) {
- return -1;
- } else {
- is_running = 1;
- recorder_cb_fun = cb_fun;
- return play_handle;
- }
-}
-
-//
-// Function: Ql_AudRecorder_StartRecord
-//
-// Description:
-// Start to record.
-// The record data is output in _cb_onRecorder.
-//
-// Return:
-// 0 on success
-// -1 on failure
-int Ql_AudRecorder_StartRecord(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return -1;
- }
-
- return mbtk_audio_pcm_recorder_start(recorder_cb_func);
-}
-
-//
-// Function: Ql_AudRecorder_Pause
-//
-// Description:
-// Pause recording
-int Ql_AudRecorder_Pause(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return -1;
- }
-
- return mbtk_audio_pcm_recorder_pause();
-}
-
-//
-// Function: Ql_AudRecorder_Resume
-//
-// Description:
-// Resume recording
-int Ql_AudRecorder_Resume(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return -1;
- }
-
- return mbtk_audio_pcm_recorder_resume();
-}
-
-//
-// Function: Ql_AudRecorder_Stop
-//
-// Description:
-// Stop recording
-void Ql_AudRecorder_Stop(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return;
- }
-
- mbtk_audio_pcm_recorder_stop();
-}
-
-//
-// Function: Ql_AudRecorder_Close
-//
-// Description:
-// Close recorder, and free the resource
-void Ql_AudRecorder_Close(void)
-{
- if(!is_running) {
- LOGE("No open device.");
- return;
- }
-
- is_running = 0;
- mbtk_audio_pcm_deinit();
-}
-
-//
-// Function: Ql_clt_set_mixer_value
-//
-// Description:
-// Close recorder, and free the resource
-boolean Ql_clt_set_mixer_value(const char *device, int count, const char *value)
-{
-
- return FALSE;
-}
-
-
-int Ql_AudTone_Open(char* device, _cb_onPlayer cb)//cb not support now
-{
- return 0;
-}
-
-int Ql_AudTone_Start(int hdl, struct Ql_TonePara *para)
-{
- return 0;
-}
-
-void Ql_AudTone_Stop(int hdl)
-{
-
-}
-
-void Ql_AudTone_Close(int hdl)
-{
-
-}
-
-
-//****************QL Codec API************************//
-
-//
-// Function: Ql_AudCodec_Set_ALC5616_DRCAGC
-//
-// Description:
-// Set ALC5616 DRC/AGC configuration
-int Ql_AudCodec_Set_ALC5616_DRCAGC(const char *i2c, struct Ql_ALC5616_DRCAGC *cfg)
-{
- return 0;
-}
-
-//
-// Function: Ql_Update_wav_size
-//
-// Description:
-// update wav format file size in the header
-// @param fd:
-// wav file discriptor
-// @param size:
-// wav file size to update
-int Ql_Update_wav_size(int fd, int size)
-{
- return 0;
-}
-
-//add by grady, 2018-5-29
-/*
- * describe : this function is use to open pcm device
- * paras :
- * device : this should be fix to hw:0,0
- * flags ; pcm play flags
- * rate: sample rate
- * channels : audio channal 1 or 2
- * format: format to play or record, 16bit line,MP3
- * hostless: if there is no file it is true
- * return :
- * pcm : pcm handle, use can use this handle to read write data
- */
-struct pcm *quec_pcm_open(char *device, unsigned flags, unsigned rate, unsigned channels, unsigned format, unsigned hostless)
-{
- return NULL;
-}
-
-/*
- * describe : this function is use to close pcm handle
- * paras :
- * pcm : pcm handle to close
- * return :
- */
-int quec_pcm_close(struct pcm *pcm )
-{
- return 0;
-}
-
-/*
- * describe : this function is use to read pcm buffer
- * paras :
- * pcm : pcm handle to write date
- * buffer: data buffer
- * lenth: data length
- * return :
- */
-int quec_read_pcm(struct pcm *pcm, void * buffer, int length)
-{
-
- return 0;
-}
-
-/*
- * describe : this function is use to get pcm buffer lenth
- * paras :
- * lenth: data length
- * return
- * buffer length
- */
-int quec_get_pem_buffer_len(struct pcm *pcm)
-{
-
- return 0;
-}
-
-void dtmf_cb1(char dtmf)
-{
- printf("%s:%c\n", __FUNCTION__, dtmf);
-}
-
-/**
- * @brief Set RX DSP Gain
- * @details
- * Gain support [-36,12] dB
- *
- * @param gain
- * DSP gain
- */
-
-int Ql_Rxgain_Set(int value)
-{
-#ifdef MBTK_AF_SUPPORT
- int volume =0;
- if(value < -36 || value > 13)
- {
- volume = 0;
- }
- else
- {
- volume = value;
- }
-
- if(player_hdl==NULL)
- return 0;
-
- char databuf[1025]={0};
- memcpy(databuf, " ", 1024);
-
- mbtk_audio_play_stream_new(player_hdl, databuf, 1024, volume);
- return 0;
-#else
- mbtk_dsp_gain_set(1, value);
- return 0;
-#endif
- return 0;
-}
-
-
-/** Ql_Playback_Samprate_Set
- * @brief Set Playback PCM Samprate
- * @details
- * 0 for NB 1 for WB
- *
- * @param samprate
- * samprate for PCM playback,default value is PCM NB
- */
-int Ql_Playback_Samprate_Set(int samprate)
-{
- printf("samprate is %d \n",samprate);
- if(samprate == 1)
- {
- sample_rate = 16000;
- mbtk_audio_pcm_sample_rate_set(MBTK_AUDIO_SAMPLE_RATE_16000);
- }
- else{
- mbtk_audio_pcm_sample_rate_set(MBTK_AUDIO_SAMPLE_RATE_8000);
- sample_rate = 8000;
- }
-
- return 0;
-}
-
-int Ql_Mp3_To_Wav(const char *wavpath, char *mp3path)
-{
- return 0;
-}
-
-int Ql_Mp3_To_Play(char *mp3path, int hdl,int sample_rate)
-{
- return 0;
-}
-
-//add by grady, 2018-6-2
-/*
- * describe : this function is use to open mixer device
- * paras :
- * device: mixer device
- * return
- * mixer handle
- */
-struct mixer *quec_mixer_open(const char *device)
-{
-
- return NULL;
-}
-
-/*
- * describe : this function is use to close mixer device
- * paras :
- * mixer: mixer handle
- * return
- * none
- */
-void quec_mixer_close(struct mixer *mixer)
-{
-
-
-}
-
-/*
- * describe : this function is use to get mixer devie control
- * paras :
- * mixer: mixer handle
- * name: mixer device
- * index: mixer index
- * return
- * mixer control
- */
-struct mixer_ctl *quec_mixer_get_control(struct mixer *mixer, const char *name, unsigned index)
-{
-
- return NULL;
-}
-
-/*
- * describe : this function is use to set mulvalues
- * paras :
- * mixer: mixer handle
- * count: count
- * argv: data
- * return :
- *
- */
-int quec_mixer_ctl_mulvalues(struct mixer_ctl *ctl, int count, char ** argv)
-{
-
- return 0;
-}
-
-
-//end grady
-
-/*****************************************************************
-* Function: Ql_AudPlayer_OpenExt
-*
-* Description:
-* expend function from Ql_AudPlayer_OpenExt
-* Open audio play device, and specify the callback function.
-* This function can be called twice to play different audio sources.
-*
-* Parameters:
-* device : a string that specifies the PCM device.
-* NULL, means the audio will be played on the default PCM device.
-*
-* If you want to mixedly play audio sources, you can call this
-* API twice with specifying different PCM device.
-* The string devices available:
-* "hw:0,0" (the default play device)
-* "hw:0,13" (this device can mix audio and TTS)
-* "hw:0,14"
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio player
-* are informed in callback function.
-*
-* flags : pcm flags, eg: PCM_MMAP, PCM_NMMAP.
-*
-* channels: pcm sample channels.
-*
-* rate : pcm sample rate.
-*
-* format : pcm sample fromat
-*
-* Return:
-* pcm device handle
-* NULL, fail
-*****************************************************************/
-int Ql_AudPlayer_OpenExt(
- char *dev,
- _cb_onPlayer cb_fun,
- int flags,
- int channels,
- int rate,
- int format)
-{
- return 0;
-}
-
-/*****************************************************************
-* Function: Ql_AudRecorder_Open
-*
-* Description:
-* Open audio record device, and specify the callback function.
-*
-* Parameters:
-* device : not used. MUST be NULL.
-*
-* cb_func : callback function for audio player.
-* The results of all operations on audio recorder
-* are informed in callback function.
-*
-* flags : pcm flags, eg: PCM_MMAP, PCM_NMMAP.
-*
-* channels: pcm sample channels.
-*
-* rate : pcm sample rate.
-*
-* format : pcm sample fromat
-*
-* Return:
-* pcm device handle
-* NULL, fail
-*****************************************************************/
-int Ql_AudRecorder_OpenExt(
- char *dev,
- _cb_onRecorder cb_fun,
- int flags,
- int channels,
- int rate,
- int format)
-{
-
-
- return 0;
-}
-
-/*
-* Function: uac enable
-*
-* Description:
-* uac enable
-*
-* Parameters:
-* none
-* Return:
-* TURE or FALSE
-*/
-int ql_uac_enable(void)
-{
-
- return 0;
-}
-
-/*
-* Function: uac disable
-*
-* Description:
-* uac disable
-*
-* Parameters:
-* none
-* Return:
-* TURE or FALSE
-*/
-int ql_uac_disable(void)
-{
-
- return 0;
-}
diff --git a/mbtk/libql_lib_v2/src/ql_call.c b/mbtk/libql_lib_v2/src/ql_call.c
deleted file mode 100755
index 700f93d..0000000
--- a/mbtk/libql_lib_v2/src/ql_call.c
+++ /dev/null
@@ -1,821 +0,0 @@
-/**
- * \file ql_call.c
- * \brief A Documented file.
- *
- * Detailed description
- * \Author: js.wang<js.wang@mobiletek.cn>
- * \Version: 1.0.0
- * \Date: 2022-01-18
- */
-#include "ql/ql_mcm_call.h"
-#include <telephony/ril.h>
-#include <telephony/ril_ext.h>
-#include "ql/ql_mcm.h"
-#include "rilutil.h"
-#include "mbtk_log.h"
-
-// #define DEBUG 1
-
-#ifdef DEBUG
- #define mbtk_call_log(...) printf(__VA_ARGS__)
-#else
- #define mbtk_call_log(...)
-#endif
-
-struct ql_call_ubus_t
-{
- struct ubus_context *ctx;
-
- /* RIL */
- struct ubus_subscriber ril_ind_event;
- uint32_t ril_subscriber_id;
- uint32_t ril_request_id;
- uint8_t auto_answer;
- uint32_t answer_time;
- pthread_t call_status_pthread;
- ql_mcm_voice_calls_state_t call_state;
- QL_VoiceCall_CommonStateHandlerFunc_t _voice_call_common_state_handler;
- QL_VoiceCall_StateHandlerFunc_t _voice_call_state_handler;
-};
-
-const char *RIL_MessageMap[] =
-{
- "RIL_CALL_ACTIVE", //0,
- "RIL_CALL_HOLDING", //1,
- "RIL_CALL_DIALING", //2, /* MO call only */
- "RIL_CALL_ALERTING", //3, /* MO call only */
- "RIL_CALL_INCOMING", //4, /* MT call only */
- "RIL_CALL_WAITING", //5, /* MT call only */
- "RIL_CALL_OFFERING", //6, /* MT call offering (call setup) */
- "RIL_CALL_DISCONNECTING",//7, /* call in disconnect procedure */
- "RIL_CALL_DISCONNECTED" //8, /* call is disconnected */
-};
-static struct ql_call_ubus_t *ql_call_ubus = NULL;
-static void ql_voice_call_answer(struct uloop_timeout *timeout);
-static struct uloop_timeout voice_call_answer_timeout =
-{
- .cb = ql_voice_call_answer,
-};
-
-static void ql_voice_call_answer(struct uloop_timeout *timeout)
-{
- QL_Voice_Call_Answer(ql_call_ubus, 0);
- // uloop_timeout_set(timeout, 2000);
- return;
-}
-
-int ql_call_handle_ril_ind(struct ubus_context *ctx, unsigned int rilid, unsigned int rilerror, char *data, int data_len)
-{
- UNUSED(data_len);
- UNUSED(ctx);
-
- int datalen = 0, callID = 0;
- int ret = 0;
-
- if (rilerror) {
- return -1;
- }
-
- mbtk_call_log("call_handle_ril_ind: rcv %d\n", rilid);
-
- switch(rilid)
- {
- case RIL_UNSOL_ECALLDATA: //+ecalldata
- // ecallHandleEcalldata(data);
- break;
-
- case RIL_UNSOL_ECALLONLY: //+ecallonly
- // ecallHandleEcallonly(data);
- break;
-
- case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED_EXT: /*"CC" 1510*/
- {
- RIL_Call *rilCall = (RIL_Call *)data;
- callID = rilCall->index;
-
- mbtk_call_log("%s: id %d=RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED_EXT (len=%d) (state=%s), call index=%d\n",
- __FUNCTION__, rilid, datalen, RIL_MessageMap[(int)rilCall->state], callID);
-
- mbtk_call_log("Received from Ril, name=%s, num=%s\n", rilCall->name, rilCall->number);
- ql_call_ubus->call_state.calls_len = 1;
- ql_call_ubus->call_state.calls[0].call_id;
- memcpy(ql_call_ubus->call_state.calls[0].number, rilCall->number, strlen(rilCall->number));
- ql_call_ubus->call_state.calls[0].state = rilCall->state;
- switch (rilCall->state)
- {
- //Call connected, for MO & MT both
- case RIL_CALL_ACTIVE:
- mbtk_call_log("%s, RIL_CALL_ACTIVE, call index=%d connected!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_ACTIVE;
- break;
-
- //MT call only
- case RIL_CALL_INCOMING:
- mbtk_call_log("%s, RIL_CALL_INCOMING!!\n", __FUNCTION__);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_INCOMING;
- if(!ql_call_ubus->auto_answer)
- {
- mbtk_call_log("%s, auto_answer:%d!!\n", __FUNCTION__, ql_call_ubus->answer_time);
- uloop_timeout_set(&voice_call_answer_timeout, ql_call_ubus->answer_time);
- }
- break;
-
- //MO call only
- case RIL_CALL_ALERTING:
- mbtk_call_log("%s, RIL_CALL_ALERTING, call index=%d alerting!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_ALERTING;
- break;
-
- case RIL_CALL_WAITING: //MT call only
- mbtk_call_log("%s, RIL_CALL_WAITING, call index=%d alerting!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_WAITING;
- break;
-
- case RIL_CALL_DISCONNECTED:
- mbtk_call_log("%s, RIL_CALL_DISCONNECTED, call index=%d disconnected!!\n", __FUNCTION__, callID);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- break;
-
- case RIL_CALL_HOLDING:
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_HOLDING;
- mbtk_call_log("%s, RIL_CALL_HOLDING, call index=%d hold!!\n", __FUNCTION__, callID);
- break;
-
- case RIL_CALL_DIALING: //MO call only
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_DIALING;
- mbtk_call_log("%s, RIL_CALL_DIALING, call index=%d hold!!\n", __FUNCTION__, callID);
- break;
- case RIL_CALL_OFFERING:
- case RIL_CALL_DISCONNECTING:
- default:
- printf("%s, state=%s ignored!!\n", __FUNCTION__, RIL_MessageMap[(int)rilCall->state]);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- break;
- }
- if(ql_call_ubus->_voice_call_common_state_handler && ql_call_ubus)
- {
- ql_call_ubus->_voice_call_common_state_handler(E_QL_MCM_VOICE_CALL_IND, &ql_call_ubus->call_state, sizeof(ql_mcm_voice_call_ind));
- }
- }
- break;
- case RIL_UNSOL_CALL_NO_CARRIER_EXT: /*"CC" 1511*/
- mbtk_call_log("%s: id %d=RIL_UNSOL_CALL_NO_CARRIER_EXT (len=%d)\n",
- __FUNCTION__, rilid, datalen);
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- if(ql_call_ubus->_voice_call_common_state_handler && ql_call_ubus)
- {
- ql_call_ubus->_voice_call_common_state_handler(E_QL_MCM_VOICE_CALL_IND, &ql_call_ubus->call_state, sizeof(ql_mcm_voice_call_ind));
- }
- break;
-
- case RIL_UNSOL_CALL_RING: /*"CC" 1018*/
- printf("%s: id %d=RIL_UNSOL_CALL_RING (len=%d), ignored!!\n",
- __FUNCTION__, rilid, datalen);
- break;
-
- case RIL_UNSOL_DISCONNECT_CALLID: /*"CC" 1538*/
- callID = *(int *)data;
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- mbtk_call_log("%s: id %d=RIL_UNSOL_DISCONNECT_CALLID (len=%d), call index=%d!\n",
- __FUNCTION__, rilid, datalen, *(int *)data);
- break;
- default:
- break;
- }
-
- return ret;
-}
-static void ql_call_requset_cb(struct ubus_request *req, int type, struct blob_attr *msg)
-{
- unsigned int requestid;
- unsigned int rilerrno;
- void *response = NULL;
- int responselen;
- int ret = 0;
-
- ret = rilutil_parseResponse(msg, &requestid, &rilerrno, &response, &responselen);
- if(ret)
- {
- fprintf(stderr, "parse blob error\n");
- goto done;
- }
-
- if(rilerrno)
- {
- // RIL_REQUEST_RELEASE_CALL
- fprintf(stderr, "unsolicited id %d, error code %d\n", requestid, rilerrno);
- goto done;
- }
-
- //process response here
-
-done:
- if(response)
- rilutil_freeResponseData(requestid, response, responselen);
-
- return;
-}
-
-int ql_call_subscriber_cb(struct ubus_context *ctx, struct ubus_object *obj,
- struct ubus_request_data *req, const char *method, struct blob_attr *msg)
-{
- UNUSED(ctx);
- UNUSED(obj);
- UNUSED(req);
- UNUSED(method);
-
- unsigned int requestid = 0;
- unsigned int rilerrno = 0;
- void *response = NULL;
- int responselen = 0;
- int ret = 0;
-
- ret = rilutil_parseResponse(msg, &requestid, &rilerrno, &response, &responselen);
- if (ret)
- goto end;
-
- mbtk_call_log("call_subscriber_cb: rcv %d\n", requestid);
-
- ql_call_handle_ril_ind(ctx, requestid, rilerrno, response, responselen);
-
-end:
- if (response)
- rilutil_freeResponseData(requestid,response,responselen);
-
- return 0;
-}
-
-void ql_call_subscriber_remove_cb(struct ubus_context *ctx, struct ubus_subscriber *obj, uint32_t id)
-{
- UNUSED(ctx);
- UNUSED(obj);
- UNUSED(id);
- mbtk_call_log("ql_call_subscriber_remove_cb\n");
-}
-
-static void ql_call_register_ril(void* hdl)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)hdl;
- int ret;
-
- if(hdl == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- pthread_detach(pthread_self());
- ret = ubus_register_subscriber(voice_call_ubus->ctx, &voice_call_ubus->ril_ind_event);
- if (ret) {
- printf("call_daemon: Failed to add ecall_subscriber: %s\n", ubus_strerror(ret));
- return ret;
- }
-
- voice_call_ubus->ril_ind_event.cb = ql_call_subscriber_cb;
- voice_call_ubus->ril_ind_event.remove_cb = ql_call_subscriber_remove_cb;
-
- //register for CC ind
- if (ubus_lookup_id(voice_call_ubus->ctx, "ril.unsol.cc", &voice_call_ubus->ril_subscriber_id)) {
- printf("call_daemon: Failed to look up ril.unsol.cc object\n");
- return ret;
- }
-
- ubus_subscribe(voice_call_ubus->ctx, &voice_call_ubus->ril_ind_event, voice_call_ubus->ril_subscriber_id);
- mbtk_call_log("call_daemon: subscribe ril.unsol.cc object ok\n");
- mbtk_call_log("%s!\n", __FUNCTION__);
- while(1)
- {
- uloop_run();
- printf("%s uloop_run done!\n", __FUNCTION__);
- }
- pthread_exit(NULL);
-}
-/* Init voice module and return h_voice, this should be called before any other APIs */
-int QL_Voice_Call_Client_Init(voice_client_handle_type *ph_voice)
-{
- int id;
- // Set call handle.
- //*ph_voice = 1;
- if(ph_voice == NULL)
- {
- printf("ARG error or has inited.");
- return -1;
- }
- ql_call_ubus = malloc(sizeof(struct ql_call_ubus_t));
- if(NULL == ql_call_ubus)
- {
- printf("malloc memory error\n");
- }
- memset(ql_call_ubus, 0, sizeof(struct ql_call_ubus_t));
- uloop_init();
-
- ql_call_ubus->ctx = ubus_connect(NULL);
- if(!ql_call_ubus->ctx)
- {
- printf("Failed to connect to ubus");
- goto out;
- }
-
- ubus_add_uloop(ql_call_ubus->ctx);
-
- if (ubus_lookup_id(ql_call_ubus->ctx, "ril", &ql_call_ubus->ril_request_id)) {
- fprintf(stderr, "%s, Failed to look up test object\n", __FUNCTION__);
- return -1;
- }
- ql_call_ubus->auto_answer = E_QL_MCM_VOICE_AUTO_ANSWER_DISABLE;
- ql_call_ubus->call_state.calls[0].state = E_QL_MCM_VOICE_CALL_STATE_END;
- pthread_create(&ql_call_ubus->call_status_pthread, NULL, (void *)ql_call_register_ril, (void *)ql_call_ubus);
- *ph_voice = ql_call_ubus;
-
- return 0;
-out:
- //uloop_done();
-
- return 0;
-}
-
-/* DeInit voice module and release resources, this should be called at last */
-int QL_Voice_Call_Client_Deinit(voice_client_handle_type h_voice)
-{
- int ret;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- // Free handle.
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- printf("ARG error or not inited.");
- return -1;
- }
- ret = pthread_cancel(voice_call_ubus->call_status_pthread);
- mbtk_call_log("kill pthread : %d \n", ret);
- pthread_join(voice_call_ubus->call_status_pthread, NULL);
- do{
- ret = pthread_kill(voice_call_ubus->call_status_pthread, 0);
- mbtk_call_log("kill pthread: %d \n", ret);
- if(ret == ESRCH)
- printf("The specified thread does not exist or has terminated\n");
- else if(ret == EINVAL)
- printf("Useless signal\n");
- else
- mbtk_call_log("The thread exists\n");
- usleep(100000);
- }while(0 == ret);
- free(h_voice);
- ql_call_ubus = NULL;
- uloop_done();
- ubus_free(voice_call_ubus->ctx);
- return 0;
-}
-
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int QL_Voice_Call_AddStateHandler(voice_client_handle_type h_voice,
- QL_VoiceCall_StateHandlerFunc_t handlerPtr,
- void* contextPtr)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- ret = pthread_kill(voice_call_ubus->call_status_pthread, 0);
- mbtk_call_log("kill pthread: %d \n", ret);
- if(ret == ESRCH)
- mbtk_call_log("The specified thread does not exist or has terminated\n");
- else if(ret == EINVAL)
- printf("Useless signal\n");
- else
- mbtk_call_log("The thread exists\n");
- if(voice_call_ubus->ril_subscriber_id)
- {
- voice_call_ubus->_voice_call_state_handler = handlerPtr;
- }
- else
- {
- printf("%s error!!\n", __func__);
- return -1;
- }
-
- return 0;
-}
-
-/* Remove callback function, won't receive any notify anymore */
-int QL_Voice_Call_RemoveStateHandler(voice_client_handle_type h_voice)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- return -1;
- }
- voice_call_ubus->_voice_call_state_handler = NULL;
-
- return 0;
-}
-
-
-/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
-int QL_Voice_Call_AddCommonStateHandler(voice_client_handle_type h_voice,
- QL_VoiceCall_CommonStateHandlerFunc_t handlerPtr)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- return -1;
- }
- ret = pthread_kill(voice_call_ubus->call_status_pthread, 0);
- mbtk_call_log("kill pthread: %d \n", ret);
- if(ret == ESRCH)
- mbtk_call_log("The specified thread does not exist or has terminated\n");
- else if(ret == EINVAL)
- printf("Useless signal\n");
- else
- mbtk_call_log("The thread exists\n");
- if(voice_call_ubus->ril_subscriber_id)
- {
- voice_call_ubus->_voice_call_common_state_handler = handlerPtr;
- }
- else
- {
- printf("%s error!!\n", __func__);
- return -1;
- }
-
-
- return 0;
-}
-
-/* Remove callback function, won't receive any notify anymore */
-int QL_Voice_Call_RemoveCommonStateHandler(voice_client_handle_type h_voice)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- LOGE("ARG error or not inited.");
- return -1;
- }
- voice_call_ubus->_voice_call_common_state_handler = NULL;
-
- return 0;
-}
-
-
-/* Start call and return call_id, this can be used in the later */
-int QL_Voice_Call_Start(voice_client_handle_type h_voice,
- E_QL_VCALL_ID_T simId,
- char* phone_number, ///< [IN] Destination identifier for the voice
- int *call_id) ///< [OUT] call id
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int id, ret;
- RIL_Dial dial_data;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- if(voice_call_ubus->call_state.calls[0].state == E_QL_MCM_VOICE_CALL_STATE_ACTIVE ||
- voice_call_ubus->call_state.calls[0].state == E_QL_MCM_VOICE_CALL_STATE_INCOMING ||
- voice_call_ubus->call_state.calls[0].state == E_QL_MCM_VOICE_CALL_STATE_ALERTING)
- {
- printf("A call already exists, Voice Call incoming or active!!\n");
- return -1;
- }
- memset(&dial_data, 0, sizeof(RIL_Dial));
- dial_data.address = phone_number;
- printf("call number %s\n", dial_data.address);
- if (ubus_lookup_id(ql_call_ubus->ctx, "ril", &ql_call_ubus->ril_request_id)) {
- fprintf(stderr, "%s, Failed to look up test object\n", __FUNCTION__);
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_DIAL, &dial_data, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("sim_get_imsi,ubus_invoke Failed %s\n", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
-
- return 0;
-}
-
-/* End call of call_id, which returned by QL_Voice_Call_Start or callback func register via QL_Voice_Call_AddStateHandler */
-int QL_Voice_Call_End(voice_client_handle_type h_voice,
- int call_id) ///< [IN] call id, return by QL_Voice_Start
-{
- static struct ubus_request req;
- static struct blob_buf b;
- int ret;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- mbtk_call_log("Voice Call State:%s, %d\n", voice_call_ubus->call_state.calls[0].number, voice_call_ubus->call_state.calls[0].state);
- if(voice_call_ubus->call_state.calls[0].state != E_QL_MCM_VOICE_CALL_STATE_ACTIVE &&
- voice_call_ubus->call_state.calls[0].state != E_QL_MCM_VOICE_CALL_STATE_INCOMING &&
- voice_call_ubus->call_state.calls[0].state != E_QL_MCM_VOICE_CALL_STATE_ALERTING)
- {
- printf("No Voice Call incoming or active!!\n");
- return -1;
- }
- //use rilutil's API, just a example
- rilutil_makeRequestBlob(&b, RIL_REQUEST_RELEASE_CALL, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("sim_get_imsi,ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-/* Answer the call of call_id, which returned by callback func register via QL_Voice_Call_AddStateHandler */
-int QL_Voice_Call_Answer(voice_client_handle_type h_voice,
- int call_id )
-{
- static struct ubus_request req;
- static struct blob_buf b;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_ANSWER, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_Hold( voice_client_handle_type h_voice)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_HANGUP, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_UnHold( voice_client_handle_type h_voice)
-{
-
- return 0;
-}
-
-int QL_Voice_Call_Conference( voice_client_handle_type h_voice)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_CONFERENCE, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_EndConference( voice_client_handle_type h_voice)
-{
-
- return 0;
-}
-
-int QL_Voice_Call_Ecall(voice_client_handle_type h_voice,
- E_QL_VCALL_ID_T simId,
- char* phone_number,
- ql_mcm_ecall_info ecall_info,
- int *call_id)
-{
-// RIL_REQUEST_SET_CECALL
-// RIL_REQUEST_GET_CECALL
-// RIL_REQUEST_SET_ECALLONLY
-// RIL_REQUEST_GET_ECALLONLY
-// RIL_REQUEST_SET_ECALLREG
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- //use rilutil's API, just a example
- rilutil_makeRequestBlob(&b, RIL_REQUEST_CONFERENCE, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-
-int QL_Voice_Call_SetAutoAnswer(voice_client_handle_type h_voice,
- E_QL_MCM_VOICE_AUTO_ANSWER_T eAnswerType,
- uint32_t uAnswerTime)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- voice_call_ubus->auto_answer = eAnswerType;
- voice_call_ubus->answer_time = uAnswerTime;
-
- return 0;
-}
-
-int QL_Voice_Call_Ecall_HangUp(voice_client_handle_type h_voice)
-{
- return 0;
-}
-
-int QL_Voice_Call_Ecall_UpdateMsd(voice_client_handle_type h_voice,const char *msd,uint32_t msd_len)
-{
- return 0;
-}
-
-//Ecall Push caommand
-int QL_Voice_Call_Ecall_MsdPush(voice_client_handle_type h_voice,
- E_QL_MCM_ECALL_STATE_T *ecall_state)
-{
- return 0;
-}
-
-//Get Ecall config info
-int QL_Voice_Call_Ecall_GetConfigInfo(voice_client_handle_type h_voice,
- ql_mcm_ecall_config_info *ecall_config)
-{
-// RIL_REQUEST_SET_ECALLCFG
-// RIL_REQUEST_GET_ECALLCFG
- return 0;
-}
-
-int QL_Voice_Call_Ecall_SetConfigInfo(voice_client_handle_type h_voice,
- E_QL_MCM_ECALL_CONFIG_T ecall_config_type,
- uint8_t value)
-{
- return 0;
-}
-
-//Cancel dial
-int QL_Voice_Call_CancelDial( voice_client_handle_type h_voice)
-{
- static struct ubus_request req;
- static struct blob_buf b;
- int ret;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- //use rilutil's API, just a example
- rilutil_makeRequestBlob(&b, RIL_REQUEST_RELEASE_CALL, NULL, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("sim_get_imsi,ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-//VTS API
-int QL_Voice_Call_Dtmf(voice_client_handle_type h_voice, uint8_t digit, int call_id)
-{
- static struct ubus_request req;
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
- static struct blob_buf b;
- int ret;
- char code = digit;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- rilutil_makeRequestBlob(&b, RIL_REQUEST_DTMF, &code, 0);
- ret = ubus_invoke(voice_call_ubus->ctx, voice_call_ubus->ril_request_id, "ril_request", b.head, ql_call_requset_cb, 0,0);
- if(ret != 0)
- {
- printf("ql call, ubus_invoke Failed %s", ubus_strerror(ret));
- return E_QL_ERROR_GENERIC;
- }
- return 0;
-}
-
-int QL_Voice_Call_GetCallStatus
-(
- int h_voice,
- int call_id, // If call_id<0, means to get all calls state, or get specified call_id info
- ql_mcm_voice_calls_state_t *pt_callstate
-)
-{
- struct ql_call_ubus_t *voice_call_ubus = (struct ql_call_ubus_t *)h_voice;
-
- if(h_voice == NULL || ql_call_ubus == NULL)
- {
- printf("ARG error or not inited.");
- return -1;
- }
- memcpy((void *)pt_callstate, &voice_call_ubus->call_state, sizeof(ql_mcm_voice_calls_state_t));
- return 0;
-}
-
-//Set forwarding
-int QL_Voice_Call_SetForwarding
-(
- int h_voice,
- E_QL_MCM_VOICE_CALL_SERVICE_T service,
- E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T reason,
- char *number
-)
-{
-
- return 0;
-}
-
-//Get forwarding status
-int QL_Voice_Call_GetForwardingStatus(
- int h_voice,
- E_QL_MCM_VOICE_CALL_FORWARDING_REASON_T reason,
- ql_mcm_voice_call_forwarding_status_list_t *pt_status)
-{
-
- return 0;
-}
-
-
-//Set voice call waiting
-int QL_Voice_Call_SetWaiting
-(
- int h_voice,
- ql_mcm_voice_call_waiting_service_t e_service
-)
-{
-// RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND
- return 0;
-}
-
-//Get voice call waiting status
-int QL_Voice_Call_GetWaitingStatus
-(
- int h_voice,
- ql_mcm_voice_call_waiting_service_t *pe_service
-)
-{
-
- return 0;
-}
diff --git a/mbtk/libql_lib_v2/src/ql_cell_locator.c b/mbtk/libql_lib_v2/src/ql_cell_locator.c
deleted file mode 100755
index b36075d..0000000
--- a/mbtk/libql_lib_v2/src/ql_cell_locator.c
+++ /dev/null
@@ -1,347 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#define LOG_TAG "mbtk_http"
-#include "mbtk_type.h"
-#include "mbtk_http.h"
-#include "mbtk_log.h"
-#include "mbtk_info_api.h"
-#include "ql/ql_cell_locator.h"
-
-
-static int http_handle;
-static int http_session;
-
-static char Server[128]={0};
-static char Token[128] = {0};
-static char Loction[128]={0};
-static int PORT = 0;
-static int locator_timeout = 60; // 60s for default.
-
-static int mbtk_lbs_http_parse_location(char* buf, int len, char* rspBuf)
-{
- if(buf != NULL && len != 0)
- {
- char* pos0 = NULL;
- char* pos1 = NULL;
- char fac[64] = {'\0'};
- pos0 = strstr(buf, "<info>");
- if(pos0 != NULL)
- {
- pos1 = strstr(pos0 + 1, "</info>");
- if(pos1 != NULL)
- {
- strncpy(fac, pos0 + 6, pos1 - pos0 - 6);
- }
- if(strcmp(fac, "OK") == 0)
- {
- char* l_pos0 = NULL;
- char* l_pos1 = NULL;
- char* type_pos0 = NULL;
- char* type_pos1 = NULL;
- char fac_type[64] = {'\0'};
- type_pos0 = strstr(buf, "<type>");
- if(type_pos0 != NULL)
- {
- type_pos1 = strstr(type_pos0 + 1, "</type>");
- if(type_pos1 != NULL)
- {
- strncpy(fac_type, type_pos0 + 6, type_pos1 - type_pos0 - 6);
- if(strcmp(fac_type, "0") == 0)
- {
- return -1;
- }
- }
- }
- l_pos0 = strstr(buf, "<location>");
- if(l_pos0 != NULL)
- {
- l_pos1 = strstr(l_pos0 + 1, "</location>");
- if(l_pos1 != NULL)
- {
- strncpy(rspBuf, l_pos0 + 10, l_pos1 - l_pos0 - 10);
- }
- return 0;
- }
- }
- else //key error http chunk
- {
- printf("info is %s", fac);
- }
- }
- }
- return -1;
-}
-
-
-
-static void http_data_cb_func1(
- int session_id, mbtk_http_data_type_enum type,
- void *data,int data_len)
-{
- if(type == MBTK_HTTP_DATA_HEADER) {
- LOGE("Header(%d):%s\n",data_len,(char*)data);
- } else if(type == MBTK_HTTP_DATA_CONTENT) {
- LOGE("Data(%d):%s\n",data_len,(char*)data);
- mbtk_lbs_http_parse_location((char*)data, data_len, Loction);
- } else {
- LOGI(">>>>>Complete<<<<<\n");
- }
-}
-
-
-int ql_cell_locator_init()
-{
- http_handle = mbtk_http_handle_get(TRUE, http_data_cb_func1);
- if(http_handle < 0)
- {
- LOGE("mbtk_http_handle_get() fail.");
- return -1;
- }
-
- http_session = mbtk_http_session_create(http_handle,HTTP_OPTION_GET,HTTP_VERSION_1_1);
- if(http_session < 0)
- {
- LOGE("mbtk_http_session_create() fail.");
- return -1;
- }
-
- return 0;
-}
-
-
-int ql_cell_locator_release()
-{
- if(mbtk_http_handle_free(http_handle))
- {
- LOGE("mbtk_http_handle_free() fail.");
- return -1;
- }
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query server and port, server length must be less than 255 bytes.
- @param[in] server the query server ip address
- @param[in] port the query server port
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_server(const char *server, unsigned short port)
-{
- if(server == NULL)
- {
- return -1;
- }
-
- memset(Server, 0, sizeof(Server));
- memcpy(Server, server, strlen(server));
- PORT = port;
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query timeout, the value must between 1-300 [seconds]
- @param[in] timeout value of query timeout
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_timeout(unsigned short timeout)
-{
- locator_timeout = timeout;
- return 0;
-}
-
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief set locator query token, token length must be 16 bytes. the token Used to verify that
- the client accessing the service is valid.
- @param[in] token string of token which want to be setted.
- @param[in] length of token string.
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_set_token(const char *token, int len)
-{
- if(token == NULL && (strlen(token) != len) && len > 128)
- {
- return -1;
- }
-
- memset(Token, 0, sizeof(token));
- memcpy(Token, token, strlen(token));
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------------------------*/
-/**
- @brief perform cell locator query
- @param[out] resp include query result or set the error_msg and error_code
- @return if success return 0, else return -1
- */
-/*-----------------------------------------------------------------------------------------------*/
-int ql_cell_locator_perform(ql_cell_resp *resp)
-{
-
- int ret = 0;
- int ret1 = 0;
-
- char url[1024] = {0};
- char imei[50] ={0};
- char cellinfo[512] = {0};
- char *p = cellinfo;
- int i =0;
- int mcc,mnc,tac,ci,rsrp;
-
- mbtk_info_handle_t* info_handle = mbtk_info_handle_get();
- if(!info_handle)
- {
- return -1;
- }
-
- mbtk_imei_get(info_handle, imei);
-
- list_node_t* cell_list = NULL;
- int type, err;
- int CellId;
- err = mbtk_cell_get(info_handle, &type, &cell_list);
- if(err || cell_list == NULL) {
- printf("Error : %d\n", err);
- }
- else
- {
- list_first(cell_list);
- mbtk_cell_info_t* cell = (mbtk_cell_info_t*) list_next(cell_list);
- if(cell)
- { // Current server cell.
- switch(type)
- {
- case 0:
- LOGE("GSM : mcc=%d, mnc=%d, lac=%d, ci=%d, arfcn=%d, bsic=%d\n",cell->value5, cell->value6,cell->value1, cell->value2, cell->value3, cell->value4);
- mcc = cell->value5;
- mnc = cell->value6;
- tac = cell->value1;
- ci = cell->value2;
- rsrp = 30;
- break;
- case 1:
- LOGE("UMTS : lac=%d, ci=%d, arfcn=%d\n", cell->value1, cell->value2, cell->value3);
- break;
- case 2:
- LOGE("LTE : tac=%d, PCI=%d, dlEuarfcn=%d, ulEuarfcn=%d, band=%d, mcc=%d, mnc=%d ,cid=%d, rsrp=%d\n",
- cell->value1, cell->value2, cell->value3, cell->value4, cell->value5,cell->value6, cell->value7, cell->value8,cell->value9);
-//// LTE server cell: tac, PCI, dlEuarfcn, ulEuarfcn, band, mcc, mnc ,cid, rsrp
- mcc = cell->value6;
- mnc = cell->value7;
- tac = cell->value1;
- ci = cell->value10;
- rsrp = cell->value9;
-
- // LOGE(cellinfo,"&bts=%X,%X,%d,%d,%d&nearbts=",mcc,mnc,tac,ci,rsrp-140);
- // LOGE("cellinfo:%s\n", cellinfo);
-
- break;
- default:
- break;
- }
- }
-
- sprintf(cellinfo,"&bts=%X,%X,%d,%d,%d&nearbts=",mcc,mnc,tac,ci,rsrp-140);
- while ((cell = (mbtk_cell_info_t*) list_next(cell_list)))
- {
- switch(type)
- {
- case 0:
- LOGE("CELL : %d, %d, %d, %d, %d", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- if(i < 3)
- {
- sprintf(p+strlen(p),"%X,%X,%d,%d,%d|",cell->value5,cell->value6,cell->value1,cell->value2,29-140);
- i++;
- }
- break;
- case 1:
- LOGE("CELL : lac=%d, ci=%d, arfcn=%d\n", cell->value1, cell->value2, cell->value3);
- break;
- case 2:
- CellId = cell->value5;
- // if(CellId > 0 && cell->value5 != -1)
- if(CellId > 0 )
- {
- if(i < 3)
- {
- sprintf(p+strlen(p),"%X,%X,%d,%d,%d|",mcc,mnc,tac,cell->value5,cell->value3-140);
- i++;
- }
- }
- LOGE("CELL : phyCellId=%d, euArfcn=%d, rsrp=%d, rsrq=%d, cellId:%d\n", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- break;
- default:
- break;
- }
- }
- }
- list_free(cell_list);
-
- sprintf(url,"http://%s:%d/position?accesstype=0&imei=%s&cdma=0%s&output=xml&key=%s",\
- Server, PORT, imei,cellinfo, Token);
-
-
- memset(Loction, 0, sizeof(Loction));
-
-
- if(mbtk_http_session_url_set(http_handle, http_session, url)) {
- LOGE("mbtk_http_session_url_set() fail.\n");
- return -1;
- }
-
- const mbtk_http_session_t* session = mbtk_http_session_get(http_handle, http_session);
- LOGI("HTTP:%d,%s,%d,%s\n",session->option,session->host,session->port,session->uri);
-
-
- mbtk_http_session_head_add(http_handle, http_session, "Connection", "KeepAlive");
-
-
- if(mbtk_http_session_start(http_handle, http_session)) {
- LOGE("mbtk_http_session_start() fail.\n");
- return -1;
- }
-
- if(strlen(Loction))
- {
- char Lon[20] ={0};
- char Lat[20] = {0};
- char *lon = Loction;
- char *lat = strstr(Loction, ",");
- if(lat != NULL )
- {
- memcpy(Lon, Loction, lat- lon);
-
- lat++;
- memcpy(Lat, lat, strlen(lat));
-
- sscanf((char*)Lon,"%lf",&resp->lon);
- sscanf((char*)Lat,"%lf",&resp->lat);
- }
-
- }
-
-// printf("lon:%f, lat:%f\n", resp->lon, resp->lat);
-// printf("\nloction:%s\n", Loction);
-
- return 0;
-}
-
-
-
-
-
diff --git a/mbtk/libql_lib_v2/src/ql_common.c b/mbtk/libql_lib_v2/src/ql_common.c
deleted file mode 100755
index d269b82..0000000
--- a/mbtk/libql_lib_v2/src/ql_common.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <stdlib.h>
-#include "ql/ql_common.h"
-#include "mbtk_log.h"
-
-void Ql_Powerdown(int mode)
-{
- switch (mode)
- {
- case 1:
- system("halt");
- break;
- case 2:
- system("reboot");
- break;
- default:
- printf("mode error");
- }
-
- return ;
-
-}
-
-void ql_lib_info_print()
-{
- MBTK_SOURCE_INFO_PRINT("ql_lib");
-}
-
diff --git a/mbtk/libql_lib_v2/src/ql_data_call.c b/mbtk/libql_lib_v2/src/ql_data_call.c
deleted file mode 100755
index 218e14b..0000000
--- a/mbtk/libql_lib_v2/src/ql_data_call.c
+++ /dev/null
@@ -1,658 +0,0 @@
-#include "ql/DSI_ConnectManager.h"
-#include "mbtk_info_api.h"
-#include <fcntl.h>
-
-extern mbtk_info_handle_t* ql_info_handle;
-extern int ql_info_handle_num;
-static bool inited = FALSE;
-
-typedef struct
-{
- bool active;
- uint8 cid;
- int ip_type;
- char user[128];
- char pass[128];
- QL_DSI_AUTH_PREF_T auth;
-} apn_info;
-
-// 2 - 7
-static apn_info ql_apn_info[9]={0};
-static int mbtk_interval_sec = 0;
-static nw_status_cb ql_net_status_cb = NULL;
-static ex_conn_status_cb ql_net_ex_status_cb = NULL;
-static int now_cid = 0;
-
-void ql_wan_net_state_change_cb(const void* data, int data_len)
-{
- uint8 *net_data = NULL;
- net_data = (uint8 *)data;
-
- if(*net_data > 100 && *net_data < 200)
- {
- int cid;
- cid = *net_data;
- cid = cid - 100;
- ql_apn_info[cid].active = FALSE;//close
- if(ql_net_ex_status_cb != NULL)
- {
- ql_net_ex_status_cb(cid, ql_apn_info[cid].ip_type, CONNECT_DISCON, 0);
- }
- }
- else if(*net_data > 200)
- {
- int cid;
- cid = *net_data;
- cid = cid - 200;
- ql_apn_info[cid].active = TRUE;//open
- }
- else
- {
- if(ql_net_status_cb != NULL)
- {
- ql_net_status_cb(*net_data);
-
- if(*net_data == 25 || *net_data == 26 || *net_data == 27)
- {
- ql_net_status_cb(CONNECT_CONSUCCESS);
- }
- }
-
- if(ql_net_ex_status_cb != NULL)
- {
- if(*net_data == 1)
- {
- ql_net_ex_status_cb(now_cid, ql_apn_info[now_cid].ip_type, CONNECT_CONSUCCESS, 0);
- }
- }
- }
-
-}
-
-int ql_wan_init(void)
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(ql_info_handle, ql_wan_net_state_change_cb);
-
- //return 0;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return -1;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- mbtk_pdp_state_change_cb_reg(ql_info_handle, ql_wan_net_state_change_cb);
- }
- //return 0;
- }
-
- mbtk_apn_info_t apns[10] = {0};
- int apn_num = MBTK_APN_CID_MAX;
- int ret = mbtk_apn_get(ql_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- LOGD("mbtk_apn_get ret = %d",ret);
- }
- else
- {
- int i;
- int profile_idx;
- for(i=0;i<MBTK_APN_CID_MAX;i++)
- {
- if(apns[i].cid > 0 && apns[i].cid <= MBTK_APN_CID_MAX)
- {
- profile_idx = apns[i].cid;
- if(apns[i].ip_type == MBTK_IP_TYPE_IPV4V6) // IPV4V6
- ql_apn_info[profile_idx].ip_type = 0;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IP) // IPV4
- ql_apn_info[profile_idx].ip_type = 1;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IPV6) // IPV6
- ql_apn_info[profile_idx].ip_type = 2;
- else
- ql_apn_info[profile_idx].ip_type = 0;
- }
- }
- }
- return 0;
-}
-
-int ql_wan_release(void)
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return -1;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return 0;
- }
- } else {
- ql_info_handle_num--;
- return 0;
- }
- }
- else
- {
- LOGE("DATA handle not inited.");
- return -1;
- }
-}
-/*
-*Set data call over time.
-*/
-int ql_wan_set_autoconnect(int auto_status, int interval_sec)
-{
- if(auto_status == 0) //不开启失败重连
- mbtk_interval_sec = 0;
- else //开启失败重连等待时间
- {
- if(interval_sec <= 0)
- mbtk_interval_sec = interval_sec;
- else
- mbtk_interval_sec = 5; // 默认为5s
- }
- return 0;
-}
-
-#ifdef MBTK_AF_SUPPORT
-int mbtk_route_config(int profile_idx)
-{
- char buf[1024] = {0};
- char dns[128] = {0};
- int offset = 0;
- int fd = -1;
- mbtk_ipv4_info_t ipv4;
- mbtk_ipv6_info_t ipv6;
- sprintf(buf, "route add default dev ccinet%d", profile_idx -1);
- system(buf);
-
- int ret = mbtk_data_call_state_get(ql_info_handle, profile_idx, &ipv4, &ipv6);
- if(ret != 0)
- return -1;
- else
- {
- memset(buf, 0x0, 1024);
- memset(dns, 0x0, 128);
- offset = sprintf(buf, "search lan\n");
- if(ipv4.valid)
- {
- if(inet_ntop(AF_INET, &(ipv4.PrimaryDNS), dns, 32) == NULL) {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- memset(dns, 0x0, 128);
- if(inet_ntop(AF_INET, &(ipv4.SecondaryDNS), dns, 32) == NULL) {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- }
- if(ipv6.valid)
- {
- memset(dns, 0x0, 128);
- if(ipv6_2_str(&(ipv6.PrimaryDNS), dns))
- {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- memset(dns, 0x0, 128);
- if(ipv6_2_str(&(ipv6.SecondaryDNS), dns))
- {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", dns);
- }
- offset += sprintf(buf + offset, "nameserver %s\n", dns);
- }
-
- if(offset > 0)
- {
- fd = open("/tmp/resolv.conf", O_WRONLY | O_TRUNC);
- if(fd < 0)
- {
- LOGD("mbtk_route_config : open fail.");
- return -1;
- }
-
- ret = write(fd, buf, offset);
- if(ret < 0)
- {
- LOGD("mbtk_route_config : write fail.");
- }
-
- close(fd);
- }
- }
-
- return 0;
-}
-#endif
-
-int ql_wan_start_ex(int profile_idx, int op, ex_conn_status_cb nw_cb)
-{
- int ret = -1;
- int count = 0;
- if(ql_info_handle == NULL)
- {
- return -1;
- }
-
- ql_net_ex_status_cb = nw_cb;
- ql_net_status_cb = NULL;
- now_cid = profile_idx;
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGD("ql_wan_start_ex() cid out of range.");
-#if 0
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type ,PDP_CID_EXIST_FAIL, 0);
-#endif
- return -1;
- }
-
- //ql_netw_status_cb(ql_apn_info[profile_idx].cid);
- if(op == 0)
- {
- ret = ql_wan_stop(profile_idx);
- goto exit;
- }
-
-#if 0
- if(ql_apn_info[profile_idx].active)
- {
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, PDP_CID_EXIST_FAIL, 0);
- return -1;
- }
-#endif
-
- if(ql_net_ex_status_cb) {
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_DIAL_IMMEDIATELY, 0);
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_CONNING, 0);
- }
-
-data_call_continue:
- ret = mbtk_data_call_start(ql_info_handle, profile_idx, 0, op == 3 ? TRUE : FALSE, 0);
- if(ret != 0)
- {
- if(mbtk_interval_sec <= 0)
- {
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_DISCON, 0);
- return ret;
- }
- else
- {
- if(count >= 5)
- goto exit;
- sleep(mbtk_interval_sec);
- count++;
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type, CONNECT_REDIAL, 0);
- goto data_call_continue;
- }
- LOGD("mbtk_data_call_start() fail.");
- }
- else
- {
- //ql_apn_info[8].cid=profile_idx;
- //ql_netw_status_cb(CONNECT_CONSUCCESS);
-#ifdef MBTK_AF_SUPPORT
- if(profile_idx == 1)
- {
- mbtk_route_config(profile_idx);
-
- }
-#endif
- LOGD("mbtk_data_call_start() success.");
- }
-exit:
- return ret;
-}
-
-
-/*
-* Start data call.
-*/
-int ql_wan_start(int profile_idx, int op, nw_status_cb nw_cb)
-{
- int ret = -1;
- int count = 0;
- if(ql_info_handle == NULL)
- {
- return -1;
- }
-
- ql_net_status_cb = nw_cb;
- ql_net_ex_status_cb = NULL;
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- ql_net_status_cb(PDP_ERROR_UNSPECIFIED);
- return -1;
- }
-
- //ql_netw_status_cb(ql_apn_info[profile_idx].cid);
- if(op == 0)
- {
- ret = ql_wan_stop(profile_idx);
- goto exit;
- }
-
- if(ql_apn_info[profile_idx].active)
- {
- ql_net_status_cb(PDP_CID_EXIST_FAIL);
- return -1;
- }
-
- ql_net_status_cb(CONNECT_DIAL_IMMEDIATELY);
- ql_net_status_cb(CONNECT_CONNING);
-data_call_continue:
- ret = mbtk_data_call_start(ql_info_handle, profile_idx, 0, op == 3 ? TRUE : FALSE, 0);
- if(ret != 0)
- {
- if(mbtk_interval_sec <= 0)
- {
- ql_net_status_cb(CONNECT_DISCON);
- return ret;
- }
- else
- {
- if(count >= 5)
- goto exit;
- sleep(mbtk_interval_sec);
- count++;
- ql_net_status_cb(CONNECT_REDIAL);
- goto data_call_continue;
- }
- }
- else
- {
- //ql_apn_info[8].cid=profile_idx;
- //ql_netw_status_cb(CONNECT_CONSUCCESS);
- LOGD("mbtk_data_call_start() success.");
- }
-exit:
- return ret;
-}
-
-/*
-* Stop data call.
-*/
-int ql_wan_stop(int profile_idx)
-{
- int err;
- if(ql_info_handle == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
-
-#if 0 //mbtk wyq for data_call add "if 0"
- if(!ql_apn_info[profile_idx].active)
- {
- if(ql_net_ex_status_cb)
- ql_net_ex_status_cb(profile_idx, ql_apn_info[profile_idx].ip_type ,PDP_CID_EXIST_FAIL, 0);
- if(ql_net_status_cb)
- ql_net_status_cb(PDP_CID_EXIST_FAIL);
- return -1;
- }
-#endif
- err = mbtk_data_call_stop(ql_info_handle, profile_idx, 15);
-
- return err;
-}
-
-/*
-* Query data call state.
-*/
-int ql_get_data_call_info(int profile_idx, ql_data_call_info *info)
-{
- if(ql_info_handle == NULL || info == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
- mbtk_ipv4_info_t ipv4;
- mbtk_ipv6_info_t ipv6;
- memset(info, 0, sizeof(ql_data_call_info));
- int ret = mbtk_data_call_state_get(ql_info_handle, profile_idx, &ipv4, &ipv6);
- if(ret != 0)
- return -1;
- else
- {
- info->profile_idx = profile_idx;
- if(ipv4.valid)
- {
- info->ip_type = 1; // IPV4
- info->v4.state = 1;
- sprintf(info->v4.addr.name, "ccinet%d", profile_idx - 1);
- if(inet_ntop(AF_INET, &(ipv4.IPAddr), info->v4.addr.ip, 32) == NULL) {
- LOGD("IP error.");
- } else {
- LOGD("IP : %s", info->v4.addr.ip);
- }
- if(inet_ntop(AF_INET, &(ipv4.PrimaryDNS), info->v4.addr.pri_dns, 32) == NULL) {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", info->v4.addr.pri_dns);
- }
- if(inet_ntop(AF_INET, &(ipv4.SecondaryDNS), info->v4.addr.sec_dns, 32) == NULL) {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", info->v4.addr.sec_dns);
- }
- }
- if(ipv6.valid)
- {
- info->ip_type = 2; // IPV6
- info->v6.state = 1;
- sprintf(info->v6.addr.name, "ccinet%d", profile_idx - 1);
- if(ipv6_2_str(&(ipv6.IPV6Addr), info->v6.addr.ip))
- {
- LOGD("IP error.");
- } else {
- LOGD("IP : %s", info->v6.addr.ip);
- }
- if(ipv6_2_str(&(ipv6.PrimaryDNS), info->v6.addr.pri_dns))
- {
- LOGD("PrimaryDNS error.");
- } else {
- LOGD("PrimaryDNS : %s", info->v6.addr.pri_dns);
- }
- if(ipv6_2_str(&(ipv6.SecondaryDNS), info->v6.addr.sec_dns))
- {
- LOGD("SecondaryDNS error.");
- } else {
- LOGD("SecondaryDNS : %s", info->v6.addr.sec_dns);
- }
- }
- if(ipv4.valid && ipv6.valid)
- info->ip_type = 0; // IPV4V6
- if(!ipv4.valid && !ipv6.valid)
- {
- info->v4.state = 0;
- info->v6.state = 0;
- }
- return 0;
- }
-
-}
-
-/*
-* Set specific APN informations.
-*
-* cid : 2-7
-*/
-int ql_wan_setapn(int profile_idx, int ip_type, const char *apn, const char *userName,
- const char *password, QL_DSI_AUTH_PREF_T auth)
-{
- if(ql_info_handle == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
- /*
- QL_DSI_AUTH_PREF_NULL = 0, //无认证
- QL_DSI_AUTH_PREF_ONLY_PAP, //PAP 认证
- QL_DSI_AUTH_PREF_ONLY_CHAP, //CHAP 认证
- QL_DSI_AUTH_PREF_BOTH_PAP_CHAP //PAP 和 CHAP 认证
- */
- char mbtk_auth[64]={0};
- if(auth == QL_DSI_AUTH_PREF_NULL)
- memcpy(mbtk_auth,"NONE",strlen("NONE")+1);
- else if(auth == QL_DSI_AUTH_PREF_ONLY_PAP)
- memcpy(mbtk_auth,"PAP",strlen("PAP")+1);
- else if(auth == QL_DSI_AUTH_PREF_ONLY_CHAP)
- memcpy(mbtk_auth,"CHAP",strlen("CHAP")+1);
- else
- {
- LOGD("auth input error!");
- return -1;
- }
-
- memset(&(ql_apn_info[profile_idx]), 0, sizeof(apn_info));
- ql_apn_info[profile_idx].cid = profile_idx;
- ql_apn_info[profile_idx].ip_type = ip_type;
- if(!str_empty(userName) && !str_empty(password)) {
- memcpy(ql_apn_info[profile_idx].user, userName, strlen(userName));
- memcpy(ql_apn_info[profile_idx].pass, password, strlen(password));
- ql_apn_info[profile_idx].auth = auth;
- LOGD("ql_wan_setapn: %d, %d, %s, %s, %s, %s",profile_idx, ip_type, apn, userName, password, mbtk_auth);
- } else {
- LOGD("ql_wan_setapn: %d, %d, %s, NULL, NULL, %s",profile_idx, ip_type, apn, mbtk_auth);
- }
-
- /*
- if(ip_type < 0 || ip_type > 3)
- ql_netw_status_cb(PDP_UNKNOWN_PDP_ADDRESS_TYPE);
- */
- if(ip_type == 0) // IPV4V6
- ip_type = MBTK_IP_TYPE_IPV4V6;
- else if(ip_type == 1) // IPV4
- ip_type = MBTK_IP_TYPE_IP;
- else if(ip_type == 2) // IPV6
- ip_type = MBTK_IP_TYPE_IPV6;
-
- return mbtk_apn_set(ql_info_handle, profile_idx, ip_type, apn, userName, password, mbtk_auth);
-}
-
-/*
-* Get current all APN informations.
-*/
-int __ql_wan_getapn(int profile_idx, int *ip_type, char *apn, int apnLen, char *userName, int userLen, char *password, int pwdLen,int* auth)
-{
- if(ql_info_handle == NULL || apn == NULL)
- {
- return -1;
- }
- if(profile_idx < MBTK_APN_CID_MIN || profile_idx > MBTK_APN_CID_MAX)
- {
- LOGE("CID error.");
- return -1;
- }
- mbtk_apn_info_t apns[10];
- int apn_num = MBTK_APN_CID_MAX;
- int ret = mbtk_apn_get(ql_info_handle, &apn_num, apns);
- if(ret != 0)
- {
- LOGD("mbtk_apn_get ret = %d",ret);
- return -1;
- }
- else
- {
- int i;
- for(i=0;i<MBTK_APN_CID_MAX;i++)
- {
- if(apns[i].cid == profile_idx)
- break;
- }
- if(i == MBTK_APN_CID_MAX)
- return -1;
- LOGD("cid = %d",i);
- if(apns[i].ip_type == MBTK_IP_TYPE_IPV4V6) // IPV4V6
- *ip_type = 0;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IP) // IPV4
- *ip_type = 1;
- else if(apns[i].ip_type == MBTK_IP_TYPE_IPV6) // IPV6
- *ip_type = 2;
- else
- *ip_type = 0;
-
- if(strlen(apns[i].apn)+1 > apnLen)
- return -1;
- else
- memcpy(apn, apns[i].apn,strlen(apns[i].apn)+1);
-
- if(strlen(apns[i].user)+1 > userLen)
- return -1;
- else
- {
- if(strlen(apns[i].user) > 0)
- memcpy(userName, apns[i].user, strlen(apns[i].user)+1);
- else
- memcpy(userName, ql_apn_info[profile_idx].user, strlen(ql_apn_info[profile_idx].user)+1);
- }
-
- if(strlen(apns[i].pass)+1 > pwdLen)
- return -1;
- else
- {
- if(strlen(apns[i].pass) > 0)
- memcpy(password, apns[i].pass, strlen(apns[i].pass)+1);
- else
- memcpy(password, ql_apn_info[profile_idx].pass, strlen(ql_apn_info[profile_idx].pass)+1);
- }
-
- if(strlen(apns[i].auth) > 0) {
- if(strcmp(apns[i].auth, "NONE") == 0)
- *auth = QL_DSI_AUTH_PREF_NULL;
- else if(strcmp(apns[i].auth, "PAP") == 0)
- *auth = QL_DSI_AUTH_PREF_ONLY_PAP;
- else if(strcmp(apns[i].auth, "CHAP") == 0)
- *auth = QL_DSI_AUTH_PREF_ONLY_CHAP;
- else
- {
- LOGD("auth error!");
- return -1;
- }
- } else {
- *auth = ql_apn_info[profile_idx].auth;
- }
-
- return 0;
- }
-}
-
-
diff --git a/mbtk/libql_lib_v2/src/ql_dev_api.c b/mbtk/libql_lib_v2/src/ql_dev_api.c
deleted file mode 100755
index d473ab8..0000000
--- a/mbtk/libql_lib_v2/src/ql_dev_api.c
+++ /dev/null
@@ -1,179 +0,0 @@
-//**********************
-#include "ql/ql_dev.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-//**********************
-
-mbtk_info_handle_t* ql_info_handle = NULL;
-int ql_info_handle_num = 0;
-static bool inited = FALSE;
-
-//**********************
-QL_DEV_ERROR_CODE ql_dev_init()
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- return QL_DEV_SUCCESS;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return QL_DEV_GENERIC_FAILURE;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- }
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_release()
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return QL_DEV_GENERIC_FAILURE;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return QL_DEV_SUCCESS;
- }
- } else {
- ql_info_handle_num--;
- return QL_DEV_SUCCESS;
- }
- }
- else
- {
- LOGE("DEV handle not inited.");
- return QL_DEV_GENERIC_FAILURE;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_imei(char* imei)
-{
- if(ql_info_handle == NULL || imei == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_imei_get(ql_info_handle, imei)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_firmware_version(char* version)
-{
- if(ql_info_handle == NULL || version == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_version_get(ql_info_handle, version)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_model(char* model)
-{
- if(ql_info_handle == NULL || model == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_model_get(ql_info_handle, model)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_sn(char* sn)
-{
- if(ql_info_handle == NULL || sn == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_sn_get(ql_info_handle, sn)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_set_modem_fun(QL_DEV_MODEM_FUNCTION function, int rst)
-{
- if(ql_info_handle == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
- mbtk_modem_info_t modem;
- modem.rst = rst;
- switch (function)
- {
- case QL_DEV_MODEM_MIN_FUN:
- modem.fun = MBTK_DEV_MODEM_MIN_FUN;
- break;
- case QL_DEV_MODEM_FULL_FUN:
- modem.fun = MBTK_DEV_MODEM_FULL_FUN;
- break;
- case QL_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS:
- modem.fun = MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS;
- break;
- case QL_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS:
- modem.fun = MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS;
- break;
- case QL_DEV_MODEM_DISABLE_SIM:
- modem.fun = MBTK_DEV_MODEM_DISABLE_SIM;
- break;
- case QL_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE:
- modem.fun = MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE;
- break;
- default:
- break;
- }
- if(mbtk_set_modem_fun(ql_info_handle, &modem)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-QL_DEV_ERROR_CODE ql_dev_get_modem_fun(int *function)
-{
- if(ql_info_handle == NULL || function == NULL)
- {
- LOGE("ARG error.");
- return QL_DEV_GENERIC_FAILURE;
- }
-
- if(mbtk_get_modem_fun(ql_info_handle, function)) {
- return QL_DEV_GENERIC_FAILURE;
- } else {
- return QL_DEV_SUCCESS;
- }
-}
-
-//**********************
diff --git a/mbtk/libql_lib_v2/src/ql_fota.c b/mbtk/libql_lib_v2/src/ql_fota.c
deleted file mode 100755
index eb0afc7..0000000
--- a/mbtk/libql_lib_v2/src/ql_fota.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <fcntl.h>
-#include "mbtk_fota.h"
-
-
-int ql_fota_init(fota_callback cb)
-{
- return mbtk_fota_init(cb);
-}
-
-/*******************************************************************************
-* @brief write firmware package, the firmware package is written in segments.
- and The result of the write is output by calling the callback function.
- the firmware package size must less than 32MB
- @param
- fname: firmware package file
- segment_size: the length of once write, recommending 3*1024*1024 bytes
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_fw_write(char* fname, int segment_size)
-{
- return mbtk_fota_fw_write(fname, segment_size);
-}
-
-
-/*******************************************************************************
-* @brief download firmware by url, and write firmware package, the firmware
- package is written in segments. The result of the write is output by
- calling the callback function. the firmware package size must less than
- 32MB
- @param
- url: [IN] the address of download firmware package file, the url
- support http or https protocol.
- segment_size: [IN] the length of once write, recommending 3*1024*1024 bytes
- conn_timeout: [IN] timeout to connect to the server, if set 0 that means
- switch to the default build-in connection timeout(300s)
- download_timeout: [IN] timeout for download the firmware file. if set 0 that means
- it never time out
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_fw_write_by_url(char* url, int segment_size,
- int conn_timeout, int download_timeout)
-{
- return mbtk_fota_fw_write_by_url(url, segment_size,conn_timeout, download_timeout);
-}
-/*******************************************************************************
-* @brief reboot system and clear env
- @param
- is_reboot: if set 1, after fota success, reboot system
- @return
- if success return 0, else return -1
- *******************************************************************************/
-int ql_fota_done(int is_reboot)
-{
- return mbtk_fota_done1(is_reboot);
-}
diff --git a/mbtk/libql_lib_v2/src/ql_gpio.c b/mbtk/libql_lib_v2/src/ql_gpio.c
deleted file mode 100755
index 9be2026..0000000
--- a/mbtk/libql_lib_v2/src/ql_gpio.c
+++ /dev/null
@@ -1,741 +0,0 @@
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <fcntl.h>
-
-#include "mbtk_log.h"
-#include "mbtk_utils.h"
-#include "ql/ql_gpio.h"
-
-typedef struct {
- int pin;
- int gpio;
-} pin_gpio_mmap_s;
-
-#ifdef MBTK_PROJECT_L508
-static pin_gpio_mmap_s pin_gpio_mmap[] = {
- {PINNAME_GPIO1, -1}, /*PIN-1*/
- {PINNAME_GPIO2, -1}, /*PIN-2*/
- {PINNAME_GPIO3, -1}, /*PIN-3*/
- {PINNAME_GPIO4, -1}, /*PIN-4*/
- {PINNAME_GPIO5, -1}, /*PIN-5*/
- {PINNAME_NET_STATUS, -1}, /*PIN-6*/
- {PINNAME_DBG_RXD, -1}, /*PIN-11*/
- {PINNAME_DBG_TXD, -1}, /*PIN-12*/
- {PINNAME_USIM_PRESENCE, 19}, /*PIN-13*/
- {PINNAME_SD_INT_DET, -1}, /*PIN-23*/
- {PINNAME_PCM_IN, 28}, /*PIN-24*/
- {PINNAME_PCM_OUT, 27}, /*PIN-25*/
- {PINNAME_PCM_SYNC, -1}, /*PIN-26*/
- {PINNAME_PCM_CLK, -1}, /*PIN-27*/
- {PINNAME_SDC2_DATA3, 21}, /*PIN-28*/
- {PINNAME_SDC2_DATA2, -1}, /*PIN-29*/
- {PINNAME_SDC2_DATA1, 4}, /*PIN-30*/
- {PINNAME_SDC2_DATA0, -1}, /*PIN-31*/
- {PINNAME_SDC2_CLK, -1}, /*PIN-32*/
- {PINNAME_SDC2_CMD, -1}, /*PIN-33*/
- {PINNAME_SPI_CS_N, -1}, /*PIN-37*/
- {PINNAME_SPI_MOSI, -1}, /*PIN-38*/
- {PINNAME_SPI_MISO, -1}, /*PIN-39*/
- {PINNAME_SPI_CLK, -1}, /*PIN-40*/
- {PINNAME_I2C_SCL, -1}, /*PIN-41*/
- {PINNAME_I2C_SDA, -1}, /*PIN-42*/
- {PINNAME_GPIO20, 20}, /*PIN-45*/
- {PINNAME_STATUS, 13}, /*PIN-49*/
- {PINNAME_NETLIGHT, 14}, /*PIN-51*/
- {PINNAME_GPIO6, -1}, /*PIN-62*/
- {PINNAME_DCD, -1}, /*PIN-63*/
- {PINNAME_DTR, -1}, /*PIN-66*/
- {PINNAME_MAIN_CTS, -1}, /*PIN-64*/
- {PINNAME_MAIN_RTS, -1}, /*PIN-65*/
- {PINNAME_MAIN_TXD, -1}, /*PIN-67*/
- {PINNAME_MAIN_RXD, -1}, /*PIN-68*/
- {PINNAME_RMII_RXD1, -1}, /*PIN-73*/
- {PINNAME_RMII_RXCL, -1}, /*PIN-74*/
- {PINNAME_RMII_CLK, 3}, /*PIN-75*/
- {PINNAME_RMII_RXD0, 1}, /*PIN-76*/
- {PINNAME_RMII_TXD0, -1}, /*PIN-77*/
- {PINNAME_RMII_TXD1, -1}, /*PIN-78*/
- {PINNAME_RMII_RXD2, -1}, /*PIN-79*/
- {PINNAME_RMII_TXD2, -1}, /*PIN-80*/
- {PINNAME_RMII_TX_CTRL, -1}, /*PIN-81*/
- {PINNAME_RMII_RXD3, -1}, /*PIN-82*/
- {PINNAME_RMII_TXCL, -1}, /*PIN-83*/
- {PINNAME_RMII_TXD3, 5}, /*PIN-84*/
- {PINNAME_WLAN_SLP_CLK, -1}, /*PIN-118*/
- {PINNAME_RMII_RST, 20}, /*PIN-119*/
- {PINNAME_RMII_INT, -1}, /*PIN-120*/
- {PINNAME_RMII_MDIO, 17}, /*PIN-121*/
- {PINNAME_RMII_MDC, 16}, /*PIN-122*/
- {PINNAME_PRI_TDI, 117}, /*PIN-123*/
- {PINNAME_WLAN_PER_EN, 24}, /*PIN-127*/
- {PINNAME_WLAN_WAKE, 21}, /*PIN-135*/
- {PINNAME_WLAN_EN, 22}, /*PIN-136*/
- {PINNAME_GPIO8, -1}, /*PIN-139*/
-};
-#else
-static pin_gpio_mmap_s pin_gpio_mmap[] = {
- {PINNAME_GPIO1, -1}, /*PIN-1*/
- {PINNAME_GPIO2, -1}, /*PIN-2*/
- {PINNAME_GPIO3, -1}, /*PIN-3*/
- {PINNAME_GPIO4, -1}, /*PIN-4*/
- {PINNAME_GPIO5, -1}, /*PIN-5*/
- {PINNAME_NET_STATUS, -1}, /*PIN-6*/
- {PINNAME_DBG_RXD, -1}, /*PIN-11*/
- {PINNAME_DBG_TXD, -1}, /*PIN-12*/
- {PINNAME_USIM_PRESENCE, 19}, /*PIN-13*/
- {PINNAME_SD_INT_DET, -1}, /*PIN-23*/
- {PINNAME_PCM_IN, 28}, /*PIN-24*/
- {PINNAME_PCM_OUT, 27}, /*PIN-25*/
- {PINNAME_PCM_SYNC, -1}, /*PIN-26*/
- {PINNAME_PCM_CLK, -1}, /*PIN-27*/
- {PINNAME_SDC2_DATA3, 21}, /*PIN-28*/
- {PINNAME_SDC2_DATA2, -1}, /*PIN-29*/
- {PINNAME_SDC2_DATA1, 4}, /*PIN-30*/
- {PINNAME_SDC2_DATA0, -1}, /*PIN-31*/
- {PINNAME_SDC2_CLK, -1}, /*PIN-32*/
- {PINNAME_SDC2_CMD, -1}, /*PIN-33*/
- {PINNAME_SPI_CS_N, -1}, /*PIN-37*/
- {PINNAME_SPI_MOSI, -1}, /*PIN-38*/
- {PINNAME_SPI_MISO, -1}, /*PIN-39*/
- {PINNAME_SPI_CLK, -1}, /*PIN-40*/
- {PINNAME_I2C_SCL, -1}, /*PIN-41*/
- {PINNAME_I2C_SDA, -1}, /*PIN-42*/
- {PINNAME_GPIO20, 20}, /*PIN-45*/
- {PINNAME_STATUS, 13}, /*PIN-49*/
- {PINNAME_NETLIGHT, 14}, /*PIN-51*/
- {PINNAME_GPIO6, -1}, /*PIN-62*/
- {PINNAME_DCD, -1}, /*PIN-63*/
- {PINNAME_DTR, -1}, /*PIN-66*/
- {PINNAME_MAIN_CTS, -1}, /*PIN-64*/
- {PINNAME_MAIN_RTS, -1}, /*PIN-65*/
- {PINNAME_MAIN_TXD, -1}, /*PIN-67*/
- {PINNAME_MAIN_RXD, -1}, /*PIN-68*/
- {PINNAME_RMII_RXD1, -1}, /*PIN-73*/
- {PINNAME_RMII_RXCL, -1}, /*PIN-74*/
- {PINNAME_RMII_CLK, 3}, /*PIN-75*/
- {PINNAME_RMII_RXD0, 1}, /*PIN-76*/
- {PINNAME_RMII_TXD0, -1}, /*PIN-77*/
- {PINNAME_RMII_TXD1, -1}, /*PIN-78*/
- {PINNAME_RMII_RXD2, -1}, /*PIN-79*/
- {PINNAME_RMII_TXD2, -1}, /*PIN-80*/
- {PINNAME_RMII_TX_CTRL, -1}, /*PIN-81*/
- {PINNAME_RMII_RXD3, -1}, /*PIN-82*/
- {PINNAME_RMII_TXCL, -1}, /*PIN-83*/
- {PINNAME_RMII_TXD3, 5}, /*PIN-84*/
- {PINNAME_WLAN_SLP_CLK, -1}, /*PIN-118*/
- {PINNAME_RMII_RST, 20}, /*PIN-119*/
- {PINNAME_RMII_INT, -1}, /*PIN-120*/
- {PINNAME_RMII_MDIO, 17}, /*PIN-121*/
- {PINNAME_RMII_MDC, 16}, /*PIN-122*/
- {PINNAME_PRI_TDI, 117}, /*PIN-123*/
- {PINNAME_WLAN_PER_EN, 24}, /*PIN-127*/
- {PINNAME_WLAN_WAKE, 21}, /*PIN-135*/
- {PINNAME_WLAN_EN, 22}, /*PIN-136*/
- {PINNAME_GPIO8, -1}, /*PIN-139*/
-};
-
-#endif
-
-static int gpio_export(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
-
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == 0)
- {
- LOGD("%d has export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/export",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio export file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result = write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- LOGE("Gpio[%d] export fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_unexport(int gpio)
-{
- int index=0;
- int file=-1;
- int result =-1;
- char pin_index_buffer[5]= {0};
- char buffer[50];
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- if(access(buffer , F_OK) == -1)
- {
- LOGD("%d not export.", gpio);
- return 0;
- }
-
- file = open("/sys/class/gpio/unexport",O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio unexport file fail.");
- return -1;
- }
-
- memset(pin_index_buffer,0,5);
- sprintf(pin_index_buffer,"%d", gpio);
- result=write(file,pin_index_buffer,strlen(pin_index_buffer));
- if(result < 0)
- {
- close(file);
- LOGE("Gpio[%d] unexport fail.", gpio);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_direct_get(int gpio, char *value, int value_size)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- memset(value, 0x0, value_size);
- result = read(file,value,value_size);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-
-static int gpio_direct_set(int gpio, char *value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
- file = open(buffer, O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] direct fail.", gpio);
- return -1;
- }
-
- result = write(file,value,strlen(value));
- if(result != strlen(value))
- {
- LOGE("Set gpio[%d] direct fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int gpio_value_get(int gpio)
-{
- char buffer[50];
- char path[10];
- int file =-1;
- int result =-1;
- int value;
-
- memset(path,0,50);
- memset(buffer,0,10);
- sprintf(path,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(path,O_RDONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] fail.", gpio);
- return -1;
- }
- result = read(file,buffer,5);
- if(result <= 0)
- {
- LOGE("Get gpio[%d] value fail", gpio);
- close(file);
- return -1;
- }
- close(file);
- value = atoi(buffer);
- return value;
-}
-
-static int gpio_value_set(int gpio, int value)
-{
- char buffer[50]= {0};
- int file =-1;
- int result =-1;
-
- memset(buffer,0,50);
- sprintf(buffer,"/sys/class/gpio/gpio%d/value", gpio);
- file = open(buffer,O_WRONLY);
- if(file == -1)
- {
- LOGE("Open gpio[%d] value fail.", gpio);
- return -1;
- }
- if(value == 0) {
- result = write(file,"0",1);
- } else {
- result = write(file,"1",1);
- }
- if(result != 1)
- {
- LOGE("Set gpio[%d] value fail.", gpio);
- close(file);
- return -1;
- }
- close(file);
-
- return 0;
-}
-
-static int pin_2_gpio(Enum_PinName pin_name)
-{
-#if 0
- switch(pin_name){
- case PINNAME_USIM_PRESENCE: /*PIN-13*/
- return 19;
- case PINNAME_PCM_IN: /*PIN-24*/
- return 28;
- case PINNAME_PCM_OUT: /*PIN-25*/
- return 27;
- case PINNAME_RMII_CLK: /*PIN-75*/
- return 3;
- case PINNAME_RMII_RXD0: /*PIN-76*/
- return 1;
- case PINNAME_RMII_RST: /*PIN-119*/
- return 20;
- case PINNAME_RMII_MDIO: /*PIN-121*/
- return 17;
- case PINNAME_RMII_MDC: /*PIN-122*/
- return 16;
- case PINNAME_WLAN_PER_EN: /*PIN-127*/
- return 24;
- case PINNAME_WLAN_WAKE: /*PIN-135*/
- return 21;
- case PINNAME_WLAN_EN: /*PIN-136*/
- return 22;
-
- // Unknown PIN.
- case PINNAME_GPIO1: /*PIN-1*/
- case PINNAME_GPIO2: /*PIN-2*/
- case PINNAME_GPIO3: /*PIN-3*/
- case PINNAME_GPIO4: /*PIN-4*/
- case PINNAME_GPIO5: /*PIN-5*/
- case PINNAME_NET_STATUS: /*PIN-6*/
- case PINNAME_DBG_RXD: /*PIN-11*/
- case PINNAME_DBG_TXD: /*PIN-12*/
- case PINNAME_SD_INT_DET: /*PIN-23*/
- case PINNAME_PCM_SYNC: /*PIN-26*/
- case PINNAME_PCM_CLK: /*PIN-27*/
- case PINNAME_SDC2_DATA3: /*PIN-28*/
- case PINNAME_SDC2_DATA2: /*PIN-29*/
- case PINNAME_SDC2_DATA1: /*PIN-30*/
- case PINNAME_SDC2_DATA0: /*PIN-31*/
- case PINNAME_SDC2_CLK: /*PIN-32*/
- case PINNAME_SDC2_CMD: /*PIN-33*/
- case PINNAME_SPI_CS_N: /*PIN-37*/
- case PINNAME_SPI_MOSI: /*PIN-38*/
- case PINNAME_SPI_MISO: /*PIN-39*/
- case PINNAME_SPI_CLK: /*PIN-40*/
- case PINNAME_I2C_SCL: /*PIN-41*/
- case PINNAME_I2C_SDA: /*PIN-42*/
- case PINNAME_GPIO6: /*PIN-62*/
- case PINNAME_DCD: /*PIN-63*/
- case PINNAME_DTR: /*PIN-66*/
- case PINNAME_MAIN_CTS: /*PIN-64*/
- case PINNAME_MAIN_RTS: /*PIN-65*/
- case PINNAME_MAIN_TXD: /*PIN-67*/
- case PINNAME_MAIN_RXD: /*PIN-68*/
- case PINNAME_RMII_RXD1: /*PIN-73*/
- case PINNAME_RMII_RXCL: /*PIN-74*/
- case PINNAME_RMII_TXD0: /*PIN-77*/
- case PINNAME_RMII_TXD1: /*PIN-78*/
- case PINNAME_RMII_RXD2: /*PIN-79*/
- case PINNAME_RMII_TXD2: /*PIN-80*/
- case PINNAME_RMII_TX_CTRL: /*PIN-81*/
- case PINNAME_RMII_RXD3: /*PIN-82*/
- case PINNAME_RMII_TXCL: /*PIN-83*/
- case PINNAME_RMII_TXD3: /*PIN-84*/
- case PINNAME_WLAN_SLP_CLK: /*PIN-118*/
- case PINNAME_RMII_INT: /*PIN-120*/
- case PINNAME_GPIO8: /*PIN-139*/
- default:
- LOGE("Unknown PIN : %d", pin_name);
- return -1;
- }
-#else
- int i = 0;
- while(i < ARRAY_SIZE(pin_gpio_mmap)) {
- if(pin_name == pin_gpio_mmap[i].pin) {
- return pin_gpio_mmap[i].gpio;
- }
- i++;
- }
-
- LOGE("No found PIN : %d", pin_name);
- return -1;
-#endif
-}
-
-
-/*****************************************************************
-* Function: Ql_GPIO_Init
-*
-* Description:
-* This function enables the GPIO function of the specified pin,
-* and initialize the configurations, including direction,
-* level and pull selection.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* dir:
-* The initial direction of GPIO, one value of Enum_PinDirection.
-* level:
-* The initial level of GPIO, one value of Enum_PinLevel.
-* pull_sel:
-* Pull selection, one value of Enum_PinPullSel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_Init(Enum_PinName pin_name,
- Enum_PinDirection dir,
- Enum_PinLevel level,
- Enum_PinPullSel pull_sel
- )
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_export(gpio))
- {
- LOGE("gpio_export() fail.");
- return RES_IO_ERROR;
- }
-
- if(gpio_direct_set(gpio, dir == PINDIRECTION_IN ? "in" : "out"))
- {
- LOGE("gpio_direct_set() fail.");
- return RES_IO_ERROR;
- }
-
- if(dir == PINDIRECTION_OUT){
- if(gpio_value_set(gpio, level))
- {
- LOGE("gpio_value_set() fail.");
- return RES_IO_ERROR;
- }
- }
- // No support pull mode now.
-
- return RES_OK;
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_Base_Init
-*
-* Description:
-* This function enables the GPIO function of the specified pin.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-*
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-*****************************************************************/
-int Ql_GPIO_Base_Init(Enum_PinName pin_name );
-
-/*****************************************************************
-* Function: Ql_GPIO_SetLevel
-*
-* Description:
-* This function sets the level of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* level:
-* The initial level of GPIO, one value of Enum_PinLevel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetLevel(Enum_PinName pin_name, Enum_PinLevel level)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_value_set(gpio, level)) {
- LOGE("gpio_value_set() fail.");
- return RES_IO_ERROR;
- } else {
- return RES_OK;
- }
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_GetLevel
-*
-* Description:
-* This function gets the level of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* The level value of the specified GPIO, which is
-* nonnegative integer.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-*****************************************************************/
-int Ql_GPIO_GetLevel(Enum_PinName pin_name)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- return gpio_value_get(gpio);
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_SetDirection
-*
-* Description:
-* This function sets the direction of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* dir:
-* The initial direction of GPIO, one value of Enum_PinDirection.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetDirection(Enum_PinName pin_name, Enum_PinDirection dir)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_direct_set(gpio, dir == PINDIRECTION_IN ? "in" : "out")) {
- LOGE("gpio_direct_set() fail.");
- return RES_IO_ERROR;
- } else {
- return RES_OK;
- }
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_GetDirection
-*
-* Description:
-* This function gets the direction of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* 0 INPUT
-* 1 OUTPUT
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_GetDirection(Enum_PinName pin_name)
-{
- char buff[10];
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_direct_get(gpio, buff, 10)) {
- LOGE("gpio_direct_get() fail.");
- return RES_IO_NOT_SUPPORT;
- } else {
- if(strncmp(buff, "in",2) == 0) {
- return PINDIRECTION_IN;
- } else if(strncmp(buff, "out",3) == 0) {
- return PINDIRECTION_OUT;
- } else {
- return RES_IO_NOT_SUPPORT;
- }
- }
-}
-
-/*****************************************************************
-* Function: Ql_GPIO_SetPullSelection
-*
-* Description:
-* This function sets the pull selection of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Enum_PinPullSel:
-* Pull selection, one value of Enum_PinPullSel.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_SetPullSelection(Enum_PinName pin_name, Enum_PinPullSel pull_sel);
-
-/*****************************************************************
-* Function: ql_gpio_get_pull_selection
-*
-* Description:
-* This function gets the pull selection of the specified GPIO.
-*
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* 0<<13 no pull
-* 5<<13 pull down
-* 6<<13 pull up
-*****************************************************************/
-int Ql_GPIO_GetPullSelection(Enum_PinName pin_name);
-
-
-/*****************************************************************
-* Function: Ql_GPIO_Uninit
-*
-* Description:
-* This function releases the specified GPIO that was
-* initialized by calling Ql_GPIO_Init() previously.
-* After releasing, the GPIO can be used for other purpose.
-* Parameters:
-* pin_name:
-* Pin name, one value of Enum_PinName.
-* Return:
-* RES_OK, this function succeeds.
-* RES_IO_NOT_SUPPORT, the input GPIO is invalid.
-* RES_IO_ERR, the function failed
-* other place. For example this GPIO has been using as EINT.
-*****************************************************************/
-int Ql_GPIO_Uninit(Enum_PinName pin_name)
-{
- int gpio = pin_2_gpio(pin_name);
- if(gpio == -1) {
- return RES_IO_ERROR;
- }
- LOGD("PIN-%d => GPIO-%d", pin_name, gpio);
-
- if(gpio_unexport(gpio))
- {
- LOGE("gpio_unexport() fail.");
- return RES_IO_ERROR;
- }
-
- return RES_OK;
-}
-
-//------------------------------------------------------------------------------
-/*
-* Function: Ql_EINT_Enable
-*
-* Description:
-* Set the interrupt sense mode, and enable interrupt.
-*
-* Parameters:
-* eint_pin_name:
-* EINT pin name, one value of Enum_PinName that has
-* the interrupt function.
-*
-* eint_type:
-* Interrupt type, level-triggered or edge-triggered.
-* Now, only edge-triggered interrupt is supported.
-*
-* eint_callback:
-* call back function
-*
-* Return:
-* RES_OK, this function succeeds.
-* else failed to execute the function.
-*/
-//------------------------------------------------------------------------------
-int Ql_EINT_Enable(Enum_PinName eint_pin_name, Enum_EintType eint_type, Ql_EINT_Callback eint_callback);
-
-
-//------------------------------------------------------------------------------
-/*
-* Function: Ql_EINT_Disable
-*
-* Description:
-* Disable the interrupt sense.
-*
-* Parameters:
-* eint_pin_name:
-* EINT pin name, one value of Enum_PinName that has
-* the interrupt function.
-*
-* Return:
-* RES_OK, this function succeeds.
-* else failed to execute the function.
-*/
-//------------------------------------------------------------------------------
-int Ql_EINT_Disable(Enum_PinName eint_pin_name);
-
diff --git a/mbtk/libql_lib_v2/src/ql_i2c.c b/mbtk/libql_lib_v2/src/ql_i2c.c
deleted file mode 100755
index 8b8c6a0..0000000
--- a/mbtk/libql_lib_v2/src/ql_i2c.c
+++ /dev/null
@@ -1,222 +0,0 @@
-#include <stdio.h>
-#include <linux/types.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <assert.h>
-#include <string.h>
-#include <linux/i2c.h>
-#include <linux/i2c-dev.h>
-
-#include "mbtk_log.h"
-#include "ql/ql_i2c.h"
-
-int Ql_I2C_Init(char *dev_name)
-{
- int fd = open(dev_name, O_RDWR);
- if(fd <= 0) {
- LOGE("open (%s) fail:errno - %d", dev_name, errno);
- return -1;
- }
- return fd;
-}
-
-
-int Ql_I2C_Read(int fd, unsigned short slaveAddr, unsigned char ofstAddr, unsigned char* ptrBuff, unsigned short length)
-{
- uint8_t outbuf[1];
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[2];
-
- outbuf[0] = ofstAddr;
- messages[0].addr = slaveAddr;
- messages[0].flags = 0;
- messages[0].len = sizeof(outbuf);
- messages[0].buf = outbuf;
-
- /* The data will get returned in this structure */
- messages[1].addr = slaveAddr;
- messages[1].flags = I2C_M_RD/* | I2C_M_NOSTART*/;
- messages[1].len = length;
- messages[1].buf = ptrBuff;
-
- /* Send the request to the kernel and get the result back */
- packets.msgs = messages;
- packets.nmsgs = 2;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- LOGE("Error: Unable to send data");
- return -1;
- }
-
- return 0;
-}
-
-
-int Ql_I2C_Write(int fd, unsigned short slaveAddr, unsigned char ofstAddr, unsigned char* ptrData, unsigned short length)
-{
- uint8_t *outbuf = NULL;
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[1];
-
- outbuf = malloc(length + 1);
- if (!outbuf) {
- printf("Error: No memory for buffer\n");
- return -1;
- }
-
- outbuf[0] = ofstAddr;
- memcpy(outbuf + 1, ptrData, length);
-
- messages[0].addr = slaveAddr;
- messages[0].flags = 0;
- messages[0].len = length + 1;
- messages[0].buf = outbuf;
-
- /* Transfer the i2c packets to the kernel and verify it worked */
- packets.msgs = messages;
- packets.nmsgs = 1;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- printf("Error: Unable to send data");
- free(outbuf);
- return -1;
- }
-
- free(outbuf);
-
- return 0;
-}
-
-
-int Ql_I2C_Deinit(int fd)
-{
- if (fd <= 0)
- return -1;
-
- close(fd);
- return 0;
-}
-
-#if 0
-int open_i2c_dev(int i2cbus, char *filename, size_t size, int quiet)
-{
- int file, len;
-
- len = snprintf(filename, size, "/dev/i2c/%d", i2cbus);
- if (len >= (int)size) {
- fprintf(stderr, "%s: path truncated\n", filename);
- return -EOVERFLOW;
- }
- file = open(filename, O_RDWR);
-
- if (file < 0 && (errno == ENOENT || errno == ENOTDIR)) {
- len = snprintf(filename, size, "/dev/i2c-%d", i2cbus);
- if (len >= (int)size) {
- fprintf(stderr, "%s: path truncated\n", filename);
- return -EOVERFLOW;
- }
- file = open(filename, O_RDWR);
- }
- ...
- return file;
-}
-
-static int i2c_read_bytes(int fd, uint8_t slave_addr, uint8_t reg_addr, uint8_t *values, uint8_t len)
-{
- uint8_t outbuf[1];
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[2];
-
- outbuf[0] = reg_addr;
- messages[0].addr = slave_addr;
- messages[0].flags = 0;
- messages[0].len = sizeof(outbuf);
- messages[0].buf = outbuf;
-
- /* The data will get returned in this structure */
- messages[1].addr = slave_addr;
- messages[1].flags = I2C_M_RD/* | I2C_M_NOSTART*/;
- messages[1].len = len;
- messages[1].buf = values;
-
- /* Send the request to the kernel and get the result back */
- packets.msgs = messages;
- packets.nmsgs = 2;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- printf("Error: Unable to send data");
- return -1;
- }
-
- return 0;
-}
-
-
-static int i2c_write_bytes(int fd, uint8_t slave_addr, uint8_t reg_addr, uint8_t *values, uint8_t len)
-{
- uint8_t *outbuf = NULL;
- struct i2c_rdwr_ioctl_data packets;
- struct i2c_msg messages[1];
-
- outbuf = malloc(len + 1);
- if (!outbuf) {
- printf("Error: No memory for buffer\n");
- return -1;
- }
-
- outbuf[0] = reg_addr;
- memcpy(outbuf + 1, values, len);
-
- messages[0].addr = slave_addr;
- messages[0].flags = 0;
- messages[0].len = len + 1;
- messages[0].buf = outbuf;
-
- /* Transfer the i2c packets to the kernel and verify it worked */
- packets.msgs = messages;
- packets.nmsgs = 1;
- if(ioctl(fd, I2C_RDWR, &packets) < 0)
- {
- printf("Error: Unable to send data");
- free(outbuf);
- return -1;
- }
-
- free(outbuf);
-
- return 0;
-}
-
-
-int set_slave_addr(int file, int address, int force)
-{
- /* With force, let the user read from/write to the registers
- even when a driver is also running */
- if (ioctl(file, force ? I2C_SLAVE_FORCE : I2C_SLAVE, address) < 0) {
- fprintf(stderr,
- "Error: Could not set address to 0x%02x: %s\n",
- address, strerror(errno));
- return -errno;
- }
-
- return 0;
-}
-
-
-int main(void)
-{
- int fd = -1;
- char send_data[64] = {0};
- send_data[0] = 0x55;
- send_data[1] = 0x00;
- send_data[2] = 0x84;
- fd= open_i2c_dev(0, "i2c_test", 5, 0);
- i2c_write_bytes(fd, 0x12, 0x10,send_data, 3)
-}
-#endif
diff --git a/mbtk/libql_lib_v2/src/ql_quec_nw.c b/mbtk/libql_lib_v2/src/ql_quec_nw.c
deleted file mode 100755
index 51598e9..0000000
--- a/mbtk/libql_lib_v2/src/ql_quec_nw.c
+++ /dev/null
@@ -1,945 +0,0 @@
-#include "ql/ql_nw.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-extern mbtk_info_handle_t* ql_info_handle;
-extern int ql_info_handle_num;
-static bool inited = FALSE;
-
-#define SIGNAL_STRENGTH_INVALID_1 99
-#define SIGNAL_STRENGTH_INVALID_2 255
-
-
-typedef struct
-{
- uint8 *operator_l;
- uint8 *operator_s;
- uint32 mcc_mnc;
-} operator_mcc_mnc_t;
-
-typedef struct
-{
- QL_NW_EventHandlerFunc_t handlerPtr;
- void* contextPtr;
-} ql_cust_cb_func;
-
-static ql_cust_cb_func ql_func_cb_handle;
-
-static int roaming_pref = 1; // Open roaming for default.
-
-static operator_mcc_mnc_t operator_mcc_mnc [] =
-{
- {"China Mobile","CMCC",46000},
- {"China Unicom","CU",46001},
- {"China Mobile","CMCC",46002},
- {"China Telecom","CT",46003},
- {"China Mobile","CMCC",46004},
- {"China Telecom","CT",46005},
- {"China Unicom","CU",46006},
- {"China Mobile","CMCC",46007},
- {"China Mobile","CMCC",46008},
- {"China Unicom","CU",46009},
- {"China Telecom","CT",46011}
-};
-
-typedef enum {
- RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
- RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
-} RIL_RadioTechnologyFamily;
-
-void ql_nw_state_change_cb(const void* data, int data_len)
-{
- ///mbtk_net_info_t *reg = (mbtk_net_info_t *)data;
- uint8 *net_data = NULL;
-
- net_data = (uint8*)data;
- /*
- uint8 data[3];
- data[0] = (uint8)MBTK_NET_CS_STATE;
-
- net_data[0] = *(uint8 *)(data); //MBTK_NET_PS_STATE
- net_data[1] = *(uint8 *)(data + sizeof(uint8)); //mbtk_net_reg_state_enum state Reg State
- net_data[2] = *(uint8 *)(data + sizeof(uint8) + sizeof(uint8)); //act
- */
- if(roaming_pref == 0)
- {
- mbtk_modem_info_t info;
- if(*net_data == 5)
- {
- info.fun=4;
- //ql_netw_status_cb(5);
- }
- else
- info.fun=1;
- info.rst=0;
- //mbtk_set_modem_fun(ql_info_handle, &info);
- }
-
- if(ql_func_cb_handle.handlerPtr != NULL)
- {
- ql_func_cb_handle.handlerPtr(QL_NW_IND_DATA_REG_EVENT_FLAG,&(net_data[2]), sizeof(&(net_data[2])), NULL);
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_init()
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- return QL_NW_SUCCESS;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- }
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_release()
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return QL_NW_SUCCESS;
- }
- } else {
- ql_info_handle_num--;
- return QL_NW_SUCCESS;
- }
- }
- else
- {
- LOGE("NW handle not inited.");
- return QL_NW_GENERIC_FAILURE;
- }
-}
-
-static uint8 net_pre_change(bool mbtk_2_ql,int net_mode)
-{
- uint8 mbtk_net_pre = 0xFF;
-
- /*
- QL_NW_PREF_NET_TYPE_GSM_WCDMA = 0, //4
- QL_NW_PREF_NET_TYPE_GSM_ONLY = 1, //0
- QL_NW_PREF_NET_TYPE_WCDMA = 2, //1
- QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO = 3, //2
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA = 9, //12
- QL_NW_PREF_NET_TYPE_LTE_ONLY = 11, //5
- QL_NW_PREF_NET_TYPE_LTE_WCDMA = 12, //9
- QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF = 13, //7
- QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF = 14, //8
- QL_NW_PREF_NET_TYPE_LTE_GSM = 15, //6
- QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF = 16, //10
- QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF = 17, //11
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF = 19, //13
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF = 20, //14
- QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF = 21, //15
- */
- /*
- 0 : GSM only
- 1 : UMTS only
- 2 : GSM/UMTS(auto)
- 3 : GSM/UMTS(GSM preferred)
- 4 : GSM/UMTS(UMTS preferred)
- 5 : LTE only
- 6 : GSM/LTE(auto)
- 7 : GSM/LTE(GSM preferred)
- 8 : GSM/LTE(LTE preferred)
- 9 : UMTS/LTE(auto)
- 10 : UMTS/LTE(UMTS preferred)
- 11 : UMTS/LTE(LTE preferred)
- 12 : GSM/UMTS/LTE(auto)
- 13 : GSM/UMTS/LTE(GSM preferred)
- 14 : GSM/UMTS/LTE(UMTS preferred)
- 15 : GSM/UMTS/LTE(LTE preferred)
- */
-
- if(mbtk_2_ql) {
- switch(net_mode)
- {
- case MBTK_NET_PREF_GSM_UMTS_UMTS_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_GSM_WCDMA;
- break;
- case MBTK_NET_PREF_GSM_ONLY:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_GSM_ONLY;
- break;
- case MBTK_NET_PREF_UMTS_ONLY:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_WCDMA;
- break;
- case MBTK_NET_PREF_GSM_UMTS_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA;
- break;
- case MBTK_NET_PREF_LTE_ONLY:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_ONLY;
- break;
- case MBTK_NET_PREF_UMTS_LTE_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_WCDMA;
- break;
- case MBTK_NET_PREF_GSM_LTE_GSM_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF;
- break;
- case MBTK_NET_PREF_GSM_LTE_LTE_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF;
- break;
- case MBTK_NET_PREF_GSM_LTE_AUTO:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM;
- break;
- case MBTK_NET_PREF_UMTS_LTE_UMTS_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF;
- break;
- case MBTK_NET_PREF_UMTS_LTE_LTE_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_GSM_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_UMTS_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF;
- break;
- case MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF:
- mbtk_net_pre = QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF;
- break;
- default:
- mbtk_net_pre = 0xFF;
- break;
- }
- } else {
- switch(net_mode)
- {
- case QL_NW_PREF_NET_TYPE_GSM_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_UMTS_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_GSM_ONLY:
- mbtk_net_pre = MBTK_NET_PREF_GSM_ONLY;
- break;
- case QL_NW_PREF_NET_TYPE_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_ONLY;
- break;
- case QL_NW_PREF_NET_TYPE_GSM_WCDMA_AUTO:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_ONLY:
- mbtk_net_pre = MBTK_NET_PREF_LTE_ONLY;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_WCDMA:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_GSM_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_GSM_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_LTE_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_LTE_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM:
- mbtk_net_pre = MBTK_NET_PREF_GSM_LTE_AUTO;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_WCDMA_WCDMA_PREF:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_UMTS_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_WCDMA_LTE_PREF:
- mbtk_net_pre = MBTK_NET_PREF_UMTS_LTE_LTE_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_GSM_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_GSM_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_WCDMA_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_UMTS_PREF;
- break;
- case QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF:
- mbtk_net_pre = MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF;
- break;
- default:
- mbtk_net_pre = 0xFF;
- break;
- }
- }
- return mbtk_net_pre;
-}
-
-QL_NW_ERROR_CODE ql_nw_set_config(QL_NW_CONFIG_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- if(pt_info->preferred_nw_mode < QL_NW_PREF_NET_TYPE_GSM_WCDMA || pt_info->preferred_nw_mode > QL_NW_PREF_NET_TYPE_LTE_GSM_WCDMA_LTE_PREF)
- {
- LOGE("Unknown preferred_nw_mode(%d) error.", pt_info->preferred_nw_mode);
- return QL_NW_GENERIC_FAILURE;
- }
-
- roaming_pref = pt_info->roaming_pref;
-
- mbtk_band_info_t band;
- memset(&band, 0, sizeof(mbtk_band_info_t));
- band.net_pref = net_pre_change(FALSE, pt_info->preferred_nw_mode);
- if(band.net_pref == 0xFF)
- {
- LOGE("net_pre_change() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- if(mbtk_current_band_set(ql_info_handle, &band)) {
- return QL_NW_GENERIC_FAILURE;
- } else {
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_config(QL_NW_CONFIG_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- pt_info->roaming_pref = roaming_pref;
- mbtk_band_info_t band;
- if(mbtk_current_band_get(ql_info_handle, &band)) {
- return QL_NW_GENERIC_FAILURE;
- } else {
- pt_info->preferred_nw_mode = (QL_NW_PREFERRED_NETWORK_TYPE)net_pre_change(TRUE, band.net_pref);
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_nitz_time_info(QL_NW_NITZ_TIME_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- memset(pt_info, 0x0, sizeof(QL_NW_NITZ_TIME_INFO_T));
- char time_str[100]={0};
- ///printf("mbtk_net_time_get begin\n");
- int err = mbtk_net_time_get(ql_info_handle, time_str);
- if(err) {
- LOGE("mbtk_net_time_get() fail.");
- return QL_NW_GENERIC_FAILURE;
- } else {
- memset(pt_info->nitz_time,0,32);
- memcpy(pt_info->nitz_time,time_str,strlen(time_str));
- if(mbtk_get_abs_time(time_str, &(pt_info->abs_time))) {
- LOGE("mbtk_get_abs_time() fail.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- pt_info->leap_sec = 0;
-
- return QL_NW_SUCCESS;
- }
-}
-
-//--------------------------------------------------------------------------------------
-QL_NW_ERROR_CODE ql_nw_event_register(unsigned int bitmask)
-{
- /*
- NW_IND_VOICE_REG_EVENT_IND_FLAG 语音拨号注册事件
- NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) 数据拨号注册事件
- NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) 信号强度事件
- NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG (1 << 3) 网络时间更新事件
- */
- if(bitmask == QL_NW_IND_VOICE_REG_EVENT_FLAG)
- {}
- if(bitmask == QL_NW_IND_DATA_REG_EVENT_FLAG)
- {}
- if(bitmask == QL_NW_IND_SIGNAL_STRENGTH_EVENT_FLAG)
- {}
- if(bitmask == QL_NW_IND_NITZ_TIME_UPDATE_EVENT_FLAG)
- {}
- return QL_NW_SUCCESS;
-}
-//--------------------------------------------------------------------------------------
-
-QL_NW_ERROR_CODE ql_nw_get_operator_name(QL_NW_OPERATOR_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(ql_info_handle, &net) && net.plmn > 0)
- {
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(operator_mcc_mnc[i].mcc_mnc == net.plmn)
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- strcpy(OperatorFN, operator_mcc_mnc[i].operator_l);
- strcpy(OperatorSH, operator_mcc_mnc[i].operator_s);
- sprintf(MccMnc, "%d", operator_mcc_mnc[i].mcc_mnc);
- }
- memset(pt_info->long_eons,0,128);
- memcpy(pt_info->long_eons,operator_mcc_mnc[i].operator_l,strlen(operator_mcc_mnc[i].operator_l));
- memset(pt_info->short_eons,0,128);
- memcpy(pt_info->short_eons,operator_mcc_mnc[i].operator_s,strlen(operator_mcc_mnc[i].operator_s));
- memset(pt_info->mcc,0,4);
- memset(pt_info->mnc,0,4);
- sprintf(pt_info->mcc, "%d", (operator_mcc_mnc[i].mcc_mnc)/100);
- if(0 == operator_mcc_mnc[i].mcc_mnc % 100)
- {
- strcpy(pt_info->mnc, "00");
- }
- else
- {
- sprintf(pt_info->mnc, "%d", (operator_mcc_mnc[i].mcc_mnc)%100);
- }
- //pt_info->act;
- return QL_NW_SUCCESS;
- }
-
- return QL_NW_GENERIC_FAILURE;
-}
-
-QL_NW_ERROR_CODE ql_nw_perform_scan(QL_NW_SCAN_RESULT_LIST_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return -1;
- }
- list_node_t* net_list = NULL;
- int ret = mbtk_available_net_get(ql_info_handle, &net_list);
- if(ret != 0)
- {
- LOGE("mbtk_available_net_get fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- else
- {
- memset(pt_info, 0x0, sizeof(QL_NW_SCAN_RESULT_LIST_INFO_T));
- mbtk_net_info_t* net = NULL;
- list_first(net_list);
- int i=0;
- while ((net = (mbtk_net_info_t*) list_next(net_list)))
- {
- //printf("Net : %d, %d, %d, %d\n", net->net_sel_mode, net->net_type, net->net_state, net->plmn);
- if(net->net_state == 8)
- pt_info->entry[i].status = QL_NW_ACCESS_TECH_E_UTRAN_CA;
- else if(net->net_state == 0xff)
- pt_info->entry[i].status = QL_NW_ACCESS_TECH_NONE;
- else
- pt_info->entry[i].status = net->net_state;
-
- int j = 0;
- while(j < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(operator_mcc_mnc[j].mcc_mnc == net->plmn)
- break;
- j++;
- }
- if(j == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(pt_info->entry[i].operator_name.long_eons, "UNKNOWN");
- strcpy(pt_info->entry[i].operator_name.short_eons, "UNKNOWN");
- sprintf(pt_info->entry[i].operator_name.mcc, "%d", (net->plmn)/100);
- sprintf(pt_info->entry[i].operator_name.mnc, "%d", (net->plmn)%100);
- }
- else
- {
- strcpy(pt_info->entry[i].operator_name.long_eons, operator_mcc_mnc[j].operator_l);
- strcpy(pt_info->entry[i].operator_name.short_eons, operator_mcc_mnc[j].operator_s);
- sprintf(pt_info->entry[i].operator_name.mcc, "%d", (net->plmn)/100);
- sprintf(pt_info->entry[i].operator_name.mnc, "%d", (net->plmn)%100);
- }
- pt_info->entry[i].operator_name ;
- pt_info->entry[i].act = net->net_type;
- i++;
- if(i > 40)
- break;
- }
- pt_info->entry_len = i;
- list_free(net_list);
- return QL_NW_SUCCESS;
- }
-}
-
-#if 0
-static int ql_query_registration_state(const char *type, int* regState,int *imsRegState,int * LAC, int *CID,int *netType,int * radioTechFam,int *netRejected)
-{
- if(ql_info_handle == NULL || str_empty(type) || regState == NULL || imsRegState == NULL
- || LAC == NULL || CID == NULL || netType == NULL || radioTechFam == NULL || netRejected == NULL)
- {
- return -1;
- }
- mbtk_net_reg_info_t reg;
- int err = mbtk_net_reg_get(ql_info_handle, ®);
- if(err) {
- *netRejected = err;
- return -1;
- } else {
- //printf("REG : %d, %d, %d, %04x, %08o\n", reg.state, reg.type, reg.ims_reg, reg.lac, reg.ci);
- // Voice/Data/IMS
- if(strcmp("VOICE", type) == 0) {
- *regState = reg.call_state;
- } else if(strcmp("DATA", type) == 0) {
- *regState = reg.data_state;
- } else if(strcmp("IMS", type) == 0) {
- *imsRegState = reg.ims_state;
- } else {
- return -1;
- }
-
- if(reg.call_state != MBTK_NET_REG_STATE_NON || reg.data_state != MBTK_NET_REG_STATE_NON || reg.ims_state != MBTK_NET_REG_STATE_NON) {
- sprintf(LAC, "%04x", reg.lac);
- sprintf(CID, "%08o", reg.ci);
- *netType = reg.type;
- *radioTechFam = RADIO_TECH_3GPP;
- }
- return 0;
- }
-
-}
-#endif
-
-QL_NW_ERROR_CODE ql_nw_get_reg_status(QL_NW_REG_STATUS_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- /*VOICE/DATA/IMS*/
- mbtk_net_reg_info_t reg;
- int err = mbtk_net_reg_get(ql_info_handle, ®);
- if(err) {
- LOGE("mbtk_net_reg_get fail.");
- return QL_NW_GENERIC_FAILURE;
- } else {
- memset(pt_info, 0x0, sizeof(QL_NW_REG_STATUS_INFO_T));
- pt_info->data_reg.state = (QL_NW_REG_STATE)reg.data_state;
- pt_info->data_reg.lac = reg.lac;
- pt_info->data_reg.cid = reg.ci;
- pt_info->voice_reg.state = (QL_NW_REG_STATE)reg.call_state;
- pt_info->voice_reg.lac = reg.lac;
- pt_info->voice_reg.cid = reg.ci;
- switch(reg.type)
- {
- case MBTK_RADIO_TECH_GSM:
- case MBTK_RADIO_TECH_GSM_COMPACT:
- case MBTK_RADIO_TECH_GSM_EGPRS:
- case MBTK_RADIO_TECH_UTRAN_HSPA:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_GPRS;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_GSM;
- break;
- }
- case MBTK_RADIO_TECH_UTRAN:
- case MBTK_RADIO_TECH_UTRAN_HSDPA:
- case MBTK_RADIO_TECH_UTRAN_HSUPA:
- case MBTK_RADIO_TECH_UTRAN_HSDPA_HSUPA:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_UMTS;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_UMTS;
- break;
- }
- case MBTK_RADIO_TECH_E_UTRAN:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_LTE;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_LTE;
- break;
- }
- default:
- {
- pt_info->data_reg.rat = QL_NW_RADIO_TECH_UNKNOWN;
- pt_info->voice_reg.rat = QL_NW_RADIO_TECH_UNKNOWN;
- break;
- }
- }
- }
-
- return 0;
-
-#if 0
- int ret = ql_query_registration_state("VOICE", &(pt_info->voice_reg.state), &imsRegState, &(pt_info->voice_reg.lac), &(pt_info->voice_reg.cid), &netType, &(pt_info->voice_reg.rejectCause), &netRejected);
- if(ret != 0)
- err = QL_NW_GENERIC_FAILURE;
- else
- err = QL_NW_SUCCESS;
- ret = ql_query_registration_state("DATA", &(pt_info->data_reg.state), &imsRegState, &(pt_info->data_reg.lac), &(pt_info->data_reg.cid), &netType, &(pt_info->data_reg.rejectCause), &netRejected);
- if(ret != 0)
- err = QL_NW_GENERIC_FAILURE;
- else
- err = QL_NW_SUCCESS;
-
- if(err == QL_NW_SUCCESS)
- {
- if(netType < 0 || netType > 8)
- pt_info->data_reg.rat = QL_NW_ACCESS_TECH_NONE;
- else
- pt_info->data_reg.rat = netType;
- }
- return err;
-#endif
-}
-
-QL_NW_ERROR_CODE ql_nw_set_selection(QL_NW_SELECTION_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- mbtk_net_info_t net;
- net.net_type = 0xFF;
- char mccmnc[10];
- if(pt_info->nw_selection_mode == 0)
- {
- net.net_sel_mode = 0;
- net.plmn = 0;
- }
- else if(pt_info->nw_selection_mode == 1 && !str_empty(pt_info->mnc) && !str_empty(pt_info->mcc))
- {
- net.net_sel_mode = 1;
- memset(mccmnc, 0, 10);
- //memcpy(mccmnc, pt_info->mcc, 3);
- //memcpy(mccmnc + 3, pt_info->mnc, 3);
- sprintf(mccmnc,"%s%s",pt_info->mcc,pt_info->mnc);
- net.plmn = (uint32)atoi(mccmnc);
- if(pt_info->act < QL_NW_ACCESS_TECH_GSM || pt_info->act > QL_NW_ACCESS_TECH_UTRAN_HSPAP)
- net.net_type = 0xff;
- else
- net.net_type = pt_info->act;
- }
- else
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- //printf("mccmnc = %s\n",mccmnc);
- //printf("net.plmn = %d\n",net.plmn);
- int ret = mbtk_net_sel_mode_set(ql_info_handle, &net);
- if(ret == 0)
- {
- return QL_NW_SUCCESS;
- }
- else
- {
- printf("mbtk_net_sel_mode_set error: %d\n",ret );
- return QL_NW_GENERIC_FAILURE;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_selection(QL_NW_SELECTION_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- char OperatorFN[128];
- char OperatorSH[128];
- char MccMnc[128];
- mbtk_net_info_t net;
- if(!mbtk_net_sel_mode_get(ql_info_handle, &net) && net.plmn > 0)
- {
- memset(pt_info, 0x0, sizeof(QL_NW_SELECTION_INFO_T));
- // printf("Net : %d, %d, %d\n", net.net_sel_mode, net.net_type, net.plmn);
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(operator_mcc_mnc[i].mcc_mnc == net.plmn)
- break;
- i++;
- }
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- strcpy(OperatorFN, "UNKNOWN");
- strcpy(OperatorSH, "UNKNOWN");
- sprintf(MccMnc, "%d", net.plmn);
- }
- else
- {
- strcpy(OperatorFN, operator_mcc_mnc[i].operator_l);
- strcpy(OperatorSH, operator_mcc_mnc[i].operator_s);
- sprintf(MccMnc, "%d", operator_mcc_mnc[i].mcc_mnc);
-
- sprintf(pt_info->mcc,"%d",operator_mcc_mnc[i].mcc_mnc/100);
- sprintf(pt_info->mnc,"%d",operator_mcc_mnc[i].mcc_mnc%100);
-
- }
- pt_info->nw_selection_mode = net.net_sel_mode;
-
- pt_info->act = net.net_type;
- return QL_NW_SUCCESS;
- }
-
- return QL_NW_GENERIC_FAILURE;
-
-}
-
-QL_NW_ERROR_CODE ql_nw_get_signal_strength(QL_NW_SIGNAL_STRENGTH_INFO_T *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- int ret;
- mbtk_signal_info_t signal;
- ret = mbtk_net_signal_get(ql_info_handle, &signal);
- if(ret != 0) {
- LOGE("mbtk_net_signal_get fail.");
- return QL_NW_GENERIC_FAILURE;
- }
- else
- {
- int rssi = 0;
- if(SIGNAL_STRENGTH_INVALID_1 == signal.rssi)
- {
- rssi = SIGNAL_STRENGTH_INVALID_1;
- }
- else
- {
- rssi = 2 * signal.rssi - 113;
- }
- if(signal.type == MBTK_RADIO_TECH_GSM) //GSM
- {
- pt_info->GW_SignalStrength.bitErrorRate = signal.ber;
- pt_info->GW_SignalStrength.ecio = signal.ecno;
- pt_info->GW_SignalStrength.rscp = signal.rscp;
- pt_info->GW_SignalStrength.rssi = rssi;
-
- pt_info->LTE_SignalStrength.rsrp = SIGNAL_STRENGTH_INVALID_1;
- pt_info->LTE_SignalStrength.rsrq = SIGNAL_STRENGTH_INVALID_1;
- pt_info->LTE_SignalStrength.rssnr = SIGNAL_STRENGTH_INVALID_2;
- pt_info->LTE_SignalStrength.rssi = SIGNAL_STRENGTH_INVALID_1;
- }
- else if(signal.type == MBTK_RADIO_TECH_E_UTRAN) //LTE
- {
- pt_info->LTE_SignalStrength.cqi = SIGNAL_STRENGTH_INVALID_1;
- pt_info->LTE_SignalStrength.rsrp = signal.rsrp;
- pt_info->LTE_SignalStrength.rsrq = signal.rsrq;
- pt_info->LTE_SignalStrength.rssnr = signal.ecno;
- pt_info->LTE_SignalStrength.rssi = rssi;
-
- pt_info->GW_SignalStrength.bitErrorRate = SIGNAL_STRENGTH_INVALID_1;
- pt_info->GW_SignalStrength.ecio = SIGNAL_STRENGTH_INVALID_2;
- pt_info->GW_SignalStrength.rscp = SIGNAL_STRENGTH_INVALID_2;
- pt_info->GW_SignalStrength.rssi = SIGNAL_STRENGTH_INVALID_1;
- }
- else
- {
- return QL_NW_GENERIC_FAILURE;
- }
- LOGI("ql_GW_SignalStrength: %d , %d, %d, %d", pt_info->GW_SignalStrength.rssi,
- pt_info->GW_SignalStrength.bitErrorRate, pt_info->GW_SignalStrength.rscp, pt_info->GW_SignalStrength.ecio);
- LOGI("ql_LTE_SignalStrength: %d , %d, %d, %d", pt_info->LTE_SignalStrength.rssi,
- pt_info->LTE_SignalStrength.rsrp, pt_info->LTE_SignalStrength.rsrq, pt_info->LTE_SignalStrength.rssnr, pt_info->LTE_SignalStrength.cqi);
- return QL_NW_SUCCESS;
- }
-}
-
-QL_NW_ERROR_CODE ql_nw_get_cell_info(QL_NW_CELL_INFO_T *pt_info)
-{
- list_node_t* cell_list = NULL;
- mbtk_cell_type_enum type;
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
-
- memset(pt_info, 0, sizeof(QL_NW_CELL_INFO_T));
- int err = mbtk_cell_get(ql_info_handle, &type, &cell_list);
- if(err || cell_list == NULL) {
- LOGE("mbtk_cell_get fail.");
- return QL_NW_GENERIC_FAILURE;
- } else {
- list_first(cell_list);
- mbtk_cell_info_t* cell = (mbtk_cell_info_t*) list_next(cell_list);
- if(cell) { // Current server cell.
- switch(type)
- {
- case MBTK_CELL_TYPE_GSM:
- {
- LOGD("GSM : lac=%d, ci=%d, arfcn=%d, bsic=%d", cell->value1, cell->value2, cell->value3, cell->value4);
- pt_info->gsm_info[0].lac = cell->value1;
- pt_info->gsm_info[0].cid = cell->value2;
- pt_info->gsm_info[0].arfcn = cell->value3;
- pt_info->gsm_info[0].bsic = cell->value4;
- pt_info->gsm_info[0].mcc = cell->value5;
- pt_info->gsm_info[0].mnc = cell->value6;
- pt_info->gsm_info[0].flag = 0;
- pt_info->gsm_info_num++;
- pt_info->gsm_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_UMTS:
- {
- LOGD("UMTS : lac=%d, ci=%d, arfcn=%d", cell->value1, cell->value2, cell->value3);
- pt_info->umts_info[0].lac = cell->value1;
- pt_info->umts_info[0].cid = cell->value2;
- pt_info->umts_info[0].uarfcn = cell->value3;
- pt_info->umts_info[0].mcc = cell->value4;
- pt_info->umts_info[0].mnc = cell->value5;
- pt_info->umts_info[0].psc = cell->value6;
- pt_info->umts_info[0].flag = 0;
- pt_info->umts_info_num++;
- pt_info->umts_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_LTE:
- {
- LOGD("LTE : tac=%d, PCI=%d, dlEuarfcn=%d, ulEuarfcn=%d, band=%d", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- pt_info->lte_info[0].tac = cell->value1;
- pt_info->lte_info[0].pci = cell->value2;
- pt_info->lte_info[0].earfcn = cell->value3;
- pt_info->lte_info[0].cid = cell->value8;
- pt_info->lte_info[0].mcc = cell->value6;
- pt_info->lte_info[0].mnc = cell->value7;
- pt_info->lte_info[0].flag = 0;
- pt_info->lte_info_num++;
- pt_info->lte_info_valid = 1;
- break;
- }
- default:
- break;
- }
- }
- while ((cell = (mbtk_cell_info_t*) list_next(cell_list)))
- {
- switch(type)
- {
- case MBTK_CELL_TYPE_GSM:
- {
- LOGD("CELL : %d, %d, %d, %d, %d", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);
- pt_info->gsm_info[pt_info->gsm_info_num].lac = cell->value1;
- pt_info->gsm_info[pt_info->gsm_info_num].cid = cell->value2;
- pt_info->gsm_info[pt_info->gsm_info_num].arfcn = cell->value3;
- pt_info->gsm_info[pt_info->gsm_info_num].bsic = cell->value4;
- pt_info->gsm_info[pt_info->gsm_info_num].flag = 1;
- pt_info->gsm_info_num++;
- pt_info->gsm_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_UMTS:
- {
- LOGD("CELL : lac=%d, ci=%d, arfcn=%d", cell->value1, cell->value2, cell->value3);
- pt_info->umts_info[pt_info->umts_info_num].lac = cell->value1;
- pt_info->umts_info[pt_info->umts_info_num].cid = cell->value2;
- pt_info->umts_info[pt_info->umts_info_num].uarfcn = cell->value3;
- pt_info->umts_info[pt_info->umts_info_num].flag = 1;
- pt_info->umts_info_num++;
- pt_info->umts_info_valid = 1;
- }
- break;
- case MBTK_CELL_TYPE_LTE:
- {
- LOGD("CELL : phyCellId=%d, euArfcn=%d, rsrp=%d, rsrq=%d", cell->value1, cell->value2, cell->value3, cell->value4);
- pt_info->lte_info[pt_info->lte_info_num].cid = cell->value1;
- pt_info->lte_info[pt_info->lte_info_num].earfcn = cell->value2;
- pt_info->lte_info[pt_info->lte_info_num].tac = cell->value3;
- pt_info->lte_info[pt_info->lte_info_num].pci = cell->value4;
- pt_info->lte_info[pt_info->lte_info_num].flag = 1;
- pt_info->lte_info_num++;
- pt_info->lte_info_valid = 1;
- }
- break;
- default:
- break;
- }
- }
- list_free(cell_list);
- }
-
- LOGD("get_cell_success: %d, %d, %d.",pt_info->gsm_info_valid, pt_info->umts_info_valid, pt_info->lte_info_valid);
- return QL_NW_SUCCESS;
-}
-
-QL_NW_ERROR_CODE ql_nw_add_event_handler(QL_NW_EventHandlerFunc_t handlerPtr,void* contextPtr)
-{
- if(ql_info_handle == NULL || handlerPtr == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- mbtk_net_state_change_cb_reg(ql_info_handle, ql_nw_state_change_cb);
- ql_func_cb_handle.handlerPtr = handlerPtr;
- ql_func_cb_handle.contextPtr = contextPtr;
- return QL_NW_SUCCESS;
-}
-
-QL_NW_ERROR_CODE ql_nw_get_volte_state(VOLTE_STATE *state)
-{
- int ret;
- if(ql_info_handle == NULL || state == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- ret = mbtk_volte_state_get(ql_info_handle, &(state->reg_state));
- if(ret != 0)
- return QL_NW_GENERIC_FAILURE;
- else
- return QL_NW_SUCCESS;
-}
-
-QL_NW_ERROR_CODE ql_nw_csq_get_signal_strength(QL_NW_CSQ_SIGNAL_STRENGTH_INFO_T *pt_info)
-{
- int ret;
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_NW_GENERIC_FAILURE;
- }
- mbtk_signal_info_t signal;
- ret = mbtk_net_signal_get(ql_info_handle, &signal);
- if(ret != 0)
- return QL_NW_GENERIC_FAILURE;
- else
- {
- pt_info->rssi = (signal.rssi * 2 - 113);
- pt_info->bitErrorRate = signal.ber;
- LOGD("pt_info->rssi = %d pt_info->bitErrorRate = %d",pt_info->rssi,pt_info->bitErrorRate);
- return QL_NW_SUCCESS;
- }
-}
-
-//*********************************************************************************
-
diff --git a/mbtk/libql_lib_v2/src/ql_quec_sim.c b/mbtk/libql_lib_v2/src/ql_quec_sim.c
deleted file mode 100755
index edcef9a..0000000
--- a/mbtk/libql_lib_v2/src/ql_quec_sim.c
+++ /dev/null
@@ -1,406 +0,0 @@
-#include "ql/ql_sim.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-extern mbtk_info_handle_t* ql_info_handle;
-extern int ql_info_handle_num;
-static bool inited = FALSE;
-
-QL_SIM_CardStatusIndMsgHandlerFunc_t handlerPtr_cb = NULL;
-
-typedef struct
-{
- uint8 *operator_l;
- uint8 *operator_s;
- uint32 mcc_mnc;
-} operator_mcc_mnc_t;
-
-static operator_mcc_mnc_t operator_mcc_mnc[] =
-{
- {"China Mobile","CMCC",46000},
- {"China Unicom","CU",46001},
- {"China Mobile","CMCC",46002},
- {"China Telecom","CT",46003},
- {"China Mobile","CMCC",46004},
- {"China Telecom","CT",46005},
- {"China Unicom","CU",46006},
- {"China Mobile","CMCC",46007},
- {"China Mobile","CMCC",46008},
- {"China Unicom","CU",46009},
- {"China Telecom","CT",46011}
-};
-
-void ql_sim_state_change_cb(const void* data, int data_len)
-{
- if(handlerPtr_cb != NULL)
- {
- //QL_SIM_NFY_MSG_ID msg_id, void *pv_data, int pv_data_len, void *contextPtr
- //handlerPtr_cb(net_data[2]);
- }
- mbtk_sim_card_info *info = NULL;
- info = (mbtk_sim_card_info*)data;
-
- QL_SIM_CARD_STATUS_INFO sim_card_info = {0};
- sim_card_info.card_state = info->sim;
- sim_card_info.card_type = info->sim_card_type;
- /*
- sim_client_handle_type h_sim,
- E_QL_SIM_NFY_MSG_ID_T e_msg_id,
- void *pv_data,
- void *contextPtr
- */
- handlerPtr_cb(QL_SIM_CARD_STATUS_UPDATE_EVENT, &sim_card_info, sizeof(QL_SIM_CARD_STATUS_INFO), NULL);
-}
-
-QL_SIM_ERROR_CODE ql_sim_init()
-{
- if(!inited && ql_info_handle == NULL)
- {
- ql_info_handle = mbtk_info_handle_get();
- if(ql_info_handle)
- {
- ql_info_handle_num++;
- inited = TRUE;
- return QL_SIM_SUCCESS;
- } else {
- LOGE("mbtk_info_handle_get() fail.");
- return QL_SIM_GENERIC_FAILURE;
- }
- } else {
- if(!inited) {
- ql_info_handle_num++;
- inited = TRUE;
- }
- return QL_SIM_SUCCESS;
- }
-}
-
-
-QL_SIM_ERROR_CODE ql_sim_release()
-{
- if(ql_info_handle)
- {
- LOGD("ql_info_handle_num = %d", ql_info_handle_num);
- if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
- int ret = mbtk_info_handle_free(&ql_info_handle);
- if(ret) {
- LOGE("mbtk_info_handle_free() fail.");
- return QL_SIM_GENERIC_FAILURE;
- }
- else
- {
- ql_info_handle_num = 0;
- ql_info_handle = NULL;
- return QL_SIM_SUCCESS;
- }
- } else {
- ql_info_handle_num--;
- return QL_SIM_SUCCESS;
- }
- }
- else
- {
- LOGE("Sim handle not inited.");
- return QL_SIM_GENERIC_FAILURE;
- }
-}
-
-
-QL_SIM_ERROR_CODE ql_sim_get_imsi(uint8_t *imsi, size_t imsiLen)
-{
- if(ql_info_handle == NULL || imsi == NULL || imsiLen <= 0)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- memset(imsi,0,imsiLen);
- int err = mbtk_imsi_get(ql_info_handle, imsi);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_iccid(uint8_t *iccid, size_t iccidLen)
-{
- if(ql_info_handle == NULL || iccid == NULL || iccidLen <= 0)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- memset(iccid, 0, iccidLen);
- int err = mbtk_iccid_get(ql_info_handle, iccid);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_phonenumber(uint8_t *phone_num, size_t phoneLen)
-{
- if(ql_info_handle == NULL || phone_num == NULL || phoneLen <= 0)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- memset(phone_num, 0, phoneLen);
- int err = mbtk_phone_number_get(ql_info_handle, phone_num);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_operator_plmn_list(QL_SIM_PREFERRED_OPERATOR_LIST *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
-
- mbtk_plmn_info plmn;
- int err = mbtk_get_plmn_list(ql_info_handle, &plmn);
- if(err) {
- LOGE("mbtk_get_plmn_list file : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- memset(pt_info, 0x0, sizeof(QL_SIM_PREFERRED_OPERATOR_LIST));
- pt_info->preferred_operator_list_num = plmn.count;
- int list_count;
- for(list_count = 0; list_count < plmn.count; list_count++)
- {
- if(plmn.mbtk_plmn_name[list_count].format == 2) //number
- {
- uint32 plmn_name = (uint32)atoi(plmn.mbtk_plmn_name[list_count].plmn_name);
- sprintf(pt_info->preferred_operator_list[list_count].mcc,"%d",plmn_name/100);
- sprintf(pt_info->preferred_operator_list[list_count].mnc,"%02d",plmn_name%100);
- }
- else if(plmn.mbtk_plmn_name[list_count].format == 0)
- {
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(!strcmp(operator_mcc_mnc[i].operator_l,plmn.mbtk_plmn_name))
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- memcpy(pt_info->preferred_operator_list[list_count].mcc,0,3);
- memcpy(pt_info->preferred_operator_list[list_count].mnc,0,3);
- }
- else
- {
- sprintf(pt_info->preferred_operator_list[list_count].mcc, "%d", (operator_mcc_mnc[i].mcc_mnc)/100);
- sprintf(pt_info->preferred_operator_list[list_count].mnc, "%d", (operator_mcc_mnc[i].mcc_mnc)%100);
- }
- }
- else
- {
- int i = 0;
- while(i < ARRAY_SIZE(operator_mcc_mnc))
- {
- if(!strcmp(operator_mcc_mnc[i].operator_s,plmn.mbtk_plmn_name))
- break;
- i++;
- }
-
- if(i == ARRAY_SIZE(operator_mcc_mnc)) // No found mcc&mnc
- {
- memcpy(pt_info->preferred_operator_list[list_count].mcc,0,3);
- memcpy(pt_info->preferred_operator_list[list_count].mnc,0,3);
- }
- else
- {
- sprintf(pt_info->preferred_operator_list[list_count].mcc, "%d", (operator_mcc_mnc[i].mcc_mnc)/100);
- sprintf(pt_info->preferred_operator_list[list_count].mnc, "%d", (operator_mcc_mnc[i].mcc_mnc)%100);
- }
- }
- }
- int i;
- for (i=0;i<pt_info->preferred_operator_list_num;i++)
- {
- LOGD("pt_info->preferred_operator_list[%d].mcc=%s",i, pt_info->preferred_operator_list[i].mcc);
- LOGD("pt_info->preferred_operator_list[%d].mnc=%s",i, pt_info->preferred_operator_list[i].mnc);
- }
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_verify_pin(QL_SIM_VERIFY_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
-
- int err = mbtk_verify_pin(ql_info_handle, pt_info->pin_value);
- if(err) {
- LOGE("mbtk_verify_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_change_pin(QL_SIM_CHANGE_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_change_pin_info pin_info = {0};
- memcpy(pin_info.old_pin_value, pt_info->old_pin_value, strlen(pt_info->old_pin_value));
- memcpy(pin_info.new_pin_value, pt_info->new_pin_value, strlen(pt_info->new_pin_value));
- int err = mbtk_change_pin(ql_info_handle, &pin_info);
- if(err) {
- LOGE("mbtk_change_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_unblock_pin(QL_SIM_UNBLOCK_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_unlock_pin_info puk_pin_info = {0};
- memcpy(puk_pin_info.pin_value, pt_info->new_pin_value, strlen(pt_info->new_pin_value));
- memcpy(puk_pin_info.puk_value, pt_info->puk_value, strlen(pt_info->puk_value));
- int err = mbtk_unlock_pin(ql_info_handle, &puk_pin_info);
- if(err) {
- LOGE("mbtk_unlock_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_enable_pin(QL_SIM_VERIFY_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, strlen(pt_info->pin_value));
- pin_info.enable = 1;
- int err = mbtk_enable_pin(ql_info_handle, &pin_info);
- if(err) {
- LOGE("mbtk_enable_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_disable_pin(QL_SIM_VERIFY_PIN_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("ARG error.");
- return QL_SIM_GENERIC_FAILURE;
- }
- mbtk_enable_pin_info pin_info = {0};
- memcpy(pin_info.pin_value, pt_info->pin_value, strlen(pt_info->pin_value));
- pin_info.enable = 0;
- int err = mbtk_enable_pin(ql_info_handle, &pin_info);
- if(err) {
- LOGE("ql_sim_disable_pin fail : %d",err);
- return QL_SIM_GENERIC_FAILURE;
- } else {
- return QL_SIM_SUCCESS;
- }
-}
-
-QL_SIM_ERROR_CODE ql_sim_get_card_status(QL_SIM_CARD_STATUS_INFO *pt_info)
-{
- if(ql_info_handle == NULL || pt_info == NULL)
- {
- LOGE("sim not init.");
- return QL_SIM_GENERIC_FAILURE;
- }
-
- mbtk_sim_state_enum sim;
- mbtk_sim_card_type_enum sim_card_type;
- mbtk_pin_puk_last_times ql_last_times = {0};
- int err = mbtk_sim_state_get(ql_info_handle, &sim);
- LOGD("mbtk_sim_state_get - %d");
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- memset(pt_info, 0x0, sizeof(QL_SIM_CARD_STATUS_INFO));
- pt_info->card_state = sim;
- switch (sim)
- {
- case 0: //ABSENT
- pt_info->card_state = QL_SIM_STAT_NOT_INSERTED;
- break;
- case 1: //NOT READY
- pt_info->card_state = QL_SIM_STAT_UNKNOWN;
- break;
- case 2: //READY
- pt_info->card_state = QL_SIM_STAT_READY;
- break;
- case 3: //SIM PIN
- pt_info->card_state = QL_SIM_STAT_SIM_PIN;
- break;
- case 4: //SIM PUK
- pt_info->card_state = QL_SIM_STAT_SIM_PUK;
- break;
- case 5: //NETWORK
- pt_info->card_state = QL_SIM_STAT_UNKNOWN;
- break;
- default:
- pt_info->card_state = QL_SIM_STAT_UNKNOWN;
- break;
- }
- }
- err = mbtk_sim_card_type_get(ql_info_handle, &sim_card_type);
- LOGD("mbtk_sim_card_type_get - %d", err);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- if(sim_card_type == 0 || sim_card_type == 2)
- pt_info->card_type = QL_SIM_CARD_TYPE_ICC;
- else if(sim_card_type == 1 || sim_card_type == 3)
- pt_info->card_type = QL_SIM_CARD_TYPE_UICC;
- else
- pt_info->card_type = QL_SIM_CARD_TYPE_UNKNOWN;
- }
- err = mbtk_pin_last_num_get(ql_info_handle, &ql_last_times);
- LOGD("mbtk_pin_last_num_get - %d", err);
- if(err) {
- return QL_SIM_GENERIC_FAILURE;
- } else {
- pt_info->card_pin_info.pin1_num_retries = ql_last_times.p1_retry;
- pt_info->card_pin_info.pin2_num_retries = ql_last_times.p2_retry;
- pt_info->card_pin_info.puk1_num_retries = ql_last_times.puk1_retry;
- pt_info->card_pin_info.puk2_num_retries = ql_last_times.puk2_retry;
- }
- return QL_SIM_SUCCESS;
-}
-
-QL_SIM_ERROR_CODE ql_sim_add_event_handler(QL_SIM_CardStatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr)
-{
- if(ql_info_handle == NULL || handlerPtr == NULL)
- {
- return QL_SIM_GENERIC_FAILURE;
- }
- handlerPtr_cb = handlerPtr;
- mbtk_sim_state_change_cb_reg(ql_info_handle, ql_sim_state_change_cb);
- return QL_SIM_SUCCESS;
-}
-
diff --git a/mbtk/libql_lib_v2/src/ql_sleep_wakelock.c b/mbtk/libql_lib_v2/src/ql_sleep_wakelock.c
deleted file mode 100755
index 03f356c..0000000
--- a/mbtk/libql_lib_v2/src/ql_sleep_wakelock.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-*
-* Data : 2023/03/28 16:00:28
-* Author : Hanzhiyu
-*
-*/
-#include "ql/ql_sleep_wakelock.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stddef.h>
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-
-typedef struct
-{
- int fd;
- char name[128];
-} lock_name;
-
-lock_name ql_lock_name[512]={0};
-static bool autosleep_enable = FALSE;
-
-extern int Ql_Autosleep_Enable(char enable)
-{
- if(enable == 1)
- {
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo mem > /sys/power/autosleep");
- autosleep_enable = TRUE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
- else
- {
- if(!access("/sys/power/autosleep", W_OK))
- {
- system("echo off > /sys/power/autosleep");
- autosleep_enable = FALSE;
- return 0;
- }
- else
- {
- LOGE("/sys/power/autosleep can not write.");
- return -1;
- }
- }
-}
-
-extern int Ql_SLP_WakeLock_Create(const char *name, size_t len)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- if(name != NULL && len < 127)
- {
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == 0)
- break;
- }
- memcpy(ql_lock_name[i].name, name, strlen(name)+1);
- ql_lock_name[i].fd = i;
- return ql_lock_name[i].fd;
- }
- else
- return -1;
-}
-
-extern int Ql_SLP_WakeLock_Lock(int fd)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == fd)
- break;
- }
- if(i == 512)
- return -1;
-
- if(!access("/sys/power/wake_lock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_lock", ql_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- printf("/sys/power/wake_lock can not write.");
- return -1;
- }
-}
-
-extern int Ql_SLP_WakeLock_Unlock(int fd)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == fd)
- break;
- }
- if(i == 512)
- return -1;
-
- if(!access("/sys/power/wake_unlock", W_OK))
- {
- char cmd[128]={0};
- sprintf(cmd, "echo %s > /sys/power/wake_unlock", ql_lock_name[i].name);
- system(cmd);
- return 0;
- }
- else
- {
- printf("/sys/power/wake_unlock can not write.");
- return -1;
- }
-
-}
-
-extern int Ql_SLP_WakeLock_Destroy(int fd)
-{
- if(!autosleep_enable) {
- LOGE("Autosleep not enable.");
- return -1;
- }
-
- int i;
- for(i=0;i<512;i++)
- {
- if(ql_lock_name[i].fd == fd)
- break;
- }
- if(i == 512)
- return -1;
- else
- {
- ql_lock_name[i].fd = 0;
- memset(ql_lock_name[i].name, 0, 128);
- return 0;
- }
-}
-
diff --git a/mbtk/libql_lib_v2/src/ql_sms.c b/mbtk/libql_lib_v2/src/ql_sms.c
deleted file mode 100755
index cbad623..0000000
--- a/mbtk/libql_lib_v2/src/ql_sms.c
+++ /dev/null
@@ -1,493 +0,0 @@
-//#include "lynq/lynq_sms_api.h"
-#include "mbtk_info_api.h"
-#include "mbtk_pdu_sms.h"
-#include "ql/ql_sms.h"
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-#define TELEPHONE_NUM_MAX 16
-#define MSM_NUMBER_MAX 1024+1
-#define RES_NUM_MIN 128
-
-#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))
-
-static mbtk_info_handle_t* info_handle = NULL;
-static char center_address[15] = {0};
-
-
-// 编码后短信
-
-#if 0
-struct PDUS {
- unsigned int count;
- char **PDU;
-};
-#endif
-
-void lynq_sms_state_change_cb(const void* data, int data_len)
-{
- LOGV("sms_state_change_cb()----------start\n");
- uint8 *ptr = (uint8*)data;
- printf("3sms_state_change_cb() : %s\n", ptr);
-
- struct SMS_Struct s = PDUDecoding(ptr);
- printf("服务中心地址: %s\n", s.SCA);
- printf("发送方地址: %s\n", s.OA);
- printf("服务中心时间戳: %s\n", s.SCTS);
- printf("消息内容: %s\n", s.UD);
- printf("数据编码方案: %s\n", DSC_to_msg(s.DCS));
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_init()
-{
- if(info_handle == NULL)
- {
- info_handle = mbtk_info_handle_get();
- if(info_handle)
- {
- printf("creat info_handle is success\n");
- }
- else{
- printf("creat info_handle is fail\n");
- return QL_SMS_GENERIC_FAILURE;
- }
- }
-
- return QL_SMS_SUCCESS;
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_release()
-{
- int ret = QL_SMS_SUCCESS;
- if(info_handle)
- {
- ret = mbtk_info_handle_free(&info_handle);
- }
- else
- {
- ret = QL_SMS_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-
-/*
-*AT+CMGS="10086", CMGS TEST // Send a SMS
-> CMGS TEST
-+CMGS: 17
-OK
-*/
-/*
-int charset: send sms mode
- 0:pdu, 1:text
-
-*/
-//当state 设置为 0(pdu)模式时,telephony_num应该设置为pud 数据大小的长度;msg:为pud 数据
-
-QL_SMS_ERROR_CODE ql_sms_send_pdu_msg(uint8_t *phone_num,uint8_t *data,int sms_type)
-{
- if(info_handle == NULL || phone_num == NULL || data == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- char resp[RES_NUM_MIN] = {0};
- char pdu_data[512] = {0};
- char phone_lenth[10] = {0};
- char *p = pdu_data;
- int mode = 0;
- int err = 0;
- int i = 0;
-
- if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
- {
- printf("strlen(telephony_num):%d\n", strlen(phone_num));
- printf("strlen(msg):%d\n", strlen(data));
- return -1;
- }
-
- memset(center_address, 0, sizeof(center_address));
- memcpy(center_address, "+8613800280500", strlen("+8613800280500"));
-
- printf("phone_num:%s\n", phone_num);
- printf("center_address:%s\n", center_address);
- printf("data:%s\n", data);
-
-
- mode = 0; // PDU
-
- char* pdu = NULL;
- char* smsc = SCAEncoding(center_address);
- struct PDUS *pdus = PDUEncoding(center_address,phone_num, data, NULL);
-
- for (i = 0; i < pdus->count; i++) {
- printf("第 %d 条:\n", i + 1);
- printf("%s\n", pdus->PDU[i]);
- pdu = pdus->PDU[i];
- }
-
- sprintf(p, "%s",smsc);
- printf("pdu_data:%s\n", pdu_data);
- sprintf(p+strlen(p), "%s", pdu);
- printf("pdu_data:%s\n",pdu_data);
-
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
- sprintf(cmgs,"%d,%s",strlen(pdu_data), pdu_data);
- printf("cmgs:%s\n", cmgs);
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgs_set(info_handle, cmgs, resp);
- if(err) {
- printf("Error : %d\n", err);
- return -1;
- } else {
- printf("cmgs set success . resp:%s\n", resp);
- }
-
- return 0;
-
-}
-QL_SMS_ERROR_CODE ql_sms_send_text_msg(uint8_t *phone_num,uint8_t *data,int sms_type)
-{
- if(info_handle == NULL || phone_num == NULL || data == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- char resp[RES_NUM_MIN] = {0};
- int mode = 0;
- int err = 0;
- if(strlen(data) > 512 || strlen(data) == 0 || strlen(phone_num) == 0)
- {
- printf("strlen(telephony_num):%d\n", strlen(phone_num));
- printf("strlen(msg):%d\n", strlen(data));
- return -1;
- }
-
- mode = 1; // text
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
- sprintf(cmgs,"%s,%s",phone_num, data);
- printf("cmgs:%s\n", cmgs);
-
-/* char *ptr = strstr(cmd, "cmgs,"); //CMGS="10086",hf
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgs, 0, sizeof(cmgs));
- memcpy(cmgs, ptr, strlen(ptr));
- printf("1cmgs:%s, strlen(cmgs):%d\n", cmgs, strlen(cmgs));
- }
-*/
-
- memset(resp, 0, sizeof(resp));
-
- err = mbtk_sms_cmgs_set(info_handle, cmgs, resp);
- if(err) {
- printf("Error : %d\n", err);
- return -1;
- } else {
- printf("cmgs set success . resp:%s\n", resp);
- }
-
- return 0;
-
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_add_event_handler(QL_SMS_StatusIndMsgHandlerFunc_t handlerPtr, void* contextPtr)
-{
- if(info_handle == NULL)
- {
- return QL_SMS_GENERIC_FAILURE;
- }
-
- int ret = mbtk_sms_cnmi_set(info_handle);
- if(ret)
- {
- printf("set cnmi fail\n");
- return QL_SMS_GENERIC_FAILURE;
- }
-
- mbtk_sms_state_change_cb_reg(info_handle, lynq_sms_state_change_cb);
- return QL_SMS_SUCCESS;
-}
-
-
-/*
- AT+CMGD=<index>[,<delflag>]
-
- Deletes message based on index
- node:
- index is -1, delete all message
- delflag set 4
-*/
-
-QL_SMS_ERROR_CODE ql_sms_delete_msg(size_t index)
-{
- char cmgd[128] = {0};
- int err = 0;
-
- if(index == -1) //delete all
- {
- memcpy(cmgd, ",4", strlen(",4"));
- }
- else
- {
- sprintf(cmgd,"%d",index);
- }
-
- printf("cmgd:%s\n", cmgd);
-
- err = mbtk_sms_cmgd_set(info_handle, cmgd);
- if(err) {
- printf("lynq_delete_sms Error : %d\n", err);
- return -1;
- } else {
- printf("lynq_delete_sms set success\n");
- }
-
- return 0;
-
-}
-
-
-QL_SMS_ERROR_CODE ql_search_sms_text_message(int index, recvmessage* payload)
-{
- if(info_handle == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- int mode = 1; // text
- int err = 0;
- char *data = "ALL";
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
-
- char cmgl[128] = {0};
- char resp[1024+1] ={0};
- sprintf(cmgl,"%d,%s", index, data);
-/*
- char *ptr = strstr(cmd, "cmgl,"); // AT+CMGL[=<stat>]
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgl, 0, sizeof(cmgl));
- memcpy(cmgl, ptr, strlen(ptr));
- printf("0cmgl:%s\n", cmgl);
- }
-*/
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);
- if(err) {
- printf("lynq_list_sms Error : %d\n", err);
- return -1;
- } else {
- printf("cmgl set success, reg:%s\n",resp);
- }
-
- return 0;
-
-}
-QL_SMS_ERROR_CODE ql_search_sms_pdu_message(int index, recvmessage* payload)
-{
- if(info_handle == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- int mode = 0; // pud
- int err = 0;
- char *data = "ALL";
-
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
-
- char cmgl[128] = {0};
- char resp[1024+1] ={0};
- sprintf(cmgl,"%d,%s", index, data);
-/*
- char *ptr = strstr(cmd, "cmgl,"); // AT+CMGL[=<stat>]
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgl, 0, sizeof(cmgl));
- memcpy(cmgl, ptr, strlen(ptr));
- printf("0cmgl:%s\n", cmgl);
- }
-*/
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);
- if(err) {
- printf("lynq_list_sms Error : %d\n", err);
- return -1;
- } else {
- printf("cmgl set success, reg:%s\n",resp);
- }
-
- return 0;
-
-}
-
-
-/*
-function: lynq_list_sms
-stat:0:pud, 1:text
-index: 0, list index;
- > 0,
-
-*/
-QL_SMS_ERROR_CODE ql_sms_list_sms(int stat, int index, char *data)
-{
- if(info_handle == NULL)
- {
- return -1;
- }
-
- char cmgs[MSM_NUMBER_MAX] = {0};
- int mode = 0;
- int err = 0;
-
- if(stat) // text
- {
- mode = 1;
- }
-
- err = mbtk_sms_cmgf_set(info_handle, mode);
- if(err) {
- printf("cmgf set error : %d\n", err);
- } else {
- printf("cmgf set success\n");
- }
-
-
- char cmgl[128] = {0};
- char resp[1024+1] ={0};
- sprintf(cmgl,"%d,%s", index, data);
-/*
- char *ptr = strstr(cmd, "cmgl,"); // AT+CMGL[=<stat>]
- if(ptr != NULL)
- {
- ptr = strstr(cmd, ",");
- ptr++;
- memset(cmgl, 0, sizeof(cmgl));
- memcpy(cmgl, ptr, strlen(ptr));
- printf("0cmgl:%s\n", cmgl);
- }
-*/
- memset(resp, 0, sizeof(resp));
- err = mbtk_sms_cmgl_set(info_handle, cmgl, resp);
- if(err) {
- printf("lynq_list_sms Error : %d\n", err);
- return -1;
- } else {
- printf("cmgl set success, reg:%s\n",resp);
- }
-
- return 0;
-}
-
-
-
-int ql_sms_query_sms_storage_status(void)
-{
- char mem[128] = {0};
- int err = mbtk_sms_cpms_get(info_handle, mem);
- if(err) {
- printf("cpms query is fail Error : %d\n", err);
- return -1;
- } else {
- printf("cpms query is success : %s\n", mem);
- }
-
- return 0;
-}
-
-QL_SMS_ERROR_CODE ql_sms_get_sms_center_address(uint8_t *sms_center_addree)
-{
- char csca[128] = {0};
- if(info_handle == NULL || sms_center_addree == NULL)
- {
- return QL_SMS_GENERIC_FAILURE;
- }
-
- int err = mbtk_sms_csca_get(info_handle, sms_center_addree);
- if(err) {
- printf("lynq_get_smsc_address Error : %d\n", err);
- return QL_GET_RESPONSE_ERROR;
- } else {
- printf("lynq_get_smsc_address success\n");
- }
-
- return 0;
-}
-
-
-QL_SMS_ERROR_CODE ql_sms_set_sms_center_address(unsigned char *destNum)
-{
- printf("1destNum:%s\n", destNum);
- memset(center_address, 0, sizeof(center_address));
- memcpy(center_address, destNum, strlen(destNum));
- if(info_handle == NULL || destNum == NULL)
- {
- return -1;
- }
-
- int err = mbtk_sms_csca_set(info_handle, destNum);
- if(err) {
- printf("Error : %d\n", err);
- return err;
- } else {
- // memset(center_address, 0, sizeof(center_address));
- // memcpy(center_address, destNum, strlen(destNum));
- printf("destNum:%s\n", destNum);
- printf("lynq_set_smsc_address success\n");
- }
- return 0;
-
-}
-
-
-
-
-
diff --git a/mbtk/libql_lib_v2/src/ql_spi.c b/mbtk/libql_lib_v2/src/ql_spi.c
deleted file mode 100755
index 4fc5d9f..0000000
--- a/mbtk/libql_lib_v2/src/ql_spi.c
+++ /dev/null
@@ -1,342 +0,0 @@
-#include <stdio.h>
-#include <malloc.h>
-#include <string.h>
-#include <linux/types.h>
-#include <linux/spi/spidev.h>
-
-#include <stdint.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <linux/types.h>
-#include <linux/spi/spidev.h>
-#include <errno.h>
-
-#include "ql/ql_spi.h"
-#include "mbtk_log.h"
-
-#if 0
-static const char *device = "/dev/spidev1.0\0";
-static uint8_t mode = 3; /* SPI通信使用全双工,设置CPOL=0,CPHA=0。 */
-static uint8_t bits = 8; /* 8bits读写,MSB first。*/
-static uint32_t speed = 100 * 1000;/* 设置0.5M传输速度 */
-static uint16_t delay = 500;
-
-int SPI_Transfer(const uint8_t *TxBuf, uint8_t *RxBuf, int len)
-{
- int ret;
- int fd = g_SPI_Fd;
-
-
- struct spi_ioc_transfer tr ;
- memset(&tr,0x00,sizeof(tr));
- tr.tx_buf = (unsigned long) TxBuf,
- tr.rx_buf = (unsigned long) RxBuf,
- tr.len =len,
- tr.delay_usecs = delay;
- tr.speed_hz=speed;
- tr.bits_per_word=bits;
- ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
- if (ret < 1)
- {
- printf("can't send spi message");
- }
- else
- {
- //printf("Send spi message OK %d\n",RxBuf[0]);
- }
- return 1;
-}
-
-/**
-* 功 能:关闭SPI模块
-*/
-int SPI_Close(void)
-{
- int fd = g_SPI_Fd;
-
-
- if (fd == 0) /* SPI是否已经打开*/
- return 0;
- close(fd);
- g_SPI_Fd = 0;
-
-
- return 0;
-}
-
-int SPI_Write(uint8_t *TxBuf, int len)
-{
- int ret;
- int fd = g_SPI_Fd;
-
- printf("fd : %d\n",fd);
- ret = write(fd, TxBuf, len);
- if (ret < 0)
- printf("SPI Write errorn");
-
- return ret;
-}
-
-int SPI_Open(void)
-{
- int fd;
- int ret = 0;
-
- printf("open spi dev:%s \r\n", device);
- fd = open(device, O_RDWR);
- if (fd < 0)
- {
- printf("can't open device \n");
- return -1;
- }
- else
- printf("SPI - Open Succeed. Start Init SPI...n\n");
-
- /*
- * spi mode
- */
- ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
- if (ret == -1)
- printf("can't set spi mode\n");
-
-
- ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
- if (ret == -1)
- printf("can't get spi mode\n");
-
-
- /*
- * bits per word
- */
- ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
- if (ret == -1)
- printf("can't set bits per word\n");
-
-
- ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
- if (ret == -1)
- printf("can't get bits per word\n");
-
-
- /*
- * max speed hz
- */
- ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
- if (ret == -1)
- printf("can't set max speed hz\n");
-
-
- ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
- if (ret == -1)
- printf("can't get max speed hz\n");
-
- g_SPI_Fd=fd;
- return ret;
-}
-#endif
-
-/**
- * Function: Ql_SPI_Init
- * Description: spi init
- * Parameters: dev_name---device name
- * mode---spi mode
- * bits---spi per word
- * speed---spi transfer clock
- * Return: spi fd
- **/
-int Ql_SPI_Init(const char *dev_name, SPI_MODE mode, unsigned char bits, SPI_SPEED speed)
-{
- int fd;
- int ret = 0;
-
- LOGD("open spi dev:%s.", dev_name);
- fd = open(dev_name, O_RDWR);
- if (fd < 0)
- {
- LOGE("can't open device, errno - %d", errno);
- return -1;
- }
- else
- LOGD("SPI - Open Succeed. Start Init SPI...");
-
- /*
- * spi mode
- */
- ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
- if (ret == -1) {
- LOGE("can't set spi mode");
- goto error;
- }
-
-#if 0
- ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
- if (ret == -1) {
- LOGE("can't get spi mode");
- goto error;
- }
-#endif
-
- /*
- * bits per word
- */
- ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
- if (ret == -1) {
- LOGE("can't set bits per word");
- goto error;
- }
-
-#if 0
- ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
- if (ret == -1) {
- LOGE("can't get bits per word");
- goto error;
- }
-#endif
-
- /*
- * max speed hz
- */
- ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
- if (ret == -1) {
- LOGE("can't set max speed hz");
- goto error;
- }
-
-#if 0
- ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
- if (ret == -1) {
- LOGE("can't get max speed hz");
- goto error;
- }
-#endif
-
- return fd;
-error:
- if(fd > 0)
- {
- close(fd);
- }
- return -1;
-}
-
-/**
- * Function: Ql_SPI_DeInit
- * Description: spi deinit
- * Parameters: fd---spi fd
- * Return:
- */
-int Ql_SPI_DeInit(int fd)
-{
- if (fd <= 0)
- return -1;
-
- close(fd);
- return 0;
-}
-
-/**
- * Function: Ql_SPI_Write_Read
- * Description: spi write read function
- * Parameters: fd---spi fd
- * w_buf---write buffer
- * r_buf---read buffer
- * len---spi transfer length
- * Return: 0---transfer success
- * other---failed
- **/
-int Ql_SPI_Write_Read(int fd, unsigned char *w_buf, unsigned char *r_buf, unsigned int len)
-{
- int ret;
- struct spi_ioc_transfer tr ;
- memset(&tr,0x00,sizeof(tr));
- tr.tx_buf = (unsigned long) w_buf,
- tr.rx_buf = (unsigned long) r_buf,
- tr.len =len,
- tr.delay_usecs = 500;
- //tr.speed_hz=speed;
- //tr.bits_per_word=bits;
- ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
- if (ret < 1)
- {
- LOGE("can't send spi message");
- return -1;
- }
- else
- {
- return 0;
- }
-}
-
-
-#if 0
-int main(int argc, char *argv[])
-{
-
- char send_data[64] = {0};
- char read_data[64] = {0};
- char crc = 0;
- int i = 0;
- int j = 0;
-
- system("echo PB6 > /sys/kernel/debug/sunxi_pinctrl/sunxi_pin");
- system("echo PB6 1 > /sys/kernel/debug/sunxi_pinctrl/function");
- system("echo PB6 0 > /sys/kernel/debug/sunxi_pinctrl/data");
-
- /* spi 初始化程序 */
- SPI_Open();
-
- send_data[0] = 0x55;
- send_data[1] = 0x00;
- send_data[2] = 0x84;
- send_data[3] = 0x00;
- send_data[4] = 0x08;
- send_data[5] = 0x00;
- send_data[6] = 0x00;
-
- crc = send_data[1];
- for (i = 2; i < 7; i++)
- {
- crc ^= send_data[i];
- }
- crc = ~crc;
-
- send_data[7] = crc;
-
- printf("send data:");
- for (i = 0; i < 8; i++)
- {
- printf("%#x, ", send_data[i]);
- }
- printf("\n");
-
- /* spi 发送数据 */
- SPI_Transfer(send_data,read_data,8);
-
- printf("read data:");
- for (j = 0; j < 20; j++)
- {
- printf("%#x, ", read_data[j]);
- }
-
- usleep(10000);
-
-
- memset(read_data, 0, sizeof(read_data));
- memset(send_data, 0, sizeof(send_data));
-
- /* spi 读取数据 */
- SPI_Transfer(send_data,read_data,16);
-
- printf("read data:");
- for (j = 0; j < 20; j++)
- {
- printf("%#x, ", read_data[j]);
- }
-
- return 0;
-}
-#endif
diff --git a/mbtk/libql_lib_v2/src/ql_uart.c b/mbtk/libql_lib_v2/src/ql_uart.c
deleted file mode 100755
index ca6f779..0000000
--- a/mbtk/libql_lib_v2/src/ql_uart.c
+++ /dev/null
@@ -1,432 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <errno.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include "mbtk_log.h"
-#include "ql/ql_uart.h"
-
-int Ql_UART_Open(const char* port, Enum_BaudRate baudrate, Enum_FlowCtrl flowctrl)
-{
- int fd;
- if((fd = open(port, O_RDWR | O_NOCTTY)) < 0)
- {
- LOGE("open %s failed - %d", port, errno);
- return -1;
- }
-
- LOGD("Open %s success.", port);
-
- /* set newtio */
- struct termios newtio;
- memset(&newtio, 0, sizeof(newtio));
- if (tcflush(fd, TCIOFLUSH) < 0) {
- LOGE("Could not flush uart port");
- return -1;
- }
-
- newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
- newtio.c_cc[VMIN] = 0; /* blocking read until 5 chars received */
-
- if(flowctrl == FC_RTSCTS) {
- newtio.c_cflag |= CRTSCTS;
- } else if(flowctrl == FC_XONXOFF) {
- newtio.c_cflag |= (IXON | IXOFF);
- } else {
- // newtio.c_cflag |= CRTSCTS;
- }
- /* c_iflag 输入模式 */
- newtio.c_iflag &= ~(ICRNL | INLCR);
- newtio.c_iflag &= ~(IXON | IXOFF | IXANY);
-
- // /* c_lflag 本地模式 */
- newtio.c_cflag &= ~ INPCK;
- newtio.c_cflag |= (CLOCAL | CREAD);
-
- // /* c_lflag 本地模式 */
- newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
- /* c_oflag 输出模式 */
- newtio.c_oflag &= ~ OPOST;
- newtio.c_oflag &= ~(ONLCR | OCRNL);
-
- /* c_cflag 控制模式 */
- newtio.c_cflag &= ~ CSIZE;
- newtio.c_cflag |= CS8;
- newtio.c_cflag &= ~ CSTOPB;
- newtio.c_cflag &= ~ PARENB;
-
- switch(baudrate)
- {
- case B_300:
- cfsetospeed(&newtio, B300);
- cfsetispeed(&newtio, B300);
- break;
- case B_600:
- cfsetospeed(&newtio, B600);
- cfsetispeed(&newtio, B600);
- break;
- case B_1200:
- cfsetospeed(&newtio, B1200);
- cfsetispeed(&newtio, B1200);
- break;
- case B_2400:
- cfsetospeed(&newtio, B2400);
- cfsetispeed(&newtio, B2400);
- break;
- case B_4800:
- cfsetospeed(&newtio, B4800);
- cfsetispeed(&newtio, B4800);
- break;
- case B_9600:
- cfsetospeed(&newtio, B9600);
- cfsetispeed(&newtio, B9600);
- break;
- case B_19200:
- cfsetospeed(&newtio, B19200);
- cfsetispeed(&newtio, B19200);
- break;
- case B_38400:
- cfsetospeed(&newtio, B38400);
- cfsetispeed(&newtio, B38400);
- break;
- case B_57600:
- cfsetospeed(&newtio, B57600);
- cfsetispeed(&newtio, B57600);
- break;
- case B_115200:
- cfsetospeed(&newtio, B115200);
- cfsetispeed(&newtio, B115200);
- break;
- case B_230400:
- cfsetospeed(&newtio, B230400);
- cfsetispeed(&newtio, B230400);
- break;
- case B_460800:
- cfsetospeed(&newtio, B460800);
- cfsetispeed(&newtio, B460800);
- break;
- case B_921600:
- cfsetospeed(&newtio, B921600);
- cfsetispeed(&newtio, B921600);
- break;
- case B_3000000:
- cfsetospeed(&newtio, B3000000);
- cfsetispeed(&newtio, B3000000);
- break;
- case B_4000000:
- cfsetospeed(&newtio, B4000000);
- cfsetispeed(&newtio, B4000000);
- break;
- default:
- cfsetospeed(&newtio, B115200);
- cfsetispeed(&newtio, B115200);
- break;
- }
-
- if (tcsetattr(fd, TCSANOW, &newtio) < 0) {
- LOGE("Can't set port setting");
- return -1;
- }
- /* Blocking behavior */
- fcntl(fd, F_SETFL, 0);
-
- return fd;
-}
-
-int Ql_UART_Read(int fd, char* buf, unsigned int buf_len)
-{
- return read(fd, buf, buf_len);
-}
-
-
-int Ql_UART_Write(int fd, const char* buf, unsigned int buf_len)
-{
- return write(fd, buf, buf_len);
-}
-
-
-int Ql_UART_SetDCB(int fd, ST_UARTDCB *dcb)
-{
- struct termios newtio;
- memset(&newtio, 0, sizeof(newtio));
-
- if(tcgetattr(fd, &newtio) != 0)
- {
- LOGE("Serial port configuration backup errno");
- return -1;
- }
-
- switch(dcb->baudrate)
- {
- case B_300:
- cfsetospeed(&newtio, B300);
- cfsetispeed(&newtio, B300);
- break;
- case B_600:
- cfsetospeed(&newtio, B600);
- cfsetispeed(&newtio, B600);
- break;
- case B_1200:
- cfsetospeed(&newtio, B1200);
- cfsetispeed(&newtio, B1200);
- break;
- case B_2400:
- cfsetospeed(&newtio, B2400);
- cfsetispeed(&newtio, B2400);
- break;
- case B_4800:
- cfsetospeed(&newtio, B4800);
- cfsetispeed(&newtio, B4800);
- break;
- case B_9600:
- cfsetospeed(&newtio, B9600);
- cfsetispeed(&newtio, B9600);
- break;
- case B_19200:
- cfsetospeed(&newtio, B19200);
- cfsetispeed(&newtio, B19200);
- break;
- case B_38400:
- cfsetospeed(&newtio, B38400);
- cfsetispeed(&newtio, B38400);
- break;
- case B_57600:
- cfsetospeed(&newtio, B57600);
- cfsetispeed(&newtio, B57600);
- break;
- case B_115200:
- cfsetospeed(&newtio, B115200);
- cfsetispeed(&newtio, B115200);
- break;
- case B_230400:
- cfsetospeed(&newtio, B230400);
- cfsetispeed(&newtio, B230400);
- break;
- case B_460800:
- cfsetospeed(&newtio, B460800);
- cfsetispeed(&newtio, B460800);
- break;
- case B_921600:
- cfsetospeed(&newtio, B921600);
- cfsetispeed(&newtio, B921600);
- break;
- case B_3000000:
- cfsetospeed(&newtio, B3000000);
- cfsetispeed(&newtio, B3000000);
- break;
- case B_4000000:
- cfsetospeed(&newtio, B4000000);
- cfsetispeed(&newtio, B4000000);
- break;
- default:
- LOGD("No set speed.");
- break;
- }
-
- switch(dcb->databit)
- {
- case DB_CS5:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS5;
- break;
- case DB_CS6:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS6;
- break;
- case DB_CS7:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS7;
- break;
- case DB_CS8:
- newtio.c_cflag &= ~CSIZE;
- newtio.c_cflag |= CS8;
- break;
- default:
- LOGD("No set databit.");
- break;
- }
-
- if(dcb->stopbit == SB_2) {
- newtio.c_cflag |= CSTOPB;
- } else {
- newtio.c_cflag &= ~CSTOPB;
- }
-
- switch (dcb->parity)
- {
- case PB_ODD:// 奇校验
- newtio.c_cflag |= PARENB;
- newtio.c_cflag |= PARODD;
- break;
- case PB_EVEN:// 偶校验
- newtio.c_cflag |= PARENB;
- newtio.c_cflag &= ~PARODD;
- break;
- case PB_NONE:// 无奇偶校验
- newtio.c_cflag &= ~PARENB;
- break;
- default:
- LOGD("No set parity.");
- break;
- }
-
- switch (dcb->flowctrl)
- {
- case FC_RTSCTS:
- newtio.c_cflag |= CRTSCTS;
- tcflush(fd, TCIFLUSH);
- break;
- case FC_XONXOFF:
- newtio.c_iflag |= (IXON | IXOFF);
- tcflush(fd, TCIFLUSH);
- break;
- case FC_NONE:
- newtio.c_cflag &= ~CRTSCTS;
- newtio.c_iflag &= ~(IXON | IXOFF);
- tcflush(fd, TCIFLUSH);
- break;
- default:
- LOGD("No set flow ctrl.");
- break;
- }
-
- if(tcsetattr(fd, TCSANOW, &newtio) != 0)
- {
- LOGE("Serial port configuration backup errno");
- return -1;
- }
-
- return 0;
-}
-
-
-int Ql_UART_GetDCB(int fd, ST_UARTDCB *dcb)
-{
- struct termios newtio;
- memset(&newtio, 0, sizeof(newtio));
-
- if(tcgetattr(fd, &newtio) != 0)
- {
- LOGE("Serial port configuration backup errno");
- return -1;
- }
-
- switch(cfgetispeed(&newtio))
- {
- case B300:
- dcb->baudrate = B_300;
- break;
- case B600:
- dcb->baudrate = B_600;
- break;
- case B1200:
- dcb->baudrate = B_1200;
- break;
- case B2400:
- dcb->baudrate = B_2400;
- break;
- case B4800:
- dcb->baudrate = B_4800;
- break;
- case B9600:
- dcb->baudrate = B_9600;
- break;
- case B19200:
- dcb->baudrate = B_19200;
- break;
- case B38400:
- dcb->baudrate = B_38400;
- break;
- case B57600:
- dcb->baudrate = B_57600;
- break;
- case B115200:
- dcb->baudrate = B_115200;
- break;
- case B230400:
- dcb->baudrate = B_230400;
- break;
- case B460800:
- dcb->baudrate = B_460800;
- break;
- case B921600:
- dcb->baudrate = B_921600;
- break;
- case B3000000:
- dcb->baudrate = B_3000000;
- break;
- case B4000000:
- dcb->baudrate = B_4000000;
- break;
- default:
- dcb->baudrate = B_115200;
- break;
- }
-
- switch(newtio.c_cflag & CSIZE)
- {
- case CS5:
- dcb->databit = DB_CS5;
- break;
- case CS6:
- dcb->databit = DB_CS6;
- break;
- case CS7:
- dcb->databit = DB_CS7;
- break;
- case CS8:
- dcb->databit = DB_CS8;
- break;
- default:
- dcb->databit = DB_CS8;
- break;
- }
-
- if(newtio.c_cflag & CSTOPB) {
- dcb->stopbit = SB_2;
- } else {
- dcb->stopbit = SB_1;
- }
-
- if(newtio.c_cflag & PARENB) { // 启用了奇偶校验
- if(newtio.c_cflag & PARODD) {
- dcb->parity = PB_ODD; // 奇校验
- } else {
- dcb->parity = PB_EVEN; // 偶校验
- }
- } else {
- dcb->parity = PB_NONE;
- }
-
- if(newtio.c_cflag & CRTSCTS) {
- dcb->flowctrl = FC_RTSCTS;
- } else if(newtio.c_iflag & (IXON | IXOFF) == (IXON | IXOFF)){
- dcb->flowctrl = FC_XONXOFF;
- } else {
- dcb->flowctrl = FC_NONE;
- }
-
- return 0;
-}
-
-
-int Ql_UART_IoCtl(int fd, unsigned int cmd, void* pValue)
-{
- return 0;
-}
-
-
-int Ql_UART_Close(int fd)
-{
- if (fd <= 0)
- return -1;
-
- close(fd);
- return 0;
-}
-
diff --git a/mbtk/libql_lib_v2/src/ql_voice.c b/mbtk/libql_lib_v2/src/ql_voice.c
deleted file mode 100755
index 9df4053..0000000
--- a/mbtk/libql_lib_v2/src/ql_voice.c
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "mbtk_type.h"
-#include "ql/ql_at.h"
-#include "ql/ql_vcall.h"
-#include "ql/ql_mcm_call.h"
-#include "ql/ql_voice.h"
-
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "print_help"},
- {1, "QL_Voice_Call_Ecall"},
- {2, "QL_Voice_Call_Ecall_HangUp"},
-
- {-1, NULL}
-};
-
-
-voice_client_handle_type h_voice = 0;
-
-
-void print_help(void)
-{
- int i;
-
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-static void ql_voice_call_ind_func(unsigned int ind_id,
- void* ind_data,
- uint32_t ind_data_len)
-{
- if(NULL == ind_data)
- {
- return;
- }
-
- switch(ind_id)
- {
- case E_QL_MCM_VOICE_CALL_IND:
- {
- if(ind_data_len != sizeof(ql_mcm_voice_call_ind))
- {
- break;
- }
-
- ql_mcm_voice_call_ind *pVoiceCallInd = (ql_mcm_voice_call_ind*)ind_data;
-
- char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};
-
- int i = 0;
- for(i = 0; i < pVoiceCallInd->calls_len; i++)
- {
- printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n",
- pVoiceCallInd->calls[i].call_id, pVoiceCallInd->calls[i].number, call_state[pVoiceCallInd->calls[i].state]);
- }
-
- break;
- }
-
- case E_QL_MCM_VOICE_ECALL_STATUE_IND:
- {
- if(ind_data_len != sizeof(ql_mcm_voice_ecall_status_ind))
- {
- break;
- }
-
- ql_mcm_voice_ecall_status_ind *pEcallStatusInd
- = (ql_mcm_voice_ecall_status_ind*)ind_data;
-
- if (pEcallStatusInd->ecall_msd_tx_status_valid)
- {
- if (pEcallStatusInd->ecall_msd_tx_status == E_QL_MCM_VOICE_ECALL_MSD_TRANSMISSION_STATUS_SUCCESS)
- {
- printf("========== Ecall status call_id =%d , ecall msd tx success.\r\n", pEcallStatusInd->call_id);
- }
- else
- {
- printf("========== Ecall status call_id =%d , ecall msd tx failure.\r\n", pEcallStatusInd->call_id);
- }
- }
- else
- {
- printf("========== Ecall status call_id =%d \r\n", pEcallStatusInd->call_id);
- }
-
- break;
- }
-
- case E_QL_MCM_VOICE_UNKOWN_IND:
- default:
- break;
- }
-}
-
-//"\t1 call init\n"
-QL_VOICE_ERROR_CODE ql_voice_call_init()
-{
- int ret = 0;
- ret = QL_Voice_Call_Client_Init(&h_voice);
- if(ret < 0)
- {
- printf("QL_Voice_Call_Client_Init FAIL. ret:%d\n",ret);
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- else{
- printf("QL_Voice_Call_Client_Init ret = %d, with h_voice=%d\n", ret, h_voice);
- }
-
- return ret;
-}
-
-//"\t9 call deinit\n"
-QL_VOICE_ERROR_CODE ql_voice_call_release()
-{
- int ret = 0;
- ret = QL_Voice_Call_Client_Deinit(h_voice);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-//\t2 call register handle\n"
-QL_VOICE_ERROR_CODE ql_voice_call_event_register(QL_VOICE_EventHandlerFunc_t handlerPtr, void* contextPtr)
-{
- int ret = 0;
- ret = QL_Voice_Call_AddCommonStateHandler(h_voice, (QL_VoiceCall_CommonStateHandlerFunc_t)ql_voice_call_ind_func);
- if(ret < 0)
- {
- printf("QL_Voice_Call_AddCommonStateHandler FAIL. ret:%d\n",ret);
- ret = QL_VOICE_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-/*
- Phone call.
- -call_num : dst phone number
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_start(char* call_num)
-{
- int ret = 0;
-
- ret = QL_Voice_Call_Start(h_voice, 0, call_num, NULL);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- return ret;
-}
-
-
-/*
- Put through.
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_answer()
-{
- int ret = 0;
- ret = QL_Voice_Call_Answer(h_voice, 0);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- return ret;
-}
-QL_VOICE_ERROR_CODE ql_voice_auto_answer(int seconds)
-{
- int ret = 0;
-
- ret = QL_Voice_Call_SetAutoAnswer(h_voice, E_QL_MCM_VOICE_AUTO_ANSWER_ENABLE, 6000);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
- return ret;
-}
-
-/*
- Hang up.
-*/
-QL_VOICE_ERROR_CODE ql_voice_call_end()
-{
- int ret = 0;
- ret = QL_Voice_Call_End(h_voice, 0);
- if(ret)
- {
- ret = QL_VOICE_GENERIC_FAILURE;
- }
-
- return ret;
-}
-
-
-/* hold the voice */
-QL_VOICE_ERROR_CODE ql_voice_call_hold()
-{
- int ret = 0;
- QL_Voice_Call_Hold(h_voice);
-
- return ret;
-}
-
-/* unhold the voice */
-QL_VOICE_ERROR_CODE ql_voice_call_unhold()
-{
- int ret = 0;
-
- QL_Voice_Call_UnHold(h_voice);
-
- return ret;
-}
-
diff --git a/mbtk/mbtk_gnssd/Makefile b/mbtk/mbtk_gnssd/Makefile
index b967666..9150607 100755
--- a/mbtk/mbtk_gnssd/Makefile
+++ b/mbtk/mbtk_gnssd/Makefile
@@ -11,7 +11,10 @@
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_net -lmbtk_ril -lmbtk_http -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox -lutil -lrt
+
+LIBS += -lmbtk_lib
+
+LIBS += -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox -lutil -lrt
CFLAGS +=
diff --git a/mbtk/mbtk_rild/Makefile b/mbtk/mbtk_rild/Makefile
index 56e6534..4f709f7 100755
--- a/mbtk/mbtk_rild/Makefile
+++ b/mbtk/mbtk_rild/Makefile
@@ -5,15 +5,15 @@
INC_DIR += \
-I$(LOCAL_PATH)/inc \
- -I$(BUILD_ROOT)/libmbtk_ril
+ -I$(BUILD_ROOT)/libmbtk_lib/ril
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_net -lmbtk_ril -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm
+LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm
CFLAGS +=
-DEFINE +=
+DEFINE += -DMBTK_ALL_CID_SUPPORT
MY_FILES_PATH:=$(LOCAL_PATH)/src
#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
diff --git a/mbtk/mbtk_rild_v2/Makefile b/mbtk/mbtk_rild_v2/Makefile
index 5df9e1c..9672371 100755
--- a/mbtk/mbtk_rild_v2/Makefile
+++ b/mbtk/mbtk_rild_v2/Makefile
@@ -5,11 +5,11 @@
INC_DIR += \
-I$(LOCAL_PATH)/inc \
- -I$(BUILD_ROOT)/libmbtk_ril_v2/inc
+ -I$(BUILD_ROOT)/libmbtk_lib_v2/ril
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_net -lmbtk_ril -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm
+LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm
CFLAGS +=
diff --git a/mbtk/mbtk_sdk_ready/Makefile b/mbtk/mbtk_sdk_ready/Makefile
old mode 100644
new mode 100755
index d07d529..4ea77ec
--- a/mbtk/mbtk_sdk_ready/Makefile
+++ b/mbtk/mbtk_sdk_ready/Makefile
@@ -4,11 +4,11 @@
LOCAL_PATH=$(BUILD_ROOT)/mbtk_sdk_ready
INC_DIR += \
- -I$(BUILD_ROOT)/libmbtk_ril
+ -I$(BUILD_ROOT)/libmbtk_lib/ril
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_ril -lprop2uci
+LIBS += -lmbtk_lib -lprop2uci
CFLAGS +=
diff --git a/mbtk/mbtk_sdk_ready_v2/Makefile b/mbtk/mbtk_sdk_ready_v2/Makefile
index da63071..5563627 100755
--- a/mbtk/mbtk_sdk_ready_v2/Makefile
+++ b/mbtk/mbtk_sdk_ready_v2/Makefile
@@ -4,11 +4,11 @@
LOCAL_PATH=$(BUILD_ROOT)/mbtk_sdk_ready_v2
INC_DIR += \
- -I$(BUILD_ROOT)/libmbtk_ril
+ -I$(BUILD_ROOT)/libmbtk_lib_v2/ril
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_ril -lprop2uci
+LIBS += -lmbtk_lib -lprop2uci
CFLAGS +=
diff --git a/mbtk/mbtk_servicesd/Makefile b/mbtk/mbtk_servicesd/Makefile
index 359ec7b..8380763 100755
--- a/mbtk/mbtk_servicesd/Makefile
+++ b/mbtk/mbtk_servicesd/Makefile
@@ -5,11 +5,11 @@
INC_DIR += \
-I$(LOCAL_PATH) \
- -I$(BUILD_ROOT)/libmbtk_ril
+ -I$(BUILD_ROOT)/libmbtk_lib/ril
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_net -lmbtk_ril -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox -lutil
+LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox -lutil
CFLAGS +=
diff --git a/mbtk/mbtk_servicesd_v2/Makefile b/mbtk/mbtk_servicesd_v2/Makefile
index 5208a5e..7047ce7 100755
--- a/mbtk/mbtk_servicesd_v2/Makefile
+++ b/mbtk/mbtk_servicesd_v2/Makefile
@@ -5,11 +5,11 @@
INC_DIR += \
-I$(LOCAL_PATH)/inc \
- -I$(BUILD_ROOT)/libmbtk_ril_v2/inc
+ -I$(BUILD_ROOT)/libmbtk_lib_v2/ril
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_net -lmbtk_ril -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox -lutil
+LIBS += -lmbtk_lib -lrilutil -lprop2uci -lmtel -laudio-apu -lcutils -ltinyalsa -lacm -lubus -lubox -lutil
CFLAGS +=
diff --git a/mbtk/mbtk_utils/Makefile b/mbtk/mbtk_utils/Makefile
index 9e1a0f4..d58f815 100755
--- a/mbtk/mbtk_utils/Makefile
+++ b/mbtk/mbtk_utils/Makefile
@@ -5,12 +5,7 @@
LIB_DIR +=
-LIBS += -lmbtk_lib -lmbtk_ril -lmbtk_net -lmbtk_audio -lmbtk_fota -lmbtk_gnss -lmbtk_factory \
- -lmbtk_coap -lmbtk_ftp -lmbtk_http -lmbtk_mqtt -lmbtk_tcpip
-
-ifeq ($(MBTK_SOURCE_VERSION), 1)
-LIBS += -llynq_lib -lql_lib
-endif
+LIBS += -lmbtk_lib
CFLAGS +=
diff --git a/mbtk/mbtk_utils/at.c b/mbtk/mbtk_utils/at.c
index c69ba82..950d3e2 100755
--- a/mbtk/mbtk_utils/at.c
+++ b/mbtk/mbtk_utils/at.c
@@ -13,7 +13,6 @@
#include <unistd.h>
#include <sys/select.h>
-#include "ql/ql_uart.h"
#include "mbtk_type.h"
//#define AT_TYPE_SOCKET
diff --git a/mbtk/mbtk_utils/mbtk_version.c b/mbtk/mbtk_utils/mbtk_version.c
index 8c77cdb..0592e83 100755
--- a/mbtk/mbtk_utils/mbtk_version.c
+++ b/mbtk/mbtk_utils/mbtk_version.c
@@ -14,21 +14,6 @@
mbtk_lib_info_print();
- mbtk_ril_lib_info_print();
-#ifndef MBTK_SOURCE_VERSION_2
- lynq_lib_info_print();
- ql_lib_info_print();
-#endif
- mbtk_audio_lib_info_print();
- mbtk_coap_lib_info_print();
- mbtk_factory_lib_info_print();
- mbtk_fota_lib_info_print();
- mbtk_ftp_lib_info_print();
- mbtk_gnss_lib_info_print();
- mbtk_http_lib_info_print();
- mbtk_mqtt_lib_info_print();
- mbtk_net_lib_info_print();
- mbtk_tcpip_lib_info_print();
return 0;
}
diff --git a/mbtk/test/liblynq_lib/Makefile.backup b/mbtk/test/liblynq_lib/Makefile.backup
deleted file mode 100755
index d8eea05..0000000
--- a/mbtk/test/liblynq_lib/Makefile.backup
+++ /dev/null
@@ -1,34 +0,0 @@
-BUILD_ROOT = $(shell pwd)/../..
-include $(BUILD_ROOT)/Make.defines
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -lmbtk_lib -lmbtk_ril -lmbtk_net -lmbtk_audio -lmbtk_fota -lmbtk_gnss -lmbtk_factory -llynq_lib
-
-CFLAGS +=
-
-DEFINE +=
-
-LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
-
-$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
-
-OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES)))
-BINS = $(patsubst %.o,%,$(OBJS))
-
-all: $(BINS)
-
-$(BINS):$(OBJS)
- @echo " BIN $@"
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $@.o -o $(OUT_DIR)/bin/$@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS)
diff --git a/mbtk/test/liblynq_lib/lynq-audio-demo.cpp b/mbtk/test/liblynq_lib/lynq-audio-demo.cpp
deleted file mode 100755
index d97464d..0000000
--- a/mbtk/test/liblynq_lib/lynq-audio-demo.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include "ring_tele.h"
-#include "lynq/lynq-qser-audio.h"
-
-static int playback_handle = 1;
-
-void player_cmd_proc(char *cmdstr)
-{
- if (strcmp(cmdstr, "P\n") == 0)
- {
- qser_AudPlayer_Pause(playback_handle);
- }
- else if (strcmp(cmdstr, "R\n") == 0)
- {
- qser_AudPlayer_Resume(playback_handle);
- }
- else if (strcmp(cmdstr, "T\n") == 0)
- {
- qser_AudPlayer_Stop(playback_handle);
- }
- else
- {
- printf("Unknown command: %s", cmdstr);
- }
-}
-
-void capture_cmd_proc(char *cmdstr)
-{
- if (strcmp(cmdstr, "P\n") == 0)
- {
- qser_AudRecorder_Pause();
- }
- else if (strcmp(cmdstr, "R\n") == 0)
- {
- qser_AudRecorder_Resume();
- }
- else if (strcmp(cmdstr, "T\n") == 0)
- {
- qser_AudRecorder_Stop();
- }
- else
- {
- printf("Unknown command: %s", cmdstr);
- }
-}
-
-int main(int argc, char *argv[])
-{
- if (argc < 2)
- {
- printf("Usage: %s <play|recd|playbuf> [file]\n", argv[0]);
- return 1;
- }
-
- const char *action = argv[1];
- const char *file = argv[2];
-
- int g_audio_owner_id = 0;
- char player_device[] = "device1";
- char recorder_device[] = "device2";
- char cmdstr[256];
-
- _cb_onPlayer cb_fun = [](int result)
- {
- if (result == 0)
- {
- printf("Audio recorder opened successfully.\n");
- }
- else
- {
- printf("Failed to open audio recorder, error code: %d\n", result);
- }
- };
-
- if (strcmp(action, "playbuf") == 0)
- {
- int player_open_result = qser_AudPlayer_Open(player_device, cb_fun);
- if (player_open_result != 0)
- {
- printf("Failed to open audio player.\n");
- return 1;
- }
- qser_AudPlayer_PlayPcmBuf(PCM_DATA, PCM_DATA_SIZE, 640, 3, 1, 8000, g_audio_owner_id);
- while (1)
- {
- printf("Please input a player command (P/R/T/exit) :\n");
- if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
- {
- if (strcmp(cmdstr, "exit\n") == 0)
- {
- qser_AudPlayer_Close(playback_handle);
- break;
- }
- player_cmd_proc(cmdstr);
- }
- }
- qser_AudPlayer_Close(playback_handle);
- }
- else if (strcmp(action, "play") == 0)
- {
- int player_open_result = qser_AudPlayer_Open(player_device, cb_fun);
- if (player_open_result != 0)
- {
- printf("Failed to open audio player.\n");
- return 1;
- }
-
- qser_AudPlayer_PlayFrmFile(g_audio_owner_id, file, 0);
-
- while (1)
- {
- printf("Please input a player command (P/R/T/exit) :\n");
- if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
- {
- if (strcmp(cmdstr, "exit\n") == 0)
- {
- qser_AudPlayer_Close(playback_handle);
- break;
- }
- player_cmd_proc(cmdstr);
- }
- }
-
- qser_AudPlayer_Close(playback_handle);
- }
- else if (strcmp(action, "recd") == 0)
- {
- int recorder_open_result = qser_AudRecorder_Open(recorder_device, cb_fun);
- if (recorder_open_result != 0) {
- printf("Failed to open audio recorder.\n");
- return 1;
- }
-
- qser_AudRecorder_StartRecord(g_audio_owner_id, file, 0);
-
- while (1)
- {
- printf("Please input a player command (P/R/T/exit) :\n");
- if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
- {
- if (strcmp(cmdstr, "exit\n") == 0)
- {
- qser_AudRecorder_Close();
- break;
- }
- capture_cmd_proc(cmdstr);
- }
- }
- qser_AudRecorder_Close();
- }
- else
- {
- printf("Unknown action: %s\n", action);
- return 1;
- }
-
- qser_Audio_Deinit();
-
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib/lynq_call_test.c b/mbtk/test/liblynq_lib/lynq_call_test.c
deleted file mode 100644
index 48ce4af..0000000
--- a/mbtk/test/liblynq_lib/lynq_call_test.c
+++ /dev/null
@@ -1,398 +0,0 @@
-#include "lynq-qser-voice.h"
-
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-#include "mbtk_audio.h"
-
-#define MAX_LEN 15
-
-#if 0
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-
-//#include"lynq-qser-voice-demo.h"
-
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "print_help"},
- {1, "qser_voice_call_start"},
- {2, "qser_voice_call_end"},
- {3, "qser_voice_call_answer"},
- {4, "qser_voice_set_speech_volume"},
- {5, "qser_voice_get_speech_volume"},
- {-1, NULL}
-};
-
-
-
-typedef uint32_t voice_client_handle_type;
-
-static pthread_t s_lynq_voice_tid = -1;
-
-
-int (*qser_voice_call_client_init)(voice_client_handle_type *ph_voice);
-int (*qser_voice_call_client_deinit)(voice_client_handle_type );
-int (*qser_voice_call_addstatehandler)(voice_client_handle_type h_voice,
- QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
- void *contextPtr);
-
-int (*qser_voice_call_removestatehandle)(voice_client_handle_type );
-int (*qser_voice_call_start)(voice_client_handle_type h_voice,
- E_QSER_VCALL_ID_T simId,
- char *phone_number, int *call_id);
-
-int (*qser_voice_call_end)(voice_client_handle_type ,int );
-int (*qser_voice_call_answer)(voice_client_handle_type ,int );
-int (*qser_voice_set_speech_volume)(const int volume);
-int (*qser_voice_get_speech_volume)(int *volume);
-
-void *dlHandle_call = NULL;
-
-static void yk_voice_call_cb_func(int call_id,
- char* phone_num,
- qser_voice_call_state_t state,
- void *contextPtr)
-{
- char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};
-
- printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n", call_id, phone_num, call_state[state]);
-}
-
-void print_help(void)
-{
- int i;
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-int main(int argc, char const *argv[])
-{
- int cmdIdx = 0;
- int ret = 0;
- int voice_call_id = 0;
- voice_client_handle_type h_voice = 0;
-
- //const char *lynqLibPath_Call = "/lib/liblynq-qser-voice.so";
- const char *lynqLibPath_Call = "/lib/liblynq_lib.so";
- dlHandle_call = dlopen(lynqLibPath_Call, RTLD_NOW);
- if (dlHandle_call == NULL)
- {
- printf("dlopen dlHandle_call failed: %s\n", dlerror());
- exit(EXIT_FAILURE);
- }
-
- qser_voice_call_client_init = (int(*)(voice_client_handle_type *ph_voice))dlsym(dlHandle_call, "qser_voice_call_client_init");
- if(qser_voice_call_client_init == NULL)
- {
- printf("qser_voice_call_client_init not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_addstatehandler = (int(*)(voice_client_handle_type h_voice,
- QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
- void *contextPtr))dlsym(dlHandle_call,"qser_voice_call_addstatehandler");
- if(qser_voice_call_addstatehandler == NULL)
- {
- printf("qser_voice_call_addstatehandler not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_answer = (int(*)(voice_client_handle_type,int ))dlsym(dlHandle_call,"qser_voice_call_answer");
- if(qser_voice_call_answer == NULL)
- {
- printf("qser_voice_call_answer not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_start = (int(*)(voice_client_handle_type h_voice,E_QSER_VCALL_ID_T simId,
- char *phone_number, int *call_id))dlsym(dlHandle_call,"qser_voice_call_start");
- if(qser_voice_call_start == NULL)
- {
- printf("qser_voice_call_start not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_end = (int(*)(voice_client_handle_type ,int))dlsym(dlHandle_call,"qser_voice_call_end");
- if(qser_voice_call_end == NULL)
- {
- printf("qser_voice_call_end not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
-
- qser_voice_call_client_deinit = (int (*)(voice_client_handle_type h_voice))dlsym(dlHandle_call,"qser_voice_call_client_deinit");
- if(qser_voice_call_client_deinit == NULL)
- {
- printf("qser_voice_call_client_deinit not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_removestatehandle = (int (*)(voice_client_handle_type))dlsym(dlHandle_call,"qser_voice_call_removestatehandle");
- if(qser_voice_call_removestatehandle == NULL)
- {
- printf("qser_voice_call_removestatehandle not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_set_speech_volume = (int (*)(const int ))dlsym(dlHandle_call,"qser_voice_set_speech_volume");
- if(qser_voice_set_speech_volume == NULL)
- {
- printf("qser_voice_set_speech_volume not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_get_speech_volume = (int (*)(int* ))dlsym(dlHandle_call,"qser_voice_get_speech_volume");
- if(qser_voice_get_speech_volume == NULL)
- {
- printf("qser_voice_get_speech_volume not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- ret = qser_voice_call_client_init(&h_voice);
- if(ret != 0 )
- {
- printf("qser_voice_call_client_init FAIL\n");
- return -1;
- }
-
- ret = qser_voice_call_addstatehandler(h_voice, yk_voice_call_cb_func, &voice_call_id);
- if(ret != 0)
- {
- printf("qser_voice_call_addstatehandler FAIL\n");
- return -1;
- }
-
-
- print_help();
- while(1)
- {
- printf("\nplease input cmd index(-1 exit): ");
- scanf("%d", &cmdIdx);
- if(cmdIdx == -1)
- {
- break;
- }
-
- switch(cmdIdx)
- {
- //"print_help
- case 0:
- print_help();
- break;
-
- //"qser_voice_call_start"
- case 1:
- {
- char PhoneNum[32] = {0};
-
- printf("please input dest phone number: \n");
- scanf("%s", PhoneNum);
-
- ret = qser_voice_call_start(h_voice, E_QSER_VCALL_EXTERNAL_SLOT_1, PhoneNum, &voice_call_id);
- printf("qser_voice_call_start ret = %d, with voice_call_id=%d\n", ret, voice_call_id);
- break;
- }
-
- //"qser_voice_call_end"
- case 2:
- {
- int call_id = -1;
- printf("please input end call id: \n");
- scanf("%d", &call_id);
- ret = qser_voice_call_end(h_voice, call_id);
- printf(" ret = %d\n", ret);
- break;
- }
-
- //"qser_voice_call_answer"
- case 3:
- {
- int call_id = -1;
- printf(" please input answer call id\n");
- scanf("%d", &call_id);
- ret = qser_voice_call_answer(h_voice, call_id);
- printf(" ret = %d\n", ret);
- break;
- }
- case 4:
- {
- int volume = 0;
- printf("Please set speech volume:0-5 level\n");
- scanf("%d",&volume);
- ret = qser_voice_set_speech_volume(volume);
- printf("ret is %d\n",ret);
- break;
-
- }
-
- case 5:
- {
- int volume = -1;
- printf("Enter get speech volume\n");
- ret = qser_voice_get_speech_volume(&volume);
- printf("ret is %d,get volume is %d\n",ret,volume);
- break;
-
- }
- default:
- print_help();
- break;
- }
-
- }
- ret = qser_voice_call_removestatehandle(h_voice);
- if(ret != 0 && ret != 1)
- {
- printf("qser_voice_call_removestatehandle FAIL!!!\n");
- return -1;
- }
- printf("qser_voice_call_removestatehandle ret = %d\n", ret);
-
-
- ret = qser_voice_call_client_deinit(h_voice);
- if(ret != 0)
- {
- printf("qser_voice_call_client_deinit FAIL\n");
- return -1;
- }
- printf("qser_voice_call_client_deinit ret = %d, with h_voice=%d\n", ret, h_voice);
-
- return 0;
-}
-
-
-#else
-
-static void yk_voice_call_cb_func(int call_id,
- char* phone_num,
- qser_voice_call_state_t state,
- void *contextPtr)
-{
- char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};
-
- printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n", call_id, phone_num, call_state[state]);
-}
-
-int main(int argc, char *argv[])
-{
- char operator[MAX_LEN];
- int opt;
- int lv_voll = 0;
- voice_client_handle_type handle = -1;
- int voice_call_id = 0;
- mbtk_log_init("radio", "CALL_TEST");
-
- printf("=========call main=========\n"
- "\t0 exit\n"
- "\t1 call init\n"
- "\t2 call add register handle\n"
- "\t3 call start\n"
- "\t4 call end\n"
- "\t5 call answer\n"
- "\t6 call remove register handle\n"
- "\t7 call set volume level 0-5\n"
- "\t8 call get volume\n"
- "\t9 call dtmf\n"
- "\t10 call deinit\n"
- "operator: >> \n");
-
- while(1)
- {
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- qser_voice_call_client_init(&handle);
- printf("test>>: handle = %d\n",handle);
- break;
- case 2:
- qser_voice_call_addstatehandler(handle, yk_voice_call_cb_func, &voice_call_id);
- break;
- case 3:
- printf("input phone number:\n");
- memset(operator, 0x0, MAX_LEN);
- fgets(operator, MAX_LEN, stdin);
- fflush(stdin);
- printf("number:%s\n", operator);
- qser_voice_call_start(handle, E_QSER_VCALL_EXTERNAL_SLOT_1, operator, &voice_call_id);//被叫电话
- break;
- case 4:
- qser_voice_call_end(handle, voice_call_id);
- break;
- case 5:
- qser_voice_call_answer(handle, voice_call_id);
- break;
- case 6:
- qser_voice_call_removestatehandle(handle);
- break;
- case 7:
- {
- printf("Pleas set volume level(0-5)>>>>\n");
- memset(operator, 0x00, sizeof(operator));
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- //def level 3
- lv_voll = atoi(operator);
- if (lv_voll >= 0 && lv_voll <= 5)
- qser_voice_set_speech_volume(lv_voll);
- else
- printf("set volume level(0-5) ERR\n");
- }
- break;
- case 8:
- qser_voice_get_speech_volume(&lv_voll);
- printf("volume level = %d\n",lv_voll);
- break;
- case 9:
- {
- char inputChar;
-
- printf("Enter set dtmf\n");
- scanf(" %c", &inputChar);
- printf("inputChar is %c\n", inputChar);
-
- if (qser_voice_set_dtmf(inputChar) != 0)
- {
- printf("qser set voice dtmf failed\n");
- }
- }
- break;
- case 10:
- qser_voice_call_client_deinit(handle);
- break;
- default:
- break;
- }
-
- }
-
- return 0;
-}
-
-#endif
-
diff --git a/mbtk/test/liblynq_lib/lynq_chip_id.c b/mbtk/test/liblynq_lib/lynq_chip_id.c
deleted file mode 100755
index 461948c..0000000
--- a/mbtk/test/liblynq_lib/lynq_chip_id.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <time.h>
-#include "lynq_chip_id.h"
-
-int main()
-{
- char chip_id[128]={0};
- int ret = 0;
- ret = lynq_get_chip_id(chip_id);
- if(!ret)
- {
- printf("chip_id:%s",chip_id);
- }
- else{
- printf("get chip_id error");
- }
- return 0;
-}
-
-
-
diff --git a/mbtk/test/liblynq_lib/lynq_irq_test.c b/mbtk/test/liblynq_lib/lynq_irq_test.c
deleted file mode 100755
index e4ec8c8..0000000
--- a/mbtk/test/liblynq_lib/lynq_irq_test.c
+++ /dev/null
@@ -1,174 +0,0 @@
-#include "lynq-irq.h"
-
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-int line;
-
-static void irq_test_handler(void)
-{
- int trig_type;
- trig_type = lynq_irq_get_type(line);
- printf("this is irq_test_handler\nthis irq is gpio %d,trig_type is %d\n", line_gpio[line-117],trig_type);
- return NULL;
-}
-
-int main(int argc, char *argv[])
-{
- char operator[10];
- int opt;
- int irq, trig_type, en;
- int ret;
- irq_handler handler;
- mbtk_log_init("radio", "IRQ_TEST");
-
- printf("=========irq main=========\n"
- "\t0 exit\n"
- "\t1 irq install\n"
- "\t2 irq set_type\n"
- "\t3 irq get_type\n"
- "\t4 irq set_wake\n"
- "\t5 irq get_wake\n"
- "\t6 irq uninstall\n"
- "operator: >> \n");
-
- while(1)
- {
-
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- {
- printf("input>> irq \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- irq = atoi(operator);
- printf("input>> trig_type \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- trig_type = atoi(operator);
- ret = lynq_irq_install(irq, irq_test_handler, trig_type);
- if (ret != 0)
- {
- printf("lynq_irq_install fail\n");
- }
- else
- {
- printf("lynq_irq_install success\n");
- line = irq;
- }
- }
- break;
- case 2:
- {
- printf("input>> trig_type \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- trig_type = atoi(operator);
- ret = lynq_irq_set_type(line, trig_type);
- if (ret != 0)
- {
- printf("lynq_irq_set_type fail\n");
- }
- else
- {
- printf("lynq_irq_set_type success\n");
- }
- }
- break;
- case 3:
- {
- printf("input>> irq \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- irq = atoi(operator);
- ret = lynq_irq_get_type(irq);
- if (ret < 0)
- {
- printf("lynq_irq_get_type fail\n");
- }
- else
- {
- printf("lynq_irq_get_type success trig_type =%d\n",ret);
- }
- }
- break;
- case 4:
- {
- printf("input>> irq \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- irq = atoi(operator);
- printf("input>> en \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- en = atoi(operator);
- ret = lynq_irq_set_wake(irq, en);
- if (ret != 0)
- {
- printf("lynq_irq_set_wake fail\n");
- }
- else
- {
- printf("lynq_irq_set_wake success\n");
- }
- }
- break;
- case 5:
- {
- printf("input>> irq \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- irq = atoi(operator);
- ret = lynq_irq_get_wake(irq);
- if (ret < 0)
- {
- printf("lynq_irq_get_wake fail\n");
- }
- else
- {
- printf("lynq_irq_get_wake success en = %d\n", ret);
- }
- }
- break;
- case 6:
- {
- printf("input>> irq \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- irq = atoi(operator);
- ret = lynq_irq_uninstall(irq);
- if (ret != 0)
- {
- printf("lynq_irq_uninstall fail\n");
- }
- else
- {
- printf("lynq_irq_uninstall success\n");
- }
- }
- break;
- default:
- break;
- }
-
- }
-
- return 0;
-}
-
-
diff --git a/mbtk/test/liblynq_lib/lynq_log_test.c b/mbtk/test/liblynq_lib/lynq_log_test.c
deleted file mode 100755
index 52becf9..0000000
--- a/mbtk/test/liblynq_lib/lynq_log_test.c
+++ /dev/null
@@ -1,144 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include "lynq_deflog.h"
-
-int main(int argc, char *argv[])
-{
- int err, value;
- int cmdIdx = 0;
- int ret = 0;
- int i = 0;
- char operator[10];
- int opt = 0;
- const char * module_name = "MBTK_QL_TEST";
- log_level_enum *level = -1;
-
- lynq_log_configuration_init("MBTK_QL_TEST");
-
- while(1)
- {
-
- printf("=========log========\n"
- "\t 0 lynq_syslog_set_file_size\n"
- "\t 1 lynq_syslog_get_file_size\n"
- "\t 2 lynq_syslog_set_file_rotate\n"
- "\t 3 lynq_syslog_get_file_rotate\n"
- "\t 4 lynq_set_log_level\n"
- "\t 5 lynq_get_log_level\n"
- "\t 6 lynq_notify_recalc_log_level\n"
- "\t 7 test write log\n"
- "\t 8 EXIT \n"
- "=========================\n");
-
- fflush(stdin);
- fgets(operator, sizeof(operator), stdin);
- opt = atoi(operator);
-
- switch(opt)
- {
- case 0://"lynq_syslog_set_file_size"
- {
- //fgets(arg_string, MAX_INPUT, stdin);
- printf("please input size:\n");
- scanf("%d", &value);
- printf("Input value is %d\n",value);
- ret = lynq_syslog_set_file_size(value);
- if(ret < 0)
- {
- printf("lynq_syslog_set_file_size failed, ret=%d\n", ret);
- }
-
- break;
- }
- case 1://"lynq_syslog_get_file_size"
- {
- //ret = demo_lynq_syslog_get_file_size();
- ret = lynq_syslog_get_file_size();
- printf("lynq_syslog_get_file_size ret:%d!\n", ret);
-
- break;
- }
- case 2://"lynq_syslog_set_file_rotate"
- {
- printf("please input count:\n");
- scanf("%d", &value);
- printf("Input value is %d\n",value);
- ret = lynq_syslog_set_file_rotate(value);
- if(ret < 0)
- {
- printf("lynq_syslog_set_file_rotate failed, ret=%d\n", ret);
- }
-
- break;
- }
- case 3://"lynq_syslog_get_file_rotate"
- {
- ret = lynq_syslog_get_file_rotate();
- printf("lynq_syslog_get_file_rotate ret:%d!\n", ret);
-
- break;
- }
- case 4://"lynq_set_log_level"
- {
- printf("please input level:\n");
- scanf("%d", &value);
- ret = lynq_set_log_level(module_name, value);
- printf("lynq_set_log_level ret:%d!\n", ret);
-
- break;
- }
- case 5://"lynq_get_log_level"
- {
- ret = lynq_get_log_level(module_name, &level);
- printf("lynq_get_log_level ret:%d, level:%d!\n", ret, level);
-
- break;
- }
- case 6://test write log
- {
- ret = lynq_notify_recalc_log_level(0);
- printf("lynq_notify_recalc_log_level ret: %d!\n", ret);
- break;
- }
- case 7://test write log
- {
- puts(lynq_read_log_version());
- for(i=0;i<10;i++)
- {
- LYVERBLOG("LYNQ: Test LYVERBLOG\n");
- LYERRLOG("LYNQ: Test LYERRLOG\n");
- LYWARNLOG("LYNQ: Test LYWARNLOG\n");
- LYINFLOG("LYNQ: Test LYINFLOG\n");
- LYDBGLOG("LYNQ: Test LYDBGLOG\n");
- lynq_log_global_output(LOG_VERBOSE, "LOG_VERBOSE test");
- lynq_log_global_output(LOG_ERROR, "LOG_ERROR test");
- lynq_log_global_output(LOG_WARNING, "LOG_WARNING test");
- lynq_log_global_output(LOG_INFO, "LOG_INFO test");
- lynq_log_global_output(LOG_DEBUG, "LOG_DEBUG test");
- lynq_log_global_output(LOG_UNSET, "LOG_UNSET test");
- lynq_log_global_output(LOG_LEVEL_MAX, "LOG_LEVEL_MAX test");
- lynq_log_debug("LYNQ: test lynq_log_debug");
- lynq_log_verbose("LYNQ: test lynq_log_verbose");
- lynq_log_error("LYNQ: test lynq_log_error");
- lynq_log_info("LYNQ: test lynq_log_info");
- lynq_log_warning("LYNQ: test lynq_log_warning");
- }
-
- printf("test write log end\n");
-
- break;
- }
- default://EXIT
- {
- printf("break\n");
- return 0;
- }
- }
- }
-
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib/lynq_nw_test.c b/mbtk/test/liblynq_lib/lynq_nw_test.c
deleted file mode 100755
index faaf2f0..0000000
--- a/mbtk/test/liblynq_lib/lynq_nw_test.c
+++ /dev/null
@@ -1,519 +0,0 @@
-#include "lynq_qser_network.h"
-#include "mbtk_type.h"
-#include "mbtk_info_api.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-char *tech_domain[] = {"NONE", "3GPP", "3GPP2"};
-char *radio_tech[] = {"unknown",
- "TD_SCDMA", "GSM", "HSPAP", "LTE", "EHRPD", "EVDO_B",
- "HSPA", "HSUPA", "HSDPA", "EVDO_A", "EVDO_0", "1xRTT",
- "IS95B", "IS95A", "UMTS", "EDGE", "GPRS", "NONE"};
-
-void nw_event_ind_handler (
- nw_client_handle_type h_nw,
- u_int32_t ind_flag,
- void *ind_msg_buf,
- u_int32_t ind_msg_len,
- void *contextPtr)
-{
- switch(ind_flag) {
- case NW_IND_VOICE_REG_EVENT_IND_FLAG:
- {
- QSER_NW_VOICE_REG_EVENT_IND_T *ind = (QSER_NW_VOICE_REG_EVENT_IND_T*)ind_msg_buf;
- printf("Recv event indication : VOICE REG EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
- if(ind->registration_valid)
- {
- printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[ind->registration.tech_domain],
- radio_tech[ind->registration.radio_tech],
- ind->registration.roaming,
- ind->registration.registration_state);
- }
- if(ind->registration_details_3gpp_valid)
- {
- printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[ind->registration_details_3gpp.tech_domain],
- radio_tech[ind->registration_details_3gpp.radio_tech],
- ind->registration_details_3gpp.mcc,
- ind->registration_details_3gpp.mnc,
- ind->registration_details_3gpp.roaming,
- ind->registration_details_3gpp.forbidden,
- ind->registration_details_3gpp.cid,
- ind->registration_details_3gpp.lac,
- ind->registration_details_3gpp.psc,
- ind->registration_details_3gpp.tac);
- }
-
- if(ind->registration_details_3gpp2_valid)
- {
- printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[ind->registration_details_3gpp2.tech_domain],
- radio_tech[ind->registration_details_3gpp2.radio_tech],
- ind->registration_details_3gpp2.mcc,
- ind->registration_details_3gpp2.mnc,
- ind->registration_details_3gpp2.roaming,
- ind->registration_details_3gpp2.forbidden,
- ind->registration_details_3gpp2.sid,
- ind->registration_details_3gpp2.nid,
- ind->registration_details_3gpp2.bsid);
- }
-
- break;
- }
- case NW_IND_DATA_REG_EVENT_IND_FLAG:
- {
- QSER_NW_DATA_REG_EVENT_IND_T *ind = (QSER_NW_DATA_REG_EVENT_IND_T*)ind_msg_buf;
-
- printf("Recv event indication : DATA REG EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
-
- if(ind->registration_valid)
- {
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[ind->registration.tech_domain],
- radio_tech[ind->registration.radio_tech],
- ind->registration.roaming,
- ind->registration.registration_state);
- }
- if(ind->registration_details_3gpp_valid)
- {
- printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[ind->registration_details_3gpp.tech_domain],
- radio_tech[ind->registration_details_3gpp.radio_tech],
- ind->registration_details_3gpp.mcc,
- ind->registration_details_3gpp.mnc,
- ind->registration_details_3gpp.roaming,
- ind->registration_details_3gpp.forbidden,
- ind->registration_details_3gpp.cid,
- ind->registration_details_3gpp.lac,
- ind->registration_details_3gpp.psc,
- ind->registration_details_3gpp.tac);
- }
-
- if(ind->registration_details_3gpp2_valid)
- {
- printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, prl=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[ind->registration_details_3gpp2.tech_domain],
- radio_tech[ind->registration_details_3gpp2.radio_tech],
- ind->registration_details_3gpp2.mcc,
- ind->registration_details_3gpp2.mnc,
- ind->registration_details_3gpp2.roaming,
- ind->registration_details_3gpp2.forbidden,
- ind->registration_details_3gpp2.inPRL,
- ind->registration_details_3gpp2.css,
- ind->registration_details_3gpp2.sid,
- ind->registration_details_3gpp2.nid,
- ind->registration_details_3gpp2.bsid);
- }
-
- break;
- }
- case NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG:
- {
- QSER_NW_SINGNAL_EVENT_IND_T *ind = (QSER_NW_SINGNAL_EVENT_IND_T*)ind_msg_buf;
-
- printf("Recv event indication : SIGNAL STRENGTH EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
- if(ind->gsm_sig_info_valid)
- {
- printf("gsm_sig_info: rssi=%d\n",
- ind->gsm_sig_info.rssi);
- }
-
- if(ind->wcdma_sig_info_valid)
- {
- printf("wcdma_sig_info: rssi=%d, ecio=%d\n",
- ind->wcdma_sig_info.rssi,
- ind->wcdma_sig_info.ecio);
- }
- if(ind->tdscdma_sig_info_valid)
- {
- printf("tdscdma_sig_info: rssi=%d, rscp=%d, ecio=%d, sinr=%d\n",
- ind->tdscdma_sig_info.rssi,
- ind->tdscdma_sig_info.rscp,
- ind->tdscdma_sig_info.ecio,
- ind->tdscdma_sig_info.sinr);
- }
- if(ind->lte_sig_info_valid)
- {
- printf("lte_sig_info: rssi=%d, rsrq=%d, rsrp=%d, snr=%d\n",
- ind->lte_sig_info.rssi,
- ind->lte_sig_info.rsrq,
- ind->lte_sig_info.rsrp,
- ind->lte_sig_info.snr);
- }
- if(ind->cdma_sig_info_valid)
- {
- printf("cdma_sig_info: rssi=%d, ecio=%d\n",
- ind->cdma_sig_info.rssi,
- ind->cdma_sig_info.ecio);
- }
- if(ind->hdr_sig_info_valid)
- {
- printf("hdr_sig_info: rssi=%d, ecio=%d, sinr=%d, io=%d\n",
- ind->hdr_sig_info.rssi,
- ind->hdr_sig_info.ecio,
- ind->hdr_sig_info.sinr,
- ind->hdr_sig_info.io);
- }
- break;
- }
- case NW_IND_IMS_REG_EVENT_IND_FLAG:
- {
- printf("Recv event indication : IMS REG EVENT\n");
- printf("ind is NULL\n");
-
- break;
- }
- default:
- break;
- }
-}
-
-
-
-int main(int argc, char *argv[])
-{
- char operator[10];
- int opt;
- int lv_voll = 0;
- int ret;
- nw_client_handle_type handle = -1;
- mbtk_log_init("radio", "NW_TEST");
-
- printf("=========network main=========\n"
- "\t0 exit\n"
- "\t1 network init\n"
- "\t2 network add rx msg handle\n"
- "\t3 network band set config\n"
- "\t4 network get operator name\n"
- "\t5 network get reg status\n"
- "\t6 network get signal strength\n"
- "\t7 network set oos config\n"
- "\t8 network get oos config\n"
- "\t9 network set rf config\n"
- "\t10 network get rf config\n"
- "\t11 network set ims config\n"
- "\t12 network get ims config\n"
- "\t13 network deinit\n"
- "operator: >> ");
-
- while(1)
- {
-
- opt = -1;
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- ret = qser_nw_client_init(&handle);
- printf("qser_nw_client_init ret = %d\n", ret);
- break;
- case 2:
- ret = qser_nw_add_rx_msg_handler(handle, nw_event_ind_handler, NULL);
- printf("qser_nw_add_rx_msg_handler ret = %d\n", ret);
- break;
- case 3:
- {
- //漫游开关现在不支持,所以就不用配置
- printf("please input \n"
- "\t1:GSM \n"
- "\t2:WCDMA \n"
- "\t4:CDMA \n"
- "\t8:EVDO \n"
- "\t16:LTE \n"
- "\t32:TDSCDMA \n"
- );
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- opt = atoi(operator);
- QSER_NW_CONFIG_INFO_T t_info;
-
- t_info.preferred_nw_mode = opt;
- ret = qser_nw_set_config(handle, &t_info);
- printf("qser_nw_set_config ret = %d\n", ret);
- }
- break;
- case 4:
- {
- QSER_NW_OPERATOR_NAME_INFO_T t_info;
- int err = qser_nw_get_operator_name(handle, &t_info);
- if(err)
- {
- printf("Error : %d\n", err);
- } else
- {
- printf("Operator : %s, %s, %s, %s\n", t_info.long_eons, t_info.short_eons, t_info.mcc, t_info.mnc);
- }
- }
- break;
- case 5:
- {
- QSER_NW_REG_STATUS_INFO_T t_info;
- int err = qser_nw_get_reg_status(handle, &t_info);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- if(t_info.voice_registration_valid)
- {
- printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[t_info.voice_registration.tech_domain],
- radio_tech[t_info.voice_registration.radio_tech],
- t_info.voice_registration.roaming,
- t_info.voice_registration.registration_state);
- }
- if(t_info.data_registration_valid)
- {
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[t_info.data_registration.tech_domain],
- radio_tech[t_info.data_registration.radio_tech],
- t_info.data_registration.roaming,
- t_info.data_registration.registration_state);
- }
- if(t_info.voice_registration_details_3gpp_valid)
- {
- printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[t_info.voice_registration_details_3gpp.tech_domain],
- radio_tech[t_info.voice_registration_details_3gpp.radio_tech],
- t_info.voice_registration_details_3gpp.mcc,
- t_info.voice_registration_details_3gpp.mnc,
- t_info.voice_registration_details_3gpp.roaming,
- t_info.voice_registration_details_3gpp.forbidden,
- t_info.voice_registration_details_3gpp.cid,
- t_info.voice_registration_details_3gpp.lac,
- t_info.voice_registration_details_3gpp.psc,
- t_info.voice_registration_details_3gpp.tac);
- }
- if(t_info.data_registration_details_3gpp_valid)
- {
- printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[t_info.data_registration_details_3gpp.tech_domain],
- radio_tech[t_info.data_registration_details_3gpp.radio_tech],
- t_info.data_registration_details_3gpp.mcc,
- t_info.data_registration_details_3gpp.mnc,
- t_info.data_registration_details_3gpp.roaming,
- t_info.data_registration_details_3gpp.forbidden,
- t_info.data_registration_details_3gpp.cid,
- t_info.data_registration_details_3gpp.lac,
- t_info.data_registration_details_3gpp.psc,
- t_info.data_registration_details_3gpp.tac);
- }
-
- if(t_info.voice_registration_details_3gpp2_valid)
- {
- printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[t_info.voice_registration_details_3gpp2.tech_domain],
- radio_tech[t_info.voice_registration_details_3gpp2.radio_tech],
- t_info.voice_registration_details_3gpp2.mcc,
- t_info.voice_registration_details_3gpp2.mnc,
- t_info.voice_registration_details_3gpp2.roaming,
- t_info.voice_registration_details_3gpp2.forbidden,
- t_info.voice_registration_details_3gpp2.sid,
- t_info.voice_registration_details_3gpp2.nid,
- t_info.voice_registration_details_3gpp2.bsid);
- }
-
- if(t_info.data_registration_details_3gpp2_valid)
- {
- printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[t_info.data_registration_details_3gpp2.tech_domain],
- radio_tech[t_info.data_registration_details_3gpp2.radio_tech],
- t_info.data_registration_details_3gpp2.mcc,
- t_info.data_registration_details_3gpp2.mnc,
- t_info.data_registration_details_3gpp2.roaming,
- t_info.data_registration_details_3gpp2.forbidden,
- t_info.data_registration_details_3gpp2.sid,
- t_info.data_registration_details_3gpp2.nid,
- t_info.data_registration_details_3gpp2.bsid);
- }
-
- //printf("Data Reg: radio_tech = %d, lac = %x, cid = %x\n", reg.data_registration_details_3gpp.radio_tech, reg.data_registration_details_3gpp.lac, reg.data_registration_details_3gpp.cid);
- //printf("Voice Reg: radio_tech = %d, lac = %x, cid = %x\n", reg.voice_registration_details_3gpp.radio_tech, reg.voice_registration_details_3gpp.lac, reg.voice_registration_details_3gpp.cid);
- }
- }
- break;
- case 6:
- {
- QSER_NW_SIGNAL_STRENGTH_INFO_T t_info;
- int err = qser_nw_get_signal_strength(handle, &t_info);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("qser_nw_get_signal_strength, ret=%d\n", err);
- if(err==0)
- {
- printf("qser_solicited_signal_strength gsm_sig_info_valid = %d\n"
- " gsm_sig_info.rssi = %d\n"
- " wcdma _sig_info_valid = %d\n"
- " wcdma_sig_info.rssi = %d\n"
- " wcdma_sig_info.ecio = %d\n"
- " tdscdma_sig_info_valid = %d\n"
- " lte_sig_info_valid = %d\n"
- " lte_sig_info.rssi = %d\n"
- " lte_sig_info.rsrp = %d\n"
- " lte_sig_info.rsrq = %d\n"
- " lte_sig_info.snr = %d\n"
- " cdma_sig_info_valid = %d\n"
- " hdr_sig_info_valid = %d\n"
- " nr_sig_info_valid = %d\n"
- " nr_sig_info.ssRsrp = %d\n"
- " nr_sig_info.ssRsrq = %d\n"
- " nr_sig_info.ssSinr = %d\n"
- " nr_sig_info.csiRsrp = %d\n"
- " nr_sig_info.csiRsrq = %d\n"
- " nr_sig_info.csiSinr = %d\n",
- t_info.gsm_sig_info_valid, t_info.gsm_sig_info.rssi,
- t_info.wcdma_sig_info_valid, t_info.wcdma_sig_info.rssi, t_info.wcdma_sig_info.ecio,
- t_info.tdscdma_sig_info_valid,
- t_info.lte_sig_info_valid, t_info.lte_sig_info.rssi, t_info.lte_sig_info.rsrp, t_info.lte_sig_info.rsrq, t_info.lte_sig_info.snr,
- t_info.cdma_sig_info_valid,
- t_info.hdr_sig_info_valid,
- t_info.nr_sig_info_valid, t_info.nr_sig_info.ssRsrp, t_info.nr_sig_info.ssRsrq, t_info.nr_sig_info.ssSinr,
- t_info.nr_sig_info.csiRsrp, t_info.nr_sig_info.csiRsrq, t_info.nr_sig_info.csiSinr);
-
- }
-
- }
- }
- break;
- case 7:
- {
- QSER_NW_OOS_CONFIG_INFO_T pt_info_s;
- memset(&pt_info_s, 0x00, sizeof(QSER_NW_OOS_CONFIG_INFO_T));
- /*取值范围0-255,设置时间自定义
- phase 1 5次 次数无法更改,这五次都是以10秒为一次的间隔搜网
- phase 2 5次 次数无法更改,这五次都是以15秒为一次的间隔搜网
- phase 3 不限制次数的秒数设置,第三阶段不限制次数以20秒为一次的间隔搜网
- 如果要关闭OOS配置,则把min step max 全部配置为0即可
- */
- int p1,p2,p3;
- printf("input phase 1 number:\n");
- memset(operator, 0x0, 10);
- fgets(operator, 10, stdin);
- fflush(stdin);
- p1 = atoi(operator);
- printf("phase 1 number:%s\n", operator);
-
- printf("input phase 2 number:\n");
- memset(operator, 0x0, 10);
- fgets(operator, 10, stdin);
- fflush(stdin);
- p2 = atoi(operator);
- printf("phase 2 number:%s\n", operator);
-
- printf("input phase 3 number:\n");
- memset(operator, 0x0, 10);
- fgets(operator, 10, stdin);
- fflush(stdin);
- p3 = atoi(operator);
- printf("phase 3 number:%s\n", operator);
-
- pt_info_s.type = QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN;//平台提供自定义配置搜网时间间隔
- {
- pt_info_s.u.full_band_scan_info.t_min = p1;//phase 1
- pt_info_s.u.full_band_scan_info.t_step = p2;//phase 2
- pt_info_s.u.full_band_scan_info.t_num = 0;//可以不配置,并没有使用
- pt_info_s.u.full_band_scan_info.t_max = p3;//phase 3
- }
- printf("set OOS %d %d %d \n",pt_info_s.u.full_band_scan_info.t_min, pt_info_s.u.full_band_scan_info.t_step, pt_info_s.u.full_band_scan_info.t_max);
- //pt_info_s.type = QSER_NW_OOS_CFG_TYPE_FAST_SCAN;平台本身有历史频点优先处理的逻辑(无接口不需要我们进行处理)
- ret = qser_nw_set_oos_config(handle, &pt_info_s);
- printf("qser_nw_set_oos_config ret = %d\n", ret);
- }
- break;
- case 8:
- {
- QSER_NW_OOS_CONFIG_INFO_T pt_info_g;
- qser_nw_get_oos_config(handle, &pt_info_g);
- if (pt_info_g.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
- printf("TYPE: %d min: %d setp: %d max: %d\n", pt_info_g.type, pt_info_g.u.full_band_scan_info.t_min, pt_info_g.u.full_band_scan_info.t_step, pt_info_g.u.full_band_scan_info.t_max);
- else
- printf("type not supported \n");
- }
- break;
- case 9:
- {
- printf("please input 0 or 1 or 4: \n");
- memset(operator,0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- opt = atoi(operator);
- printf("rf_mode: [%d]\n",opt);
- ret = qser_nw_set_rf_mode(handle, opt);
- printf("qser_nw_set_rf_mode ret = %d\n", ret);
- }
- break;
- case 10:
- {
- int rf_t;
- qser_nw_get_rf_mode(handle, &rf_t);
- printf(">>>rf_mode = [%d]\n",rf_t);
- }
- break;
- case 11:
- {
- E_QSER_NW_IMS_MODE_TYPE_T ims_mode;
- printf("please input you want set ims mode (0: off; 1: volte enable \n");
- scanf("%d", &ims_mode);
- ret = qser_nw_set_ims_enable(handle, ims_mode);
- printf("qser_nw_set_ims_enable %d ret = %d\n",ims_mode, ret);
- }
- break;
- case 12:
- {
- QSER_NW_IMS_REG_STATUS_INFO_T t_info;
- memset(&t_info, 0, sizeof(QSER_NW_IMS_REG_STATUS_INFO_T));
- ret = qser_nw_get_ims_reg_status(handle, &t_info);
- printf("qser_nw_get_ims_reg_status ret = %d, detail info:\n", ret);
- if(ret == 0)
- {
- printf("ims_registration: registration_state=%d\n", t_info.registration_state);
- }
- }
- break;
- case 13:
- qser_nw_client_deinit(handle);
- break;
- default:
- break;
- }
-
- }
-
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib/lynq_qser_sms_test.c b/mbtk/test/liblynq_lib/lynq_qser_sms_test.c
deleted file mode 100644
index b832172..0000000
--- a/mbtk/test/liblynq_lib/lynq_qser_sms_test.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/**
- * \file dtmf_test.c
- * \brief A Documented file.
- *
- * Detailed description
- * \Author: jinLuo
- * \Version: 1.0.0
- * \Date: 2022-12-1
- */
-
-/******************************************************************************\
- * Include files
-\******************************************************************************/
-#include <pthread.h>
-#include <time.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <poll.h>
-#include <stdlib.h>
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "lynq_qser_sms.h"
-#define MAX_LEN 15
-
-
-#if 0
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-#include <ctype.h>
-
-//#include"lynq-qser-sms-demo.h"
-
-
-#define SMS_BUF 64
-#define MSG_BUF 100
-
-int flag_init = 0;
-
-typedef uint32_t sim_client_handle_type;
-sms_client_handle_type ph_sms = 2022;
-sms_client_handle_type h_sms = 2022;
-
-
-int (*qser_sms_client_init)(sms_client_handle_type *ph_sms);
-int (*qser_sms_client_deinit)(sms_client_handle_type h_sms);
-int (*qser_sms_send_sms)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info);
-int (*qser_sms_addrxmsghandler)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
-int (*qser_sms_deletefromstorage)(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage);
-int (*qser_sms_getsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg);
-int (*qser_sms_setsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg);
-
-void qser_sms_handler(QSER_SMS_MsgRef msgRef, void* contextPtr) {
- printf("[%s-%d] sms handler, msgRef->sms_data = %s\n", __FUNCTION__, __LINE__, msgRef->sms_data);
-}
-
-bool isNumeric(char *phnum) {
- int length = strlen(phnum);
-
- if (length == 0) {
- return false;
- }
-
- if (phnum[0] != '+' && (phnum[0] < '0' || phnum[0] > '9')) {
- return false;
- }
-
- if (phnum[0] == '+' && length < 3) {
- return false;
- }
-
- for (int i = 1; i < length; i++) {
- if (phnum[i] < '0' || phnum[i] > '9') {
- return false;
- }
- }
-
- return true;
-}
-
-//以下示例默认为所有API 执行都成功的情况下,依次执行后续API
-int main(int argc, char *argv[])
-{
- int ret = 0;
- //char phnum[SMS_BUF]={0};
-
- //const char *lynq_libpath_sms = "/lib/liblynq-qser-sms.so";
- const char *lynq_libpath_sms = "/lib/liblynq_lib.so";
- void *dlHandle_sms = dlopen(lynq_libpath_sms, RTLD_NOW);
-
- if (dlHandle_sms == NULL)
- {
- printf("dlopen dlHandle_sms failed: %s\n", dlerror());
- exit(EXIT_FAILURE);
- }
-
- if(argc != 2 || !isNumeric(argv[1]))
- {
- printf("[%s][%d] please input correct phnum\n",__FUNCTION__,__LINE__);
- exit(1);
- }
-
- qser_sms_client_init = (int(*)(sms_client_handle_type *ph_sms))dlsym(dlHandle_sms,"qser_sms_client_init");
- if(NULL != qser_sms_client_init)
- {
- ret = qser_sms_client_init(&ph_sms);
- if(ret == 0)
- {
- printf("Run qser_sms_client_init\n");
- }else{
- printf("qser_sim_client_init error\n");
- }
- }else{
- printf("qser_sim_client_init dlsym error\n");
- }
-
- sleep(2);
-
- qser_sms_addrxmsghandler = (int(*)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr))dlsym(dlHandle_sms,"qser_sms_addrxmsghandler");
-
- if(NULL != qser_sms_addrxmsghandler)
- {
- ret = qser_sms_addrxmsghandler(qser_sms_handler, NULL);
- if(ret == 0)
- {
- printf("qser_sms_addrxmsghandler success");
- }else{
- printf("qser_sms_addrxmsghandler error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_addrxmsghandler dlsym error\n");
- }
-
- QSER_sms_service_center_cfg_t get_sca_cfg;
- qser_sms_getsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg))dlsym(dlHandle_sms,"qser_sms_getsmscenteraddress");
- if(NULL != qser_sms_getsmscenteraddress)
- {
- ret = qser_sms_getsmscenteraddress(h_sms, &get_sca_cfg);
- if(ret == 0)
- {
- printf("get smsc success,service_center_addr = %s\n",get_sca_cfg.service_center_addr);
- }else{
- printf("get smsc error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_getsmscenteraddress dlsym error\n");
- }
- sleep(1);
- QSER_sms_service_center_cfg_t set_sca_cfg;
- strncpy(set_sca_cfg.service_center_addr, "+8613800280500", 14);//smsc +8613800280500成都号码 +8613800230500黑龙江
- qser_sms_setsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg))dlsym(dlHandle_sms,"qser_sms_setsmscenteraddress");
- if(NULL != qser_sms_setsmscenteraddress)
- {
- ret = qser_sms_setsmscenteraddress(h_sms, &set_sca_cfg);
- if(ret == 0)
- {
- printf("set smsc success");
- }else{
- printf("set smsc error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_setsmscenteraddress dlsym error\n");
- }
-
- //再次查询是否设置成功
- sleep(1);
- qser_sms_getsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg))dlsym(dlHandle_sms,"qser_sms_getsmscenteraddress");
- if(NULL != qser_sms_getsmscenteraddress)
- {
- ret = qser_sms_getsmscenteraddress(h_sms, &get_sca_cfg);
- if(ret == 0)
- {
- printf("get smsc success,service_center_addr = %s\n",get_sca_cfg.service_center_addr);
- }else{
- printf("get smsc error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_getsmscenteraddress dlsym error\n");
- }
-
-
- //test 7bit
- //char telephony_num[SMS_BUF] = {};
- char msg[MSG_BUF] = {};
- QSER_sms_info_t pt_sms_info;
- //sprintf(telephony_num,"18981904623");//请用户务必替换此号码,随意向运营商发短消息极有可能被封号。
- sprintf(msg,"hello");
- strncpy(pt_sms_info.src_addr, argv[1], SMS_BUF);
- strncpy(pt_sms_info.sms_data, msg, MSG_BUF);
- pt_sms_info.format = QSER_SMS_7BIT;
- // printf("[%s,%d] src_addr=%s, telephony_num = %s\n",__FUNCTION__,__LINE__, pt_sms_info.src_addr, telephony_num);
- printf("[%s,%d] sms_data=%s, msg = %s\n",__FUNCTION__,__LINE__, pt_sms_info.sms_data, msg);
-
- sleep(120);
-
- //test ucs2
- //char telephony_num[SMS_BUF] = {};
- char msg[MSG_BUF] = {};
- QSER_sms_info_t pt_sms_info;
- //sprintf(telephony_num,"18981904623");//请用户务必替换此号码,随意向运营商发短消息极有可能被封号。
- sprintf(msg,"你好吗");
- strncpy(pt_sms_info.src_addr, argv[1], SMS_BUF);
- strncpy(pt_sms_info.sms_data, msg, MSG_BUF);
- pt_sms_info.format = QSER_SMS_UCS2;
- // printf("[%s,%d] src_addr=%s, telephony_num = %s\n",__FUNCTION__,__LINE__, pt_sms_info.src_addr, telephony_num);
- printf("[%s,%d] sms_data=%s, msg = %s\n",__FUNCTION__,__LINE__, pt_sms_info.sms_data, msg);
-
- qser_sms_send_sms = (int (*)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info))dlsym(dlHandle_sms,"qser_sms_send_sms");
- if(NULL != qser_sms_send_sms)
- {
- ret = qser_sms_send_sms(h_sms, &pt_sms_info);
- if(ret == 0)
- {
- printf("send sms success");
- }else{
- printf("send sms error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_send_sms dlsym error\n");
- }
-
- sleep(120);//在此期间向模组发送短消息,即可触发“接受新短消息事件”。
- qser_sms_client_deinit = (int (*)(sms_client_handle_type h_sms))dlsym(dlHandle_sms,"qser_sms_client_deinit");
- if(NULL != qser_sms_client_deinit)
- {
- ret = qser_sms_client_deinit(h_sms);
- if(ret == 0)
- {
- printf("sms deinit success");
- }else{
- printf("sms deinit error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_client_deinit dlsym error\n");
- }
-
-}
-
-#else
-
-void qser_sms_handler(QSER_SMS_MsgRef msgRef, void* contextPtr) {
- printf("[%s-%d] sms handler, msgRef->sms_data = %s\n", __FUNCTION__, __LINE__, msgRef->sms_data);
-}
-
-
-int main(int argc, char *argv[])
-{
- char operator[10];
- char serNum[50] = {0};
- char phone_number[MAX_LEN] ={0};
- int opt;
- int ret, uToken;
- sms_client_handle_type handle = -1;
- QSER_sms_info_t test_sms_info;
- QSER_sms_service_center_cfg_t test_sca_cfg;
- QSER_sms_storage_info_t test_sms_storage;
- mbtk_log_init("radio", "SMS_TEST");
-
- printf("=========sms main=========\n"
- "\t0 exit\n"
- "\t1 sms init\n"
- "\t2 send text sms\n"
- "\t3 wait receive new sms\n"
- "\t4 send PDU sms\n"
- "\t5 //delete sms list\n"
- "\t6 delete sms\n"
- "\t7 query service number\n"
- "\t8 set service number\n"
- "\t9 deinit sms\n"
- "operator: >> \n");
-
- while(1)
- {
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- {
- ret = qser_sms_client_init(&handle);
- if(ret == 0)
- printf("Run qser_sms_client_init success\n");
- else
- printf("qser_sim_client_init error\n");
- }
- break;
- case 2:
- {
- memset(&test_sms_info, 0x00, sizeof(QSER_sms_info_t));
- char *tmp = "all man hello world";
- printf("input phone number:\n");
- memset(phone_number, 0x0, MAX_LEN);
- fgets(phone_number, MAX_LEN, stdin);
- fflush(stdin);
- int len = strlen(tmp);
- int num_len = strlen(phone_number);
- test_sms_info.format = 0;
- memcpy(test_sms_info.sms_data, tmp, len);
- memcpy(test_sms_info.src_addr, phone_number, num_len);
- ret = qser_sms_send_sms(handle, &test_sms_info);
- if(ret == 0)
- printf("Run qser_sms_send_sms success\n");
- else
- printf("qser_sms_send_sms error\n");
- }
- break;
- case 3:
- {
- ret = qser_sms_addrxmsghandler(qser_sms_handler, NULL);
- if(ret == 0)
- printf("Run qser_sms_addrxmsghandler success\n");
- else
- printf("qser_sms_addrxmsghandler error\n");
- }
- break;
- case 4:
- {
- memset(&test_sms_info, 0x00, sizeof(QSER_sms_info_t));
- char *tmp = "你好";
- printf("input phone number:\n");
- memset(phone_number, 0x0, MAX_LEN);
- fgets(phone_number, MAX_LEN, stdin);
- fflush(stdin);
- int len = strlen(tmp);
- int num_len = strlen(phone_number);
- test_sms_info.format = 2;
- memcpy(test_sms_info.sms_data, tmp, len);
- memcpy(test_sms_info.src_addr, phone_number, num_len);
- ret = qser_sms_send_sms(handle, &test_sms_info);
- if(ret == 0)
- printf("Run qser_sms_send_sms success\n");
- else
- printf("qser_sms_send_sms error\n");
- }
- break;
- case 5:
- {
- /*
- char list_del[1024] = {0};
-
- if (strcmp(list_del, "") == 0)
- printf("list_del = NULL\n");
- else
- printf("list_del = [%s]\n",list_del);
- */
- }
- break;
- case 6:
- {
- memset(&test_sms_storage, 0x00, sizeof(QSER_sms_storage_info_t));
- memset(operator,0x00, sizeof(operator));
- printf("please input index \n");
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- opt = atoi(operator);
- int t_index = opt;
- test_sms_storage.storage_idx = t_index;
- ret = qser_sms_deletefromstorage(handle, &test_sms_storage);
- if(ret == 0)
- printf("Run qser_sms_deletefromstorage success\n");
- else
- printf("qser_sms_deletefromstorage error\n");
- }
- break;
- case 7:
- {
- memset(&test_sca_cfg, 0x00, sizeof(QSER_sms_service_center_cfg_t));
- ret = qser_sms_getsmscenteraddress(handle,&test_sca_cfg);
- if(!ret)
- printf("get_smsc:%s success\n", test_sca_cfg.service_center_addr);
- else
- printf("qser_sms_getsmscenteraddress error\n");
- }
- break;
- case 8:
- {
- memset(&test_sca_cfg, 0x00, sizeof(QSER_sms_service_center_cfg_t));
- printf("input phone number:\n");
- memset(phone_number, 0x0, MAX_LEN);
- fgets(phone_number, MAX_LEN, stdin);
- fflush(stdin);
- int len = strlen(phone_number);
- memcpy(test_sca_cfg.service_center_addr, phone_number, len);
- ret= qser_sms_setsmscenteraddress(handle, &test_sca_cfg);
- if(ret == 0)
- printf("Run qser_sms_setsmscenteraddress success\n");
- else
- printf("qser_sms_setsmscenteraddress error\n");
- }
- break;
- case 9:
- {
- ret = qser_sms_client_deinit(handle);
- if(ret == 0)
- printf("Run qser_sms_client_deinit success\n");
- else
- printf("qser_sms_client_deinit error\n");
- }
- break;
- default:
- break;
- }
- }
-
- return 0;
-}
-
-#endif
-
-
-
diff --git a/mbtk/test/liblynq_lib/lynq_sleep_test.c b/mbtk/test/liblynq_lib/lynq_sleep_test.c
deleted file mode 100755
index 5366ef5..0000000
--- a/mbtk/test/liblynq_lib/lynq_sleep_test.c
+++ /dev/null
@@ -1,187 +0,0 @@
-#include "lynq-qser-autosuspend.h"
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stddef.h>
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-
-static void qser_lpm_handler(qser_lpm_edge_t edge_state)
-{
- printf("this is qser_lpm_handler, edge_state=%d\n", edge_state);
-}
-
-
-int main(int argc, char *argv[])
-{
- char operator[10];
- int opt;
- int lv_voll = 0;
- int fd_t;
- mbtk_log_init("radio", "SLEEP_TEST");
-
- printf("=========sleep main=========\n"
- "\t0 exit\n"
- "\t1 autosuspend enable\n"
- "\t2 wakelock create\n"
- "\t3 wakelock lock\n"
- "\t4 wakelock unlock\n"
- "\t5 wakelock destroy\n"
- "\t6 whitelist set\n"
- "\t7 whitelist get\n"
- "\t8 lpm init\n"
- "\t9 lpm destroy\n"
- "operator: >> \n");
-
- while(1)
- {
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- {
- printf(">>>>>Input 0 or 1<<<<<\n");
- char tmp_en[4]={0};
- memset(tmp_en, 0x00, sizeof(tmp_en));
- fgets(tmp_en, sizeof(tmp_en)-1, stdin);
- fflush(stdin);
-
- if (tmp_en[0] == '0' || tmp_en[0] == '1')
- qser_autosuspend_enable(tmp_en[0]);
- else
- printf(">>>>>re Input 0 or 1 error<<<<<\n");
- }
- break;
- case 2:
- {
- printf(">>>>>Input name<<<<<\n");
- char t_name[64]={0};
- int len_name;
- char tmp_c[64]={0};
- memset(tmp_c, 0x00, sizeof(tmp_c));
- fgets(tmp_c, sizeof(tmp_c)-1, stdin);
- fflush(stdin);
- len_name = strlen(tmp_c)-1;
- strncpy(t_name, tmp_c, len_name);
- printf(">>>>>name=[%s] name_len=[%d]<<<<<\n",t_name, len_name);
-
- fd_t = qser_wakelock_create(t_name, len_name);
- if (fd_t == -1)
- {
- printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
- }
- else
- {
- printf(">>>>>Output ID NUM =[%d]<<<<<\n",fd_t);
- }
- }
- break;
- case 3:
- {
- printf(">>>>>Input ID NUM<<<<<\n");
- char tmp_l[127]={0};
- fgets(tmp_l, sizeof(tmp_l), stdin);
- fflush(stdin);
- fd_t = atoi(tmp_l);
- fd_t = qser_wakelock_lock(fd_t);
- if (fd_t == -1)
- {
- printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
- }
- else
- {
- printf(">>>>>Output succuess<<<<<\n");
- }
- }
- break;
- case 4:
- {
- printf(">>>>>Input ID NUM<<<<<\n");
- char tmp_ul[127]={0};
- memset(tmp_ul, 0x00, sizeof(tmp_ul));
- fgets(tmp_ul, sizeof(tmp_ul)-1, stdin);
- fflush(stdin);
- fd_t = atoi(tmp_ul);
- fd_t = qser_wakelock_unlock(fd_t);
- if (fd_t == -1)
- {
- printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
- }
- else
- {
- printf(">>>>>Output succuess<<<<<\n");
- }
- }
- break;
- case 5:
- {
- printf(">>>>>Input ID NUM<<<<<\n");
- char tmp_d[127]={0};
- memset(tmp_d, 0x00, sizeof(tmp_d));
- fgets(tmp_d, sizeof(tmp_d)-1, stdin);
- fflush(stdin);
- fd_t = atoi(tmp_d);
- fd_t = qser_wakelock_destroy(fd_t);
- if (fd_t == -1)
- {
- printf(">>>>>Output error =[%d]<<<<<\n",fd_t);
- }
- else
- {
- printf(">>>>>Output succuess<<<<<\n");
- }
- }
- break;
- case 6:
- {
- printf(">>>>>Input whitelish NUM 4位(eg:1010) <<<<<\n");
- char whitelish[16]={0};
- int len_whitelish;
- char tmp[16]={0};
- memset(tmp, 0x00, sizeof(tmp));
- fgets(tmp, sizeof(tmp)-1, stdin);
- fflush(stdin);
- len_whitelish = strlen(tmp)-1;
-
- strncpy(whitelish, tmp, len_whitelish);
- printf(">>>set tmp =[%s] list = [%s] len_whitelish =[%d]\n",tmp, whitelish,len_whitelish);
-
- qser_whitelist_set(whitelish);
- }
- break;
- case 7:
- {
- char whitelish_get[10]={0};
-
- qser_whitelist_get(whitelish_get);
- printf(">>>get list = [%s]\n", whitelish_get);
- }
- break;
- case 8:
- {
- qser_pm_cfg_t *qser_lpm_cfg = NULL;
- qser_lpm_cfg = (qser_pm_cfg_t *)malloc(sizeof(qser_pm_cfg_t));
- qser_lpm_cfg->wakeupin.wakeupin_pin = 50;
- qser_lpm_cfg->wakeupin.wakeupin_edge = E_QL_LPM_FALLING;
- qser_lpm_init(qser_lpm_handler, qser_lpm_cfg);
- free(qser_lpm_cfg);
- }
- break;
- case 9:
- qser_lpm_deinit();
- break;
-
- default:
- break;
- }
-
- }
-
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib/lynq_time_test.c b/mbtk/test/liblynq_lib/lynq_time_test.c
deleted file mode 100755
index 886f4d3..0000000
--- a/mbtk/test/liblynq_lib/lynq_time_test.c
+++ /dev/null
@@ -1,114 +0,0 @@
-#include "lynq_systime.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-
-int main()
-{
- char operator[10];
- int opt;
- time_src_status_s time_src ={0};
- unsigned long ulsec =0;
- int en;
-
- while(1)
- {
- printf("=========time main=========\n"
- "\t0 exit\n"
- "\t1 ntp_sync_time\n"
- "\t2 modem_time_enable\n"
- "\t3 gnss_time_enable\n"
- "\t4 user_set_time\n"
- "\t5 lynq_sync_time_from_rtc(don't support)\n"
- "\t6 lynq_get_time_src_status\n"
- "\t7 lynq_set_rtc_time(don't support)\n"
- "\t8 lynq_get_rtc_time(don't support)\n"
- "operator: >> ");
-
-
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- {
- printf(">>>>>Input 0 or 1<<<<<\n");
- memset(operator, 0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- en = atoi(operator);
- //enable set time from ntp
- if (en == 0 || en == 1)
- ntp_sync_time(en);
- else
- printf(">>>>>RE Input 0 or 1<<<<<\n");
- }
- break;
- case 2:
- {
- printf(">>>>>Input 0 or 1<<<<<\n");
- memset(operator, 0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- en = atoi(operator);
- //enable set time from nitz
- if (en == 0 || en == 1)
- modem_time_enable(en);
- else
- printf(">>>>>RE Input 0 or 1<<<<<\n");
- }
- break;
- case 3:
- {
- printf(">>>>>Input 0 or 1<<<<<\n");
- memset(operator, 0x00, sizeof(operator));
- fgets(operator, sizeof(operator)-1, stdin);
- fflush(stdin);
- en = atoi(operator);
- //enable set time from gnss
- if (en == 0 || en == 1)
- gnss_time_enable(en);
- else
- printf(">>>>>RE Input 0 or 1<<<<<\n");
- }
- break;
- case 4:
- //enable set time from user
- user_set_time("2024-01-09", "11:30");
- break;
- case 5:
- // RTC TIME set to system
- lynq_sync_time_from_rtc();
- break;
- case 6:
- //check sysytem type
- lynq_get_time_src_status (&time_src);
- printf("time source status are: \nntp=%d\nnitz=%d\ngnss=%d\n",time_src.ntp,time_src.nitz, time_src.gnss);
- break;
- case 7:
- // system time set to RTC
- lynq_set_rtc_time();
- break;
- case 8:
- // get RTC time
- lynq_get_rtc_time(&ulsec);
- break;
- default:
- break;
- }
-
- sleep(1);
- }
-
- return 0;
-}
-
-
-
-
diff --git a/mbtk/test/liblynq_lib/qser_data_call_test.c b/mbtk/test/liblynq_lib/qser_data_call_test.c
deleted file mode 100644
index 7a38036..0000000
--- a/mbtk/test/liblynq_lib/qser_data_call_test.c
+++ /dev/null
@@ -1,561 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#include <pthread.h>
-#include <sys/epoll.h>
-#include <string.h>
-#include <fcntl.h>
-#include <signal.h>
-
-#include "lynq-qser-data.h"
-#include "mbtk_log.h"
-
-static void help()
-{
- printf("apn_get <cid> : Get current apns.\n");
- printf("apn_del <cid> : del apns.\n");
- printf("apn_list <cid> : list apns.\n");
- printf("apn_set <cid> <0/1/2/3> <apn> <apn_type> [<user> <pass> <(0 1)/2/3>] : \n");
- printf("Set apn (1-6) (IPV4/PPP/IPV6/IPV4V6) (150) (iot_net_i) (127) (127) (NONE/PAP/CHAP).\n");
- printf("apn_add <0/1/2/3> <apn> <apn_type> [<user> <pass> <(0 1)/2/3>] : \n");
- printf("data_call <0/1/2/3> <cid> <type> <re-con> <user> <pass>: Stop/Start/State data call.\n");
- printf("data_call <0/1/2/3> <cid> <IPV4/IPV6/IPV4V6> [<0/1> <user> <pass>].\n");
-}
-
-static int proc_exit()
-{
- qser_data_call_destroy();
- return 0;
-}
-
-static void sig_process(int sig)
-{
- LOGI("I got signal %d\n", sig);
- switch(sig)
- {
- case SIGINT: // Ctrl + C
- {
- LOGI("Exit by SIGINT.\n");
- proc_exit();
- exit(0);
- }
- case SIGQUIT: // Ctrl + \ (类似 SIGINT ,但要产生core文件)
- {
- LOGI("Exit by SIGQUIT.\n");
- proc_exit();
- exit(0);
- }
- case SIGTERM:// 默认kill (同 SIGKILL ,但 SIGKILL 不可捕获)
- {
- LOGI("Exit by SIGTERM.\n");
- proc_exit();
- exit(0);
- }
- case SIGTSTP:// Ctrl + Z (同 SIGSTOP ,但 SIGSTOP 不可捕获)
- {
- LOGI("Exit by SIGTSTP.\n");
- exit(0);
- }
- case SIGSEGV: // 如空指针
- {
- LOGI("Exit by SIGSEGV.\n");
- exit(0);
- }
- default:
- {
- LOGI("Unknown sig:%d\n",sig);
- break;
- }
- }
-}
-
-static void data_call_status_cb(qser_data_call_state_s *state)
-{
- printf("entry data_call_status_cb\n");
- if(state == NULL)
- {
- printf("state is NULL\n");
- }
- printf("DATA_DEMO_CALL_BACK: profile_idx=%d, name=%s, ip_family=%d, state=%d, error=%d\n"
- , state->profile_idx, state->name, state->ip_family, state->state, state->err);
-}
-
-int main(int argc, char *argv[])
-{
- signal(SIGINT, sig_process);
- signal(SIGQUIT, sig_process);
- signal(SIGTERM, sig_process);
- //signal(SIGTSTP, sig_process);
- //signal(SIGSEGV, sig_process);
-
- mbtk_log_init(NULL,"MBTK_QSER_DATA_CALL_TEST");
-
- //test2(0, "192.168.1.198");
- //test2(1, "2409:8162:140:cd3c:1:2:1494:72ba");
- //test2(1, "254.128.0.0.0.0.0.0.0.1.0.2.144.5.212.239");
- //test2(1, "2400:3200::1");
-
- int err = qser_data_call_init(data_call_status_cb);
- if(err)
- {
- printf("qser_data_call_init fail.");
- return -1;
- }
-
- printf(">>>>>>>>>>>>>>>>>>>>>>>>Enter cmd:\n");
- char cmd[100];
- while(1)
- {
- memset(cmd, 0, 100);
- if(fgets(cmd, 100, stdin))
- {
- char *ptr = cmd + strlen(cmd) - 1;
- while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
- {
- *ptr-- = '\0';
- }
-
- if(!strncasecmp(cmd, "apn", 3)){
- if(!strncasecmp(cmd, "apn_get", 7)) { // Get apn
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int cid = atoi(ptr);
- qser_apn_info_s qser_apn = {0};
- err = qser_apn_get(cid, &qser_apn);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("APN : %d, %d, %s, %s, %s, %d, %s.\n",qser_apn.profile_idx, qser_apn.pdp_type, qser_apn.apn_name, qser_apn.username, qser_apn.password, qser_apn.auth_proto, qser_apn.apn_type);
- }
- } else if(!strncasecmp(cmd, "apn_list", 8)){
- qser_apn_info_list_s apn_list = {0};
- err = qser_apn_get_list(&apn_list);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("cnt: %d.\n", apn_list.cnt);
- int i = 0;
- for(i = 0; i < apn_list.cnt; i++)
- {
- printf("APN : %d, %d, %s, %s, %s, %d, %s.\n", apn_list.apn[i].profile_idx, apn_list.apn[i].pdp_type, apn_list.apn[i].apn_name, apn_list.apn[i].username, apn_list.apn[i].password, apn_list.apn[i].auth_proto, apn_list.apn[i].apn_type);
- }
- }
- } else if(!strncasecmp(cmd, "apn_del", 7)){
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- char profile_idx = atoi(ptr);
- err = qser_apn_del(profile_idx);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success.\n");
- }
- } else if(!strncasecmp(cmd, "apn_add", 7)){
- char qser_idx = 0;
- qser_apn_add_s qser_apn = {0};
- char *tmp = NULL;
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_apn.pdp_type = (qser_apn_pdp_type_e)atoi(ptr);
-
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
- err = qser_apn_add(&qser_apn, &qser_idx);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success. get idx = [%d]\n", qser_idx);
- }
- continue;
- }
-
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.apn_name, ptr, strlen(ptr));
- tmp = qser_apn.apn_name;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
- err = qser_apn_add(&qser_apn, &qser_idx);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success. get idx = [%d]\n", qser_idx);
- }
- continue;
- }
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.apn_type, ptr, strlen(ptr));
- tmp = qser_apn.apn_type;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
- err = qser_apn_add(&qser_apn, &qser_idx);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success. get idx = [%d]\n", qser_idx);
- }
- continue;
- }
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.username, ptr, strlen(ptr));
- tmp = qser_apn.username;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
- continue;
- }
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.password, ptr, strlen(ptr));
- tmp = qser_apn.password;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
- continue;
- }
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_apn.auth_proto = (qser_apn_auth_proto_e)atoi(ptr);
-
- err = qser_apn_add(&qser_apn, &qser_idx);
-
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success. get idx = [%d]\n", qser_idx);
- }
- }
- else { // apn <cid> <0/1/2> <apn> [<user> <pass> <auth>]
- qser_apn_info_s qser_apn = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_apn.profile_idx = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_apn.pdp_type = (qser_apn_pdp_type_e)atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.apn_name, ptr, strlen(ptr));
- char *tmp = qser_apn.apn_name;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
- err = qser_apn_set(&qser_apn);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success\n");
- }
- continue;
- }
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.apn_type, ptr, strlen(ptr));
- tmp = qser_apn.apn_type;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL) {
- err = qser_apn_set(&qser_apn);
- if(err)
- {
- printf("Error : %d\n", err);
- }
- else
- {
- printf("APN set success\n");
- }
- continue;
- }
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.username, ptr, strlen(ptr));
- tmp = qser_apn.username;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_apn.password, ptr, strlen(ptr));
- tmp = qser_apn.password;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_apn.auth_proto = (qser_apn_auth_proto_e)atoi(ptr);
-
- err = qser_apn_set(&qser_apn);
-
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("APN set success\n");
- }
- }
- } else if(!strncasecmp(cmd, "data_call", 9)){ // data_call <0/1/2> <cid> <timeout>
- // data_call <0/1/2> <cid> <type> <re-con> <user> <pass>
- qser_data_call_s qser_data_call = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int type = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int cid = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_data_call_ip_family_e ip_type = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- {
-
- }
- else
- {
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- qser_data_call.reconnect = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_data_call.cdma_username, ptr, strlen(ptr));
- char *tmp = qser_data_call.cdma_username;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(qser_data_call.cdma_password, ptr, strlen(ptr));
- tmp = qser_data_call.cdma_password;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
- }
-#if 1
- qser_data_call_error_e qser_err;
- switch (type)
- {
- case 0:
- err = qser_data_call_stop(cid, ip_type, &qser_err);
- break;
- case 1:
- qser_data_call.profile_idx = cid;
- qser_data_call.ip_family = ip_type;
- err = qser_data_call_start(&qser_data_call, &qser_err);
- break;
- case 2: {
- qser_data_call_info_s info;
- err = qser_data_call_info_get(cid, ip_type, &info, &qser_err);
- if(!err) {
- printf("cid : %d, ip_type : %d\n", info.profile_idx, info.ip_family);
- if(info.v4.state) {
- LOGE("[qser_data_call] IP: 0x%08x pri_DNS: 0x%08x sec_DNS: 0x%08x.", info.v4.addr.ip.s_addr, info.v4.addr.pri_dns.s_addr, info.v4.addr.sec_dns.s_addr);
- //printf("%s: %s, %s, %s\n", info.v4.name, inet_ntoa(info.v4.addr.ip), inet_ntoa(info.v4.addr.pri_dns), inet_ntoa(info.v4.addr.sec_dns));
- printf("%s: %s ", info.v4.name, inet_ntoa(info.v4.addr.ip));
- printf("%s ", inet_ntoa(info.v4.addr.pri_dns));
- printf("%s\n", inet_ntoa(info.v4.addr.sec_dns));
- } else {
- printf("IPV4 not available.\n");
- }
-
- if(info.v6.state) {
- char IP_buf[128] = {0};
- char pri_dns_buf[128] = {0};
- char sec_dns_buf[128] = {0};
- ipv6_2_str(&(info.v6.addr.ip), IP_buf);
- ipv6_2_str(&(info.v6.addr.pri_dns), pri_dns_buf);
- ipv6_2_str(&(info.v6.addr.sec_dns), sec_dns_buf);
- printf("%s: %s, %s, %s\n", info.v6.name, IP_buf, pri_dns_buf, sec_dns_buf);
- } else {
- printf("IPV6 not available.\n");
- }
- }
- break;
- }
- case 3:
- {
- qser_data_call.profile_idx = cid;
- qser_data_call.ip_family = ip_type;
- err = qser_data_call_start_async(&qser_data_call, &qser_err);
- break;
- }
- default:
- printf("Type error:%d\n", type);
- break;
- }
-#endif
- printf("qser_err: %d\n", qser_err);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("DATA_CALL success\n");
- }
- }
- else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help")) {
- help();
- } else if(!strcasecmp(cmd, "q")) {
- break;
- } else {
- printf("\n");
- }
- }
- }
-
- proc_exit();
-
- LOGI("Client exec complete.");
-#if 1
- while(1)
- {
- sleep(1000 * 365 * 24 * 60 * 60);
- }
-#else
- sleep(1);
-#endif
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib/qser_gnss_test.c b/mbtk/test/liblynq_lib/qser_gnss_test.c
deleted file mode 100755
index c7c8563..0000000
--- a/mbtk/test/liblynq_lib/qser_gnss_test.c
+++ /dev/null
@@ -1,350 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <strings.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <termios.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pthread.h>
-#include <termios.h>
-#include <time.h>
-#include <sys/ioctl.h>
-#include <dlfcn.h>
-#include <stdint.h>
-#include "lynq_gnss.h"
-
-void cb(uint32_t h_loc, e_msg_id_t e_msg_id, void *pv_data, void *context_ptr)
-{
- printf("e_msg_id=%d\n", e_msg_id);
- switch(e_msg_id)
- {
- case E_MT_LOC_MSG_ID_LOCATION_INFO: //选择mode1,输出定位信息
- {
- mopen_location_info_t *pt_location = (mopen_location_info_t *)pv_data;
- printf("**** flag=0x%X, Latitude = %f, Longitude=%f, altitude = %f, speed = %f, timestamp = %lld ****\n",
- pt_location->flags,
- pt_location->latitude,
- pt_location->longitude,
- pt_location->altitude,
- pt_location->speed,
- pt_location->timestamp);
- break;
- }
- case E_MT_LOC_MSG_ID_NMEA_INFO: //选择mode3,输出nmea数据信息
- {
- mopen_gnss_nmea_info_t *pt_nmea = (mopen_gnss_nmea_info_t *)pv_data;
-
- printf("**** NMEA info: timestamp=%lld, length=%d, nmea=%s ****\n",
- pt_nmea->timestamp, pt_nmea->length, pt_nmea->nmea);
- break;
- }
- }
-}
-
-void async_cb(qser_gnss_error_e state)
-{
- printf("start gnss async state: %d \n", state);
-}
-
-void user_help(void)
-{
- printf("\t-1 exit\n"
- "\t1 gnss init\n"
- "\t2 gnss deinit \n"
- "\t3 gnss add nmea callback\n"
- "\t4 gnss set local mode\n"
- "\t5 gnss set nmea mode\n"
- "\t6 gnss start\n"
- "\t7 gnss stop\n"
- "\t8 gnss Delete_Aiding_Data and reset (new not support)\n"
- "\t9 gnss injecttime (new not support)\n"
- "\t10 gnss download agps\n"
- "\t11 gnss set frequency\n"
- "\t12 gnss send agps data to gnss\n"
- "\t13 gnss config agps server info\n"
- "\t14 gnss set async cb\n"
- "\t15 gnss start async\n"
- "please input operator: >> \n");
-}
-void delete_type(void)
-{
- printf("\t0 DELETE_NOTHING\n"
- "\t1 DELETE_EPHEMERIS\n"
- "\t2 DELETE_ALMANAC\n"
- "\t3 DELETE_POSITION_TIME \n"
- "\t4 DELETE_UTC\n"
- "\t5 DELETE_ALL\n"
- "please input operator: >> \n");
-}
-
-int main(int argc, char *argv[])
-{
- int ret;
- int opt = 0;
- //char *lynqLib_gnss = "/lib/liblynq-qser-gnss.so";
- char dev_file[12] = {0};
- uint32_t ph_gnss;
- //dlHandle_gnss = dlopen(lynqLib_gnss, RTLD_NOW);
- while(1)
- {
- printf("=========gnss main=========\n");
- user_help();
- scanf("%d", &opt);
- switch (opt)
- {
- case -1:
- {
- qser_Gnss_Stop(ph_gnss);
- qser_Gnss_Deinit(ph_gnss);
- printf("main exit\n");
- return 0;
- }
-
- case 1:
- {
- ret = qser_Gnss_Init(&ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_Init FAIL.\n");
- }
- else
- {
- printf("qser_Gnss_Init success , with address=%08x\n", ph_gnss);
- }
- break;
- }
- case 2:
- {
- ret =qser_Gnss_Deinit(ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_Deinit FAIL.\n");
- }
- else
- {
- printf("qser_Gnss_Deinit success \n");
- }
- break;
- }
- case 3:
- {
- ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
- if(ret < 0)
- {
- printf("qser_AddRxIndMsgHandler fail\n");
- }
- else
- {
- printf("add success\n");
- }
- break;
- }
- case 4:
- {
- e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
- ret = qser_Set_Indications(ph_gnss,ptr2);
- if(ret < 0)
- {
- printf("qser_Set_Indications fail\n");
- }
- else
- {
- printf("set location mode success\n");
- }
- break;
- }
- case 5:
- {
- e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
- ret = qser_Set_Indications(ph_gnss,ptr4);
- if(ret < 0)
- {
- printf("qser_Set_Indications fail\n");
- }
- else
- {
- printf("set nmea mode success\n");
- }
- break;
- }
- case 6:
- {
- ret = qser_Gnss_Start(ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_Start fail\n");
- }
- else
- {
- printf("start success\n");
- }
- break;
- }
- case 7:
- {
- ret = qser_Gnss_Stop(ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_Stop fail\n");
- }
- else
- {
- printf("stop success\n");
- }
- break;
- }
- case 8:
- {
- int opt_1;
- DELETE_AIDING_DATA_TYPE_T ptr;
- printf("=========delete aiding data type=========\n");
- delete_type();
- scanf("%d", &opt_1);
- switch(opt_1)
- {
- case 0:
- {
- ptr = DELETE_NOTHING;//hot
- break;
- }
- case 1:
- {
- ptr = DELETE_EPHEMERIS;//warm
- break;
- }
- case 2:
- {
- ptr = DELETE_ALMANAC;
- break;
- }
- case 3:
- {
- ptr = DELETE_POSITION_TIME;
- break;
- }
- case 4:
- {
- ptr = DELETE_UTC;
- break;
- }
- case 5:
- {
- ptr = DELETE_ALL;//cold
- break;
- }
- }
- ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
- if(ret < 0)
- {
- printf("qser_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
- }
- else
- {
- printf("qser_Gnss_Delete_Aiding_Data %d success\n",opt_1);
- }
- break;
- }
- case 9:
- {
- LYNQ_INJECT_TIME_INTO_T time_test;
- ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
- if(ret < 0)
- {
- printf("qser_Gnss_InjectTime fail\n");
- }
- else
- {
- printf("qser_Gnss_InjectTime success\n");
- }
- break;
- }
- case 10:
- {
- ret = qser_Gnss_download_tle();
- if(ret < 0)
- {
- printf("qser_Gnss_download_tle fail\n");
- }
- else
- {
- printf("qser_Gnss_download_tle success\n");
- }
- break;
- }
- case 11:
- {
- int frequency;
- printf("=========Set Frequency=========\n");
- scanf("%d", &frequency);
- ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
- if(ret < 0)
- {
- printf("qser_Gnss_Set_Frequency fail\n");
- }
- else
- {
- printf("frequency is %d\n",frequency);
- printf("qser_Gnss_Set_Frequency success\n");
- }
- break;
- }
- case 12:
- {
- ret = qser_Gnss_injectEphemeris(ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_injectEphemeris fail\n");
- }
- else
- {
- printf("qser_Gnss_injectEphemeri ssuccess\n");
- }
- break;
- }
- case 13:
- {
- ret = qser_Gnss_Server_Configuration("http://uagnss.allystar.com:80/ephemeris/HD_GPS_BDS.hdb","yikecs1","Z38w5urAuawubTxi");
- if(ret < 0)
- {
- printf("qser_Gnss_Server_Configuration fail\n");
- }
- else
- {
- printf("qser_Gnss_Server_Configuration ssuccess\n");
- }
- break;
- }
- case 14:
- {
- ret = qser_Gnss_Set_Async_Callback(async_cb);
- if(ret < 0)
- {
- printf("qser_Gnss_Set_Async_Callback fail\n");
- }
- else
- {
- printf("qser_Gnss_Set_Async_Callback ssuccess\n");
- }
- break;
- }
- case 15:
- {
- ret = qser_Gnss_Start_Async(ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_Start_Async fail\n");
- }
- else
- {
- printf("qser_Gnss_Start_Async ssuccess\n");
- }
- break;
- }
- }
- }
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib/qser_led_test.c b/mbtk/test/liblynq_lib/qser_led_test.c
deleted file mode 100755
index 00edbde..0000000
--- a/mbtk/test/liblynq_lib/qser_led_test.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <stdio.h>
-#include <strings.h>
-#include<stdlib.h>
-
-#include "lynq_led.h"
-
-void user_help(void)
-{
- printf("\t-1 exit\n"
- "\t1 open net led\n"
- "\t2 close net led \n"
- "\t3 open status led\n"
- "\t4 close status led\n"
- "please input operator: >> \n");
-}
-
-
-int main(int argc, const char *argv[])
-{
- int ret;
- int opt = 0;
- while(1)
- {
- printf("=========gnss main=========\n");
- user_help();
- scanf("%d", &opt);
- switch (opt)
- {
- case -1:
- {
- printf("main exit\n");
- return 0;
- }
- case 1:
- {
- ret = lynq_set_netled_on(1);
- if(ret)
- {
- printf("[%s-%d] lynq_set_netled_on error\n", __FUNCTION__, __LINE__);
- return -1;
- }
- else
- {
- printf("open net led success.\n");
- }
- break;
- }
- case 2:
- {
- ret = lynq_set_netled_on(0);
- if(ret)
- {
- printf("[%s-%d] lynq_set_netled_on error\n", __FUNCTION__, __LINE__);
- return -1;
- }
- else
- {
- printf("close net led success.\n");
- }
- break;
- }
- case 3:
- {
- ret = lynq_set_statusled_on(1);
- if(ret)
- {
- printf("[%s-%d] lynq_set_statusled_on error\n", __FUNCTION__, __LINE__);
- return -1;
- }
- else
- {
- printf("open status led success.\n");
- }
- break;
- }
- case 4:
- {
- ret = lynq_set_statusled_on(0);
- if(ret)
- {
- printf("[%s-%d] lynq_set_statusled_on error\n", __FUNCTION__, __LINE__);
- return -1;
- }
- else
- {
- printf("close status led success.\n");
- }
- break;
- }
- default:
- {
- printf("opt unkuown\n");
- break;
- }
- }
- }
-
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib/qser_sim_test.c b/mbtk/test/liblynq_lib/qser_sim_test.c
deleted file mode 100755
index cae4530..0000000
--- a/mbtk/test/liblynq_lib/qser_sim_test.c
+++ /dev/null
@@ -1,325 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-
-#include"lynq_qser_sim.h"
-
-
-#define BUF_SIZE 32
-#define BUF_PIN 16
-#define VER_SIZE 128
-
-typedef uint32_t sim_client_handle_type;
-
-sim_client_handle_type ph_sim = 2023;
-sim_client_handle_type h_sim = 2023;
-
-
-int main(int argc, char const *argv[])
-{
- printf("=========sim main=========\n"
- "\t0 qser_sim_init\n"
- "\t1 qser_get_imsi\n"
- "\t2 qser_get_iccid\n"
- "\t3 qser_get_phonenumber\n"
- "\t4 qser_verify_pin\n"
- "\t5 qser_change_pin\n"
- "\t6 qser_unlock_pin\n"
- "\t7 qser_enable_pin\n"
- "\t8 qser_disable_pin\n"
- "\t9 qser_get_sim_status\n"
- "\t10 qser_get_imei\n"
- "\t11 qser_get_imei_and_sv\n"
- "\t12 qser_reset_modem\n"
- "\t13 qser_get_version\n"
- "\t14 qser_reset_sim\n"
- "\t15 qser_deinit_sim\n"
- "\t16 exit\n");
-
- while(1)
- {
- int cmdIdx = -1;
- int res = -1;
-
- printf("operator: >> \n");
-
- scanf("%d", &cmdIdx);
- fflush(stdin);
-
- switch(cmdIdx)
- {
- //"qser_sim_init"
- case 0:
- {
- //int token;
- //printf("input token\n");
- //scanf("%d", &token);
- res = qser_sim_client_init(&h_sim);
- if(res == 0)
- {
- printf("Run qser_sim_client_init\n");
- }else{
- printf("qser_sim_client_init error\n");
- }
- }
- break;
- //"qser_sim_getimsi"
- case 1:
- {
- char imsi[BUF_SIZE] = {0};
- QSER_SIM_APP_ID_INFO_T pt_info;
- res = qser_sim_getimsi(h_sim, &pt_info, imsi, BUF_SIZE);
- if(res == 0)
- {
- printf("imsi is %s!!!\n",imsi);
- }else{
- printf("get imsi error, res = %d\n", res);
- }
- }
- break;
- //"qser_get_iccid"
- case 2:
- {
- char iccid[BUF_SIZE] = {0};
- res = qser_sim_geticcid(h_sim, QSER_SIM_SLOT_ID_1, iccid, BUF_SIZE);
- if(res == 0)
- {
- printf("get iccid success!!! iccid is %s\n",iccid);
- }else{
- printf("get iccid error, res = %d\n", res);
- }
- }
- break;
- //qser_get_phonenumber
- case 3:
- {
- char phonenumber[BUF_SIZE] = "";
- QSER_SIM_APP_ID_INFO_T pt_info;
- res = qser_sim_getphonenumber(h_sim, &pt_info, phonenumber, BUF_SIZE);
- if(res == 0)
- {
- printf("get phonenumber success!!! phonenumber is %s\n",phonenumber);
- }else{
- printf("get phonenumber error, res = %d\n", res);
- }
- }
- break;
- //qser_verify_pin
- case 4:
- {
- char pin[BUF_PIN] = {0};
- QSER_SIM_VERIFY_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- printf("pin_value = %s , pin = %s\n", pt_info.pin_value, pin);
- pt_info.pin_value_len = strlen(pt_info.pin_value);
-
- res = qser_sim_verifypin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("verify pin success!!!\n");
- }else{
- printf("verify pin error, res = %d\n", res);
- }
- }
- break;
- //qser_change_pin
- case 5:
- {
- char old_pin[BUF_PIN] = {0};
- QSER_SIM_CHANGE_PIN_INFO_T pt_info;
- printf("input old pin\n");
- scanf("%s", old_pin);
- char new_pin[BUF_PIN] = {0};
- printf("input new pin\n");
- scanf("%s", new_pin);
- strncpy(pt_info.old_pin_value, old_pin, BUF_PIN);
- strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
- printf("pt_info.old_pin_value = %s, old_pin = %s\n", pt_info.old_pin_value, old_pin);
- printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
- pt_info.old_pin_value_len = strlen(pt_info.old_pin_value);
- pt_info.new_pin_value_len = strlen(pt_info.new_pin_value);
-
- res = qser_sim_changepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("change pin success!!!\n");
- }else{
- printf("change pin error, res = %d\n", res);
- }
- }
- break;
- //qser_unlock_pin
- case 6:
- {
- char puk[BUF_PIN] = {0};
- QSER_SIM_UNBLOCK_PIN_INFO_T pt_info;
- printf("input puk\n");
- scanf("%s", puk);
- char new_pin[BUF_PIN] = {0};
- printf("input new pin\n");
- scanf("%s", new_pin);
-
- strncpy(pt_info.puk_value, puk, BUF_PIN);
- strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
- printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
- printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
- pt_info.new_pin_value_len = strlen(pt_info.new_pin_value);
- pt_info.puk_value_len = strlen(pt_info.puk_value);
-
- res = qser_sim_unblockpin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("unlock pin success!!!\n");
- }else{
- printf("unlock pin error, res = %d\n", res);
- }
- }
- break;
- //qser_enable_pin
- case 7:
- {
- char pin[BUF_PIN] = {0};
- QSER_SIM_ENABLE_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- pt_info.pin_value_len = strlen(pt_info.pin_value);
-
- res = qser_sim_enablepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("pin enabled!!!\n");
- }else{
- printf("pin enable error, res =%d\n", res);
- }
- }
- break;
- //qser_disable_pin
- case 8:
- {
- char pin[BUF_PIN] = {0};
- QSER_SIM_ENABLE_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- pt_info.pin_value_len = strlen(pt_info.pin_value);
-
- res = qser_sim_disablepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("pin disnabled!!!\n");
- }else{
- printf("pin disable error,res = %d\n", res);
- }
- }
- break;
- //qser_get_sim_status
- case 9:
- {
- QSER_SIM_CARD_STATUS_INFO_T pt_info;
-
- res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
- if(res == 0)
- {
- printf("state is %d !!!\n",pt_info.e_card_state);
- }else{
- printf("get imsi error,res = %d\n", res);
- }
- }
- break;
- //qser_get_imei
- case 10:
- {
- char imei[BUF_SIZE]="";
- res = qser_sim_getimei(h_sim, imei);
- if(res == 0)
- {
- printf("get imei success!!! imei = %s\n", imei);
- }else{
- printf("get imei error, res = %d\n", res);
- }
- }
- break;
- //qser_get_imei_and_sv
- case 11:
- {
- char imei[BUF_SIZE]="";
- char sv[BUF_SIZE]="";
-
- res = qser_get_imei_and_sv(h_sim, imei, sv);
- if(res == 0)
- {
- printf("get imei and sv success!!!imei = %s sv = %s\n", imei, sv);
- }else{
- printf("get imei and sv error, res = %d\n", res);
- }
- }
- break;
- //qser_reset_modem
- case 12:
- {
- res = qser_reset_modem(h_sim);
- if(res == 0)
- {
- printf("reset modem success!!!\n");
- }else{
- printf("reset modem error, res = %d\n", res);
- }
- }
- break;
- //qser_get_version
- case 13:
- {
- char buf[VER_SIZE]="";
-
- res = qser_get_version(h_sim, buf);
- if(res == 0)
- {
- printf("get version success!!! ver = %s\n", buf);
- }else{
- printf("get version error, res = %d\n", res);
- }
- }
- break;
- //qser_reset_sim
- case 14:
- {
- res = qser_reset_sim(h_sim);
- if(res == 0)
- {
- printf("reset sim success!!!\n");
- }else{
- printf("reset sim error, res = %d\n", res);
- }
- }
- break;
- //qser_deinit_sim
- case 15:
- {
- res = qser_sim_client_deinit(h_sim);
- if(res == 0)
- {
- printf("sim deinit success is!!!\n");
- }else{
- printf("sim deint errors, res = %d\n", res);
- }
- }
- break;
- case 16:
- printf("main exit\n");
- return 0;
- default :
- break;
- }
-
- }
-
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib/qser_thermal_test.c b/mbtk/test/liblynq_lib/qser_thermal_test.c
deleted file mode 100755
index 62af03a..0000000
--- a/mbtk/test/liblynq_lib/qser_thermal_test.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <stdlib.h>
-
-#include"lynq_qser_thermal.h"
-#define MAX_SIZE 3
-
-int main(int argc, char *argv[]){
- int numbers[MAX_SIZE];
- int ret = 0;
- ret = get_thermal_zone(numbers, MAX_SIZE);
- if (ret <= 0)
- {
- printf("get_thermal_zone error\n");
- return -1;
- }
-
- for (int j = 0; j < ret; ++j) {
- printf("[%s-%d] temp[%d] = %d \n", __func__, __LINE__, j, numbers[j]);
- }
-
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib/ring_tele.h b/mbtk/test/liblynq_lib/ring_tele.h
deleted file mode 100755
index 580bfe8..0000000
--- a/mbtk/test/liblynq_lib/ring_tele.h
+++ /dev/null
@@ -1,6364 +0,0 @@
-/* Generated by reswrap version 4.0.0 */
-
-/* created by reswrap from file m.pcm */
-#ifndef RING_TELE
-#define RING_TELE
-
-#define PCM_DATA ring_tele
-#define PCM_DATA_SIZE (sizeof(ring_tele) / sizeof(ring_tele[0]))
-
-const unsigned char ring_tele[]={
-0xd8, 0xff, 0xbc, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xd8, 0xff,
-0xfc, 0xff, 0x18, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x64, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x38, 0x00,
-0x14, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x9a, 0xff, 0x86, 0xff, 0x70, 0xff, 0x68, 0xff, 0x86, 0xff,
-0x9c, 0xff, 0xca, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x58, 0x00, 0x74, 0x00, 0x86, 0x00, 0x82, 0x00,
-0x6a, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x66, 0xff, 0x4c, 0xff,
-0x56, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x0c, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x9a, 0x00,
-0xae, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x4e, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x96, 0xff, 0x62, 0xff,
-0x3e, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x9e, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x42, 0x00,
-0x8c, 0x00, 0xa0, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xc2, 0xff,
-0x7c, 0xff, 0x4c, 0xff, 0x20, 0xff, 0x20, 0xff, 0x34, 0xff, 0x64, 0xff, 0xa4, 0xff, 0xec, 0xff,
-0x24, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xb6, 0x00, 0xc2, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x26, 0x00,
-0xee, 0xff, 0xb2, 0xff, 0x74, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x3a, 0xff, 0x54, 0xff, 0x7a, 0xff,
-0xc8, 0xff, 0x06, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x86, 0x00,
-0x4c, 0x00, 0x12, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x66, 0xff, 0x48, 0xff, 0x44, 0xff, 0x46, 0xff,
-0x62, 0xff, 0x90, 0xff, 0xce, 0xff, 0x02, 0x00, 0x32, 0x00, 0x62, 0x00, 0x8a, 0x00, 0x98, 0x00,
-0x90, 0x00, 0x72, 0x00, 0x42, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x5a, 0xff,
-0x5a, 0xff, 0x68, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xde, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x74, 0x00,
-0x88, 0x00, 0x96, 0x00, 0x86, 0x00, 0x60, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0xce, 0xff, 0xa8, 0xff,
-0x90, 0xff, 0x82, 0xff, 0x70, 0xff, 0x7e, 0xff, 0x94, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x16, 0x00,
-0x40, 0x00, 0x54, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x52, 0x00, 0x46, 0x00, 0x0c, 0x00, 0xf6, 0xff,
-0xd2, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xd2, 0xff,
-0xee, 0xff, 0x0a, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x42, 0x00, 0x36, 0x00,
-0x14, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xb4, 0xff, 0xbc, 0xff,
-0xc4, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x16, 0x00, 0x14, 0x00, 0x22, 0x00,
-0x0e, 0x00, 0x14, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xd2, 0xff,
-0xce, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xec, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff,
-0xf8, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xc6, 0xff,
-0xcc, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0x10, 0x00, 0x1e, 0x00,
-0x20, 0x00, 0x28, 0x00, 0x10, 0x00, 0x16, 0x00, 0x12, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xc0, 0xff,
-0xb6, 0xff, 0x9c, 0xff, 0x8c, 0xff, 0x98, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xdc, 0xff, 0xf8, 0xff,
-0x1a, 0x00, 0x36, 0x00, 0x42, 0x00, 0x50, 0x00, 0x40, 0x00, 0x38, 0x00, 0x18, 0x00, 0xf8, 0xff,
-0xd2, 0xff, 0xa8, 0xff, 0x86, 0xff, 0x78, 0xff, 0x76, 0xff, 0x86, 0xff, 0xa6, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x10, 0x00, 0x48, 0x00, 0x68, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x6c, 0x00, 0x46, 0x00,
-0x22, 0x00, 0xf4, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x70, 0xff,
-0x90, 0xff, 0xc2, 0xff, 0xea, 0xff, 0x22, 0x00, 0x60, 0x00, 0x7a, 0x00, 0x94, 0x00, 0x9a, 0x00,
-0x7a, 0x00, 0x54, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xc2, 0xff, 0x86, 0xff, 0x52, 0xff, 0x3e, 0xff,
-0x3c, 0xff, 0x4a, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x96, 0x00,
-0xaa, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xba, 0xff, 0x76, 0xff,
-0x3e, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x82, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x36, 0x00,
-0x7c, 0x00, 0xa2, 0x00, 0xb4, 0x00, 0xae, 0x00, 0x8e, 0x00, 0x60, 0x00, 0x0e, 0x00, 0xe4, 0xff,
-0xa0, 0xff, 0x62, 0xff, 0x36, 0xff, 0x18, 0xff, 0x2c, 0xff, 0x56, 0xff, 0x8e, 0xff, 0xcc, 0xff,
-0xfc, 0xff, 0x30, 0x00, 0x72, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x3e, 0x00,
-0x02, 0x00, 0xce, 0xff, 0x94, 0xff, 0x5a, 0xff, 0x2e, 0xff, 0x26, 0xff, 0x3a, 0xff, 0x5e, 0xff,
-0x96, 0xff, 0xd4, 0xff, 0x0e, 0x00, 0x44, 0x00, 0x78, 0x00, 0xa4, 0x00, 0xb2, 0x00, 0x9c, 0x00,
-0x74, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xbe, 0xff, 0x88, 0xff, 0x54, 0xff, 0x38, 0xff, 0x32, 0xff,
-0x40, 0xff, 0x6e, 0xff, 0xa6, 0xff, 0xe6, 0xff, 0x18, 0x00, 0x48, 0x00, 0x72, 0x00, 0x92, 0x00,
-0x96, 0x00, 0x7e, 0x00, 0x5a, 0x00, 0x28, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x88, 0xff, 0x5e, 0xff,
-0x4e, 0xff, 0x54, 0xff, 0x68, 0xff, 0x8a, 0xff, 0xc6, 0xff, 0xec, 0xff, 0x1c, 0x00, 0x4c, 0x00,
-0x6c, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x66, 0x00, 0x4c, 0x00, 0x10, 0x00, 0xe6, 0xff, 0xc2, 0xff,
-0xa0, 0xff, 0x90, 0xff, 0x74, 0xff, 0x7c, 0xff, 0x90, 0xff, 0xa2, 0xff, 0xde, 0xff, 0xfc, 0xff,
-0x20, 0x00, 0x44, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x2c, 0x00, 0x0e, 0x00,
-0xe8, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xb4, 0xff,
-0xe4, 0xff, 0x02, 0x00, 0x14, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x34, 0x00,
-0x08, 0x00, 0xfa, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xba, 0xff, 0xbc, 0xff,
-0xd2, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00,
-0x0c, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf4, 0xff,
-0xf4, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd4, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x14, 0x00,
-0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xb0, 0xff,
-0xa4, 0xff, 0xb6, 0xff, 0xac, 0xff, 0xb4, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x14, 0x00,
-0x2a, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf4, 0xff, 0xde, 0xff,
-0xb4, 0xff, 0x96, 0xff, 0x94, 0xff, 0x86, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xee, 0xff,
-0x04, 0x00, 0x32, 0x00, 0x50, 0x00, 0x62, 0x00, 0x60, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x1c, 0x00,
-0xf4, 0xff, 0xca, 0xff, 0x94, 0xff, 0x80, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x7e, 0xff, 0x98, 0xff,
-0xb6, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x4e, 0x00, 0x76, 0x00, 0x94, 0x00, 0x88, 0x00, 0x64, 0x00,
-0x46, 0x00, 0x14, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x80, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x54, 0xff,
-0x68, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x3a, 0x00, 0x6e, 0x00, 0x96, 0x00, 0xa8, 0x00,
-0x9c, 0x00, 0x7a, 0x00, 0x44, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x9a, 0xff, 0x64, 0xff, 0x48, 0xff,
-0x36, 0xff, 0x46, 0xff, 0x66, 0xff, 0xa0, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x48, 0x00, 0x90, 0x00,
-0xb2, 0x00, 0xb4, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00, 0xfc, 0xff, 0xc6, 0xff, 0x86, 0xff,
-0x5c, 0xff, 0x36, 0xff, 0x24, 0xff, 0x3a, 0xff, 0x6e, 0xff, 0xb0, 0xff, 0xec, 0xff, 0x1e, 0x00,
-0x60, 0x00, 0x90, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xa6, 0x00, 0x78, 0x00, 0x26, 0x00, 0xf8, 0xff,
-0xc2, 0xff, 0x7c, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x32, 0xff, 0x40, 0xff, 0x6c, 0xff, 0xb0, 0xff,
-0xf8, 0xff, 0x28, 0x00, 0x62, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x5a, 0x00,
-0x14, 0x00, 0xe2, 0xff, 0xa4, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x4a, 0xff,
-0x82, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x32, 0x00, 0x6e, 0x00, 0x90, 0x00, 0x96, 0x00, 0x96, 0x00,
-0x76, 0x00, 0x46, 0x00, 0x06, 0x00, 0xd6, 0xff, 0xa4, 0xff, 0x70, 0xff, 0x58, 0xff, 0x54, 0xff,
-0x52, 0xff, 0x6a, 0xff, 0xa4, 0xff, 0xe2, 0xff, 0x12, 0x00, 0x40, 0x00, 0x66, 0x00, 0x84, 0x00,
-0x90, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x32, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0x9c, 0xff, 0x82, 0xff,
-0x72, 0xff, 0x64, 0xff, 0x72, 0xff, 0x8c, 0xff, 0xb6, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x3a, 0x00,
-0x54, 0x00, 0x56, 0x00, 0x68, 0x00, 0x56, 0x00, 0x30, 0x00, 0x12, 0x00, 0xf2, 0xff, 0xd6, 0xff,
-0xaa, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x96, 0xff, 0xb0, 0xff, 0xdc, 0xff, 0xfc, 0xff,
-0x0e, 0x00, 0x30, 0x00, 0x42, 0x00, 0x40, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x20, 0x00, 0x04, 0x00,
-0xfa, 0xff, 0xdc, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb8, 0xff, 0xce, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x20, 0x00, 0x1e, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd4, 0xff,
-0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x00, 0x00,
-0xf4, 0xff, 0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfc, 0xff,
-0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xcc, 0xff,
-0xd0, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x16, 0x00, 0x20, 0x00,
-0x2a, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xbc, 0xff,
-0xa8, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x18, 0x00,
-0x2e, 0x00, 0x40, 0x00, 0x48, 0x00, 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x14, 0x00, 0xe8, 0xff,
-0xcc, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x7a, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xda, 0xff,
-0xfe, 0xff, 0x2a, 0x00, 0x54, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x3e, 0x00,
-0x08, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x7c, 0xff, 0x66, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x7c, 0xff,
-0x9e, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x40, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x9a, 0x00, 0x94, 0x00,
-0x72, 0x00, 0x36, 0x00, 0x06, 0x00, 0xc2, 0xff, 0x90, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x42, 0xff, 0x78, 0xff, 0xa2, 0xff, 0xe6, 0xff, 0x18, 0x00, 0x62, 0x00, 0x8a, 0x00, 0xa4, 0x00,
-0xb2, 0x00, 0x9a, 0x00, 0x7e, 0x00, 0x3a, 0x00, 0xf6, 0xff, 0xc0, 0xff, 0x84, 0xff, 0x4a, 0xff,
-0x30, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x70, 0x00,
-0xa6, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x20, 0x00, 0xf2, 0xff, 0xae, 0xff,
-0x6c, 0xff, 0x4a, 0xff, 0x24, 0xff, 0x30, 0xff, 0x58, 0xff, 0x88, 0xff, 0xce, 0xff, 0x08, 0x00,
-0x32, 0x00, 0x72, 0x00, 0xa8, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x92, 0x00, 0x4c, 0x00, 0x12, 0x00,
-0xde, 0xff, 0x9e, 0xff, 0x6c, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x38, 0xff, 0x60, 0xff, 0x96, 0xff,
-0xd0, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x7c, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0x7e, 0x00,
-0x48, 0x00, 0x08, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3a, 0xff, 0x46, 0xff,
-0x70, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x48, 0x00, 0x74, 0x00, 0x90, 0x00, 0x9a, 0x00,
-0x88, 0x00, 0x5e, 0x00, 0x28, 0x00, 0xf4, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x70, 0xff, 0x56, 0xff,
-0x5a, 0xff, 0x70, 0xff, 0x8c, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0x1c, 0x00, 0x4a, 0x00, 0x6c, 0x00,
-0x76, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x38, 0x00, 0x06, 0x00, 0xe8, 0xff, 0xb8, 0xff, 0x98, 0xff,
-0x88, 0xff, 0x76, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0xa4, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x22, 0x00,
-0x4e, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x14, 0x00, 0x02, 0x00, 0xde, 0xff,
-0xc4, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xe0, 0xff,
-0xfe, 0xff, 0x10, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe0, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00,
-0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd6, 0xff,
-0xd4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x18, 0x00,
-0x1e, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xa4, 0xff,
-0xa8, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xcc, 0xff, 0xea, 0xff, 0x04, 0x00, 0x1e, 0x00, 0x38, 0x00,
-0x44, 0x00, 0x46, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x18, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xbc, 0xff,
-0x9c, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x92, 0xff, 0xa4, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x06, 0x00,
-0x2c, 0x00, 0x54, 0x00, 0x62, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0xf2, 0xff,
-0xcc, 0xff, 0x96, 0xff, 0x80, 0xff, 0x62, 0xff, 0x54, 0xff, 0x72, 0xff, 0x94, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x14, 0x00, 0x50, 0x00, 0x6a, 0x00, 0x8a, 0x00, 0x92, 0x00, 0x6e, 0x00, 0x46, 0x00,
-0x1a, 0x00, 0xee, 0xff, 0xbc, 0xff, 0x8a, 0xff, 0x60, 0xff, 0x48, 0xff, 0x46, 0xff, 0x5c, 0xff,
-0x96, 0xff, 0xb6, 0xff, 0xf6, 0xff, 0x30, 0x00, 0x60, 0x00, 0x94, 0x00, 0xa2, 0x00, 0xa2, 0x00,
-0x82, 0x00, 0x56, 0x00, 0x12, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x6a, 0xff, 0x3e, 0xff, 0x30, 0xff,
-0x30, 0xff, 0x54, 0xff, 0x86, 0xff, 0xc2, 0xff, 0xf8, 0xff, 0x3e, 0x00, 0x82, 0x00, 0xa0, 0x00,
-0xbe, 0x00, 0xae, 0x00, 0x8e, 0x00, 0x52, 0x00, 0x0c, 0x00, 0xe6, 0xff, 0xa2, 0xff, 0x66, 0xff,
-0x3e, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x98, 0xff, 0xd8, 0xff, 0x0e, 0x00, 0x56, 0x00,
-0x88, 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xac, 0x00, 0x8a, 0x00, 0x46, 0x00, 0xfc, 0xff, 0xd2, 0xff,
-0x8e, 0xff, 0x54, 0xff, 0x30, 0xff, 0x30, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa2, 0xff, 0xe0, 0xff,
-0x16, 0x00, 0x56, 0x00, 0x8c, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0x9a, 0x00, 0x62, 0x00, 0x24, 0x00,
-0xf6, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x38, 0xff, 0x58, 0xff, 0x82, 0xff,
-0xc8, 0xff, 0xf8, 0xff, 0x30, 0x00, 0x68, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x86, 0x00,
-0x50, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x5a, 0xff, 0x44, 0xff, 0x58, 0xff,
-0x76, 0xff, 0xa0, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x32, 0x00, 0x56, 0x00, 0x78, 0x00, 0x7e, 0x00,
-0x7a, 0x00, 0x60, 0x00, 0x34, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x7e, 0xff, 0x66, 0xff,
-0x64, 0xff, 0x72, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x22, 0x00, 0x42, 0x00,
-0x4e, 0x00, 0x56, 0x00, 0x4a, 0x00, 0x36, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xb4, 0xff,
-0xa2, 0xff, 0x8e, 0xff, 0x96, 0xff, 0x96, 0xff, 0xa8, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x06, 0x00,
-0x1a, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x3a, 0x00, 0x32, 0x00, 0x26, 0x00, 0x08, 0x00, 0xfa, 0xff,
-0xea, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xca, 0xff, 0xd8, 0xff,
-0xf4, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x12, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0a, 0x00,
-0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf8, 0xff,
-0xf2, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x12, 0x00, 0x0c, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xcc, 0xff,
-0xd0, 0xff, 0xca, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x20, 0x00, 0x30, 0x00,
-0x2a, 0x00, 0x28, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xc0, 0xff, 0xac, 0xff,
-0xa6, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x28, 0x00,
-0x40, 0x00, 0x56, 0x00, 0x54, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x16, 0x00, 0xfc, 0xff, 0xc4, 0xff,
-0xa6, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xc4, 0xff, 0xea, 0xff,
-0x0c, 0x00, 0x48, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x10, 0x00,
-0xe8, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x56, 0xff, 0x4e, 0xff, 0x60, 0xff, 0x8a, 0xff,
-0xb8, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x78, 0x00, 0x8e, 0x00, 0x88, 0x00, 0x68, 0x00,
-0x40, 0x00, 0x0e, 0x00, 0xd6, 0xff, 0xa0, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x42, 0xff,
-0x60, 0xff, 0x9a, 0xff, 0xc8, 0xff, 0xfa, 0xff, 0x3c, 0x00, 0x78, 0x00, 0x98, 0x00, 0xae, 0x00,
-0x9e, 0x00, 0x80, 0x00, 0x40, 0x00, 0x12, 0x00, 0xd0, 0xff, 0x8e, 0xff, 0x62, 0xff, 0x32, 0xff,
-0x28, 0xff, 0x32, 0xff, 0x56, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x10, 0x00, 0x5c, 0x00, 0x8a, 0x00,
-0xb2, 0x00, 0xb6, 0x00, 0xa8, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xf0, 0xff, 0xbc, 0xff, 0x80, 0xff,
-0x48, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x46, 0xff, 0x7a, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x28, 0x00,
-0x6e, 0x00, 0xb0, 0x00, 0xca, 0x00, 0xb8, 0x00, 0x9a, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xe0, 0xff,
-0xb0, 0xff, 0x74, 0xff, 0x46, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x9e, 0xff, 0xd6, 0xff,
-0x20, 0x00, 0x4e, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xbc, 0x00, 0xae, 0x00, 0x74, 0x00, 0x48, 0x00,
-0x06, 0x00, 0xce, 0xff, 0x96, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x4a, 0xff, 0x70, 0xff,
-0xae, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x48, 0x00, 0x84, 0x00, 0x90, 0x00, 0xa6, 0x00, 0x82, 0x00,
-0x62, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0x90, 0xff, 0x76, 0xff, 0x60, 0xff, 0x58, 0xff,
-0x68, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x4e, 0x00, 0x64, 0x00, 0x80, 0x00,
-0x7c, 0x00, 0x64, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xec, 0xff, 0xc2, 0xff, 0x9a, 0xff, 0x8c, 0xff,
-0x7c, 0xff, 0x74, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x1c, 0x00, 0x3e, 0x00,
-0x3e, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x1e, 0x00, 0x06, 0x00, 0xe6, 0xff, 0xc2, 0xff,
-0xa0, 0xff, 0x94, 0xff, 0x96, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xbe, 0xff, 0xda, 0xff, 0xf6, 0xff,
-0x0c, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x22, 0x00, 0x10, 0x00, 0xfe, 0xff,
-0xe8, 0xff, 0xd6, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xcc, 0xff, 0xda, 0xff,
-0xec, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0xff,
-0xfc, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe8, 0xff,
-0xee, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xda, 0xff,
-0xe0, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x12, 0x00, 0x14, 0x00, 0x20, 0x00, 0x12, 0x00,
-0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xbc, 0xff, 0xbc, 0xff,
-0xc6, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x00, 0x00, 0x18, 0x00, 0x36, 0x00, 0x3c, 0x00,
-0x46, 0x00, 0x3c, 0x00, 0x28, 0x00, 0x22, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0x98, 0xff,
-0x9a, 0xff, 0x92, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xba, 0xff, 0xee, 0xff, 0x08, 0x00, 0x2a, 0x00,
-0x58, 0x00, 0x5a, 0x00, 0x6c, 0x00, 0x60, 0x00, 0x42, 0x00, 0x34, 0x00, 0x02, 0x00, 0xda, 0xff,
-0xac, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x62, 0xff, 0x74, 0xff, 0x94, 0xff, 0xba, 0xff, 0xe6, 0xff,
-0x14, 0x00, 0x4c, 0x00, 0x78, 0x00, 0x88, 0x00, 0x84, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x28, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0x96, 0xff, 0x58, 0xff, 0x42, 0xff, 0x44, 0xff, 0x52, 0xff, 0x7e, 0xff,
-0xb2, 0xff, 0xe8, 0xff, 0x20, 0x00, 0x50, 0x00, 0x78, 0x00, 0x94, 0x00, 0x94, 0x00, 0x86, 0x00,
-0x52, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xa0, 0xff, 0x70, 0xff, 0x4e, 0xff, 0x62, 0xff, 0x8a, 0xff,
-0xc4, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x76, 0x00, 0x9a, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x8c, 0x00,
-0x52, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x9a, 0xff, 0x60, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x36, 0xff,
-0x62, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x0c, 0x00, 0x48, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb8, 0x00,
-0xa8, 0x00, 0x74, 0x00, 0x38, 0x00, 0xf6, 0xff, 0xc2, 0xff, 0x86, 0xff, 0x52, 0xff, 0x28, 0xff,
-0x26, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa0, 0xff, 0xe6, 0xff, 0x14, 0x00, 0x4e, 0x00, 0x80, 0x00,
-0xa2, 0x00, 0xb6, 0x00, 0x94, 0x00, 0x6c, 0x00, 0x2a, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x7a, 0xff,
-0x5c, 0xff, 0x48, 0xff, 0x46, 0xff, 0x62, 0xff, 0x82, 0xff, 0xb4, 0xff, 0xf4, 0xff, 0x26, 0x00,
-0x5a, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x60, 0x00, 0x20, 0x00, 0xf4, 0xff,
-0xbe, 0xff, 0x8c, 0xff, 0x62, 0xff, 0x44, 0xff, 0x54, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xc2, 0xff,
-0xf6, 0xff, 0x26, 0x00, 0x52, 0x00, 0x78, 0x00, 0x82, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x40, 0x00,
-0x0e, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x8c, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x82, 0xff,
-0x9e, 0xff, 0xda, 0xff, 0x06, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x66, 0x00, 0x60, 0x00, 0x56, 0x00,
-0x50, 0x00, 0x24, 0x00, 0x06, 0x00, 0xec, 0xff, 0xc2, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0x98, 0xff,
-0xa4, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x28, 0x00, 0x3a, 0x00,
-0x40, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xe4, 0xff, 0xcc, 0xff, 0xba, 0xff,
-0xb4, 0xff, 0xbc, 0xff, 0xac, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xfe, 0xff,
-0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x06, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xe8, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xea, 0xff,
-0xf2, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf0, 0xff,
-0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xf6, 0xff, 0xe6, 0xff,
-0xe6, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xe0, 0xff,
-0xf0, 0xff, 0x06, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x16, 0x00,
-0x02, 0x00, 0xf4, 0xff, 0xd4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa2, 0xff, 0xa0, 0xff,
-0xb4, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x6a, 0x00,
-0x4c, 0x00, 0x30, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x8a, 0xff, 0x82, 0xff,
-0x7a, 0xff, 0x90, 0xff, 0xac, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x2a, 0x00, 0x5a, 0x00, 0x78, 0x00,
-0x82, 0x00, 0x7e, 0x00, 0x60, 0x00, 0x30, 0x00, 0x04, 0x00, 0xde, 0xff, 0xa4, 0xff, 0x6c, 0xff,
-0x5a, 0xff, 0x50, 0xff, 0x54, 0xff, 0x74, 0xff, 0x9c, 0xff, 0xd6, 0xff, 0x14, 0x00, 0x46, 0x00,
-0x6e, 0x00, 0x90, 0x00, 0x96, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x30, 0x00, 0x06, 0x00, 0xca, 0xff,
-0x94, 0xff, 0x66, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x68, 0xff, 0xa8, 0xff, 0xec, 0xff,
-0x20, 0x00, 0x5e, 0x00, 0x92, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0x90, 0x00, 0x62, 0x00, 0x2e, 0x00,
-0xee, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x44, 0xff, 0x70, 0xff,
-0xa8, 0xff, 0xee, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x92, 0x00, 0xac, 0x00, 0xa4, 0x00, 0x90, 0x00,
-0x62, 0x00, 0x2a, 0x00, 0xe8, 0xff, 0xb0, 0xff, 0x66, 0xff, 0x38, 0xff, 0x28, 0xff, 0x22, 0xff,
-0x44, 0xff, 0x74, 0xff, 0xc2, 0xff, 0x00, 0x00, 0x36, 0x00, 0x74, 0x00, 0x98, 0x00, 0xac, 0x00,
-0xaa, 0x00, 0x92, 0x00, 0x5a, 0x00, 0x1c, 0x00, 0xe8, 0xff, 0xa6, 0xff, 0x72, 0xff, 0x46, 0xff,
-0x2c, 0xff, 0x40, 0xff, 0x5a, 0xff, 0x8c, 0xff, 0xd4, 0xff, 0x0e, 0x00, 0x38, 0x00, 0x70, 0x00,
-0x92, 0x00, 0xa0, 0x00, 0x96, 0x00, 0x74, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xc8, 0xff, 0x8a, 0xff,
-0x6a, 0xff, 0x50, 0xff, 0x42, 0xff, 0x4c, 0xff, 0x76, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0x0a, 0x00,
-0x3e, 0x00, 0x74, 0x00, 0x86, 0x00, 0x8e, 0x00, 0x80, 0x00, 0x5e, 0x00, 0x32, 0x00, 0xf4, 0xff,
-0xc2, 0xff, 0x9e, 0xff, 0x76, 0xff, 0x64, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x8e, 0xff, 0xbe, 0xff,
-0xf6, 0xff, 0x2a, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x46, 0x00,
-0x14, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x78, 0xff, 0x74, 0xff, 0x88, 0xff,
-0xa6, 0xff, 0xd2, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x32, 0x00, 0x3e, 0x00, 0x48, 0x00, 0x3c, 0x00,
-0x3a, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xa0, 0xff,
-0xaa, 0xff, 0xae, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x24, 0x00,
-0x20, 0x00, 0x24, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x08, 0x00, 0xec, 0xff, 0xe8, 0xff, 0xcc, 0xff,
-0xca, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf6, 0xff,
-0xf2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xfe, 0xff,
-0xfa, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xdc, 0xff,
-0xd0, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, 0xe4, 0xff, 0xf6, 0xff,
-0x0e, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0x04, 0x00,
-0xf0, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xc0, 0xff,
-0xe4, 0xff, 0x04, 0x00, 0x10, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x3a, 0x00,
-0x26, 0x00, 0x08, 0x00, 0xda, 0xff, 0xb6, 0xff, 0x98, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x86, 0xff,
-0x9c, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x4c, 0x00, 0x6a, 0x00, 0x76, 0x00,
-0x72, 0x00, 0x50, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xde, 0xff, 0xa8, 0xff, 0x82, 0xff, 0x80, 0xff,
-0x68, 0xff, 0x72, 0xff, 0x8e, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x4e, 0x00, 0x6a, 0x00,
-0x90, 0x00, 0x9a, 0x00, 0x8e, 0x00, 0x6a, 0x00, 0x2c, 0x00, 0x12, 0x00, 0xce, 0xff, 0x98, 0xff,
-0x66, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x56, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x26, 0x00,
-0x56, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x66, 0x00, 0x28, 0x00, 0xf0, 0xff,
-0xbc, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xc0, 0xff,
-0xfa, 0xff, 0x36, 0x00, 0x80, 0x00, 0xa0, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0x90, 0x00, 0x60, 0x00,
-0x14, 0x00, 0xec, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x4e, 0xff, 0x2a, 0xff, 0x34, 0xff, 0x4a, 0xff,
-0x7a, 0xff, 0xd2, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x7c, 0x00, 0xae, 0x00, 0xb6, 0x00, 0xaa, 0x00,
-0x8a, 0x00, 0x48, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x8e, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x1a, 0xff,
-0x2c, 0xff, 0x50, 0xff, 0x8e, 0xff, 0xda, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xae, 0x00,
-0xb0, 0x00, 0x98, 0x00, 0x74, 0x00, 0x3a, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x86, 0xff, 0x5c, 0xff,
-0x32, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xae, 0xff, 0xea, 0xff, 0x2a, 0x00, 0x60, 0x00,
-0x86, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x58, 0x00, 0x2e, 0x00, 0xf2, 0xff, 0xbe, 0xff,
-0x8c, 0xff, 0x6e, 0xff, 0x4c, 0xff, 0x52, 0xff, 0x74, 0xff, 0x88, 0xff, 0xc6, 0xff, 0xfa, 0xff,
-0x28, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x80, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x3c, 0x00, 0x1a, 0x00,
-0xf8, 0xff, 0xbc, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x80, 0xff, 0x86, 0xff, 0x96, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x48, 0x00,
-0x28, 0x00, 0x12, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9c, 0xff,
-0xae, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x2e, 0x00, 0x38, 0x00,
-0x3e, 0x00, 0x30, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe8, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xba, 0xff,
-0xc2, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x1c, 0x00,
-0x16, 0x00, 0x20, 0x00, 0x18, 0x00, 0x16, 0x00, 0x12, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff,
-0xde, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xec, 0xff,
-0xf6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00,
-0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xee, 0xff, 0xe8, 0xff, 0xe4, 0xff,
-0xd0, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xd6, 0xff, 0xf0, 0xff,
-0xf6, 0xff, 0x04, 0x00, 0x1e, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x22, 0x00, 0x06, 0x00,
-0xe8, 0xff, 0xd2, 0xff, 0xb4, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x8e, 0xff, 0x9c, 0xff, 0xa6, 0xff,
-0xbe, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x32, 0x00, 0x52, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x40, 0x00,
-0x36, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xd0, 0xff, 0xa2, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x62, 0xff,
-0x78, 0xff, 0x92, 0xff, 0xb2, 0xff, 0xf6, 0xff, 0x14, 0x00, 0x50, 0x00, 0x66, 0x00, 0x72, 0x00,
-0x80, 0x00, 0x66, 0x00, 0x52, 0x00, 0x1e, 0x00, 0xfc, 0xff, 0xb6, 0xff, 0x7a, 0xff, 0x6a, 0xff,
-0x48, 0xff, 0x4e, 0xff, 0x6c, 0xff, 0x90, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x6c, 0x00,
-0x8a, 0x00, 0xac, 0x00, 0xa2, 0x00, 0x84, 0x00, 0x5a, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb6, 0xff,
-0x78, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x56, 0xff, 0x92, 0xff, 0xcc, 0xff, 0x04, 0x00,
-0x44, 0x00, 0x7c, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x86, 0x00, 0x50, 0x00, 0x16, 0x00,
-0xe2, 0xff, 0x9c, 0xff, 0x54, 0xff, 0x32, 0xff, 0x1a, 0xff, 0x38, 0xff, 0x58, 0xff, 0x96, 0xff,
-0xe2, 0xff, 0x16, 0x00, 0x52, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb8, 0x00, 0xac, 0x00, 0x80, 0x00,
-0x42, 0x00, 0x02, 0x00, 0xce, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x1e, 0xff, 0x16, 0xff, 0x3e, 0xff,
-0x68, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x64, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xb4, 0x00,
-0x96, 0x00, 0x6e, 0x00, 0x2a, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x6a, 0xff, 0x36, 0xff, 0x28, 0xff,
-0x2e, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x58, 0x00, 0x84, 0x00,
-0x98, 0x00, 0x9c, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x18, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x72, 0xff,
-0x4c, 0xff, 0x44, 0xff, 0x48, 0xff, 0x74, 0xff, 0x90, 0xff, 0xc8, 0xff, 0xfc, 0xff, 0x2c, 0x00,
-0x66, 0x00, 0x74, 0x00, 0x88, 0x00, 0x74, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x06, 0x00, 0xd6, 0xff,
-0xa4, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x66, 0xff, 0x72, 0xff, 0x8a, 0xff, 0xb8, 0xff, 0xe2, 0xff,
-0x04, 0x00, 0x38, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x48, 0x00, 0x16, 0x00,
-0xec, 0xff, 0xd2, 0xff, 0xa8, 0xff, 0x9a, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb6, 0xff,
-0xd4, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x40, 0x00, 0x34, 0x00,
-0x22, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xde, 0xff, 0xca, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xc0, 0xff,
-0xc2, 0xff, 0xd0, 0xff, 0xe6, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x14, 0x00, 0x26, 0x00, 0x20, 0x00,
-0x24, 0x00, 0x1e, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xea, 0xff, 0xda, 0xff, 0xd8, 0xff,
-0xe6, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xf6, 0xff,
-0xf4, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00,
-0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0xee, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xdc, 0xff,
-0xe2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0x02, 0x00,
-0x10, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x0e, 0x00, 0xfa, 0xff, 0xf0, 0xff,
-0xda, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xd4, 0xff,
-0xe2, 0xff, 0x06, 0x00, 0x26, 0x00, 0x32, 0x00, 0x34, 0x00, 0x34, 0x00, 0x22, 0x00, 0x26, 0x00,
-0x00, 0x00, 0xdc, 0xff, 0xc4, 0xff, 0x90, 0xff, 0x94, 0xff, 0x86, 0xff, 0x80, 0xff, 0x9a, 0xff,
-0x9e, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x70, 0x00, 0x5c, 0x00,
-0x48, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xa6, 0xff, 0x84, 0xff, 0x66, 0xff, 0x58, 0xff,
-0x64, 0xff, 0x7c, 0xff, 0xac, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x46, 0x00, 0x68, 0x00, 0x88, 0x00,
-0x8c, 0x00, 0x86, 0x00, 0x50, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xc0, 0xff, 0x92, 0xff, 0x5a, 0xff,
-0x44, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x78, 0xff, 0xac, 0xff, 0xea, 0xff, 0x26, 0x00, 0x56, 0x00,
-0x98, 0x00, 0xaa, 0x00, 0xae, 0x00, 0x94, 0x00, 0x68, 0x00, 0x28, 0x00, 0xf2, 0xff, 0xbe, 0xff,
-0x86, 0xff, 0x58, 0xff, 0x38, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x8c, 0xff, 0xca, 0xff, 0x06, 0x00,
-0x3e, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xc0, 0x00, 0x98, 0x00, 0x66, 0x00, 0x18, 0x00,
-0xe0, 0xff, 0xb8, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x5c, 0xff, 0x86, 0xff,
-0xd4, 0xff, 0x02, 0x00, 0x38, 0x00, 0x88, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x90, 0x00,
-0x4e, 0x00, 0x0a, 0x00, 0xe2, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x40, 0xff, 0x32, 0xff, 0x3c, 0xff,
-0x5e, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x22, 0x00, 0x54, 0x00, 0x82, 0x00, 0xb2, 0x00, 0xb2, 0x00,
-0x98, 0x00, 0x78, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0xd2, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x40, 0xff,
-0x4c, 0xff, 0x5c, 0xff, 0x82, 0xff, 0xb2, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x56, 0x00, 0x82, 0x00,
-0x8e, 0x00, 0x8e, 0x00, 0x84, 0x00, 0x58, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x8c, 0xff,
-0x66, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x60, 0xff, 0x92, 0xff, 0xcc, 0xff, 0xee, 0xff, 0x20, 0x00,
-0x52, 0x00, 0x62, 0x00, 0x74, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x40, 0x00, 0x12, 0x00, 0xee, 0xff,
-0xc8, 0xff, 0x92, 0xff, 0x86, 0xff, 0x78, 0xff, 0x7c, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xe4, 0xff,
-0x02, 0x00, 0x1e, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x40, 0x00, 0x32, 0x00,
-0xfc, 0xff, 0xe4, 0xff, 0xc6, 0xff, 0xac, 0xff, 0xa0, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xaa, 0xff,
-0xc8, 0xff, 0xe6, 0xff, 0x00, 0x00, 0x10, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2e, 0x00,
-0x26, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf2, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc0, 0xff,
-0xca, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x14, 0x00,
-0x12, 0x00, 0x24, 0x00, 0x16, 0x00, 0x0c, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf4, 0xff,
-0xe6, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf2, 0xff,
-0xee, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x02, 0x00,
-0x0a, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xe0, 0xff,
-0xcc, 0xff, 0xca, 0xff, 0xbe, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0xf8, 0xff,
-0x10, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x34, 0x00, 0x24, 0x00, 0x06, 0x00,
-0xf0, 0xff, 0xce, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9c, 0xff, 0xa4, 0xff, 0xbc, 0xff,
-0xda, 0xff, 0xee, 0xff, 0x20, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x50, 0x00, 0x42, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xd2, 0xff, 0x9c, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x60, 0xff, 0x6c, 0xff,
-0x7e, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0x36, 0x00, 0x58, 0x00, 0x66, 0x00, 0x78, 0x00,
-0x6c, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x86, 0xff, 0x5c, 0xff, 0x58, 0xff,
-0x50, 0xff, 0x56, 0xff, 0x7e, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7a, 0x00,
-0x86, 0x00, 0x92, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xaa, 0xff, 0x78, 0xff,
-0x52, 0xff, 0x32, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x7a, 0xff, 0xb6, 0xff, 0xea, 0xff, 0x26, 0x00,
-0x62, 0x00, 0x82, 0x00, 0x94, 0x00, 0xa2, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x08, 0x00, 0xce, 0xff,
-0x98, 0xff, 0x68, 0xff, 0x42, 0xff, 0x38, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x90, 0xff, 0xda, 0xff,
-0x0a, 0x00, 0x48, 0x00, 0x84, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0x9e, 0x00, 0x76, 0x00, 0x40, 0x00,
-0x04, 0x00, 0xd4, 0xff, 0x98, 0xff, 0x60, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x70, 0xff,
-0xb4, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00, 0xaa, 0x00, 0xac, 0x00, 0x98, 0x00,
-0x68, 0x00, 0x2c, 0x00, 0xf2, 0xff, 0xb6, 0xff, 0x8a, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3c, 0xff,
-0x54, 0xff, 0x86, 0xff, 0xc0, 0xff, 0xf8, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00,
-0xac, 0x00, 0x92, 0x00, 0x62, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x84, 0xff, 0x5c, 0xff,
-0x56, 0xff, 0x50, 0xff, 0x72, 0xff, 0x92, 0xff, 0xba, 0xff, 0x00, 0x00, 0x32, 0x00, 0x64, 0x00,
-0x86, 0x00, 0x90, 0x00, 0x8e, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0a, 0x00, 0xe4, 0xff, 0xb4, 0xff,
-0x8c, 0xff, 0x78, 0xff, 0x64, 0xff, 0x62, 0xff, 0x70, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0xfc, 0xff,
-0x22, 0x00, 0x3e, 0x00, 0x56, 0x00, 0x60, 0x00, 0x52, 0x00, 0x46, 0x00, 0x22, 0x00, 0xfc, 0xff,
-0xe2, 0xff, 0xba, 0xff, 0xa4, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x96, 0xff, 0xc0, 0xff,
-0xd6, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x2e, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x30, 0x00,
-0x16, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xac, 0xff,
-0xc0, 0xff, 0xd0, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x12, 0x00,
-0x0e, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xe0, 0xff,
-0xd6, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf8, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x04, 0x00, 0xfc, 0xff,
-0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf6, 0xff, 0x0a, 0x00,
-0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xea, 0xff,
-0xca, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xe6, 0xff,
-0x0a, 0x00, 0x26, 0x00, 0x4a, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x1a, 0x00,
-0xfe, 0xff, 0xdc, 0xff, 0xac, 0xff, 0x9c, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x90, 0xff, 0x9e, 0xff,
-0xd2, 0xff, 0xfa, 0xff, 0x2a, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7c, 0x00, 0x68, 0x00, 0x4e, 0x00,
-0x3e, 0x00, 0x0e, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x88, 0xff, 0x68, 0xff, 0x48, 0xff, 0x5c, 0xff,
-0x78, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x8a, 0x00,
-0x80, 0x00, 0x5c, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xd0, 0xff, 0x9e, 0xff, 0x6a, 0xff, 0x4a, 0xff,
-0x48, 0xff, 0x54, 0xff, 0x80, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x1e, 0x00, 0x56, 0x00, 0x7a, 0x00,
-0x94, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x70, 0x00, 0x26, 0x00, 0xf2, 0xff, 0xbe, 0xff, 0x80, 0xff,
-0x48, 0xff, 0x3a, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xbc, 0xff, 0x02, 0x00, 0x26, 0x00,
-0x6a, 0x00, 0x96, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0x88, 0x00, 0x58, 0x00, 0x0e, 0x00, 0xd0, 0xff,
-0x98, 0xff, 0x64, 0xff, 0x44, 0xff, 0x22, 0xff, 0x28, 0xff, 0x56, 0xff, 0x82, 0xff, 0xd2, 0xff,
-0x10, 0x00, 0x46, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb6, 0x00, 0xa6, 0x00, 0x84, 0x00, 0x50, 0x00,
-0x12, 0x00, 0xdc, 0xff, 0x96, 0xff, 0x68, 0xff, 0x46, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x62, 0xff,
-0x9a, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x7a, 0x00, 0xa4, 0x00, 0xae, 0x00, 0xaa, 0x00,
-0x88, 0x00, 0x42, 0x00, 0x14, 0x00, 0xd6, 0xff, 0x98, 0xff, 0x70, 0xff, 0x48, 0xff, 0x42, 0xff,
-0x4e, 0xff, 0x6e, 0xff, 0xa8, 0xff, 0xe2, 0xff, 0x20, 0x00, 0x46, 0x00, 0x74, 0x00, 0x8e, 0x00,
-0x90, 0x00, 0x88, 0x00, 0x66, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x94, 0xff, 0x6e, 0xff,
-0x4e, 0xff, 0x4c, 0xff, 0x64, 0xff, 0x82, 0xff, 0xb6, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x48, 0x00,
-0x6a, 0x00, 0x7e, 0x00, 0x86, 0x00, 0x70, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf2, 0xff, 0xc2, 0xff,
-0x9c, 0xff, 0x88, 0xff, 0x70, 0xff, 0x78, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xf6, 0xff,
-0x10, 0x00, 0x38, 0x00, 0x48, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x06, 0x00,
-0xe2, 0xff, 0xc0, 0xff, 0xac, 0xff, 0x98, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa0, 0xff, 0xb4, 0xff,
-0xd2, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x22, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x20, 0x00,
-0x16, 0x00, 0x00, 0x00, 0xea, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xc0, 0xff,
-0xc6, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x06, 0x00,
-0x08, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfe, 0xff,
-0xf4, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xe8, 0xff,
-0xee, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x18, 0x00,
-0x0c, 0x00, 0x12, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xdc, 0xff, 0xce, 0xff,
-0xbc, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xfe, 0xff, 0x0a, 0x00,
-0x24, 0x00, 0x36, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x04, 0x00, 0xf0, 0xff,
-0xda, 0xff, 0xbe, 0xff, 0xa0, 0xff, 0x92, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xea, 0xff,
-0x16, 0x00, 0x2e, 0x00, 0x46, 0x00, 0x50, 0x00, 0x62, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x14, 0x00,
-0xee, 0xff, 0xd6, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x7a, 0xff, 0xac, 0xff,
-0xa0, 0xff, 0xc6, 0xff, 0x20, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x5c, 0x00, 0x82, 0x00, 0x64, 0x00,
-0x4a, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0x52, 0xff, 0x86, 0xff,
-0x7a, 0xff, 0x2c, 0xff, 0x98, 0xff, 0x26, 0x00, 0x6c, 0x00, 0x52, 0x00, 0x72, 0x00, 0xb8, 0x00,
-0xb6, 0x00, 0x04, 0x01, 0x34, 0x01, 0x48, 0x01, 0xbc, 0x00, 0xf0, 0xfe, 0x16, 0xfc, 0x70, 0xf8,
-0xc2, 0xf4, 0xf4, 0xf1, 0x12, 0xf1, 0x4c, 0xf3, 0xde, 0xf8, 0x9c, 0x01, 0x90, 0x0c, 0x1a, 0x18,
-0x0f, 0x22, 0x9b, 0x28, 0x0d, 0x2a, 0xb7, 0x24, 0xd4, 0x18, 0x6c, 0x07, 0x06, 0xf3, 0xcb, 0xde,
-0x0d, 0xcd, 0x37, 0xc0, 0x15, 0xba, 0xe1, 0xbc, 0xab, 0xc8, 0xf9, 0xdb, 0x28, 0xf5, 0x32, 0x11,
-0x43, 0x2c, 0x41, 0x42, 0xd1, 0x50, 0x7a, 0x55, 0x0d, 0x4f, 0x6b, 0x3e, 0x41, 0x25, 0xde, 0x06,
-0x6e, 0xe7, 0x63, 0xca, 0xf7, 0xb3, 0x14, 0xa7, 0x48, 0xa5, 0x41, 0xae, 0x5b, 0xc1, 0xad, 0xdc,
-0xf0, 0xfb, 0xf6, 0x1a, 0x4b, 0x35, 0xe7, 0x48, 0x45, 0x54, 0x88, 0x56, 0x4f, 0x4e, 0x6b, 0x3d,
-0xc1, 0x24, 0xbc, 0x06, 0x4c, 0xe7, 0x09, 0xca, 0x1b, 0xb4, 0xc2, 0xa8, 0x54, 0xa9, 0xf3, 0xb4,
-0x9b, 0xc9, 0x8a, 0xe4, 0x3a, 0x01, 0x9e, 0x1b, 0x71, 0x31, 0x03, 0x42, 0x7f, 0x4c, 0x8f, 0x4f,
-0xe3, 0x49, 0xcd, 0x3a, 0x49, 0x23, 0xa2, 0x05, 0xbe, 0xe5, 0x19, 0xc9, 0x87, 0xb4, 0x41, 0xab,
-0x37, 0xae, 0xdb, 0xbb, 0x37, 0xd1, 0x7e, 0xea, 0x40, 0x04, 0xa4, 0x1b, 0x51, 0x2f, 0x7b, 0x3e,
-0x1d, 0x48, 0xe3, 0x4a, 0x33, 0x45, 0xfb, 0x35, 0x07, 0x1e, 0x14, 0x00, 0xd3, 0xe0, 0xe3, 0xc5,
-0x79, 0xb4, 0x1f, 0xaf, 0x7d, 0xb5, 0x19, 0xc5, 0xc9, 0xda, 0x06, 0xf3, 0x10, 0x0a, 0x93, 0x1e,
-0x0b, 0x2f, 0xb7, 0x3a, 0x3f, 0x41, 0x59, 0x41, 0x91, 0x39, 0xb1, 0x29, 0x26, 0x13, 0xf4, 0xf8,
-0xbf, 0xdf, 0x33, 0xcc, 0xb9, 0xc1, 0xe1, 0xc0, 0x69, 0xc8, 0xc7, 0xd5, 0x14, 0xe6, 0x1a, 0xf7,
-0x12, 0x07, 0xf8, 0x14, 0x37, 0x20, 0x5d, 0x28, 0xd5, 0x2c, 0x27, 0x2d, 0xdf, 0x27, 0xff, 0x1c,
-0x9a, 0x0d, 0xbe, 0xfb, 0xdc, 0xea, 0x41, 0xde, 0x87, 0xd7, 0x43, 0xd7, 0x2b, 0xdc, 0x60, 0xe4,
-0x2e, 0xee, 0x14, 0xf8, 0x62, 0x01, 0x4c, 0x09, 0x98, 0x0f, 0x5e, 0x14, 0xba, 0x17, 0x2e, 0x19,
-0x36, 0x18, 0x4a, 0x14, 0x8a, 0x0d, 0x06, 0x05, 0x08, 0xfc, 0x30, 0xf4, 0xe8, 0xee, 0xbc, 0xec,
-0x4c, 0xed, 0xb2, 0xef, 0x20, 0xf3, 0x58, 0xf6, 0xde, 0xf8, 0xb0, 0xfa, 0x42, 0xfc, 0x34, 0xfe,
-0x6c, 0x01, 0x0c, 0x06, 0x62, 0x0b, 0x1c, 0x10, 0x8e, 0x12, 0x44, 0x12, 0x8c, 0x0f, 0x50, 0x0b,
-0x56, 0x06, 0xaa, 0x01, 0xc2, 0xfd, 0x54, 0xfa, 0x9c, 0xf6, 0x22, 0xf2, 0x2e, 0xed, 0xb6, 0xe8,
-0x12, 0xe6, 0xd0, 0xe6, 0x66, 0xec, 0xc8, 0xf6, 0x3c, 0x04, 0xa0, 0x11, 0x65, 0x1c, 0xad, 0x22,
-0x0f, 0x24, 0x0d, 0x21, 0x2a, 0x1b, 0xac, 0x13, 0x26, 0x0b, 0x82, 0x01, 0x5e, 0xf6, 0x22, 0xea,
-0xdf, 0xdd, 0xe3, 0xd3, 0x91, 0xce, 0x6f, 0xd0, 0x79, 0xda, 0xb0, 0xeb, 0xfe, 0x00, 0x76, 0x16,
-0x65, 0x28, 0x1f, 0x34, 0xc1, 0x38, 0xd5, 0x36, 0xb5, 0x2f, 0x63, 0x24, 0xb8, 0x15, 0xda, 0x03,
-0xde, 0xef, 0x45, 0xdb, 0x0b, 0xc9, 0x6b, 0xbc, 0x2b, 0xb8, 0x31, 0xbe, 0x59, 0xce, 0x68, 0xe6,
-0x82, 0x02, 0x13, 0x1e, 0xdb, 0x34, 0x95, 0x44, 0xa5, 0x4b, 0x33, 0x4a, 0x01, 0x41, 0x15, 0x31,
-0x44, 0x1b, 0x2c, 0x01, 0x24, 0xe5, 0x6b, 0xca, 0x2b, 0xb5, 0xc6, 0xa8, 0xb2, 0xa7, 0x8b, 0xb2,
-0x3f, 0xc8, 0x04, 0xe6, 0xae, 0x07, 0x0d, 0x28, 0xf1, 0x42, 0xe8, 0x54, 0x72, 0x5c, 0x34, 0x59,
-0xaf, 0x4b, 0x39, 0x35, 0x06, 0x18, 0x44, 0xf7, 0x67, 0xd6, 0xdf, 0xb9, 0x7a, 0xa5, 0x44, 0x9c,
-0x50, 0x9f, 0x5f, 0xae, 0x05, 0xc8, 0x94, 0xe9, 0xbc, 0x0e, 0x6f, 0x32, 0xf7, 0x4f, 0x6a, 0x63,
-0x5a, 0x6a, 0xdc, 0x63, 0x9f, 0x50, 0x11, 0x33, 0x44, 0x0f, 0xa6, 0xe9, 0x1f, 0xc7, 0xd3, 0xab,
-0xe8, 0x9a, 0xac, 0x95, 0x66, 0x9c, 0xa7, 0xae, 0x19, 0xcb, 0x4c, 0xef, 0xf4, 0x16, 0xc3, 0x3c,
-0x6c, 0x5b, 0x66, 0x6e, 0x4a, 0x72, 0x60, 0x66, 0xb3, 0x4c, 0xb5, 0x29, 0xc0, 0x02, 0xef, 0xdc,
-0xbb, 0xbc, 0x4e, 0xa5, 0x4e, 0x98, 0x4c, 0x96, 0x48, 0x9f, 0x0f, 0xb3, 0x1d, 0xd1, 0xc6, 0xf6,
-0x99, 0x1f, 0xd3, 0x45, 0x82, 0x63, 0x8a, 0x73, 0xcc, 0x72, 0xc8, 0x61, 0x27, 0x44, 0x91, 0x1f,
-0x88, 0xf9, 0x7b, 0xd6, 0xa7, 0xb9, 0x86, 0xa5, 0x26, 0x9b, 0x00, 0x9b, 0x70, 0xa5, 0xb5, 0xba,
-0xe9, 0xd9, 0x24, 0x00, 0x63, 0x28, 0x75, 0x4c, 0x4c, 0x66, 0x28, 0x71, 0x70, 0x6b, 0xec, 0x56,
-0x8d, 0x38, 0x8c, 0x15, 0x94, 0xf2, 0x37, 0xd3, 0x1f, 0xba, 0x4a, 0xa9, 0xb0, 0xa1, 0xee, 0xa3,
-0x57, 0xb0, 0xf3, 0xc6, 0x2a, 0xe6, 0x88, 0x0a, 0xcb, 0x2e, 0x3d, 0x4d, 0xa8, 0x60, 0x02, 0x66,
-0x14, 0x5d, 0x9d, 0x48, 0xdf, 0x2c, 0x28, 0x0e, 0x10, 0xf0, 0x6f, 0xd5, 0xab, 0xc0, 0x3d, 0xb3,
-0x4f, 0xae, 0x47, 0xb2, 0x7b, 0xbf, 0x4f, 0xd5, 0xa2, 0xf1, 0xca, 0x10, 0x45, 0x2e, 0x97, 0x45,
-0x17, 0x53, 0x10, 0x55, 0xb5, 0x4b, 0x7b, 0x39, 0xa9, 0x21, 0xc6, 0x07, 0xd2, 0xee, 0x6b, 0xd9,
-0x85, 0xc9, 0x83, 0xc0, 0xf3, 0xbe, 0xed, 0xc4, 0xed, 0xd1, 0x84, 0xe4, 0xca, 0xfa, 0xda, 0x11,
-0xef, 0x26, 0x1f, 0x37, 0x35, 0x40, 0xd7, 0x40, 0x3f, 0x39, 0xc1, 0x2a, 0xf4, 0x17, 0xc6, 0x03,
-0xd0, 0xf0, 0x6d, 0xe1, 0x01, 0xd7, 0x73, 0xd2, 0x79, 0xd3, 0x8f, 0xd9, 0x79, 0xe3, 0xee, 0xef,
-0xa4, 0xfd, 0x84, 0x0b, 0x62, 0x18, 0xcf, 0x22, 0x6d, 0x29, 0xc1, 0x2a, 0x67, 0x26, 0x11, 0x1d,
-0x8c, 0x10, 0x2a, 0x03, 0x4e, 0xf7, 0x7e, 0xee, 0x9e, 0xe9, 0x8e, 0xe8, 0x50, 0xea, 0x7a, 0xed,
-0x1a, 0xf1, 0xbe, 0xf4, 0xda, 0xf8, 0x22, 0xfe, 0xa2, 0x04, 0xd8, 0x0b, 0x1e, 0x12, 0xf6, 0x15,
-0xf4, 0x15, 0x76, 0x12, 0xce, 0x0c, 0xfc, 0x06, 0xb4, 0x02, 0x8e, 0x00, 0x4a, 0x00, 0xc4, 0x00,
-0x70, 0x00, 0x0e, 0xfe, 0xb6, 0xf9, 0x48, 0xf4, 0xb0, 0xef, 0xc0, 0xed, 0x48, 0xef, 0xdc, 0xf3,
-0x46, 0xfa, 0xa4, 0x00, 0xb8, 0x05, 0x50, 0x09, 0x2e, 0x0c, 0x4c, 0x0f, 0xea, 0x12, 0x82, 0x16,
-0xa0, 0x18, 0xda, 0x17, 0xd8, 0x12, 0x8c, 0x09, 0x18, 0xfd, 0x9c, 0xef, 0xd2, 0xe3, 0xf3, 0xdb,
-0x77, 0xd9, 0x87, 0xdc, 0x1a, 0xe4, 0x84, 0xee, 0x60, 0xfa, 0x98, 0x06, 0xd0, 0x12, 0x41, 0x1e,
-0xd7, 0x27, 0xed, 0x2d, 0x19, 0x2f, 0x59, 0x2a, 0x8f, 0x1f, 0x98, 0x0f, 0x3a, 0xfc, 0x30, 0xe8,
-0x4d, 0xd6, 0x8d, 0xc9, 0xb9, 0xc3, 0xed, 0xc5, 0xc5, 0xcf, 0xcf, 0xdf, 0xba, 0xf3, 0x3c, 0x09,
-0x1f, 0x1e, 0x0d, 0x30, 0xf1, 0x3c, 0xff, 0x42, 0x9b, 0x41, 0x8d, 0x38, 0x71, 0x28, 0x86, 0x12,
-0xfe, 0xf8, 0xa1, 0xde, 0x17, 0xc7, 0xcf, 0xb5, 0x0d, 0xae, 0x9f, 0xb1, 0x33, 0xc0, 0xb9, 0xd7,
-0x7e, 0xf4, 0x40, 0x12, 0x07, 0x2d, 0xf5, 0x41, 0xdf, 0x4e, 0x49, 0x53, 0x8f, 0x4e, 0x5d, 0x41,
-0xb3, 0x2c, 0xe6, 0x11, 0x12, 0xf3, 0x8b, 0xd3, 0x93, 0xb7, 0x00, 0xa4, 0xee, 0x9c, 0xfa, 0xa3,
-0xcd, 0xb8, 0xbb, 0xd7, 0x5c, 0xfb, 0xdd, 0x1d, 0x0b, 0x3b, 0x31, 0x50, 0xfa, 0x5b, 0xf6, 0x5d,
-0x30, 0x56, 0x83, 0x45, 0xdd, 0x2c, 0x90, 0x0d, 0xfe, 0xe9, 0x4d, 0xc6, 0x10, 0xa8, 0xac, 0x94,
-0x7a, 0x90, 0xd6, 0x9c, 0xe1, 0xb7, 0x9d, 0xdc, 0x44, 0x04, 0xe1, 0x28, 0x8f, 0x46, 0xde, 0x5a,
-0x0c, 0x65, 0xc6, 0x64, 0x00, 0x5a, 0xbf, 0x45, 0xed, 0x28, 0x38, 0x05, 0x11, 0xde, 0x8d, 0xb8,
-0xc2, 0x9a, 0xb6, 0x8a, 0x8e, 0x8b, 0x80, 0x9d, 0x23, 0xbd, 0xc8, 0xe4, 0x60, 0x0d, 0xb1, 0x31,
-0xfd, 0x4d, 0x82, 0x60, 0x7e, 0x68, 0x84, 0x65, 0xc0, 0x57, 0xf9, 0x3f, 0xc3, 0x1f, 0x5c, 0xf9,
-0x6b, 0xd1, 0x77, 0xad, 0xd2, 0x93, 0xf4, 0x88, 0xfe, 0x8e, 0x9a, 0xa4, 0x25, 0xc6, 0xb4, 0xed,
-0xee, 0x14, 0x45, 0x37, 0x4d, 0x51, 0x7c, 0x61, 0xd8, 0x66, 0xde, 0x60, 0xe7, 0x4f, 0x63, 0x35,
-0x48, 0x13, 0x38, 0xed, 0x17, 0xc8, 0x38, 0xa9, 0x76, 0x95, 0xd2, 0x8f, 0x1a, 0x99, 0x9f, 0xaf,
-0x15, 0xd0, 0x12, 0xf5, 0x48, 0x19, 0x6f, 0x38, 0xab, 0x4f, 0xd8, 0x5c, 0x3a, 0x5f, 0x3e, 0x56,
-0xd7, 0x42, 0x53, 0x27, 0x88, 0x06, 0x86, 0xe4, 0xad, 0xc5, 0xc1, 0xad, 0x90, 0x9f, 0x68, 0x9d,
-0x44, 0xa7, 0x75, 0xbc, 0xa1, 0xd9, 0x9c, 0xfa, 0xf0, 0x1a, 0xa3, 0x36, 0x47, 0x4a, 0x0d, 0x54,
-0xdf, 0x52, 0x2d, 0x47, 0x0b, 0x33, 0x06, 0x19, 0xd8, 0xfc, 0xbb, 0xe1, 0x69, 0xca, 0xd9, 0xb8,
-0xfb, 0xae, 0x2d, 0xae, 0x39, 0xb7, 0x5d, 0xc9, 0x77, 0xe2, 0xfc, 0xfe, 0xb8, 0x1a, 0xb9, 0x31,
-0x9f, 0x40, 0xc5, 0x45, 0x6b, 0x41, 0xb3, 0x34, 0x67, 0x22, 0xa4, 0x0d, 0xda, 0xf8, 0x14, 0xe6,
-0x4f, 0xd6, 0x33, 0xca, 0x21, 0xc3, 0x69, 0xc2, 0xf7, 0xc8, 0x37, 0xd7, 0x1e, 0xeb, 0xae, 0x01,
-0x08, 0x17, 0x6d, 0x27, 0x8f, 0x30, 0xb1, 0x31, 0xb3, 0x2b, 0x07, 0x21, 0x24, 0x14, 0xfc, 0x06,
-0xe8, 0xfa, 0x42, 0xf0, 0xec, 0xe6, 0x21, 0xdf, 0x61, 0xd9, 0xa5, 0xd7, 0x0f, 0xdb, 0xe2, 0xe3,
-0x0a, 0xf1, 0xde, 0xff, 0x60, 0x0d, 0xee, 0x16, 0x26, 0x1b, 0x30, 0x1a, 0x1e, 0x16, 0x4e, 0x10,
-0xc4, 0x0a, 0x2e, 0x06, 0x94, 0x02, 0x3c, 0xff, 0x32, 0xfb, 0x34, 0xf6, 0x00, 0xf1, 0x0c, 0xed,
-0x8e, 0xeb, 0x5c, 0xed, 0xcc, 0xf1, 0x9e, 0xf7, 0xdc, 0xfc, 0x54, 0x00, 0xfa, 0x01, 0x52, 0x02,
-0x76, 0x02, 0x78, 0x03, 0xd4, 0x05, 0x74, 0x09, 0x5e, 0x0d, 0x22, 0x10, 0xa8, 0x10, 0x28, 0x0e,
-0xac, 0x08, 0x4e, 0x01, 0x64, 0xf9, 0x4c, 0xf2, 0x0c, 0xed, 0xb0, 0xe9, 0x16, 0xe8, 0x32, 0xe8,
-0xf4, 0xe9, 0x90, 0xed, 0x4c, 0xf3, 0x20, 0xfb, 0xc8, 0x04, 0xae, 0x0f, 0x3c, 0x1a, 0x9f, 0x22,
-0x0d, 0x27, 0xd7, 0x25, 0x53, 0x1e, 0x5e, 0x11, 0x20, 0x01, 0x3c, 0xf0, 0xc1, 0xe1, 0xfd, 0xd6,
-0x35, 0xd1, 0x89, 0xd0, 0x9b, 0xd4, 0xad, 0xdc, 0x4a, 0xe8, 0xe6, 0xf6, 0xaa, 0x07, 0x7e, 0x19,
-0x01, 0x2a, 0x19, 0x37, 0x7b, 0x3d, 0x0d, 0x3b, 0xcf, 0x2e, 0x92, 0x1a, 0x8a, 0x01, 0x1c, 0xe8,
-0x71, 0xd2, 0x8b, 0xc3, 0x7b, 0xbc, 0x0b, 0xbd, 0x29, 0xc4, 0xa1, 0xd0, 0xcf, 0xe1, 0x7c, 0xf6,
-0xb2, 0x0d, 0xc7, 0x25, 0xaf, 0x3b, 0x4b, 0x4b, 0x91, 0x51, 0x69, 0x4b, 0x41, 0x39, 0x7f, 0x1d,
-0xe6, 0xfc, 0x3b, 0xdd, 0x77, 0xc3, 0x31, 0xb2, 0xbe, 0xaa, 0xc5, 0xac, 0xa3, 0xb6, 0xcd, 0xc7,
-0xc9, 0xde, 0x98, 0xfa, 0x08, 0x19, 0xaf, 0x36, 0x4d, 0x4f, 0x02, 0x5f, 0xc6, 0x61, 0xf8, 0x55,
-0x09, 0x3d, 0xee, 0x1a, 0x84, 0xf5, 0x89, 0xd2, 0xcb, 0xb6, 0x68, 0xa5, 0xfa, 0x9e, 0xec, 0xa2,
-0x07, 0xb0, 0x7d, 0xc5, 0x13, 0xe2, 0x3c, 0x03, 0xa3, 0x25, 0x6b, 0x45, 0xf6, 0x5d, 0xda, 0x6a,
-0x38, 0x69, 0x5a, 0x58, 0x45, 0x3b, 0x36, 0x16, 0x60, 0xee, 0xdd, 0xc9, 0x57, 0xad, 0x90, 0x9b,
-0xc2, 0x95, 0xa0, 0x9b, 0x8f, 0xac, 0x93, 0xc7, 0xd2, 0xe9, 0x86, 0x0f, 0x85, 0x34, 0xcf, 0x53,
-0x40, 0x69, 0x68, 0x71, 0xc6, 0x6a, 0x34, 0x56, 0xa7, 0x36, 0x28, 0x10, 0xc4, 0xe7, 0xf1, 0xc2,
-0x44, 0xa6, 0x4c, 0x95, 0x76, 0x91, 0x0a, 0x9b, 0x03, 0xb1, 0xf9, 0xd0, 0xce, 0xf6, 0x7b, 0x1d,
-0x4d, 0x40, 0x28, 0x5b, 0x36, 0x6b, 0x76, 0x6e, 0x6c, 0x64, 0x73, 0x4e, 0xe3, 0x2e, 0x3e, 0x09,
-0xbd, 0xe1, 0xf1, 0xbd, 0xdc, 0xa2, 0x6e, 0x94, 0x2a, 0x94, 0x16, 0xa2, 0x0f, 0xbc, 0x57, 0xde,
-0xc6, 0x03, 0x4f, 0x27, 0x15, 0x45, 0x38, 0x5a, 0x16, 0x65, 0x1a, 0x65, 0x1c, 0x5a, 0xc9, 0x44,
-0xd9, 0x26, 0xfe, 0x02, 0x8b, 0xdd, 0x0f, 0xbc, 0xdc, 0xa3, 0xfe, 0x98, 0x00, 0x9d, 0x5d, 0xae,
-0x3f, 0xca, 0x8a, 0xeb, 0x4c, 0x0d, 0x0f, 0x2b, 0x75, 0x42, 0x11, 0x52, 0x64, 0x59, 0xca, 0x57,
-0x1b, 0x4d, 0x8d, 0x39, 0xc3, 0x1d, 0xaa, 0xfc, 0x85, 0xda, 0x5d, 0xbd, 0x50, 0xaa, 0x70, 0xa4,
-0x09, 0xac, 0x4f, 0xbf, 0xa3, 0xd9, 0x64, 0xf6, 0x94, 0x11, 0x79, 0x28, 0xef, 0x39, 0x17, 0x45,
-0xa3, 0x49, 0x89, 0x47, 0x0d, 0x3e, 0xab, 0x2c, 0x56, 0x14, 0xd4, 0xf7, 0xbf, 0xdb, 0x07, 0xc5,
-0xb5, 0xb7, 0x15, 0xb6, 0x7f, 0xbf, 0xd5, 0xd0, 0x4a, 0xe6, 0x30, 0xfc, 0x14, 0x10, 0x87, 0x20,
-0x91, 0x2c, 0x39, 0x34, 0x45, 0x37, 0x3d, 0x35, 0x71, 0x2d, 0xbf, 0x1f, 0xf6, 0x0c, 0xbc, 0xf7,
-0x73, 0xe3, 0xdf, 0xd3, 0x09, 0xcc, 0x45, 0xcc, 0xfb, 0xd3, 0x7f, 0xe0, 0x24, 0xef, 0x70, 0xfd,
-0xf2, 0x09, 0xd8, 0x13, 0x40, 0x1b, 0xcd, 0x1f, 0x71, 0x21, 0x8b, 0x20, 0x5f, 0x1c, 0xe0, 0x14,
-0x68, 0x0a, 0x58, 0xfe, 0x9e, 0xf2, 0x8c, 0xe9, 0x62, 0xe4, 0xe8, 0xe3, 0x72, 0xe7, 0x7e, 0xed,
-0x6a, 0xf4, 0x18, 0xfb, 0x90, 0x00, 0x8a, 0x04, 0x38, 0x07, 0x14, 0x09, 0xac, 0x0a, 0x74, 0x0c,
-0x44, 0x0e, 0x38, 0x0f, 0xa0, 0x0e, 0xb0, 0x0b, 0x0a, 0x07, 0x9e, 0x01, 0xce, 0xfc, 0x40, 0xf9,
-0x5c, 0xf7, 0x96, 0xf6, 0x2c, 0xf6, 0x86, 0xf5, 0x20, 0xf4, 0x4e, 0xf2, 0x04, 0xf1, 0x6a, 0xf1,
-0xae, 0xf4, 0x88, 0xfb, 0x2e, 0x05, 0x88, 0x0f, 0x34, 0x18, 0xe5, 0x1c, 0x09, 0x1d, 0x82, 0x19,
-0x90, 0x13, 0x82, 0x0c, 0x2e, 0x05, 0x90, 0xfd, 0x80, 0xf5, 0x06, 0xed, 0x34, 0xe4, 0xad, 0xdc,
-0x89, 0xd8, 0xbd, 0xd9, 0xa1, 0xe1, 0xe6, 0xef, 0x64, 0x02, 0xee, 0x15, 0x55, 0x26, 0x63, 0x30,
-0x6b, 0x33, 0x0b, 0x30, 0xdb, 0x27, 0x55, 0x1c, 0xac, 0x0e, 0x88, 0xff, 0x66, 0xef, 0xdd, 0xde,
-0xd9, 0xcf, 0x33, 0xc5, 0x9f, 0xc1, 0xc7, 0xc6, 0x0d, 0xd5, 0x30, 0xeb, 0xbc, 0x05, 0xd1, 0x1f,
-0x29, 0x35, 0xa9, 0x42, 0x15, 0x47, 0x1f, 0x43, 0x27, 0x38, 0xfd, 0x27, 0xe2, 0x13, 0xec, 0xfc,
-0xb2, 0xe4, 0xdf, 0xcd, 0x45, 0xbb, 0x77, 0xb0, 0xe1, 0xaf, 0x61, 0xba, 0x47, 0xcf, 0x94, 0xeb,
-0x68, 0x0b, 0xef, 0x29, 0xe1, 0x42, 0xb9, 0x52, 0x44, 0x58, 0x3d, 0x53, 0xdb, 0x44, 0xc5, 0x2e,
-0x14, 0x13, 0x5e, 0xf4, 0xc1, 0xd5, 0x35, 0xbb, 0x82, 0xa8, 0x80, 0xa0, 0x82, 0xa4, 0x65, 0xb4,
-0x41, 0xce, 0x44, 0xef, 0xf2, 0x12, 0x91, 0x34, 0xc3, 0x4f, 0x26, 0x61, 0x28, 0x66, 0x62, 0x5e,
-0xd7, 0x4a, 0x17, 0x2e, 0x88, 0x0b, 0x10, 0xe7, 0x87, 0xc5, 0x5f, 0xab, 0xde, 0x9b, 0x2a, 0x98,
-0xb4, 0xa0, 0x6b, 0xb4, 0x9d, 0xd1, 0x04, 0xf5, 0xb0, 0x1a, 0x3f, 0x3e, 0xd4, 0x5a, 0x3a, 0x6c,
-0x44, 0x6f, 0x48, 0x63, 0x05, 0x4a, 0x91, 0x27, 0x7e, 0x00, 0x2d, 0xda, 0x7f, 0xb9, 0x44, 0xa2,
-0x7a, 0x96, 0x66, 0x96, 0xa2, 0xa1, 0x71, 0xb7, 0x1f, 0xd6, 0xae, 0xfa, 0x8d, 0x21, 0x0d, 0x46,
-0xf6, 0x62, 0x12, 0x73, 0xd0, 0x72, 0x1a, 0x62, 0x21, 0x44, 0xf7, 0x1d, 0x7a, 0xf5, 0x35, 0xd0,
-0x99, 0xb2, 0x54, 0x9f, 0x16, 0x97, 0xa0, 0x99, 0xd4, 0xa6, 0x09, 0xbe, 0xc5, 0xdd, 0x56, 0x03,
-0x93, 0x2a, 0x4d, 0x4e, 0x8a, 0x68, 0x06, 0x74, 0x5e, 0x6e, 0xe2, 0x58, 0xe5, 0x37, 0x5e, 0x11,
-0x10, 0xeb, 0xb3, 0xc9, 0xab, 0xb0, 0x8a, 0xa1, 0xc4, 0x9c, 0x22, 0xa2, 0x23, 0xb1, 0x39, 0xc9,
-0xd2, 0xe8, 0x1a, 0x0d, 0x9b, 0x31, 0xfd, 0x50, 0x82, 0x65, 0x76, 0x6b, 0xae, 0x61, 0xb5, 0x4a,
-0x2d, 0x2b, 0x7e, 0x08, 0x72, 0xe7, 0x93, 0xcb, 0x65, 0xb7, 0xfb, 0xab, 0x9e, 0xa9, 0x07, 0xb0,
-0x4b, 0xbf, 0x4f, 0xd6, 0x84, 0xf3, 0xd2, 0x13, 0xef, 0x32, 0xe9, 0x4b, 0x70, 0x5a, 0x08, 0x5c,
-0xd3, 0x50, 0x8b, 0x3b, 0xcd, 0x1f, 0x52, 0x02, 0xac, 0xe6, 0xe5, 0xcf, 0xd5, 0xbf, 0xb5, 0xb7,
-0xc7, 0xb7, 0xf7, 0xbf, 0x5f, 0xcf, 0x9e, 0xe4, 0xbe, 0xfd, 0x70, 0x17, 0xab, 0x2e, 0x03, 0x40,
-0x15, 0x49, 0x79, 0x48, 0x8d, 0x3e, 0x0b, 0x2d, 0x46, 0x17, 0x5a, 0x00, 0x36, 0xeb, 0x1d, 0xda,
-0xc3, 0xce, 0x09, 0xca, 0xd7, 0xcb, 0xb5, 0xd3, 0x61, 0xe0, 0x64, 0xf0, 0x82, 0x01, 0x88, 0x12,
-0x77, 0x21, 0xed, 0x2c, 0x33, 0x33, 0x57, 0x33, 0xfb, 0x2c, 0x0f, 0x21, 0x54, 0x11, 0xa0, 0x00,
-0xbc, 0xf1, 0x74, 0xe6, 0x49, 0xe0, 0x1d, 0xdf, 0x71, 0xe2, 0x92, 0xe8, 0x20, 0xf0, 0xbc, 0xf7,
-0x60, 0xff, 0xc0, 0x06, 0x2e, 0x0e, 0x4c, 0x15, 0xdc, 0x1a, 0x81, 0x1d, 0xfe, 0x1b, 0x7c, 0x16,
-0x34, 0x0e, 0x2e, 0x05, 0x4c, 0xfd, 0x4c, 0xf8, 0x58, 0xf6, 0xcc, 0xf6, 0x36, 0xf8, 0xf2, 0xf8,
-0x86, 0xf8, 0x16, 0xf7, 0x82, 0xf5, 0x80, 0xf5, 0x10, 0xf8, 0x42, 0xfd, 0xce, 0x03, 0xc8, 0x09,
-0xc0, 0x0d, 0x42, 0x0f, 0xb8, 0x0e, 0x88, 0x0d, 0xfa, 0x0c, 0x3a, 0x0d, 0xe6, 0x0d, 0x98, 0x0d,
-0xe2, 0x0a, 0xf4, 0x04, 0x26, 0xfc, 0x0e, 0xf2, 0xf6, 0xe8, 0x03, 0xe3, 0xc5, 0xe1, 0xc4, 0xe5,
-0xa2, 0xed, 0x92, 0xf7, 0xb8, 0x01, 0x10, 0x0b, 0x9e, 0x13, 0x04, 0x1b, 0x0b, 0x21, 0xff, 0x24,
-0xbd, 0x25, 0xeb, 0x21, 0x0a, 0x19, 0x7c, 0x0b, 0xde, 0xfa, 0x7c, 0xe9, 0xd1, 0xd9, 0x25, 0xcf,
-0x29, 0xcb, 0xb7, 0xce, 0xfb, 0xd8, 0x22, 0xe8, 0x20, 0xfa, 0xd4, 0x0c, 0x71, 0x1e, 0x2f, 0x2d,
-0xcb, 0x37, 0x59, 0x3c, 0x65, 0x3a, 0x7d, 0x31, 0x37, 0x22, 0xf2, 0x0d, 0xae, 0xf6, 0x3b, 0xdf,
-0xa9, 0xca, 0x4b, 0xbc, 0x7f, 0xb6, 0xf3, 0xba, 0x0f, 0xc9, 0xff, 0xde, 0x64, 0xf9, 0xb4, 0x14,
-0x6f, 0x2d, 0x8d, 0x40, 0xe1, 0x4b, 0x87, 0x4e, 0x55, 0x48, 0x2b, 0x3a, 0x69, 0x25, 0xe6, 0x0b,
-0xaa, 0xef, 0xa1, 0xd3, 0x37, 0xbb, 0x4e, 0xaa, 0x88, 0xa4, 0x8d, 0xab, 0x69, 0xbf, 0xdd, 0xdc,
-0x7c, 0xff, 0x65, 0x21, 0x01, 0x3e, 0x05, 0x52, 0xfe, 0x5b, 0x5c, 0x5b, 0x03, 0x51, 0xa7, 0x3e,
-0xab, 0x25, 0xf2, 0x07, 0x4a, 0xe7, 0x3b, 0xc7, 0x01, 0xac, 0x62, 0x9a, 0x54, 0x96, 0x1e, 0xa2,
-0xa5, 0xbc, 0x65, 0xe1, 0x9e, 0x09, 0xc1, 0x2e, 0x1b, 0x4c, 0xee, 0x5e, 0x1c, 0x66, 0x56, 0x62,
-0xaf, 0x54, 0xd3, 0x3e, 0x1d, 0x22, 0x4a, 0x00, 0x19, 0xdc, 0xa3, 0xb9, 0x2a, 0x9e, 0xca, 0x8e,
-0x7e, 0x8f, 0x04, 0xa1, 0x23, 0xc1, 0xdc, 0xe9, 0xfc, 0x13, 0x0f, 0x39, 0xd4, 0x54, 0x80, 0x65,
-0x74, 0x6a, 0x38, 0x64, 0xf5, 0x53, 0x3b, 0x3b, 0x7c, 0x1b, 0xca, 0xf6, 0xbb, 0xd0, 0x47, 0xae,
-0x5c, 0x95, 0x50, 0x8a, 0x04, 0x90, 0x3c, 0xa6, 0x47, 0xc9, 0xb8, 0xf2, 0x98, 0x1b, 0x81, 0x3e,
-0xee, 0x57, 0x78, 0x66, 0x44, 0x69, 0xdc, 0x60, 0x29, 0x4e, 0xc9, 0x32, 0xca, 0x10, 0x10, 0xeb,
-0x51, 0xc6, 0x92, 0xa7, 0xc6, 0x93, 0x3c, 0x8e, 0x60, 0x98, 0xc7, 0xb0, 0x95, 0xd3, 0x0a, 0xfb,
-0xdd, 0x20, 0x9d, 0x40, 0x10, 0x57, 0xcc, 0x62, 0xfa, 0x62, 0x08, 0x58, 0x3f, 0x43, 0x89, 0x26,
-0x92, 0x04, 0x27, 0xe1, 0xf5, 0xc0, 0x4a, 0xa8, 0xa0, 0x9a, 0xba, 0x99, 0xc0, 0xa5, 0x7f, 0xbd,
-0x45, 0xdd, 0x74, 0x00, 0x05, 0x22, 0xf3, 0x3d, 0x37, 0x51, 0xe2, 0x59, 0x86, 0x57, 0x6f, 0x4a,
-0xa5, 0x34, 0x6c, 0x18, 0xc0, 0xf9, 0x0b, 0xdc, 0x43, 0xc3, 0xcb, 0xb1, 0x36, 0xa9, 0x7a, 0xaa,
-0xa3, 0xb5, 0xe7, 0xc9, 0xdc, 0xe4, 0x10, 0x03, 0xeb, 0x1f, 0xbb, 0x37, 0x13, 0x47, 0x5b, 0x4c,
-0x67, 0x47, 0x61, 0x39, 0x9f, 0x24, 0x9e, 0x0c, 0x4c, 0xf4, 0xc3, 0xde, 0xa1, 0xcd, 0x0d, 0xc2,
-0x7b, 0xbc, 0xc7, 0xbd, 0x4d, 0xc6, 0x03, 0xd6, 0x8a, 0xeb, 0xc4, 0x03, 0x3a, 0x1b, 0xb7, 0x2d,
-0xc3, 0x38, 0x9d, 0x3a, 0x13, 0x34, 0xdd, 0x26, 0x08, 0x16, 0x4e, 0x04, 0x1e, 0xf4, 0xc6, 0xe6,
-0x85, 0xdc, 0x67, 0xd5, 0x85, 0xd1, 0xb3, 0xd1, 0xd5, 0xd6, 0x59, 0xe1, 0x7c, 0xf0, 0xe2, 0x01,
-0x4c, 0x12, 0x93, 0x1e, 0x99, 0x24, 0x1b, 0x24, 0x3f, 0x1e, 0x4e, 0x15, 0x7a, 0x0b, 0xac, 0x02,
-0x6c, 0xfb, 0xaa, 0xf5, 0xe2, 0xf0, 0xa4, 0xec, 0xf6, 0xe8, 0xa6, 0xe6, 0x06, 0xe7, 0xe8, 0xea,
-0xfc, 0xf1, 0xee, 0xfa, 0x60, 0x03, 0x9e, 0x09, 0x90, 0x0c, 0x78, 0x0c, 0x7a, 0x0a, 0x52, 0x08,
-0x12, 0x07, 0xdc, 0x06, 0x8a, 0x07, 0xe4, 0x07, 0x26, 0x07, 0x40, 0x04, 0x68, 0xff, 0x42, 0xf9,
-0x62, 0xf3, 0x16, 0xef, 0x20, 0xed, 0x60, 0xed, 0x0a, 0xef, 0x86, 0xf1, 0x36, 0xf4, 0x62, 0xf7,
-0x70, 0xfb, 0xc2, 0x00, 0x60, 0x07, 0xc0, 0x0e, 0xbe, 0x15, 0x0e, 0x1b, 0x53, 0x1d, 0x62, 0x1b,
-0xa2, 0x14, 0xd2, 0x09, 0x7c, 0xfc, 0x10, 0xef, 0x85, 0xe3, 0x8d, 0xdb, 0xe7, 0xd7, 0xa1, 0xd8,
-0x63, 0xdd, 0x50, 0xe5, 0xf4, 0xef, 0x6c, 0xfc, 0x58, 0x0a, 0x64, 0x18, 0x45, 0x25, 0x01, 0x2f,
-0x7f, 0x33, 0x09, 0x31, 0x8d, 0x26, 0x08, 0x15, 0xd2, 0xfe, 0xe8, 0xe7, 0x17, 0xd4, 0x8d, 0xc6,
-0xc7, 0xc0, 0xb5, 0xc2, 0x3d, 0xcb, 0xa1, 0xd8, 0x98, 0xe9, 0xbe, 0xfc, 0x14, 0x11, 0x0b, 0x25,
-0xc3, 0x36, 0x73, 0x43, 0x37, 0x48, 0xcb, 0x42, 0x79, 0x32, 0xf4, 0x18, 0x42, 0xfa, 0xf1, 0xdb,
-0x41, 0xc3, 0xa3, 0xb3, 0x43, 0xae, 0x6d, 0xb2, 0x5f, 0xbe, 0x69, 0xd0, 0xa8, 0xe6, 0xd6, 0xff,
-0xfc, 0x19, 0x4d, 0x33, 0xa3, 0x48, 0x9a, 0x56, 0x7e, 0x59, 0x43, 0x4f, 0x1b, 0x38, 0x22, 0x17,
-0xd8, 0xf1, 0xab, 0xce, 0x8f, 0xb3, 0x7a, 0xa3, 0x62, 0x9f, 0xf0, 0xa5, 0x93, 0xb5, 0x4f, 0xcc,
-0x40, 0xe8, 0x24, 0x07, 0x67, 0x26, 0x37, 0x43, 0x70, 0x59, 0x32, 0x65, 0x30, 0x63, 0xb9, 0x52,
-0xc1, 0x35, 0x72, 0x10, 0xb8, 0xe8, 0x95, 0xc4, 0x5c, 0xa9, 0xd6, 0x99, 0xba, 0x96, 0x28, 0x9f,
-0xd1, 0xb1, 0xf5, 0xcc, 0x06, 0xee, 0xd8, 0x11, 0xb5, 0x34, 0xa3, 0x52, 0x2c, 0x67, 0xb2, 0x6e,
-0x5a, 0x67, 0xdf, 0x51, 0x57, 0x31, 0x06, 0x0a, 0x45, 0xe1, 0xab, 0xbc, 0x6e, 0xa1, 0xac, 0x92,
-0x44, 0x91, 0xbe, 0x9c, 0x5d, 0xb3, 0x3f, 0xd3, 0x82, 0xf8, 0x0d, 0x1f, 0x19, 0x42, 0x48, 0x5d,
-0xee, 0x6c, 0xb2, 0x6e, 0x8a, 0x62, 0x29, 0x4a, 0xc9, 0x28, 0xfe, 0x01, 0x95, 0xda, 0xa5, 0xb7,
-0x2a, 0x9e, 0x6c, 0x91, 0x9c, 0x92, 0x88, 0xa1, 0x47, 0xbc, 0x83, 0xdf, 0x54, 0x06, 0x87, 0x2b,
-0x83, 0x4a, 0xd4, 0x5f, 0x8a, 0x69, 0xd6, 0x66, 0xc0, 0x58, 0xc5, 0x40, 0x35, 0x21, 0xd6, 0xfc,
-0x9d, 0xd7, 0xc5, 0xb6, 0x60, 0x9f, 0x18, 0x95, 0x72, 0x99, 0xad, 0xab, 0x09, 0xc9, 0xcc, 0xec,
-0x68, 0x11, 0xaf, 0x31, 0x5d, 0x4a, 0x90, 0x59, 0xce, 0x5e, 0x50, 0x5a, 0x9b, 0x4c, 0xcd, 0x36,
-0xea, 0x19, 0x7c, 0xf8, 0x39, 0xd6, 0xa3, 0xb8, 0xb6, 0xa4, 0x4a, 0x9e, 0x3a, 0xa6, 0xf5, 0xba,
-0x65, 0xd8, 0x34, 0xf9, 0x3c, 0x18, 0xad, 0x31, 0xc1, 0x43, 0xc9, 0x4d, 0x39, 0x50, 0x13, 0x4b,
-0xc9, 0x3e, 0x5f, 0x2b, 0xdc, 0x11, 0x70, 0xf4, 0x17, 0xd7, 0xb5, 0xbe, 0x15, 0xb0, 0xdf, 0xad,
-0x2f, 0xb8, 0x57, 0xcc, 0xd6, 0xe5, 0x30, 0x00, 0x8a, 0x17, 0xd1, 0x29, 0x25, 0x36, 0xa7, 0x3c,
-0x9b, 0x3d, 0x3d, 0x39, 0x53, 0x2f, 0xd7, 0x1f, 0x82, 0x0b, 0x6c, 0xf4, 0xeb, 0xdd, 0x35, 0xcc,
-0xbb, 0xc2, 0x3b, 0xc3, 0xdd, 0xcc, 0xcb, 0xdc, 0x8e, 0xef, 0xd4, 0x01, 0x6c, 0x11, 0x25, 0x1d,
-0xcb, 0x24, 0xa5, 0x28, 0x0f, 0x29, 0xf5, 0x25, 0x6f, 0x1f, 0x4e, 0x15, 0x06, 0x08, 0x06, 0xf9,
-0x78, 0xea, 0x33, 0xdf, 0x7d, 0xd9, 0x15, 0xda, 0x29, 0xe0, 0xe0, 0xe9, 0xcc, 0xf4, 0x26, 0xff,
-0xa4, 0x07, 0xa4, 0x0d, 0x56, 0x11, 0x1c, 0x13, 0x62, 0x13, 0xae, 0x12, 0x08, 0x11, 0x42, 0x0e,
-0x1c, 0x0a, 0x76, 0x04, 0xe2, 0xfd, 0x9a, 0xf7, 0xe6, 0xf2, 0x92, 0xf0, 0xba, 0xf0, 0x94, 0xf2,
-0x68, 0xf5, 0x08, 0xf8, 0xf8, 0xf9, 0xe0, 0xfa, 0x44, 0xfb, 0xd8, 0xfb, 0xb2, 0xfd, 0x5e, 0x01,
-0x20, 0x07, 0xb6, 0x0d, 0x30, 0x13, 0xe8, 0x15, 0xda, 0x14, 0x8a, 0x10, 0x50, 0x0a, 0x82, 0x03,
-0x3e, 0xfd, 0xe8, 0xf7, 0x04, 0xf3, 0x5e, 0xee, 0xd4, 0xe9, 0xd4, 0xe5, 0x9d, 0xe3, 0xa4, 0xe4,
-0x20, 0xea, 0xd0, 0xf4, 0x92, 0x03, 0xc2, 0x13, 0xd9, 0x21, 0x8f, 0x2a, 0x79, 0x2c, 0xf9, 0x27,
-0xc5, 0x1e, 0xf6, 0x12, 0x66, 0x06, 0xb8, 0xf9, 0x5e, 0xed, 0x5d, 0xe1, 0xa1, 0xd6, 0xc1, 0xce,
-0xd5, 0xcb, 0xd3, 0xcf, 0xb7, 0xdb, 0xde, 0xee, 0x9e, 0x06, 0xd7, 0x1e, 0xab, 0x32, 0xeb, 0x3e,
-0xd9, 0x41, 0x2d, 0x3c, 0xc3, 0x2f, 0x05, 0x1f, 0xf0, 0x0b, 0xd8, 0xf7, 0x79, 0xe3, 0x7b, 0xd0,
-0x39, 0xc1, 0x37, 0xb8, 0xfb, 0xb7, 0xc1, 0xc1, 0x25, 0xd5, 0xfe, 0xef, 0x5e, 0x0e, 0x5f, 0x2b,
-0x9f, 0x42, 0x83, 0x50, 0x93, 0x53, 0x49, 0x4c, 0x67, 0x3c, 0x4d, 0x26, 0x5c, 0x0c, 0x96, 0xf0,
-0x61, 0xd5, 0xb5, 0xbd, 0xeb, 0xac, 0x24, 0xa6, 0xb2, 0xaa, 0xad, 0xba, 0x79, 0xd4, 0xca, 0xf4,
-0x22, 0x17, 0xf1, 0x36, 0xd9, 0x4f, 0xa8, 0x5e, 0x5e, 0x61, 0xd4, 0x57, 0xed, 0x43, 0x11, 0x28,
-0x4e, 0x07, 0x12, 0xe5, 0x63, 0xc5, 0x47, 0xac, 0x74, 0x9d, 0xbc, 0x9a, 0x9e, 0xa4, 0xdb, 0xb9,
-0xdb, 0xd7, 0x34, 0xfb, 0xa7, 0x1f, 0xd9, 0x40, 0xc2, 0x5a, 0xac, 0x69, 0x1c, 0x6b, 0x9a, 0x5e,
-0xb1, 0x45, 0xdf, 0x23, 0x8e, 0xfd, 0x5f, 0xd7, 0xaf, 0xb6, 0xc0, 0x9f, 0xf0, 0x94, 0xea, 0x96,
-0xea, 0xa4, 0x1d, 0xbd, 0x37, 0xdd, 0xb2, 0x01, 0xe7, 0x26, 0xbf, 0x48, 0xd4, 0x62, 0xd6, 0x70,
-0xda, 0x6f, 0x14, 0x5f, 0x41, 0x41, 0xc8, 0x1a, 0x5a, 0xf1, 0x15, 0xcb, 0xe7, 0xac, 0x20, 0x9a,
-0xec, 0x93, 0xa2, 0x99, 0xf0, 0xa9, 0x8f, 0xc3, 0xfc, 0xe3, 0x78, 0x08, 0x85, 0x2d, 0xc3, 0x4e,
-0x9a, 0x67, 0x12, 0x73, 0x2a, 0x6e, 0x1e, 0x59, 0x89, 0x37, 0xf0, 0x0e, 0x04, 0xe6, 0x7b, 0xc2,
-0xb2, 0xa8, 0xd6, 0x9a, 0x92, 0x98, 0x0e, 0xa1, 0xe9, 0xb2, 0xe1, 0xcc, 0xf4, 0xec, 0x80, 0x10,
-0xc3, 0x33, 0x9d, 0x52, 0xa4, 0x67, 0x76, 0x6e, 0x1c, 0x65, 0xf1, 0x4c, 0x8b, 0x2a, 0x1a, 0x04,
-0x55, 0xdf, 0x4b, 0xc1, 0xf5, 0xac, 0x38, 0xa3, 0xa4, 0xa3, 0x3f, 0xad, 0x1f, 0xbf, 0x19, 0xd8,
-0x5a, 0xf6, 0xfa, 0x16, 0x59, 0x36, 0xe5, 0x4f, 0x56, 0x5f, 0x64, 0x61, 0x52, 0x55, 0x83, 0x3d,
-0x41, 0x1e, 0xf8, 0xfc, 0x5b, 0xde, 0x61, 0xc6, 0xc1, 0xb6, 0x5b, 0xb0, 0x79, 0xb2, 0x97, 0xbc,
-0xc1, 0xcd, 0xca, 0xe4, 0x98, 0xff, 0x38, 0x1b, 0x5d, 0x34, 0x6d, 0x47, 0x67, 0x51, 0x3b, 0x50,
-0x4d, 0x44, 0x7b, 0x2f, 0xa8, 0x15, 0xc4, 0xfa, 0x93, 0xe2, 0x0b, 0xd0, 0xaf, 0xc4, 0xe3, 0xc0,
-0x7b, 0xc4, 0x8b, 0xce, 0xd1, 0xdd, 0xbe, 0xf0, 0xdc, 0x04, 0x58, 0x18, 0x45, 0x29, 0xb9, 0x35,
-0x09, 0x3c, 0x23, 0x3b, 0xa5, 0x32, 0x03, 0x24, 0x48, 0x11, 0x6a, 0xfd, 0x6e, 0xeb, 0x9b, 0xdd,
-0x99, 0xd5, 0xc9, 0xd3, 0xcd, 0xd7, 0x55, 0xe0, 0xce, 0xeb, 0x2a, 0xf8, 0x6a, 0x04, 0x5e, 0x0f,
-0xc6, 0x18, 0x0d, 0x20, 0x95, 0x24, 0x61, 0x25, 0xcd, 0x21, 0xca, 0x19, 0x96, 0x0e, 0x5a, 0x02,
-0x3a, 0xf7, 0x54, 0xef, 0x7e, 0xeb, 0xbe, 0xeb, 0xf0, 0xee, 0x64, 0xf3, 0x60, 0xf7, 0x6e, 0xfa,
-0x80, 0xfc, 0xa0, 0xfe, 0xd6, 0x01, 0x64, 0x06, 0xe0, 0x0b, 0xc4, 0x10, 0x50, 0x13, 0xce, 0x12,
-0xa4, 0x0f, 0x00, 0x0b, 0xee, 0x06, 0x46, 0x04, 0x72, 0x03, 0x8c, 0x03, 0xf2, 0x02, 0x74, 0x00,
-0xba, 0xfb, 0x52, 0xf5, 0x14, 0xef, 0xec, 0xea, 0x7c, 0xea, 0x9a, 0xee, 0x2c, 0xf6, 0x64, 0xff,
-0x34, 0x08, 0x10, 0x0f, 0xe0, 0x13, 0x28, 0x17, 0x6a, 0x19, 0x10, 0x1b, 0x3c, 0x1b, 0xc2, 0x18,
-0x88, 0x12, 0x52, 0x08, 0xe0, 0xfa, 0x88, 0xec, 0x8b, 0xdf, 0xbb, 0xd6, 0x21, 0xd4, 0x31, 0xd8,
-0x3f, 0xe2, 0x48, 0xf0, 0xe2, 0xff, 0x2a, 0x0f, 0xf1, 0x1c, 0x0d, 0x28, 0xfd, 0x2f, 0x99, 0x33,
-0xc3, 0x31, 0xf5, 0x29, 0x51, 0x1c, 0xca, 0x09, 0xdc, 0xf4, 0xdd, 0xdf, 0x03, 0xce, 0x37, 0xc2,
-0x6b, 0xbe, 0xb5, 0xc3, 0x77, 0xd1, 0xba, 0xe5, 0x90, 0xfd, 0x14, 0x16, 0xef, 0x2b, 0x01, 0x3d,
-0x19, 0x47, 0x13, 0x49, 0x9f, 0x42, 0x5d, 0x34, 0xc5, 0x1f, 0x0a, 0x07, 0x90, 0xec, 0x33, 0xd3,
-0x11, 0xbe, 0x47, 0xb0, 0x6f, 0xac, 0xed, 0xb3, 0x8f, 0xc6, 0xe1, 0xe1, 0x26, 0x02, 0x19, 0x22,
-0x6d, 0x3d, 0x69, 0x50, 0x50, 0x59, 0x82, 0x57, 0xd5, 0x4b, 0x37, 0x38, 0xc5, 0x1e, 0xe8, 0x01,
-0xad, 0xe3, 0x27, 0xc7, 0x91, 0xaf, 0xdc, 0xa0, 0xfe, 0x9d, 0x04, 0xa9, 0x91, 0xc1, 0x4c, 0xe4,
-0x6a, 0x0b, 0x51, 0x30, 0x8b, 0x4d, 0xc2, 0x5f, 0xd0, 0x65, 0xf6, 0x5f, 0x35, 0x50, 0xb3, 0x38,
-0xe8, 0x1b, 0x8c, 0xfb, 0x53, 0xda, 0x2d, 0xbb, 0x8c, 0xa2, 0x8e, 0x94, 0xc8, 0x94, 0x1e, 0xa5,
-0x09, 0xc4, 0xaa, 0xec, 0x86, 0x17, 0xa7, 0x3d, 0x92, 0x59, 0x1e, 0x69, 0xb0, 0x6b, 0x7e, 0x62,
-0xad, 0x4f, 0x83, 0x35, 0xe4, 0x15, 0x06, 0xf3, 0xa3, 0xcf, 0xc3, 0xaf, 0x5e, 0x98, 0xc0, 0x8d,
-0x1a, 0x93, 0x08, 0xa9, 0x97, 0xcc, 0x64, 0xf7, 0x2d, 0x22, 0xe9, 0x45, 0xf4, 0x5e, 0x76, 0x6b,
-0x6a, 0x6b, 0xfe, 0x5f, 0x27, 0x4b, 0xef, 0x2e, 0x52, 0x0d, 0x04, 0xe9, 0x5b, 0xc5, 0x98, 0xa7,
-0x0c, 0x94, 0x9c, 0x8e, 0xf4, 0x98, 0x59, 0xb2, 0xe5, 0xd6, 0x58, 0x00, 0xf3, 0x27, 0x57, 0x48,
-0x78, 0x5e, 0x90, 0x68, 0xa2, 0x66, 0x70, 0x59, 0xe5, 0x42, 0x2b, 0x25, 0xba, 0x02, 0x11, 0xdf,
-0x85, 0xbe, 0x96, 0xa5, 0xea, 0x97, 0xb2, 0x97, 0x2c, 0xa5, 0x0d, 0xbf, 0x65, 0xe1, 0xf2, 0x06,
-0x59, 0x2a, 0xf7, 0x46, 0xce, 0x59, 0x54, 0x61, 0xdc, 0x5c, 0x97, 0x4d, 0x9b, 0x35, 0x82, 0x17,
-0xda, 0xf6, 0x75, 0xd7, 0x25, 0xbd, 0x3c, 0xab, 0xbc, 0xa3, 0xd4, 0xa6, 0xe7, 0xb4, 0x0f, 0xcc,
-0xc2, 0xe9, 0xfe, 0x09, 0x2d, 0x28, 0x4b, 0x40, 0x89, 0x4f, 0xf9, 0x53, 0x33, 0x4d, 0x1b, 0x3d,
-0x91, 0x25, 0x8e, 0x0a, 0x50, 0xef, 0x35, 0xd7, 0xd7, 0xc4, 0xc5, 0xb9, 0x09, 0xb6, 0x13, 0xba,
-0x99, 0xc5, 0xff, 0xd7, 0xce, 0xef, 0xba, 0x09, 0x39, 0x22, 0x8b, 0x35, 0xe5, 0x40, 0x93, 0x42,
-0xf5, 0x3a, 0x97, 0x2b, 0xb4, 0x17, 0x6a, 0x02, 0xc0, 0xee, 0xd1, 0xde, 0x75, 0xd3, 0xf9, 0xcc,
-0xfb, 0xca, 0x85, 0xcd, 0x25, 0xd5, 0xdf, 0xe1, 0x08, 0xf3, 0x58, 0x06, 0xac, 0x18, 0xa7, 0x26,
-0xf7, 0x2d, 0x9f, 0x2d, 0x45, 0x26, 0x7e, 0x1a, 0xa8, 0x0c, 0xaa, 0xff, 0xfc, 0xf4, 0x1c, 0xed,
-0xc0, 0xe7, 0x2e, 0xe4, 0x01, 0xe2, 0x7f, 0xe1, 0x04, 0xe4, 0xe8, 0xe9, 0x70, 0xf3, 0xfe, 0xfe,
-0x0c, 0x0a, 0x94, 0x12, 0xac, 0x16, 0x24, 0x16, 0x1a, 0x12, 0x70, 0x0c, 0xe8, 0x06, 0xde, 0x02,
-0x54, 0x00, 0xbc, 0xfe, 0x3a, 0xfd, 0xda, 0xfa, 0x48, 0xf7, 0x32, 0xf3, 0xba, 0xef, 0x2e, 0xee,
-0x32, 0xef, 0x6e, 0xf2, 0xce, 0xf6, 0x1e, 0xfb, 0x94, 0xfe, 0xce, 0x00, 0xb4, 0x02, 0xe6, 0x04,
-0xe8, 0x07, 0xd4, 0x0b, 0xbc, 0x0f, 0xaa, 0x12, 0x9a, 0x13, 0x5c, 0x11, 0xa6, 0x0b, 0xe6, 0x02,
-0x74, 0xf8, 0x26, 0xee, 0x0c, 0xe6, 0x11, 0xe1, 0xd1, 0xdf, 0x09, 0xe2, 0xf8, 0xe6, 0x38, 0xee,
-0xfe, 0xf6, 0x06, 0x01, 0x84, 0x0b, 0x26, 0x16, 0x91, 0x1f, 0x9d, 0x26, 0x95, 0x29, 0xe7, 0x26,
-0x05, 0x1e, 0x46, 0x0f, 0x8c, 0xfc, 0xd4, 0xe8, 0xbb, 0xd7, 0x13, 0xcc, 0x99, 0xc7, 0x45, 0xca,
-0xdb, 0xd2, 0xf1, 0xdf, 0xde, 0xef, 0x30, 0x01, 0xd6, 0x12, 0x67, 0x23, 0xaf, 0x31, 0x97, 0x3b,
-0x21, 0x3f, 0x03, 0x3a, 0xb5, 0x2b, 0x14, 0x15, 0x3e, 0xf9, 0xf7, 0xdc, 0x41, 0xc5, 0x53, 0xb6,
-0xd3, 0xb1, 0x77, 0xb7, 0xd5, 0xc4, 0xd5, 0xd7, 0xf0, 0xed, 0x6c, 0x05, 0x99, 0x1c, 0x05, 0x32,
-0x7b, 0x43, 0x9d, 0x4e, 0x85, 0x50, 0x03, 0x47, 0x1b, 0x32, 0xb8, 0x13, 0x86, 0xf0, 0x6f, 0xce,
-0x99, 0xb3, 0xf2, 0xa3, 0x2a, 0xa1, 0xc0, 0xa9, 0x39, 0xbb, 0x19, 0xd3, 0xbe, 0xee, 0x02, 0x0c,
-0xa3, 0x28, 0x07, 0x42, 0x4c, 0x55, 0x4c, 0x5f, 0x0e, 0x5d, 0x51, 0x4d, 0x75, 0x31, 0xe4, 0x0c,
-0x4a, 0xe5, 0x43, 0xc1, 0x3e, 0xa6, 0x2c, 0x98, 0x9a, 0x97, 0x22, 0xa3, 0x43, 0xb8, 0x73, 0xd4,
-0x7e, 0xf4, 0xbe, 0x15, 0x49, 0x35, 0xdf, 0x4f, 0x62, 0x62, 0xfa, 0x68, 0xa4, 0x61, 0x79, 0x4c,
-0x19, 0x2c, 0x90, 0x04, 0xc3, 0xdb, 0x6b, 0xb7, 0x18, 0x9d, 0x40, 0x90, 0x30, 0x91, 0x14, 0x9f,
-0x7f, 0xb7, 0xb5, 0xd7, 0x06, 0xfc, 0xf1, 0x20, 0x39, 0x42, 0x4a, 0x5c, 0x74, 0x6b, 0xdc, 0x6c,
-0x34, 0x60, 0xcf, 0x46, 0x33, 0x24, 0x68, 0xfc, 0x7b, 0xd4, 0xe1, 0xb1, 0x80, 0x99, 0x6c, 0x8e,
-0x9a, 0x91, 0x2a, 0xa2, 0xe9, 0xbd, 0x91, 0xe1, 0x8a, 0x08, 0xd3, 0x2d, 0x25, 0x4d, 0x6e, 0x62,
-0x80, 0x6b, 0x5a, 0x67, 0xbc, 0x56, 0x4b, 0x3c, 0xa2, 0x1a, 0x36, 0xf5, 0x29, 0xd0, 0x5b, 0xb0,
-0x3c, 0x9a, 0x76, 0x91, 0xf4, 0x96, 0x36, 0xaa, 0xf1, 0xc8, 0x24, 0xee, 0x8a, 0x14, 0xed, 0x36,
-0xeb, 0x50, 0x4e, 0x60, 0x22, 0x64, 0x7a, 0x5c, 0x45, 0x4b, 0x75, 0x32, 0xb8, 0x13, 0xbc, 0xf1,
-0x07, 0xd0, 0xff, 0xb2, 0xb6, 0x9f, 0x66, 0x99, 0x6c, 0xa1, 0x13, 0xb7, 0x79, 0xd6, 0x48, 0xfa,
-0xc9, 0x1c, 0x0d, 0x39, 0x8d, 0x4c, 0x3e, 0x56, 0x52, 0x56, 0xb9, 0x4d, 0x11, 0x3e, 0x0f, 0x28,
-0x46, 0x0d, 0x60, 0xef, 0xb9, 0xd1, 0x09, 0xb9, 0xc4, 0xa9, 0x24, 0xa7, 0xbb, 0xb1, 0xd7, 0xc7,
-0xe8, 0xe4, 0xa4, 0x03, 0xd9, 0x1e, 0xa9, 0x33, 0xa9, 0x40, 0xff, 0x45, 0x59, 0x44, 0x9f, 0x3c,
-0x8d, 0x2f, 0xe3, 0x1d, 0xf0, 0x07, 0x90, 0xef, 0xf1, 0xd7, 0x1d, 0xc5, 0xe9, 0xba, 0x51, 0xbb,
-0x5b, 0xc6, 0x4b, 0xd9, 0x62, 0xf0, 0xc8, 0x06, 0xd2, 0x19, 0x57, 0x27, 0x4d, 0x2f, 0x0d, 0x32,
-0x2d, 0x30, 0x65, 0x2a, 0x1f, 0x21, 0x88, 0x14, 0xe8, 0x04, 0xe8, 0xf3, 0x75, 0xe3, 0xd5, 0xd6,
-0x71, 0xd0, 0x81, 0xd1, 0x7f, 0xd9, 0xa0, 0xe6, 0x9a, 0xf5, 0xde, 0x03, 0x52, 0x0f, 0x20, 0x17,
-0x6c, 0x1b, 0xb3, 0x1c, 0x82, 0x1b, 0x60, 0x18, 0xc6, 0x13, 0x9e, 0x0d, 0x1e, 0x06, 0x72, 0xfd,
-0xca, 0xf4, 0x88, 0xed, 0xec, 0xe8, 0xe2, 0xe7, 0x86, 0xea, 0xdc, 0xef, 0x6a, 0xf6, 0xa0, 0xfc,
-0x58, 0x01, 0x30, 0x04, 0x7a, 0x05, 0xb8, 0x05, 0xd2, 0x05, 0xcc, 0x06, 0xd2, 0x08, 0x64, 0x0b,
-0x78, 0x0d, 0xda, 0x0d, 0xa2, 0x0b, 0x1e, 0x07, 0x6e, 0x01, 0xcc, 0xfb, 0x64, 0xf7, 0x6a, 0xf4,
-0x94, 0xf2, 0x4e, 0xf1, 0xf2, 0xef, 0x8a, 0xee, 0xd6, 0xed, 0xca, 0xee, 0x6c, 0xf2, 0xb6, 0xf9,
-0x36, 0x04, 0x66, 0x10, 0x88, 0x1b, 0x99, 0x22, 0xe3, 0x23, 0x73, 0x1f, 0x78, 0x16, 0x20, 0x0b,
-0x92, 0xff, 0xe6, 0xf4, 0x84, 0xeb, 0x61, 0xe3, 0xaf, 0xdc, 0x13, 0xd8, 0xc3, 0xd6, 0x25, 0xda,
-0x7d, 0xe3, 0xf2, 0xf2, 0xac, 0x06, 0x80, 0x1b, 0x47, 0x2d, 0x8f, 0x38, 0x11, 0x3b, 0xeb, 0x34,
-0xfd, 0x27, 0x04, 0x17, 0x96, 0x04, 0x68, 0xf2, 0xc1, 0xe1, 0x53, 0xd3, 0x3f, 0xc8, 0xd9, 0xc1,
-0x09, 0xc2, 0x2f, 0xca, 0xe5, 0xda, 0x9e, 0xf2, 0x36, 0x0e, 0x43, 0x29, 0x37, 0x3f, 0x17, 0x4c,
-0x3b, 0x4e, 0xe7, 0x45, 0xdf, 0x34, 0x7b, 0x1e, 0x7e, 0x05, 0x50, 0xec, 0xbf, 0xd4, 0x17, 0xc1,
-0x41, 0xb3, 0xcd, 0xad, 0x2d, 0xb2, 0x07, 0xc1, 0x65, 0xd9, 0x34, 0xf8, 0x1e, 0x19, 0x7d, 0x37,
-0xf1, 0x4e, 0x0e, 0x5c, 0x26, 0x5d, 0x1f, 0x52, 0x31, 0x3d, 0x7b, 0x21, 0x40, 0x02, 0x59, 0xe2,
-0x67, 0xc5, 0xa7, 0xae, 0x8a, 0xa1, 0xb4, 0x9f, 0xcc, 0xa9, 0x07, 0xbf, 0xeb, 0xdc, 0xb0, 0xff,
-0xdf, 0x22, 0x81, 0x42, 0x5c, 0x5a, 0x6c, 0x67, 0x36, 0x67, 0xb6, 0x59, 0xc5, 0x40, 0xb9, 0x1f,
-0x72, 0xfa, 0x6b, 0xd5, 0xa1, 0xb5, 0x8a, 0x9f, 0xc4, 0x95, 0x06, 0x99, 0x88, 0xa8, 0x39, 0xc2,
-0x1d, 0xe3, 0x7e, 0x07, 0x6d, 0x2b, 0x01, 0x4b, 0xd6, 0x62, 0x1a, 0x6f, 0x2c, 0x6d, 0x52, 0x5c,
-0xa9, 0x3e, 0x4a, 0x18, 0x78, 0xee, 0x41, 0xc7, 0x44, 0xa8, 0xc8, 0x95, 0x1c, 0x91, 0x84, 0x99,
-0xe9, 0xac, 0x0f, 0xc9, 0x02, 0xeb, 0x38, 0x0f, 0x65, 0x32, 0x2d, 0x51, 0xa2, 0x67, 0xbe, 0x71,
-0x92, 0x6c, 0xbc, 0x57, 0xfd, 0x35, 0x84, 0x0c, 0xd9, 0xe1, 0x97, 0xbc, 0x06, 0xa2, 0xc8, 0x94,
-0xe8, 0x94, 0x90, 0xa0, 0xad, 0xb5, 0xf5, 0xd1, 0xc6, 0xf2, 0x8e, 0x15, 0x27, 0x37, 0xfb, 0x53,
-0xea, 0x67, 0xde, 0x6e, 0xf4, 0x65, 0xb3, 0x4d, 0xff, 0x29, 0xc4, 0x00, 0xf1, 0xd8, 0x7d, 0xb8,
-0x56, 0xa3, 0xd6, 0x9a, 0x42, 0x9e, 0x8b, 0xab, 0xb9, 0xc0, 0xeb, 0xdb, 0xea, 0xfa, 0x24, 0x1b,
-0xa1, 0x39, 0xdb, 0x52, 0x78, 0x62, 0xca, 0x64, 0x7c, 0x58, 0x39, 0x3f, 0x1d, 0x1d, 0x26, 0xf8,
-0x3d, 0xd6, 0x19, 0xbc, 0x7b, 0xac, 0xd4, 0xa7, 0xff, 0xac, 0x53, 0xba, 0x4d, 0xce, 0xf8, 0xe6,
-0x70, 0x02, 0x6d, 0x1e, 0x05, 0x38, 0x77, 0x4b, 0xb4, 0x55, 0x9b, 0x54, 0xa3, 0x47, 0xab, 0x30,
-0xa4, 0x13, 0x48, 0xf5, 0x15, 0xda, 0xc7, 0xc5, 0x13, 0xba, 0x79, 0xb7, 0x25, 0xbd, 0xb9, 0xc9,
-0x81, 0xdb, 0xf4, 0xf0, 0xba, 0x07, 0x87, 0x1d, 0x05, 0x30, 0xe3, 0x3c, 0x63, 0x42, 0x8f, 0x3f,
-0xbf, 0x34, 0x21, 0x23, 0x86, 0x0d, 0x3a, 0xf7, 0x95, 0xe3, 0xf3, 0xd4, 0x1d, 0xcd, 0x25, 0xcc,
-0x95, 0xd1, 0x21, 0xdc, 0x0e, 0xea, 0x68, 0xf9, 0x92, 0x08, 0x4e, 0x16, 0x61, 0x21, 0x05, 0x29,
-0x8f, 0x2c, 0x99, 0x2b, 0x81, 0x25, 0xaa, 0x1a, 0x56, 0x0c, 0x10, 0xfd, 0x76, 0xef, 0xce, 0xe5,
-0x2f, 0xe1, 0xb7, 0xe1, 0x80, 0xe6, 0xb2, 0xed, 0x98, 0xf5, 0xe6, 0xfc, 0xe2, 0x02, 0x82, 0x07,
-0x92, 0x0b, 0x96, 0x0f, 0x8e, 0x13, 0x78, 0x16, 0x16, 0x17, 0x86, 0x14, 0xe6, 0x0e, 0xac, 0x07,
-0xac, 0x00, 0x90, 0xfb, 0x2e, 0xf9, 0x2c, 0xf9, 0x2a, 0xfa, 0xfa, 0xfa, 0x82, 0xfa, 0x5e, 0xf8,
-0x70, 0xf5, 0x64, 0xf3, 0xc8, 0xf3, 0x5c, 0xf7, 0x00, 0xfe, 0x0a, 0x06, 0x62, 0x0d, 0x64, 0x12,
-0x9a, 0x14, 0x7c, 0x14, 0x4a, 0x13, 0xea, 0x11, 0x72, 0x10, 0x40, 0x0e, 0x28, 0x0a, 0x42, 0x03,
-0xc8, 0xf9, 0x44, 0xef, 0x78, 0xe5, 0xa7, 0xde, 0xe7, 0xdc, 0x19, 0xe1, 0x8a, 0xea, 0x78, 0xf7,
-0x78, 0x05, 0x50, 0x12, 0xb9, 0x1c, 0x1f, 0x24, 0x67, 0x28, 0x79, 0x29, 0x17, 0x27, 0x53, 0x20,
-0xd0, 0x14, 0x50, 0x05, 0x92, 0xf3, 0xeb, 0xe1, 0xff, 0xd2, 0x63, 0xc9, 0xf9, 0xc6, 0xd1, 0xcc,
-0x41, 0xda, 0x6a, 0xed, 0x3e, 0x03, 0xd2, 0x18, 0x3d, 0x2b, 0xaf, 0x38, 0xe1, 0x3f, 0x27, 0x40,
-0x2f, 0x39, 0x71, 0x2b, 0x18, 0x18, 0x0a, 0x01, 0x16, 0xe9, 0xff, 0xd2, 0x7d, 0xc1, 0x99, 0xb6,
-0xab, 0xb4, 0xc1, 0xbc, 0xb3, 0xce, 0x2c, 0xe8, 0xbe, 0x05, 0xe9, 0x22, 0x9d, 0x3b, 0x9f, 0x4c,
-0xe1, 0x53, 0xf7, 0x50, 0x9d, 0x44, 0xad, 0x30, 0x46, 0x17, 0x62, 0xfb, 0x95, 0xdf, 0x91, 0xc6,
-0xe1, 0xb2, 0x64, 0xa7, 0x4a, 0xa6, 0x3f, 0xb1, 0x2f, 0xc8, 0x82, 0xe8, 0x40, 0x0d, 0x8f, 0x30,
-0x01, 0x4d, 0x98, 0x5e, 0xa2, 0x63, 0x3c, 0x5c, 0x7f, 0x4a, 0x5b, 0x31, 0xf4, 0x13, 0x7e, 0xf4,
-0xa3, 0xd5, 0x51, 0xba, 0xa2, 0xa5, 0x86, 0x9a, 0xe0, 0x9b, 0x73, 0xab, 0x6f, 0xc8, 0x3e, 0xef,
-0x62, 0x19, 0xb1, 0x3f, 0x36, 0x5c, 0x7c, 0x6b, 0x5e, 0x6c, 0x5c, 0x60, 0xa3, 0x4a, 0x61, 0x2e,
-0x4a, 0x0e, 0xb2, 0xec, 0x31, 0xcc, 0xe1, 0xaf, 0xb0, 0x9b, 0x10, 0x93, 0x8e, 0x98, 0x49, 0xad,
-0xb1, 0xcf, 0x80, 0xfa, 0x31, 0x26, 0x77, 0x4b, 0xfc, 0x64, 0x5c, 0x70, 0xb8, 0x6d, 0xe2, 0x5e,
-0xcf, 0x46, 0xcb, 0x28, 0x46, 0x07, 0x5e, 0xe4, 0x21, 0xc3, 0xba, 0xa7, 0x08, 0x96, 0x64, 0x91,
-0xde, 0x9b, 0x57, 0xb5, 0x9d, 0xda, 0xaa, 0x05, 0x1f, 0x2f, 0x8d, 0x50, 0x36, 0x66, 0x62, 0x6e,
-0x54, 0x69, 0xdc, 0x58, 0xd3, 0x3f, 0xd1, 0x20, 0x70, 0xfe, 0xbd, 0xdb, 0x3b, 0xbc, 0x1a, 0xa4,
-0x14, 0x97, 0xaa, 0x97, 0x58, 0xa6, 0xcb, 0xc1, 0x34, 0xe6, 0xc8, 0x0d, 0x8f, 0x32, 0x89, 0x4f,
-0x7c, 0x61, 0xe2, 0x66, 0x1e, 0x60, 0x9f, 0x4e, 0xe5, 0x34, 0xde, 0x15, 0x94, 0xf4, 0x73, 0xd4,
-0x6f, 0xb9, 0x2e, 0xa7, 0xfe, 0x9f, 0xde, 0xa4, 0x65, 0xb5, 0x77, 0xcf, 0xa6, 0xef, 0x92, 0x11,
-0xa1, 0x30, 0xdd, 0x48, 0x62, 0x57, 0xa8, 0x5a, 0x85, 0x52, 0xc7, 0x40, 0xd5, 0x27, 0xc8, 0x0a,
-0x1a, 0xed, 0xa7, 0xd2, 0x73, 0xbe, 0x93, 0xb2, 0x1b, 0xb0, 0xb1, 0xb6, 0x71, 0xc5, 0xc3, 0xda,
-0x94, 0xf4, 0xda, 0x0f, 0x63, 0x29, 0x9b, 0x3d, 0x3b, 0x49, 0xb1, 0x4a, 0x31, 0x42, 0x47, 0x31,
-0x94, 0x1a, 0xd2, 0x01, 0x98, 0xea, 0x9f, 0xd7, 0xb9, 0xca, 0x61, 0xc4, 0x3f, 0xc4, 0xc5, 0xc9,
-0x75, 0xd4, 0xb9, 0xe3, 0x9a, 0xf6, 0x8c, 0x0b, 0x6b, 0x1f, 0xf9, 0x2e, 0x53, 0x37, 0x25, 0x37,
-0xbb, 0x2e, 0x2f, 0x20, 0x86, 0x0e, 0xd6, 0xfc, 0x0e, 0xee, 0x7d, 0xe3, 0x35, 0xdd, 0x71, 0xda,
-0xa1, 0xda, 0x45, 0xdd, 0x93, 0xe2, 0x12, 0xeb, 0xb0, 0xf6, 0x42, 0x04, 0xb0, 0x11, 0x1a, 0x1c,
-0x3b, 0x21, 0x3f, 0x20, 0x34, 0x1a, 0xd4, 0x10, 0xe8, 0x06, 0x98, 0xfe, 0xec, 0xf8, 0x92, 0xf5,
-0xb6, 0xf3, 0x5e, 0xf2, 0xa0, 0xf0, 0xee, 0xee, 0xf2, 0xed, 0xea, 0xee, 0x5e, 0xf2, 0x36, 0xf8,
-0xfa, 0xfe, 0xfe, 0x04, 0xf4, 0x08, 0x44, 0x0a, 0x84, 0x09, 0x26, 0x08, 0x7c, 0x07, 0xfc, 0x07,
-0x46, 0x09, 0x7a, 0x0a, 0x7a, 0x0a, 0x7c, 0x08, 0x14, 0x04, 0x6c, 0xfd, 0xc6, 0xf5, 0x9c, 0xee,
-0x78, 0xe9, 0x1a, 0xe7, 0xf2, 0xe7, 0x50, 0xeb, 0x64, 0xf0, 0x98, 0xf6, 0x78, 0xfd, 0xe6, 0x04,
-0xa8, 0x0c, 0x7e, 0x14, 0x0c, 0x1b, 0x73, 0x1f, 0xa1, 0x20, 0xbd, 0x1d, 0xfc, 0x15, 0xb8, 0x09,
-0x64, 0xfa, 0x2e, 0xea, 0x29, 0xdc, 0xb9, 0xd2, 0x8f, 0xcf, 0xaf, 0xd2, 0x69, 0xdb, 0xda, 0xe7,
-0x84, 0xf6, 0xd6, 0x05, 0xcc, 0x14, 0x2b, 0x22, 0x11, 0x2d, 0xf9, 0x33, 0x8b, 0x35, 0x79, 0x30,
-0x19, 0x24, 0xb8, 0x10, 0x80, 0xf8, 0x81, 0xdf, 0xf7, 0xc9, 0x1f, 0xbc, 0x0d, 0xb8, 0x1b, 0xbe,
-0xed, 0xcb, 0x3d, 0xdf, 0xee, 0xf4, 0xe4, 0x0a, 0x43, 0x1f, 0x09, 0x31, 0xc5, 0x3e, 0xbd, 0x46,
-0x2b, 0x47, 0x49, 0x3e, 0xc9, 0x2b, 0xc0, 0x10, 0xc8, 0xf0, 0xed, 0xd0, 0x6d, 0xb7, 0x9c, 0xa8,
-0x6e, 0xa6, 0x0b, 0xb0, 0xff, 0xc2, 0xa7, 0xdb, 0xc0, 0xf6, 0xc6, 0x11, 0xb7, 0x2a, 0xf7, 0x3f,
-0xb7, 0x4f, 0xaa, 0x57, 0x42, 0x55, 0x51, 0x47, 0xfb, 0x2d, 0xc4, 0x0b, 0x50, 0xe5, 0x57, 0xc1,
-0x1e, 0xa6, 0x1e, 0x98, 0x9c, 0x98, 0x00, 0xa6, 0x59, 0xbd, 0xd9, 0xda, 0xee, 0xfa, 0x3a, 0x1a,
-0xd3, 0x36, 0x4d, 0x4e, 0x1e, 0x5e, 0x2e, 0x63, 0xac, 0x5b, 0x3b, 0x47, 0xa9, 0x27, 0xec, 0x00,
-0x65, 0xd8, 0xad, 0xb4, 0x70, 0x9b, 0x4e, 0x90, 0x82, 0x93, 0xb6, 0xa3, 0xe1, 0xbd, 0x87, 0xde,
-0xc8, 0x01, 0x65, 0x24, 0x1d, 0x43, 0xf2, 0x5a, 0x9e, 0x68, 0x54, 0x69, 0x02, 0x5c, 0x3b, 0x42,
-0x1f, 0x1f, 0xe8, 0xf6, 0xff, 0xce, 0x0b, 0xad, 0x0a, 0x96, 0xc2, 0x8c, 0x08, 0x92, 0x56, 0xa4,
-0x2f, 0xc1, 0xdc, 0xe4, 0x18, 0x0b, 0x8b, 0x2f, 0x2f, 0x4e, 0x7a, 0x63, 0x40, 0x6c, 0x48, 0x67,
-0x32, 0x55, 0xa3, 0x38, 0x08, 0x15, 0x72, 0xee, 0x4d, 0xc9, 0x42, 0xaa, 0xdc, 0x95, 0xd6, 0x8e,
-0x30, 0x96, 0xdc, 0xaa, 0x4f, 0xca, 0x0c, 0xf0, 0x10, 0x17, 0x39, 0x3a, 0x2c, 0x55, 0xb8, 0x64,
-0x72, 0x67, 0x96, 0x5d, 0x2b, 0x49, 0xf9, 0x2c, 0xf0, 0x0b, 0xfa, 0xe8, 0xbb, 0xc7, 0x4f, 0xac,
-0xac, 0x9a, 0xf0, 0x95, 0x64, 0x9f, 0x19, 0xb6, 0xab, 0xd6, 0x18, 0xfc, 0x81, 0x20, 0xbd, 0x3e,
-0x4f, 0x53, 0x7c, 0x5c, 0x7e, 0x5a, 0xbf, 0x4e, 0x91, 0x3b, 0xcb, 0x22, 0x5e, 0x06, 0x54, 0xe8,
-0x83, 0xcb, 0xbf, 0xb3, 0x04, 0xa5, 0xae, 0xa2, 0xa3, 0xad, 0xd3, 0xc4, 0x0e, 0xe4, 0xe2, 0x05,
-0x77, 0x24, 0xd5, 0x3b, 0x93, 0x49, 0xab, 0x4d, 0x5b, 0x49, 0x63, 0x3e, 0x21, 0x2e, 0xf2, 0x19,
-0xbc, 0x02, 0xfe, 0xe9, 0x37, 0xd2, 0x05, 0xbf, 0x13, 0xb4, 0x25, 0xb4, 0xfb, 0xbf, 0x37, 0xd5,
-0xe0, 0xef, 0xbe, 0x0a, 0x9d, 0x21, 0x5b, 0x31, 0x9b, 0x39, 0xd5, 0x3a, 0x67, 0x36, 0x99, 0x2d,
-0x69, 0x21, 0x48, 0x12, 0xe4, 0x00, 0x82, 0xee, 0x01, 0xdd, 0x2f, 0xcf, 0x21, 0xc8, 0x91, 0xc9,
-0x5b, 0xd3, 0x77, 0xe3, 0x66, 0xf6, 0xa2, 0x08, 0x52, 0x17, 0x15, 0x21, 0x87, 0x25, 0xc7, 0x25,
-0xa1, 0x22, 0x0d, 0x1d, 0x90, 0x15, 0xa2, 0x0c, 0x76, 0x02, 0x9a, 0xf7, 0x24, 0xed, 0xa6, 0xe4,
-0xe1, 0xdf, 0xe1, 0xdf, 0xa0, 0xe4, 0x0e, 0xed, 0x16, 0xf7, 0xba, 0x00, 0x5c, 0x08, 0x2a, 0x0d,
-0x56, 0x0f, 0x86, 0x0f, 0x90, 0x0e, 0xfe, 0x0c, 0x9e, 0x0b, 0x4c, 0x0a, 0xc6, 0x08, 0x4c, 0x06,
-0x7e, 0x02, 0x90, 0xfd, 0x88, 0xf8, 0x60, 0xf4, 0xfc, 0xf1, 0xb2, 0xf1, 0x0a, 0xf3, 0xec, 0xf4,
-0xa4, 0xf6, 0xc0, 0xf7, 0x64, 0xf8, 0x3e, 0xf9, 0x42, 0xfb, 0x44, 0xff, 0x66, 0x05, 0x38, 0x0d,
-0xaa, 0x14, 0xa0, 0x19, 0x4a, 0x1a, 0x30, 0x16, 0x22, 0x0e, 0x2c, 0x04, 0x40, 0xfa, 0xbe, 0xf1,
-0x66, 0xeb, 0xf0, 0xe6, 0xb3, 0xe3, 0xe7, 0xe1, 0xf5, 0xe1, 0xd4, 0xe4, 0xa6, 0xeb, 0x16, 0xf7,
-0x46, 0x06, 0x16, 0x17, 0x55, 0x26, 0x33, 0x30, 0x9b, 0x32, 0xd9, 0x2c, 0x8d, 0x20, 0x38, 0x10,
-0xec, 0xfe, 0xc2, 0xee, 0x13, 0xe1, 0x49, 0xd6, 0xa5, 0xce, 0xaf, 0xca, 0xb7, 0xcb, 0xeb, 0xd2,
-0x2b, 0xe1, 0x84, 0xf5, 0xd6, 0x0d, 0x3b, 0x26, 0x47, 0x3a, 0x39, 0x46, 0xa5, 0x47, 0xfb, 0x3e,
-0xb3, 0x2d, 0x64, 0x17, 0x2c, 0xff, 0x32, 0xe8, 0xf1, 0xd3, 0x2b, 0xc4, 0xc9, 0xb9, 0x1b, 0xb6,
-0xbf, 0xba, 0x6f, 0xc8, 0x79, 0xde, 0xb8, 0xfa, 0x6a, 0x19, 0xf3, 0x35, 0x01, 0x4c, 0xee, 0x57,
-0xce, 0x57, 0xcd, 0x4b, 0x63, 0x36, 0xae, 0x1a, 0xa0, 0xfc, 0x55, 0xdf, 0xc9, 0xc5, 0x2f, 0xb2,
-0xf4, 0xa6, 0xdc, 0xa5, 0xc3, 0xaf, 0x81, 0xc4, 0x8d, 0xe1, 0x82, 0x03, 0xc1, 0x25, 0xf1, 0x43,
-0xf4, 0x59, 0xdc, 0x64, 0xa4, 0x62, 0xa5, 0x53, 0x45, 0x3a, 0xd0, 0x19, 0x22, 0xf6, 0x9b, 0xd3,
-0x4b, 0xb6, 0xa6, 0xa1, 0x96, 0x98, 0x5a, 0x9c, 0xb7, 0xac, 0x9b, 0xc7, 0x8c, 0xe9, 0xea, 0x0d,
-0xdf, 0x30, 0x8b, 0x4e, 0x86, 0x63, 0xd0, 0x6c, 0xb2, 0x68, 0xee, 0x56, 0x91, 0x39, 0x4a, 0x14,
-0xa8, 0xeb, 0x8d, 0xc5, 0x58, 0xa7, 0xfe, 0x94, 0xa4, 0x90, 0x50, 0x9a, 0xf3, 0xaf, 0x81, 0xce,
-0x0c, 0xf2, 0x92, 0x16, 0x89, 0x38, 0xf0, 0x54, 0xa8, 0x68, 0x64, 0x70, 0x02, 0x6a, 0x16, 0x55,
-0xbb, 0x33, 0x6e, 0x0a, 0x57, 0xdf, 0x1f, 0xb9, 0xd6, 0x9d, 0xa4, 0x90, 0xfc, 0x91, 0x58, 0xa0,
-0xf7, 0xb8, 0x43, 0xd8, 0xa4, 0xfa, 0x17, 0x1d, 0x97, 0x3c, 0xbe, 0x56, 0x4e, 0x68, 0xa8, 0x6d,
-0x4c, 0x64, 0x4f, 0x4c, 0x83, 0x28, 0x5a, 0xfe, 0xb9, 0xd4, 0x71, 0xb2, 0x8a, 0x9c, 0xe6, 0x94,
-0x90, 0x9a, 0x28, 0xab, 0xcb, 0xc3, 0x77, 0xe1, 0x50, 0x01, 0xd7, 0x20, 0xc1, 0x3d, 0x2a, 0x55,
-0xd0, 0x63, 0x04, 0x66, 0xe4, 0x59, 0x2b, 0x40, 0x71, 0x1c, 0xb2, 0xf4, 0x9f, 0xcf, 0x41, 0xb3,
-0xec, 0xa2, 0x8c, 0x9f, 0x76, 0xa7, 0x2d, 0xb8, 0x43, 0xcf, 0x50, 0xea, 0xf0, 0x06, 0xd3, 0x22,
-0xcb, 0x3b, 0xe5, 0x4e, 0x0c, 0x59, 0x98, 0x57, 0x97, 0x49, 0xbb, 0x30, 0xf6, 0x10, 0x6c, 0xef,
-0xb1, 0xd1, 0x17, 0xbc, 0xe3, 0xb0, 0x09, 0xb0, 0x3d, 0xb8, 0x57, 0xc7, 0x73, 0xdb, 0xa0, 0xf2,
-0xa6, 0x0a, 0x83, 0x21, 0xf9, 0x34, 0xcf, 0x42, 0x73, 0x48, 0xf5, 0x44, 0x07, 0x38, 0x8f, 0x23,
-0x7e, 0x0a, 0xec, 0xf0, 0x9d, 0xda, 0xc7, 0xca, 0x0f, 0xc3, 0x6b, 0xc3, 0xf5, 0xca, 0x07, 0xd8,
-0xa4, 0xe8, 0xb0, 0xfa, 0x38, 0x0c, 0x9a, 0x1b, 0xe3, 0x27, 0xe9, 0x2f, 0xcd, 0x32, 0xdd, 0x2f,
-0x53, 0x27, 0xa8, 0x19, 0xc2, 0x08, 0x04, 0xf7, 0x50, 0xe7, 0xfd, 0xdb, 0x8f, 0xd6, 0x45, 0xd7,
-0x2b, 0xdd, 0x08, 0xe7, 0xb6, 0xf2, 0x58, 0xfe, 0x7c, 0x08, 0x68, 0x10, 0x0a, 0x16, 0xc0, 0x19,
-0xb2, 0x1b, 0x94, 0x1b, 0xfc, 0x18, 0x5a, 0x13, 0x02, 0x0b, 0x72, 0x01, 0x64, 0xf8, 0xb2, 0xf1,
-0x6e, 0xee, 0xc6, 0xee, 0xc6, 0xf1, 0xe6, 0xf5, 0xb4, 0xf9, 0x0a, 0xfc, 0xe4, 0xfc, 0x0c, 0xfd,
-0xc0, 0xfd, 0x26, 0x00, 0xb8, 0x04, 0x9a, 0x0a, 0xee, 0x0f, 0x26, 0x13, 0x42, 0x13, 0xb6, 0x10,
-0xda, 0x0c, 0xec, 0x08, 0x18, 0x06, 0x22, 0x04, 0x2a, 0x02, 0xca, 0xfe, 0xa6, 0xf9, 0xde, 0xf2,
-0xf8, 0xeb, 0xda, 0xe6, 0x86, 0xe5, 0x28, 0xe9, 0xa6, 0xf1, 0x62, 0xfd, 0xcc, 0x09, 0x74, 0x14,
-0xfa, 0x1b, 0xff, 0x1f, 0x15, 0x21, 0x05, 0x20, 0xd7, 0x1c, 0x48, 0x17, 0x76, 0x0e, 0x82, 0x02,
-0x22, 0xf4, 0x8c, 0xe5, 0xd1, 0xd8, 0xc3, 0xd0, 0x37, 0xcf, 0x19, 0xd5, 0xf5, 0xe1, 0xa4, 0xf3,
-0x42, 0x07, 0xc2, 0x19, 0xf3, 0x28, 0x3f, 0x33, 0x23, 0x38, 0x63, 0x37, 0xe3, 0x30, 0x9d, 0x24,
-0x56, 0x13, 0x9c, 0xfe, 0xd2, 0xe8, 0xc9, 0xd4, 0x3d, 0xc5, 0x55, 0xbc, 0x03, 0xbc, 0xf7, 0xc4,
-0x65, 0xd6, 0x50, 0xee, 0x3c, 0x09, 0x6b, 0x23, 0x55, 0x39, 0x55, 0x48, 0x6b, 0x4e, 0x47, 0x4b,
-0x25, 0x3f, 0x6d, 0x2b, 0x86, 0x12, 0x42, 0xf7, 0x95, 0xdc, 0x6b, 0xc5, 0x59, 0xb4, 0x91, 0xab,
-0xc5, 0xac, 0xe7, 0xb8, 0x3d, 0xcf, 0x84, 0xed, 0xac, 0x0f, 0xad, 0x30, 0x81, 0x4b, 0x44, 0x5c,
-0xbe, 0x60, 0xa6, 0x58, 0x07, 0x46, 0xc5, 0x2b, 0x6c, 0x0d, 0x42, 0xee, 0x13, 0xd1, 0x61, 0xb8,
-0xec, 0xa6, 0x02, 0x9f, 0x6a, 0xa2, 0x55, 0xb2, 0x13, 0xce, 0x86, 0xf2, 0xa8, 0x1a, 0xe3, 0x3f,
-0x30, 0x5c, 0x4c, 0x6b, 0xae, 0x6b, 0x52, 0x5e, 0x8b, 0x46, 0x45, 0x28, 0x12, 0x07, 0xfc, 0xe5,
-0x93, 0xc7, 0x79, 0xae, 0x6c, 0x9d, 0x10, 0x97, 0x66, 0x9d, 0x81, 0xb1, 0x7b, 0xd2, 0xf6, 0xfb,
-0x6f, 0x27, 0x9d, 0x4d, 0x38, 0x68, 0x9e, 0x73, 0x78, 0x6f, 0xf6, 0x5d, 0x03, 0x43, 0xd1, 0x22,
-0x6c, 0x00, 0x5d, 0xde, 0x7d, 0xbf, 0xba, 0xa6, 0x4a, 0x97, 0xe6, 0x93, 0x94, 0x9e, 0x93, 0xb7,
-0xad, 0xdc, 0x56, 0x08, 0x35, 0x33, 0x5e, 0x56, 0xa6, 0x6c, 0xa6, 0x73, 0xec, 0x6b, 0x40, 0x58,
-0x51, 0x3c, 0x92, 0x1b, 0x0c, 0xf9, 0x39, 0xd7, 0x6b, 0xb9, 0x10, 0xa3, 0x2a, 0x97, 0x32, 0x98,
-0x52, 0xa7, 0xa1, 0xc3, 0x82, 0xe9, 0x30, 0x13, 0xd3, 0x39, 0xce, 0x57, 0x72, 0x69, 0xf4, 0x6c,
-0x4a, 0x63, 0xc1, 0x4e, 0xc3, 0x32, 0x54, 0x12, 0xa0, 0xf0, 0xb1, 0xd0, 0x33, 0xb6, 0x5a, 0xa4,
-0xc6, 0x9d, 0x9a, 0xa3, 0xbb, 0xb5, 0x29, 0xd2, 0xf4, 0xf4, 0x20, 0x19, 0xab, 0x39, 0x47, 0x52,
-0xf6, 0x5f, 0x86, 0x61, 0x08, 0x57, 0xf7, 0x42, 0xf5, 0x27, 0x50, 0x09, 0x40, 0xea, 0x83, 0xce,
-0x3d, 0xb9, 0x33, 0xad, 0x8f, 0xab, 0x11, 0xb4, 0xc3, 0xc5, 0x45, 0xde, 0xd0, 0xfa, 0xe8, 0x17,
-0x3f, 0x32, 0x5d, 0x46, 0x85, 0x51, 0xeb, 0x51, 0xbf, 0x47, 0xaf, 0x34, 0xe6, 0x1b, 0xc6, 0x00,
-0xda, 0xe6, 0x75, 0xd1, 0x1f, 0xc3, 0xcf, 0xbc, 0x7b, 0xbe, 0x2d, 0xc7, 0x61, 0xd5, 0x04, 0xe8,
-0x46, 0xfd, 0x56, 0x13, 0xcd, 0x27, 0xbd, 0x37, 0x43, 0x40, 0xb7, 0x3f, 0x07, 0x36, 0x1d, 0x25,
-0x3a, 0x10, 0xd0, 0xfa, 0x42, 0xe8, 0xc7, 0xda, 0x4b, 0xd3, 0x81, 0xd1, 0x13, 0xd4, 0x01, 0xda,
-0xb5, 0xe2, 0xdc, 0xed, 0x6c, 0xfb, 0x80, 0x0a, 0x36, 0x19, 0xf5, 0x24, 0x2b, 0x2b, 0x27, 0x2a,
-0x8d, 0x22, 0x44, 0x16, 0x4e, 0x08, 0xa6, 0xfb, 0x1e, 0xf2, 0x50, 0xec, 0xd8, 0xe9, 0x62, 0xe9,
-0xfa, 0xe9, 0x0c, 0xeb, 0xe4, 0xec, 0x4c, 0xf0, 0x16, 0xf6, 0xf4, 0xfd, 0xda, 0x06, 0x8e, 0x0e,
-0x18, 0x13, 0xa4, 0x13, 0x90, 0x10, 0xa4, 0x0b, 0xb8, 0x06, 0x40, 0x03, 0x90, 0x01, 0x36, 0x01,
-0xe6, 0x00, 0xee, 0xff, 0x4c, 0xfd, 0x16, 0xf9, 0x22, 0xf4, 0xe4, 0xef, 0xa4, 0xed, 0x4e, 0xee,
-0x76, 0xf1, 0x1a, 0xf6, 0x20, 0xfb, 0x8e, 0xff, 0x88, 0x03, 0x5c, 0x07, 0xaa, 0x0b, 0x32, 0x10,
-0x76, 0x14, 0x36, 0x17, 0xa6, 0x17, 0xb0, 0x14, 0x2e, 0x0e, 0x4a, 0x04, 0x10, 0xf8, 0x9c, 0xeb,
-0x19, 0xe1, 0x85, 0xda, 0xfd, 0xd8, 0xb7, 0xdc, 0x8a, 0xe4, 0x84, 0xef, 0xf8, 0xfb, 0xec, 0x08,
-0x3c, 0x15, 0xf3, 0x1f, 0x1f, 0x28, 0xb1, 0x2c, 0xab, 0x2c, 0x47, 0x27, 0x49, 0x1c, 0xc4, 0x0b,
-0x84, 0xf7, 0x37, 0xe2, 0xa7, 0xcf, 0x7f, 0xc3, 0x01, 0xc0, 0xa9, 0xc5, 0x0f, 0xd3, 0xb2, 0xe5,
-0x9e, 0xfa, 0x58, 0x0f, 0xc1, 0x21, 0xdb, 0x30, 0x79, 0x3b, 0x8f, 0x40, 0x13, 0x3f, 0x17, 0x36,
-0x45, 0x25, 0x52, 0x0d, 0x98, 0xf0, 0x71, 0xd3, 0x69, 0xbb, 0x0b, 0xad, 0x04, 0xab, 0x25, 0xb5,
-0xdd, 0xc8, 0x71, 0xe2, 0xc2, 0xfd, 0xc6, 0x17, 0x41, 0x2e, 0x09, 0x40, 0xcd, 0x4b, 0x93, 0x50,
-0x97, 0x4c, 0x25, 0x3f, 0xf5, 0x27, 0xb8, 0x08, 0x20, 0xe5, 0xf5, 0xc2, 0xac, 0xa8, 0x1a, 0x9b,
-0x44, 0x9c, 0xc4, 0xaa, 0xa1, 0xc3, 0x03, 0xe2, 0x0a, 0x02, 0x1b, 0x20, 0x43, 0x3a, 0x8f, 0x4e,
-0x62, 0x5b, 0x82, 0x5e, 0x9a, 0x56, 0x05, 0x43, 0xcb, 0x24, 0x3c, 0xff, 0x37, 0xd7, 0x77, 0xb3,
-0x30, 0x9a, 0x8c, 0x8f, 0x78, 0x94, 0x2c, 0xa7, 0xc9, 0xc3, 0xde, 0xe5, 0x00, 0x09, 0xa7, 0x29,
-0x9b, 0x45, 0x76, 0x5a, 0xcc, 0x65, 0x70, 0x65, 0x1e, 0x58, 0xb3, 0x3e, 0xa6, 0x1b, 0x26, 0xf3,
-0xe7, 0xca, 0x1e, 0xa9, 0xc2, 0x92, 0x0e, 0x8b, 0x56, 0x92, 0x0e, 0xa7, 0xe7, 0xc5, 0x6a, 0xea,
-0x14, 0x10, 0x1b, 0x33, 0x09, 0x50, 0xd6, 0x63, 0xb6, 0x6b, 0xfe, 0x65, 0x3d, 0x53, 0x9f, 0x35,
-0xae, 0x10, 0xe6, 0xe8, 0x41, 0xc3, 0xc0, 0xa4, 0xa2, 0x91, 0x50, 0x8c, 0x84, 0x95, 0x09, 0xac,
-0xa9, 0xcc, 0x00, 0xf3, 0xf8, 0x19, 0xef, 0x3c, 0xe2, 0x57, 0x72, 0x67, 0xa4, 0x69, 0x7a, 0x5e,
-0xd1, 0x47, 0x01, 0x29, 0xa2, 0x05, 0x51, 0xe1, 0x0d, 0xc0, 0xcc, 0xa5, 0xe8, 0x95, 0xe4, 0x92,
-0xaa, 0x9d, 0x57, 0xb5, 0xf1, 0xd6, 0x74, 0xfd, 0x5b, 0x23, 0x61, 0x43, 0x6c, 0x59, 0xf6, 0x62,
-0xb2, 0x5f, 0xf7, 0x50, 0xef, 0x39, 0x7d, 0x1d, 0x88, 0xfe, 0x89, 0xdf, 0x75, 0xc3, 0x2d, 0xad,
-0x18, 0xa0, 0xcc, 0x9e, 0x82, 0xaa, 0x8d, 0xc2, 0x45, 0xe3, 0x7c, 0x07, 0x05, 0x29, 0x2d, 0x43,
-0x81, 0x52, 0x5e, 0x56, 0x77, 0x4f, 0x7b, 0x40, 0xeb, 0x2b, 0x2c, 0x14, 0xf6, 0xfa, 0xe1, 0xe1,
-0xcd, 0xca, 0x87, 0xb8, 0x27, 0xae, 0x7d, 0xae, 0xdd, 0xba, 0xd3, 0xd1, 0x60, 0xef, 0x08, 0x0e,
-0x71, 0x28, 0x15, 0x3b, 0x2d, 0x44, 0x21, 0x44, 0xad, 0x3c, 0xef, 0x2f, 0xe3, 0x1f, 0xea, 0x0d,
-0xc8, 0xfa, 0x80, 0xe7, 0xcd, 0xd5, 0xe1, 0xc7, 0xc7, 0xc0, 0x79, 0xc2, 0xa7, 0xcd, 0x91, 0xe0,
-0x5c, 0xf7, 0x8c, 0x0d, 0x85, 0x1f, 0xf9, 0x2a, 0xab, 0x2f, 0x6b, 0x2e, 0xab, 0x28, 0x15, 0x20,
-0xa4, 0x15, 0xf0, 0x09, 0xa0, 0xfd, 0x20, 0xf1, 0x80, 0xe5, 0x91, 0xdc, 0xd9, 0xd7, 0xed, 0xd8,
-0xcd, 0xdf, 0x3a, 0xeb, 0xd2, 0xf8, 0xea, 0x05, 0x48, 0x10, 0xd6, 0x16, 0x8a, 0x19, 0xee, 0x18,
-0x38, 0x16, 0x06, 0x12, 0x6e, 0x0d, 0x9c, 0x08, 0xc4, 0x03, 0x96, 0xfe, 0x30, 0xf9, 0xce, 0xf3,
-0x5e, 0xef, 0xea, 0xec, 0x1a, 0xed, 0xf8, 0xef, 0x8e, 0xf4, 0xbc, 0xf9, 0x22, 0xfe, 0x20, 0x01,
-0x9e, 0x02, 0x4c, 0x03, 0xd8, 0x03, 0x14, 0x05, 0x84, 0x07, 0x00, 0x0b, 0x9e, 0x0e, 0xf0, 0x10,
-0x86, 0x10, 0xd2, 0x0c, 0x14, 0x06, 0xd6, 0xfd, 0xe0, 0xf5, 0xb4, 0xef, 0xe0, 0xeb, 0x34, 0xea,
-0xd0, 0xe9, 0x4a, 0xea, 0xd0, 0xeb, 0x90, 0xee, 0xc2, 0xf3, 0xa6, 0xfb, 0x5c, 0x06, 0xca, 0x12,
-0xa5, 0x1e, 0xf7, 0x26, 0x57, 0x29, 0x7d, 0x24, 0x2c, 0x19, 0x08, 0x0a, 0xde, 0xf9, 0x9e, 0xeb,
-0x91, 0xe0, 0xe7, 0xd8, 0xbd, 0xd4, 0xb7, 0xd3, 0x2f, 0xd6, 0xef, 0xdc, 0x86, 0xe8, 0xf2, 0xf8,
-0xdc, 0x0c, 0x8d, 0x21, 0x6f, 0x33, 0xb5, 0x3e, 0x57, 0x40, 0xff, 0x37, 0xe7, 0x26, 0xca, 0x10,
-0x86, 0xf9, 0x26, 0xe4, 0xe7, 0xd2, 0xc1, 0xc6, 0x19, 0xc0, 0x5d, 0xbf, 0xe5, 0xc4, 0x33, 0xd1,
-0x8c, 0xe4, 0x26, 0xfd, 0x4c, 0x18, 0x39, 0x32, 0x77, 0x46, 0x89, 0x51, 0x01, 0x51, 0xe3, 0x44,
-0x85, 0x2f, 0x56, 0x14, 0x64, 0xf7, 0x33, 0xdc, 0xa1, 0xc5, 0xb3, 0xb5, 0xb1, 0xad, 0x51, 0xae,
-0x3f, 0xb8, 0x6f, 0xcb, 0x4a, 0xe6, 0xdc, 0x05, 0xdf, 0x25, 0x63, 0x42, 0x08, 0x57, 0xcc, 0x60,
-0xdc, 0x5d, 0x65, 0x4e, 0xd5, 0x34, 0x88, 0x14, 0xd8, 0xf1, 0xfb, 0xd0, 0xfb, 0xb5, 0xd8, 0xa3,
-0xc0, 0x9c, 0x56, 0xa1, 0xc1, 0xb1, 0x5b, 0xcc, 0x96, 0xed, 0x64, 0x11, 0x1b, 0x33, 0x2f, 0x4f,
-0x4e, 0x62, 0xd8, 0x69, 0x58, 0x64, 0x13, 0x52, 0xef, 0x34, 0x8c, 0x10, 0x6e, 0xe9, 0xbb, 0xc4,
-0xea, 0xa7, 0x90, 0x96, 0xe2, 0x92, 0x14, 0x9d, 0x8b, 0xb3, 0x49, 0xd3, 0xba, 0xf7, 0x49, 0x1c,
-0x5d, 0x3d, 0xd0, 0x57, 0xfa, 0x68, 0x78, 0x6e, 0x7c, 0x66, 0x27, 0x51, 0x6f, 0x30, 0x00, 0x08,
-0x9f, 0xdd, 0x97, 0xb7, 0xf2, 0x9b, 0xb2, 0x8e, 0xa2, 0x90, 0xae, 0xa0, 0xbf, 0xbb, 0x7f, 0xdd,
-0x9a, 0x01, 0x4b, 0x24, 0xc1, 0x42, 0xb8, 0x5a, 0x8e, 0x69, 0x8e, 0x6c, 0x2e, 0x62, 0x25, 0x4a,
-0xf9, 0x26, 0x0c, 0xfd, 0xbf, 0xd2, 0x1f, 0xaf, 0xe4, 0x97, 0xda, 0x8f, 0xae, 0x96, 0x06, 0xaa,
-0x0b, 0xc6, 0xb6, 0xe6, 0x46, 0x08, 0xff, 0x27, 0x91, 0x43, 0xda, 0x58, 0x32, 0x65, 0xda, 0x65,
-0x52, 0x59, 0xb1, 0x3f, 0xea, 0x1b, 0x0a, 0xf3, 0xe3, 0xcb, 0x59, 0xad, 0xec, 0x9b, 0xda, 0x98,
-0xe4, 0xa2, 0xe1, 0xb6, 0x55, 0xd1, 0x2c, 0xef, 0x3a, 0x0d, 0x5f, 0x29, 0x81, 0x41, 0x31, 0x53,
-0x1a, 0x5c, 0xc8, 0x59, 0x11, 0x4b, 0x33, 0x31, 0x48, 0x0f, 0xc8, 0xea, 0x05, 0xca, 0x17, 0xb2,
-0x4e, 0xa6, 0x04, 0xa7, 0x39, 0xb2, 0x77, 0xc5, 0x81, 0xdd, 0x8c, 0xf7, 0x76, 0x11, 0xc7, 0x28,
-0xd5, 0x3b, 0xa9, 0x48, 0x1f, 0x4d, 0x29, 0x48, 0x61, 0x39, 0x41, 0x22, 0x4c, 0x06, 0x9c, 0xe9,
-0xc5, 0xd0, 0xb5, 0xbf, 0xef, 0xb7, 0xd5, 0xb9, 0xf3, 0xc3, 0xd9, 0xd3, 0x86, 0xe7, 0x66, 0xfc,
-0x72, 0x10, 0x13, 0x22, 0x7b, 0x2f, 0x83, 0x37, 0x5b, 0x39, 0x27, 0x34, 0x87, 0x28, 0xd2, 0x17,
-0xfe, 0x03, 0x30, 0xf0, 0x0d, 0xdf, 0xf1, 0xd2, 0x7b, 0xcd, 0xcf, 0xce, 0x45, 0xd6, 0x37, 0xe2,
-0x8a, 0xf0, 0x2e, 0xff, 0x70, 0x0c, 0xfc, 0x16, 0x67, 0x1e, 0x79, 0x22, 0x43, 0x23, 0xef, 0x20,
-0x74, 0x1b, 0xf8, 0x12, 0xf2, 0x07, 0xc0, 0xfb, 0x40, 0xf0, 0x94, 0xe7, 0x75, 0xe3, 0x22, 0xe4,
-0xf0, 0xe8, 0x20, 0xf0, 0xd0, 0xf7, 0x6c, 0xfe, 0x1a, 0x03, 0xe4, 0x05, 0xb6, 0x07, 0x86, 0x09,
-0x02, 0x0c, 0x16, 0x0f, 0x72, 0x11, 0x10, 0x12, 0xe0, 0x0f, 0xe6, 0x0a, 0xa6, 0x04, 0xc0, 0xfe,
-0xc0, 0xfa, 0x18, 0xf9, 0xe0, 0xf8, 0xf4, 0xf8, 0x28, 0xf8, 0xc4, 0xf5, 0x82, 0xf2, 0x98, 0xef,
-0xd6, 0xee, 0xee, 0xf1, 0xc2, 0xf8, 0x68, 0x02, 0xda, 0x0c, 0x7c, 0x15, 0xe2, 0x1a, 0x55, 0x1c,
-0x84, 0x1a, 0xe0, 0x16, 0x42, 0x12, 0xd4, 0x0c, 0x44, 0x06, 0xc6, 0xfd, 0x9e, 0xf3, 0xcc, 0xe8,
-0xdb, 0xde, 0x85, 0xd8, 0x97, 0xd7, 0x13, 0xdd, 0xd6, 0xe8, 0xf4, 0xf8, 0x92, 0x0a, 0xe8, 0x1a,
-0x45, 0x27, 0x7f, 0x2e, 0x95, 0x30, 0xcb, 0x2d, 0xcb, 0x26, 0xc8, 0x1b, 0x18, 0x0d, 0xbe, 0xfb,
-0x42, 0xe9, 0x07, 0xd8, 0x9d, 0xca, 0x6b, 0xc3, 0xeb, 0xc3, 0xcb, 0xcc, 0x55, 0xdd, 0x98, 0xf3,
-0x30, 0x0c, 0x83, 0x23, 0x6b, 0x36, 0x75, 0x42, 0xa9, 0x46, 0x7b, 0x42, 0x7d, 0x36, 0xf9, 0x23,
-0xec, 0x0c, 0xd8, 0xf3, 0xa1, 0xdb, 0x19, 0xc7, 0xa9, 0xb8, 0x4d, 0xb2, 0xf3, 0xb4, 0x39, 0xc1,
-0x59, 0xd6, 0x2e, 0xf2, 0x3c, 0x11, 0xe1, 0x2e, 0x13, 0x47, 0x1a, 0x56, 0xfc, 0x59, 0x0b, 0x52,
-0x9b, 0x3f, 0xc1, 0x25, 0xe8, 0x07, 0xd2, 0xe9, 0x55, 0xce, 0x6b, 0xb8, 0x00, 0xaa, 0xde, 0xa4,
-0xc4, 0xa9, 0x6f, 0xb9, 0x7d, 0xd3, 0x58, 0xf5, 0xf0, 0x1a, 0x33, 0x3e, 0x90, 0x59, 0xa0, 0x68,
-0xcc, 0x68, 0xd0, 0x5a, 0xc9, 0x41, 0x0b, 0x22, 0x06, 0x00, 0x3f, 0xdf, 0x8f, 0xc2, 0x87, 0xac,
-0x10, 0x9f, 0x76, 0x9b, 0x7a, 0xa3, 0x77, 0xb7, 0xd7, 0xd6, 0x32, 0xfe, 0xdb, 0x27, 0x4b, 0x4d,
-0x18, 0x68, 0xc8, 0x73, 0x18, 0x6f, 0x08, 0x5c, 0xad, 0x3e, 0x2e, 0x1c, 0x66, 0xf8, 0xf7, 0xd6,
-0x5d, 0xba, 0xfc, 0xa4, 0xf0, 0x98, 0xce, 0x97, 0x32, 0xa3, 0x9f, 0xbb, 0x75, 0xdf, 0x08, 0x0a,
-0x01, 0x35, 0xe8, 0x58, 0x1e, 0x70, 0x38, 0x77, 0xfa, 0x6d, 0x9e, 0x57, 0x7f, 0x38, 0x20, 0x15,
-0x54, 0xf1, 0x17, 0xd0, 0x43, 0xb4, 0x9a, 0xa0, 0x10, 0x97, 0x7c, 0x99, 0x36, 0xa9, 0x91, 0xc5,
-0xc2, 0xeb, 0x3a, 0x16, 0x2d, 0x3e, 0x72, 0x5d, 0x78, 0x6f, 0x0c, 0x72, 0x28, 0x66, 0xef, 0x4e,
-0x23, 0x30, 0xd4, 0x0d, 0x12, 0xeb, 0x0d, 0xcb, 0x2b, 0xb1, 0x32, 0xa0, 0x68, 0x9a, 0x5c, 0xa1,
-0x01, 0xb5, 0x53, 0xd3, 0x7a, 0xf8, 0xd5, 0x1e, 0xfb, 0x40, 0x8a, 0x5a, 0xc2, 0x67, 0x9e, 0x67,
-0xc6, 0x5a, 0xdb, 0x43, 0x65, 0x26, 0xbc, 0x05, 0x26, 0xe5, 0x51, 0xc8, 0xbd, 0xb2, 0xda, 0xa6,
-0x66, 0xa6, 0x1d, 0xb1, 0xdb, 0xc5, 0xa1, 0xe1, 0xfe, 0x00, 0x27, 0x20, 0x81, 0x3b, 0xab, 0x4f,
-0xba, 0x59, 0x7c, 0x58, 0x6d, 0x4c, 0x71, 0x37, 0x42, 0x1c, 0x8c, 0xfe, 0xed, 0xe1, 0x4b, 0xca,
-0xab, 0xba, 0x63, 0xb4, 0xd7, 0xb7, 0xcf, 0xc3, 0xe1, 0xd5, 0x40, 0xec, 0x60, 0x04, 0x32, 0x1c,
-0x4d, 0x31, 0x01, 0x41, 0x99, 0x48, 0xf3, 0x46, 0xdd, 0x3b, 0xeb, 0x28, 0xa4, 0x11, 0xf0, 0xf8,
-0xfd, 0xe2, 0xbb, 0xd2, 0xcf, 0xc9, 0x5f, 0xc8, 0x5d, 0xcd, 0xf5, 0xd6, 0xad, 0xe3, 0xa4, 0xf2,
-0x96, 0x02, 0x16, 0x13, 0x91, 0x22, 0x5d, 0x2e, 0x5b, 0x34, 0xc5, 0x32, 0xaf, 0x29, 0x08, 0x1b,
-0x82, 0x09, 0x6a, 0xf8, 0xd4, 0xea, 0x25, 0xe2, 0x71, 0xde, 0x05, 0xdf, 0x6d, 0xe2, 0x50, 0xe7,
-0x54, 0xed, 0x06, 0xf4, 0x5a, 0xfc, 0xfe, 0x05, 0xec, 0x0f, 0x7c, 0x18, 0x75, 0x1d, 0x9d, 0x1d,
-0xbe, 0x18, 0x78, 0x10, 0x34, 0x07, 0x52, 0xff, 0xfe, 0xf9, 0x60, 0xf7, 0xd6, 0xf6, 0x18, 0xf7,
-0x02, 0xf7, 0xd6, 0xf5, 0xe8, 0xf3, 0x98, 0xf2, 0xb4, 0xf2, 0x76, 0xf5, 0x3e, 0xfa, 0x0a, 0x00,
-0x70, 0x05, 0xda, 0x08, 0xaa, 0x0a, 0x14, 0x0b, 0x6c, 0x0b, 0x04, 0x0c, 0x4e, 0x0d, 0x2a, 0x0e,
-0x0c, 0x0e, 0xe6, 0x0b, 0xf4, 0x06, 0xbc, 0xff, 0x94, 0xf6, 0x70, 0xed, 0x4e, 0xe6, 0x79, 0xe2,
-0xef, 0xe2, 0x66, 0xe7, 0x14, 0xef, 0x76, 0xf8, 0x86, 0x02, 0x32, 0x0c, 0xee, 0x14, 0x5f, 0x1c,
-0x55, 0x21, 0xdb, 0x23, 0xcd, 0x22, 0xd1, 0x1d, 0x4c, 0x14, 0xd8, 0x06, 0x70, 0xf6, 0x4e, 0xe5,
-0x63, 0xd6, 0x63, 0xcc, 0xf1, 0xc9, 0x75, 0xcf, 0xb9, 0xdb, 0xd0, 0xec, 0xb2, 0xff, 0x00, 0x12,
-0xc9, 0x21, 0xef, 0x2d, 0xd5, 0x35, 0xc7, 0x38, 0x3d, 0x36, 0x69, 0x2d, 0xab, 0x1e, 0xf6, 0x09,
-0x6c, 0xf1, 0xf7, 0xd7, 0x4f, 0xc2, 0xd1, 0xb4, 0x6d, 0xb2, 0xe3, 0xbb, 0xe3, 0xce, 0xf0, 0xe7,
-0x9c, 0x02, 0x62, 0x1b, 0xf3, 0x2f, 0x0b, 0x3f, 0xc3, 0x47, 0xf3, 0x49, 0x99, 0x44, 0x71, 0x37,
-0x5d, 0x22, 0x98, 0x06, 0x96, 0xe6, 0x65, 0xc7, 0x35, 0xae, 0xbc, 0xa0, 0xa2, 0xa1, 0x15, 0xb0,
-0x5f, 0xc9, 0x70, 0xe8, 0x82, 0x08, 0x73, 0x25, 0xe1, 0x3c, 0x91, 0x4d, 0xec, 0x56, 0xae, 0x57,
-0xe5, 0x4e, 0x91, 0x3c, 0x11, 0x21, 0x86, 0xfe, 0xff, 0xd8, 0x43, 0xb6, 0x14, 0x9d, 0x0c, 0x92,
-0xf0, 0x96, 0x54, 0xaa, 0x5b, 0xc8, 0xc2, 0xeb, 0x40, 0x0f, 0x17, 0x2f, 0x93, 0x48, 0x6a, 0x5a,
-0xe4, 0x62, 0xa6, 0x60, 0x07, 0x53, 0x55, 0x3a, 0xb4, 0x18, 0x7c, 0xf1, 0x25, 0xca, 0x8e, 0xa8,
-0x6e, 0x92, 0x7a, 0x8b, 0x58, 0x94, 0x2c, 0xab, 0xe3, 0xcb, 0x7a, 0xf1, 0xd2, 0x16, 0x25, 0x38,
-0x63, 0x52, 0x98, 0x63, 0xd0, 0x69, 0x52, 0x63, 0x37, 0x50, 0x85, 0x32, 0x40, 0x0d, 0x36, 0xe5,
-0x55, 0xbf, 0xf6, 0xa0, 0xde, 0x8e, 0x46, 0x8b, 0x8c, 0x96, 0xfd, 0xae, 0x19, 0xd1, 0xaa, 0xf7,
-0x3d, 0x1e, 0xe7, 0x3f, 0xaa, 0x59, 0x6e, 0x68, 0x14, 0x6a, 0x44, 0x5e, 0xbd, 0x46, 0x5d, 0x26,
-0x40, 0x01, 0xbd, 0xdb, 0x01, 0xba, 0x7e, 0xa0, 0x26, 0x92, 0x22, 0x91, 0xe0, 0x9d, 0x2f, 0xb7,
-0xa3, 0xd9, 0xb0, 0x00, 0xa5, 0x26, 0xb5, 0x46, 0xde, 0x5c, 0x82, 0x66, 0xb0, 0x62, 0x6d, 0x52,
-0xaf, 0x38, 0x30, 0x19, 0x9a, 0xf7, 0x39, 0xd7, 0x13, 0xbb, 0x1e, 0xa6, 0x08, 0x9b, 0x96, 0x9b,
-0xf4, 0xa8, 0x31, 0xc2, 0x22, 0xe4, 0x7a, 0x09, 0x83, 0x2c, 0x0b, 0x48, 0xb8, 0x58, 0xea, 0x5c,
-0xcc, 0x54, 0x35, 0x43, 0x01, 0x2b, 0x78, 0x0f, 0x6e, 0xf3, 0xd7, 0xd8, 0x11, 0xc2, 0x25, 0xb1,
-0x6a, 0xa8, 0x08, 0xaa, 0x63, 0xb7, 0x37, 0xcf, 0x46, 0xee, 0x76, 0x0f, 0xc3, 0x2c, 0x09, 0x42,
-0xb1, 0x4c, 0x83, 0x4c, 0x33, 0x43, 0x17, 0x33, 0xcb, 0x1e, 0x04, 0x09, 0x48, 0xf3, 0xe9, 0xde,
-0x41, 0xcd, 0x4b, 0xc0, 0x09, 0xba, 0xdb, 0xbc, 0x15, 0xc9, 0xd9, 0xdd, 0xa0, 0xf7, 0x96, 0x11,
-0x13, 0x27, 0x0f, 0x35, 0x8b, 0x3a, 0x01, 0x38, 0x9f, 0x2f, 0x0b, 0x23, 0x9e, 0x14, 0x6e, 0x05,
-0x76, 0xf6, 0x96, 0xe8, 0x75, 0xdc, 0x89, 0xd3, 0x75, 0xcf, 0xd1, 0xd1, 0x03, 0xdb, 0xa2, 0xe9,
-0x40, 0xfb, 0x62, 0x0c, 0x0c, 0x1a, 0x27, 0x22, 0x67, 0x24, 0x2f, 0x22, 0x87, 0x1c, 0x4c, 0x15,
-0x12, 0x0d, 0x2e, 0x05, 0xc4, 0xfd, 0x82, 0xf6, 0xdc, 0xef, 0x4a, 0xea, 0xf2, 0xe6, 0x8a, 0xe6,
-0x64, 0xe9, 0x56, 0xef, 0x74, 0xf7, 0xc4, 0xff, 0x98, 0x06, 0x10, 0x0b, 0xf0, 0x0c, 0xea, 0x0c,
-0xca, 0x0b, 0x46, 0x0a, 0x46, 0x09, 0xcc, 0x08, 0xa4, 0x08, 0x24, 0x08, 0x70, 0x06, 0xda, 0x02,
-0xda, 0xfd, 0x0c, 0xf8, 0xca, 0xf2, 0x78, 0xef, 0x20, 0xee, 0x0c, 0xef, 0x1c, 0xf1, 0x46, 0xf3,
-0xda, 0xf5, 0xa4, 0xf8, 0x70, 0xfc, 0x82, 0x01, 0x22, 0x08, 0x0a, 0x10, 0x02, 0x18, 0xd3, 0x1d,
-0x2f, 0x1f, 0x66, 0x1b, 0x1c, 0x12, 0x16, 0x05, 0x12, 0xf7, 0x6c, 0xea, 0x77, 0xe1, 0x59, 0xdc,
-0xa7, 0xda, 0x17, 0xdc, 0x25, 0xe0, 0xe0, 0xe6, 0x98, 0xf0, 0x68, 0xfd, 0xda, 0x0c, 0x2d, 0x1d,
-0xa9, 0x2b, 0x1f, 0x35, 0xe9, 0x36, 0xb1, 0x2f, 0x51, 0x20, 0x92, 0x0b, 0x88, 0xf5, 0xc7, 0xe1,
-0xd5, 0xd2, 0xa3, 0xc9, 0x17, 0xc6, 0xab, 0xc7, 0x53, 0xce, 0x1b, 0xda, 0xca, 0xea, 0xe2, 0xff,
-0x4a, 0x17, 0x01, 0x2e, 0x79, 0x40, 0x67, 0x4a, 0xcf, 0x49, 0x11, 0x3e, 0xd7, 0x28, 0xf2, 0x0d,
-0xa6, 0xf1, 0x2d, 0xd8, 0x85, 0xc4, 0x01, 0xb8, 0xf5, 0xb2, 0xbb, 0xb5, 0x3d, 0xc0, 0x3b, 0xd2,
-0xd0, 0xea, 0xbc, 0x07, 0x6b, 0x25, 0x13, 0x40, 0xf5, 0x52, 0x4a, 0x5b, 0x4c, 0x57, 0x2f, 0x47,
-0x63, 0x2d, 0x96, 0x0d, 0x4e, 0xec, 0x11, 0xce, 0x59, 0xb6, 0x62, 0xa7, 0x80, 0xa2, 0x0c, 0xa8,
-0x0d, 0xb8, 0x53, 0xd1, 0x54, 0xf1, 0xd2, 0x13, 0xad, 0x34, 0x8f, 0x4f, 0xf8, 0x60, 0x7c, 0x66,
-0x00, 0x5f, 0x5f, 0x4b, 0xe7, 0x2d, 0x20, 0x0a, 0x9c, 0xe4, 0x7f, 0xc2, 0x36, 0xa8, 0xec, 0x98,
-0x4e, 0x96, 0xf2, 0xa0, 0x75, 0xb7, 0x67, 0xd7, 0x18, 0xfc, 0xc9, 0x20, 0x61, 0x41, 0x2c, 0x5a,
-0xe6, 0x68, 0x84, 0x6b, 0x4a, 0x61, 0xdb, 0x4a, 0x4d, 0x2a, 0x1e, 0x03, 0x67, 0xda, 0x1b, 0xb6,
-0xa8, 0x9b, 0xfe, 0x8e, 0x80, 0x91, 0x5a, 0xa2, 0xc5, 0xbe, 0x69, 0xe2, 0x16, 0x08, 0x6f, 0x2b,
-0xe7, 0x48, 0x94, 0x5e, 0x74, 0x6a, 0xb8, 0x6a, 0x80, 0x5e, 0x11, 0x46, 0x81, 0x23, 0x5e, 0xfa,
-0x5f, 0xd0, 0x87, 0xac, 0xfe, 0x94, 0xee, 0x8c, 0xe6, 0x94, 0x68, 0xaa, 0x91, 0xc9, 0x3e, 0xed,
-0xb0, 0x10, 0x77, 0x30, 0x6f, 0x4a, 0xdc, 0x5c, 0xea, 0x65, 0x1e, 0x64, 0x1e, 0x56, 0x6d, 0x3c,
-0xe6, 0x18, 0xf0, 0xef, 0x05, 0xc8, 0x32, 0xa8, 0xd8, 0x95, 0x64, 0x93, 0x7a, 0x9f, 0xf1, 0xb6,
-0x69, 0xd5, 0x3c, 0xf6, 0xf4, 0x15, 0xad, 0x31, 0xe1, 0x47, 0x32, 0x57, 0xea, 0x5d, 0xfa, 0x59,
-0xc5, 0x4a, 0x91, 0x30, 0x02, 0x0e, 0x0a, 0xe8, 0xd9, 0xc4, 0xf8, 0xaa, 0x76, 0x9e, 0xcc, 0x9f,
-0x5d, 0xad, 0x07, 0xc4, 0x6b, 0xdf, 0x46, 0xfc, 0x6c, 0x17, 0x15, 0x2f, 0xa1, 0x41, 0x65, 0x4d,
-0xe1, 0x50, 0xfb, 0x4a, 0x07, 0x3b, 0x11, 0x22, 0x8c, 0x03, 0xd8, 0xe3, 0x85, 0xc8, 0xf3, 0xb5,
-0x89, 0xae, 0x6f, 0xb2, 0xa5, 0xbf, 0xeb, 0xd2, 0xac, 0xe9, 0xc4, 0x00, 0x36, 0x16, 0x7f, 0x28,
-0xdf, 0x35, 0x81, 0x3d, 0x43, 0x3e, 0xc1, 0x37, 0x15, 0x2a, 0x90, 0x16, 0xa4, 0xff, 0xd2, 0xe8,
-0x51, 0xd5, 0x45, 0xc8, 0x6f, 0xc3, 0xdd, 0xc6, 0x23, 0xd1, 0x3b, 0xe0, 0x84, 0xf1, 0xa4, 0x02,
-0xf0, 0x11, 0xbd, 0x1d, 0xe1, 0x25, 0x87, 0x29, 0xd3, 0x28, 0x3b, 0x24, 0xde, 0x1b, 0x3c, 0x10,
-0x6e, 0x02, 0x14, 0xf4, 0x3c, 0xe7, 0xc7, 0xdd, 0x79, 0xd9, 0x13, 0xdb, 0xa1, 0xe1, 0x84, 0xeb,
-0x62, 0xf6, 0xc8, 0x00, 0x26, 0x09, 0xc8, 0x0e, 0xcc, 0x11, 0xe2, 0x12, 0xf2, 0x12, 0x44, 0x12,
-0xec, 0x10, 0x3c, 0x0e, 0x7a, 0x09, 0xea, 0x02, 0x80, 0xfb, 0x02, 0xf5, 0x1a, 0xf1, 0x20, 0xf0,
-0x02, 0xf2, 0x2e, 0xf5, 0x38, 0xf8, 0x14, 0xfa, 0x5e, 0xfa, 0xea, 0xf9, 0xac, 0xf9, 0x28, 0xfb,
-0x3e, 0xff, 0xa0, 0x05, 0xd6, 0x0c, 0xd0, 0x12, 0xe2, 0x15, 0x68, 0x15, 0xcc, 0x11, 0x9c, 0x0c,
-0x52, 0x07, 0xd0, 0x02, 0xb4, 0xfe, 0x30, 0xfa, 0xc4, 0xf4, 0x44, 0xee, 0xc8, 0xe7, 0xc5, 0xe2,
-0x79, 0xe1, 0x6a, 0xe5, 0xae, 0xee, 0x20, 0xfc, 0x56, 0x0b, 0x44, 0x19, 0x73, 0x23, 0x5d, 0x28,
-0x1d, 0x28, 0xfb, 0x23, 0xb7, 0x1c, 0x02, 0x13, 0x1a, 0x07, 0x60, 0xf9, 0xd2, 0xea, 0xdb, 0xdc,
-0x8d, 0xd1, 0x5b, 0xcb, 0x0d, 0xcc, 0x53, 0xd4, 0xab, 0xe3, 0xee, 0xf7, 0x1c, 0x0e, 0xe9, 0x22,
-0xfb, 0x32, 0x7d, 0x3c, 0xa3, 0x3e, 0x75, 0x39, 0x0f, 0x2e, 0x49, 0x1d, 0x8e, 0x08, 0x36, 0xf2,
-0x6d, 0xdc, 0xef, 0xc9, 0x2b, 0xbd, 0xe1, 0xb7, 0x7b, 0xbb, 0x0f, 0xc8, 0x75, 0xdc, 0x78, 0xf6,
-0xfc, 0x12, 0xd9, 0x2d, 0x81, 0x43, 0x95, 0x50, 0x3f, 0x53, 0x75, 0x4b, 0xff, 0x39, 0x2f, 0x21,
-0x58, 0x04, 0xd2, 0xe6, 0x75, 0xcc, 0x21, 0xb8, 0xb3, 0xab, 0xc2, 0xa8, 0xa7, 0xaf, 0x57, 0xc0,
-0xcb, 0xd9, 0x74, 0xf9, 0xa2, 0x1b, 0xe1, 0x3b, 0x1a, 0x55, 0x48, 0x63, 0xa8, 0x63, 0x4e, 0x56,
-0x9d, 0x3d, 0xc7, 0x1d, 0x16, 0xfb, 0xff, 0xd9, 0x7d, 0xbe, 0xb0, 0xaa, 0x76, 0xa0, 0xda, 0x9f,
-0xa2, 0xa9, 0x05, 0xbe, 0xb3, 0xdb, 0x3a, 0x00, 0x05, 0x27, 0x8f, 0x4a, 0xc8, 0x64, 0xda, 0x70,
-0x7a, 0x6c, 0xe4, 0x58, 0x4f, 0x3a, 0xc6, 0x15, 0xb2, 0xf0, 0x45, 0xcf, 0x9d, 0xb4, 0xc4, 0xa2,
-0x72, 0x9a, 0x42, 0x9c, 0xf8, 0xa8, 0xf1, 0xc0, 0xe7, 0xe2, 0x62, 0x0b, 0xbb, 0x34, 0x70, 0x58,
-0x3c, 0x70, 0x8a, 0x77, 0x84, 0x6d, 0xb3, 0x54, 0x97, 0x32, 0xd0, 0x0c, 0xfc, 0xe7, 0xc7, 0xc7,
-0xb9, 0xae, 0xb8, 0x9e, 0x76, 0x98, 0x0e, 0x9d, 0x0d, 0xad, 0xd5, 0xc8, 0xfc, 0xed, 0xd2, 0x17,
-0x57, 0x40, 0xc0, 0x60, 0x94, 0x73, 0xb8, 0x75, 0xc2, 0x67, 0x25, 0x4d, 0x07, 0x2b, 0x22, 0x06,
-0xad, 0xe2, 0xf5, 0xc3, 0x95, 0xac, 0x64, 0x9e, 0xfe, 0x9a, 0x18, 0xa3, 0x0d, 0xb7, 0x91, 0xd5,
-0x30, 0xfb, 0xe1, 0x22, 0x87, 0x46, 0xf8, 0x60, 0x1a, 0x6e, 0x70, 0x6c, 0x00, 0x5d, 0x01, 0x43,
-0xbb, 0x22, 0x44, 0x00, 0x1b, 0xdf, 0xdb, 0xc2, 0x35, 0xae, 0x68, 0xa3, 0xd8, 0xa3, 0x81, 0xaf,
-0xb1, 0xc5, 0xaf, 0xe3, 0xd0, 0x05, 0x79, 0x27, 0x61, 0x44, 0xac, 0x58, 0xb4, 0x61, 0x52, 0x5e,
-0x71, 0x4f, 0xa5, 0x37, 0x30, 0x1a, 0xb8, 0xfa, 0x05, 0xdd, 0xd3, 0xc4, 0xd3, 0xb4, 0xd9, 0xae,
-0x2f, 0xb3, 0x39, 0xc1, 0x8f, 0xd6, 0x28, 0xf0, 0x30, 0x0b, 0xb5, 0x24, 0x41, 0x3a, 0x7d, 0x49,
-0xd9, 0x4f, 0xad, 0x4c, 0xcd, 0x3f, 0x03, 0x2b, 0x82, 0x11, 0x96, 0xf6, 0x4b, 0xde, 0xe3, 0xcb,
-0xd7, 0xc1, 0x83, 0xc0, 0xa1, 0xc7, 0xa9, 0xd4, 0x82, 0xe5, 0xde, 0xf7, 0x30, 0x0a, 0xbe, 0x1b,
-0x0f, 0x2b, 0x79, 0x36, 0xbb, 0x3b, 0x91, 0x39, 0x79, 0x2f, 0xe7, 0x1e, 0x96, 0x0a, 0xe2, 0xf5,
-0x8c, 0xe4, 0xf1, 0xd8, 0x4d, 0xd4, 0x03, 0xd6, 0x43, 0xdc, 0x4e, 0xe5, 0x1a, 0xef, 0x3c, 0xf9,
-0x6c, 0x03, 0x08, 0x0e, 0x72, 0x18, 0x2f, 0x21, 0x1d, 0x26, 0xab, 0x25, 0x69, 0x1f, 0x84, 0x14,
-0xb4, 0x07, 0x6c, 0xfb, 0x5a, 0xf2, 0x3c, 0xed, 0x18, 0xec, 0xb6, 0xed, 0x40, 0xf0, 0xba, 0xf2,
-0x92, 0xf4, 0x30, 0xf6, 0xd4, 0xf8, 0x02, 0xfd, 0xee, 0x02, 0x6c, 0x09, 0xbc, 0x0e, 0x5e, 0x11,
-0xfa, 0x10, 0x32, 0x0e, 0x84, 0x0a, 0x78, 0x07, 0x8e, 0x05, 0xf0, 0x04, 0x9e, 0x04, 0x86, 0x03,
-0xc8, 0x00, 0x48, 0xfc, 0x32, 0xf6, 0x20, 0xf0, 0x90, 0xeb, 0xe0, 0xe9, 0xe8, 0xeb, 0xfe, 0xf0,
-0x40, 0xf8, 0x4e, 0x00, 0xce, 0x07, 0x7e, 0x0e, 0x2a, 0x14, 0x98, 0x18, 0x8e, 0x1b, 0x3e, 0x1c,
-0x62, 0x1a, 0x54, 0x15, 0xf6, 0x0c, 0xc8, 0x01, 0x9a, 0xf4, 0x48, 0xe7, 0xd3, 0xdb, 0xcd, 0xd4,
-0xd9, 0xd3, 0x6b, 0xd9, 0xd0, 0xe4, 0x18, 0xf4, 0xc6, 0x04, 0xb6, 0x14, 0x2b, 0x22, 0xe5, 0x2b,
-0x45, 0x31, 0x99, 0x31, 0x43, 0x2d, 0x19, 0x24, 0x72, 0x16, 0xa6, 0x04, 0x32, 0xf0, 0x57, 0xdb,
-0x81, 0xc9, 0x55, 0xbe, 0x83, 0xbc, 0x11, 0xc5, 0x99, 0xd6, 0xf2, 0xed, 0x14, 0x07, 0x69, 0x1e,
-0x05, 0x31, 0xe9, 0x3d, 0xf7, 0x43, 0x97, 0x43, 0xb1, 0x3c, 0x65, 0x2f, 0x0e, 0x1c, 0x6e, 0x03,
-0x7e, 0xe7, 0x09, 0xcc, 0xaf, 0xb5, 0x38, 0xa9, 0xae, 0xa9, 0x41, 0xb7, 0xd9, 0xcf, 0x96, 0xee,
-0x46, 0x0e, 0x13, 0x2a, 0x8f, 0x3f, 0x3b, 0x4d, 0x29, 0x53, 0xcf, 0x50, 0x9d, 0x46, 0x7d, 0x34,
-0x16, 0x1b, 0xee, 0xfb, 0xf7, 0xd9, 0x83, 0xba, 0xd8, 0xa2, 0x3e, 0x98, 0xae, 0x9c, 0xf9, 0xaf,
-0x51, 0xce, 0x24, 0xf2, 0x84, 0x15, 0x05, 0x34, 0x59, 0x4b, 0x22, 0x5a, 0xb8, 0x5f, 0x78, 0x5b,
-0x55, 0x4d, 0xb3, 0x35, 0xe8, 0x15, 0xc0, 0xf0, 0xe5, 0xca, 0x44, 0xaa, 0x8a, 0x94, 0xda, 0x8d,
-0x4c, 0x97, 0x3b, 0xaf, 0xab, 0xd1, 0x36, 0xf8, 0x9f, 0x1d, 0x61, 0x3d, 0x2c, 0x55, 0xa4, 0x63,
-0x18, 0x67, 0x3a, 0x5f, 0x0b, 0x4c, 0xfd, 0x2e, 0xa4, 0x0a, 0x0b, 0xe3, 0x6b, 0xbd, 0xa8, 0x9f,
-0x52, 0x8e, 0xe8, 0x8b, 0xec, 0x98, 0x29, 0xb3, 0xc1, 0xd6, 0x0e, 0xfe, 0xd9, 0x23, 0xfd, 0x43,
-0xbe, 0x5b, 0x90, 0x68, 0x08, 0x69, 0xd4, 0x5c, 0xed, 0x44, 0x41, 0x24, 0x4e, 0xfe, 0xc5, 0xd7,
-0xb9, 0xb5, 0x90, 0x9c, 0xaa, 0x8f, 0xb4, 0x90, 0x5e, 0x9f, 0x51, 0xba, 0xcf, 0xdd, 0xec, 0x04,
-0x7d, 0x2a, 0xd7, 0x49, 0x96, 0x5f, 0xe6, 0x68, 0xa2, 0x64, 0x65, 0x53, 0xfd, 0x37, 0x4a, 0x16,
-0x72, 0xf2, 0x9b, 0xd0, 0x69, 0xb4, 0xda, 0xa0, 0xf4, 0x97, 0xcc, 0x9a, 0xc8, 0xa9, 0x17, 0xc4,
-0x80, 0xe6, 0x30, 0x0c, 0x9d, 0x2f, 0xf3, 0x4b, 0x66, 0x5d, 0xb2, 0x61, 0xc2, 0x58, 0xd1, 0x44,
-0x99, 0x29, 0xee, 0x0a, 0x6a, 0xec, 0xe1, 0xd0, 0x8b, 0xba, 0x3e, 0xab, 0x9e, 0xa4, 0xe2, 0xa7,
-0x57, 0xb6, 0x15, 0xcf, 0x44, 0xef, 0xf6, 0x11, 0x53, 0x31, 0xa5, 0x48, 0xa7, 0x54, 0x1d, 0x54,
-0x9d, 0x48, 0x15, 0x35, 0x11, 0x1d, 0x1a, 0x04, 0x1a, 0xec, 0x01, 0xd7, 0xdf, 0xc5, 0x15, 0xba,
-0xef, 0xb4, 0x75, 0xb8, 0x69, 0xc5, 0x87, 0xdb, 0x84, 0xf7, 0x72, 0x14, 0x51, 0x2d, 0xdf, 0x3d,
-0x57, 0x44, 0xc1, 0x40, 0x87, 0x35, 0x3b, 0x25, 0x08, 0x13, 0xbe, 0x00, 0xbc, 0xef, 0xfd, 0xe0,
-0xd5, 0xd4, 0x61, 0xcc, 0xeb, 0xc8, 0xdf, 0xcb, 0x5d, 0xd6, 0x68, 0xe7, 0x54, 0xfc, 0x32, 0x11,
-0x07, 0x22, 0x39, 0x2c, 0x01, 0x2f, 0x27, 0x2b, 0xc3, 0x22, 0xea, 0x17, 0x40, 0x0c, 0x34, 0x01,
-0x08, 0xf7, 0x78, 0xee, 0x44, 0xe7, 0xef, 0xe1, 0x4f, 0xdf, 0x3b, 0xe0, 0xb6, 0xe5, 0x00, 0xef,
-0xbe, 0xfa, 0x74, 0x06, 0xec, 0x0f, 0x9c, 0x15, 0x2e, 0x17, 0x7a, 0x15, 0x90, 0x11, 0xf6, 0x0c,
-0x6e, 0x08, 0xb8, 0x04, 0xf2, 0x01, 0xae, 0xff, 0x28, 0xfd, 0x12, 0xfa, 0x46, 0xf6, 0x96, 0xf2,
-0x30, 0xf0, 0x88, 0xef, 0x86, 0xf1, 0xfe, 0xf4, 0x18, 0xf9, 0xc8, 0xfc, 0x6a, 0xff, 0x52, 0x01,
-0x1e, 0x03, 0x48, 0x05, 0x74, 0x08, 0x9e, 0x0c, 0x02, 0x11, 0x82, 0x14, 0x52, 0x15, 0x42, 0x12,
-0xf6, 0x0a, 0x7e, 0x00, 0xf6, 0xf4, 0x02, 0xeb, 0x60, 0xe4, 0xb3, 0xe1, 0x6d, 0xe2, 0x8e, 0xe5,
-0x30, 0xea, 0x62, 0xf0, 0xe8, 0xf7, 0x62, 0x01, 0x6e, 0x0c, 0x60, 0x18, 0x7f, 0x23, 0x3f, 0x2b,
-0x19, 0x2d, 0x59, 0x27, 0x3c, 0x1a, 0xbc, 0x07, 0xb6, 0xf3, 0xd7, 0xe1, 0xeb, 0xd4, 0x0d, 0xce,
-0xeb, 0xcc, 0x65, 0xd0, 0xd1, 0xd7, 0xd1, 0xe2, 0x4c, 0xf1, 0xbe, 0x02, 0xfa, 0x15, 0xb5, 0x28,
-0x8b, 0x38, 0x83, 0x41, 0x5b, 0x41, 0xe1, 0x36, 0x33, 0x23, 0xe0, 0x09, 0x08, 0xef, 0x2d, 0xd7,
-0x93, 0xc5, 0xc7, 0xbb, 0x7d, 0xb9, 0x67, 0xbe, 0x6b, 0xc9, 0x55, 0xda, 0x5a, 0xf0, 0xb4, 0x09,
-0xf1, 0x23, 0xc1, 0x3b, 0x07, 0x4d, 0xab, 0x54, 0x61, 0x50, 0x57, 0x40, 0xd3, 0x26, 0xa6, 0x07,
-0x74, 0xe7, 0x0b, 0xcb, 0xe1, 0xb5, 0xf8, 0xa9, 0x1e, 0xa8, 0x57, 0xaf, 0xcf, 0xbf, 0xfb, 0xd7,
-0xd4, 0xf5, 0x1c, 0x16, 0xd3, 0x34, 0xe5, 0x4d, 0xce, 0x5d, 0xf6, 0x61, 0x5c, 0x59, 0x11, 0x45,
-0x6f, 0x27, 0x62, 0x04, 0x45, 0xe0, 0xf7, 0xbf, 0x0a, 0xa8, 0x38, 0x9b, 0x9c, 0x9a, 0x52, 0xa6,
-0xfb, 0xbc, 0x57, 0xdc, 0x60, 0x00, 0x65, 0x24, 0xe9, 0x43, 0x64, 0x5b, 0x00, 0x68, 0x3e, 0x68,
-0x1a, 0x5c, 0x97, 0x44, 0x23, 0x24, 0x20, 0xfe, 0x2d, 0xd7, 0xab, 0xb4, 0xcc, 0x9b, 0x4c, 0x90,
-0x6e, 0x93, 0xa6, 0xa4, 0x8b, 0xc1, 0xf8, 0xe5, 0xac, 0x0c, 0xa9, 0x30, 0x03, 0x4e, 0x0a, 0x62,
-0x3a, 0x6b, 0x84, 0x68, 0xf6, 0x59, 0x8f, 0x40, 0x45, 0x1e, 0x54, 0xf6, 0xcb, 0xcd, 0xec, 0xaa,
-0xc0, 0x93, 0xd0, 0x8b, 0x14, 0x94, 0xb2, 0xaa, 0xbf, 0xcb, 0xe8, 0xf1, 0x8e, 0x17, 0x5f, 0x38,
-0x9b, 0x51, 0xf4, 0x61, 0x04, 0x68, 0x54, 0x63, 0x7d, 0x53, 0x3f, 0x39, 0x56, 0x16, 0x26, 0xee,
-0x59, 0xc6, 0xba, 0xa5, 0x58, 0x92, 0x14, 0x8f, 0xdc, 0x9b, 0x87, 0xb5, 0x47, 0xd7, 0x98, 0xfb,
-0x8d, 0x1d, 0x13, 0x3a, 0x73, 0x4f, 0x8e, 0x5c, 0x74, 0x60, 0x32, 0x5a, 0x7d, 0x49, 0xcf, 0x2e,
-0x40, 0x0c, 0xc2, 0xe5, 0x7f, 0xc1, 0x12, 0xa6, 0x5c, 0x98, 0x24, 0x9a, 0x98, 0xa9, 0x63, 0xc3,
-0x8b, 0xe2, 0x54, 0x02, 0x4d, 0x1f, 0x45, 0x37, 0x01, 0x49, 0x69, 0x53, 0x40, 0x55, 0x8f, 0x4d,
-0x7d, 0x3c, 0xa1, 0x22, 0x88, 0x02, 0xbb, 0xe0, 0x95, 0xc2, 0xb1, 0xad, 0x4a, 0xa5, 0xe4, 0xa9,
-0xaf, 0xb9, 0xfd, 0xd0, 0xe2, 0xeb, 0xa8, 0x06, 0x61, 0x1e, 0x6d, 0x31, 0xf5, 0x3e, 0x81, 0x45,
-0x71, 0x44, 0x85, 0x3b, 0x0f, 0x2b, 0xd0, 0x14, 0x06, 0xfb, 0x59, 0xe1, 0xe7, 0xcb, 0xfb, 0xbd,
-0x75, 0xb9, 0xa3, 0xbe, 0xab, 0xcb, 0x0b, 0xde, 0xa4, 0xf2, 0xb6, 0x06, 0x42, 0x18, 0xe9, 0x25,
-0x95, 0x2e, 0xe5, 0x31, 0x7f, 0x2f, 0xe7, 0x27, 0x1a, 0x1c, 0xee, 0x0c, 0xfe, 0xfb, 0x3e, 0xeb,
-0x2d, 0xdd, 0x89, 0xd3, 0xeb, 0xcf, 0xc1, 0xd2, 0x97, 0xdb, 0x42, 0xe8, 0x9e, 0xf6, 0x4c, 0x04,
-0x88, 0x0f, 0x56, 0x17, 0x36, 0x1b, 0x88, 0x1b, 0x5e, 0x19, 0xa4, 0x15, 0xc4, 0x10, 0xda, 0x0a,
-0x8c, 0x03, 0x22, 0xfb, 0x80, 0xf2, 0x6c, 0xeb, 0x6a, 0xe7, 0x82, 0xe7, 0x46, 0xeb, 0x7c, 0xf1,
-0x2a, 0xf8, 0xdc, 0xfd, 0x78, 0x01, 0xd6, 0x02, 0xce, 0x02, 0xd4, 0x02, 0x32, 0x04, 0x60, 0x07,
-0x8a, 0x0b, 0x18, 0x0f, 0x3e, 0x10, 0x32, 0x0e, 0x5c, 0x09, 0x1a, 0x03, 0x72, 0xfd, 0x70, 0xf9,
-0x46, 0xf7, 0x04, 0xf6, 0xb6, 0xf4, 0x6a, 0xf2, 0x76, 0xef, 0x84, 0xec, 0x5a, 0xeb, 0xbc, 0xed,
-0x44, 0xf4, 0x98, 0xfe, 0xd4, 0x0a, 0x2c, 0x16, 0x57, 0x1e, 0xa9, 0x21, 0x09, 0x20, 0x9c, 0x1a,
-0xec, 0x12, 0x2e, 0x0a, 0xe0, 0x00, 0xd2, 0xf6, 0x32, 0xec, 0x03, 0xe2, 0x45, 0xd9, 0x63, 0xd4,
-0xb9, 0xd4, 0x83, 0xdb, 0xc0, 0xe8, 0xac, 0xfa, 0x88, 0x0e, 0x0b, 0x21, 0x07, 0x2f, 0x67, 0x36,
-0x9d, 0x36, 0x15, 0x30, 0x7f, 0x24, 0x3e, 0x15, 0x64, 0x03, 0x5e, 0xf0, 0x9d, 0xdd, 0x95, 0xcd,
-0xbf, 0xc2, 0xab, 0xbe, 0xcf, 0xc2, 0x21, 0xcf, 0x9d, 0xe2, 0x1a, 0xfb, 0x6e, 0x15, 0xb9, 0x2d,
-0xa9, 0x40, 0x21, 0x4b, 0xc1, 0x4b, 0xc9, 0x42, 0x6d, 0x31, 0x1e, 0x1a, 0x7e, 0xff, 0x68, 0xe4,
-0x4b, 0xcc, 0xfb, 0xb9, 0xb5, 0xaf, 0xbb, 0xae, 0xf1, 0xb6, 0x0b, 0xc8, 0x8f, 0xe0, 0x36, 0xfe,
-0x8b, 0x1d, 0xaf, 0x3a, 0x09, 0x51, 0x3c, 0x5d, 0xac, 0x5c, 0x59, 0x4f, 0x73, 0x37, 0x86, 0x18,
-0xe6, 0xf6, 0xfb, 0xd6, 0x9f, 0xbc, 0xb0, 0xaa, 0x94, 0xa2, 0x7c, 0xa4, 0x3d, 0xb0, 0x19, 0xc5,
-0xe1, 0xe1, 0xe0, 0x03, 0xa1, 0x27, 0x47, 0x48, 0xd2, 0x60, 0x4c, 0x6c, 0x54, 0x68, 0x3c, 0x55,
-0x95, 0x36, 0x8e, 0x11, 0xac, 0xeb, 0xfb, 0xc9, 0xf7, 0xaf, 0xee, 0x9f, 0x5a, 0x9a, 0x2e, 0x9f,
-0x15, 0xae, 0x87, 0xc6, 0x0c, 0xe7, 0xda, 0x0c, 0x85, 0x33, 0xa8, 0x55, 0x4e, 0x6d, 0x94, 0x75,
-0x74, 0x6c, 0xbf, 0x53, 0x67, 0x30, 0xaa, 0x08, 0x01, 0xe2, 0xe7, 0xc0, 0xae, 0xa8, 0xb4, 0x9a,
-0x7e, 0x97, 0xee, 0x9e, 0xe1, 0xb0, 0xe7, 0xcc, 0xd4, 0xf0, 0xd8, 0x18, 0xf7, 0x3f, 0x32, 0x60,
-0xbc, 0x73, 0xac, 0x76, 0x4a, 0x68, 0x09, 0x4c, 0x5d, 0x27, 0xe8, 0xff, 0xdb, 0xda, 0x0f, 0xbc,
-0x18, 0xa6, 0x80, 0x9a, 0xb0, 0x99, 0xec, 0xa3, 0x19, 0xb9, 0xbf, 0xd7, 0xf6, 0xfc, 0x45, 0x24,
-0x25, 0x48, 0x62, 0x63, 0x62, 0x71, 0x8a, 0x6f, 0xa8, 0x5e, 0xfb, 0x41, 0xbb, 0x1e, 0xe0, 0xf9,
-0x97, 0xd7, 0x7b, 0xbb, 0x50, 0xa8, 0x70, 0x9f, 0xa6, 0xa1, 0xe3, 0xae, 0x27, 0xc6, 0x66, 0xe5,
-0xa6, 0x08, 0x49, 0x2b, 0x3b, 0x49, 0xfe, 0x5d, 0xde, 0x66, 0x62, 0x62, 0x6f, 0x51, 0x13, 0x37,
-0x20, 0x17, 0xc0, 0xf5, 0xf1, 0xd6, 0x6d, 0xbe, 0x6d, 0xae, 0x20, 0xa9, 0x79, 0xae, 0xed, 0xbd,
-0x8b, 0xd5, 0xec, 0xf1, 0xce, 0x0f, 0x91, 0x2b, 0x3d, 0x42, 0x5d, 0x51, 0x1a, 0x57, 0x5f, 0x52,
-0x97, 0x43, 0xa5, 0x2c, 0xa0, 0x10, 0x9c, 0xf3, 0x57, 0xd9, 0x51, 0xc5, 0x31, 0xba, 0xc7, 0xb8,
-0xcf, 0xc0, 0x47, 0xd0, 0xba, 0xe4, 0x48, 0xfb, 0x42, 0x11, 0xe3, 0x24, 0xcb, 0x34, 0xa5, 0x3f,
-0xb9, 0x43, 0xff, 0x3f, 0x13, 0x34, 0x55, 0x21, 0x56, 0x0a, 0xe6, 0xf2, 0xdd, 0xde, 0x25, 0xd1,
-0x3b, 0xcb, 0x2b, 0xcd, 0x9d, 0xd5, 0x39, 0xe2, 0xa2, 0xf0, 0xe8, 0xfe, 0x62, 0x0c, 0x7e, 0x18,
-0xed, 0x22, 0xa3, 0x2a, 0x5b, 0x2e, 0x9f, 0x2c, 0x83, 0x24, 0x24, 0x17, 0xce, 0x06, 0xfe, 0xf6,
-0x74, 0xea, 0x29, 0xe3, 0x87, 0xe1, 0x7e, 0xe4, 0x40, 0xea, 0xba, 0xf0, 0xde, 0xf6, 0x30, 0xfc,
-0x46, 0x01, 0xd8, 0x06, 0xf2, 0x0c, 0x2c, 0x13, 0xb2, 0x17, 0x32, 0x19, 0xb2, 0x16, 0xb0, 0x10,
-0xf0, 0x08, 0x8e, 0x01, 0x74, 0xfc, 0x14, 0xfa, 0x0e, 0xfa, 0xd2, 0xfa, 0x2e, 0xfb, 0x1e, 0xfa,
-0xb6, 0xf7, 0xc8, 0xf4, 0x9e, 0xf2, 0xc2, 0xf2, 0xa8, 0xf5, 0xe2, 0xfa, 0x68, 0x01, 0xb2, 0x07,
-0xaa, 0x0c, 0xd2, 0x0f, 0x76, 0x11, 0x40, 0x12, 0x96, 0x12, 0x1e, 0x12, 0xac, 0x10, 0x56, 0x0d,
-0x96, 0x07, 0x86, 0xff, 0xb4, 0xf5, 0xa8, 0xeb, 0x3b, 0xe3, 0x4f, 0xde, 0x31, 0xde, 0x93, 0xe3,
-0x5c, 0xed, 0x2c, 0xfa, 0xe8, 0x07, 0x8e, 0x14, 0xe5, 0x1e, 0xc7, 0x25, 0x23, 0x29, 0xbf, 0x28,
-0x79, 0x24, 0x49, 0x1c, 0x60, 0x10, 0x6c, 0x01, 0x6c, 0xf0, 0x61, 0xdf, 0xcf, 0xd0, 0xcd, 0xc7,
-0x7d, 0xc6, 0xf7, 0xcd, 0x99, 0xdd, 0xc4, 0xf2, 0xe6, 0x09, 0x57, 0x1f, 0x25, 0x30, 0xf3, 0x3a,
-0x01, 0x3f, 0xa9, 0x3c, 0x5f, 0x34, 0xeb, 0x26, 0xcc, 0x14, 0x02, 0xff, 0x34, 0xe7, 0xf9, 0xcf,
-0xd3, 0xbc, 0xa5, 0xb1, 0xa1, 0xb1, 0xd5, 0xbd, 0xcb, 0xd4, 0x5e, 0xf2, 0x6e, 0x11, 0xd9, 0x2c,
-0x4b, 0x41, 0xf5, 0x4c, 0x11, 0x50, 0x05, 0x4b, 0x05, 0x3f, 0xab, 0x2c, 0x00, 0x15, 0x28, 0xf9,
-0x6b, 0xdb, 0x6f, 0xbf, 0xf0, 0xa9, 0xd6, 0x9f, 0xa6, 0xa3, 0xe9, 0xb5, 0xad, 0xd3, 0x98, 0xf7,
-0x48, 0x1b, 0x73, 0x39, 0xf3, 0x4e, 0x94, 0x5a, 0x84, 0x5c, 0x32, 0x55, 0x95, 0x45, 0xab, 0x2e,
-0x5c, 0x11, 0xa6, 0xef, 0xef, 0xcc, 0x61, 0xae, 0x80, 0x99, 0x84, 0x92, 0x7a, 0x9b, 0x6b, 0xb3,
-0x4b, 0xd6, 0xf8, 0xfd, 0x09, 0x24, 0x71, 0x43, 0x72, 0x59, 0xe0, 0x64, 0x5c, 0x65, 0x24, 0x5b,
-0x05, 0x47, 0x67, 0x2a, 0x72, 0x07, 0x7d, 0xe1, 0x3d, 0xbd, 0x62, 0xa0, 0xca, 0x8f, 0x4c, 0x8e,
-0x50, 0x9c, 0xd3, 0xb7, 0xd9, 0xdc, 0x4e, 0x05, 0x5d, 0x2b, 0x69, 0x4a, 0xfa, 0x5f, 0x56, 0x6a,
-0x86, 0x68, 0x8e, 0x5a, 0xe1, 0x41, 0x07, 0x21, 0x20, 0xfb, 0x9b, 0xd4, 0x9d, 0xb2, 0x4a, 0x9a,
-0xd6, 0x8e, 0x9a, 0x91, 0x46, 0xa2, 0xe5, 0xbe, 0xbd, 0xe3, 0x50, 0x0b, 0x71, 0x30, 0xc7, 0x4e,
-0x2a, 0x63, 0x4c, 0x6b, 0xe8, 0x65, 0xe5, 0x53, 0x69, 0x37, 0x3c, 0x14, 0x8e, 0xee, 0x25, 0xcb,
-0x55, 0xae, 0x8e, 0x9b, 0x7e, 0x94, 0xd4, 0x99, 0x2a, 0xab, 0x1d, 0xc7, 0x6c, 0xea, 0x88, 0x10,
-0x27, 0x34, 0x9b, 0x50, 0x30, 0x62, 0x80, 0x66, 0x0c, 0x5d, 0x8b, 0x47, 0x8b, 0x29, 0xa4, 0x07,
-0x12, 0xe6, 0x8f, 0xc8, 0x2f, 0xb2, 0x70, 0xa4, 0x6c, 0xa0, 0x82, 0xa6, 0x3d, 0xb7, 0x4b, 0xd1,
-0x4e, 0xf2, 0x68, 0x15, 0xa3, 0x35, 0x0d, 0x4e, 0xdc, 0x5a, 0x74, 0x5a, 0x9f, 0x4d, 0x61, 0x37,
-0x7a, 0x1b, 0x50, 0xfe, 0x1f, 0xe3, 0xbb, 0xcc, 0x4b, 0xbc, 0x73, 0xb2, 0x23, 0xb0, 0x25, 0xb6,
-0x2d, 0xc5, 0x5d, 0xdc, 0x50, 0xf9, 0xa8, 0x17, 0x71, 0x32, 0x0b, 0x45, 0x79, 0x4c, 0x8d, 0x48,
-0x05, 0x3b, 0xfd, 0x26, 0x64, 0x10, 0x2e, 0xfa, 0xa4, 0xe6, 0xe3, 0xd6, 0x71, 0xcb, 0xb3, 0xc4,
-0x65, 0xc3, 0x81, 0xc8, 0xa3, 0xd4, 0x62, 0xe7, 0x38, 0xfe, 0x8a, 0x15, 0xdd, 0x28, 0xfd, 0x34,
-0x1f, 0x38, 0x05, 0x33, 0xbb, 0x27, 0x30, 0x19, 0xd4, 0x09, 0x7a, 0xfb, 0x44, 0xef, 0x6e, 0xe5,
-0x43, 0xde, 0xa7, 0xd9, 0x9f, 0xd8, 0xa7, 0xdb, 0x4b, 0xe3, 0x04, 0xef, 0x8a, 0xfd, 0x30, 0x0c,
-0x18, 0x18, 0x4b, 0x1f, 0xe3, 0x20, 0xcf, 0x1d, 0x6e, 0x17, 0x7e, 0x0f, 0xa0, 0x07, 0xce, 0x00,
-0x28, 0xfb, 0x96, 0xf6, 0x10, 0xf3, 0x44, 0xf0, 0x5c, 0xee, 0x94, 0xed, 0x54, 0xee, 0x6c, 0xf1,
-0x5c, 0xf6, 0x4a, 0xfc, 0x20, 0x02, 0xc6, 0x06, 0x92, 0x09, 0x90, 0x0a, 0x3a, 0x0a, 0x6c, 0x09,
-0x24, 0x09, 0x7c, 0x09, 0x5a, 0x0a, 0x24, 0x0b, 0xda, 0x0a, 0x58, 0x08, 0x2a, 0x03, 0xb6, 0xfb,
-0x84, 0xf3, 0xaa, 0xec, 0x76, 0xe8, 0xc8, 0xe7, 0x10, 0xea, 0x5e, 0xee, 0x9e, 0xf3, 0x46, 0xf9,
-0x22, 0xff, 0xac, 0x05, 0x2e, 0x0d, 0x06, 0x15, 0x7f, 0x1c, 0xad, 0x21, 0xc1, 0x22, 0x33, 0x1e,
-0xb4, 0x13, 0x5a, 0x04, 0x0a, 0xf3, 0x57, 0xe3, 0xf3, 0xd7, 0x8f, 0xd2, 0x19, 0xd3, 0x77, 0xd8,
-0x2d, 0xe1, 0x10, 0xec, 0xae, 0xf8, 0xa8, 0x06, 0xc2, 0x15, 0x8b, 0x24, 0x07, 0x31, 0x8d, 0x38,
-0x91, 0x38, 0x59, 0x2f, 0xb5, 0x1d, 0x36, 0x06, 0x02, 0xed, 0x7f, 0xd6, 0x55, 0xc6, 0x61, 0xbe,
-0xbb, 0xbe, 0xe1, 0xc5, 0x2b, 0xd2, 0xc5, 0xe2, 0x54, 0xf6, 0x1a, 0x0c, 0x4f, 0x22, 0xd3, 0x36,
-0x1b, 0x46, 0x21, 0x4d, 0x39, 0x49, 0x49, 0x3a, 0x23, 0x22, 0x0c, 0x04, 0xe0, 0xe4, 0x99, 0xc9,
-0xfd, 0xb5, 0x5d, 0xac, 0xe1, 0xac, 0x4f, 0xb6, 0x5d, 0xc7, 0x77, 0xde, 0xb8, 0xf9, 0xe0, 0x16,
-0xf9, 0x32, 0x35, 0x4a, 0x28, 0x59, 0xb8, 0x5c, 0x99, 0x53, 0xeb, 0x3e, 0x53, 0x21, 0xca, 0xfe,
-0xef, 0xdb, 0x97, 0xbd, 0xea, 0xa7, 0x9c, 0x9d, 0x3a, 0x9f, 0xef, 0xab, 0xa3, 0xc2, 0xb3, 0xe0,
-0xce, 0x02, 0x31, 0x25, 0x9b, 0x43, 0x44, 0x5a, 0x06, 0x66, 0x02, 0x65, 0x42, 0x57, 0xad, 0x3e,
-0xef, 0x1d, 0x8e, 0xf8, 0x03, 0xd3, 0x87, 0xb2, 0xd6, 0x9b, 0xec, 0x91, 0x16, 0x96, 0xc0, 0xa7,
-0x9b, 0xc4, 0x04, 0xe9, 0xe4, 0x0f, 0xfd, 0x33, 0x45, 0x51, 0x76, 0x64, 0xba, 0x6b, 0x9c, 0x66,
-0xba, 0x55, 0xdb, 0x3a, 0x7a, 0x18, 0xb4, 0xf1, 0xe1, 0xca, 0xd2, 0xa9, 0x98, 0x93, 0x04, 0x8c,
-0x7c, 0x94, 0x5f, 0xab, 0x69, 0xcd, 0xea, 0xf4, 0x34, 0x1c, 0x23, 0x3e, 0x98, 0x57, 0x78, 0x66,
-0x06, 0x6a, 0x70, 0x62, 0x11, 0x50, 0xb5, 0x34, 0xc6, 0x11, 0x60, 0xea, 0xb1, 0xc3, 0xb8, 0xa3,
-0x04, 0x90, 0x72, 0x8c, 0x9c, 0x99, 0xc5, 0xb4, 0x3d, 0xd9, 0x68, 0x00, 0xbd, 0x24, 0xab, 0x42,
-0x66, 0x57, 0x54, 0x62, 0x20, 0x63, 0xd4, 0x59, 0x15, 0x47, 0xb7, 0x2b, 0xde, 0x08, 0xa3, 0xe2,
-0x4f, 0xbe, 0x06, 0xa2, 0x4e, 0x93, 0x0c, 0x95, 0xf8, 0xa5, 0xbf, 0xc2, 0xb8, 0xe5, 0xe6, 0x08,
-0x57, 0x28, 0xc5, 0x40, 0x3b, 0x51, 0xfc, 0x58, 0x08, 0x58, 0x17, 0x4e, 0x9f, 0x3b, 0xff, 0x20,
-0x66, 0x00, 0xb3, 0xdd, 0x25, 0xbe, 0x8c, 0xa7, 0x12, 0x9e, 0x2e, 0xa3, 0x2f, 0xb5, 0x27, 0xd0,
-0xf0, 0xee, 0xdc, 0x0c, 0x85, 0x26, 0x53, 0x3a, 0xff, 0x46, 0x05, 0x4c, 0x33, 0x49, 0xa1, 0x3e,
-0x53, 0x2c, 0x16, 0x14, 0x34, 0xf8, 0xf5, 0xdb, 0x3b, 0xc4, 0xe5, 0xb4, 0x5d, 0xb0, 0x67, 0xb7,
-0xcb, 0xc7, 0x0d, 0xde, 0xa2, 0xf6, 0xbe, 0x0d, 0x05, 0x21, 0x69, 0x2f, 0xcd, 0x37, 0x05, 0x3a,
-0x2d, 0x36, 0x33, 0x2c, 0x23, 0x1d, 0xdc, 0x0a, 0xb0, 0xf6, 0x41, 0xe3, 0x55, 0xd3, 0x11, 0xc9,
-0x57, 0xc6, 0xa7, 0xcb, 0x7f, 0xd7, 0xce, 0xe7, 0x8c, 0xf9, 0x2a, 0x0a, 0x8e, 0x17, 0x3f, 0x20,
-0x65, 0x24, 0x51, 0x24, 0x5f, 0x20, 0xa0, 0x19, 0x06, 0x11, 0x48, 0x07, 0xf0, 0xfc, 0x6e, 0xf2,
-0x9a, 0xe8, 0x41, 0xe1, 0xe3, 0xdd, 0x7b, 0xdf, 0x6c, 0xe5, 0x64, 0xee, 0x8e, 0xf8, 0xfa, 0x01,
-0x38, 0x09, 0x76, 0x0d, 0x7a, 0x0e, 0x6e, 0x0d, 0x96, 0x0b, 0x02, 0x0a, 0x4c, 0x09, 0xf2, 0x08,
-0xd6, 0x07, 0xa0, 0x04, 0x9c, 0xff, 0xea, 0xf9, 0xd0, 0xf5, 0x8a, 0xf3, 0x98, 0xf4, 0x5a, 0xf6,
-0xdc, 0xf6, 0x64, 0xf6, 0xca, 0xf5, 0x5a, 0xf7, 0x5c, 0xfb, 0x6a, 0x02, 0x22, 0x0b, 0xbc, 0x13,
-0x5a, 0x19, 0x96, 0x1a, 0x18, 0x17, 0xfc, 0x0f, 0xc2, 0x07, 0xb6, 0xff, 0x90, 0xf8, 0x50, 0xf2,
-0x58, 0xec, 0x60, 0xe6, 0x53, 0xe1, 0x4f, 0xde, 0x49, 0xdf, 0x5e, 0xe5, 0x9c, 0xf0, 0xbc, 0xff,
-0x90, 0x10, 0xef, 0x1f, 0xdb, 0x2a, 0x93, 0x2f, 0x33, 0x2d, 0x25, 0x25, 0xfa, 0x18, 0x6c, 0x0a,
-0x00, 0xfb, 0x98, 0xeb, 0xff, 0xdc, 0xe1, 0xd0, 0x09, 0xc9, 0x1b, 0xc7, 0x7b, 0xcc, 0x13, 0xd9,
-0xea, 0xeb, 0xa8, 0x02, 0x34, 0x1a, 0x09, 0x2f, 0xff, 0x3d, 0xb5, 0x44, 0x4d, 0x42, 0x5d, 0x37,
-0x9f, 0x25, 0x74, 0x0f, 0x24, 0xf7, 0x45, 0xdf, 0x7b, 0xca, 0x4b, 0xbb, 0x03, 0xb4, 0xb1, 0xb5,
-0x5b, 0xc0, 0x19, 0xd3, 0xf2, 0xeb, 0x0e, 0x08, 0x49, 0x24, 0x13, 0x3d, 0xdd, 0x4e, 0xfa, 0x56,
-0x6f, 0x53, 0x8b, 0x44, 0x3f, 0x2c, 0xe2, 0x0d, 0x80, 0xed, 0x7b, 0xcf, 0x87, 0xb7, 0x7a, 0xa8,
-0x10, 0xa4, 0xe0, 0xa9, 0x5b, 0xb9, 0xfb, 0xd0, 0x5a, 0xee, 0xb4, 0x0e, 0xc5, 0x2e, 0x8f, 0x4a,
-0x4e, 0x5e, 0x56, 0x66, 0xf2, 0x5f, 0xad, 0x4b, 0x75, 0x2c, 0x1c, 0x07, 0x7b, 0xe1, 0xdb, 0xc0,
-0x26, 0xa9, 0xa4, 0x9c, 0x66, 0x9b, 0x9c, 0xa4, 0x6b, 0xb7, 0x23, 0xd2, 0xc4, 0xf2, 0x7a, 0x16,
-0x9d, 0x39, 0x98, 0x57, 0x8a, 0x6b, 0xe0, 0x70, 0xa2, 0x65, 0x3b, 0x4b, 0x19, 0x26, 0xd6, 0xfc,
-0x83, 0xd5, 0x89, 0xb5, 0xe4, 0x9f, 0x22, 0x96, 0xcc, 0x97, 0x1a, 0xa4, 0xdf, 0xb9, 0xb3, 0xd7,
-0x56, 0xfb, 0x6b, 0x21, 0xdd, 0x45, 0x02, 0x63, 0xda, 0x73, 0x2a, 0x74, 0x40, 0x63, 0x0d, 0x44,
-0x30, 0x1c, 0x34, 0xf2, 0x4f, 0xcc, 0x05, 0xaf, 0xac, 0x9c, 0x16, 0x96, 0x9e, 0x9a, 0x78, 0xa9,
-0xb3, 0xc1, 0x99, 0xe1, 0x70, 0x06, 0x6d, 0x2c, 0xcb, 0x4e, 0x0a, 0x68, 0x96, 0x73, 0xc8, 0x6e,
-0x14, 0x5a, 0x4f, 0x39, 0x58, 0x12, 0xce, 0xea, 0x59, 0xc8, 0x57, 0xae, 0xe0, 0x9e, 0xc6, 0x9a,
-0xa0, 0xa1, 0x8f, 0xb2, 0xa7, 0xcc, 0x84, 0xed, 0x96, 0x11, 0xe5, 0x34, 0x31, 0x52, 0x7c, 0x65,
-0x76, 0x6b, 0x00, 0x63, 0x8f, 0x4d, 0xc9, 0x2e, 0x44, 0x0b, 0xf4, 0xe7, 0x6f, 0xc9, 0xe7, 0xb2,
-0x62, 0xa6, 0x98, 0xa4, 0x2d, 0xad, 0x9d, 0xbf, 0xd1, 0xd9, 0xf0, 0xf8, 0x10, 0x19, 0x5f, 0x36,
-0x05, 0x4d, 0x44, 0x5a, 0x9a, 0x5c, 0x81, 0x53, 0x8b, 0x40, 0x8d, 0x25, 0xa6, 0x06, 0xda, 0xe7,
-0xa1, 0xcd, 0xd7, 0xba, 0xd1, 0xb1, 0xcd, 0xb2, 0xa9, 0xbd, 0x8f, 0xd0, 0x7c, 0xe8, 0xa8, 0x02,
-0x6a, 0x1b, 0x83, 0x30, 0x15, 0x40, 0xdb, 0x48, 0xa3, 0x49, 0x4f, 0x42, 0x95, 0x32, 0x8b, 0x1c,
-0x14, 0x03, 0xec, 0xe9, 0x3d, 0xd5, 0xa9, 0xc7, 0x63, 0xc2, 0xf9, 0xc5, 0xfd, 0xd0, 0x3d, 0xe1,
-0x14, 0xf4, 0x72, 0x06, 0xe2, 0x16, 0x5f, 0x24, 0x33, 0x2e, 0x15, 0x34, 0x49, 0x35, 0x97, 0x30,
-0xe9, 0x25, 0xb0, 0x15, 0x80, 0x02, 0xf6, 0xef, 0x2b, 0xe1, 0x97, 0xd8, 0x47, 0xd7, 0x09, 0xdc,
-0x3a, 0xe5, 0x10, 0xf0, 0x92, 0xfa, 0xd4, 0x03, 0x80, 0x0b, 0x0e, 0x12, 0xd0, 0x17, 0xb5, 0x1c,
-0x69, 0x1f, 0xdf, 0x1e, 0xb2, 0x19, 0xa2, 0x10, 0x46, 0x05, 0x72, 0xfa, 0xac, 0xf2, 0x34, 0xef,
-0xd4, 0xef, 0xcc, 0xf2, 0x56, 0xf6, 0xe6, 0xf8, 0x16, 0xfa, 0x5e, 0xfa, 0xd2, 0xfa, 0x68, 0xfc,
-0xce, 0xff, 0xba, 0x04, 0x50, 0x0a, 0xea, 0x0e, 0x42, 0x11, 0xba, 0x10, 0x8c, 0x0e, 0xb6, 0x0b,
-0x9a, 0x09, 0x3c, 0x08, 0x00, 0x07, 0x16, 0x05, 0x40, 0x01, 0x96, 0xfb, 0xae, 0xf4, 0x0a, 0xee,
-0xec, 0xe8, 0xda, 0xe6, 0xa2, 0xe8, 0xa6, 0xee, 0x14, 0xf8, 0xf0, 0x02, 0xb6, 0x0d, 0x9a, 0x16,
-0x11, 0x1d, 0xab, 0x20, 0x73, 0x21, 0x91, 0x1f, 0xae, 0x1a, 0xe8, 0x12, 0x32, 0x08, 0x6c, 0xfb,
-0xb2, 0xed, 0xad, 0xe0, 0x6d, 0xd6, 0x09, 0xd1, 0x1f, 0xd2, 0x39, 0xda, 0xea, 0xe8, 0xae, 0xfb,
-0xa2, 0x0f, 0x93, 0x21, 0xfd, 0x2e, 0xfd, 0x36, 0x97, 0x38, 0x45, 0x34, 0xbf, 0x2a, 0xd3, 0x1c,
-0x96, 0x0b, 0x0e, 0xf8, 0xc6, 0xe3, 0x15, 0xd1, 0xb1, 0xc2, 0x07, 0xbb, 0x21, 0xbd, 0x8f, 0xc9,
-0x3d, 0xdf, 0xf8, 0xfa, 0x86, 0x17, 0xa1, 0x30, 0x97, 0x42, 0x91, 0x4b, 0x93, 0x4b, 0xb9, 0x43,
-0x07, 0x35, 0x77, 0x21, 0x1a, 0x0a, 0x5c, 0xf0, 0xb1, 0xd6, 0x89, 0xbf, 0xc1, 0xae, 0x0c, 0xa8,
-0xab, 0xad, 0x77, 0xc0, 0x15, 0xde, 0x80, 0x01, 0x5b, 0x24, 0x07, 0x41, 0xc5, 0x53, 0x9a, 0x5b,
-0xfe, 0x58, 0x2f, 0x4d, 0x6b, 0x3a, 0xe3, 0x21, 0x58, 0x05, 0x4e, 0xe6, 0xe7, 0xc7, 0x23, 0xae,
-0x7e, 0x9d, 0xb6, 0x99, 0xac, 0xa4, 0x0b, 0xbe, 0xab, 0xe1, 0x92, 0x09, 0xed, 0x2e, 0x7f, 0x4c,
-0x42, 0x5f, 0x4e, 0x66, 0xf8, 0x61, 0xb1, 0x53, 0x23, 0x3d, 0xd1, 0x1f, 0x1e, 0xfe, 0xaf, 0xda,
-0x95, 0xb9, 0x04, 0xa0, 0x16, 0x92, 0x16, 0x93, 0xac, 0xa3, 0xb9, 0xc1, 0xea, 0xe8, 0xb0, 0x12,
-0x61, 0x38, 0x58, 0x55, 0xe6, 0x66, 0xfc, 0x6b, 0x38, 0x65, 0x6d, 0x53, 0xc7, 0x38, 0x96, 0x17,
-0x54, 0xf2, 0x4d, 0xcd, 0x47, 0xad, 0x38, 0x97, 0x84, 0x8e, 0xae, 0x94, 0x20, 0xa9, 0x81, 0xc9,
-0xd2, 0xf0, 0x62, 0x19, 0xb5, 0x3d, 0x58, 0x59, 0xac, 0x69, 0x10, 0x6d, 0x9e, 0x63, 0xa3, 0x4e,
-0x5f, 0x30, 0xfe, 0x0b, 0xc8, 0xe5, 0x7d, 0xc2, 0xea, 0xa6, 0x7e, 0x96, 0xf2, 0x92, 0xa8, 0x9c,
-0x67, 0xb2, 0xe3, 0xd1, 0x6e, 0xf7, 0x05, 0x1e, 0x9b, 0x40, 0x9c, 0x5a, 0xae, 0x68, 0x36, 0x69,
-0x4a, 0x5c, 0xc1, 0x43, 0x43, 0x23, 0xf8, 0xfe, 0x95, 0xdb, 0xbd, 0xbd, 0x6e, 0xa8, 0xb6, 0x9d,
-0xe4, 0x9d, 0xbe, 0xa8, 0xb7, 0xbd, 0x0f, 0xdb, 0x80, 0xfd, 0xe3, 0x20, 0x1f, 0x40, 0x8c, 0x56,
-0x16, 0x61, 0xf0, 0x5d, 0x21, 0x4e, 0x8b, 0x34, 0x02, 0x15, 0x96, 0xf4, 0x4f, 0xd7, 0x53, 0xc0,
-0x51, 0xb1, 0xe6, 0xaa, 0xf1, 0xac, 0xab, 0xb7, 0x99, 0xca, 0x6e, 0xe4, 0xec, 0x02, 0xa9, 0x21,
-0x39, 0x3c, 0xff, 0x4d, 0x1d, 0x54, 0xcf, 0x4d, 0xe1, 0x3c, 0xc5, 0x24, 0xe8, 0x09, 0x68, 0xf0,
-0xe1, 0xda, 0xfb, 0xca, 0x15, 0xc1, 0x1b, 0xbd, 0x4f, 0xbf, 0xdb, 0xc7, 0xeb, 0xd6, 0xe8, 0xeb,
-0x9e, 0x04, 0x65, 0x1d, 0x0b, 0x32, 0xab, 0x3e, 0x03, 0x41, 0xab, 0x39, 0x9f, 0x2a, 0xba, 0x17,
-0x56, 0x04, 0xea, 0xf2, 0x02, 0xe5, 0xed, 0xda, 0x75, 0xd4, 0x99, 0xd1, 0xdd, 0xd2, 0x61, 0xd8,
-0xe3, 0xe2, 0x84, 0xf1, 0xea, 0x02, 0x50, 0x14, 0x35, 0x22, 0x05, 0x2a, 0xb1, 0x2a, 0xf5, 0x24,
-0xe0, 0x1a, 0x0e, 0x0f, 0x96, 0x03, 0xee, 0xf9, 0x82, 0xf2, 0x00, 0xed, 0x58, 0xe9, 0x28, 0xe7,
-0xc2, 0xe6, 0x54, 0xe8, 0x76, 0xec, 0x22, 0xf3, 0xbc, 0xfb, 0xdc, 0x04, 0xa0, 0x0c, 0xa4, 0x11,
-0x42, 0x13, 0xe6, 0x11, 0x9c, 0x0e, 0xb6, 0x0a, 0x18, 0x07, 0x84, 0x04, 0xee, 0x02, 0xce, 0x01,
-0x74, 0x00, 0x34, 0xfe, 0xc0, 0xfa, 0x98, 0xf6, 0x40, 0xf2, 0x36, 0xef, 0x5a, 0xee, 0x0a, 0xf0,
-0xb2, 0xf3, 0x74, 0xf8, 0x52, 0xfd, 0xde, 0x01, 0xf4, 0x05, 0xb4, 0x09, 0xbe, 0x0d, 0xb4, 0x11,
-0x78, 0x15, 0xcc, 0x17, 0x7e, 0x17, 0x3e, 0x13, 0xb0, 0x0a, 0x7a, 0xfe, 0xd4, 0xf0, 0x64, 0xe4,
-0xcd, 0xdb, 0xad, 0xd8, 0x17, 0xdb, 0xeb, 0xe1, 0x56, 0xeb, 0x10, 0xf6, 0x1e, 0x01, 0x54, 0x0c,
-0x60, 0x17, 0xd7, 0x21, 0x63, 0x2a, 0x21, 0x2f, 0xd7, 0x2d, 0x3f, 0x25, 0x8a, 0x15, 0x76, 0x00,
-0xce, 0xe9, 0xa5, 0xd5, 0xc5, 0xc7, 0x69, 0xc2, 0x41, 0xc5, 0xff, 0xce, 0x39, 0xdd, 0x12, 0xee,
-0x1a, 0x00, 0xb8, 0x12, 0x9f, 0x24, 0x95, 0x34, 0xfd, 0x3f, 0x23, 0x44, 0x4b, 0x3f, 0x3f, 0x30,
-0xe6, 0x18, 0x38, 0xfc, 0x09, 0xdf, 0x15, 0xc6, 0x91, 0xb5, 0x45, 0xaf, 0x8b, 0xb3, 0x4b, 0xc0,
-0x41, 0xd3, 0x66, 0xea, 0xc8, 0x03, 0x6b, 0x1d, 0x71, 0x35, 0x9d, 0x48, 0x41, 0x54, 0x4e, 0x55,
-0x8b, 0x4a, 0xdb, 0x34, 0xd0, 0x16, 0x98, 0xf4, 0xff, 0xd2, 0x77, 0xb7, 0xa4, 0xa5, 0x12, 0xa0,
-0xfc, 0xa5, 0x5b, 0xb6, 0x9b, 0xce, 0x3e, 0xec, 0x6e, 0x0c, 0xed, 0x2b, 0x51, 0x47, 0xc0, 0x5a,
-0x46, 0x63, 0x0a, 0x5f, 0x93, 0x4e, 0xb5, 0x33, 0xb0, 0x11, 0x84, 0xec, 0xfd, 0xc8, 0x19, 0xac,
-0xd8, 0x99, 0xb6, 0x94, 0x10, 0x9d, 0x85, 0xb1, 0x95, 0xcf, 0x80, 0xf3, 0xf4, 0x18, 0x61, 0x3b,
-0x68, 0x56, 0xc6, 0x66, 0x7e, 0x6a, 0x5c, 0x61, 0xb5, 0x4c, 0x1d, 0x2f, 0x5a, 0x0b, 0x30, 0xe5,
-0xeb, 0xc0, 0xac, 0xa3, 0xf0, 0x91, 0x88, 0x8e, 0x10, 0x9a, 0x47, 0xb3, 0x97, 0xd6, 0xc2, 0xfe,
-0x29, 0x26, 0xa9, 0x47, 0x8e, 0x5f, 0x66, 0x6b, 0xa0, 0x6a, 0xf2, 0x5d, 0x53, 0x47, 0xe5, 0x28,
-0xe6, 0x04, 0x97, 0xde, 0x8b, 0xba, 0x0a, 0x9e, 0xec, 0x8d, 0x84, 0x8d, 0x66, 0x9d, 0x35, 0xbb,
-0xf9, 0xe1, 0x42, 0x0b, 0xf9, 0x30, 0x8f, 0x4e, 0x5c, 0x61, 0x66, 0x68, 0x2e, 0x64, 0x0c, 0x56,
-0x4b, 0x3f, 0x69, 0x21, 0x3e, 0xfe, 0xb7, 0xd8, 0x15, 0xb6, 0x1a, 0x9c, 0xba, 0x8f, 0xd8, 0x93,
-0xf8, 0xa7, 0x37, 0xc8, 0xcc, 0xee, 0x06, 0x15, 0xb7, 0x35, 0xc3, 0x4d, 0x82, 0x5b, 0xfe, 0x5e,
-0x08, 0x59, 0x63, 0x4a, 0x43, 0x34, 0x88, 0x17, 0x0e, 0xf6, 0x9f, 0xd3, 0x4d, 0xb5, 0x96, 0xa0,
-0xc4, 0x99, 0x14, 0xa2, 0xe3, 0xb7, 0x01, 0xd7, 0x7a, 0xf9, 0xec, 0x19, 0x67, 0x34, 0xbb, 0x46,
-0x73, 0x50, 0xa1, 0x51, 0xd1, 0x4a, 0xf3, 0x3c, 0x51, 0x28, 0x44, 0x0e, 0x0a, 0xf1, 0xff, 0xd3,
-0xc9, 0xbb, 0xcf, 0xac, 0xda, 0xa9, 0x7d, 0xb3, 0xc9, 0xc7, 0x7f, 0xe2, 0xf6, 0xfe, 0xcc, 0x18,
-0x31, 0x2d, 0xb1, 0x3a, 0xdd, 0x40, 0xff, 0x3f, 0xc5, 0x38, 0xcf, 0x2b, 0x4e, 0x1a, 0x80, 0x05,
-0x48, 0xef, 0x73, 0xda, 0xd9, 0xc9, 0x3b, 0xc0, 0x5b, 0xbf, 0x75, 0xc7, 0xa1, 0xd6, 0x60, 0xea,
-0x2a, 0xff, 0x1e, 0x12, 0xdd, 0x20, 0x49, 0x2a, 0x07, 0x2e, 0x95, 0x2c, 0x7f, 0x26, 0xa3, 0x1c,
-0x36, 0x10, 0x5a, 0x02, 0x58, 0xf4, 0x78, 0xe7, 0x47, 0xdd, 0xcd, 0xd6, 0x55, 0xd5, 0x65, 0xd9,
-0x73, 0xe2, 0xc6, 0xee, 0x4e, 0xfc, 0xd2, 0x08, 0x0a, 0x12, 0x6e, 0x17, 0xb0, 0x18, 0xdc, 0x16,
-0xce, 0x12, 0x1c, 0x0e, 0x72, 0x09, 0x1c, 0x05, 0x98, 0x00, 0x30, 0xfb, 0x3e, 0xf5, 0x5c, 0xef,
-0x7a, 0xeb, 0x7c, 0xea, 0xe4, 0xec, 0xc4, 0xf1, 0xc6, 0xf7, 0x0e, 0xfd, 0x62, 0x00, 0x6e, 0x01,
-0x1a, 0x01, 0x98, 0x00, 0x7e, 0x01, 0x40, 0x04, 0x00, 0x09, 0xdc, 0x0d, 0x36, 0x11, 0x26, 0x11,
-0x60, 0x0d, 0xd8, 0x06, 0x32, 0xff, 0x84, 0xf8, 0x86, 0xf3, 0x6e, 0xf0, 0x30, 0xee, 0x2e, 0xec,
-0x0a, 0xea, 0xc2, 0xe8, 0x9a, 0xe9, 0xc0, 0xed, 0xf0, 0xf5, 0x68, 0x01, 0xb6, 0x0e, 0x46, 0x1b,
-0x1f, 0x24, 0x5d, 0x27, 0x51, 0x24, 0xde, 0x1b, 0xfc, 0x0f, 0xec, 0x02, 0xfe, 0xf5, 0x34, 0xea,
-0xb9, 0xdf, 0x29, 0xd7, 0xbd, 0xd1, 0xd5, 0xd0, 0x9f, 0xd5, 0x7b, 0xe0, 0x9a, 0xf0, 0x50, 0x04,
-0xe6, 0x18, 0x09, 0x2b, 0xe7, 0x37, 0x15, 0x3d, 0xcb, 0x39, 0xb9, 0x2e, 0xbb, 0x1d, 0x56, 0x09,
-0xec, 0xf3, 0x57, 0xdf, 0x9d, 0xcd, 0xd5, 0xc0, 0xab, 0xba, 0xc5, 0xbc, 0x2b, 0xc7, 0x33, 0xd9,
-0xd4, 0xf0, 0x3e, 0x0b, 0xd7, 0x24, 0xc3, 0x3a, 0xab, 0x49, 0x8f, 0x4f, 0xf1, 0x4a, 0x4b, 0x3c,
-0x51, 0x25, 0x42, 0x09, 0x80, 0xeb, 0xe9, 0xcf, 0x2b, 0xba, 0xbd, 0xac, 0x94, 0xa9, 0x61, 0xb0,
-0xaf, 0xc0, 0x43, 0xd8, 0xe0, 0xf4, 0x48, 0x13, 0x5d, 0x30, 0xd3, 0x48, 0x6a, 0x59, 0x50, 0x5f,
-0x46, 0x58, 0xcd, 0x44, 0x0d, 0x27, 0x56, 0x03, 0x3d, 0xdf, 0xa7, 0xbf, 0x00, 0xa9, 0xa4, 0x9d,
-0xfa, 0x9d, 0x36, 0xa9, 0xd7, 0xbd, 0x8b, 0xd9, 0xce, 0xf9, 0x8a, 0x1b, 0x69, 0x3b, 0x16, 0x56,
-0x58, 0x67, 0x76, 0x6b, 0x5c, 0x60, 0xbb, 0x46, 0x73, 0x22, 0x22, 0xf9, 0x59, 0xd1, 0xff, 0xb0,
-0x38, 0x9c, 0x6e, 0x94, 0x20, 0x99, 0x5e, 0xa8, 0x45, 0xc0, 0xaf, 0xde, 0xda, 0x00, 0x3f, 0x24,
-0x59, 0x45, 0x56, 0x60, 0x1a, 0x70, 0xc6, 0x70, 0x7c, 0x60, 0x69, 0x41, 0xb2, 0x18, 0x08, 0xed,
-0x7b, 0xc5, 0x9a, 0xa7, 0x60, 0x96, 0x22, 0x92, 0xb4, 0x99, 0x3c, 0xab, 0x45, 0xc5, 0xa4, 0xe5,
-0xc0, 0x09, 0x25, 0x2e, 0x19, 0x4f, 0xac, 0x67, 0x54, 0x73, 0xac, 0x6e, 0xb6, 0x59, 0xa9, 0x37,
-0x34, 0x0e, 0x1a, 0xe4, 0x8b, 0xbf, 0x68, 0xa5, 0xc4, 0x97, 0x78, 0x96, 0x48, 0xa0, 0x9d, 0xb3,
-0xf1, 0xce, 0xec, 0xef, 0x6e, 0x13, 0xe3, 0x35, 0xf9, 0x52, 0x8c, 0x66, 0x9c, 0x6c, 0xa4, 0x63,
-0x9f, 0x4c, 0x61, 0x2b, 0x06, 0x05, 0x63, 0xdf, 0xc7, 0xbf, 0xca, 0xa9, 0x4c, 0x9f, 0x04, 0xa0,
-0x0a, 0xab, 0x51, 0xbf, 0xcb, 0xda, 0xf6, 0xfa, 0xfa, 0x1b, 0x3b, 0x3a, 0xa7, 0x51, 0x14, 0x5f,
-0x70, 0x60, 0x1a, 0x55, 0x2b, 0x3f, 0x43, 0x21, 0xf8, 0xff, 0x9f, 0xdf, 0xd3, 0xc4, 0xa1, 0xb2,
-0xca, 0xaa, 0x43, 0xad, 0x63, 0xb9, 0xd5, 0xcd, 0xf4, 0xe7, 0xae, 0x04, 0x3b, 0x20, 0x4f, 0x37,
-0xbd, 0x47, 0x83, 0x4f, 0x3d, 0x4e, 0x2f, 0x44, 0xf9, 0x31, 0xe8, 0x19, 0x92, 0xfe, 0xd8, 0xe3,
-0x9f, 0xcd, 0x09, 0xbf, 0x7f, 0xb9, 0xc5, 0xbd, 0x93, 0xca, 0xad, 0xdd, 0x48, 0xf4, 0xa4, 0x0a,
-0x43, 0x1e, 0x57, 0x2d, 0x17, 0x37, 0x5d, 0x3b, 0x25, 0x3a, 0x17, 0x33, 0x55, 0x26, 0x86, 0x14,
-0xb8, 0xff, 0x10, 0xeb, 0x11, 0xda, 0xa3, 0xcf, 0x25, 0xcd, 0x73, 0xd2, 0xd7, 0xdd, 0x98, 0xec,
-0xca, 0xfb, 0x50, 0x09, 0x2c, 0x14, 0x1a, 0x1c, 0xa1, 0x21, 0xeb, 0x24, 0xb9, 0x25, 0x09, 0x23,
-0x2e, 0x1c, 0xf8, 0x10, 0x26, 0x03, 0x78, 0xf5, 0x8a, 0xea, 0xc8, 0xe4, 0x98, 0xe4, 0xde, 0xe8,
-0xbc, 0xef, 0xe2, 0xf6, 0xa2, 0xfc, 0xe0, 0x00, 0xbe, 0x03, 0x48, 0x06, 0x68, 0x09, 0x58, 0x0d,
-0x5e, 0x11, 0x14, 0x14, 0x38, 0x14, 0x38, 0x11, 0xe4, 0x0b, 0xc2, 0x05, 0xc2, 0x00, 0xba, 0xfd,
-0xd2, 0xfc, 0xd4, 0xfc, 0x74, 0xfc, 0x96, 0xfa, 0x36, 0xf7, 0x32, 0xf3, 0x16, 0xf0, 0x26, 0xef,
-0x6c, 0xf1, 0x1c, 0xf7, 0x54, 0xff, 0x58, 0x08, 0x44, 0x10, 0x38, 0x16, 0x2e, 0x19, 0x02, 0x1a,
-0xe6, 0x18, 0x4c, 0x16, 0x12, 0x12, 0xcc, 0x0b, 0x4e, 0x03, 0xf8, 0xf8, 0x1a, 0xee, 0x0a, 0xe4,
-0xb5, 0xdc, 0x8d, 0xd9, 0xa3, 0xdb, 0xa1, 0xe3, 0x86, 0xf0, 0xb4, 0x00, 0x64, 0x11, 0x49, 0x20,
-0x2b, 0x2b, 0xd7, 0x30, 0x23, 0x31, 0xfd, 0x2b, 0x47, 0x22, 0xec, 0x14, 0xe6, 0x04, 0xac, 0xf3,
-0x7d, 0xe2, 0x81, 0xd3, 0x81, 0xc8, 0x85, 0xc3, 0x83, 0xc6, 0xff, 0xd1, 0x8e, 0xe5, 0x4a, 0xfe,
-0x92, 0x18, 0x91, 0x2f, 0x33, 0x40, 0xb9, 0x47, 0x59, 0x46, 0x17, 0x3d, 0x75, 0x2d, 0xfc, 0x19,
-0xde, 0x03, 0x06, 0xed, 0xf7, 0xd6, 0xe3, 0xc3, 0x55, 0xb6, 0x17, 0xb1, 0x49, 0xb6, 0x37, 0xc7,
-0x15, 0xe2, 0x4e, 0x03, 0xb5, 0x24, 0xc3, 0x40, 0xfb, 0x52, 0xb2, 0x59, 0x1c, 0x55, 0x63, 0x47,
-0xef, 0x32, 0x34, 0x1a, 0x5e, 0xff, 0xa3, 0xe3, 0xaf, 0xc9, 0xaf, 0xb3, 0x92, 0xa5, 0x5e, 0xa2,
-0x63, 0xac, 0x0d, 0xc4, 0x30, 0xe6, 0x5c, 0x0d, 0xb7, 0x32, 0xfb, 0x4f, 0x76, 0x61, 0x1e, 0x66,
-0x84, 0x5e, 0x6f, 0x4d, 0x4d, 0x35, 0x7e, 0x18, 0x1e, 0xf9, 0x15, 0xd9, 0x7b, 0xbb, 0x72, 0xa4,
-0xc4, 0x97, 0xd6, 0x98, 0xe2, 0xa8, 0x93, 0xc6, 0xd2, 0xed, 0xc0, 0x17, 0xcd, 0x3d, 0x36, 0x5a,
-0x1e, 0x6a, 0xae, 0x6c, 0xe6, 0x62, 0xe1, 0x4e, 0x39, 0x33, 0x5a, 0x12, 0xc4, 0xee, 0xc1, 0xcb,
-0x8f, 0xad, 0xd8, 0x98, 0xe4, 0x90, 0xec, 0x97, 0x5d, 0xad, 0xd3, 0xce, 0x76, 0xf7, 0xb9, 0x20,
-0xe7, 0x44, 0x62, 0x5f, 0x66, 0x6d, 0x30, 0x6e, 0x58, 0x62, 0x9f, 0x4b, 0xf7, 0x2c, 0xe4, 0x08,
-0x43, 0xe3, 0x69, 0xc0, 0x0c, 0xa5, 0x28, 0x95, 0xc6, 0x92, 0x4a, 0x9e, 0x51, 0xb6, 0xff, 0xd7,
-0xcc, 0xfe, 0x8f, 0x25, 0x29, 0x47, 0xbe, 0x5f, 0x00, 0x6c, 0xe6, 0x6a, 0xaa, 0x5c, 0x57, 0x43,
-0x3b, 0x22, 0xec, 0xfc, 0x51, 0xd8, 0x1d, 0xb9, 0x60, 0xa3, 0x78, 0x99, 0xd6, 0x9b, 0xa0, 0xa9,
-0xab, 0xc1, 0xfd, 0xe0, 0x8e, 0x04, 0xfb, 0x27, 0xa7, 0x46, 0x9a, 0x5c, 0x96, 0x66, 0xaa, 0x62,
-0xf5, 0x51, 0xaf, 0x36, 0xe4, 0x14, 0x98, 0xf1, 0x35, 0xd1, 0x57, 0xb8, 0x20, 0xa9, 0x76, 0xa4,
-0x82, 0xa9, 0x91, 0xb7, 0x45, 0xcd, 0x02, 0xe9, 0x20, 0x08, 0x33, 0x27, 0x01, 0x42, 0x35, 0x54,
-0xd0, 0x5a, 0x4d, 0x54, 0x05, 0x42, 0x5b, 0x27, 0xbe, 0x08, 0xf4, 0xea, 0xff, 0xd1, 0x65, 0xc0,
-0x25, 0xb7, 0x9f, 0xb5, 0x79, 0xbb, 0x81, 0xc7, 0x65, 0xd9, 0x20, 0xf0, 0xaa, 0x09, 0x47, 0x23,
-0xf9, 0x38, 0xa7, 0x46, 0x87, 0x49, 0x7d, 0x41, 0xf7, 0x2f, 0x0a, 0x19, 0xd2, 0x00, 0x18, 0xeb,
-0x5b, 0xda, 0x5d, 0xcf, 0x2f, 0xca, 0x1b, 0xca, 0x8f, 0xce, 0x31, 0xd7, 0xfe, 0xe3, 0x96, 0xf4,
-0xa2, 0x07, 0x82, 0x1a, 0x0d, 0x2a, 0xeb, 0x32, 0x8d, 0x33, 0x11, 0x2c, 0xe1, 0x1e, 0xfe, 0x0e,
-0x6c, 0xff, 0x54, 0xf2, 0xc2, 0xe8, 0xe5, 0xe2, 0x23, 0xe0, 0xf9, 0xdf, 0x19, 0xe2, 0x72, 0xe6,
-0xe4, 0xec, 0xea, 0xf5, 0xde, 0x00, 0x2e, 0x0c, 0xa6, 0x15, 0x6a, 0x1b, 0x43, 0x1c, 0xe6, 0x18,
-0x76, 0x12, 0xca, 0x0a, 0xb4, 0x03, 0x1a, 0xfe, 0x4e, 0xfa, 0xfc, 0xf7, 0xd4, 0xf6, 0xf8, 0xf5,
-0xf0, 0xf4, 0xc4, 0xf3, 0xd2, 0xf2, 0xf6, 0xf2, 0xee, 0xf4, 0xac, 0xf8, 0x78, 0xfd, 0x3a, 0x02,
-0x3c, 0x06, 0xd6, 0x08, 0x50, 0x0a, 0x06, 0x0b, 0x96, 0x0b, 0x60, 0x0c, 0x66, 0x0d, 0x02, 0x0e,
-0x42, 0x0d, 0x7c, 0x0a, 0xda, 0x04, 0x8c, 0xfc, 0xc8, 0xf2, 0x8a, 0xe9, 0x49, 0xe3, 0x65, 0xe1,
-0x14, 0xe4, 0xa2, 0xea, 0x74, 0xf3, 0x10, 0xfd, 0x52, 0x06, 0xc4, 0x0e, 0x64, 0x16, 0x25, 0x1d,
-0x2b, 0x22, 0xa3, 0x24, 0x3f, 0x23, 0xc1, 0x1c, 0x80, 0x10, 0x72, 0xff, 0x12, 0xec, 0x39, 0xda,
-0x83, 0xcd, 0xb5, 0xc8, 0x2b, 0xcc, 0x65, 0xd6, 0xfe, 0xe4, 0x5c, 0xf5, 0xe6, 0x05, 0x92, 0x15,
-0xa3, 0x23, 0x89, 0x2f, 0xdf, 0x37, 0xe1, 0x3a, 0x8f, 0x36, 0x01, 0x2a, 0xca, 0x15, 0xd6, 0xfb,
-0x55, 0xe0, 0x83, 0xc8, 0xd9, 0xb8, 0xb7, 0xb3, 0x73, 0xb9, 0x81, 0xc7, 0x59, 0xdb, 0xf2, 0xf1,
-0xf2, 0x08, 0x1d, 0x1f, 0x01, 0x33, 0xe5, 0x42, 0x5f, 0x4c, 0xef, 0x4c, 0x75, 0x43, 0xb9, 0x2f,
-0x9c, 0x13, 0x08, 0xf3, 0x97, 0xd2, 0xe1, 0xb7, 0x56, 0xa7, 0x34, 0xa3, 0x18, 0xab, 0x17, 0xbd,
-0xd7, 0xd5, 0x9a, 0xf2, 0x4c, 0x10, 0x85, 0x2c, 0xa9, 0x44, 0xe6, 0x55, 0x96, 0x5d, 0x54, 0x59,
-0x31, 0x49, 0xd1, 0x2e, 0x54, 0x0d, 0xe6, 0xe8, 0x61, 0xc6, 0x02, 0xab, 0xea, 0x9a, 0xbe, 0x97,
-0xa6, 0xa1, 0xd7, 0xb6, 0x81, 0xd4, 0x32, 0xf7, 0xae, 0x1a, 0x35, 0x3b, 0x1e, 0x55, 0x04, 0x65,
-0x4e, 0x68, 0x60, 0x5e, 0xa9, 0x48, 0xff, 0x29, 0xb8, 0x05, 0x15, 0xe0, 0x6b, 0xbd, 0x3e, 0xa2,
-0xa4, 0x92, 0xd4, 0x90, 0x4a, 0x9d, 0xb3, 0xb6, 0xb7, 0xd9, 0x70, 0x01, 0x85, 0x28, 0xfb, 0x49,
-0xb6, 0x61, 0xd6, 0x6c, 0x90, 0x6a, 0x8c, 0x5b, 0x5d, 0x42, 0x53, 0x22, 0x06, 0xfe, 0xe3, 0xd8,
-0xe1, 0xb6, 0x96, 0x9c, 0x5a, 0x8e, 0xde, 0x8e, 0xfc, 0x9e, 0xd5, 0xbc, 0x02, 0xe4, 0x28, 0x0e,
-0x25, 0x35, 0x99, 0x53, 0x92, 0x66, 0x60, 0x6c, 0x58, 0x65, 0x9d, 0x53, 0xbb, 0x39, 0x34, 0x1a,
-0x42, 0xf7, 0xa5, 0xd3, 0x5d, 0xb3, 0x0a, 0x9b, 0x5a, 0x8f, 0x50, 0x93, 0x18, 0xa7, 0x35, 0xc8,
-0x9a, 0xf0, 0xac, 0x19, 0xf3, 0x3c, 0x58, 0x56, 0xaa, 0x63, 0xd4, 0x64, 0x50, 0x5b, 0x29, 0x49,
-0x4d, 0x30, 0x90, 0x12, 0xcc, 0xf1, 0x5f, 0xd0, 0xe9, 0xb2, 0x16, 0x9e, 0x62, 0x96, 0x2a, 0x9e,
-0xa9, 0xb4, 0x0b, 0xd6, 0x12, 0xfc, 0x0d, 0x20, 0x05, 0x3d, 0x4f, 0x50, 0x18, 0x59, 0xb4, 0x57,
-0x91, 0x4d, 0x8f, 0x3c, 0xdf, 0x25, 0xc4, 0x0a, 0x0a, 0xed, 0xcb, 0xcf, 0x37, 0xb7, 0x48, 0xa7,
-0xd6, 0xa3, 0x11, 0xae, 0x71, 0xc4, 0x79, 0xe2, 0xd2, 0x02, 0xef, 0x1f, 0xb5, 0x36, 0xf1, 0x44,
-0x7f, 0x4a, 0xd7, 0x47, 0x19, 0x3e, 0x95, 0x2e, 0x74, 0x1a, 0x4a, 0x03, 0x0c, 0xeb, 0x73, 0xd4,
-0x93, 0xc2, 0xcd, 0xb8, 0xa7, 0xb8, 0x0d, 0xc3, 0xa7, 0xd5, 0x1e, 0xed, 0x48, 0x05, 0x96, 0x1a,
-0x83, 0x2a, 0x03, 0x34, 0xdf, 0x36, 0xa3, 0x33, 0x2b, 0x2b, 0xcd, 0x1e, 0xc0, 0x0f, 0xfa, 0xfe,
-0x84, 0xee, 0xd3, 0xdf, 0x95, 0xd4, 0x59, 0xce, 0x93, 0xce, 0x69, 0xd5, 0xd3, 0xe1, 0x92, 0xf1,
-0x0c, 0x02, 0xca, 0x10, 0x98, 0x1b, 0x33, 0x21, 0xf1, 0x21, 0xc3, 0x1e, 0xa0, 0x18, 0xca, 0x10,
-0x5c, 0x08, 0x58, 0x00, 0x1a, 0xf9, 0x56, 0xf2, 0x6e, 0xec, 0xe4, 0xe7, 0xa4, 0xe5, 0xb0, 0xe6,
-0x1e, 0xeb, 0x16, 0xf2, 0x68, 0xfa, 0x34, 0x02, 0xfa, 0x07, 0xfc, 0x0a, 0x50, 0x0b, 0xe6, 0x09,
-0xfe, 0x07, 0xd2, 0x06, 0x08, 0x07, 0x26, 0x08, 0x08, 0x09, 0x5c, 0x08, 0x00, 0x05, 0x5a, 0xff,
-0xe6, 0xf8, 0x28, 0xf3, 0x92, 0xef, 0x60, 0xee, 0x0c, 0xef, 0x8e, 0xf0, 0xf2, 0xf1, 0xe6, 0xf2,
-0x0a, 0xf4, 0xb4, 0xf6, 0xd6, 0xfb, 0x62, 0x03, 0xda, 0x0c, 0x7a, 0x16, 0x7b, 0x1d, 0xc1, 0x1f,
-0x3c, 0x1c, 0xd6, 0x13, 0x6e, 0x08, 0x56, 0xfc, 0x7a, 0xf1, 0xd4, 0xe8, 0x99, 0xe2, 0x67, 0xde,
-0xf5, 0xdb, 0x2b, 0xdc, 0xfd, 0xdf, 0x30, 0xe8, 0xfa, 0xf4, 0x4a, 0x05, 0xf8, 0x16, 0xc3, 0x26,
-0xa9, 0x31, 0x75, 0x35, 0x4f, 0x31, 0x11, 0x26, 0xcc, 0x15, 0x04, 0x03, 0x36, 0xf0, 0x45, 0xdf,
-0x87, 0xd1, 0x1d, 0xc8, 0x0f, 0xc4, 0x6b, 0xc6, 0x97, 0xcf, 0x79, 0xdf, 0x9c, 0xf4, 0x6a, 0x0c,
-0xef, 0x23, 0xe1, 0x37, 0xe5, 0x44, 0xe7, 0x48, 0x37, 0x43, 0x67, 0x34, 0x75, 0x1e, 0x2c, 0x04,
-0x38, 0xe9, 0xa1, 0xd0, 0x8f, 0xbd, 0x07, 0xb2, 0xa5, 0xaf, 0xb7, 0xb6, 0xcb, 0xc6, 0xb9, 0xdd,
-0x3e, 0xf9, 0x30, 0x16, 0x1b, 0x31, 0xf1, 0x46, 0xc4, 0x54, 0x7e, 0x58, 0x8d, 0x50, 0x77, 0x3d,
-0x55, 0x21, 0xf6, 0xff, 0xbf, 0xdd, 0xdf, 0xbf, 0x46, 0xaa, 0xfc, 0x9f, 0x8c, 0xa1, 0x3d, 0xae,
-0x11, 0xc4, 0x6d, 0xe0, 0x20, 0x00, 0xd1, 0x1f, 0xad, 0x3c, 0xdd, 0x53, 0x34, 0x62, 0x8c, 0x64,
-0x8a, 0x59, 0x2d, 0x41, 0x77, 0x1e, 0x38, 0xf6, 0xf7, 0xce, 0xdb, 0xae, 0x6a, 0x9a, 0xc4, 0x93,
-0x5c, 0x9a, 0x47, 0xac, 0x8d, 0xc6, 0x08, 0xe6, 0xb2, 0x07, 0xed, 0x28, 0xb3, 0x46, 0x04, 0x5e,
-0x46, 0x6b, 0x18, 0x6b, 0xa6, 0x5b, 0xe9, 0x3d, 0x14, 0x16, 0x52, 0xea, 0xe1, 0xc1, 0x4a, 0xa3,
-0x68, 0x92, 0xf8, 0x8f, 0x98, 0x9a, 0x59, 0xaf, 0xbf, 0xcb, 0xb4, 0xec, 0x84, 0x0f, 0x3b, 0x31,
-0x01, 0x4f, 0x3a, 0x65, 0xb2, 0x6f, 0x30, 0x6b, 0xd2, 0x56, 0x19, 0x35, 0xdc, 0x0a, 0x4d, 0xdf,
-0x47, 0xb9, 0x9e, 0x9e, 0xe0, 0x91, 0xf2, 0x92, 0xe6, 0x9f, 0x3b, 0xb6, 0x8b, 0xd3, 0xe2, 0xf4,
-0xa8, 0x17, 0xe1, 0x38, 0xce, 0x54, 0x88, 0x67, 0x4e, 0x6d, 0x1c, 0x64, 0x5d, 0x4c, 0x3d, 0x29,
-0x5a, 0x00, 0x25, 0xd8, 0xb7, 0xb6, 0x70, 0xa0, 0x36, 0x97, 0x76, 0x9a, 0xd6, 0xa8, 0xdd, 0xbf,
-0x49, 0xdd, 0x5c, 0xfe, 0xab, 0x1f, 0xf7, 0x3d, 0x6e, 0x55, 0xd0, 0x62, 0x84, 0x63, 0xf2, 0x56,
-0xb5, 0x3e, 0x05, 0x1e, 0xa0, 0xf9, 0xc3, 0xd6, 0x91, 0xba, 0x64, 0xa8, 0xe8, 0xa1, 0xc0, 0xa6,
-0x95, 0xb5, 0x81, 0xcc, 0xd6, 0xe8, 0x5e, 0x07, 0x81, 0x24, 0x25, 0x3d, 0x2d, 0x4e, 0xa0, 0x55,
-0xc7, 0x52, 0xef, 0x45, 0xc9, 0x30, 0x7e, 0x15, 0xa4, 0xf7, 0x31, 0xdb, 0x43, 0xc4, 0xd3, 0xb5,
-0x7d, 0xb1, 0x4f, 0xb7, 0x2f, 0xc6, 0xb3, 0xdb, 0xa2, 0xf4, 0xde, 0x0d, 0x09, 0x24, 0xd7, 0x34,
-0xf1, 0x3e, 0x03, 0x42, 0x4b, 0x3e, 0x41, 0x34, 0x6f, 0x24, 0xfa, 0x0f, 0x0a, 0xf9, 0x0f, 0xe3,
-0x63, 0xd1, 0xd7, 0xc6, 0xcf, 0xc4, 0x5f, 0xcb, 0xbb, 0xd8, 0x6c, 0xea, 0x34, 0xfd, 0x5a, 0x0e,
-0x00, 0x1c, 0x51, 0x25, 0x65, 0x2a, 0xb5, 0x2b, 0xcf, 0x29, 0x57, 0x24, 0xe6, 0x1a, 0xac, 0x0d,
-0x26, 0xfe, 0xd0, 0xee, 0x81, 0xe2, 0x91, 0xdb, 0x13, 0xdb, 0x8f, 0xe0, 0x14, 0xea, 0x2e, 0xf5,
-0x66, 0xff, 0x70, 0x07, 0xee, 0x0c, 0x4a, 0x10, 0x96, 0x12, 0xa8, 0x14, 0x4a, 0x16, 0x8c, 0x16,
-0x5e, 0x14, 0x22, 0x0f, 0x6c, 0x07, 0xe6, 0xfe, 0xdc, 0xf7, 0xa6, 0xf3, 0xfe, 0xf2, 0xe6, 0xf4,
-0xba, 0xf7, 0xf8, 0xf9, 0xe2, 0xfa, 0x54, 0xfa, 0x3a, 0xf9, 0xec, 0xf8, 0x80, 0xfa, 0x8e, 0xfe,
-0xa8, 0x04, 0x6c, 0x0b, 0x0e, 0x11, 0x44, 0x14, 0xb4, 0x14, 0xba, 0x12, 0x94, 0x0f, 0x3e, 0x0c,
-0xb2, 0x08, 0x8c, 0x04, 0x1a, 0xff, 0x88, 0xf8, 0x14, 0xf1, 0x00, 0xea, 0x94, 0xe4, 0x55, 0xe2,
-0x88, 0xe4, 0x84, 0xeb, 0xa4, 0xf6, 0x20, 0x04, 0x1a, 0x12, 0xe1, 0x1d, 0xd9, 0x25, 0x1f, 0x29,
-0xdd, 0x27, 0x97, 0x22, 0xbc, 0x19, 0x22, 0x0e, 0x7e, 0x00, 0x2a, 0xf2, 0x5c, 0xe4, 0x51, 0xd8,
-0xfb, 0xcf, 0xdf, 0xcc, 0x73, 0xd0, 0xff, 0xda, 0x2a, 0xec, 0xa6, 0x01, 0x58, 0x18, 0x71, 0x2c,
-0x75, 0x3a, 0x9f, 0x40, 0x73, 0x3e, 0x21, 0x35, 0xf7, 0x25, 0x3a, 0x13, 0x9a, 0xfe, 0xd6, 0xe9,
-0xc5, 0xd6, 0xf1, 0xc6, 0x73, 0xbc, 0x33, 0xb9, 0xfd, 0xbe, 0x81, 0xce, 0xc0, 0xe6, 0xc8, 0x04,
-0xa3, 0x23, 0x1d, 0x3e, 0x61, 0x4f, 0x68, 0x55, 0x2d, 0x50, 0xb3, 0x41, 0xa9, 0x2c, 0xe4, 0x13,
-0xba, 0xf9, 0xff, 0xdf, 0xeb, 0xc8, 0x87, 0xb6, 0x4d, 0xab, 0x90, 0xa9, 0x35, 0xb3, 0xf5, 0xc8,
-0xc0, 0xe8, 0x18, 0x0e, 0x71, 0x32, 0x95, 0x4f, 0xd6, 0x60, 0x66, 0x64, 0x2c, 0x5b, 0xf1, 0x47,
-0x43, 0x2e, 0xf8, 0x10, 0x8a, 0xf2, 0x1b, 0xd5, 0x49, 0xbb, 0xdc, 0xa7, 0x9a, 0x9d, 0x32, 0x9f,
-0x47, 0xae, 0x65, 0xca, 0x0a, 0xf0, 0x66, 0x19, 0x6d, 0x3f, 0x2a, 0x5c, 0xd2, 0x6b, 0x0c, 0x6d,
-0x12, 0x61, 0xdd, 0x4a, 0xd9, 0x2d, 0xee, 0x0c, 0xb4, 0xea, 0x23, 0xca, 0xa9, 0xae, 0xd2, 0x9b,
-0xa4, 0x94, 0x56, 0x9b, 0x7b, 0xb0, 0xeb, 0xd1, 0xf2, 0xfa, 0x1d, 0x25, 0x29, 0x4a, 0xca, 0x64,
-0xd8, 0x71, 0x3e, 0x70, 0x7a, 0x61, 0x67, 0x48, 0x5d, 0x28, 0x76, 0x04, 0xc3, 0xdf, 0x41, 0xbe,
-0x2c, 0xa4, 0x04, 0x95, 0x4e, 0x93, 0xbc, 0x9f, 0x67, 0xb9, 0xe9, 0xdc, 0x4e, 0x05, 0xe3, 0x2c,
-0x81, 0x4e, 0x0a, 0x66, 0x86, 0x70, 0xf0, 0x6c, 0x4a, 0x5c, 0x69, 0x41, 0x87, 0x1f, 0x14, 0xfa,
-0x2f, 0xd5, 0x99, 0xb5, 0xbe, 0x9f, 0x34, 0x96, 0x18, 0x9a, 0x94, 0xaa, 0x7b, 0xc5, 0x74, 0xe7,
-0x26, 0x0c, 0x8b, 0x2f, 0x5b, 0x4d, 0x14, 0x62, 0x8e, 0x6a, 0x62, 0x65, 0x45, 0x53, 0xe7, 0x36,
-0x26, 0x14, 0x4a, 0xef, 0x69, 0xcd, 0x07, 0xb3, 0x8a, 0xa3, 0xf0, 0x9f, 0xa2, 0xa7, 0xe1, 0xb8,
-0x97, 0xd1, 0x46, 0xef, 0x08, 0x0f, 0xe5, 0x2d, 0x31, 0x48, 0x14, 0x5a, 0x4c, 0x60, 0x2c, 0x59,
-0xcd, 0x45, 0x37, 0x29, 0x06, 0x08, 0x48, 0xe7, 0x97, 0xcb, 0x6b, 0xb8, 0x3b, 0xaf, 0xd7, 0xaf,
-0x99, 0xb8, 0x13, 0xc8, 0x97, 0xdc, 0x04, 0xf5, 0x88, 0x0f, 0x93, 0x29, 0x9d, 0x3f, 0xcd, 0x4d,
-0xfd, 0x50, 0x0d, 0x48, 0xa9, 0x34, 0x74, 0x1a, 0x3c, 0xfe, 0x9a, 0xe4, 0xe1, 0xd0, 0xeb, 0xc4,
-0xad, 0xc0, 0x17, 0xc3, 0xe1, 0xca, 0xd9, 0xd6, 0x52, 0xe6, 0xe0, 0xf8, 0x50, 0x0d, 0x6b, 0x21,
-0x1b, 0x32, 0xf5, 0x3b, 0xcf, 0x3c, 0x37, 0x34, 0x07, 0x24, 0xe8, 0x0f, 0xa4, 0xfb, 0x9a, 0xea,
-0x95, 0xde, 0x2b, 0xd8, 0x65, 0xd6, 0x6d, 0xd8, 0x4f, 0xdd, 0x82, 0xe4, 0x02, 0xee, 0xac, 0xf9,
-0xfe, 0x06, 0x46, 0x14, 0x2f, 0x1f, 0x5b, 0x25, 0xa3, 0x25, 0xe5, 0x1f, 0xdc, 0x15, 0x00, 0x0a,
-0xea, 0xfe, 0x3c, 0xf6, 0xd0, 0xf0, 0x12, 0xee, 0x66, 0xed, 0xce, 0xed, 0xf4, 0xee, 0xba, 0xf0,
-0x16, 0xf3, 0xbe, 0xf6, 0xba, 0xfb, 0xc8, 0x01, 0xa8, 0x07, 0x72, 0x0c, 0x2a, 0x0f, 0x6e, 0x0f,
-0xa8, 0x0d, 0xbe, 0x0a, 0x08, 0x08, 0x12, 0x06, 0xfc, 0x04, 0x60, 0x04, 0x9c, 0x03, 0xe0, 0x01,
-0xbc, 0xfe, 0xe6, 0xf9, 0xfa, 0xf3, 0x48, 0xee, 0xc2, 0xea, 0x6e, 0xea, 0xd4, 0xed, 0x1e, 0xf4,
-0x08, 0xfc, 0xf8, 0x03, 0xb6, 0x0a, 0x48, 0x10, 0x9c, 0x14, 0x06, 0x18, 0x2c, 0x1a, 0xc0, 0x1a,
-0xd8, 0x18, 0xaa, 0x13, 0x6e, 0x0a, 0x78, 0xfd, 0x46, 0xee, 0xc1, 0xdf, 0x45, 0xd5, 0x77, 0xd1,
-0x05, 0xd5, 0xe7, 0xde, 0xf6, 0xec, 0x4a, 0xfc, 0xf0, 0x0a, 0xc6, 0x17, 0x4f, 0x22, 0x61, 0x2a,
-0x71, 0x2f, 0xa3, 0x30, 0x89, 0x2c, 0x43, 0x22, 0x66, 0x11, 0x6a, 0xfb, 0x7d, 0xe3, 0xcb, 0xcd,
-0x3b, 0xbf, 0x6f, 0xba, 0x21, 0xc0, 0x7b, 0xce, 0x7d, 0xe2, 0xa8, 0xf8, 0x1a, 0x0e, 0x69, 0x21,
-0x75, 0x31, 0x7f, 0x3d, 0x33, 0x44, 0xdf, 0x43, 0x45, 0x3b, 0xb7, 0x29, 0x9e, 0x10, 0x96, 0xf2,
-0x4b, 0xd4, 0x0b, 0xbb, 0x3e, 0xab, 0xda, 0xa7, 0x7b, 0xb0, 0x67, 0xc3, 0xe1, 0xdc, 0x3c, 0xf9,
-0x0c, 0x15, 0x25, 0x2e, 0xdb, 0x42, 0xf9, 0x50, 0xba, 0x56, 0x2f, 0x52, 0xdb, 0x42, 0xc9, 0x29,
-0x7e, 0x09, 0x22, 0xe6, 0xdf, 0xc4, 0xba, 0xaa, 0xec, 0x9b, 0x7c, 0x9a, 0x3a, 0xa6, 0x01, 0xbd,
-0x83, 0xdb, 0x64, 0xfd, 0xcd, 0x1e, 0xa3, 0x3c, 0xbf, 0x53, 0x8c, 0x61, 0x92, 0x63, 0x30, 0x59,
-0x4d, 0x43, 0x7f, 0x24, 0x62, 0x00, 0x3d, 0xdb, 0xdd, 0xb9, 0xac, 0xa0, 0x54, 0x93, 0xa0, 0x93,
-0xae, 0xa1, 0xe3, 0xbb, 0x97, 0xde, 0x08, 0x05, 0x77, 0x2a, 0x4f, 0x4a, 0x1a, 0x61, 0x84, 0x6b,
-0x48, 0x68, 0x1c, 0x58, 0xa7, 0x3d, 0x2e, 0x1c, 0x56, 0xf7, 0xf9, 0xd2, 0xcd, 0xb2, 0x1c, 0x9b,
-0x30, 0x8f, 0x2e, 0x91, 0xde, 0xa1, 0x8d, 0xbf, 0x30, 0xe6, 0x14, 0x10, 0xff, 0x36, 0x16, 0x56,
-0x68, 0x69, 0xc8, 0x6e, 0x4c, 0x66, 0x2d, 0x52, 0xc3, 0x35, 0x2c, 0x14, 0x6c, 0xf0, 0x71, 0xcd,
-0x15, 0xaf, 0xf0, 0x98, 0xd0, 0x8e, 0x6c, 0x93, 0x4a, 0xa7, 0x71, 0xc8, 0xb8, 0xf1, 0x3e, 0x1c,
-0x59, 0x41, 0x42, 0x5c, 0x02, 0x6a, 0xec, 0x69, 0xa0, 0x5d, 0xe3, 0x47, 0xeb, 0x2b, 0x36, 0x0c,
-0xe6, 0xea, 0xc1, 0xca, 0xfd, 0xae, 0x9a, 0x9b, 0x82, 0x94, 0x3a, 0x9c, 0xe1, 0xb2, 0xb3, 0xd5,
-0x40, 0xfe, 0x91, 0x25, 0x7d, 0x45, 0x28, 0x5a, 0x24, 0x62, 0x28, 0x5e, 0x3b, 0x50, 0x35, 0x3b,
-0x5b, 0x21, 0x8c, 0x04, 0xcc, 0xe6, 0x6f, 0xca, 0xd7, 0xb2, 0xda, 0xa3, 0xdc, 0xa0, 0x87, 0xab,
-0x45, 0xc3, 0x02, 0xe4, 0xfa, 0x07, 0x9b, 0x28, 0x4f, 0x41, 0xc3, 0x4f, 0xcf, 0x53, 0x3d, 0x4e,
-0x43, 0x41, 0xb7, 0x2e, 0x58, 0x18, 0xac, 0xff, 0x80, 0xe6, 0x39, 0xcf, 0xe7, 0xbc, 0x83, 0xb2,
-0x8f, 0xb2, 0xd7, 0xbd, 0xd5, 0xd2, 0x16, 0xee, 0x74, 0x0a, 0x41, 0x23, 0x3f, 0x35, 0x21, 0x3f,
-0xc7, 0x40, 0x4f, 0x3b, 0x19, 0x30, 0xa7, 0x20, 0xb2, 0x0e, 0xa6, 0xfb, 0x24, 0xe9, 0x3b, 0xd9,
-0x53, 0xcd, 0x53, 0xc7, 0x8d, 0xc8, 0x1f, 0xd1, 0xfd, 0xdf, 0xf2, 0xf2, 0xa8, 0x06, 0xea, 0x17,
-0x79, 0x24, 0x61, 0x2b, 0x57, 0x2c, 0x17, 0x28, 0x9d, 0x1f, 0xa6, 0x14, 0x70, 0x08, 0x5c, 0xfc,
-0x64, 0xf1, 0x38, 0xe8, 0xd3, 0xe1, 0xed, 0xdd, 0x61, 0xdd, 0xcd, 0xe0, 0x3e, 0xe8, 0xd6, 0xf2,
-0xc2, 0xfe, 0xd0, 0x09, 0xe8, 0x11, 0x1e, 0x16, 0x64, 0x16, 0x3e, 0x13, 0x94, 0x0e, 0xa0, 0x09,
-0x82, 0x05, 0x80, 0x02, 0x3a, 0x00, 0xf8, 0xfd, 0xb4, 0xfa, 0x88, 0xf6, 0x1e, 0xf2, 0xe6, 0xee,
-0x06, 0xee, 0xf2, 0xef, 0x28, 0xf4, 0xbc, 0xf8, 0x84, 0xfc, 0xd2, 0xfe, 0xa4, 0xff, 0x2c, 0x00,
-0x80, 0x01, 0xd4, 0x04, 0xd4, 0x09, 0x9c, 0x0f, 0x3a, 0x14, 0xe6, 0x15, 0x2e, 0x13, 0xfe, 0x0b,
-0x02, 0x02, 0x62, 0xf7, 0x54, 0xee, 0x72, 0xe8, 0x72, 0xe5, 0xa4, 0xe4, 0x36, 0xe5, 0x06, 0xe7,
-0x92, 0xea, 0xa2, 0xf0, 0xf4, 0xf9, 0x02, 0x06, 0xa0, 0x13, 0x1b, 0x20, 0x43, 0x29, 0x8d, 0x2c,
-0xbd, 0x28, 0x3f, 0x1e, 0xca, 0x0e, 0x74, 0xfd, 0xc4, 0xec, 0xdd, 0xde, 0xcf, 0xd4, 0xe5, 0xce,
-0x57, 0xcd, 0x97, 0xd0, 0xf9, 0xd8, 0xb6, 0xe6, 0x9a, 0xf8, 0x36, 0x0d, 0x57, 0x21, 0x73, 0x32,
-0x91, 0x3d, 0x99, 0x40, 0x9d, 0x3a, 0x11, 0x2c, 0x6a, 0x17, 0x54, 0xff, 0x3a, 0xe7, 0xe9, 0xd1,
-0xf7, 0xc1, 0xed, 0xb8, 0xd7, 0xb7, 0x09, 0xbf, 0x2d, 0xce, 0xd2, 0xe3, 0xa4, 0xfd, 0x34, 0x18,
-0xb9, 0x30, 0xef, 0x43, 0x75, 0x4f, 0x59, 0x51, 0x8b, 0x48, 0xdf, 0x35, 0x5e, 0x1b, 0x52, 0xfc,
-0xb1, 0xdc, 0x37, 0xc1, 0x91, 0xad, 0x86, 0xa4, 0xe8, 0xa6, 0x03, 0xb4, 0x37, 0xca, 0x94, 0xe6,
-0x78, 0x05, 0xa3, 0x23, 0xd7, 0x3d, 0xcd, 0x51, 0x20, 0x5d, 0xac, 0x5d, 0x1f, 0x52, 0x21, 0x3b,
-0xbe, 0x1a, 0x02, 0xf5, 0x7b, 0xcf, 0x2b, 0xb0, 0x2e, 0x9c, 0xfc, 0x95, 0x2c, 0x9d, 0x21, 0xb0,
-0xab, 0xcb, 0x16, 0xec, 0xa4, 0x0d, 0x25, 0x2d, 0x2f, 0x48, 0x5e, 0x5c, 0x20, 0x67, 0xa0, 0x65,
-0x90, 0x56, 0x65, 0x3a, 0x16, 0x14, 0x24, 0xe9, 0x89, 0xc0, 0x64, 0xa1, 0x7e, 0x90, 0xfe, 0x8e,
-0x7a, 0x9b, 0xaf, 0xb2, 0x33, 0xd1, 0x08, 0xf3, 0x22, 0x15, 0xb3, 0x34, 0x7b, 0x4f, 0x06, 0x63,
-0xca, 0x6b, 0x36, 0x67, 0xb3, 0x53, 0xd3, 0x32, 0xc4, 0x08, 0x27, 0xdc, 0xad, 0xb4, 0x02, 0x99,
-0xda, 0x8c, 0xf2, 0x8f, 0xfe, 0x9f, 0x83, 0xb9, 0x09, 0xd9, 0x3a, 0xfb, 0x09, 0x1d, 0xf7, 0x3b,
-0x86, 0x55, 0x78, 0x66, 0x7a, 0x6b, 0x34, 0x62, 0x63, 0x4a, 0xd3, 0x26, 0x90, 0xfc, 0x5f, 0xd2,
-0x55, 0xaf, 0xca, 0x98, 0xde, 0x90, 0xd8, 0x96, 0x52, 0xa8, 0x2d, 0xc2, 0x6b, 0xe1, 0xc4, 0x02,
-0x4f, 0x23, 0x5f, 0x40, 0xd0, 0x56, 0x78, 0x63, 0xd8, 0x63, 0xb4, 0x56, 0x57, 0x3d, 0xe6, 0x1a,
-0x4e, 0xf4, 0x7f, 0xcf, 0xf7, 0xb1, 0xe0, 0x9f, 0xca, 0x9a, 0x1a, 0xa2, 0x93, 0xb3, 0xe5, 0xcc,
-0xd0, 0xea, 0x3e, 0x0a, 0xf7, 0x27, 0xd9, 0x40, 0x09, 0x52, 0x4e, 0x59, 0x64, 0x55, 0xcf, 0x46,
-0x21, 0x2f, 0x34, 0x11, 0x10, 0xf1, 0xbb, 0xd2, 0xcd, 0xba, 0x8b, 0xac, 0x7c, 0xa9, 0x1f, 0xb1,
-0x2f, 0xc2, 0xed, 0xd9, 0x5a, 0xf5, 0xec, 0x10, 0x1d, 0x29, 0x6f, 0x3b, 0x1f, 0x46, 0x43, 0x48,
-0x8f, 0x42, 0x93, 0x35, 0xb7, 0x22, 0x8e, 0x0b, 0x98, 0xf2, 0xcf, 0xda, 0x05, 0xc8, 0xfd, 0xbc,
-0x55, 0xbb, 0x4d, 0xc3, 0xc1, 0xd2, 0x90, 0xe7, 0xfa, 0xfd, 0xd2, 0x12, 0x55, 0x23, 0x4f, 0x2e,
-0x3f, 0x33, 0xdf, 0x32, 0x35, 0x2e, 0x7d, 0x25, 0x52, 0x19, 0xe2, 0x09, 0x6e, 0xf8, 0x60, 0xe7,
-0x6b, 0xd9, 0x85, 0xd1, 0xed, 0xd0, 0x9d, 0xd7, 0x93, 0xe3, 0x76, 0xf2, 0x1c, 0x01, 0x4a, 0x0d,
-0xe4, 0x15, 0xb2, 0x1a, 0x97, 0x1c, 0x93, 0x1c, 0x48, 0x1b, 0x82, 0x18, 0xc0, 0x13, 0x26, 0x0c,
-0x30, 0x02, 0x88, 0xf7, 0x76, 0xee, 0x16, 0xe9, 0x62, 0xe8, 0xbe, 0xeb, 0x9e, 0xf1, 0x22, 0xf8,
-0x6a, 0xfd, 0xd8, 0x00, 0x96, 0x02, 0x84, 0x03, 0xd6, 0x04, 0x3a, 0x07, 0xce, 0x0a, 0xb4, 0x0e,
-0x8c, 0x11, 0xba, 0x11, 0x50, 0x0f, 0xb2, 0x0a, 0xb8, 0x05, 0x5e, 0x01, 0x4a, 0xfe, 0x04, 0xfc,
-0xf6, 0xf9, 0x4a, 0xf7, 0x94, 0xf3, 0xb4, 0xef, 0x7e, 0xec, 0x9c, 0xeb, 0xc2, 0xed, 0x8a, 0xf3,
-0x8a, 0xfc, 0x60, 0x07, 0x26, 0x12, 0xba, 0x1a, 0xc7, 0x1f, 0xe9, 0x20, 0x71, 0x1e, 0xe6, 0x18,
-0x0c, 0x11, 0x74, 0x07, 0x9a, 0xfc, 0x40, 0xf1, 0x5e, 0xe6, 0x4f, 0xdd, 0x93, 0xd7, 0x21, 0xd6,
-0xfd, 0xd9, 0x75, 0xe3, 0xee, 0xf1, 0xf4, 0x03, 0xf6, 0x16, 0xc1, 0x27, 0xad, 0x33, 0xbb, 0x38,
-0x23, 0x36, 0xf3, 0x2c, 0x67, 0x1e, 0xa0, 0x0c, 0xc0, 0xf9, 0x42, 0xe7, 0xfd, 0xd6, 0x85, 0xca,
-0x2b, 0xc3, 0x43, 0xc2, 0xb9, 0xc8, 0xd3, 0xd6, 0x0c, 0xec, 0x44, 0x06, 0x6b, 0x21, 0x3d, 0x39,
-0x73, 0x49, 0xed, 0x4e, 0xdb, 0x49, 0x0f, 0x3b, 0xd9, 0x25, 0x5a, 0x0d, 0x24, 0xf4, 0xa7, 0xdc,
-0xc1, 0xc8, 0xed, 0xb9, 0xc1, 0xb1, 0xf1, 0xb1, 0x8d, 0xbb, 0x47, 0xcf, 0xea, 0xeb, 0xcc, 0x0d,
-0xc1, 0x2f, 0xdb, 0x4b, 0xd0, 0x5c, 0x94, 0x60, 0xf6, 0x56, 0xc1, 0x42, 0xf5, 0x27, 0x1e, 0x0a,
-0x70, 0xec, 0x49, 0xd1, 0xc3, 0xba, 0xd8, 0xaa, 0x6c, 0xa3, 0x4c, 0xa6, 0xe7, 0xb4, 0x51, 0xcf,
-0xf6, 0xf2, 0x96, 0x1a, 0xd9, 0x3f, 0x56, 0x5c, 0x7a, 0x6b, 0xa4, 0x6b, 0xae, 0x5d, 0x6b, 0x45,
-0xb1, 0x26, 0x6c, 0x05, 0x78, 0xe4, 0xa1, 0xc6, 0xa7, 0xae, 0x98, 0x9e, 0x40, 0x99, 0x30, 0xa0,
-0x77, 0xb4, 0xe9, 0xd4, 0x0a, 0xfd, 0x15, 0x27, 0x4d, 0x4c, 0x0a, 0x67, 0x7c, 0x73, 0x70, 0x70,
-0x82, 0x5f, 0x31, 0x44, 0xc3, 0x22, 0x8a, 0xfe, 0x07, 0xdb, 0x91, 0xbb, 0x82, 0xa3, 0x00, 0x96,
-0x16, 0x95, 0xd0, 0xa1, 0xdd, 0xbb, 0x11, 0xe0, 0x60, 0x09, 0x0b, 0x32, 0x27, 0x54, 0x5c, 0x6b,
-0x70, 0x74, 0xc0, 0x6e, 0xb8, 0x5b, 0xb5, 0x3e, 0x5e, 0x1b, 0x92, 0xf5, 0x51, 0xd1, 0x91, 0xb2,
-0x6c, 0x9d, 0x9a, 0x94, 0x56, 0x99, 0x36, 0xab, 0x25, 0xc8, 0x56, 0xec, 0x0a, 0x13, 0x49, 0x37,
-0x00, 0x55, 0x7a, 0x68, 0x1e, 0x6f, 0xec, 0x67, 0xd7, 0x53, 0xf7, 0x35, 0x0e, 0x12, 0x4c, 0xec,
-0xb7, 0xc9, 0x87, 0xae, 0x84, 0x9e, 0x7a, 0x9b, 0xe8, 0xa4, 0x17, 0xb9, 0x39, 0xd5, 0xda, 0xf5,
-0x3a, 0x17, 0x65, 0x36, 0xa5, 0x4f, 0x02, 0x60, 0xe0, 0x64, 0x7a, 0x5c, 0x11, 0x48, 0x2d, 0x2a,
-0x34, 0x07, 0x52, 0xe4, 0x77, 0xc6, 0x7d, 0xb1, 0xe8, 0xa7, 0xa4, 0xa9, 0x31, 0xb5, 0x7b, 0xc8,
-0xb5, 0xe0, 0xc6, 0xfb, 0x8a, 0x17, 0x49, 0x31, 0x8b, 0x46, 0xeb, 0x53, 0xae, 0x56, 0x5b, 0x4d,
-0x1b, 0x39, 0xbd, 0x1c, 0x90, 0xfd, 0x73, 0xe0, 0x7b, 0xc9, 0xc9, 0xbb, 0x93, 0xb7, 0x2b, 0xbc,
-0x4d, 0xc7, 0x19, 0xd7, 0x14, 0xea, 0xea, 0xfe, 0x5a, 0x14, 0x91, 0x28, 0x45, 0x39, 0x31, 0x43,
-0x13, 0x44, 0xd9, 0x3a, 0xb3, 0x28, 0x3c, 0x11, 0xb6, 0xf8, 0xa9, 0xe3, 0xad, 0xd4, 0x15, 0xcd,
-0x23, 0xcc, 0xc7, 0xd0, 0x09, 0xd9, 0xea, 0xe3, 0x90, 0xf0, 0x9e, 0xfe, 0x60, 0x0d, 0x86, 0x1b,
-0x47, 0x27, 0x09, 0x2e, 0x0b, 0x2e, 0xf7, 0x26, 0x02, 0x1a, 0x1e, 0x0a, 0x9e, 0xfa, 0x1c, 0xee,
-0x12, 0xe6, 0xb1, 0xe2, 0x23, 0xe3, 0x0a, 0xe6, 0x74, 0xea, 0x7c, 0xef, 0x3e, 0xf5, 0x9e, 0xfb,
-0xa6, 0x02, 0x1a, 0x0a, 0xf8, 0x10, 0xc8, 0x15, 0x7e, 0x17, 0x6e, 0x15, 0x76, 0x10, 0xfa, 0x09,
-0x8a, 0x03, 0x8e, 0xfe, 0x84, 0xfb, 0x3e, 0xfa, 0xe0, 0xf9, 0xc4, 0xf9, 0x02, 0xf9, 0xb0, 0xf7,
-0xa2, 0xf5, 0x9a, 0xf3, 0xc0, 0xf2, 0xfe, 0xf3, 0x8e, 0xf7, 0x04, 0xfd, 0x2c, 0x03, 0xca, 0x08,
-0x1a, 0x0d, 0xbc, 0x0f, 0x2a, 0x11, 0xb2, 0x11, 0xb6, 0x11, 0x0c, 0x11, 0x24, 0x0f, 0x30, 0x0b,
-0xa6, 0x04, 0xa0, 0xfb, 0xde, 0xf0, 0x44, 0xe6, 0x43, 0xde, 0x49, 0xdb, 0xa1, 0xde, 0x84, 0xe7,
-0x2c, 0xf4, 0xcc, 0x01, 0x68, 0x0e, 0x9c, 0x18, 0xf3, 0x1f, 0xa7, 0x24, 0xe9, 0x26, 0x43, 0x26,
-0x21, 0x22, 0x98, 0x19, 0x32, 0x0c, 0xbc, 0xfa, 0x12, 0xe7, 0xaf, 0xd4, 0xa5, 0xc7, 0x17, 0xc3,
-0x51, 0xc8, 0x3b, 0xd6, 0xa8, 0xe9, 0xce, 0xfe, 0xc6, 0x12, 0x33, 0x23, 0xa7, 0x2f, 0xe5, 0x37,
-0x6d, 0x3b, 0xeb, 0x39, 0xef, 0x31, 0x0d, 0x23, 0x7a, 0x0d, 0x5e, 0xf3, 0x31, 0xd8, 0x03, 0xc1,
-0x3d, 0xb2, 0x0b, 0xaf, 0x19, 0xb8, 0x0d, 0xcb, 0x56, 0xe4, 0xa0, 0xff, 0x4a, 0x19, 0x2d, 0x2f,
-0xf3, 0x3f, 0x9f, 0x4a, 0x5f, 0x4e, 0xb5, 0x49, 0xe5, 0x3b, 0x2b, 0x25, 0x76, 0x07, 0x56, 0xe6,
-0xd1, 0xc6, 0xf7, 0xad, 0x5a, 0xa0, 0x00, 0xa0, 0xa9, 0xac, 0x33, 0xc4, 0x79, 0xe2, 0x36, 0x03,
-0x39, 0x22, 0xcf, 0x3c, 0xbb, 0x50, 0x50, 0x5c, 0x66, 0x5d, 0x4f, 0x53, 0x89, 0x3e, 0x9f, 0x20,
-0x3a, 0xfd, 0x99, 0xd8, 0x21, 0xb8, 0x80, 0xa0, 0x08, 0x95, 0x48, 0x97, 0x10, 0xa7, 0x3d, 0xc2,
-0xb8, 0xe4, 0x04, 0x0a, 0x61, 0x2d, 0x25, 0x4b, 0xfc, 0x5f, 0x58, 0x69, 0xbc, 0x65, 0x4e, 0x55,
-0x33, 0x3a, 0xb0, 0x17, 0x34, 0xf2, 0xbb, 0xcd, 0xef, 0xae, 0x80, 0x99, 0x42, 0x90, 0xa0, 0x94,
-0xae, 0xa6, 0xbd, 0xc4, 0xce, 0xea, 0x9a, 0x13, 0x4b, 0x39, 0x4a, 0x57, 0xdc, 0x69, 0x8a, 0x6e,
-0x28, 0x65, 0x63, 0x4f, 0x09, 0x31, 0xdc, 0x0d, 0x94, 0xe9, 0x6b, 0xc7, 0x1c, 0xab, 0xd6, 0x97,
-0x5a, 0x90, 0x92, 0x96, 0xd8, 0xaa, 0x99, 0xcb, 0x02, 0xf4, 0x45, 0x1e, 0xd3, 0x43, 0x80, 0x5f,
-0x88, 0x6d, 0xd4, 0x6c, 0x98, 0x5e, 0xff, 0x45, 0xfd, 0x26, 0x1e, 0x05, 0x51, 0xe3, 0x2d, 0xc4,
-0xb0, 0xaa, 0xd6, 0x99, 0x94, 0x94, 0xe6, 0x9c, 0x3f, 0xb3, 0x73, 0xd5, 0x82, 0xfe, 0x79, 0x27,
-0xc9, 0x49, 0x4e, 0x60, 0xd4, 0x68, 0xac, 0x63, 0x01, 0x53, 0x67, 0x3a, 0x69, 0x1d, 0xd2, 0xfe,
-0x89, 0xe0, 0x27, 0xc5, 0xef, 0xae, 0x54, 0xa1, 0xf0, 0x9e, 0x90, 0xa9, 0x5b, 0xc1, 0x1f, 0xe3,
-0x3a, 0x09, 0xf5, 0x2c, 0xb5, 0x48, 0x8c, 0x58, 0x18, 0x5c, 0xf9, 0x53, 0x47, 0x43, 0x0d, 0x2d,
-0x70, 0x13, 0x2e, 0xf9, 0xb1, 0xdf, 0x49, 0xc9, 0xf3, 0xb7, 0x5b, 0xae, 0xe7, 0xae, 0xf7, 0xba,
-0x49, 0xd1, 0x9c, 0xee, 0x0e, 0x0e, 0xfb, 0x29, 0x5f, 0x3e, 0xef, 0x48, 0xa9, 0x49, 0x03, 0x42,
-0xe5, 0x33, 0x57, 0x21, 0xba, 0x0c, 0xa0, 0xf7, 0xd8, 0xe3, 0xd7, 0xd2, 0x83, 0xc6, 0xdf, 0xc0,
-0x5d, 0xc3, 0x19, 0xce, 0xf9, 0xdf, 0x24, 0xf6, 0xbe, 0x0c, 0x59, 0x20, 0x29, 0x2e, 0xdf, 0x34,
-0x79, 0x34, 0xfd, 0x2d, 0x3d, 0x23, 0xb4, 0x15, 0xfa, 0x06, 0xa0, 0xf8, 0xe6, 0xeb, 0x7b, 0xe1,
-0x3f, 0xda, 0xf1, 0xd6, 0x51, 0xd8, 0x9b, 0xde, 0xea, 0xe8, 0x56, 0xf6, 0xdc, 0x04, 0x3c, 0x12,
-0xde, 0x1b, 0x5d, 0x20, 0xef, 0x1f, 0xc0, 0x1b, 0xc6, 0x14, 0x9c, 0x0c, 0xa8, 0x04, 0xc4, 0xfd,
-0x78, 0xf8, 0x7a, 0xf4, 0x5e, 0xf1, 0xe2, 0xee, 0x20, 0xed, 0xae, 0xec, 0x82, 0xee, 0xd6, 0xf2,
-0x0a, 0xf9, 0xd6, 0xff, 0x78, 0x05, 0xd4, 0x08, 0xb4, 0x09, 0xb8, 0x08, 0x36, 0x07, 0x5a, 0x06,
-0xd0, 0x06, 0x90, 0x08, 0xae, 0x0a, 0x9e, 0x0b, 0xce, 0x09, 0xaa, 0x04, 0x02, 0xfd, 0xa2, 0xf4,
-0x8c, 0xed, 0x8a, 0xe9, 0xea, 0xe8, 0xdc, 0xea, 0xf8, 0xed, 0x44, 0xf1, 0xd4, 0xf4, 0x36, 0xf9,
-0x46, 0xff, 0x44, 0x07, 0xc6, 0x10, 0x34, 0x1a, 0x43, 0x21, 0xb7, 0x23, 0x3d, 0x20, 0xd4, 0x16,
-0xe4, 0x08, 0x2e, 0xf9, 0xb2, 0xea, 0x9d, 0xdf, 0xd5, 0xd8, 0x1b, 0xd6, 0x0d, 0xd7, 0x31, 0xdb,
-0x95, 0xe2, 0xa0, 0xed, 0x3a, 0xfc, 0x6c, 0x0d, 0xdd, 0x1e, 0xe5, 0x2d, 0x9f, 0x37, 0xe1, 0x39,
-0x81, 0x33, 0x29, 0x25, 0x0e, 0x11, 0x44, 0xfa, 0x64, 0xe4, 0x15, 0xd2, 0x99, 0xc5, 0x87, 0xbf,
-0x5b, 0xc0, 0xf5, 0xc7, 0x11, 0xd6, 0xb4, 0xe9, 0x0c, 0x01, 0x54, 0x19, 0x97, 0x2f, 0xd9, 0x40,
-0x3d, 0x4a, 0x91, 0x4a, 0x0b, 0x41, 0xa1, 0x2e, 0x4c, 0x15, 0x4e, 0xf8, 0x7d, 0xdb, 0x0d, 0xc3,
-0xe7, 0xb1, 0x4c, 0xaa, 0x31, 0xad, 0x27, 0xba, 0xe1, 0xcf, 0x72, 0xeb, 0x98, 0x09, 0xb7, 0x26,
-0x71, 0x3f, 0x01, 0x51, 0x96, 0x59, 0xa6, 0x57, 0xfb, 0x4a, 0x4d, 0x34, 0x64, 0x15, 0x40, 0xf2,
-0x6f, 0xcf, 0x43, 0xb2, 0x88, 0x9f, 0xe6, 0x99, 0x96, 0xa1, 0x5b, 0xb5, 0xbd, 0xd1, 0xc4, 0xf2,
-0x2a, 0x14, 0x33, 0x32, 0xab, 0x4a, 0x84, 0x5b, 0xcc, 0x62, 0x12, 0x5f, 0xa9, 0x4f, 0xd9, 0x34,
-0x2c, 0x11, 0x64, 0xe8, 0x41, 0xc1, 0xae, 0xa2, 0x6a, 0x91, 0xea, 0x8f, 0x44, 0x9d, 0x85, 0xb6,
-0x31, 0xd7, 0xb0, 0xfa, 0x8d, 0x1c, 0x97, 0x3a, 0x77, 0x52, 0x4c, 0x62, 0x24, 0x68, 0xfc, 0x61,
-0x33, 0x4f, 0x3d, 0x30, 0x14, 0x08, 0x3f, 0xdc, 0x3b, 0xb4, 0x38, 0x97, 0x0e, 0x8a, 0x92, 0x8d,
-0xa2, 0x9f, 0x45, 0xbc, 0xa9, 0xde, 0x62, 0x02, 0x01, 0x24, 0x05, 0x41, 0xc2, 0x57, 0xf8, 0x65,
-0x1c, 0x69, 0x76, 0x5f, 0x67, 0x48, 0xdd, 0x25, 0x92, 0xfb, 0x33, 0xd0, 0x5b, 0xab, 0x68, 0x93,
-0x7c, 0x8b, 0x20, 0x93, 0x88, 0xa7, 0xaf, 0xc4, 0xb4, 0xe6, 0x3e, 0x09, 0x95, 0x29, 0x23, 0x45,
-0x72, 0x59, 0x56, 0x64, 0x5a, 0x63, 0x9e, 0x55, 0xa3, 0x3b, 0x52, 0x18, 0x3a, 0xf0, 0xab, 0xc9,
-0xc8, 0xaa, 0x5a, 0x98, 0x6c, 0x94, 0xe0, 0x9d, 0x67, 0xb2, 0x7d, 0xce, 0x8e, 0xee, 0x3e, 0x0f,
-0xfd, 0x2c, 0x61, 0x45, 0xe2, 0x55, 0x66, 0x5c, 0x4c, 0x57, 0xef, 0x46, 0xeb, 0x2c, 0x60, 0x0c,
-0xca, 0xe9, 0xbb, 0xc9, 0x6d, 0xb1, 0xec, 0xa3, 0xb0, 0xa2, 0xbf, 0xac, 0x47, 0xc0, 0x4f, 0xda,
-0x62, 0xf7, 0x4c, 0x14, 0xa1, 0x2d, 0xeb, 0x40, 0xb7, 0x4b, 0x3f, 0x4d, 0x6f, 0x45, 0xa7, 0x35,
-0xa1, 0x1f, 0xdc, 0x05, 0x04, 0xeb, 0x8b, 0xd2, 0xb5, 0xbf, 0x29, 0xb5, 0x81, 0xb4, 0xc1, 0xbd,
-0xf9, 0xce, 0xa8, 0xe5, 0x94, 0xfe, 0x28, 0x16, 0x61, 0x29, 0x17, 0x36, 0x47, 0x3b, 0x77, 0x39,
-0xb9, 0x31, 0x5f, 0x25, 0xb2, 0x15, 0xbc, 0x03, 0xd0, 0xf0, 0xdd, 0xde, 0x81, 0xd0, 0x6f, 0xc8,
-0x3b, 0xc8, 0xd9, 0xcf, 0x1d, 0xde, 0x16, 0xf0, 0xae, 0x02, 0xec, 0x12, 0xaf, 0x1e, 0xf9, 0x24,
-0x77, 0x26, 0xeb, 0x23, 0x03, 0x1f, 0x6c, 0x18, 0x58, 0x10, 0x5c, 0x06, 0xe0, 0xfa, 0xea, 0xee,
-0xb8, 0xe4, 0x7f, 0xde, 0xdd, 0xdd, 0x07, 0xe3, 0x24, 0xec, 0x12, 0xf7, 0xea, 0x00, 0x60, 0x08,
-0x86, 0x0c, 0x0a, 0x0e, 0xf4, 0x0d, 0xd8, 0x0d, 0x2e, 0x0e, 0xc4, 0x0e, 0xc4, 0x0e, 0xd4, 0x0c,
-0xa0, 0x08, 0x6e, 0x02, 0xf4, 0xfb, 0xf2, 0xf6, 0xae, 0xf4, 0xee, 0xf4, 0x84, 0xf6, 0x22, 0xf8,
-0xc2, 0xf8, 0x00, 0xf8, 0x74, 0xf6, 0x84, 0xf5, 0x66, 0xf6, 0xe8, 0xf9, 0x40, 0x00, 0x28, 0x08,
-0x1a, 0x10, 0x20, 0x16, 0xce, 0x18, 0x00, 0x18, 0x66, 0x14, 0x22, 0x0f, 0xbc, 0x08, 0xaa, 0x01,
-0x00, 0xfa, 0x06, 0xf2, 0x3c, 0xea, 0xa3, 0xe3, 0x63, 0xdf, 0x73, 0xde, 0x1d, 0xe2, 0x6a, 0xea,
-0xca, 0xf6, 0x1c, 0x06, 0xdc, 0x15, 0x6f, 0x23, 0x99, 0x2c, 0xf3, 0x2f, 0xd1, 0x2c, 0x35, 0x24,
-0x1e, 0x17, 0x5e, 0x07, 0xb6, 0xf6, 0xe8, 0xe6, 0x47, 0xd9, 0x53, 0xcf, 0xfd, 0xc9, 0x73, 0xca,
-0x2b, 0xd1, 0x83, 0xde, 0x6e, 0xf1, 0x00, 0x08, 0x77, 0x1f, 0x33, 0x34, 0x7b, 0x42, 0x6f, 0x47,
-0x79, 0x42, 0x3b, 0x34, 0xb7, 0x1f, 0xc2, 0x07, 0x9e, 0xef, 0xb9, 0xd9, 0x77, 0xc8, 0x8f, 0xbc,
-0x57, 0xb7, 0x89, 0xb9, 0xed, 0xc3, 0x6b, 0xd6, 0x1c, 0xf0, 0x44, 0x0e, 0xf3, 0x2c, 0x1f, 0x47,
-0x92, 0x57, 0x58, 0x5b, 0xbb, 0x51, 0x6d, 0x3d, 0xf3, 0x21, 0xe8, 0x03, 0xb2, 0xe6, 0x71, 0xcd,
-0xbb, 0xb9, 0x31, 0xad, 0xcc, 0xa8, 0x6d, 0xad, 0x29, 0xbc, 0xbd, 0xd4, 0x56, 0xf5, 0x34, 0x1a,
-0xa9, 0x3d, 0x92, 0x59, 0xe6, 0x68, 0xe4, 0x68, 0xfe, 0x59, 0xf1, 0x3f, 0x99, 0x1f, 0x66, 0xfd,
-0x3f, 0xdd, 0xc7, 0xc1, 0x37, 0xad, 0x0c, 0xa1, 0x80, 0x9e, 0xca, 0xa6, 0xbb, 0xba, 0x69, 0xd9,
-0x80, 0xff, 0xcd, 0x27, 0x1d, 0x4c, 0x92, 0x66, 0xc8, 0x72, 0xc0, 0x6e, 0x40, 0x5c, 0xfd, 0x3e,
-0x04, 0x1c, 0x86, 0xf7, 0x63, 0xd5, 0x7b, 0xb8, 0xb2, 0xa3, 0xb2, 0x98, 0x06, 0x99, 0x16, 0xa6,
-0x87, 0xbf, 0x2f, 0xe3, 0x46, 0x0c, 0x0b, 0x35, 0x62, 0x57, 0x84, 0x6e, 0x82, 0x76, 0xde, 0x6e,
-0x60, 0x59, 0x2b, 0x3a, 0x82, 0x15, 0xbe, 0xef, 0x9b, 0xcc, 0xe3, 0xaf, 0x82, 0x9c, 0xf8, 0x94,
-0x88, 0x9a, 0xf1, 0xac, 0xcf, 0xca, 0x40, 0xf0, 0x38, 0x18, 0x55, 0x3d, 0xfa, 0x5a, 0x36, 0x6d,
-0xe6, 0x71, 0x4e, 0x68, 0x0b, 0x52, 0x87, 0x32, 0xdc, 0x0d, 0x18, 0xe8, 0xd1, 0xc5, 0x43, 0xab,
-0xee, 0x9b, 0x92, 0x99, 0x16, 0xa4, 0x29, 0xba, 0xbf, 0xd8, 0xde, 0xfb, 0xfb, 0x1e, 0x69, 0x3e,
-0xba, 0x56, 0x80, 0x65, 0x3c, 0x68, 0x12, 0x5e, 0x41, 0x48, 0x53, 0x29, 0x62, 0x05, 0x55, 0xe1,
-0x17, 0xc2, 0x11, 0xac, 0x36, 0xa2, 0xd4, 0xa4, 0xa7, 0xb2, 0x4d, 0xc9, 0x2a, 0xe5, 0xfc, 0x02,
-0xe5, 0x1f, 0x7f, 0x39, 0x91, 0x4d, 0x82, 0x59, 0x36, 0x5b, 0x27, 0x51, 0x07, 0x3c, 0x71, 0x1e,
-0x22, 0xfd, 0x17, 0xdd, 0x89, 0xc3, 0xc9, 0xb3, 0x51, 0xaf, 0x61, 0xb5, 0xed, 0xc3, 0xbb, 0xd7,
-0x82, 0xee, 0x02, 0x06, 0x97, 0x1c, 0x9b, 0x30, 0x9d, 0x40, 0xf1, 0x49, 0x6d, 0x4a, 0xb5, 0x40,
-0x25, 0x2d, 0x3c, 0x13, 0x50, 0xf7, 0x4f, 0xde, 0x23, 0xcc, 0xff, 0xc2, 0xa7, 0xc2, 0xd1, 0xc9,
-0xcd, 0xd5, 0xa0, 0xe4, 0xb4, 0xf4, 0xf6, 0x04, 0xe4, 0x14, 0xad, 0x23, 0x73, 0x2f, 0x59, 0x36,
-0x0b, 0x36, 0x99, 0x2d, 0x57, 0x1e, 0xd0, 0x0a, 0x02, 0xf7, 0xbe, 0xe6, 0x35, 0xdc, 0xfd, 0xd7,
-0x65, 0xd9, 0xa1, 0xde, 0x1e, 0xe6, 0xa0, 0xee, 0x5a, 0xf7, 0x66, 0x00, 0xba, 0x09, 0xb8, 0x12,
-0x54, 0x1a, 0x09, 0x1f, 0x9d, 0x1f, 0x94, 0x1b, 0x70, 0x13, 0x1a, 0x09, 0xf2, 0xfe, 0xfa, 0xf6,
-0x1c, 0xf2, 0x44, 0xf0, 0x9c, 0xf0, 0x46, 0xf2, 0x20, 0xf4, 0xb0, 0xf5, 0xe4, 0xf6, 0x64, 0xf8,
-0x76, 0xfa, 0xa2, 0xfd, 0xe4, 0x01, 0xba, 0x06, 0x18, 0x0b, 0x06, 0x0e, 0xd4, 0x0e, 0x0a, 0x0e,
-0x62, 0x0c, 0x7c, 0x0a, 0xf0, 0x08, 0x74, 0x07, 0xac, 0x05, 0xfa, 0x02, 0xe6, 0xfe, 0x4c, 0xf9,
-0xba, 0xf2, 0xfe, 0xeb, 0x1a, 0xe7, 0x88, 0xe5, 0x88, 0xe8, 0x14, 0xf0, 0xb6, 0xfa, 0x1e, 0x06,
-0x86, 0x10, 0x2e, 0x18, 0x1f, 0x1d, 0x73, 0x1f, 0x5f, 0x1f, 0x2d, 0x1d, 0x80, 0x18, 0x10, 0x11,
-0x90, 0x06, 0x14, 0xf9, 0xc0, 0xe9, 0x31, 0xdb, 0x5b, 0xd0, 0x7f, 0xcc, 0x05, 0xd1, 0x85, 0xdd,
-0xc4, 0xef, 0x8a, 0x03, 0xb8, 0x15, 0x4b, 0x24, 0x19, 0x2e, 0x73, 0x33, 0x53, 0x34, 0xcf, 0x30,
-0xc1, 0x28, 0xa6, 0x1b, 0x3a, 0x09, 0x36, 0xf3, 0xc5, 0xdb, 0x15, 0xc7, 0x93, 0xb9, 0x37, 0xb6,
-0xd7, 0xbe, 0x5f, 0xd1, 0x66, 0xea, 0x52, 0x05, 0xf3, 0x1d, 0x7d, 0x31, 0x11, 0x3f, 0xfd, 0x45,
-0x65, 0x46, 0x83, 0x40, 0x4d, 0x33, 0x2f, 0x1f, 0xf4, 0x04, 0x34, 0xe7, 0x77, 0xca, 0x59, 0xb3,
-0x4a, 0xa6, 0x36, 0xa6, 0x27, 0xb3, 0x07, 0xcb, 0x92, 0xe9, 0xb6, 0x09, 0x1b, 0x27, 0xdb, 0x3e,
-0xed, 0x4e, 0x16, 0x57, 0x1c, 0x56, 0x95, 0x4b, 0xff, 0x37, 0x24, 0x1c, 0xf8, 0xfa, 0x71, 0xd8,
-0xab, 0xb9, 0x28, 0xa3, 0xf2, 0x98, 0x22, 0x9c, 0xcd, 0xac, 0x95, 0xc8, 0x22, 0xeb, 0x78, 0x0f,
-0xb5, 0x30, 0xa5, 0x4b, 0xa4, 0x5d, 0x00, 0x65, 0x62, 0x60, 0x17, 0x50, 0xa9, 0x35, 0xd8, 0x13,
-0xce, 0xee, 0x0d, 0xcb, 0x2f, 0xad, 0x54, 0x99, 0xa6, 0x91, 0xb6, 0x97, 0x47, 0xab, 0x05, 0xca,
-0xac, 0xef, 0x3e, 0x17, 0x5d, 0x3b, 0xf4, 0x57, 0xae, 0x69, 0xe2, 0x6d, 0x1e, 0x64, 0xb9, 0x4d,
-0xf1, 0x2d, 0x08, 0x09, 0x5b, 0xe3, 0x13, 0xc1, 0x3a, 0xa6, 0x5e, 0x95, 0x92, 0x90, 0x12, 0x99,
-0x67, 0xae, 0x4b, 0xcf, 0x56, 0xf7, 0xc7, 0x20, 0xf3, 0x45, 0x84, 0x61, 0xaa, 0x6f, 0xa4, 0x6e,
-0x06, 0x5f, 0x05, 0x44, 0x4d, 0x22, 0xe0, 0xfd, 0xbf, 0xda, 0x13, 0xbc, 0xd6, 0xa4, 0x26, 0x97,
-0xc8, 0x94, 0x10, 0x9f, 0x5d, 0xb6, 0xed, 0xd8, 0xf4, 0x01, 0x3d, 0x2b, 0x1d, 0x4e, 0x54, 0x65,
-0xd6, 0x6d, 0x10, 0x67, 0x9f, 0x53, 0xbf, 0x37, 0xa0, 0x17, 0xcc, 0xf6, 0xe7, 0xd7, 0x7f, 0xbd,
-0xac, 0xa9, 0x8c, 0x9e, 0xf2, 0x9d, 0x8e, 0xa9, 0xa3, 0xc1, 0xdc, 0xe3, 0x14, 0x0b, 0x9f, 0x30,
-0x4d, 0x4e, 0x94, 0x5f, 0x10, 0x63, 0x52, 0x59, 0xa7, 0x45, 0xe5, 0x2b, 0x6e, 0x0f, 0x1a, 0xf3,
-0xab, 0xd8, 0x6d, 0xc2, 0x33, 0xb2, 0x2e, 0xaa, 0xd5, 0xab, 0xe9, 0xb8, 0x91, 0xd0, 0x04, 0xf0,
-0x3e, 0x12, 0x0d, 0x31, 0xa3, 0x47, 0x1d, 0x53, 0xd3, 0x52, 0x5b, 0x48, 0xb1, 0x36, 0xab, 0x20,
-0x34, 0x09, 0x1e, 0xf2, 0xf5, 0xdc, 0x9b, 0xcb, 0x8b, 0xbf, 0x29, 0xba, 0x87, 0xbd, 0xf1, 0xc9,
-0x9d, 0xde, 0x82, 0xf8, 0x0a, 0x13, 0x0b, 0x2a, 0x0f, 0x3a, 0x17, 0x41, 0x3b, 0x3f, 0xeb, 0x35,
-0x39, 0x27, 0xda, 0x15, 0xde, 0x03, 0xda, 0xf2, 0x62, 0xe4, 0x1b, 0xd9, 0x29, 0xd2, 0x23, 0xd0,
-0x87, 0xd3, 0x95, 0xdc, 0x34, 0xea, 0x94, 0xfa, 0x72, 0x0b, 0x44, 0x1a, 0xd3, 0x24, 0xf1, 0x29,
-0x2f, 0x29, 0x4f, 0x23, 0xde, 0x19, 0x6c, 0x0e, 0xce, 0x02, 0x82, 0xf8, 0x3a, 0xf0, 0xa4, 0xea,
-0xe6, 0xe7, 0x26, 0xe7, 0x04, 0xe8, 0xb0, 0xea, 0x84, 0xef, 0xb4, 0xf6, 0x52, 0xff, 0x30, 0x08,
-0x4a, 0x0f, 0x32, 0x13, 0xa2, 0x13, 0xdc, 0x10, 0x86, 0x0c, 0xde, 0x07, 0x56, 0x04, 0x94, 0x02,
-0x12, 0x02, 0x1c, 0x02, 0x26, 0x01, 0x5a, 0xfe, 0xae, 0xf9, 0x44, 0xf4, 0xd6, 0xef, 0x18, 0xee,
-0x7a, 0xef, 0x20, 0xf3, 0xc6, 0xf7, 0xe8, 0xfb, 0x06, 0xff, 0x8a, 0x01, 0x3e, 0x04, 0x44, 0x08,
-0xac, 0x0d, 0xda, 0x13, 0xde, 0x18, 0xe0, 0x1a, 0x2a, 0x18, 0x38, 0x10, 0x4c, 0x04, 0x9e, 0xf6,
-0x22, 0xea, 0x2d, 0xe1, 0xe7, 0xdc, 0xaf, 0xdc, 0xff, 0xdf, 0x7e, 0xe5, 0xa2, 0xec, 0xd6, 0xf5,
-0xc0, 0x00, 0xa6, 0x0d, 0x26, 0x1b, 0xff, 0x26, 0x0b, 0x2f, 0x01, 0x31, 0x5f, 0x2b, 0xd9, 0x1e,
-0xd0, 0x0c, 0x06, 0xf8, 0x74, 0xe4, 0x3f, 0xd4, 0xf7, 0xc9, 0x37, 0xc6, 0x8b, 0xc8, 0xbf, 0xd0,
-0x1f, 0xde, 0x6c, 0xef, 0xee, 0x03, 0x42, 0x19, 0xc7, 0x2c, 0x4b, 0x3c, 0x79, 0x44, 0xe5, 0x43,
-0x5d, 0x3a, 0x31, 0x28, 0x1e, 0x10, 0x18, 0xf5, 0x8b, 0xda, 0xa1, 0xc4, 0x19, 0xb6, 0x7f, 0xb0,
-0xaf, 0xb4, 0xe5, 0xc1, 0x95, 0xd6, 0xc0, 0xf0, 0xde, 0x0c, 0xd3, 0x27, 0xb9, 0x3e, 0x73, 0x4e,
-0x52, 0x55, 0xd1, 0x51, 0x2f, 0x44, 0x7d, 0x2d, 0x3c, 0x10, 0x48, 0xef, 0x41, 0xcf, 0xc7, 0xb4,
-0xd0, 0xa3, 0x5a, 0x9f, 0x50, 0xa7, 0xf7, 0xba, 0x23, 0xd7, 0xf4, 0xf7, 0xe0, 0x18, 0x37, 0x36,
-0x13, 0x4d, 0x6a, 0x5b, 0xe8, 0x5f, 0x6a, 0x59, 0x6f, 0x48, 0xe5, 0x2d, 0xfa, 0x0b, 0x32, 0xe6,
-0xcd, 0xc1, 0xb0, 0xa4, 0x18, 0x94, 0xbe, 0x92, 0x3c, 0xa0, 0x41, 0xba, 0x4d, 0xdc, 0xe8, 0x00,
-0xe5, 0x23, 0x1d, 0x41, 0xee, 0x56, 0xb8, 0x63, 0xea, 0x65, 0x12, 0x5d, 0xfb, 0x48, 0xb3, 0x2a,
-0x92, 0x04, 0x11, 0xdb, 0x39, 0xb4, 0xa6, 0x97, 0x24, 0x8a, 0xca, 0x8d, 0x32, 0xa1, 0xe5, 0xbf,
-0xd4, 0xe4, 0x42, 0x0a, 0x09, 0x2c, 0x7b, 0x47, 0x66, 0x5b, 0x42, 0x66, 0xc0, 0x66, 0xb8, 0x5b,
-0xa3, 0x44, 0x0d, 0x23, 0xce, 0xf9, 0xb1, 0xce, 0x46, 0xa9, 0x60, 0x90, 0x4e, 0x88, 0x44, 0x91,
-0x58, 0xa8, 0xc9, 0xc8, 0x56, 0xed, 0x12, 0x11, 0xc9, 0x30, 0x63, 0x4a, 0x6c, 0x5c, 0x24, 0x65,
-0xae, 0x62, 0x27, 0x54, 0xeb, 0x39, 0x44, 0x16, 0x50, 0xed, 0x29, 0xc5, 0xd0, 0xa4, 0xa6, 0x91,
-0x6c, 0x8e, 0x6c, 0x9a, 0x87, 0xb2, 0x77, 0xd2, 0x28, 0xf5, 0x8a, 0x16, 0x8d, 0x33, 0x5d, 0x4a,
-0x3a, 0x59, 0x66, 0x5e, 0x6e, 0x58, 0x3f, 0x47, 0x0f, 0x2c, 0xde, 0x09, 0xea, 0xe4, 0xc9, 0xc2,
-0xfc, 0xa8, 0x46, 0x9b, 0x6a, 0x9b, 0x5a, 0xa8, 0x77, 0xbf, 0xe7, 0xdc, 0x46, 0xfc, 0xf2, 0x19,
-0x4f, 0x33, 0x1d, 0x46, 0xd5, 0x50, 0xf7, 0x51, 0x01, 0x49, 0x2b, 0x37, 0x25, 0x1e, 0x14, 0x01,
-0x63, 0xe3, 0xeb, 0xc8, 0x55, 0xb5, 0x5b, 0xab, 0x41, 0xac, 0xbf, 0xb7, 0xf7, 0xcb, 0x96, 0xe5,
-0xce, 0x00, 0x48, 0x1a, 0xe3, 0x2e, 0xdb, 0x3c, 0xaf, 0x42, 0x1f, 0x40, 0x2f, 0x36, 0x7f, 0x26,
-0xfc, 0x12, 0x88, 0xfd, 0x1e, 0xe8, 0xe5, 0xd4, 0x91, 0xc6, 0xf9, 0xbe, 0xf3, 0xbf, 0x79, 0xc9,
-0x1f, 0xda, 0x1c, 0xef, 0x9a, 0x04, 0xc0, 0x17, 0xc5, 0x25, 0x93, 0x2d, 0xfb, 0x2e, 0xb9, 0x2a,
-0xb7, 0x22, 0x54, 0x18, 0x74, 0x0c, 0xba, 0xff, 0x6a, 0xf2, 0xa0, 0xe5, 0x53, 0xdb, 0x1f, 0xd5,
-0xe7, 0xd4, 0x4b, 0xdb, 0xce, 0xe6, 0x54, 0xf5, 0x76, 0x03, 0x92, 0x0e, 0xbc, 0x15, 0x62, 0x18,
-0xa6, 0x17, 0xf8, 0x14, 0xa2, 0x11, 0x7a, 0x0e, 0x40, 0x0b, 0xf0, 0x06, 0x06, 0x01, 0xe6, 0xf9,
-0x86, 0xf2, 0x04, 0xed, 0xd4, 0xea, 0x76, 0xec, 0x4c, 0xf1, 0x28, 0xf7, 0x12, 0xfc, 0x26, 0xff,
-0x20, 0x00, 0x14, 0x00, 0x34, 0x00, 0x70, 0x01, 0x94, 0x04, 0x32, 0x09, 0xe4, 0x0d, 0x46, 0x11,
-0xce, 0x11, 0x4e, 0x0f, 0x96, 0x0a, 0xaa, 0x04, 0x1a, 0xff, 0x46, 0xfa, 0x20, 0xf6, 0x56, 0xf2,
-0x58, 0xee, 0xc2, 0xea, 0x24, 0xe8, 0xc2, 0xe7, 0x96, 0xea, 0x06, 0xf1, 0xfe, 0xfa, 0x2a, 0x07,
-0xa0, 0x13, 0x29, 0x1e, 0xad, 0x24, 0x2d, 0x26, 0x89, 0x22, 0x5e, 0x1a, 0xfa, 0x0e, 0xbe, 0x01,
-0x02, 0xf4, 0x56, 0xe7, 0xa9, 0xdc, 0x17, 0xd5, 0x9d, 0xd1, 0xe9, 0xd2, 0x95, 0xd9, 0x8c, 0xe5,
-0xf6, 0xf5, 0x34, 0x09, 0xed, 0x1c, 0x0f, 0x2e, 0xd3, 0x39, 0xe3, 0x3d, 0x1d, 0x39, 0x53, 0x2c,
-0x54, 0x19, 0x0a, 0x03, 0xca, 0xec, 0xfd, 0xd8, 0xe1, 0xc9, 0xa3, 0xc0, 0xb9, 0xbd, 0xc9, 0xc1,
-0xa1, 0xcc, 0xf7, 0xdd, 0xc8, 0xf4, 0xec, 0x0e, 0x6b, 0x29, 0x4f, 0x40, 0x47, 0x4f, 0x11, 0x53,
-0x9f, 0x4a, 0x31, 0x37, 0x7d, 0x1c, 0xb8, 0xfe, 0x2f, 0xe2, 0x63, 0xca, 0x59, 0xb9, 0x0b, 0xb0,
-0xbf, 0xae, 0x7f, 0xb5, 0x83, 0xc4, 0x45, 0xdb, 0x70, 0xf8, 0x1e, 0x19, 0x55, 0x39, 0x8b, 0x53,
-0xee, 0x62, 0xb4, 0x63, 0xb0, 0x55, 0xc7, 0x3b, 0x8c, 0x1a, 0x9c, 0xf7, 0x55, 0xd7, 0x4d, 0xbd,
-0x87, 0xab, 0xb8, 0xa2, 0x38, 0xa3, 0x4f, 0xad, 0x15, 0xc1, 0xcd, 0xdd, 0x32, 0x01, 0x0b, 0x27,
-0x21, 0x4a, 0x5a, 0x64, 0x98, 0x70, 0x9a, 0x6c, 0x04, 0x59, 0x39, 0x3a, 0x72, 0x15, 0xea, 0xef,
-0x55, 0xce, 0xaf, 0xb3, 0x18, 0xa2, 0x6c, 0x9a, 0x28, 0x9d, 0xdc, 0xaa, 0x91, 0xc3, 0x84, 0xe5,
-0x34, 0x0d, 0x2b, 0x35, 0x78, 0x57, 0xac, 0x6e, 0x8c, 0x76, 0xfe, 0x6d, 0xe6, 0x56, 0x8f, 0x35,
-0x34, 0x0f, 0xa0, 0xe8, 0x2d, 0xc6, 0x5f, 0xab, 0x92, 0x9a, 0x36, 0x95, 0xdc, 0x9b, 0xbb, 0xae,
-0x87, 0xcc, 0x3a, 0xf2, 0xc6, 0x1a, 0xbf, 0x40, 0xf2, 0x5e, 0x2e, 0x71, 0xb8, 0x74, 0x32, 0x69,
-0x9b, 0x50, 0xf7, 0x2e, 0x90, 0x08, 0x21, 0xe2, 0x2f, 0xc0, 0x9e, 0xa6, 0x7e, 0x98, 0xf4, 0x96,
-0x58, 0xa2, 0x83, 0xb9, 0xe1, 0xd9, 0x16, 0xff, 0x3d, 0x24, 0xcb, 0x44, 0x4a, 0x5d, 0x02, 0x6b,
-0xda, 0x6b, 0x98, 0x5f, 0x77, 0x47, 0xbf, 0x26, 0x9c, 0x01, 0xb1, 0xdc, 0x11, 0xbd, 0xca, 0xa6,
-0xc8, 0x9c, 0xe2, 0x9f, 0x47, 0xaf, 0x89, 0xc8, 0xca, 0xe7, 0xe2, 0x08, 0xd3, 0x27, 0x17, 0x42,
-0x4e, 0x55, 0x8c, 0x5f, 0x06, 0x5f, 0xdf, 0x52, 0x29, 0x3c, 0x63, 0x1d, 0xc4, 0xfa, 0x51, 0xd9,
-0x0f, 0xbe, 0xfd, 0xac, 0x18, 0xa8, 0x33, 0xaf, 0x37, 0xc0, 0xfb, 0xd7, 0x98, 0xf2, 0x18, 0x0d,
-0x2b, 0x25, 0x41, 0x39, 0x13, 0x48, 0x8b, 0x4f, 0x49, 0x4e, 0x21, 0x43, 0xaf, 0x2e, 0x6a, 0x13,
-0x5e, 0xf5, 0xb9, 0xd9, 0xf1, 0xc4, 0x03, 0xba, 0xa7, 0xb9, 0xb5, 0xc2, 0x57, 0xd2, 0x88, 0xe5,
-0x7e, 0xf9, 0x90, 0x0c, 0xd7, 0x1d, 0x73, 0x2c, 0x69, 0x37, 0xff, 0x3c, 0xa5, 0x3b, 0x43, 0x32,
-0x71, 0x21, 0x68, 0x0b, 0x34, 0xf4, 0x09, 0xe0, 0x87, 0xd2, 0x19, 0xcd, 0x67, 0xcf, 0x6f, 0xd7,
-0xdb, 0xe2, 0x86, 0xef, 0xf8, 0xfb, 0xb2, 0x07, 0x44, 0x12, 0xaa, 0x1b, 0xfd, 0x22, 0x3f, 0x27,
-0xe5, 0x26, 0x23, 0x21, 0x2c, 0x16, 0x16, 0x08, 0xa8, 0xf9, 0xfc, 0xed, 0xdc, 0xe6, 0x9e, 0xe4,
-0x86, 0xe6, 0xda, 0xea, 0x42, 0xf0, 0x96, 0xf5, 0x72, 0xfa, 0xca, 0xfe, 0x06, 0x03, 0x5e, 0x07,
-0xf8, 0x0b, 0x00, 0x10, 0x88, 0x12, 0xaa, 0x12, 0x2c, 0x10, 0xc0, 0x0b, 0x76, 0x06, 0xc6, 0x01,
-0x7e, 0xfe, 0xcc, 0xfc, 0x12, 0xfc, 0x8e, 0xfb, 0x8a, 0xfa, 0x94, 0xf8, 0xa0, 0xf5, 0x6a, 0xf2,
-0x04, 0xf0, 0xe8, 0xef, 0xb8, 0xf2, 0xac, 0xf8, 0xd0, 0x00, 0x8e, 0x09, 0x1c, 0x11, 0x3a, 0x16,
-0xa4, 0x18, 0xbe, 0x18, 0x1e, 0x17, 0xe8, 0x13, 0x66, 0x0f, 0x0c, 0x09, 0x10, 0x01, 0x36, 0xf7,
-0x5c, 0xec, 0x05, 0xe2, 0x3b, 0xda, 0x7f, 0xd7, 0x41, 0xdb, 0xaa, 0xe5, 0x18, 0xf5, 0x90, 0x06,
-0xc8, 0x16, 0x47, 0x23, 0xe3, 0x2a, 0xd1, 0x2d, 0x91, 0x2c, 0x9d, 0x27, 0x17, 0x1f, 0x24, 0x13,
-0xe4, 0x03, 0x32, 0xf2, 0x89, 0xdf, 0xd3, 0xce, 0x53, 0xc3, 0x45, 0xc0, 0x3b, 0xc7, 0xb1, 0xd7,
-0x0c, 0xef, 0x9e, 0x08, 0x39, 0x20, 0x41, 0x32, 0xab, 0x3d, 0x21, 0x42, 0x43, 0x40, 0x6b, 0x38,
-0x15, 0x2b, 0x84, 0x18, 0xa4, 0x01, 0xf6, 0xe7, 0xc7, 0xce, 0x19, 0xba, 0x07, 0xae, 0xa9, 0xad,
-0xc9, 0xb9, 0xe7, 0xd0, 0xc4, 0xee, 0x44, 0x0e, 0x5d, 0x2a, 0x15, 0x40, 0x93, 0x4d, 0xd3, 0x52,
-0x8b, 0x4f, 0x55, 0x44, 0x59, 0x31, 0xa4, 0x17, 0x46, 0xf9, 0x5d, 0xd9, 0x8b, 0xbc, 0x4e, 0xa7,
-0xa4, 0x9d, 0x72, 0xa1, 0xc3, 0xb2, 0xdf, 0xce, 0x66, 0xf1, 0xf0, 0x14, 0xa9, 0x34, 0x2b, 0x4d,
-0x6c, 0x5c, 0x38, 0x61, 0x0a, 0x5b, 0x7f, 0x4a, 0xc3, 0x30, 0x3e, 0x10, 0x48, 0xec, 0x7f, 0xc9,
-0xfd, 0xac, 0xb4, 0x9a, 0x16, 0x95, 0x10, 0x9d, 0xdb, 0xb1, 0x01, 0xd1, 0x1a, 0xf6, 0xfa, 0x1b,
-0x17, 0x3e, 0x42, 0x58, 0xb0, 0x67, 0x6a, 0x6a, 0xfe, 0x5f, 0xab, 0x49, 0x11, 0x2a, 0xe8, 0x04,
-0x07, 0xdf, 0x2d, 0xbd, 0x86, 0xa3, 0xd2, 0x94, 0x98, 0x92, 0x46, 0x9d, 0x23, 0xb4, 0x23, 0xd5,
-0x42, 0xfc, 0x39, 0x24, 0xbb, 0x47, 0x16, 0x62, 0x72, 0x6f, 0x02, 0x6e, 0xf2, 0x5d, 0x45, 0x42,
-0x03, 0x1f, 0xfa, 0xf8, 0x9d, 0xd4, 0x21, 0xb6, 0x80, 0xa0, 0x4a, 0x95, 0x7a, 0x95, 0x96, 0xa1,
-0xcf, 0xb9, 0x01, 0xdc, 0x24, 0x04, 0xa5, 0x2c, 0x79, 0x4f, 0x52, 0x67, 0x54, 0x70, 0xa4, 0x69,
-0x00, 0x55, 0xb7, 0x36, 0x38, 0x13, 0x96, 0xef, 0x53, 0xcf, 0x79, 0xb5, 0xe6, 0xa3, 0x92, 0x9b,
-0xde, 0x9d, 0x69, 0xab, 0x55, 0xc4, 0x5c, 0xe6, 0xae, 0x0d, 0xbd, 0x33, 0xc7, 0x52, 0x4c, 0x65,
-0xfa, 0x68, 0xd4, 0x5d, 0x25, 0x47, 0x7b, 0x29, 0x64, 0x09, 0x86, 0xea, 0x7d, 0xcf, 0x65, 0xba,
-0x5f, 0xac, 0xb8, 0xa6, 0x42, 0xaa, 0x61, 0xb8, 0x7f, 0xd0, 0xa2, 0xf0, 0xf0, 0x13, 0x05, 0x35,
-0xff, 0x4d, 0xd8, 0x5a, 0x48, 0x5a, 0xcd, 0x4d, 0xc5, 0x38, 0xf1, 0x1e, 0x12, 0x04, 0xbe, 0xea,
-0x01, 0xd5, 0x29, 0xc4, 0x6b, 0xb9, 0x09, 0xb6, 0xfd, 0xba, 0xb9, 0xc8, 0x93, 0xde, 0x10, 0xfa,
-0x20, 0x17, 0xc7, 0x30, 0xbd, 0x42, 0x8d, 0x4a, 0x09, 0x48, 0x63, 0x3c, 0x75, 0x2a, 0x92, 0x15,
-0x48, 0x00, 0xae, 0xec, 0x2b, 0xdc, 0x4b, 0xd0, 0xa3, 0xc9, 0xf3, 0xc8, 0x9b, 0xce, 0x3b, 0xda,
-0x1e, 0xeb, 0xde, 0xfe, 0xe0, 0x12, 0xed, 0x23, 0x9f, 0x2f, 0x23, 0x34, 0x7d, 0x31, 0xcb, 0x28,
-0x47, 0x1c, 0x04, 0x0e, 0xec, 0xff, 0x94, 0xf3, 0xa6, 0xe9, 0x03, 0xe3, 0xcb, 0xdf, 0xfd, 0xdf,
-0x0d, 0xe3, 0xd6, 0xe8, 0xf8, 0xf0, 0x5a, 0xfb, 0x94, 0x06, 0x64, 0x11, 0xc2, 0x19, 0xab, 0x1d,
-0x2d, 0x1d, 0xce, 0x18, 0xd6, 0x11, 0x02, 0x0a, 0xf0, 0x02, 0x6c, 0xfd, 0xde, 0xf9, 0xec, 0xf7,
-0x1e, 0xf7, 0x20, 0xf6, 0x7c, 0xf4, 0xb2, 0xf2, 0xac, 0xf1, 0x90, 0xf2, 0xb8, 0xf5, 0x1a, 0xfb,
-0xf8, 0x00, 0xe6, 0x05, 0xae, 0x08, 0x7a, 0x09, 0x48, 0x09, 0x0e, 0x09, 0xe4, 0x09, 0xb6, 0x0b,
-0x0e, 0x0e, 0x54, 0x0f, 0x0c, 0x0e, 0x0a, 0x09, 0x8a, 0x00, 0x14, 0xf6, 0x1e, 0xec, 0x22, 0xe5,
-0x83, 0xe2, 0x3c, 0xe4, 0x32, 0xe9, 0xc8, 0xef, 0xd0, 0xf6, 0xe8, 0xfd, 0x7a, 0x05, 0x00, 0x0e,
-0x04, 0x17, 0x69, 0x1f, 0x67, 0x25, 0xe5, 0x26, 0x5b, 0x22, 0x78, 0x17, 0x9e, 0x07, 0x7c, 0xf5,
-0x44, 0xe4, 0xdf, 0xd6, 0x71, 0xcf, 0x7f, 0xce, 0x1f, 0xd3, 0x03, 0xdc, 0x02, 0xe8, 0x80, 0xf6,
-0xce, 0x06, 0x04, 0x18, 0x09, 0x28, 0xe3, 0x34, 0xef, 0x3b, 0x4d, 0x3b, 0x31, 0x32, 0x71, 0x21,
-0x1a, 0x0b, 0x38, 0xf2, 0x77, 0xda, 0x7d, 0xc7, 0xf1, 0xbb, 0x0f, 0xb9, 0xa7, 0xbe, 0xa5, 0xcb,
-0xb7, 0xde, 0xc8, 0xf5, 0xee, 0x0e, 0x1b, 0x27, 0xaf, 0x3b, 0x93, 0x49, 0x0f, 0x4f, 0xb7, 0x4a,
-0x03, 0x3d, 0xe5, 0x26, 0x14, 0x0b, 0x64, 0xec, 0xf5, 0xce, 0x17, 0xb7, 0x6e, 0xa8, 0x6e, 0xa5,
-0xd1, 0xad, 0xe3, 0xc0, 0x9d, 0xdb, 0x26, 0xfb, 0xca, 0x1a, 0x01, 0x37, 0x6f, 0x4c, 0x1a, 0x59,
-0x96, 0x5b, 0x89, 0x53, 0xd1, 0x41, 0xdb, 0x27, 0xb8, 0x07, 0x62, 0xe4, 0x8f, 0xc2, 0x88, 0xa7,
-0x1e, 0x98, 0xd2, 0x96, 0x3c, 0xa4, 0xf9, 0xbd, 0x31, 0xe0, 0x40, 0x05, 0x51, 0x28, 0x39, 0x45,
-0x96, 0x59, 0xce, 0x63, 0x54, 0x63, 0x40, 0x58, 0x2b, 0x43, 0x67, 0x25, 0xec, 0x00, 0xa3, 0xd9,
-0xd1, 0xb4, 0x16, 0x99, 0x84, 0x8b, 0xec, 0x8e, 0x64, 0xa2, 0x5b, 0xc2, 0x10, 0xe9, 0x74, 0x10,
-0x57, 0x33, 0x77, 0x4e, 0x56, 0x60, 0xee, 0x67, 0xee, 0x64, 0x1a, 0x57, 0x35, 0x3f, 0x63, 0x1e,
-0x32, 0xf7, 0xf5, 0xcd, 0x48, 0xa9, 0xda, 0x8f, 0xac, 0x86, 0x42, 0x8f, 0xb2, 0xa7, 0xf7, 0xca,
-0xc0, 0xf2, 0x18, 0x19, 0xc7, 0x39, 0xb5, 0x52, 0x18, 0x62, 0x84, 0x67, 0xe8, 0x61, 0xa7, 0x51,
-0x0d, 0x37, 0xee, 0x13, 0x98, 0xeb, 0x63, 0xc3, 0x1e, 0xa2, 0xce, 0x8d, 0x60, 0x8a, 0xa4, 0x97,
-0x9f, 0xb2, 0xdb, 0xd5, 0xa4, 0xfb, 0x05, 0x1f, 0xab, 0x3c, 0x65, 0x52, 0x34, 0x5f, 0xda, 0x61,
-0xe4, 0x59, 0x35, 0x47, 0x0d, 0x2b, 0xec, 0x07, 0xe1, 0xe1, 0x37, 0xbe, 0xfe, 0xa2, 0xc2, 0x94,
-0x90, 0x95, 0x9e, 0xa4, 0xa9, 0xbe, 0x49, 0xdf, 0x6c, 0x01, 0x07, 0x21, 0xeb, 0x3a, 0x71, 0x4d,
-0xd6, 0x56, 0x6c, 0x56, 0xb9, 0x4b, 0xa3, 0x37, 0x4b, 0x1c, 0xb6, 0xfc, 0xbd, 0xdc, 0xc7, 0xc0,
-0xb1, 0xac, 0x92, 0xa3, 0x86, 0xa6, 0xbf, 0xb4, 0xdd, 0xcb, 0x14, 0xe8, 0x74, 0x05, 0x2f, 0x20,
-0xa3, 0x35, 0x89, 0x43, 0x1f, 0x49, 0xc1, 0x45, 0xf9, 0x39, 0x71, 0x27, 0x7e, 0x10, 0xee, 0xf7,
-0x4d, 0xe0, 0xfd, 0xcb, 0x89, 0xbd, 0xf3, 0xb6, 0x71, 0xb9, 0xdb, 0xc4, 0xcf, 0xd7, 0x24, 0xef,
-0x54, 0x07, 0xbd, 0x1c, 0xb9, 0x2c, 0xc9, 0x35, 0x4d, 0x37, 0xef, 0x31, 0xf3, 0x26, 0x90, 0x18,
-0x9c, 0x08, 0xbc, 0xf8, 0x92, 0xe9, 0x29, 0xdc, 0xbb, 0xd1, 0x35, 0xcc, 0x1f, 0xcd, 0xf9, 0xd4,
-0xcd, 0xe2, 0x06, 0xf4, 0x8a, 0x05, 0x38, 0x14, 0x17, 0x1e, 0x21, 0x22, 0x1f, 0x21, 0x42, 0x1c,
-0x7c, 0x15, 0x38, 0x0e, 0x36, 0x07, 0x42, 0x00, 0xc6, 0xf8, 0x9e, 0xf0, 0xf2, 0xe8, 0x7f, 0xe3,
-0x03, 0xe2, 0x4c, 0xe5, 0xc0, 0xec, 0x5c, 0xf6, 0xa2, 0xff, 0x74, 0x06, 0xbe, 0x09, 0x2e, 0x0a,
-0xe8, 0x08, 0xaa, 0x07, 0x90, 0x07, 0xb6, 0x08, 0x68, 0x0a, 0x5a, 0x0b, 0x1c, 0x0a, 0x4c, 0x06,
-0x82, 0x00, 0x6c, 0xfa, 0x78, 0xf5, 0xc2, 0xf2, 0x34, 0xf2, 0xbe, 0xf2, 0x4a, 0xf3, 0xe8, 0xf2,
-0x40, 0xf2, 0x02, 0xf2, 0xaa, 0xf3, 0x14, 0xf8, 0x2e, 0xff, 0x2a, 0x08, 0x5c, 0x11, 0xdc, 0x18,
-0xeb, 0x1c, 0x9b, 0x1c, 0x10, 0x18, 0x0c, 0x10, 0x18, 0x06, 0xb6, 0xfb, 0xca, 0xf1, 0x0a, 0xe9,
-0xa1, 0xe1, 0x73, 0xdc, 0x47, 0xda, 0xf9, 0xdb, 0x37, 0xe2, 0xb2, 0xec, 0xda, 0xfa, 0xce, 0x0a,
-0xda, 0x1a, 0x91, 0x28, 0x99, 0x31, 0x27, 0x34, 0x2b, 0x2f, 0x35, 0x23, 0x1c, 0x12, 0x80, 0xfe,
-0x08, 0xeb, 0xf3, 0xd9, 0x35, 0xcd, 0x09, 0xc6, 0xef, 0xc4, 0x07, 0xca, 0xe5, 0xd4, 0x54, 0xe5,
-0xd2, 0xf9, 0xae, 0x10, 0x4b, 0x27, 0x91, 0x3a, 0x3b, 0x47, 0x39, 0x4a, 0x31, 0x42, 0x01, 0x30,
-0xba, 0x16, 0x7a, 0xfa, 0x77, 0xdf, 0x3d, 0xc9, 0x21, 0xba, 0x2b, 0xb3, 0x37, 0xb4, 0x87, 0xbc,
-0x0d, 0xcc, 0xc3, 0xe1, 0x5e, 0xfc, 0x56, 0x19, 0x95, 0x35, 0xed, 0x4c, 0xf8, 0x5a, 0x20, 0x5c,
-0x1f, 0x4f, 0xfd, 0x35, 0x42, 0x15, 0x6c, 0xf2, 0x9f, 0xd2, 0xe3, 0xb9, 0x7a, 0xaa, 0xc8, 0xa4,
-0x16, 0xa8, 0x1f, 0xb4, 0x31, 0xc8, 0x99, 0xe3, 0x0c, 0x04, 0x6b, 0x26, 0x6f, 0x46, 0x0a, 0x5f,
-0x4e, 0x6b, 0xd2, 0x67, 0xad, 0x54, 0x55, 0x35, 0x68, 0x0f, 0xf2, 0xe8, 0x29, 0xc7, 0xfb, 0xad,
-0x2e, 0x9f, 0xf4, 0x9a, 0xea, 0xa0, 0x7d, 0xb0, 0x7b, 0xc9, 0xf0, 0xe9, 0xf6, 0x0e, 0x31, 0x34,
-0x9f, 0x54, 0x00, 0x6b, 0xf2, 0x72, 0x6a, 0x6a, 0xd7, 0x52, 0x6f, 0x30, 0xec, 0x08, 0xc7, 0xe1,
-0x13, 0xc0, 0x3a, 0xa7, 0x20, 0x99, 0x6a, 0x96, 0xe0, 0x9e, 0x8d, 0xb2, 0x01, 0xd0, 0xa8, 0xf4,
-0x24, 0x1c, 0x6d, 0x41, 0x54, 0x5f, 0x26, 0x71, 0xf4, 0x73, 0x2a, 0x67, 0xff, 0x4c, 0xb1, 0x29,
-0x02, 0x02, 0x51, 0xdb, 0x31, 0xba, 0x7a, 0xa2, 0x46, 0x96, 0x46, 0x96, 0xb2, 0xa2, 0x8d, 0xba,
-0xa7, 0xdb, 0xde, 0x01, 0x2f, 0x28, 0xa5, 0x49, 0xfc, 0x61, 0x50, 0x6e, 0xf8, 0x6c, 0x40, 0x5e,
-0x2d, 0x44, 0xeb, 0x21, 0xf0, 0xfb, 0xe3, 0xd6, 0xd7, 0xb7, 0xa8, 0xa2, 0x96, 0x99, 0x92, 0x9d,
-0xed, 0xad, 0xb3, 0xc8, 0x48, 0xea, 0xca, 0x0d, 0xd3, 0x2e, 0x9d, 0x49, 0xe4, 0x5b, 0xdc, 0x63,
-0xb6, 0x60, 0x6b, 0x52, 0x0b, 0x3a, 0x48, 0x1a, 0xaa, 0xf6, 0x79, 0xd4, 0xa7, 0xb8, 0x40, 0xa7,
-0x8c, 0xa2, 0x66, 0xaa, 0x5b, 0xbd, 0x0d, 0xd8, 0x42, 0xf6, 0xf2, 0x13, 0xd1, 0x2d, 0x37, 0x42,
-0xb5, 0x4f, 0x64, 0x55, 0x03, 0x52, 0x29, 0x45, 0x57, 0x2f, 0x84, 0x12, 0xac, 0xf2, 0xaf, 0xd4,
-0xd1, 0xbd, 0xa1, 0xb1, 0x69, 0xb1, 0x25, 0xbc, 0x1f, 0xcf, 0x6c, 0xe6, 0x9a, 0xfe, 0xaa, 0x14,
-0x4b, 0x27, 0xb7, 0x35, 0x63, 0x3f, 0x59, 0x43, 0x63, 0x40, 0xa1, 0x35, 0x3d, 0x23, 0x38, 0x0b,
-0x40, 0xf1, 0x15, 0xda, 0x13, 0xca, 0x6d, 0xc3, 0x75, 0xc6, 0xff, 0xd0, 0x33, 0xe0, 0xfe, 0xf0,
-0xe6, 0x00, 0x1e, 0x0f, 0xda, 0x1a, 0x67, 0x24, 0x07, 0x2b, 0x33, 0x2e, 0x93, 0x2c, 0x4b, 0x25,
-0x4c, 0x18, 0x4c, 0x07, 0x86, 0xf5, 0x7a, 0xe6, 0x2b, 0xdd, 0x89, 0xda, 0xcf, 0xdd, 0xf6, 0xe4,
-0xca, 0xed, 0x7e, 0xf6, 0x7c, 0xfe, 0x4e, 0x05, 0x32, 0x0b, 0x50, 0x10, 0x90, 0x14, 0xb4, 0x17,
-0xce, 0x18, 0xbe, 0x16, 0x74, 0x11, 0xa0, 0x09, 0x38, 0x01, 0x14, 0xfa, 0x90, 0xf5, 0xc2, 0xf3,
-0x1c, 0xf4, 0x66, 0xf5, 0x9a, 0xf6, 0x8c, 0xf7, 0xbc, 0xf7, 0xe6, 0xf7, 0x38, 0xf8, 0x94, 0xf9,
-0x9e, 0xfc, 0x58, 0x01, 0x3e, 0x07, 0xee, 0x0c, 0x42, 0x11, 0x20, 0x13, 0xdc, 0x12, 0xda, 0x10,
-0xf4, 0x0d, 0xa2, 0x0a, 0xa4, 0x06, 0x0c, 0x02, 0x88, 0xfc, 0x10, 0xf6, 0x20, 0xef, 0x8e, 0xe8,
-0x9b, 0xe3, 0x07, 0xe2, 0xfa, 0xe4, 0x56, 0xed, 0x3a, 0xfa, 0x16, 0x09, 0xf6, 0x16, 0x41, 0x21,
-0xb5, 0x26, 0x81, 0x27, 0x73, 0x24, 0x57, 0x1e, 0xe8, 0x15, 0x76, 0x0b, 0x00, 0xff, 0x4c, 0xf1,
-0x07, 0xe3, 0x29, 0xd6, 0x4f, 0xcd, 0x87, 0xca, 0x57, 0xd0, 0xc5, 0xde, 0xfe, 0xf3, 0xa8, 0x0b,
-0x6f, 0x21, 0x7d, 0x31, 0x7d, 0x3a, 0x61, 0x3c, 0xf3, 0x37, 0xe9, 0x2e, 0x91, 0x21, 0xd0, 0x10,
-0x44, 0xfd, 0xfe, 0xe7, 0x17, 0xd3, 0x9b, 0xc1, 0xd1, 0xb6, 0x31, 0xb6, 0x01, 0xc1, 0x69, 0xd6,
-0x20, 0xf3, 0xd4, 0x11, 0x11, 0x2d, 0x25, 0x41, 0x43, 0x4c, 0x7b, 0x4e, 0xb3, 0x48, 0xd1, 0x3b,
-0x07, 0x29, 0x80, 0x11, 0x44, 0xf6, 0xf3, 0xd9, 0x2b, 0xc0, 0xc9, 0xac, 0x12, 0xa4, 0xec, 0xa7,
-0xe7, 0xb8, 0xb5, 0xd4, 0x02, 0xf7, 0x0c, 0x1a, 0x97, 0x38, 0xdf, 0x4e, 0x1a, 0x5b, 0x2c, 0x5d,
-0xde, 0x54, 0x9f, 0x43, 0xaf, 0x2a, 0xfc, 0x0b, 0x58, 0xea, 0x93, 0xc9, 0x79, 0xae, 0x44, 0x9d,
-0x9e, 0x98, 0x84, 0xa1, 0x55, 0xb7, 0x1d, 0xd7, 0x5e, 0xfc, 0xc5, 0x21, 0x2f, 0x42, 0x26, 0x5a,
-0x1e, 0x67, 0xa2, 0x67, 0xe4, 0x5b, 0x51, 0x45, 0x07, 0x26, 0xa2, 0x01, 0x33, 0xdc, 0xc7, 0xba,
-0x18, 0xa2, 0xae, 0x94, 0x7c, 0x94, 0x66, 0xa1, 0xff, 0xb9, 0xd9, 0xdb, 0x7e, 0x02, 0x2b, 0x29,
-0xe9, 0x4a, 0x5c, 0x63, 0x0c, 0x6f, 0x8a, 0x6c, 0x0a, 0x5c, 0xed, 0x3f, 0x04, 0x1c, 0xcc, 0xf4,
-0xaf, 0xcf, 0x13, 0xb1, 0x8e, 0x9c, 0xa2, 0x93, 0xda, 0x96, 0xd0, 0xa5, 0x77, 0xbf, 0xaf, 0xe1,
-0xd0, 0x08, 0xf5, 0x2f, 0x8f, 0x51, 0xc4, 0x68, 0xaa, 0x71, 0xe0, 0x6a, 0x98, 0x55, 0xbd, 0x35,
-0x30, 0x10, 0x22, 0xea, 0x41, 0xc8, 0x0b, 0xae, 0xe8, 0x9d, 0x6e, 0x98, 0xb6, 0x9d, 0x95, 0xad,
-0x9b, 0xc7, 0xfa, 0xe9, 0x8e, 0x10, 0x85, 0x36, 0xde, 0x55, 0x5e, 0x69, 0x8a, 0x6d, 0xb8, 0x61,
-0xf7, 0x48, 0x0b, 0x28, 0x50, 0x04, 0x53, 0xe2, 0xbf, 0xc5, 0x09, 0xb1, 0x44, 0xa5, 0xac, 0xa2,
-0x7c, 0xa9, 0x01, 0xba, 0x8d, 0xd3, 0x1e, 0xf4, 0xe6, 0x17, 0xa3, 0x39, 0xad, 0x53, 0x66, 0x61,
-0x7a, 0x60, 0x03, 0x52, 0xa7, 0x39, 0xc0, 0x1b, 0x42, 0xfd, 0x9d, 0xe1, 0x49, 0xcb, 0x73, 0xbb,
-0xc1, 0xb2, 0xab, 0xb1, 0xb3, 0xb8, 0x0d, 0xc8, 0xed, 0xde, 0xb0, 0xfb, 0x4a, 0x1a, 0xf3, 0x35,
-0xad, 0x49, 0x3f, 0x52, 0xf3, 0x4e, 0x0f, 0x41, 0xc1, 0x2b, 0x2e, 0x13, 0xce, 0xfa, 0x50, 0xe5,
-0x39, 0xd4, 0x65, 0xc8, 0x71, 0xc2, 0x2d, 0xc3, 0x51, 0xca, 0x11, 0xd8, 0x88, 0xeb, 0x60, 0x02,
-0xa0, 0x19, 0x55, 0x2d, 0x6f, 0x3a, 0xff, 0x3e, 0xcf, 0x3a, 0xef, 0x2e, 0x7d, 0x1e, 0xf6, 0x0b,
-0x5e, 0xfa, 0x9a, 0xeb, 0x77, 0xe0, 0x9f, 0xd9, 0x0b, 0xd7, 0xa9, 0xd8, 0x4f, 0xde, 0x76, 0xe7,
-0x1c, 0xf3, 0x82, 0x00, 0x1a, 0x0e, 0x30, 0x1a, 0xe9, 0x22, 0xaf, 0x26, 0x0b, 0x25, 0xd5, 0x1e,
-0x2e, 0x15, 0x1c, 0x0a, 0x68, 0xff, 0x9c, 0xf6, 0x68, 0xf0, 0x24, 0xed, 0xa2, 0xec, 0x22, 0xee,
-0x24, 0xf0, 0x46, 0xf2, 0xea, 0xf4, 0x5e, 0xf8, 0x92, 0xfd, 0xf6, 0x03, 0x44, 0x0a, 0xfa, 0x0e,
-0x38, 0x11, 0x80, 0x10, 0xbe, 0x0d, 0x50, 0x0a, 0x60, 0x07, 0x02, 0x06, 0xac, 0x05, 0xca, 0x05,
-0x38, 0x05, 0x92, 0x02, 0x76, 0xfd, 0xae, 0xf6, 0xd0, 0xef, 0x28, 0xeb, 0x42, 0xea, 0x22, 0xed,
-0x10, 0xf3, 0x14, 0xfa, 0x7a, 0x00, 0xce, 0x05, 0x4a, 0x0a, 0xa2, 0x0e, 0x82, 0x13, 0x5a, 0x18,
-0x45, 0x1c, 0xb7, 0x1d, 0xac, 0x1a, 0x70, 0x12, 0x9c, 0x05, 0xe6, 0xf5, 0x94, 0xe6, 0x9b, 0xda,
-0x5f, 0xd4, 0xf7, 0xd4, 0x23, 0xdb, 0xfc, 0xe4, 0xd4, 0xf0, 0x78, 0xfd, 0x68, 0x0a, 0x96, 0x17,
-0xd3, 0x23, 0xf1, 0x2d, 0xbf, 0x33, 0x2d, 0x33, 0x55, 0x2b, 0x5d, 0x1c, 0xe8, 0x07, 0xf0, 0xf0,
-0x11, 0xdb, 0xef, 0xc9, 0x9f, 0xc0, 0xc5, 0xbf, 0xff, 0xc6, 0x83, 0xd4, 0x86, 0xe6, 0x6c, 0xfb,
-0x78, 0x11, 0x7f, 0x26, 0x47, 0x38, 0x53, 0x44, 0x6b, 0x48, 0xa7, 0x43, 0xe3, 0x35, 0x79, 0x20,
-0xe0, 0x05, 0x2e, 0xe9, 0x53, 0xce, 0x4f, 0xb9, 0x41, 0xad, 0xff, 0xab, 0x79, 0xb5, 0x35, 0xc8,
-0xd1, 0xe1, 0x5c, 0xff, 0x1d, 0x1d, 0xa7, 0x37, 0x99, 0x4b, 0x9a, 0x56, 0x7a, 0x57, 0x0b, 0x4e,
-0x4d, 0x3b, 0x01, 0x21, 0xdc, 0x01, 0xed, 0xe0, 0x61, 0xc2, 0x88, 0xaa, 0x6e, 0x9d, 0x66, 0x9d,
-0xbc, 0xaa, 0xc3, 0xc3, 0xcc, 0xe4, 0x18, 0x09, 0x77, 0x2b, 0xb9, 0x47, 0xf2, 0x5a, 0x66, 0x63,
-0x8e, 0x60, 0x03, 0x53, 0x63, 0x3c, 0x83, 0x1e, 0xbe, 0xfb, 0x45, 0xd7, 0xcd, 0xb5, 0x9e, 0x9c,
-0x48, 0x90, 0x74, 0x93, 0x4a, 0xa6, 0xfd, 0xc5, 0x2e, 0xed, 0x52, 0x15, 0xcd, 0x38, 0xcf, 0x53,
-0x58, 0x64, 0x80, 0x69, 0x50, 0x63, 0xd7, 0x52, 0x8f, 0x39, 0x1a, 0x19, 0xb0, 0xf3, 0x1d, 0xcd,
-0xaa, 0xaa, 0x7a, 0x92, 0x5a, 0x89, 0x90, 0x91, 0x20, 0xaa, 0x81, 0xce, 0x0a, 0xf8, 0x07, 0x20,
-0x5d, 0x41, 0x38, 0x59, 0x8a, 0x66, 0xd4, 0x68, 0x68, 0x60, 0x23, 0x4e, 0x1d, 0x33, 0xf8, 0x10,
-0x60, 0xea, 0x89, 0xc3, 0xac, 0xa2, 0xd4, 0x8d, 0x6a, 0x89, 0xa4, 0x96, 0xd9, 0xb2, 0xa1, 0xd8,
-0x3e, 0x01, 0x97, 0x26, 0x91, 0x44, 0x52, 0x59, 0xce, 0x63, 0xdc, 0x63, 0x84, 0x59, 0x57, 0x45,
-0xf5, 0x28, 0x2e, 0x06, 0x69, 0xe0, 0x7f, 0xbc, 0x58, 0xa0, 0x3a, 0x91, 0x36, 0x92, 0xbc, 0xa2,
-0x8f, 0xbf, 0x6f, 0xe3, 0x4a, 0x08, 0x49, 0x29, 0x35, 0x43, 0x37, 0x54, 0xd2, 0x5b, 0x64, 0x59,
-0x1b, 0x4d, 0x09, 0x38, 0xc4, 0x1b, 0x20, 0xfb, 0xb7, 0xd9, 0x29, 0xbc, 0xcc, 0xa6, 0x8a, 0x9d,
-0x74, 0xa1, 0x07, 0xb2, 0x39, 0xcc, 0x6c, 0xeb, 0x48, 0x0b, 0x85, 0x27, 0x69, 0x3d, 0x19, 0x4b,
-0xb5, 0x4f, 0xdd, 0x4a, 0x7b, 0x3d, 0xbb, 0x28, 0x18, 0x0f, 0xae, 0xf3, 0x99, 0xd9, 0xd9, 0xc3,
-0x4f, 0xb5, 0x85, 0xaf, 0x1f, 0xb4, 0x2f, 0xc2, 0xc9, 0xd7, 0xba, 0xf1, 0x22, 0x0c, 0x5f, 0x23,
-0x91, 0x34, 0x0b, 0x3e, 0xfb, 0x3e, 0x6f, 0x38, 0xed, 0x2a, 0x2c, 0x19, 0x6a, 0x05, 0xec, 0xf1,
-0xa1, 0xe0, 0x73, 0xd2, 0xa1, 0xc8, 0xbd, 0xc4, 0xa1, 0xc7, 0x8d, 0xd1, 0x9b, 0xe1, 0x40, 0xf5,
-0x4c, 0x09, 0xa6, 0x1a, 0x67, 0x26, 0xab, 0x2b, 0x7d, 0x2a, 0xa3, 0x23, 0x90, 0x19, 0xca, 0x0d,
-0x78, 0x02, 0x46, 0xf8, 0x3a, 0xef, 0x04, 0xe7, 0x2d, 0xe0, 0xb1, 0xdb, 0x3b, 0xdb, 0xf7, 0xdf,
-0x38, 0xe9, 0xb6, 0xf5, 0x8a, 0x02, 0x00, 0x0d, 0x7a, 0x13, 0x3e, 0x15, 0x58, 0x13, 0x62, 0x0f,
-0xfc, 0x0a, 0x70, 0x07, 0x30, 0x05, 0x7a, 0x03, 0x1c, 0x01, 0x3e, 0xfd, 0xcc, 0xf7, 0x44, 0xf2,
-0x2c, 0xee, 0xdc, 0xec, 0xc2, 0xee, 0xc4, 0xf2, 0x3a, 0xf7, 0x9a, 0xfa, 0x1e, 0xfc, 0x84, 0xfc,
-0xf2, 0xfc, 0x96, 0xfe, 0x08, 0x02, 0x54, 0x07, 0x46, 0x0d, 0x7a, 0x12, 0x0e, 0x15, 0xd2, 0x13,
-0xe8, 0x0e, 0x36, 0x07, 0x60, 0xfe, 0xf6, 0xf5, 0x04, 0xef, 0xc8, 0xe9, 0x1a, 0xe6, 0xbb, 0xe3,
-0x37, 0xe3, 0x3e, 0xe5, 0xa6, 0xea, 0x44, 0xf3, 0xac, 0xfe, 0x8a, 0x0b, 0x94, 0x18, 0x59, 0x23,
-0xfb, 0x29, 0xcf, 0x2a, 0x29, 0x25, 0xea, 0x19, 0x62, 0x0a, 0x38, 0xf9, 0xa2, 0xe8, 0xcf, 0xda,
-0xd3, 0xd0, 0xd7, 0xcb, 0x25, 0xcc, 0x0b, 0xd2, 0x15, 0xdd, 0x56, 0xec, 0xb0, 0xfe, 0x7a, 0x12,
-0x65, 0x25, 0x4b, 0x35, 0x27, 0x3f, 0xe5, 0x40, 0x2f, 0x39, 0x9b, 0x28, 0x8c, 0x11, 0x6a, 0xf7,
-0x5d, 0xde, 0xb7, 0xc9, 0x5d, 0xbc, 0xef, 0xb6, 0xdd, 0xb9, 0xdd, 0xc3, 0x2b, 0xd4, 0x58, 0xe9,
-0x82, 0x01, 0xda, 0x1a, 0xd7, 0x32, 0x6b, 0x46, 0x1b, 0x52, 0xf5, 0x52, 0x57, 0x47, 0x61, 0x30,
-0x8a, 0x11, 0xbc, 0xef, 0xbd, 0xd0, 0xe9, 0xb8, 0xe8, 0xaa, 0x66, 0xa7, 0x3b, 0xad, 0x53, 0xbb,
-0x09, 0xd0, 0x06, 0xea, 0x5a, 0x07, 0xb7, 0x25, 0xe1, 0x41, 0xe0, 0x57, 0x50, 0x63, 0x9a, 0x60,
-0x39, 0x4f, 0x1b, 0x31, 0x8c, 0x0b, 0xd8, 0xe4, 0x01, 0xc3, 0xb6, 0xaa, 0xf0, 0x9d, 0x96, 0x9c,
-0x5a, 0xa5, 0x19, 0xb7, 0x31, 0xd0, 0xf4, 0xee, 0xf6, 0x10, 0x15, 0x33, 0x5b, 0x51, 0xaa, 0x66,
-0xb6, 0x6e, 0xd4, 0x66, 0x6d, 0x4f, 0x55, 0x2c, 0x5e, 0x03, 0x07, 0xdb, 0x1b, 0xb9, 0xd8, 0xa1,
-0xa0, 0x96, 0x42, 0x97, 0x9c, 0xa2, 0x87, 0xb7, 0x83, 0xd4, 0x2e, 0xf7, 0x75, 0x1c, 0x03, 0x40,
-0x14, 0x5d, 0xfa, 0x6e, 0xe8, 0x71, 0xae, 0x64, 0x5d, 0x49, 0x4d, 0x24, 0x08, 0xfb, 0x93, 0xd3,
-0x0f, 0xb3, 0x2a, 0x9d, 0x9a, 0x93, 0x52, 0x96, 0xb0, 0xa4, 0x61, 0xbd, 0x41, 0xde, 0xd4, 0x03,
-0xaf, 0x29, 0x0b, 0x4b, 0x78, 0x63, 0x54, 0x6f, 0xca, 0x6c, 0x48, 0x5c, 0x0b, 0x40, 0x26, 0x1c,
-0x0c, 0xf5, 0xcb, 0xcf, 0x41, 0xb1, 0x5e, 0x9d, 0xf6, 0x95, 0x9e, 0x9b, 0x65, 0xad, 0x57, 0xc9,
-0x16, 0xec, 0xd8, 0x10, 0x15, 0x33, 0xbd, 0x4e, 0xb8, 0x60, 0x32, 0x67, 0xa0, 0x61, 0x81, 0x50,
-0xdd, 0x35, 0x88, 0x14, 0x44, 0xf0, 0xf9, 0xcd, 0x81, 0xb2, 0xa2, 0xa1, 0xa4, 0x9d, 0x90, 0xa6,
-0x2b, 0xbb, 0x2b, 0xd8, 0x20, 0xf9, 0x78, 0x19, 0x4d, 0x35, 0x23, 0x4a, 0x7c, 0x56, 0xca, 0x59,
-0x5d, 0x53, 0xe7, 0x43, 0xfd, 0x2b, 0x16, 0x0e, 0xa4, 0xed, 0x49, 0xcf, 0xe9, 0xb7, 0x4f, 0xab,
-0x1e, 0xab, 0xcd, 0xb6, 0x0b, 0xcc, 0xa4, 0xe6, 0x64, 0x02, 0xa6, 0x1b, 0x05, 0x30, 0x8f, 0x3e,
-0xd7, 0x46, 0x67, 0x48, 0xe1, 0x42, 0xdb, 0x35, 0xe9, 0x21, 0x9e, 0x08, 0x82, 0xed, 0xbd, 0xd4,
-0xf7, 0xc2, 0x05, 0xbb, 0xf7, 0xbd, 0x5f, 0xca, 0xd9, 0xdc, 0x04, 0xf2, 0x2c, 0x06, 0x66, 0x17,
-0xa1, 0x24, 0xe1, 0x2d, 0x35, 0x33, 0x5d, 0x34, 0xa3, 0x30, 0x65, 0x27, 0xc4, 0x18, 0xf2, 0x05,
-0xdc, 0xf1, 0x1f, 0xe0, 0x17, 0xd4, 0x3d, 0xd0, 0x1f, 0xd4, 0x05, 0xde, 0xee, 0xea, 0x2c, 0xf8,
-0x06, 0x04, 0x9c, 0x0d, 0xd6, 0x14, 0x00, 0x1a, 0x8d, 0x1d, 0x2b, 0x1f, 0x5b, 0x1e, 0x26, 0x1a,
-0x38, 0x12, 0x9a, 0x07, 0xe2, 0xfb, 0xa4, 0xf1, 0xf4, 0xea, 0xbc, 0xe8, 0xaa, 0xea, 0x14, 0xef,
-0x4e, 0xf4, 0x1a, 0xf9, 0xee, 0xfc, 0x6c, 0xff, 0x58, 0x01, 0x24, 0x03, 0xae, 0x05, 0x1a, 0x09,
-0xa8, 0x0c, 0x86, 0x0f, 0xa2, 0x10, 0x88, 0x0f, 0x96, 0x0c, 0x96, 0x08, 0x72, 0x04, 0x12, 0x01,
-0x34, 0xfe, 0x86, 0xfb, 0xc6, 0xf8, 0xb6, 0xf5, 0x3e, 0xf2, 0xf2, 0xee, 0x44, 0xec, 0xce, 0xeb,
-0x96, 0xee, 0x42, 0xf5, 0x3e, 0xff, 0xd6, 0x0a, 0xb2, 0x15, 0xc5, 0x1d, 0x6b, 0x21, 0xb7, 0x20,
-0x77, 0x1c, 0x8e, 0x15, 0x2a, 0x0d, 0xd0, 0x03, 0xfa, 0xf9, 0xd4, 0xef, 0xee, 0xe5, 0xdd, 0xdc,
-0xab, 0xd6, 0x09, 0xd5, 0xe5, 0xd9, 0xba, 0xe5, 0x4c, 0xf7, 0xc6, 0x0b, 0x51, 0x1f, 0x0d, 0x2e,
-0xe9, 0x35, 0x7b, 0x36, 0xc9, 0x30, 0x79, 0x26, 0xfc, 0x18, 0x5c, 0x09, 0x8a, 0xf8, 0x3a, 0xe7,
-0x81, 0xd6, 0xd7, 0xc8, 0x4b, 0xc0, 0x13, 0xc0, 0x45, 0xc9, 0x47, 0xdc, 0x20, 0xf6, 0xde, 0x12,
-0xeb, 0x2c, 0x15, 0x40, 0xed, 0x49, 0x19, 0x4a, 0x41, 0x42, 0xd3, 0x33, 0x11, 0x21, 0x0c, 0x0b,
-0x2e, 0xf3, 0x11, 0xdb, 0x2f, 0xc5, 0x9b, 0xb4, 0xcd, 0xac, 0x0f, 0xb0, 0x77, 0xbf, 0x93, 0xd9,
-0xa4, 0xfa, 0xcf, 0x1c, 0x9f, 0x3a, 0x83, 0x4f, 0x7c, 0x59, 0x8c, 0x58, 0xbf, 0x4d, 0x67, 0x3b,
-0xfb, 0x22, 0xb0, 0x06, 0x46, 0xe8, 0x09, 0xcb, 0x53, 0xb2, 0x76, 0xa2, 0x18, 0x9e, 0xde, 0xa6,
-0x7d, 0xbc, 0x03, 0xdc, 0x3e, 0x01, 0x3b, 0x26, 0xb9, 0x45, 0xba, 0x5b, 0x22, 0x66, 0x40, 0x64,
-0xfe, 0x56, 0x35, 0x40, 0xf7, 0x21, 0x4a, 0xff, 0x79, 0xdb, 0x2d, 0xbb, 0xfa, 0xa2, 0x34, 0x96,
-0xe6, 0x96, 0x0e, 0xa5, 0xfb, 0xbe, 0xb1, 0xe1, 0x9a, 0x08, 0x95, 0x2e, 0xb9, 0x4e, 0xfc, 0x64,
-0x72, 0x6e, 0x48, 0x6a, 0xfa, 0x58, 0xb1, 0x3c, 0x14, 0x19, 0x00, 0xf2, 0xab, 0xcc, 0xcf, 0xad,
-0x92, 0x99, 0x00, 0x92, 0xa2, 0x97, 0x50, 0xa9, 0x5b, 0xc5, 0xae, 0xe8, 0x58, 0x0f, 0x1f, 0x35,
-0xe2, 0x54, 0x6c, 0x6a, 0x14, 0x72, 0x86, 0x6a, 0xab, 0x54, 0x1d, 0x34, 0x36, 0x0d, 0xa6, 0xe5,
-0x79, 0xc2, 0xdc, 0xa7, 0xb2, 0x98, 0x6a, 0x95, 0xb4, 0x9d, 0x79, 0xb0, 0x5f, 0xcc, 0x24, 0xef,
-0x40, 0x15, 0x1d, 0x3a, 0xbc, 0x58, 0x00, 0x6c, 0x24, 0x70, 0x66, 0x64, 0xdd, 0x4a, 0xf3, 0x27,
-0x76, 0x01, 0x6f, 0xdc, 0xd5, 0xbd, 0xb4, 0xa8, 0x46, 0x9e, 0x90, 0x9e, 0x9c, 0xa8, 0xb1, 0xbb,
-0xa7, 0xd6, 0x86, 0xf7, 0xe8, 0x1a, 0xb7, 0x3c, 0x60, 0x57, 0x30, 0x66, 0x32, 0x66, 0x0e, 0x57,
-0x5f, 0x3c, 0xd6, 0x1a, 0x00, 0xf8, 0x8d, 0xd8, 0x0d, 0xc0, 0x61, 0xb0, 0xfa, 0xa9, 0x53, 0xac,
-0xab, 0xb6, 0xd9, 0xc8, 0x6f, 0xe1, 0xf6, 0xfe, 0x1b, 0x1e, 0xa9, 0x3a, 0xe7, 0x4f, 0x92, 0x59,
-0xe6, 0x55, 0xf1, 0x45, 0x3f, 0x2d, 0x92, 0x10, 0x68, 0xf4, 0x25, 0xdc, 0xfb, 0xc9, 0x27, 0xbf,
-0x35, 0xbb, 0x21, 0xbe, 0x9d, 0xc7, 0x1f, 0xd7, 0x04, 0xec, 0x3e, 0x04, 0x4f, 0x1d, 0x39, 0x33,
-0x61, 0x42, 0x9f, 0x47, 0x63, 0x42, 0x0b, 0x34, 0xe1, 0x1f, 0xba, 0x09, 0xa4, 0xf4, 0x3b, 0xe3,
-0xa9, 0xd6, 0x99, 0xcf, 0xf3, 0xcd, 0x57, 0xd1, 0x51, 0xd9, 0x5e, 0xe5, 0x60, 0xf4, 0xf2, 0x04,
-0x40, 0x15, 0x0d, 0x23, 0x49, 0x2c, 0x71, 0x2f, 0xf9, 0x2b, 0x0f, 0x23, 0x68, 0x16, 0x4a, 0x08,
-0x02, 0xfb, 0xf2, 0xef, 0x22, 0xe8, 0x50, 0xe4, 0x28, 0xe4, 0xfc, 0xe6, 0xd6, 0xeb, 0xb6, 0xf1,
-0x52, 0xf8, 0x8e, 0xff, 0x02, 0x07, 0x82, 0x0e, 0xe0, 0x14, 0x8a, 0x18, 0xd4, 0x18, 0xb4, 0x15,
-0xf6, 0x0f, 0x2e, 0x09, 0xf4, 0x02, 0x4a, 0xfe, 0xc6, 0xfb, 0xe6, 0xfa, 0x34, 0xfb, 0x46, 0xfb,
-0x3c, 0xfa, 0xf8, 0xf7, 0x52, 0xf5, 0x76, 0xf3, 0xb4, 0xf3, 0xa0, 0xf6, 0xa6, 0xfb, 0xb2, 0x01,
-0xe0, 0x06, 0x9c, 0x0a, 0xcc, 0x0c, 0x3c, 0x0e, 0x96, 0x0f, 0x22, 0x11, 0x8c, 0x12, 0x08, 0x13,
-0x30, 0x11, 0xde, 0x0b, 0xce, 0x02, 0x28, 0xf7, 0x28, 0xeb, 0x9d, 0xe1, 0xaf, 0xdc, 0xc9, 0xdd,
-0x3a, 0xe4, 0x22, 0xee, 0x68, 0xf9, 0x2e, 0x04, 0x34, 0x0e, 0x38, 0x17, 0x67, 0x1f, 0xdb, 0x25,
-0xab, 0x29, 0x1b, 0x29, 0xf7, 0x22, 0xac, 0x16, 0x22, 0x05, 0x2c, 0xf1, 0xd3, 0xdd, 0xe7, 0xce,
-0x0b, 0xc7, 0x81, 0xc7, 0xb5, 0xcf, 0x95, 0xdd, 0xb4, 0xee, 0x08, 0x01, 0x7c, 0x13, 0x75, 0x24,
-0xc9, 0x32, 0x71, 0x3c, 0xb7, 0x3f, 0x79, 0x3b, 0xfb, 0x2e, 0x48, 0x1b, 0x84, 0x02, 0x22, 0xe8,
-0xdb, 0xcf, 0x71, 0xbd, 0xb1, 0xb3, 0x1f, 0xb4, 0x6b, 0xbe, 0xbf, 0xd0, 0xaa, 0xe8, 0x58, 0x03,
-0xc7, 0x1d, 0x6d, 0x35, 0x31, 0x47, 0x21, 0x51, 0x95, 0x51, 0x21, 0x48, 0x8f, 0x35, 0xbc, 0x1b,
-0xa4, 0xfd, 0xab, 0xde, 0xe9, 0xc2, 0xd3, 0xad, 0x24, 0xa3, 0x5a, 0xa4, 0xd9, 0xb1, 0xfb, 0xc9,
-0x52, 0xe9, 0xb8, 0x0b, 0x75, 0x2c, 0x49, 0x47, 0x0e, 0x59, 0x10, 0x60, 0xc0, 0x5b, 0x0b, 0x4d,
-0xad, 0x35, 0xe0, 0x17, 0x82, 0xf6, 0xd1, 0xd4, 0x9d, 0xb6, 0x5c, 0xa0, 0xb0, 0x95, 0x5c, 0x99,
-0x8f, 0xab, 0x13, 0xca, 0x38, 0xf0, 0xf2, 0x17, 0x67, 0x3b, 0x26, 0x56, 0x8a, 0x65, 0x94, 0x68,
-0x08, 0x60, 0x5d, 0x4d, 0xcb, 0x32, 0xa0, 0x12, 0x1e, 0xef, 0x91, 0xcb, 0x1d, 0xac, 0xbe, 0x95,
-0x16, 0x8d, 0xdc, 0x94, 0xcb, 0xac, 0x5d, 0xd1, 0xf0, 0xfb, 0x37, 0x25, 0x5b, 0x47, 0xb0, 0x5e,
-0xf4, 0x69, 0x60, 0x69, 0x16, 0x5e, 0xa5, 0x49, 0xcd, 0x2d, 0xf2, 0x0b, 0xe8, 0xe6, 0x55, 0xc2,
-0x7c, 0xa3, 0xbe, 0x8f, 0x58, 0x8b, 0x2a, 0x98, 0x95, 0xb4, 0xaf, 0xdb, 0x5e, 0x06, 0xe3, 0x2d,
-0xfd, 0x4c, 0x26, 0x61, 0x68, 0x69, 0x1c, 0x66, 0x96, 0x58, 0x4b, 0x42, 0xd9, 0x24, 0x56, 0x02,
-0x87, 0xdd, 0xf5, 0xba, 0xb0, 0x9f, 0xc0, 0x90, 0x64, 0x91, 0x5a, 0xa2, 0xdb, 0xc0, 0x6a, 0xe7,
-0x4e, 0x0f, 0x45, 0x32, 0xb9, 0x4c, 0x7a, 0x5c, 0x70, 0x61, 0xe2, 0x5b, 0xf5, 0x4c, 0x19, 0x36,
-0xfa, 0x18, 0xde, 0xf7, 0x25, 0xd6, 0x5b, 0xb8, 0x14, 0xa3, 0x0e, 0x9a, 0x06, 0x9f, 0x59, 0xb1,
-0x41, 0xce, 0x98, 0xf0, 0xf8, 0x12, 0xaf, 0x30, 0xab, 0x46, 0x75, 0x53, 0x4e, 0x56, 0x93, 0x4f,
-0x17, 0x40, 0x9b, 0x29, 0x14, 0x0e, 0x78, 0xf0, 0x47, 0xd4, 0x47, 0xbd, 0xb9, 0xae, 0x44, 0xaa,
-0xb1, 0xb0, 0x21, 0xc1, 0x51, 0xd9, 0xb4, 0xf5, 0xec, 0x11, 0x47, 0x2a, 0x09, 0x3c, 0xa9, 0x45,
-0x61, 0x46, 0xb1, 0x3e, 0xb3, 0x2f, 0x6c, 0x1b, 0x7e, 0x04, 0x82, 0xed, 0x61, 0xd9, 0xeb, 0xc9,
-0x95, 0xc0, 0x17, 0xbe, 0x05, 0xc3, 0x55, 0xcf, 0xd1, 0xe1, 0xdc, 0xf7, 0x1c, 0x0e, 0x39, 0x21,
-0x97, 0x2e, 0xc5, 0x34, 0x77, 0x33, 0x73, 0x2b, 0xa9, 0x1e, 0x42, 0x0f, 0xa4, 0xff, 0xa2, 0xf1,
-0x10, 0xe6, 0x35, 0xdd, 0x31, 0xd7, 0x97, 0xd4, 0x69, 0xd6, 0x69, 0xdd, 0x1a, 0xe9, 0xf2, 0xf7,
-0x44, 0x07, 0x38, 0x14, 0xa3, 0x1c, 0x69, 0x1f, 0xfd, 0x1c, 0xea, 0x16, 0x26, 0x0f, 0x86, 0x07,
-0x06, 0x01, 0xb2, 0xfb, 0x10, 0xf7, 0xa2, 0xf2, 0xa0, 0xee, 0x0e, 0xec, 0xba, 0xeb, 0xec, 0xed,
-0xea, 0xf1, 0x6c, 0xf6, 0x58, 0xfa, 0x1c, 0xfd, 0x98, 0xfe, 0x3e, 0xff, 0x68, 0xff, 0x2e, 0xff,
-0xc4, 0xfe, 0x1e, 0xfe, 0x96, 0xfd, 0x34, 0xfd, 0x04, 0xfd, 0xda, 0xfc, 0xc4, 0xfc, 0xa6, 0xfc,
-0x8e, 0xfc, 0x76, 0xfc, 0x42, 0xfc, 0x2a, 0xfc, 0x34, 0xfc, 0x54, 0xfc, 0x88, 0xfc, 0xb8, 0xfc,
-0xda, 0xfc, 0x16, 0xfd, 0x4c, 0xfd, 0x78, 0xfd, 0x9e, 0xfd, 0xb4, 0xfd, 0xbc, 0xfd, 0xc8, 0xfd,
-0xcc, 0xfd, 0xe8, 0xfd, 0xf0, 0xfd, 0xe2, 0xfd, 0xd6, 0xfd, 0xce, 0xfd, 0xfc, 0xfd, 0x14, 0xfe,
-0x12, 0xfe, 0xf2, 0xfd, 0xda, 0xfd, 0xc2, 0xfd, 0xb4, 0xfd, 0xb2, 0xfd, 0xc4, 0xfd, 0xfa, 0xfd,
-0x2e, 0xfe, 0x56, 0xfe, 0x7c, 0xfe, 0x9a, 0xfe, 0xae, 0xfe, 0xb6, 0xfe, 0xa0, 0xfe, 0x76, 0xfe,
-0x3c, 0xfe, 0xfe, 0xfd, 0xf4, 0xfd, 0x26, 0xfe, 0x78, 0xfe, 0xdc, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe,
-0xfa, 0xfe, 0x04, 0xff, 0x28, 0xff, 0x30, 0xff, 0x18, 0xff, 0xe4, 0xfe, 0xc2, 0xfe, 0xb4, 0xfe,
-0xbe, 0xfe, 0xda, 0xfe, 0xe8, 0xfe, 0xe6, 0xfe, 0xe2, 0xfe, 0xee, 0xfe, 0x1e, 0xff, 0x70, 0xff,
-0xc2, 0xff, 0x04, 0x00, 0x44, 0x00, 0x84, 0x00, 0xa2, 0x00, 0x8c, 0x00, 0x5c, 0x00, 0x14, 0x00,
-0xc8, 0xff, 0x72, 0xff, 0x1a, 0xff, 0xe0, 0xfe, 0xca, 0xfe, 0xc4, 0xfe, 0xd6, 0xfe, 0x00, 0xff,
-0x50, 0xff, 0xba, 0xff, 0x28, 0x00, 0x84, 0x00, 0xc4, 0x00, 0xdc, 0x00, 0xd0, 0x00, 0xb0, 0x00,
-0x82, 0x00, 0x58, 0x00, 0x26, 0x00, 0xde, 0xff, 0x76, 0xff, 0x1c, 0xff, 0xde, 0xfe, 0xd6, 0xfe,
-0xee, 0xfe, 0x1e, 0xff, 0x64, 0xff, 0xb0, 0xff, 0xf8, 0xff, 0x36, 0x00, 0x6e, 0x00, 0x9a, 0x00,
-0xc0, 0x00, 0xbe, 0x00, 0x96, 0x00, 0x66, 0x00, 0x40, 0x00, 0x20, 0x00, 0x0c, 0x00, 0xfc, 0xff,
-0xf0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x38, 0x00, 0x74, 0x00, 0xa8, 0x00, 0xcc, 0x00,
-0xec, 0x00, 0xfc, 0x00, 0xee, 0x00, 0xbc, 0x00, 0x6c, 0x00, 0x22, 0x00, 0xec, 0xff, 0xc8, 0xff,
-0xb6, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb8, 0xff, 0xc6, 0xff, 0xe8, 0xff, 0x24, 0x00, 0x74, 0x00,
-0xbc, 0x00, 0xe8, 0x00, 0x10, 0x01, 0x24, 0x01, 0x24, 0x01, 0xf8, 0x00, 0xb6, 0x00, 0x68, 0x00,
-0x24, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xf2, 0xff, 0x24, 0x00, 0x4e, 0x00, 0x70, 0x00,
-0xae, 0x00, 0xf0, 0x00, 0x36, 0x01, 0x64, 0x01, 0x7a, 0x01, 0x70, 0x01, 0x3e, 0x01, 0xf6, 0x00,
-0x92, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xf4, 0xff,
-0x0e, 0x00, 0x38, 0x00, 0x7a, 0x00, 0xb8, 0x00, 0xea, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xee, 0x00,
-0xe8, 0x00, 0xcc, 0x00, 0x90, 0x00, 0x72, 0x00, 0x56, 0x00, 0x46, 0x00, 0x36, 0x00, 0x20, 0x00,
-0x10, 0x00, 0x08, 0x00, 0x16, 0x00, 0x4c, 0x00, 0x92, 0x00, 0xda, 0x00, 0x04, 0x01, 0xfe, 0x00,
-0xf8, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xd6, 0x00, 0x94, 0x00, 0x58, 0x00, 0x44, 0x00, 0x54, 0x00,
-0x7e, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x8a, 0x00,
-0xa8, 0x00, 0x9a, 0x00, 0x8a, 0x00, 0x94, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x96, 0x00,
-0x9c, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x76, 0x00, 0x70, 0x00,
-0x60, 0x00, 0x72, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xc0, 0x00, 0xe6, 0x00, 0xee, 0x00, 0xd4, 0x00,
-0xa8, 0x00, 0x8e, 0x00, 0x98, 0x00, 0xa8, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xae, 0x00, 0xb4, 0x00,
-0xbe, 0x00, 0xc8, 0x00, 0xd4, 0x00, 0xca, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x70, 0x00, 0x68, 0x00,
-0x7e, 0x00, 0x92, 0x00, 0xa0, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xc6, 0x00,
-0xc8, 0x00, 0xcc, 0x00, 0xc2, 0x00, 0xa2, 0x00, 0x8e, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x72, 0x00,
-0x5a, 0x00, 0x54, 0x00, 0x52, 0x00, 0x50, 0x00, 0x52, 0x00, 0x5c, 0x00, 0x84, 0x00, 0xb4, 0x00,
-0xd4, 0x00, 0xe4, 0x00, 0xda, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x60, 0x00, 0x3e, 0x00, 0x30, 0x00,
-0x2a, 0x00, 0x3a, 0x00, 0x50, 0x00, 0x6c, 0x00, 0x9e, 0x00, 0xc2, 0x00, 0xd6, 0x00, 0xe0, 0x00,
-0xe6, 0x00, 0xee, 0x00, 0xe4, 0x00, 0xd2, 0x00, 0xba, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x48, 0x00,
-0x1c, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x78, 0x00, 0xba, 0x00,
-0xf4, 0x00, 0x04, 0x01, 0x08, 0x01, 0xe2, 0x00, 0xac, 0x00, 0x68, 0x00, 0x42, 0x00, 0x20, 0x00,
-0x06, 0x00, 0xec, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xee, 0xff, 0x10, 0x00, 0x42, 0x00,
-0x8a, 0x00, 0xc4, 0x00, 0xfe, 0x00, 0x0e, 0x01, 0x16, 0x01, 0x0a, 0x01, 0xe2, 0x00, 0xb0, 0x00,
-0x74, 0x00, 0x44, 0x00, 0x02, 0x00, 0xbe, 0xff, 0x94, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xe4, 0xff,
-0x24, 0x00, 0x60, 0x00, 0xa0, 0x00, 0xc8, 0x00, 0xf0, 0x00, 0x08, 0x01, 0x1e, 0x01, 0x16, 0x01,
-0xdc, 0x00, 0x98, 0x00, 0x58, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xaa, 0xff, 0x8c, 0xff,
-0x88, 0xff, 0xa8, 0xff, 0xe0, 0xff, 0x32, 0x00, 0x7a, 0x00, 0xc4, 0x00, 0xfc, 0x00, 0x2c, 0x01,
-0x2e, 0x01, 0x1a, 0x01, 0xf0, 0x00, 0xa0, 0x00, 0x54, 0x00, 0x18, 0x00, 0xd0, 0xff, 0x90, 0xff,
-0x6a, 0xff, 0x6e, 0xff, 0x90, 0xff, 0xc4, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x7e, 0x00, 0xc8, 0x00,
-0x06, 0x01, 0x30, 0x01, 0x22, 0x01, 0xf4, 0x00, 0xb4, 0x00, 0x62, 0x00, 0x2c, 0x00, 0x02, 0x00,
-0xda, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x94, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x28, 0x00, 0x50, 0x00,
-0x6c, 0x00, 0xa6, 0x00, 0xd8, 0x00, 0xee, 0x00, 0xf2, 0x00, 0xd0, 0x00, 0x9c, 0x00, 0x52, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xc4, 0xff, 0xec, 0xff,
-0x22, 0x00, 0x4a, 0x00, 0x80, 0x00, 0xa8, 0x00, 0xbe, 0x00, 0xc6, 0x00, 0xba, 0x00, 0xa0, 0x00,
-0x7e, 0x00, 0x4a, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xe2, 0xff,
-0xe6, 0xff, 0x06, 0x00, 0x30, 0x00, 0x4e, 0x00, 0x7e, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0xa8, 0x00,
-0x96, 0x00, 0x82, 0x00, 0x64, 0x00, 0x3c, 0x00, 0x10, 0x00, 0xea, 0xff, 0xd4, 0xff, 0xc6, 0xff,
-0xca, 0xff, 0xc6, 0xff, 0xda, 0xff, 0xfa, 0xff, 0x14, 0x00, 0x40, 0x00, 0x60, 0x00, 0x74, 0x00,
-0x7e, 0x00, 0x82, 0x00, 0x82, 0x00, 0x74, 0x00, 0x58, 0x00, 0x2e, 0x00, 0x14, 0x00, 0xfc, 0xff,
-0xe4, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x18, 0x00, 0x30, 0x00,
-0x54, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x66, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x30, 0x00,
-0x1c, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0x02, 0x00,
-0x08, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2c, 0x00,
-0x32, 0x00, 0x36, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x22, 0x00,
-0x20, 0x00, 0x12, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00,
-0x14, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x44, 0x00, 0x54, 0x00, 0x66, 0x00, 0x62, 0x00, 0x56, 0x00,
-0x4e, 0x00, 0x36, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xd0, 0xff,
-0xd0, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x10, 0x00, 0x28, 0x00, 0x4c, 0x00, 0x66, 0x00, 0x72, 0x00,
-0x7e, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x40, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0xcc, 0xff, 0xbc, 0xff,
-0xaa, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x6e, 0x00,
-0x88, 0x00, 0x9c, 0x00, 0x98, 0x00, 0x86, 0x00, 0x72, 0x00, 0x38, 0x00, 0x0c, 0x00, 0xd6, 0xff,
-0xa4, 0xff, 0x92, 0xff, 0x72, 0xff, 0x7c, 0xff, 0x8e, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x12, 0x00,
-0x54, 0x00, 0x80, 0x00, 0xa0, 0x00, 0xaa, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x58, 0x00, 0x28, 0x00,
-0xe6, 0xff, 0xaa, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x54, 0xff, 0x60, 0xff, 0x78, 0xff, 0xba, 0xff,
-0xee, 0xff, 0x22, 0x00, 0x58, 0x00, 0x8c, 0x00, 0xb4, 0x00, 0xc0, 0x00, 0xaa, 0x00, 0x82, 0x00,
-0x46, 0x00, 0x1a, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x44, 0xff, 0x58, 0xff,
-0x82, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x7a, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xc2, 0x00,
-0xae, 0x00, 0x7e, 0x00, 0x30, 0x00, 0x02, 0x00, 0xce, 0xff, 0x94, 0xff, 0x60, 0xff, 0x38, 0xff,
-0x3e, 0xff, 0x5c, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x3a, 0x00, 0x80, 0x00, 0x9e, 0x00,
-0xc4, 0x00, 0xc6, 0x00, 0xa4, 0x00, 0x78, 0x00, 0x26, 0x00, 0xf8, 0xff, 0xbe, 0xff, 0x86, 0xff,
-0x66, 0xff, 0x46, 0xff, 0x5a, 0xff, 0x6e, 0xff, 0xa6, 0xff, 0xec, 0xff, 0x24, 0x00, 0x5c, 0x00,
-0x86, 0x00, 0xb0, 0x00, 0xc8, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x62, 0x00, 0x24, 0x00, 0xf0, 0xff,
-0xc0, 0xff, 0x98, 0xff, 0x68, 0xff, 0x56, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xc0, 0xff, 0xf8, 0xff,
-0x24, 0x00, 0x5a, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x44, 0x00,
-0x0e, 0x00, 0xd6, 0xff, 0xae, 0xff, 0x8c, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x7a, 0xff, 0xa0, 0xff,
-0xc6, 0xff, 0xf8, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x72, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x64, 0x00,
-0x54, 0x00, 0x22, 0x00, 0xfe, 0xff, 0xde, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x8c, 0xff, 0x90, 0xff,
-0x9e, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x24, 0x00, 0x36, 0x00, 0x4a, 0x00, 0x54, 0x00,
-0x54, 0x00, 0x42, 0x00, 0x24, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xda, 0xff, 0xb8, 0xff, 0xb4, 0xff,
-0xa0, 0xff, 0xa8, 0xff, 0xb4, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0x00, 0x00, 0x10, 0x00,
-0x20, 0x00, 0x24, 0x00, 0x28, 0x00, 0x24, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xe8, 0xff,
-0xd4, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xea, 0xff, 0xf2, 0xff,
-0xf8, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00,
-0x04, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xe6, 0xff,
-0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xf6, 0xff,
-0x00, 0x00, 0xfe, 0xff, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x16, 0x00, 0x0c, 0x00,
-0x02, 0x00, 0xfe, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xd2, 0xff,
-0xde, 0xff, 0xf4, 0xff, 0x0c, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x3c, 0x00,
-0x48, 0x00, 0x2c, 0x00, 0x0a, 0x00, 0xec, 0xff, 0xda, 0xff, 0xae, 0xff, 0xac, 0xff, 0xa8, 0xff,
-0xb2, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x60, 0x00,
-0x58, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x26, 0x00, 0x04, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x90, 0xff,
-0x80, 0xff, 0x70, 0xff, 0x8a, 0xff, 0x94, 0xff, 0xbc, 0xff, 0xf6, 0xff, 0x10, 0x00, 0x3c, 0x00,
-0x60, 0x00, 0x72, 0x00, 0x86, 0x00, 0x80, 0x00, 0x60, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xd4, 0xff,
-0x9c, 0xff, 0x7e, 0xff, 0x5e, 0xff, 0x56, 0xff, 0x68, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xe2, 0xff,
-0x1a, 0x00, 0x4a, 0x00, 0x76, 0x00, 0x94, 0x00, 0x98, 0x00, 0x92, 0x00, 0x54, 0x00, 0x26, 0x00,
-0xf2, 0xff, 0xae, 0xff, 0x7c, 0xff, 0x52, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x46, 0xff, 0x78, 0xff,
-0xba, 0xff, 0xe2, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0x88, 0x00,
-0x58, 0x00, 0x18, 0x00, 0xea, 0xff, 0xb0, 0xff, 0x6c, 0xff, 0x46, 0xff, 0x24, 0xff, 0x38, 0xff,
-0x58, 0xff, 0x7c, 0xff, 0xbe, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xb8, 0x00,
-0xa8, 0x00, 0x82, 0x00, 0x48, 0x00, 0x0a, 0x00, 0xe0, 0xff, 0x94, 0xff, 0x62, 0xff, 0x42, 0xff,
-0x2e, 0xff, 0x40, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x04, 0x00, 0x46, 0x00, 0x7e, 0x00,
-0xa6, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x70, 0x00, 0x3a, 0x00, 0xfa, 0xff, 0xc0, 0xff, 0x8e, 0xff,
-0x5a, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x76, 0xff, 0xae, 0xff, 0xee, 0xff, 0x18, 0x00,
-0x58, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x92, 0x00, 0x62, 0x00, 0x30, 0x00, 0xf4, 0xff,
-0xc4, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x4a, 0xff, 0x50, 0xff, 0x62, 0xff, 0x92, 0xff, 0xc2, 0xff,
-0xf4, 0xff, 0x28, 0x00, 0x56, 0x00, 0x78, 0x00, 0x84, 0x00, 0x88, 0x00, 0x72, 0x00, 0x46, 0x00,
-0x08, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x72, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x70, 0xff,
-0x90, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x64, 0x00, 0x54, 0x00,
-0x4c, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xe2, 0xff, 0xb8, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x92, 0xff,
-0x92, 0xff, 0x9c, 0xff, 0xc0, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x38, 0x00, 0x3a, 0x00,
-0x40, 0x00, 0x3e, 0x00, 0x2a, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xb2, 0xff,
-0xb8, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfa, 0xff, 0x04, 0x00,
-0x18, 0x00, 0x14, 0x00, 0x16, 0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xea, 0xff,
-0xde, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xde, 0xff,
-0xe0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfc, 0xff,
-0x08, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe8, 0xff,
-0xf2, 0xff, 0x08, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1a, 0x00,
-0xfe, 0xff, 0xf0, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xac, 0xff,
-0xb4, 0xff, 0xd0, 0xff, 0xf2, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x44, 0x00, 0x4c, 0x00,
-0x38, 0x00, 0x36, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xce, 0xff, 0xb0, 0xff, 0x94, 0xff, 0x8c, 0xff,
-0x7c, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xce, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x5a, 0x00, 0x68, 0x00,
-0x72, 0x00, 0x76, 0x00, 0x6a, 0x00, 0x50, 0x00, 0x2e, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x96, 0xff,
-0x6c, 0xff, 0x5e, 0xff, 0x5a, 0xff, 0x70, 0xff, 0x98, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x28, 0x00,
-0x68, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x9c, 0x00, 0x7a, 0x00, 0x4a, 0x00, 0x24, 0x00, 0xe2, 0xff,
-0xac, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x3a, 0xff, 0x40, 0xff, 0x5e, 0xff, 0x9c, 0xff, 0xd2, 0xff,
-0x06, 0x00, 0x46, 0x00, 0x70, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x44, 0x00,
-0x0c, 0x00, 0xdc, 0xff, 0x98, 0xff, 0x58, 0xff, 0x38, 0xff, 0x30, 0xff, 0x46, 0xff, 0x6a, 0xff,
-0xac, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x7e, 0x00, 0x96, 0x00, 0xa6, 0x00, 0x82, 0x00,
-0x5e, 0x00, 0x28, 0x00, 0xe6, 0xff, 0xb6, 0xff, 0x76, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x20, 0xff,
-0x36, 0xff, 0x72, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x16, 0x00, 0x4a, 0x00, 0x7c, 0x00, 0x92, 0x00,
-0x92, 0x00, 0x7c, 0x00, 0x40, 0x00, 0x00, 0x00, 0xce, 0xff, 0xa4, 0xff, 0x66, 0xff, 0x3e, 0xff,
-0x26, 0xff, 0x2e, 0xff, 0x58, 0xff, 0x88, 0xff, 0xc8, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x58, 0x00,
-0x88, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x68, 0x00, 0x3c, 0x00, 0x06, 0x00, 0xc2, 0xff, 0x94, 0xff,
-0x5c, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x64, 0xff, 0x94, 0xff, 0xce, 0xff, 0x00, 0x00,
-0x2a, 0x00, 0x4e, 0x00, 0x72, 0x00, 0x88, 0x00, 0x74, 0x00, 0x52, 0x00, 0x2a, 0x00, 0xf2, 0xff,
-0xbc, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x46, 0xff, 0x50, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xac, 0xff,
-0xda, 0xff, 0x10, 0x00, 0x40, 0x00, 0x52, 0x00, 0x68, 0x00, 0x70, 0x00, 0x64, 0x00, 0x4a, 0x00,
-0x28, 0x00, 0xfa, 0xff, 0xc4, 0xff, 0x92, 0xff, 0x82, 0xff, 0x72, 0xff, 0x72, 0xff, 0x8a, 0xff,
-0x96, 0xff, 0xc2, 0xff, 0xee, 0xff, 0x0c, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x4a, 0x00,
-0x4e, 0x00, 0x28, 0x00, 0x10, 0x00, 0xee, 0xff, 0xc0, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x98, 0xff,
-0x8c, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x1a, 0x00, 0x20, 0x00,
-0x22, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0xfa, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xba, 0xff,
-0xb8, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xf4, 0xff, 0x04, 0x00,
-0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xe4, 0xff,
-0xe0, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xf2, 0xff, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0xf4, 0xff,
-0xea, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xc2, 0xff,
-0xde, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x30, 0x00,
-0x1c, 0x00, 0x0e, 0x00, 0xde, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x8a, 0xff, 0x82, 0xff, 0x8a, 0xff,
-0x96, 0xff, 0xa8, 0xff, 0xd2, 0xff, 0xee, 0xff, 0x16, 0x00, 0x42, 0x00, 0x50, 0x00, 0x66, 0x00,
-0x54, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x6c, 0xff,
-0x6e, 0xff, 0x72, 0xff, 0x86, 0xff, 0xb4, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x36, 0x00, 0x68, 0x00,
-0x86, 0x00, 0x90, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0xda, 0xff, 0xaa, 0xff,
-0x7a, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x78, 0xff, 0xa6, 0xff, 0xde, 0xff, 0x10, 0x00,
-0x50, 0x00, 0x7c, 0x00, 0x94, 0x00, 0xa6, 0x00, 0x92, 0x00, 0x66, 0x00, 0x30, 0x00, 0x02, 0x00,
-0xc6, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x2c, 0xff, 0x32, 0xff, 0x40, 0xff, 0x6a, 0xff, 0xa6, 0xff,
-0xe2, 0xff, 0x16, 0x00, 0x5a, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xb2, 0x00, 0x92, 0x00, 0x64, 0x00,
-0x28, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x7c, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x44, 0xff,
-0x7a, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x36, 0x00, 0x74, 0x00, 0x96, 0x00, 0xb2, 0x00, 0xb0, 0x00,
-0x88, 0x00, 0x4e, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0xa0, 0xff, 0x5a, 0xff, 0x36, 0xff, 0x1a, 0xff,
-0x2a, 0xff, 0x4c, 0xff, 0x88, 0xff, 0xd0, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0xa0, 0x00,
-0xa0, 0x00, 0x94, 0x00, 0x62, 0x00, 0x36, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x96, 0xff, 0x4e, 0xff,
-0x2c, 0xff, 0x2c, 0xff, 0x36, 0xff, 0x6e, 0xff, 0x9e, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x52, 0x00,
-0x86, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xba, 0xff,
-0x88, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x52, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0xf2, 0xff,
-0x28, 0x00, 0x52, 0x00, 0x6a, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x6c, 0x00, 0x48, 0x00, 0x16, 0x00,
-0xf2, 0xff, 0xb0, 0xff, 0x90, 0xff, 0x72, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x78, 0xff, 0x96, 0xff,
-0xce, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x56, 0x00, 0x54, 0x00,
-0x40, 0x00, 0x10, 0x00, 0xec, 0xff, 0xca, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x8a, 0xff,
-0xa4, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x14, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x42, 0x00,
-0x4a, 0x00, 0x38, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xe4, 0xff, 0xda, 0xff, 0xbe, 0xff, 0xb4, 0xff,
-0xb4, 0xff, 0xa4, 0xff, 0xc0, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0x02, 0x00, 0x02, 0x00, 0x16, 0x00,
-0x16, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x14, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xe8, 0xff,
-0xde, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff,
-0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfc, 0xff,
-0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xf6, 0xff,
-0xe4, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xf2, 0xff,
-0xf8, 0xff, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00,
-0xee, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xae, 0xff,
-0xc4, 0xff, 0xe6, 0xff, 0x08, 0x00, 0x22, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x42, 0x00,
-0x38, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xd0, 0xff, 0xa8, 0xff, 0x8c, 0xff, 0x80, 0xff, 0x7c, 0xff,
-0x82, 0xff, 0x94, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x3e, 0x00, 0x58, 0x00, 0x6e, 0x00,
-0x6c, 0x00, 0x5c, 0x00, 0x4a, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x84, 0xff, 0x56, 0xff,
-0x4e, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x58, 0x00,
-0x74, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x82, 0x00, 0x58, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xb4, 0xff,
-0x7a, 0xff, 0x4c, 0xff, 0x3a, 0xff, 0x40, 0xff, 0x58, 0xff, 0x92, 0xff, 0xcc, 0xff, 0xfe, 0xff,
-0x3a, 0x00, 0x6e, 0x00, 0x98, 0x00, 0xae, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x60, 0x00, 0x1c, 0x00,
-0xe0, 0xff, 0xa4, 0xff, 0x62, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x52, 0xff, 0x90, 0xff,
-0xd4, 0xff, 0x00, 0x00, 0x38, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x80, 0x00,
-0x44, 0x00, 0x04, 0x00, 0xca, 0xff, 0x8a, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x3c, 0xff,
-0x68, 0xff, 0x9c, 0xff, 0xe8, 0xff, 0x0c, 0x00, 0x50, 0x00, 0x88, 0x00, 0xae, 0x00, 0xbc, 0x00,
-0x9c, 0x00, 0x78, 0x00, 0x30, 0x00, 0xf6, 0xff, 0xc0, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x3c, 0xff,
-0x34, 0xff, 0x42, 0xff, 0x7e, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x12, 0x00, 0x58, 0x00, 0x86, 0x00,
-0x96, 0x00, 0xa2, 0x00, 0x84, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xe6, 0xff, 0xa6, 0xff, 0x7a, 0xff,
-0x54, 0xff, 0x3c, 0xff, 0x42, 0xff, 0x50, 0xff, 0x80, 0xff, 0xba, 0xff, 0xf0, 0xff, 0x1a, 0x00,
-0x54, 0x00, 0x8c, 0x00, 0x90, 0x00, 0x92, 0x00, 0x70, 0x00, 0x46, 0x00, 0x18, 0x00, 0xea, 0xff,
-0xb4, 0xff, 0x88, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xa6, 0xff, 0xca, 0xff,
-0x04, 0x00, 0x2c, 0x00, 0x5e, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x70, 0x00, 0x56, 0x00, 0x32, 0x00,
-0x00, 0x00, 0xdc, 0xff, 0xb4, 0xff, 0xa6, 0xff, 0x90, 0xff, 0x84, 0xff, 0x88, 0xff, 0x9c, 0xff,
-0xbc, 0xff, 0xde, 0xff, 0x08, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x46, 0x00,
-0x34, 0x00, 0x14, 0x00, 0xfc, 0xff, 0xee, 0xff, 0xba, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0xb0, 0xff,
-0xae, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xf4, 0xff, 0x08, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x20, 0x00,
-0x30, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xde, 0xff,
-0xd0, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfc, 0xff,
-0xfe, 0xff, 0xfa, 0xff, 0x06, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00,
-0xf4, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xdc, 0xff,
-0xd8, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfc, 0xff,
-0x08, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf8, 0xff,
-0xe6, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xd4, 0xff,
-0xee, 0xff, 0x0c, 0x00, 0x20, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x34, 0x00, 0x1a, 0x00,
-0xf8, 0xff, 0xb0, 0xff, 0x8c, 0xff, 0x78, 0xff, 0x84, 0xff, 0x96, 0xff, 0xa4, 0xff, 0xcc, 0xff,
-0xf8, 0xff, 0x1c, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x52, 0x00, 0x34, 0x00,
-0x06, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x86, 0xff, 0x6c, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x7a, 0xff,
-0xa4, 0xff, 0xda, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x72, 0x00, 0x88, 0x00, 0x94, 0x00, 0x8c, 0x00,
-0x62, 0x00, 0x44, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x90, 0xff, 0x64, 0xff, 0x46, 0xff, 0x38, 0xff,
-0x50, 0xff, 0x70, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x1c, 0x00, 0x5a, 0x00, 0x8c, 0x00, 0xac, 0x00,
-0xb2, 0x00, 0x94, 0x00, 0x72, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x58, 0xff,
-0x3c, 0xff, 0x38, 0xff, 0x52, 0xff, 0x7a, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x74, 0x00,
-0x9c, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xc2, 0xff,
-0x76, 0xff, 0x54, 0xff, 0x34, 0xff, 0x32, 0xff, 0x5a, 0xff, 0x84, 0xff, 0xd4, 0xff, 0x08, 0x00,
-0x3e, 0x00, 0x7c, 0x00, 0xa6, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x58, 0x00, 0x12, 0x00,
-0xe6, 0xff, 0xa8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x2a, 0xff, 0x44, 0xff, 0x64, 0xff, 0x92, 0xff,
-0xde, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0xae, 0x00, 0x9c, 0x00, 0x7a, 0x00,
-0x46, 0x00, 0x08, 0x00, 0xd0, 0xff, 0x9e, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x3a, 0xff, 0x50, 0xff,
-0x70, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x98, 0x00,
-0x88, 0x00, 0x66, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xc4, 0xff, 0x94, 0xff, 0x5e, 0xff, 0x46, 0xff,
-0x4c, 0xff, 0x5c, 0xff, 0x84, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x16, 0x00, 0x46, 0x00, 0x66, 0x00,
-0x7e, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x8a, 0xff,
-0x74, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x78, 0xff, 0x98, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x16, 0x00,
-0x3e, 0x00, 0x46, 0x00, 0x68, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0xf4, 0xff,
-0xc2, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x98, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe0, 0xff,
-0xfa, 0xff, 0x16, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x12, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xc0, 0xff, 0xc4, 0xff,
-0xde, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00,
-0x12, 0x00, 0x0c, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe0, 0xff,
-0xde, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00,
-0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0xea, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xce, 0xff, 0xc8, 0xff,
-0xca, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x12, 0x00, 0x26, 0x00,
-0x28, 0x00, 0x32, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xc4, 0xff,
-0xaa, 0xff, 0x9c, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xee, 0xff, 0x0a, 0x00,
-0x28, 0x00, 0x50, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x22, 0x00, 0xf6, 0xff,
-0xd6, 0xff, 0xa8, 0xff, 0x7c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x78, 0xff, 0x8e, 0xff, 0xa6, 0xff,
-0xe2, 0xff, 0x0a, 0x00, 0x3c, 0x00, 0x5c, 0x00, 0x74, 0x00, 0x82, 0x00, 0x62, 0x00, 0x48, 0x00,
-0x1c, 0x00, 0xec, 0xff, 0xba, 0xff, 0x8a, 0xff, 0x58, 0xff, 0x46, 0xff, 0x4c, 0xff, 0x4c, 0xff,
-0x80, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x84, 0x00, 0x9a, 0x00, 0x96, 0x00,
-0x80, 0x00, 0x5a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x52, 0xff, 0x36, 0xff,
-0x40, 0xff, 0x58, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00,
-0xb0, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xae, 0xff, 0x6e, 0xff,
-0x3e, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x54, 0xff, 0x8c, 0xff, 0xd2, 0xff, 0x00, 0x00, 0x38, 0x00,
-0x7c, 0x00, 0xa8, 0x00, 0xb6, 0x00, 0xa8, 0x00, 0x80, 0x00, 0x3c, 0x00, 0x08, 0x00, 0xd6, 0xff,
-0x9a, 0xff, 0x68, 0xff, 0x44, 0xff, 0x32, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0xb0, 0xff, 0xf2, 0xff,
-0x1e, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x2c, 0x00,
-0xf8, 0xff, 0xc2, 0xff, 0x8c, 0xff, 0x5c, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x76, 0xff,
-0xb4, 0xff, 0xea, 0xff, 0x2a, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xaa, 0x00, 0x88, 0x00,
-0x60, 0x00, 0x2a, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x56, 0xff, 0x3c, 0xff, 0x44, 0xff,
-0x66, 0xff, 0x7e, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x74, 0x00, 0x92, 0x00, 0x9a, 0x00,
-0x8c, 0x00, 0x78, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x5e, 0xff,
-0x52, 0xff, 0x5a, 0xff, 0x7a, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x06, 0x00, 0x3a, 0x00, 0x56, 0x00,
-0x72, 0x00, 0x74, 0x00, 0x62, 0x00, 0x44, 0x00, 0x1e, 0x00, 0xf0, 0xff, 0xce, 0xff, 0xa4, 0xff,
-0x86, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7c, 0xff, 0x96, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0x0e, 0x00,
-0x34, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x46, 0x00, 0x34, 0x00, 0x32, 0x00, 0x0c, 0x00, 0xf2, 0xff,
-0xdc, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xb6, 0xff, 0xc6, 0xff, 0xd2, 0xff,
-0xf6, 0xff, 0x0a, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0a, 0x00,
-0xfa, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xca, 0xff, 0xd6, 0xff,
-0xdc, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xf4, 0xff,
-0xf4, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xd8, 0xff,
-0xec, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x1a, 0x00, 0x12, 0x00,
-0x16, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xc0, 0xff,
-0xae, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x2a, 0x00,
-0x36, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x28, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xd4, 0xff,
-0xac, 0xff, 0x96, 0xff, 0x90, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xd8, 0xff, 0xf4, 0xff,
-0x20, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x3a, 0x00, 0x1a, 0x00,
-0xe4, 0xff, 0xba, 0xff, 0x96, 0xff, 0x70, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x82, 0xff, 0x98, 0xff,
-0xd2, 0xff, 0xfa, 0xff, 0x30, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x72, 0x00,
-0x44, 0x00, 0x10, 0x00, 0xce, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x44, 0xff,
-0x62, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0xac, 0x00,
-0xa0, 0x00, 0x76, 0x00, 0x42, 0x00, 0x0c, 0x00, 0xce, 0xff, 0x82, 0xff, 0x48, 0xff, 0x26, 0xff,
-0x16, 0xff, 0x34, 0xff, 0x5e, 0xff, 0xa0, 0xff, 0xe8, 0xff, 0x0e, 0x00, 0x58, 0x00, 0x9a, 0x00,
-0xb6, 0x00, 0xc4, 0x00, 0xa6, 0x00, 0x76, 0x00, 0x36, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x78, 0xff,
-0x38, 0xff, 0x1a, 0xff, 0x18, 0xff, 0x32, 0xff, 0x58, 0xff, 0xac, 0xff, 0xea, 0xff, 0x26, 0x00,
-0x6c, 0x00, 0x9a, 0x00, 0xc2, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0x6c, 0x00, 0x20, 0x00, 0xe8, 0xff,
-0xaa, 0xff, 0x6a, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x52, 0xff, 0x7a, 0xff, 0xc8, 0xff,
-0xfe, 0xff, 0x44, 0x00, 0x80, 0x00, 0xa4, 0x00, 0xc6, 0x00, 0xae, 0x00, 0x96, 0x00, 0x58, 0x00,
-0x16, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x6e, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x6e, 0xff,
-0xa6, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0x9a, 0x00,
-0x78, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x98, 0xff, 0x6e, 0xff, 0x58, 0xff, 0x52, 0xff,
-0x58, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x50, 0x00, 0x74, 0x00, 0x86, 0x00,
-0x86, 0x00, 0x76, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc8, 0xff, 0x9c, 0xff, 0x88, 0xff,
-0x74, 0xff, 0x80, 0xff, 0x88, 0xff, 0x98, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x18, 0x00, 0x46, 0x00,
-0x5e, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xce, 0xff,
-0xae, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x9c, 0xff, 0xbc, 0xff, 0xda, 0xff, 0xf0, 0xff,
-0x02, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x10, 0x00, 0xf6, 0xff,
-0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xd4, 0xff,
-0xdc, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x04, 0x00, 0xf4, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe2, 0xff, 0xe0, 0xff,
-0xe4, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf0, 0xff,
-0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x00, 0x00,
-0xfa, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xc8, 0xff,
-0xc6, 0xff, 0xbe, 0xff, 0xd0, 0xff, 0xee, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x34, 0x00,
-0x36, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xa4, 0xff,
-0xb0, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xf6, 0xff, 0x10, 0x00, 0x2a, 0x00,
-0x52, 0x00, 0x62, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x36, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xd0, 0xff,
-0xae, 0xff, 0x86, 0xff, 0x7e, 0xff, 0x70, 0xff, 0x84, 0xff, 0xa2, 0xff, 0xbe, 0xff, 0xf6, 0xff,
-0x14, 0x00, 0x40, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x72, 0x00, 0x50, 0x00, 0x1e, 0x00,
-0xf4, 0xff, 0xce, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x56, 0xff, 0x52, 0xff, 0x64, 0xff, 0x94, 0xff,
-0xc0, 0xff, 0xf6, 0xff, 0x26, 0x00, 0x54, 0x00, 0x88, 0x00, 0xa0, 0x00, 0x9a, 0x00, 0x90, 0x00,
-0x60, 0x00, 0x2c, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x64, 0xff, 0x3e, 0xff, 0x32, 0xff,
-0x4a, 0xff, 0x7c, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x5e, 0x00, 0x98, 0x00, 0xa4, 0x00,
-0xa8, 0x00, 0x8c, 0x00, 0x58, 0x00, 0x1c, 0x00, 0xe2, 0xff, 0xae, 0xff, 0x72, 0xff, 0x44, 0xff,
-0x20, 0xff, 0x22, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x6e, 0x00,
-0x9e, 0x00, 0xae, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x48, 0x00, 0x0c, 0x00, 0xe6, 0xff, 0xa2, 0xff,
-0x64, 0xff, 0x40, 0xff, 0x28, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x98, 0xff, 0xe6, 0xff, 0x04, 0x00,
-0x44, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7c, 0x00, 0x3c, 0x00, 0x00, 0x00,
-0xcc, 0xff, 0x94, 0xff, 0x58, 0xff, 0x38, 0xff, 0x26, 0xff, 0x3e, 0xff, 0x66, 0xff, 0xaa, 0xff,
-0xf2, 0xff, 0x16, 0x00, 0x54, 0x00, 0x80, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0x92, 0x00, 0x68, 0x00,
-0x24, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x7e, 0xff, 0x56, 0xff, 0x3e, 0xff, 0x38, 0xff, 0x56, 0xff,
-0x88, 0xff, 0xb8, 0xff, 0x00, 0x00, 0x36, 0x00, 0x58, 0x00, 0x86, 0x00, 0x96, 0x00, 0x94, 0x00,
-0x86, 0x00, 0x58, 0x00, 0x1c, 0x00, 0xf2, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x70, 0xff, 0x5e, 0xff,
-0x68, 0xff, 0x80, 0xff, 0x9e, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x32, 0x00, 0x58, 0x00, 0x66, 0x00,
-0x6c, 0x00, 0x6c, 0x00, 0x5c, 0x00, 0x36, 0x00, 0x02, 0x00, 0xda, 0xff, 0xb2, 0xff, 0x9c, 0xff,
-0x8e, 0xff, 0x8c, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xc2, 0xff, 0xea, 0xff, 0x00, 0x00, 0x22, 0x00,
-0x3c, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xde, 0xff,
-0xbc, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xf6, 0xff,
-0x0e, 0x00, 0x10, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x20, 0x00, 0x22, 0x00, 0x08, 0x00, 0xfc, 0xff,
-0xde, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xd8, 0xff,
-0xe2, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0x00, 0x00,
-0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xe8, 0xff,
-0xf0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xde, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xe2, 0xff,
-0xd4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0x12, 0x00, 0x12, 0x00, 0x10, 0x00,
-0x14, 0x00, 0x12, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xaa, 0xff,
-0xb4, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xc8, 0xff, 0xee, 0xff, 0x02, 0x00, 0x1c, 0x00, 0x3a, 0x00,
-0x44, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x2e, 0x00, 0x16, 0x00, 0xee, 0xff, 0xce, 0xff, 0xb6, 0xff,
-0x8e, 0xff, 0x80, 0xff, 0x8e, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x24, 0x00,
-0x42, 0x00, 0x68, 0x00, 0x72, 0x00, 0x80, 0x00, 0x5a, 0x00, 0x3e, 0x00, 0x18, 0x00, 0xe2, 0xff,
-0xba, 0xff, 0x86, 0xff, 0x70, 0xff, 0x66, 0xff, 0x66, 0xff, 0x80, 0xff, 0xa4, 0xff, 0xd6, 0xff,
-0x02, 0x00, 0x2a, 0x00, 0x66, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x8e, 0x00, 0x6e, 0x00, 0x40, 0x00,
-0x16, 0x00, 0xce, 0xff, 0x9e, 0xff, 0x78, 0xff, 0x50, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x72, 0xff,
-0x9e, 0xff, 0xda, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x76, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0x9e, 0x00,
-0x78, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0xd4, 0xff, 0xa0, 0xff, 0x62, 0xff, 0x46, 0xff, 0x3c, 0xff,
-0x4c, 0xff, 0x78, 0xff, 0xaa, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x88, 0x00, 0xa2, 0x00,
-0xb0, 0x00, 0x8e, 0x00, 0x5a, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb4, 0xff, 0x7a, 0xff, 0x50, 0xff,
-0x34, 0xff, 0x24, 0xff, 0x46, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x60, 0x00,
-0x92, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x54, 0x00, 0x0e, 0x00, 0xe0, 0xff, 0xa8, 0xff,
-0x74, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x4c, 0xff, 0x90, 0xff, 0xca, 0xff, 0x06, 0x00,
-0x42, 0x00, 0x76, 0x00, 0x9e, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0x8c, 0x00, 0x4c, 0x00, 0x16, 0x00,
-0xd0, 0xff, 0x9a, 0xff, 0x68, 0xff, 0x44, 0xff, 0x32, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x96, 0xff,
-0xd2, 0xff, 0x0e, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x9a, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x7a, 0x00,
-0x42, 0x00, 0x04, 0x00, 0xca, 0xff, 0x9e, 0xff, 0x70, 0xff, 0x52, 0xff, 0x44, 0xff, 0x50, 0xff,
-0x72, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x52, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x8e, 0x00,
-0x82, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xda, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x78, 0xff,
-0x6c, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x18, 0x00, 0x3e, 0x00, 0x56, 0x00,
-0x6a, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x16, 0x00, 0x00, 0x00, 0xe4, 0xff, 0xb6, 0xff,
-0xa2, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x94, 0xff, 0xae, 0xff, 0xdc, 0xff, 0xf2, 0xff, 0x10, 0x00,
-0x1e, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x30, 0x00, 0x10, 0x00, 0x0e, 0x00, 0xf4, 0xff,
-0xec, 0xff, 0xca, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xde, 0xff,
-0xf8, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x0c, 0x00,
-0x02, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xd4, 0xff,
-0xde, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xd4, 0xff, 0xe6, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xfc, 0xff,
-0xfc, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xba, 0xff,
-0xc2, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x34, 0x00,
-0x24, 0x00, 0x24, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xaa, 0xff, 0x98, 0xff,
-0x90, 0xff, 0x92, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x40, 0x00,
-0x44, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xb8, 0xff,
-0x94, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x7a, 0xff, 0x8a, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0x14, 0x00,
-0x40, 0x00, 0x5a, 0x00, 0x78, 0x00, 0x80, 0x00, 0x7a, 0x00, 0x60, 0x00, 0x38, 0x00, 0x08, 0x00,
-0xd8, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x62, 0xff, 0x52, 0xff, 0x60, 0xff, 0x88, 0xff, 0xac, 0xff,
-0xf2, 0xff, 0x1e, 0x00, 0x58, 0x00, 0x88, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x70, 0x00,
-0x42, 0x00, 0x04, 0x00, 0xc8, 0xff, 0x88, 0xff, 0x58, 0xff, 0x40, 0xff, 0x32, 0xff, 0x50, 0xff,
-0x8a, 0xff, 0xc6, 0xff, 0xfc, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x9e, 0x00, 0xb6, 0x00, 0xb4, 0x00,
-0x9c, 0x00, 0x6a, 0x00, 0x28, 0x00, 0xea, 0xff, 0xac, 0xff, 0x66, 0xff, 0x34, 0xff, 0x20, 0xff,
-0x32, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x76, 0x00, 0xa2, 0x00,
-0xbe, 0x00, 0xba, 0x00, 0x96, 0x00, 0x5c, 0x00, 0x0c, 0x00, 0xd6, 0xff, 0xa4, 0xff, 0x54, 0xff,
-0x30, 0xff, 0x20, 0xff, 0x3a, 0xff, 0x5e, 0xff, 0x90, 0xff, 0xe6, 0xff, 0x0a, 0x00, 0x38, 0x00,
-0x78, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x78, 0x00, 0x3e, 0x00, 0xfc, 0xff, 0xc8, 0xff,
-0x84, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x2c, 0xff, 0x46, 0xff, 0x64, 0xff, 0xa2, 0xff, 0xd8, 0xff,
-0x0e, 0x00, 0x44, 0x00, 0x6e, 0x00, 0x96, 0x00, 0x92, 0x00, 0x7e, 0x00, 0x5e, 0x00, 0x26, 0x00,
-0xec, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x66, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x5a, 0xff, 0x8a, 0xff,
-0xb8, 0xff, 0xe4, 0xff, 0x1c, 0x00, 0x4c, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x88, 0x00, 0x70, 0x00,
-0x40, 0x00, 0x18, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x94, 0xff, 0x74, 0xff, 0x64, 0xff, 0x62, 0xff,
-0x7c, 0xff, 0x9a, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x74, 0x00,
-0x6c, 0x00, 0x5a, 0x00, 0x34, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xac, 0xff, 0x9a, 0xff,
-0x8e, 0xff, 0x92, 0xff, 0x96, 0xff, 0xba, 0xff, 0xda, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x38, 0x00,
-0x42, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x04, 0x00, 0xf0, 0xff, 0xdc, 0xff,
-0xc2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xea, 0xff, 0x06, 0x00,
-0x04, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0xfc, 0xff,
-0xee, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xe2, 0xff,
-0xea, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf0, 0xff,
-0xf8, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xfc, 0xff,
-0xfc, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xce, 0xff,
-0xd6, 0xff, 0xe0, 0xff, 0xea, 0xff, 0x00, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x18, 0x00,
-0x12, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xe2, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xa8, 0xff,
-0xb0, 0xff, 0xa6, 0xff, 0xba, 0xff, 0xd6, 0xff, 0xea, 0xff, 0x12, 0x00, 0x28, 0x00, 0x40, 0x00,
-0x3a, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf8, 0xff, 0xda, 0xff, 0xba, 0xff, 0x9e, 0xff,
-0x8e, 0xff, 0x8a, 0xff, 0x96, 0xff, 0xa2, 0xff, 0xb0, 0xff, 0xe6, 0xff, 0x06, 0x00, 0x3a, 0x00,
-0x5a, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x52, 0x00, 0x46, 0x00, 0x18, 0x00, 0xf6, 0xff, 0xca, 0xff,
-0x98, 0xff, 0x82, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x6a, 0xff, 0x92, 0xff, 0xb0, 0xff, 0xec, 0xff,
-0x20, 0x00, 0x48, 0x00, 0x6e, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x4c, 0x00, 0x1e, 0x00,
-0xf0, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x42, 0xff, 0x60, 0xff, 0x94, 0xff,
-0xca, 0xff, 0x00, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x92, 0x00, 0x8c, 0x00,
-0x5a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x48, 0xff, 0x46, 0xff,
-0x64, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x0e, 0x00, 0x40, 0x00, 0x7c, 0x00, 0xa4, 0x00, 0xa2, 0x00,
-0x94, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0x98, 0xff, 0x66, 0xff, 0x3e, 0xff,
-0x30, 0xff, 0x4a, 0xff, 0x70, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0x16, 0x00, 0x58, 0x00, 0x8a, 0x00,
-0xb2, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x88, 0xff,
-0x5c, 0xff, 0x34, 0xff, 0x40, 0xff, 0x50, 0xff, 0x84, 0xff, 0xc2, 0xff, 0x02, 0x00, 0x36, 0x00,
-0x64, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x5c, 0x00, 0x10, 0x00, 0xea, 0xff,
-0xb2, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x86, 0xff, 0xc6, 0xff,
-0xfc, 0xff, 0x32, 0x00, 0x64, 0x00, 0x86, 0x00, 0x9a, 0x00, 0x8c, 0x00, 0x72, 0x00, 0x46, 0x00,
-0x10, 0x00, 0xda, 0xff, 0x9a, 0xff, 0x70, 0xff, 0x54, 0xff, 0x42, 0xff, 0x44, 0xff, 0x70, 0xff,
-0xa0, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x84, 0x00, 0x76, 0x00,
-0x5a, 0x00, 0x32, 0x00, 0xf6, 0xff, 0xd0, 0xff, 0xa4, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x72, 0xff,
-0x72, 0xff, 0x80, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x3c, 0x00,
-0x46, 0x00, 0x40, 0x00, 0x30, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xae, 0xff, 0x9a, 0xff,
-0x98, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0xb0, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x12, 0x00,
-0x24, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x16, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xd8, 0xff,
-0xc0, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xfe, 0xff,
-0x0a, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x06, 0x00,
-0xf2, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe0, 0xff,
-0xe4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xfe, 0xff,
-0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0e, 0x00,
-0xfe, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xd2, 0xff,
-0xd8, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x2c, 0x00, 0x26, 0x00, 0x02, 0x00, 0xea, 0xff, 0xd8, 0xff, 0xb2, 0xff, 0x98, 0xff, 0x96, 0xff,
-0x9e, 0xff, 0xa6, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x40, 0x00, 0x52, 0x00,
-0x52, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xda, 0xff, 0xa8, 0xff, 0x82, 0xff,
-0x72, 0xff, 0x62, 0xff, 0x64, 0xff, 0x8a, 0xff, 0xa8, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x32, 0x00,
-0x5c, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x64, 0x00, 0x36, 0x00, 0x00, 0x00, 0xcc, 0xff,
-0x96, 0xff, 0x6e, 0xff, 0x56, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x6e, 0xff, 0xa4, 0xff, 0xd4, 0xff,
-0x0e, 0x00, 0x40, 0x00, 0x70, 0x00, 0x90, 0x00, 0x98, 0x00, 0x90, 0x00, 0x64, 0x00, 0x32, 0x00,
-0xfa, 0xff, 0xc0, 0xff, 0x84, 0xff, 0x62, 0xff, 0x46, 0xff, 0x34, 0xff, 0x46, 0xff, 0x6a, 0xff,
-0xa8, 0xff, 0xe6, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7e, 0x00, 0xa6, 0x00, 0xac, 0x00, 0x9a, 0x00,
-0x70, 0x00, 0x2c, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x54, 0xff, 0x48, 0xff, 0x3a, 0xff,
-0x5a, 0xff, 0x88, 0xff, 0xb6, 0xff, 0xf2, 0xff, 0x28, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xae, 0x00,
-0xac, 0x00, 0x94, 0x00, 0x66, 0x00, 0x1a, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x82, 0xff, 0x60, 0xff,
-0x3c, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x28, 0x00, 0x6e, 0x00,
-0x92, 0x00, 0xa6, 0x00, 0x98, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xe8, 0xff, 0xaa, 0xff,
-0x7a, 0xff, 0x54, 0xff, 0x48, 0xff, 0x50, 0xff, 0x76, 0xff, 0xa2, 0xff, 0xce, 0xff, 0x18, 0x00,
-0x3e, 0x00, 0x70, 0x00, 0x96, 0x00, 0x94, 0x00, 0x8c, 0x00, 0x72, 0x00, 0x42, 0x00, 0x04, 0x00,
-0xd6, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x54, 0xff, 0x6e, 0xff, 0x8a, 0xff, 0xb0, 0xff,
-0xe8, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x64, 0x00, 0x80, 0x00, 0x82, 0x00, 0x70, 0x00, 0x46, 0x00,
-0x26, 0x00, 0xec, 0xff, 0xcc, 0xff, 0x9e, 0xff, 0x7e, 0xff, 0x78, 0xff, 0x76, 0xff, 0x7e, 0xff,
-0x90, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x3e, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x50, 0x00,
-0x50, 0x00, 0x30, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x98, 0xff,
-0x9e, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xde, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x32, 0x00, 0x34, 0x00,
-0x3a, 0x00, 0x34, 0x00, 0x26, 0x00, 0x14, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xc8, 0xff, 0xbe, 0xff,
-0xbe, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x12, 0x00,
-0x20, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xe6, 0xff,
-0xe2, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff,
-0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
-0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff,
-0xf2, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd8, 0xff,
-0xee, 0xff, 0xf4, 0xff, 0x06, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x16, 0x00, 0x1e, 0x00,
-0x06, 0x00, 0xfe, 0xff, 0xf2, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xae, 0xff,
-0xbe, 0xff, 0xc0, 0xff, 0xe4, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x34, 0x00, 0x48, 0x00, 0x48, 0x00,
-0x42, 0x00, 0x36, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xbe, 0xff, 0xa0, 0xff, 0x90, 0xff,
-0x8a, 0xff, 0x8e, 0xff, 0x92, 0xff, 0xb0, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x52, 0x00,
-0x5c, 0x00, 0x64, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x92, 0xff,
-0x6e, 0xff, 0x5e, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x8a, 0xff, 0xae, 0xff, 0xdc, 0xff, 0x12, 0x00,
-0x50, 0x00, 0x6c, 0x00, 0x80, 0x00, 0x8a, 0x00, 0x78, 0x00, 0x54, 0x00, 0x20, 0x00, 0xee, 0xff,
-0xc2, 0xff, 0x88, 0xff, 0x5a, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x58, 0xff, 0x88, 0xff, 0xba, 0xff,
-0x00, 0x00, 0x32, 0x00, 0x54, 0x00, 0x94, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x56, 0x00,
-0x24, 0x00, 0xec, 0xff, 0xa2, 0xff, 0x74, 0xff, 0x3e, 0xff, 0x32, 0xff, 0x36, 0xff, 0x4c, 0xff,
-0x86, 0xff, 0xc6, 0xff, 0xfc, 0xff, 0x32, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0xaa, 0x00,
-0x84, 0x00, 0x58, 0x00, 0x0e, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x62, 0xff, 0x36, 0xff, 0x28, 0xff,
-0x42, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x4e, 0x00, 0x86, 0x00, 0xae, 0x00,
-0xc4, 0x00, 0xb0, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfe, 0xff, 0xd6, 0xff, 0x96, 0xff, 0x62, 0xff,
-0x48, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x70, 0xff, 0xb4, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x4e, 0x00,
-0x84, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x66, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xbc, 0xff,
-0x90, 0xff, 0x60, 0xff, 0x42, 0xff, 0x40, 0xff, 0x64, 0xff, 0x8e, 0xff, 0xb2, 0xff, 0xf4, 0xff,
-0x26, 0x00, 0x4c, 0x00, 0x7e, 0x00, 0x90, 0x00, 0x92, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x1a, 0x00,
-0xe0, 0xff, 0xb2, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x7c, 0xff, 0xa4, 0xff,
-0xd8, 0xff, 0x04, 0x00, 0x2e, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x7a, 0x00, 0x70, 0x00, 0x56, 0x00,
-0x32, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x8c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x84, 0xff,
-0x8c, 0xff, 0xb0, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x26, 0x00, 0x46, 0x00, 0x48, 0x00, 0x4e, 0x00,
-0x42, 0x00, 0x40, 0x00, 0x1c, 0x00, 0xe8, 0xff, 0xd6, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0xa2, 0xff,
-0x96, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x18, 0x00, 0x36, 0x00,
-0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xec, 0xff, 0xde, 0xff,
-0xbc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xfe, 0xff,
-0xfc, 0xff, 0x08, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x04, 0x00, 0xf4, 0xff,
-0xe8, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xe4, 0xff,
-0xdc, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xee, 0xff,
-0xfc, 0xff, 0x14, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x02, 0x00,
-0x02, 0x00, 0xf2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff,
-0xdc, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x1e, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x2e, 0x00,
-0x26, 0x00, 0x12, 0x00, 0xf2, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x9a, 0xff,
-0xa2, 0xff, 0xa8, 0xff, 0xcc, 0xff, 0xe4, 0xff, 0x0a, 0x00, 0x30, 0x00, 0x52, 0x00, 0x60, 0x00,
-0x5a, 0x00, 0x4c, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xe8, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x7e, 0xff,
-0x78, 0xff, 0x6c, 0xff, 0x84, 0xff, 0x9e, 0xff, 0xc4, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00,
-0x76, 0x00, 0x8a, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x42, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xa2, 0xff,
-0x74, 0xff, 0x56, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x8e, 0xff, 0xc4, 0xff, 0x00, 0x00,
-0x30, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x90, 0x00, 0x82, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xfa, 0xff,
-0xc4, 0xff, 0x8e, 0xff, 0x54, 0xff, 0x32, 0xff, 0x32, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0xa4, 0xff,
-0xd0, 0xff, 0x12, 0x00, 0x4c, 0x00, 0x88, 0x00, 0xac, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x60, 0x00,
-0x36, 0x00, 0xee, 0xff, 0xc6, 0xff, 0x90, 0xff, 0x58, 0xff, 0x2c, 0xff, 0x18, 0xff, 0x36, 0xff,
-0x6c, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x66, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xba, 0x00,
-0xa6, 0x00, 0x74, 0x00, 0x26, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x70, 0xff, 0x32, 0xff, 0x20, 0xff,
-0x16, 0xff, 0x30, 0xff, 0x6c, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0x30, 0x00, 0x72, 0x00, 0xa2, 0x00,
-0xb6, 0x00, 0xbc, 0x00, 0xa0, 0x00, 0x70, 0x00, 0x28, 0x00, 0xee, 0xff, 0xba, 0xff, 0x74, 0xff,
-0x46, 0xff, 0x32, 0xff, 0x32, 0xff, 0x56, 0xff, 0x82, 0xff, 0xc6, 0xff, 0x0c, 0x00, 0x46, 0x00,
-0x76, 0x00, 0xa2, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x20, 0x00, 0xe6, 0xff,
-0xae, 0xff, 0x80, 0xff, 0x56, 0xff, 0x3e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x9c, 0xff, 0xda, 0xff,
-0x10, 0x00, 0x40, 0x00, 0x64, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x38, 0x00,
-0x0a, 0x00, 0xd0, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x6c, 0xff, 0x8c, 0xff,
-0xb2, 0xff, 0xe8, 0xff, 0x16, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x68, 0x00, 0x72, 0x00, 0x5a, 0x00,
-0x4c, 0x00, 0x22, 0x00, 0x02, 0x00, 0xd2, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x8a, 0xff,
-0x90, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xe6, 0xff, 0x16, 0x00, 0x28, 0x00, 0x36, 0x00, 0x34, 0x00,
-0x30, 0x00, 0x32, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xae, 0xff,
-0xa8, 0xff, 0x9e, 0xff, 0xae, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x04, 0x00,
-0x04, 0x00, 0x08, 0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xde, 0xff,
-0xdc, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe8, 0xff,
-0xde, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
-0xf8, 0xff, 0x02, 0x00, 0xfa, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xec, 0xff,
-0xea, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd4, 0xff, 0xe2, 0xff,
-0xf4, 0xff, 0xfc, 0xff, 0x0e, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x20, 0x00, 0x28, 0x00, 0x24, 0x00,
-0x18, 0x00, 0x00, 0x00, 0xde, 0xff, 0xd0, 0xff, 0xba, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xba, 0xff,
-0xc4, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0x1a, 0x00, 0x36, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x52, 0x00,
-0x4e, 0x00, 0x3a, 0x00, 0x0e, 0x00, 0xf6, 0xff, 0xce, 0xff, 0xa6, 0xff, 0x8e, 0xff, 0x84, 0xff,
-0x86, 0xff, 0xa2, 0xff, 0xba, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x30, 0x00, 0x54, 0x00, 0x70, 0x00,
-0x7e, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x34, 0x00, 0x08, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x84, 0xff,
-0x5c, 0xff, 0x5c, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x4a, 0x00,
-0x76, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x92, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xfa, 0xff, 0xba, 0xff,
-0x82, 0xff, 0x56, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xba, 0xff, 0xf6, 0xff,
-0x2c, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x90, 0x00, 0x62, 0x00, 0x1a, 0x00,
-0xdc, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x2e, 0xff, 0x12, 0xff, 0x18, 0xff, 0x3e, 0xff, 0x74, 0xff,
-0xbc, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0x94, 0x00,
-0x60, 0x00, 0x14, 0x00, 0xdc, 0xff, 0x96, 0xff, 0x52, 0xff, 0x2c, 0xff, 0x16, 0xff, 0x24, 0xff,
-0x4e, 0xff, 0x8c, 0xff, 0xce, 0xff, 0x08, 0x00, 0x4a, 0x00, 0x8e, 0x00, 0xb8, 0x00, 0xcc, 0x00,
-0xbc, 0x00, 0x8a, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xce, 0xff, 0x88, 0xff, 0x52, 0xff, 0x2a, 0xff,
-0x18, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x8e, 0xff, 0xda, 0xff, 0x16, 0x00, 0x54, 0x00, 0x84, 0x00,
-0xaa, 0x00, 0xb2, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x38, 0x00, 0x02, 0x00, 0xc0, 0xff, 0x86, 0xff,
-0x56, 0xff, 0x40, 0xff, 0x3e, 0xff, 0x50, 0xff, 0x82, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0x2e, 0x00,
-0x5a, 0x00, 0x90, 0x00, 0xa0, 0x00, 0xa8, 0x00, 0x94, 0x00, 0x66, 0x00, 0x32, 0x00, 0xf6, 0xff,
-0xc2, 0xff, 0x90, 0xff, 0x74, 0xff, 0x56, 0xff, 0x5c, 0xff, 0x72, 0xff, 0x90, 0xff, 0xc6, 0xff,
-0xfc, 0xff, 0x32, 0x00, 0x50, 0x00, 0x76, 0x00, 0x86, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x40, 0x00,
-0x14, 0x00, 0xe6, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x86, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x88, 0xff,
-0xaa, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x62, 0x00, 0x54, 0x00,
-0x44, 0x00, 0x2a, 0x00, 0x02, 0x00, 0xe6, 0xff, 0xc2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa6, 0xff,
-0xb2, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xe2, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x2c, 0x00, 0x2c, 0x00,
-0x32, 0x00, 0x28, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xc6, 0xff,
-0xc0, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xee, 0xff, 0x00, 0x00,
-0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xe6, 0xff,
-0xf0, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xd8, 0xff,
-0xda, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf6, 0xff,
-0x08, 0x00, 0x08, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0xec, 0xff,
-0xdc, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xc8, 0xff,
-0xea, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x2e, 0x00, 0x26, 0x00,
-0x10, 0x00, 0xf0, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0x9a, 0xff, 0x8a, 0xff, 0x86, 0xff, 0x92, 0xff,
-0xa2, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x0c, 0x00, 0x32, 0x00, 0x52, 0x00, 0x64, 0x00, 0x68, 0x00,
-0x58, 0x00, 0x4c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x70, 0xff,
-0x6c, 0xff, 0x80, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x72, 0x00,
-0x8c, 0x00, 0x84, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x90, 0xff,
-0x6a, 0xff, 0x56, 0xff, 0x46, 0xff, 0x60, 0xff, 0x8e, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x34, 0x00,
-0x60, 0x00, 0x96, 0x00, 0xa4, 0x00, 0x9c, 0x00, 0x90, 0x00, 0x54, 0x00, 0x22, 0x00, 0xf0, 0xff,
-0xaa, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x8c, 0xff, 0xd0, 0xff,
-0x04, 0x00, 0x46, 0x00, 0x80, 0x00, 0xa4, 0x00, 0xbc, 0x00, 0xae, 0x00, 0x88, 0x00, 0x52, 0x00,
-0x14, 0x00, 0xe2, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x32, 0xff, 0x58, 0xff,
-0x9c, 0xff, 0xd8, 0xff, 0x10, 0x00, 0x52, 0x00, 0x8c, 0x00, 0xa8, 0x00, 0xb4, 0x00, 0xa8, 0x00,
-0x80, 0x00, 0x3c, 0x00, 0xf8, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x48, 0xff, 0x26, 0xff, 0x1c, 0xff,
-0x3e, 0xff, 0x5c, 0xff, 0xa2, 0xff, 0xe8, 0xff, 0x12, 0x00, 0x58, 0x00, 0x98, 0x00, 0xa2, 0x00,
-0xa2, 0x00, 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x7c, 0xff, 0x44, 0xff,
-0x30, 0xff, 0x38, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x58, 0x00,
-0x8a, 0x00, 0x9a, 0x00, 0xa4, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x14, 0x00, 0xe0, 0xff, 0xae, 0xff,
-0x7c, 0xff, 0x4a, 0xff, 0x4c, 0xff, 0x58, 0xff, 0x62, 0xff, 0x8e, 0xff, 0xd0, 0xff, 0x06, 0x00,
-0x36, 0x00, 0x5e, 0x00, 0x6e, 0x00, 0x86, 0x00, 0x84, 0x00, 0x68, 0x00, 0x3c, 0x00, 0x0e, 0x00,
-0xd4, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x70, 0xff, 0x66, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xb2, 0xff,
-0xec, 0xff, 0x0a, 0x00, 0x3e, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x60, 0x00, 0x50, 0x00,
-0x2e, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xba, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x94, 0xff, 0x9a, 0xff,
-0xb2, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0x08, 0x00, 0x24, 0x00, 0x34, 0x00, 0x38, 0x00, 0x4a, 0x00,
-0x46, 0x00, 0x3a, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0xbc, 0xff, 0xba, 0xff,
-0xba, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x18, 0x00,
-0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xe4, 0xff,
-0xda, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xf8, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xf6, 0xff,
-0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xf6, 0xff, 0xee, 0xff,
-0xde, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe8, 0xff,
-0xf2, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x28, 0x00, 0x22, 0x00, 0x28, 0x00, 0x22, 0x00, 0x16, 0x00,
-0xfa, 0xff, 0xe2, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xb6, 0xff,
-0xd2, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x32, 0x00, 0x4a, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4c, 0x00,
-0x30, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x92, 0xff, 0x86, 0xff, 0x70, 0xff, 0x72, 0xff,
-0x8e, 0xff, 0x98, 0xff, 0xce, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x54, 0x00, 0x70, 0x00, 0x7c, 0x00,
-0x7a, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x0a, 0x00, 0xdc, 0xff, 0xb2, 0xff, 0x7c, 0xff, 0x5e, 0xff,
-0x54, 0xff, 0x5c, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0x18, 0x00, 0x46, 0x00, 0x6e, 0x00,
-0xa6, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x78, 0x00, 0x38, 0x00, 0x12, 0x00, 0xd8, 0xff, 0xa0, 0xff,
-0x5e, 0xff, 0x42, 0xff, 0x40, 0xff, 0x40, 0xff, 0x6a, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x14, 0x00,
-0x52, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x74, 0x00, 0x36, 0x00, 0xfc, 0xff,
-0xc0, 0xff, 0x90, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x6a, 0xff, 0xb2, 0xff,
-0xec, 0xff, 0x1c, 0x00, 0x6a, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0xae, 0x00, 0x94, 0x00, 0x6a, 0x00,
-0x2a, 0x00, 0xfe, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x48, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x56, 0xff,
-0x88, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x32, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xaa, 0x00,
-0x8a, 0x00, 0x5a, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x64, 0xff, 0x46, 0xff, 0x2e, 0xff,
-0x38, 0xff, 0x60, 0xff, 0x8c, 0xff, 0xc4, 0xff, 0x06, 0x00, 0x36, 0x00, 0x6a, 0x00, 0x8c, 0x00,
-0x9c, 0x00, 0x96, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0e, 0x00, 0xca, 0xff, 0x9e, 0xff, 0x78, 0xff,
-0x42, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x70, 0xff, 0xa8, 0xff, 0xda, 0xff, 0x12, 0x00, 0x38, 0x00,
-0x6e, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x7c, 0x00, 0x5e, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xc6, 0xff,
-0x9c, 0xff, 0x72, 0xff, 0x58, 0xff, 0x58, 0xff, 0x66, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xe0, 0xff,
-0x12, 0x00, 0x42, 0x00, 0x50, 0x00, 0x64, 0x00, 0x66, 0x00, 0x64, 0x00, 0x4a, 0x00, 0x14, 0x00,
-0xf4, 0xff, 0xc2, 0xff, 0x98, 0xff, 0x8e, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x82, 0xff, 0x9a, 0xff,
-0xc2, 0xff, 0xee, 0xff, 0x16, 0x00, 0x30, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00,
-0x42, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xe6, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa4, 0xff,
-0xa8, 0xff, 0xbe, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x1c, 0x00,
-0x2e, 0x00, 0x24, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0xee, 0xff, 0xd2, 0xff, 0xd0, 0xff,
-0xd4, 0xff, 0xc2, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xee, 0xff,
-0xf2, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00,
-0xf6, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xd6, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xee, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
-0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf0, 0xff,
-0xd2, 0xff, 0xc2, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xe0, 0xff,
-0xf6, 0xff, 0x14, 0x00, 0x28, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x36, 0x00, 0x22, 0x00,
-0xfe, 0xff, 0xe6, 0xff, 0xbe, 0xff, 0x98, 0xff, 0x84, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xa2, 0xff,
-0xb8, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x54, 0x00, 0x62, 0x00, 0x70, 0x00, 0x68, 0x00,
-0x4c, 0x00, 0x2e, 0x00, 0x08, 0x00, 0xd6, 0xff, 0x9a, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x5a, 0xff,
-0x6e, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x4c, 0x00, 0x72, 0x00, 0x90, 0x00,
-0x8e, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x32, 0x00, 0xfe, 0xff, 0xc4, 0xff, 0x84, 0xff, 0x54, 0xff,
-0x42, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x74, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x26, 0x00, 0x5a, 0x00,
-0x82, 0x00, 0xac, 0x00, 0x9c, 0x00, 0x92, 0x00, 0x66, 0x00, 0x30, 0x00, 0xfa, 0xff, 0xae, 0xff,
-0x78, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x54, 0xff, 0x8e, 0xff, 0xce, 0xff, 0xfe, 0xff,
-0x32, 0x00, 0x6a, 0x00, 0x94, 0x00, 0xb2, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x10, 0x00,
-0xdc, 0xff, 0x9c, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x26, 0xff, 0x38, 0xff, 0x64, 0xff, 0x98, 0xff,
-0xd8, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x78, 0x00, 0x92, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x70, 0x00,
-0x34, 0x00, 0xf2, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x52, 0xff, 0x36, 0xff, 0x2c, 0xff, 0x42, 0xff,
-0x7a, 0xff, 0xb2, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x50, 0x00, 0x82, 0x00, 0xaa, 0x00, 0xaa, 0x00,
-0x8c, 0x00, 0x6c, 0x00, 0x22, 0x00, 0xe0, 0xff, 0xbe, 0xff, 0x84, 0xff, 0x4c, 0xff, 0x3e, 0xff,
-0x42, 0xff, 0x5c, 0xff, 0x92, 0xff, 0xc8, 0xff, 0xf6, 0xff, 0x28, 0x00, 0x5a, 0x00, 0x7e, 0x00,
-0x9e, 0x00, 0x9e, 0x00, 0x7e, 0x00, 0x50, 0x00, 0x12, 0x00, 0xde, 0xff, 0xa4, 0xff, 0x80, 0xff,
-0x5c, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0x24, 0x00,
-0x4e, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x5c, 0x00, 0x44, 0x00, 0x00, 0x00, 0xde, 0xff,
-0xae, 0xff, 0x92, 0xff, 0x80, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x84, 0xff, 0xac, 0xff, 0xd6, 0xff,
-0xf2, 0xff, 0x20, 0x00, 0x40, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x22, 0x00,
-0x00, 0x00, 0xf0, 0xff, 0xba, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x98, 0xff, 0xa4, 0xff,
-0xc6, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x26, 0x00,
-0x1c, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xde, 0xff, 0xc6, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xc2, 0xff,
-0xc6, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x04, 0x00,
-0x1a, 0x00, 0x14, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf0, 0xff,
-0xf4, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xee, 0xff,
-0xe8, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x08, 0x00, 0x0e, 0x00,
-0x06, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xe2, 0xff, 0xca, 0xff,
-0xca, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xf4, 0xff, 0x08, 0x00,
-0x12, 0x00, 0x26, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x26, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xfc, 0xff,
-0xe4, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xa6, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xd0, 0xff,
-0xf2, 0xff, 0x08, 0x00, 0x34, 0x00, 0x52, 0x00, 0x50, 0x00, 0x46, 0x00, 0x3a, 0x00, 0x36, 0x00,
-0x0e, 0x00, 0xe6, 0xff, 0xca, 0xff, 0x94, 0xff, 0x76, 0xff, 0x72, 0xff, 0x6c, 0xff, 0x8c, 0xff,
-0x92, 0xff, 0xc2, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x58, 0x00, 0x64, 0x00, 0x7c, 0x00, 0x76, 0x00,
-0x54, 0x00, 0x44, 0x00, 0x10, 0x00, 0xe4, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x64, 0xff, 0x4c, 0xff,
-0x54, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x3e, 0x00, 0x6e, 0x00, 0x86, 0x00,
-0xa8, 0x00, 0x94, 0x00, 0x76, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xd2, 0xff, 0xa2, 0xff, 0x6a, 0xff,
-0x40, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x98, 0xff, 0xd8, 0xff, 0x0a, 0x00, 0x44, 0x00,
-0x86, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xa2, 0x00, 0x76, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0xd4, 0xff,
-0x92, 0xff, 0x5c, 0xff, 0x30, 0xff, 0x20, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa2, 0xff, 0xe0, 0xff,
-0x14, 0x00, 0x64, 0x00, 0x94, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x3c, 0x00,
-0x08, 0x00, 0xda, 0xff, 0x86, 0xff, 0x58, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x66, 0xff,
-0xb2, 0xff, 0xee, 0xff, 0x1e, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xba, 0x00, 0x9e, 0x00,
-0x72, 0x00, 0x2c, 0x00, 0xf8, 0xff, 0xb8, 0xff, 0x7a, 0xff, 0x48, 0xff, 0x28, 0xff, 0x26, 0xff,
-0x4c, 0xff, 0x80, 0xff, 0xba, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa8, 0x00,
-0xa4, 0x00, 0x86, 0x00, 0x58, 0x00, 0x1a, 0x00, 0xdc, 0xff, 0xa8, 0xff, 0x6e, 0xff, 0x4c, 0xff,
-0x3c, 0xff, 0x48, 0xff, 0x74, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x1a, 0x00, 0x40, 0x00, 0x76, 0x00,
-0x8e, 0x00, 0x96, 0x00, 0x88, 0x00, 0x62, 0x00, 0x3a, 0x00, 0xf8, 0xff, 0xd0, 0xff, 0x9c, 0xff,
-0x70, 0xff, 0x54, 0xff, 0x52, 0xff, 0x58, 0xff, 0x80, 0xff, 0xac, 0xff, 0xe2, 0xff, 0x0e, 0x00,
-0x32, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x60, 0x00, 0x42, 0x00, 0x14, 0x00, 0xf4, 0xff,
-0xc6, 0xff, 0xa2, 0xff, 0x8e, 0xff, 0x74, 0xff, 0x78, 0xff, 0x84, 0xff, 0x96, 0xff, 0xc6, 0xff,
-0xec, 0xff, 0x0c, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x42, 0x00, 0x30, 0x00,
-0x06, 0x00, 0xee, 0xff, 0xd6, 0xff, 0xb4, 0xff, 0xae, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xb6, 0xff,
-0xc2, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x24, 0x00,
-0x14, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xc6, 0xff,
-0xc2, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf8, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe2, 0xff,
-0xe0, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0e, 0x00,
-0x12, 0x00, 0x16, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xd6, 0xff,
-0xd4, 0xff, 0xbc, 0xff, 0xac, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xe2, 0xff, 0x04, 0x00,
-0x0a, 0x00, 0x2c, 0x00, 0x48, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0xfc, 0xff,
-0xea, 0xff, 0xc8, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa6, 0xff, 0xbe, 0xff,
-0xe2, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x68, 0x00, 0x76, 0x00, 0x60, 0x00, 0x46, 0x00,
-0x2c, 0x00, 0xfe, 0xff, 0xce, 0xff, 0x9c, 0xff, 0x7a, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x6c, 0xff,
-0x86, 0xff, 0xa8, 0xff, 0xe2, 0xff, 0x10, 0x00, 0x3c, 0x00, 0x6c, 0x00, 0x80, 0x00, 0x8a, 0x00,
-0x74, 0x00, 0x54, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x84, 0xff, 0x5e, 0xff, 0x46, 0xff,
-0x46, 0xff, 0x58, 0xff, 0x82, 0xff, 0xb0, 0xff, 0xee, 0xff, 0x22, 0x00, 0x5a, 0x00, 0x80, 0x00,
-0x9c, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x52, 0x00, 0x1a, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x7c, 0xff,
-0x52, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0x2e, 0x00,
-0x64, 0x00, 0x98, 0x00, 0xb2, 0x00, 0xa2, 0x00, 0x80, 0x00, 0x52, 0x00, 0x0e, 0x00, 0xda, 0xff,
-0xa4, 0xff, 0x6a, 0xff, 0x46, 0xff, 0x30, 0xff, 0x36, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd6, 0xff,
-0x06, 0x00, 0x34, 0x00, 0x7c, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0x7c, 0x00, 0x42, 0x00,
-0x00, 0x00, 0xe0, 0xff, 0x9e, 0xff, 0x6a, 0xff, 0x42, 0xff, 0x2a, 0xff, 0x40, 0xff, 0x60, 0xff,
-0xa6, 0xff, 0xe6, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x88, 0x00, 0xaa, 0x00, 0xba, 0x00, 0x9e, 0x00,
-0x7c, 0x00, 0x3c, 0x00, 0x06, 0x00, 0xca, 0xff, 0x8c, 0xff, 0x64, 0xff, 0x38, 0xff, 0x38, 0xff,
-0x54, 0xff, 0x78, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x56, 0x00, 0x8a, 0x00, 0xa0, 0x00,
-0xa6, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x2e, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x6c, 0xff,
-0x4c, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x88, 0xff, 0xbe, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x56, 0x00,
-0x76, 0x00, 0x84, 0x00, 0x8a, 0x00, 0x72, 0x00, 0x54, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xba, 0xff,
-0x90, 0xff, 0x88, 0xff, 0x68, 0xff, 0x6c, 0xff, 0x78, 0xff, 0x98, 0xff, 0xcc, 0xff, 0xec, 0xff,
-0x1a, 0x00, 0x40, 0x00, 0x54, 0x00, 0x62, 0x00, 0x54, 0x00, 0x52, 0x00, 0x36, 0x00, 0x04, 0x00,
-0xf0, 0xff, 0xca, 0xff, 0xa6, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x90, 0xff, 0x8c, 0xff, 0xae, 0xff,
-0xd6, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x24, 0x00, 0x20, 0x00, 0x26, 0x00, 0x28, 0x00, 0x22, 0x00,
-0x06, 0x00, 0xfa, 0xff, 0xe6, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xba, 0xff,
-0xc8, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x06, 0x00,
-0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xec, 0xff,
-0xde, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xea, 0xff,
-0xf4, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
-0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xda, 0xff,
-0xc8, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0x0a, 0x00, 0x18, 0x00,
-0x28, 0x00, 0x30, 0x00, 0x34, 0x00, 0x26, 0x00, 0x28, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xdc, 0xff,
-0xd2, 0xff, 0xb4, 0xff, 0xac, 0xff, 0xae, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xfc, 0xff,
-0x14, 0x00, 0x3c, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x36, 0x00, 0x10, 0x00,
-0xf6, 0xff, 0xcc, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x70, 0xff, 0x76, 0xff, 0x8a, 0xff, 0xaa, 0xff,
-0xcc, 0xff, 0xfc, 0xff, 0x24, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x78, 0x00, 0x7e, 0x00, 0x68, 0x00,
-0x4e, 0x00, 0x16, 0x00, 0xe8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x64, 0xff, 0x48, 0xff, 0x54, 0xff,
-0x72, 0xff, 0x9c, 0xff, 0xce, 0xff, 0x00, 0x00, 0x32, 0x00, 0x6e, 0x00, 0x92, 0x00, 0x9e, 0x00,
-0x9e, 0x00, 0x82, 0x00, 0x44, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x3e, 0xff,
-0x26, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x90, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x46, 0x00, 0x7a, 0x00,
-0x9c, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x44, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0x96, 0xff,
-0x58, 0xff, 0x32, 0xff, 0x14, 0xff, 0x3a, 0xff, 0x54, 0xff, 0x98, 0xff, 0xe6, 0xff, 0x02, 0x00,
-0x54, 0x00, 0x8c, 0x00, 0xa8, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x7a, 0x00, 0x32, 0x00, 0x02, 0x00,
-0xcc, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x28, 0xff, 0x22, 0xff, 0x3a, 0xff, 0x6a, 0xff, 0xb6, 0xff,
-0xf4, 0xff, 0x12, 0x00, 0x5c, 0x00, 0x88, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0x90, 0x00, 0x64, 0x00,
-0x12, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x70, 0xff, 0x52, 0xff, 0x26, 0xff, 0x38, 0xff, 0x52, 0xff,
-0x7c, 0xff, 0xc8, 0xff, 0x04, 0x00, 0x30, 0x00, 0x6c, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x9c, 0x00,
-0x84, 0x00, 0x58, 0x00, 0x1e, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x56, 0xff, 0x42, 0xff,
-0x4e, 0xff, 0x7c, 0xff, 0x9c, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x3a, 0x00, 0x68, 0x00, 0x94, 0x00,
-0x98, 0x00, 0x8c, 0x00, 0x68, 0x00, 0x42, 0x00, 0x08, 0x00, 0xd0, 0xff, 0xa6, 0xff, 0x7e, 0xff,
-0x6e, 0xff, 0x52, 0xff, 0x66, 0xff, 0x80, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x02, 0x00, 0x38, 0x00,
-0x4c, 0x00, 0x64, 0x00, 0x78, 0x00, 0x60, 0x00, 0x52, 0x00, 0x32, 0x00, 0x08, 0x00, 0xd6, 0xff,
-0xa4, 0xff, 0x9c, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x98, 0xff, 0xc2, 0xff, 0xe2, 0xff,
-0xfe, 0xff, 0x28, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4a, 0x00, 0x38, 0x00, 0x1e, 0x00,
-0x00, 0x00, 0xe0, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xbc, 0xff,
-0xd4, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x2a, 0x00, 0x24, 0x00,
-0x12, 0x00, 0x04, 0x00, 0xee, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xcc, 0xff,
-0xd2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xf8, 0xff,
-0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x02, 0x00,
-0x02, 0x00, 0xf8, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd6, 0xff,
-0xd4, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0x10, 0x00, 0x16, 0x00,
-0x28, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x0e, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xca, 0xff,
-0xba, 0xff, 0xa6, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xec, 0xff, 0x06, 0x00,
-0x28, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xee, 0xff,
-0xd0, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x90, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xe0, 0xff,
-0xfe, 0xff, 0x16, 0x00, 0x4e, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x66, 0x00, 0x46, 0x00, 0x38, 0x00,
-0x02, 0x00, 0xea, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x7a, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x80, 0xff,
-0xa2, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x60, 0x00, 0x80, 0x00, 0x88, 0x00, 0x78, 0x00,
-0x68, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0xa0, 0xff, 0x78, 0xff, 0x56, 0xff, 0x4e, 0xff,
-0x52, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x24, 0x00, 0x52, 0x00, 0x7c, 0x00, 0x9e, 0x00,
-0xa8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x94, 0xff, 0x5a, 0xff,
-0x34, 0xff, 0x34, 0xff, 0x46, 0xff, 0x6c, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x62, 0x00,
-0x92, 0x00, 0xae, 0x00, 0xac, 0x00, 0x98, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb8, 0xff,
-0x6e, 0xff, 0x42, 0xff, 0x28, 0xff, 0x28, 0xff, 0x40, 0xff, 0x70, 0xff, 0xc0, 0xff, 0xf8, 0xff,
-0x28, 0x00, 0x6c, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xae, 0x00, 0x88, 0x00, 0x5a, 0x00, 0x10, 0x00,
-0xdc, 0xff, 0xac, 0xff, 0x76, 0xff, 0x46, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x5a, 0xff, 0x92, 0xff,
-0xe2, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x80, 0x00, 0x9e, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x7c, 0x00,
-0x3c, 0x00, 0x04, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff, 0x38, 0xff, 0x48, 0xff,
-0x70, 0xff, 0xa4, 0xff, 0xe6, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x74, 0x00, 0x98, 0x00, 0x9e, 0x00,
-0x88, 0x00, 0x66, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x64, 0xff, 0x4e, 0xff,
-0x4c, 0xff, 0x5a, 0xff, 0x86, 0xff, 0xc4, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x5c, 0x00, 0x6c, 0x00,
-0x8e, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x4e, 0x00, 0x22, 0x00, 0xea, 0xff, 0xb4, 0xff, 0x8c, 0xff,
-0x7a, 0xff, 0x68, 0xff, 0x68, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x26, 0x00,
-0x4a, 0x00, 0x52, 0x00, 0x56, 0x00, 0x52, 0x00, 0x52, 0x00, 0x34, 0x00, 0x06, 0x00, 0xe8, 0xff,
-0xbc, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x94, 0xff, 0xa0, 0xff, 0x98, 0xff, 0xbc, 0xff, 0xf6, 0xff,
-0x02, 0x00, 0x10, 0x00, 0x24, 0x00, 0x36, 0x00, 0x38, 0x00, 0x34, 0x00, 0x36, 0x00, 0x16, 0x00,
-0x00, 0x00, 0xf2, 0xff, 0xd6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xca, 0xff,
-0xd8, 0xff, 0xea, 0xff, 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00,
-0x10, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe0, 0xff,
-0xe2, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe4, 0xff,
-0xea, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0e, 0x00,
-0x06, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xbc, 0xff,
-0xbe, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xda, 0xff, 0xf2, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x00,
-0x2a, 0x00, 0x32, 0x00, 0x26, 0x00, 0x22, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xc6, 0xff,
-0xac, 0xff, 0x8e, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xe2, 0xff, 0xfe, 0xff,
-0x1e, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x3e, 0x00, 0x2a, 0x00, 0xf6, 0xff,
-0xd8, 0xff, 0xaa, 0xff, 0x7e, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x7a, 0xff, 0x9a, 0xff, 0xbc, 0xff,
-0xea, 0xff, 0x16, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x8e, 0x00, 0x76, 0x00, 0x54, 0x00,
-0x32, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x92, 0xff, 0x70, 0xff, 0x5c, 0xff, 0x56, 0xff, 0x6c, 0xff,
-0x8c, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x60, 0x00, 0x82, 0x00, 0x94, 0x00, 0xa2, 0x00,
-0x92, 0x00, 0x5a, 0x00, 0x26, 0x00, 0xf4, 0xff, 0xae, 0xff, 0x86, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x40, 0xff, 0x52, 0xff, 0x88, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x70, 0x00, 0x98, 0x00,
-0xb0, 0x00, 0xac, 0x00, 0x8e, 0x00, 0x5c, 0x00, 0x24, 0x00, 0xee, 0xff, 0xae, 0xff, 0x74, 0xff,
-0x48, 0xff, 0x34, 0xff, 0x38, 0xff, 0x5a, 0xff, 0x8e, 0xff, 0xd2, 0xff, 0x0a, 0x00, 0x3e, 0x00,
-0x7a, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xb0, 0x00, 0x86, 0x00, 0x4a, 0x00, 0x0c, 0x00, 0xda, 0xff,
-0xa0, 0xff, 0x58, 0xff, 0x38, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x98, 0xff, 0xe4, 0xff,
-0x10, 0x00, 0x50, 0x00, 0x84, 0x00, 0xaa, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x36, 0x00,
-0xf6, 0xff, 0xba, 0xff, 0x88, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x30, 0xff, 0x4a, 0xff, 0x72, 0xff,
-0xa8, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x5e, 0x00, 0x92, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x84, 0x00,
-0x5c, 0x00, 0x1a, 0x00, 0xf4, 0xff, 0xb0, 0xff, 0x7e, 0xff, 0x56, 0xff, 0x3c, 0xff, 0x40, 0xff,
-0x5a, 0xff, 0x90, 0xff, 0xc6, 0xff, 0x02, 0x00, 0x28, 0x00, 0x66, 0x00, 0x80, 0x00, 0x90, 0x00,
-0x92, 0x00, 0x62, 0x00, 0x46, 0x00, 0x10, 0x00, 0xe2, 0xff, 0xb4, 0xff, 0x82, 0xff, 0x68, 0xff,
-0x60, 0xff, 0x62, 0xff, 0x7e, 0xff, 0x96, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x2e, 0x00, 0x54, 0x00,
-0x66, 0x00, 0x68, 0x00, 0x70, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xee, 0xff, 0xbe, 0xff,
-0xae, 0xff, 0xa2, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0x08, 0x00,
-0x20, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x1a, 0x00, 0x02, 0x00,
-0xfe, 0xff, 0xda, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xdc, 0xff,
-0xf2, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x0c, 0x00,
-0x06, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xe4, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf4, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfc, 0xff,
-0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xc8, 0xff,
-0xba, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xda, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x1a, 0x00, 0x2a, 0x00,
-0x1c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xe2, 0xff, 0xc4, 0xff, 0xa2, 0xff,
-0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xce, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x32, 0x00,
-0x48, 0x00, 0x56, 0x00, 0x56, 0x00, 0x40, 0x00, 0x30, 0x00, 0x14, 0x00, 0xe8, 0xff, 0xc6, 0xff,
-0xa2, 0xff, 0x82, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0x04, 0x00,
-0x2a, 0x00, 0x4c, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0x02, 0x00,
-0xd2, 0xff, 0xa8, 0xff, 0x80, 0xff, 0x64, 0xff, 0x60, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xa6, 0xff,
-0xda, 0xff, 0x0e, 0x00, 0x46, 0x00, 0x74, 0x00, 0x84, 0x00, 0x92, 0x00, 0x82, 0x00, 0x6e, 0x00,
-0x40, 0x00, 0x08, 0x00, 0xd8, 0xff, 0x9e, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x4a, 0xff, 0x50, 0xff,
-0x78, 0xff, 0xae, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x5a, 0x00, 0x8a, 0x00, 0xa0, 0x00, 0xba, 0x00,
-0xa6, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x02, 0x00, 0xd2, 0xff, 0x96, 0xff, 0x62, 0xff, 0x48, 0xff,
-0x2c, 0xff, 0x40, 0xff, 0x70, 0xff, 0xae, 0xff, 0xea, 0xff, 0x28, 0x00, 0x58, 0x00, 0x8c, 0x00,
-0xaa, 0x00, 0xb6, 0x00, 0xae, 0x00, 0x72, 0x00, 0x38, 0x00, 0xfc, 0xff, 0xc8, 0xff, 0x88, 0xff,
-0x5c, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xc6, 0xff, 0xfa, 0xff, 0x34, 0x00,
-0x74, 0x00, 0x98, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0x94, 0x00, 0x66, 0x00, 0x26, 0x00, 0xea, 0xff,
-0xb4, 0xff, 0x78, 0xff, 0x48, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xc8, 0xff,
-0x00, 0x00, 0x36, 0x00, 0x6c, 0x00, 0x8e, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00,
-0xfe, 0xff, 0xce, 0xff, 0x9c, 0xff, 0x6c, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x6a, 0xff,
-0x96, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x34, 0x00, 0x58, 0x00, 0x84, 0x00, 0x94, 0x00, 0x80, 0x00,
-0x60, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xa0, 0xff, 0x72, 0xff, 0x5e, 0xff, 0x54, 0xff,
-0x66, 0xff, 0x8c, 0xff, 0xa6, 0xff, 0xe6, 0xff, 0x0a, 0x00, 0x42, 0x00, 0x62, 0x00, 0x78, 0x00,
-0x76, 0x00, 0x62, 0x00, 0x56, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x7e, 0xff,
-0x72, 0xff, 0x74, 0xff, 0x7a, 0xff, 0x98, 0xff, 0xba, 0xff, 0xea, 0xff, 0x0c, 0x00, 0x3a, 0x00,
-0x46, 0x00, 0x5c, 0x00, 0x60, 0x00, 0x4e, 0x00, 0x32, 0x00, 0x04, 0x00, 0xf6, 0xff, 0xdc, 0xff,
-0xae, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0xa8, 0xff, 0xc6, 0xff, 0xe6, 0xff, 0x00, 0x00,
-0x0a, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x36, 0x00, 0x26, 0x00, 0x06, 0x00,
-0xf8, 0xff, 0xec, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd8, 0xff,
-0xee, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0c, 0x00,
-0x06, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf2, 0xff,
-0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0a, 0x00,
-0x12, 0x00, 0x04, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xbe, 0xff, 0xc6, 0xff,
-0xce, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xec, 0xff, 0xfe, 0xff, 0x0e, 0x00, 0x1e, 0x00, 0x2e, 0x00,
-0x38, 0x00, 0x30, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf4, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0xa2, 0xff,
-0x88, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xb6, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x12, 0x00,
-0x38, 0x00, 0x58, 0x00, 0x62, 0x00, 0x4e, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x04, 0x00, 0xe0, 0xff,
-0xac, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x78, 0xff, 0x86, 0xff, 0x9c, 0xff, 0xb6, 0xff, 0xe0, 0xff,
-0x0e, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x4e, 0x00, 0x28, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x66, 0xff, 0x84, 0xff,
-0xb4, 0xff, 0xe4, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x7a, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x80, 0x00,
-0x56, 0x00, 0x20, 0x00, 0xee, 0xff, 0xc0, 0xff, 0x88, 0xff, 0x58, 0xff, 0x46, 0xff, 0x46, 0xff,
-0x5c, 0xff, 0x88, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x68, 0x00, 0x92, 0x00, 0xac, 0x00,
-0xaa, 0x00, 0x92, 0x00, 0x5e, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xb6, 0xff, 0x7a, 0xff, 0x4e, 0xff,
-0x3a, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x8c, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x72, 0x00,
-0xa8, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xa0, 0xff,
-0x6a, 0xff, 0x44, 0xff, 0x34, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x9a, 0xff, 0xe6, 0xff, 0x18, 0x00,
-0x48, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xb8, 0x00, 0xa4, 0x00, 0x82, 0x00, 0x3a, 0x00, 0x0e, 0x00,
-0xdc, 0xff, 0x9e, 0xff, 0x64, 0xff, 0x48, 0xff, 0x40, 0xff, 0x46, 0xff, 0x74, 0xff, 0xb0, 0xff,
-0xec, 0xff, 0x1a, 0x00, 0x54, 0x00, 0x8a, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x90, 0x00, 0x74, 0x00,
-0x3c, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x56, 0xff,
-0x84, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x54, 0x00, 0x78, 0x00, 0x82, 0x00, 0x86, 0x00,
-0x6c, 0x00, 0x50, 0x00, 0x1a, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x68, 0xff,
-0x70, 0xff, 0x88, 0xff, 0x9c, 0xff, 0xd0, 0xff, 0x02, 0x00, 0x28, 0x00, 0x4c, 0x00, 0x5a, 0x00,
-0x6c, 0x00, 0x58, 0x00, 0x48, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xb0, 0xff, 0x96, 0xff,
-0x92, 0xff, 0x80, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0xc0, 0xff, 0xe6, 0xff, 0x02, 0x00, 0x12, 0x00,
-0x2e, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x36, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0xee, 0xff, 0xce, 0xff,
-0xc2, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xec, 0xff,
-0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xfe, 0xff,
-0xec, 0xff, 0xf2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xdc, 0xff,
-0xe6, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x04, 0x00,
-0x00, 0x00, 0xfe, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xf4, 0xff,
-0xee, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xe0, 0xff,
-0xd8, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x26, 0x00, 0x28, 0x00,
-0x22, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xee, 0xff, 0xd6, 0xff, 0xb6, 0xff, 0xac, 0xff,
-0xac, 0xff, 0xbc, 0xff, 0xc8, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x28, 0x00, 0x4e, 0x00,
-0x5a, 0x00, 0x52, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0xa6, 0xff,
-0x88, 0xff, 0x6c, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0x94, 0xff, 0xce, 0xff, 0xee, 0xff, 0x1e, 0x00,
-0x46, 0x00, 0x5e, 0x00, 0x7a, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xee, 0xff,
-0xba, 0xff, 0x74, 0xff, 0x66, 0xff, 0x5e, 0xff, 0x60, 0xff, 0x82, 0xff, 0x94, 0xff, 0xc2, 0xff,
-0x06, 0x00, 0x34, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x98, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x46, 0x00,
-0x10, 0x00, 0xd8, 0xff, 0xa2, 0xff, 0x70, 0xff, 0x4a, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x78, 0xff,
-0x9c, 0xff, 0xce, 0xff, 0x14, 0x00, 0x42, 0x00, 0x74, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0x98, 0x00,
-0x76, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x5e, 0xff, 0x34, 0xff, 0x2c, 0xff,
-0x38, 0xff, 0x62, 0xff, 0x9e, 0xff, 0xe6, 0xff, 0x14, 0x00, 0x40, 0x00, 0x88, 0x00, 0xaa, 0x00,
-0xb8, 0x00, 0xa4, 0x00, 0x76, 0x00, 0x36, 0x00, 0xfc, 0xff, 0xd2, 0xff, 0x90, 0xff, 0x62, 0xff,
-0x3e, 0xff, 0x2a, 0xff, 0x46, 0xff, 0x6a, 0xff, 0xb8, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x58, 0x00,
-0x92, 0x00, 0xba, 0x00, 0xb4, 0x00, 0x92, 0x00, 0x74, 0x00, 0x2e, 0x00, 0xec, 0xff, 0xc4, 0xff,
-0x84, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x80, 0xff, 0xba, 0xff, 0xfa, 0xff,
-0x28, 0x00, 0x66, 0x00, 0x90, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x5c, 0x00, 0x18, 0x00,
-0xe4, 0xff, 0xb2, 0xff, 0x80, 0xff, 0x4c, 0xff, 0x3e, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x96, 0xff,
-0xc4, 0xff, 0x0a, 0x00, 0x30, 0x00, 0x60, 0x00, 0x88, 0x00, 0x90, 0x00, 0xa0, 0x00, 0x84, 0x00,
-0x3e, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x68, 0xff, 0x58, 0xff, 0x6a, 0xff,
-0x80, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x02, 0x00, 0x36, 0x00, 0x56, 0x00, 0x6e, 0x00, 0x6c, 0x00,
-0x62, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x8a, 0xff, 0x82, 0xff,
-0x76, 0xff, 0x8e, 0xff, 0x98, 0xff, 0xbe, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x38, 0x00, 0x4c, 0x00,
-0x56, 0x00, 0x4a, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xc0, 0xff, 0xae, 0xff,
-0x98, 0xff, 0x9a, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0x0c, 0x00,
-0x28, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x26, 0x00, 0x18, 0x00, 0x02, 0x00, 0xf2, 0xff,
-0xe8, 0xff, 0xce, 0xff, 0xbe, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xca, 0xff, 0xd6, 0xff,
-0xf2, 0xff, 0xf4, 0xff, 0x02, 0x00, 0x06, 0x00, 0xf6, 0xff, 0x04, 0x00, 0x04, 0x00, 0xfc, 0xff,
-0x02, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff,
-0xe8, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff,
-0xf8, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x0e, 0x00, 0x10, 0x00,
-0x1c, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xe8, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xb8, 0xff, 0xc6, 0xff,
-0xc2, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xec, 0xff, 0x06, 0x00, 0x14, 0x00, 0x32, 0x00, 0x40, 0x00,
-0x2e, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x12, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xae, 0xff, 0x98, 0xff,
-0x94, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x44, 0x00,
-0x56, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf8, 0xff, 0xca, 0xff,
-0xa0, 0xff, 0x7e, 0xff, 0x6a, 0xff, 0x72, 0xff, 0x80, 0xff, 0x9a, 0xff, 0xc4, 0xff, 0xfe, 0xff,
-0x26, 0x00, 0x50, 0x00, 0x78, 0x00, 0x86, 0x00, 0x74, 0x00, 0x64, 0x00, 0x3a, 0x00, 0x0c, 0x00,
-0xd8, 0xff, 0xaa, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x48, 0xff, 0x5a, 0xff, 0x72, 0xff, 0xaa, 0xff,
-0xe0, 0xff, 0x0a, 0x00, 0x46, 0x00, 0x78, 0x00, 0x98, 0x00, 0x9e, 0x00, 0x86, 0x00, 0x56, 0x00,
-0x24, 0x00, 0xfe, 0xff, 0xc0, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x4a, 0xff,
-0x7a, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0x30, 0x00, 0x70, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xbe, 0x00,
-0x98, 0x00, 0x66, 0x00, 0x28, 0x00, 0xea, 0xff, 0xb8, 0xff, 0x66, 0xff, 0x3a, 0xff, 0x20, 0xff,
-0x1c, 0xff, 0x4e, 0xff, 0x78, 0xff, 0xc6, 0xff, 0x08, 0x00, 0x34, 0x00, 0x7c, 0x00, 0xa4, 0x00,
-0xc0, 0x00, 0xba, 0x00, 0x94, 0x00, 0x5c, 0x00, 0x10, 0x00, 0xe6, 0xff, 0x9e, 0xff, 0x58, 0xff,
-0x30, 0xff, 0x20, 0xff, 0x30, 0xff, 0x50, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x50, 0x00,
-0x86, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x12, 0x00, 0xc6, 0xff,
-0x8a, 0xff, 0x52, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa6, 0xff, 0xec, 0xff,
-0x22, 0x00, 0x58, 0x00, 0x96, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0xa8, 0x00, 0x7e, 0x00, 0x4a, 0x00,
-0xfc, 0xff, 0xc2, 0xff, 0x82, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x50, 0xff, 0x70, 0xff,
-0xae, 0xff, 0xe6, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x7e, 0x00, 0x8e, 0x00, 0x94, 0x00, 0x84, 0x00,
-0x5c, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xb4, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0x60, 0xff, 0x60, 0xff,
-0x7a, 0xff, 0x9a, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x26, 0x00, 0x48, 0x00, 0x5a, 0x00, 0x6e, 0x00,
-0x64, 0x00, 0x58, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xea, 0xff, 0xba, 0xff, 0xa0, 0xff, 0x9a, 0xff,
-0x90, 0xff, 0x8a, 0xff, 0x90, 0xff, 0xb2, 0xff, 0xda, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x2c, 0x00,
-0x40, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0xe8, 0xff, 0xcc, 0xff,
-0xb0, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xa8, 0xff, 0xba, 0xff, 0xca, 0xff, 0xda, 0xff, 0xf8, 0xff,
-0x04, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x20, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xf6, 0xff,
-0xf2, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xd6, 0xff, 0xea, 0xff,
-0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfa, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfc, 0xff,
-0xf8, 0xff, 0xf0, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xc8, 0xff,
-0xd6, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x2a, 0x00,
-0x2e, 0x00, 0x10, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0xa6, 0xff,
-0xb2, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x22, 0x00, 0x52, 0x00, 0x5e, 0x00,
-0x58, 0x00, 0x52, 0x00, 0x46, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x92, 0xff,
-0x88, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x92, 0xff, 0xb4, 0xff, 0xe2, 0xff, 0x04, 0x00, 0x3a, 0x00,
-0x5c, 0x00, 0x72, 0x00, 0x7e, 0x00, 0x6c, 0x00, 0x4a, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xce, 0xff,
-0x9c, 0xff, 0x7e, 0xff, 0x62, 0xff, 0x62, 0xff, 0x70, 0xff, 0x82, 0xff, 0xac, 0xff, 0xe4, 0xff,
-0x24, 0x00, 0x50, 0x00, 0x7a, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x80, 0x00, 0x54, 0x00, 0x20, 0x00,
-0xec, 0xff, 0xba, 0xff, 0x86, 0xff, 0x58, 0xff, 0x38, 0xff, 0x42, 0xff, 0x52, 0xff, 0x88, 0xff,
-0xbe, 0xff, 0xf2, 0xff, 0x2e, 0x00, 0x66, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x82, 0x00,
-0x50, 0x00, 0x0e, 0x00, 0xda, 0xff, 0x9a, 0xff, 0x62, 0xff, 0x40, 0xff, 0x24, 0xff, 0x28, 0xff,
-0x4a, 0xff, 0x84, 0xff, 0xcc, 0xff, 0x02, 0x00, 0x40, 0x00, 0x82, 0x00, 0xac, 0x00, 0xb4, 0x00,
-0xaa, 0x00, 0x84, 0x00, 0x4e, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0x8c, 0xff, 0x5a, 0xff, 0x3c, 0xff,
-0x20, 0xff, 0x38, 0xff, 0x62, 0xff, 0xa0, 0xff, 0xe0, 0xff, 0x1c, 0x00, 0x5e, 0x00, 0x96, 0x00,
-0xb2, 0x00, 0xc2, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x32, 0x00, 0xf0, 0xff, 0xc6, 0xff, 0x7c, 0xff,
-0x4a, 0xff, 0x34, 0xff, 0x2c, 0xff, 0x3a, 0xff, 0x6e, 0xff, 0xb4, 0xff, 0xf6, 0xff, 0x24, 0x00,
-0x66, 0x00, 0x8e, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x1e, 0x00, 0xe2, 0xff,
-0xa8, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x42, 0xff, 0x40, 0xff, 0x66, 0xff, 0x90, 0xff, 0xc8, 0xff,
-0x08, 0x00, 0x40, 0x00, 0x68, 0x00, 0x8c, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x78, 0x00, 0x4c, 0x00,
-0x10, 0x00, 0xde, 0xff, 0xae, 0xff, 0x88, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x62, 0xff, 0x78, 0xff,
-0xa8, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x32, 0x00, 0x58, 0x00, 0x6e, 0x00, 0x82, 0x00, 0x72, 0x00,
-0x50, 0x00, 0x32, 0x00, 0xf8, 0xff, 0xe0, 0xff, 0xaa, 0xff, 0x90, 0xff, 0x7c, 0xff, 0x74, 0xff,
-0x80, 0xff, 0x92, 0xff, 0xba, 0xff, 0xe0, 0xff, 0x06, 0x00, 0x32, 0x00, 0x48, 0x00, 0x46, 0x00,
-0x60, 0x00, 0x58, 0x00, 0x44, 0x00, 0x24, 0x00, 0x02, 0x00, 0xdc, 0xff, 0xc6, 0xff, 0xb4, 0xff,
-0xa6, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x14, 0x00,
-0x26, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xf6, 0xff, 0xe6, 0xff,
-0xcc, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xda, 0xff,
-0xe4, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe2, 0xff,
-0xe4, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xf4, 0xff,
-0xf6, 0xff, 0xfc, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x14, 0x00,
-0xfc, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xb8, 0xff,
-0xba, 0xff, 0xda, 0xff, 0xe8, 0xff, 0x06, 0x00, 0x22, 0x00, 0x34, 0x00, 0x38, 0x00, 0x32, 0x00,
-0x36, 0x00, 0x38, 0x00, 0x18, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x92, 0xff,
-0x98, 0xff, 0x9e, 0xff, 0xb0, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x1c, 0x00, 0x3e, 0x00, 0x58, 0x00,
-0x64, 0x00, 0x6e, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x24, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x98, 0xff,
-0x84, 0xff, 0x6c, 0xff, 0x76, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0x26, 0x00,
-0x58, 0x00, 0x7c, 0x00, 0x86, 0x00, 0x84, 0x00, 0x78, 0x00, 0x44, 0x00, 0x20, 0x00, 0xf0, 0xff,
-0xac, 0xff, 0x76, 0xff, 0x44, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x94, 0xff, 0xc8, 0xff,
-0xf8, 0xff, 0x38, 0x00, 0x70, 0x00, 0x94, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x88, 0x00, 0x46, 0x00,
-0x10, 0x00, 0xe2, 0xff, 0x9a, 0xff, 0x5c, 0xff, 0x36, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x60, 0xff,
-0xa0, 0xff, 0xe0, 0xff, 0x12, 0x00, 0x52, 0x00, 0x8c, 0x00, 0xae, 0x00, 0xb8, 0x00, 0xae, 0x00,
-0x7e, 0x00, 0x32, 0x00, 0x00, 0x00, 0xb6, 0xff, 0x74, 0xff, 0x48, 0xff, 0x24, 0xff, 0x16, 0xff,
-0x30, 0xff, 0x60, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x90, 0x00, 0xac, 0x00,
-0xb0, 0x00, 0xa0, 0x00, 0x64, 0x00, 0x1e, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x36, 0xff,
-0x1c, 0xff, 0x22, 0xff, 0x46, 0xff, 0x72, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x32, 0x00, 0x70, 0x00,
-0x9a, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x06, 0x00, 0xe0, 0xff, 0xa6, 0xff,
-0x6e, 0xff, 0x46, 0xff, 0x30, 0xff, 0x48, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x0e, 0x00,
-0x40, 0x00, 0x6a, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x38, 0x00, 0xf8, 0xff,
-0xce, 0xff, 0x8e, 0xff, 0x76, 0xff, 0x58, 0xff, 0x4e, 0xff, 0x64, 0xff, 0x7e, 0xff, 0xac, 0xff,
-0xe4, 0xff, 0x18, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x72, 0x00, 0x54, 0x00,
-0x20, 0x00, 0xfe, 0xff, 0xd0, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x84, 0xff,
-0x9a, 0xff, 0xca, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x3c, 0x00, 0x54, 0x00, 0x62, 0x00, 0x6a, 0x00,
-0x64, 0x00, 0x46, 0x00, 0x10, 0x00, 0xfc, 0xff, 0xe0, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0x94, 0xff,
-0x90, 0xff, 0x92, 0xff, 0xa4, 0xff, 0xc6, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x24, 0x00, 0x30, 0x00,
-0x40, 0x00, 0x36, 0x00, 0x32, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xc6, 0xff,
-0xbc, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xfc, 0xff,
-0x0a, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xfa, 0xff, 0xf6, 0xff,
-0xe8, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe4, 0xff,
-0xe6, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe8, 0xff,
-0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x16, 0x00, 0x06, 0x00, 0x04, 0x00, 0xf6, 0xff, 0xf6, 0xff,
-0xec, 0xff, 0xda, 0xff, 0xce, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc0, 0xff,
-0xe4, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00,
-0x1e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xb6, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa8, 0xff,
-0xaa, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xf0, 0xff, 0x0e, 0x00, 0x36, 0x00, 0x46, 0x00, 0x4c, 0x00,
-0x4a, 0x00, 0x42, 0x00, 0x28, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x82, 0xff,
-0x7e, 0xff, 0x78, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xd8, 0xff, 0x02, 0x00, 0x36, 0x00, 0x56, 0x00,
-0x72, 0x00, 0x7c, 0x00, 0x70, 0x00, 0x52, 0x00, 0x30, 0x00, 0x0a, 0x00, 0xdc, 0xff, 0xa2, 0xff,
-0x78, 0xff, 0x68, 0xff, 0x52, 0xff, 0x60, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1e, 0x00,
-0x54, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x38, 0x00, 0x00, 0x00,
-0xc4, 0xff, 0x8a, 0xff, 0x52, 0xff, 0x3a, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xb6, 0xff,
-0xee, 0xff, 0x16, 0x00, 0x5e, 0x00, 0x96, 0x00, 0xa4, 0x00, 0xac, 0x00, 0x94, 0x00, 0x6c, 0x00,
-0x22, 0x00, 0xf4, 0xff, 0xbe, 0xff, 0x76, 0xff, 0x4a, 0xff, 0x36, 0xff, 0x2a, 0xff, 0x4a, 0xff,
-0x82, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x2c, 0x00, 0x7a, 0x00, 0xaa, 0x00, 0xb6, 0x00, 0xb2, 0x00,
-0x9e, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x72, 0xff, 0x40, 0xff, 0x22, 0xff,
-0x30, 0xff, 0x56, 0xff, 0x86, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x48, 0x00, 0x80, 0x00, 0xa2, 0x00,
-0xba, 0x00, 0xb8, 0x00, 0x82, 0x00, 0x40, 0x00, 0x04, 0x00, 0xc4, 0xff, 0x8c, 0xff, 0x4e, 0xff,
-0x2e, 0xff, 0x1e, 0xff, 0x32, 0xff, 0x5e, 0xff, 0x98, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x4e, 0x00,
-0x78, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x9c, 0x00, 0x70, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xb4, 0xff,
-0x80, 0xff, 0x5c, 0xff, 0x3e, 0xff, 0x2c, 0xff, 0x5a, 0xff, 0x84, 0xff, 0xb0, 0xff, 0xee, 0xff,
-0x2a, 0x00, 0x5e, 0x00, 0x78, 0x00, 0x92, 0x00, 0x8e, 0x00, 0x82, 0x00, 0x48, 0x00, 0x14, 0x00,
-0xe0, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x4c, 0xff, 0x4e, 0xff, 0x6e, 0xff, 0x86, 0xff,
-0xca, 0xff, 0xfc, 0xff, 0x1e, 0x00, 0x52, 0x00, 0x66, 0x00, 0x76, 0x00, 0x62, 0x00, 0x56, 0x00,
-0x38, 0x00, 0x06, 0x00, 0xe2, 0xff, 0xbc, 0xff, 0x98, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x7c, 0xff,
-0x90, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x00, 0x00, 0x20, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x60, 0x00,
-0x52, 0x00, 0x4c, 0x00, 0x28, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xae, 0xff,
-0xae, 0xff, 0xaa, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x22, 0x00,
-0x1e, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xf0, 0xff, 0xe0, 0xff,
-0xe2, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xfa, 0xff,
-0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff,
-0x0a, 0x00, 0x04, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xee, 0xff,
-0xea, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xee, 0xff,
-0xf6, 0xff, 0xf4, 0xff, 0x0c, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x14, 0x00,
-0x02, 0x00, 0xde, 0xff, 0xc4, 0xff, 0xb6, 0xff, 0xaa, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xb6, 0xff,
-0xbc, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x44, 0x00,
-0x3c, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xdc, 0xff, 0xb6, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x82, 0xff,
-0x8c, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xea, 0xff, 0x06, 0x00, 0x34, 0x00, 0x52, 0x00, 0x68, 0x00,
-0x76, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x26, 0x00, 0xf8, 0xff, 0xce, 0xff, 0x98, 0xff, 0x80, 0xff,
-0x62, 0xff, 0x5a, 0xff, 0x66, 0xff, 0x8e, 0xff, 0xba, 0xff, 0xe6, 0xff, 0x10, 0x00, 0x52, 0x00,
-0x70, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x70, 0x00, 0x54, 0x00, 0x28, 0x00, 0xf0, 0xff, 0xb6, 0xff,
-0x86, 0xff, 0x64, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x92, 0xff, 0xbc, 0xff, 0xfc, 0xff,
-0x3e, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x50, 0x00, 0x1c, 0x00,
-0xec, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x46, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x5e, 0xff, 0xa2, 0xff,
-0xd2, 0xff, 0x12, 0x00, 0x52, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x78, 0x00,
-0x48, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x9a, 0xff, 0x56, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x48, 0xff,
-0x5e, 0xff, 0xae, 0xff, 0xee, 0xff, 0x16, 0x00, 0x5e, 0x00, 0x94, 0x00, 0xb8, 0x00, 0xb0, 0x00,
-0xa4, 0x00, 0x78, 0x00, 0x38, 0x00, 0x04, 0x00, 0xc0, 0xff, 0x86, 0xff, 0x54, 0xff, 0x32, 0xff,
-0x2a, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xba, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x6c, 0x00, 0x96, 0x00,
-0xb0, 0x00, 0xac, 0x00, 0x98, 0x00, 0x68, 0x00, 0x1e, 0x00, 0xe6, 0xff, 0xba, 0xff, 0x76, 0xff,
-0x44, 0xff, 0x2a, 0xff, 0x24, 0xff, 0x4e, 0xff, 0x84, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x32, 0x00,
-0x62, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x96, 0x00, 0x7a, 0x00, 0x44, 0x00, 0x12, 0x00, 0xde, 0xff,
-0xa2, 0xff, 0x70, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x42, 0xff, 0x70, 0xff, 0xa4, 0xff, 0xe0, 0xff,
-0x16, 0x00, 0x3a, 0x00, 0x64, 0x00, 0x74, 0x00, 0x8e, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x32, 0x00,
-0x02, 0x00, 0xe2, 0xff, 0xa4, 0xff, 0x84, 0xff, 0x70, 0xff, 0x62, 0xff, 0x78, 0xff, 0x8a, 0xff,
-0xae, 0xff, 0xe4, 0xff, 0x10, 0x00, 0x34, 0x00, 0x4a, 0x00, 0x58, 0x00, 0x60, 0x00, 0x4e, 0x00,
-0x40, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0xde, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x9a, 0xff, 0x8e, 0xff,
-0x9a, 0xff, 0xa4, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x08, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x34, 0x00,
-0x34, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd2, 0xff, 0xd4, 0xff,
-0xd0, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x04, 0x00,
-0x0c, 0x00, 0x12, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xfa, 0xff,
-0xf0, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe2, 0xff,
-0xdc, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x06, 0x00,
-0x0e, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xf0, 0xff,
-0xe2, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xf0, 0xff,
-0xfc, 0xff, 0x10, 0x00, 0x16, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x16, 0x00,
-0x00, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xb0, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xa0, 0xff,
-0xb8, 0xff, 0xd4, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x48, 0x00,
-0x3a, 0x00, 0x28, 0x00, 0x08, 0x00, 0xe0, 0xff, 0xc6, 0xff, 0x92, 0xff, 0x78, 0xff, 0x6e, 0xff,
-0x76, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x54, 0x00, 0x64, 0x00,
-0x7c, 0x00, 0x78, 0x00, 0x5c, 0x00, 0x3e, 0x00, 0x10, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x7e, 0xff,
-0x56, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x42, 0x00,
-0x6e, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x86, 0x00, 0x6a, 0x00, 0x36, 0x00, 0x02, 0x00, 0xcc, 0xff,
-0x8c, 0xff, 0x5a, 0xff, 0x40, 0xff, 0x40, 0xff, 0x50, 0xff, 0x78, 0xff, 0xb0, 0xff, 0xee, 0xff,
-0x24, 0x00, 0x56, 0x00, 0x84, 0x00, 0x9e, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x72, 0x00, 0x2e, 0x00,
-0xfa, 0xff, 0xc4, 0xff, 0x80, 0xff, 0x5a, 0xff, 0x38, 0xff, 0x40, 0xff, 0x58, 0xff, 0x7e, 0xff,
-0xce, 0xff, 0xf0, 0xff, 0x26, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x9a, 0x00,
-0x62, 0x00, 0x20, 0x00, 0xf8, 0xff, 0xb6, 0xff, 0x76, 0xff, 0x4a, 0xff, 0x2a, 0xff, 0x3a, 0xff,
-0x5c, 0xff, 0x8c, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x6e, 0x00, 0x96, 0x00, 0xba, 0x00,
-0x9c, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x10, 0x00, 0xe0, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff,
-0x2c, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x96, 0xff, 0xda, 0xff, 0x10, 0x00, 0x4a, 0x00, 0x7e, 0x00,
-0xae, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0x76, 0x00, 0x44, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x96, 0xff,
-0x56, 0xff, 0x44, 0xff, 0x34, 0xff, 0x50, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00,
-0x56, 0x00, 0x88, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x80, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf0, 0xff,
-0xac, 0xff, 0x82, 0xff, 0x68, 0xff, 0x50, 0xff, 0x58, 0xff, 0x6c, 0xff, 0x90, 0xff, 0xba, 0xff,
-0xf4, 0xff, 0x22, 0x00, 0x46, 0x00, 0x62, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x40, 0x00,
-0x02, 0x00, 0xe8, 0xff, 0xc4, 0xff, 0x96, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x86, 0xff, 0x92, 0xff,
-0xb6, 0xff, 0xdc, 0xff, 0x04, 0x00, 0x20, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
-0x36, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xba, 0xff, 0xae, 0xff, 0xa6, 0xff,
-0xa2, 0xff, 0xb6, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x16, 0x00, 0x0e, 0x00,
-0x1a, 0x00, 0x20, 0x00, 0x06, 0x00, 0x0a, 0x00, 0xf2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xcc, 0xff,
-0xd6, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0x04, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0x04, 0x00,
-0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xe4, 0xff,
-0xe4, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xc6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xec, 0xff,
-0x00, 0x00, 0x0a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x0c, 0x00, 0xfe, 0xff,
-0xec, 0xff, 0xd4, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xc6, 0xff,
-0xe0, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x2e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x3e, 0x00,
-0x16, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xbe, 0xff, 0xa2, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x8a, 0xff,
-0xa4, 0xff, 0xc0, 0xff, 0xe6, 0xff, 0x0c, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x6a, 0x00, 0x72, 0x00,
-0x62, 0x00, 0x48, 0x00, 0x20, 0x00, 0xea, 0xff, 0xc4, 0xff, 0x90, 0xff, 0x68, 0xff, 0x56, 0xff,
-0x5c, 0xff, 0x62, 0xff, 0x80, 0xff, 0xae, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7c, 0x00,
-0x8c, 0x00, 0x96, 0x00, 0x74, 0x00, 0x56, 0x00, 0x26, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x82, 0xff,
-0x54, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x8c, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x30, 0x00,
-0x70, 0x00, 0x96, 0x00, 0xae, 0x00, 0xae, 0x00, 0x94, 0x00, 0x60, 0x00, 0x26, 0x00, 0xe2, 0xff,
-0xa8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x30, 0xff, 0x30, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xc2, 0xff,
-0xfc, 0xff, 0x3e, 0x00, 0x76, 0x00, 0x9a, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x8e, 0x00, 0x4e, 0x00,
-0x0c, 0x00, 0xda, 0xff, 0x9c, 0xff, 0x5c, 0xff, 0x3a, 0xff, 0x20, 0xff, 0x32, 0xff, 0x5e, 0xff,
-0x94, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x52, 0x00, 0x90, 0x00, 0xbe, 0x00, 0xc8, 0x00, 0xb0, 0x00,
-0x84, 0x00, 0x4c, 0x00, 0x0a, 0x00, 0xd4, 0xff, 0x9c, 0xff, 0x58, 0xff, 0x36, 0xff, 0x26, 0xff,
-0x42, 0xff, 0x68, 0xff, 0xb4, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x6a, 0x00, 0x96, 0x00, 0xbc, 0x00,
-0xb2, 0x00, 0x96, 0x00, 0x6c, 0x00, 0x30, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x50, 0xff,
-0x34, 0xff, 0x36, 0xff, 0x4c, 0xff, 0x82, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x2c, 0x00, 0x66, 0x00,
-0x8c, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x1a, 0x00, 0xec, 0xff, 0xb8, 0xff,
-0x82, 0xff, 0x64, 0xff, 0x4e, 0xff, 0x5a, 0xff, 0x7c, 0xff, 0x98, 0xff, 0xd4, 0xff, 0x08, 0x00,
-0x38, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x76, 0x00, 0x64, 0x00, 0x36, 0x00, 0x18, 0x00,
-0xe6, 0xff, 0xb2, 0xff, 0x92, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x82, 0xff, 0xb8, 0xff,
-0xe8, 0xff, 0xfc, 0xff, 0x26, 0x00, 0x40, 0x00, 0x4e, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x44, 0x00,
-0x1c, 0x00, 0xfa, 0xff, 0xde, 0xff, 0xaa, 0xff, 0x94, 0xff, 0x94, 0xff, 0x84, 0xff, 0x92, 0xff,
-0x9e, 0xff, 0xd4, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x3c, 0x00, 0x30, 0x00, 0x1a, 0x00, 0xf8, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xc2, 0xff,
-0xae, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x08, 0x00,
-0x12, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x14, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xda, 0xff,
-0xe2, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe4, 0xff,
-0xea, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x06, 0x00, 0x08, 0x00,
-0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xee, 0xff, 0xe4, 0xff,
-0xde, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xfa, 0xff,
-0x0e, 0x00, 0x1c, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x24, 0x00, 0x28, 0x00, 0x22, 0x00, 0xfc, 0xff,
-0xf0, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xaa, 0xff, 0x98, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb8, 0xff,
-0xd4, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x36, 0x00, 0x52, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x4c, 0x00,
-0x3a, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xc4, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x80, 0xff, 0x7a, 0xff,
-0x8a, 0xff, 0xa6, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x1e, 0x00, 0x52, 0x00, 0x62, 0x00, 0x76, 0x00,
-0x7a, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x64, 0xff,
-0x56, 0xff, 0x54, 0xff, 0x74, 0xff, 0xa0, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x62, 0x00,
-0x7e, 0x00, 0x88, 0x00, 0x82, 0x00, 0x64, 0x00, 0x32, 0x00, 0x00, 0x00, 0xce, 0xff, 0x94, 0xff,
-0x5e, 0xff, 0x4a, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xaa, 0xff, 0xda, 0xff, 0x0a, 0x00,
-0x48, 0x00, 0x84, 0x00, 0x98, 0x00, 0xa8, 0x00, 0xa0, 0x00, 0x68, 0x00, 0x2e, 0x00, 0xf0, 0xff,
-0xb8, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x34, 0xff, 0x28, 0xff, 0x3e, 0xff, 0x6e, 0xff, 0xa0, 0xff,
-0xea, 0xff, 0x1e, 0x00, 0x66, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xb4, 0x00, 0x96, 0x00, 0x6a, 0x00,
-0x1e, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x78, 0xff, 0x40, 0xff, 0x16, 0xff, 0x20, 0xff, 0x42, 0xff,
-0x7c, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x78, 0x00, 0xa4, 0x00, 0xba, 0x00, 0xb8, 0x00,
-0x92, 0x00, 0x66, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x64, 0xff, 0x4c, 0xff, 0x30, 0xff,
-0x3a, 0xff, 0x62, 0xff, 0x90, 0xff, 0xe0, 0xff, 0x14, 0x00, 0x46, 0x00, 0x84, 0x00, 0xa4, 0x00,
-0xba, 0x00, 0xac, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x06, 0x00, 0xc8, 0xff, 0xa4, 0xff, 0x66, 0xff,
-0x56, 0xff, 0x44, 0xff, 0x48, 0xff, 0x72, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x46, 0x00,
-0x78, 0x00, 0x90, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x32, 0x00, 0xf8, 0xff, 0xce, 0xff,
-0x9a, 0xff, 0x78, 0xff, 0x62, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x88, 0xff, 0xc0, 0xff, 0xf2, 0xff,
-0x16, 0x00, 0x56, 0x00, 0x5e, 0x00, 0x70, 0x00, 0x76, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x1a, 0x00,
-0xf4, 0xff, 0xce, 0xff, 0x98, 0xff, 0x94, 0xff, 0x86, 0xff, 0x88, 0xff, 0x8c, 0xff, 0xa6, 0xff,
-0xcc, 0xff, 0xec, 0xff, 0x12, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x32, 0x00,
-0x22, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xa6, 0xff,
-0xa8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x10, 0x00, 0x14, 0x00, 0x12, 0x00,
-0x14, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xc8, 0xff,
-0xd4, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xee, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00,
-0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xd2, 0xff,
-0xd8, 0xff, 0xca, 0xff, 0xda, 0xff, 0xda, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xee, 0xff, 0x08, 0x00,
-0x0a, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x14, 0x00, 0x12, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf6, 0xff,
-0xe2, 0xff, 0xca, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xe6, 0xff,
-0x00, 0x00, 0x12, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00, 0x30, 0x00,
-0x14, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x96, 0xff, 0xa6, 0xff,
-0xb4, 0xff, 0xda, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x54, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00,
-0x5a, 0x00, 0x34, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xac, 0xff, 0x82, 0xff, 0x78, 0xff, 0x5c, 0xff,
-0x74, 0xff, 0x8c, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x6a, 0x00, 0x80, 0x00,
-0x8e, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x30, 0x00, 0x02, 0x00, 0xce, 0xff, 0x92, 0xff, 0x68, 0xff,
-0x40, 0xff, 0x42, 0xff, 0x54, 0xff, 0x7e, 0xff, 0xb2, 0xff, 0xee, 0xff, 0x2a, 0x00, 0x5c, 0x00,
-0x8a, 0x00, 0xa2, 0x00, 0xa6, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xea, 0xff, 0xb6, 0xff,
-0x70, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x1a, 0xff, 0x4a, 0xff, 0x76, 0xff, 0xbe, 0xff, 0x00, 0x00,
-0x20, 0x00, 0x60, 0x00, 0x8c, 0x00, 0xa6, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x08, 0x00,
-0xd8, 0xff, 0x9a, 0xff, 0x58, 0xff, 0x3c, 0xff, 0x1e, 0xff, 0x26, 0xff, 0x5e, 0xff, 0x8c, 0xff,
-0xd6, 0xff, 0x04, 0x00, 0x34, 0x00, 0x7c, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xa8, 0x00, 0x78, 0x00,
-0x38, 0x00, 0x04, 0x00, 0xca, 0xff, 0x92, 0xff, 0x4e, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x48, 0xff,
-0x6a, 0xff, 0xa0, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x44, 0x00, 0x7c, 0x00, 0x9a, 0x00, 0xa0, 0x00,
-0x9c, 0x00, 0x5e, 0x00, 0x20, 0x00, 0xf4, 0xff, 0xaa, 0xff, 0x88, 0xff, 0x60, 0xff, 0x3e, 0xff,
-0x44, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xba, 0xff, 0xf8, 0xff, 0x2a, 0x00, 0x56, 0x00, 0x80, 0x00,
-0x9a, 0x00, 0x8e, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x2a, 0x00, 0xf6, 0xff, 0xba, 0xff, 0x86, 0xff,
-0x68, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xda, 0xff, 0x02, 0x00, 0x36, 0x00,
-0x66, 0x00, 0x72, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x62, 0x00, 0x46, 0x00, 0x0c, 0x00, 0xe4, 0xff,
-0xae, 0xff, 0x8e, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x84, 0xff, 0x94, 0xff, 0xb0, 0xff, 0xe0, 0xff,
-0x0c, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x28, 0x00,
-0xf6, 0xff, 0xe6, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xb6, 0xff,
-0xca, 0xff, 0xee, 0xff, 0x06, 0x00, 0x20, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x40, 0x00,
-0x24, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xd8, 0xff, 0xca, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xb4, 0xff,
-0xbe, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x14, 0x00, 0x0e, 0x00,
-0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xe4, 0xff,
-0xdc, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xea, 0xff, 0x02, 0x00, 0x0e, 0x00,
-0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xde, 0xff,
-0xbc, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xee, 0xff,
-0x10, 0x00, 0x22, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0xf4, 0xff,
-0xdc, 0xff, 0xbe, 0xff, 0xa4, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xba, 0xff,
-0xe6, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x44, 0x00,
-0x2a, 0x00, 0x00, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x84, 0xff, 0x84, 0xff, 0x7a, 0xff, 0x7c, 0xff,
-0x9e, 0xff, 0xc4, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x48, 0x00, 0x6e, 0x00, 0x8a, 0x00, 0x7c, 0x00,
-0x64, 0x00, 0x50, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0x6e, 0xff, 0x56, 0xff,
-0x58, 0xff, 0x68, 0xff, 0x92, 0xff, 0xb6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x5a, 0x00, 0x86, 0x00,
-0x98, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x40, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xb0, 0xff, 0x78, 0xff,
-0x5a, 0xff, 0x48, 0xff, 0x42, 0xff, 0x5c, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x0e, 0x00, 0x4a, 0x00,
-0x78, 0x00, 0xa2, 0x00, 0xac, 0x00, 0xa0, 0x00, 0x7a, 0x00, 0x30, 0x00, 0x02, 0x00, 0xdc, 0xff,
-0x8e, 0xff, 0x58, 0xff, 0x40, 0xff, 0x26, 0xff, 0x4a, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xee, 0xff,
-0x1c, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xa4, 0x00, 0x8c, 0x00, 0x5e, 0x00, 0x2c, 0x00,
-0xee, 0xff, 0xba, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x4c, 0xff, 0x76, 0xff,
-0xc4, 0xff, 0xf6, 0xff, 0x26, 0x00, 0x68, 0x00, 0x96, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0x8a, 0x00,
-0x56, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x74, 0xff, 0x44, 0xff, 0x36, 0xff, 0x3e, 0xff,
-0x5c, 0xff, 0x84, 0xff, 0xc6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x6a, 0x00, 0x88, 0x00, 0xa4, 0x00,
-0x96, 0x00, 0x6c, 0x00, 0x44, 0x00, 0x10, 0x00, 0xd2, 0xff, 0x9e, 0xff, 0x70, 0xff, 0x4e, 0xff,
-0x46, 0xff, 0x48, 0xff, 0x66, 0xff, 0x98, 0xff, 0xd4, 0xff, 0x0a, 0x00, 0x48, 0x00, 0x64, 0x00,
-0x7c, 0x00, 0x8a, 0x00, 0x74, 0x00, 0x5e, 0x00, 0x2a, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0xa2, 0xff,
-0x82, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x8e, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x12, 0x00,
-0x3a, 0x00, 0x52, 0x00, 0x62, 0x00, 0x66, 0x00, 0x52, 0x00, 0x3c, 0x00, 0x1c, 0x00, 0xfa, 0xff,
-0xd6, 0xff, 0xac, 0xff, 0x92, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xc8, 0xff,
-0xee, 0xff, 0x10, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x2e, 0x00,
-0x12, 0x00, 0xf6, 0xff, 0xce, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xa4, 0xff, 0xb0, 0xff,
-0xc2, 0xff, 0xe2, 0xff, 0x00, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x2e, 0x00,
-0x24, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xea, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd8, 0xff,
-0xce, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf8, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xea, 0xff,
-0xe2, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xd8, 0xff,
-0xd6, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x0a, 0x00,
-0x12, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xde, 0xff,
-0xc4, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xf6, 0xff,
-0x0a, 0x00, 0x20, 0x00, 0x30, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00,
-0xf2, 0xff, 0xc2, 0xff, 0xaa, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xa4, 0xff,
-0xd4, 0xff, 0xf0, 0xff, 0x10, 0x00, 0x44, 0x00, 0x58, 0x00, 0x68, 0x00, 0x62, 0x00, 0x52, 0x00,
-0x3e, 0x00, 0x0a, 0x00, 0xea, 0xff, 0xb6, 0xff, 0x80, 0xff, 0x78, 0xff, 0x6e, 0xff, 0x72, 0xff,
-0x90, 0xff, 0xac, 0xff, 0xde, 0xff, 0x10, 0x00, 0x36, 0x00, 0x6e, 0x00, 0x8c, 0x00, 0x96, 0x00,
-0x84, 0x00, 0x6e, 0x00, 0x4a, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x70, 0xff, 0x58, 0xff,
-0x4e, 0xff, 0x60, 0xff, 0x82, 0xff, 0xae, 0xff, 0xe2, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x82, 0x00,
-0x98, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xb6, 0xff, 0x80, 0xff,
-0x54, 0xff, 0x30, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x78, 0xff, 0xc0, 0xff, 0xf2, 0xff, 0x1c, 0x00,
-0x64, 0x00, 0x94, 0x00, 0xac, 0x00, 0xb2, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x16, 0x00, 0xdc, 0xff,
-0xac, 0xff, 0x5e, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xcc, 0xff,
-0x08, 0x00, 0x38, 0x00, 0x7e, 0x00, 0xa2, 0x00, 0xc0, 0x00, 0xba, 0x00, 0x90, 0x00, 0x48, 0x00,
-0x04, 0x00, 0xda, 0xff, 0x9c, 0xff, 0x5a, 0xff, 0x3e, 0xff, 0x28, 0xff, 0x36, 0xff, 0x5e, 0xff,
-0x9c, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x48, 0x00, 0x80, 0x00, 0xae, 0x00, 0xb2, 0x00, 0x98, 0x00,
-0x74, 0x00, 0x34, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x7e, 0xff, 0x58, 0xff, 0x38, 0xff, 0x30, 0xff,
-0x3a, 0xff, 0x76, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x20, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xa2, 0x00,
-0x9e, 0x00, 0x86, 0x00, 0x4e, 0x00, 0x1a, 0x00, 0xec, 0xff, 0xb6, 0xff, 0x8a, 0xff, 0x66, 0xff,
-0x54, 0xff, 0x5c, 0xff, 0x76, 0xff, 0x90, 0xff, 0xc2, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00,
-0x76, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xd8, 0xff, 0x98, 0xff,
-0x72, 0xff, 0x70, 0xff, 0x86, 0xff, 0xaa, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x2e, 0x00, 0x44, 0x00,
-0x58, 0x00, 0x60, 0x00, 0x52, 0x00, 0x42, 0x00, 0x20, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xc6, 0xff,
-0xb0, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xa2, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xee, 0xff, 0x0e, 0x00,
-0x1c, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x30, 0x00, 0x22, 0x00, 0x10, 0x00, 0xfc, 0xff,
-0xf6, 0xff, 0xde, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xd6, 0xff,
-0xfa, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x08, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x04, 0x00,
-0x0a, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe4, 0xff,
-0xe6, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xe0, 0xff,
-0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x08, 0x00,
-0x08, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xb2, 0xff, 0xac, 0xff,
-0xb8, 0xff, 0xbc, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x22, 0x00, 0x28, 0x00,
-0x26, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xd8, 0xff, 0xb4, 0xff, 0x98, 0xff,
-0x8a, 0xff, 0x82, 0xff, 0x98, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x32, 0x00,
-0x56, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x34, 0x00, 0x1e, 0x00, 0xfa, 0xff, 0xd2, 0xff,
-0x9e, 0xff, 0x84, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x7c, 0xff, 0x92, 0xff, 0xca, 0xff, 0x08, 0x00,
-0x26, 0x00, 0x58, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x82, 0x00, 0x62, 0x00, 0x4e, 0x00, 0x20, 0x00,
-0xec, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x60, 0xff, 0x46, 0xff, 0x3c, 0xff, 0x5c, 0xff, 0x8e, 0xff,
-0xd0, 0xff, 0x02, 0x00, 0x3e, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00, 0x9c, 0x00, 0x88, 0x00,
-0x56, 0x00, 0x20, 0x00, 0xec, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x3c, 0xff,
-0x52, 0xff, 0xa2, 0xff, 0xd8, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x82, 0x00, 0xac, 0x00, 0xbc, 0x00,
-0xa4, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0x90, 0xff, 0x52, 0xff, 0x3e, 0xff,
-0x20, 0xff, 0x3c, 0xff, 0x68, 0xff, 0xa0, 0xff, 0xe6, 0xff, 0x06, 0x00, 0x4e, 0x00, 0x8a, 0x00,
-0xa2, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x7e, 0x00, 0x3a, 0x00, 0xee, 0xff, 0xc8, 0xff, 0x76, 0xff,
-0x50, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x48, 0xff, 0x68, 0xff, 0xb0, 0xff, 0xf6, 0xff, 0x18, 0x00,
-0x5e, 0x00, 0x92, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xa2, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xe6, 0xff,
-0xac, 0xff, 0x78, 0xff, 0x48, 0xff, 0x2a, 0xff, 0x36, 0xff, 0x52, 0xff, 0x8a, 0xff, 0xbc, 0xff,
-0xf6, 0xff, 0x2a, 0x00, 0x5c, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x78, 0x00, 0x4a, 0x00,
-0x1c, 0x00, 0xce, 0xff, 0xa0, 0xff, 0x6e, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x48, 0xff, 0x78, 0xff,
-0x9c, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x38, 0x00, 0x58, 0x00, 0x7e, 0x00, 0x96, 0x00, 0x84, 0x00,
-0x60, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xcc, 0xff, 0x9e, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x58, 0xff,
-0x72, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xec, 0xff, 0x16, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x6a, 0x00,
-0x6c, 0x00, 0x5a, 0x00, 0x42, 0x00, 0x10, 0x00, 0xee, 0xff, 0xce, 0xff, 0x98, 0xff, 0x90, 0xff,
-0x84, 0xff, 0x7a, 0xff, 0x94, 0xff, 0xac, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x0a, 0x00, 0x2c, 0x00,
-0x3c, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x1c, 0x00, 0xfc, 0xff, 0xe2, 0xff, 0xce, 0xff,
-0xbe, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xca, 0xff, 0xe2, 0xff, 0xfe, 0xff,
-0x0a, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0xfa, 0xff,
-0xde, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd8, 0xff,
-0xe6, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xfc, 0xff,
-0x00, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
-0x00, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xd4, 0xff,
-0xd2, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00,
-0x30, 0x00, 0x28, 0x00, 0x0e, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xa6, 0xff,
-0xa8, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xd6, 0xff, 0xec, 0xff, 0x08, 0x00, 0x22, 0x00, 0x44, 0x00,
-0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xca, 0xff, 0xa6, 0xff,
-0x9c, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x1a, 0x00,
-0x4c, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x0c, 0x00, 0xf8, 0xff,
-0xba, 0xff, 0x92, 0xff, 0x7a, 0xff, 0x6a, 0xff, 0x74, 0xff, 0x8c, 0xff, 0xa8, 0xff, 0xd0, 0xff,
-0x00, 0x00, 0x30, 0x00, 0x56, 0x00, 0x72, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x32, 0x00,
-0xfe, 0xff, 0xd4, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x50, 0xff, 0x78, 0xff,
-0xa6, 0xff, 0xd4, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x76, 0x00, 0x96, 0x00, 0xa0, 0x00, 0x80, 0x00,
-0x60, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0x8c, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x2e, 0xff,
-0x4c, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xfa, 0xff, 0x30, 0x00, 0x74, 0x00, 0x9e, 0x00, 0xba, 0x00,
-0xbc, 0x00, 0xa0, 0x00, 0x6a, 0x00, 0x22, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x66, 0xff, 0x46, 0xff,
-0x28, 0xff, 0x1a, 0xff, 0x4c, 0xff, 0x84, 0xff, 0xd0, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x8c, 0x00,
-0xb0, 0x00, 0xcc, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x62, 0x00, 0x10, 0x00, 0xd8, 0xff, 0x9c, 0xff,
-0x5a, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x20, 0xff, 0x48, 0xff, 0x90, 0xff, 0xdc, 0xff, 0x20, 0x00,
-0x5c, 0x00, 0x90, 0x00, 0xb4, 0x00, 0xc4, 0x00, 0xb6, 0x00, 0x82, 0x00, 0x48, 0x00, 0x10, 0x00,
-0xc4, 0xff, 0x94, 0xff, 0x56, 0xff, 0x28, 0xff, 0x26, 0xff, 0x40, 0xff, 0x6e, 0xff, 0xaa, 0xff,
-0xf8, 0xff, 0x2e, 0x00, 0x60, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xac, 0x00, 0x90, 0x00, 0x64, 0x00,
-0x28, 0x00, 0xf8, 0xff, 0xc0, 0xff, 0x82, 0xff, 0x6c, 0xff, 0x46, 0xff, 0x48, 0xff, 0x64, 0xff,
-0x80, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x52, 0x00, 0x6c, 0x00, 0x7a, 0x00, 0x7a, 0x00,
-0x5a, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xea, 0xff, 0xc2, 0xff, 0x90, 0xff, 0x82, 0xff, 0x76, 0xff,
-0x72, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0x14, 0x00, 0x3e, 0x00, 0x4a, 0x00,
-0x52, 0x00, 0x50, 0x00, 0x3c, 0x00, 0x22, 0x00, 0x04, 0x00, 0xea, 0xff, 0xd4, 0xff, 0xba, 0xff,
-0xaa, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0xa8, 0xff, 0xc6, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0x06, 0x00,
-0x1c, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xee, 0xff,
-0xda, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xe6, 0xff,
-0xf8, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xee, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x06, 0x00,
-0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xfa, 0xff, 0xf0, 0xff,
-0xe8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe8, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x04, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x22, 0x00,
-0x10, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xba, 0xff,
-0xbc, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xfc, 0xff, 0x12, 0x00, 0x28, 0x00, 0x34, 0x00, 0x3a, 0x00,
-0x36, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x06, 0x00, 0xe8, 0xff, 0xce, 0xff, 0xa4, 0xff, 0xa2, 0xff,
-0x9a, 0xff, 0xa2, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x30, 0x00, 0x50, 0x00,
-0x5a, 0x00, 0x5c, 0x00, 0x52, 0x00, 0x44, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xd6, 0xff, 0xa0, 0xff,
-0x86, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x12, 0x00,
-0x3c, 0x00, 0x62, 0x00, 0x72, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xe8, 0xff,
-0xb6, 0xff, 0x7c, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x86, 0xff, 0xb6, 0xff,
-0xf2, 0xff, 0x24, 0x00, 0x58, 0x00, 0x82, 0x00, 0x9c, 0x00, 0x96, 0x00, 0x88, 0x00, 0x54, 0x00,
-0x1c, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x76, 0xff, 0x42, 0xff, 0x38, 0xff, 0x40, 0xff, 0x4e, 0xff,
-0x94, 0xff, 0xc8, 0xff, 0xfc, 0xff, 0x2a, 0x00, 0x68, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xa6, 0x00,
-0x7c, 0x00, 0x4c, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x8c, 0xff, 0x54, 0xff, 0x38, 0xff, 0x2a, 0xff,
-0x34, 0xff, 0x56, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x4c, 0x00, 0x88, 0x00, 0xa2, 0x00,
-0xb8, 0x00, 0xa4, 0x00, 0x78, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xd4, 0xff, 0x86, 0xff, 0x5e, 0xff,
-0x36, 0xff, 0x2a, 0xff, 0x52, 0xff, 0x70, 0xff, 0xb0, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x5e, 0x00,
-0x98, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0xa0, 0x00, 0x6e, 0x00, 0x22, 0x00, 0x00, 0x00, 0xbe, 0xff,
-0x80, 0xff, 0x5a, 0xff, 0x36, 0xff, 0x36, 0xff, 0x52, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xfe, 0xff,
-0x28, 0x00, 0x58, 0x00, 0x96, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0x86, 0x00, 0x56, 0x00, 0x26, 0x00,
-0xe8, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x60, 0xff, 0x46, 0xff, 0x48, 0xff, 0x7a, 0xff, 0x9c, 0xff,
-0xd0, 0xff, 0x00, 0x00, 0x3e, 0x00, 0x60, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x90, 0x00, 0x72, 0x00,
-0x58, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xbc, 0xff, 0x90, 0xff, 0x78, 0xff, 0x6c, 0xff, 0x70, 0xff,
-0x86, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x68, 0x00,
-0x5c, 0x00, 0x4a, 0x00, 0x24, 0x00, 0x02, 0x00, 0xd8, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x8c, 0xff,
-0x86, 0xff, 0x90, 0xff, 0x9a, 0xff, 0xba, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x32, 0x00,
-0x3e, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xd0, 0xff,
-0xce, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xf0, 0xff, 0x02, 0x00,
-0x08, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x04, 0x00, 0xf4, 0xff,
-0xf4, 0xff, 0xe6, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xe2, 0xff,
-0xda, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0x00, 0x00,
-0xf6, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff,
-0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xdc, 0xff,
-0xe2, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x26, 0x00,
-0x2a, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xb0, 0xff, 0xb4, 0xff,
-0xae, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1e, 0x00, 0x42, 0x00, 0x40, 0x00,
-0x50, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x24, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xb8, 0xff, 0x94, 0xff,
-0x88, 0xff, 0x80, 0xff, 0x88, 0xff, 0x92, 0xff, 0xbc, 0xff, 0xee, 0xff, 0x12, 0x00, 0x48, 0x00,
-0x6a, 0x00, 0x76, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x5a, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xc6, 0xff,
-0x9c, 0xff, 0x7c, 0xff, 0x5c, 0xff, 0x60, 0xff, 0x64, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xf6, 0xff,
-0x30, 0x00, 0x6a, 0x00, 0x84, 0x00, 0x96, 0x00, 0x96, 0x00, 0x76, 0x00, 0x46, 0x00, 0x1a, 0x00,
-0xe2, 0xff, 0xa6, 0xff, 0x6a, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x30, 0xff, 0x5a, 0xff, 0x8e, 0xff,
-0xca, 0xff, 0x0e, 0x00, 0x50, 0x00, 0x84, 0x00, 0xa8, 0x00, 0xae, 0x00, 0xa4, 0x00, 0x80, 0x00,
-0x40, 0x00, 0x0c, 0x00, 0xcc, 0xff, 0x86, 0xff, 0x58, 0xff, 0x2a, 0xff, 0x22, 0xff, 0x42, 0xff,
-0x6a, 0xff, 0xb4, 0xff, 0xee, 0xff, 0x24, 0x00, 0x64, 0x00, 0x92, 0x00, 0xb0, 0x00, 0xb4, 0x00,
-0xa4, 0x00, 0x76, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x2e, 0xff,
-0x26, 0xff, 0x46, 0xff, 0x72, 0xff, 0xb2, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x68, 0x00, 0x94, 0x00,
-0xa8, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x54, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xaa, 0xff, 0x6e, 0xff,
-0x42, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x58, 0xff, 0x86, 0xff, 0xca, 0xff, 0x0a, 0x00, 0x3a, 0x00,
-0x72, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x54, 0x00, 0x16, 0x00, 0xda, 0xff,
-0xa8, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0xdc, 0xff,
-0x14, 0x00, 0x3e, 0x00, 0x70, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x8c, 0x00, 0x66, 0x00, 0x3e, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x78, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x7e, 0xff,
-0xae, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x46, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x80, 0x00, 0x6c, 0x00,
-0x54, 0x00, 0x26, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xa8, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x84, 0xff,
-0x8a, 0xff, 0xaa, 0xff, 0xd0, 0xff, 0xf6, 0xff, 0x20, 0x00, 0x32, 0x00, 0x4c, 0x00, 0x5a, 0x00,
-0x52, 0x00, 0x4e, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0xb4, 0xff, 0xa4, 0xff,
-0x9a, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xca, 0xff, 0xea, 0xff, 0x00, 0x00, 0x1c, 0x00,
-0x26, 0x00, 0x26, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xdc, 0xff,
-0xc2, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xda, 0xff, 0xe8, 0xff,
-0xf6, 0xff, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x14, 0x00, 0x06, 0x00,
-0xfe, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xd8, 0xff,
-0xce, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xfa, 0xff,
-0xfc, 0xff, 0xfc, 0xff, 0x12, 0x00, 0x16, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x00, 0x00,
-0xea, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xc0, 0xff,
-0xc8, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0x12, 0x00, 0x32, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x40, 0x00,
-0x36, 0x00, 0x24, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc8, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x92, 0xff,
-0x98, 0xff, 0xa2, 0xff, 0xb6, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x16, 0x00, 0x42, 0x00, 0x58, 0x00,
-0x66, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x34, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xb2, 0xff, 0x94, 0xff,
-0x78, 0xff, 0x66, 0xff, 0x6e, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xd6, 0xff, 0x04, 0x00, 0x30, 0x00,
-0x6c, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x08, 0x00, 0xd6, 0xff,
-0xa0, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x50, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xac, 0xff, 0xec, 0xff,
-0x28, 0x00, 0x56, 0x00, 0x8c, 0x00, 0x9c, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x5e, 0x00, 0x2a, 0x00,
-0xf4, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x4a, 0xff, 0x80, 0xff,
-0xbe, 0xff, 0xf8, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x98, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x88, 0x00,
-0x54, 0x00, 0x10, 0x00, 0xda, 0xff, 0x94, 0xff, 0x62, 0xff, 0x3e, 0xff, 0x22, 0xff, 0x36, 0xff,
-0x54, 0xff, 0x8e, 0xff, 0xde, 0xff, 0x12, 0x00, 0x48, 0x00, 0x82, 0x00, 0xae, 0x00, 0xb6, 0x00,
-0xaa, 0x00, 0x80, 0x00, 0x4e, 0x00, 0x02, 0x00, 0xce, 0xff, 0x90, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x20, 0xff, 0x38, 0xff, 0x60, 0xff, 0x96, 0xff, 0xe0, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x8a, 0x00,
-0xac, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x32, 0x00, 0xf4, 0xff, 0xc0, 0xff, 0x7e, 0xff,
-0x4e, 0xff, 0x36, 0xff, 0x34, 0xff, 0x3c, 0xff, 0x6a, 0xff, 0xac, 0xff, 0xe2, 0xff, 0x2a, 0x00,
-0x5c, 0x00, 0x8e, 0x00, 0xac, 0x00, 0xa4, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xea, 0xff,
-0xb6, 0xff, 0x90, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x44, 0xff, 0x68, 0xff, 0x92, 0xff, 0xcc, 0xff,
-0x06, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x46, 0x00,
-0x16, 0x00, 0xdc, 0xff, 0xba, 0xff, 0x8c, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x70, 0xff, 0x88, 0xff,
-0xa2, 0xff, 0xde, 0xff, 0x04, 0x00, 0x30, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x60, 0x00, 0x5c, 0x00,
-0x4a, 0x00, 0x28, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xc0, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0x96, 0xff,
-0x9c, 0xff, 0xa8, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x22, 0x00, 0x32, 0x00, 0x3a, 0x00,
-0x36, 0x00, 0x36, 0x00, 0x28, 0x00, 0x12, 0x00, 0x00, 0x00, 0xea, 0xff, 0xd8, 0xff, 0xba, 0xff,
-0xc4, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x00, 0x00,
-0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xf2, 0xff,
-0xea, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0xd6, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf6, 0xff,
-0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xda, 0xff,
-0xea, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x16, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x10, 0x00,
-0x0c, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xd2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xa2, 0xff,
-0xb0, 0xff, 0xc4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x44, 0x00, 0x44, 0x00, 0x50, 0x00,
-0x3a, 0x00, 0x3e, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xdc, 0xff, 0xb0, 0xff, 0x98, 0xff, 0x8a, 0xff,
-0x86, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x1a, 0x00, 0x4c, 0x00, 0x60, 0x00,
-0x70, 0x00, 0x70, 0x00, 0x60, 0x00, 0x4e, 0x00, 0x24, 0x00, 0xec, 0xff, 0xbc, 0xff, 0x92, 0xff,
-0x78, 0xff, 0x64, 0xff, 0x64, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0x06, 0x00, 0x34, 0x00,
-0x5e, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x8e, 0x00, 0x76, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd6, 0xff,
-0xa2, 0xff, 0x6c, 0xff, 0x4a, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x66, 0xff, 0x9c, 0xff, 0xd4, 0xff,
-0x12, 0x00, 0x48, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xb2, 0x00, 0xae, 0x00, 0x86, 0x00, 0x4c, 0x00,
-0x00, 0x00, 0xc8, 0xff, 0x88, 0xff, 0x46, 0xff, 0x2a, 0xff, 0x20, 0xff, 0x2e, 0xff, 0x5a, 0xff,
-0xa0, 0xff, 0xe2, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xb6, 0x00, 0xc4, 0x00, 0xa8, 0x00,
-0x84, 0x00, 0x36, 0x00, 0xe8, 0xff, 0xb2, 0xff, 0x68, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x0c, 0xff,
-0x2e, 0xff, 0x5a, 0xff, 0xa8, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x68, 0x00, 0x98, 0x00, 0xba, 0x00,
-0xba, 0x00, 0xa0, 0x00, 0x66, 0x00, 0x16, 0x00, 0xd6, 0xff, 0xa2, 0xff, 0x58, 0xff, 0x2e, 0xff,
-0x12, 0xff, 0x1e, 0xff, 0x48, 0xff, 0x7a, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x36, 0x00, 0x78, 0x00,
-0xaa, 0x00, 0xc4, 0x00, 0xba, 0x00, 0x98, 0x00, 0x54, 0x00, 0x0e, 0x00, 0xd4, 0xff, 0x9c, 0xff,
-0x68, 0xff, 0x3c, 0xff, 0x2a, 0xff, 0x36, 0xff, 0x5c, 0xff, 0x92, 0xff, 0xd2, 0xff, 0x10, 0x00,
-0x48, 0x00, 0x72, 0x00, 0x9a, 0x00, 0xac, 0x00, 0x9a, 0x00, 0x76, 0x00, 0x40, 0x00, 0x04, 0x00,
-0xca, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x60, 0xff, 0x78, 0xff, 0xa4, 0xff,
-0xe2, 0xff, 0x18, 0x00, 0x40, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x84, 0x00, 0x68, 0x00, 0x58, 0x00,
-0x2c, 0x00, 0xfa, 0xff, 0xcc, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x90, 0xff,
-0xa2, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x4a, 0x00,
-0x48, 0x00, 0x32, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xda, 0xff, 0xb8, 0xff, 0xb0, 0xff, 0xa8, 0xff,
-0xaa, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0x00, 0x00, 0x1e, 0x00, 0x18, 0x00,
-0x22, 0x00, 0x26, 0x00, 0x14, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xde, 0xff,
-0xde, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf8, 0xff,
-0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff,
-0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xe4, 0xff, 0xe0, 0xff,
-0xe2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xe4, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xf2, 0xff, 0xd6, 0xff, 0xc6, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xc0, 0xff,
-0xd6, 0xff, 0xf0, 0xff, 0x02, 0x00, 0x28, 0x00, 0x36, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x32, 0x00,
-0x28, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x8c, 0xff,
-0x96, 0xff, 0xa4, 0xff, 0xcc, 0xff, 0xf2, 0xff, 0x14, 0x00, 0x30, 0x00, 0x54, 0x00, 0x60, 0x00,
-0x52, 0x00, 0x44, 0x00, 0x34, 0x00, 0x0e, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x9a, 0xff, 0x7a, 0xff,
-0x68, 0xff, 0x66, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x5c, 0x00,
-0x76, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xae, 0xff,
-0x7c, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xa8, 0xff, 0xda, 0xff, 0x20, 0x00,
-0x54, 0x00, 0x82, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x64, 0x00, 0x36, 0x00, 0x04, 0x00,
-0xca, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x3e, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xb4, 0xff,
-0xf0, 0xff, 0x28, 0x00, 0x66, 0x00, 0x90, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0x8e, 0x00, 0x6c, 0x00,
-0x24, 0x00, 0xe6, 0xff, 0xb8, 0xff, 0x76, 0xff, 0x4e, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x56, 0xff,
-0x8c, 0xff, 0xd8, 0xff, 0x02, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0xa2, 0x00, 0xbc, 0x00, 0xa8, 0x00,
-0x88, 0x00, 0x58, 0x00, 0x04, 0x00, 0xd2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x3a, 0xff, 0x26, 0xff,
-0x3c, 0xff, 0x5c, 0xff, 0x96, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x46, 0x00, 0x74, 0x00, 0x8e, 0x00,
-0xa4, 0x00, 0x94, 0x00, 0x6a, 0x00, 0x34, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x4e, 0xff,
-0x3c, 0xff, 0x30, 0xff, 0x44, 0xff, 0x72, 0xff, 0x9c, 0xff, 0xe4, 0xff, 0x20, 0x00, 0x56, 0x00,
-0x7a, 0x00, 0x92, 0x00, 0x98, 0x00, 0x80, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xb8, 0xff,
-0x82, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xf6, 0xff,
-0x28, 0x00, 0x4c, 0x00, 0x6e, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x68, 0x00, 0x42, 0x00, 0x02, 0x00,
-0xde, 0xff, 0xae, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x86, 0xff, 0xa8, 0xff,
-0xd6, 0xff, 0x04, 0x00, 0x2a, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x4c, 0x00,
-0x1c, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xb0, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x90, 0xff, 0xa4, 0xff,
-0xae, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x48, 0x00, 0x44, 0x00,
-0x44, 0x00, 0x36, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xbc, 0xff,
-0xc4, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xee, 0xff, 0x04, 0x00, 0x0a, 0x00, 0x1c, 0x00,
-0x1a, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x14, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xee, 0xff, 0xec, 0xff,
-0xe8, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xea, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0x04, 0x00,
-0x08, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xe8, 0xff,
-0xd8, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xd0, 0xff, 0xe0, 0xff,
-0xf0, 0xff, 0x02, 0x00, 0x1a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x1a, 0x00, 0x14, 0x00,
-0x06, 0x00, 0xe8, 0xff, 0xca, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xa2, 0xff, 0xaa, 0xff,
-0xbe, 0xff, 0xd4, 0xff, 0xea, 0xff, 0x0a, 0x00, 0x28, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x4a, 0x00,
-0x3c, 0x00, 0x22, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x7c, 0xff,
-0x7c, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xce, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x5a, 0x00, 0x64, 0x00,
-0x6a, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0x94, 0xff, 0x6e, 0xff,
-0x56, 0xff, 0x50, 0xff, 0x66, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x4a, 0x00,
-0x78, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x84, 0x00, 0x50, 0x00, 0x22, 0x00, 0xf4, 0xff, 0xb8, 0xff,
-0x7a, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x88, 0xff, 0xc4, 0xff, 0xfc, 0xff,
-0x3a, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xb4, 0x00, 0x92, 0x00, 0x56, 0x00, 0x18, 0x00,
-0xe0, 0xff, 0x98, 0xff, 0x62, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x3e, 0xff, 0x64, 0xff, 0x9a, 0xff,
-0xe0, 0xff, 0x16, 0x00, 0x5c, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc8, 0x00, 0xa8, 0x00, 0x88, 0x00,
-0x3a, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x20, 0xff, 0x46, 0xff,
-0x68, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xae, 0x00, 0xbe, 0x00,
-0x96, 0x00, 0x6c, 0x00, 0x2e, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x76, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x38, 0xff, 0x54, 0xff, 0x82, 0xff, 0xb2, 0xff, 0xfc, 0xff, 0x2e, 0x00, 0x60, 0x00, 0x90, 0x00,
-0xa4, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x50, 0x00, 0x24, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x86, 0xff,
-0x50, 0xff, 0x44, 0xff, 0x4e, 0xff, 0x5e, 0xff, 0x84, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x2e, 0x00,
-0x5a, 0x00, 0x88, 0x00, 0x86, 0x00, 0x7e, 0x00, 0x6a, 0x00, 0x38, 0x00, 0x0a, 0x00, 0xe4, 0xff,
-0xaa, 0xff, 0x7e, 0xff, 0x58, 0xff, 0x5a, 0xff, 0x60, 0xff, 0x72, 0xff, 0xa2, 0xff, 0xd6, 0xff,
-0x02, 0x00, 0x34, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x70, 0x00, 0x68, 0x00, 0x50, 0x00, 0x32, 0x00,
-0x00, 0x00, 0xda, 0xff, 0xb0, 0xff, 0x90, 0xff, 0x84, 0xff, 0x80, 0xff, 0x92, 0xff, 0x92, 0xff,
-0xb8, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x28, 0x00, 0x40, 0x00, 0x44, 0x00, 0x46, 0x00, 0x3a, 0x00,
-0x30, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xde, 0xff, 0xc0, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xaa, 0xff,
-0xa4, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x10, 0x00, 0x24, 0x00, 0x16, 0x00,
-0x20, 0x00, 0x28, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xee, 0xff, 0xda, 0xff, 0xd4, 0xff,
-0xda, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff,
-0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xfe, 0xff,
-0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xe2, 0xff,
-0xd8, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x08, 0x00, 0xfc, 0xff,
-0xea, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xe0, 0xff,
-0xf0, 0xff, 0x06, 0x00, 0x1a, 0x00, 0x44, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x30, 0x00,
-0x1a, 0x00, 0x00, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x98, 0xff,
-0xa0, 0xff, 0xca, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x38, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x68, 0x00,
-0x5c, 0x00, 0x40, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x90, 0xff, 0x6a, 0xff, 0x5a, 0xff,
-0x64, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xce, 0xff, 0x00, 0x00, 0x26, 0x00, 0x5c, 0x00, 0x80, 0x00,
-0x94, 0x00, 0x88, 0x00, 0x72, 0x00, 0x4c, 0x00, 0x1c, 0x00, 0xe6, 0xff, 0xa8, 0xff, 0x80, 0xff,
-0x58, 0xff, 0x44, 0xff, 0x56, 0xff, 0x6e, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x40, 0x00,
-0x74, 0x00, 0x96, 0x00, 0xa2, 0x00, 0x9a, 0x00, 0x78, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xcc, 0xff,
-0x90, 0xff, 0x58, 0xff, 0x38, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xde, 0xff,
-0x12, 0x00, 0x4e, 0x00, 0x88, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xa0, 0x00, 0x76, 0x00, 0x36, 0x00,
-0x00, 0x00, 0xce, 0xff, 0x80, 0xff, 0x4a, 0xff, 0x38, 0xff, 0x34, 0xff, 0x52, 0xff, 0x78, 0xff,
-0xb4, 0xff, 0xfa, 0xff, 0x24, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0x98, 0x00,
-0x70, 0x00, 0x2a, 0x00, 0xf6, 0xff, 0xb4, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x32, 0xff,
-0x48, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x6a, 0x00, 0x90, 0x00, 0xb2, 0x00,
-0xa8, 0x00, 0x84, 0x00, 0x56, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xac, 0xff, 0x74, 0xff, 0x4c, 0xff,
-0x3a, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x94, 0xff, 0xce, 0xff, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00,
-0x8e, 0x00, 0x9c, 0x00, 0xa0, 0x00, 0x72, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xd8, 0xff, 0xac, 0xff,
-0x7c, 0xff, 0x60, 0xff, 0x50, 0xff, 0x68, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x0c, 0x00,
-0x38, 0x00, 0x60, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x4a, 0x00, 0x22, 0x00, 0x00, 0x00,
-0xd2, 0xff, 0xa0, 0xff, 0x8e, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x86, 0xff, 0x94, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x0e, 0x00, 0x38, 0x00, 0x4a, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x36, 0x00,
-0x0e, 0x00, 0xf2, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0x98, 0xff, 0x9e, 0xff,
-0xbc, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x1c, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x30, 0x00,
-0x2e, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xca, 0xff, 0xbc, 0xff, 0xc0, 0xff,
-0xb4, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x0c, 0x00,
-0x16, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xe2, 0xff,
-0xd8, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xec, 0xff, 0xee, 0xff,
-0x02, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00,
-0x0c, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xdc, 0xff,
-0xce, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xda, 0xff, 0xf6, 0xff, 0xf6, 0xff,
-0x06, 0x00, 0x22, 0x00, 0x30, 0x00, 0x34, 0x00, 0x26, 0x00, 0x20, 0x00, 0x0a, 0x00, 0xfc, 0xff,
-0xec, 0xff, 0xd0, 0xff, 0xb4, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xc2, 0xff,
-0xe6, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x54, 0x00, 0x56, 0x00, 0x50, 0x00, 0x3c, 0x00,
-0x28, 0x00, 0x02, 0x00, 0xee, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x92, 0xff, 0x76, 0xff, 0x7c, 0xff,
-0xa0, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x06, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x7c, 0x00,
-0x62, 0x00, 0x50, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xce, 0xff, 0xa6, 0xff, 0x7a, 0xff, 0x58, 0xff,
-0x52, 0xff, 0x60, 0xff, 0x82, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x1a, 0x00, 0x54, 0x00, 0x74, 0x00,
-0x8c, 0x00, 0x98, 0x00, 0x7a, 0x00, 0x58, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xc2, 0xff, 0x82, 0xff,
-0x5e, 0xff, 0x40, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x84, 0xff, 0xc8, 0xff, 0xfa, 0xff, 0x32, 0x00,
-0x78, 0x00, 0x9c, 0x00, 0xb0, 0x00, 0xb4, 0x00, 0x88, 0x00, 0x52, 0x00, 0x10, 0x00, 0xe0, 0xff,
-0xaa, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x28, 0xff, 0x20, 0xff, 0x44, 0xff, 0x88, 0xff, 0xcc, 0xff,
-0x00, 0x00, 0x44, 0x00, 0x86, 0x00, 0xa8, 0x00, 0xb0, 0x00, 0xb4, 0x00, 0x7e, 0x00, 0x52, 0x00,
-0x08, 0x00, 0xd6, 0xff, 0x9a, 0xff, 0x52, 0xff, 0x34, 0xff, 0x20, 0xff, 0x32, 0xff, 0x5e, 0xff,
-0xa2, 0xff, 0xec, 0xff, 0x16, 0x00, 0x5c, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xca, 0x00, 0xaa, 0x00,
-0x86, 0x00, 0x40, 0x00, 0x00, 0x00, 0xcc, 0xff, 0x8e, 0xff, 0x56, 0xff, 0x34, 0xff, 0x2a, 0xff,
-0x3e, 0xff, 0x6a, 0xff, 0xac, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xae, 0x00,
-0xb0, 0x00, 0x9e, 0x00, 0x72, 0x00, 0x30, 0x00, 0x04, 0x00, 0xbe, 0xff, 0x86, 0xff, 0x58, 0xff,
-0x3c, 0xff, 0x3c, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x58, 0x00,
-0x84, 0x00, 0x90, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb6, 0xff,
-0x96, 0xff, 0x70, 0xff, 0x64, 0xff, 0x66, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x06, 0x00,
-0x30, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x3e, 0x00, 0x0c, 0x00,
-0xec, 0xff, 0xb2, 0xff, 0x94, 0xff, 0x80, 0xff, 0x78, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xb8, 0xff,
-0xdc, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x40, 0x00, 0x40, 0x00, 0x2c, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xd6, 0xff, 0xbc, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0xaa, 0xff,
-0xba, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0x12, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x28, 0x00,
-0x1c, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xce, 0xff, 0xd0, 0xff,
-0xca, 0xff, 0xd2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xea, 0xff,
-0xea, 0xff, 0xec, 0xff, 0xea, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xda, 0xff,
-0xd2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x10, 0x00,
-0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xe6, 0xff,
-0xca, 0xff, 0xc0, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xd2, 0xff, 0xec, 0xff,
-0x08, 0x00, 0x18, 0x00, 0x36, 0x00, 0x52, 0x00, 0x56, 0x00, 0x46, 0x00, 0x40, 0x00, 0x1e, 0x00,
-0xf6, 0xff, 0xd8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x78, 0xff, 0x76, 0xff, 0x92, 0xff, 0x9c, 0xff,
-0xbe, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x44, 0x00, 0x66, 0x00, 0x72, 0x00, 0x70, 0x00, 0x66, 0x00,
-0x4a, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x74, 0xff, 0x54, 0xff, 0x56, 0xff,
-0x70, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xee, 0xff, 0x1a, 0x00, 0x58, 0x00, 0x90, 0x00, 0xa8, 0x00,
-0xa2, 0x00, 0x8a, 0x00, 0x5c, 0x00, 0x28, 0x00, 0xea, 0xff, 0xa6, 0xff, 0x6a, 0xff, 0x3e, 0xff,
-0x28, 0xff, 0x2e, 0xff, 0x48, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x3c, 0x00, 0x7c, 0x00,
-0x96, 0x00, 0xa6, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x48, 0x00, 0x06, 0x00, 0xc6, 0xff, 0x7e, 0xff,
-0x4e, 0xff, 0x22, 0xff, 0x14, 0xff, 0x1e, 0xff, 0x4a, 0xff, 0x76, 0xff, 0xb8, 0xff, 0x02, 0x00,
-0x50, 0x00, 0xa4, 0x00, 0xce, 0x00, 0xdc, 0x00, 0xba, 0x00, 0x7e, 0x00, 0x46, 0x00, 0x06, 0x00,
-0xbc, 0xff, 0x88, 0xff, 0x42, 0xff, 0x36, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x4e, 0xff, 0x94, 0xff,
-0xe4, 0xff, 0x20, 0x00, 0x68, 0x00, 0xa2, 0x00, 0xde, 0x00, 0xc6, 0x00, 0x92, 0x00, 0x88, 0x00,
-0x82, 0x00, 0x44, 0x00, 0x98, 0xff, 0x04, 0xfe, 0x84, 0xfb, 0xc0, 0xf8, 0x44, 0xf6, 0x10, 0xf5,
-0xac, 0xf5, 0xf6, 0xf8, 0x4a, 0xff, 0xea, 0x07, 0x04, 0x12, 0xca, 0x1b, 0xc3, 0x22, 0x01, 0x26,
-0x0b, 0x24, 0x97, 0x1c, 0x38, 0x10, 0x52, 0x00, 0x3e, 0xee, 0xd5, 0xdb, 0xe9, 0xcb, 0xbf, 0xc0,
-0xb5, 0xbc, 0xe5, 0xc1, 0x47, 0xd1, 0x20, 0xe9, 0xec, 0x05, 0xa7, 0x22, 0x93, 0x3a, 0x15, 0x4a,
-0x6f, 0x4f, 0xfb, 0x4a, 0x7f, 0x3e, 0xc7, 0x2b, 0x14, 0x15, 0x70, 0xfc, 0xb9, 0xe3, 0x37, 0xcd,
-0x9d, 0xbb, 0xe3, 0xb1, 0x5f, 0xb2, 0x97, 0xbe, 0x77, 0xd5, 0x5e, 0xf3, 0xe6, 0x12, 0x47, 0x2e,
-0x7f, 0x41, 0x97, 0x4a, 0x89, 0x49, 0x21, 0x40, 0x87, 0x30, 0xf7, 0x1c, 0x88, 0x07, 0xde, 0xf1,
-0xed, 0xdd, 0x67, 0xcd, 0xc5, 0xc2, 0x83, 0xbf, 0x07, 0xc5, 0x97, 0xd3, 0x16, 0xe9, 0x16, 0x02,
-0x60, 0x1a, 0x17, 0x2e, 0x9b, 0x3a, 0xd3, 0x3e, 0xe1, 0x3a, 0x39, 0x30, 0xdb, 0x20, 0xf6, 0x0e,
-0x76, 0xfc, 0x14, 0xeb, 0x81, 0xdc, 0x0d, 0xd2, 0xe9, 0xcc, 0x99, 0xcd, 0x57, 0xd4, 0x9b, 0xe0,
-0x14, 0xf1, 0x9c, 0x03, 0x96, 0x15, 0x73, 0x24, 0xc7, 0x2d, 0x8f, 0x30, 0xdb, 0x2c, 0x13, 0x24,
-0xf6, 0x17, 0x36, 0x0a, 0x9e, 0xfc, 0x1a, 0xf1, 0x84, 0xe8, 0x25, 0xe3, 0xb9, 0xe0, 0xc1, 0xe0,
-0x25, 0xe3, 0x02, 0xe8, 0x62, 0xef, 0xaa, 0xf8, 0x24, 0x03, 0xfc, 0x0c, 0x5c, 0x14, 0xf6, 0x17,
-0xfc, 0x17, 0xee, 0x13, 0x28, 0x0e, 0xc6, 0x08, 0x40, 0x04, 0x64, 0x01, 0xb0, 0xff, 0x06, 0xfe,
-0x46, 0xfb, 0x84, 0xf7, 0x24, 0xf3, 0xb0, 0xef, 0x62, 0xee, 0xfa, 0xef, 0x00, 0xf4, 0x0e, 0xf9,
-0x6c, 0xfd, 0x5c, 0x00, 0xfc, 0x01, 0x3e, 0x03, 0x32, 0x05, 0x34, 0x08, 0x8e, 0x0c, 0x5c, 0x11,
-0x26, 0x15, 0xd0, 0x15, 0x3a, 0x12, 0x9e, 0x0a, 0x2c, 0x00, 0x20, 0xf5, 0xc6, 0xeb, 0xc2, 0xe5,
-0x47, 0xe3, 0x91, 0xe3, 0xb0, 0xe5, 0x40, 0xe9, 0xca, 0xee, 0xae, 0xf6, 0x0c, 0x01, 0x46, 0x0d,
-0xde, 0x19, 0xb5, 0x24, 0x67, 0x2b, 0x11, 0x2c, 0xfb, 0x25, 0xbe, 0x19, 0x38, 0x09, 0xda, 0xf6,
-0xce, 0xe5, 0x55, 0xd8, 0xd7, 0xcf, 0x87, 0xcc, 0x6b, 0xce, 0x3f, 0xd5, 0xbf, 0xe0, 0xc2, 0xf0,
-0xd6, 0x03, 0x22, 0x18, 0x91, 0x2a, 0xab, 0x38, 0x0d, 0x40, 0x6f, 0x3f, 0x6d, 0x36, 0xb9, 0x25,
-0x2a, 0x0f, 0xa2, 0xf5, 0xc7, 0xdc, 0x0b, 0xc8, 0x35, 0xba, 0xf3, 0xb4, 0xe1, 0xb8, 0x6b, 0xc5,
-0x49, 0xd9, 0x02, 0xf2, 0xb4, 0x0c, 0x11, 0x26, 0x41, 0x3b, 0x07, 0x4a, 0xc5, 0x50, 0x5d, 0x4e,
-0x37, 0x42, 0xd1, 0x2c, 0x08, 0x10, 0x52, 0xef, 0x39, 0xcf, 0x17, 0xb5, 0x1e, 0xa5, 0x9a, 0xa1,
-0x98, 0xaa, 0x41, 0xbe, 0x5f, 0xd9, 0x20, 0xf8, 0xda, 0x16, 0x8b, 0x32, 0xc7, 0x48, 0xa2, 0x57,
-0x8c, 0x5d, 0xe0, 0x58, 0xef, 0x48, 0x39, 0x2e, 0x3c, 0x0b, 0x66, 0xe4, 0xd5, 0xbf, 0xce, 0xa3,
-0x18, 0x95, 0x94, 0x95, 0x12, 0xa4, 0x5d, 0xbd, 0x15, 0xdd, 0x2c, 0xff, 0x01, 0x20, 0xe7, 0x3c,
-0xab, 0x53, 0x3c, 0x62, 0x6e, 0x66, 0xa8, 0x5e, 0xff, 0x49, 0xb7, 0x29, 0x2a, 0x01, 0x29, 0xd6,
-0x05, 0xb0, 0x7a, 0x95, 0xe0, 0x8a, 0x8c, 0x90, 0x00, 0xa4, 0x11, 0xc1, 0x3d, 0xe3, 0x74, 0x06,
-0x9b, 0x27, 0x65, 0x44, 0xb8, 0x5a, 0xec, 0x67, 0x9a, 0x69, 0xe4, 0x5d, 0xab, 0x44, 0x21, 0x20,
-0xc2, 0xf4, 0x7f, 0xc9, 0xaa, 0xa5, 0x52, 0x8f, 0x48, 0x89, 0xec, 0x92, 0x40, 0xa9, 0x0f, 0xc8,
-0xf4, 0xea, 0x1e, 0x0e, 0xa3, 0x2e, 0xfb, 0x49, 0xd2, 0x5d, 0x78, 0x67, 0xdc, 0x64, 0x08, 0x55,
-0xf5, 0x38, 0xaa, 0x13, 0x58, 0xea, 0x3b, 0xc3, 0xaa, 0xa4, 0x28, 0x93, 0x64, 0x90, 0xa8, 0x9b,
-0x07, 0xb2, 0x25, 0xd0, 0xee, 0xf1, 0xe8, 0x13, 0xef, 0x32, 0x61, 0x4c, 0x4c, 0x5d, 0x22, 0x63,
-0x68, 0x5c, 0x93, 0x49, 0xbf, 0x2c, 0x56, 0x09, 0x14, 0xe4, 0x2b, 0xc2, 0xae, 0xa8, 0xd2, 0x9a,
-0x38, 0x9a, 0x28, 0xa6, 0x9b, 0xbc, 0x1f, 0xda, 0xd4, 0xfa, 0xdc, 0x1a, 0xb1, 0x36, 0x63, 0x4b,
-0x64, 0x56, 0x90, 0x56, 0x17, 0x4c, 0xd1, 0x38, 0xe5, 0x1e, 0x1c, 0x01, 0xb7, 0xe2, 0xb7, 0xc7,
-0xad, 0xb3, 0x72, 0xa9, 0x66, 0xaa, 0x5d, 0xb6, 0xa5, 0xcb, 0xc8, 0xe6, 0xea, 0x03, 0xf7, 0x1e,
-0xb1, 0x34, 0x81, 0x42, 0x77, 0x47, 0xc1, 0x43, 0x0d, 0x39, 0x05, 0x29, 0x30, 0x15, 0x04, 0xff,
-0x54, 0xe8, 0xcd, 0xd3, 0x1f, 0xc4, 0x11, 0xbc, 0x31, 0xbd, 0xf5, 0xc7, 0x67, 0xda, 0x32, 0xf1,
-0x3e, 0x08, 0x0e, 0x1c, 0x23, 0x2a, 0x77, 0x31, 0x73, 0x32, 0x51, 0x2e, 0xad, 0x26, 0x43, 0x1c,
-0x96, 0x0f, 0xee, 0x00, 0x4a, 0xf1, 0x6f, 0xe2, 0xf3, 0xd6, 0x13, 0xd1, 0x81, 0xd2, 0x0b, 0xdb,
-0xb0, 0xe8, 0x70, 0xf8, 0x08, 0x07, 0x50, 0x12, 0x36, 0x19, 0x12, 0x1c, 0xd4, 0x1b, 0xf4, 0x19,
-0x1c, 0x17, 0x7a, 0x13, 0x86, 0x0e, 0x9a, 0x07, 0xd0, 0xfe, 0x4a, 0xf5, 0x14, 0xed, 0x34, 0xe8,
-0xf2, 0xe7, 0xe4, 0xeb, 0x86, 0xf2, 0x84, 0xf9, 0x1c, 0xff, 0x86, 0x02, 0xfc, 0x03, 0x52, 0x04,
-0xdc, 0x04, 0x74, 0x06, 0x4e, 0x09, 0xbc, 0x0c, 0x64, 0x0f, 0x10, 0x10, 0x0c, 0x0e, 0xd2, 0x09,
-0x96, 0x04, 0xd0, 0xff, 0xf8, 0xfb, 0x2a, 0xf9, 0xe0, 0xf6, 0x8a, 0xf4, 0x06, 0xf2, 0x8a, 0xef,
-0xdc, 0xed, 0x06, 0xee, 0xd8, 0xf0, 0xbc, 0xf6, 0x7c, 0xff, 0xce, 0x09, 0x1a, 0x14, 0x63, 0x1c,
-0x1b, 0x21, 0x71, 0x21, 0x81, 0x1d, 0xee, 0x15, 0xea, 0x0b, 0x92, 0x00, 0xfc, 0xf4, 0x36, 0xea,
-0xf5, 0xe0, 0x31, 0xda, 0xe5, 0xd6, 0xed, 0xd7, 0xe9, 0xdd, 0xde, 0xe8, 0x16, 0xf8, 0x3a, 0x0a,
-0xd1, 0x1c, 0xdd, 0x2c, 0x4b, 0x37, 0xed, 0x39, 0x45, 0x34, 0x7b, 0x27, 0xd4, 0x15, 0x04, 0x02,
-0x96, 0xee, 0x6d, 0xdd, 0xe5, 0xcf, 0xed, 0xc6, 0x31, 0xc3, 0xb1, 0xc5, 0xf9, 0xce, 0x57, 0xdf,
-0xea, 0xf5, 0x78, 0x10, 0x45, 0x2b, 0x97, 0x41, 0xdf, 0x4e, 0x5b, 0x50, 0x0d, 0x46, 0x6d, 0x32,
-0x54, 0x19, 0x8a, 0xfe, 0x44, 0xe5, 0xa5, 0xcf, 0x5f, 0xbf, 0x19, 0xb5, 0x05, 0xb2, 0xfd, 0xb6,
-0x09, 0xc5, 0x0f, 0xdc, 0x44, 0xfa, 0xec, 0x1b, 0xe7, 0x3b, 0x99, 0x54, 0x22, 0x61, 0x88, 0x5f,
-0x95, 0x50, 0xdd, 0x37, 0xc6, 0x19, 0x62, 0xfa, 0xe3, 0xdc, 0xfd, 0xc3, 0x3f, 0xb1, 0x4e, 0xa6,
-0x50, 0xa4, 0xad, 0xac, 0x4f, 0xc0, 0x0b, 0xde, 0xbe, 0x02, 0x33, 0x29, 0x7b, 0x4b, 0xbc, 0x63,
-0xea, 0x6d, 0x6a, 0x68, 0x3a, 0x55, 0x6b, 0x38, 0x96, 0x16, 0xd2, 0xf3, 0x67, 0xd3, 0x17, 0xb8,
-0x7e, 0xa4, 0x90, 0x9a, 0xf6, 0x9b, 0xfc, 0xa9, 0x01, 0xc4, 0xaa, 0xe7, 0x18, 0x10, 0x89, 0x37,
-0x42, 0x58, 0x72, 0x6d, 0xdc, 0x73, 0xee, 0x6a, 0xde, 0x54, 0x6b, 0x35, 0x2a, 0x11, 0xdc, 0xeb,
-0x61, 0xc9, 0x53, 0xad, 0xf2, 0x9a, 0x60, 0x94, 0x1e, 0x9b, 0xcd, 0xae, 0xa9, 0xcd, 0xb0, 0xf3,
-0xb6, 0x1b, 0x93, 0x40, 0xb0, 0x5d, 0x5e, 0x6f, 0xfe, 0x72, 0x32, 0x68, 0x95, 0x50, 0xef, 0x2f,
-0x1a, 0x0a, 0x89, 0xe3, 0xb1, 0xc0, 0x00, 0xa6, 0xfc, 0x96, 0xa0, 0x95, 0xc2, 0xa1, 0xbf, 0xb9,
-0x59, 0xda, 0xfa, 0xfe, 0x61, 0x23, 0x79, 0x43, 0x24, 0x5c, 0x7c, 0x6a, 0x4c, 0x6c, 0x88, 0x60,
-0x9d, 0x48, 0x67, 0x27, 0x52, 0x01, 0x6f, 0xdb, 0xcd, 0xba, 0x36, 0xa4, 0x82, 0x9a, 0x50, 0x9e,
-0x3d, 0xae, 0x6b, 0xc7, 0x0e, 0xe6, 0xbc, 0x06, 0x05, 0x26, 0x4d, 0x41, 0x40, 0x56, 0x0c, 0x62,
-0x42, 0x62, 0xc8, 0x55, 0x77, 0x3d, 0x67, 0x1c, 0xbe, 0xf7, 0xe5, 0xd4, 0x5d, 0xb9, 0xea, 0xa8,
-0xfe, 0xa4, 0xd9, 0xac, 0x15, 0xbe, 0x65, 0xd5, 0xbc, 0xef, 0x98, 0x0a, 0x01, 0x24, 0x69, 0x3a,
-0x77, 0x4b, 0xb3, 0x54, 0x7f, 0x53, 0xad, 0x46, 0x55, 0x2f, 0x16, 0x11, 0xee, 0xf0, 0x91, 0xd4,
-0x4f, 0xc0, 0x5f, 0xb6, 0x01, 0xb7, 0x3d, 0xc0, 0x7b, 0xcf, 0x35, 0xe2, 0x60, 0xf6, 0x8a, 0x0a,
-0x03, 0x1e, 0x25, 0x2f, 0x0f, 0x3c, 0x5f, 0x42, 0xf1, 0x3f, 0xff, 0x33, 0x1d, 0x20, 0xb6, 0x07,
-0x8c, 0xef, 0xdd, 0xdb, 0x3d, 0xcf, 0x99, 0xca, 0x0d, 0xcd, 0xd3, 0xd4, 0xed, 0xdf, 0x9a, 0xec,
-0xce, 0xf9, 0x28, 0x07, 0x02, 0x14, 0x95, 0x1f, 0x57, 0x28, 0x77, 0x2c, 0xab, 0x2a, 0x93, 0x22,
-0x40, 0x15, 0xa0, 0x05, 0xc2, 0xf6, 0x1c, 0xeb, 0x08, 0xe4, 0x91, 0xe1, 0xf1, 0xe2, 0x1e, 0xe7,
-0xbe, 0xec, 0x04, 0xf3, 0x8a, 0xf9, 0xf8, 0xff, 0x6a, 0x06, 0x8e, 0x0c, 0xbe, 0x11, 0x56, 0x15,
-0x9c, 0x16, 0xbc, 0x14, 0x32, 0x10, 0xda, 0x09, 0x40, 0x03, 0xd2, 0xfd, 0x36, 0xfa, 0x7e, 0xf8,
-0x60, 0xf8, 0xd2, 0xf8, 0xfa, 0xf8, 0x78, 0xf8, 0xfe, 0xf6, 0x38, 0xf5, 0x18, 0xf4, 0xd2, 0xf4,
-0x4c, 0xf8, 0x40, 0xfe, 0x1e, 0x05, 0x78, 0x0b, 0x04, 0x10, 0x44, 0x12, 0xbc, 0x12, 0xec, 0x11,
-0x6e, 0x10, 0x76, 0x0e, 0x8e, 0x0b, 0x10, 0x07, 0xa2, 0x00, 0x00, 0xf8, 0x08, 0xee, 0x5e, 0xe4,
-0x5b, 0xdd, 0x89, 0xdb, 0x23, 0xe0, 0x92, 0xea, 0xc0, 0xf8, 0xca, 0x07, 0x18, 0x15, 0x57, 0x1f,
-0x85, 0x25, 0xfd, 0x27, 0x69, 0x27, 0xe9, 0x23, 0x15, 0x1d, 0x7e, 0x12, 0xe2, 0x03, 0x48, 0xf2,
-0xe9, 0xdf, 0xc5, 0xcf, 0xbb, 0xc5, 0x7f, 0xc4, 0x03, 0xcd, 0xa1, 0xdd, 0x0e, 0xf3, 0x32, 0x09,
-0x19, 0x1d, 0x69, 0x2c, 0xa9, 0x36, 0xc7, 0x3b, 0xc5, 0x3b, 0x43, 0x36, 0x95, 0x2a, 0x82, 0x18,
-0x1e, 0x01, 0x06, 0xe7, 0xc5, 0xcd, 0x15, 0xba, 0x9d, 0xaf, 0xe3, 0xb0, 0xdd, 0xbd, 0x5f, 0xd4,
-0x4c, 0xf0, 0x60, 0x0d, 0x4f, 0x27, 0xc5, 0x3b, 0x59, 0x49, 0x63, 0x4f, 0x83, 0x4d, 0x19, 0x43,
-0x35, 0x30, 0xfc, 0x15, 0x3c, 0xf7, 0x8f, 0xd7, 0xf7, 0xbb, 0x74, 0xa8, 0x66, 0xa0, 0x2c, 0xa5,
-0x2f, 0xb6, 0x05, 0xd1, 0xb6, 0xf1, 0x54, 0x13, 0xb9, 0x31, 0xeb, 0x49, 0x88, 0x59, 0x44, 0x5f,
-0xe2, 0x59, 0x75, 0x49, 0x81, 0x2f, 0x0c, 0x0f, 0xa8, 0xeb, 0x35, 0xca, 0xd3, 0xae, 0xfc, 0x9c,
-0x36, 0x97, 0x34, 0x9e, 0xe3, 0xb1, 0x2d, 0xd0, 0x0c, 0xf5, 0x2e, 0x1b, 0xc7, 0x3d, 0x6c, 0x58,
-0x10, 0x68, 0x8c, 0x6a, 0x48, 0x5f, 0x35, 0x48, 0x97, 0x28, 0x6a, 0x04, 0xfd, 0xdf, 0x41, 0xbf,
-0xc0, 0xa5, 0x6c, 0x96, 0xc6, 0x92, 0x2c, 0x9c, 0x9f, 0xb2, 0x3d, 0xd4, 0xa4, 0xfc, 0x13, 0x26,
-0x59, 0x4a, 0x9e, 0x64, 0x28, 0x71, 0x26, 0x6e, 0x14, 0x5d, 0x15, 0x41, 0xbb, 0x1e, 0x44, 0xfa,
-0x3d, 0xd7, 0xc7, 0xb8, 0x0a, 0xa2, 0xe0, 0x94, 0x7e, 0x93, 0x4a, 0x9f, 0x6b, 0xb8, 0xcf, 0xdc,
-0x64, 0x07, 0x63, 0x31, 0x4f, 0x54, 0xe0, 0x6a, 0xd2, 0x71, 0x78, 0x69, 0x25, 0x54, 0x5f, 0x36,
-0x82, 0x14, 0x00, 0xf2, 0xe3, 0xd1, 0xd9, 0xb6, 0xec, 0xa2, 0x9e, 0x98, 0xd8, 0x99, 0x0a, 0xa8,
-0x4d, 0xc3, 0xa6, 0xe8, 0x40, 0x12, 0x5b, 0x39, 0x78, 0x57, 0x16, 0x68, 0x0e, 0x6a, 0x32, 0x5e,
-0x23, 0x48, 0xe5, 0x2b, 0xd2, 0x0c, 0xe0, 0xed, 0x81, 0xd1, 0xc9, 0xb9, 0x16, 0xa9, 0xaa, 0xa1,
-0x38, 0xa5, 0x3b, 0xb5, 0xb7, 0xd0, 0x1c, 0xf4, 0xac, 0x19, 0xdd, 0x3a, 0x59, 0x52, 0x5e, 0x5d,
-0x7c, 0x5b, 0xe3, 0x4e, 0xa5, 0x3a, 0x89, 0x21, 0xa0, 0x06, 0x0a, 0xec, 0x03, 0xd4, 0xa3, 0xc0,
-0x03, 0xb4, 0xf5, 0xaf, 0x0f, 0xb6, 0x67, 0xc6, 0x31, 0xdf, 0x3a, 0xfd, 0x48, 0x1b, 0xbd, 0x34,
-0xcf, 0x45, 0x83, 0x4c, 0x5f, 0x49, 0x23, 0x3e, 0xbf, 0x2c, 0xba, 0x17, 0x7a, 0x01, 0x3a, 0xec,
-0xcf, 0xd9, 0x0f, 0xcc, 0x39, 0xc4, 0x8f, 0xc3, 0x39, 0xca, 0xa3, 0xd7, 0x78, 0xea, 0xf0, 0xff,
-0x54, 0x15, 0x3f, 0x27, 0x3d, 0x33, 0xdb, 0x37, 0x37, 0x35, 0x63, 0x2c, 0x0d, 0x1f, 0x42, 0x0f,
-0x22, 0xff, 0xb6, 0xf0, 0x46, 0xe5, 0xa5, 0xdd, 0x35, 0xda, 0xc1, 0xda, 0xd9, 0xde, 0x2c, 0xe6,
-0x24, 0xf0, 0x48, 0xfc, 0x20, 0x09, 0xc8, 0x14, 0x31, 0x1d, 0xfb, 0x20, 0xe3, 0x1f, 0x6c, 0x1a,
-0x20, 0x12, 0xc8, 0x08, 0x62, 0x00, 0x00, 0xfa, 0xb8, 0xf5, 0x64, 0xf3, 0x18, 0xf2, 0xf6, 0xf0,
-0x92, 0xef, 0xd8, 0xee, 0xf4, 0xef, 0x88, 0xf3, 0x72, 0xf9, 0x3e, 0x00, 0x54, 0x06, 0x56, 0x0a,
-0x96, 0x0b, 0xaa, 0x0a, 0xdc, 0x08, 0xd0, 0x07, 0x18, 0x08, 0x96, 0x09, 0x54, 0x0b, 0xde, 0x0b,
-0xba, 0x09, 0x1e, 0x04, 0xf6, 0xfb, 0x08, 0xf3, 0xb0, 0xeb, 0x9e, 0xe7, 0x46, 0xe7, 0x0c, 0xea,
-0x76, 0xee, 0x5c, 0xf3, 0x52, 0xf8, 0x9e, 0xfd, 0x0c, 0x04, 0x0c, 0x0c, 0xe4, 0x14, 0xe9, 0x1c,
-0x39, 0x22, 0xed, 0x22, 0xed, 0x1d, 0x56, 0x13, 0x92, 0x04, 0x58, 0xf4, 0x98, 0xe5, 0x5d, 0xda,
-0x35, 0xd4, 0x31, 0xd3, 0xb9, 0xd6, 0x11, 0xde, 0x90, 0xe8, 0x12, 0xf6, 0xd6, 0x05, 0xb0, 0x16,
-0x29, 0x26, 0x17, 0x32, 0x37, 0x38, 0x3f, 0x37, 0x6f, 0x2e, 0x75, 0x1e, 0x86, 0x09, 0x2e, 0xf2,
-0xaf, 0xdb, 0xa9, 0xc9, 0x97, 0xbe, 0xa3, 0xbb, 0xcd, 0xc0, 0x35, 0xcd, 0xa9, 0xdf, 0x32, 0xf6,
-0x7c, 0x0e, 0x91, 0x25, 0xf7, 0x38, 0xd7, 0x45, 0xe7, 0x4a, 0x0f, 0x47, 0x45, 0x3a, 0x65, 0x25,
-0x40, 0x0a, 0x0c, 0xec, 0x0b, 0xcf, 0xe3, 0xb7, 0x12, 0xaa, 0xdc, 0xa7, 0x1b, 0xb1, 0x7b, 0xc4,
-0xc9, 0xde, 0xa2, 0xfc, 0x42, 0x1a, 0x89, 0x34, 0x9d, 0x48, 0xf6, 0x54, 0x4c, 0x58, 0xaf, 0x51,
-0x1d, 0x41, 0x4b, 0x27, 0x8a, 0x06, 0x5b, 0xe2, 0x41, 0xc0, 0x16, 0xa6, 0x8a, 0x98, 0x6c, 0x99,
-0x2c, 0xa8, 0x03, 0xc2, 0xa1, 0xe2, 0x2c, 0x05, 0x81, 0x25, 0x87, 0x40, 0x83, 0x54, 0xd2, 0x5f,
-0x30, 0x61, 0xc4, 0x57, 0x5b, 0x43, 0x05, 0x25, 0x26, 0xff, 0x9f, 0xd6, 0xd9, 0xb1, 0xb8, 0x97,
-0x88, 0x8c, 0xe4, 0x91, 0x1a, 0xa6, 0xed, 0xc4, 0xf8, 0xe8, 0x3c, 0x0d, 0xf1, 0x2d, 0xb1, 0x48,
-0xe6, 0x5b, 0x02, 0x66, 0x76, 0x65, 0x0a, 0x59, 0xd1, 0x40, 0x41, 0x1e, 0xd6, 0xf4, 0x45, 0xca,
-0xe0, 0xa5, 0x68, 0x8e, 0xb6, 0x87, 0xec, 0x91, 0x1a, 0xaa, 0x7f, 0xcb, 0xbe, 0xf0, 0x10, 0x15,
-0x31, 0x35, 0xcb, 0x4e, 0x62, 0x60, 0x0c, 0x68, 0x2a, 0x64, 0xdb, 0x53, 0xc1, 0x37, 0x4e, 0x12,
-0xd2, 0xe7, 0xf9, 0xbe, 0xc2, 0x9e, 0xb2, 0x8c, 0x02, 0x8b, 0xf6, 0x98, 0x05, 0xb3, 0x89, 0xd4,
-0xcc, 0xf8, 0x98, 0x1b, 0xdb, 0x39, 0x51, 0x51, 0xd4, 0x5f, 0xdc, 0x63, 0x1a, 0x5c, 0x49, 0x48,
-0x35, 0x2a, 0x38, 0x05, 0x1b, 0xde, 0xc3, 0xba, 0xc8, 0xa0, 0xe0, 0x93, 0xa0, 0x95, 0x8e, 0xa4,
-0xc9, 0xbd, 0x7d, 0xdd, 0x5e, 0xff, 0x9b, 0x1f, 0x0d, 0x3b, 0x19, 0x4f, 0xf0, 0x59, 0x2c, 0x5a,
-0x17, 0x4f, 0x05, 0x3a, 0x37, 0x1d, 0x4a, 0xfc, 0x49, 0xdb, 0xaf, 0xbe, 0x56, 0xaa, 0x22, 0xa1,
-0x02, 0xa4, 0x57, 0xb2, 0xf3, 0xc9, 0xf4, 0xe6, 0xd2, 0x05, 0x7f, 0x22, 0xab, 0x39, 0xb3, 0x48,
-0x27, 0x4e, 0xd5, 0x49, 0xd3, 0x3c, 0xf9, 0x28, 0xf4, 0x10, 0x64, 0xf7, 0x8f, 0xde, 0x0f, 0xc9,
-0x91, 0xb9, 0x75, 0xb2, 0x5d, 0xb5, 0x1b, 0xc2, 0xaf, 0xd6, 0x38, 0xf0, 0x62, 0x0a, 0x77, 0x21,
-0x3f, 0x32, 0xff, 0x3a, 0xa9, 0x3b, 0x6f, 0x35, 0x03, 0x2a, 0x84, 0x1b, 0x48, 0x0b, 0xf4, 0xf9,
-0xd4, 0xe8, 0x2d, 0xd9, 0x47, 0xcd, 0x7d, 0xc7, 0x83, 0xc9, 0x71, 0xd3, 0xea, 0xe3, 0x62, 0xf7,
-0x8e, 0x0a, 0xfe, 0x19, 0x81, 0x23, 0xcb, 0x26, 0xe1, 0x24, 0x99, 0x1f, 0xbc, 0x18, 0x3a, 0x11,
-0x14, 0x09, 0x24, 0x00, 0x18, 0xf6, 0xc0, 0xeb, 0x09, 0xe3, 0x07, 0xde, 0x83, 0xde, 0x98, 0xe4,
-0xa2, 0xee, 0x3e, 0xfa, 0x92, 0x04, 0xae, 0x0b, 0xfe, 0x0e, 0x54, 0x0f, 0x14, 0x0e, 0xa2, 0x0c,
-0xd4, 0x0b, 0xca, 0x0b, 0xa0, 0x0b, 0x00, 0x0a, 0x68, 0x06, 0x08, 0x01, 0xea, 0xfa, 0xa4, 0xf5,
-0x9c, 0xf2, 0x46, 0xf2, 0xd2, 0xf3, 0xd8, 0xf5, 0x40, 0xf7, 0x9c, 0xf7, 0x28, 0xf7, 0x1e, 0xf7,
-0x74, 0xf8, 0x0a, 0xfc, 0xfa, 0x01, 0x80, 0x09, 0x20, 0x11, 0x0a, 0x17, 0xaa, 0x19, 0x6e, 0x18,
-0xac, 0x13, 0x58, 0x0c, 0xd2, 0x03, 0x36, 0xfb, 0xea, 0xf2, 0x9e, 0xeb, 0x64, 0xe5, 0x1f, 0xe1,
-0x75, 0xdf, 0x27, 0xe1, 0x7c, 0xe6, 0x86, 0xef, 0x18, 0xfc, 0xf8, 0x0a, 0x30, 0x1a, 0xdf, 0x26,
-0x0b, 0x2f, 0x85, 0x30, 0xe9, 0x2a, 0xf9, 0x1e, 0xd6, 0x0e, 0xfc, 0xfc, 0xd2, 0xeb, 0x0b, 0xdd,
-0x19, 0xd2, 0xbd, 0xcb, 0x55, 0xca, 0x57, 0xce, 0xaf, 0xd7, 0x70, 0xe6, 0xe8, 0xf9, 0x5e, 0x10,
-0xe5, 0x26, 0x13, 0x3a, 0xd7, 0x45, 0x89, 0x47, 0x4f, 0x3e, 0xcf, 0x2b, 0xa4, 0x13, 0xc4, 0xf9,
-0x97, 0xe1, 0xef, 0xcd, 0x1b, 0xc0, 0xb5, 0xb8, 0x53, 0xb8, 0xcf, 0xbe, 0xc1, 0xcc, 0xaf, 0xe1,
-0x74, 0xfc, 0x06, 0x1a, 0xf1, 0x36, 0xcf, 0x4d, 0x56, 0x5a, 0x62, 0x59, 0xbb, 0x4a, 0xd9, 0x31,
-0x40, 0x13, 0xc4, 0xf3, 0x3b, 0xd7, 0x79, 0xc0, 0xe7, 0xb0, 0xa6, 0xa9, 0xa6, 0xaa, 0x89, 0xb4,
-0xa3, 0xc7, 0x13, 0xe3, 0x66, 0x04, 0xe9, 0x27, 0x35, 0x48, 0xf2, 0x5f, 0x50, 0x6a, 0xd6, 0x64,
-0x0f, 0x51, 0x13, 0x33, 0xfa, 0x0f, 0x9a, 0xec, 0x03, 0xcd, 0x37, 0xb4, 0x2e, 0xa4, 0xaa, 0x9d,
-0x5e, 0xa1, 0xf1, 0xaf, 0xf5, 0xc8, 0xa0, 0xea, 0x3e, 0x11, 0x77, 0x37, 0xa2, 0x57, 0xa8, 0x6c,
-0xa2, 0x72, 0xcc, 0x68, 0xf5, 0x50, 0xcb, 0x2f, 0x46, 0x0a, 0x10, 0xe5, 0x35, 0xc4, 0x0c, 0xab,
-0xa0, 0x9b, 0x3a, 0x97, 0xec, 0x9e, 0x7b, 0xb2, 0xfb, 0xd0, 0xa2, 0xf6, 0xa3, 0x1e, 0x73, 0x43,
-0x50, 0x60, 0x2c, 0x71, 0x76, 0x73, 0xa6, 0x66, 0x4b, 0x4d, 0x29, 0x2b, 0x9a, 0x04, 0x33, 0xde,
-0x81, 0xbc, 0x60, 0xa3, 0xb0, 0x95, 0x1c, 0x95, 0xf4, 0xa1, 0xfb, 0xba, 0x03, 0xdd, 0x88, 0x03,
-0x47, 0x29, 0xdb, 0x49, 0xe2, 0x61, 0x84, 0x6e, 0xf4, 0x6d, 0x02, 0x60, 0x29, 0x46, 0xc9, 0x23,
-0x3c, 0xfd, 0x5f, 0xd7, 0x39, 0xb7, 0xe8, 0xa0, 0x70, 0x97, 0xd2, 0x9b, 0xfb, 0xac, 0x3f, 0xc8,
-0xb8, 0xe9, 0xda, 0x0c, 0x93, 0x2d, 0x11, 0x49, 0xba, 0x5c, 0x7e, 0x66, 0x7a, 0x64, 0x20, 0x56,
-0xad, 0x3c, 0xe6, 0x1a, 0x6a, 0xf5, 0xa3, 0xd1, 0x07, 0xb5, 0xae, 0xa3, 0x8c, 0x9f, 0x54, 0xa8,
-0xc1, 0xbb, 0x69, 0xd6, 0x1e, 0xf4, 0xbc, 0x11, 0x7b, 0x2c, 0xb1, 0x42, 0x63, 0x52, 0xbe, 0x59,
-0xbe, 0x56, 0xb7, 0x48, 0x3b, 0x30, 0x7a, 0x10, 0x60, 0xee, 0x87, 0xcf, 0x09, 0xb9, 0xe1, 0xad,
-0xc5, 0xae, 0x17, 0xba, 0xed, 0xcc, 0xab, 0xe3, 0x7e, 0xfb, 0x48, 0x12, 0xa3, 0x26, 0x7d, 0x37,
-0x5d, 0x43, 0x79, 0x48, 0x21, 0x45, 0x55, 0x38, 0x31, 0x23, 0x80, 0x08, 0xfa, 0xec, 0xaf, 0xd5,
-0x4f, 0xc6, 0x7d, 0xc0, 0xd1, 0xc3, 0x2f, 0xce, 0xe1, 0xdc, 0x86, 0xed, 0x04, 0xfe, 0xa0, 0x0d,
-0xb6, 0x1b, 0x77, 0x27, 0xdb, 0x2f, 0x73, 0x33, 0xb3, 0x30, 0x03, 0x27, 0x3e, 0x17, 0xf6, 0x03,
-0x2c, 0xf1, 0x25, 0xe2, 0x3b, 0xd9, 0xf3, 0xd6, 0x3d, 0xda, 0x6d, 0xe1, 0x94, 0xea, 0x46, 0xf4,
-0x96, 0xfd, 0x62, 0x06, 0x3e, 0x0e, 0x3a, 0x15, 0xa2, 0x1a, 0xa7, 0x1d, 0x65, 0x1d, 0x34, 0x19,
-0x72, 0x11, 0x60, 0x07, 0x2e, 0xfd, 0xcc, 0xf4, 0x9a, 0xef, 0xb0, 0xed, 0x8c, 0xee, 0x06, 0xf1,
-0x0c, 0xf4, 0x0e, 0xf7, 0x68, 0xf9, 0x4a, 0xfb, 0x04, 0xfd, 0x34, 0xff, 0x4a, 0x02, 0x60, 0x06,
-0xba, 0x0a, 0x40, 0x0e, 0x06, 0x10, 0x74, 0x0f, 0x5a, 0x0d, 0x76, 0x0a, 0xba, 0x07, 0x58, 0x05,
-0x22, 0x03, 0x98, 0x00, 0x26, 0xfd, 0x68, 0xf8, 0x80, 0xf2, 0x62, 0xec, 0x7c, 0xe7, 0x0c, 0xe6,
-0x90, 0xe9, 0x0e, 0xf2, 0x0c, 0xfe, 0xcc, 0x0a, 0xc8, 0x15, 0x43, 0x1d, 0xc5, 0x20, 0xed, 0x20,
-0x89, 0x1e, 0x3e, 0x1a, 0x0e, 0x14, 0xc0, 0x0b, 0xc2, 0x00, 0x74, 0xf3, 0xd4, 0xe4, 0x7d, 0xd7,
-0xcf, 0xce, 0x37, 0xcd, 0x67, 0xd4, 0x55, 0xe3, 0x88, 0xf7, 0xbc, 0x0c, 0x8d, 0x1f, 0xcb, 0x2c,
-0x19, 0x34, 0x9d, 0x35, 0x61, 0x32, 0x39, 0x2b, 0x07, 0x20, 0xd6, 0x10, 0xd4, 0xfd, 0x92, 0xe8,
-0x67, 0xd3, 0x5b, 0xc2, 0xad, 0xb8, 0x6b, 0xb9, 0x2d, 0xc5, 0x51, 0xda, 0x3c, 0xf5, 0x40, 0x11,
-0xc5, 0x29, 0xfd, 0x3b, 0x9d, 0x46, 0x9d, 0x49, 0x85, 0x45, 0x91, 0x3a, 0xf9, 0x28, 0x66, 0x11,
-0xb0, 0xf5, 0xe1, 0xd8, 0x6d, 0xbf, 0x33, 0xad, 0xf2, 0xa5, 0xf2, 0xaa, 0x47, 0xbc, 0x53, 0xd7,
-0xf4, 0xf7, 0xe6, 0x18, 0xb7, 0x35, 0x1b, 0x4b, 0x72, 0x57, 0x40, 0x5a, 0x11, 0x53, 0xbb, 0x42,
-0x01, 0x2a, 0x0c, 0x0b, 0x1a, 0xe9, 0xbd, 0xc8, 0x7d, 0xae, 0x48, 0x9e, 0x3e, 0x9a, 0x0e, 0xa3,
-0x57, 0xb8, 0x3b, 0xd7, 0xae, 0xfb, 0x5f, 0x20, 0x89, 0x40, 0x80, 0x58, 0xaa, 0x65, 0x78, 0x66,
-0xc6, 0x5a, 0xfd, 0x43, 0x8b, 0x24, 0x74, 0x00, 0xcd, 0xdb, 0x71, 0xbb, 0x66, 0xa3, 0x2a, 0x96,
-0x38, 0x95, 0x14, 0xa1, 0xf3, 0xb8, 0xb9, 0xda, 0x08, 0x02, 0x71, 0x29, 0xb9, 0x4b, 0x4c, 0x64,
-0x8c, 0x6f, 0x2e, 0x6c, 0xc6, 0x5a, 0x43, 0x3e, 0x00, 0x1b, 0x22, 0xf5, 0x5b, 0xd1, 0x6b, 0xb3,
-0x78, 0x9e, 0x2c, 0x94, 0xaa, 0x95, 0x5c, 0xa3, 0x21, 0xbd, 0xb5, 0xe0, 0xb0, 0x09, 0x7f, 0x32,
-0xb9, 0x54, 0x5e, 0x6b, 0xca, 0x72, 0x30, 0x6a, 0xf1, 0x53, 0x51, 0x34, 0x10, 0x10, 0xb8, 0xeb,
-0xfd, 0xca, 0x9b, 0xb0, 0x26, 0x9f, 0x90, 0x97, 0x1e, 0x9b, 0xa0, 0xaa, 0xdd, 0xc5, 0x74, 0xea,
-0xc6, 0x13, 0x39, 0x3b, 0x72, 0x5a, 0x52, 0x6c, 0x3a, 0x6e, 0x28, 0x61, 0x5b, 0x48, 0xbd, 0x28,
-0xc4, 0x06, 0xf8, 0xe5, 0x57, 0xc9, 0x0b, 0xb3, 0x9e, 0xa4, 0x9e, 0x9f, 0x2e, 0xa5, 0xd9, 0xb5,
-0x87, 0xd1, 0x3e, 0xf5, 0xc8, 0x1b, 0x0f, 0x3f, 0xb4, 0x58, 0xd2, 0x64, 0x94, 0x62, 0x87, 0x53,
-0x6b, 0x3b, 0x91, 0x1e, 0x8c, 0x00, 0x38, 0xe4, 0x25, 0xcc, 0xdb, 0xb9, 0xf3, 0xae, 0xbb, 0xac,
-0x13, 0xb4, 0x81, 0xc5, 0x77, 0xdf, 0x50, 0xff, 0xdb, 0x1f, 0xf7, 0x3b, 0xd5, 0x4e, 0x02, 0x56,
-0x3d, 0x51, 0xdb, 0x42, 0xb5, 0x2d, 0x1a, 0x15, 0x58, 0xfc, 0x8c, 0xe5, 0xbd, 0xd2, 0x77, 0xc5,
-0x9b, 0xbe, 0x09, 0xbf, 0x45, 0xc7, 0x97, 0xd6, 0xb4, 0xeb, 0x04, 0x04, 0x10, 0x1c, 0x19, 0x30,
-0x0d, 0x3d, 0x39, 0x41, 0xe9, 0x3c, 0x6b, 0x31, 0x11, 0x21, 0x64, 0x0e, 0xb6, 0xfb, 0x20, 0xeb,
-0x33, 0xde, 0xd7, 0xd5, 0xaf, 0xd2, 0x93, 0xd4, 0x2d, 0xdb, 0xca, 0xe5, 0x24, 0xf3, 0x20, 0x02,
-0x2c, 0x11, 0x1d, 0x1e, 0xff, 0x26, 0x85, 0x2a, 0x23, 0x28, 0xd9, 0x20, 0x36, 0x16, 0xd2, 0x09,
-0xee, 0xfd, 0x14, 0xf4, 0x44, 0xed, 0xd0, 0xe9, 0x24, 0xe9, 0x4e, 0xea, 0x72, 0xec, 0x62, 0xef,
-0x70, 0xf3, 0x50, 0xf9, 0xd4, 0x00, 0xe6, 0x08, 0xe4, 0x0f, 0xfc, 0x13, 0xa4, 0x14, 0xfa, 0x11,
-0x66, 0x0d, 0x4e, 0x08, 0x22, 0x04, 0xe4, 0x01, 0x40, 0x01, 0x36, 0x01, 0x60, 0x00, 0xe2, 0xfd,
-0x2e, 0xf9, 0xc4, 0xf3, 0x4c, 0xef, 0x68, 0xed, 0xfc, 0xee, 0x68, 0xf3, 0xd6, 0xf8, 0xf2, 0xfd,
-0xf8, 0x01, 0xfc, 0x04, 0xd0, 0x07, 0x46, 0x0b, 0x92, 0x0f, 0x3e, 0x14, 0xe2, 0x17, 0xbc, 0x18,
-0x74, 0x15, 0x7e, 0x0d, 0xa4, 0x01, 0xec, 0xf3, 0x52, 0xe7, 0x59, 0xde, 0x75, 0xda, 0xb7, 0xdb,
-0xfb, 0xe0, 0xc2, 0xe8, 0x3e, 0xf2, 0xe8, 0xfc, 0xac, 0x08, 0x2a, 0x15, 0x1f, 0x21, 0xa9, 0x2a,
-0xe5, 0x2f, 0x01, 0x2f, 0x15, 0x27, 0xc4, 0x18, 0xb4, 0x05, 0xbc, 0xf0, 0x35, 0xdd, 0x37, 0xce,
-0xef, 0xc5, 0xe5, 0xc4, 0xf3, 0xca, 0xc9, 0xd6, 0x48, 0xe7, 0x08, 0xfb, 0x1c, 0x10, 0x55, 0x24,
-0x39, 0x35, 0x85, 0x40, 0x4f, 0x44, 0xe7, 0x3f, 0x0d, 0x33, 0xfb, 0x1e, 0xe4, 0x05, 0xa6, 0xea,
-0xfd, 0xd0, 0xeb, 0xbc, 0x67, 0xb1, 0x17, 0xb0, 0x33, 0xb9, 0x3d, 0xcb, 0x00, 0xe4, 0x3e, 0x00,
-0x4f, 0x1c, 0xd7, 0x34, 0x45, 0x47, 0x97, 0x51, 0xd5, 0x52, 0xa9, 0x4a, 0xb7, 0x39, 0xf7, 0x20,
-0xac, 0x02, 0x0d, 0xe2, 0x61, 0xc3, 0xa3, 0xab, 0x08, 0x9f, 0xdc, 0x9f, 0xf1, 0xad, 0x3b, 0xc7,
-0x80, 0xe7, 0xda, 0x09, 0xbb, 0x29, 0x9d, 0x43, 0x7c, 0x55, 0x2a, 0x5e, 0xde, 0x5c, 0x8d, 0x51,
-0xc3, 0x3c, 0xad, 0x1f, 0x72, 0xfc, 0xdf, 0xd6, 0x61, 0xb4, 0x08, 0x9b, 0xcc, 0x8f, 0xe8, 0x94,
-0x4e, 0xa9, 0x11, 0xc9, 0x9e, 0xee, 0xf0, 0x13, 0xaf, 0x34, 0x1b, 0x4e, 0x90, 0x5e, 0x58, 0x65,
-0xca, 0x61, 0xa1, 0x53, 0x6b, 0x3b, 0x74, 0x1a, 0x30, 0xf3, 0x71, 0xca, 0x0e, 0xa7, 0x50, 0x8f,
-0x18, 0x88, 0x82, 0x92, 0x03, 0xac, 0x91, 0xcf, 0xce, 0xf6, 0x3a, 0x1c, 0x11, 0x3c, 0x47, 0x54,
-0x5c, 0x63, 0x0e, 0x68, 0xda, 0x61, 0x6b, 0x50, 0x91, 0x34, 0x34, 0x10, 0xba, 0xe6, 0x07, 0xbe,
-0x14, 0x9d, 0x20, 0x8a, 0x0e, 0x88, 0x1e, 0x97, 0xa1, 0xb3, 0x2d, 0xd8, 0xf6, 0xfe, 0xe3, 0x22,
-0xf3, 0x40, 0x28, 0x57, 0xe6, 0x63, 0xa4, 0x65, 0x02, 0x5c, 0x39, 0x47, 0x97, 0x28, 0x0c, 0x03,
-0x05, 0xdb, 0x6b, 0xb6, 0x6c, 0x9b, 0x80, 0x8e, 0x48, 0x91, 0x96, 0xa2, 0x37, 0xbf, 0x2d, 0xe2,
-0x46, 0x06, 0x43, 0x27, 0x07, 0x42, 0xce, 0x54, 0xe8, 0x5d, 0x4c, 0x5c, 0xa7, 0x4f, 0x4d, 0x39,
-0x36, 0x1b, 0x8a, 0xf8, 0xf7, 0xd5, 0x03, 0xb8, 0x32, 0xa3, 0x80, 0x9a, 0xd4, 0x9e, 0x71, 0xaf,
-0x9b, 0xc9, 0x3e, 0xe9, 0xc4, 0x09, 0x79, 0x27, 0x11, 0x3f, 0x33, 0x4e, 0x79, 0x53, 0x25, 0x4e,
-0x6b, 0x3f, 0x15, 0x29, 0x16, 0x0e, 0x78, 0xf1, 0x6f, 0xd6, 0x33, 0xc0, 0x41, 0xb1, 0x9f, 0xab,
-0x63, 0xb0, 0x2b, 0xbf, 0x09, 0xd6, 0x8e, 0xf1, 0x9e, 0x0d, 0x2b, 0x26, 0x7d, 0x38, 0x43, 0x42,
-0xd9, 0x42, 0x0d, 0x3b, 0x97, 0x2c, 0x26, 0x1a, 0xf6, 0x05, 0xd8, 0xf1, 0x39, 0xdf, 0x9d, 0xcf,
-0x93, 0xc4, 0x0b, 0xc0, 0x77, 0xc3, 0x0f, 0xcf, 0x53, 0xe1, 0x3a, 0xf7, 0x06, 0x0d, 0x31, 0x1f,
-0x09, 0x2b, 0xcb, 0x2f, 0xab, 0x2d, 0x49, 0x26, 0xe8, 0x1b, 0x1e, 0x10, 0x2c, 0x04, 0x8e, 0xf8,
-0x36, 0xed, 0xa9, 0xe2, 0x7b, 0xda, 0x17, 0xd6, 0x5b, 0xd7, 0xc3, 0xde, 0x02, 0xeb, 0xc4, 0xf9,
-0xd2, 0x07, 0x66, 0x12, 0x2e, 0x18, 0x44, 0x19, 0xde, 0x16, 0xe2, 0x12, 0x8a, 0x0e, 0xc8, 0x0a,
-0x26, 0x07, 0x2e, 0x03, 0x0a, 0xfe, 0xd2, 0xf7, 0x52, 0xf1, 0x80, 0xec, 0x8a, 0xea, 0x3a, 0xec,
-0x18, 0xf1, 0x16, 0xf7, 0x88, 0xfc, 0xfc, 0xff, 0x20, 0x01, 0x1e, 0x01, 0x42, 0x01, 0x60, 0x02,
-0x12, 0x05, 0x00, 0x09, 0x24, 0x0d, 0x38, 0x10, 0xfa, 0x10, 0x80, 0x0e, 0x86, 0x09, 0xca, 0x02,
-0x00, 0xfc, 0x0e, 0xf6, 0x76, 0xf1, 0x16, 0xee, 0x60, 0xeb, 0x82, 0xe9, 0xf4, 0xe8, 0x7e, 0xea,
-0xbe, 0xee, 0x08, 0xf6, 0xb4, 0xff, 0x0a, 0x0b, 0x9a, 0x16, 0x01, 0x20, 0xc1, 0x25, 0x21, 0x26,
-0x95, 0x20, 0x2c, 0x16, 0x6e, 0x08, 0x6c, 0xf9, 0x46, 0xeb, 0x71, 0xdf, 0xd3, 0xd6, 0x5f, 0xd2,
-0x45, 0xd2, 0xbf, 0xd6, 0xe7, 0xdf, 0x46, 0xed, 0xfc, 0xfd, 0xa2, 0x10, 0x09, 0x23, 0x8d, 0x32,
-0x23, 0x3c, 0x77, 0x3d, 0x85, 0x35, 0x01, 0x25, 0xe2, 0x0e, 0x96, 0xf6, 0xf5, 0xdf, 0xe1, 0xcd,
-0x23, 0xc2, 0x17, 0xbd, 0xf3, 0xbe, 0x2b, 0xc7, 0x29, 0xd5, 0xae, 0xe8, 0x26, 0x00, 0xb8, 0x19,
-0x77, 0x32, 0x93, 0x46, 0xe7, 0x51, 0xa5, 0x51, 0x8b, 0x44, 0xb9, 0x2c, 0x7c, 0x0e, 0xfc, 0xee,
-0xf1, 0xd2, 0xe3, 0xbd, 0x1d, 0xb1, 0x01, 0xad, 0xd9, 0xb0, 0x5f, 0xbc, 0x47, 0xcf, 0xa0, 0xe8,
-0xba, 0x06, 0x55, 0x26, 0x73, 0x43, 0x62, 0x59, 0x84, 0x63, 0xde, 0x5e, 0xf5, 0x4b, 0xcf, 0x2d,
-0xe0, 0x09, 0x2c, 0xe6, 0x51, 0xc7, 0xe5, 0xb0, 0x3e, 0xa4, 0x22, 0xa1, 0x7a, 0xa7, 0x03, 0xb7,
-0x23, 0xcf, 0xa0, 0xee, 0x40, 0x12, 0xd3, 0x35, 0x6d, 0x54, 0xc6, 0x68, 0xcc, 0x6e, 0x02, 0x65,
-0xa9, 0x4c, 0x3b, 0x2a, 0x3c, 0x03, 0x29, 0xdd, 0x1d, 0xbd, 0x28, 0xa6, 0xe6, 0x99, 0xd4, 0x98,
-0x98, 0xa2, 0xe5, 0xb6, 0xd3, 0xd4, 0x5e, 0xf9, 0x51, 0x20, 0x87, 0x44, 0xd2, 0x60, 0xe4, 0x70,
-0x26, 0x72, 0xec, 0x63, 0xc1, 0x48, 0xe9, 0x24, 0x42, 0xfd, 0x27, 0xd7, 0x07, 0xb7, 0xa0, 0xa0,
-0xac, 0x95, 0x08, 0x97, 0xbc, 0xa4, 0xcd, 0xbd, 0xe7, 0xdf, 0x80, 0x06, 0x91, 0x2c, 0x29, 0x4d,
-0xb6, 0x64, 0xde, 0x6f, 0x40, 0x6d, 0x3c, 0x5d, 0x8d, 0x41, 0x09, 0x1e, 0xfc, 0xf6, 0x4d, 0xd1,
-0x25, 0xb2, 0x82, 0x9d, 0x62, 0x95, 0xc8, 0x9a, 0x0f, 0xad, 0xe1, 0xc9, 0x82, 0xed, 0xc0, 0x12,
-0xbb, 0x34, 0x37, 0x50, 0x8a, 0x62, 0xe8, 0x69, 0x2c, 0x65, 0x65, 0x54, 0x41, 0x39, 0xae, 0x16,
-0xb0, 0xf0, 0xaf, 0xcc, 0xe7, 0xaf, 0x90, 0x9e, 0xea, 0x9a, 0xa2, 0xa4, 0x0f, 0xba, 0xcd, 0xd7,
-0x0e, 0xf9, 0x46, 0x19, 0x4d, 0x35, 0xc9, 0x4a, 0x76, 0x58, 0x40, 0x5d, 0xb8, 0x57, 0x15, 0x48,
-0xed, 0x2e, 0x94, 0x0e, 0x8a, 0xeb, 0x41, 0xcb, 0x1f, 0xb3, 0xd4, 0xa6, 0x04, 0xa8, 0x13, 0xb5,
-0x49, 0xcb, 0x18, 0xe6, 0x9a, 0x01, 0xcc, 0x1a, 0xcb, 0x2f, 0xd5, 0x3f, 0xc5, 0x49, 0xcb, 0x4c,
-0xa3, 0x47, 0xad, 0x39, 0x7b, 0x23, 0x6e, 0x07, 0xcc, 0xe9, 0xc5, 0xcf, 0x31, 0xbe, 0x65, 0xb7,
-0xbf, 0xbb, 0xf5, 0xc8, 0x9b, 0xdb, 0x54, 0xf0, 0x34, 0x04, 0xb2, 0x15, 0x31, 0x24, 0x67, 0x2f,
-0xab, 0x36, 0x25, 0x39, 0x59, 0x35, 0x6d, 0x2a, 0xe4, 0x18, 0xfe, 0x02, 0xc0, 0xec, 0x51, 0xda,
-0x0b, 0xcf, 0x61, 0xcc, 0x61, 0xd1, 0xc1, 0xdb, 0xca, 0xe8, 0x44, 0xf6, 0xaa, 0x02, 0x94, 0x0d,
-0x8c, 0x16, 0xa5, 0x1d, 0x87, 0x22, 0x71, 0x24, 0x9d, 0x22, 0x3a, 0x1c, 0xb4, 0x11, 0x8e, 0x04,
-0x6a, 0xf7, 0x90, 0xec, 0x2c, 0xe6, 0x70, 0xe4, 0xac, 0xe6, 0x48, 0xeb, 0x04, 0xf1, 0xd4, 0xf6,
-0x1c, 0xfc, 0x9a, 0x00, 0x6e, 0x04, 0xfc, 0x07, 0x70, 0x0b, 0xd6, 0x0e, 0x3a, 0x11, 0xee, 0x11,
-0x46, 0x10, 0x64, 0x0c, 0x38, 0x07, 0x04, 0x02, 0xc4, 0xfd, 0x12, 0xfb, 0xb4, 0xf9, 0x10, 0xf9,
-0x66, 0xf8, 0x38, 0xf7, 0x2c, 0xf5, 0xd8, 0xf2, 0xe6, 0xf0, 0xc2, 0xf0, 0x9c, 0xf3, 0xca, 0xf9,
-0xa2, 0x02, 0x24, 0x0c, 0x7e, 0x14, 0xb4, 0x19, 0x66, 0x1b, 0xc8, 0x19, 0xf8, 0x15, 0x98, 0x10,
-0x56, 0x0a, 0x58, 0x03, 0x36, 0xfb, 0x18, 0xf2, 0x4c, 0xe8, 0x37, 0xdf, 0xd9, 0xd8, 0x81, 0xd7,
-0xdf, 0xdc, 0x0e, 0xe9, 0x5c, 0xfa, 0x4e, 0x0d, 0x75, 0x1e, 0xa9, 0x2a, 0x9d, 0x30, 0x6f, 0x30,
-0x55, 0x2b, 0xb3, 0x22, 0x70, 0x17, 0xfa, 0x09, 0x6a, 0xfa, 0x72, 0xe9, 0xb5, 0xd8, 0xdd, 0xca,
-0xc9, 0xc2, 0x2d, 0xc3, 0x4b, 0xcd, 0x59, 0xe0, 0x4a, 0xf9, 0x9a, 0x13, 0x71, 0x2a, 0xa3, 0x3a,
-0xb5, 0x42, 0xfd, 0x42, 0xb7, 0x3c, 0x0d, 0x31, 0xbb, 0x20, 0x5c, 0x0c, 0xe0, 0xf4, 0x47, 0xdc,
-0xe5, 0xc5, 0x3f, 0xb5, 0xf3, 0xad, 0x27, 0xb2, 0x43, 0xc2, 0x23, 0xdc, 0xce, 0xfb, 0xc0, 0x1b,
-0x27, 0x37, 0x5f, 0x4a, 0x01, 0x54, 0x0f, 0x54, 0x3f, 0x4b, 0xcd, 0x3a, 0xcd, 0x23, 0xbc, 0x07,
-0x00, 0xe9, 0x65, 0xcb, 0xd9, 0xb2, 0x76, 0xa3, 0xbe, 0x9f, 0xd0, 0xa8, 0x0b, 0xbe, 0xb5, 0xdc,
-0x58, 0x00, 0xb1, 0x23, 0xdf, 0x41, 0x66, 0x57, 0x3e, 0x62, 0x84, 0x61, 0x86, 0x55, 0x7f, 0x3f,
-0x77, 0x21, 0xa4, 0xfe, 0xe3, 0xda, 0xf7, 0xba, 0x66, 0xa3, 0x3a, 0x97, 0x10, 0x98, 0xc0, 0xa5,
-0xeb, 0xbe, 0xc7, 0xe0, 0x14, 0x07, 0xa9, 0x2c, 0xcb, 0x4c, 0x48, 0x63, 0x46, 0x6d, 0x7e, 0x69,
-0x3c, 0x58, 0xd3, 0x3b, 0x02, 0x18, 0x3e, 0xf1, 0xa3, 0xcc, 0xc5, 0xae, 0x0e, 0x9b, 0x42, 0x93,
-0xbc, 0x97, 0x1a, 0xa8, 0x3d, 0xc3, 0x90, 0xe6, 0x26, 0x0e, 0x1b, 0x35, 0xd0, 0x55, 0xc4, 0x6b,
-0x30, 0x73, 0xd0, 0x6a, 0x2f, 0x54, 0x21, 0x33, 0x8e, 0x0c, 0xd8, 0xe5, 0xa5, 0xc3, 0x8a, 0xa9,
-0xf8, 0x99, 0x72, 0x95, 0x3a, 0x9c, 0x05, 0xae, 0x01, 0xca, 0x06, 0xee, 0x0c, 0x16, 0x7b, 0x3c,
-0x98, 0x5b, 0x24, 0x6e, 0xc0, 0x70, 0x74, 0x63, 0x09, 0x49, 0x8b, 0x26, 0x76, 0x01, 0x65, 0xde,
-0x03, 0xc1, 0xb3, 0xab, 0xac, 0x9f, 0x90, 0x9d, 0x9a, 0xa5, 0xfb, 0xb7, 0x1d, 0xd4, 0x9e, 0xf7,
-0x1b, 0x1e, 0xf1, 0x41, 0xd4, 0x5c, 0x16, 0x6a, 0x90, 0x67, 0x7c, 0x56, 0x13, 0x3b, 0x54, 0x1a,
-0x16, 0xf9, 0x09, 0xdb, 0xb7, 0xc2, 0xb7, 0xb1, 0x08, 0xa9, 0x10, 0xa9, 0x55, 0xb2, 0x27, 0xc5,
-0x4d, 0xe0, 0x5a, 0x01, 0x85, 0x23, 0x87, 0x41, 0x24, 0x56, 0xe2, 0x5d, 0xf8, 0x57, 0xb1, 0x46,
-0xdb, 0x2d, 0xd4, 0x11, 0x44, 0xf6, 0xb5, 0xdd, 0x6b, 0xca, 0x83, 0xbd, 0xcd, 0xb7, 0xd5, 0xb9,
-0xd1, 0xc3, 0x43, 0xd5, 0xee, 0xec, 0xd4, 0x07, 0x7b, 0x22, 0xb9, 0x38, 0xdb, 0x46, 0xd1, 0x4a,
-0x9d, 0x44, 0xe9, 0x35, 0xe1, 0x21, 0x96, 0x0b, 0xcc, 0xf5, 0x25, 0xe3, 0xf7, 0xd4, 0x61, 0xcc,
-0xd7, 0xc9, 0x6d, 0xcd, 0x85, 0xd6, 0x78, 0xe4, 0xa4, 0xf5, 0x5a, 0x08, 0x46, 0x1a, 0xf5, 0x28,
-0x53, 0x32, 0xdd, 0x34, 0x7b, 0x30, 0x27, 0x26, 0xde, 0x17, 0x12, 0x08, 0x28, 0xf9, 0xdc, 0xec,
-0x76, 0xe4, 0x5f, 0xe0, 0x41, 0xe0, 0x87, 0xe3, 0x00, 0xe9, 0xf0, 0xef, 0xf8, 0xf7, 0xd2, 0x00,
-0x30, 0x0a, 0x20, 0x13, 0x22, 0x1a, 0xa7, 0x1d, 0xf5, 0x1c, 0x0a, 0x18, 0x4c, 0x10, 0xb4, 0x07,
-0x38, 0x00, 0xf0, 0xfa, 0x32, 0xf8, 0x9e, 0xf7, 0x10, 0xf8, 0x2a, 0xf8, 0x2e, 0xf7, 0x4c, 0xf5,
-0x9c, 0xf3, 0xb0, 0xf3, 0x66, 0xf6, 0x70, 0xfb, 0xa0, 0x01, 0x46, 0x07, 0xf8, 0x0a, 0x6c, 0x0c,
-0x34, 0x0c, 0xca, 0x0b, 0x14, 0x0c, 0x52, 0x0d, 0xc6, 0x0e, 0x4a, 0x0f, 0x3a, 0x0d, 0xc4, 0x07,
-0x00, 0xff, 0x52, 0xf4, 0x4a, 0xea, 0x4b, 0xe3, 0x15, 0xe1, 0xc0, 0xe3, 0x32, 0xea, 0x96, 0xf2,
-0x82, 0xfb, 0x0c, 0x04, 0x4e, 0x0c, 0x9c, 0x14, 0x85, 0x1c, 0x21, 0x23, 0xbf, 0x26, 0xbf, 0x25,
-0x31, 0x1f, 0xf8, 0x12, 0x50, 0x02, 0xd2, 0xef, 0xd1, 0xde, 0x45, 0xd2, 0x57, 0xcc, 0x59, 0xcd,
-0xad, 0xd4, 0xa1, 0xe0, 0x9a, 0xef, 0x50, 0x00, 0x8e, 0x11, 0xf9, 0x21, 0xdf, 0x2f, 0x3b, 0x39,
-0x2f, 0x3c, 0xbd, 0x37, 0xcb, 0x2b, 0x50, 0x19, 0x28, 0x02, 0x60, 0xe9, 0x8b, 0xd2, 0x57, 0xc1,
-0x3b, 0xb8, 0x99, 0xb8, 0x0f, 0xc2, 0x43, 0xd3, 0xd6, 0xe9, 0x4c, 0x03, 0x85, 0x1c, 0xd3, 0x32,
-0x85, 0x43, 0xa7, 0x4c, 0x1f, 0x4d, 0x69, 0x44, 0x63, 0x33, 0x72, 0x1b, 0xf0, 0xfe, 0xd9, 0xe0,
-0x59, 0xc5, 0x47, 0xb0, 0x78, 0xa5, 0xbc, 0xa6, 0x4f, 0xb4, 0x59, 0xcc, 0x32, 0xeb, 0x78, 0x0c,
-0x85, 0x2b, 0xa7, 0x44, 0x34, 0x55, 0xe0, 0x5b, 0x6c, 0x58, 0x5d, 0x4b, 0xbf, 0x35, 0x54, 0x19,
-0x46, 0xf8, 0xf1, 0xd5, 0xc3, 0xb6, 0xca, 0x9f, 0x68, 0x95, 0x3c, 0x9a, 0xcd, 0xad, 0x2f, 0xcd,
-0xd6, 0xf2, 0xcc, 0x18, 0xc5, 0x39, 0x63, 0x52, 0xec, 0x60, 0xd0, 0x64, 0x3e, 0x5e, 0xcf, 0x4d,
-0xc7, 0x34, 0xa0, 0x14, 0xc6, 0xef, 0x1f, 0xca, 0x36, 0xa9, 0xca, 0x92, 0x90, 0x8b, 0x8e, 0x95,
-0x1d, 0xaf, 0xc1, 0xd3, 0xbc, 0xfc, 0x9f, 0x23, 0xb9, 0x43, 0x48, 0x5a, 0x6a, 0x66, 0xb8, 0x67,
-0x86, 0x5e, 0x59, 0x4b, 0x71, 0x2f, 0x68, 0x0c, 0x52, 0xe5, 0xc3, 0xbe, 0xe6, 0x9e, 0xd4, 0x8b,
-0x46, 0x89, 0x42, 0x98, 0xbd, 0xb5, 0x71, 0xdc, 0x6c, 0x05, 0xc7, 0x2a, 0xb5, 0x48, 0x30, 0x5d,
-0x30, 0x67, 0x2c, 0x66, 0x9a, 0x5a, 0x05, 0x45, 0xc5, 0x26, 0x08, 0x02, 0xa1, 0xda, 0xeb, 0xb5,
-0x04, 0x9a, 0x0e, 0x8c, 0x86, 0x8e, 0x08, 0xa1, 0xf9, 0xbf, 0xda, 0xe5, 0x96, 0x0c, 0x15, 0x2f,
-0x0d, 0x4a, 0x94, 0x5b, 0x96, 0x62, 0x8e, 0x5e, 0xfd, 0x4f, 0x13, 0x38, 0xbc, 0x18, 0x0c, 0xf5,
-0x3d, 0xd1, 0x87, 0xb2, 0x80, 0x9d, 0x74, 0x95, 0x8e, 0x9b, 0xb5, 0xae, 0xc7, 0xcb, 0xf4, 0xed,
-0x70, 0x10, 0xef, 0x2e, 0x73, 0x46, 0xbd, 0x54, 0xd6, 0x58, 0x5b, 0x52, 0x57, 0x42, 0x6b, 0x2a,
-0x1e, 0x0d, 0xe4, 0xed, 0x75, 0xd0, 0xd9, 0xb8, 0xb4, 0xa9, 0x52, 0xa5, 0x05, 0xac, 0x41, 0xbd,
-0x7d, 0xd6, 0x2e, 0xf4, 0xe0, 0x11, 0xe3, 0x2b, 0x09, 0x3f, 0x1f, 0x49, 0x73, 0x49, 0x8f, 0x40,
-0x43, 0x30, 0xa0, 0x1a, 0xae, 0x02, 0x04, 0xeb, 0x31, 0xd6, 0xf7, 0xc5, 0xed, 0xbb, 0x31, 0xb9,
-0xdd, 0xbe, 0xa3, 0xcc, 0x17, 0xe1, 0xfe, 0xf8, 0xe2, 0x10, 0x11, 0x25, 0xb7, 0x32, 0x2f, 0x38,
-0x95, 0x35, 0x75, 0x2c, 0xcd, 0x1e, 0x04, 0x0f, 0x0a, 0xff, 0x72, 0xf0, 0x95, 0xe3, 0x29, 0xd9,
-0xb7, 0xd1, 0xb5, 0xce, 0x65, 0xd1, 0x6d, 0xda, 0xcc, 0xe8, 0x0a, 0xfa, 0x32, 0x0b, 0xe2, 0x18,
-0x15, 0x21, 0x11, 0x23, 0xf1, 0x1f, 0x78, 0x19, 0x86, 0x11, 0x90, 0x09, 0x36, 0x02, 0xa4, 0xfb,
-0x24, 0xf5, 0x78, 0xee, 0x1c, 0xe8, 0xbb, 0xe3, 0xd9, 0xe2, 0x5a, 0xe6, 0xd8, 0xed, 0x6e, 0xf7,
-0xda, 0x00, 0xca, 0x07, 0x56, 0x0b, 0xda, 0x0b, 0xba, 0x0a, 0x4c, 0x09, 0x62, 0x08, 0x80, 0x08,
-0x38, 0x09, 0x9e, 0x09, 0x6e, 0x08, 0xd0, 0x04, 0x36, 0xff, 0xf4, 0xf8, 0xc2, 0xf3, 0x82, 0xf0,
-0x90, 0xef, 0x2c, 0xf0, 0x4e, 0xf1, 0x56, 0xf2, 0x36, 0xf3, 0xa2, 0xf4, 0x72, 0xf7, 0x42, 0xfc,
-0xca, 0x02, 0xbe, 0x0a, 0xfe, 0x12, 0xd2, 0x19, 0x61, 0x1d, 0x81, 0x1c, 0x14, 0x17, 0xc2, 0x0d,
-0x40, 0x02, 0x24, 0xf6, 0x1c, 0xeb, 0x61, 0xe2, 0x65, 0xdc, 0xbf, 0xd9, 0x97, 0xda, 0x37, 0xdf,
-0x62, 0xe7, 0xfa, 0xf2, 0x22, 0x01, 0xae, 0x10, 0xcb, 0x1f, 0x2f, 0x2c, 0x6b, 0x33, 0xa7, 0x33,
-0x13, 0x2c, 0x23, 0x1d, 0x62, 0x09, 0xd0, 0xf3, 0xeb, 0xdf, 0x37, 0xd0, 0xa5, 0xc6, 0x67, 0xc3,
-0xa5, 0xc6, 0x99, 0xcf, 0x6f, 0xdd, 0x46, 0xef, 0x16, 0x04, 0x1a, 0x1a, 0xcb, 0x2e, 0x79, 0x3f,
-0xc1, 0x48, 0x0b, 0x48, 0x0d, 0x3c, 0x13, 0x26, 0xa6, 0x09, 0xe2, 0xeb, 0x53, 0xd1, 0xa9, 0xbd,
-0xb7, 0xb2, 0xef, 0xb0, 0x33, 0xb7, 0x91, 0xc4, 0xa1, 0xd7, 0x64, 0xef, 0x4c, 0x0a, 0xf1, 0x25,
-0x49, 0x3f, 0x53, 0x52, 0x68, 0x5b, 0x0e, 0x57, 0x2d, 0x45, 0xf5, 0x27, 0xb0, 0x04, 0x47, 0xe1,
-0x4f, 0xc3, 0x39, 0xae, 0xb0, 0xa3, 0xb6, 0xa3, 0xdb, 0xac, 0x0f, 0xbe, 0x07, 0xd6, 0x5a, 0xf3,
-0xb6, 0x13, 0xff, 0x33, 0xff, 0x4f, 0x10, 0x63, 0x1e, 0x69, 0xba, 0x5f, 0xa9, 0x47, 0xfb, 0x24,
-0x52, 0xfd, 0x39, 0xd7, 0xcf, 0xb7, 0xcc, 0xa2, 0x3e, 0x99, 0x00, 0x9b, 0x2a, 0xa7, 0x5d, 0xbc,
-0x85, 0xd9, 0xf4, 0xfb, 0x81, 0x20, 0xe7, 0x42, 0x56, 0x5e, 0x2e, 0x6e, 0x16, 0x6f, 0x50, 0x60,
-0xe3, 0x43, 0x4f, 0x1e, 0x5e, 0xf5, 0xd9, 0xce, 0xe7, 0xaf, 0xdc, 0x9b, 0xd6, 0x93, 0xd8, 0x97,
-0x52, 0xa7, 0x03, 0xc1, 0x9b, 0xe2, 0x86, 0x08, 0x3f, 0x2e, 0x11, 0x4f, 0xc8, 0x66, 0x6c, 0x71,
-0x56, 0x6d, 0x0e, 0x5b, 0x21, 0x3d, 0x88, 0x17, 0x40, 0xef, 0x93, 0xc9, 0x85, 0xab, 0xc4, 0x98,
-0x9e, 0x92, 0xac, 0x99, 0x25, 0xad, 0x0d, 0xcb, 0x74, 0xef, 0x9c, 0x15, 0xbf, 0x38, 0xbf, 0x54,
-0xac, 0x66, 0x2c, 0x6c, 0xce, 0x64, 0x8f, 0x51, 0x99, 0x34, 0xd6, 0x10, 0x94, 0xea, 0xf5, 0xc6,
-0xfc, 0xaa, 0xac, 0x9a, 0xb6, 0x97, 0x7e, 0xa2, 0x65, 0xb9, 0x23, 0xd9, 0xc6, 0xfc, 0x49, 0x1f,
-0xdf, 0x3c, 0xb5, 0x52, 0x2c, 0x5f, 0x58, 0x61, 0x0c, 0x59, 0xe3, 0x46, 0x09, 0x2c, 0xe6, 0x0a,
-0x36, 0xe7, 0x61, 0xc6, 0xab, 0xad, 0xd8, 0xa0, 0xf2, 0xa1, 0x0f, 0xb0, 0x97, 0xc8, 0xf8, 0xe6,
-0x70, 0x06, 0xbb, 0x22, 0x85, 0x39, 0x55, 0x49, 0x85, 0x51, 0xd7, 0x51, 0xff, 0x49, 0xe1, 0x39,
-0xfd, 0x21, 0xac, 0x04, 0x5c, 0xe5, 0x8d, 0xc9, 0xf9, 0xb5, 0x33, 0xae, 0xf3, 0xb2, 0xa9, 0xc2,
-0x59, 0xd9, 0xb8, 0xf2, 0x00, 0x0b, 0x8f, 0x1f, 0x53, 0x2f, 0xf1, 0x39, 0x5f, 0x3f, 0x3b, 0x3f,
-0x21, 0x39, 0x03, 0x2c, 0x72, 0x18, 0x70, 0x00, 0xac, 0xe7, 0x7b, 0xd2, 0x1b, 0xc5, 0xaf, 0xc1,
-0xe9, 0xc7, 0xad, 0xd5, 0x3a, 0xe7, 0x3a, 0xf9, 0x8e, 0x09, 0xec, 0x16, 0xb9, 0x20, 0x45, 0x27,
-0xb1, 0x2a, 0xc1, 0x2a, 0xd3, 0x26, 0x37, 0x1e, 0xf4, 0x10, 0xe8, 0x00, 0xac, 0xf0, 0x21, 0xe3,
-0x0f, 0xdb, 0x9d, 0xd9, 0x0f, 0xde, 0x6c, 0xe6, 0x74, 0xf0, 0x1a, 0xfa, 0x72, 0x02, 0x22, 0x09,
-0x16, 0x0e, 0xba, 0x11, 0x80, 0x14, 0x3c, 0x16, 0x3c, 0x16, 0xfe, 0x13, 0x06, 0x0f, 0xf8, 0x07,
-0xf2, 0xff, 0x90, 0xf8, 0x50, 0xf3, 0x02, 0xf1, 0x68, 0xf1, 0x50, 0xf3, 0xfc, 0xf5, 0x2e, 0xf8,
-0x80, 0xf9, 0x04, 0xfa, 0x36, 0xfa, 0xd8, 0xfa, 0x02, 0xfd, 0x28, 0x01, 0xae, 0x06, 0x94, 0x0c,
-0x62, 0x11, 0xa4, 0x13, 0x06, 0x13, 0x28, 0x10, 0xb8, 0x0b, 0x06, 0x07, 0x6a, 0x02, 0xd0, 0xfd,
-0xda, 0xf8, 0x8c, 0xf3, 0xa6, 0xed, 0xf2, 0xe7, 0xe2, 0xe3, 0x0b, 0xe3, 0x12, 0xe7, 0x80, 0xf0,
-0x54, 0xfe, 0xd0, 0x0d, 0x22, 0x1c, 0xfb, 0x25, 0x05, 0x2a, 0x75, 0x28, 0x95, 0x22, 0xcc, 0x19,
-0x4c, 0x0f, 0xb2, 0x03, 0x3a, 0xf7, 0x30, 0xea, 0x21, 0xdd, 0xf7, 0xd1, 0x6b, 0xcb, 0xe3, 0xcb,
-0x85, 0xd4, 0x68, 0xe5, 0xfc, 0xfb, 0x76, 0x14, 0xf9, 0x29, 0x05, 0x39, 0x6d, 0x3f, 0xad, 0x3d,
-0x6b, 0x35, 0x37, 0x28, 0xc8, 0x17, 0xfe, 0x04, 0xe0, 0xf0, 0x91, 0xdc, 0x3f, 0xca, 0x79, 0xbc,
-0x61, 0xb6, 0x47, 0xba, 0xed, 0xc8, 0xdf, 0xe0, 0xae, 0xfe, 0x53, 0x1d, 0xa1, 0x37, 0xcb, 0x49,
-0xbf, 0x51, 0xa1, 0x4f, 0x01, 0x45, 0x89, 0x33, 0xcf, 0x1c, 0x88, 0x02, 0xba, 0xe6, 0x1b, 0xcc,
-0x2b, 0xb6, 0x62, 0xa8, 0x7c, 0xa5, 0xff, 0xae, 0x63, 0xc4, 0xd9, 0xe2, 0xea, 0x05, 0x6b, 0x28,
-0x47, 0x45, 0xb2, 0x58, 0xc4, 0x60, 0xfc, 0x5c, 0xc7, 0x4e, 0x25, 0x38, 0x0c, 0x1b, 0x3e, 0xfa,
-0xfd, 0xd8, 0x77, 0xbb, 0xa4, 0xa5, 0xbe, 0x9a, 0x7e, 0x9c, 0xfc, 0xaa, 0xf1, 0xc4, 0xd2, 0xe6,
-0x5c, 0x0c, 0xa3, 0x30, 0xff, 0x4e, 0x76, 0x63, 0x84, 0x6b, 0x04, 0x66, 0xc7, 0x53, 0x7d, 0x37,
-0x4e, 0x14, 0x30, 0xee, 0xf7, 0xc9, 0x93, 0xac, 0xc6, 0x99, 0x76, 0x93, 0x12, 0x9a, 0xa1, 0xac,
-0x49, 0xc9, 0x12, 0xed, 0xb2, 0x13, 0xf7, 0x38, 0x08, 0x58, 0x5c, 0x6c, 0x90, 0x72, 0x4a, 0x69,
-0x0b, 0x52, 0x4d, 0x30, 0xf0, 0x08, 0xf5, 0xe0, 0xdd, 0xbd, 0x0c, 0xa4, 0x00, 0x96, 0x2e, 0x94,
-0x10, 0x9e, 0x79, 0xb2, 0xc7, 0xcf, 0x96, 0xf3, 0x36, 0x1a, 0x27, 0x3f, 0x5c, 0x5d, 0xb8, 0x6f,
-0x78, 0x72, 0xd8, 0x64, 0x45, 0x49, 0xa5, 0x24, 0x86, 0xfc, 0xb5, 0xd6, 0xab, 0xb7, 0xec, 0xa2,
-0x7c, 0x99, 0x00, 0x9b, 0xa2, 0xa6, 0xb3, 0xbb, 0xf9, 0xd8, 0x14, 0xfc, 0x97, 0x21, 0x81, 0x44,
-0x82, 0x5f, 0x66, 0x6d, 0x42, 0x6b, 0x76, 0x59, 0xd7, 0x3b, 0xb2, 0x17, 0xc8, 0xf2, 0x07, 0xd2,
-0xd9, 0xb8, 0xfa, 0xa8, 0xfe, 0xa2, 0x60, 0xa6, 0x99, 0xb2, 0x59, 0xc7, 0x51, 0xe3, 0x3a, 0x04,
-0x45, 0x26, 0xe3, 0x44, 0x7a, 0x5a, 0x48, 0x63, 0x5e, 0x5d, 0x6b, 0x4a, 0x61, 0x2e, 0x46, 0x0e,
-0xf6, 0xee, 0x11, 0xd4, 0x39, 0xc0, 0x2f, 0xb4, 0x93, 0xb0, 0x09, 0xb5, 0x4d, 0xc1, 0xb7, 0xd4,
-0x18, 0xee, 0xac, 0x0a, 0x09, 0x27, 0x1b, 0x3f, 0x93, 0x4e, 0xcb, 0x52, 0x6f, 0x4b, 0xf9, 0x39,
-0x35, 0x22, 0x1a, 0x08, 0x50, 0xef, 0xa1, 0xda, 0xc9, 0xcb, 0xb1, 0xc3, 0x4f, 0xc2, 0xb7, 0xc7,
-0x07, 0xd3, 0x67, 0xe3, 0x24, 0xf7, 0x66, 0x0c, 0x87, 0x20, 0xd1, 0x30, 0xf5, 0x3a, 0x0d, 0x3d,
-0x35, 0x37, 0x5f, 0x2a, 0xee, 0x18, 0xd2, 0x05, 0xda, 0xf3, 0x20, 0xe5, 0x0d, 0xdb, 0x71, 0xd6,
-0x0b, 0xd7, 0x41, 0xdc, 0xd0, 0xe4, 0x70, 0xef, 0x4a, 0xfb, 0x56, 0x07, 0xc0, 0x12, 0x97, 0x1c,
-0x7d, 0x23, 0x09, 0x26, 0xab, 0x23, 0xc7, 0x1c, 0x7a, 0x12, 0xec, 0x06, 0x10, 0xfc, 0xa4, 0xf3,
-0x7e, 0xee, 0xde, 0xec, 0xfe, 0xed, 0x8c, 0xf0, 0x64, 0xf3, 0xd6, 0xf5, 0x0e, 0xf8, 0xfc, 0xfa,
-0x54, 0xff, 0xea, 0x04, 0xfa, 0x0a, 0xf4, 0x0f, 0x4c, 0x12, 0xc8, 0x11, 0xf6, 0x0e, 0x02, 0x0b,
-0x7a, 0x07, 0x4a, 0x05, 0x9a, 0x04, 0xbc, 0x04, 0x50, 0x04, 0xf6, 0x01, 0x2e, 0xfd, 0x8a, 0xf6,
-0xc6, 0xef, 0xf6, 0xea, 0xe8, 0xe9, 0x22, 0xed, 0xa8, 0xf3, 0xb0, 0xfb, 0x60, 0x03, 0xc2, 0x09,
-0xcc, 0x0e, 0x10, 0x13, 0xe8, 0x16, 0x46, 0x1a, 0x3c, 0x1c, 0x90, 0x1b, 0xf2, 0x16, 0xaa, 0x0d,
-0x96, 0x00, 0x74, 0xf1, 0x51, 0xe3, 0xdd, 0xd8, 0x69, 0xd4, 0x9d, 0xd6, 0x8b, 0xde, 0x62, 0xea,
-0x18, 0xf8, 0x14, 0x06, 0x8a, 0x13, 0xd9, 0x1f, 0x17, 0x2a, 0xcb, 0x30, 0x93, 0x32, 0x67, 0x2e,
-0xcd, 0x23, 0x62, 0x13, 0xc4, 0xfe, 0xf0, 0xe8, 0x19, 0xd5, 0xa5, 0xc6, 0xc9, 0xbf, 0xb5, 0xc1,
-0xb1, 0xcb, 0x37, 0xdc, 0xd6, 0xf0, 0x6e, 0x07, 0xa1, 0x1d, 0xff, 0x30, 0x87, 0x3f, 0xe5, 0x46,
-0x57, 0x46, 0x45, 0x3d, 0x85, 0x2c, 0xba, 0x15, 0x24, 0xfb, 0xb1, 0xdf, 0x25, 0xc7, 0x29, 0xb5,
-0x7b, 0xac, 0xcb, 0xae, 0x2d, 0xbc, 0xe9, 0xd2, 0xde, 0xef, 0x00, 0x0f, 0x1f, 0x2c, 0xbb, 0x43,
-0xe7, 0x52, 0x1c, 0x58, 0x21, 0x53, 0xf5, 0x44, 0x0b, 0x2f, 0x7e, 0x13, 0x72, 0xf4, 0x33, 0xd5,
-0x69, 0xb9, 0x56, 0xa5, 0x74, 0x9c, 0x16, 0xa1, 0x9f, 0xb3, 0x73, 0xd1, 0x0e, 0xf6, 0x6e, 0x1b,
-0x23, 0x3c, 0x49, 0x54, 0x86, 0x61, 0x3c, 0x63, 0xea, 0x59, 0x79, 0x47, 0x9f, 0x2d, 0x82, 0x0e,
-0x26, 0xec, 0xcf, 0xc9, 0xf9, 0xab, 0x58, 0x97, 0x62, 0x90, 0x84, 0x99, 0x73, 0xb2, 0xff, 0xd6,
-0xd0, 0x00, 0xb7, 0x28, 0x31, 0x49, 0x14, 0x5f, 0x1a, 0x69, 0x42, 0x67, 0xf0, 0x5a, 0xcb, 0x45,
-0x7f, 0x29, 0xba, 0x07, 0x01, 0xe3, 0x1d, 0xbf, 0x3a, 0xa1, 0xc2, 0x8e, 0xe4, 0x8b, 0x84, 0x9a,
-0x97, 0xb8, 0xc5, 0xe0, 0x88, 0x0b, 0x57, 0x32, 0x5d, 0x50, 0x62, 0x63, 0x74, 0x6a, 0x26, 0x66,
-0x9a, 0x57, 0x43, 0x40, 0xe7, 0x21, 0x32, 0xfe, 0x85, 0xd8, 0x4d, 0xb5, 0x38, 0x9a, 0x1e, 0x8c,
-0x96, 0x8e, 0xca, 0xa1, 0x95, 0xc2, 0xe8, 0xea, 0xd4, 0x13, 0x87, 0x37, 0x37, 0x52, 0x20, 0x62,
-0xa6, 0x66, 0x38, 0x60, 0xcd, 0x4f, 0xe1, 0x36, 0x1a, 0x17, 0x44, 0xf3, 0x3d, 0xcf, 0xf7, 0xaf,
-0x76, 0x9a, 0x88, 0x92, 0xbe, 0x99, 0x35, 0xaf, 0x5f, 0xcf, 0xa8, 0xf4, 0x4a, 0x19, 0x59, 0x38,
-0xd9, 0x4e, 0x3c, 0x5b, 0x2a, 0x5d, 0xab, 0x54, 0xf9, 0x42, 0x93, 0x29, 0xe2, 0x0a, 0x4c, 0xea,
-0xa7, 0xcb, 0x3b, 0xb3, 0x26, 0xa4, 0xca, 0xa0, 0x62, 0xa9, 0x2d, 0xbd, 0x13, 0xd9, 0x20, 0xf9,
-0x9e, 0x18, 0x89, 0x33, 0xdd, 0x46, 0xa1, 0x50, 0x13, 0x50, 0xbf, 0x45, 0x23, 0x33, 0xae, 0x1a,
-0x94, 0xff, 0xfc, 0xe4, 0x1b, 0xce, 0x31, 0xbd, 0x05, 0xb4, 0x27, 0xb3, 0x43, 0xbb, 0x7d, 0xcb,
-0x5b, 0xe2, 0xa8, 0xfc, 0xc0, 0x16, 0xa5, 0x2c, 0x69, 0x3b, 0x6f, 0x41, 0x51, 0x3e, 0x3d, 0x33,
-0x35, 0x22, 0x44, 0x0e, 0x10, 0xfa, 0x0c, 0xe8, 0x63, 0xd9, 0xf3, 0xce, 0x07, 0xc9, 0x37, 0xc8,
-0x2d, 0xcd, 0x31, 0xd8, 0xa2, 0xe8, 0x4c, 0xfc, 0xda, 0x0f, 0xcf, 0x1f, 0xd1, 0x29, 0xb1, 0x2c,
-0xd1, 0x28, 0xb1, 0x1f, 0xac, 0x13, 0x18, 0x07, 0xe2, 0xfb, 0x8e, 0xf2, 0x32, 0xeb, 0x48, 0xe5,
-0xc9, 0xe0, 0x45, 0xde, 0xe5, 0xde, 0xd2, 0xe3, 0x26, 0xed, 0x4c, 0xf9, 0x7e, 0x05, 0x2a, 0x0f,
-0x9a, 0x14, 0x94, 0x15, 0xfc, 0x12, 0x5c, 0x0e, 0x6e, 0x09, 0x94, 0x05, 0x1e, 0x03, 0x68, 0x01,
-0x66, 0xff, 0x26, 0xfc, 0x7e, 0xf7, 0x5e, 0xf2, 0x4e, 0xee, 0xe8, 0xec, 0x9a, 0xee, 0x94, 0xf2,
-0x0a, 0xf7, 0xcc, 0xfa, 0x18, 0xfd, 0x6a, 0xfe, 0x8c, 0xff, 0x5c, 0x01, 0xa4, 0x04, 0x48, 0x09,
-0x7c, 0x0e, 0xc2, 0x12, 0xb4, 0x14, 0x2e, 0x13, 0xdc, 0x0d, 0x9e, 0x05, 0xf6, 0xfb, 0xba, 0xf2,
-0x2c, 0xeb, 0xc6, 0xe5, 0xb5, 0xe2, 0x11, 0xe2, 0xf2, 0xe3, 0x76, 0xe8, 0x9c, 0xef, 0x1a, 0xf9,
-0x6a, 0x04, 0x80, 0x10, 0xe2, 0x1b, 0xf1, 0x24, 0xe9, 0x29, 0x45, 0x29, 0x3d, 0x22, 0x78, 0x15,
-0x84, 0x04, 0x20, 0xf2, 0x1b, 0xe1, 0xa7, 0xd3, 0xd7, 0xcb, 0x1b, 0xca, 0x6b, 0xce, 0xd9, 0xd7,
-0x70, 0xe5, 0xfc, 0xf5, 0x28, 0x08, 0x74, 0x1a, 0x11, 0x2b, 0x1f, 0x38, 0x11, 0x3f, 0xdd, 0x3d,
-0x2f, 0x33, 0xd5, 0x1f, 0x54, 0x06, 0xdc, 0xea, 0xd7, 0xd1, 0x69, 0xbf, 0xe9, 0xb5, 0xc9, 0xb5,
-0xf5, 0xbd, 0xb9, 0xcc, 0x49, 0xe0, 0xdc, 0xf6, 0xc8, 0x0e, 0x2d, 0x26, 0x15, 0x3b, 0xbd, 0x4a,
-0x33, 0x52, 0x49, 0x4e, 0x55, 0x3e, 0x6d, 0x23, 0xe2, 0x01, 0x4d, 0xdf, 0xb9, 0xc1, 0x8d, 0xad,
-0xee, 0xa4, 0x62, 0xa7, 0x0f, 0xb3, 0x15, 0xc6, 0x23, 0xde, 0xb4, 0xf9, 0x94, 0x16, 0xb5, 0x32,
-0x0f, 0x4b, 0xf8, 0x5b, 0x74, 0x61, 0xf0, 0x58, 0x59, 0x42, 0x8f, 0x20, 0x34, 0xf9, 0xd5, 0xd2,
-0xbd, 0xb3, 0x08, 0xa0, 0x06, 0x99, 0xce, 0x9d, 0x9f, 0xac, 0x53, 0xc3, 0x03, 0xe0, 0x6e, 0x00,
-0xf9, 0x21, 0x6f, 0x41, 0xe0, 0x5a, 0xec, 0x69, 0xee, 0x6a, 0x90, 0x5c, 0x51, 0x40, 0x56, 0x1a,
-0x48, 0xf0, 0x0b, 0xc9, 0x26, 0xaa, 0x88, 0x97, 0x00, 0x92, 0xc0, 0x98, 0x52, 0xaa, 0xd9, 0xc4,
-0x10, 0xe6, 0xa4, 0x0a, 0x0d, 0x2f, 0xeb, 0x4e, 0x28, 0x66, 0x9c, 0x70, 0x18, 0x6c, 0xca, 0x58,
-0x65, 0x39, 0x42, 0x12, 0xc6, 0xe8, 0xd5, 0xc2, 0x88, 0xa5, 0x7c, 0x94, 0x98, 0x90, 0x9c, 0x99,
-0x47, 0xae, 0x85, 0xcc, 0x00, 0xf1, 0x6c, 0x17, 0xfb, 0x3a, 0x74, 0x57, 0x38, 0x69, 0xea, 0x6d,
-0xda, 0x64, 0x5b, 0x4f, 0x23, 0x30, 0xc2, 0x0a, 0xde, 0xe3, 0x5b, 0xc0, 0x38, 0xa5, 0x0a, 0x96,
-0x6c, 0x94, 0x2a, 0xa0, 0x0f, 0xb8, 0xdd, 0xd8, 0x1c, 0xfe, 0xa3, 0x22, 0xcd, 0x41, 0x52, 0x58,
-0xfe, 0x63, 0x12, 0x64, 0xfc, 0x58, 0x17, 0x44, 0x27, 0x27, 0x00, 0x05, 0x63, 0xe1, 0xd5, 0xc0,
-0x86, 0xa8, 0x2e, 0x9c, 0x9e, 0x9d, 0x6d, 0xac, 0x5d, 0xc6, 0xfc, 0xe6, 0x60, 0x09, 0x7f, 0x28,
-0xdd, 0x40, 0xdd, 0x50, 0xb4, 0x57, 0x72, 0x55, 0x9b, 0x4a, 0x0b, 0x38, 0xa9, 0x1e, 0xa2, 0x00,
-0xff, 0xe0, 0x6d, 0xc4, 0x03, 0xb0, 0x92, 0xa7, 0x39, 0xac, 0x05, 0xbd, 0x5d, 0xd6, 0x80, 0xf3,
-0xc4, 0x0f, 0x8f, 0x27, 0xd1, 0x38, 0x29, 0x43, 0xb9, 0x46, 0xbf, 0x43, 0xb7, 0x3a, 0x4f, 0x2b,
-0x5e, 0x16, 0x66, 0xfd, 0x83, 0xe3, 0xcd, 0xcc, 0x01, 0xbe, 0xbd, 0xb9, 0x99, 0xc0, 0x6d, 0xd0,
-0x54, 0xe5, 0x6e, 0xfb, 0x50, 0x0f, 0x11, 0x1f, 0xe1, 0x29, 0x1d, 0x30, 0xff, 0x31, 0xd5, 0x2f,
-0x91, 0x29, 0xd1, 0x1e, 0xb6, 0x0f, 0xbe, 0xfd, 0x18, 0xeb, 0x73, 0xdb, 0xef, 0xd1, 0x39, 0xd0,
-0x1b, 0xd6, 0x8b, 0xe1, 0x86, 0xef, 0x54, 0xfd, 0x40, 0x09, 0x04, 0x12, 0xde, 0x17, 0x3c, 0x1b,
-0x85, 0x1c, 0x0c, 0x1c, 0x88, 0x19, 0x80, 0x14, 0xf6, 0x0c, 0x78, 0x03, 0x40, 0xf9, 0x46, 0xf0,
-0x52, 0xea, 0x44, 0xe8, 0x02, 0xea, 0x78, 0xee, 0x2c, 0xf4, 0xb2, 0xf9, 0x20, 0xfe, 0x18, 0x01,
-0x12, 0x03, 0x94, 0x04, 0x40, 0x06, 0x8e, 0x08, 0x6e, 0x0b, 0x06, 0x0e, 0x92, 0x0f, 0x22, 0x0f,
-0x5c, 0x0c, 0xfa, 0x07, 0xf0, 0x02, 0x46, 0xfe, 0xac, 0xfa, 0x22, 0xf8, 0x30, 0xf6, 0x42, 0xf4,
-0xd8, 0xf1, 0x3c, 0xef, 0x76, 0xed, 0x78, 0xed, 0x58, 0xf0, 0xfc, 0xf6, 0x12, 0x01, 0x08, 0x0d,
-0x4a, 0x18, 0x33, 0x20, 0x11, 0x23, 0xb7, 0x20, 0x22, 0x1a, 0xf0, 0x10, 0xe2, 0x06, 0xdc, 0xfc,
-0x30, 0xf3, 0xe0, 0xe9, 0x07, 0xe1, 0xd5, 0xd9, 0xcf, 0xd5, 0x81, 0xd6, 0x5b, 0xdd, 0xda, 0xea,
-0xa6, 0xfd, 0xbe, 0x12, 0xf5, 0x25, 0xa9, 0x33, 0x85, 0x39, 0xfb, 0x36, 0x95, 0x2d, 0xad, 0x1f,
-0xba, 0x0f, 0xe8, 0xfe, 0x12, 0xee, 0xeb, 0xdd, 0x99, 0xcf, 0x03, 0xc5, 0x85, 0xc0, 0x05, 0xc4,
-0xbd, 0xd0, 0x1a, 0xe6, 0x22, 0x01, 0x7b, 0x1d, 0xf3, 0x35, 0x81, 0x46, 0xeb, 0x4c, 0x45, 0x49,
-0xfb, 0x3c, 0xdd, 0x2a, 0xfc, 0x14, 0x3c, 0xfd, 0xf8, 0xe4, 0x31, 0xce, 0x57, 0xbb, 0x6d, 0xaf,
-0x11, 0xad, 0xe5, 0xb5, 0x11, 0xca, 0x2a, 0xe7, 0xe0, 0x08, 0xbf, 0x29, 0x1f, 0x45, 0xe4, 0x56,
-0x52, 0x5d, 0xd6, 0x57, 0x45, 0x48, 0x37, 0x31, 0x46, 0x15, 0x90, 0xf6, 0x0b, 0xd8, 0xdb, 0xbc,
-0xb8, 0xa8, 0xe6, 0x9e, 0x34, 0xa1, 0x4b, 0xb0, 0x8d, 0xca, 0x5e, 0xec, 0xfa, 0x10, 0xcd, 0x33,
-0x3b, 0x50, 0xdc, 0x62, 0x02, 0x69, 0x08, 0x62, 0x2b, 0x4f, 0x27, 0x33, 0xf8, 0x10, 0x58, 0xec,
-0x77, 0xc9, 0xe3, 0xac, 0xa0, 0x9a, 0x1a, 0x95, 0xd2, 0x9c, 0xe5, 0xb0, 0xe5, 0xce, 0xec, 0xf2,
-0xca, 0x18, 0x33, 0x3c, 0x10, 0x59, 0x8e, 0x6b, 0x74, 0x70, 0x86, 0x66, 0x53, 0x4f, 0xf7, 0x2d,
-0xae, 0x06, 0xa3, 0xde, 0x51, 0xbb, 0x82, 0xa1, 0x3a, 0x94, 0x00, 0x94, 0x06, 0xa0, 0xc9, 0xb6,
-0xd7, 0xd5, 0xe4, 0xf9, 0x71, 0x1f, 0x91, 0x42, 0xf0, 0x5e, 0x30, 0x70, 0x9e, 0x72, 0xf6, 0x64,
-0x25, 0x49, 0x81, 0x23, 0xae, 0xf9, 0xed, 0xd1, 0xb7, 0xb1, 0xe8, 0x9c, 0xea, 0x94, 0x04, 0x99,
-0xb2, 0xa7, 0x71, 0xbf, 0x2b, 0xde, 0x20, 0x01, 0x47, 0x25, 0xbf, 0x46, 0xfa, 0x60, 0x32, 0x6f,
-0xd8, 0x6d, 0x36, 0x5c, 0x4f, 0x3d, 0x76, 0x16, 0x36, 0xee, 0xbd, 0xca, 0x5d, 0xb0, 0x3c, 0xa1,
-0x60, 0x9d, 0xb2, 0xa3, 0xe1, 0xb2, 0xc1, 0xc9, 0x9c, 0xe6, 0x6a, 0x07, 0x0b, 0x29, 0x73, 0x47,
-0xdc, 0x5d, 0xba, 0x67, 0x34, 0x62, 0xf3, 0x4d, 0x05, 0x2f, 0x0e, 0x0b, 0x2a, 0xe8, 0x05, 0xcb,
-0x8f, 0xb6, 0xbb, 0xab, 0x60, 0xaa, 0x83, 0xb1, 0x6d, 0xc0, 0xe1, 0xd5, 0x3a, 0xf0, 0x66, 0x0d,
-0x71, 0x2a, 0x69, 0x43, 0x01, 0x54, 0xf4, 0x58, 0xad, 0x50, 0x07, 0x3d, 0xa7, 0x21, 0x9a, 0x03,
-0x74, 0xe7, 0xe3, 0xd0, 0xa7, 0xc1, 0x81, 0xba, 0x21, 0xbb, 0xc5, 0xc2, 0x7b, 0xd0, 0x13, 0xe3,
-0x2c, 0xf9, 0x96, 0x10, 0xe1, 0x26, 0xc5, 0x38, 0x9f, 0x43, 0x1f, 0x45, 0x2b, 0x3d, 0x23, 0x2d,
-0xec, 0x17, 0x06, 0x01, 0x18, 0xec, 0xad, 0xdb, 0x3d, 0xd1, 0x45, 0xcd, 0x3d, 0xcf, 0x63, 0xd6,
-0x75, 0xe1, 0x56, 0xef, 0x72, 0xfe, 0xa2, 0x0d, 0x2a, 0x1b, 0xcb, 0x25, 0x3b, 0x2c, 0x77, 0x2d,
-0xf9, 0x28, 0x5d, 0x1f, 0x08, 0x12, 0x50, 0x03, 0xc8, 0xf5, 0x50, 0xeb, 0x28, 0xe5, 0x63, 0xe3,
-0x78, 0xe5, 0x22, 0xea, 0x74, 0xf0, 0x20, 0xf7, 0x74, 0xfd, 0x4e, 0x03, 0xf2, 0x08, 0x80, 0x0e,
-0x9e, 0x13, 0x24, 0x17, 0xfa, 0x17, 0x80, 0x15, 0xf4, 0x0f, 0xe6, 0x08, 0x04, 0x02, 0xf6, 0xfc,
-0x7c, 0xfa, 0x4c, 0xfa, 0x2e, 0xfb, 0xd4, 0xfb, 0x2c, 0xfb, 0xd0, 0xf8, 0x90, 0xf5, 0xec, 0xf2,
-0xac, 0xf2, 0xe8, 0xf5, 0x30, 0xfc, 0xae, 0x03, 0x66, 0x0a, 0xf4, 0x0e, 0x12, 0x11, 0x9c, 0x11,
-0x8c, 0x11, 0x98, 0x11, 0xc0, 0x11, 0x2c, 0x11, 0x6e, 0x0e, 0x88, 0x08, 0x4c, 0xff, 0xea, 0xf3,
-0x8a, 0xe8, 0xdb, 0xdf, 0x3d, 0xdc, 0xcb, 0xde, 0xea, 0xe6, 0x82, 0xf2, 0x32, 0xff, 0x10, 0x0b,
-0x60, 0x15, 0xc1, 0x1d, 0x27, 0x24, 0x41, 0x28, 0x37, 0x29, 0xcf, 0x25, 0x25, 0x1d, 0x5a, 0x0f,
-0x96, 0xfd, 0x4a, 0xea, 0x99, 0xd8, 0xbf, 0xcb, 0x45, 0xc6, 0x53, 0xc9, 0x09, 0xd4, 0x78, 0xe4,
-0x0e, 0xf8, 0x16, 0x0c, 0xb5, 0x1e, 0x69, 0x2e, 0xd9, 0x39, 0x77, 0x3f, 0x4b, 0x3e, 0x95, 0x35,
-0xe3, 0x25, 0x88, 0x10, 0xca, 0xf7, 0xad, 0xde, 0xdd, 0xc8, 0x83, 0xb9, 0x0f, 0xb3, 0xe7, 0xb6,
-0x85, 0xc4, 0x5f, 0xda, 0x4c, 0xf5, 0xbc, 0x11, 0xf9, 0x2b, 0x3b, 0x41, 0xd7, 0x4e, 0x39, 0x53,
-0x9f, 0x4d, 0xd1, 0x3e, 0xbf, 0x28, 0xce, 0x0d, 0x5c, 0xf0, 0x93, 0xd3, 0xe9, 0xba, 0xca, 0xa9,
-0x42, 0xa3, 0xcc, 0xa8, 0xc1, 0xba, 0x11, 0xd7, 0xa4, 0xf9, 0x17, 0x1d, 0x7b, 0x3c, 0xa7, 0x53,
-0x16, 0x60, 0xa2, 0x60, 0xdc, 0x55, 0xd9, 0x41, 0x39, 0x27, 0x64, 0x08, 0xc4, 0xe7, 0x6b, 0xc8,
-0xe3, 0xad, 0x26, 0x9c, 0xa0, 0x96, 0x84, 0x9f, 0xe5, 0xb6, 0xff, 0xd9, 0xf8, 0x02, 0xf9, 0x2a,
-0x1b, 0x4c, 0x36, 0x62, 0x5e, 0x6b, 0x8c, 0x67, 0x68, 0x58, 0xbd, 0x40, 0x2f, 0x23, 0xe8, 0x01,
-0x23, 0xdf, 0x27, 0xbe, 0x1a, 0xa3, 0x82, 0x92, 0x12, 0x90, 0xde, 0x9d, 0xf1, 0xba, 0xff, 0xe2,
-0xf4, 0x0e, 0x43, 0x37, 0x6a, 0x56, 0x02, 0x69, 0x2a, 0x6e, 0xc8, 0x66, 0xf8, 0x54, 0x59, 0x3b,
-0x43, 0x1c, 0xb0, 0xf9, 0x2f, 0xd6, 0x83, 0xb5, 0x2e, 0x9c, 0xc6, 0x8e, 0xc2, 0x90, 0x74, 0xa3,
-0x77, 0xc4, 0x54, 0xee, 0x7a, 0x19, 0xf3, 0x3e, 0x34, 0x5a, 0x06, 0x69, 0x22, 0x6b, 0x9e, 0x61,
-0x69, 0x4e, 0xbb, 0x33, 0xac, 0x13, 0xa0, 0xf0, 0xef, 0xcd, 0x9f, 0xaf, 0x40, 0x9a, 0xcc, 0x91,
-0xaa, 0x98, 0x93, 0xae, 0x79, 0xd0, 0x68, 0xf8, 0xd7, 0x1f, 0xe9, 0x40, 0x08, 0x58, 0x6e, 0x63,
-0x12, 0x63, 0xec, 0x57, 0x95, 0x43, 0x41, 0x28, 0x54, 0x08, 0xe8, 0xe6, 0x9f, 0xc7, 0xe7, 0xae,
-0xfa, 0x9f, 0x4c, 0x9d, 0x82, 0xa7, 0x93, 0xbd, 0x5f, 0xdc, 0x28, 0xff, 0xa7, 0x20, 0x7b, 0x3c,
-0x9f, 0x4f, 0x54, 0x58, 0x72, 0x56, 0x8f, 0x4a, 0x65, 0x36, 0x28, 0x1c, 0x02, 0xff, 0x1b, 0xe2,
-0x21, 0xc9, 0xf3, 0xb6, 0xbb, 0xad, 0x65, 0xae, 0xcd, 0xb8, 0xed, 0xcb, 0x8c, 0xe5, 0x5a, 0x02,
-0x41, 0x1e, 0x65, 0x35, 0x9f, 0x44, 0x63, 0x4a, 0x3b, 0x46, 0x65, 0x39, 0xdb, 0x25, 0xbe, 0x0e,
-0x0e, 0xf7, 0xbd, 0xe1, 0xdd, 0xd0, 0xbf, 0xc5, 0x0d, 0xc1, 0xb1, 0xc2, 0xbb, 0xca, 0x93, 0xd8,
-0x9a, 0xeb, 0x74, 0x01, 0x10, 0x17, 0xcb, 0x28, 0x01, 0x34, 0x1b, 0x37, 0x3f, 0x32, 0xd1, 0x26,
-0x46, 0x17, 0x9e, 0x06, 0x2a, 0xf7, 0x96, 0xea, 0x4b, 0xe1, 0x55, 0xdb, 0x35, 0xd8, 0x17, 0xd8,
-0x5f, 0xdb, 0xbb, 0xe2, 0x44, 0xee, 0xb8, 0xfc, 0x86, 0x0b, 0xaa, 0x17, 0xeb, 0x1e, 0x47, 0x20,
-0x65, 0x1c, 0xd6, 0x14, 0xd0, 0x0b, 0x7e, 0x03, 0x1e, 0xfd, 0xb4, 0xf8, 0x6e, 0xf5, 0x60, 0xf2,
-0x2e, 0xef, 0x14, 0xec, 0x36, 0xea, 0xfc, 0xea, 0x18, 0xef, 0xf0, 0xf5, 0xa4, 0xfd, 0x24, 0x04,
-0x0c, 0x08, 0x38, 0x09, 0x58, 0x08, 0xca, 0x06, 0xfa, 0x05, 0x92, 0x06, 0x6a, 0x08, 0x54, 0x0a,
-0x16, 0x0b, 0x7a, 0x09, 0x28, 0x05, 0x98, 0xfe, 0x10, 0xf7, 0x4e, 0xf0, 0xb0, 0xeb, 0xda, 0xe9,
-0x3e, 0xea, 0x18, 0xec, 0xc6, 0xee, 0x62, 0xf2, 0x40, 0xf7, 0xd2, 0xfd, 0xf6, 0x05, 0xfc, 0x0e,
-0x96, 0x17, 0x55, 0x1e, 0x95, 0x21, 0x61, 0x20, 0x08, 0x1a, 0xe6, 0x0e, 0x70, 0x00, 0xd4, 0xf0,
-0xd1, 0xe2, 0x4b, 0xd8, 0xb5, 0xd2, 0x4b, 0xd2, 0xdf, 0xd6, 0x9f, 0xdf, 0xf0, 0xeb, 0xb6, 0xfa,
-0x9a, 0x0a, 0x60, 0x1a, 0xff, 0x27, 0x19, 0x32, 0xe1, 0x36, 0xf7, 0x34, 0x35, 0x2b, 0x1e, 0x1a,
-0x72, 0x03, 0xde, 0xea, 0x65, 0xd4, 0xd3, 0xc3, 0xa5, 0xbb, 0x61, 0xbc, 0x0b, 0xc5, 0xe1, 0xd3,
-0xea, 0xe6, 0x22, 0xfc, 0xe4, 0x11, 0x25, 0x26, 0x8d, 0x37, 0xf7, 0x43, 0x63, 0x49, 0x65, 0x45,
-0x3d, 0x37, 0x45, 0x1f, 0xae, 0x00, 0x55, 0xe0, 0xdb, 0xc3, 0x35, 0xb0, 0xfe, 0xa7, 0x5f, 0xab,
-0x65, 0xb8, 0xa5, 0xcc, 0x36, 0xe5, 0xf2, 0xff, 0x8c, 0x1a, 0x1f, 0x33, 0x6f, 0x47, 0x02, 0x55,
-0x1a, 0x59, 0x5f, 0x51, 0x17, 0x3d, 0xff, 0x1d, 0x78, 0xf8, 0xad, 0xd2, 0x69, 0xb3, 0xa0, 0x9f,
-0x88, 0x99, 0x5e, 0xa0, 0x8f, 0xb1, 0x0d, 0xca, 0x3e, 0xe7, 0x5e, 0x06, 0xfd, 0x24, 0xb9, 0x40,
-0xc4, 0x56, 0xb4, 0x63, 0x5a, 0x64, 0xf0, 0x56, 0xfd, 0x3b, 0xe2, 0x16, 0x02, 0xed, 0x6d, 0xc5,
-0x84, 0xa6, 0xb0, 0x94, 0x12, 0x91, 0x8c, 0x9a, 0xc3, 0xae, 0xdf, 0xca, 0xe4, 0xeb, 0xda, 0x0e,
-0xbb, 0x30, 0x13, 0x4e, 0x38, 0x63, 0x80, 0x6c, 0x82, 0x67, 0x15, 0x54, 0x61, 0x34, 0xca, 0x0c,
-0xd5, 0xe2, 0xa7, 0xbc, 0xe2, 0x9f, 0x38, 0x90, 0xb4, 0x8e, 0x72, 0x9a, 0x55, 0xb1, 0x97, 0xd0,
-0xea, 0xf4, 0x3c, 0x1a, 0x83, 0x3c, 0xfe, 0x57, 0x14, 0x69, 0xde, 0x6c, 0x96, 0x62, 0x77, 0x4b,
-0x9b, 0x2a, 0xce, 0x03, 0xff, 0xdb, 0x7f, 0xb8, 0x7c, 0x9e, 0x38, 0x91, 0xe8, 0x91, 0xde, 0x9f,
-0x3d, 0xb9, 0xff, 0xda, 0xa0, 0x00, 0xbb, 0x25, 0x8d, 0x45, 0x56, 0x5c, 0x56, 0x67, 0x9a, 0x65,
-0x88, 0x57, 0x91, 0x3f, 0x4f, 0x20, 0xfc, 0xfc, 0x57, 0xd9, 0xbd, 0xb9, 0xac, 0xa2, 0xc2, 0x97,
-0x4c, 0x9a, 0x0a, 0xaa, 0xf9, 0xc4, 0x20, 0xe7, 0xa2, 0x0b, 0x1d, 0x2d, 0x45, 0x47, 0x92, 0x57,
-0x06, 0x5d, 0xba, 0x57, 0x75, 0x49, 0xed, 0x33, 0xb0, 0x18, 0xe6, 0xf9, 0x3d, 0xda, 0x31, 0xbe,
-0x50, 0xaa, 0x3c, 0xa2, 0x74, 0xa7, 0x4f, 0xb9, 0x7d, 0xd4, 0x62, 0xf4, 0xcc, 0x13, 0x29, 0x2e,
-0xe7, 0x40, 0xc5, 0x4a, 0x49, 0x4c, 0x8b, 0x46, 0x89, 0x3a, 0xed, 0x28, 0xae, 0x12, 0x00, 0xf9,
-0x97, 0xde, 0x31, 0xc7, 0x45, 0xb7, 0x1b, 0xb2, 0x03, 0xb9, 0x39, 0xca, 0x59, 0xe2, 0xa6, 0xfc,
-0xee, 0x14, 0xef, 0x27, 0x39, 0x34, 0x03, 0x3a, 0x07, 0x3a, 0x31, 0x35, 0x01, 0x2c, 0xcd, 0x1e,
-0xb6, 0x0d, 0xe6, 0xf9, 0x7e, 0xe5, 0xe1, 0xd3, 0xb7, 0xc8, 0x69, 0xc6, 0x6f, 0xcd, 0xdf, 0xdb,
-0x2e, 0xee, 0xb2, 0x00, 0x86, 0x10, 0x18, 0x1c, 0xf1, 0x22, 0xb1, 0x25, 0x17, 0x25, 0x05, 0x22,
-0x8b, 0x1c, 0x88, 0x14, 0x32, 0x0a, 0x1a, 0xfe, 0x9a, 0xf1, 0xcc, 0xe6, 0xfd, 0xdf, 0x9f, 0xde,
-0xdd, 0xe2, 0x0c, 0xeb, 0xe4, 0xf4, 0x5c, 0xfe, 0xe8, 0x05, 0xe6, 0x0a, 0x9a, 0x0d, 0x8e, 0x0e,
-0xa6, 0x0e, 0x68, 0x0e, 0x02, 0x0e, 0x3c, 0x0d, 0x84, 0x0b, 0x5e, 0x08, 0xea, 0x03, 0xac, 0xfe,
-0xa2, 0xf9, 0x06, 0xf6, 0x2e, 0xf4, 0x28, 0xf4, 0x28, 0xf5, 0x34, 0xf6, 0xda, 0xf6, 0x10, 0xf7,
-0x04, 0xf7, 0x8a, 0xf7, 0x86, 0xf9, 0xa2, 0xfd, 0x0c, 0x04, 0xbc, 0x0b, 0x44, 0x13, 0xca, 0x18,
-0x80, 0x1a, 0xee, 0x17, 0xde, 0x11, 0xb6, 0x09, 0x28, 0x01, 0x36, 0xf9, 0xfc, 0xf1, 0xac, 0xeb,
-0x4c, 0xe6, 0x07, 0xe2, 0xf1, 0xdf, 0x05, 0xe1, 0x76, 0xe6, 0xe0, 0xf0, 0xca, 0xff, 0x22, 0x11,
-0xb5, 0x21, 0xab, 0x2d, 0xa5, 0x32, 0xcb, 0x2f, 0x3f, 0x26, 0x70, 0x18, 0x06, 0x09, 0xba, 0xf9,
-0xb0, 0xeb, 0x0b, 0xdf, 0x29, 0xd4, 0x6b, 0xcc, 0x51, 0xc9, 0xb3, 0xcc, 0x8f, 0xd7, 0x0a, 0xea,
-0xd4, 0x01, 0x92, 0x1b, 0x2b, 0x32, 0xf3, 0x41, 0xc9, 0x47, 0x57, 0x43, 0x1f, 0x36, 0x59, 0x23,
-0xba, 0x0d, 0xb0, 0xf7, 0xaf, 0xe2, 0x15, 0xd0, 0x5d, 0xc1, 0xe9, 0xb7, 0x19, 0xb6, 0xa3, 0xbd,
-0x4d, 0xcf, 0x6a, 0xe9, 0xdc, 0x08, 0x21, 0x28, 0xad, 0x42, 0xc9, 0x53, 0x32, 0x59, 0xb7, 0x52,
-0x13, 0x42, 0x43, 0x2a, 0x9c, 0x0e, 0xe0, 0xf1, 0x45, 0xd6, 0xbf, 0xbe, 0x7f, 0xad, 0x58, 0xa5,
-0xf8, 0xa7, 0x2d, 0xb6, 0x2b, 0xcf, 0x04, 0xf0, 0xde, 0x13, 0xad, 0x35, 0xfd, 0x50, 0xe2, 0x61,
-0x32, 0x66, 0x3c, 0x5d, 0xe9, 0x48, 0x71, 0x2c, 0x40, 0x0b, 0xb2, 0xe8, 0x93, 0xc8, 0x91, 0xae,
-0x14, 0x9e, 0x60, 0x99, 0x78, 0xa1, 0xf3, 0xb5, 0x5f, 0xd4, 0x9e, 0xf8, 0x0f, 0x1e, 0x2f, 0x40,
-0xf6, 0x5a, 0xfc, 0x6a, 0x84, 0x6d, 0x14, 0x62, 0x45, 0x4a, 0x1f, 0x29, 0xe4, 0x02, 0x0d, 0xdc,
-0xab, 0xb9, 0x7a, 0xa0, 0xbc, 0x93, 0x84, 0x94, 0x6c, 0xa2, 0x55, 0xbb, 0x33, 0xdc, 0x28, 0x01,
-0xe7, 0x25, 0xf7, 0x46, 0xaa, 0x60, 0x5c, 0x6f, 0xf4, 0x6f, 0xa8, 0x61, 0xed, 0x45, 0xe5, 0x20,
-0x46, 0xf7, 0x11, 0xcf, 0x43, 0xae, 0x6c, 0x99, 0x30, 0x92, 0x60, 0x98, 0x02, 0xaa, 0x9b, 0xc4,
-0x34, 0xe5, 0x5c, 0x08, 0x25, 0x2b, 0x5f, 0x4a, 0x48, 0x62, 0xca, 0x6e, 0xdc, 0x6c, 0x54, 0x5b,
-0x8b, 0x3c, 0x26, 0x15, 0x46, 0xeb, 0x99, 0xc5, 0x7e, 0xa9, 0x2c, 0x9a, 0xf4, 0x97, 0x64, 0xa1,
-0x15, 0xb4, 0x03, 0xce, 0xbc, 0xec, 0xc8, 0x0d, 0x43, 0x2e, 0xf5, 0x4a, 0x08, 0x60, 0x44, 0x69,
-0xce, 0x63, 0x7d, 0x4f, 0x7f, 0x2f, 0x18, 0x09, 0xcb, 0xe2, 0x71, 0xc2, 0x8f, 0xac, 0x8e, 0xa2,
-0xca, 0xa3, 0x6b, 0xae, 0xc5, 0xc0, 0xb5, 0xd8, 0x88, 0xf4, 0xfa, 0x11, 0x91, 0x2e, 0x3d, 0x47,
-0x04, 0x58, 0x4e, 0x5d, 0x1a, 0x55, 0x85, 0x40, 0x89, 0x22, 0xcc, 0x00, 0xb5, 0xe0, 0x55, 0xc7,
-0x1b, 0xb7, 0xdf, 0xb0, 0x9d, 0xb3, 0x13, 0xbe, 0xb9, 0xce, 0xd6, 0xe3, 0xd6, 0xfb, 0x9c, 0x14,
-0xc9, 0x2b, 0x69, 0x3e, 0xbd, 0x49, 0x2d, 0x4b, 0x05, 0x42, 0x9f, 0x2f, 0x1e, 0x17, 0x8e, 0xfc,
-0x74, 0xe4, 0xff, 0xd1, 0x05, 0xc7, 0xb3, 0xc3, 0x5d, 0xc7, 0xa3, 0xd0, 0x7d, 0xde, 0x18, 0xef,
-0xf8, 0x00, 0x98, 0x12, 0x41, 0x22, 0x3f, 0x2e, 0xe5, 0x34, 0x01, 0x35, 0x45, 0x2e, 0xb1, 0x21,
-0xec, 0x10, 0xc4, 0xfe, 0x36, 0xee, 0xa5, 0xe1, 0x4b, 0xda, 0x91, 0xd8, 0xfb, 0xdb, 0x43, 0xe3,
-0xe8, 0xec, 0x84, 0xf7, 0xb2, 0x01, 0xd8, 0x0a, 0x9a, 0x12, 0xc2, 0x18, 0xeb, 0x1c, 0x8f, 0x1e,
-0xd7, 0x1c, 0x9a, 0x17, 0x72, 0x0f, 0x6c, 0x05, 0xcc, 0xfb, 0x56, 0xf4, 0x1c, 0xf0, 0x4c, 0xef,
-0x38, 0xf1, 0x7a, 0xf4, 0x96, 0xf7, 0xd2, 0xf9, 0xb4, 0xfa, 0x50, 0xfb, 0xb8, 0xfc, 0xfa, 0xff,
-0x04, 0x05, 0xda, 0x0a, 0xd2, 0x0f, 0x5a, 0x12, 0xf8, 0x11, 0x26, 0x0f, 0xa6, 0x0b, 0x98, 0x08,
-0xc2, 0x06, 0xe0, 0x05, 0xd8, 0x04, 0x52, 0x02, 0x74, 0xfd, 0x7c, 0xf6, 0xc6, 0xee, 0x4e, 0xe8,
-0x60, 0xe5, 0x96, 0xe7, 0xb0, 0xee, 0x3e, 0xf9, 0xda, 0x04, 0x1a, 0x0f, 0xb2, 0x16, 0xa8, 0x1b,
-0x39, 0x1e, 0x59, 0x1f, 0xc9, 0x1e, 0xc6, 0x1b, 0x64, 0x15, 0xf6, 0x0a, 0xee, 0xfc, 0x36, 0xed,
-0x55, 0xde, 0x27, 0xd3, 0x89, 0xce, 0x93, 0xd1, 0xe9, 0xdb, 0x8c, 0xeb, 0xd8, 0xfd, 0x80, 0x0f,
-0xe9, 0x1e, 0xcf, 0x2a, 0xf3, 0x32, 0x69, 0x36, 0xad, 0x34, 0xfd, 0x2c, 0x39, 0x1f, 0x54, 0x0c,
-0x1c, 0xf6, 0xdd, 0xdf, 0x53, 0xcc, 0x2d, 0xbf, 0x35, 0xba, 0x11, 0xbf, 0x03, 0xcd, 0x37, 0xe2,
-0x6a, 0xfb, 0x3c, 0x15, 0x4d, 0x2c, 0x53, 0x3e, 0x73, 0x49, 0x09, 0x4c, 0xff, 0x45, 0x85, 0x37,
-0x1d, 0x22, 0x2c, 0x08, 0x70, 0xec, 0x0b, 0xd2, 0x89, 0xbc, 0x6d, 0xae, 0x46, 0xaa, 0x17, 0xb1,
-0xb1, 0xc2, 0x55, 0xdd, 0x98, 0xfd, 0x69, 0x1e, 0x93, 0x3b, 0x25, 0x51, 0x3c, 0x5c, 0xd0, 0x5b,
-0x27, 0x50, 0x71, 0x3b, 0x35, 0x20, 0xc0, 0x01, 0xb9, 0xe2, 0x6b, 0xc6, 0x97, 0xaf, 0x4c, 0xa1,
-0x08, 0x9e, 0x46, 0xa7, 0x89, 0xbd, 0x45, 0xde, 0x1e, 0x05, 0xaf, 0x2b, 0x2f, 0x4c, 0xda, 0x61,
-0x62, 0x6a, 0x38, 0x65, 0x4b, 0x54, 0xe5, 0x3a, 0xea, 0x1b, 0x7a, 0xfa, 0x83, 0xd9, 0xb5, 0xbb,
-0x78, 0xa4, 0x0a, 0x97, 0x06, 0x96, 0x64, 0xa3, 0xfb, 0xbe, 0x92, 0xe5, 0x02, 0x11, 0x27, 0x3a,
-0x04, 0x5a, 0xdc, 0x6c, 0xba, 0x70, 0xce, 0x66, 0xf5, 0x51, 0xa9, 0x35, 0x00, 0x15, 0xb2, 0xf2,
-0x4d, 0xd1, 0x97, 0xb3, 0x48, 0x9d, 0xb8, 0x91, 0x46, 0x94, 0x48, 0xa6, 0xa7, 0xc6, 0xc4, 0xf0,
-0x47, 0x1d, 0x93, 0x44, 0x04, 0x61, 0x3c, 0x6f, 0xe0, 0x6e, 0x02, 0x62, 0x77, 0x4b, 0x81, 0x2e,
-0xb0, 0x0d, 0x20, 0xeb, 0xbf, 0xc9, 0x4d, 0xad, 0x6e, 0x99, 0x2a, 0x92, 0xaa, 0x99, 0x11, 0xb0,
-0x07, 0xd3, 0xda, 0xfc, 0x43, 0x26, 0x17, 0x49, 0xc4, 0x60, 0xde, 0x6a, 0xf6, 0x67, 0xa0, 0x59,
-0xab, 0x42, 0xbd, 0x25, 0x3c, 0x05, 0xb3, 0xe3, 0xd9, 0xc4, 0x29, 0xac, 0x82, 0x9d, 0x60, 0x9b,
-0xaa, 0xa6, 0x9b, 0xbe, 0x0f, 0xe0, 0xa2, 0x05, 0x85, 0x29, 0xc1, 0x46, 0x88, 0x59, 0x9a, 0x60,
-0xd6, 0x5b, 0x0d, 0x4d, 0x65, 0x36, 0x70, 0x1a, 0xea, 0xfb, 0x3d, 0xde, 0x9d, 0xc4, 0x3d, 0xb2,
-0x90, 0xa9, 0x53, 0xab, 0xc1, 0xb7, 0x47, 0xcd, 0x3e, 0xe9, 0xf0, 0x07, 0x3f, 0x25, 0x2f, 0x3d,
-0xb1, 0x4c, 0xdd, 0x51, 0x57, 0x4c, 0xe1, 0x3d, 0x4f, 0x28, 0xaa, 0x0e, 0x52, 0xf4, 0x8b, 0xdc,
-0x21, 0xca, 0xed, 0xbe, 0x75, 0xbb, 0x5b, 0xbf, 0x2d, 0xca, 0xbd, 0xda, 0xc4, 0xef, 0x02, 0x07,
-0x97, 0x1d, 0x4d, 0x30, 0x2d, 0x3c, 0x3d, 0x3f, 0x7b, 0x39, 0x39, 0x2c, 0x0c, 0x1a, 0xc0, 0x05,
-0xb2, 0xf2, 0x09, 0xe3, 0x3b, 0xd8, 0x75, 0xd2, 0x37, 0xd1, 0xc3, 0xd3, 0xe1, 0xd9, 0xee, 0xe3,
-0x5a, 0xf1, 0x6c, 0x01, 0xc6, 0x11, 0x9d, 0x1f, 0x37, 0x28, 0x11, 0x2a, 0x19, 0x25, 0xfc, 0x1a,
-0x6c, 0x0e, 0xd4, 0x01, 0x8e, 0xf7, 0x60, 0xf0, 0x08, 0xec, 0xb4, 0xe9, 0x78, 0xe8, 0xe2, 0xe7,
-0x76, 0xe8, 0x64, 0xeb, 0x3a, 0xf1, 0xd6, 0xf9, 0xb6, 0x03, 0x80, 0x0c, 0x24, 0x12, 0x8e, 0x13,
-0x0c, 0x11, 0x52, 0x0c, 0x52, 0x07, 0x7a, 0x03, 0x8c, 0x01, 0x26, 0x01, 0xf2, 0x00, 0xd8, 0xff,
-0x26, 0xfd, 0xc0, 0xf8, 0xb4, 0xf3, 0xa0, 0xef, 0xba, 0xed, 0x84, 0xee, 0x74, 0xf1, 0x7c, 0xf5,
-0x4c, 0xf9, 0x74, 0xfc, 0x4c, 0xff, 0x8e, 0x02, 0xca, 0x06, 0x14, 0x0c, 0xd2, 0x11, 0x5a, 0x16,
-0xa8, 0x18, 0x4c, 0x17, 0xe6, 0x11, 0x98, 0x08, 0xac, 0xfc, 0x18, 0xf0, 0x38, 0xe5, 0x8f, 0xdd,
-0x39, 0xda, 0x71, 0xdb, 0x43, 0xe0, 0x36, 0xe8, 0xe6, 0xf2, 0x14, 0xff, 0x2c, 0x0c, 0x10, 0x19,
-0xef, 0x23, 0x7d, 0x2b, 0x77, 0x2e, 0xc1, 0x2b, 0xb5, 0x22, 0xf0, 0x13, 0x60, 0x00, 0x46, 0xeb,
-0xaf, 0xd7, 0x25, 0xc9, 0x31, 0xc2, 0x69, 0xc3, 0x39, 0xcc, 0xe1, 0xda, 0x66, 0xed, 0x42, 0x01,
-0x06, 0x15, 0xc5, 0x26, 0x11, 0x35, 0x71, 0x3e, 0x69, 0x41, 0xbb, 0x3c, 0x35, 0x2f, 0xac, 0x19,
-0x10, 0xfe, 0x83, 0xe0, 0x2d, 0xc6, 0xe7, 0xb3, 0x85, 0xac, 0xcf, 0xb0, 0xf5, 0xbe, 0xe1, 0xd3,
-0x9e, 0xec, 0x4a, 0x06, 0x97, 0x1e, 0x39, 0x34, 0x0f, 0x45, 0x8b, 0x4f, 0xc7, 0x51, 0xbb, 0x49,
-0xc1, 0x36, 0x22, 0x1a, 0x1c, 0xf7, 0x25, 0xd3, 0xfb, 0xb4, 0x7a, 0xa1, 0x00, 0x9c, 0xfe, 0xa3,
-0xd5, 0xb6, 0xcd, 0xd0, 0x64, 0xee, 0x62, 0x0c, 0xa3, 0x28, 0x23, 0x41, 0xc7, 0x53, 0x1c, 0x5e,
-0x7a, 0x5d, 0x73, 0x50, 0x07, 0x37, 0xa8, 0x13, 0x5a, 0xeb, 0x79, 0xc4, 0xb2, 0xa5, 0x38, 0x94,
-0xde, 0x91, 0x58, 0x9d, 0xf9, 0xb3, 0xb9, 0xd1, 0xf6, 0xf2, 0x8c, 0x14, 0xa9, 0x33, 0xe3, 0x4d,
-0x74, 0x60, 0x30, 0x68, 0xec, 0x62, 0x17, 0x50, 0xfb, 0x30, 0x8e, 0x09, 0x51, 0xdf, 0xb5, 0xb8,
-0xf4, 0x9b, 0x4e, 0x8d, 0xd2, 0x8d, 0x44, 0x9c, 0xb7, 0xb5, 0xa3, 0xd6, 0xc6, 0xfa, 0x9d, 0x1e,
-0x05, 0x3f, 0xc4, 0x58, 0x74, 0x68, 0x98, 0x6b, 0xca, 0x60, 0xc1, 0x48, 0xb3, 0x26, 0xae, 0xfe,
-0x13, 0xd6, 0x6f, 0xb2, 0x02, 0x99, 0x1c, 0x8d, 0xd8, 0x8f, 0x1e, 0xa0, 0x81, 0xbb, 0x73, 0xde,
-0x3e, 0x04, 0xe9, 0x28, 0x37, 0x48, 0xbc, 0x5e, 0x86, 0x69, 0x14, 0x67, 0x78, 0x57, 0x1d, 0x3d,
-0x68, 0x1b, 0x04, 0xf6, 0x59, 0xd1, 0xc7, 0xb1, 0xda, 0x9b, 0x76, 0x92, 0xf8, 0x96, 0xc0, 0xa8,
-0x9f, 0xc5, 0x44, 0xe9, 0xe2, 0x0e, 0x63, 0x31, 0x9b, 0x4c, 0x90, 0x5d, 0xac, 0x62, 0x96, 0x5b,
-0x19, 0x4a, 0xdf, 0x30, 0x8c, 0x12, 0xe6, 0xf1, 0x01, 0xd2, 0xbd, 0xb6, 0xe4, 0xa3, 0xbe, 0x9c,
-0xae, 0xa2, 0x91, 0xb5, 0x73, 0xd2, 0xce, 0xf4, 0x28, 0x17, 0x71, 0x34, 0x53, 0x49, 0xed, 0x53,
-0x17, 0x54, 0xdf, 0x4a, 0x8f, 0x3a, 0xdd, 0x24, 0xd2, 0x0b, 0xe4, 0xf0, 0x5d, 0xd6, 0xa3, 0xbf,
-0x5d, 0xb0, 0x83, 0xab, 0xdf, 0xb2, 0xb9, 0xc5, 0x71, 0xe0, 0x56, 0xfe, 0x1c, 0x1a, 0x07, 0x30,
-0xe9, 0x3d, 0x49, 0x43, 0xe9, 0x40, 0xc7, 0x38, 0x01, 0x2c, 0xbc, 0x1b, 0xae, 0x08, 0xbc, 0xf3,
-0xbd, 0xde, 0xdb, 0xcc, 0x77, 0xc1, 0x0d, 0xbf, 0xc7, 0xc6, 0x31, 0xd7, 0xe6, 0xec, 0x30, 0x03,
-0x98, 0x16, 0x7b, 0x24, 0x2f, 0x2c, 0x1d, 0x2e, 0xa3, 0x2b, 0xed, 0x25, 0xd3, 0x1d, 0x66, 0x13,
-0xde, 0x06, 0xe8, 0xf8, 0xaa, 0xea, 0x7b, 0xde, 0xdd, 0xd6, 0x97, 0xd5, 0x37, 0xdb, 0x54, 0xe6,
-0xf2, 0xf3, 0x52, 0x01, 0x34, 0x0c, 0x7a, 0x13, 0x2c, 0x17, 0x1a, 0x18, 0xe2, 0x16, 0x8c, 0x14,
-0x64, 0x11, 0x84, 0x0d, 0x74, 0x08, 0x42, 0x02, 0x62, 0xfb, 0xca, 0xf4, 0xae, 0xef, 0x34, 0xed,
-0xcc, 0xed, 0xbe, 0xf0, 0x14, 0xf5, 0x6e, 0xf9, 0xea, 0xfc, 0x16, 0xff, 0x56, 0x00, 0x44, 0x01,
-0x7e, 0x02, 0xa2, 0x04, 0xf4, 0x07, 0x02, 0x0c, 0xbc, 0x0f, 0xf6, 0x11, 0x7e, 0x11, 0x0a, 0x0e,
-0x40, 0x08, 0x32, 0x01, 0x58, 0xfa, 0xa6, 0xf4, 0x76, 0xf0, 0x8a, 0xed, 0x6a, 0xeb, 0x1e, 0xea,
-0xee, 0xe9, 0x5e, 0xeb, 0x4c, 0xef, 0xc2, 0xf6, 0x6e, 0x01, 0x58, 0x0e, 0x64, 0x1b, 0x43, 0x25,
-0xa7, 0x29, 0x3b, 0x27, 0xa7, 0x1e, 0xaa, 0x11, 0x24, 0x03, 0x10, 0xf5, 0x20, 0xe9, 0x8d, 0xdf,
-0x83, 0xd8, 0x6b, 0xd4, 0x9f, 0xd3, 0x47, 0xd7, 0x49, 0xe0, 0xec, 0xee, 0x2e, 0x02, 0xec, 0x17,
-0x13, 0x2c, 0xbd, 0x3a, 0xb3, 0x40, 0xbf, 0x3c, 0xd7, 0x2f, 0xef, 0x1c, 0x74, 0x07, 0x8a, 0xf2,
-0xd3, 0xdf, 0x99, 0xd0, 0x77, 0xc5, 0x4f, 0xbf, 0x53, 0xbf, 0xcf, 0xc6, 0x45, 0xd6, 0x02, 0xed,
-0xf6, 0x08, 0xd3, 0x25, 0xdb, 0x3e, 0x29, 0x4f, 0x23, 0x54, 0x05, 0x4d, 0xc1, 0x3b, 0xbf, 0x23,
-0x88, 0x08, 0x66, 0xed, 0xd9, 0xd4, 0xef, 0xc0, 0xd9, 0xb2, 0xb3, 0xac, 0xb1, 0xaf, 0x1d, 0xbd,
-0x6d, 0xd4, 0x4c, 0xf3, 0xbc, 0x15, 0x93, 0x36, 0xbd, 0x50, 0x32, 0x60, 0xa2, 0x62, 0xc4, 0x57,
-0x39, 0x42, 0x3d, 0x25, 0x96, 0x04, 0x24, 0xe4, 0x0d, 0xc7, 0x19, 0xb0, 0xfc, 0xa1, 0x76, 0x9e,
-0xec, 0xa6, 0x23, 0xbb, 0x21, 0xd9, 0xe2, 0xfc, 0xb1, 0x21, 0x93, 0x42, 0xaa, 0x5b, 0x86, 0x69,
-0xe2, 0x69, 0x04, 0x5d, 0x99, 0x44, 0xf9, 0x23, 0xe2, 0xfe, 0xdf, 0xd9, 0x39, 0xb9, 0x70, 0xa1,
-0x8a, 0x95, 0x0c, 0x97, 0xbc, 0xa5, 0xa3, 0xbf, 0x97, 0xe1, 0xf0, 0x06, 0x67, 0x2b, 0x1f, 0x4b,
-0x9e, 0x62, 0xce, 0x6e, 0x82, 0x6d, 0x3e, 0x5e, 0xa3, 0x42, 0x2b, 0x1e, 0x6e, 0xf5, 0xf3, 0xcd,
-0x2f, 0xad, 0xe2, 0x97, 0xb0, 0x90, 0x86, 0x97, 0xf8, 0xaa, 0xf9, 0xc7, 0xac, 0xea, 0x0c, 0x0f,
-0xc1, 0x31, 0x3b, 0x4f, 0xbc, 0x64, 0x10, 0x6f, 0xa6, 0x6b, 0xdc, 0x59, 0x49, 0x3b, 0xe0, 0x13,
-0x62, 0xe9, 0x33, 0xc2, 0x74, 0xa4, 0x5a, 0x94, 0xc2, 0x92, 0x8e, 0x9e, 0xfb, 0xb4, 0x7d, 0xd2,
-0x96, 0xf3, 0x3e, 0x15, 0xb1, 0x34, 0x8f, 0x4f, 0xaa, 0x62, 0xce, 0x6a, 0xe4, 0x64, 0x93, 0x50,
-0x0b, 0x30, 0x3c, 0x08, 0x8b, 0xdf, 0xad, 0xbc, 0xf8, 0xa4, 0xac, 0x9a, 0xa2, 0x9d, 0x95, 0xab,
-0xb9, 0xc1, 0xf9, 0xdc, 0xbe, 0xfa, 0xc8, 0x18, 0x9d, 0x34, 0xed, 0x4b, 0x6e, 0x5b, 0x06, 0x60,
-0x2a, 0x57, 0x79, 0x41, 0xb7, 0x21, 0x0c, 0xfd, 0xe3, 0xd9, 0x07, 0xbe, 0xe1, 0xac, 0xba, 0xa7,
-0x2b, 0xad, 0x2d, 0xbb, 0x3d, 0xcf, 0xf4, 0xe6, 0x8a, 0x00, 0xe2, 0x19, 0x0f, 0x31, 0xb5, 0x43,
-0xf9, 0x4e, 0x31, 0x50, 0x57, 0x46, 0xf7, 0x31, 0x84, 0x16, 0x7a, 0xf8, 0xff, 0xdc, 0x35, 0xc8,
-0xd1, 0xbc, 0x5b, 0xba, 0x27, 0xc0, 0x25, 0xcc, 0x93, 0xdc, 0xfc, 0xef, 0x2a, 0x04, 0xc2, 0x17,
-0xbd, 0x28, 0x7b, 0x35, 0x29, 0x3c, 0x63, 0x3b, 0xb9, 0x32, 0x35, 0x23, 0x04, 0x0f, 0x62, 0xf9,
-0x06, 0xe6, 0x87, 0xd7, 0xad, 0xcf, 0xa3, 0xce, 0x8f, 0xd3, 0xe9, 0xdc, 0x76, 0xe9, 0x44, 0xf7,
-0xd6, 0x04, 0x0c, 0x11, 0xe4, 0x1a, 0x07, 0x22, 0x91, 0x25, 0x23, 0x25, 0x55, 0x20, 0x56, 0x17,
-0x0a, 0x0c, 0x18, 0x00, 0x68, 0xf5, 0x48, 0xee, 0x02, 0xec, 0x00, 0xee, 0x2e, 0xf3, 0xb8, 0xf9,
-0x96, 0xff, 0x18, 0x04, 0x66, 0x07, 0x8a, 0x0a, 0x0a, 0x0e, 0x60, 0x11, 0x44, 0x13, 0xda, 0x12,
-0xac, 0x0f, 0x2e, 0x0a, 0x16, 0x04, 0x14, 0xff, 0x1c, 0xfc, 0x40, 0xfb, 0xb0, 0xfb, 0xc0, 0xfb,
-0xb2, 0xfa, 0xf4, 0xf7, 0xf0, 0xf3, 0x66, 0xf0, 0x38, 0xef, 0xb6, 0xf1, 0x06, 0xf8, 0x18, 0x01,
-0x78, 0x0a, 0x60, 0x12, 0x16, 0x17, 0x7c, 0x18, 0xc0, 0x17, 0xd2, 0x15, 0x70, 0x13, 0x50, 0x10,
-0x4a, 0x0b, 0x72, 0x03, 0x20, 0xf9, 0x24, 0xed, 0x99, 0xe1, 0x3d, 0xd9, 0x9b, 0xd6, 0x9b, 0xda,
-0x2c, 0xe5, 0x70, 0xf4, 0x44, 0x05, 0xd8, 0x14, 0x21, 0x21, 0x29, 0x29, 0x37, 0x2d, 0xab, 0x2d,
-0x0f, 0x2a, 0x81, 0x22, 0x22, 0x16, 0x76, 0x05, 0x5c, 0xf2, 0xeb, 0xde, 0x83, 0xce, 0x13, 0xc4,
-0xd7, 0xc1, 0xa1, 0xc8, 0xb5, 0xd7, 0xc2, 0xec, 0x64, 0x04, 0x1c, 0x1b, 0xf3, 0x2d, 0x9b, 0x3b,
-0xd7, 0x42, 0x0b, 0x43, 0xb9, 0x3b, 0x37, 0x2d, 0x9c, 0x18, 0xf4, 0xff, 0x04, 0xe6, 0x53, 0xce,
-0xe1, 0xbb, 0x89, 0xb1, 0x39, 0xb1, 0x0f, 0xbb, 0xc1, 0xce, 0x88, 0xe9, 0xfc, 0x07, 0xa1, 0x25,
-0xdb, 0x3e, 0x3d, 0x50, 0xf6, 0x57, 0xcc, 0x54, 0x3b, 0x47, 0x7f, 0x31, 0xca, 0x15, 0x50, 0xf7,
-0xd7, 0xd9, 0xe9, 0xbf, 0xe7, 0xac, 0x4e, 0xa3, 0x80, 0xa4, 0x75, 0xb1, 0x93, 0xc9, 0x34, 0xea,
-0x2c, 0x0f, 0xdd, 0x32, 0xc9, 0x4f, 0x32, 0x62, 0x62, 0x67, 0x16, 0x5f, 0x75, 0x4b, 0xb3, 0x2f,
-0x68, 0x0f, 0x12, 0xee, 0xed, 0xce, 0xa1, 0xb4, 0x12, 0xa2, 0x8c, 0x99, 0xfe, 0x9c, 0x3b, 0xad,
-0x17, 0xca, 0x30, 0xf0, 0x26, 0x1a, 0xf5, 0x40, 0x84, 0x5e, 0xd2, 0x6e, 0x98, 0x6f, 0x0e, 0x62,
-0x9f, 0x49, 0x73, 0x2a, 0x28, 0x08, 0x18, 0xe6, 0xb5, 0xc6, 0xe3, 0xac, 0x40, 0x9b, 0x84, 0x94,
-0xb4, 0x9a, 0x07, 0xaf, 0x69, 0xd0, 0xa6, 0xfa, 0xbf, 0x26, 0x35, 0x4d, 0x28, 0x68, 0xc2, 0x73,
-0xce, 0x6f, 0x48, 0x5e, 0x3d, 0x43, 0xeb, 0x22, 0x5c, 0x00, 0xbf, 0xde, 0x5d, 0xc0, 0x12, 0xa8,
-0xe2, 0x98, 0x66, 0x95, 0xc2, 0x9f, 0x27, 0xb8, 0x97, 0xdc, 0x3a, 0x07, 0x61, 0x31, 0xdf, 0x53,
-0xc6, 0x69, 0xc2, 0x70, 0x46, 0x69, 0xf6, 0x55, 0xbb, 0x3a, 0xda, 0x1a, 0x82, 0xf9, 0x29, 0xd9,
-0xe1, 0xbc, 0x78, 0xa7, 0xd8, 0x9b, 0x84, 0x9c, 0x72, 0xaa, 0x3b, 0xc5, 0xea, 0xe8, 0x84, 0x10,
-0x6f, 0x35, 0x6d, 0x52, 0x94, 0x63, 0x4c, 0x67, 0x82, 0x5e, 0x3b, 0x4b, 0xe3, 0x30, 0x5c, 0x12,
-0x68, 0xf2, 0x85, 0xd4, 0xc1, 0xbb, 0x0c, 0xab, 0xac, 0xa4, 0x9a, 0xa9, 0xc5, 0xb9, 0x6d, 0xd3,
-0x30, 0xf3, 0x68, 0x14, 0xbd, 0x32, 0xd1, 0x49, 0x24, 0x57, 0x56, 0x59, 0x63, 0x50, 0x87, 0x3e,
-0x07, 0x26, 0x12, 0x0a, 0xda, 0xed, 0xab, 0xd4, 0x83, 0xc1, 0xa1, 0xb6, 0xc3, 0xb4, 0x37, 0xbc,
-0x59, 0xcb, 0xd1, 0xe0, 0x0c, 0xfa, 0x08, 0x14, 0x89, 0x2b, 0x93, 0x3d, 0x85, 0x47, 0x0d, 0x48,
-0x57, 0x3f, 0x8d, 0x2e, 0xd6, 0x18, 0xfa, 0x00, 0xbe, 0xea, 0xf9, 0xd8, 0x47, 0xcd, 0x69, 0xc8,
-0x07, 0xca, 0xc5, 0xd0, 0xad, 0xdb, 0x06, 0xea, 0xee, 0xfa, 0x0e, 0x0d, 0x2b, 0x1e, 0xb5, 0x2b,
-0x1f, 0x33, 0x1b, 0x33, 0x8f, 0x2b, 0x41, 0x1e, 0xf6, 0x0d, 0x94, 0xfd, 0x0c, 0xf0, 0x82, 0xe6,
-0x63, 0xe1, 0xe3, 0xdf, 0x13, 0xe1, 0xe6, 0xe3, 0x5e, 0xe8, 0xce, 0xee, 0x7e, 0xf7, 0x22, 0x02,
-0x3c, 0x0d, 0xbe, 0x16, 0x4f, 0x1c, 0xc7, 0x1c, 0x2c, 0x18, 0x36, 0x10, 0x36, 0x07, 0x8a, 0xff,
-0x66, 0xfa, 0x08, 0xf8, 0x2a, 0xf7, 0xda, 0xf6, 0xe6, 0xf5, 0xea, 0xf3, 0xba, 0xf1, 0x66, 0xf0,
-0x3a, 0xf1, 0xba, 0xf4, 0xfc, 0xf9, 0xc0, 0xff, 0x5c, 0x04, 0xe2, 0x06, 0x96, 0x07, 0x74, 0x07,
-0xfc, 0x07, 0xb6, 0x09, 0x42, 0x0c, 0x88, 0x0e, 0x60, 0x0f, 0x80, 0x0d, 0x92, 0x08, 0xb2, 0x00,
-0x4c, 0xf7, 0x3a, 0xee, 0x20, 0xe7, 0x61, 0xe3, 0x69, 0xe3, 0x8e, 0xe6, 0x3c, 0xec, 0x68, 0xf3,
-0xc8, 0xfb, 0x26, 0x05, 0xdc, 0x0e, 0x42, 0x18, 0xe9, 0x1f, 0xc7, 0x24, 0xa9, 0x25, 0x81, 0x21,
-0x44, 0x18, 0x78, 0x0a, 0xc2, 0xf9, 0x9a, 0xe8, 0x65, 0xd9, 0x19, 0xcf, 0x5d, 0xcb, 0x47, 0xce,
-0x75, 0xd7, 0x7c, 0xe5, 0x52, 0xf6, 0x34, 0x08, 0x50, 0x19, 0xd5, 0x27, 0xf5, 0x32, 0xd9, 0x38,
-0xd5, 0x38, 0x2b, 0x32, 0x53, 0x24, 0x68, 0x10, 0x36, 0xf8, 0xc5, 0xde, 0x69, 0xc8, 0x53, 0xb9,
-0x35, 0xb4, 0xad, 0xb9, 0x7f, 0xc8, 0xef, 0xdd, 0x5a, 0xf6, 0xfc, 0x0e, 0x1f, 0x25, 0x7d, 0x37,
-0x4b, 0x44, 0x8f, 0x4a, 0x13, 0x49, 0xd9, 0x3e, 0x91, 0x2b, 0x72, 0x10, 0x6a, 0xf0, 0xb7, 0xcf,
-0x83, 0xb4, 0xd4, 0xa3, 0xd6, 0xa0, 0x34, 0xab, 0x7b, 0xc0, 0x8d, 0xdc, 0x04, 0xfb, 0x1c, 0x18,
-0xc1, 0x31, 0xf7, 0x45, 0xad, 0x53, 0x2a, 0x59, 0xd0, 0x54, 0xc1, 0x45, 0x17, 0x2c, 0x22, 0x0a,
-0xd2, 0xe3, 0xf3, 0xbe, 0x64, 0xa2, 0xa0, 0x93, 0x96, 0x94, 0xfc, 0xa3, 0x63, 0xbe, 0x05, 0xdf,
-0x1e, 0x01, 0x17, 0x21, 0x97, 0x3c, 0x03, 0x52, 0x68, 0x5f, 0xd6, 0x62, 0x94, 0x5a, 0x2f, 0x46,
-0xe9, 0x26, 0xca, 0xff, 0x73, 0xd6, 0x0b, 0xb1, 0xa0, 0x96, 0x60, 0x8b, 0x1a, 0x90, 0x0a, 0xa3,
-0x8b, 0xc0, 0xc2, 0xe3, 0xfc, 0x07, 0xb5, 0x29, 0x57, 0x46, 0xb4, 0x5b, 0x40, 0x67, 0xe6, 0x66,
-0x74, 0x59, 0xe1, 0x3f, 0x75, 0x1c, 0xc0, 0xf3, 0x47, 0xcb, 0xf8, 0xa8, 0x3a, 0x92, 0x68, 0x8a,
-0x94, 0x91, 0x50, 0xa6, 0x49, 0xc5, 0xca, 0xe9, 0x66, 0x0f, 0x1f, 0x32, 0x8d, 0x4e, 0xea, 0x61,
-0x88, 0x69, 0xee, 0x63, 0xe3, 0x51, 0x11, 0x35, 0x2a, 0x11, 0x80, 0xea, 0xbd, 0xc5, 0xce, 0xa7,
-0xd6, 0x94, 0x4a, 0x8f, 0xcc, 0x97, 0x5b, 0xad, 0x01, 0xcd, 0x2c, 0xf2, 0xbe, 0x17, 0x25, 0x39,
-0xf9, 0x52, 0xe6, 0x61, 0x46, 0x64, 0x14, 0x5a, 0x11, 0x45, 0x55, 0x28, 0xfe, 0x06, 0x9a, 0xe4,
-0x03, 0xc5, 0xb7, 0xab, 0x02, 0x9c, 0x88, 0x98, 0xfc, 0xa1, 0x1d, 0xb8, 0xcd, 0xd7, 0xf8, 0xfb,
-0x4b, 0x1f, 0x43, 0x3d, 0xb5, 0x51, 0xca, 0x5a, 0x1a, 0x58, 0xe9, 0x4a, 0xa1, 0x36, 0xdd, 0x1c,
-0x94, 0x00, 0x04, 0xe4, 0xb5, 0xc9, 0xb7, 0xb4, 0x28, 0xa8, 0x7a, 0xa6, 0xfb, 0xb0, 0x0b, 0xc7,
-0xec, 0xe4, 0xc0, 0x05, 0xed, 0x23, 0x13, 0x3b, 0xa9, 0x48, 0xdb, 0x4b, 0xdd, 0x45, 0x21, 0x39,
-0xa7, 0x27, 0x90, 0x13, 0xa0, 0xfd, 0xa8, 0xe7, 0x23, 0xd3, 0xa5, 0xc2, 0x19, 0xb9, 0xef, 0xb8,
-0x3d, 0xc3, 0xcf, 0xd6, 0x10, 0xf0, 0xfe, 0x09, 0x6f, 0x20, 0xf7, 0x2f, 0x8b, 0x37, 0x73, 0x37,
-0x9b, 0x31, 0x99, 0x27, 0x78, 0x1b, 0x8c, 0x0d, 0x98, 0xfe, 0x3e, 0xef, 0x87, 0xe0, 0xad, 0xd4,
-0xdd, 0xcd, 0x3d, 0xce, 0x29, 0xd6, 0xa8, 0xe4, 0x70, 0xf6, 0x04, 0x08, 0x52, 0x16, 0x4b, 0x1f,
-0xd7, 0x22, 0xb5, 0x21, 0x9d, 0x1d, 0xe4, 0x17, 0x48, 0x11, 0x16, 0x0a, 0x40, 0x02, 0x18, 0xfa,
-0xfa, 0xf1, 0xe6, 0xea, 0x42, 0xe6, 0x44, 0xe5, 0x5a, 0xe8, 0xe2, 0xee, 0x22, 0xf7, 0x44, 0xff,
-0x08, 0x06, 0x28, 0x0a, 0xcc, 0x0b, 0xb6, 0x0b, 0xda, 0x0a, 0x24, 0x0a, 0xee, 0x09, 0x0c, 0x0a,
-0x36, 0x0a, 0x86, 0x09, 0xfe, 0x06, 0xe0, 0x02, 0x8c, 0xfd, 0x46, 0xf8, 0x1c, 0xf4, 0x80, 0xf1,
-0xc0, 0xf0, 0x3c, 0xf1, 0x64, 0xf2, 0x8e, 0xf3, 0xd4, 0xf4, 0xc2, 0xf6, 0x06, 0xfa, 0x20, 0xff,
-0x28, 0x06, 0x9e, 0x0e, 0xe0, 0x16, 0x1f, 0x1d, 0x21, 0x1f, 0xfe, 0x1b, 0xee, 0x13, 0x80, 0x08,
-0x0c, 0xfc, 0x7e, 0xf0, 0x58, 0xe7, 0x01, 0xe1, 0xa1, 0xdd, 0xb1, 0xdc, 0x8b, 0xde, 0x59, 0xe3,
-0xc4, 0xeb, 0x1e, 0xf8, 0xaa, 0x07, 0xca, 0x18, 0x89, 0x28, 0x89, 0x33, 0xe3, 0x36, 0x99, 0x31,
-0x73, 0x24, 0x1e, 0x12, 0x16, 0xfe, 0x42, 0xeb, 0xcf, 0xdb, 0xa3, 0xd0, 0xbd, 0xc9, 0x67, 0xc7,
-0x35, 0xca, 0xcb, 0xd2, 0xb7, 0xe1, 0x50, 0xf6, 0xb0, 0x0e, 0x9b, 0x27, 0xab, 0x3c, 0xdb, 0x49,
-0x35, 0x4c, 0x1d, 0x43, 0x7f, 0x30, 0x9a, 0x17, 0xc4, 0xfc, 0x85, 0xe3, 0x6f, 0xce, 0x1b, 0xbf,
-0x4f, 0xb6, 0x7f, 0xb4, 0x57, 0xba, 0x87, 0xc8, 0xa3, 0xde, 0x6e, 0xfb, 0xec, 0x1a, 0xad, 0x38,
-0xcf, 0x4f, 0x4e, 0x5c, 0xf8, 0x5b, 0xb9, 0x4e, 0xf1, 0x36, 0xac, 0x18, 0x52, 0xf8, 0xa3, 0xd9,
-0x09, 0xc0, 0x93, 0xad, 0x24, 0xa4, 0xc2, 0xa4, 0xdd, 0xaf, 0x7f, 0xc5, 0xa9, 0xe3, 0xcc, 0x06,
-0x01, 0x2a, 0xb5, 0x48, 0x88, 0x5e, 0x94, 0x68, 0xf4, 0x64, 0x3b, 0x54, 0xf9, 0x38, 0x00, 0x17,
-0x82, 0xf2, 0xe3, 0xcf, 0x15, 0xb3, 0xb2, 0x9f, 0xdc, 0x97, 0xa4, 0x9c, 0xfb, 0xad, 0xef, 0xc9,
-0x0c, 0xed, 0x98, 0x12, 0xd7, 0x35, 0xcb, 0x52, 0x66, 0x66, 0xd4, 0x6d, 0x0a, 0x68, 0x26, 0x55,
-0x7f, 0x37, 0x64, 0x12, 0x68, 0xea, 0xb1, 0xc4, 0x9c, 0xa6, 0x74, 0x94, 0x6c, 0x90, 0xe0, 0x9a,
-0xd7, 0xb1, 0x55, 0xd2, 0x78, 0xf7, 0xad, 0x1c, 0xeb, 0x3d, 0x4c, 0x58, 0x5a, 0x69, 0xc2, 0x6e,
-0xec, 0x66, 0xeb, 0x51, 0xab, 0x31, 0xd6, 0x09, 0xcb, 0xdf, 0xc7, 0xb9, 0xee, 0x9d, 0x4c, 0x90,
-0xe4, 0x91, 0x82, 0xa1, 0x09, 0xbc, 0x5d, 0xdd, 0x16, 0x01, 0x45, 0x23, 0x1f, 0x41, 0x7c, 0x58,
-0x22, 0x67, 0x68, 0x6a, 0xba, 0x60, 0xbd, 0x49, 0xb9, 0x27, 0xe4, 0xfe, 0x93, 0xd5, 0xb1, 0xb2,
-0x00, 0x9c, 0x28, 0x94, 0xe0, 0x9a, 0x7d, 0xad, 0x6b, 0xc8, 0xc6, 0xe7, 0xce, 0x07, 0xb7, 0x25,
-0x9d, 0x3f, 0x93, 0x53, 0x56, 0x5f, 0x50, 0x60, 0xca, 0x54, 0xeb, 0x3c, 0x3a, 0x1b, 0xcc, 0xf4,
-0x1b, 0xd0, 0x9d, 0xb3, 0x6e, 0xa3, 0xc0, 0xa0, 0x0c, 0xaa, 0x95, 0xbc, 0xfd, 0xd4, 0x0a, 0xf0,
-0x4a, 0x0b, 0x7b, 0x24, 0x3d, 0x3a, 0x5d, 0x4a, 0xf5, 0x52, 0x99, 0x51, 0x47, 0x45, 0x65, 0x2e,
-0x22, 0x10, 0x58, 0xef, 0xd7, 0xd1, 0x7f, 0xbc, 0xc3, 0xb1, 0x1b, 0xb2, 0x9d, 0xbb, 0xed, 0xcb,
-0x59, 0xe0, 0xb4, 0xf6, 0xb6, 0x0c, 0xe5, 0x20, 0x7d, 0x31, 0x29, 0x3d, 0x2d, 0x42, 0x15, 0x3f,
-0x5d, 0x33, 0x35, 0x20, 0x3a, 0x08, 0x80, 0xef, 0x37, 0xda, 0x81, 0xcb, 0xfb, 0xc4, 0x57, 0xc6,
-0x61, 0xce, 0x2f, 0xdb, 0xd8, 0xea, 0x42, 0xfb, 0x28, 0x0b, 0xf2, 0x18, 0xd1, 0x23, 0xaf, 0x2a,
-0x0d, 0x2d, 0x6d, 0x2a, 0xc5, 0x22, 0x94, 0x16, 0x54, 0x07, 0x7a, 0xf7, 0x74, 0xe9, 0x79, 0xdf,
-0xa5, 0xda, 0x7f, 0xdb, 0xff, 0xe0, 0x98, 0xe9, 0x84, 0xf3, 0x42, 0xfd, 0xac, 0x05, 0x4a, 0x0c,
-0xec, 0x10, 0xfe, 0x13, 0xe8, 0x15, 0x96, 0x16, 0x5a, 0x15, 0xc4, 0x11, 0xa8, 0x0b, 0xe0, 0x03,
-0xd0, 0xfb, 0x4a, 0xf5, 0xac, 0xf1, 0x22, 0xf1, 0xfa, 0xf2, 0xc8, 0xf5, 0x62, 0xf8, 0xde, 0xf9,
-0x0c, 0xfa, 0x4e, 0xf9, 0x28, 0xf9, 0x10, 0xfb, 0x9c, 0xff, 0x50, 0x06, 0x60, 0x0d, 0xd6, 0x12,
-0x1a, 0x15, 0x2e, 0x14, 0xe0, 0x10, 0xd8, 0x0c, 0x08, 0x09, 0xc0, 0x05, 0x52, 0x02, 0xdc, 0xfd,
-0xc8, 0xf7, 0x3c, 0xf0, 0x5e, 0xe8, 0x0f, 0xe2, 0xdf, 0xdf, 0x5f, 0xe3, 0x96, 0xec, 0x00, 0xfa,
-0x0e, 0x09, 0x92, 0x16, 0x6d, 0x20, 0x9d, 0x25, 0xa5, 0x26, 0x6f, 0x24, 0xb5, 0x1f, 0x3c, 0x18,
-0x10, 0x0e, 0xee, 0x00, 0xb2, 0xf1, 0xf7, 0xe1, 0x55, 0xd4, 0x97, 0xcb, 0xfb, 0xc9, 0x9d, 0xd0,
-0xcb, 0xde, 0x76, 0xf2, 0x14, 0x08, 0x93, 0x1c, 0xcf, 0x2c, 0x47, 0x37, 0x6f, 0x3b, 0x9d, 0x39,
-0xeb, 0x31, 0xbd, 0x24, 0x76, 0x12, 0xb4, 0xfc, 0xde, 0xe5, 0xc9, 0xd0, 0x75, 0xc0, 0x9f, 0xb7,
-0x0d, 0xb8, 0x53, 0xc2, 0x4b, 0xd5, 0x86, 0xee, 0xa4, 0x0a, 0xd5, 0x25, 0x47, 0x3c, 0x47, 0x4b,
-0x53, 0x51, 0xb5, 0x4d, 0xbd, 0x40, 0xa1, 0x2b, 0xe0, 0x10, 0x80, 0xf3, 0x2f, 0xd7, 0x4f, 0xbf,
-0xc3, 0xae, 0x92, 0xa7, 0xd2, 0xaa, 0xab, 0xb8, 0x3d, 0xd0, 0x30, 0xef, 0x86, 0x11, 0x77, 0x32,
-0x5f, 0x4d, 0x60, 0x5e, 0x04, 0x63, 0xb4, 0x5a, 0xed, 0x46, 0x9f, 0x2a, 0xc2, 0x09, 0x50, 0xe8,
-0x25, 0xca, 0x4b, 0xb2, 0xfe, 0xa2, 0x8e, 0x9d, 0x1c, 0xa3, 0x3d, 0xb4, 0x1b, 0xd0, 0x0a, 0xf4,
-0x72, 0x1b, 0x8d, 0x40, 0x7a, 0x5d, 0x66, 0x6d, 0x0a, 0x6e, 0xf8, 0x5f, 0x37, 0x46, 0x1f, 0x25,
-0x52, 0x01, 0xd7, 0xde, 0xd7, 0xc0, 0xd4, 0xa9, 0xba, 0x9b, 0x08, 0x98, 0x12, 0xa0, 0x7b, 0xb4,
-0x7f, 0xd4, 0xc8, 0xfc, 0x9b, 0x27, 0xef, 0x4d, 0x6e, 0x69, 0xac, 0x75, 0x3a, 0x71, 0xee, 0x5d,
-0x4d, 0x40, 0x3d, 0x1d, 0x26, 0xf9, 0x27, 0xd7, 0x29, 0xba, 0xba, 0xa4, 0xb6, 0x98, 0x98, 0x97,
-0xd8, 0xa2, 0x0b, 0xbb, 0x79, 0xde, 0xc0, 0x08, 0x3d, 0x33, 0xfc, 0x56, 0x2e, 0x6e, 0x66, 0x75,
-0x6e, 0x6c, 0x6a, 0x56, 0xd5, 0x37, 0x4c, 0x15, 0x4a, 0xf2, 0xe9, 0xd1, 0xd5, 0xb6, 0x90, 0xa3,
-0x3a, 0x9a, 0x8c, 0x9c, 0x55, 0xab, 0x57, 0xc6, 0xcc, 0xea, 0x80, 0x13, 0x11, 0x3a, 0x82, 0x58,
-0x54, 0x6a, 0x64, 0x6d, 0x4a, 0x62, 0x07, 0x4c, 0xc5, 0x2e, 0x32, 0x0e, 0x4e, 0xed, 0x11, 0xcf,
-0x95, 0xb6, 0xae, 0xa6, 0x30, 0xa1, 0x28, 0xa7, 0xcb, 0xb8, 0x71, 0xd4, 0xb6, 0xf6, 0x9c, 0x1a,
-0x0b, 0x3b, 0x71, 0x53, 0x68, 0x60, 0xa8, 0x60, 0x1a, 0x55, 0x0b, 0x40, 0xe9, 0x24, 0xbe, 0x06,
-0x02, 0xe9, 0xe7, 0xce, 0x4d, 0xbb, 0x5d, 0xb0, 0x67, 0xaf, 0x59, 0xb8, 0x21, 0xca, 0x75, 0xe2,
-0x7c, 0xfe, 0xb2, 0x1a, 0xbd, 0x33, 0x61, 0x46, 0x1b, 0x50, 0x99, 0x4f, 0x03, 0x45, 0x1d, 0x32,
-0xdc, 0x19, 0xa2, 0xff, 0xc4, 0xe6, 0x75, 0xd2, 0x0d, 0xc5, 0xc9, 0xbf, 0xad, 0xc2, 0x7b, 0xcc,
-0x71, 0xdb, 0xb6, 0xed, 0x92, 0x01, 0xa4, 0x15, 0xcf, 0x27, 0xc1, 0x35, 0x05, 0x3d, 0x21, 0x3c,
-0x27, 0x33, 0x83, 0x23, 0xe0, 0x0f, 0xca, 0xfb, 0x60, 0xea, 0xe5, 0xdd, 0x41, 0xd7, 0x45, 0xd6,
-0xe9, 0xd9, 0x9b, 0xe0, 0xe8, 0xe8, 0x9e, 0xf2, 0xa8, 0xfd, 0xe2, 0x09, 0x2e, 0x16, 0x39, 0x20,
-0x13, 0x26, 0x31, 0x26, 0x41, 0x20, 0xd4, 0x15, 0x54, 0x09, 0x96, 0xfd, 0xae, 0xf4, 0x78, 0xef,
-0xb6, 0xed, 0x36, 0xee, 0x90, 0xef, 0xc0, 0xf0, 0xa6, 0xf1, 0x0e, 0xf3, 0x22, 0xf6, 0x6c, 0xfb,
-0x64, 0x02, 0x76, 0x09, 0xba, 0x0e, 0xf4, 0x10, 0xea, 0x0f, 0x96, 0x0c, 0xa4, 0x08, 0xd8, 0x05,
-0xd6, 0x04, 0x12, 0x05, 0x48, 0x05, 0x52, 0x04, 0x5e, 0x01, 0x4a, 0xfc, 0xd0, 0xf5, 0x86, 0xef,
-0x4c, 0xeb, 0x38, 0xea, 0x48, 0xec, 0x0e, 0xf1, 0x1e, 0xf7, 0x68, 0xfd, 0x44, 0x03, 0xd4, 0x08,
-0xbc, 0x0e, 0xa6, 0x14, 0xa2, 0x19, 0xaf, 0x1c, 0xb9, 0x1c, 0x04, 0x19, 0x42, 0x11, 0xc2, 0x05,
-0xdc, 0xf7, 0xd8, 0xe9, 0xbf, 0xdd, 0xfd, 0xd5, 0x1b, 0xd4, 0x07, 0xd8, 0x1f, 0xe1, 0xa8, 0xed,
-0x2a, 0xfc, 0x50, 0x0b, 0x88, 0x19, 0x61, 0x25, 0xc1, 0x2d, 0x77, 0x31, 0x1b, 0x30, 0x49, 0x29,
-0xd5, 0x1c, 0x76, 0x0b, 0xa4, 0xf6, 0xe9, 0xe0, 0xf9, 0xcd, 0x0d, 0xc1, 0xf3, 0xbc, 0x93, 0xc2,
-0xa5, 0xd0, 0xb2, 0xe4, 0xa2, 0xfb, 0x74, 0x12, 0x99, 0x26, 0x15, 0x36, 0xdd, 0x3f, 0x6b, 0x43,
-0x5f, 0x40, 0x2b, 0x36, 0xbd, 0x24, 0x06, 0x0d, 0x04, 0xf1, 0x43, 0xd4, 0x73, 0xbb, 0x85, 0xab,
-0xfc, 0xa7, 0x93, 0xb1, 0x1d, 0xc6, 0xdd, 0xe1, 0x14, 0x00, 0x93, 0x1c, 0x65, 0x34, 0xf5, 0x45,
-0x47, 0x50, 0xfd, 0x52, 0x0b, 0x4d, 0x6d, 0x3e, 0x23, 0x27, 0x94, 0x08, 0xb0, 0xe5, 0x87, 0xc3,
-0x02, 0xa8, 0xba, 0x98, 0xe0, 0x98, 0x06, 0xa8, 0x31, 0xc3, 0xb8, 0xe4, 0x70, 0x07, 0x0f, 0x27,
-0xc7, 0x40, 0x3f, 0x53, 0x62, 0x5d, 0x30, 0x5e, 0xec, 0x54, 0x39, 0x41, 0xd5, 0x23, 0x36, 0xff,
-0xaf, 0xd7, 0x45, 0xb3, 0xd6, 0x98, 0xee, 0x8c, 0xdc, 0x91, 0xf6, 0xa5, 0x0f, 0xc5, 0xf8, 0xe9,
-0xd4, 0x0e, 0xeb, 0x2f, 0x97, 0x4a, 0x36, 0x5d, 0x0c, 0x66, 0xd2, 0x63, 0xbe, 0x55, 0x97, 0x3c,
-0x3e, 0x1a, 0xf4, 0xf1, 0x8b, 0xc9, 0x0a, 0xa7, 0x72, 0x90, 0x2e, 0x89, 0xe2, 0x91, 0xec, 0xa8,
-0x0f, 0xca, 0x0c, 0xf0, 0xd0, 0x15, 0x7b, 0x37, 0x3f, 0x52, 0xdc, 0x63, 0x12, 0x6a, 0x8c, 0x63,
-0xa1, 0x50, 0xd9, 0x32, 0xb0, 0x0d, 0x8a, 0xe5, 0xb9, 0xbf, 0xce, 0xa1, 0xdc, 0x8f, 0x52, 0x8c,
-0x76, 0x97, 0x9f, 0xaf, 0x17, 0xd1, 0x1c, 0xf7, 0x8f, 0x1c, 0x4f, 0x3d, 0x6a, 0x56, 0xd2, 0x64,
-0xc4, 0x66, 0x84, 0x5b, 0xbf, 0x44, 0x7f, 0x25, 0xd4, 0x01, 0x99, 0xdd, 0x51, 0xbd, 0xa8, 0xa4,
-0xa6, 0x96, 0x48, 0x95, 0x1a, 0xa1, 0x13, 0xb9, 0xf7, 0xd9, 0xee, 0xfe, 0xd7, 0x22, 0x3d, 0x41,
-0x6e, 0x56, 0xfe, 0x5f, 0xc6, 0x5c, 0xc7, 0x4d, 0xd3, 0x35, 0x66, 0x18, 0x10, 0xf9, 0x01, 0xdb,
-0xdf, 0xc0, 0x2d, 0xad, 0x74, 0xa2, 0xa6, 0xa2, 0xa7, 0xae, 0xd7, 0xc5, 0xd8, 0xe4, 0x1a, 0x07,
-0x5b, 0x27, 0xaf, 0x40, 0xfb, 0x4f, 0xbd, 0x53, 0x53, 0x4c, 0x4b, 0x3c, 0x93, 0x26, 0x44, 0x0e,
-0xc2, 0xf5, 0x95, 0xde, 0x3f, 0xca, 0x1d, 0xbb, 0xa1, 0xb2, 0x93, 0xb3, 0xe9, 0xbe, 0x9d, 0xd3,
-0x02, 0xef, 0x1c, 0x0c, 0xc3, 0x25, 0x35, 0x38, 0x49, 0x41, 0xa7, 0x40, 0x71, 0x38, 0xa9, 0x2a,
-0x16, 0x1a, 0x8a, 0x08, 0x1c, 0xf7, 0xb2, 0xe6, 0x1b, 0xd8, 0x9d, 0xcc, 0xab, 0xc6, 0xd1, 0xc7,
-0x2b, 0xd1, 0xaf, 0xe1, 0x74, 0xf6, 0x66, 0x0b, 0xdf, 0x1c, 0x05, 0x28, 0x2b, 0x2c, 0x61, 0x2a,
-0x0b, 0x24, 0x3c, 0x1b, 0x30, 0x11, 0xe6, 0x06, 0xba, 0xfc, 0xd0, 0xf2, 0x66, 0xe9, 0xa7, 0xe1,
-0x19, 0xdd, 0x2f, 0xdd, 0x79, 0xe2, 0x3c, 0xec, 0x82, 0xf8, 0xae, 0x04, 0x1a, 0x0e, 0x9e, 0x13,
-0x46, 0x15, 0x0a, 0x14, 0x2e, 0x11, 0xc2, 0x0d, 0x70, 0x0a, 0x94, 0x07, 0xe2, 0x04, 0xb8, 0x01,
-0xc0, 0xfd, 0x44, 0xf9, 0xc4, 0xf4, 0x78, 0xf1, 0xf8, 0xef, 0x9e, 0xf0, 0x2a, 0xf3, 0x78, 0xf6,
-0xa2, 0xf9, 0x28, 0xfc, 0x0a, 0xfe, 0xb6, 0xff, 0xd2, 0x01, 0x7e, 0x04, 0x40, 0x08, 0xbe, 0x0c,
-0x26, 0x11, 0x44, 0x14, 0x92, 0x14, 0x3e, 0x11, 0x6c, 0x0a, 0x32, 0x01, 0x7e, 0xf7, 0xec, 0xee,
-0xa6, 0xe8, 0x2e, 0xe5, 0x0a, 0xe4, 0x14, 0xe5, 0xe6, 0xe7, 0x92, 0xec, 0x50, 0xf3, 0x70, 0xfc,
-0xec, 0x07, 0xf2, 0x14, 0x3b, 0x21, 0x59, 0x2a, 0xb7, 0x2d, 0x61, 0x29, 0xdf, 0x1d, 0xe0, 0x0c,
-0xe0, 0xf9, 0x5a, 0xe8, 0xa1, 0xda, 0x01, 0xd2, 0xa1, 0xce, 0x95, 0xcf, 0xbd, 0xd4, 0xab, 0xdd,
-0x70, 0xea, 0x0a, 0xfb, 0x6a, 0x0e, 0x7f, 0x22, 0x53, 0x34, 0x4d, 0x40, 0x15, 0x43, 0x67, 0x3b,
-0x93, 0x29, 0x92, 0x11, 0x60, 0xf7, 0x8b, 0xdf, 0xf5, 0xcc, 0x07, 0xc1, 0xc3, 0xbb, 0xc7, 0xbc,
-0x0f, 0xc4, 0x73, 0xd1, 0x10, 0xe5, 0xa2, 0xfd, 0xe4, 0x18, 0x4f, 0x33, 0x77, 0x48, 0x85, 0x54,
-0xa9, 0x54, 0x3b, 0x48, 0x4f, 0x31, 0xb2, 0x13, 0x3e, 0xf4, 0x2b, 0xd7, 0x3f, 0xc0, 0xe5, 0xb0,
-0x52, 0xaa, 0x7d, 0xac, 0x9f, 0xb7, 0xbf, 0xcb, 0x32, 0xe7, 0x7e, 0x07, 0x59, 0x28, 0x91, 0x45,
-0x82, 0x5a, 0xf6, 0x63, 0xda, 0x5f, 0x77, 0x4e, 0xe7, 0x32, 0xaa, 0x10, 0x0c, 0xed, 0x4b, 0xcc,
-0x6b, 0xb2, 0x04, 0xa2, 0x74, 0x9c, 0x36, 0xa2, 0x2f, 0xb3, 0x0d, 0xce, 0x76, 0xef, 0xce, 0x13,
-0xf5, 0x35, 0x25, 0x52, 0xb2, 0x64, 0xbe, 0x6a, 0x92, 0x63, 0xcb, 0x4f, 0xbd, 0x31, 0x4c, 0x0d,
-0xa0, 0xe6, 0xfb, 0xc2, 0x42, 0xa7, 0xf0, 0x96, 0xee, 0x93, 0xba, 0x9e, 0x89, 0xb5, 0xe9, 0xd5,
-0x1a, 0xfb, 0x0f, 0x20, 0xed, 0x40, 0xfc, 0x59, 0x1e, 0x69, 0x30, 0x6c, 0x9a, 0x62, 0xbf, 0x4c,
-0x0f, 0x2d, 0x5c, 0x06, 0xe7, 0xdd, 0x47, 0xb9, 0x3e, 0x9e, 0xd4, 0x90, 0x82, 0x92, 0x9c, 0xa2,
-0x41, 0xbe, 0x39, 0xe1, 0x38, 0x06, 0xdb, 0x28, 0xef, 0x45, 0x46, 0x5b, 0x1c, 0x67, 0xe0, 0x67,
-0xaa, 0x5c, 0xbd, 0x45, 0xb5, 0x24, 0x24, 0xfd, 0x95, 0xd4, 0xd1, 0xb1, 0x88, 0x9a, 0x64, 0x92,
-0x92, 0x99, 0xf9, 0xad, 0x89, 0xcb, 0x76, 0xed, 0x2e, 0x0f, 0x65, 0x2d, 0xf9, 0x45, 0x64, 0x57,
-0x38, 0x60, 0xd6, 0x5e, 0x4b, 0x52, 0x85, 0x3a, 0x7e, 0x19, 0x2a, 0xf3, 0xbd, 0xcd, 0xd1, 0xaf,
-0x7a, 0x9e, 0xfc, 0x9b, 0x28, 0xa7, 0xe5, 0xbc, 0xdb, 0xd8, 0xcc, 0xf6, 0x60, 0x13, 0x3f, 0x2c,
-0x39, 0x40, 0xe7, 0x4d, 0x35, 0x54, 0x23, 0x51, 0x05, 0x44, 0xe9, 0x2c, 0xfe, 0x0d, 0xf0, 0xeb,
-0x69, 0xcc, 0x47, 0xb5, 0x44, 0xaa, 0xf3, 0xab, 0x6f, 0xb8, 0x99, 0xcc, 0x88, 0xe4, 0x26, 0xfd,
-0x2c, 0x14, 0xbf, 0x27, 0x15, 0x37, 0x47, 0x41, 0x9d, 0x44, 0x85, 0x40, 0xcb, 0x33, 0x5f, 0x1f,
-0xbc, 0x05, 0xa6, 0xea, 0xfd, 0xd2, 0xf5, 0xc2, 0x79, 0xbc, 0x91, 0xbf, 0xa1, 0xca, 0xa1, 0xda,
-0x60, 0xed, 0x46, 0x00, 0x5e, 0x11, 0xd9, 0x1f, 0x5f, 0x2a, 0x65, 0x30, 0x85, 0x31, 0xc9, 0x2c,
-0xb1, 0x22, 0xd6, 0x13, 0xdc, 0x01, 0x9c, 0xef, 0x2d, 0xe0, 0xcf, 0xd5, 0x15, 0xd2, 0xdf, 0xd4,
-0xb9, 0xdc, 0x60, 0xe8, 0x34, 0xf5, 0xb2, 0x01, 0x58, 0x0c, 0x26, 0x14, 0xfa, 0x18, 0x08, 0x1b,
-0xa4, 0x1a, 0x2c, 0x18, 0xce, 0x13, 0x46, 0x0d, 0xfe, 0x04, 0xd0, 0xfb, 0x18, 0xf3, 0xa8, 0xec,
-0xa2, 0xe9, 0x6a, 0xea, 0x68, 0xee, 0x32, 0xf4, 0x24, 0xfa, 0xfc, 0xfe, 0xf6, 0x01, 0xf4, 0x02,
-0xd8, 0x02, 0xbe, 0x02, 0xe4, 0x03, 0xa6, 0x06, 0x1e, 0x0a, 0xe4, 0x0c, 0xc2, 0x0d, 0x04, 0x0c,
-0x5c, 0x08, 0x34, 0x04, 0xb4, 0x00, 0xba, 0xfe, 0xc8, 0xfd, 0xc2, 0xfc, 0xc8, 0xfa, 0x1c, 0xf7,
-0x54, 0xf2, 0x8a, 0xed, 0x8e, 0xea, 0x50, 0xeb, 0xb8, 0xf0, 0x5a, 0xfa, 0x2a, 0x06, 0x8a, 0x11,
-0xfa, 0x19, 0x1d, 0x1e, 0x23, 0x1e, 0x42, 0x1b, 0x9a, 0x16, 0xce, 0x10, 0x94, 0x09, 0x80, 0x00,
-0x92, 0xf5, 0x9e, 0xe9, 0x4f, 0xde, 0x15, 0xd6, 0x47, 0xd3, 0x77, 0xd7, 0xcf, 0xe2, 0x84, 0xf3,
-0xea, 0x06, 0x82, 0x19, 0x17, 0x28, 0x03, 0x31, 0xbd, 0x33, 0x1b, 0x31, 0xbb, 0x29, 0x7b, 0x1e,
-0x7c, 0x0f, 0x8c, 0xfd, 0x4a, 0xea, 0xa5, 0xd7, 0xf1, 0xc8, 0x5d, 0xc0, 0x29, 0xc0, 0xfd, 0xc8,
-0xeb, 0xd9, 0xf6, 0xf0, 0xa2, 0x0a, 0x15, 0x23, 0xd9, 0x36, 0x9b, 0x43, 0xf3, 0x47, 0x13, 0x44,
-0x6d, 0x38, 0x21, 0x26, 0x10, 0x0f, 0x2c, 0xf5, 0xb1, 0xdb, 0xdf, 0xc5, 0x65, 0xb6, 0xf3, 0xaf,
-0xf3, 0xb2, 0xdb, 0xbf, 0x65, 0xd5, 0x5c, 0xf1, 0x48, 0x10, 0x03, 0x2e, 0x43, 0x46, 0x96, 0x55,
-0xf8, 0x59, 0x8f, 0x52, 0xbf, 0x40, 0xaf, 0x26, 0xec, 0x07, 0x32, 0xe8, 0x75, 0xcb, 0x1f, 0xb5,
-0x90, 0xa7, 0xf6, 0xa3, 0x9a, 0xaa, 0x61, 0xbb, 0x43, 0xd5, 0xfa, 0xf5, 0xb0, 0x19, 0x95, 0x3b,
-0x70, 0x56, 0xec, 0x65, 0x3a, 0x67, 0x16, 0x5a, 0x4f, 0x41, 0x9f, 0x20, 0x3a, 0xfd, 0x4f, 0xdb,
-0xb1, 0xbe, 0x4a, 0xaa, 0x52, 0x9f, 0x76, 0x9e, 0x04, 0xa8, 0xf3, 0xbb, 0x97, 0xd9, 0x40, 0xfe,
-0x69, 0x25, 0x67, 0x49, 0x24, 0x64, 0xbc, 0x70, 0xfe, 0x6c, 0x08, 0x5a, 0x05, 0x3c, 0x30, 0x18,
-0x7c, 0xf3, 0x27, 0xd2, 0x3d, 0xb7, 0xd8, 0xa4, 0xdc, 0x9b, 0xf2, 0x9c, 0xee, 0xa8, 0x03, 0xc0,
-0x1b, 0xe1, 0xa2, 0x08, 0x21, 0x31, 0x39, 0x54, 0xcc, 0x6b, 0x5e, 0x73, 0x6a, 0x6a, 0x0f, 0x53,
-0xd1, 0x32, 0xa8, 0x0e, 0x4c, 0xeb, 0x41, 0xcc, 0x0f, 0xb4, 0x74, 0xa4, 0x2e, 0x9e, 0x4c, 0xa2,
-0x63, 0xb1, 0x73, 0xcb, 0x32, 0xee, 0x62, 0x15, 0x37, 0x3b, 0xb8, 0x59, 0x8e, 0x6b, 0xde, 0x6d,
-0x06, 0x61, 0x41, 0x48, 0x7b, 0x28, 0x72, 0x06, 0xbe, 0xe5, 0xcb, 0xc9, 0x93, 0xb4, 0xc0, 0xa7,
-0xb2, 0xa4, 0xcf, 0xab, 0xc3, 0xbd, 0x07, 0xd9, 0x9e, 0xfa, 0x3f, 0x1e, 0xa5, 0x3e, 0xd6, 0x56,
-0x4a, 0x63, 0x16, 0x62, 0x21, 0x54, 0x85, 0x3c, 0xff, 0x1e, 0xda, 0xff, 0x5b, 0xe2, 0x91, 0xc9,
-0xeb, 0xb7, 0x39, 0xaf, 0x19, 0xb0, 0xb3, 0xba, 0xfb, 0xcd, 0xaa, 0xe7, 0xca, 0x04, 0xa5, 0x21,
-0x97, 0x3a, 0x59, 0x4c, 0x6b, 0x54, 0x91, 0x51, 0xaf, 0x44, 0xc3, 0x2f, 0xfc, 0x15, 0x2e, 0xfb,
-0x4f, 0xe2, 0x87, 0xce, 0xff, 0xc1, 0x8f, 0xbd, 0xd7, 0xc1, 0x99, 0xcd, 0x0f, 0xdf, 0x10, 0xf4,
-0xe0, 0x09, 0xa3, 0x1e, 0x4f, 0x30, 0xa5, 0x3c, 0xf9, 0x41, 0x21, 0x3f, 0x25, 0x34, 0xc5, 0x22,
-0x90, 0x0d, 0xe6, 0xf7, 0x0c, 0xe5, 0x67, 0xd7, 0xb5, 0xd0, 0xf7, 0xd0, 0x05, 0xd7, 0x1f, 0xe1,
-0x60, 0xed, 0x6a, 0xfa, 0x82, 0x07, 0xde, 0x13, 0x2f, 0x1f, 0x9d, 0x27, 0xc7, 0x2b, 0x43, 0x2a,
-0xa7, 0x22, 0x62, 0x16, 0x56, 0x07, 0xda, 0xf8, 0x66, 0xed, 0xbe, 0xe6, 0x2e, 0xe5, 0xb2, 0xe7,
-0x80, 0xec, 0xd0, 0xf1, 0xac, 0xf6, 0x0a, 0xfb, 0xc4, 0xff, 0x4e, 0x05, 0xba, 0x0b, 0xb6, 0x11,
-0xaa, 0x15, 0x52, 0x16, 0xec, 0x12, 0x96, 0x0c, 0x24, 0x05, 0xd0, 0xfe, 0x66, 0xfb, 0xc0, 0xfa,
-0x46, 0xfc, 0x5e, 0xfe, 0x28, 0xff, 0xfa, 0xfd, 0xc4, 0xfa, 0xda, 0xf6, 0x06, 0xf4, 0x5c, 0xf3,
-0x5e, 0xf5, 0x6a, 0xf9, 0x16, 0xfe, 0x72, 0x02, 0x9e, 0x05, 0xd6, 0x07, 0xe2, 0x09, 0x86, 0x0c,
-0xd8, 0x0f, 0xf6, 0x12, 0x72, 0x14, 0x38, 0x13, 0x80, 0x0e, 0x40, 0x06, 0x94, 0xfb, 0x1c, 0xf0,
-0x4c, 0xe6, 0xe5, 0xdf, 0x19, 0xde, 0x35, 0xe1, 0x54, 0xe8, 0x7a, 0xf2, 0xe4, 0xfd, 0x7e, 0x09,
-0x82, 0x14, 0x25, 0x1e, 0x63, 0x25, 0x41, 0x29, 0x9f, 0x28, 0x4f, 0x23, 0x2c, 0x19, 0x9c, 0x0a,
-0x2e, 0xf9, 0xde, 0xe6, 0xbd, 0xd6, 0x79, 0xcb, 0x3f, 0xc7, 0x53, 0xcb, 0xf7, 0xd6, 0x92, 0xe8,
-0x10, 0xfd, 0x92, 0x11, 0xbf, 0x23, 0xcf, 0x31, 0x8d, 0x3a, 0x27, 0x3d, 0x67, 0x39, 0x75, 0x2f,
-0xd1, 0x1f, 0x14, 0x0b, 0xea, 0xf2, 0x0d, 0xda, 0x59, 0xc4, 0xe9, 0xb5, 0xb9, 0xb1, 0x6d, 0xb9,
-0xef, 0xcb, 0xb2, 0xe5, 0x50, 0x02, 0x37, 0x1d, 0x89, 0x33, 0x29, 0x43, 0x53, 0x4b, 0xe7, 0x4b,
-0xe7, 0x44, 0xdd, 0x36, 0x05, 0x22, 0x4e, 0x07, 0xee, 0xe8, 0xbd, 0xca, 0x97, 0xb1, 0xb8, 0xa2,
-0xa0, 0xa1, 0xed, 0xae, 0x77, 0xc8, 0x16, 0xe9, 0x20, 0x0b, 0x9f, 0x29, 0x57, 0x41, 0x27, 0x51,
-0x68, 0x58, 0xec, 0x56, 0xc9, 0x4c, 0x31, 0x3a, 0xcf, 0x1f, 0x32, 0xff, 0x85, 0xdb, 0xc7, 0xb9,
-0x3c, 0xa0, 0xfe, 0x93, 0xb2, 0x97, 0xf2, 0xaa, 0xfd, 0xc9, 0xd8, 0xee, 0x84, 0x13, 0x53, 0x33,
-0xa3, 0x4b, 0x48, 0x5b, 0x70, 0x61, 0x98, 0x5d, 0xa7, 0x4f, 0x3b, 0x38, 0x6c, 0x18, 0x22, 0xf3,
-0xaf, 0xcc, 0x26, 0xab, 0x70, 0x94, 0xc6, 0x8c, 0x88, 0x95, 0x29, 0xad, 0x53, 0xcf, 0x18, 0xf6,
-0xa0, 0x1b, 0x81, 0x3b, 0x6b, 0x53, 0x04, 0x62, 0x00, 0x66, 0x98, 0x5e, 0x1b, 0x4c, 0xb5, 0x2f,
-0x14, 0x0c, 0x04, 0xe5, 0xad, 0xbf, 0xe8, 0xa1, 0x82, 0x90, 0xc4, 0x8d, 0x4c, 0x9a, 0xff, 0xb3,
-0xb3, 0xd6, 0x18, 0xfd, 0xe5, 0x21, 0x11, 0x41, 0x04, 0x58, 0x8c, 0x64, 0x00, 0x65, 0x4e, 0x59,
-0x61, 0x42, 0x09, 0x23, 0xbe, 0xfe, 0xbb, 0xd9, 0x2f, 0xb9, 0x3a, 0xa1, 0xcc, 0x94, 0x84, 0x95,
-0x78, 0xa3, 0xff, 0xbc, 0xc5, 0xde, 0xcc, 0x03, 0x31, 0x27, 0xa9, 0x44, 0xea, 0x58, 0x9a, 0x61,
-0x82, 0x5d, 0x73, 0x4d, 0x2b, 0x34, 0xbc, 0x14, 0xb0, 0xf3, 0x69, 0xd4, 0x63, 0xba, 0x56, 0xa8,
-0xe2, 0x9f, 0x18, 0xa2, 0x99, 0xaf, 0xab, 0xc7, 0x1a, 0xe7, 0xe0, 0x09, 0x4b, 0x2a, 0x35, 0x44,
-0x11, 0x54, 0xb2, 0x57, 0x7f, 0x4f, 0xb5, 0x3d, 0x35, 0x25, 0xd8, 0x09, 0xc0, 0xee, 0x47, 0xd6,
-0xcf, 0xc2, 0x37, 0xb5, 0xdb, 0xae, 0x5d, 0xb1, 0xcd, 0xbd, 0x71, 0xd3, 0x08, 0xf0, 0xaa, 0x0e,
-0x55, 0x2a, 0xc1, 0x3e, 0xbf, 0x48, 0xc7, 0x47, 0x73, 0x3d, 0x37, 0x2c, 0x9c, 0x17, 0x9a, 0x02,
-0xce, 0xee, 0xb9, 0xdd, 0xd9, 0xcf, 0xf5, 0xc5, 0x71, 0xc1, 0xc7, 0xc3, 0x27, 0xce, 0x6b, 0xe0,
-0x9a, 0xf7, 0xbe, 0x0f, 0x3b, 0x24, 0xa9, 0x31, 0x87, 0x36, 0x17, 0x33, 0x83, 0x29, 0x73, 0x1c,
-0x70, 0x0e, 0xc8, 0x00, 0x9e, 0xf4, 0xfe, 0xe9, 0x1b, 0xe1, 0x43, 0xda, 0x91, 0xd6, 0x9d, 0xd7,
-0x51, 0xde, 0x4e, 0xea, 0x9a, 0xf9, 0x42, 0x09, 0xd6, 0x15, 0x95, 0x1d, 0x73, 0x1f, 0xab, 0x1c,
-0x0e, 0x17, 0x14, 0x10, 0x4e, 0x09, 0x5c, 0x03, 0x50, 0xfe, 0xb4, 0xf9, 0x1e, 0xf5, 0xc0, 0xf0,
-0x4c, 0xed, 0x88, 0xeb, 0x54, 0xec, 0x1c, 0xf0, 0xf2, 0xf5, 0x7e, 0xfc, 0x44, 0x02, 0xfe, 0x05,
-0xe4, 0x07, 0x1a, 0x08, 0xa2, 0x07, 0x6a, 0x07, 0xe4, 0x07, 0x02, 0x09, 0x78, 0x0a, 0x74, 0x0b,
-0xb4, 0x0a, 0xd8, 0x07, 0x94, 0x02, 0xf8, 0xfb, 0x1a, 0xf5, 0x56, 0xef, 0xb2, 0xeb, 0x7c, 0xea,
-0x72, 0xeb, 0xc8, 0xed, 0x4c, 0xf1, 0x8e, 0xf5, 0xd8, 0xfa, 0x38, 0x01, 0xde, 0x08, 0x74, 0x11,
-0xfc, 0x19, 0x77, 0x20, 0xcf, 0x22, 0xa7, 0x1f, 0x60, 0x16, 0x76, 0x08, 0x44, 0xf8, 0x00, 0xe9,
-0x51, 0xdd, 0x69, 0xd6, 0x7b, 0xd4, 0xeb, 0xd6, 0xdb, 0xdc, 0x96, 0xe5, 0x10, 0xf1, 0x1e, 0xff,
-0xfa, 0x0e, 0x61, 0x1f, 0xe9, 0x2d, 0xbb, 0x37, 0xfb, 0x39, 0xd1, 0x32, 0xed, 0x22, 0xe0, 0x0c,
-0x82, 0xf4, 0x21, 0xde, 0x13, 0xcd, 0x3f, 0xc3, 0x83, 0xc0, 0xcd, 0xc3, 0xad, 0xcc, 0x85, 0xda,
-0xa2, 0xec, 0x30, 0x02, 0x8a, 0x19, 0x39, 0x30, 0xc9, 0x42, 0x71, 0x4d, 0x3f, 0x4d, 0x3d, 0x41,
-0xd5, 0x2a, 0xaa, 0x0d, 0xb8, 0xee, 0x9d, 0xd2, 0x87, 0xbd, 0x19, 0xb1, 0xd1, 0xad, 0x07, 0xb3,
-0x9f, 0xbf, 0xf3, 0xd2, 0x36, 0xec, 0x16, 0x09, 0x9d, 0x26, 0x81, 0x41, 0x26, 0x55, 0x4e, 0x5e,
-0x46, 0x5a, 0xfb, 0x48, 0x17, 0x2d, 0x12, 0x0b, 0xb2, 0xe7, 0x15, 0xc8, 0x51, 0xb0, 0x86, 0xa2,
-0xcc, 0x9f, 0x74, 0xa7, 0xfb, 0xb8, 0x4b, 0xd3, 0xa2, 0xf3, 0x42, 0x16, 0x2f, 0x37, 0x0d, 0x52,
-0x70, 0x63, 0x42, 0x68, 0x60, 0x5f, 0xef, 0x49, 0xe3, 0x2a, 0x04, 0x06, 0x63, 0xe0, 0xe7, 0xbe,
-0xd6, 0xa5, 0x6a, 0x98, 0x58, 0x97, 0xd2, 0xa2, 0x9d, 0xb9, 0x5d, 0xd9, 0x22, 0xfe, 0x4f, 0x23,
-0x03, 0x44, 0x6e, 0x5c, 0xfe, 0x69, 0xd8, 0x6a, 0xf4, 0x5e, 0x51, 0x47, 0xb1, 0x26, 0x76, 0x00,
-0x43, 0xd9, 0x57, 0xb6, 0xf6, 0x9c, 0xd6, 0x90, 0x62, 0x93, 0xe8, 0xa3, 0x29, 0xc0, 0x5e, 0xe4,
-0x0e, 0x0b, 0x33, 0x2f, 0xa1, 0x4c, 0xcc, 0x60, 0x3a, 0x6a, 0xda, 0x67, 0xb8, 0x59, 0x09, 0x41,
-0xa9, 0x1f, 0xca, 0xf8, 0x71, 0xd1, 0x41, 0xaf, 0x26, 0x98, 0xec, 0x8f, 0x52, 0x97, 0xd9, 0xac,
-0xa7, 0xcc, 0x5a, 0xf1, 0xca, 0x15, 0x75, 0x35, 0x97, 0x4d, 0x1c, 0x5d, 0x28, 0x63, 0xfe, 0x5e,
-0x77, 0x50, 0xc9, 0x37, 0xb4, 0x16, 0xa2, 0xf0, 0xd7, 0xca, 0xdb, 0xab, 0x70, 0x99, 0x7c, 0x96,
-0x9e, 0xa2, 0xdf, 0xba, 0x87, 0xda, 0x6a, 0xfc, 0xec, 0x1b, 0xe3, 0x35, 0xf3, 0x48, 0x87, 0x54,
-0x1c, 0x58, 0xa7, 0x52, 0xd7, 0x43, 0xdb, 0x2b, 0x64, 0x0c, 0x44, 0xe9, 0x09, 0xc8, 0x0b, 0xaf,
-0xb8, 0xa2, 0xaa, 0xa4, 0x33, 0xb3, 0xf3, 0xca, 0x0c, 0xe7, 0x60, 0x03, 0x9f, 0x1c, 0xe3, 0x30,
-0x7b, 0x3f, 0xab, 0x47, 0xff, 0x48, 0xc5, 0x42, 0x8d, 0x34, 0xab, 0x1e, 0x6e, 0x03, 0x38, 0xe6,
-0x2f, 0xcc, 0x1f, 0xba, 0x05, 0xb3, 0x69, 0xb7, 0x57, 0xc5, 0x57, 0xd9, 0xf8, 0xef, 0x22, 0x06,
-0x6c, 0x19, 0x89, 0x28, 0xc5, 0x32, 0x8f, 0x37, 0xad, 0x36, 0xd7, 0x2f, 0x5d, 0x23, 0x2c, 0x12,
-0xd4, 0xfd, 0x5c, 0xe9, 0xf5, 0xd7, 0xd9, 0xcc, 0x6d, 0xc9, 0xc9, 0xcd, 0x4d, 0xd8, 0xdc, 0xe6,
-0xcc, 0xf6, 0xea, 0x05, 0xba, 0x12, 0xe6, 0x1b, 0x53, 0x21, 0x8d, 0x22, 0x7b, 0x20, 0x76, 0x1b,
-0xec, 0x13, 0x4e, 0x0a, 0x62, 0xff, 0x38, 0xf4, 0x5a, 0xea, 0xb1, 0xe3, 0xeb, 0xe0, 0xf1, 0xe2,
-0xbc, 0xe8, 0xda, 0xf0, 0x00, 0xfa, 0x58, 0x02, 0x7a, 0x08, 0xe2, 0x0b, 0xb4, 0x0c, 0xbc, 0x0b,
-0x86, 0x0a, 0x8a, 0x09, 0x06, 0x09, 0x96, 0x08, 0xf4, 0x06, 0xca, 0x03, 0x88, 0xff, 0x20, 0xfb,
-0xe0, 0xf7, 0x92, 0xf6, 0x26, 0xf7, 0xe2, 0xf8, 0x96, 0xfa, 0xf0, 0xfa, 0xd8, 0xf9, 0x74, 0xf7,
-0x24, 0xf5, 0x98, 0xf4, 0xf8, 0xf6, 0xd2, 0xfc, 0xfa, 0x04, 0x80, 0x0d, 0x1e, 0x14, 0x46, 0x17,
-0x68, 0x16, 0x9a, 0x12, 0x54, 0x0d, 0xcc, 0x07, 0x6e, 0x02, 0xb2, 0xfc, 0x24, 0xf6, 0x86, 0xee,
-0x78, 0xe6, 0xcd, 0xdf, 0xa7, 0xdc, 0x0d, 0xdf, 0x8c, 0xe7, 0x4e, 0xf5, 0xe8, 0x05, 0x64, 0x16,
-0x59, 0x23, 0xbb, 0x2a, 0x21, 0x2c, 0x3b, 0x28, 0x9d, 0x20, 0x2c, 0x16, 0xc6, 0x09, 0x9a, 0xfb,
-0x7c, 0xec, 0x67, 0xdd, 0xe3, 0xd0, 0x1d, 0xc9, 0x69, 0xc8, 0xcd, 0xcf, 0xff, 0xde, 0x06, 0xf4,
-0x88, 0x0b, 0xdf, 0x21, 0x8b, 0x33, 0x3b, 0x3e, 0x89, 0x40, 0x6f, 0x3b, 0xc9, 0x2f, 0x01, 0x1f,
-0x68, 0x0a, 0xb0, 0xf3, 0x1d, 0xdd, 0x87, 0xc9, 0x89, 0xbb, 0x71, 0xb5, 0xdd, 0xb8, 0xbb, 0xc5,
-0x9f, 0xda, 0x56, 0xf5, 0x30, 0x12, 0x71, 0x2d, 0xff, 0x42, 0xd3, 0x4f, 0x5f, 0x52, 0x81, 0x4a,
-0x79, 0x39, 0x43, 0x21, 0xf2, 0x04, 0x68, 0xe7, 0x97, 0xcc, 0x77, 0xb7, 0xf8, 0xaa, 0x7e, 0xa8,
-0x39, 0xb0, 0xc1, 0xc1, 0x59, 0xdb, 0x76, 0xfa, 0x58, 0x1b, 0xff, 0x39, 0x09, 0x52, 0xc4, 0x5f,
-0xd4, 0x60, 0xa1, 0x54, 0x45, 0x3d, 0xf9, 0x1d, 0x30, 0xfb, 0x71, 0xd9, 0x25, 0xbd, 0x9e, 0xa9,
-0x22, 0xa0, 0x68, 0xa1, 0xd5, 0xac, 0xd9, 0xc1, 0xd9, 0xde, 0x5c, 0x01, 0x91, 0x25, 0xdb, 0x46,
-0x22, 0x60, 0x4e, 0x6c, 0x26, 0x69, 0xc4, 0x56, 0x95, 0x38, 0xd6, 0x13, 0x12, 0xee, 0x71, 0xcc,
-0x63, 0xb2, 0x1a, 0xa2, 0x0a, 0x9c, 0x3c, 0xa0, 0x45, 0xae, 0xcf, 0xc5, 0x6e, 0xe5, 0x52, 0x0a,
-0x5f, 0x30, 0xd3, 0x51, 0x26, 0x69, 0xd2, 0x71, 0x96, 0x69, 0x37, 0x52, 0x71, 0x30, 0x12, 0x0a,
-0xca, 0xe4, 0x09, 0xc5, 0x8f, 0xad, 0xe8, 0x9f, 0x8e, 0x9c, 0x28, 0xa3, 0xe1, 0xb3, 0x11, 0xce,
-0xd2, 0xef, 0xae, 0x15, 0xb1, 0x3a, 0x54, 0x59, 0x14, 0x6c, 0x22, 0x6f, 0xfc, 0x61, 0x75, 0x47,
-0xd1, 0x24, 0xe2, 0xff, 0x87, 0xdd, 0x45, 0xc1, 0x81, 0xad, 0x4a, 0xa3, 0xb6, 0xa2, 0x21, 0xac,
-0xf3, 0xbe, 0x7f, 0xda, 0x20, 0xfc, 0xe9, 0x1f, 0xa9, 0x40, 0x84, 0x59, 0x6a, 0x66, 0xe2, 0x64,
-0x92, 0x55, 0x81, 0x3b, 0x86, 0x1b, 0x54, 0xfa, 0x01, 0xdc, 0x6f, 0xc3, 0xbf, 0xb2, 0x53, 0xab,
-0x77, 0xad, 0x1f, 0xb9, 0xa3, 0xcd, 0xd8, 0xe8, 0xca, 0x07, 0x65, 0x26, 0xd5, 0x40, 0x1f, 0x53,
-0xc2, 0x5a, 0x78, 0x56, 0x25, 0x47, 0x8d, 0x2f, 0x16, 0x13, 0x00, 0xf6, 0xa1, 0xdb, 0x59, 0xc7,
-0xcf, 0xba, 0x49, 0xb7, 0xe3, 0xbc, 0xbf, 0xca, 0xd3, 0xde, 0x8a, 0xf6, 0x1a, 0x0f, 0x8b, 0x25,
-0xdb, 0x37, 0xe7, 0x43, 0x09, 0x48, 0x95, 0x43, 0x97, 0x36, 0xc7, 0x22, 0x48, 0x0b, 0x88, 0xf3,
-0xc5, 0xde, 0xcb, 0xcf, 0x65, 0xc8, 0x01, 0xc9, 0xff, 0xd0, 0x3f, 0xde, 0xa2, 0xee, 0xb0, 0xff,
-0xc0, 0x0f, 0xd1, 0x1d, 0xeb, 0x28, 0x77, 0x30, 0x25, 0x33, 0xfb, 0x2f, 0x95, 0x26, 0x26, 0x18,
-0x8e, 0x06, 0x3e, 0xf5, 0x30, 0xe7, 0x59, 0xde, 0xdd, 0xdb, 0x01, 0xdf, 0x56, 0xe6, 0x92, 0xef,
-0xd4, 0xf8, 0xf6, 0x00, 0x0a, 0x08, 0x8a, 0x0e, 0xa8, 0x14, 0xf4, 0x19, 0x2f, 0x1d, 0x25, 0x1d,
-0x9a, 0x18, 0x2a, 0x10, 0xc0, 0x05, 0xbc, 0xfb, 0x92, 0xf4, 0x60, 0xf1, 0xf8, 0xf1, 0x2c, 0xf5,
-0x40, 0xf9, 0x3e, 0xfc, 0x6e, 0xfd, 0x2c, 0xfd, 0x8e, 0xfc, 0xfa, 0xfc, 0x24, 0xff, 0xfc, 0x02,
-0x3c, 0x07, 0x86, 0x0a, 0xb0, 0x0b, 0xb2, 0x0a, 0xba, 0x08, 0x4e, 0x07, 0x46, 0x07, 0x8e, 0x08,
-0x46, 0x0a, 0xce, 0x0a, 0xf8, 0x08, 0x52, 0x04, 0x36, 0xfd, 0x18, 0xf5, 0xc6, 0xed, 0x1c, 0xe9,
-0x26, 0xe8, 0x5a, 0xeb, 0xd0, 0xf1, 0xfa, 0xf9, 0x9a, 0x02, 0xba, 0x0a, 0x2a, 0x12, 0x94, 0x18,
-0xb7, 0x1d, 0x83, 0x20, 0x47, 0x20, 0x2e, 0x1c, 0xee, 0x13, 0x16, 0x08, 0xb2, 0xf9, 0xbe, 0xea,
-0x37, 0xdd, 0xeb, 0xd3, 0xb9, 0xd0, 0x8f, 0xd4, 0xeb, 0xde, 0x18, 0xee, 0x92, 0xff, 0x12, 0x11,
-0xa5, 0x20, 0x8b, 0x2c, 0xe1, 0x33, 0xcf, 0x35, 0xf9, 0x31, 0x99, 0x28, 0x2c, 0x1a, 0xa6, 0x07,
-0xb8, 0xf2, 0x83, 0xdd, 0x1f, 0xcb, 0xb7, 0xbe, 0x3b, 0xbb, 0x33, 0xc2, 0xb1, 0xd2, 0x02, 0xea,
-0x4c, 0x04, 0x57, 0x1d, 0xf1, 0x31, 0x29, 0x40, 0xef, 0x46, 0x59, 0x46, 0xbd, 0x3e, 0x5b, 0x30,
-0x67, 0x1c, 0x06, 0x04, 0x1a, 0xe9, 0xaf, 0xce, 0x7d, 0xb8, 0x08, 0xab, 0x9a, 0xa9, 0x85, 0xb5,
-0x13, 0xcd, 0x38, 0xec, 0x30, 0x0d, 0x07, 0x2b, 0xfb, 0x41, 0x3b, 0x50, 0x9e, 0x55, 0x05, 0x52,
-0x6d, 0x46, 0x97, 0x33, 0x80, 0x1a, 0xa8, 0xfc, 0xb9, 0xdc, 0x6d, 0xbe, 0xe8, 0xa6, 0xf2, 0x9a,
-0xd0, 0x9d, 0x17, 0xb0, 0x83, 0xce, 0x74, 0xf3, 0x7a, 0x18, 0x2d, 0x38, 0x45, 0x4f, 0x66, 0x5c,
-0x48, 0x5f, 0xd4, 0x58, 0x73, 0x49, 0x43, 0x32, 0x84, 0x14, 0x36, 0xf2, 0xd3, 0xce, 0x63, 0xaf,
-0x72, 0x99, 0x76, 0x91, 0xe2, 0x99, 0x65, 0xb1, 0x37, 0xd4, 0xf6, 0xfb, 0x21, 0x22, 0xb1, 0x41,
-0xb8, 0x57, 0x5a, 0x63, 0x04, 0x64, 0x58, 0x5a, 0x2b, 0x47, 0xcf, 0x2b, 0xf2, 0x09, 0xc2, 0xe4,
-0xe9, 0xc0, 0xb6, 0xa3, 0x62, 0x92, 0xc2, 0x8f, 0xe0, 0x9c, 0xdf, 0xb7, 0x47, 0xdc, 0x10, 0x04,
-0x39, 0x29, 0xa3, 0x47, 0x3e, 0x5c, 0xea, 0x65, 0xf4, 0x63, 0xcc, 0x56, 0xa3, 0x3f, 0x91, 0x20,
-0x98, 0xfc, 0xcb, 0xd7, 0x3b, 0xb7, 0x5a, 0x9f, 0xb4, 0x93, 0xd4, 0x95, 0x96, 0xa5, 0x07, 0xc1,
-0x3c, 0xe4, 0x22, 0x0a, 0x57, 0x2d, 0xc9, 0x49, 0x8e, 0x5c, 0xc6, 0x63, 0xa0, 0x5e, 0xdd, 0x4d,
-0x9f, 0x33, 0x34, 0x13, 0x84, 0xf0, 0x9f, 0xcf, 0xeb, 0xb4, 0x56, 0xa3, 0x6c, 0x9c, 0xf6, 0xa0,
-0xd3, 0xb0, 0xb1, 0xca, 0x8e, 0xeb, 0xcc, 0x0e, 0x77, 0x2f, 0x6d, 0x49, 0xf8, 0x58, 0x44, 0x5c,
-0x1b, 0x53, 0x67, 0x3f, 0x5d, 0x24, 0xda, 0x05, 0xe8, 0xe7, 0x0b, 0xce, 0x6d, 0xba, 0x6d, 0xae,
-0xe8, 0xaa, 0x0d, 0xb0, 0x7d, 0xbe, 0x5b, 0xd5, 0x58, 0xf2, 0xaa, 0x11, 0x75, 0x2e, 0xef, 0x43,
-0x0d, 0x4f, 0x51, 0x4e, 0x9d, 0x42, 0xcd, 0x2e, 0x96, 0x16, 0xe6, 0xfd, 0x6c, 0xe7, 0xe5, 0xd4,
-0x4f, 0xc7, 0x05, 0xbf, 0x71, 0xbc, 0xab, 0xc0, 0x53, 0xcc, 0x79, 0xdf, 0x2c, 0xf8, 0x46, 0x12,
-0x59, 0x29, 0x45, 0x39, 0x73, 0x3f, 0xc5, 0x3b, 0x03, 0x30, 0x3d, 0x1f, 0xcc, 0x0c, 0x08, 0xfb,
-0xda, 0xeb, 0xf3, 0xdf, 0x1f, 0xd7, 0x8f, 0xd1, 0xeb, 0xcf, 0xf7, 0xd2, 0xcd, 0xdb, 0xfe, 0xe9,
-0xd2, 0xfb, 0x3c, 0x0e, 0x6f, 0x1d, 0xad, 0x26, 0xeb, 0x28, 0xcf, 0x24, 0x53, 0x1c, 0xbc, 0x11,
-0xee, 0x06, 0xc0, 0xfd, 0x3a, 0xf6, 0x3a, 0xf0, 0x8e, 0xeb, 0x14, 0xe8, 0x22, 0xe6, 0x5e, 0xe6,
-0xa0, 0xe9, 0x26, 0xf0, 0x30, 0xf9, 0x98, 0x02, 0xbe, 0x0a, 0xd6, 0x0f, 0x94, 0x11, 0x7e, 0x10,
-0x9c, 0x0d, 0x22, 0x0a, 0x0a, 0x07, 0xda, 0x04, 0x7e, 0x03, 0xb4, 0x02, 0x6e, 0x01, 0x18, 0xff,
-0x62, 0xfb, 0xf6, 0xf6, 0xba, 0xf2, 0xde, 0xef, 0x48, 0xef, 0xea, 0xf0, 0x0c, 0xf4, 0x8a, 0xf7,
-0xf6, 0xfa, 0x38, 0xfe, 0x94, 0x01, 0x42, 0x05, 0x98, 0x09, 0xc8, 0x0e, 0x08, 0x14, 0xf2, 0x17,
-0xfc, 0x18, 0x1e, 0x16, 0x90, 0x0e, 0x2e, 0x03, 0x0a, 0xf6, 0xb6, 0xe9, 0xcb, 0xe0, 0x3d, 0xdc,
-0x03, 0xdc, 0x8f, 0xdf, 0xf8, 0xe5, 0x26, 0xee, 0xf4, 0xf7, 0x04, 0x03, 0x20, 0x0f, 0x84, 0x1b,
-0xa1, 0x26, 0x83, 0x2e, 0x87, 0x30, 0xe7, 0x2a, 0x87, 0x1d, 0xec, 0x09, 0x60, 0xf3, 0x73, 0xde,
-0x85, 0xce, 0xf3, 0xc5, 0xfb, 0xc4, 0x55, 0xca, 0xcb, 0xd4, 0xfb, 0xe2, 0x90, 0xf3, 0x06, 0x06,
-0x40, 0x19, 0xa5, 0x2b, 0xd3, 0x3a, 0xbd, 0x43, 0xf1, 0x43, 0xc1, 0x39, 0x6f, 0x25, 0x16, 0x0a,
-0x70, 0xec, 0x77, 0xd1, 0xd9, 0xbd, 0x4d, 0xb3, 0x33, 0xb2, 0x87, 0xb9, 0xa5, 0xc7, 0x09, 0xdb,
-0x56, 0xf2, 0x04, 0x0c, 0x15, 0x26, 0xab, 0x3d, 0xf7, 0x4e, 0x0e, 0x57, 0x0f, 0x53, 0xbb, 0x42,
-0xe3, 0x27, 0x9a, 0x06, 0x14, 0xe4, 0xdb, 0xc5, 0x01, 0xb0, 0xca, 0xa4, 0x6a, 0xa4, 0xd1, 0xad,
-0x13, 0xc0, 0x35, 0xd9, 0x34, 0xf7, 0x14, 0x17, 0x91, 0x35, 0xd1, 0x4e, 0x12, 0x5f, 0x20, 0x63,
-0xf2, 0x59, 0x83, 0x44, 0x51, 0x25, 0xb2, 0x00, 0xbd, 0xdb, 0xc3, 0xbb, 0xdc, 0xa4, 0x98, 0x99,
-0x98, 0x9a, 0x92, 0xa7, 0xd7, 0xbe, 0xe3, 0xdd, 0x4c, 0x01, 0xe7, 0x24, 0x5b, 0x44, 0xdc, 0x5b,
-0x50, 0x68, 0xf4, 0x67, 0xb8, 0x5a, 0x11, 0x42, 0xdd, 0x20, 0xca, 0xfa, 0x65, 0xd4, 0x09, 0xb3,
-0x8a, 0x9b, 0x06, 0x91, 0xf2, 0x94, 0x6a, 0xa6, 0x2d, 0xc3, 0x8c, 0xe7, 0x68, 0x0e, 0x8b, 0x32,
-0xdb, 0x4f, 0x4c, 0x63, 0xf2, 0x6a, 0x52, 0x66, 0xf0, 0x55, 0xb9, 0x3b, 0xd0, 0x19, 0x6a, 0xf3,
-0x17, 0xcd, 0x4b, 0xac, 0x64, 0x96, 0xf2, 0x8e, 0xfc, 0x96, 0x31, 0xad, 0x31, 0xce, 0x6e, 0xf4,
-0x84, 0x1a, 0x87, 0x3b, 0x0f, 0x54, 0x84, 0x62, 0x22, 0x66, 0xd6, 0x5e, 0x95, 0x4d, 0x7b, 0x33,
-0x44, 0x12, 0x02, 0xed, 0x1b, 0xc8, 0x88, 0xa9, 0xd6, 0x96, 0x76, 0x93, 0xd0, 0x9f, 0x8d, 0xb9,
-0xb7, 0xdb, 0xba, 0x00, 0xd3, 0x22, 0x31, 0x3e, 0x35, 0x51, 0xe0, 0x5a, 0x64, 0x5b, 0xa1, 0x52,
-0x61, 0x41, 0x5d, 0x28, 0x2e, 0x09, 0x5c, 0xe6, 0x23, 0xc5, 0x53, 0xab, 0xae, 0x9d, 0x20, 0x9f,
-0x77, 0xae, 0xf5, 0xc8, 0x04, 0xe9, 0x20, 0x09, 0xe7, 0x24, 0x41, 0x3a, 0x23, 0x48, 0x69, 0x4e,
-0x17, 0x4d, 0x19, 0x44, 0x01, 0x34, 0xfb, 0x1c, 0xf0, 0x00, 0xcf, 0xe2, 0x61, 0xc7, 0xbd, 0xb3,
-0xa7, 0xab, 0x63, 0xb0, 0xbf, 0xc0, 0xb7, 0xd8, 0xa6, 0xf3, 0x54, 0x0d, 0x67, 0x22, 0xc9, 0x31,
-0x19, 0x3b, 0x37, 0x3e, 0x3b, 0x3b, 0x5d, 0x32, 0xd5, 0x23, 0xc0, 0x10, 0x72, 0xfa, 0xc0, 0xe3,
-0x69, 0xd0, 0xc7, 0xc3, 0x3f, 0xc0, 0xf7, 0xc5, 0x81, 0xd3, 0x02, 0xe6, 0xc0, 0xf9, 0xac, 0x0b,
-0x1a, 0x1a, 0x13, 0x24, 0x7f, 0x29, 0x51, 0x2a, 0xb9, 0x26, 0x73, 0x1f, 0x2a, 0x15, 0x3c, 0x08,
-0x3a, 0xfa, 0x6c, 0xec, 0xed, 0xe0, 0x7b, 0xd9, 0x53, 0xd7, 0x03, 0xdb, 0xab, 0xe3, 0x5c, 0xef,
-0xbe, 0xfb, 0xf4, 0x06, 0x66, 0x0f, 0xb2, 0x14, 0x7e, 0x16, 0x7a, 0x15, 0x6e, 0x12, 0x2c, 0x0e,
-0xb6, 0x09, 0x28, 0x05, 0x60, 0x00, 0x3a, 0xfb, 0xf2, 0xf5, 0x46, 0xf1, 0xa4, 0xee, 0x90, 0xee,
-0x50, 0xf1, 0xfc, 0xf5, 0xf8, 0xfa, 0xd4, 0xfe, 0xa4, 0x00, 0x66, 0x00, 0xee, 0xfe, 0x90, 0xfd,
-0x76, 0xfd, 0xae, 0xff, 0xec, 0x03, 0x2a, 0x09, 0x60, 0x0d, 0xfc, 0x0e, 0x86, 0x0d, 0x88, 0x09,
-0x98, 0x04, 0xf0, 0xff, 0x5c, 0xfc, 0x78, 0xf9, 0x9e, 0xf6, 0xd2, 0xf2, 0x3e, 0xee, 0xd4, 0xe9,
-0x2a, 0xe7, 0x2c, 0xe8, 0x9a, 0xed, 0xaa, 0xf7, 0xb0, 0x04, 0x60, 0x12, 0x85, 0x1d, 0xc9, 0x23,
-0x4b, 0x24, 0xc3, 0x1f, 0xca, 0x17, 0xf6, 0x0d, 0x6e, 0x03, 0x68, 0xf8, 0x3e, 0xed, 0x31, 0xe2,
-0x87, 0xd8, 0x51, 0xd2, 0x75, 0xd1, 0x45, 0xd7, 0xee, 0xe3, 0xea, 0xf5, 0xc0, 0x0a, 0xef, 0x1e,
-0xeb, 0x2e, 0x11, 0x38, 0x55, 0x39, 0x4b, 0x33, 0xa7, 0x27, 0x0c, 0x18, 0xca, 0x05, 0x60, 0xf2,
-0x2f, 0xdf, 0x7d, 0xce, 0x73, 0xc2, 0x41, 0xbd, 0xb1, 0xc0, 0xdf, 0xcc, 0x85, 0xe0, 0x50, 0xf9,
-0xd8, 0x13, 0x6d, 0x2c, 0x71, 0x3f, 0xff, 0x49, 0xeb, 0x4a, 0x99, 0x42, 0x1f, 0x32, 0x88, 0x1b,
-0x5e, 0x01, 0x2e, 0xe6, 0x89, 0xcd, 0x43, 0xba, 0x47, 0xaf, 0x19, 0xae, 0xe1, 0xb6, 0xd3, 0xc8,
-0xcd, 0xe1, 0x22, 0xff, 0x47, 0x1d, 0xd9, 0x38, 0xed, 0x4d, 0xac, 0x59, 0xba, 0x59, 0xc5, 0x4d,
-0x91, 0x37, 0xaa, 0x19, 0x30, 0xf8, 0x89, 0xd7, 0x3b, 0xbc, 0xe8, 0xa9, 0x4c, 0xa2, 0x98, 0xa5,
-0xef, 0xb2, 0x15, 0xc9, 0xac, 0xe5, 0x0a, 0x06, 0xd3, 0x26, 0x73, 0x44, 0xe2, 0x5a, 0xea, 0x65,
-0xf4, 0x62, 0xb5, 0x51, 0xdf, 0x34, 0xd2, 0x10, 0xe2, 0xea, 0xc5, 0xc8, 0xff, 0xae, 0x2c, 0xa0,
-0x98, 0x9c, 0xae, 0xa3, 0x33, 0xb4, 0xe9, 0xcc, 0xac, 0xeb, 0xe6, 0x0d, 0x69, 0x30, 0x29, 0x4f,
-0x32, 0x65, 0xc8, 0x6d, 0x66, 0x66, 0x99, 0x4f, 0x8f, 0x2d, 0x0a, 0x06, 0x51, 0xdf, 0x9f, 0xbe,
-0xf0, 0xa7, 0x98, 0x9c, 0x3a, 0x9c, 0xe6, 0xa5, 0x6b, 0xb8, 0xeb, 0xd2, 0x64, 0xf3, 0x1a, 0x17,
-0x21, 0x3a, 0xc2, 0x57, 0xa8, 0x6a, 0x70, 0x6e, 0xb2, 0x61, 0x59, 0x46, 0xed, 0x21, 0x80, 0xfa,
-0x07, 0xd6, 0x13, 0xb9, 0x76, 0xa6, 0xc8, 0x9e, 0x52, 0xa1, 0x49, 0xad, 0xd9, 0xc1, 0xeb, 0xdd,
-0x1e, 0xff, 0x33, 0x22, 0xa9, 0x42, 0xc2, 0x5b, 0xf6, 0x68, 0x1c, 0x67, 0x58, 0x56, 0xd1, 0x39,
-0xc4, 0x16, 0xbe, 0xf2, 0xcd, 0xd2, 0x2f, 0xba, 0x3a, 0xab, 0x66, 0xa6, 0xee, 0xaa, 0x45, 0xb8,
-0xdd, 0xcd, 0xea, 0xe9, 0x72, 0x09, 0xcd, 0x28, 0x01, 0x44, 0xf8, 0x56, 0x84, 0x5e, 0x32, 0x59,
-0xdd, 0x47, 0x8b, 0x2d, 0x48, 0x0e, 0xfa, 0xee, 0x7b, 0xd3, 0x0d, 0xbf, 0x4f, 0xb3, 0x39, 0xb1,
-0x57, 0xb8, 0x91, 0xc7, 0x8b, 0xdd, 0x8c, 0xf7, 0xa6, 0x12, 0x47, 0x2b, 0xc1, 0x3e, 0x83, 0x4a,
-0x63, 0x4d, 0xf9, 0x46, 0x81, 0x37, 0x85, 0x21, 0xee, 0x07, 0x7c, 0xee, 0x99, 0xd8, 0x15, 0xc9,
-0x5f, 0xc1, 0x39, 0xc2, 0x13, 0xcb, 0xf9, 0xd9, 0x48, 0xed, 0x08, 0x02, 0x8a, 0x15, 0xed, 0x25,
-0xd5, 0x31, 0xaf, 0x38, 0xc7, 0x39, 0x87, 0x34, 0xeb, 0x28, 0x42, 0x18, 0xa8, 0x04, 0x2e, 0xf1,
-0xf7, 0xe0, 0x61, 0xd6, 0xf7, 0xd2, 0x27, 0xd6, 0xed, 0xde, 0x66, 0xeb, 0xda, 0xf8, 0x7e, 0x05,
-0x06, 0x10, 0x26, 0x18, 0x29, 0x1e, 0x41, 0x22, 0xb5, 0x23, 0xc7, 0x21, 0x88, 0x1b, 0xf0, 0x10,
-0x00, 0x04, 0x22, 0xf7, 0x38, 0xed, 0x02, 0xe8, 0xfa, 0xe7, 0x3a, 0xec, 0xba, 0xf2, 0x56, 0xf9,
-0xbe, 0xfe, 0x62, 0x02, 0x94, 0x04, 0x72, 0x06, 0xe2, 0x08, 0x3e, 0x0c, 0x9e, 0x0f, 0x56, 0x11,
-0x60, 0x10, 0x9a, 0x0c, 0x14, 0x07, 0xf0, 0x01, 0xd4, 0xfe, 0x46, 0xfe, 0xd6, 0xff, 0xe6, 0x01,
-0xc4, 0x02, 0xc4, 0x01, 0x92, 0xfe, 0xd0, 0xf9, 0x02, 0xf5, 0x10, 0xf2, 0xe8, 0xf1, 0xfa, 0xf4,
-0x70, 0xfa, 0xaa, 0x00, 0x8e, 0x06, 0x52, 0x0b, 0x26, 0x0f, 0x44, 0x12, 0x0c, 0x15, 0xe0, 0x16,
-0x0a, 0x17, 0x50, 0x14, 0x48, 0x0e, 0x44, 0x05, 0x1a, 0xfa, 0x8e, 0xee, 0x3e, 0xe4, 0x5d, 0xdd,
-0x6b, 0xdb, 0x2f, 0xdf, 0xf6, 0xe7, 0x8c, 0xf4, 0xd0, 0x02, 0x00, 0x11, 0x79, 0x1d, 0xc1, 0x26,
-0x3f, 0x2c, 0x3f, 0x2d, 0x41, 0x29, 0x89, 0x20, 0xb6, 0x13, 0xae, 0x03, 0x0a, 0xf2, 0x97, 0xe0,
-0xb7, 0xd1, 0x1d, 0xc8, 0xdb, 0xc5, 0x0b, 0xcc, 0x75, 0xda, 0xfe, 0xee, 0x88, 0x06, 0x3d, 0x1d,
-0xf5, 0x2f, 0x6d, 0x3c, 0x83, 0x41, 0x45, 0x3f, 0x7f, 0x36, 0x25, 0x28, 0x6e, 0x15, 0xb4, 0xff,
-0x8e, 0xe8, 0x93, 0xd2, 0x4b, 0xc0, 0x01, 0xb5, 0xa5, 0xb3, 0xf5, 0xbd, 0xff, 0xd2, 0xe2, 0xef,
-0x6a, 0x0f, 0x43, 0x2c, 0x59, 0x42, 0x01, 0x4f, 0xdd, 0x51, 0xad, 0x4b, 0x71, 0x3e, 0x31, 0x2b,
-0xbc, 0x13, 0x28, 0xf9, 0x77, 0xdd, 0x6b, 0xc3, 0xe7, 0xae, 0xec, 0xa3, 0xac, 0xa5, 0xd3, 0xb5,
-0x3f, 0xd2, 0x38, 0xf6, 0x1c, 0x1b, 0xe1, 0x3a, 0x49, 0x51, 0xa4, 0x5c, 0xfa, 0x5c, 0x9b, 0x53,
-0x7d, 0x42, 0x47, 0x2b, 0x30, 0x0f, 0xe4, 0xef, 0x43, 0xd0, 0x17, 0xb4, 0xe4, 0x9f, 0x06, 0x98,
-0x38, 0x9f, 0xb3, 0xb5, 0x3b, 0xd8, 0x62, 0x00, 0x43, 0x27, 0xed, 0x46, 0x0c, 0x5c, 0x84, 0x65,
-0x58, 0x63, 0xf0, 0x56, 0x1f, 0x42, 0x8d, 0x26, 0xd4, 0x05, 0xc9, 0xe2, 0x37, 0xc1, 0x04, 0xa6,
-0x9c, 0x95, 0x56, 0x93, 0xb8, 0xa0, 0x41, 0xbc, 0xb9, 0xe1, 0x7a, 0x0a, 0x3d, 0x30, 0x2d, 0x4e,
-0x7a, 0x61, 0xa2, 0x68, 0x12, 0x64, 0xf2, 0x54, 0xb1, 0x3c, 0xc1, 0x1d, 0x4a, 0xfa, 0x09, 0xd6,
-0xed, 0xb5, 0xce, 0x9e, 0xac, 0x93, 0xda, 0x96, 0x16, 0xa8, 0x49, 0xc5, 0x24, 0xea, 0x0a, 0x11,
-0x9f, 0x34, 0x87, 0x50, 0xe8, 0x61, 0x1c, 0x67, 0x08, 0x60, 0xed, 0x4d, 0xd7, 0x32, 0x6e, 0x11,
-0xb6, 0xed, 0xfd, 0xcb, 0xb5, 0xb0, 0x4c, 0x9f, 0xe8, 0x99, 0xc0, 0xa0, 0x4d, 0xb3, 0x6f, 0xcf,
-0xbc, 0xf1, 0x9a, 0x15, 0x43, 0x36, 0x79, 0x4f, 0x0a, 0x5e, 0x84, 0x60, 0x64, 0x56, 0xab, 0x41,
-0x05, 0x25, 0x76, 0x04, 0xf0, 0xe3, 0xaf, 0xc7, 0x01, 0xb3, 0xd0, 0xa7, 0x94, 0xa6, 0xdb, 0xae,
-0x71, 0xc0, 0xaf, 0xd9, 0x08, 0xf8, 0xb0, 0x17, 0x77, 0x34, 0xdb, 0x49, 0xe4, 0x54, 0xdb, 0x53,
-0x4f, 0x47, 0xab, 0x31, 0x9a, 0x16, 0x00, 0xfa, 0xf1, 0xdf, 0x2d, 0xcb, 0x65, 0xbd, 0xcd, 0xb6,
-0x61, 0xb7, 0x1d, 0xbf, 0x93, 0xcd, 0xad, 0xe2, 0x26, 0xfc, 0x12, 0x17, 0x17, 0x2f, 0x45, 0x40,
-0x25, 0x47, 0x47, 0x43, 0xed, 0x35, 0xf1, 0x21, 0x5e, 0x0b, 0x8c, 0xf5, 0x71, 0xe3, 0xd1, 0xd5,
-0x6d, 0xcd, 0xb3, 0xc9, 0x99, 0xca, 0x4f, 0xd0, 0x39, 0xdb, 0x32, 0xeb, 0xca, 0xfe, 0x52, 0x13,
-0xdb, 0x24, 0x2b, 0x30, 0x39, 0x33, 0xe9, 0x2d, 0x4b, 0x22, 0x58, 0x13, 0x40, 0x04, 0x30, 0xf7,
-0x46, 0xed, 0x80, 0xe6, 0x63, 0xe2, 0x85, 0xe0, 0xa3, 0xe0, 0x5d, 0xe3, 0xe0, 0xe8, 0xc6, 0xf1,
-0x28, 0xfd, 0x22, 0x09, 0x62, 0x13, 0xa2, 0x19, 0xda, 0x1a, 0x7a, 0x17, 0x68, 0x11, 0x3e, 0x0a,
-0xe2, 0x03, 0x1c, 0xff, 0xfc, 0xfb, 0xf0, 0xf9, 0x4a, 0xf8, 0x98, 0xf6, 0x92, 0xf4, 0xb2, 0xf2,
-0x90, 0xf1, 0x12, 0xf2, 0xa0, 0xf4, 0xc8, 0xf8, 0x52, 0xfd, 0x2c, 0x01, 0x00, 0x04, 0x9e, 0x05,
-0x68, 0x06, 0x3c, 0x07, 0xae, 0x08, 0xac, 0x0a, 0xb8, 0x0c, 0x22, 0x0e, 0xe0, 0x0d, 0x72, 0x0b,
-0x4a, 0x06, 0x92, 0xfe, 0x8a, 0xf5, 0xe8, 0xec, 0xb4, 0xe6, 0xee, 0xe3, 0xfa, 0xe4, 0x14, 0xe9,
-0x46, 0xef, 0x98, 0xf6, 0x7a, 0xfe, 0xb6, 0x06, 0x16, 0x0f, 0x7c, 0x17, 0xbd, 0x1e, 0xcf, 0x23,
-0x17, 0x25, 0x11, 0x21, 0xda, 0x16, 0x3a, 0x07, 0x8a, 0xf4, 0x2f, 0xe2, 0x05, 0xd4, 0x77, 0xcc,
-0x2b, 0xcc, 0x53, 0xd2, 0x1d, 0xdd, 0xca, 0xea, 0xf2, 0xf9, 0xcc, 0x09, 0x84, 0x19, 0xdb, 0x27,
-0x81, 0x33, 0x5f, 0x3a, 0x41, 0x3a, 0x63, 0x31, 0x01, 0x20, 0xb4, 0x07, 0x9a, 0xec, 0x93, 0xd3,
-0x39, 0xc1, 0x51, 0xb8, 0xfd, 0xb8, 0xcd, 0xc1, 0xa9, 0xd0, 0xd0, 0xe3, 0x58, 0xf9, 0xd2, 0x0f,
-0xaf, 0x25, 0x45, 0x39, 0xe7, 0x47, 0xe1, 0x4e, 0x8f, 0x4b, 0xc7, 0x3c, 0x77, 0x23, 0x4c, 0x03,
-0x6d, 0xe1, 0x91, 0xc3, 0x97, 0xae, 0x32, 0xa5, 0x7c, 0xa7, 0xa7, 0xb3, 0xab, 0xc7, 0xcb, 0xe0,
-0xf4, 0xfc, 0xa4, 0x19, 0xb5, 0x34, 0x13, 0x4b, 0xe0, 0x59, 0xd8, 0x5d, 0x0c, 0x55, 0xe3, 0x3f,
-0xdf, 0x20, 0x42, 0xfc, 0x3d, 0xd7, 0xc7, 0xb7, 0x28, 0xa2, 0x2c, 0x99, 0xde, 0x9c, 0x07, 0xac,
-0x41, 0xc4, 0x07, 0xe3, 0x16, 0x05, 0xe9, 0x26, 0x11, 0x45, 0xe0, 0x5b, 0xcc, 0x67, 0x9a, 0x66,
-0x06, 0x58, 0xa1, 0x3d, 0xd4, 0x1a, 0xee, 0xf3, 0xe9, 0xcd, 0xd1, 0xad, 0x64, 0x98, 0x24, 0x90,
-0xde, 0x95, 0x86, 0xa8, 0xfb, 0xc5, 0x5c, 0xea, 0x36, 0x11, 0xe3, 0x35, 0xbd, 0x53, 0x20, 0x67,
-0xa6, 0x6d, 0xe2, 0x66, 0xbb, 0x53, 0xe9, 0x36, 0x64, 0x13, 0x94, 0xec, 0xed, 0xc6, 0x88, 0xa7,
-0x18, 0x93, 0x98, 0x8c, 0x64, 0x95, 0x61, 0xac, 0x79, 0xce, 0x9c, 0xf6, 0xdd, 0x1e, 0xe7, 0x41,
-0x86, 0x5b, 0x6c, 0x69, 0x92, 0x6a, 0x14, 0x60, 0x87, 0x4b, 0xf7, 0x2e, 0x6e, 0x0c, 0xfa, 0xe6,
-0xc7, 0xc2, 0xda, 0xa4, 0x68, 0x92, 0xc6, 0x8e, 0x3c, 0x9b, 0x01, 0xb6, 0xc5, 0xda, 0x10, 0x03,
-0xcb, 0x28, 0x0f, 0x47, 0xf2, 0x5a, 0x6c, 0x63, 0x32, 0x61, 0x4e, 0x55, 0x2f, 0x41, 0x17, 0x26,
-0xb2, 0x05, 0x6f, 0xe2, 0xb5, 0xc0, 0xf4, 0xa5, 0x1a, 0x97, 0x90, 0x97, 0xa8, 0xa7, 0x9d, 0xc4,
-0x96, 0xe8, 0x7e, 0x0d, 0x67, 0x2d, 0x43, 0x45, 0x6f, 0x53, 0x20, 0x58, 0x01, 0x54, 0x21, 0x48,
-0x5d, 0x35, 0x45, 0x1c, 0x96, 0xfe, 0xcf, 0xde, 0x93, 0xc1, 0xb3, 0xab, 0xea, 0xa1, 0x44, 0xa6,
-0x33, 0xb8, 0xe3, 0xd3, 0x9c, 0xf3, 0xf2, 0x11, 0xf3, 0x2a, 0xbf, 0x3c, 0x75, 0x46, 0xad, 0x48,
-0x0b, 0x44, 0x13, 0x39, 0x3f, 0x28, 0x8a, 0x12, 0x92, 0xf9, 0xf1, 0xdf, 0x4f, 0xc9, 0xef, 0xb9,
-0xbd, 0xb4, 0xf1, 0xba, 0x01, 0xcb, 0x7b, 0xe1, 0xca, 0xf9, 0x32, 0x10, 0x19, 0x22, 0x41, 0x2e,
-0xb5, 0x34, 0x55, 0x35, 0xd3, 0x30, 0x87, 0x27, 0x82, 0x1a, 0x42, 0x0a, 0x7a, 0xf8, 0xf6, 0xe6,
-0x1f, 0xd8, 0x7b, 0xce, 0xb1, 0xcb, 0x79, 0xd0, 0x81, 0xdb, 0x9a, 0xea, 0xc6, 0xfa, 0xa2, 0x09,
-0x7a, 0x15, 0x69, 0x1d, 0x11, 0x21, 0xbb, 0x20, 0x41, 0x1d, 0x22, 0x17, 0x66, 0x0f, 0xec, 0x06,
-0x08, 0xfe, 0x34, 0xf5, 0x30, 0xed, 0x22, 0xe7, 0xfe, 0xe3, 0x94, 0xe4, 0xce, 0xe8, 0xc8, 0xef,
-0xf6, 0xf7, 0x92, 0xff, 0x7c, 0x05, 0xf2, 0x08, 0x40, 0x0a, 0xea, 0x09, 0xf4, 0x08, 0x62, 0x08,
-0xcc, 0x08, 0xc0, 0x09, 0x22, 0x0a, 0xfc, 0x08, 0x78, 0x05, 0x14, 0x00, 0x24, 0xfa, 0x2e, 0xf5,
-0x3c, 0xf2, 0x6c, 0xf1, 0xdc, 0xf1, 0x86, 0xf2, 0xbc, 0xf2, 0x4a, 0xf2, 0x28, 0xf2, 0xa4, 0xf3,
-0xde, 0xf7, 0x3a, 0xff, 0x18, 0x09, 0xba, 0x13, 0x43, 0x1c, 0x0f, 0x20, 0x41, 0x1e, 0x94, 0x17,
-0xa2, 0x0d, 0xb6, 0x02, 0xa4, 0xf8, 0x04, 0xf0, 0xb8, 0xe8, 0x5b, 0xe2, 0x29, 0xdd, 0x19, 0xda,
-0xd9, 0xda, 0x9f, 0xe0, 0xde, 0xeb, 0xea, 0xfb, 0x92, 0x0e, 0x9d, 0x20, 0x5d, 0x2e, 0x51, 0x35,
-0x47, 0x34, 0xcf, 0x2b, 0xe5, 0x1d, 0x1e, 0x0d, 0x90, 0xfb, 0x8c, 0xea, 0x51, 0xdb, 0xa5, 0xce,
-0x2d, 0xc6, 0x4d, 0xc3, 0xc9, 0xc7, 0x1d, 0xd4, 0x76, 0xe7, 0x62, 0xff, 0xbc, 0x18, 0xc7, 0x2f,
-0xb3, 0x40, 0xef, 0x48, 0x4f, 0x47, 0x55, 0x3c, 0xcf, 0x29, 0x80, 0x12, 0x1a, 0xf9, 0x31, 0xe0,
-0x43, 0xca, 0xef, 0xb9, 0x1d, 0xb1, 0x8b, 0xb1, 0x9b, 0xbb, 0xad, 0xce, 0x62, 0xe8, 0xea, 0x05,
-0x7f, 0x23, 0x81, 0x3d, 0x67, 0x50, 0x74, 0x59, 0xe8, 0x56, 0xa1, 0x48, 0xdf, 0x30, 0xae, 0x12,
-0xcc, 0xf1, 0x35, 0xd2, 0x4d, 0xb8, 0x3e, 0xa7, 0x0a, 0xa1, 0x0c, 0xa6, 0xbf, 0xb5, 0x29, 0xce,
-0x8a, 0xec, 0x8c, 0x0d, 0xcb, 0x2d, 0xf1, 0x49, 0x14, 0x5e, 0xea, 0x66, 0x32, 0x62, 0xa5, 0x4f,
-0xc3, 0x31, 0x92, 0x0c, 0x96, 0xe5, 0x41, 0xc2, 0xda, 0xa7, 0x48, 0x99, 0x56, 0x97, 0x5e, 0xa1,
-0x7d, 0xb5, 0x5f, 0xd1, 0x52, 0xf2, 0x64, 0x15, 0x41, 0x37, 0x53, 0x54, 0xa2, 0x68, 0xf0, 0x6f,
-0xb2, 0x67, 0x1b, 0x50, 0x91, 0x2c, 0xbe, 0x02, 0x0b, 0xd9, 0xd1, 0xb5, 0xde, 0x9d, 0x24, 0x93,
-0x32, 0x95, 0x98, 0xa2, 0x33, 0xb9, 0xf7, 0xd6, 0x4c, 0xf9, 0x4f, 0x1d, 0xb7, 0x3f, 0x68, 0x5c,
-0xd6, 0x6e, 0x9c, 0x72, 0xb2, 0x65, 0x59, 0x49, 0x37, 0x22, 0xc6, 0xf6, 0x0b, 0xce, 0xef, 0xad,
-0x1c, 0x9a, 0x52, 0x93, 0x96, 0x98, 0x68, 0xa8, 0xd1, 0xc0, 0xcd, 0xdf, 0xe2, 0x02, 0x01, 0x27,
-0x05, 0x48, 0x94, 0x61, 0x5c, 0x6f, 0xc0, 0x6d, 0xfa, 0x5b, 0x9d, 0x3c, 0x18, 0x15, 0xf0, 0xeb,
-0x67, 0xc7, 0x5f, 0xac, 0x2a, 0x9d, 0x08, 0x9a, 0xc0, 0xa1, 0xdf, 0xb2, 0xdd, 0xcb, 0x8a, 0xea,
-0x2c, 0x0c, 0x3f, 0x2d, 0xfb, 0x49, 0x46, 0x5e, 0xbe, 0x66, 0x2c, 0x61, 0x13, 0x4e, 0x57, 0x30,
-0xe4, 0x0c, 0x08, 0xe9, 0x1b, 0xca, 0xc3, 0xb3, 0x9c, 0xa7, 0x02, 0xa6, 0x81, 0xae, 0xd9, 0xbf,
-0x35, 0xd8, 0x28, 0xf5, 0xa0, 0x13, 0x03, 0x30, 0xe3, 0x46, 0x30, 0x55, 0xe2, 0x58, 0x3b, 0x51,
-0x57, 0x3f, 0x71, 0x25, 0x80, 0x07, 0xa4, 0xe9, 0x09, 0xd0, 0xeb, 0xbd, 0xdd, 0xb4, 0x6d, 0xb5,
-0x13, 0xbf, 0x4f, 0xd0, 0x9e, 0xe6, 0x34, 0xff, 0x10, 0x17, 0x7d, 0x2b, 0x7f, 0x3a, 0xf7, 0x42,
-0x3f, 0x44, 0xf7, 0x3d, 0x6b, 0x30, 0xdd, 0x1c, 0x9a, 0x05, 0x18, 0xee, 0xf7, 0xd9, 0x0f, 0xcc,
-0x17, 0xc6, 0x55, 0xc8, 0x01, 0xd2, 0x03, 0xe1, 0x80, 0xf2, 0x06, 0x04, 0xa4, 0x13, 0x03, 0x20,
-0xbd, 0x28, 0xbd, 0x2d, 0x05, 0x2f, 0xef, 0x2b, 0xd5, 0x23, 0x10, 0x17, 0x08, 0x07, 0x76, 0xf6,
-0x66, 0xe8, 0x33, 0xdf, 0x17, 0xdc, 0xef, 0xde, 0x2a, 0xe6, 0xaa, 0xef, 0x5c, 0xf9, 0xd0, 0x01,
-0x84, 0x08, 0x82, 0x0d, 0xde, 0x11, 0xe6, 0x15, 0x3c, 0x19, 0xbe, 0x1a, 0x32, 0x19, 0xf4, 0x13,
-0x94, 0x0b, 0x3c, 0x02, 0x34, 0xfa, 0x3c, 0xf5, 0xa8, 0xf3, 0xda, 0xf4, 0x50, 0xf7, 0x8c, 0xf9,
-0x8c, 0xfa, 0x2c, 0xfa, 0x44, 0xf9, 0x1e, 0xf9, 0xe8, 0xfa, 0x16, 0xff, 0x20, 0x05, 0x7e, 0x0b,
-0x82, 0x10, 0xfa, 0x12, 0xf0, 0x12, 0x5a, 0x11, 0x44, 0x0f, 0x3c, 0x0d, 0x34, 0x0b, 0x72, 0x08,
-0xf2, 0x03, 0x78, 0xfd, 0xa0, 0xf5, 0x68, 0xed, 0x46, 0xe6, 0x39, 0xe2, 0xc1, 0xe2, 0x6e, 0xe8,
-0x4c, 0xf2, 0xe4, 0xfe, 0x0c, 0x0c, 0xd8, 0x17, 0xab, 0x20, 0xff, 0x25, 0xc7, 0x27, 0xfb, 0x25,
-0x59, 0x20, 0x0a, 0x17, 0xb2, 0x0a, 0x1c, 0xfc, 0xca, 0xec, 0x69, 0xde, 0x01, 0xd3, 0xb7, 0xcc,
-0x31, 0xcd, 0x19, 0xd5, 0xd6, 0xe3, 0xb6, 0xf7, 0x92, 0x0d, 0x11, 0x22, 0x2f, 0x32, 0x11, 0x3c,
-0x9f, 0x3e, 0xff, 0x39, 0x27, 0x2f, 0x55, 0x1f, 0x0a, 0x0c, 0xec, 0xf6, 0xf7, 0xe1, 0x17, 0xcf,
-0x99, 0xc0, 0xd1, 0xb8, 0x29, 0xba, 0x8f, 0xc5, 0x59, 0xda, 0xf8, 0xf5, 0x72, 0x14, 0x7f, 0x30,
-0xad, 0x45, 0x1d, 0x51, 0x2d, 0x52, 0x7d, 0x49, 0x25, 0x39, 0x65, 0x23, 0x72, 0x0a, 0x2a, 0xf0,
-0x7b, 0xd6, 0xcf, 0xbf, 0x09, 0xaf, 0x68, 0xa7, 0x22, 0xab, 0x9b, 0xbb, 0x93, 0xd7, 0x34, 0xfb,
-0x45, 0x20, 0x95, 0x40, 0x1c, 0x57, 0x52, 0x61, 0x12, 0x5f, 0x29, 0x52, 0x79, 0x3d, 0x8d, 0x23,
-0x74, 0x06, 0xf0, 0xe7, 0x8d, 0xca, 0x63, 0xb1, 0x02, 0xa0, 0x14, 0x9a, 0x4c, 0xa2, 0x0d, 0xb9,
-0xbf, 0xdb, 0xf4, 0x04, 0x85, 0x2d, 0xd5, 0x4e, 0x52, 0x64, 0x10, 0x6c, 0xd0, 0x66, 0xca, 0x56,
-0xc3, 0x3e, 0x2d, 0x21, 0x4a, 0x00, 0x55, 0xde, 0x57, 0xbe, 0x56, 0xa4, 0xbe, 0x94, 0x04, 0x93,
-0xbe, 0xa0, 0x21, 0xbd, 0x4c, 0xe4, 0xaa, 0x0f, 0x2d, 0x38, 0xb6, 0x57, 0xd2, 0x6a, 0x26, 0x70,
-0x68, 0x68, 0xaa, 0x55, 0xd5, 0x3a, 0x54, 0x1a, 0x92, 0xf6, 0xd5, 0xd2, 0x0d, 0xb3, 0xca, 0x9b,
-0xd0, 0x90, 0x86, 0x94, 0x48, 0xa7, 0xdb, 0xc6, 0xc0, 0xee, 0x98, 0x18, 0x51, 0x3e, 0xf2, 0x5a,
-0x96, 0x6b, 0x82, 0x6e, 0xb2, 0x64, 0xdf, 0x4f, 0xa5, 0x32, 0xe6, 0x0f, 0x18, 0xeb, 0x33, 0xc8,
-0xb7, 0xab, 0x94, 0x99, 0x50, 0x94, 0xde, 0x9c, 0x0d, 0xb2, 0x59, 0xd1, 0xb8, 0xf6, 0x19, 0x1d,
-0x55, 0x3f, 0x26, 0x59, 0x7e, 0x67, 0xaa, 0x68, 0xb0, 0x5c, 0xb9, 0x45, 0xe3, 0x26, 0xc0, 0x03,
-0x9d, 0xe0, 0x0d, 0xc2, 0xb9, 0xab, 0x40, 0xa0, 0x60, 0xa0, 0x53, 0xab, 0xfd, 0xbf, 0x29, 0xdc,
-0xca, 0xfc, 0x27, 0x1e, 0x31, 0x3c, 0x97, 0x52, 0x02, 0x5e, 0x9e, 0x5c, 0xcf, 0x4e, 0x07, 0x37,
-0xda, 0x18, 0xae, 0xf8, 0xcb, 0xda, 0x2b, 0xc3, 0x17, 0xb4, 0x1b, 0xae, 0xf7, 0xb0, 0xc3, 0xbb,
-0x41, 0xcd, 0x5c, 0xe4, 0x92, 0xff, 0xb2, 0x1b, 0x17, 0x35, 0x89, 0x47, 0xaf, 0x4f, 0x13, 0x4c,
-0x97, 0x3d, 0x01, 0x27, 0x8a, 0x0c, 0x7a, 0xf2, 0x5f, 0xdc, 0x67, 0xcc, 0x81, 0xc3, 0x2d, 0xc1,
-0x81, 0xc4, 0xdd, 0xcc, 0x27, 0xda, 0xcc, 0xeb, 0xf0, 0x00, 0x42, 0x17, 0x15, 0x2b, 0xc7, 0x38,
-0x8b, 0x3d, 0x99, 0x38, 0x4b, 0x2b, 0xfc, 0x18, 0x12, 0x05, 0x28, 0xf3, 0x38, 0xe5, 0x19, 0xdc,
-0x5f, 0xd7, 0x63, 0xd6, 0x67, 0xd8, 0x47, 0xdd, 0x5e, 0xe5, 0xb2, 0xf0, 0xb0, 0xfe, 0xa8, 0x0d,
-0x06, 0x1b, 0xab, 0x23, 0x0d, 0x26, 0x39, 0x22, 0x90, 0x19, 0x68, 0x0e, 0x94, 0x03, 0x98, 0xfa,
-0x38, 0xf4, 0x48, 0xf0, 0x32, 0xee, 0x3c, 0xed, 0xf2, 0xec, 0x60, 0xed, 0x0a, 0xef, 0x98, 0xf2,
-0x08, 0xf8, 0xfa, 0xfe, 0xcc, 0x05, 0x48, 0x0b, 0xfc, 0x0d, 0x2e, 0x0e, 0x80, 0x0c, 0x10, 0x0a,
-0xc0, 0x07, 0x80, 0x06, 0xee, 0x05, 0x92, 0x05, 0xf0, 0x04, 0xf4, 0x02, 0x52, 0xff, 0x0e, 0xfa,
-0x32, 0xf4, 0xc8, 0xee, 0x62, 0xeb, 0xe8, 0xea, 0x8e, 0xed, 0x30, 0xf2, 0x26, 0xf8, 0x8c, 0xfe,
-0xc0, 0x04, 0x7c, 0x0a, 0xc2, 0x0f, 0x96, 0x14, 0xbc, 0x18, 0x2e, 0x1b, 0x02, 0x1b, 0x60, 0x17,
-0x48, 0x0f, 0x3a, 0x03, 0x7e, 0xf4, 0xc0, 0xe5, 0xf3, 0xd9, 0xf5, 0xd3, 0x71, 0xd4, 0xe1, 0xda,
-0x58, 0xe5, 0x2c, 0xf2, 0xc6, 0xff, 0xf8, 0x0c, 0x62, 0x19, 0x2f, 0x24, 0xa9, 0x2c, 0x51, 0x31,
-0xb1, 0x30, 0x39, 0x29, 0xbc, 0x1a, 0xe6, 0x05, 0xca, 0xed, 0xb9, 0xd6, 0x2f, 0xc5, 0xa5, 0xbc,
-0x1f, 0xbe, 0x25, 0xc8, 0x19, 0xd8, 0x80, 0xeb, 0xec, 0xff, 0xae, 0x13, 0x91, 0x25, 0xcb, 0x34,
-0xb9, 0x3f, 0x8f, 0x44, 0x59, 0x41, 0xc9, 0x34, 0xbd, 0x1e, 0xd8, 0x01, 0x4d, 0xe2, 0xb1, 0xc5,
-0x7b, 0xb1, 0xc0, 0xa8, 0xf9, 0xab, 0xa9, 0xb9, 0xb1, 0xce, 0xc0, 0xe7, 0x9a, 0x02, 0xcd, 0x1c,
-0x8f, 0x34, 0xc7, 0x47, 0x35, 0x54, 0xec, 0x56, 0x1f, 0x4e, 0xdf, 0x39, 0x1a, 0x1c, 0xac, 0xf8,
-0xe5, 0xd4, 0x95, 0xb6, 0x46, 0xa2, 0x20, 0x9b, 0xfa, 0xa0, 0xe3, 0xb1, 0x27, 0xcb, 0x82, 0xe9,
-0x96, 0x09, 0xa3, 0x28, 0xe1, 0x43, 0x42, 0x58, 0xd8, 0x62, 0xfe, 0x60, 0x39, 0x52, 0x09, 0x38,
-0x9c, 0x15, 0x32, 0xef, 0xdb, 0xc9, 0x16, 0xab, 0x86, 0x97, 0x5c, 0x91, 0x3a, 0x99, 0x8d, 0xad,
-0x6f, 0xcb, 0x08, 0xef, 0x6c, 0x14, 0x37, 0x37, 0x97, 0x53, 0x1a, 0x66, 0xd8, 0x6b, 0x0c, 0x64,
-0x9d, 0x4f, 0x5f, 0x31, 0xce, 0x0c, 0x0a, 0xe6, 0x5b, 0xc1, 0xb4, 0xa3, 0x76, 0x91, 0x48, 0x8d,
-0xca, 0x97, 0xa1, 0xaf, 0xf3, 0xd1, 0xac, 0xf9, 0x8b, 0x21, 0x77, 0x44, 0xec, 0x5d, 0x3a, 0x6b,
-0x26, 0x6b, 0x40, 0x5e, 0xe9, 0x46, 0x4f, 0x28, 0xf4, 0x04, 0x01, 0xe0, 0x67, 0xbd, 0xb6, 0xa1,
-0x6a, 0x91, 0x4e, 0x8f, 0x6e, 0x9c, 0x99, 0xb7, 0xbf, 0xdc, 0xe4, 0x05, 0xc7, 0x2c, 0x2f, 0x4c,
-0xaa, 0x60, 0x66, 0x68, 0xc4, 0x63, 0xd4, 0x54, 0x89, 0x3d, 0x29, 0x20, 0x0e, 0xff, 0x7f, 0xdc,
-0x61, 0xbc, 0x48, 0xa3, 0x82, 0x95, 0x48, 0x96, 0x5a, 0xa6, 0xa5, 0xc3, 0x52, 0xe9, 0xa8, 0x10,
-0x4b, 0x33, 0x2f, 0x4d, 0xc6, 0x5b, 0x08, 0x5f, 0xdc, 0x57, 0x37, 0x48, 0x49, 0x32, 0x60, 0x17,
-0x22, 0xf9, 0x33, 0xda, 0xfb, 0xbd, 0xa4, 0xa8, 0x02, 0x9f, 0xfc, 0xa2, 0x2d, 0xb5, 0x7b, 0xd2,
-0x48, 0xf5, 0x34, 0x17, 0x29, 0x33, 0x5b, 0x46, 0xd7, 0x4f, 0xe7, 0x4f, 0xdb, 0x47, 0xc9, 0x39,
-0x7f, 0x26, 0x58, 0x0f, 0x86, 0xf5, 0x87, 0xdb, 0xbd, 0xc4, 0xbb, 0xb4, 0xc9, 0xae, 0x3f, 0xb5,
-0xbf, 0xc6, 0x2f, 0xe0, 0x9c, 0xfc, 0xf4, 0x16, 0xbb, 0x2b, 0x63, 0x39, 0x43, 0x3f, 0x1f, 0x3e,
-0x0b, 0x37, 0xe9, 0x2a, 0x52, 0x1b, 0x96, 0x08, 0x94, 0xf4, 0x3f, 0xe1, 0xfd, 0xd0, 0x51, 0xc6,
-0x95, 0xc3, 0x59, 0xc9, 0xfb, 0xd6, 0xe2, 0xe9, 0x2e, 0xfe, 0xd2, 0x10, 0x1b, 0x1f, 0x0d, 0x28,
-0x79, 0x2b, 0xb3, 0x29, 0xa5, 0x23, 0xde, 0x1a, 0x0e, 0x10, 0x22, 0x04, 0x18, 0xf8, 0x0a, 0xed,
-0xf0, 0xe3, 0x91, 0xdd, 0x55, 0xdb, 0xe9, 0xdd, 0x10, 0xe5, 0x6a, 0xef, 0x18, 0xfb, 0xd0, 0x05,
-0x32, 0x0e, 0x2a, 0x13, 0xaa, 0x14, 0x76, 0x13, 0x70, 0x10, 0xb8, 0x0c, 0x3a, 0x09, 0x14, 0x06,
-0x40, 0x03, 0x22, 0x00, 0x26, 0xfc, 0x60, 0xf7, 0xb6, 0xf2, 0x7a, 0xef, 0x80, 0xee, 0x26, 0xf0,
-0x8c, 0xf3, 0x90, 0xf7, 0xa6, 0xfa, 0x92, 0xfc, 0x60, 0xfd, 0xec, 0xfd, 0x6c, 0xff, 0xb2, 0x02,
-0xe8, 0x07, 0x10, 0x0e, 0x7c, 0x13, 0x34, 0x16, 0xb6, 0x14, 0xca, 0x0e, 0xe4, 0x05, 0x54, 0xfc,
-0xdc, 0xf3, 0xcc, 0xed, 0xec, 0xe9, 0x8e, 0xe7, 0x14, 0xe6, 0x74, 0xe5, 0x96, 0xe6, 0xaa, 0xea,
-0xc2, 0xf2, 0x86, 0xfe, 0x24, 0x0d, 0xd0, 0x1b, 0x6f, 0x27, 0x6f, 0x2d, 0x05, 0x2c, 0x7b, 0x23,
-0xd6, 0x15, 0xd8, 0x05, 0xf4, 0xf5, 0x38, 0xe8, 0x0b, 0xdd, 0x75, 0xd4, 0x39, 0xcf, 0xeb, 0xcd,
-0xfd, 0xd1, 0x4b, 0xdc, 0x86, 0xec, 0x3a, 0x01, 0xb2, 0x17, 0x17, 0x2c, 0x33, 0x3b, 0x4b, 0x42,
-0xe5, 0x3f, 0x7f, 0x34, 0x39, 0x22, 0xf0, 0x0b, 0xe4, 0xf4, 0x3f, 0xdf, 0xff, 0xcc, 0xe1, 0xbf,
-0xf3, 0xb8, 0xe9, 0xb9, 0x47, 0xc3, 0xf1, 0xd4, 0x14, 0xed, 0xb2, 0x08, 0xf5, 0x23, 0xa9, 0x3b,
-0x2b, 0x4c, 0x49, 0x53, 0x71, 0x4f, 0xfd, 0x40, 0xeb, 0x29, 0x3a, 0x0d, 0x7e, 0xee, 0xaf, 0xd1,
-0x2b, 0xba, 0xac, 0xaa, 0x8e, 0xa5, 0x0e, 0xab, 0x35, 0xbb, 0xf1, 0xd3, 0x30, 0xf2, 0x38, 0x12,
-0xa5, 0x30, 0xdd, 0x49, 0x34, 0x5b, 0x02, 0x62, 0xfe, 0x5b, 0x99, 0x49, 0x9b, 0x2c, 0xd8, 0x08,
-0x37, 0xe3, 0x23, 0xc1, 0x8c, 0xa7, 0xa8, 0x99, 0xda, 0x98, 0x62, 0xa4, 0x71, 0xba, 0x0f, 0xd8,
-0xa2, 0xf9, 0x86, 0x1b, 0xc1, 0x3a, 0x59, 0x54, 0x54, 0x65, 0x90, 0x6a, 0xba, 0x61, 0xcd, 0x4a,
-0x7f, 0x28, 0x5a, 0xff, 0xeb, 0xd5, 0xa1, 0xb2, 0xc8, 0x9a, 0xf4, 0x90, 0xe2, 0x94, 0x06, 0xa5,
-0x5f, 0xbe, 0xff, 0xdd, 0x38, 0x00, 0x71, 0x22, 0xbb, 0x41, 0x44, 0x5b, 0x84, 0x6b, 0x92, 0x6e,
-0x34, 0x62, 0xdf, 0x46, 0x45, 0x20, 0x50, 0xf4, 0x49, 0xca, 0x02, 0xa9, 0xe8, 0x94, 0x5a, 0x8f,
-0x28, 0x97, 0xe0, 0xa9, 0xd5, 0xc4, 0x0e, 0xe5, 0x8a, 0x07, 0x99, 0x29, 0x8b, 0x48, 0x9e, 0x60,
-0xee, 0x6d, 0xe6, 0x6c, 0xa6, 0x5b, 0x71, 0x3c, 0xb4, 0x13, 0x2c, 0xe8, 0xfd, 0xc0, 0x5a, 0xa4,
-0x44, 0x95, 0xec, 0x93, 0xc6, 0x9e, 0xe9, 0xb2, 0x89, 0xce, 0x80, 0xee, 0x1a, 0x10, 0x85, 0x30,
-0xa7, 0x4c, 0xa0, 0x60, 0xf0, 0x68, 0x20, 0x63, 0xc3, 0x4e, 0x1b, 0x2f, 0xba, 0x08, 0xd9, 0xe1,
-0xbb, 0xc0, 0xa0, 0xa9, 0xcc, 0x9e, 0x24, 0xa0, 0x7d, 0xab, 0x8d, 0xbf, 0xe5, 0xd9, 0xb2, 0xf7,
-0x58, 0x16, 0xdb, 0x32, 0xb7, 0x49, 0x46, 0x58, 0xf4, 0x5b, 0x3b, 0x53, 0x99, 0x3f, 0xf9, 0x22,
-0x24, 0x02, 0x7b, 0xe1, 0xf7, 0xc5, 0x2f, 0xb3, 0x14, 0xab, 0x8d, 0xad, 0xa1, 0xb9, 0x2d, 0xcd,
-0xe4, 0xe5, 0xe4, 0x00, 0xa4, 0x1a, 0xdf, 0x30, 0x35, 0x41, 0x9f, 0x49, 0x85, 0x49, 0xc1, 0x40,
-0xed, 0x2f, 0x94, 0x19, 0xfc, 0xff, 0xd8, 0xe6, 0xb1, 0xd1, 0x85, 0xc3, 0xdd, 0xbd, 0x1f, 0xc1,
-0xfd, 0xcb, 0xed, 0xdc, 0x78, 0xf1, 0x2a, 0x06, 0xd2, 0x18, 0x87, 0x27, 0x1f, 0x31, 0x75, 0x35,
-0x85, 0x34, 0x5f, 0x2e, 0x7d, 0x23, 0x42, 0x14, 0x1e, 0x02, 0x9e, 0xef, 0xbb, 0xdf, 0x2b, 0xd5,
-0xad, 0xd1, 0x41, 0xd5, 0xaf, 0xde, 0xde, 0xeb, 0x26, 0xfa, 0x06, 0x07, 0xe8, 0x10, 0xe6, 0x17,
-0x0a, 0x1c, 0x37, 0x1e, 0xe9, 0x1e, 0x83, 0x1d, 0x56, 0x19, 0xbc, 0x11, 0x32, 0x07, 0x92, 0xfb,
-0x44, 0xf1, 0x6a, 0xea, 0x54, 0xe8, 0xae, 0xea, 0xe0, 0xef, 0x46, 0xf6, 0xc8, 0xfb, 0x70, 0xff,
-0x42, 0x01, 0x58, 0x02, 0xf4, 0x03, 0xe4, 0x06, 0x48, 0x0b, 0xf8, 0x0f, 0x20, 0x13, 0x86, 0x13,
-0xba, 0x10, 0xe8, 0x0b, 0xae, 0x06, 0x88, 0x02, 0x06, 0x00, 0xcc, 0xfe, 0x72, 0xfd, 0xfe, 0xfa,
-0x2e, 0xf7, 0x22, 0xf2, 0x98, 0xed, 0x04, 0xeb, 0xf0, 0xeb, 0xd6, 0xf0, 0x86, 0xf9, 0x54, 0x04,
-0x04, 0x0f, 0x8e, 0x17, 0xfd, 0x1c, 0x1b, 0x1f, 0x5d, 0x1e, 0x46, 0x1b, 0x42, 0x16, 0x0c, 0x0f,
-0x74, 0x05, 0xf0, 0xf9, 0xac, 0xed, 0x2d, 0xe2, 0x4b, 0xd9, 0xfd, 0xd4, 0x2d, 0xd6, 0xdb, 0xdd,
-0x54, 0xeb, 0xd0, 0xfc, 0x9a, 0x0f, 0xc5, 0x20, 0xd5, 0x2d, 0x6f, 0x35, 0xaf, 0x36, 0x99, 0x31,
-0x57, 0x27, 0x7e, 0x18, 0xa0, 0x06, 0x98, 0xf3, 0x2d, 0xe1, 0x49, 0xd1, 0x1f, 0xc6, 0xe9, 0xc0,
-0x85, 0xc3, 0x65, 0xce, 0x67, 0xe1, 0x40, 0xfa, 0x58, 0x15, 0x37, 0x2e, 0x69, 0x41, 0xa3, 0x4b,
-0xe9, 0x4b, 0xdd, 0x42, 0x2d, 0x32, 0xa5, 0x1c, 0x48, 0x04, 0xc2, 0xeb, 0xfd, 0xd4, 0x2b, 0xc2,
-0xeb, 0xb4, 0xdf, 0xaf, 0x17, 0xb4, 0x47, 0xc3, 0x8b, 0xdc, 0xfe, 0xfc, 0x83, 0x1f, 0x79, 0x3e,
-0x6b, 0x54, 0x86, 0x5e, 0xac, 0x5b, 0x9d, 0x4d, 0xb5, 0x37, 0xc3, 0x1c, 0xc8, 0xff, 0x2b, 0xe3,
-0xfb, 0xc8, 0x97, 0xb3, 0xc4, 0xa5, 0xa4, 0xa1, 0xa2, 0xa9, 0x9b, 0xbe, 0xe7, 0xde, 0x00, 0x06,
-0x85, 0x2d, 0x8b, 0x4e, 0x56, 0x64, 0xe8, 0x6b, 0x34, 0x65, 0xef, 0x52, 0xb3, 0x38, 0xca, 0x19,
-0x22, 0xf9, 0x41, 0xd9, 0xdb, 0xbc, 0xdc, 0xa6, 0x32, 0x9a, 0x4e, 0x99, 0x70, 0xa6, 0x73, 0xc1,
-0x42, 0xe7, 0x24, 0x12, 0xc1, 0x3a, 0xa4, 0x5a, 0x66, 0x6d, 0x2a, 0x71, 0xc0, 0x66, 0x7d, 0x51,
-0xad, 0x34, 0x78, 0x13, 0xb4, 0xf0, 0x09, 0xcf, 0x01, 0xb2, 0x26, 0x9d, 0x9a, 0x93, 0xc6, 0x97,
-0x70, 0xaa, 0x21, 0xca, 0x7a, 0xf2, 0x3f, 0x1d, 0x9d, 0x43, 0x6e, 0x60, 0x10, 0x70, 0x2c, 0x71,
-0xbe, 0x64, 0x75, 0x4d, 0xdf, 0x2e, 0xa8, 0x0b, 0x4a, 0xe7, 0x47, 0xc5, 0x06, 0xaa, 0xea, 0x98,
-0x84, 0x94, 0xfa, 0x9d, 0xbb, 0xb4, 0x23, 0xd6, 0x46, 0xfd, 0xb9, 0x24, 0xf7, 0x46, 0xee, 0x5f,
-0x7a, 0x6c, 0x62, 0x6b, 0x74, 0x5d, 0x05, 0x45, 0x59, 0x25, 0x9e, 0x01, 0xc5, 0xdd, 0x53, 0xbe,
-0x72, 0xa7, 0x08, 0x9c, 0x40, 0x9d, 0x74, 0xaa, 0x29, 0xc2, 0x79, 0xe1, 0x6a, 0x04, 0xbf, 0x26,
-0x81, 0x44, 0xc0, 0x59, 0xea, 0x63, 0x0e, 0x61, 0xb5, 0x51, 0xb1, 0x38, 0x1c, 0x19, 0x38, 0xf7,
-0x45, 0xd7, 0xc1, 0xbd, 0xa1, 0xad, 0x6a, 0xa8, 0x41, 0xad, 0x29, 0xbb, 0x65, 0xd0, 0x82, 0xea,
-0x8e, 0x07, 0x45, 0x24, 0x67, 0x3d, 0x4d, 0x4f, 0xd4, 0x56, 0x59, 0x52, 0xab, 0x42, 0x41, 0x2a,
-0x18, 0x0d, 0xd8, 0xef, 0x77, 0xd6, 0x51, 0xc4, 0xc9, 0xba, 0x81, 0xb9, 0x95, 0xbf, 0x69, 0xcb,
-0xc7, 0xdb, 0xea, 0xef, 0x6c, 0x06, 0x63, 0x1d, 0xb1, 0x31, 0x03, 0x40, 0x31, 0x45, 0x25, 0x40,
-0x65, 0x31, 0x5d, 0x1c, 0xe0, 0x04, 0xec, 0xee, 0x8f, 0xdd, 0x83, 0xd2, 0xbf, 0xcd, 0x39, 0xce,
-0x05, 0xd3, 0xf7, 0xda, 0xfe, 0xe5, 0x8c, 0xf3, 0x5e, 0x03, 0xfc, 0x13, 0xef, 0x22, 0xf1, 0x2c,
-0x0d, 0x30, 0x47, 0x2b, 0xe1, 0x1f, 0xde, 0x10, 0x3e, 0x01, 0x12, 0xf4, 0xc0, 0xea, 0x88, 0xe5,
-0xc4, 0xe3, 0x68, 0xe4, 0x74, 0xe6, 0xae, 0xe9, 0x34, 0xee, 0x6c, 0xf4, 0xb2, 0xfc, 0x3a, 0x06,
-0x62, 0x0f, 0x12, 0x16, 0xc0, 0x18, 0x02, 0x17, 0xe6, 0x11, 0x2c, 0x0b, 0xd8, 0x04, 0x0e, 0x00,
-0x18, 0xfd, 0x98, 0xfb, 0xc4, 0xfa, 0xcc, 0xf9, 0x26, 0xf8, 0xc4, 0xf5, 0x0a, 0xf3, 0x12, 0xf1,
-0xda, 0xf0, 0xfe, 0xf2, 0x44, 0xf7, 0x72, 0xfc, 0xb8, 0x01, 0xf8, 0x05, 0x46, 0x09, 0xc4, 0x0b,
-0xce, 0x0d, 0xc8, 0x0f, 0x40, 0x11, 0xf2, 0x11, 0xe8, 0x10, 0xb6, 0x0d, 0x90, 0x07, 0xc2, 0xfe,
-0xca, 0xf3, 0xf4, 0xe8, 0x8f, 0xe0, 0x75, 0xdc, 0xef, 0xdd, 0x30, 0xe4, 0x3c, 0xee, 0xd8, 0xf9,
-0x6e, 0x05, 0x04, 0x10, 0x48, 0x19, 0x7d, 0x20, 0x83, 0x25, 0x95, 0x27, 0xc7, 0x25, 0x6f, 0x1f,
-0xa2, 0x13, 0xee, 0x02, 0xfc, 0xee, 0x23, 0xdb, 0x7b, 0xcb, 0xd1, 0xc3, 0x43, 0xc5, 0x4d, 0xcf,
-0x6d, 0xdf, 0x7a, 0xf2, 0xd0, 0x05, 0x98, 0x17, 0xb7, 0x26, 0xa7, 0x32, 0x77, 0x3a, 0xf1, 0x3c,
-0xfd, 0x38, 0x65, 0x2d, 0x0e, 0x1a, 0x84, 0x00, 0x10, 0xe4, 0xc7, 0xc9, 0x01, 0xb7, 0x09, 0xaf,
-0x17, 0xb3, 0x49, 0xc1, 0xbf, 0xd6, 0xc6, 0xef, 0x38, 0x09, 0x7f, 0x20, 0x8d, 0x34, 0xd5, 0x43,
-0x07, 0x4d, 0x5d, 0x4e, 0x35, 0x46, 0x29, 0x34, 0x20, 0x19, 0x0e, 0xf8, 0xb1, 0xd5, 0x17, 0xb8,
-0x2a, 0xa4, 0xb4, 0x9d, 0xb2, 0xa4, 0x4f, 0xb7, 0xed, 0xd1, 0x96, 0xf0, 0x66, 0x0f, 0xc3, 0x2b,
-0x83, 0x43, 0x99, 0x54, 0xfa, 0x5c, 0x44, 0x5a, 0x03, 0x4c, 0x0d, 0x33, 0xda, 0x11, 0x84, 0xec,
-0x4b, 0xc8, 0xba, 0xaa, 0x56, 0x98, 0xc4, 0x93, 0x2e, 0x9d, 0xdd, 0xb2, 0x57, 0xd1, 0x4e, 0xf4,
-0xda, 0x17, 0x41, 0x38, 0x77, 0x52, 0x44, 0x63, 0x62, 0x68, 0x52, 0x60, 0xd1, 0x4b, 0x3f, 0x2d,
-0x76, 0x08, 0xd7, 0xe1, 0x17, 0xbe, 0xe2, 0xa1, 0x34, 0x91, 0x84, 0x8e, 0x26, 0x9a, 0x9f, 0xb2,
-0xc7, 0xd4, 0x0c, 0xfc, 0x57, 0x23, 0xb7, 0x45, 0x1e, 0x5f, 0x70, 0x6c, 0xd2, 0x6b, 0x8c, 0x5d,
-0x15, 0x44, 0x0f, 0x23, 0x2e, 0xfe, 0x1b, 0xd9, 0xbd, 0xb7, 0x46, 0x9e, 0x20, 0x90, 0xa2, 0x8f,
-0xc2, 0x9d, 0x33, 0xb9, 0x65, 0xde, 0xea, 0x07, 0x7f, 0x2f, 0xd3, 0x4f, 0xee, 0x64, 0x7c, 0x6c,
-0x54, 0x66, 0x69, 0x54, 0xb3, 0x39, 0x90, 0x19, 0x08, 0xf7, 0xe5, 0xd4, 0xa1, 0xb6, 0x9a, 0x9f,
-0x88, 0x93, 0x4a, 0x95, 0xc8, 0xa5, 0x5b, 0xc3, 0xe4, 0xe9, 0xfa, 0x12, 0xd1, 0x37, 0x83, 0x53,
-0xd8, 0x62, 0x38, 0x65, 0xa8, 0x5b, 0x93, 0x48, 0x13, 0x2f, 0xa0, 0x11, 0x70, 0xf2, 0xaf, 0xd3,
-0x99, 0xb8, 0xa4, 0xa4, 0xa6, 0x9b, 0xee, 0x9f, 0x59, 0xb2, 0xcd, 0xd0, 0xda, 0xf5, 0x10, 0x1b,
-0x3b, 0x3a, 0x87, 0x4f, 0x16, 0x59, 0x7a, 0x57, 0x77, 0x4c, 0xa1, 0x3a, 0xf3, 0x23, 0x66, 0x0a,
-0xc0, 0xef, 0xc9, 0xd5, 0x67, 0xbf, 0xdb, 0xaf, 0x46, 0xaa, 0xd3, 0xb0, 0x7d, 0xc3, 0x33, 0xdf,
-0x10, 0xff, 0x27, 0x1d, 0xdf, 0x34, 0x9f, 0x43, 0xdd, 0x48, 0x77, 0x45, 0x4f, 0x3b, 0xff, 0x2b,
-0x7c, 0x19, 0x20, 0x05, 0xfc, 0xef, 0xe7, 0xdb, 0x17, 0xcb, 0x37, 0xc0, 0x8d, 0xbd, 0x6b, 0xc4,
-0xff, 0xd3, 0x04, 0xea, 0x02, 0x02, 0xe2, 0x17, 0x83, 0x28, 0x5f, 0x32, 0x39, 0x35, 0xe1, 0x31,
-0x8d, 0x29, 0xdf, 0x1d, 0x32, 0x10, 0x72, 0x01, 0xec, 0xf2, 0xcc, 0xe5, 0x65, 0xdb, 0x01, 0xd5,
-0xdd, 0xd3, 0x75, 0xd8, 0x8d, 0xe2, 0x44, 0xf0, 0x66, 0xff, 0x50, 0x0d, 0xde, 0x17, 0xd1, 0x1d,
-0x45, 0x1f, 0xd3, 0x1c, 0x5e, 0x17, 0x62, 0x10, 0xf8, 0x08, 0x3c, 0x02, 0x30, 0xfc, 0xee, 0xf6,
-0x40, 0xf2, 0x42, 0xee, 0x52, 0xeb, 0x40, 0xea, 0x0a, 0xec, 0x78, 0xf0, 0xf0, 0xf6, 0x84, 0xfd,
-0x0c, 0x03, 0x92, 0x06, 0xfe, 0x07, 0x9a, 0x07, 0x9a, 0x06, 0x2e, 0x06, 0xf0, 0x06, 0xec, 0x08,
-0x2c, 0x0b, 0x50, 0x0c, 0xd6, 0x0a, 0x22, 0x06, 0x0c, 0xff, 0x48, 0xf7, 0xc4, 0xf0, 0xe4, 0xec,
-0xca, 0xeb, 0x88, 0xec, 0x14, 0xee, 0xcc, 0xef, 0xa6, 0xf1, 0xaa, 0xf4, 0x98, 0xf9, 0x0e, 0x01,
-0xc4, 0x0a, 0x74, 0x15, 0x8d, 0x1e, 0x8d, 0x23, 0x77, 0x22, 0x38, 0x1b, 0x0c, 0x0f, 0x52, 0x00,
-0x1c, 0xf2, 0x92, 0xe6, 0x7b, 0xde, 0x97, 0xd9, 0x99, 0xd7, 0x5d, 0xd8, 0xc5, 0xdc, 0x4a, 0xe5,
-0x4c, 0xf2, 0x14, 0x03, 0xb6, 0x15, 0x29, 0x27, 0x5f, 0x34, 0x6d, 0x3a, 0xd7, 0x37, 0xb3, 0x2c,
-0xee, 0x1a, 0xd4, 0x05, 0x96, 0xf0, 0xb9, 0xdd, 0xe3, 0xce, 0x1f, 0xc5, 0xd1, 0xc0, 0xfb, 0xc2,
-0x0b, 0xcc, 0x27, 0xdc, 0xec, 0xf1, 0xd6, 0x0a, 0x9f, 0x23, 0xf5, 0x38, 0x6f, 0x47, 0xa7, 0x4c,
-0x8d, 0x47, 0xb3, 0x38, 0x37, 0x22, 0x3e, 0x07, 0x42, 0xeb, 0xdd, 0xd1, 0xd3, 0xbd, 0x2f, 0xb1,
-0x8f, 0xad, 0x75, 0xb3, 0xdf, 0xc2, 0x2b, 0xda, 0xd0, 0xf6, 0x06, 0x15, 0x4b, 0x31, 0x25, 0x48,
-0xf4, 0x56, 0x92, 0x5b, 0x89, 0x54, 0x61, 0x42, 0xed, 0x26, 0xb4, 0x05, 0xc9, 0xe2, 0x0b, 0xc3,
-0x04, 0xab, 0x0e, 0x9e, 0x86, 0x9d, 0x1c, 0xa9, 0x55, 0xbf, 0x33, 0xdd, 0xcc, 0xfe, 0xeb, 0x1f,
-0x5b, 0x3d, 0x6d, 0x54, 0xae, 0x62, 0xa8, 0x65, 0xf8, 0x5b, 0xb1, 0x45, 0xf1, 0x24, 0x7a, 0xfd,
-0x25, 0xd5, 0x6b, 0xb2, 0xc8, 0x9a, 0x4a, 0x91, 0x60, 0x96, 0x5c, 0xa8, 0x0f, 0xc4, 0x82, 0xe5,
-0x8a, 0x08, 0xcb, 0x29, 0x81, 0x46, 0x74, 0x5c, 0x40, 0x69, 0x30, 0x6a, 0x58, 0x5d, 0xe9, 0x42,
-0x87, 0x1d, 0x3e, 0xf2, 0x11, 0xc8, 0x0e, 0xa6, 0xaa, 0x91, 0x20, 0x8d, 0x48, 0x97, 0x09, 0xad,
-0xd3, 0xca, 0xc6, 0xec, 0x4a, 0x0f, 0x89, 0x2f, 0x51, 0x4b, 0x54, 0x60, 0x58, 0x6b, 0x70, 0x69,
-0xfe, 0x58, 0xd7, 0x3a, 0x8c, 0x12, 0x3a, 0xe6, 0x73, 0xbd, 0x32, 0x9f, 0xa8, 0x8f, 0x84, 0x8f,
-0xee, 0x9c, 0xad, 0xb4, 0x21, 0xd3, 0xae, 0xf4, 0x3e, 0x16, 0x55, 0x35, 0x77, 0x4f, 0xa6, 0x61,
-0xea, 0x68, 0xc4, 0x62, 0x75, 0x4e, 0xeb, 0x2d, 0xa4, 0x05, 0x3f, 0xdc, 0x8b, 0xb8, 0x26, 0xa0,
-0xce, 0x95, 0x60, 0x99, 0x88, 0xa8, 0x31, 0xc0, 0x49, 0xdd, 0xd4, 0xfc, 0xe8, 0x1b, 0xc7, 0x37,
-0xc9, 0x4d, 0x0e, 0x5b, 0x5e, 0x5d, 0x79, 0x53, 0x23, 0x3e, 0xe7, 0x1f, 0xe8, 0xfc, 0x57, 0xda,
-0xa1, 0xbd, 0xce, 0xaa, 0xb4, 0xa3, 0x0c, 0xa8, 0x53, 0xb6, 0x69, 0xcc, 0x50, 0xe7, 0xf2, 0x03,
-0x6f, 0x1f, 0xdd, 0x36, 0xaf, 0x47, 0xf3, 0x4f, 0x3b, 0x4e, 0xc9, 0x42, 0x27, 0x2f, 0x80, 0x15,
-0x2c, 0xf9, 0xeb, 0xdd, 0x91, 0xc7, 0x21, 0xb9, 0x59, 0xb4, 0x39, 0xb9, 0xa1, 0xc6, 0x51, 0xda,
-0x7c, 0xf1, 0x18, 0x09, 0x3f, 0x1e, 0xa7, 0x2e, 0xe1, 0x38, 0x53, 0x3c, 0x0b, 0x39, 0xff, 0x2f,
-0xd5, 0x21, 0xc8, 0x0f, 0x6e, 0xfb, 0x72, 0xe7, 0x8f, 0xd6, 0x99, 0xcb, 0x21, 0xc8, 0x7f, 0xcc,
-0xb3, 0xd7, 0x9a, 0xe7, 0x3c, 0xf9, 0xe2, 0x09, 0x7a, 0x17, 0xa1, 0x20, 0x63, 0x25, 0x39, 0x26,
-0x33, 0x24, 0x89, 0x1f, 0x34, 0x18, 0xf8, 0x0d, 0x78, 0x01, 0x30, 0xf4, 0x6e, 0xe8, 0xa3, 0xe0,
-0x3f, 0xde, 0x99, 0xe1, 0x34, 0xe9, 0x20, 0xf3, 0xd8, 0xfc, 0xcc, 0x04, 0xbc, 0x09, 0x40, 0x0c,
-0x44, 0x0d, 0x42, 0x0e, 0xbc, 0x0f, 0x50, 0x11, 0xc8, 0x11, 0x14, 0x10, 0xa0, 0x0b, 0x16, 0x05,
-0x34, 0xfe, 0xd2, 0xf8, 0x28, 0xf6, 0x0e, 0xf6, 0x7c, 0xf7, 0xde, 0xf8, 0x3e, 0xf9, 0x22, 0xf8,
-0x34, 0xf6, 0xc6, 0xf4, 0x60, 0xf5, 0xe8, 0xf8, 0x60, 0xff, 0x88, 0x07, 0x9e, 0x0f, 0xc4, 0x15,
-0xa2, 0x18, 0x36, 0x18, 0x56, 0x15, 0x2e, 0x11, 0x58, 0x0c, 0xba, 0x06, 0xfc, 0xff, 0x34, 0xf8,
-0xc8, 0xef, 0x96, 0xe7, 0x01, 0xe1, 0xd7, 0xdd, 0x59, 0xdf, 0x2e, 0xe6, 0xb6, 0xf1, 0x84, 0x00,
-0x50, 0x10, 0x71, 0x1e, 0x85, 0x28, 0x6b, 0x2d, 0xf9, 0x2c, 0xb7, 0x27, 0x27, 0x1e, 0x34, 0x11,
-0xf6, 0x01, 0xca, 0xf1, 0x3d, 0xe2, 0xfb, 0xd4, 0xf9, 0xcb, 0x9f, 0xc8, 0x3f, 0xcc, 0xdf, 0xd6,
-0x22, 0xe8, 0xfa, 0xfd, 0xc6, 0x15, 0x65, 0x2b, 0xcd, 0x3b, 0x47, 0x44, 0xe1, 0x43, 0xe9, 0x3a,
-0xe7, 0x2a, 0x34, 0x16, 0x2c, 0xff, 0x86, 0xe8, 0x2f, 0xd4, 0x57, 0xc4, 0x53, 0xba, 0xc5, 0xb7,
-0x6f, 0xbd, 0x15, 0xcc, 0xf5, 0xe2, 0xf2, 0xff, 0xef, 0x1e, 0x23, 0x3b, 0xaf, 0x4f, 0xfe, 0x58,
-0xf4, 0x55, 0xb3, 0x47, 0x23, 0x31, 0xc8, 0x15, 0x30, 0xf9, 0xf1, 0xdd, 0xab, 0xc6, 0x19, 0xb5,
-0xfa, 0xaa, 0x6e, 0xa9, 0x0d, 0xb2, 0x83, 0xc5, 0x03, 0xe3, 0x28, 0x07, 0x5d, 0x2c, 0x8d, 0x4c,
-0xe8, 0x61, 0x58, 0x69, 0xd0, 0x61, 0x25, 0x4e, 0x31, 0x32, 0x94, 0x12, 0x42, 0xf2, 0x59, 0xd4,
-0x29, 0xbb, 0xc8, 0xa8, 0xfc, 0x9e, 0x98, 0x9f, 0x73, 0xac, 0xe3, 0xc5, 0xde, 0xe9, 0x38, 0x13,
-0x79, 0x3b, 0xd4, 0x5b, 0x0a, 0x6f, 0x4e, 0x72, 0x5c, 0x66, 0x8b, 0x4e, 0x5d, 0x2f, 0xda, 0x0c,
-0x5a, 0xea, 0x85, 0xca, 0x37, 0xb0, 0x14, 0x9e, 0x76, 0x96, 0x4a, 0x9b, 0xbd, 0xad, 0x13, 0xcd,
-0x4a, 0xf5, 0x6f, 0x20, 0xa1, 0x47, 0x16, 0x65, 0x82, 0x74, 0x28, 0x74, 0x28, 0x65, 0x0f, 0x4b,
-0x49, 0x2a, 0x44, 0x06, 0x4b, 0xe2, 0x9b, 0xc1, 0xf0, 0xa7, 0x30, 0x98, 0xca, 0x94, 0x1e, 0x9f,
-0xc3, 0xb6, 0x43, 0xd9, 0xa8, 0x01, 0x49, 0x2a, 0x61, 0x4d, 0x6e, 0x66, 0x14, 0x72, 0x1c, 0x6f,
-0xd8, 0x5e, 0x31, 0x44, 0xe3, 0x22, 0x60, 0xfe, 0x8b, 0xda, 0x2f, 0xbb, 0x6a, 0xa4, 0x46, 0x99,
-0x56, 0x9b, 0x5a, 0xaa, 0x77, 0xc4, 0x38, 0xe6, 0x12, 0x0b, 0x77, 0x2e, 0x49, 0x4c, 0xe2, 0x60,
-0xa8, 0x69, 0x50, 0x65, 0x89, 0x54, 0xc9, 0x39, 0x98, 0x18, 0x14, 0xf5, 0x5d, 0xd3, 0x37, 0xb8,
-0x16, 0xa7, 0x16, 0xa2, 0xdc, 0xa8, 0x13, 0xba, 0xff, 0xd2, 0x80, 0xf0, 0x6c, 0x0f, 0x9b, 0x2c,
-0x33, 0x45, 0x12, 0x56, 0xd0, 0x5c, 0x92, 0x57, 0x07, 0x47, 0x3f, 0x2d, 0x06, 0x0e, 0xc4, 0xed,
-0x59, 0xd1, 0x91, 0xbc, 0xcd, 0xb1, 0x81, 0xb1, 0x71, 0xba, 0x5f, 0xca, 0x13, 0xdf, 0x8c, 0xf6,
-0xe6, 0x0e, 0x33, 0x26, 0x0b, 0x3a, 0xb1, 0x47, 0x51, 0x4c, 0x97, 0x46, 0xa3, 0x36, 0x3f, 0x1f,
-0x58, 0x04, 0xb4, 0xea, 0xe9, 0xd5, 0xc3, 0xc8, 0xef, 0xc3, 0x77, 0xc6, 0xa7, 0xce, 0xd9, 0xda,
-0x8c, 0xe9, 0xc8, 0xf9, 0xf6, 0x0a, 0xe8, 0x1b, 0xb3, 0x2a, 0xd9, 0x34, 0xeb, 0x37, 0x8b, 0x32,
-0x73, 0x25, 0x4c, 0x13, 0xc4, 0xff, 0x7e, 0xee, 0x11, 0xe2, 0x51, 0xdb, 0xdf, 0xd9, 0x6f, 0xdc,
-0x9f, 0xe1, 0x22, 0xe8, 0xc6, 0xef, 0xa8, 0xf8, 0xbc, 0x02, 0x76, 0x0d, 0x94, 0x17, 0x15, 0x1f,
-0xf1, 0x21, 0x49, 0x1f, 0xac, 0x17, 0x4a, 0x0d, 0xb8, 0x02, 0x0c, 0xfa, 0x3e, 0xf4, 0x94, 0xf1,
-0x26, 0xf1, 0xcc, 0xf1, 0x88, 0xf2, 0x22, 0xf3, 0xaa, 0xf3, 0x00, 0xf5, 0xa4, 0xf7, 0xec, 0xfb,
-0x46, 0x01, 0xc0, 0x06, 0xf6, 0x0a, 0x08, 0x0d, 0x1a, 0x0d, 0xda, 0x0b, 0x58, 0x0a, 0x30, 0x09,
-0xcc, 0x08, 0x94, 0x08, 0xe4, 0x07, 0xfa, 0x05, 0x1e, 0x02, 0x3a, 0xfc, 0x08, 0xf5, 0xb8, 0xed,
-0xf4, 0xe7, 0x82, 0xe5, 0x6c, 0xe7, 0x3e, 0xed, 0xca, 0xf5, 0x74, 0xff, 0xd2, 0x08, 0x08, 0x11,
-0xaa, 0x17, 0x6d, 0x1c, 0x1b, 0x1f, 0xa9, 0x1f, 0x3f, 0x1d, 0x58, 0x17, 0x88, 0x0d, 0x4c, 0x00,
-0x8e, 0xf0, 0xad, 0xe0, 0xf1, 0xd3, 0x53, 0xcd, 0x95, 0xce, 0xa3, 0xd7, 0x98, 0xe6, 0x68, 0xf8,
-0x4e, 0x0a, 0x3a, 0x1a, 0xa3, 0x26, 0x51, 0x2f, 0xf9, 0x33, 0x4b, 0x34, 0x8f, 0x2f, 0x0d, 0x25,
-0xa2, 0x14, 0xf0, 0xfe, 0x96, 0xe6, 0x39, 0xcf, 0xa9, 0xbd, 0xa9, 0xb5, 0x49, 0xb9, 0x57, 0xc7,
-0x21, 0xdd, 0x5a, 0xf6, 0xf2, 0x0e, 0x51, 0x24, 0xef, 0x34, 0x3f, 0x40, 0xab, 0x45, 0xcf, 0x44,
-0xdb, 0x3c, 0xc7, 0x2c, 0x0a, 0x15, 0xaa, 0xf7, 0x4b, 0xd8, 0x63, 0xbc, 0x40, 0xa9, 0xc4, 0xa2,
-0xc6, 0xa9, 0xe7, 0xbc, 0x37, 0xd8, 0x24, 0xf7, 0x2e, 0x15, 0x77, 0x2f, 0x03, 0x44, 0xd5, 0x51,
-0xbe, 0x57, 0x29, 0x54, 0x7b, 0x46, 0xdb, 0x2e, 0x64, 0x0f, 0x6c, 0xeb, 0x57, 0xc8, 0xb7, 0xab,
-0x56, 0x9a, 0x1c, 0x97, 0x2e, 0xa2, 0x91, 0xb9, 0xff, 0xd8, 0xf2, 0xfb, 0x9f, 0x1d, 0x01, 0x3b,
-0xbd, 0x51, 0xbe, 0x5f, 0x3a, 0x63, 0xf6, 0x5a, 0x1f, 0x47, 0x4f, 0x29, 0x04, 0x05, 0xab, 0xde,
-0x61, 0xbb, 0x42, 0xa0, 0x5e, 0x91, 0xa8, 0x90, 0x36, 0x9e, 0x37, 0xb8, 0xdd, 0xda, 0x4a, 0x01,
-0xb3, 0x26, 0xf3, 0x46, 0x9a, 0x5e, 0xd8, 0x6a, 0x04, 0x6a, 0xba, 0x5b, 0xe1, 0x41, 0xdb, 0x1f,
-0xaa, 0xf9, 0xed, 0xd3, 0xff, 0xb2, 0x0e, 0x9b, 0xd6, 0x8e, 0x74, 0x90, 0x40, 0xa0, 0x83, 0xbc,
-0xc5, 0xe1, 0xbc, 0x0a, 0xe1, 0x31, 0xe7, 0x51, 0xfe, 0x66, 0x40, 0x6e, 0x36, 0x67, 0x7d, 0x53,
-0x69, 0x36, 0xcc, 0x13, 0x86, 0xef, 0x3b, 0xcd, 0xff, 0xaf, 0x4c, 0x9b, 0xa8, 0x91, 0x42, 0x95,
-0xbc, 0xa6, 0xf7, 0xc4, 0xc4, 0xeb, 0x64, 0x15, 0x79, 0x3b, 0x70, 0x58, 0x70, 0x68, 0x16, 0x6a,
-0x60, 0x5e, 0x15, 0x48, 0x1b, 0x2b, 0xc2, 0x0a, 0x1c, 0xea, 0x9d, 0xcb, 0x47, 0xb2, 0x94, 0xa0,
-0x60, 0x99, 0xcc, 0x9e, 0xed, 0xb1, 0xb3, 0xd0, 0xd2, 0xf6, 0xef, 0x1d, 0x83, 0x3f, 0x92, 0x56,
-0x90, 0x60, 0xa6, 0x5d, 0xab, 0x4f, 0x03, 0x3a, 0xef, 0x1f, 0x02, 0x04, 0x46, 0xe8, 0xd1, 0xce,
-0x9b, 0xb9, 0x65, 0xab, 0xbe, 0xa6, 0xb9, 0xad, 0xeb, 0xc0, 0x1b, 0xde, 0x78, 0x00, 0x9f, 0x21,
-0x45, 0x3c, 0x91, 0x4c, 0xa3, 0x51, 0x6d, 0x4c, 0x59, 0x3f, 0xc9, 0x2c, 0x5c, 0x17, 0xb4, 0x00,
-0x2a, 0xea, 0x75, 0xd5, 0x95, 0xc4, 0xdd, 0xb9, 0x85, 0xb7, 0x67, 0xbf, 0xe7, 0xd0, 0xdc, 0xe9,
-0x76, 0x05, 0xe9, 0x1e, 0xe9, 0x31, 0xbd, 0x3c, 0xff, 0x3e, 0xc3, 0x39, 0xbd, 0x2e, 0x09, 0x20,
-0x42, 0x0f, 0xf8, 0xfd, 0x58, 0xed, 0xb9, 0xde, 0x85, 0xd3, 0x33, 0xcd, 0x05, 0xcd, 0x7d, 0xd3,
-0x43, 0xe0, 0x56, 0xf1, 0xe2, 0x03, 0x82, 0x14, 0x07, 0x21, 0xe1, 0x27, 0x0f, 0x29, 0x3f, 0x25,
-0xc3, 0x1d, 0x00, 0x14, 0x6e, 0x09, 0x24, 0xff, 0xe0, 0xf5, 0x48, 0xee, 0xb0, 0xe8, 0x56, 0xe5,
-0x56, 0xe4, 0x30, 0xe6, 0x18, 0xeb, 0x98, 0xf2, 0xb6, 0xfb, 0xc6, 0x04, 0x32, 0x0c, 0xd0, 0x10,
-0x52, 0x12, 0x22, 0x11, 0x1a, 0x0e, 0x8c, 0x0a, 0x6c, 0x07, 0x62, 0x05, 0x24, 0x04, 0x12, 0x03,
-0x14, 0x01, 0xa4, 0xfd, 0xca, 0xf8, 0x88, 0xf3, 0x9a, 0xef, 0x00, 0xee, 0x1a, 0xef, 0x0e, 0xf2,
-0xc0, 0xf5, 0x24, 0xf9, 0xd2, 0xfb, 0x2e, 0xfe, 0xec, 0x00, 0xf8, 0x04, 0x96, 0x0a, 0x38, 0x11,
-0x32, 0x17, 0x86, 0x1a, 0x76, 0x19, 0x50, 0x13, 0xd8, 0x08, 0x26, 0xfc, 0xfe, 0xef, 0x84, 0xe6,
-0xef, 0xe0, 0xef, 0xde, 0xbd, 0xdf, 0xb1, 0xe2, 0x76, 0xe7, 0x70, 0xee, 0x30, 0xf8, 0xdc, 0x04,
-0x64, 0x13, 0xb9, 0x21, 0xf9, 0x2c, 0x27, 0x32, 0x9b, 0x2f, 0x1b, 0x25, 0x64, 0x14, 0x70, 0x00,
-0xc0, 0xec, 0x55, 0xdc, 0xc5, 0xd0, 0x99, 0xca, 0x97, 0xc9, 0x7d, 0xcd, 0x41, 0xd6, 0x1c, 0xe4,
-0x88, 0xf6, 0x08, 0x0c, 0x09, 0x22, 0x2b, 0x35, 0x15, 0x42, 0x37, 0x46, 0x99, 0x40, 0x87, 0x31,
-0x48, 0x1b, 0x38, 0x01, 0x16, 0xe7, 0x55, 0xd0, 0x77, 0xbf, 0xf3, 0xb5, 0x81, 0xb4, 0x5f, 0xbb,
-0x41, 0xca, 0x15, 0xe0, 0xb4, 0xfa, 0x1a, 0x17, 0x91, 0x31, 0x91, 0x46, 0x45, 0x53, 0xb8, 0x55,
-0x1f, 0x4d, 0x3b, 0x3a, 0x3d, 0x1f, 0x96, 0xff, 0x57, 0xdf, 0xe7, 0xc2, 0xcf, 0xad, 0xda, 0xa2,
-0x72, 0xa3, 0x85, 0xaf, 0x7f, 0xc5, 0xc5, 0xe2, 0x8e, 0x03, 0xbd, 0x23, 0xaf, 0x3f, 0x81, 0x54,
-0xda, 0x5f, 0x30, 0x60, 0xb9, 0x54, 0x2b, 0x3e, 0x8b, 0x1e, 0x94, 0xf9, 0x1f, 0xd4, 0x77, 0xb3,
-0xd2, 0x9c, 0x7e, 0x93, 0xba, 0x98, 0x26, 0xab, 0xd5, 0xc7, 0x62, 0xea, 0x44, 0x0e, 0x55, 0x2f,
-0xad, 0x4a, 0xf8, 0x5d, 0x6c, 0x67, 0x62, 0x65, 0xee, 0x56, 0xc1, 0x3c, 0x18, 0x19, 0x02, 0xf0,
-0x41, 0xc7, 0xae, 0xa5, 0xd0, 0x90, 0xec, 0x8b, 0xd0, 0x96, 0xc9, 0xae, 0x75, 0xcf, 0xee, 0xf3,
-0x9a, 0x17, 0x43, 0x37, 0xaf, 0x50, 0x1a, 0x62, 0xb6, 0x69, 0x6a, 0x65, 0x77, 0x54, 0x27, 0x37,
-0x60, 0x10, 0xea, 0xe4, 0xdd, 0xbb, 0x48, 0x9c, 0xca, 0x8b, 0x14, 0x8c, 0x88, 0x9b, 0x65, 0xb6,
-0x0d, 0xd8, 0xc4, 0xfb, 0xad, 0x1d, 0x81, 0x3b, 0x17, 0x53, 0xae, 0x62, 0xf2, 0x67, 0xf6, 0x60,
-0xbd, 0x4c, 0xbd, 0x2c, 0x72, 0x04, 0xdd, 0xd9, 0x1d, 0xb4, 0xfa, 0x99, 0x28, 0x8f, 0xf8, 0x93,
-0xf4, 0xa5, 0x43, 0xc1, 0xcf, 0xe1, 0x66, 0x03, 0xe9, 0x22, 0xed, 0x3d, 0x8f, 0x52, 0x86, 0x5e,
-0xe2, 0x5f, 0x34, 0x55, 0xcf, 0x3e, 0xd1, 0x1e, 0x4c, 0xf9, 0xeb, 0xd3, 0xef, 0xb4, 0x42, 0xa1,
-0x0a, 0x9b, 0x00, 0xa2, 0xa9, 0xb3, 0xf5, 0xcc, 0x2a, 0xea, 0x0c, 0x08, 0x9b, 0x23, 0x8d, 0x3a,
-0xf5, 0x4a, 0xeb, 0x52, 0xf5, 0x50, 0xcd, 0x44, 0x6b, 0x2f, 0x3c, 0x13, 0xe6, 0xf3, 0xbb, 0xd5,
-0x75, 0xbd, 0x63, 0xae, 0x64, 0xaa, 0x75, 0xb1, 0xe9, 0xc1, 0xa9, 0xd8, 0xa0, 0xf2, 0x60, 0x0c,
-0x33, 0x23, 0xe3, 0x34, 0xe9, 0x3f, 0x1f, 0x43, 0x6b, 0x3e, 0x7b, 0x32, 0xd7, 0x20, 0x52, 0x0b,
-0x30, 0xf4, 0x59, 0xde, 0xcd, 0xcc, 0x11, 0xc2, 0x99, 0xbf, 0x83, 0xc5, 0x9f, 0xd2, 0xc0, 0xe4,
-0x02, 0xf9, 0x8c, 0x0c, 0xb9, 0x1c, 0x0d, 0x28, 0xa7, 0x2d, 0xcb, 0x2d, 0x4b, 0x29, 0x3b, 0x21,
-0x66, 0x16, 0x60, 0x09, 0xdc, 0xfa, 0x48, 0xec, 0xab, 0xdf, 0x55, 0xd7, 0xf5, 0xd4, 0x07, 0xd9,
-0xa3, 0xe2, 0xb4, 0xef, 0x68, 0xfd, 0x50, 0x09, 0xc2, 0x11, 0x42, 0x16, 0x5c, 0x17, 0x8a, 0x16,
-0xe8, 0x14, 0xfa, 0x12, 0x50, 0x10, 0x08, 0x0c, 0x70, 0x05, 0x2c, 0xfd, 0xa0, 0xf4, 0x1c, 0xee,
-0x40, 0xeb, 0x82, 0xec, 0xe2, 0xf0, 0x7c, 0xf6, 0x6e, 0xfb, 0x64, 0xfe, 0x38, 0xff, 0xca, 0xfe,
-0xa8, 0xfe, 0x26, 0x00, 0x02, 0x04, 0x8e, 0x09, 0x3c, 0x0f, 0x20, 0x13, 0xd8, 0x13, 0x08, 0x11,
-0xfe, 0x0b, 0x48, 0x06, 0x5e, 0x01, 0x76, 0xfd, 0x1a, 0xfa, 0x7a, 0xf6, 0x18, 0xf2, 0x3a, 0xed,
-0xd8, 0xe8, 0x98, 0xe6, 0xd2, 0xe7, 0x7c, 0xed, 0x3c, 0xf7, 0xda, 0x03, 0x0e, 0x11, 0x6b, 0x1c,
-0xc3, 0x23, 0x1f, 0x26, 0xd5, 0x23, 0xc3, 0x1d, 0xf0, 0x14, 0x10, 0x0a, 0xc4, 0xfd, 0xd6, 0xf0,
-0x66, 0xe4, 0xc7, 0xd9, 0xbf, 0xd2, 0x89, 0xd0, 0x61, 0xd4, 0x3d, 0xde, 0xaa, 0xed, 0xf2, 0x00,
-0xa8, 0x15, 0x3b, 0x28, 0xdf, 0x35, 0x6b, 0x3c, 0x07, 0x3b, 0x55, 0x32, 0x45, 0x23, 0xfc, 0x0f,
-0xaa, 0xfa, 0xce, 0xe5, 0x7d, 0xd3, 0xd9, 0xc5, 0x29, 0xbe, 0xa3, 0xbd, 0xa7, 0xc4, 0x29, 0xd3,
-0x8a, 0xe8, 0xda, 0x02, 0xc7, 0x1e, 0x2d, 0x38, 0xa1, 0x4a, 0x01, 0x53, 0xd1, 0x4f, 0x8f, 0x41,
-0xf9, 0x2a, 0x9e, 0x0f, 0x5a, 0xf3, 0x3b, 0xd9, 0xed, 0xc3, 0xfd, 0xb4, 0xeb, 0xad, 0x3b, 0xaf,
-0x69, 0xb9, 0xa7, 0xcc, 0x0a, 0xe8, 0x12, 0x09, 0x1b, 0x2b, 0x29, 0x49, 0x76, 0x5d, 0x94, 0x64,
-0x0a, 0x5d, 0xcd, 0x48, 0xed, 0x2b, 0x4a, 0x0b, 0xe8, 0xea, 0x0f, 0xce, 0x37, 0xb7, 0x0e, 0xa8,
-0xfe, 0xa1, 0x78, 0xa5, 0x73, 0xb3, 0xff, 0xcb, 0x72, 0xed, 0xf4, 0x13, 0x25, 0x3a, 0x76, 0x59,
-0xa2, 0x6c, 0xec, 0x6f, 0x50, 0x63, 0xf5, 0x49, 0xef, 0x28, 0x2c, 0x05, 0xb5, 0xe2, 0x77, 0xc4,
-0x15, 0xad, 0x8c, 0x9e, 0xf8, 0x99, 0xc4, 0xa0, 0x57, 0xb3, 0x49, 0xd1, 0x96, 0xf7, 0x3d, 0x21,
-0xef, 0x47, 0x84, 0x65, 0xea, 0x74, 0xc8, 0x73, 0x36, 0x63, 0xe1, 0x46, 0xf1, 0x23, 0xce, 0xfe,
-0x5b, 0xdb, 0xa5, 0xbc, 0xae, 0xa5, 0xa4, 0x98, 0x18, 0x97, 0x0a, 0xa2, 0x77, 0xb9, 0x7f, 0xdb,
-0xda, 0x03, 0x01, 0x2d, 0xdb, 0x50, 0x48, 0x6a, 0x48, 0x75, 0xb4, 0x70, 0xf4, 0x5d, 0xb7, 0x40,
-0x5d, 0x1d, 0x16, 0xf8, 0xab, 0xd4, 0xdd, 0xb6, 0xdc, 0xa1, 0x12, 0x98, 0xe2, 0x9a, 0x62, 0xaa,
-0x87, 0xc5, 0xc2, 0xe8, 0x64, 0x0f, 0x63, 0x34, 0x23, 0x53, 0x86, 0x67, 0xec, 0x6e, 0x32, 0x68,
-0xde, 0x54, 0xff, 0x37, 0x3a, 0x15, 0xe2, 0xf0, 0x25, 0xcf, 0x21, 0xb4, 0x52, 0xa3, 0x64, 0x9e,
-0xd6, 0xa5, 0xcd, 0xb8, 0x6f, 0xd4, 0xfa, 0xf4, 0x54, 0x16, 0xef, 0x34, 0xa3, 0x4d, 0x98, 0x5d,
-0x7c, 0x62, 0x56, 0x5b, 0xdd, 0x48, 0x47, 0x2d, 0x7c, 0x0c, 0x9c, 0xea, 0xa9, 0xcc, 0xad, 0xb6,
-0x5f, 0xab, 0xa3, 0xab, 0x73, 0xb6, 0xe1, 0xc9, 0x65, 0xe2, 0x32, 0xfd, 0x66, 0x17, 0x35, 0x2f,
-0x75, 0x42, 0xf7, 0x4e, 0x75, 0x52, 0x93, 0x4b, 0x81, 0x3a, 0x59, 0x21, 0x2c, 0x04, 0x74, 0xe7,
-0xcb, 0xcf, 0x89, 0xc0, 0xef, 0xba, 0xab, 0xbe, 0xc3, 0xc9, 0xd1, 0xd9, 0x8c, 0xec, 0xb6, 0xff,
-0x9a, 0x12, 0x29, 0x24, 0xeb, 0x32, 0xaf, 0x3c, 0x75, 0x3f, 0x53, 0x39, 0xe5, 0x2a, 0x58, 0x16,
-0x48, 0xff, 0x4c, 0xea, 0x5b, 0xda, 0xaf, 0xd1, 0x27, 0xd0, 0x81, 0xd4, 0xbf, 0xdc, 0x34, 0xe7,
-0x70, 0xf2, 0x20, 0xfe, 0x24, 0x0a, 0xe8, 0x15, 0x8d, 0x20, 0xed, 0x27, 0x45, 0x2a, 0x55, 0x26,
-0x5d, 0x1c, 0x9a, 0x0e, 0xf2, 0xff, 0x50, 0xf3, 0xb2, 0xea, 0x96, 0xe6, 0x6a, 0xe6, 0xfc, 0xe8,
-0xec, 0xec, 0x1a, 0xf1, 0x80, 0xf5, 0x18, 0xfa, 0x4c, 0xff, 0x2c, 0x05, 0x6c, 0x0b, 0xda, 0x10,
-0x0c, 0x14, 0x38, 0x14, 0x30, 0x11, 0x42, 0x0c, 0xc4, 0x06, 0x38, 0x02, 0x4c, 0xff, 0xda, 0xfd,
-0x42, 0xfd, 0xba, 0xfc, 0x50, 0xfb, 0xd6, 0xf8, 0x9a, 0xf5, 0x3c, 0xf2, 0xf8, 0xef, 0xd8, 0xef,
-0x6a, 0xf2, 0xb6, 0xf7, 0x84, 0xfe, 0x8e, 0x05, 0xf2, 0x0b, 0xc8, 0x10, 0x52, 0x14, 0x5e, 0x16,
-0xce, 0x16, 0xba, 0x15, 0xf0, 0x12, 0xde, 0x0d, 0x92, 0x06, 0xe6, 0xfc, 0x98, 0xf1, 0x24, 0xe6,
-0xa1, 0xdc, 0xb5, 0xd7, 0x07, 0xd9, 0xe3, 0xe0, 0xec, 0xed, 0xc0, 0xfd, 0x5c, 0x0d, 0xe0, 0x1a,
-0x8b, 0x24, 0x57, 0x2a, 0x43, 0x2c, 0x5d, 0x2a, 0xab, 0x24, 0x26, 0x1b, 0x7c, 0x0d, 0x38, 0xfc,
-0xbe, 0xe8, 0xa1, 0xd5, 0xcf, 0xc6, 0xa5, 0xbf, 0x6f, 0xc2, 0x25, 0xcf, 0x83, 0xe3, 0x7e, 0xfb,
-0x1e, 0x13, 0xed, 0x26, 0x5b, 0x35, 0xb3, 0x3d, 0x3d, 0x40, 0xf5, 0x3c, 0xc9, 0x33, 0xbd, 0x24,
-0xe4, 0x0f, 0xb4, 0xf6, 0xbd, 0xdb, 0x2d, 0xc3, 0xcb, 0xb1, 0xb7, 0xab, 0x63, 0xb2, 0xc5, 0xc4,
-0x71, 0xdf, 0xde, 0xfd, 0xd0, 0x1a, 0xd5, 0x32, 0x53, 0x44, 0x7f, 0x4e, 0x2d, 0x51, 0xe7, 0x4b,
-0x61, 0x3e, 0x93, 0x28, 0x30, 0x0c, 0x4e, 0xeb, 0x9f, 0xca, 0x3f, 0xaf, 0x28, 0x9e, 0x30, 0x9b,
-0xb8, 0xa6, 0xc9, 0xbe, 0x57, 0xdf, 0xb8, 0x02, 0xc9, 0x23, 0x47, 0x3f, 0xcb, 0x52, 0x6c, 0x5d,
-0x36, 0x5e, 0x79, 0x54, 0xa9, 0x40, 0x05, 0x24, 0x2e, 0x01, 0x5d, 0xdc, 0x51, 0xba, 0x90, 0xa0,
-0x1e, 0x93, 0x12, 0x94, 0x70, 0xa3, 0xf3, 0xbe, 0x71, 0xe2, 0x7a, 0x08, 0x5b, 0x2c, 0xef, 0x49,
-0xc8, 0x5e, 0x90, 0x68, 0x4c, 0x66, 0x94, 0x57, 0xd5, 0x3d, 0x04, 0x1c, 0xc0, 0xf5, 0x1b, 0xd0,
-0xb1, 0xaf, 0x20, 0x99, 0x10, 0x8f, 0xce, 0x92, 0x28, 0xa4, 0x43, 0xc1, 0x60, 0xe6, 0x6c, 0x0e,
-0x39, 0x34, 0x05, 0x53, 0x54, 0x67, 0x42, 0x6e, 0xfa, 0x66, 0xdf, 0x52, 0x83, 0x34, 0x46, 0x10,
-0x78, 0xea, 0x3f, 0xc7, 0xde, 0xaa, 0x06, 0x98, 0xc8, 0x90, 0x8a, 0x96, 0x48, 0xa9, 0xd1, 0xc7,
-0x76, 0xee, 0xa0, 0x17, 0x89, 0x3d, 0xce, 0x5a, 0x1a, 0x6b, 0xc2, 0x6c, 0x00, 0x60, 0xc3, 0x47,
-0x09, 0x28, 0x16, 0x05, 0xa5, 0xe2, 0x2b, 0xc4, 0x13, 0xac, 0x92, 0x9c, 0xae, 0x97, 0x98, 0x9e,
-0x77, 0xb2, 0x93, 0xd1, 0x24, 0xf8, 0x2f, 0x20, 0x4d, 0x43, 0xf8, 0x5b, 0xba, 0x66, 0x0c, 0x63,
-0xcf, 0x52, 0xd5, 0x39, 0x20, 0x1c, 0x48, 0xfd, 0xff, 0xdf, 0x89, 0xc6, 0x83, 0xb2, 0x08, 0xa6,
-0x16, 0xa3, 0x5d, 0xab, 0xaf, 0xbf, 0xfd, 0xdd, 0x0c, 0x02, 0xe5, 0x25, 0x33, 0x43, 0x7c, 0x55,
-0xc6, 0x5a, 0x77, 0x53, 0xc7, 0x42, 0x07, 0x2c, 0xa8, 0x12, 0x48, 0xf9, 0x9d, 0xe1, 0x29, 0xcd,
-0x7d, 0xbd, 0x3b, 0xb4, 0x3d, 0xb3, 0x4f, 0xbc, 0x11, 0xcf, 0xd6, 0xe9, 0x2a, 0x08, 0xb1, 0x24,
-0x95, 0x3a, 0xc5, 0x46, 0x21, 0x48, 0xad, 0x40, 0x4f, 0x32, 0x3f, 0x20, 0xa8, 0x0c, 0x14, 0xf9,
-0x36, 0xe7, 0xf3, 0xd7, 0xd1, 0xcc, 0xe7, 0xc6, 0xb3, 0xc7, 0x97, 0xcf, 0x85, 0xde, 0x5e, 0xf2,
-0x2a, 0x08, 0x06, 0x1c, 0xcd, 0x2a, 0x65, 0x32, 0xdb, 0x32, 0xff, 0x2c, 0xb5, 0x22, 0xea, 0x15,
-0x1c, 0x08, 0xf2, 0xfa, 0x44, 0xef, 0x18, 0xe6, 0xdd, 0xdf, 0xf3, 0xdc, 0x91, 0xdd, 0xdd, 0xe1,
-0xc2, 0xe9, 0x9a, 0xf4, 0xe2, 0x00, 0xec, 0x0c, 0x3c, 0x16, 0xda, 0x1b, 0xf7, 0x1c, 0x1a, 0x1a,
-0x72, 0x14, 0x44, 0x0d, 0x6a, 0x06, 0xb0, 0x00, 0xaa, 0xfc, 0xe6, 0xf9, 0xe6, 0xf7, 0xbe, 0xf5,
-0x3a, 0xf3, 0xc4, 0xf0, 0x82, 0xef, 0xa0, 0xf0, 0x32, 0xf4, 0x80, 0xf9, 0x1c, 0xff, 0xa2, 0x03,
-0x56, 0x06, 0x48, 0x07, 0x3a, 0x07, 0x76, 0x07, 0xd0, 0x08, 0x6e, 0x0b, 0x9e, 0x0e, 0xbc, 0x10,
-0x30, 0x10, 0xf4, 0x0b, 0xd4, 0x03, 0x96, 0xf9, 0x74, 0xef, 0x1a, 0xe8, 0xb4, 0xe4, 0xfe, 0xe4,
-0xfa, 0xe7, 0x76, 0xec, 0xa8, 0xf1, 0x7e, 0xf7, 0x80, 0xfe, 0x26, 0x07, 0x66, 0x11, 0xb2, 0x1b,
-0x35, 0x24, 0x8b, 0x28, 0xb5, 0x26, 0x19, 0x1e, 0x72, 0x0f, 0x80, 0xfd, 0x94, 0xeb, 0x05, 0xdd,
-0x95, 0xd3, 0xe7, 0xcf, 0x45, 0xd1, 0x9f, 0xd6, 0x99, 0xdf, 0x8e, 0xeb, 0xbe, 0xfa, 0x5e, 0x0c,
-0x83, 0x1e, 0xed, 0x2e, 0x4f, 0x3a, 0x55, 0x3e, 0x69, 0x39, 0x71, 0x2b, 0x88, 0x16, 0xb0, 0xfd,
-0x3a, 0xe5, 0x7d, 0xd0, 0x67, 0xc2, 0xd3, 0xbb, 0xd7, 0xbc, 0xe3, 0xc4, 0x05, 0xd3, 0x96, 0xe6,
-0x28, 0xfe, 0x66, 0x17, 0x35, 0x2f, 0x2d, 0x42, 0x67, 0x4d, 0x0b, 0x4f, 0x03, 0x46, 0x6f, 0x33,
-0x36, 0x19, 0x10, 0xfb, 0xbb, 0xdc, 0xd5, 0xc2, 0xbb, 0xb0, 0x9c, 0xa8, 0x18, 0xab, 0x8f, 0xb7,
-0xc5, 0xcc, 0x52, 0xe8, 0x12, 0x07, 0x53, 0x25, 0x7f, 0x3f, 0x57, 0x52, 0xf2, 0x5b, 0xa6, 0x5a,
-0x5d, 0x4e, 0xd3, 0x37, 0x50, 0x19, 0x26, 0xf6, 0xe9, 0xd2, 0x9d, 0xb4, 0x04, 0xa0, 0x1a, 0x98,
-0xc4, 0x9d, 0x43, 0xb0, 0xb7, 0xcc, 0x3c, 0xef, 0xf0, 0x12, 0x99, 0x33, 0xa3, 0x4d, 0xe2, 0x5e,
-0xaa, 0x65, 0x5c, 0x61, 0xb5, 0x51, 0x8f, 0x37, 0x02, 0x15, 0x92, 0xed, 0x89, 0xc6, 0x02, 0xa6,
-0x9a, 0x91, 0xc0, 0x8c, 0x04, 0x98, 0xeb, 0xb0, 0x6f, 0xd3, 0xac, 0xf9, 0xad, 0x1e, 0x6f, 0x3e,
-0x5c, 0x56, 0x14, 0x65, 0x38, 0x69, 0x2e, 0x62, 0xc7, 0x4f, 0xa9, 0x32, 0xe6, 0x0c, 0xd1, 0xe2,
-0x8b, 0xba, 0x24, 0x9b, 0x5a, 0x8a, 0xaa, 0x8a, 0x40, 0x9b, 0x7f, 0xb8, 0xb9, 0xdc, 0xb2, 0x02,
-0xb3, 0x25, 0xad, 0x42, 0x36, 0x58, 0x96, 0x64, 0xb6, 0x66, 0x96, 0x5d, 0xc5, 0x48, 0x59, 0x29,
-0x0c, 0x02, 0xe5, 0xd7, 0xc5, 0xb1, 0xc2, 0x96, 0x48, 0x8b, 0xb2, 0x90, 0xe2, 0xa4, 0x2b, 0xc3,
-0xa4, 0xe6, 0x2c, 0x0a, 0xfb, 0x29, 0x33, 0x44, 0xca, 0x56, 0x7a, 0x60, 0x0e, 0x60, 0x4d, 0x54,
-0x97, 0x3d, 0x39, 0x1d, 0xbc, 0xf6, 0xb9, 0xcf, 0xd3, 0xae, 0x96, 0x99, 0x80, 0x93, 0x8a, 0x9c,
-0xa3, 0xb1, 0xf1, 0xce, 0x80, 0xef, 0x44, 0x0f, 0x75, 0x2b, 0xb9, 0x41, 0xc9, 0x50, 0x44, 0x57,
-0xb5, 0x53, 0x25, 0x46, 0x25, 0x2f, 0xce, 0x10, 0x04, 0xef, 0xbb, 0xce, 0x0b, 0xb5, 0x00, 0xa6,
-0x72, 0xa3, 0xdb, 0xac, 0x37, 0xc0, 0xad, 0xd9, 0xc2, 0xf5, 0x16, 0x11, 0xe1, 0x28, 0x19, 0x3b,
-0x41, 0x46, 0xf9, 0x48, 0xfb, 0x42, 0xc9, 0x34, 0x27, 0x20, 0x6c, 0x07, 0x74, 0xed, 0x65, 0xd5,
-0xb1, 0xc2, 0x0b, 0xb8, 0xb5, 0xb6, 0xf9, 0xbe, 0xe9, 0xce, 0x18, 0xe4, 0x20, 0xfb, 0x2c, 0x11,
-0x73, 0x23, 0x3b, 0x30, 0x3d, 0x36, 0x87, 0x35, 0xcf, 0x2e, 0x61, 0x23, 0xa2, 0x14, 0x12, 0x04,
-0xb4, 0xf2, 0x47, 0xe2, 0xdb, 0xd4, 0x85, 0xcc, 0x35, 0xcb, 0x07, 0xd1, 0x3f, 0xdd, 0x3a, 0xed,
-0x5a, 0xfe, 0x9e, 0x0d, 0x12, 0x19, 0x8d, 0x1f, 0x11, 0x21, 0xc1, 0x1e, 0x0a, 0x1a, 0xe4, 0x13,
-0x26, 0x0d, 0x86, 0x05, 0xfe, 0xfc, 0xd6, 0xf3, 0x04, 0xeb, 0x7e, 0xe4, 0xed, 0xe1, 0x34, 0xe4,
-0x88, 0xea, 0x56, 0xf3, 0x38, 0xfc, 0x68, 0x03, 0xfa, 0x07, 0x94, 0x09, 0x8a, 0x09, 0x22, 0x09,
-0x5c, 0x09, 0xce, 0x0a, 0x96, 0x0c, 0x7a, 0x0d, 0x46, 0x0c, 0x44, 0x08, 0x64, 0x02, 0x60, 0xfc,
-0xc8, 0xf7, 0x60, 0xf5, 0xe4, 0xf4, 0x20, 0xf5, 0x0e, 0xf5, 0x24, 0xf4, 0x5a, 0xf2, 0x16, 0xf1,
-0x9c, 0xf1, 0x08, 0xf5, 0xce, 0xfb, 0xfa, 0x04, 0xde, 0x0e, 0x70, 0x17, 0x85, 0x1c, 0x53, 0x1d,
-0x20, 0x1a, 0xd4, 0x13, 0xe8, 0x0b, 0x2e, 0x03, 0xf4, 0xf9, 0xa0, 0xf0, 0xb8, 0xe7, 0x05, 0xe0,
-0xe5, 0xda, 0x63, 0xd9, 0xb9, 0xdc, 0x52, 0xe5, 0x94, 0xf2, 0x0a, 0x03, 0x8c, 0x14, 0x2d, 0x24,
-0x3f, 0x2f, 0x07, 0x34, 0x97, 0x31, 0xfb, 0x28, 0x44, 0x1b, 0x52, 0x0a, 0xf8, 0xf7, 0x2a, 0xe6,
-0x9d, 0xd6, 0x45, 0xcb, 0x1f, 0xc5, 0x69, 0xc5, 0x7b, 0xcc, 0x47, 0xda, 0xc2, 0xed, 0x10, 0x05,
-0x73, 0x1d, 0x45, 0x33, 0x3d, 0x43, 0x27, 0x4a, 0x03, 0x47, 0xed, 0x39, 0x27, 0x25, 0x9e, 0x0b,
-0xfe, 0xf0, 0x53, 0xd8, 0xbd, 0xc4, 0xbf, 0xb7, 0xa9, 0xb2, 0xa3, 0xb5, 0xe3, 0xc0, 0xc9, 0xd3,
-0x12, 0xed, 0xae, 0x0a, 0x05, 0x29, 0x1f, 0x44, 0x06, 0x57, 0x1c, 0x5e, 0x6a, 0x57, 0x2b, 0x44,
-0x93, 0x27, 0xb0, 0x06, 0x10, 0xe6, 0xfd, 0xc9, 0x07, 0xb5, 0xba, 0xa8, 0x4e, 0xa5, 0xfe, 0xaa,
-0xe1, 0xb9, 0x75, 0xd1, 0x98, 0xf0, 0xee, 0x13, 0x71, 0x37, 0x72, 0x55, 0x68, 0x68, 0x58, 0x6c,
-0x44, 0x60, 0x73, 0x46, 0x15, 0x24, 0xae, 0xfe, 0x61, 0xdb, 0x33, 0xbe, 0x90, 0xa9, 0x70, 0x9e,
-0x30, 0x9d, 0xea, 0xa5, 0xa3, 0xb8, 0x27, 0xd5, 0xe2, 0xf8, 0x5d, 0x20, 0x13, 0x46, 0xb6, 0x63,
-0xe0, 0x73, 0x10, 0x73, 0x96, 0x61, 0x65, 0x43, 0xfd, 0x1d, 0x02, 0xf7, 0x5f, 0xd3, 0x6b, 0xb6,
-0x96, 0xa2, 0xfc, 0x98, 0x00, 0x9a, 0x20, 0xa6, 0x67, 0xbd, 0x49, 0xde, 0x7c, 0x05, 0x23, 0x2e,
-0x37, 0x52, 0x22, 0x6c, 0x28, 0x77, 0x84, 0x71, 0xbc, 0x5c, 0xc5, 0x3c, 0x04, 0x17, 0x7a, 0xf0,
-0x75, 0xcd, 0x63, 0xb1, 0xf0, 0x9e, 0x5a, 0x97, 0xb2, 0x9b, 0x03, 0xac, 0x81, 0xc7, 0x34, 0xeb,
-0x8a, 0x12, 0x29, 0x38, 0x30, 0x57, 0x54, 0x6b, 0x9c, 0x71, 0x48, 0x69, 0xdd, 0x53, 0xe9, 0x34,
-0xae, 0x10, 0x96, 0xeb, 0xed, 0xc9, 0xc9, 0xaf, 0xcc, 0x9f, 0xf2, 0x9b, 0x86, 0xa4, 0xd5, 0xb8,
-0x73, 0xd6, 0x44, 0xf9, 0x7f, 0x1c, 0xfb, 0x3b, 0x8f, 0x54, 0x5e, 0x63, 0xa6, 0x66, 0x84, 0x5d,
-0x03, 0x49, 0xc3, 0x2b, 0x92, 0x09, 0xaa, 0xe6, 0xdf, 0xc7, 0x3f, 0xb1, 0xbc, 0xa5, 0x50, 0xa6,
-0x5b, 0xb2, 0x2b, 0xc8, 0x46, 0xe4, 0xb8, 0x02, 0x83, 0x1f, 0x53, 0x38, 0x17, 0x4b, 0x1c, 0x56,
-0xc6, 0x57, 0x07, 0x4f, 0x67, 0x3c, 0xdb, 0x21, 0xc4, 0x02, 0xaf, 0xe3, 0xb1, 0xc9, 0x93, 0xb8,
-0x81, 0xb2, 0x23, 0xb7, 0xbb, 0xc4, 0x6b, 0xd8, 0x58, 0xef, 0x40, 0x06, 0x60, 0x1b, 0x8f, 0x2d,
-0xc9, 0x3b, 0x77, 0x44, 0xb5, 0x45, 0x49, 0x3e, 0x4d, 0x2e, 0xac, 0x17, 0xcc, 0xfd, 0x54, 0xe5,
-0x59, 0xd2, 0xdd, 0xc7, 0x4f, 0xc6, 0x7b, 0xcc, 0x19, 0xd8, 0xd0, 0xe6, 0x76, 0xf6, 0x7e, 0x05,
-0x1e, 0x13, 0x25, 0x1f, 0x31, 0x29, 0xa9, 0x2f, 0xe7, 0x30, 0xc1, 0x2b, 0x35, 0x20, 0xda, 0x0f,
-0xd4, 0xfd, 0x90, 0xed, 0x3d, 0xe2, 0x2f, 0xdd, 0xdd, 0xdd, 0xbf, 0xe2, 0xda, 0xe9, 0xa6, 0xf1,
-0x36, 0xf9, 0xfe, 0xff, 0x4e, 0x06, 0xba, 0x0c, 0xec, 0x12, 0x06, 0x18, 0xa8, 0x1a, 0xa6, 0x19,
-0xbc, 0x14, 0xe4, 0x0c, 0xc4, 0x03, 0xba, 0xfb, 0x8e, 0xf6, 0x5a, 0xf4, 0xaa, 0xf4, 0xf6, 0xf5,
-0x20, 0xf7, 0xac, 0xf7, 0x7c, 0xf7, 0xfe, 0xf6, 0x2a, 0xf7, 0xca, 0xf8, 0x24, 0xfc, 0xf4, 0x00,
-0x3e, 0x06, 0x14, 0x0b, 0x98, 0x0e, 0x5e, 0x10, 0x72, 0x10, 0xa6, 0x0f, 0x46, 0x0e, 0x8e, 0x0c,
-0x1c, 0x0a, 0x62, 0x06, 0x32, 0x01, 0x7a, 0xfa, 0xa4, 0xf2, 0xc2, 0xea, 0x84, 0xe4, 0x7b, 0xe1,
-0x2f, 0xe3, 0xc6, 0xe9, 0x9e, 0xf4, 0xb8, 0x01, 0xc8, 0x0e, 0x90, 0x19, 0xfd, 0x20, 0x83, 0x24,
-0x59, 0x24, 0xf1, 0x20, 0x6a, 0x1a, 0x3a, 0x11, 0xf2, 0x05, 0xd6, 0xf9, 0xba, 0xee, 0xaa, 0xe6,
-0xe5, 0xe2, 0x04, 0xe4, 0x2e, 0xe9, 0xfa, 0xf0, 0x86, 0xf9, 0xfe, 0x00, 0x66, 0x06, 0x74, 0x09,
-0x60, 0x0a, 0xde, 0x09, 0x8e, 0x08, 0xe6, 0x06, 0x16, 0x05, 0x4c, 0x03, 0x76, 0x01, 0xb2, 0xff,
-0x20, 0xfe, 0x12, 0xfd, 0xa6, 0xfc, 0xd8, 0xfc, 0x8e, 0xfd, 0x9e, 0xfe, 0xc2, 0xff, 0xbe, 0x00,
-0x82, 0x01, 0xf6, 0x01, 0x38, 0x02, 0x26, 0x02, 0xbe, 0x01, 0x2c, 0x01, 0xdc, 0x00, 0x9a, 0x00,
-0x6c, 0x00, 0x26, 0x00, 0xfe, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x48, 0x00,
-0x80, 0x00, 0xb0, 0x00, 0xd2, 0x00, 0x04, 0x01, 0x1a, 0x01, 0x08, 0x01, 0xae, 0x00, 0x38, 0x00,
-0xc4, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x82, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x14, 0x00,
-0x20, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x26, 0x00, 0x38, 0x00, 0x56, 0x00, 0x9a, 0x00, 0xb6, 0x00,
-0xa8, 0x00, 0x74, 0x00, 0x3a, 0x00, 0xf2, 0xff, 0xa4, 0xff, 0x34, 0xff, 0xce, 0xfe, 0x94, 0xfe,
-0x9a, 0xfe, 0xc8, 0xfe, 0x10, 0xff, 0x7a, 0xff, 0xcc, 0xff, 0xf6, 0xff, 0x1a, 0x00, 0x46, 0x00,
-0x6a, 0x00, 0x74, 0x00, 0x54, 0x00, 0x20, 0x00, 0xf2, 0xff, 0xc2, 0xff, 0x8a, 0xff, 0x46, 0xff,
-0x0c, 0xff, 0xe8, 0xfe, 0xea, 0xfe, 0x10, 0xff, 0x4e, 0xff, 0x96, 0xff, 0xca, 0xff, 0xf0, 0xff,
-0x0c, 0x00, 0x40, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x0c, 0x00, 0xb2, 0xff, 0x64, 0xff, 0x46, 0xff,
-0x16, 0xff, 0xdc, 0xfe, 0x8e, 0xfe, 0x42, 0xfe, 0x2a, 0xfe, 0x56, 0xfe, 0xd0, 0xfe, 0x4a, 0xff,
-0xaa, 0xff, 0xca, 0xff, 0xe8, 0xff, 0x1a, 0x00, 0x78, 0x00, 0xae, 0x00, 0xa0, 0x00, 0x3a, 0x00,
-0xc6, 0xff, 0x48, 0xff, 0xf8, 0xfe, 0xd2, 0xfe, 0xc8, 0xfe, 0xb8, 0xfe, 0xa2, 0xfe, 0xa6, 0xfe,
-0xbe, 0xfe, 0x12, 0xff, 0x64, 0xff, 0xc8, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x14, 0x00,
-0xd0, 0xff, 0x76, 0xff, 0x18, 0xff, 0xd0, 0xfe, 0xa6, 0xfe, 0x8e, 0xfe, 0xa2, 0xfe, 0xca, 0xfe,
-0x06, 0xff, 0x46, 0xff, 0x74, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x8e, 0xff, 0x98, 0xff, 0xb6, 0xff,
-0xdc, 0xff, 0x06, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xcc, 0xff, 0x8c, 0xff, 0x3c, 0xff, 0xf4, 0xfe,
-0xb2, 0xfe, 0x98, 0xfe, 0xa2, 0xfe, 0xbe, 0xfe, 0xfa, 0xfe, 0x1c, 0xff, 0x52, 0xff, 0x7c, 0xff,
-0xa2, 0xff, 0xa6, 0xff, 0xac, 0xff, 0xaa, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x6e, 0xff, 0x54, 0xff,
-0x2a, 0xff, 0x0e, 0xff, 0xec, 0xfe, 0xee, 0xfe, 0xfe, 0xfe, 0x20, 0xff, 0x1e, 0xff, 0x22, 0xff,
-0x1e, 0xff, 0x40, 0xff, 0x6a, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xb6, 0xff, 0xa2, 0xff, 0x70, 0xff,
-0x56, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x32, 0xff, 0x46, 0xff,
-0x68, 0xff, 0x82, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x64, 0xff, 0x70, 0xff, 0x8a, 0xff,
-0xa6, 0xff, 0xae, 0xff, 0xa8, 0xff, 0x96, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x22, 0xff, 0x1e, 0xff,
-0x36, 0xff, 0x58, 0xff, 0x78, 0xff, 0x80, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x6a, 0xff, 0x4c, 0xff,
-0x4c, 0xff, 0x62, 0xff, 0x70, 0xff, 0x90, 0xff, 0x9c, 0xff, 0xa8, 0xff, 0x98, 0xff, 0x8a, 0xff,
-0x78, 0xff, 0x88, 0xff, 0x92, 0xff, 0x8a, 0xff, 0x66, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x40, 0xff,
-0x62, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x4c, 0xff, 0x48, 0xff, 0x56, 0xff, 0x86, 0xff, 0xb2, 0xff,
-0xc8, 0xff, 0xbc, 0xff, 0xae, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x6e, 0xff, 0x4c, 0xff,
-0x34, 0xff, 0x28, 0xff, 0x22, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x6c, 0xff, 0x94, 0xff,
-0xae, 0xff, 0xc6, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xae, 0xff, 0xae, 0xff,
-0x92, 0xff, 0x6e, 0xff, 0x5c, 0xff, 0x34, 0xff, 0x22, 0xff, 0x20, 0xff, 0x28, 0xff, 0x48, 0xff,
-0x88, 0xff, 0xde, 0xff, 0x20, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x4a, 0x00, 0x20, 0x00, 0xea, 0xff,
-0xac, 0xff, 0x64, 0xff, 0x2a, 0xff, 0x04, 0xff, 0xea, 0xfe, 0xee, 0xfe, 0x22, 0xff, 0x3c, 0xff,
-0x72, 0xff, 0x96, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0x16, 0x00, 0x22, 0x00, 0x32, 0x00, 0x38, 0x00,
-0x1a, 0x00, 0xec, 0xff, 0xa8, 0xff, 0x5e, 0xff, 0x28, 0xff, 0x0c, 0xff, 0x02, 0xff, 0x12, 0xff,
-0x18, 0xff, 0x38, 0xff, 0x58, 0xff, 0x92, 0xff, 0xca, 0xff, 0x14, 0x00, 0x46, 0x00, 0x5c, 0x00,
-0x40, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0xd0, 0xff, 0xae, 0xff, 0x6a, 0xff, 0x28, 0xff, 0xdc, 0xfe,
-0xb4, 0xfe, 0xb8, 0xfe, 0xf6, 0xfe, 0x26, 0xff, 0x80, 0xff, 0xb6, 0xff, 0x04, 0x00, 0x50, 0x00,
-0x7c, 0x00, 0x9e, 0x00, 0x92, 0x00, 0x68, 0x00, 0x1e, 0x00, 0xdc, 0xff, 0x9e, 0xff, 0x68, 0xff,
-0x14, 0xff, 0xdc, 0xfe, 0xba, 0xfe, 0xcc, 0xfe, 0xf6, 0xfe, 0x34, 0xff, 0x82, 0xff, 0xc4, 0xff,
-0x0e, 0x00, 0x4c, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x60, 0x00, 0x32, 0x00, 0xf2, 0xff, 0xb6, 0xff,
-0x78, 0xff, 0x50, 0xff, 0x20, 0xff, 0x00, 0xff, 0xf4, 0xfe, 0x04, 0xff, 0x2c, 0xff, 0x60, 0xff,
-0xa4, 0xff, 0xd8, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x42, 0x00,
-0x08, 0x00, 0xbe, 0xff, 0x86, 0xff, 0x50, 0xff, 0x24, 0xff, 0xfc, 0xfe, 0x08, 0xff, 0x20, 0xff,
-0x4c, 0xff, 0x78, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x50, 0x00,
-0x34, 0x00, 0x20, 0x00, 0xf4, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x54, 0xff, 0x3e, 0xff, 0x2c, 0xff,
-0x24, 0xff, 0x3c, 0xff, 0x56, 0xff, 0x8a, 0xff, 0xb6, 0xff, 0xe4, 0xff, 0x10, 0x00, 0x1a, 0x00,
-0x32, 0x00, 0x2c, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xde, 0xff, 0xc0, 0xff, 0xa0, 0xff, 0x7e, 0xff,
-0x74, 0xff, 0x76, 0xff, 0x76, 0xff, 0x8a, 0xff, 0x96, 0xff, 0xb2, 0xff, 0xe2, 0xff, 0xee, 0xff,
-0x02, 0x00, 0x04, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0xea, 0xff, 0xda, 0xff, 0xc2, 0xff,
-0xb8, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xc0, 0xff,
-0xcc, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xf8, 0xff,
-0xec, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff,
-0xce, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xea, 0xff,
-0xf8, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x0e, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xac, 0xff, 0xa8, 0xff, 0xba, 0xff,
-0xbe, 0xff, 0xd0, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x18, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x2c, 0x00, 0x1c, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xde, 0xff, 0xca, 0xff, 0xa2, 0xff, 0x9c, 0xff,
-0xa2, 0xff, 0xac, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xe6, 0xff, 0x08, 0x00, 0x2c, 0x00, 0x4c, 0x00,
-0x54, 0x00, 0x58, 0x00, 0x50, 0x00, 0x46, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xda, 0xff, 0xb8, 0xff,
-0x9e, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x86, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xe6, 0xff, 0x08, 0x00,
-0x32, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x6a, 0x00, 0x62, 0x00, 0x42, 0x00, 0x28, 0x00, 0xf4, 0xff,
-0xce, 0xff, 0x9a, 0xff, 0x6c, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x66, 0xff, 0x88, 0xff, 0xb0, 0xff,
-0xda, 0xff, 0x14, 0x00, 0x4e, 0x00, 0x64, 0x00, 0x92, 0x00, 0x9c, 0x00, 0x82, 0x00, 0x60, 0x00,
-0x2a, 0x00, 0x02, 0x00, 0xc6, 0xff, 0x90, 0xff, 0x66, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x64, 0xff,
-0x8a, 0xff, 0xb4, 0xff, 0xf4, 0xff, 0x2e, 0x00, 0x6c, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa8, 0x00,
-0x8c, 0x00, 0x56, 0x00, 0x22, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x72, 0xff, 0x48, 0xff, 0x3a, 0xff,
-0x38, 0xff, 0x5a, 0xff, 0x88, 0xff, 0xd0, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x88, 0x00, 0xac, 0x00,
-0xb8, 0x00, 0xae, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x16, 0x00, 0xea, 0xff, 0xa0, 0xff, 0x70, 0xff,
-0x44, 0xff, 0x40, 0xff, 0x54, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x6c, 0x00,
-0xa2, 0x00, 0xc0, 0x00, 0xc8, 0x00, 0xb8, 0x00, 0x8e, 0x00, 0x48, 0x00, 0x10, 0x00, 0xda, 0xff,
-0xa4, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x8e, 0xff, 0xca, 0xff, 0x06, 0x00,
-0x36, 0x00, 0x7a, 0x00, 0xa0, 0x00, 0xb8, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x3a, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0xaa, 0xff, 0x76, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x72, 0xff, 0xa2, 0xff,
-0xd4, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x7a, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x88, 0x00,
-0x6c, 0x00, 0x36, 0x00, 0x06, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x96, 0xff, 0x86, 0xff, 0x7c, 0xff,
-0x98, 0xff, 0xba, 0xff, 0xf2, 0xff, 0x18, 0x00, 0x44, 0x00, 0x64, 0x00, 0x80, 0x00, 0x8a, 0x00,
-0x84, 0x00, 0x72, 0x00, 0x58, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xd2, 0xff, 0xb6, 0xff, 0xa0, 0xff,
-0x9c, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xc2, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x2a, 0x00, 0x46, 0x00,
-0x5a, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x48, 0x00, 0x36, 0x00, 0x12, 0x00, 0x02, 0x00, 0xea, 0xff,
-0xd0, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x0e, 0x00,
-0x1c, 0x00, 0x36, 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x28, 0x00, 0x10, 0x00,
-0x16, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xea, 0xff,
-0xf4, 0xff, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x26, 0x00,
-0x16, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x10, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x04, 0x00,
-0xfc, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xfe, 0xff,
-0x00, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x30, 0x00, 0x46, 0x00, 0x50, 0x00, 0x48, 0x00, 0x40, 0x00,
-0x38, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xee, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd4, 0xff,
-0xd8, 0xff, 0xd6, 0xff, 0xee, 0xff, 0x18, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x6c, 0x00, 0x70, 0x00,
-0x6e, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xcc, 0xff, 0xb4, 0xff,
-0xa8, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xe4, 0xff, 0x08, 0x00, 0x32, 0x00, 0x62, 0x00,
-0x80, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x7c, 0x00, 0x64, 0x00, 0x40, 0x00, 0x12, 0x00, 0xde, 0xff,
-0xac, 0xff, 0x9a, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xb0, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x26, 0x00,
-0x4a, 0x00, 0x84, 0x00, 0x9e, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x3a, 0x00,
-0xfe, 0xff, 0xd6, 0xff, 0x9a, 0xff, 0x7c, 0xff, 0x64, 0xff, 0x66, 0xff, 0x7a, 0xff, 0xb2, 0xff,
-0xec, 0xff, 0x18, 0x00, 0x5a, 0x00, 0x84, 0x00, 0xae, 0x00, 0xbc, 0x00, 0xa6, 0x00, 0x90, 0x00,
-0x64, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x80, 0xff, 0x56, 0xff, 0x40, 0xff, 0x54, 0xff,
-0x74, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x2e, 0x00, 0x6e, 0x00, 0x9c, 0x00, 0xc2, 0x00, 0xd8, 0x00,
-0xc0, 0x00, 0x9c, 0x00, 0x64, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xa4, 0xff, 0x70, 0xff, 0x4c, 0xff,
-0x44, 0xff, 0x62, 0xff, 0x86, 0xff, 0xc2, 0xff, 0x0c, 0x00, 0x40, 0x00, 0x88, 0x00, 0xbc, 0x00,
-0xda, 0x00, 0xb8, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xc0, 0xff, 0x80, 0xff, 0x5a, 0xff, 0x3a, 0xff,
-0x4c, 0xff, 0x64, 0xff, 0x98, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x56, 0x00, 0x92, 0x00, 0xb8, 0x00,
-0xce, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x7c, 0x00, 0x34, 0x00, 0x06, 0x00, 0xc4, 0xff, 0x86, 0xff,
-0x62, 0xff, 0x50, 0xff, 0x58, 0xff, 0x90, 0xff, 0xba, 0xff, 0xfa, 0xff, 0x40, 0x00, 0x62, 0x00,
-0xa4, 0x00, 0xc6, 0x00, 0xc2, 0x00, 0xb8, 0x00, 0x96, 0x00, 0x5e, 0x00, 0x22, 0x00, 0xe6, 0xff,
-0xb8, 0xff, 0x86, 0xff, 0x6a, 0xff, 0x70, 0xff, 0x80, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x08, 0x00,
-0x42, 0x00, 0x72, 0x00, 0x8e, 0x00, 0xa6, 0x00, 0x9e, 0x00, 0x80, 0x00, 0x70, 0x00, 0x34, 0x00,
-0x02, 0x00, 0xd6, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x8e, 0xff, 0xac, 0xff, 0xb8, 0xff,
-0xe4, 0xff, 0x16, 0x00, 0x3c, 0x00, 0x68, 0x00, 0x76, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x6c, 0x00,
-0x56, 0x00, 0x2e, 0x00, 0x0e, 0x00, 0xe2, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xc0, 0xff,
-0xc6, 0xff, 0xd8, 0xff, 0x04, 0x00, 0x26, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x50, 0x00,
-0x50, 0x00, 0x58, 0x00, 0x30, 0x00, 0x18, 0x00, 0x02, 0x00, 0xea, 0xff, 0xde, 0xff, 0xd2, 0xff,
-0xd6, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x14, 0x00, 0x28, 0x00,
-0x28, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00,
-0x0a, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff,
-0xfe, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x1c, 0x00,
-0x2c, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfa, 0xff,
-0xee, 0xff, 0xe6, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xec, 0xff, 0x04, 0x00,
-0x0c, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x2c, 0x00,
-0x10, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xc0, 0xff,
-0xd8, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x42, 0x00, 0x5e, 0x00, 0x70, 0x00, 0x7a, 0x00, 0x76, 0x00,
-0x5e, 0x00, 0x48, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xd8, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x94, 0xff,
-0x94, 0xff, 0xac, 0xff, 0xbe, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x54, 0x00, 0x7c, 0x00, 0x92, 0x00,
-0x9c, 0x00, 0x8a, 0x00, 0x72, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x92, 0xff,
-0x70, 0xff, 0x6a, 0xff, 0x76, 0xff, 0xa4, 0xff, 0xca, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x6e, 0x00,
-0x94, 0x00, 0xb2, 0x00, 0xb4, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xe2, 0xff,
-0xa8, 0xff, 0x70, 0xff, 0x62, 0xff, 0x58, 0xff, 0x70, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x08, 0x00,
-0x48, 0x00, 0x82, 0x00, 0xb0, 0x00, 0xc6, 0x00, 0xbc, 0x00, 0xa2, 0x00, 0x6e, 0x00, 0x34, 0x00,
-0x02, 0x00, 0xb8, 0xff, 0x82, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x9c, 0xff,
-0xd6, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x94, 0x00, 0xae, 0x00, 0xc6, 0x00, 0xac, 0x00, 0x90, 0x00,
-0x58, 0x00, 0x16, 0x00, 0xd8, 0xff, 0xa2, 0xff, 0x6e, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x4a, 0xff,
-0x6c, 0xff, 0xac, 0xff, 0xf6, 0xff, 0x24, 0x00, 0x64, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xc4, 0x00,
-0xa2, 0x00, 0x7e, 0x00, 0x40, 0x00, 0x08, 0x00, 0xca, 0xff, 0x8a, 0xff, 0x5a, 0xff, 0x3c, 0xff,
-0x36, 0xff, 0x3c, 0xff, 0x78, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x5e, 0x00, 0x90, 0x00,
-0xae, 0x00, 0xac, 0x00, 0x90, 0x00, 0x60, 0x00, 0x34, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x84, 0xff,
-0x52, 0xff, 0x3e, 0xff, 0x3c, 0xff, 0x5a, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0x08, 0x00, 0x38, 0x00,
-0x6c, 0x00, 0x88, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x68, 0x00, 0x26, 0x00, 0xea, 0xff,
-0xb2, 0xff, 0x92, 0xff, 0x74, 0xff, 0x66, 0xff, 0x66, 0xff, 0x7a, 0xff, 0xa6, 0xff, 0xda, 0xff,
-0x14, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x74, 0x00, 0x8c, 0x00, 0x78, 0x00, 0x68, 0x00, 0x3a, 0x00,
-0x14, 0x00, 0xec, 0xff, 0xb0, 0xff, 0x9c, 0xff, 0x8a, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x9e, 0xff,
-0xc2, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x26, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4e, 0x00,
-0x40, 0x00, 0x18, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xb6, 0xff,
-0xbe, 0xff, 0xe2, 0xff, 0xec, 0xff, 0x06, 0x00, 0x12, 0x00, 0x22, 0x00, 0x30, 0x00, 0x2c, 0x00,
-0x2a, 0x00, 0x20, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xe6, 0xff, 0xe0, 0xff,
-0xec, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf8, 0xff,
-0xf4, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0x0e, 0x00,
-0x04, 0x00, 0xf8, 0xff, 0x06, 0x00, 0x0a, 0x00, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xe4, 0xff,
-0xda, 0xff, 0xce, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0x00, 0x00,
-0x10, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x20, 0x00, 0x0c, 0x00,
-0xfe, 0xff, 0xdc, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xc4, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x34, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x44, 0x00,
-0x2c, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x94, 0xff,
-0xa0, 0xff, 0xc6, 0xff, 0xec, 0xff, 0x0e, 0x00, 0x3c, 0x00, 0x62, 0x00, 0x78, 0x00, 0x72, 0x00,
-0x68, 0x00, 0x56, 0x00, 0x2a, 0x00, 0x04, 0x00, 0xd4, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x76, 0xff,
-0x76, 0xff, 0x8a, 0xff, 0xa4, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x24, 0x00, 0x5e, 0x00, 0x7e, 0x00,
-0x92, 0x00, 0x88, 0x00, 0x70, 0x00, 0x50, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xb6, 0xff, 0x84, 0xff,
-0x64, 0xff, 0x50, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0xa0, 0xff, 0xcc, 0xff, 0x02, 0x00, 0x3a, 0x00,
-0x66, 0x00, 0x92, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x84, 0x00, 0x48, 0x00, 0x08, 0x00, 0xd8, 0xff,
-0x9e, 0xff, 0x68, 0xff, 0x4a, 0xff, 0x36, 0xff, 0x42, 0xff, 0x72, 0xff, 0xa6, 0xff, 0xea, 0xff,
-0x12, 0x00, 0x5a, 0x00, 0x8c, 0x00, 0xac, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x7a, 0x00, 0x36, 0x00,
-0xfa, 0xff, 0xc2, 0xff, 0x82, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x70, 0xff,
-0xb4, 0xff, 0xfa, 0xff, 0x22, 0x00, 0x62, 0x00, 0x98, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x8e, 0x00,
-0x5e, 0x00, 0x20, 0x00, 0xe4, 0xff, 0xa8, 0xff, 0x64, 0xff, 0x38, 0xff, 0x32, 0xff, 0x2c, 0xff,
-0x52, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x04, 0x00, 0x30, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xb0, 0x00,
-0xac, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x16, 0x00, 0xdc, 0xff, 0xae, 0xff, 0x70, 0xff, 0x4a, 0xff,
-0x44, 0xff, 0x4e, 0xff, 0x6e, 0xff, 0x9e, 0xff, 0xda, 0xff, 0x14, 0x00, 0x44, 0x00, 0x7a, 0x00,
-0x9c, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x46, 0x00, 0x0a, 0x00, 0xce, 0xff, 0x98, 0xff,
-0x70, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x60, 0xff, 0x7c, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x14, 0x00,
-0x44, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x62, 0x00, 0x56, 0x00, 0x28, 0x00, 0xf8, 0xff,
-0xda, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x80, 0xff, 0x80, 0xff, 0x88, 0xff, 0x9a, 0xff, 0xc6, 0xff,
-0xee, 0xff, 0x1a, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x64, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x3a, 0x00,
-0x1c, 0x00, 0x00, 0x00, 0xda, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa4, 0xff, 0x9e, 0xff, 0xa2, 0xff,
-0xb8, 0xff, 0xda, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x20, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2c, 0x00,
-0x32, 0x00, 0x12, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xc4, 0xff,
-0xc6, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x14, 0x00,
-0x0c, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xee, 0xff,
-0xec, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xf0, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x04, 0x00,
-0x02, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf8, 0xff, 0xe2, 0xff,
-0xd4, 0xff, 0xc4, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xea, 0xff,
-0xf6, 0xff, 0x12, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x0e, 0x00,
-0xfa, 0xff, 0xe8, 0xff, 0xbc, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xa2, 0xff,
-0xcc, 0xff, 0xea, 0xff, 0x10, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x4e, 0x00,
-0x3c, 0x00, 0x20, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0xa2, 0xff, 0x84, 0xff, 0x6e, 0xff, 0x76, 0xff,
-0x8a, 0xff, 0x9a, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x78, 0x00,
-0x6c, 0x00, 0x58, 0x00, 0x3a, 0x00, 0x08, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x7a, 0xff, 0x62, 0xff,
-0x5a, 0xff, 0x62, 0xff, 0x88, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x7c, 0x00,
-0x94, 0x00, 0x9e, 0x00, 0x8a, 0x00, 0x64, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xd2, 0xff, 0x8e, 0xff,
-0x60, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xb8, 0xff, 0xf2, 0xff, 0x28, 0x00,
-0x5e, 0x00, 0x90, 0x00, 0xac, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x6a, 0x00, 0x24, 0x00, 0xee, 0xff,
-0xb6, 0xff, 0x70, 0xff, 0x44, 0xff, 0x28, 0xff, 0x28, 0xff, 0x56, 0xff, 0x78, 0xff, 0xc4, 0xff,
-0x06, 0x00, 0x32, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xc0, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x62, 0x00,
-0x18, 0x00, 0xee, 0xff, 0xa2, 0xff, 0x5e, 0xff, 0x36, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x5a, 0xff,
-0x92, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x44, 0x00, 0x80, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0xa2, 0x00,
-0x80, 0x00, 0x48, 0x00, 0x02, 0x00, 0xca, 0xff, 0x94, 0xff, 0x58, 0xff, 0x36, 0xff, 0x30, 0xff,
-0x34, 0xff, 0x5a, 0xff, 0x98, 0xff, 0xd0, 0xff, 0x14, 0x00, 0x42, 0x00, 0x70, 0x00, 0x92, 0x00,
-0x94, 0x00, 0x92, 0x00, 0x72, 0x00, 0x38, 0x00, 0xfa, 0xff, 0xba, 0xff, 0x82, 0xff, 0x56, 0xff,
-0x40, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x7a, 0xff, 0xb2, 0xff, 0xe2, 0xff, 0x28, 0x00, 0x54, 0x00,
-0x76, 0x00, 0x96, 0x00, 0x96, 0x00, 0x7c, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xe8, 0xff, 0xb8, 0xff,
-0x8e, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x52, 0xff, 0x68, 0xff, 0x94, 0xff, 0xbe, 0xff, 0xee, 0xff,
-0x26, 0x00, 0x46, 0x00, 0x56, 0x00, 0x70, 0x00, 0x66, 0x00, 0x60, 0x00, 0x3a, 0x00, 0x0a, 0x00,
-0xe8, 0xff, 0xaa, 0xff, 0x94, 0xff, 0x86, 0xff, 0x82, 0xff, 0x7c, 0xff, 0x88, 0xff, 0xa6, 0xff,
-0xd0, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x48, 0x00,
-0x2a, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xde, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xae, 0xff,
-0xca, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x20, 0x00,
-0x20, 0x00, 0x1e, 0x00, 0x10, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xea, 0xff, 0xde, 0xff, 0xe0, 0xff,
-0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf0, 0xff,
-0xf4, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
-0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xd4, 0xff,
-0xcc, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x0a, 0x00,
-0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x12, 0x00, 0x22, 0x00, 0x08, 0x00, 0xea, 0xff, 0xd8, 0xff,
-0xc0, 0xff, 0xae, 0xff, 0x92, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xe2, 0xff,
-0xf8, 0xff, 0x14, 0x00, 0x38, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x26, 0x00, 0x16, 0x00,
-0xe4, 0xff, 0xc0, 0xff, 0xa2, 0xff, 0x8a, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7e, 0xff, 0x9e, 0xff,
-0xb8, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x38, 0x00, 0x64, 0x00, 0x6e, 0x00, 0x7e, 0x00, 0x60, 0x00,
-0x44, 0x00, 0x18, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x6e, 0xff, 0x54, 0xff, 0x58, 0xff,
-0x6e, 0xff, 0x8e, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x28, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x90, 0x00,
-0x8a, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x14, 0x00, 0xd8, 0xff, 0xa0, 0xff, 0x6a, 0xff, 0x48, 0xff,
-0x40, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x8c, 0xff, 0xc8, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x80, 0x00,
-0xa4, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x50, 0x00, 0x1c, 0x00, 0xd0, 0xff, 0x9a, 0xff,
-0x66, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x70, 0xff, 0x9c, 0xff, 0xea, 0xff, 0x1c, 0x00,
-0x5c, 0x00, 0x9e, 0x00, 0xba, 0x00, 0xce, 0x00, 0xb8, 0x00, 0x86, 0x00, 0x44, 0x00, 0x00, 0x00,
-0xd2, 0xff, 0x8e, 0xff, 0x50, 0xff, 0x2c, 0xff, 0x14, 0xff, 0x2c, 0xff, 0x62, 0xff, 0xaa, 0xff,
-0xf4, 0xff, 0x24, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xa4, 0x00, 0x6c, 0x00,
-0x2c, 0x00, 0xe6, 0xff, 0xba, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x2e, 0xff, 0x28, 0xff, 0x42, 0xff,
-0x7a, 0xff, 0xc6, 0xff, 0x02, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xaa, 0x00, 0xba, 0x00, 0xb6, 0x00,
-0x98, 0x00, 0x62, 0x00, 0x20, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x78, 0xff, 0x3e, 0xff, 0x34, 0xff,
-0x3a, 0xff, 0x4e, 0xff, 0x88, 0xff, 0xcc, 0xff, 0x0e, 0x00, 0x3a, 0x00, 0x70, 0x00, 0x8e, 0x00,
-0xa0, 0x00, 0x98, 0x00, 0x76, 0x00, 0x46, 0x00, 0x02, 0x00, 0xc2, 0xff, 0x88, 0xff, 0x6c, 0xff,
-0x46, 0xff, 0x38, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x96, 0xff, 0xce, 0xff, 0x00, 0x00, 0x3a, 0x00,
-0x5a, 0x00, 0x72, 0x00, 0x72, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xd2, 0xff,
-0x96, 0xff, 0x80, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x78, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xe4, 0xff,
-0x0a, 0x00, 0x38, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x04, 0x00,
-0xf2, 0xff, 0xce, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xb0, 0xff,
-0xd0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x12, 0x00, 0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1e, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xc0, 0xff,
-0xcc, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfa, 0xff,
-0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xde, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xce, 0xff,
-0xd2, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x06, 0x00,
-0x1a, 0x00, 0x14, 0x00, 0x16, 0x00, 0x12, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xe4, 0xff, 0xc4, 0xff,
-0xba, 0xff, 0xa6, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x0c, 0x00,
-0x12, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x34, 0x00, 0x36, 0x00, 0x1e, 0x00, 0x00, 0x00,
-0xdc, 0xff, 0xb8, 0xff, 0xa4, 0xff, 0x90, 0xff, 0x92, 0xff, 0x98, 0xff, 0x9c, 0xff, 0xc2, 0xff,
-0xf0, 0xff, 0x10, 0x00, 0x34, 0x00, 0x54, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x36, 0x00,
-0x16, 0x00, 0xf2, 0xff, 0xc8, 0xff, 0x96, 0xff, 0x7a, 0xff, 0x68, 0xff, 0x60, 0xff, 0x7c, 0xff,
-0x92, 0xff, 0xc0, 0xff, 0xee, 0xff, 0x18, 0x00, 0x4a, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x86, 0x00,
-0x6a, 0x00, 0x3e, 0x00, 0x14, 0x00, 0xe6, 0xff, 0xac, 0xff, 0x80, 0xff, 0x54, 0xff, 0x48, 0xff,
-0x4c, 0xff, 0x66, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x68, 0x00, 0x8a, 0x00,
-0xa0, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x42, 0x00, 0xfe, 0xff, 0xc4, 0xff, 0x8a, 0xff, 0x56, 0xff,
-0x3c, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x64, 0xff, 0x9c, 0xff, 0xdc, 0xff, 0x0e, 0x00, 0x48, 0x00,
-0x7c, 0x00, 0xa8, 0x00, 0xae, 0x00, 0x90, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xbe, 0xff,
-0x76, 0xff, 0x40, 0xff, 0x22, 0xff, 0x1a, 0xff, 0x4c, 0xff, 0x74, 0xff, 0xb8, 0xff, 0xf4, 0xff,
-0x22, 0x00, 0x6e, 0x00, 0xa2, 0x00, 0xc0, 0x00, 0xb6, 0x00, 0x94, 0x00, 0x66, 0x00, 0x18, 0x00,
-0xe2, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x40, 0xff, 0x22, 0xff, 0x30, 0xff, 0x4e, 0xff, 0x82, 0xff,
-0xc6, 0xff, 0x08, 0x00, 0x3a, 0x00, 0x86, 0x00, 0xaa, 0x00, 0xba, 0x00, 0xb8, 0x00, 0x7c, 0x00,
-0x4c, 0x00, 0x06, 0x00, 0xd0, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff, 0x30, 0xff, 0x44, 0xff,
-0x60, 0xff, 0x9a, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x50, 0x00, 0x7e, 0x00, 0xa4, 0x00, 0xb2, 0x00,
-0x9e, 0x00, 0x7c, 0x00, 0x40, 0x00, 0x06, 0x00, 0xc4, 0xff, 0x96, 0xff, 0x68, 0xff, 0x56, 0xff,
-0x4e, 0xff, 0x62, 0xff, 0x7e, 0xff, 0xae, 0xff, 0xe8, 0xff, 0x1c, 0x00, 0x50, 0x00, 0x6a, 0x00,
-0x8a, 0x00, 0x86, 0x00, 0x78, 0x00, 0x5a, 0x00, 0x24, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x90, 0xff,
-0x7a, 0xff, 0x68, 0xff, 0x66, 0xff, 0x7a, 0xff, 0x96, 0xff, 0xca, 0xff, 0xfa, 0xff, 0x10, 0x00,
-0x3e, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xf0, 0xff,
-0xc8, 0xff, 0xa4, 0xff, 0x90, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x90, 0xff, 0xaa, 0xff, 0xd0, 0xff,
-0xee, 0xff, 0x02, 0x00, 0x24, 0x00, 0x32, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x32, 0x00, 0x1a, 0x00,
-0x0a, 0x00, 0xf0, 0xff, 0xdc, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xac, 0xff,
-0xbc, 0xff, 0xd0, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x14, 0x00,
-0x08, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xde, 0xff, 0xea, 0xff,
-0xcc, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xec, 0xff,
-0xf2, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xcc, 0xff,
-0xc4, 0xff, 0xca, 0xff, 0xc0, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x1c, 0x00,
-0x2c, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xd4, 0xff,
-0xb8, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xbc, 0xff, 0xe2, 0xff, 0x00, 0x00,
-0x18, 0x00, 0x42, 0x00, 0x46, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x36, 0x00, 0x32, 0x00, 0x04, 0x00,
-0xe0, 0xff, 0xc0, 0xff, 0x9a, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x8e, 0xff, 0xb0, 0xff,
-0xe0, 0xff, 0x0e, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x6c, 0x00, 0x70, 0x00, 0x56, 0x00, 0x50, 0x00,
-0x38, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xa4, 0xff, 0x76, 0xff, 0x5a, 0xff, 0x4a, 0xff, 0x64, 0xff,
-0x86, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0x1e, 0x00, 0x4a, 0x00, 0x6a, 0x00, 0x80, 0x00, 0x88, 0x00,
-0x82, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xbc, 0xff, 0x80, 0xff, 0x50, 0xff, 0x44, 0xff,
-0x3c, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x1e, 0x00, 0x64, 0x00, 0x8e, 0x00,
-0xa4, 0x00, 0x96, 0x00, 0x84, 0x00, 0x56, 0x00, 0x14, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x6a, 0xff,
-0x44, 0xff, 0x2c, 0xff, 0x2a, 0xff, 0x54, 0xff, 0x84, 0xff, 0xd0, 0xff, 0x00, 0x00, 0x2c, 0x00,
-0x70, 0x00, 0xa0, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0x86, 0x00, 0x3e, 0x00, 0xf8, 0xff, 0xc8, 0xff,
-0x8e, 0xff, 0x56, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x3c, 0xff, 0x60, 0xff, 0x94, 0xff, 0xe4, 0xff,
-0x10, 0x00, 0x46, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x36, 0x00,
-0xe8, 0xff, 0xc8, 0xff, 0x8a, 0xff, 0x4c, 0xff, 0x28, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x74, 0xff,
-0xbe, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x92, 0x00,
-0x64, 0x00, 0x26, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x46, 0xff, 0x40, 0xff, 0x44, 0xff,
-0x5a, 0xff, 0x96, 0xff, 0xca, 0xff, 0x02, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x76, 0x00, 0x84, 0x00,
-0x84, 0x00, 0x6a, 0x00, 0x4c, 0x00, 0x0a, 0x00, 0xda, 0xff, 0xae, 0xff, 0x7c, 0xff, 0x64, 0xff,
-0x5c, 0xff, 0x68, 0xff, 0x82, 0xff, 0xaa, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x36, 0x00, 0x52, 0x00,
-0x66, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x46, 0x00, 0x26, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xa8, 0xff,
-0x90, 0xff, 0x88, 0xff, 0x80, 0xff, 0x92, 0xff, 0x9e, 0xff, 0xc4, 0xff, 0xee, 0xff, 0x02, 0x00,
-0x1e, 0x00, 0x34, 0x00, 0x4e, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xf6, 0xff,
-0xdc, 0xff, 0xb8, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xc2, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x22, 0x00, 0x1c, 0x00,
-0xf6, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xbc, 0xff,
-0xc8, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0e, 0x00,
-0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0xf2, 0xff,
-0xf2, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xd2, 0xff,
-0xe0, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x0e, 0x00, 0x1a, 0x00,
-0x16, 0x00, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xe2, 0xff, 0xcc, 0xff, 0xac, 0xff,
-0xa8, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xd4, 0xff, 0xea, 0xff, 0x02, 0x00, 0x1c, 0x00,
-0x24, 0x00, 0x48, 0x00, 0x40, 0x00, 0x34, 0x00, 0x36, 0x00, 0x18, 0x00, 0x04, 0x00, 0xda, 0xff,
-0xbc, 0xff, 0xa0, 0xff, 0x96, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xee, 0xff,
-0x02, 0x00, 0x2e, 0x00, 0x50, 0x00, 0x60, 0x00, 0x5a, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x14, 0x00,
-0xf0, 0xff, 0xcc, 0xff, 0x9c, 0xff, 0x7a, 0xff, 0x64, 0xff, 0x5e, 0xff, 0x6e, 0xff, 0x94, 0xff,
-0xba, 0xff, 0xe6, 0xff, 0x1c, 0x00, 0x4a, 0x00, 0x62, 0x00, 0x78, 0x00, 0x80, 0x00, 0x6c, 0x00,
-0x4c, 0x00, 0x18, 0x00, 0xee, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x56, 0xff,
-0x62, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00,
-0xa2, 0x00, 0x78, 0x00, 0x48, 0x00, 0x0e, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x6a, 0xff, 0x42, 0xff,
-0x2c, 0xff, 0x34, 0xff, 0x54, 0xff, 0x88, 0xff, 0xca, 0xff, 0x02, 0x00, 0x3c, 0x00, 0x76, 0x00,
-0x8e, 0x00, 0xac, 0x00, 0x92, 0x00, 0x6c, 0x00, 0x30, 0x00, 0xf6, 0xff, 0xc4, 0xff, 0x86, 0xff,
-0x58, 0xff, 0x2e, 0xff, 0x1e, 0xff, 0x34, 0xff, 0x66, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x16, 0x00,
-0x58, 0x00, 0x96, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x20, 0x00, 0xec, 0xff,
-0xbc, 0xff, 0x72, 0xff, 0x46, 0xff, 0x26, 0xff, 0x24, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xc0, 0xff,
-0xfe, 0xff, 0x2a, 0x00, 0x78, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x82, 0x00, 0x4c, 0x00,
-0x1c, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x76, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x56, 0xff,
-0x88, 0xff, 0xc4, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0x94, 0x00,
-0x7c, 0x00, 0x52, 0x00, 0x12, 0x00, 0xe0, 0xff, 0xb0, 0xff, 0x74, 0xff, 0x56, 0xff, 0x50, 0xff,
-0x58, 0xff, 0x7a, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x14, 0x00, 0x4a, 0x00, 0x60, 0x00, 0x84, 0x00,
-0x86, 0x00, 0x76, 0x00, 0x64, 0x00, 0x38, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x8e, 0xff,
-0x76, 0xff, 0x5e, 0xff, 0x6c, 0xff, 0x88, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x04, 0x00, 0x28, 0x00,
-0x42, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x26, 0x00, 0x08, 0x00, 0xda, 0xff,
-0xbe, 0xff, 0x9e, 0xff, 0x92, 0xff, 0x98, 0xff, 0x92, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0xe4, 0xff,
-0xfc, 0xff, 0x22, 0x00, 0x30, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x2c, 0x00, 0x0e, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xc0, 0xff,
-0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0c, 0x00,
-0x0a, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xce, 0xff,
-0xd8, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xea, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x02, 0x00, 0xf8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xc2, 0xff,
-0xc2, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x16, 0x00, 0x22, 0x00,
-0x2a, 0x00, 0x20, 0x00, 0x22, 0x00, 0x14, 0x00, 0x06, 0x00, 0xe4, 0xff, 0xd4, 0xff, 0xae, 0xff,
-0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xae, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0x14, 0x00,
-0x38, 0x00, 0x48, 0x00, 0x54, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xee, 0xff,
-0xc0, 0xff, 0xa4, 0xff, 0x96, 0xff, 0x88, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xba, 0xff, 0xee, 0xff,
-0x06, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x66, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x56, 0x00, 0x3c, 0x00,
-0x04, 0x00, 0xda, 0xff, 0xaa, 0xff, 0x78, 0xff, 0x6c, 0xff, 0x60, 0xff, 0x6a, 0xff, 0x7e, 0xff,
-0xac, 0xff, 0xec, 0xff, 0x0a, 0x00, 0x42, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x90, 0x00, 0x7e, 0x00,
-0x58, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8e, 0xff, 0x6a, 0xff, 0x42, 0xff, 0x40, 0xff,
-0x54, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x26, 0x00, 0x5e, 0x00, 0x88, 0x00, 0xa6, 0x00,
-0xae, 0x00, 0x98, 0x00, 0x68, 0x00, 0x2a, 0x00, 0xee, 0xff, 0xae, 0xff, 0x72, 0xff, 0x46, 0xff,
-0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x26, 0x00, 0x68, 0x00,
-0x8a, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0x7c, 0x00, 0x4e, 0x00, 0x02, 0x00, 0xd2, 0xff, 0x94, 0xff,
-0x5a, 0xff, 0x30, 0xff, 0x20, 0xff, 0x24, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xc0, 0xff, 0x00, 0x00,
-0x38, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xae, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00, 0x00, 0x00,
-0xd2, 0xff, 0x8a, 0xff, 0x54, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x6c, 0xff, 0xa6, 0xff,
-0xe6, 0xff, 0x14, 0x00, 0x46, 0x00, 0x82, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x86, 0x00, 0x5e, 0x00,
-0x28, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x88, 0xff, 0x52, 0xff, 0x40, 0xff, 0x44, 0xff, 0x56, 0xff,
-0x7c, 0xff, 0xaa, 0xff, 0xee, 0xff, 0x18, 0x00, 0x42, 0x00, 0x7e, 0x00, 0x90, 0x00, 0x8a, 0x00,
-0x76, 0x00, 0x46, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x68, 0xff, 0x62, 0xff,
-0x5c, 0xff, 0x76, 0xff, 0x94, 0xff, 0xca, 0xff, 0x00, 0x00, 0x38, 0x00, 0x58, 0x00, 0x70, 0x00,
-0x7e, 0x00, 0x78, 0x00, 0x6a, 0x00, 0x44, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x9c, 0xff,
-0x94, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0x1e, 0x00,
-0x40, 0x00, 0x48, 0x00, 0x52, 0x00, 0x52, 0x00, 0x48, 0x00, 0x24, 0x00, 0x02, 0x00, 0xea, 0xff,
-0xcc, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xde, 0xff,
-0xf4, 0xff, 0x02, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x12, 0x00,
-0x02, 0x00, 0xf8, 0xff, 0xf6, 0xff, 0xda, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd4, 0xff,
-0xd4, 0xff, 0xee, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00,
-0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff,
-0xe8, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd4, 0xff,
-0xcc, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xee, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x20, 0x00,
-0x0e, 0x00, 0x12, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xe6, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xb0, 0xff,
-0xa8, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x0e, 0x00, 0x32, 0x00,
-0x3c, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x08, 0x00, 0xe8, 0xff, 0xc2, 0xff,
-0x9e, 0xff, 0x8a, 0xff, 0x80, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb0, 0xff, 0xe0, 0xff, 0xfc, 0xff,
-0x1e, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x26, 0x00, 0x00, 0x00,
-0xd0, 0xff, 0xa4, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x98, 0xff, 0xc4, 0xff,
-0xea, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x74, 0x00, 0x5a, 0x00,
-0x22, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x96, 0xff, 0x70, 0xff, 0x54, 0xff, 0x58, 0xff, 0x6a, 0xff,
-0x90, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x9e, 0x00,
-0x84, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x4e, 0xff, 0x3a, 0xff,
-0x34, 0xff, 0x5a, 0xff, 0x9a, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x76, 0x00, 0xa0, 0x00,
-0xaa, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x12, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x6a, 0xff,
-0x3e, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x66, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x5a, 0x00,
-0x82, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0xa2, 0x00, 0x74, 0x00, 0x32, 0x00, 0xfc, 0xff, 0xc6, 0xff,
-0x7a, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x26, 0xff, 0x4c, 0xff, 0x5e, 0xff, 0xae, 0xff, 0xe8, 0xff,
-0x1c, 0x00, 0x54, 0x00, 0x88, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x22, 0x00,
-0xea, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x86, 0xff,
-0xb8, 0xff, 0xf6, 0xff, 0x28, 0x00, 0x62, 0x00, 0x80, 0x00, 0x90, 0x00, 0x9e, 0x00, 0x78, 0x00,
-0x42, 0x00, 0x12, 0x00, 0xd4, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x4e, 0xff,
-0x70, 0xff, 0x94, 0xff, 0xce, 0xff, 0x08, 0x00, 0x30, 0x00, 0x58, 0x00, 0x74, 0x00, 0x78, 0x00,
-0x74, 0x00, 0x56, 0x00, 0x26, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xa0, 0xff, 0x86, 0xff, 0x6e, 0xff,
-0x62, 0xff, 0x7c, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0x02, 0x00, 0x36, 0x00, 0x50, 0x00,
-0x56, 0x00, 0x64, 0x00, 0x58, 0x00, 0x48, 0x00, 0x1a, 0x00, 0xf4, 0xff, 0xe2, 0xff, 0xac, 0xff,
-0xa2, 0xff, 0x98, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0x08, 0x00,
-0x1e, 0x00, 0x32, 0x00, 0x36, 0x00, 0x44, 0x00, 0x40, 0x00, 0x24, 0x00, 0x08, 0x00, 0xf0, 0xff,
-0xd6, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xd8, 0xff, 0xd8, 0xff,
-0xec, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x18, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x0a, 0x00,
-0xfc, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe2, 0xff,
-0xde, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf8, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
-0xfe, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xc8, 0xff,
-0xcc, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x16, 0x00, 0x22, 0x00, 0x28, 0x00,
-0x2c, 0x00, 0x22, 0x00, 0x16, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xbc, 0xff, 0xa2, 0xff,
-0x96, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xd4, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x36, 0x00,
-0x4a, 0x00, 0x54, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x36, 0x00, 0x0e, 0x00, 0xe6, 0xff, 0xce, 0xff,
-0xa2, 0xff, 0x8e, 0xff, 0x78, 0xff, 0x76, 0xff, 0x8e, 0xff, 0xa4, 0xff, 0xd6, 0xff, 0xf6, 0xff,
-0x18, 0x00, 0x48, 0x00, 0x66, 0x00, 0x70, 0x00, 0x76, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x04, 0x00,
-0xe0, 0xff, 0xac, 0xff, 0x7e, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x78, 0xff, 0xa2, 0xff,
-0xc4, 0xff, 0xfa, 0xff, 0x38, 0x00, 0x6e, 0x00, 0x9a, 0x00, 0xa0, 0x00, 0x92, 0x00, 0x66, 0x00,
-0x30, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x98, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x48, 0xff,
-0x6c, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x54, 0x00, 0x8a, 0x00, 0xa4, 0x00, 0xb2, 0x00,
-0x9c, 0x00, 0x70, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc2, 0xff, 0x7e, 0xff, 0x50, 0xff, 0x32, 0xff,
-0x30, 0xff, 0x44, 0xff, 0x76, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x1e, 0x00, 0x64, 0x00, 0x9c, 0x00,
-0xba, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x6e, 0x00, 0x1c, 0x00, 0xf8, 0xff, 0xaa, 0xff, 0x68, 0xff,
-0x3e, 0xff, 0x30, 0xff, 0x36, 0xff, 0x56, 0xff, 0x84, 0xff, 0xc2, 0xff, 0x00, 0x00, 0x38, 0x00,
-0x7a, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xac, 0x00, 0x92, 0x00, 0x56, 0x00, 0x18, 0x00, 0xe8, 0xff,
-0xac, 0xff, 0x6e, 0xff, 0x3c, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xde, 0xff,
-0x10, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x74, 0x00, 0x3e, 0x00,
-0x04, 0x00, 0xca, 0xff, 0x96, 0xff, 0x62, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x68, 0xff,
-0xa6, 0xff, 0xea, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x74, 0x00, 0x90, 0x00, 0x92, 0x00, 0x80, 0x00,
-0x5a, 0x00, 0x28, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x58, 0xff, 0x5a, 0xff,
-0x64, 0xff, 0x8e, 0xff, 0xc4, 0xff, 0xea, 0xff, 0x24, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x72, 0x00,
-0x6a, 0x00, 0x5e, 0x00, 0x44, 0x00, 0x16, 0x00, 0xe6, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x92, 0xff,
-0x7c, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x9e, 0xff, 0xc8, 0xff, 0xea, 0xff, 0x10, 0x00, 0x2a, 0x00,
-0x3c, 0x00, 0x42, 0x00, 0x4e, 0x00, 0x3e, 0x00, 0x26, 0x00, 0x02, 0x00, 0xea, 0xff, 0xd4, 0xff,
-0xb6, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xf6, 0xff,
-0x08, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x16, 0x00, 0xfe, 0xff,
-0xf2, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xdc, 0xff,
-0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x04, 0x00,
-0x02, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfe, 0xff,
-0xf6, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd8, 0xff,
-0xea, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x14, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x16, 0x00,
-0x16, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xc2, 0xff, 0xb6, 0xff, 0xb0, 0xff,
-0xb0, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x2e, 0x00, 0x3a, 0x00,
-0x3c, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x14, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xa2, 0xff,
-0x92, 0xff, 0x86, 0xff, 0x90, 0xff, 0xa4, 0xff, 0xba, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x2e, 0x00,
-0x46, 0x00, 0x54, 0x00, 0x54, 0x00, 0x56, 0x00, 0x46, 0x00, 0x28, 0x00, 0x04, 0x00, 0xd8, 0xff,
-0xa4, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xe0, 0xff,
-0x0c, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x70, 0x00, 0x58, 0x00, 0x2e, 0x00,
-0xfe, 0xff, 0xca, 0xff, 0x9c, 0xff, 0x74, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x5c, 0xff, 0x88, 0xff,
-0xba, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x78, 0x00, 0x96, 0x00, 0x96, 0x00, 0x86, 0x00,
-0x5e, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x78, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x3e, 0xff,
-0x5e, 0xff, 0x86, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xac, 0x00,
-0xa6, 0x00, 0x88, 0x00, 0x56, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0xa2, 0xff, 0x68, 0xff, 0x44, 0xff,
-0x2c, 0xff, 0x3a, 0xff, 0x60, 0xff, 0x9e, 0xff, 0xe2, 0xff, 0x12, 0x00, 0x4e, 0x00, 0x82, 0x00,
-0xa6, 0x00, 0xc4, 0x00, 0xaa, 0x00, 0x8c, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xd6, 0xff, 0x7a, 0xff,
-0x58, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x48, 0xff, 0x6a, 0xff, 0xa6, 0xff, 0xe4, 0xff, 0x18, 0x00,
-0x50, 0x00, 0x92, 0x00, 0xb0, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x6e, 0x00, 0x2c, 0x00, 0xec, 0xff,
-0xbc, 0xff, 0x82, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x30, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xc2, 0xff,
-0xfe, 0xff, 0x2a, 0x00, 0x62, 0x00, 0x86, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0x88, 0x00, 0x58, 0x00,
-0x1e, 0x00, 0xe6, 0xff, 0xb0, 0xff, 0x82, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x68, 0xff,
-0x94, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x50, 0x00, 0x68, 0x00, 0x82, 0x00, 0x7a, 0x00,
-0x66, 0x00, 0x36, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x90, 0xff, 0x72, 0xff, 0x66, 0xff,
-0x70, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x44, 0x00, 0x54, 0x00,
-0x6a, 0x00, 0x52, 0x00, 0x48, 0x00, 0x28, 0x00, 0xfa, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xb0, 0xff,
-0xa0, 0xff, 0x92, 0xff, 0x96, 0xff, 0xa4, 0xff, 0xc4, 0xff, 0xe6, 0xff, 0xfe, 0xff, 0x1c, 0x00,
-0x34, 0x00, 0x38, 0x00, 0x32, 0x00, 0x34, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xe4, 0xff,
-0xce, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xe8, 0xff,
-0xf8, 0xff, 0x06, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x0e, 0x00,
-0xf6, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xdc, 0xff,
-0xda, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0x00, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x06, 0x00,
-0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xc6, 0xff,
-0xc8, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2a, 0x00,
-0x26, 0x00, 0x28, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xc8, 0xff, 0xaa, 0xff, 0xa6, 0xff,
-0x94, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x02, 0x00, 0x2c, 0x00, 0x48, 0x00,
-0x50, 0x00, 0x5a, 0x00, 0x50, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x02, 0x00, 0xcc, 0xff, 0x9e, 0xff,
-0x8c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x84, 0xff, 0x8e, 0xff, 0xb2, 0xff, 0xde, 0xff, 0x08, 0x00,
-0x3c, 0x00, 0x4e, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x4e, 0x00, 0x38, 0x00, 0x02, 0x00, 0xd8, 0xff,
-0xb2, 0xff, 0x88, 0xff, 0x66, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x6e, 0xff, 0x96, 0xff, 0xc8, 0xff,
-0xfc, 0xff, 0x28, 0x00, 0x56, 0x00, 0x7c, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x6c, 0x00, 0x38, 0x00,
-0x0a, 0x00, 0xd8, 0xff, 0xa0, 0xff, 0x76, 0xff, 0x46, 0xff, 0x3a, 0xff, 0x46, 0xff, 0x64, 0xff,
-0xb2, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x3e, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0x8e, 0x00,
-0x6a, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x8e, 0xff, 0x52, 0xff, 0x36, 0xff, 0x26, 0xff,
-0x3e, 0xff, 0x62, 0xff, 0xae, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x5c, 0x00, 0x94, 0x00, 0xb2, 0x00,
-0xaa, 0x00, 0x9a, 0x00, 0x74, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x8a, 0xff, 0x5c, 0xff,
-0x32, 0xff, 0x2e, 0xff, 0x4e, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x3a, 0x00, 0x78, 0x00,
-0xa2, 0x00, 0xc0, 0x00, 0xb4, 0x00, 0x9a, 0x00, 0x70, 0x00, 0x26, 0x00, 0xe6, 0xff, 0xbc, 0xff,
-0x7e, 0xff, 0x44, 0xff, 0x30, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xcc, 0xff, 0x0a, 0x00,
-0x2c, 0x00, 0x6c, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x4a, 0x00, 0x12, 0x00,
-0xd6, 0xff, 0x9e, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x5c, 0xff, 0x70, 0xff, 0xa4, 0xff,
-0xd8, 0xff, 0x0e, 0x00, 0x3a, 0x00, 0x64, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x66, 0x00,
-0x38, 0x00, 0x02, 0x00, 0xce, 0xff, 0xa6, 0xff, 0x7e, 0xff, 0x66, 0xff, 0x62, 0xff, 0x6e, 0xff,
-0x84, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x38, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x6a, 0x00,
-0x5c, 0x00, 0x42, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xc4, 0xff, 0x98, 0xff, 0x86, 0xff, 0x70, 0xff,
-0x70, 0xff, 0x86, 0xff, 0x9c, 0xff, 0xbc, 0xff, 0xde, 0xff, 0x02, 0x00, 0x2c, 0x00, 0x32, 0x00,
-0x3a, 0x00, 0x48, 0x00, 0x32, 0x00, 0x20, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xd6, 0xff, 0xb0, 0xff,
-0xb0, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0xaa, 0xff, 0xbe, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff,
-0x18, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x28, 0x00, 0x20, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0xec, 0xff,
-0xea, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd8, 0xff,
-0xdc, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00,
-0x06, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xe6, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00, 0x20, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x2a, 0x00,
-0x16, 0x00, 0x04, 0x00, 0xf0, 0xff, 0xd8, 0xff, 0xc6, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xbc, 0xff,
-0xba, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xfa, 0xff, 0x16, 0x00, 0x30, 0x00, 0x40, 0x00, 0x4a, 0x00,
-0x42, 0x00, 0x36, 0x00, 0x2c, 0x00, 0x0a, 0x00, 0xe8, 0xff, 0xc0, 0xff, 0xa6, 0xff, 0x90, 0xff,
-0x86, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x54, 0x00,
-0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x54, 0x00, 0x36, 0x00, 0x10, 0x00, 0xd6, 0xff, 0xb4, 0xff,
-0x88, 0xff, 0x68, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x84, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x0c, 0x00,
-0x34, 0x00, 0x66, 0x00, 0x86, 0x00, 0x8c, 0x00, 0x7c, 0x00, 0x5e, 0x00, 0x28, 0x00, 0xfe, 0xff,
-0xc4, 0xff, 0x8c, 0xff, 0x54, 0xff, 0x38, 0xff, 0x3e, 0xff, 0x48, 0xff, 0x6a, 0xff, 0x9a, 0xff,
-0xd6, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x82, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x82, 0x00, 0x5c, 0x00,
-0x1e, 0x00, 0xf0, 0xff, 0xb4, 0xff, 0x76, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x46, 0xff,
-0x78, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x2c, 0x00, 0x66, 0x00, 0x9e, 0x00, 0xb8, 0x00, 0xb2, 0x00,
-0x90, 0x00, 0x5e, 0x00, 0x12, 0x00, 0xe6, 0xff, 0xa0, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x22, 0xff,
-0x26, 0xff, 0x48, 0xff, 0x80, 0xff, 0xce, 0xff, 0x02, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xa8, 0x00,
-0xbc, 0x00, 0xa8, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc8, 0xff, 0x8e, 0xff, 0x5a, 0xff,
-0x2a, 0xff, 0x22, 0xff, 0x42, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xe2, 0xff, 0x22, 0x00, 0x54, 0x00,
-0x8e, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x38, 0x00, 0x02, 0x00, 0xc0, 0xff,
-0x88, 0xff, 0x56, 0xff, 0x44, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xfc, 0xff,
-0x30, 0x00, 0x6c, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x60, 0x00, 0x2e, 0x00,
-0xf8, 0xff, 0xba, 0xff, 0x82, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x5a, 0xff, 0x66, 0xff, 0x90, 0xff,
-0xcc, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x62, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x84, 0x00, 0x70, 0x00,
-0x44, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x96, 0xff, 0x80, 0xff, 0x70, 0xff, 0x7a, 0xff,
-0x86, 0xff, 0xa4, 0xff, 0xde, 0xff, 0x06, 0x00, 0x2c, 0x00, 0x48, 0x00, 0x50, 0x00, 0x56, 0x00,
-0x52, 0x00, 0x4a, 0x00, 0x32, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xc4, 0xff, 0xa4, 0xff, 0x9c, 0xff,
-0x94, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xde, 0xff, 0x00, 0x00, 0x10, 0x00, 0x26, 0x00,
-0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xc2, 0xff,
-0xb6, 0xff, 0xbe, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0xf6, 0xff,
-0xec, 0xff, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0xf4, 0xff,
-0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff,
-0xde, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xea, 0xff,
-0xfa, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xfa, 0xff,
-0xf0, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xc2, 0xff, 0xc6, 0xff,
-0xe0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x1e, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x3a, 0x00,
-0x2e, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xca, 0xff, 0xa4, 0xff, 0x88, 0xff, 0x90, 0xff,
-0xa6, 0xff, 0xb6, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x18, 0x00, 0x48, 0x00, 0x60, 0x00, 0x62, 0x00,
-0x6e, 0x00, 0x58, 0x00, 0x42, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0xa2, 0xff, 0x78, 0xff,
-0x64, 0xff, 0x72, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xf6, 0xff, 0x24, 0x00, 0x56, 0x00,
-0x72, 0x00, 0x84, 0x00, 0x80, 0x00, 0x6c, 0x00, 0x48, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xc0, 0xff,
-0x92, 0xff, 0x72, 0xff, 0x5a, 0xff, 0x58, 0xff, 0x80, 0xff, 0x9a, 0xff, 0xd2, 0xff, 0x08, 0x00,
-0x36, 0x00, 0x68, 0x00, 0x88, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x44, 0x00, 0x18, 0x00,
-0xe0, 0xff, 0xae, 0xff, 0x70, 0xff, 0x50, 0xff, 0x3a, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0x90, 0xff,
-0xd2, 0xff, 0xfe, 0xff, 0x3e, 0x00, 0x6e, 0x00, 0x94, 0x00, 0xac, 0x00, 0x94, 0x00, 0x80, 0x00,
-0x3e, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0x92, 0xff, 0x54, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x44, 0xff,
-0x5c, 0xff, 0x9e, 0xff, 0xda, 0xff, 0x08, 0x00, 0x4c, 0x00, 0x86, 0x00, 0xaa, 0x00, 0xb4, 0x00,
-0xa4, 0x00, 0x7c, 0x00, 0x38, 0x00, 0xfc, 0xff, 0xce, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x2a, 0xff,
-0x26, 0xff, 0x44, 0xff, 0x66, 0xff, 0xaa, 0xff, 0xee, 0xff, 0x16, 0x00, 0x52, 0x00, 0x8a, 0x00,
-0xb2, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x64, 0x00, 0x1c, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x7c, 0xff,
-0x46, 0xff, 0x28, 0xff, 0x2c, 0xff, 0x4e, 0xff, 0x7c, 0xff, 0xc2, 0xff, 0xfc, 0xff, 0x24, 0x00,
-0x56, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x1a, 0x00, 0xea, 0xff,
-0xb2, 0xff, 0x86, 0xff, 0x60, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x6a, 0xff, 0x92, 0xff, 0xd0, 0xff,
-0x04, 0x00, 0x34, 0x00, 0x60, 0x00, 0x86, 0x00, 0x92, 0x00, 0x84, 0x00, 0x72, 0x00, 0x40, 0x00,
-0x14, 0x00, 0xe8, 0xff, 0xaa, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x66, 0xff, 0x64, 0xff, 0x80, 0xff,
-0xa8, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x6e, 0x00, 0x62, 0x00,
-0x4e, 0x00, 0x24, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x82, 0xff,
-0x90, 0xff, 0x9a, 0xff, 0xc2, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x28, 0x00, 0x34, 0x00, 0x44, 0x00,
-0x50, 0x00, 0x4a, 0x00, 0x3c, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xcc, 0xff, 0xc0, 0xff,
-0xb6, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfa, 0xff, 0x0e, 0x00,
-0x20, 0x00, 0x22, 0x00, 0x24, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0xff,
-0xe0, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xda, 0xff,
-0xe6, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00,
-0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xf0, 0xff,
-0xd4, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xe4, 0xff,
-0xf8, 0xff, 0x04, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1c, 0x00,
-0x06, 0x00, 0xf4, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xb2, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xa6, 0xff,
-0xb2, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x48, 0x00, 0x48, 0x00, 0x46, 0x00,
-0x38, 0x00, 0x30, 0x00, 0x10, 0x00, 0x04, 0x00, 0xde, 0xff, 0xac, 0xff, 0x94, 0xff, 0x86, 0xff,
-0x88, 0xff, 0x90, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x10, 0x00, 0x56, 0x00, 0x68, 0x00,
-0x6e, 0x00, 0x72, 0x00, 0x56, 0x00, 0x44, 0x00, 0x24, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8e, 0xff,
-0x78, 0xff, 0x64, 0xff, 0x62, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x2c, 0x00,
-0x66, 0x00, 0x82, 0x00, 0x92, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x34, 0x00, 0x0e, 0x00, 0xe0, 0xff,
-0x92, 0xff, 0x76, 0xff, 0x48, 0xff, 0x40, 0xff, 0x46, 0xff, 0x68, 0xff, 0x9c, 0xff, 0xd2, 0xff,
-0x14, 0x00, 0x46, 0x00, 0x84, 0x00, 0xa2, 0x00, 0xac, 0x00, 0x96, 0x00, 0x76, 0x00, 0x32, 0x00,
-0xfe, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x5a, 0xff, 0x34, 0xff, 0x32, 0xff, 0x3a, 0xff, 0x66, 0xff,
-0xb2, 0xff, 0xec, 0xff, 0x26, 0x00, 0x6a, 0x00, 0xa2, 0x00, 0xb4, 0x00, 0xae, 0x00, 0x9a, 0x00,
-0x6e, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x68, 0xff, 0x3e, 0xff, 0x20, 0xff, 0x20, 0xff,
-0x3a, 0xff, 0x6e, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0x2a, 0x00, 0x70, 0x00, 0xa0, 0x00, 0xba, 0x00,
-0xa8, 0x00, 0x8c, 0x00, 0x50, 0x00, 0x0a, 0x00, 0xde, 0xff, 0x9c, 0xff, 0x62, 0xff, 0x34, 0xff,
-0x26, 0xff, 0x26, 0xff, 0x50, 0xff, 0x92, 0xff, 0xca, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x7a, 0x00,
-0xa8, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x78, 0x00, 0x40, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x9e, 0xff,
-0x64, 0xff, 0x3e, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0xe0, 0xff, 0x1c, 0x00,
-0x4c, 0x00, 0x78, 0x00, 0x92, 0x00, 0x92, 0x00, 0x82, 0x00, 0x58, 0x00, 0x2c, 0x00, 0xf8, 0xff,
-0xc2, 0xff, 0x92, 0xff, 0x68, 0xff, 0x44, 0xff, 0x42, 0xff, 0x5e, 0xff, 0x74, 0xff, 0xb4, 0xff,
-0xea, 0xff, 0x20, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x56, 0x00,
-0x22, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x72, 0xff, 0x82, 0xff,
-0x96, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x42, 0x00, 0x4c, 0x00, 0x5c, 0x00, 0x58, 0x00,
-0x58, 0x00, 0x38, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xcc, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x8a, 0xff,
-0x90, 0xff, 0xa0, 0xff, 0xc0, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x26, 0x00, 0x28, 0x00,
-0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x18, 0x00, 0x04, 0x00, 0xea, 0xff, 0xdc, 0xff, 0xce, 0xff,
-0xbe, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
-0x06, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x12, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xfa, 0xff,
-0xf6, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xde, 0xff,
-0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0x04, 0x00,
-0x12, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x16, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xea, 0xff,
-0xde, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xd8, 0xff,
-0xf4, 0xff, 0x12, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x36, 0x00,
-0x1a, 0x00, 0xf6, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x90, 0xff, 0x98, 0xff,
-0xae, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0x2e, 0x00, 0x3c, 0x00, 0x56, 0x00, 0x60, 0x00,
-0x5a, 0x00, 0x50, 0x00, 0x28, 0x00, 0xf8, 0xff, 0xca, 0xff, 0xa8, 0xff, 0x8c, 0xff, 0x70, 0xff,
-0x6e, 0xff, 0x80, 0xff, 0x90, 0xff, 0xac, 0xff, 0xdc, 0xff, 0x0e, 0x00, 0x44, 0x00, 0x68, 0x00,
-0x8c, 0x00, 0x8c, 0x00, 0x76, 0x00, 0x62, 0x00, 0x34, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0x94, 0xff,
-0x78, 0xff, 0x56, 0xff, 0x54, 0xff, 0x5e, 0xff, 0x88, 0xff, 0xba, 0xff, 0xe8, 0xff, 0x32, 0x00,
-0x5e, 0x00, 0x8c, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x22, 0x00, 0xf2, 0xff,
-0xb6, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd2, 0xff,
-0xf8, 0xff, 0x36, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x86, 0x00, 0x46, 0x00,
-0x12, 0x00, 0xd4, 0xff, 0x96, 0xff, 0x62, 0xff, 0x38, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x5e, 0xff,
-0x9c, 0xff, 0xe0, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xc6, 0x00, 0xa6, 0x00,
-0x7e, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xcc, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x30, 0xff, 0x26, 0xff,
-0x40, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xea, 0xff, 0x18, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xa8, 0x00,
-0xb2, 0x00, 0x98, 0x00, 0x64, 0x00, 0x20, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x4a, 0xff,
-0x2e, 0xff, 0x2e, 0xff, 0x46, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xf0, 0xff, 0x28, 0x00, 0x58, 0x00,
-0x8a, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0x88, 0x00, 0x5e, 0x00, 0x20, 0x00, 0xec, 0xff, 0xb0, 0xff,
-0x82, 0xff, 0x62, 0xff, 0x42, 0xff, 0x4e, 0xff, 0x5e, 0xff, 0x86, 0xff, 0xc2, 0xff, 0xfc, 0xff,
-0x32, 0x00, 0x62, 0x00, 0x88, 0x00, 0x90, 0x00, 0x84, 0x00, 0x6a, 0x00, 0x4c, 0x00, 0x0c, 0x00,
-0xe6, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x72, 0xff, 0x62, 0xff, 0x68, 0xff, 0x7a, 0xff, 0x9c, 0xff,
-0xd4, 0xff, 0x0a, 0x00, 0x34, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x66, 0x00, 0x52, 0x00,
-0x30, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xb8, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x92, 0xff, 0x9e, 0xff,
-0xa2, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x28, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x4a, 0x00,
-0x44, 0x00, 0x32, 0x00, 0x20, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xce, 0xff,
-0xbc, 0xff, 0xb2, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x06, 0x00, 0x1c, 0x00,
-0x14, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff,
-0xea, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xec, 0xff,
-0xf2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x0c, 0x00,
-0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0x02, 0x00, 0xec, 0xff, 0xda, 0xff,
-0xdc, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf0, 0xff,
-0xfa, 0xff, 0x06, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x04, 0x00,
-0xf2, 0xff, 0xd2, 0xff, 0xba, 0xff, 0xaa, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xb2, 0xff,
-0xd0, 0xff, 0xf0, 0xff, 0x06, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x48, 0x00, 0x3c, 0x00, 0x30, 0x00,
-0x28, 0x00, 0x10, 0x00, 0xe2, 0xff, 0xcc, 0xff, 0xaa, 0xff, 0x82, 0xff, 0x74, 0xff, 0x82, 0xff,
-0x98, 0xff, 0xa4, 0xff, 0xc8, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x42, 0x00, 0x68, 0x00, 0x74, 0x00,
-0x64, 0x00, 0x50, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xe8, 0xff, 0xba, 0xff, 0x8e, 0xff, 0x6c, 0xff,
-0x56, 0xff, 0x5e, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x60, 0x00,
-0x80, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x70, 0x00, 0x40, 0x00, 0x18, 0x00, 0xec, 0xff, 0xb2, 0xff,
-0x7e, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x56, 0xff, 0x76, 0xff, 0xaa, 0xff, 0xd8, 0xff, 0x12, 0x00,
-0x46, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa4, 0x00, 0x94, 0x00, 0x7c, 0x00, 0x44, 0x00, 0x0e, 0x00,
-0xea, 0xff, 0x9e, 0xff, 0x60, 0xff, 0x52, 0xff, 0x3c, 0xff, 0x4e, 0xff, 0x72, 0xff, 0xaa, 0xff,
-0xea, 0xff, 0x14, 0x00, 0x5a, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0x9a, 0x00, 0x7a, 0x00,
-0x38, 0x00, 0x00, 0x00, 0xce, 0xff, 0x7e, 0xff, 0x52, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x46, 0xff,
-0x78, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x6c, 0x00, 0x98, 0x00, 0xb6, 0x00, 0xb4, 0x00,
-0x90, 0x00, 0x70, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xbe, 0xff, 0x70, 0xff, 0x40, 0xff, 0x36, 0xff,
-0x2c, 0xff, 0x4e, 0xff, 0x84, 0xff, 0xbe, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x70, 0x00, 0xa6, 0x00,
-0xa8, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x58, 0x00, 0x12, 0x00, 0xe0, 0xff, 0xa4, 0xff, 0x6c, 0xff,
-0x3e, 0xff, 0x2c, 0xff, 0x3c, 0xff, 0x68, 0xff, 0x92, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x3c, 0x00,
-0x6c, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x78, 0x00, 0x64, 0x00, 0x2c, 0x00, 0xfc, 0xff, 0xce, 0xff,
-0x92, 0xff, 0x64, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x6c, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xe8, 0xff,
-0x06, 0x00, 0x38, 0x00, 0x5c, 0x00, 0x68, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x1c, 0x00,
-0xf2, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x88, 0xff, 0xa2, 0xff,
-0xc6, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x26, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x40, 0x00,
-0x30, 0x00, 0x04, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xa6, 0xff,
-0xac, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x1e, 0x00, 0x1e, 0x00, 0x22, 0x00,
-0x2e, 0x00, 0x26, 0x00, 0x14, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe0, 0xff, 0xda, 0xff,
-0xda, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0x04, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00,
-0x02, 0x00, 0xf6, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xce, 0xff,
-0xda, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x10, 0x00,
-0x1e, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf4, 0xff,
-0xd8, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xea, 0xff,
-0x02, 0x00, 0x12, 0x00, 0x28, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x32, 0x00, 0x20, 0x00,
-0x04, 0x00, 0xee, 0xff, 0xc8, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x84, 0xff, 0x8c, 0xff, 0x9a, 0xff,
-0xa4, 0xff, 0xcc, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x54, 0x00,
-0x40, 0x00, 0x28, 0x00, 0x02, 0x00, 0xde, 0xff, 0xa8, 0xff, 0x90, 0xff, 0x6a, 0xff, 0x60, 0xff,
-0x6a, 0xff, 0x84, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x70, 0x00,
-0x82, 0x00, 0x74, 0x00, 0x58, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x90, 0xff, 0x6a, 0xff,
-0x52, 0xff, 0x48, 0xff, 0x54, 0xff, 0x84, 0xff, 0xac, 0xff, 0xda, 0xff, 0x14, 0x00, 0x4c, 0x00,
-0x7c, 0x00, 0x94, 0x00, 0x90, 0x00, 0x86, 0x00, 0x56, 0x00, 0x1e, 0x00, 0xf2, 0xff, 0xb2, 0xff,
-0x7e, 0xff, 0x46, 0xff, 0x34, 0xff, 0x40, 0xff, 0x54, 0xff, 0x84, 0xff, 0xc0, 0xff, 0xf2, 0xff,
-0x2a, 0x00, 0x66, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xb6, 0x00, 0x92, 0x00, 0x68, 0x00, 0x1a, 0x00,
-0xea, 0xff, 0xb8, 0xff, 0x6c, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x38, 0xff, 0x62, 0xff, 0x8e, 0xff,
-0xd8, 0xff, 0x0a, 0x00, 0x4a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xd2, 0x00, 0xb8, 0x00, 0x90, 0x00,
-0x58, 0x00, 0x12, 0x00, 0xec, 0xff, 0xa2, 0xff, 0x5c, 0xff, 0x34, 0xff, 0x26, 0xff, 0x2e, 0xff,
-0x60, 0xff, 0x9c, 0xff, 0xe0, 0xff, 0x0e, 0x00, 0x52, 0x00, 0x8e, 0x00, 0xac, 0x00, 0xc2, 0x00,
-0xaa, 0x00, 0x88, 0x00, 0x42, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x8e, 0xff, 0x5c, 0xff, 0x3e, 0xff,
-0x34, 0xff, 0x4a, 0xff, 0x6c, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00,
-0xae, 0x00, 0xae, 0x00, 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x9a, 0xff,
-0x6a, 0xff, 0x46, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x8a, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x2a, 0x00,
-0x56, 0x00, 0x72, 0x00, 0x80, 0x00, 0x82, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x12, 0x00, 0xe0, 0xff,
-0xa8, 0xff, 0x7e, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x7c, 0xff, 0x9e, 0xff, 0xce, 0xff,
-0xf0, 0xff, 0x1e, 0x00, 0x50, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x56, 0x00, 0x48, 0x00, 0x28, 0x00,
-0x04, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x84, 0xff, 0x90, 0xff, 0xa2, 0xff,
-0xbe, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x38, 0x00, 0x32, 0x00,
-0x32, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xac, 0xff, 0xae, 0xff,
-0xb2, 0xff, 0xb6, 0xff, 0xc6, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x10, 0x00,
-0x14, 0x00, 0x1c, 0x00, 0x08, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xdc, 0xff,
-0xe0, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xf4, 0xff,
-0xf4, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x04, 0x00, 0xfe, 0xff, 0x10, 0x00, 0x0c, 0x00,
-0x0a, 0x00, 0x14, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xe0, 0xff,
-0xd6, 0xff, 0xce, 0xff, 0xc4, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff,
-0x08, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0xfe, 0xff,
-0xe6, 0xff, 0xd0, 0xff, 0xb4, 0xff, 0xa0, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xda, 0xff,
-0xee, 0xff, 0x00, 0x00, 0x24, 0x00, 0x42, 0x00, 0x56, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x40, 0x00,
-0x28, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x94, 0xff, 0x84, 0xff, 0x84, 0xff, 0x90, 0xff,
-0x9e, 0xff, 0xc4, 0xff, 0xf0, 0xff, 0x08, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x64, 0x00, 0x70, 0x00,
-0x58, 0x00, 0x44, 0x00, 0x22, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x8c, 0xff, 0x6a, 0xff, 0x5a, 0xff,
-0x56, 0xff, 0x66, 0xff, 0x90, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0x24, 0x00, 0x50, 0x00, 0x68, 0x00,
-0x80, 0x00, 0x80, 0x00, 0x72, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x80, 0xff,
-0x56, 0xff, 0x42, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x96, 0xff, 0xce, 0xff, 0x04, 0x00, 0x38, 0x00,
-0x66, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x94, 0x00, 0x80, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xce, 0xff,
-0x94, 0xff, 0x6c, 0xff, 0x3e, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x56, 0xff, 0x92, 0xff, 0xda, 0xff,
-0x10, 0x00, 0x3c, 0x00, 0x70, 0x00, 0x92, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x6c, 0x00, 0x34, 0x00,
-0xf6, 0xff, 0xca, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x30, 0xff, 0x20, 0xff, 0x3a, 0xff, 0x74, 0xff,
-0xa8, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x50, 0x00, 0x88, 0x00, 0xa4, 0x00, 0xb0, 0x00, 0xa8, 0x00,
-0x6a, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc4, 0xff, 0x86, 0xff, 0x58, 0xff, 0x3c, 0xff, 0x3a, 0xff,
-0x50, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x30, 0x00, 0x60, 0x00, 0x94, 0x00, 0xa4, 0x00,
-0xa4, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x24, 0x00, 0xf2, 0xff, 0xba, 0xff, 0x80, 0xff, 0x54, 0xff,
-0x34, 0xff, 0x3e, 0xff, 0x54, 0xff, 0x86, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x28, 0x00, 0x60, 0x00,
-0x8a, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x72, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xde, 0xff, 0xb0, 0xff,
-0x7c, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x7c, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x04, 0x00,
-0x3e, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x88, 0x00, 0x70, 0x00, 0x58, 0x00, 0x32, 0x00, 0x06, 0x00,
-0xde, 0xff, 0xb0, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x92, 0xff, 0xb8, 0xff,
-0xdc, 0xff, 0xfe, 0xff, 0x26, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x34, 0x00,
-0x0e, 0x00, 0xee, 0xff, 0xda, 0xff, 0xba, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa6, 0xff,
-0xba, 0xff, 0xce, 0xff, 0xee, 0xff, 0x04, 0x00, 0x16, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00,
-0x24, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xc8, 0xff, 0xd2, 0xff,
-0xd0, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfc, 0xff,
-0xf8, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff,
-0xf4, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff,
-0xe4, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x0c, 0x00,
-0x16, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x04, 0x00, 0x02, 0x00, 0xf2, 0xff,
-0xd4, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0x08, 0x00, 0x12, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x1a, 0x00, 0x10, 0x00,
-0xf8, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x90, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xb4, 0xff,
-0xcc, 0xff, 0xf6, 0xff, 0x18, 0x00, 0x40, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x46, 0x00,
-0x3e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x90, 0xff, 0x88, 0xff, 0x76, 0xff, 0x76, 0xff,
-0x9a, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x52, 0x00, 0x6e, 0x00, 0x76, 0x00,
-0x7c, 0x00, 0x62, 0x00, 0x3c, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x78, 0xff, 0x52, 0xff,
-0x44, 0xff, 0x56, 0xff, 0x74, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x72, 0x00,
-0x86, 0x00, 0x9a, 0x00, 0x80, 0x00, 0x70, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xcc, 0xff, 0x88, 0xff,
-0x56, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x1e, 0x00,
-0x5a, 0x00, 0x92, 0x00, 0xa2, 0x00, 0xac, 0x00, 0x90, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xf0, 0xff,
-0xc2, 0xff, 0x7a, 0xff, 0x40, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x4c, 0xff, 0x8a, 0xff, 0xca, 0xff,
-0xf8, 0xff, 0x2a, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xb6, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x52, 0x00,
-0x08, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x5c, 0xff, 0x42, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x56, 0xff,
-0x8c, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x9e, 0x00, 0xac, 0x00, 0x96, 0x00,
-0x7a, 0x00, 0x40, 0x00, 0x00, 0x00, 0xd8, 0xff, 0x9c, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x44, 0xff,
-0x5a, 0xff, 0x72, 0xff, 0xb2, 0xff, 0xea, 0xff, 0x1a, 0x00, 0x4a, 0x00, 0x7c, 0x00, 0x96, 0x00,
-0x9e, 0x00, 0x96, 0x00, 0x6a, 0x00, 0x32, 0x00, 0x00, 0x00, 0xca, 0xff, 0x9a, 0xff, 0x70, 0xff,
-0x54, 0xff, 0x56, 0xff, 0x62, 0xff, 0x88, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x46, 0x00,
-0x64, 0x00, 0x80, 0x00, 0x88, 0x00, 0x72, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xb0, 0xff,
-0x96, 0xff, 0x80, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x82, 0xff, 0xa6, 0xff, 0xd0, 0xff, 0xf6, 0xff,
-0x26, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x68, 0x00, 0x64, 0x00, 0x4e, 0x00, 0x30, 0x00, 0x08, 0x00,
-0xe4, 0xff, 0xb8, 0xff, 0xa0, 0xff, 0x92, 0xff, 0x86, 0xff, 0x8a, 0xff, 0xa2, 0xff, 0xc6, 0xff,
-0xe4, 0xff, 0xfe, 0xff, 0x16, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x46, 0x00, 0x36, 0x00,
-0x14, 0x00, 0xf2, 0xff, 0xe0, 0xff, 0xca, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xae, 0xff,
-0xbe, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x0e, 0x00, 0x16, 0x00,
-0x20, 0x00, 0x14, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xda, 0xff,
-0xec, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xf2, 0xff,
-0xea, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00,
-0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xd4, 0xff, 0xcc, 0xff,
-0xb4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x06, 0x00,
-0x18, 0x00, 0x26, 0x00, 0x30, 0x00, 0x26, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xe2, 0xff,
-0xc8, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xea, 0xff,
-0x02, 0x00, 0x24, 0x00, 0x44, 0x00, 0x50, 0x00, 0x60, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x26, 0x00,
-0x06, 0x00, 0xe2, 0xff, 0xb4, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0xa0, 0xff,
-0xbc, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x40, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x64, 0x00,
-0x48, 0x00, 0x30, 0x00, 0xfa, 0xff, 0xca, 0xff, 0x94, 0xff, 0x6e, 0xff, 0x64, 0xff, 0x5c, 0xff,
-0x74, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x20, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x9e, 0x00,
-0x9a, 0x00, 0x7e, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xac, 0xff, 0x72, 0xff, 0x5c, 0xff,
-0x44, 0xff, 0x42, 0xff, 0x60, 0xff, 0x92, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x38, 0x00, 0x80, 0x00,
-0x9c, 0x00, 0xb6, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x52, 0x00, 0x0a, 0x00, 0xd6, 0xff, 0xa0, 0xff,
-0x62, 0xff, 0x48, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x5a, 0xff, 0x82, 0xff, 0xda, 0xff, 0x04, 0x00,
-0x3e, 0x00, 0x82, 0x00, 0x9a, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0x74, 0x00, 0x42, 0x00, 0x10, 0x00,
-0xe0, 0xff, 0x92, 0xff, 0x62, 0xff, 0x40, 0xff, 0x30, 0xff, 0x38, 0xff, 0x5e, 0xff, 0xa2, 0xff,
-0xe0, 0xff, 0x0c, 0x00, 0x4a, 0x00, 0x82, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x98, 0x00, 0x7c, 0x00,
-0x32, 0x00, 0x02, 0x00, 0xd0, 0xff, 0x94, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x4c, 0xff,
-0x74, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x1e, 0x00, 0x5a, 0x00, 0x7e, 0x00, 0x9e, 0x00, 0x9c, 0x00,
-0x86, 0x00, 0x62, 0x00, 0x1c, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0x58, 0xff, 0x44, 0xff,
-0x4c, 0xff, 0x56, 0xff, 0x90, 0xff, 0xca, 0xff, 0x02, 0x00, 0x34, 0x00, 0x60, 0x00, 0x84, 0x00,
-0x90, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x4a, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xba, 0xff, 0x8e, 0xff,
-0x6e, 0xff, 0x64, 0xff, 0x6c, 0xff, 0x8a, 0xff, 0xa8, 0xff, 0xe8, 0xff, 0x14, 0x00, 0x2c, 0x00,
-0x52, 0x00, 0x58, 0x00, 0x70, 0x00, 0x66, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xfe, 0xff, 0xe6, 0xff,
-0xb0, 0xff, 0x9e, 0xff, 0x84, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xec, 0xff,
-0x0c, 0x00, 0x20, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x44, 0x00, 0x32, 0x00, 0x1a, 0x00,
-0xf0, 0xff, 0xe6, 0xff, 0xce, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xba, 0xff,
-0xd8, 0xff, 0xec, 0xff, 0x02, 0x00, 0x10, 0x00, 0x24, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x20, 0x00,
-0x16, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xc8, 0xff, 0xd0, 0xff,
-0xd8, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff,
-0xfe, 0xff, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xf2, 0xff,
-0xec, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd0, 0xff,
-0xd2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00,
-0x1e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0a, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xd0, 0xff,
-0xbe, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x08, 0x00,
-0x1a, 0x00, 0x28, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xf2, 0xff,
-0xe2, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xd4, 0xff,
-0xf4, 0xff, 0x10, 0x00, 0x36, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x3e, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0xa2, 0xff, 0x8c, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x8e, 0xff,
-0xa0, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x8c, 0x00, 0x7e, 0x00,
-0x70, 0x00, 0x52, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x64, 0xff, 0x54, 0xff,
-0x54, 0xff, 0x70, 0xff, 0x92, 0xff, 0xc8, 0xff, 0x06, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x8e, 0x00,
-0xa8, 0x00, 0xa0, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x10, 0x00, 0xd6, 0xff, 0x96, 0xff, 0x5e, 0xff,
-0x42, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x60, 0x00,
-0x90, 0x00, 0xa8, 0x00, 0xc4, 0x00, 0xa6, 0x00, 0x78, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xc4, 0xff,
-0x78, 0xff, 0x44, 0xff, 0x24, 0xff, 0x28, 0xff, 0x48, 0xff, 0x70, 0xff, 0xba, 0xff, 0xf8, 0xff,
-0x1e, 0x00, 0x60, 0x00, 0x9c, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x5e, 0x00, 0x1c, 0x00,
-0xe0, 0xff, 0xac, 0xff, 0x60, 0xff, 0x38, 0xff, 0x22, 0xff, 0x22, 0xff, 0x48, 0xff, 0x6e, 0xff,
-0xb6, 0xff, 0xf6, 0xff, 0x2e, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xac, 0x00, 0x88, 0x00,
-0x58, 0x00, 0x1c, 0x00, 0xd8, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x3a, 0xff,
-0x52, 0xff, 0x84, 0xff, 0xc4, 0xff, 0x0a, 0x00, 0x3a, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa6, 0x00,
-0xa4, 0x00, 0x76, 0x00, 0x48, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x8c, 0xff, 0x60, 0xff, 0x44, 0xff,
-0x34, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x94, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x7c, 0x00,
-0x8c, 0x00, 0x94, 0x00, 0x82, 0x00, 0x5c, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x9a, 0xff,
-0x84, 0xff, 0x64, 0xff, 0x62, 0xff, 0x6a, 0xff, 0x8c, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x12, 0x00,
-0x42, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x4a, 0x00, 0x24, 0x00, 0xfa, 0xff,
-0xd8, 0xff, 0xba, 0xff, 0xae, 0xff, 0xa2, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xd6, 0xff,
-0xf2, 0xff, 0x0c, 0x00, 0x28, 0x00, 0x34, 0x00, 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x1e, 0x00,
-0x0e, 0x00, 0xee, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xb6, 0xff, 0xbc, 0xff,
-0xc4, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x04, 0x00, 0x10, 0x00, 0x1a, 0x00,
-0x16, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff,
-0xda, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe8, 0xff,
-0xe2, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x14, 0x00,
-0x06, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xca, 0xff, 0xb8, 0xff, 0xae, 0xff,
-0xb4, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xe0, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x1e, 0x00,
-0x30, 0x00, 0x30, 0x00, 0x24, 0x00, 0x28, 0x00, 0x0e, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc0, 0xff,
-0xae, 0xff, 0x96, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe4, 0xff, 0x00, 0x00,
-0x1e, 0x00, 0x42, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x26, 0x00, 0xf6, 0xff,
-0xe4, 0xff, 0xae, 0xff, 0x8e, 0xff, 0x74, 0xff, 0x70, 0xff, 0x76, 0xff, 0x88, 0xff, 0xaa, 0xff,
-0xd2, 0xff, 0x04, 0x00, 0x34, 0x00, 0x62, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6a, 0x00, 0x58, 0x00,
-0x38, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0x9c, 0xff, 0x6a, 0xff, 0x5a, 0xff, 0x50, 0xff, 0x5c, 0xff,
-0x7c, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x1a, 0x00, 0x5e, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x9c, 0x00,
-0x90, 0x00, 0x6a, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xca, 0xff, 0x8e, 0xff, 0x5c, 0xff, 0x46, 0xff,
-0x3c, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xba, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x64, 0x00, 0x9e, 0x00,
-0xaa, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x5a, 0x00, 0x1c, 0x00, 0xe6, 0xff, 0xb8, 0xff, 0x76, 0xff,
-0x48, 0xff, 0x22, 0xff, 0x38, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x40, 0x00,
-0x7e, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x52, 0x00, 0x0c, 0x00, 0xd8, 0xff,
-0xa6, 0xff, 0x6c, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x60, 0xff, 0x9a, 0xff, 0xe2, 0xff,
-0x0e, 0x00, 0x4c, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x42, 0x00,
-0x00, 0x00, 0xc0, 0xff, 0x92, 0xff, 0x5c, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x3e, 0xff, 0x62, 0xff,
-0xa2, 0xff, 0xe0, 0xff, 0x12, 0x00, 0x44, 0x00, 0x78, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x82, 0x00,
-0x64, 0x00, 0x2e, 0x00, 0xea, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x5a, 0xff, 0x38, 0xff, 0x3a, 0xff,
-0x56, 0xff, 0x7e, 0xff, 0xb6, 0xff, 0xf4, 0xff, 0x28, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x86, 0x00,
-0x84, 0x00, 0x70, 0x00, 0x4a, 0x00, 0x14, 0x00, 0xee, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x62, 0xff,
-0x56, 0xff, 0x5a, 0xff, 0x7e, 0xff, 0x9a, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x50, 0x00,
-0x5e, 0x00, 0x70, 0x00, 0x66, 0x00, 0x52, 0x00, 0x32, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xaa, 0xff,
-0x8c, 0xff, 0x7e, 0xff, 0x76, 0xff, 0x80, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xe2, 0xff, 0x00, 0x00,
-0x14, 0x00, 0x38, 0x00, 0x50, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x42, 0x00, 0x22, 0x00, 0x06, 0x00,
-0xea, 0xff, 0xce, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xda, 0xff,
-0xf0, 0xff, 0x00, 0x00, 0x10, 0x00, 0x26, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x22, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xd6, 0xff,
-0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00,
-0x10, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xf8, 0xff,
-0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xee, 0xff, 0xea, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff,
-0xde, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00,
-0x26, 0x00, 0x1a, 0x00, 0x14, 0x00, 0x08, 0x00, 0xf8, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xb4, 0xff,
-0xaa, 0xff, 0xb0, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x18, 0x00,
-0x30, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xd6, 0xff,
-0xb2, 0xff, 0x94, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xc4, 0xff, 0xf0, 0xff,
-0x06, 0x00, 0x34, 0x00, 0x54, 0x00, 0x54, 0x00, 0x66, 0x00, 0x52, 0x00, 0x3a, 0x00, 0x1a, 0x00,
-0xe6, 0xff, 0xc8, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x68, 0xff, 0x7c, 0xff, 0x9c, 0xff,
-0xc0, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x66, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x6e, 0x00,
-0x46, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xa8, 0xff, 0x7e, 0xff, 0x5a, 0xff, 0x42, 0xff, 0x3c, 0xff,
-0x62, 0xff, 0x90, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x32, 0x00, 0x66, 0x00, 0x8c, 0x00, 0xa2, 0x00,
-0xa2, 0x00, 0x8c, 0x00, 0x44, 0x00, 0x12, 0x00, 0xd6, 0xff, 0xa8, 0xff, 0x70, 0xff, 0x48, 0xff,
-0x40, 0xff, 0x3a, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xda, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x82, 0x00,
-0xac, 0x00, 0xba, 0x00, 0xb0, 0x00, 0x8e, 0x00, 0x40, 0x00, 0x08, 0x00, 0xd2, 0xff, 0x8e, 0xff,
-0x64, 0xff, 0x34, 0xff, 0x22, 0xff, 0x36, 0xff, 0x5c, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x1c, 0x00,
-0x5a, 0x00, 0x8c, 0x00, 0xb8, 0x00, 0xc8, 0x00, 0xb0, 0x00, 0x78, 0x00, 0x44, 0x00, 0xf6, 0xff,
-0xcc, 0xff, 0x82, 0xff, 0x46, 0xff, 0x32, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x6c, 0xff, 0xb6, 0xff,
-0xec, 0xff, 0x2a, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xbe, 0x00, 0xb8, 0x00, 0xa0, 0x00, 0x74, 0x00,
-0x2a, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x7c, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x42, 0xff, 0x50, 0xff,
-0x78, 0xff, 0xbe, 0xff, 0xf8, 0xff, 0x2a, 0x00, 0x68, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa0, 0x00,
-0x78, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd8, 0xff, 0xa4, 0xff, 0x6c, 0xff, 0x48, 0xff, 0x3c, 0xff,
-0x4a, 0xff, 0x6c, 0xff, 0x92, 0xff, 0xbe, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x6a, 0x00, 0x80, 0x00,
-0x88, 0x00, 0x80, 0x00, 0x60, 0x00, 0x36, 0x00, 0x02, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x84, 0xff,
-0x6c, 0xff, 0x60, 0xff, 0x76, 0xff, 0x8e, 0xff, 0xb8, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x42, 0x00,
-0x5a, 0x00, 0x68, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xc6, 0xff,
-0xac, 0xff, 0x98, 0xff, 0x94, 0xff, 0x94, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xee, 0xff,
-0x02, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x04, 0x00,
-0xf2, 0xff, 0xd8, 0xff, 0xc6, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xca, 0xff,
-0xe2, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x10, 0x00, 0x14, 0x00, 0x12, 0x00, 0x18, 0x00, 0x10, 0x00,
-0x12, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe6, 0xff,
-0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe8, 0xff,
-0xea, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00,
-0x06, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xba, 0xff,
-0xbc, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x24, 0x00, 0x36, 0x00,
-0x40, 0x00, 0x34, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xda, 0xff, 0xae, 0xff,
-0x9e, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xac, 0xff, 0xb4, 0xff, 0xdc, 0xff, 0xfc, 0xff, 0x12, 0x00,
-0x3a, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x28, 0x00, 0x08, 0x00, 0xec, 0xff,
-0xba, 0xff, 0x92, 0xff, 0x82, 0xff, 0x72, 0xff, 0x6a, 0xff, 0x84, 0xff, 0xa0, 0xff, 0xcc, 0xff,
-0xfc, 0xff, 0x1c, 0x00, 0x48, 0x00, 0x5e, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x54, 0x00, 0x36, 0x00,
-0x0a, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x66, 0xff, 0x5a, 0xff, 0x56, 0xff, 0x7e, 0xff,
-0xa2, 0xff, 0xd4, 0xff, 0x18, 0x00, 0x3c, 0x00, 0x6a, 0x00, 0x7e, 0x00, 0x8e, 0x00, 0x8a, 0x00,
-0x74, 0x00, 0x42, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x42, 0xff, 0x3e, 0xff,
-0x4c, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x50, 0x00, 0x84, 0x00, 0x9a, 0x00,
-0xa6, 0x00, 0x9e, 0x00, 0x62, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x4a, 0xff,
-0x2c, 0xff, 0x38, 0xff, 0x54, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x7c, 0x00,
-0xa2, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb4, 0xff,
-0x74, 0xff, 0x44, 0xff, 0x30, 0xff, 0x44, 0xff, 0x56, 0xff, 0x92, 0xff, 0xda, 0xff, 0x0a, 0x00,
-0x40, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0x8e, 0x00, 0x48, 0x00, 0x0c, 0x00,
-0xd8, 0xff, 0x98, 0xff, 0x62, 0xff, 0x3a, 0xff, 0x2c, 0xff, 0x42, 0xff, 0x62, 0xff, 0xa0, 0xff,
-0xea, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7a, 0x00,
-0x3e, 0x00, 0x02, 0x00, 0xc6, 0xff, 0x8c, 0xff, 0x66, 0xff, 0x52, 0xff, 0x44, 0xff, 0x5c, 0xff,
-0x7c, 0xff, 0xb8, 0xff, 0xec, 0xff, 0x34, 0x00, 0x54, 0x00, 0x70, 0x00, 0x90, 0x00, 0x96, 0x00,
-0x82, 0x00, 0x56, 0x00, 0x28, 0x00, 0xea, 0xff, 0xbe, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x68, 0xff,
-0x54, 0xff, 0x7a, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x36, 0x00, 0x5c, 0x00,
-0x6a, 0x00, 0x6a, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xe6, 0xff, 0xc2, 0xff, 0x9e, 0xff,
-0x94, 0xff, 0x88, 0xff, 0x80, 0xff, 0x8a, 0xff, 0xac, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x16, 0x00,
-0x2c, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x46, 0x00, 0x40, 0x00, 0x26, 0x00, 0x04, 0x00, 0xf2, 0xff,
-0xd4, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xd6, 0xff,
-0xf8, 0xff, 0x0c, 0x00, 0x14, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x08, 0x00,
-0x00, 0x00, 0xe8, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xc8, 0xff, 0xc8, 0xff,
-0xd0, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x06, 0x00,
-0x16, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf4, 0xff,
-0xf8, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe8, 0xff,
-0xe2, 0xff, 0xe2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x10, 0x00, 0x22, 0x00, 0x26, 0x00,
-0x14, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xd0, 0xff, 0xc4, 0xff, 0xb8, 0xff,
-0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x34, 0x00,
-0x40, 0x00, 0x52, 0x00, 0x42, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xda, 0xff, 0xbc, 0xff,
-0xa0, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x0e, 0x00,
-0x3a, 0x00, 0x5c, 0x00, 0x68, 0x00, 0x78, 0x00, 0x60, 0x00, 0x40, 0x00, 0x1e, 0x00, 0xf8, 0xff,
-0xd8, 0xff, 0x96, 0xff, 0x76, 0xff, 0x56, 0xff, 0x56, 0xff, 0x68, 0xff, 0x86, 0xff, 0xb0, 0xff,
-0xf0, 0xff, 0x18, 0x00, 0x4a, 0x00, 0x76, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x76, 0x00, 0x4c, 0x00,
-0x1c, 0x00, 0xf0, 0xff, 0xaa, 0xff, 0x80, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x42, 0xff, 0x5a, 0xff,
-0x84, 0xff, 0xbc, 0xff, 0xee, 0xff, 0x26, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x9c, 0x00,
-0x7a, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x70, 0xff, 0x42, 0xff, 0x24, 0xff,
-0x30, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xd0, 0xff, 0xfc, 0xff, 0x36, 0x00, 0x80, 0x00, 0x9c, 0x00,
-0xb6, 0x00, 0xa8, 0x00, 0x80, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xd6, 0xff, 0x9c, 0xff, 0x58, 0xff,
-0x32, 0xff, 0x22, 0xff, 0x2a, 0xff, 0x4e, 0xff, 0x90, 0xff, 0xd8, 0xff, 0x18, 0x00, 0x54, 0x00,
-0x82, 0x00, 0xb4, 0x00, 0xb8, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x44, 0x00, 0x00, 0x00, 0xda, 0xff,
-0x92, 0xff, 0x58, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x6c, 0xff, 0xae, 0xff, 0xe8, 0xff,
-0x1a, 0x00, 0x64, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0xae, 0x00, 0x98, 0x00, 0x6a, 0x00, 0x3a, 0x00,
-0x02, 0x00, 0xc2, 0xff, 0x86, 0xff, 0x4c, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x4e, 0xff, 0x88, 0xff,
-0xbc, 0xff, 0xf0, 0xff, 0x26, 0x00, 0x60, 0x00, 0x88, 0x00, 0x94, 0x00, 0x9a, 0x00, 0x82, 0x00,
-0x56, 0x00, 0x1c, 0x00, 0xee, 0xff, 0xba, 0xff, 0x88, 0xff, 0x64, 0xff, 0x52, 0xff, 0x52, 0xff,
-0x76, 0xff, 0x98, 0xff, 0xda, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x62, 0x00, 0x70, 0x00, 0x80, 0x00,
-0x78, 0x00, 0x64, 0x00, 0x46, 0x00, 0x0e, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x8e, 0xff, 0x72, 0xff,
-0x72, 0xff, 0x7c, 0xff, 0x86, 0xff, 0xae, 0xff, 0xe4, 0xff, 0x0c, 0x00, 0x24, 0x00, 0x4a, 0x00,
-0x58, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x46, 0x00, 0x28, 0x00, 0x04, 0x00, 0xd8, 0xff, 0xb2, 0xff,
-0xa0, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0x08, 0x00,
-0x16, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x28, 0x00, 0x12, 0x00, 0xf8, 0xff,
-0xe2, 0xff, 0xc6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xde, 0xff,
-0xec, 0xff, 0xf6, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x10, 0x00,
-0x00, 0x00, 0xf6, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf4, 0xff,
-0xec, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe2, 0xff,
-0xf2, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x18, 0x00, 0x12, 0x00, 0x12, 0x00,
-0x18, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xbe, 0xff, 0xcc, 0xff,
-0xce, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xee, 0xff, 0x06, 0x00, 0x10, 0x00, 0x32, 0x00, 0x3a, 0x00,
-0x3e, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x06, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xaa, 0xff,
-0xa0, 0xff, 0xa4, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x30, 0x00,
-0x50, 0x00, 0x58, 0x00, 0x58, 0x00, 0x50, 0x00, 0x40, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xce, 0xff,
-0x98, 0xff, 0x7a, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0xa8, 0xff, 0xcc, 0xff, 0xfc, 0xff,
-0x24, 0x00, 0x54, 0x00, 0x76, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x64, 0x00, 0x42, 0x00, 0x18, 0x00,
-0xda, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x66, 0xff, 0x4c, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xa0, 0xff,
-0xd4, 0xff, 0xfc, 0xff, 0x42, 0x00, 0x70, 0x00, 0x88, 0x00, 0xa2, 0x00, 0x92, 0x00, 0x70, 0x00,
-0x38, 0x00, 0xfe, 0xff, 0xc0, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x30, 0xff, 0x3c, 0xff,
-0x5a, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x10, 0x00, 0x52, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xaa, 0x00,
-0xa0, 0x00, 0x74, 0x00, 0x2a, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x2a, 0xff,
-0x22, 0xff, 0x3c, 0xff, 0x68, 0xff, 0xb2, 0xff, 0xec, 0xff, 0x16, 0x00, 0x60, 0x00, 0x92, 0x00,
-0xb8, 0x00, 0xb0, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x24, 0x00, 0xee, 0xff, 0xa8, 0xff, 0x76, 0xff,
-0x48, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x74, 0xff, 0xb2, 0xff, 0xf6, 0xff, 0x2a, 0x00,
-0x66, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xb4, 0x00, 0x8e, 0x00, 0x5a, 0x00, 0x18, 0x00, 0xdc, 0xff,
-0xae, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x8a, 0xff, 0xc8, 0xff,
-0x04, 0x00, 0x40, 0x00, 0x7a, 0x00, 0x92, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x7c, 0x00, 0x4a, 0x00,
-0x0e, 0x00, 0xda, 0xff, 0xa8, 0xff, 0x76, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x56, 0xff, 0x6e, 0xff,
-0xa0, 0xff, 0xe6, 0xff, 0x20, 0x00, 0x42, 0x00, 0x74, 0x00, 0x92, 0x00, 0x92, 0x00, 0x84, 0x00,
-0x5c, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x66, 0xff, 0x64, 0xff,
-0x72, 0xff, 0x8c, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x6e, 0x00,
-0x68, 0x00, 0x5c, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0xa8, 0xff, 0x9a, 0xff,
-0x88, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0xac, 0xff, 0xce, 0xff, 0xfa, 0xff, 0x14, 0x00, 0x3a, 0x00,
-0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x04, 0x00, 0xec, 0xff, 0xd0, 0xff,
-0xb6, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xda, 0xff, 0xe8, 0xff,
-0xfe, 0xff, 0x18, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x12, 0x00, 0xfe, 0xff,
-0xea, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xce, 0xff,
-0xce, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00,
-0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xea, 0xff,
-0xea, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xd0, 0xff,
-0xd4, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x0a, 0x00, 0x1a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x18, 0x00,
-0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xee, 0xff, 0xd0, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0x9e, 0xff,
-0xb4, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xfa, 0xff, 0x1e, 0x00, 0x3c, 0x00, 0x50, 0x00,
-0x4a, 0x00, 0x46, 0x00, 0x3e, 0x00, 0x28, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xbc, 0xff, 0xa4, 0xff,
-0x84, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xaa, 0xff, 0xc4, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x40, 0x00,
-0x64, 0x00, 0x64, 0x00, 0x74, 0x00, 0x66, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x06, 0x00, 0xde, 0xff,
-0xaa, 0xff, 0x7a, 0xff, 0x66, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x86, 0xff, 0xb6, 0xff, 0xe6, 0xff,
-0x0e, 0x00, 0x52, 0x00, 0x72, 0x00, 0x94, 0x00, 0xa0, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x34, 0x00,
-0x02, 0x00, 0xc6, 0xff, 0x98, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0x82, 0xff,
-0xba, 0xff, 0xfc, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x92, 0x00,
-0x6a, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x2c, 0xff,
-0x4c, 0xff, 0x82, 0xff, 0xc0, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x72, 0x00, 0x9a, 0x00, 0xb6, 0x00,
-0xb0, 0x00, 0x8c, 0x00, 0x4c, 0x00, 0x08, 0x00, 0xd6, 0xff, 0x96, 0xff, 0x56, 0xff, 0x28, 0xff,
-0x1c, 0xff, 0x30, 0xff, 0x56, 0xff, 0x88, 0xff, 0xda, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x86, 0x00,
-0xa8, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x92, 0xff,
-0x4a, 0xff, 0x26, 0xff, 0x26, 0xff, 0x3c, 0xff, 0x64, 0xff, 0xa8, 0xff, 0xec, 0xff, 0x1a, 0x00,
-0x56, 0x00, 0x82, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0x9c, 0x00, 0x72, 0x00, 0x20, 0x00, 0xe6, 0xff,
-0xae, 0xff, 0x7c, 0xff, 0x46, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xac, 0xff,
-0xfa, 0xff, 0x28, 0x00, 0x56, 0x00, 0x84, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x84, 0x00, 0x5a, 0x00,
-0x1e, 0x00, 0xec, 0xff, 0xb6, 0xff, 0x86, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x58, 0xff, 0x7a, 0xff,
-0x96, 0xff, 0xd0, 0xff, 0x02, 0x00, 0x32, 0x00, 0x66, 0x00, 0x74, 0x00, 0x96, 0x00, 0x84, 0x00,
-0x72, 0x00, 0x46, 0x00, 0x0e, 0x00, 0xe8, 0xff, 0xb8, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x86, 0xff,
-0x80, 0xff, 0x9a, 0xff, 0xb6, 0xff, 0xde, 0xff, 0x08, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x42, 0x00,
-0x52, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xb4, 0xff,
-0xaa, 0xff, 0xac, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0x14, 0x00,
-0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xec, 0xff,
-0xdc, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xfa, 0xff,
-0xfc, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf6, 0xff,
-0xf4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xd8, 0xff,
-0xe0, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe4, 0xff,
-0xe6, 0xff, 0xea, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00,
-0xfc, 0xff, 0xf2, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xc8, 0xff,
-0xc2, 0xff, 0xda, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x28, 0x00, 0x30, 0x00, 0x30, 0x00,
-0x2a, 0x00, 0x10, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xca, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x94, 0xff,
-0x98, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xbc, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x34, 0x00, 0x4c, 0x00,
-0x56, 0x00, 0x56, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x10, 0x00, 0xea, 0xff, 0xc8, 0xff, 0x92, 0xff,
-0x7a, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xca, 0xff, 0x04, 0x00, 0x2c, 0x00,
-0x52, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x86, 0x00, 0x68, 0x00, 0x4c, 0x00, 0x1e, 0x00, 0xe6, 0xff,
-0xb4, 0xff, 0x90, 0xff, 0x78, 0xff, 0x5c, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x9c, 0xff, 0xca, 0xff,
-0x02, 0x00, 0x3a, 0x00, 0x70, 0x00, 0x94, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x78, 0x00, 0x48, 0x00,
-0x10, 0x00, 0xdc, 0xff, 0x9e, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x44, 0xff, 0x6a, 0xff,
-0x9e, 0xff, 0xde, 0xff, 0x14, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xa6, 0x00, 0xbc, 0x00, 0xac, 0x00,
-0x7c, 0x00, 0x4a, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xa6, 0xff, 0x6c, 0xff, 0x4c, 0xff, 0x36, 0xff,
-0x46, 0xff, 0x6c, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb6, 0x00,
-0xbc, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x36, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x4e, 0xff,
-0x2a, 0xff, 0x12, 0xff, 0x42, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xf2, 0xff, 0x1e, 0x00, 0x60, 0x00,
-0x92, 0x00, 0xa4, 0x00, 0xb4, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x20, 0x00, 0xe6, 0xff, 0xb0, 0xff,
-0x74, 0xff, 0x4c, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc4, 0xff, 0x04, 0x00,
-0x2e, 0x00, 0x64, 0x00, 0x94, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x82, 0x00, 0x5a, 0x00, 0x16, 0x00,
-0xe0, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x46, 0xff, 0x5e, 0xff, 0x90, 0xff,
-0xce, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x60, 0x00, 0x74, 0x00, 0x8c, 0x00, 0x80, 0x00, 0x5c, 0x00,
-0x34, 0x00, 0x0a, 0x00, 0xde, 0xff, 0xa0, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x56, 0xff, 0x52, 0xff,
-0x78, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x34, 0x00, 0x58, 0x00, 0x68, 0x00, 0x72, 0x00,
-0x5e, 0x00, 0x5a, 0x00, 0x26, 0x00, 0x02, 0x00, 0xde, 0xff, 0xb0, 0xff, 0xa6, 0xff, 0x8a, 0xff,
-0x84, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x36, 0x00, 0x40, 0x00,
-0x42, 0x00, 0x4c, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xe2, 0xff, 0xba, 0xff,
-0xb4, 0xff, 0xa8, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0x0a, 0x00,
-0x12, 0x00, 0x1e, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xf4, 0xff,
-0xe8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xee, 0xff,
-0xf2, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x10, 0x00, 0x12, 0x00,
-0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xfc, 0xff, 0xf8, 0xff,
-0xf4, 0xff, 0xea, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xd0, 0xff, 0xd6, 0xff,
-0xe8, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x12, 0x00,
-0x0e, 0x00, 0xfa, 0xff, 0xf2, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xa0, 0xff, 0xae, 0xff,
-0xae, 0xff, 0xc4, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x46, 0x00, 0x3a, 0x00, 0x36, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xd2, 0xff, 0xac, 0xff, 0x9a, 0xff,
-0x8a, 0xff, 0x90, 0xff, 0x96, 0xff, 0xac, 0xff, 0xce, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x36, 0x00,
-0x48, 0x00, 0x56, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xec, 0xff, 0xbc, 0xff,
-0x92, 0xff, 0x72, 0xff, 0x5e, 0xff, 0x62, 0xff, 0x7a, 0xff, 0x90, 0xff, 0xcc, 0xff, 0xfa, 0xff,
-0x2e, 0x00, 0x64, 0x00, 0x7a, 0x00, 0x8e, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x40, 0x00, 0x0e, 0x00,
-0xda, 0xff, 0xa8, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x56, 0xff, 0x72, 0xff, 0xa8, 0xff,
-0xe0, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x8a, 0x00, 0xa8, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x80, 0x00,
-0x42, 0x00, 0x08, 0x00, 0xd4, 0xff, 0x88, 0xff, 0x52, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x48, 0xff,
-0x6c, 0xff, 0xb6, 0xff, 0xee, 0xff, 0x24, 0x00, 0x5c, 0x00, 0x90, 0x00, 0xaa, 0x00, 0xb2, 0x00,
-0xa0, 0x00, 0x6a, 0x00, 0x2c, 0x00, 0xf6, 0xff, 0xc4, 0xff, 0x78, 0xff, 0x40, 0xff, 0x2c, 0xff,
-0x34, 0xff, 0x58, 0xff, 0x78, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x72, 0x00, 0x9e, 0x00,
-0xbc, 0x00, 0xb8, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x16, 0x00, 0xe6, 0xff, 0xa4, 0xff, 0x62, 0xff,
-0x4a, 0xff, 0x30, 0xff, 0x48, 0xff, 0x6a, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x40, 0x00,
-0x7e, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc4, 0xff,
-0x90, 0xff, 0x5c, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x50, 0xff, 0x7a, 0xff, 0xa0, 0xff, 0xe6, 0xff,
-0x24, 0x00, 0x4a, 0x00, 0x7a, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7c, 0x00, 0x56, 0x00, 0x22, 0x00,
-0xf6, 0xff, 0xb8, 0xff, 0x90, 0xff, 0x72, 0xff, 0x5c, 0xff, 0x5e, 0xff, 0x70, 0xff, 0x8a, 0xff,
-0xc2, 0xff, 0xf6, 0xff, 0x22, 0x00, 0x54, 0x00, 0x74, 0x00, 0x86, 0x00, 0x78, 0x00, 0x5e, 0x00,
-0x3a, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x7a, 0xff,
-0x94, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x60, 0x00,
-0x48, 0x00, 0x40, 0x00, 0x24, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xbe, 0xff, 0xa6, 0xff, 0x9c, 0xff,
-0x98, 0xff, 0xa0, 0xff, 0xae, 0xff, 0xce, 0xff, 0xec, 0xff, 0x0c, 0x00, 0x1c, 0x00, 0x30, 0x00,
-0x32, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xde, 0xff,
-0xcc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xfa, 0xff,
-0xf8, 0xff, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0a, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfc, 0xff,
-0xf4, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xea, 0xff,
-0xf0, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x00, 0x00, 0xf2, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xbc, 0xff,
-0xd0, 0xff, 0xda, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x22, 0x00, 0x38, 0x00, 0x44, 0x00, 0x30, 0x00,
-0x26, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xe6, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x8c, 0xff,
-0x94, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x2a, 0x00, 0x4a, 0x00, 0x50, 0x00,
-0x60, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x8c, 0xff,
-0x78, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x8a, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x44, 0x00,
-0x64, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xfc, 0xff, 0xd0, 0xff,
-0x9c, 0xff, 0x7a, 0xff, 0x54, 0xff, 0x50, 0xff, 0x64, 0xff, 0x8c, 0xff, 0xbc, 0xff, 0xe6, 0xff,
-0x22, 0x00, 0x4e, 0x00, 0x7c, 0x00, 0x98, 0x00, 0x90, 0x00, 0x7c, 0x00, 0x58, 0x00, 0x26, 0x00,
-0xf4, 0xff, 0xb6, 0xff, 0x82, 0xff, 0x4c, 0xff, 0x36, 0xff, 0x44, 0xff, 0x60, 0xff, 0x90, 0xff,
-0xd0, 0xff, 0x0a, 0x00, 0x38, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xaa, 0x00, 0xa6, 0x00, 0x82, 0x00,
-0x4c, 0x00, 0x12, 0x00, 0xe8, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x46, 0xff, 0x32, 0xff, 0x3e, 0xff,
-0x5e, 0xff, 0x9e, 0xff, 0xe8, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x92, 0x00, 0xa4, 0x00, 0xc0, 0x00,
-0xa0, 0x00, 0x76, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x80, 0xff, 0x50, 0xff, 0x30, 0xff,
-0x26, 0xff, 0x40, 0xff, 0x74, 0xff, 0xb4, 0xff, 0xe8, 0xff, 0x16, 0x00, 0x58, 0x00, 0x90, 0x00,
-0xb2, 0x00, 0xb8, 0x00, 0x9e, 0x00, 0x68, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xba, 0xff, 0x7e, 0xff,
-0x4e, 0xff, 0x34, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x80, 0xff, 0xb8, 0xff, 0x00, 0x00, 0x32, 0x00,
-0x6a, 0x00, 0x8e, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0x76, 0x00, 0x4e, 0x00, 0x16, 0x00, 0xd6, 0xff,
-0xa6, 0xff, 0x6e, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x48, 0xff, 0x66, 0xff, 0x94, 0xff, 0xce, 0xff,
-0x00, 0x00, 0x3c, 0x00, 0x58, 0x00, 0x74, 0x00, 0x86, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x28, 0x00,
-0xf4, 0xff, 0xca, 0xff, 0x96, 0xff, 0x74, 0xff, 0x66, 0xff, 0x60, 0xff, 0x76, 0xff, 0x8c, 0xff,
-0xba, 0xff, 0xec, 0xff, 0x12, 0x00, 0x34, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x4c, 0x00,
-0x3a, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x8c, 0xff, 0x92, 0xff,
-0x94, 0xff, 0xbc, 0xff, 0xd0, 0xff, 0xec, 0xff, 0x18, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x2e, 0x00,
-0x2e, 0x00, 0x28, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xb2, 0xff,
-0xb6, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0x02, 0x00, 0x0a, 0x00,
-0x1e, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf4, 0xff,
-0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xfe, 0xff,
-0x02, 0x00, 0xf2, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff,
-0xee, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xdc, 0xff,
-0xe8, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x26, 0x00, 0x18, 0x00, 0x10, 0x00,
-0x08, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xb2, 0xff,
-0xba, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x42, 0x00,
-0x44, 0x00, 0x2e, 0x00, 0x08, 0x00, 0xee, 0xff, 0xc6, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x7e, 0xff,
-0x78, 0xff, 0x92, 0xff, 0x9a, 0xff, 0xc2, 0xff, 0xf4, 0xff, 0x18, 0x00, 0x34, 0x00, 0x62, 0x00,
-0x62, 0x00, 0x62, 0x00, 0x54, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0xac, 0xff, 0x7e, 0xff,
-0x62, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x9a, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0x3c, 0x00,
-0x56, 0x00, 0x78, 0x00, 0x8a, 0x00, 0x82, 0x00, 0x6c, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xd6, 0xff,
-0x92, 0xff, 0x68, 0xff, 0x46, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x9a, 0xff, 0xd2, 0xff,
-0x0c, 0x00, 0x48, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xae, 0x00, 0x96, 0x00, 0x6e, 0x00, 0x30, 0x00,
-0x00, 0x00, 0xca, 0xff, 0x84, 0xff, 0x52, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x2e, 0xff, 0x5c, 0xff,
-0xa8, 0xff, 0xee, 0xff, 0x22, 0x00, 0x66, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc6, 0x00, 0xaa, 0x00,
-0x78, 0x00, 0x2a, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x26, 0xff, 0x1e, 0xff,
-0x48, 0xff, 0x74, 0xff, 0xc4, 0xff, 0x02, 0x00, 0x36, 0x00, 0x78, 0x00, 0xa2, 0x00, 0xbc, 0x00,
-0xc0, 0x00, 0x96, 0x00, 0x6a, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xae, 0xff, 0x6c, 0xff, 0x46, 0xff,
-0x2e, 0xff, 0x38, 0xff, 0x54, 0xff, 0x8e, 0xff, 0xca, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x78, 0x00,
-0x96, 0x00, 0xb4, 0x00, 0xa2, 0x00, 0x80, 0x00, 0x52, 0x00, 0x10, 0x00, 0xe4, 0xff, 0xa8, 0xff,
-0x6c, 0xff, 0x46, 0xff, 0x38, 0xff, 0x44, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xde, 0xff, 0x12, 0x00,
-0x3a, 0x00, 0x70, 0x00, 0x90, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x30, 0x00, 0xc4, 0xff,
-0x7a, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x76, 0xff, 0x8c, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1a, 0x00,
-0x4e, 0x00, 0x56, 0x00, 0x72, 0x00, 0x6a, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x14, 0x00, 0xec, 0xff,
-0xc8, 0xff, 0x9c, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x76, 0xff, 0x82, 0xff, 0x9e, 0xff, 0xd6, 0xff,
-0xf6, 0xff, 0x0a, 0x00, 0x32, 0x00, 0x40, 0x00, 0x42, 0x00, 0x48, 0x00, 0x3e, 0x00, 0x2e, 0x00,
-0x0c, 0x00, 0xe6, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xa4, 0xff,
-0xc2, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x20, 0x00, 0x24, 0x00, 0x22, 0x00, 0x2c, 0x00,
-0x22, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xbc, 0xff,
-0xbc, 0xff, 0xc0, 0xff, 0xd4, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x08, 0x00,
-0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfe, 0xff,
-0xfe, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xe2, 0xff,
-0xde, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x16, 0x00,
-0x16, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x16, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xda, 0xff,
-0xc4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff,
-0x12, 0x00, 0x24, 0x00, 0x32, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x22, 0x00, 0xfe, 0xff,
-0xf0, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x92, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xbe, 0xff,
-0xe8, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4a, 0x00,
-0x2a, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x82, 0xff, 0x70, 0xff, 0x64, 0xff, 0x76, 0xff,
-0x8e, 0xff, 0xb6, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x8a, 0x00, 0x86, 0x00,
-0x6e, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x5c, 0xff, 0x40, 0xff,
-0x30, 0xff, 0x58, 0xff, 0x82, 0xff, 0xae, 0xff, 0xe4, 0xff, 0x1e, 0x00, 0x5c, 0x00, 0x8c, 0x00,
-0xa6, 0x00, 0xa4, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x6e, 0xff,
-0x42, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x44, 0xff, 0x7e, 0xff, 0xbc, 0xff, 0xec, 0xff, 0x2c, 0x00,
-0x72, 0x00, 0xa4, 0x00, 0xbe, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x0e, 0x00, 0xde, 0xff,
-0x92, 0xff, 0x50, 0xff, 0x30, 0xff, 0x1a, 0xff, 0x20, 0xff, 0x4e, 0xff, 0x86, 0xff, 0xd0, 0xff,
-0xfe, 0xff, 0x46, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xc6, 0x00, 0xb2, 0x00, 0x8a, 0x00, 0x42, 0x00,
-0x02, 0x00, 0xc4, 0xff, 0x82, 0xff, 0x50, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x60, 0xff,
-0xaa, 0xff, 0xe2, 0xff, 0x22, 0x00, 0x58, 0x00, 0x94, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0xac, 0x00,
-0x76, 0x00, 0x36, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0x80, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3a, 0xff,
-0x56, 0xff, 0x84, 0xff, 0xb6, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x62, 0x00, 0x9a, 0x00, 0xa0, 0x00,
-0xac, 0x00, 0x84, 0x00, 0x56, 0x00, 0x26, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x62, 0xff,
-0x4a, 0xff, 0x54, 0xff, 0x66, 0xff, 0x94, 0xff, 0xca, 0xff, 0x08, 0x00, 0x40, 0x00, 0x62, 0x00,
-0x82, 0x00, 0x90, 0x00, 0x80, 0x00, 0x6a, 0x00, 0x42, 0x00, 0x0a, 0x00, 0xd6, 0xff, 0xaa, 0xff,
-0x8e, 0xff, 0x74, 0xff, 0x6e, 0xff, 0x74, 0xff, 0x90, 0xff, 0xa4, 0xff, 0xea, 0xff, 0x1a, 0x00,
-0x40, 0x00, 0x66, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x46, 0x00, 0x2c, 0x00, 0xfa, 0xff,
-0xda, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xca, 0xff,
-0xea, 0xff, 0x04, 0x00, 0x30, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x26, 0x00,
-0x00, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb0, 0xff,
-0xbe, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x12, 0x00,
-0x16, 0x00, 0x0e, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe2, 0xff,
-0xd8, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xee, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00,
-0xfe, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xca, 0xff,
-0xc4, 0xff, 0xcc, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf6, 0xff, 0x0c, 0x00,
-0x2a, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xe6, 0xff,
-0xce, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0xa4, 0xff, 0xac, 0xff, 0xd2, 0xff, 0xf6, 0xff,
-0x14, 0x00, 0x32, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x12, 0x00,
-0xf2, 0xff, 0xd8, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x74, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x96, 0xff,
-0xc8, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x56, 0x00, 0x6a, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x62, 0x00,
-0x42, 0x00, 0x0e, 0x00, 0xe8, 0xff, 0xbe, 0xff, 0x90, 0xff, 0x62, 0xff, 0x4e, 0xff, 0x54, 0xff,
-0x78, 0xff, 0x98, 0xff, 0xca, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xa4, 0x00,
-0x96, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xac, 0xff, 0x6c, 0xff, 0x40, 0xff,
-0x46, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x8a, 0x00,
-0xa4, 0x00, 0xac, 0x00, 0xa0, 0x00, 0x74, 0x00, 0x46, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x8e, 0xff,
-0x4e, 0xff, 0x32, 0xff, 0x1a, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0xa4, 0xff, 0xee, 0xff, 0x20, 0x00,
-0x60, 0x00, 0x9a, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x2c, 0x00, 0xee, 0xff,
-0xc6, 0xff, 0x7a, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x42, 0xff, 0x78, 0xff, 0xc2, 0xff,
-0xfe, 0xff, 0x34, 0x00, 0x6c, 0x00, 0x94, 0x00, 0xb6, 0x00, 0xb0, 0x00, 0x98, 0x00, 0x5e, 0x00,
-0x16, 0x00, 0xe4, 0xff, 0xaa, 0xff, 0x68, 0xff, 0x42, 0xff, 0x1a, 0xff, 0x2a, 0xff, 0x54, 0xff,
-0x82, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa8, 0x00, 0x98, 0x00,
-0x78, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd0, 0xff, 0x96, 0xff, 0x62, 0xff, 0x46, 0xff, 0x38, 0xff,
-0x42, 0xff, 0x6a, 0xff, 0xa8, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x50, 0x00, 0x76, 0x00, 0x90, 0x00,
-0x9e, 0x00, 0x88, 0x00, 0x6a, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x6e, 0xff,
-0x60, 0xff, 0x52, 0xff, 0x6c, 0xff, 0x8c, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x3e, 0x00,
-0x66, 0x00, 0x74, 0x00, 0x72, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xc4, 0xff,
-0xa0, 0xff, 0x8c, 0xff, 0x76, 0xff, 0x86, 0xff, 0x8e, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0xfa, 0xff,
-0x1c, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x4a, 0x00, 0x40, 0x00, 0x2e, 0x00, 0x08, 0x00,
-0xf4, 0xff, 0xd8, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xc8, 0xff, 0xce, 0xff,
-0xea, 0xff, 0xfe, 0xff, 0x0e, 0x00, 0x22, 0x00, 0x26, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1e, 0x00,
-0x0c, 0x00, 0xf4, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc6, 0xff,
-0xd6, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0xea, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe2, 0xff,
-0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0c, 0x00,
-0x14, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xea, 0xff, 0xce, 0xff, 0xc0, 0xff,
-0xb6, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xca, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0x08, 0x00,
-0x24, 0x00, 0x36, 0x00, 0x34, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xe4, 0xff,
-0xcc, 0xff, 0xa6, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xde, 0xff,
-0x02, 0x00, 0x24, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x3c, 0x00,
-0x0a, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x8e, 0xff, 0x72, 0xff, 0x62, 0xff, 0x72, 0xff, 0x8c, 0xff,
-0xa6, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x82, 0x00, 0x94, 0x00, 0x74, 0x00,
-0x60, 0x00, 0x36, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0x84, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3c, 0xff,
-0x54, 0xff, 0x7e, 0xff, 0xb2, 0xff, 0xe4, 0xff, 0x24, 0x00, 0x60, 0x00, 0x8e, 0x00, 0xa4, 0x00,
-0xa6, 0x00, 0x98, 0x00, 0x64, 0x00, 0x24, 0x00, 0xf8, 0xff, 0xb8, 0xff, 0x80, 0xff, 0x56, 0xff,
-0x2c, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x82, 0xff, 0xbc, 0xff, 0x02, 0x00, 0x36, 0x00, 0x72, 0x00,
-0x9e, 0x00, 0xa6, 0x00, 0xae, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x14, 0x00, 0xd4, 0xff, 0xa4, 0xff,
-0x5e, 0xff, 0x40, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xce, 0xff, 0x04, 0x00,
-0x40, 0x00, 0x7c, 0x00, 0x98, 0x00, 0xa6, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfa, 0xff,
-0xce, 0xff, 0x8e, 0xff, 0x5e, 0xff, 0x36, 0xff, 0x26, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x9a, 0xff,
-0xde, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x84, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x6e, 0x00,
-0x32, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x64, 0xff, 0x40, 0xff, 0x38, 0xff, 0x40, 0xff,
-0x70, 0xff, 0xaa, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x76, 0x00, 0x8a, 0x00, 0x8a, 0x00,
-0x76, 0x00, 0x4c, 0x00, 0x20, 0x00, 0xea, 0xff, 0xbc, 0xff, 0x8e, 0xff, 0x6c, 0xff, 0x5c, 0xff,
-0x5a, 0xff, 0x6a, 0xff, 0x94, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x34, 0x00, 0x4a, 0x00, 0x62, 0x00,
-0x74, 0x00, 0x76, 0x00, 0x6a, 0x00, 0x36, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0xa6, 0xff,
-0x90, 0xff, 0x7e, 0xff, 0x88, 0xff, 0x90, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x0c, 0x00, 0x26, 0x00,
-0x44, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x58, 0x00, 0x46, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xea, 0xff,
-0xc4, 0xff, 0xae, 0xff, 0x9e, 0xff, 0x96, 0xff, 0x9a, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xe4, 0xff,
-0xfe, 0xff, 0x1a, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x34, 0x00, 0x38, 0x00, 0x34, 0x00, 0x12, 0x00,
-0x00, 0x00, 0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xc4, 0xff,
-0xd6, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x12, 0x00,
-0x10, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff,
-0xde, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff,
-0xec, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x02, 0x00,
-0xfc, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xbe, 0xff,
-0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x0e, 0x00, 0x18, 0x00,
-0x24, 0x00, 0x22, 0x00, 0x16, 0x00, 0x22, 0x00, 0x14, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xbc, 0xff,
-0xa8, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xd4, 0xff, 0xf0, 0xff, 0x04, 0x00,
-0x22, 0x00, 0x38, 0x00, 0x48, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x20, 0x00, 0xfa, 0xff,
-0xd6, 0xff, 0xa6, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x76, 0xff, 0x8c, 0xff, 0x9e, 0xff, 0xc8, 0xff,
-0xf6, 0xff, 0x1a, 0x00, 0x44, 0x00, 0x60, 0x00, 0x74, 0x00, 0x72, 0x00, 0x62, 0x00, 0x4c, 0x00,
-0x22, 0x00, 0xea, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x7a, 0xff, 0x66, 0xff, 0x62, 0xff, 0x82, 0xff,
-0x9e, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x36, 0x00, 0x60, 0x00, 0x84, 0x00, 0x9e, 0x00, 0x92, 0x00,
-0x7a, 0x00, 0x4c, 0x00, 0x22, 0x00, 0xe0, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x54, 0xff, 0x4a, 0xff,
-0x4e, 0xff, 0x6a, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x76, 0x00, 0x98, 0x00,
-0xa2, 0x00, 0xa4, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x96, 0xff, 0x5c, 0xff,
-0x3c, 0xff, 0x28, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xac, 0xff, 0xe8, 0xff, 0x10, 0x00, 0x48, 0x00,
-0x8a, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x32, 0x00, 0xf2, 0xff, 0xbe, 0xff,
-0x7a, 0xff, 0x54, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0xbe, 0xff, 0xf2, 0xff,
-0x24, 0x00, 0x60, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0x86, 0x00, 0x50, 0x00, 0x14, 0x00,
-0xd8, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x48, 0xff, 0x28, 0xff, 0x38, 0xff, 0x52, 0xff, 0x7e, 0xff,
-0xbc, 0xff, 0xf8, 0xff, 0x36, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x94, 0x00, 0x76, 0x00,
-0x46, 0x00, 0x0c, 0x00, 0xde, 0xff, 0xac, 0xff, 0x76, 0xff, 0x58, 0xff, 0x4a, 0xff, 0x4a, 0xff,
-0x66, 0xff, 0x92, 0xff, 0xc8, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x68, 0x00, 0x80, 0x00, 0x9a, 0x00,
-0x88, 0x00, 0x60, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xd6, 0xff, 0xa4, 0xff, 0x84, 0xff, 0x6c, 0xff,
-0x60, 0xff, 0x6e, 0xff, 0x86, 0xff, 0xa6, 0xff, 0xde, 0xff, 0x0e, 0x00, 0x30, 0x00, 0x54, 0x00,
-0x64, 0x00, 0x72, 0x00, 0x64, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf0, 0xff, 0xd2, 0xff, 0xa8, 0xff,
-0xa0, 0xff, 0x94, 0xff, 0x86, 0xff, 0x96, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xf4, 0xff, 0x14, 0x00,
-0x36, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x50, 0x00, 0x46, 0x00, 0x2a, 0x00, 0x12, 0x00, 0xf2, 0xff,
-0xda, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xe4, 0xff,
-0x02, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x18, 0x00, 0x26, 0x00, 0x1c, 0x00, 0x02, 0x00,
-0xfe, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff,
-0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff,
-0xf8, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff,
-0xd4, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xee, 0xff, 0x00, 0x00, 0x10, 0x00, 0x1a, 0x00,
-0x0e, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xbc, 0xff,
-0xb4, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1a, 0x00,
-0x2e, 0x00, 0x30, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xcc, 0xff,
-0xa4, 0xff, 0x96, 0xff, 0x88, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xcc, 0xff, 0xf6, 0xff,
-0x1a, 0x00, 0x48, 0x00, 0x52, 0x00, 0x60, 0x00, 0x60, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x06, 0x00,
-0xe6, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x66, 0xff, 0x64, 0xff, 0x62, 0xff, 0x78, 0xff, 0x9c, 0xff,
-0xca, 0xff, 0xf8, 0xff, 0x32, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x62, 0x00,
-0x36, 0x00, 0x0a, 0x00, 0xda, 0xff, 0xa4, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x48, 0xff,
-0x66, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x16, 0x00, 0x50, 0x00, 0x8a, 0x00, 0xac, 0x00, 0xac, 0x00,
-0xa0, 0x00, 0x74, 0x00, 0x3e, 0x00, 0x0a, 0x00, 0xcc, 0xff, 0x90, 0xff, 0x4e, 0xff, 0x3a, 0xff,
-0x30, 0xff, 0x3a, 0xff, 0x76, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x26, 0x00, 0x70, 0x00, 0xa4, 0x00,
-0xb8, 0x00, 0xc0, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xb8, 0xff, 0x74, 0xff,
-0x3c, 0xff, 0x20, 0xff, 0x26, 0xff, 0x44, 0xff, 0x6c, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x3c, 0x00,
-0x7c, 0x00, 0xaa, 0x00, 0xc8, 0x00, 0xba, 0x00, 0xa4, 0x00, 0x6e, 0x00, 0x1a, 0x00, 0xee, 0xff,
-0xa8, 0xff, 0x64, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x2c, 0xff, 0x50, 0xff, 0x94, 0xff, 0xd2, 0xff,
-0x0e, 0x00, 0x4e, 0x00, 0x7e, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xb2, 0x00, 0x90, 0x00, 0x5a, 0x00,
-0x12, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x36, 0xff, 0x5e, 0xff,
-0x9a, 0xff, 0xd6, 0xff, 0x10, 0x00, 0x3c, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x96, 0x00, 0x8e, 0x00,
-0x64, 0x00, 0x36, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x52, 0xff, 0x42, 0xff,
-0x5e, 0xff, 0x7e, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x16, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x78, 0x00,
-0x78, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x10, 0x00, 0xf4, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x84, 0xff,
-0x66, 0xff, 0x72, 0xff, 0x84, 0xff, 0x98, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0x1c, 0x00, 0x38, 0x00,
-0x42, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x26, 0x00, 0x04, 0x00, 0xee, 0xff, 0xc0, 0xff,
-0xa0, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0x02, 0x00,
-0x14, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x16, 0x00, 0x00, 0x00,
-0xec, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xe6, 0xff,
-0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0c, 0x00,
-0xfc, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xe4, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf2, 0xff};
-
-#endif
diff --git a/mbtk/test/liblynq_lib_t106/Makefile b/mbtk/test/liblynq_lib_t106/Makefile
deleted file mode 100755
index fefde27..0000000
--- a/mbtk/test/liblynq_lib_t106/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-BUILD_ROOT = $(shell pwd)/../..
-include $(BUILD_ROOT)/Make.defines
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -lmbtk_lib -lmbtk_ril -lmbtk_net -lmbtk_audio -lmbtk_fota -lmbtk_gnss -lmbtk_factory -llynq_lib -ldl
-
-CFLAGS +=
-
-DEFINE +=
-
-LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
-
-$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
-
-OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES)))
-BINS = $(patsubst %.o,%,$(OBJS))
-
-all: $(BINS)
-
-$(BINS):$(OBJS)
- @echo " BIN $@"
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $@.o -o $(OUT_DIR)/bin/$@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS)
diff --git a/mbtk/test/liblynq_lib_t106/lynq-adc-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-adc-demo.cpp
deleted file mode 100755
index 375d7ea..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-adc-demo.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <lynq/lynq-adc.h>
-
-void handle_adc(const char* adc_name, int adc_type)
-{
- if (adc_name == NULL)
- {
- printf("Error: adc_name is a null pointer\n");
- return;
- }
- int adc_value = qser_adc_show((ADC_CHANNEL_E)adc_type);
- if (adc_value < 0)
- {
- printf("Error: Failed to get the value of %s\n", adc_name);
- return;
- }
- printf("%s value: %d mV\n", adc_name, adc_value);
-}
-
-int main(int argc, char *argv[])
-{
- if (argc != 2)
- {
- printf("Usage: %s <ADC0|ADC1|ADC2>\n", argv[0]);
- return -1;
- }
-
- if (strcmp(argv[1], "ADC0") == 0)
- {
- handle_adc("ADC0", ADC0);
- }
- else if (strcmp(argv[1], "ADC1") == 0)
- {
- handle_adc("ADC1", ADC1);
- }
- else if (strcmp(argv[1], "ADC2") == 0)
- {
- handle_adc("ADC2", ADC2);
- }
- else
- {
- printf("Please enter valid parameters: ADC0|ADC1|ADC2\n");
- return -1;
- }
-
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-audio-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-audio-demo.cpp
deleted file mode 100755
index c60480d..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-audio-demo.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include "ring_tele.h"
-#include <lynq/lynq-qser-audio.h>
-
-
-static int playback_handle = 1;
-
-void player_cmd_proc(char *cmdstr)
-{
- if (strcmp(cmdstr, "P\n") == 0)
- {
- qser_AudPlayer_Pause(playback_handle);
- }
- else if (strcmp(cmdstr, "R\n") == 0)
- {
- qser_AudPlayer_Resume(playback_handle);
- }
- else if (strcmp(cmdstr, "T\n") == 0)
- {
- qser_AudPlayer_Stop(playback_handle);
- }
- else
- {
- printf("Unknown command: %s", cmdstr);
- }
-}
-
-void capture_cmd_proc(char *cmdstr)
-{
- if (strcmp(cmdstr, "P\n") == 0)
- {
- qser_AudRecorder_Pause();
- }
- else if (strcmp(cmdstr, "R\n") == 0)
- {
- qser_AudRecorder_Resume();
- }
- else if (strcmp(cmdstr, "T\n") == 0)
- {
- qser_AudRecorder_Stop();
- }
- else
- {
- printf("Unknown command: %s", cmdstr);
- }
-}
-
-int main(int argc, char *argv[])
-{
- if (argc < 2)
- {
- printf("Usage: %s <play|recd|playbuf> [file]\n", argv[0]);
- return 1;
- }
-
- const char *action = argv[1];
- const char *file = argv[2];
-
- int g_audio_owner_id = 0;
- char player_device[] = "device1";
- char recorder_device[] = "device2";
- char cmdstr[256];
-
- _cb_onPlayer cb_fun = [](int result)
- {
- if (result == 0)
- {
- printf("Audio recorder opened successfully.\n");
- }
- else
- {
- printf("Failed to open audio recorder, error code: %d\n", result);
- }
- };
-
- if (strcmp(action, "playbuf") == 0)
- {
- int player_open_result = qser_AudPlayer_Open(player_device, cb_fun);
- if (player_open_result != 0)
- {
- printf("Failed to open audio player.\n");
- return 1;
- }
- qser_AudPlayer_PlayPcmBuf(PCM_DATA, PCM_DATA_SIZE, 640, 3, 1, 8000, g_audio_owner_id);
- while (1)
- {
- printf("Please input a player command (P/R/T/exit) :\n");
- if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
- {
- if (strcmp(cmdstr, "exit\n") == 0)
- {
- qser_AudPlayer_Close(playback_handle);
- break;
- }
- player_cmd_proc(cmdstr);
- }
- }
- qser_AudPlayer_Close(playback_handle);
- }
- else if (strcmp(action, "play") == 0)
- {
- int player_open_result = qser_AudPlayer_Open(player_device, cb_fun);
- if (player_open_result != 0)
- {
- printf("Failed to open audio player.\n");
- return 1;
- }
-
- qser_AudPlayer_PlayFrmFile(g_audio_owner_id, file, 0);
-
- while (1)
- {
- printf("Please input a player command (P/R/T/exit) :\n");
- if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
- {
- if (strcmp(cmdstr, "exit\n") == 0)
- {
- qser_AudPlayer_Close(playback_handle);
- break;
- }
- player_cmd_proc(cmdstr);
- }
- }
-
- qser_AudPlayer_Close(playback_handle);
- }
- else if (strcmp(action, "recd") == 0)
- {
- int recorder_open_result = qser_AudRecorder_Open(recorder_device, cb_fun);
- if (recorder_open_result != 0) {
- printf("Failed to open audio recorder.\n");
- return 1;
- }
-
- qser_AudRecorder_StartRecord(g_audio_owner_id, file, 0);
-
- while (1)
- {
- printf("Please input a player command (P/R/T/exit) :\n");
- if (fgets(cmdstr, sizeof(cmdstr), stdin) != NULL)
- {
- if (strcmp(cmdstr, "exit\n") == 0)
- {
- qser_AudRecorder_Close();
- break;
- }
- capture_cmd_proc(cmdstr);
- }
- }
- qser_AudRecorder_Close();
- }
- else
- {
- printf("Unknown action: %s\n", action);
- return 1;
- }
-
- qser_Audio_Deinit();
-
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-gpio-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-gpio-demo.cpp
deleted file mode 100755
index fba443f..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-gpio-demo.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <lynq/lynq-gpio.h>
-
-static void printUsage(void)
-{
- printf("-ds [direction] --lynq_gpio_direction_set\n");
- printf("-vs [value] --lynq_gpio_value_set\n");
- printf("-ps [pullsel] --lynq_gpio_pullsel_set\n");
- printf("-vg --lynq_gpio_value_get\n");
- printf("-pg --lynq_gpio_pullsel_get\n");
- printf("-quit\n");
- printf("Please input an cmd:");
-}
-
-
-
-
-int main(int argc,char** argv)
-{
- int ret;
- int gpio;
- int direction;
- int value;
- int pullsel;
- char cmd[16];
- char *cmd2;
- char *cmd1;
-
- if(argc != 2)
- {
- printf("wrong input format, please inout lynq-irq-demo <gpio>\n");
- return -1;
- }
- gpio = atoi(argv[1]);
- printf("gpio is %d\n", gpio);
- ret = lynq_gpio_init(gpio, 0, 0, 0);
- if(ret != 0)
- {
- printf("lynq_gpio_init fail\n");
- return -1;
- }
- else
- {
- printf("lynq_gpio_init success\n");
- }
-
- while(1)
- {
- printUsage();
- memset(cmd,0,sizeof(cmd));
- fgets(cmd, sizeof(cmd), stdin);
- printf("cmd:%s\n",cmd);
- cmd1 = strtok(cmd, " ");
- cmd2 = strtok(NULL, " ");
- if(strcmp(cmd1,"-ds") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("direction is NULL\n");
- continue;
- }
- direction = atoi(cmd2);
- ret = lynq_gpio_direction_set(gpio, direction);
- if(ret != 0)
- {
- printf("lynq_gpio_direction_set fail\n");
- }
- else
- {
- printf("lynq_gpio_direction_set success\n");
- }
- }
-
- else if(strcmp(cmd1,"-vs") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("wake_state is NULL\n");
- continue;
- }
- value = atoi(cmd2);
- ret = lynq_gpio_value_set(gpio, value);
- if(ret < 0)
- {
- printf("lynq_gpio_value_set fail\n");
- }
- else
- {
- printf("lynq_gpio_value_set success\n");
- }
- }
-
- else if (strcmp(cmd1,"-ps") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("pullsel is NULL\n");
- continue;
- }
- pullsel = atoi(cmd2);
- ret = lynq_gpio_pullsel_set(gpio, pullsel);
- if(ret != 0)
- {
- printf("lynq_gpio_pullsel_set fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("lynq_gpio_pullsel_set success\n");
- }
- }
- else if (strcmp(cmd1,"-vg\n") == 0)
- {
- ret = lynq_gpio_value_get(gpio);
- if(ret < 0)
- {
- printf("lynq_gpio_value_get fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("lynq_gpio_value_get success\n");
- printf("ret=%d\n", ret);
- }
- }
- else if(strcmp(cmd1,"-pg\n") == 0)
- {
- ret = lynq_gpio_pullsel_get(gpio);
- if(ret < 0)
- {
- printf("lynq_gpio_pullsel_get fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("lynq_gpio_pullsel_get success\n");
- printf("ret=%d\n", ret);
- }
- }
- else if(strcmp(cmd1,"-quit\n") == 0)
- {
- break;
- }
- else
- {
- printf("wrong input format\n");
- }
-
-
- }
-
-
- ret = lynq_gpio_deinit(gpio);
- if(ret != 0)
- {
- printf("lynq_gpio_deinit fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("lynq_gpio_deinit success\n");
- }
-
- return 0;
-
-}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-irq-demo.cc b/mbtk/test/liblynq_lib_t106/lynq-irq-demo.cc
deleted file mode 100755
index eddb286..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-irq-demo.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <pthread.h>
-#include <lynq/lynq-irq.h>
-
-
-#define CMD_SET_WAKE "set_wake"
-#define CMD_GET_WAKE "get_wake\n"
-#define CMD_SET_TYPE "set_type"
-#define CMD_GET_TYPE "get_type\n"
-#define CMD_UNINSTALL "uninstall\n"
-#define CMD_QUIT_TEST "quit\n"
-
-int line;
-
-
-static void printUsage(void)
-{
- printf("Usage:\n");
- printf("-set_wake <en>\n");
- printf("-set_type <en>\n");
- printf("-get_type\n");
- printf("-get_wake\n");
- printf("-uninstall\n");
- printf("-quit\n");
- printf("Please input an cmd:");
-}
-
-
-static void irq_test_handler(void)
-{
- int trig_type;
- trig_type = lynq_irq_get_type(line);
- printf("this is irq_test_handler\nthis irq is gpio %d,trig_type is %d\n", line_gpio[line], trig_type);
-// return NULL;
-}
-
-
-int main(int argc, char** argv)
-{
- int ret;
- int irq;
- int trig_type;
- int en;
- char cmd[16];
- char *cmd2;
- char *cmd1;
-
- if(argc != 3)
- {
- printf("wrong input format, please inout lynq-irq-demo <irq_line> <trig_type/wake_state> \n");
- return -1;
- }
- irq = atoi(argv[1]);
- trig_type = atoi(argv[2]);
- ret = lynq_irq_install(irq, irq_test_handler, trig_type);
- if(ret != 0)
- {
- printf("lynq_irq_install fail\n");
- return 0;
- }
- else
- {
- printf("lynq_irq_install success\n");
- line = irq;
- }
-
- while(1)
- {
- printUsage();
- memset(cmd,0,sizeof(cmd));
- fgets(cmd, sizeof(cmd), stdin);
- printf("cmd:%s\n",cmd);
- cmd1 = strtok(cmd, " ");
- cmd2 = strtok(NULL, " ");
- if(strcmp(cmd1, CMD_SET_WAKE) == 0)
- {
- if(cmd2 == NULL)
- {
- printf("wake_state is NULL\n");
- break;
- }
- en = atoi(cmd2);
- ret = lynq_irq_set_wake(irq, en);
- if(ret < 0)
- {
- printf("lynq_irq_set_wake fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("lynq_irq_set_wake success\n");
- printf("ret=%d\n", ret);
- }
- }
- else if(strcmp(cmd1, CMD_GET_WAKE) == 0)
- {
- ret = lynq_irq_get_wake(irq);
- printf("lynq_irq_get_wake ret %d\n", ret);
- }
- else if(strcmp(cmd1, CMD_SET_TYPE) == 0)
- {
- if(cmd2 == NULL)
- {
- printf("trig_type is NULL\n");
- break;
- }
- trig_type = atoi(cmd2);
- ret = lynq_irq_set_type(line, trig_type);
- if(ret < 0)
- {
- printf("lynq_irq_set_type fail\n");
- }
- else
- {
- printf("lynq_irq_set_type success\n");
- }
- }
- else if(strcmp(cmd1, CMD_GET_TYPE) == 0)
- {
- ret = lynq_irq_get_type(irq);
- printf("lynq_irq_get_type ret %d\n", ret);
- }
- else if(strcmp(cmd1, CMD_UNINSTALL) == 0)
- {
- ret = lynq_irq_uninstall(irq);
- if(ret != 0)
- {
- printf("lynq_irq_uninstall fail\n");
- }
- else
- {
- printf("lynq_irq_uninstall success\n");
- }
- }
- else if(strcmp(cmd1, CMD_QUIT_TEST) == 0)
- {
- ret = lynq_irq_uninstall(irq);
- if(ret != 0)
- {
- printf("lynq_irq_uninstall fail\n");
- }
- else
- {
- printf("lynq_irq_uninstall success\n");
- }
- break;
- }
- else
- {
- printf("wrong input format\n");
- }
- }
-
- return 0;
-}
-
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-autosuspend-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-autosuspend-demo.cpp
deleted file mode 100755
index 7100756..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-autosuspend-demo.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <lynq/lynq-qser-autosuspend.h>
-
-#define FILE_LOCK_TABLE "/tmp/.lock_table"
-
-#define MAX_LOCK_NUM 128
-
-static void qser_lpm_handler(qser_lpm_edge_t edge_state)
-{
- printf("this is qser_lpm_handler, edge_state=%d\n", edge_state);
-
-}
-
-static void printUsage(void)
-{
- printf("-i --qser_lpm_init\n");
- printf("-d --qser_lpm_deinit\n");
- printf("-q --quit\n");
- printf("-e --qser_autosuspend_enable\n");
- printf("-cl [wakelock name] --qser_wakelock_create \n");
- printf("-al [wakelock num] --qser_wakelock_lock \n");
- printf("-rl [wakelock num] --qser_wakelock_unlock \n");
- printf("-dl [wakelock num] --qser_wakelock_destroy\n");
- printf("-ws [whitelist num] --qser_whitelist_set\n");
- printf("-wg --qser_whitelist_get\n");
- printf("-ccl --check created locks\n");
- printf("-cll --check lockup locks\n");
- printf("-cws --check wakeup sources\n");
- printf("Please input an cmd:");
-}
-
-
-int check_lock(void)
-{
- int err;
- int file_fd;
- int i;
- int ret;
- LOCK_TABLE lock_status;
- file_fd = open(FILE_LOCK_TABLE,O_RDWR);
- if(file_fd < 0)
- {
- err = errno;
- printf("Error open lock_table file:%s\n", strerror(errno));
- return -2;
- }
-
- memset(&lock_status, 0, sizeof(lock_status));
- lseek(file_fd,0,SEEK_SET);
- ret = read(file_fd,(unsigned char *)&lock_status,sizeof(lock_status));
- if(ret <= 0)
- {
- close(file_fd);
- return -2;
- }
- for(i=0;i<MAX_LOCK_NUM;i++)
- {
- if(strlen(lock_status.lock_name[i]) != 0)
- {
- printf("fd: %d lock_name:%s strlen:%d, pid=%d\n", i, lock_status.lock_name[i], strlen(lock_status.lock_name[i]), lock_status.lock_pid[i]);
- }
- }
-
- close(file_fd);
- return 0;
-
-}
-
-
-void delete_enter(char *data)
-{
- char *find = strchr(data, '\n');
- if(find)
- *find = '\0';
- return ;
-}
-
-int main(int argc,char** argv)
-{
-
- int num;
- int ret;
- int len;
- FILE *fp;
- char buf[256];
- char cmd[64];
- char *cmd2;
- char *cmd1;
- char tmp[8];
- qser_pm_cfg_t *qser_lpm_cfg = NULL;
- qser_lpm_cfg = (qser_pm_cfg_t *)malloc(sizeof(qser_pm_cfg_t));
- qser_lpm_cfg->wakeupin.wakeupin_pin = 50;
- qser_lpm_cfg->wakeupin.wakeupin_edge = E_QL_LPM_FALLING;
- while(1)
- {
- printUsage();
- memset(cmd,0,sizeof(cmd));
- fgets(cmd, sizeof(cmd), stdin);
- cmd1 = strtok(cmd, " ");
- cmd2 = strtok(NULL, " ");
- delete_enter(cmd1);
- printf("cmd1:%s\n", cmd1);
- if(strcmp(cmd1,"-i") == 0)
- {
- ret = qser_lpm_init( qser_lpm_handler, qser_lpm_cfg);
- if(ret != 0)
- {
- printf("lpm init fail\n");
- break;
- }
- else
- {
- printf("lpm init success\n");
- }
- }
- else if(strcmp(cmd1,"-e") == 0)
- {
- char num='1';
- ret = qser_autosuspend_enable(num);
- if(ret != 0)
- {
- printf("qser_autosuspend_enable fail\n");
- }
- else
- {
- printf("qser_autosuspend_enable success\n");
- }
- }
- else if(strcmp(cmd1,"-cl") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("name is null\n");
- continue;
- }
- len = strlen(cmd2);
- printf("len =%d\n", len);
- ret = qser_wakelock_create(cmd2, len);
- if(ret < 0)
- {
- printf("wakelock create fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("wakelock create success\n");
- printf("fd=%d\n", ret);
- }
- }
- else if (strcmp(cmd1,"-al") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("fd is null\n");
- continue;
- }
- num = atoi(cmd2);
- ret = qser_wakelock_lock(num);
- if(ret != 0)
- {
- printf("wakelock lock fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("wakelock lock success\n");
- }
- }
-
- else if (strcmp(cmd1,"-rl") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("fd is null\n");
- continue;
- }
- num = atoi(cmd2);
- ret = qser_wakelock_unlock(num);
- if(ret != 0)
- {
- printf("wakelock unlock fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("wakelock unlock success\n");
- }
- }
- else if(strcmp(cmd1,"-dl") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("fd is null\n");
- continue;
- }
- num = atoi(cmd2);
- ret = qser_wakelock_destroy(num);
- if(ret != 0)
- {
- printf("wakelock destroy fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("wakelock destroy success\n");
- }
- }
- else if(strcmp(cmd1, "-ws") == 0)
- {
- if(cmd2 == NULL)
- {
- printf("num is null\n");
- continue;
- }
- delete_enter(cmd2);
- ret = qser_whitelist_set(cmd2);
- if(ret != 0)
- {
- printf("qser_whitlist_set fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("qser_whitlist_set success\n");
- }
- }
- else if(strcmp(cmd1, "-wg") == 0)
- {
- ret = qser_whitelist_get(tmp);
- if(ret != 0)
- {
- printf("qser_whitlist_set fail\n");
- }
- else
- {
- printf("qser_whitlist_set success\n");
- printf("ret=%d, whilelist state is %s\n", ret, tmp);
- }
- }
- else if(strcmp(cmd1,"-ccl") == 0)
- {
- int ret;
- ret = check_lock();
- if(ret != 0)
- {
- printf("check lock fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("check lock success\n");
- }
- }
- else if(strcmp(cmd1,"-cll") == 0)
- {
- int ret;
- ret = system("cat /sys/power/wake_lock");
- if(ret != 0)
- {
- printf("check created lock fail\n");
- }
- }
- else if(strcmp(cmd1,"-cws") == 0)
- {
- printf("start check active wakeup_sources !!!\n");
- memset(buf,0,sizeof(buf));
- fp = popen("cat /sys/kernel/debug/wakeup_sources|sed -e 's/\"^ \"/\"unnamed\"/g' | awk '{print $6 \"\t\" $1}'| grep -v \"^0\" |sort -n \n","r");
- while(fgets(buf, 255, fp) != NULL)
- {
- printf("%s", buf);
- }
- pclose(fp);
- }
- else if(strcmp(cmd1, "-d") == 0)
- {
- ret = qser_lpm_deinit();
- if(ret != 0)
- {
- printf("lpm deinit fail\n");
- }
- else
- {
- printf("lpm deinit success\n");
- }
- }
- else if(strcmp(cmd1,"-q") == 0)
- {
- break;
- }
- }
-
- return 0;
-
-}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-data-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-data-demo.cpp
deleted file mode 100755
index c3cb0a6..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-data-demo.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <sys/un.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <lynq/lynq-qser-data.h>
-
-#define MAX_COMMAND_LEN 10
-
-
-void evt_cb(qser_data_call_state_s *state);
-int qser_init_data();
-int qser_deinit_data();
-int data_demo_auto_test(char *apn_name1, char *apn_name2);
-
-qser_data_call_state_s state = {0};
-
-void delete_enter(char data[])
-{
- char *find = strchr(data, '\n');
- if(find)
- *find = '\0';
- return ;
-}
-void printf_help(void)
-{
- printf("*******************************User Guide*************************************************\n");
- printf("usage: lynq-qser-data-demo <apn_name> <apn_type>\n");
- printf("Example: lynq-qser-data-demo cmwap lynq_apn1\n");
- printf("*******************************************************************************************\n");
- return;
-}
-
-/**
- * @brief qser data call demo entry function.
- *
- * @detail This example will take a complete data process
- * and show you how to call the API in liblynq-qser-data.
- */
-int main(int argc, char *argv[])
-{
- int i, ret;
-
- printf("[%s] [%d] entry !\n", __FUNCTION__, __LINE__);
- printf("[DATA_DEMO]lynq-qser-data-demo entry !\n");
-
- if(argc != 3)
- {
- printf_help();
- exit(EXIT_FAILURE);
- }
-
- //do initialization
- ret = qser_data_call_init(evt_cb);
- if(0 != ret)
- {
- printf("initial failed !\n");
- return -1;
- }
-
- data_demo_auto_test(argv[1], argv[2]);
- qser_data_call_destroy();
-
- return 0;
-}
-
-//demo示例拨两路apn,一路使用默认apn配置拨号访问公网,另一路建议为私网配置
-int data_demo_auto_test(char *apn_name1, char *apn_type)
-{
- int ret = 0;
- char command[MAX_COMMAND_LEN] = {'\0'};
- bool apn_test1_need_insert = true;
- unsigned char profile_idx_char1;
- qser_apn_add_s apn_test1 = {QSER_APN_PDP_TYPE_IPV4V6, QSER_APN_AUTH_PROTO_DEFAULT, NULL, NULL, NULL, NULL};
- qser_data_call_s apn_normal_datacall;
- qser_data_call_s apn_test1_datacall;
- qser_data_call_error_e err = QSER_DATA_CALL_ERROR_NONE;
-
- memcpy(apn_test1.apn_type,apn_type,QSER_APN_NAME_SIZE);
- memcpy(apn_test1.apn_name,apn_name1,QSER_APN_NAME_SIZE);
-
- //1、检查apn是否存在
- qser_apn_info_list_s apn_list = {0};
- ret = qser_apn_get_list(&apn_list);
- if(ret != 0)
- {
- printf("\n get apn list error\n");
- return -1;
- }
- for(int i = 0; i < apn_list.cnt; i++)
- {
- printf("data_demo_auto_test: pdp_type=%d, auth_proto=%d, apn_name=%s, username=%s, password=%s, apn_type=%s\n"
- ,apn_list.apn[i].pdp_type, apn_list.apn[i].auth_proto, apn_list.apn[i].apn_name, apn_list.apn[i].username, apn_list.apn[i].password, apn_list.apn[i].apn_type);
-
- if( apn_list.apn[i].pdp_type == apn_test1.pdp_type
- && apn_list.apn[i].auth_proto == apn_test1.auth_proto
- && (strcmp(apn_list.apn[i].apn_name, apn_test1.apn_name) == 0)
- && (strcmp(apn_list.apn[i].username, apn_test1.username) == 0)
- && (strcmp(apn_list.apn[i].password, apn_test1.password) == 0)
- && (strcmp(apn_list.apn[i].apn_type, apn_test1.apn_type) == 0)
- )
- {
- profile_idx_char1 = apn_list.apn[i].profile_idx;
- apn_test1_need_insert = false;
- }
- }
- //2、若不存在,插入apn
- if(apn_test1_need_insert)
- {
- ret = qser_apn_add(&apn_test1, &profile_idx_char1);
- if(ret != 0)
- {
- printf("\n add apn error\n");
- return -1;
- }
- }
- //3、拨号
- apn_normal_datacall.profile_idx = 0;//默认apn profile_idx
- apn_test1_datacall.profile_idx = profile_idx_char1;
- //拨号时实际使用的ip_name,userdata,password等配置以apn信息中的为准,不使用datacall中的配置
- ret = qser_data_call_start(&apn_normal_datacall, &err);//默认apn拨号
- if(ret != 0)
- {
- printf("\nERROR: setup data call fail!!!\n");
- return -1;
- }
-
- ret = qser_data_call_start(&apn_test1_datacall, &err);
- if(ret != 0)
- {
- printf("\nERROR: setup data call fail!!!\n");
- return -1;
- }
-
- printf("\n[DATA_DEMO]Enter --exit to exit data demo\n");
- while(1)
- {
- fgets(command , MAX_COMMAND_LEN, stdin);
- delete_enter(command);
- if(strcmp(command,"--exit") == 0)
- {
- break;
- }
- else
- {
- printf("\n[DATA_DEMO]Enter --exit to deactive data call and exit data demo\n");
- }
- }
-
- //4、去激活
- //去激活时有效入参仅为profile_idx
- ret = qser_data_call_stop(apn_normal_datacall.profile_idx, apn_normal_datacall.ip_family, &err);
- if(ret < 0)
- {
- printf("\nERROR: deactive data call fail!!!\n");
- return -1;
- }
- ret = qser_data_call_stop(apn_test1_datacall.profile_idx, apn_test1_datacall.ip_family, &err);
- if(ret < 0)
- {
- printf("\nERROR: deactive data call fail!!!\n");
- return -1;
- }
- return 0;
-}
-void evt_cb(qser_data_call_state_s *state)
-{
- char buf_ip[64] = {0};
- char buf_gateway[64] = {0};
- char buf_pri_dns[64] = {0};
- char buf_sec_dns[64] = {0};
- printf("DATA_DEMO_CALL_BACK: profile_idx=%d, name=%s, ip_family=%d, state=%d, error=%d\n"
- , state->profile_idx, state->name, state->ip_family, state->state, state->err);
- #if 1
- printf("DATA_DEMO_CALL_BACK: v4.ip=%s\n"
- , inet_ntoa(state->v4.ip));
- printf("DATA_DEMO_CALL_BACK: v4.gateway=%s\n"
- , inet_ntoa(state->v4.gateway));
- printf("DATA_DEMO_CALL_BACK: v4.pri_dns=%s\n"
- , inet_ntoa(state->v4.pri_dns));
- printf("DATA_DEMO_CALL_BACK: v4.sec_dns=%s\n"
- , inet_ntoa(state->v4.sec_dns));
- inet_ntop(AF_INET6, &(state->v6.ip), buf_ip, sizeof(buf_ip));
- inet_ntop(AF_INET6, &(state->v6.gateway), buf_gateway, sizeof(buf_gateway));
- inet_ntop(AF_INET6, &(state->v6.pri_dns), buf_pri_dns, sizeof(buf_pri_dns));
- inet_ntop(AF_INET6, &(state->v6.sec_dns), buf_sec_dns, sizeof(buf_sec_dns));
- printf("DATA_DEMO_CALL_BACK: v6.ip=%s\n", buf_ip);
- printf("DATA_DEMO_CALL_BACK: v6.gateway=%s\n", buf_gateway);
- printf("DATA_DEMO_CALL_BACK: v6.pri_dns=%s\n", buf_pri_dns);
- printf("DATA_DEMO_CALL_BACK: v6.sec_dns=%s\n", buf_sec_dns);
- #endif
- //后续对回调函数中返回值的处理建议放在其它线程中进行,避免阻塞在回调函数中影响后续消息上报
-}
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-fota-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-fota-demo.cpp
deleted file mode 100755
index de637ec..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-fota-demo.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-#include <pthread.h>
-
-int (*lynq_get_upgrade_status)(void);
-int (*lynq_fota_set_addr_value)(char *value,int size);
-int (*lynq_fota_nrestart)(void);
-int (*lynq_rock_main)(int first_run);
-int (*lynq_read_process)(void);
-void *dlHandle_fota = NULL;
-
-void *thread_function_noreboot(void *arg)
-{
-
- lynq_fota_nrestart();
- return NULL;
-}
-
-void *thread_function_reboot(void *arg)
-{
-
- lynq_rock_main(1);
- return NULL;
-}
-
-
-int main(int argc,char *argv[])
-{
- int ret = 0;
- int reboot_flag;
- char *value = argv[1];
- printf("Enter main function\n");
-
- const char *lynqLibPath_fota = "/lib/liblynq-fota.so";
- dlHandle_fota = dlopen(lynqLibPath_fota, RTLD_NOW);
- if (dlHandle_fota == NULL)
- {
- printf("dlopen dlHandle_fota failed: %s\n", dlerror());
- return -1;
- }
-
- lynq_fota_set_addr_value = (int (*)(char *value,int size))dlsym(dlHandle_fota, "lynq_fota_set_addr_value");
- if(lynq_fota_set_addr_value == NULL)
- {
- printf("lynq fota ser addr value is null\n");
- return -1;
- }
-
- lynq_get_upgrade_status = (int (*)(void))dlsym(dlHandle_fota,"lynq_get_upgrade_status");
- if(lynq_get_upgrade_status == NULL)
- {
- printf("lynq_get_upgrade_status is null\n");
- return -1;
- }
- lynq_fota_nrestart = (int (*)())dlsym(dlHandle_fota,"lynq_fota_nrestart");
- if(lynq_fota_nrestart == NULL)
- {
- printf("lynq_fota_nrestart is null\n");
- return -1;
- }
- lynq_rock_main = (int (*)(int first_run))dlsym(dlHandle_fota,"lynq_rock_main");
- if(lynq_rock_main == NULL)
- {
- printf("lynq_rock_main is null\n");
- return -1;
- }
-
- lynq_read_process = (int (*)(void))dlsym(dlHandle_fota,"lynq_read_process");
- if(lynq_read_process == NULL)
- {
- printf("lynq_read_process is null\n");
- return -1;
- }
-
- ret = lynq_fota_set_addr_value(value,(int )strlen(value));
- if(ret != 0)
- {
- printf("set upgrade package addr failed\n");
- return -1;
- }
- while(1)
- {
- printf("Please chose action 0: upgrade done ,not reboot 1: upgrade done ,reboot 2:get upgrade status 3:read fota process \n");
- scanf("%d",&reboot_flag);
-
- switch(reboot_flag)
- {
- case 0:
- {
- pthread_t thread_id_noreboot;
- int result = pthread_create(&thread_id_noreboot, NULL, thread_function_noreboot, NULL);
- if (result != 0)
- {
- printf("pthread_create failed \n");
- return -1;;
- }
- }
- break;
-
- case 1:
- {
- pthread_t thread_id_reboot;
- int result = pthread_create(&thread_id_reboot, NULL, thread_function_reboot, NULL);
- if (result != 0)
- {
- printf("pthread_create failed \n");
- return -1;;
- }
- }
- break;
- case 2:
- printf("Get fota upgrade status \n");
- ret = lynq_get_upgrade_status();
- printf("lynq_get_upgrade_status ret is %d\n",ret);
- break;
- case 3:
- printf("get fota upgrade process\n");
- ret = lynq_read_process();
- printf("Now upgrade process is %d\n",ret);
- break;
- default:
- printf("please input right flag 0 or 1 or 2 or 3\n");
- break;
-
- }
-
- }
- return 0;
-
-}
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.cpp
deleted file mode 100755
index c8fcda2..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <strings.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <termios.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pthread.h>
-#include <termios.h>
-#include <time.h>
-#include <sys/ioctl.h>
-#include <dlfcn.h>
-#include <stdint.h>
-#include "lynq-qser-gnss-demo.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-int (*qser_Gnss_Init)(uint32_t *h_gnss);
-int (*qser_Gnss_Deinit)(uint32_t);
-int (*qser_AddRxIndMsgHandler)(gnss_handler_func_t handler_ptr,uint32_t);
-int (*qser_Set_Indications)(uint32_t h_gnss,e_msg_id_t);
-int (*qser_Gnss_Start)(uint32_t h_gnss);
-int (*qser_Gnss_Stop)(uint32_t h_gnss);
-int (*qser_Gnss_Delete_Aiding_Data)(uint32_t,DELETE_AIDING_DATA_TYPE_T);
-int (*qser_Gnss_InjectTime)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info);
-int (*qser_Gnss_Server_Configuration)(char *host, char *id, char *password);
-int (*qser_Gnss_download_tle)();
-int (*qser_Gnss_injectEphemeris)(uint32_t);
-int (*qser_Gnss_Set_Frequency)(uint32_t, int);
-void *dlHandle_gnss;
-
-int main(int argc, char *argv[])
-{
- int ret;
- int opt = 0;
- char *lynqLib_gnss = "/lib/liblynq-qser-gnss.so";
- char dev_file[12] = {0};
- uint32_t ph_gnss;
- dlHandle_gnss = dlopen(lynqLib_gnss, RTLD_NOW);
- while(1)
- {
- printf("=========gnss main=========\n");
- user_help();
- scanf("%d", &opt);
- while(getchar()!='\n');
- switch (opt)
- {
- case -1:
- {
- printf("main exit\n");
- return 0;
- }
-
- case 1:
- {
- qser_Gnss_Init=(int(*)(uint32_t *h_gnss))dlsym(dlHandle_gnss, "qser_Gnss_Init");
- ret = qser_Gnss_Init(&ph_gnss);
- if(ret < 0)
- {
- printf("mopen_gnss_client_init FAIL.\n");
- return -1;
- }
- printf("mopen_gnss_client_init success , with address=%d\n", ph_gnss);
- break;
- }
- case 2:
- {
- qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
- ret =qser_Gnss_Deinit(ph_gnss);
- if(ret < 0)
- {
- printf("mopen_gnss_client_Deinit FAIL.\n");
- return -1;
- }
- printf("mopen_gnss_client_Deinit success \n");
- break;
- }
- case 3:
- {
- qser_AddRxIndMsgHandler=(int(*)(gnss_handler_func_t,uint32_t))dlsym(dlHandle_gnss, "qser_AddRxIndMsgHandler");
- ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
- if(ret < 0)
- {
- printf("lynq_AddRxIndMsgHandler fail\n");
- qser_Gnss_Deinit(ph_gnss);
- return -1;
- }
- printf("add success\n");
- break;
- }
- case 4:
- {
- e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
- qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
- ret = qser_Set_Indications(ph_gnss,ptr2);
- if(ret < 0)
- {
- printf("lynq_Set_LOCATION_INFO fail\n");
- qser_Gnss_Deinit(ph_gnss);
- return -1;
- }
- printf("set location mode success\n");
- break;
- }
- case 5:
- {
- e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
- qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
- ret = qser_Set_Indications(ph_gnss,ptr4);
- if(ret < 0)
- {
- printf("lynq_Set_NMEA_INFO fail\n");
- qser_Gnss_Deinit(ph_gnss);
- return -1;
- }
- printf("set nmea mode success\n");
- break;
-
- }
- case 6:
- {
- qser_Gnss_Start=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Start");
- ret = qser_Gnss_Start(ph_gnss);
- if(ret < 0)
- {
- printf("lynq_Gnss_Start fail\n");
- return -1;
- }
- printf("start success\n");
- break;
- }
- case 7:
- {
- qser_Gnss_Stop=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Stop");
- ret = qser_Gnss_Stop(ph_gnss);
- if(ret < 0)
- {
- printf("lynq_Gnss_Stop fail\n");
- qser_Gnss_Deinit(ph_gnss);
- return -1;
- }
- printf("stop success\n");
- break;
- }
-
- case 8:
- {
- int opt_1;
- DELETE_AIDING_DATA_TYPE_T ptr;
- qser_Gnss_Delete_Aiding_Data=(int(*)(uint32_t,DELETE_AIDING_DATA_TYPE_T))dlsym(dlHandle_gnss, "qser_Gnss_Delete_Aiding_Data");
- printf("=========delete aiding data type=========\n");
- delete_type();
- scanf("%d", &opt_1);
- while(getchar()!='\n');
- switch(opt_1)
- {
- case 0:
- {
- ptr = DELETE_NOTHING;//hot
- break;
- }
- case 1:
- {
- ptr = DELETE_EPHEMERIS;//warm
- break;
- }
- case 2:
- {
- ptr = DELETE_ALMANAC;
- break;
- }
- case 3:
- {
- ptr = DELETE_POSITION_TIME;
- break;
- }
- case 4:
- {
- ptr = DELETE_UTC;
- break;
- }
- case 5:
- {
- ptr = DELETE_ALL;//cold
- break;
- }
- default:
- {
- printf("input error\n");
- return -1;
- }
- }
- ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
- if(ret < 0)
- {
- printf("lynq_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
- qser_Gnss_Deinit(ph_gnss);
- return -1;
- }
- printf("lynq_Gnss_Delete_Aiding_Data %d success\n",opt_1);
- break;
- }
- case 9:
- {
- LYNQ_INJECT_TIME_INTO_T time_test;
- qser_Gnss_InjectTime=(int(*)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info))dlsym(dlHandle_gnss, "qser_Gnss_InjectTime");
- ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
- if(ret < 0)
- {
- printf("qser_Gnss_InjectTime fail\n");
- qser_Gnss_Deinit(ph_gnss);
- return -1;
- }
- printf("qser_Gnss_InjectTime success\n");
- break;
- }
- case 10:
- {
- qser_Gnss_download_tle=(int(*)())dlsym(dlHandle_gnss, "qser_Gnss_download_tle");
- ret = qser_Gnss_download_tle();
- if(ret < 0)
- {
- printf("qser_Gnss_download_tle fail\n");
- return -1;
- }
- printf("qser_Gnss_download_tle success\n");
- break;
- }
- case 11:
- {
- int frequency;
- qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
- printf("=========delete aiding data type=========\n");
- scanf("%d", &frequency);
- ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
- if(ret < 0)
- {
- printf("qser_Gnss_Set_Frequency fail\n");
- return -1;
- }
- printf("frequency is %d\n",frequency);
- printf("qser_Gnss_Set_Frequency success\n");
- break;
- }
- case 12:
- {
- int (*qser_Gnss_injectEphemeris)(uint32_t);
- qser_Gnss_injectEphemeris=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_injectEphemeris");
- ret = qser_Gnss_injectEphemeris(ph_gnss);
- if(ret < 0)
- {
- printf("qser_Gnss_injectEphemeris fail\n");
- return -1;
- }
- printf("qser_Gnss_injectEphemeri ssuccess\n");
- break;
- }
- case 13:
- {
- qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
- ret = qser_Gnss_Server_Configuration(NULL,"lcz","123456");
- if(ret < 0)
- {
- printf("qser_Gnss_Server_Configuration fail\n");
- return -1;
- }
- printf("qser_Gnss_Server_Configuration ssuccess\n");
- break;
- }
- default:
- {
- printf("input error,please re-enter\n");
- break;
- }
- }
- }
- return 0;
-}
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.h
deleted file mode 100755
index 3dc7552..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-gnss-demo.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum
-{
- /**< 0 reserve */
- E_MT_LOC_MSG_ID_LOCATION_INFO = 1, /**< pv_data = &QL_LOC_LOCATION_INFO_T */
- /**< 2 reserve */
- E_MT_LOC_MSG_ID_NMEA_INFO = 3, /**< pv_data = &QL_LOC_NMEA_INFO_T */
-}e_msg_id_t;
-
-#define MOPEN_GNSS_NMEA_MAX_LENGTH 255 /** NMEA string maximum length. */
-typedef struct
-{
- int64_t timestamp; /**< System Timestamp, marked for when got the nmea data */
- int length; /**< NMEA string length. */
- char nmea[MOPEN_GNSS_NMEA_MAX_LENGTH + 1]; /**< NMEA string.*/
-}mopen_gnss_nmea_info_t; /* Message */
-
-struct mopen_location_info_t
-{
- uint32_t size; /**< Set to the size of mcm_gps_location_t. */
- int flags; /**< Contains GPS location flags bits. */
- int position_source; /**< Provider indicator for HYBRID or GPS. */
- double latitude; /**< Latitude in degrees. */
- double longitude; /**< Longitude in degrees. */
- double altitude; /**< Altitude in meters above the WGS 84 reference ellipsoid. */
- float speed; /**< Speed in meters per second. */
- float bearing; /**< Heading in degrees. */
- float accuracy; /**< Expected accuracy in meters. */
- int64_t timestamp; /**< Timestamp for the location fix in UTC million-second base. */
- int32_t is_indoor; /**< Location is indoors. */
- float floor_number; /**< Indicates the floor number. */
-};
-
-/*Instantiate callback function*/
-void cb
-(
- uint32_t h_loc,
- e_msg_id_t e_msg_id,
- void *pv_data,
- void *context_ptr
- )
-{
- printf("e_msg_id=%d\n", e_msg_id);
- switch(e_msg_id)
- {
- case E_MT_LOC_MSG_ID_LOCATION_INFO:
- {
- mopen_location_info_t *pt_location = (mopen_location_info_t *)pv_data;
- printf("**** flag=0x%X, Latitude = %f, Longitude=%f, altitude = %f, speed = %f, timestamp = %lld ****\n",
- pt_location->flags,
- pt_location->latitude,
- pt_location->longitude,
- pt_location->altitude,
- pt_location->speed,
- pt_location->timestamp);
- break;
- }
- case E_MT_LOC_MSG_ID_NMEA_INFO:
- {
- mopen_gnss_nmea_info_t *pt_nmea = (mopen_gnss_nmea_info_t *)pv_data;
-
- printf("**** NMEA info: timestamp=%lld, length=%d, nmea=%s ****\n",
- pt_nmea->timestamp, pt_nmea->length, pt_nmea->nmea);
- break;
- }
- }
-}
-
-typedef void (*gnss_handler_func_t)
-(
- uint32_t h_loc,
- e_msg_id_t e_msg_id,
- void *pv_data,
- void *context_ptr
- );
-
-typedef enum {
- DELETE_NOTHING = 0, /**< Delete nothing. */
- DELETE_EPHEMERIS = 1, /**< Delete ephemeris data. */
- DELETE_ALMANAC = 2, /**< Delete almanac data. */
- DELETE_POSITION_TIME = 3, /**< Delete position and time data. */
- DELETE_UTC = 4, /**< Delete UTC data. */
- DELETE_ALL = 5, /**< Delete all location data. */
-}DELETE_AIDING_DATA_TYPE_T;
-
-typedef struct
-{
- uint32_t year; // >1980
- uint32_t month; // 1-12
- uint32_t day; // 1-31
- uint32_t hour; // 0-23
- uint32_t minute; // 0-59
- uint32_t second; // 0-59
- uint32_t millisecond; // 0-999
-}LYNQ_INJECT_TIME_INTO_T; /* Message */
-
-
-void user_help(void)
-{
- printf("\t-1 exit\n"
- "\t1 gnss init\n"
- "\t2 gnss deinit \n"
- "\t3 gnss add handle function\n"
- "\t4 gnss set single mode\n"
- "\t5 gnss set get_para_from_nmea mode\n"
- "\t6 gnss start\n"
- "\t7 gnss stop\n"
- "\t8 gnss Delete_Aiding_Data and reset\n"
- "\t9 gnss injecttime\n"
- "\t10 gnss download tle\n"
- "\t11 gnss set frequency\n"
- "\t12 gnss inject ephemeris\n"
- "\t13 gnss server_configuration\n"
- "please input operator: >> ");
-}
-void delete_type(void)
-{
- printf("\t0 DELETE_NOTHING\n"
- "\t1 DELETE_EPHEMERIS\n"
- "\t2 DELETE_ALMANAC\n"
- "\t3 DELETE_POSITION_TIME \n"
- "\t4 DELETE_UTC\n"
- "\t5 DELETE_ALL\n"
- "please input operator: >> ");
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-network-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-network-demo.cpp
deleted file mode 100755
index ca0874a..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-network-demo.cpp
+++ /dev/null
@@ -1,633 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <dlfcn.h>
-#include <sys/types.h>
-//#include <pthread.h>
-#include <unistd.h>
-#include "lynq_qser_network.h"
-
-#ifndef LOG_TAG
-#define LOG_TAG "QSER_NETWORK_DEMO"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void *handle_network;
-
-int (*qser_nw_client_init_p)(nw_client_handle_type * h_nw);
-int (*qser_nw_client_deinit_p)(nw_client_handle_type h_nw);
-int (*qser_nw_set_config_p)(nw_client_handle_type h_nw, QSER_NW_CONFIG_INFO_T *pt_info);
-int (*qser_nw_get_operator_name_p)(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info );
-int (*qser_nw_get_reg_status_p)(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info);
-int (*qser_nw_add_rx_msg_handler_p)(nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr);
-int (*qser_nw_get_signal_strength_p)(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info);
-int (*qser_nw_set_oos_config_p)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
-int (*qser_nw_get_oos_config_p)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
-int (*qser_nw_set_rf_mode_p) (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T rf_mode);
-int (*qser_nw_get_rf_mode_p) (nw_client_handle_type h_nw,E_QSER_NW_RF_MODE_TYPE_T* rf_mode);
-int (*qser_nw_set_ims_enable_p) (nw_client_handle_type h_nw,E_QSER_NW_IMS_MODE_TYPE_T ims_mode);
-int (*qser_nw_get_ims_reg_status_p) (nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info);
-
-
-
-int getFunc()
-{
- const char *lynq_libpath_network = "/lib/liblynq-qser-network.so";
-
- handle_network = dlopen(lynq_libpath_network,RTLD_NOW);
- if(NULL == handle_network)
- {
- printf("dlopen lynq_libpath_network fail:%s",dlerror());
- exit(EXIT_FAILURE);
- }
-
- qser_nw_client_init_p = (int (*)(nw_client_handle_type * h_nw))dlsym(handle_network,"qser_nw_client_init");
- qser_nw_client_deinit_p = (int (*)(nw_client_handle_type h_nw))dlsym(handle_network,"qser_nw_client_deinit");
- qser_nw_set_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_config");
- qser_nw_get_operator_name_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info ))dlsym(handle_network,"qser_nw_get_operator_name");
- qser_nw_get_reg_status_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_reg_status");
- qser_nw_get_signal_strength_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_signal_strength");
- qser_nw_add_rx_msg_handler_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr,void* contextPtr))dlsym(handle_network,"qser_nw_add_rx_msg_handler");
- qser_nw_get_oos_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_oos_config");
- qser_nw_set_oos_config_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info))dlsym(handle_network,"qser_nw_set_oos_config");
- qser_nw_set_rf_mode_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T rf_mode))dlsym(handle_network,"qser_nw_set_rf_mode");
- qser_nw_get_rf_mode_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_RF_MODE_TYPE_T* rf_mode))dlsym(handle_network,"qser_nw_get_rf_mode");
- qser_nw_set_ims_enable_p = (int (*)(nw_client_handle_type h_nw, E_QSER_NW_IMS_MODE_TYPE_T ims_mode))dlsym(handle_network,"qser_nw_set_ims_enable");
- qser_nw_get_ims_reg_status_p = (int (*)(nw_client_handle_type h_nw, QSER_NW_IMS_REG_STATUS_INFO_T *pt_info))dlsym(handle_network,"qser_nw_get_ims_reg_status");
-
- if(qser_nw_client_deinit_p==NULL || qser_nw_client_init_p==NULL || qser_nw_set_config_p ==NULL ||
- qser_nw_get_operator_name_p == NULL || qser_nw_get_reg_status_p ==NULL || qser_nw_add_rx_msg_handler_p==NULL ||
- qser_nw_set_rf_mode_p == NULL || qser_nw_get_rf_mode_p == NULL || qser_nw_get_oos_config_p == NULL || qser_nw_set_oos_config_p == NULL ||
- qser_nw_set_ims_enable_p == NULL || qser_nw_get_ims_reg_status_p == NULL)
- {
- printf("get func pointer null");
- exit(EXIT_FAILURE);
- }
- return 0;
-}
-
-static int test_nw(void);
-
-int main(int argc, char const *argv[])
-{
- printf("--------->[%s,%d] start \n",__FUNCTION__,__LINE__);
-
- if(getFunc()==0)
- {
- test_nw();
- }
-
- return 0;
-}
-
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-st_api_test_case at_nw_testlist[] =
-{
- {0, "qser_nw_client_init"},
- {1, "qser_nw_set_config"},
- {2, "qser_nw_get_operator_name"},
- {3, "qser_nw_get_reg_status"},
- {4, "qser_nw_add_rx_msg_handler"},
- {5, "qser_nw_get_signal_strength"},
- {6, "qser_nw_set_oos_config"},
- {7, "qser_nw_get_oos_config"},
- {8, "qser_nw_set_rf_mode"},
- {9, "qser_nw_get_rf_mode"},
- {10, "qser_nw_set_ims_enable"},
- {11, "qser_nw_get_ims_reg_status"},
- {12, "qser_nw_client_deinit"},
- {-1, "quit"}
-};
-
-typedef int (*TEST)(void);
-
-typedef struct
-{
- char *group_name;
- st_api_test_case *test_cases;
- TEST pf_test;
-} func_api_test_t;
-
-func_api_test_t t_nw_test = {"nw", at_nw_testlist, test_nw};
-
-void show_group_help(func_api_test_t *pt_test)
-{
- int i;
-
- printf("Group Name:%s, Supported test cases:\n", pt_test->group_name);
- for(i = 0; ; i++)
- {
- if(pt_test->test_cases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", pt_test->test_cases[i].cmdIdx, pt_test->test_cases[i].funcName);
- }
-}
-
-static nw_client_handle_type h_nw = 0;
-
-char *tech_domain[] = {"NONE", "3GPP", "3GPP2"};
-char *radio_tech[] = {"unknown",
- "TD_SCDMA", "GSM", "HSPAP", "LTE", "EHRPD", "EVDO_B",
- "HSPA", "HSUPA", "HSDPA", "EVDO_A", "EVDO_0", "1xRTT",
- "IS95B", "IS95A", "UMTS", "EDGE", "GPRS", "NONE"};
-
-void nw_event_ind_handler (
- nw_client_handle_type h_nw,
- u_int32_t ind_flag,
- void *ind_msg_buf,
- u_int32_t ind_msg_len,
- void *contextPtr)
-{
- switch(ind_flag) {
- case NW_IND_VOICE_REG_EVENT_IND_FLAG:
- {
- QSER_NW_VOICE_REG_EVENT_IND_T *ind = (QSER_NW_VOICE_REG_EVENT_IND_T*)ind_msg_buf;
- printf("Recv event indication : VOICE REG EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
- if(ind->registration_valid)
- {
- printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[ind->registration.tech_domain],
- radio_tech[ind->registration.radio_tech],
- ind->registration.roaming,
- ind->registration.registration_state);
- }
- if(ind->registration_details_3gpp_valid)
- {
- printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[ind->registration_details_3gpp.tech_domain],
- radio_tech[ind->registration_details_3gpp.radio_tech],
- ind->registration_details_3gpp.mcc,
- ind->registration_details_3gpp.mnc,
- ind->registration_details_3gpp.roaming,
- ind->registration_details_3gpp.forbidden,
- ind->registration_details_3gpp.cid,
- ind->registration_details_3gpp.lac,
- ind->registration_details_3gpp.psc,
- ind->registration_details_3gpp.tac);
- }
-
- if(ind->registration_details_3gpp2_valid)
- {
- printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[ind->registration_details_3gpp2.tech_domain],
- radio_tech[ind->registration_details_3gpp2.radio_tech],
- ind->registration_details_3gpp2.mcc,
- ind->registration_details_3gpp2.mnc,
- ind->registration_details_3gpp2.roaming,
- ind->registration_details_3gpp2.forbidden,
- ind->registration_details_3gpp2.sid,
- ind->registration_details_3gpp2.nid,
- ind->registration_details_3gpp2.bsid);
- }
-
- break;
- }
- case NW_IND_DATA_REG_EVENT_IND_FLAG:
- {
- QSER_NW_DATA_REG_EVENT_IND_T *ind = (QSER_NW_DATA_REG_EVENT_IND_T*)ind_msg_buf;
-
- printf("Recv event indication : DATA REG EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
-
- if(ind->registration_valid)
- {
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[ind->registration.tech_domain],
- radio_tech[ind->registration.radio_tech],
- ind->registration.roaming,
- ind->registration.registration_state);
- }
- if(ind->registration_details_3gpp_valid)
- {
- printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[ind->registration_details_3gpp.tech_domain],
- radio_tech[ind->registration_details_3gpp.radio_tech],
- ind->registration_details_3gpp.mcc,
- ind->registration_details_3gpp.mnc,
- ind->registration_details_3gpp.roaming,
- ind->registration_details_3gpp.forbidden,
- ind->registration_details_3gpp.cid,
- ind->registration_details_3gpp.lac,
- ind->registration_details_3gpp.psc,
- ind->registration_details_3gpp.tac);
- }
-
- if(ind->registration_details_3gpp2_valid)
- {
- printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, prl=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[ind->registration_details_3gpp2.tech_domain],
- radio_tech[ind->registration_details_3gpp2.radio_tech],
- ind->registration_details_3gpp2.mcc,
- ind->registration_details_3gpp2.mnc,
- ind->registration_details_3gpp2.roaming,
- ind->registration_details_3gpp2.forbidden,
- ind->registration_details_3gpp2.inPRL,
- ind->registration_details_3gpp2.css,
- ind->registration_details_3gpp2.sid,
- ind->registration_details_3gpp2.nid,
- ind->registration_details_3gpp2.bsid);
- }
-
- break;
- }
- case NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG:
- {
- QSER_NW_SINGNAL_EVENT_IND_T *ind = (QSER_NW_SINGNAL_EVENT_IND_T*)ind_msg_buf;
-
- printf("Recv event indication : SIGNAL STRENGTH EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
- if(ind->gsm_sig_info_valid)
- {
- printf("gsm_sig_info: rssi=%d\n",
- ind->gsm_sig_info.rssi);
- }
-
- if(ind->wcdma_sig_info_valid)
- {
- printf("wcdma_sig_info: rssi=%d, ecio=%d\n",
- ind->wcdma_sig_info.rssi,
- ind->wcdma_sig_info.ecio);
- }
- if(ind->tdscdma_sig_info_valid)
- {
- printf("tdscdma_sig_info: rssi=%d, rscp=%d, ecio=%d, sinr=%d\n",
- ind->tdscdma_sig_info.rssi,
- ind->tdscdma_sig_info.rscp,
- ind->tdscdma_sig_info.ecio,
- ind->tdscdma_sig_info.sinr);
- }
- if(ind->lte_sig_info_valid)
- {
- printf("lte_sig_info: rssi=%d, rsrq=%d, rsrp=%d, snr=%d\n",
- ind->lte_sig_info.rssi,
- ind->lte_sig_info.rsrq,
- ind->lte_sig_info.rsrp,
- ind->lte_sig_info.snr);
- }
- if(ind->cdma_sig_info_valid)
- {
- printf("cdma_sig_info: rssi=%d, ecio=%d\n",
- ind->cdma_sig_info.rssi,
- ind->cdma_sig_info.ecio);
- }
- if(ind->hdr_sig_info_valid)
- {
- printf("hdr_sig_info: rssi=%d, ecio=%d, sinr=%d, io=%d\n",
- ind->hdr_sig_info.rssi,
- ind->hdr_sig_info.ecio,
- ind->hdr_sig_info.sinr,
- ind->hdr_sig_info.io);
- }
- break;
- }
- case NW_IND_IMS_REG_EVENT_IND_FLAG:
- {
- printf("Recv event indication : IMS REG EVENT\n");
-
- break;
- }
- default:
- break;
- }
-}
-
-static int test_nw(void)
-{
- int cmdIdx = 0;
- int ret = 0;
-
- while(1)
- {
- show_group_help(&t_nw_test);
- printf("please input cmd index(-1 exit): ");
- ret = scanf("%d", &cmdIdx);
- if(ret != 1)
- {
- char c;
- while(((c=getchar()) != '\n') && (c != EOF))
- {
- ;
- }
- continue;
- }
- if(cmdIdx == -1)
- {
- break;
- }
- switch(cmdIdx)
- {
- case 0://"qser_nw_client_init"
- {
-
- ret = qser_nw_client_init(&h_nw);
- printf("qser_nw_client_init ret = %d\n", ret);
- break;
- }
- case 1://"qser_nw_set_config"
- {
- QSER_NW_CONFIG_INFO_T t_info = {0};
-
- int mask = 0;
- printf("please input decimal format number, whose hex format is (TDSCDMA | LTE | EVDO | CDMA | WCDMA | GSM) : \n");
- scanf("%d", &mask);
- t_info.preferred_nw_mode = mask;
-
- ret = qser_nw_set_config(h_nw, &t_info);
- printf("qser_nw_set_config ret = %d\n", ret);
- break;
- }
- case 2://"qser_nw_get_operator_name"
- {
- QSER_NW_OPERATOR_NAME_INFO_T t_info;
- ret = qser_nw_get_operator_name(h_nw, &t_info);
- printf("qser_nw_get_operator_name ret = %d, long_eons=%s, short_eons=%s, mcc=%s, mnc=%s\n", ret,
- t_info.long_eons, t_info.short_eons, t_info.mcc, t_info.mnc);
- break;
- }
- case 3://"qser_nw_get_reg_status"
- {
- QSER_NW_REG_STATUS_INFO_T t_info;
-
- memset(&t_info, 0, sizeof(QSER_NW_REG_STATUS_INFO_T));
- ret = qser_nw_get_reg_status(h_nw, &t_info);
- printf("qser_nw_get_reg_status ret = %d, detail info:\n", ret);
- if(t_info.voice_registration_valid)
- {
- printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[t_info.voice_registration.tech_domain],
- radio_tech[t_info.voice_registration.radio_tech],
- t_info.voice_registration.roaming,
- t_info.voice_registration.registration_state);
- }
- if(t_info.data_registration_valid)
- {
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- tech_domain[t_info.data_registration.tech_domain],
- radio_tech[t_info.data_registration.radio_tech],
- t_info.data_registration.roaming,
- t_info.data_registration.registration_state);
- }
- if(t_info.voice_registration_details_3gpp_valid)
- {
- printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[t_info.voice_registration_details_3gpp.tech_domain],
- radio_tech[t_info.voice_registration_details_3gpp.radio_tech],
- t_info.voice_registration_details_3gpp.mcc,
- t_info.voice_registration_details_3gpp.mnc,
- t_info.voice_registration_details_3gpp.roaming,
- t_info.voice_registration_details_3gpp.forbidden,
- t_info.voice_registration_details_3gpp.cid,
- t_info.voice_registration_details_3gpp.lac,
- t_info.voice_registration_details_3gpp.psc,
- t_info.voice_registration_details_3gpp.tac);
- }
- if(t_info.data_registration_details_3gpp_valid)
- {
- printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[t_info.data_registration_details_3gpp.tech_domain],
- radio_tech[t_info.data_registration_details_3gpp.radio_tech],
- t_info.data_registration_details_3gpp.mcc,
- t_info.data_registration_details_3gpp.mnc,
- t_info.data_registration_details_3gpp.roaming,
- t_info.data_registration_details_3gpp.forbidden,
- t_info.data_registration_details_3gpp.cid,
- t_info.data_registration_details_3gpp.lac,
- t_info.data_registration_details_3gpp.psc,
- t_info.data_registration_details_3gpp.tac);
- }
-
- if(t_info.voice_registration_details_3gpp2_valid)
- {
- printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[t_info.voice_registration_details_3gpp2.tech_domain],
- radio_tech[t_info.voice_registration_details_3gpp2.radio_tech],
- t_info.voice_registration_details_3gpp2.mcc,
- t_info.voice_registration_details_3gpp2.mnc,
- t_info.voice_registration_details_3gpp2.roaming,
- t_info.voice_registration_details_3gpp2.forbidden,
- t_info.voice_registration_details_3gpp2.sid,
- t_info.voice_registration_details_3gpp2.nid,
- t_info.voice_registration_details_3gpp2.bsid);
- }
-
- if(t_info.data_registration_details_3gpp2_valid)
- {
- printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- tech_domain[t_info.data_registration_details_3gpp2.tech_domain],
- radio_tech[t_info.data_registration_details_3gpp2.radio_tech],
- t_info.data_registration_details_3gpp2.mcc,
- t_info.data_registration_details_3gpp2.mnc,
- t_info.data_registration_details_3gpp2.roaming,
- t_info.data_registration_details_3gpp2.forbidden,
- t_info.data_registration_details_3gpp2.sid,
- t_info.data_registration_details_3gpp2.nid,
- t_info.data_registration_details_3gpp2.bsid);
- }
-
- break;
- }
- case 12://"qser_nw_client_deinit"
- {
- ret = qser_nw_client_deinit(h_nw);
- printf("qser_nw_client_deinit ret = %d\n", ret);
- break;
- }
- case 4 :
- {
- ret = qser_nw_add_rx_msg_handler(h_nw, nw_event_ind_handler, NULL);
- printf("qser_nw_add_rx_msg_handler, ret=%d\n", ret);
- break;
- }
- case 5 :
- {
- QSER_NW_SIGNAL_STRENGTH_INFO_T t_info;
- ret = qser_nw_get_signal_strength(h_nw, &t_info);
- printf("qser_nw_get_signal_strength, ret=%d\n", ret);
- if(ret==0)
- {
- printf("qser_solicited_signal_strength gsm_sig_info_valid = %d\n"
- " gsm_sig_info.rssi = %d\n"
- " wcdma _sig_info_valid = %d\n"
- " wcdma_sig_info.rssi = %d\n"
- " wcdma_sig_info.ecio = %d\n"
- " tdscdma_sig_info_valid = %d\n"
- " lte_sig_info_valid = %d\n"
- " lte_sig_info.rssi = %d\n"
- " lte_sig_info.rsrp = %d\n"
- " lte_sig_info.rsrq = %d\n"
- " lte_sig_info.snr = %d\n"
- " cdma_sig_info_valid = %d\n"
- " hdr_sig_info_valid = %d\n"
- " nr_sig_info_valid = %d\n"
- " nr_sig_info.ssRsrp = %d\n"
- " nr_sig_info.ssRsrq = %d\n"
- " nr_sig_info.ssSinr = %d\n"
- " nr_sig_info.csiRsrp = %d\n"
- " nr_sig_info.csiRsrq = %d\n"
- " nr_sig_info.csiSinr = %d\n",
- t_info.gsm_sig_info_valid, t_info.gsm_sig_info.rssi,
- t_info.wcdma_sig_info_valid, t_info.wcdma_sig_info.rssi, t_info.wcdma_sig_info.ecio,
- t_info.tdscdma_sig_info_valid,
- t_info.lte_sig_info_valid, t_info.lte_sig_info.rssi, t_info.lte_sig_info.rsrp, t_info.lte_sig_info.rsrq, t_info.lte_sig_info.snr,
- t_info.cdma_sig_info_valid,
- t_info.hdr_sig_info_valid,
- t_info.nr_sig_info_valid, t_info.nr_sig_info.ssRsrp, t_info.nr_sig_info.ssRsrq, t_info.nr_sig_info.ssSinr,
- t_info.nr_sig_info.csiRsrp, t_info.nr_sig_info.csiRsrq, t_info.nr_sig_info.csiSinr);
-
- }
- break;
- }
- case 7 :
- {
- QSER_NW_OOS_CONFIG_INFO_T t_info;
- int type = 0;
- printf("please input you want query oos config's type (0: fast network scan config; 1: full band network scan config ) : \n");
- scanf("%d", &type);
- t_info.type = type;
- ret = qser_nw_get_oos_config(h_nw, &t_info);
- printf("qser_nw_get_oos_config, ret=%d\n", ret);
- if(ret==0)
- {
- if(t_info.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
- {
- printf("qser_nw_get_oos_config t_min = %d\n"
- " t_step = %d\n"
- " t_num = %d\n"
- " t_max = %d\n",
- t_info.u.full_band_scan_info.t_min, t_info.u.full_band_scan_info.t_step,
- t_info.u.full_band_scan_info.t_num, t_info.u.full_band_scan_info.t_max);
- }
- else if(t_info.type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
- {
- printf("qser_nw_get_oos_config enable = %d\n"
- " time_interval = %d\n",
- t_info.u.fast_can_info.enable, t_info.u.fast_can_info.time_interval);
- }
- else
- {
- printf("qser_nw_get_oos_config tyep is %d, ret is ok",t_info.type);
- }
-
- }
- break;
- }
- case 6 :
- {
- QSER_NW_OOS_CONFIG_INFO_T t_info;
- int type = 0;
- printf("please input you want set oos config's type (0: fast network scan config; 1: full band network scan config ) : \n");
- scanf("%d", &type);
- t_info.type = type;
- if(t_info.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
- {
- printf("please input t_min: \n");
- scanf("%d", &(t_info.u.full_band_scan_info.t_min));
- printf("please input t_step: \n");
- scanf("%d", &(t_info.u.full_band_scan_info.t_step));
- printf("please input t_num: \n");
- scanf("%d", &(t_info.u.full_band_scan_info.t_num));
- printf("please input t_max: \n");
- scanf("%d", &(t_info.u.full_band_scan_info.t_max));
- ret = qser_nw_set_oos_config(h_nw, &t_info);
- printf("qser_nw_get_oos_config, ret=%d\n", ret);
- }
- else if(t_info.type==QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
- {
- printf("please input enable: \n");
- scanf("%d", &(t_info.u.fast_can_info.enable));
- printf("please input time_interval: \n");
- scanf("%d", &(t_info.u.fast_can_info.time_interval));
- ret = qser_nw_set_oos_config(h_nw, &t_info);
- printf("qser_nw_get_oos_config, ret=%d\n", ret);
- }
- else
- {
- ret = qser_nw_set_oos_config(h_nw, &t_info);
- printf("qser_nw_get_oos_config, ret=%d\n", ret);
- }
- break;
- }
- case 9://"qser_nw_get_rf_mode"
- {
- E_QSER_NW_RF_MODE_TYPE_T rf_mode;
- ret = qser_nw_get_rf_mode(h_nw, &rf_mode);
- printf("qser_nw_get_rf_mode ret = %d, rf mode=%d\n", ret, rf_mode);
- break;
- }
- case 8://"qser_nw_set_rf_mode"
- {
- E_QSER_NW_RF_MODE_TYPE_T rf_mode;
- printf("please input you want set rf mode (0: cfun 0; 1: cfun 1; 4: flight mode \n");
- scanf("%d", &rf_mode);
- ret = qser_nw_set_rf_mode(h_nw, rf_mode);
- printf("qser_nw_set_rf_mode %d ret = %dn",rf_mode, ret);
- break;
- }
- case 10://"qser_nw_set_ims_enable"
- {
- E_QSER_NW_IMS_MODE_TYPE_T ims_mode;
- printf("please input you want set ims mode (0: off; 1: volte enable \n");
- scanf("%d", &ims_mode);
- ret = qser_nw_set_ims_enable(h_nw, ims_mode);
- printf("qser_nw_set_ims_enable %d ret = %dn",ims_mode, ret);
- break;
- }
- case 11://"qser_nw_get_ims_reg_status"
- {
- QSER_NW_IMS_REG_STATUS_INFO_T t_info;
- memset(&t_info, 0, sizeof(QSER_NW_IMS_REG_STATUS_INFO_T));
- ret = qser_nw_get_ims_reg_status(h_nw, &t_info);
- printf("qser_nw_get_ims_reg_status ret = %d, detail info:\n", ret);
- if(ret == 0)
- {
- printf("ims_registration: registration_state=%d\n",
- t_info.registration_state);
- }
- break;
- }
- default:
- {
- show_group_help(&t_nw_test);
- }
- }
- }
- return 0;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.cpp
deleted file mode 100755
index a5b0af8..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.cpp
+++ /dev/null
@@ -1,609 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-
-#include"lynq-qser-sim-demo.h"
-#include "mbtk_log.h"
-
-
-#define BUF_SIZE 32
-#define BUF_PIN 8
-#define VER_SIZE 128
-
-typedef uint32_t sim_client_handle_type;
-
-//sim_client_handle_type ph_sim = 2023;
-sim_client_handle_type h_sim = 2023;
-int flag_init = 0;
-
-int (*qser_sim_client_init)(sim_client_handle_type *ph_sim);
-int (*qser_sim_client_deinit)(sim_client_handle_type h_sim);
-int (*qser_sim_getimsi)(
- sim_client_handle_type h_sim,
- QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier info.
- char *imsi, ///< [OUT] IMSI buffer
- size_t imsiLen ///< [IN] IMSI buffer length
-);
-
-int (*qser_sim_geticcid)
-(
- sim_client_handle_type h_sim,
- QSER_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
- char *iccid, ///< [OUT] ICCID
- size_t iccidLen ///< [IN] ICCID buffer length
-);
-
-int (*qser_sim_getphonenumber)
-(
- sim_client_handle_type h_sim,
- QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier.
- char *phone_num, ///< [OUT] phone number
- size_t phoneLen ///< [IN] phone number buffer length
-);
-int (*qser_sim_verifypin)(sim_client_handle_type h_sim, QSER_SIM_VERIFY_PIN_INFO_T *pt_info);
-int (*qser_sim_changepin)(sim_client_handle_type h_sim, QSER_SIM_CHANGE_PIN_INFO_T *pt_info);
-int (*qser_sim_unblockpin)(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info);
-int (*qser_sim_enablepin)(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info);
-int (*qser_sim_disablepin)(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info);
-int (*qser_sim_getcardstatus)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T *pt_info);
-int (*qser_sim_getimei)(sim_client_handle_type h_sim, char *imei);
-int (*qser_get_imei_and_sv)(sim_client_handle_type h_sim,char *imei, char*sv);
-int (*qser_reset_modem)(sim_client_handle_type h_sim);
-int (*qser_get_version)(sim_client_handle_type h_sim, char *buf);
-int (*qser_reset_sim)(sim_client_handle_type h_sim);
-int (*qser_sim_addrxmsghandler)(QSER_SIM_RxMsgHandlerFunc_t handlerPtr);
-
-
-typedef struct
-{
- int cmdIdx;
- const char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "qser_sim_init"},
- {1, "qser_get_imsi"},
- {2, "qser_get_iccid"},
- {3, "qser_get_phonenumber"},
- {4, "qser_verify_pin"},
- {5, "qser_change_pin"},
- {6, "qser_unlock_pin"},
- {7, "qser_enable_pin"},
- {8, "qser_disable_pin"},
- {9, "qser_get_sim_status"},
- {10, "qser_get_imei"},
- {11, "qser_get_imei_and_sv"},
- {12, "qser_reset_modem"},
- {13, "qser_get_version"},
- {14, "qser_reset_sim"},
- {15, "qser_sim_addrxmsghandler"},
- {16, "qser_deinit_sim"},
- {-1, NULL}
-};
-
-void print_help(void)
-{
- int i;
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-void qser_sim_handler(QSER_SIM_MsgRef msgRef) {
- printf("[%s-%d] sim, state = 0x%x========\n", __FUNCTION__, __LINE__, msgRef->e_card_state);
-}
-
-int main(int argc, char const *argv[])
-{
- int cmdIdx = 0;
- int res = 0;
-
- mbtk_log_init("radio", "MBTK");
-
- const char *lynq_libpath_sim = "/lib/liblynq-qser-sim.so";
- void *dlHandle_sim = dlopen(lynq_libpath_sim, RTLD_NOW);
- if (dlHandle_sim == NULL)
- {
- printf("dlopen dlHandle_sim failed: %s\n", dlerror());
- exit(EXIT_FAILURE);
- }
-
- print_help();
- while(1)
- {
- printf("\nplease input cmd index(-1 exit): ");
- scanf("%d", &cmdIdx);
- if(cmdIdx == -1)
- {
- break;
- }
-
- switch(cmdIdx)
- {
- //"qser_sim_init"
- case 0:
- {
- if(flag_init == 1)
- {
- printf("init is already\n");
- break;
- }
- else{
- //int token;
- //printf("input token\n");
- //scanf("%d", &token);
- qser_sim_client_init = (int(*)(sim_client_handle_type *h_sim))dlsym(dlHandle_sim,"qser_sim_client_init");
- if(NULL != qser_sim_client_init)
- {
- res = qser_sim_client_init(&h_sim);
- if(res == 0)
- {
- printf("Run qser_sim_client_init\n");
- flag_init = 1;
- }else{
- printf("qser_sim_client_init error\n");
- }
- }else{
- printf("qser_sim_client_init dlsym error\n");
- }
- break;
- }
- }
-
- //"qser_sim_getimsi"
- case 1:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char imsi[BUF_SIZE] = {0};
- QSER_SIM_APP_ID_INFO_T pt_info;
- qser_sim_getimsi = (int(*)(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info, char *imsi, size_t imsiLen))dlsym(dlHandle_sim,"qser_sim_getimsi");
- if(NULL != qser_sim_getimsi)
- {
- res = qser_sim_getimsi(h_sim, &pt_info, imsi, BUF_SIZE);
- if(res == 0)
- {
- printf("imsi is %s!!!\n",imsi);
- }else{
- printf("get imsi error, res = %d\n", res);
- }
- }else{
- printf("qser_sim_getimsi dlsym error\n");
- }
- }
- break;
- }
-
- //"qser_get_iccid"
- case 2:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char iccid[BUF_SIZE] = {0};
- qser_sim_geticcid = (int(*)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, char *iccid, size_t iccidLen))dlsym(dlHandle_sim,"qser_sim_geticcid");
- if(NULL != qser_sim_geticcid)
- {
- res = qser_sim_geticcid(h_sim, QSER_SIM_SLOT_ID_1, iccid, BUF_SIZE);
- if(res == 0)
- {
- printf("get iccid success!!! iccid is %s\n",iccid);
- }else{
- printf("get iccid error, res = %d\n", res);
- }
- }else{
- printf("qser_sim_geticcid dlsym error\n");
- }
- }
- break;
- }
- //qser_get_phonenumber
- case 3:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char phonenumber[BUF_SIZE] = "";
- QSER_SIM_APP_ID_INFO_T pt_info;
- qser_sim_getphonenumber = (int(*)(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info, char *phone_num, size_t phoneLen))dlsym(dlHandle_sim,"qser_sim_getphonenumber");
- if(NULL != qser_sim_getphonenumber)
- {
- res = qser_sim_getphonenumber(h_sim, &pt_info, phonenumber, BUF_SIZE);
- if(res == 0)
- {
- printf("get phonenumber success!!! phonenumber is %s\n",phonenumber);
- }else{
- printf("get phonenumber error, res = %d\n", res);
- }
- }else{
- printf("qser_sim_getphonenumber dlsym error\n");
- }
- }
- break;
- }
- //qser_verify_pin
- case 4:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char pin[BUF_PIN] = {0};
- QSER_SIM_VERIFY_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- printf("pin_value = %s , pin = %s\n", pt_info.pin_value, pin);
-
- qser_sim_verifypin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_VERIFY_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_verifypin");
- if(NULL != qser_sim_verifypin)
- {
- res = qser_sim_verifypin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("verify pin success!!!\n");
- }else{
- printf("verify pin error, res = %d\n", res);
- }
- }else{
- printf("qser_sim_verifypin dlsym error\n");
- }
- }
- break;
- }
- //qser_change_pin
- case 5:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char old_pin[BUF_PIN] = {0};
- QSER_SIM_CHANGE_PIN_INFO_T pt_info;
- printf("input old pin\n");
- scanf("%s", old_pin);
- char new_pin[BUF_PIN] = {0};
- printf("input new pin\n");
- scanf("%s", new_pin);
- strncpy(pt_info.old_pin_value, old_pin, BUF_PIN);
- strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
- printf("pt_info.old_pin_value = %s, old_pin = %s\n", pt_info.old_pin_value, old_pin);
- printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
-
- qser_sim_changepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_CHANGE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_changepin");
- if(NULL != qser_sim_changepin)
- {
- res = qser_sim_changepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("change pin success!!!\n");
- }else{
- printf("change pin error, res = %d\n", res);
- }
- }else{
- printf("lynq_change_pin dlsym error\n");
- }
- }
- break;
- }
- //qser_unlock_pin
- case 6:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char puk[BUF_PIN] = {0};
- QSER_SIM_UNBLOCK_PIN_INFO_T pt_info;
- printf("input puk\n");
- scanf("%s", puk);
- char new_pin[BUF_PIN] = {0};
- printf("input new pin\n");
- scanf("%s", new_pin);
- memset(pt_info.puk_value, 0, sizeof(pt_info.puk_value));
- memset(pt_info.new_pin_value, 0, sizeof(pt_info.new_pin_value));
- strncpy(pt_info.puk_value, puk, BUF_PIN);
- strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
- printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
- printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
-
- qser_sim_unblockpin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_unblockpin");
- if(NULL != qser_sim_unblockpin)
- {
- res = qser_sim_unblockpin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("unlock pin success!!!\n");
- }else{
- printf("unlock pin error, res = %d\n", res);
- }
- }else{
- printf("qser_sim_unblockpin dlsym error\n");
- }
- }
- break;
- }
- //qser_enable_pin
- case 7:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char pin[BUF_PIN] = {0};
- QSER_SIM_ENABLE_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
-
- qser_sim_enablepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_enablepin");
- if(NULL != qser_sim_enablepin)
- {
- res = qser_sim_enablepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("pin enabled!!!\n");
- }else{
- printf("pin enable error, res =%d\n", res);
- }
- }else{
- printf("qser_sim_enablepin dlsym error\n");
- }
- }
- break;
- }
- //qser_disable_pin
- case 8:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char pin[BUF_PIN] = {0};
- QSER_SIM_ENABLE_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
-
- qser_sim_disablepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_disablepin");
- if(NULL != qser_sim_disablepin)
- {
- res = qser_sim_disablepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("pin disnabled!!!\n");
- }else{
- printf("pin disable error,res = %d\n", res);
- }
- }else{
- printf("qser_sim_disablepin dlsym error\n");
- }
- }
- break;
- }
- //qser_get_sim_status
- case 9:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- QSER_SIM_CARD_STATUS_INFO_T pt_info;
-
- qser_sim_getcardstatus = (int(*)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_getcardstatus");
- if(NULL != qser_sim_getcardstatus)
- {
- res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
- if(res == 0)
- {
- printf("state is 0x%x !!!\n",pt_info.e_card_state);
- }else{
- printf("get imsi error,res = %d\n", res);
- }
- }else{
- printf("qser_sim_getcardstatus dlsym error\n");
- }
- }
- break;
- }
- //qser_deinit_sim
- case 10:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char imei[BUF_SIZE]="";
- qser_sim_getimei = (int(*)(sim_client_handle_type h_sim, char *imei))dlsym(dlHandle_sim,"qser_sim_getimei");
- if(NULL != qser_sim_getimei)
- {
- res = qser_sim_getimei(h_sim, imei);
- if(res == 0)
- {
- printf("get imei success!!!\n");
- }else{
- printf("get imei error, res = %d\n", res);
- }
- }else{
- printf("qser_sim_getimei dlsym error\n");
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_get_imei_and_sv
- case 11:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char imei[BUF_SIZE]="";
- char sv[BUF_SIZE]="";
- qser_get_imei_and_sv = (int(*)(sim_client_handle_type h_sim, char *imei, char *sv))dlsym(dlHandle_sim,"qser_get_imei_and_sv");
- if(NULL != qser_get_imei_and_sv)
- {
- res = qser_get_imei_and_sv(h_sim, imei, sv);
- if(res == 0)
- {
- printf("get imei and sv success!!!\n");
- }else{
- printf("get imei and sv error, res = %d\n", res);
- }
- }else{
- printf("qser_get_imei_and_sv dlsym error\n");
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_reset_modem
- case 12:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- qser_reset_modem = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_modem");
- if(NULL != qser_reset_modem)
- {
- res = qser_reset_modem(h_sim);
- if(res == 0)
- {
- printf("reset modem success!!!\n");
- }else{
- printf("reset modem error, res = %d\n", res);
- }
- }else{
- printf("qser_reset_modem dlsym error\n");
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_get_version
- case 13:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char buf[VER_SIZE]="";
- qser_get_version = (int(*)(sim_client_handle_type h_sim, char *buf))dlsym(dlHandle_sim,"qser_get_version");
- if(NULL != qser_get_version)
- {
- res = qser_get_version(h_sim, buf);
- if(res == 0)
- {
- printf("get version success!!!\n");
- }else{
- printf("get version error, res = %d\n", res);
- }
- }else{
- printf("qser_get_version dlsym error\n");
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_reset_sim
- case 14:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- qser_reset_sim = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_sim");
- if(NULL != qser_reset_sim)
- {
- res = qser_reset_sim(h_sim);
- if(res == 0)
- {
- printf("reset sim success!!!\n");
- }else{
- printf("reset sim error, res = %d\n", res);
- }
- }else{
- printf("qser_reset_sim dlsym error\n");
- }
- }
- //flag_init = 0;
- break;
- }
- case 15://qser_sim_addrxmsghandler
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- qser_sim_addrxmsghandler = (int(*)(QSER_SIM_RxMsgHandlerFunc_t handlerPtr))dlsym(dlHandle_sim,"qser_sim_addrxmsghandler");
- if(NULL != qser_sim_addrxmsghandler)
- {
- res = qser_sim_addrxmsghandler(qser_sim_handler);
- if(res == 0)
- {
- printf("sim addrxmsghandler success is!!!\n");
- }else{
- printf("sim addrxmsghandler errors, res = %d\n", res);
- }
- }else{
- printf("qser_sim_addrxmsghandler dlsym error\n");
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_deinit_sim
- case 16:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- qser_sim_client_deinit = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_sim_client_deinit");
- if(NULL != qser_sim_client_deinit)
- {
- res = qser_sim_client_deinit(h_sim);
- if(res == 0)
- {
- printf("sim deinit success is!!!\n");
- }else{
- printf("sim deint errors, res = %d\n", res);
- }
- }else{
- printf("qser_sim_client_deinit dlsym error\n");
- }
- }
- flag_init = 0;
- break;
- }
- default:
- print_help();
- break;
- }
-
- }
-
- return 0;
-
-
-}
-
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.h
deleted file mode 100755
index 1a4829b..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-sim-demo.h
+++ /dev/null
@@ -1,171 +0,0 @@
-#define QSER_SIM_IMSI_LEN_MAX 16 /** Maximum length of IMSI data. */
-#define QSER_SIM_ICCID_LEN_MAX 20 /** Maximum length of ICCID data. */
-
-
-typedef enum
-{
- E_QSER_SUCCESS = 0, /**< Success. */
- E_QSER_ERROR_BADPARM = 4, /**< Bad parameter. */
-}E_QSER_ERROR_CODE_T;
-
-typedef enum
-{
- QSER_SIM_SLOT_ID_1 = 0xB01, /**< Identify card in slot 1. */
- QSER_SIM_SLOT_ID_2 = 0xB02, /**< Identify card in slot 2. */
-}QSER_SIM_SLOT_ID_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_APP_TYPE_UNKNOWN = 0xB00, /**< Unknown application type */
- QSER_SIM_APP_TYPE_3GPP = 0xB01, /**< Identify the SIM/USIM application on the card. */
- QSER_SIM_APP_TYPE_3GPP2 = 0xB02, /**< Identify the RUIM/CSIM application on the card. */
- QSER_SIM_APP_TYPE_ISIM = 0xB03, /**< Identify the ISIM application on the card. */
-}QSER_SIM_APP_TYPE_T;
-
-typedef struct
-{
- QSER_SIM_SLOT_ID_TYPE_T e_slot_id; /**< Indicates the slot to be used. */
- QSER_SIM_APP_TYPE_T e_app; /**< Indicates the type of the application. */
-}QSER_SIM_APP_ID_INFO_T; /* Type */
-
-#define QSER_SIM_PIN_LEN_MAX 8+1 /** Maximum length of PIN data. */
-
-typedef enum
-{
- QSER_SIM_PIN_ID_1 = 0xB01, /**< Level 1 user verification. */
- QSER_SIM_PIN_ID_2 = 0xB02, /**< Level 2 user verification. */
-}QSER_SIM_PIN_ID_TYPE_T;
-
-typedef struct
-{
- QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t pin_value_len; /**< Must be set to the number of elements in pin_value. */
- char pin_value[QSER_SIM_PIN_LEN_MAX]; /* Value of the PIN */
-}QSER_SIM_VERIFY_PIN_INFO_T;
-
-typedef struct
-{
- QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t old_pin_value_len; /**< Must be set to the number of elements in old_pin_value. */
- char old_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the old PIN as a sequence of ASCII characters. */
- uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
- char new_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QSER_SIM_CHANGE_PIN_INFO_T;
-
-typedef struct
-{
- QSER_SIM_APP_ID_INFO_T app_info; /**< Application identification information. */
- QSER_SIM_PIN_ID_TYPE_T pin_id; /**< PIN ID. */
- uint32_t puk_value_len; /**< Must be set to the number of elements in puk_value. */
- char puk_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the PUK as a sequence of ASCII characters. */
- uint32_t new_pin_value_len; /**< Must be set to the number of elements in new_pin_value. */
- char new_pin_value[QSER_SIM_PIN_LEN_MAX]; /**< Value of the new PIN as a sequence of ASCII characters. */
-}QSER_SIM_UNBLOCK_PIN_INFO_T;
-
-/** Enables the PIN on an application. */
-typedef QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_ENABLE_PIN_INFO_T; //Same
-
-/** Disables the PIN of an application, */
-typedef QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_DISABLE_PIN_INFO_T; //Same
-
-
-typedef enum
-{
- QSER_SIM_PERSO_FEATURE_TYPE_UNKNOWN = 0xB00, /**< Unknown personalization feature. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK = 0xB01, /**< Featurization based on 3GPP MCC and MNC. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK_SUBSET = 0xB02, /**< Featurization based on 3GPP MCC, MNC, and IMSI digits 6 and 7. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SERVICE_PROVIDER = 0xB03, /**< Featurization based on 3GPP MCC, MNC, and GID1. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_CORPORATE = 0xB04, /**< Featurization based on 3GPP MCC, MNC, GID1, and GID2. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SIM = 0xB05, /**< Featurization based on the 3GPP IMSI. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_1 = 0xB06, /**< Featurization based on 3GPP2 MCC and MNC. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_2 = 0xB07, /**< Featurization based on 3GPP2 IRM code. */
- QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_RUIM = 0xB08, /**< Featurization based on 3GPP2 IMSI_M. */
-}QSER_SIM_PERSO_FEATURE_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_CARD_STATE_UNKNOWN = 0xB01, /**< Card state unknown. */
- QSER_SIM_CARD_STATE_ABSENT = 0xB02, /**< Card is absent. */
- QSER_SIM_CARD_STATE_PRESENT = 0xB03, /**< Card is present. */
- QSER_SIM_CARD_STATE_ERROR_UNKNOWN = 0xB04, /**< Unknown error state. */
- QSER_SIM_CARD_STATE_ERROR_POWER_DOWN = 0xB05, /**< Power down. */
- QSER_SIM_CARD_STATE_ERROR_POLL_ERROR = 0xB06, /**< Poll error. */
- QSER_SIM_CARD_STATE_ERROR_NO_ATR_RECEIVED = 0xB07, /**< Failed to receive an answer to reset. */
- QSER_SIM_CARD_STATE_ERROR_VOLT_MISMATCH = 0xB08, /**< Voltage mismatch. */
- QSER_SIM_CARD_STATE_ERROR_PARITY_ERROR = 0xB09, /**< Parity error. */
- QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS= 0xB0A, /**< Card returned technical problems. */
-}QSER_SIM_CARD_STATE_TYPE_T; /**< Card state. */
-
-typedef enum
-{
- QSER_SIM_CARD_TYPE_UNKNOWN = 0xB00, /**< Unidentified card type. */
- QSER_SIM_CARD_TYPE_ICC = 0xB01, /**< Card of SIM or RUIM type. */
- QSER_SIM_CARD_TYPE_UICC = 0xB02, /**< Card of USIM or CSIM type. */
-}QSER_SIM_CARD_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_PROV_STATE_NONE = 0xB00, /**< Nonprovisioning. */
- QSER_SIM_PROV_STATE_PRI = 0xB01, /**< Primary provisioning subscription. */
- QSER_SIM_PROV_STATE_SEC = 0xB02, /**< Secondary provisioning subscription. */
-}QSER_SIM_SUBSCRIPTION_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_APP_STATE_UNKNOWN = 0xB00, /**< Application state unknown. */
- QSER_SIM_APP_STATE_DETECTED = 0xB01, /**< Detected state. */
- QSER_SIM_APP_STATE_PIN1_REQ = 0xB02, /**< PIN1 required. */
- QSER_SIM_APP_STATE_PUK1_REQ = 0xB03, /**< PUK1 required. */
- QSER_SIM_APP_STATE_INITALIZATING = 0xB04, /**< Initializing. */
- QSER_SIM_APP_STATE_PERSO_CK_REQ = 0xB05, /**< Personalization control key required. */
- QSER_SIM_APP_STATE_PERSO_PUK_REQ = 0xB06, /**< Personalization unblock key required. */
- QSER_SIM_APP_STATE_PERSO_PERMANENTLY_BLOCKED= 0xB07, /**< Personalization is permanently blocked. */
- QSER_SIM_APP_STATE_PIN1_PERM_BLOCKED = 0xB08, /**< PIN1 is permanently blocked. */
- QSER_SIM_APP_STATE_ILLEGAL = 0xB09, /**< Illegal application state. */
- QSER_SIM_APP_STATE_READY = 0xB0A, /**< Application ready state. @newpage */
-}QSER_SIM_APP_STATE_TYPE_T;
-
-typedef enum
-{
- QSER_SIM_PIN_STATE_UNKNOWN = 0xB01, /**< Unknown PIN state. */
- QSER_SIM_PIN_STATE_ENABLED_NOT_VERIFIED = 0xB02, /**< PIN required, but has not been verified. */
- QSER_SIM_PIN_STATE_ENABLED_VERIFIED = 0xB03, /**< PIN required and has been verified. */
- QSER_SIM_PIN_STATE_DISABLED = 0xB04, /**< PIN not required. */
- QSER_SIM_PIN_STATE_BLOCKED = 0xB05, /**< PIN verification has failed too many times and is blocked. Recoverable through PUK verification. */
- QSER_SIM_PIN_STATE_PERMANENTLY_BLOCKED = 0xB06, /**< PUK verification has failed too many times and is not recoverable. */
-}QSER_SIM_PIN_STATE_TYPE_T;
-
-typedef struct
-{
- QSER_SIM_SUBSCRIPTION_TYPE_T subscription; /**< Type of subscription (i.e., primary, secondary, etc.). */
- QSER_SIM_APP_STATE_TYPE_T app_state; /**< Current state of the application. */
- QSER_SIM_PERSO_FEATURE_TYPE_T perso_feature; /**< Current personalization state and feature enabled. */
- uint8_t perso_retries; /**< Number of personalization retries. */
- uint8_t perso_unblock_retries; /**< Number of personalization unblock retries. */
- QSER_SIM_PIN_STATE_TYPE_T pin1_state; /**< Current PIN 1 state. */
- uint8_t pin1_num_retries; /**< Number of PIN 1 retries. */
- uint8_t puk1_num_retries; /**< Number of PUK 1 retries. */
- QSER_SIM_PIN_STATE_TYPE_T pin2_state; /**< Current PIN 2 state. */
- uint8_t pin2_num_retries; /**< Number of PIN 2 retries. */
- uint8_t puk2_num_retries; /**< Number of PUK 2 retries. */
-}QSER_SIM_CARD_APP_INFO_T;
-
-typedef struct
-{
- QSER_SIM_CARD_APP_INFO_T app_3gpp; /**< Stores 3GPP application information. */
- QSER_SIM_CARD_APP_INFO_T app_3gpp2; /**< Stores 3GPP2 application information. */
- QSER_SIM_CARD_APP_INFO_T app_isim; /**< Stores ISIM application information. */
-}QSER_SIM_CARD_ALL_APP_INFO_T;
-
-typedef struct
-{
- QSER_SIM_CARD_STATE_TYPE_T e_card_state;/**< Current card and card error state. */
- QSER_SIM_CARD_TYPE_T e_card_type; /**< Card type. */
- QSER_SIM_CARD_ALL_APP_INFO_T card_app_info; /**< Stores all relevant application information. */
-}QSER_SIM_CARD_STATUS_INFO_T;
-typedef QSER_SIM_CARD_STATUS_INFO_T* QSER_SIM_MsgRef;
-/* Callback function registered to qser_sim_addrxmsghandler, msgRef contains the detail msg infor */
-typedef void (*QSER_SIM_RxMsgHandlerFunc_t)(QSER_SIM_MsgRef msgRef);
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.cpp
deleted file mode 100755
index 476e6da..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-#include <ctype.h>
-
-#include"lynq-qser-sms-demo.h"
-#include "mbtk_log.h"
-
-
-#define SMS_BUF 64
-#define MSG_BUF 100
-
-int flag_init = 0;
-
-typedef uint32_t sim_client_handle_type;
-//sms_client_handle_type ph_sms = 2022;
-sms_client_handle_type h_sms = 2022;
-
-
-int (*qser_sms_client_init)(sms_client_handle_type *h_sms);
-int (*qser_sms_client_deinit)(sms_client_handle_type h_sms);
-int (*qser_sms_send_sms)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info);
-int (*qser_sms_addrxmsghandler)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
-int (*qser_sms_deletefromstorage)(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage);
-int (*qser_sms_getsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg);
-//int (*qser_sms_setsmscenteraddress)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg);
-
-void qser_sms_handler(QSER_SMS_MsgRef msgRef, void* contextPtr) {
- printf("[%s-%d] sms handler, msgRef->sms_data = %s,addr =%s\n", __FUNCTION__, __LINE__, msgRef->sms_data, msgRef->src_addr);
-}
-
-bool isNumeric(char *phnum) {
- int length = strlen(phnum);
-
- if (length == 0) {
- return false;
- }
-
- if (phnum[0] != '+' && (phnum[0] < '0' || phnum[0] > '9')) {
- return false;
- }
-
- if (phnum[0] == '+' && length < 3) {
- return false;
- }
-
- for (int i = 1; i < length; i++) {
- if (phnum[i] < '0' || phnum[i] > '9') {
- return false;
- }
- }
-
- return true;
-}
-
-//以下示例默认为所有API 执行都æˆåŠŸçš„æƒ…å†µä¸‹ï¼Œä¾æ¬¡æ‰§è¡ŒåŽç»API
-int main(int argc, char *argv[])
-{
- int ret = 0;
- //char phnum[SMS_BUF]={0};
- mbtk_log_init("radio", "MBTK");
-
- const char *lynq_libpath_sms = "/lib/liblynq-qser-sms.so";
- void *dlHandle_sms = dlopen(lynq_libpath_sms, RTLD_NOW);
-
- if (dlHandle_sms == NULL)
- {
- printf("dlopen dlHandle_sms failed: %s\n", dlerror());
- exit(EXIT_FAILURE);
- }
-
- if(argc != 2 || !isNumeric(argv[1]))
- {
- printf("[%s][%d] please input correct phnum\n",__FUNCTION__,__LINE__);
- exit(1);
- }
-
- qser_sms_client_init = (int(*)(sms_client_handle_type *h_sms))dlsym(dlHandle_sms,"qser_sms_client_init");
- if(NULL != qser_sms_client_init)
- {
- ret = qser_sms_client_init(&h_sms);
- if(ret == 0)
- {
- printf("Run qser_sms_client_init\n");
- }else{
- printf("qser_sim_client_init error\n");
- }
- }else{
- printf("qser_sim_client_init dlsym error\n");
- }
-
- sleep(2);
-
- qser_sms_addrxmsghandler = (int(*)(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr))dlsym(dlHandle_sms,"qser_sms_addrxmsghandler");
-
- if(NULL != qser_sms_addrxmsghandler)
- {
- ret = qser_sms_addrxmsghandler(qser_sms_handler, NULL);
- if(ret == 0)
- {
- printf("qser_sms_addrxmsghandler success\n");
- }else{
- printf("qser_sms_addrxmsghandler error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_addrxmsghandler dlsym error\n");
- }
-
- QSER_sms_service_center_cfg_t get_sca_cfg;
- qser_sms_getsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg))dlsym(dlHandle_sms,"qser_sms_getsmscenteraddress");
- if(NULL != qser_sms_getsmscenteraddress)
- {
- ret = qser_sms_getsmscenteraddress(h_sms, &get_sca_cfg);
- if(ret == 0)
- {
- printf("get smsc success,service_center_addr = %s\n",get_sca_cfg.service_center_addr);
- }else{
- printf("get smsc error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_getsmscenteraddress dlsym error\n");
- }
- sleep(1);
-#if 0
- QSER_sms_service_center_cfg_t set_sca_cfg;
- memset(set_sca_cfg.service_center_addr, 0, sizeof(set_sca_cfg.service_center_addr));
- strncpy(set_sca_cfg.service_center_addr, "+8613800230500", 14);//smsc need userchange
- qser_sms_setsmscenteraddress = (int (*)(sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *set_sca_cfg))dlsym(dlHandle_sms,"qser_sms_setsmscenteraddress");
- if(NULL != qser_sms_setsmscenteraddress)
- {
- ret = qser_sms_setsmscenteraddress(h_sms, &set_sca_cfg);
- if(ret == 0)
- {
- printf("set smsc success");
- }else{
- printf("set smsc error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_setsmscenteraddress dlsym error\n");
- }
-#endif
- // char telephony_num[SMS_BUF] = {};
- char msg[MSG_BUF] = {};
- QSER_sms_info_t pt_sms_info;
- // sprintf(telephony_num,"10086");//è¯·ç”¨æˆ·åŠ¡å¿…æ›¿æ¢æ¤å·ç ï¼Œéšæ„å‘è¿è¥å•†å‘çŸæ¶ˆæ¯æžæœ‰å¯èƒ½è¢«å°å·ã€‚
- sprintf(msg,"Chello worrld-7bit-mr!.");
- strncpy(pt_sms_info.src_addr, argv[1], SMS_BUF);
- strncpy(pt_sms_info.sms_data, msg, MSG_BUF);
- pt_sms_info.format = QSER_SMS_7BIT;
- // printf("[%s,%d] src_addr=%s, telephony_num = %s\n",__FUNCTION__,__LINE__, pt_sms_info.src_addr, telephony_num);
- printf("[%s,%d] sms_data=%s, msg = %s\n",__FUNCTION__,__LINE__, pt_sms_info.sms_data, msg);
-
- qser_sms_send_sms = (int (*)(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info))dlsym(dlHandle_sms,"qser_sms_send_sms");
- if(NULL != qser_sms_send_sms)
- {
- ret = qser_sms_send_sms(h_sms, &pt_sms_info);
- if(ret == 0)
- {
- printf("send sms success\n");
- }else{
- printf("send sms error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_send_sms dlsym error\n");
- }
-
- sleep(120);//åœ¨æ¤æœŸé—´å‘模组å‘é€çŸæ¶ˆæ¯ï¼Œå³å¯è§¦å‘â€œæŽ¥å—æ–°çŸæ¶ˆæ¯äº‹ä»¶â€ã€‚
- qser_sms_client_deinit = (int (*)(sms_client_handle_type h_sms))dlsym(dlHandle_sms,"qser_sms_client_deinit");
- if(NULL != qser_sms_client_deinit)
- {
- ret = qser_sms_client_deinit(h_sms);
- if(ret == 0)
- {
- printf("sms deinit success\n");
- }else{
- printf("sms deinit error, ret = %d\n", ret);
- }
- }else{
- printf("qser_sms_client_deinit dlsym error\n");
- }
-
-}
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.h
deleted file mode 100755
index 500d946..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-sms-demo.h
+++ /dev/null
@@ -1,168 +0,0 @@
-#define MIN_MSM_PARAM_NUM 4
-#define MIN_IMS_MSM_PARAM_NUM 6
-#define MIN_WRITMSM_PARAM_NUM 5
-#define MSG_MAX_LEN 1024
-#define TELEPHONNUM_LEN 64
-#define STORAGSMS_MAX_SIZE 128
-#define SMSC_MAX_LEN 22
-#define SMS_NUM_MAX 255
-
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef uint32_t sms_client_handle_type;
-
-/** Maximum length of an SMS. */
-#define QSER_SMS_MAX_MT_MSG_LENGTH 1440
-
-/** Maximum string length. */
-#define QSER_SMS_MAX_ADDR_LENGTH 252
-
-/** Maximum string length. */
-#define QSER_SMS_MAX_SCA_TYPLENGTH 3
-
-typedef enum
-{
- QSER_SMS_7BIT = 0,
- QSER_SMS_8BIT = 1,
- QSER_SMS_UCS2 = 2,
- //<2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao, <[SMS] Segment 1==> CharSet to Alpha implementation.>
- QSER_SMS_IRA = 3,
- //>2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao
-
-}QSER_SMS_T;
-
-typedef enum
-{
- QSER_SMS_MO = 0, ///< SMS mobile terminated message.
- QSER_SMS_MT = 1, ///< SMS mobile originated message.
- QSER_SMS_BROADCAST_MT = 2 ///< SMS Cell Broadcast message.
-}QSER_SMS_TYPT;
-
-typedef enum
-{
- QSER_SMS_STORAGTYPNONE = -1, /**< Message no need to store. */
- QSER_SMS_STORAGTYPUIM = 0, /**< Message store to UIM. */
- QSER_SMS_STORAGTYPNV = 1, /**< Message store to NV. */
- QSER_SMS_STORAGTYPDB = 2, /**< Message store to NV. */
-}QSER_SMS_STORAGTYPT;
-
-typedef enum
-{
- QSER_SMS_MESSAGMODUNKNOWN = -1, /**< Message type CDMA */
- QSER_SMS_MESSAGMODCDMA = 0, /**< Message type CDMA */
- QSER_SMS_MESSAGMODGW = 1, /**< Message type GW. */
-}QSER_SMS_MODTYPT;
-
-typedef struct
- {
- uint8_t total_segments; /**< The number of long short message*/
- uint8_t seg_number; /**< Current number.*/
- uint8_t referencnumber; /**< referencnumber.*/
-}QSER_sms_user_data_head_t;
-
-typedef struct
-{
- /* If sms is stored, it won't parse, you need read it by yourself */
- QSER_SMS_STORAGTYPT storage; ///specify where stored this msg
-
- QSER_SMS_T format;
- QSER_SMS_TYPT type;
- char src_addr[QSER_SMS_MAX_ADDR_LENGTH]; ///Telephone number string.
- int sms_data_len;
- char sms_data[QSER_SMS_MAX_MT_MSG_LENGTH]; ///SMS content, data format depends on format
- char timestamp[21]; ///Message time stamp (in text mode). string format: "yy/MM/dd,hh:mm:ss+/-TimeZone"
- uint8_t user_data_head_valid; //indicate whether long sms. TRUE-long sms; FALSE-short message;
- QSER_sms_user_data_head_t user_data_head; //long sms user data head info.
- QSER_SMS_MODTYPT mode; ///specify where stored this msg cdma or gw area
- uint32_t storage_index; ///storage index, -1 means not store
-} QSER_sms_info_t;
-
-typedef struct
-{
- QSER_SMS_STORAGTYPT storage;
- QSER_SMS_MODTYPT mode;
- uint32_t storage_idx;
-} QSER_sms_storage_info_t;
-
-typedef enum
-{
- QSER_SMS_UNKNOWN = -1,
- QSER_SMS_DISCARD = 0x00, /* Incoming messages for this route are discarded by the WMS service without
- notifying QMI_WMS clients */
- QSER_SMS_STORAND_NOTIFY = 0x01, /* Incoming messages for this route are stored to the specified device
- memory, and new message notifications */
- QSER_SMS_TRANSFER_ONLY = 0x02, /* Incoming messages for this route are transferred to the client, and the
- client is expected to send ACK to the network */
- QSER_SMS_TRANSFER_AND_ACK = 0x03, /* Incoming messages for this route are transferred to the client, and ACK is
- sent to the network */
-}QSER_SMS_RECEPTION_ACTION_TYPT;
-
-#define QSER_WMS_MESSAGLENGTH_MAX 255
-
-typedef enum
- {
- QSER_WMS_MESSAGCDMA = 0x00, //- 0x00 -- MESSAGCDMA -- CDMA \n
- QSER_WMS_MESSAGGW_PP = 0x06, //- 0x06 -- MESSAGGW_PP -- GW_PP
-}QSER_WMS_MESSAGTYPE;
-
-
-typedef struct
- {
- QSER_WMS_MESSAGTYPE format;
- uint32_t raw_messaglen; /**< Must be set to # of elements in raw_message */
- uint8_t raw_message[QSER_WMS_MESSAGLENGTH_MAX]; /**< Raw message data*/
-}QSER_wms_send_raw_message_data_t;
-
-typedef enum
-{
- QSER_WMS_TL_CAUSCODADDR_VACANT = 0x00,
- QSER_WMS_TL_CAUSCODADDR_TRANSLATION_FAILURE = 0x01,
- QSER_WMS_TL_CAUSCODNETWORK_RESOURCSHORTAGE = 0x02,
- QSER_WMS_TL_CAUSCODNETWORK_FAILURE = 0x03,
- QSER_WMS_TL_CAUSCODINVALID_TELESERVICID = 0x04,
- QSER_WMS_TL_CAUSCODNETWORK_OTHER = 0x05,
- QSER_WMS_TL_CAUSCODNO_PAGRESPONSE = 0x20,
- QSER_WMS_TL_CAUSCODDEST_BUSY = 0x21,
- QSER_WMS_TL_CAUSCODNO_ACK = 0x22,
- QSER_WMS_TL_CAUSCODDEST_RESOURCSHORTAGE = 0x23,
- QSER_WMS_TL_CAUSCODSMS_DELIVERY_POSTPONED = 0x24,
- QSER_WMS_TL_CAUSCODDEST_OUT_OF_SERV = 0x25,
- QSER_WMS_TL_CAUSCODDEST_NOT_AT_ADDR = 0x26,
- QSER_WMS_TL_CAUSCODDEST_OTHER = 0x27,
- QSER_WMS_TL_CAUSCODRADIO_IF_RESOURCSHORTAGE = 0x40,
- QSER_WMS_TL_CAUSCODRADIO_IF_INCOMPATABILITY = 0x41,
- QSER_WMS_TL_CAUSCODRADIO_IF_OTHER = 0x42,
- QSER_WMS_TL_CAUSCODENCODING = 0x60,
- QSER_WMS_TL_CAUSCODSMS_ORIG_DENIED = 0x61,
- QSER_WMS_TL_CAUSCODSMS_TERM_DENIED = 0x62,
- QSER_WMS_TL_CAUSCODSUPP_SERV_NOT_SUPP = 0x63,
- QSER_WMS_TL_CAUSCODSMS_NOT_SUPP = 0x64,
- QSER_WMS_TL_CAUSCODMISSING_EXPECTED_PARAM = 0x65,
- QSER_WMS_TL_CAUSCODMISSING_MAND_PARAM = 0x66,
- QSER_WMS_TL_CAUSCODUNRECOGNIZED_PARAM_VAL = 0x67,
- QSER_WMS_TL_CAUSCODUNEXPECTED_PARAM_VAL = 0x68,
- QSER_WMS_TL_CAUSCODUSER_DATA_SIZERR = 0x69,
- QSER_WMS_TL_CAUSCODGENERAL_OTHER = 0x6A,
-}QSER_WMS_TL_CAUSCODTYPE;
-
-
-
-typedef struct
- {
- uint16_t messagid; /* Message ID */
- uint8_t causcodvalid; /**< Must be set to true if causcode is being passed */
- QSER_WMS_TL_CAUSCODTYPE causcode;
-}QSER_wms_raw_send_resp_t;
-
-typedef struct
- {
- char service_center_addr[QSER_SMS_MAX_ADDR_LENGTH + 1]; /**< Address of the service center.*/
- uint8_t service_center_addr_typvalid;
- char service_center_addr_type[QSER_SMS_MAX_SCA_TYPLENGTH + 1]; /**< 129 if the SMSC address does not start with a "+" characte;
- 145 if the SMSC address starts with a "+" character*/
-}QSER_sms_service_center_cfg_t;
-
-typedef QSER_sms_info_t QSER_SMS_Msg_t;
-typedef QSER_sms_info_t* QSER_SMS_MsgRef;
-typedef void (*QSER_SMS_RxMsgHandlerFunc_t)(QSER_SMS_MsgRef msgRef, void* contextPtr);
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.cpp
deleted file mode 100755
index 03a5926..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <sys/types.h>
-#include <dirent.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <dlfcn.h>
-
-#include"lynq-qser-thermal-demo.h"
-
-
-int (*get_thermal_zone)(int *numbers, int size);
-
-
-int main(int argc, char *argv[]){
- int numbers[MAX_SIZE];
- int ret = 0;
- const char *lynq_libpath_thermal = "/lib/liblynq-qser-thermal.so";
-
- void *dlHandle_thermal = dlopen(lynq_libpath_thermal, RTLD_NOW);
- if (dlHandle_thermal == NULL)
- {
- printf("dlopen dlHandle_thermal failed: %s\n", dlerror());
- exit(EXIT_FAILURE);
- }
- get_thermal_zone = (int(*)(int *numbers, int size))dlsym(dlHandle_thermal,"get_thermal_zone");
- if(NULL != get_thermal_zone)
- {
- ret = get_thermal_zone(numbers, MAX_SIZE);
- if (ret <= 0) {
- printf("get_thermal_zone error\n");
- return -1;
- }
- }else{
- printf("get_thermal_zone dlsym error\n");
- }
-
- for (int j = 0; j < ret; ++j) {
- printf("[%s-%d] temp[%d] = %d \n", __func__, __LINE__, j, numbers[j]);
- }
-
- return 0;
-}
-
-
-
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.h
deleted file mode 100755
index 6366538..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-thermal-demo.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#define MAX_SIZE 100
-#define MAX_LINES 5
-#define MAX_LINE_LENGTH 10
-
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.cpp b/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.cpp
deleted file mode 100755
index 9c55c7e..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.cpp
+++ /dev/null
@@ -1,306 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-
-#include"lynq-qser-voice-demo.h"
-#include "mbtk_log.h"
-
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "print_help"},
- {1, "qser_voice_call_start"},
- {2, "qser_voice_call_end"},
- {3, "qser_voice_call_answer"},
- {4, "qser_voice_set_speech_volume"},
- {5, "qser_voice_get_speech_volume"},
- {6, "qser_voice_set_dtmf"},
- {-1, NULL}
-};
-
-
-
-typedef uint32_t voice_client_handle_type;
-
-
-int (*qser_voice_call_client_init)(voice_client_handle_type *ph_voice);
-int (*qser_voice_call_client_deinit)(voice_client_handle_type );
-int (*qser_voice_call_addstatehandler)(voice_client_handle_type h_voice,
- QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
- void *contextPtr);
-
-int (*qser_voice_call_removestatehandle)(voice_client_handle_type );
-int (*qser_voice_call_start)(voice_client_handle_type h_voice,
- E_QSER_VCALL_ID_T simId,
- char *phone_number, int *call_id);
-
-int (*qser_voice_call_end)(voice_client_handle_type ,int );
-int (*qser_voice_call_answer)(voice_client_handle_type ,int );
-int (*qser_voice_set_speech_volume)(const int volume);
-int (*qser_voice_get_speech_volume)(int *volume);
-int (*qser_voice_set_dtmf)(const char callnum);
-
-void *dlHandle_call = NULL;
-
-static void yk_voice_call_cb_func(int call_id,
- char* phone_num,
- qser_voice_call_state_t state,
- void *contextPtr)
-{
- char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};
-
- printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n", call_id, phone_num, call_state[state]);
-}
-
-void print_help(void)
-{
- int i;
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-int main(int argc, char const *argv[])
-{
- int cmdIdx = 0;
- int ret = 0;
- int voice_call_id = 0;
- voice_client_handle_type h_voice = 0;
-
- mbtk_log_init("radio", "MBTK");
-
- const char *lynqLibPath_Call = "/lib/liblynq-qser-voice.so";
- dlHandle_call = dlopen(lynqLibPath_Call, RTLD_NOW);
- if (dlHandle_call == NULL)
- {
- printf("dlopen dlHandle_call failed: %s\n", dlerror());
- exit(EXIT_FAILURE);
- }
-
- qser_voice_call_client_init = (int(*)(voice_client_handle_type *h_voice))dlsym(dlHandle_call, "qser_voice_call_client_init");
- if(qser_voice_call_client_init == NULL)
- {
- printf("qser_voice_call_client_init not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_addstatehandler = (int(*)(voice_client_handle_type h_voice,
- QSER_VoiceCall_StateHandlerFunc_t handlerPtr,
- void *contextPtr))dlsym(dlHandle_call,"qser_voice_call_addstatehandler");
- if(qser_voice_call_addstatehandler == NULL)
- {
- printf("qser_voice_call_addstatehandler not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_answer = (int(*)(voice_client_handle_type,int ))dlsym(dlHandle_call,"qser_voice_call_answer");
- if(qser_voice_call_answer == NULL)
- {
- printf("qser_voice_call_answer not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_start = (int(*)(voice_client_handle_type h_voice,E_QSER_VCALL_ID_T simId,
- char *phone_number, int *call_id))dlsym(dlHandle_call,"qser_voice_call_start");
- if(qser_voice_call_start == NULL)
- {
- printf("qser_voice_call_start not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_end = (int(*)(voice_client_handle_type ,int))dlsym(dlHandle_call,"qser_voice_call_end");
- if(qser_voice_call_end == NULL)
- {
- printf("qser_voice_call_end not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
-
- qser_voice_call_client_deinit = (int (*)(voice_client_handle_type h_voice))dlsym(dlHandle_call,"qser_voice_call_client_deinit");
- if(qser_voice_call_client_deinit == NULL)
- {
- printf("qser_voice_call_client_deinit not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_call_removestatehandle = (int (*)(voice_client_handle_type))dlsym(dlHandle_call,"qser_voice_call_removestatehandle");
- if(qser_voice_call_removestatehandle == NULL)
- {
- printf("qser_voice_call_removestatehandle not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_set_speech_volume = (int (*)(const int ))dlsym(dlHandle_call,"qser_voice_set_speech_volume");
- if(qser_voice_set_speech_volume == NULL)
- {
- printf("qser_voice_set_speech_volume not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_get_speech_volume = (int (*)(int* ))dlsym(dlHandle_call,"qser_voice_get_speech_volume");
- if(qser_voice_get_speech_volume == NULL)
- {
- printf("qser_voice_get_speech_volume not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- qser_voice_set_dtmf = (int (*)(const char ))dlsym(dlHandle_call,"qser_voice_set_dtmf");
- if(qser_voice_set_dtmf == NULL)
- {
- printf("qser_voice_set_dtmf not defined or exported in %s\n", lynqLibPath_Call);
- return -1;
- }
-
- ret = qser_voice_call_client_init(&h_voice);
- if(ret != 0 )
- {
- printf("qser_voice_call_client_init FAIL\n");
- return -1;
- }
-
- ret = qser_voice_call_addstatehandler(h_voice, yk_voice_call_cb_func, &voice_call_id);
- if(ret != 0)
- {
- printf("qser_voice_call_addstatehandler FAIL\n");
- return -1;
- }
-
-
- print_help();
- while(1)
- {
- printf("\nplease input cmd index(-1 exit): ");
- scanf("%d", &cmdIdx);
- if(cmdIdx == -1)
- {
- break;
- }
-
- switch(cmdIdx)
- {
- //"print_help
- case 0:
- print_help();
- break;
-
- //"qser_voice_call_start"
- case 1:
- {
- char PhoneNum[32] = {0};
-
- printf("please input dest phone number: \n");
- scanf("%s", PhoneNum);
-
- ret = qser_voice_call_start(h_voice, E_QSER_VCALL_EXTERNAL_SLOT_1, PhoneNum, &voice_call_id);
- printf("qser_voice_call_start ret = %d, with voice_call_id=%d\n", ret, voice_call_id);
- break;
- }
-
- //"qser_voice_call_end"
- case 2:
- {
- int call_id = -1;
- printf("please input end call id: \n");
- scanf("%d", &call_id);
- ret = qser_voice_call_end(h_voice, call_id);
- printf(" ret = %d\n", ret);
- break;
- }
-
- //"qser_voice_call_answer"
- case 3:
- {
- int call_id = -1;
- printf(" please input answer call id\n");
- scanf("%d", &call_id);
- ret = qser_voice_call_answer(h_voice, call_id);
- printf(" ret = %d\n", ret);
- break;
- }
-
- case 4:
- {
- int volume = 0;
- printf("Please set speech volume:0-5 level\n");
- scanf("%d",&volume);
- ret = qser_voice_set_speech_volume(volume);
- printf("ret is %d\n",ret);
- break;
-
- }
-
- case 5:
- {
- int volume = -1;
- printf("Enter get speech volume\n");
- ret = qser_voice_get_speech_volume(&volume);
- printf("ret is %d,get volume is %d\n",ret,volume);
- break;
-
- }
- case 6:
- {
-
- int ret;
- char inputChar;
-
- printf("Enter set dtmf\n");
- scanf(" %c", &inputChar);
- printf("inputChar is %c\n", inputChar);
- ret = qser_voice_set_dtmf(inputChar);
-
- if (ret != 0)
- {
- printf("qser set voice dtmf failed\n");
- return -1;
- }
- break;
- }
-
- default:
- print_help();
- break;
- }
-
- }
-
- ret = qser_voice_call_removestatehandle(h_voice);
- if(ret != 0 && ret != 1)
- {
- printf("qser_voice_call_removestatehandle FAIL!!!\n");
- return -1;
- }
- printf("qser_voice_call_removestatehandle ret = %d\n", ret);
-
-
- ret = qser_voice_call_client_deinit(h_voice);
- if(ret != 0)
- {
- printf("qser_voice_call_client_deinit FAIL\n");
- return -1;
- }
- printf("qser_voice_call_client_deinit ret = %d, with h_voice=%d\n", ret, h_voice);
-
- return 0;
-
-
-}
-
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.h b/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.h
deleted file mode 100755
index 79977b9..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-qser-voice-demo.h
+++ /dev/null
@@ -1,31 +0,0 @@
-typedef enum
-{
- E_QSER_VOICE_CALL_STATE_INCOMING = 0x0000, /**< MT incoming; CC setup. */
- E_QSER_VOICE_CALL_STATE_DIALING = 0x0001, /**< Dialing state. */
- E_QSER_VOICE_CALL_STATE_ALERTING = 0x0002, /**< MT call waiting; MO alterting. */
- E_QSER_VOICE_CALL_STATE_ACTIVE = 0x0003, /**< Call is active. */
- E_QSER_VOICE_CALL_STATE_HOLDING = 0x0004, /**< Call is on hold. */
- E_QSER_VOICE_CALL_STATE_END = 0x0005, /**< Call is disconnected. */
- E_QSER_VOICE_CALL_STATE_WAITING = 0x0006, /**< Call is waiting. */
-}qser_voice_call_state_t;
-
-typedef enum
-{
- E_QSER_VCALL_EXTERNAL_SLOT_1,
- E_QSER_VCALL_EXTERNAL_SLOT_2,
- E_QSER_VCALL_EMBEDDED,
- E_QSER_VCALL_REMOTE,
- E_QSER_VCALL_ID_MAX
-}E_QSER_VCALL_ID_T;
-
-
-typedef qser_voice_call_state_t E_QSER_VOICE_CALL_STATE_T;
-
-typedef void (*QSER_VoiceCall_StateHandlerFunc_t)
-(
- int caLOCAL_C_INCLUDESll_id,
- char* phone_num,
- E_QSER_VOICE_CALL_STATE_T state,
- void *contextPtr
-);
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq-usb-demo.cc b/mbtk/test/liblynq_lib_t106/lynq-usb-demo.cc
deleted file mode 100755
index 2ba3d35..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-usb-demo.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <pthread.h>
-#include <sys/socket.h>
-#include <semaphore.h>
-#include <linux/netlink.h>
-
-#include <lynq/lynq-qser-usb.h>
-
-sem_t usbplug_sem;
-void do_get_adb_state(int nargs, char **argv)
-{
-
- int ret = 0;
-
- ret = qser_get_usb_usermode_adb_state();
- if (ret < 0)
- {
- printf("get adb state fail,ret:%d \n", ret);
- return;
- }
-
- printf("adb state:%d, %s\n", ret, ((ret == 0) ? "off" : "on"));
-}
-
-void do_get_net_state(int nargs, char **argv)
-{
-
- int ret = 0;
-
- ret = qser_get_usb_usermode_net_state();
- if (ret < 0)
- {
- printf("get net state fail,ret:%d \n", ret);
- return;
- }
-
- printf("net state:%d, %s\n", ret, ((ret == 0) ? "off" : "on"));
-}
-
-int main(int argc, char *argv[])
-{
- sem_init(&usbplug_sem, 0, 0);
- do_get_adb_state(argc, argv);
- do_get_net_state(argc, argv);
- sem_post(&usbplug_sem);
- return 0;
-}
\ No newline at end of file
diff --git a/mbtk/test/liblynq_lib_t106/lynq-wifi-demo.cc b/mbtk/test/liblynq_lib_t106/lynq-wifi-demo.cc
deleted file mode 100755
index edbfac1..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq-wifi-demo.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-#include <ctype.h>
-#include <errno.h>
-#include <unistd.h>
-#include <getopt.h>
-#include <limits.h>
-#include <netdb.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <syslog.h>
-#include <pthread.h>
-
-#include <lynq/lynq-qser-wifi.h>
-
-int main(int argc, char *argv[])
-{
- if (argc == 2 )
- {
- if(strcmp(argv[1], "0") == 0){
- qser_wifi_enable(); //enable wifi
- qser_wifi_ap_stop(LYNQ_WIFI_AP_INDEX_AP0); //Disable ap mode for wlan0
- qser_wifi_disable(); //Turn off WiFi
- }
- else if(strcmp(argv[1], "1") == 0){
- char pw[65] = {0};
- sprintf(pw, "lynq123456");
- qser_wifi_enable(); //enable wifi
- qser_wifi_ap_ssid_set(LYNQ_WIFI_AP_INDEX_AP0,"hello"); //Set the ssid of wlan0 to hello
- qser_wifi_ap_max_sta_set(LYNQ_WIFI_AP_INDEX_AP0,22); //Example Set the maximum number of connections to 22
- qser_wifi_ap_channel_set(LYNQ_WIFI_AP_INDEX_AP0,"CN",13); //Set the country code to CN and channel to 13
- qser_wifi_ap_mode_set(LYNQ_WIFI_AP_INDEX_AP0,LYNQ_WIFI_MODE_80211BGN); //Set the working protocol mode of wlan0 to 80211BGN
- qser_wifi_ap_auth_set(LYNQ_WIFI_AP_INDEX_AP0,LYNQ_WIFI_AUTH_WPA2_PSK,pw); //Set the authentication of wlan0 to wpa2 and the password to lynq123456
- qser_wifi_ap_start(LYNQ_WIFI_AP_INDEX_AP0); //Set the ap mode of wlan0
- }
- else if(strcmp(argv[1], "2") == 0){
- char pw[65] = {0};
- char ssid[33] = {0};
- char country_code[12] = {0};
- int channel, max_sta_num;
- lynq_wifi_mode_type_e mode;
- lynq_wifi_auth_e auth_mode;
- lynq_wifi_bandwidth_type_e bandwidth;
- int ret = -1;
- qser_wifi_enable(); //enable wifi
- ret = qser_wifi_ap_ssid_get(LYNQ_WIFI_AP_INDEX_AP0,ssid); //Gets the ssid of wlan0
- printf("[lynq-wifi-demo] ssid=%s ret = %d\n",ssid, ret);
- ret = qser_wifi_ap_max_sta_get(LYNQ_WIFI_AP_INDEX_AP0,&max_sta_num); //Gets the maximum sta number for wlan0
- printf("[lynq-wifi-demo] max_sta_num = %d ret = %d\n",max_sta_num, ret);
- ret = qser_wifi_ap_mode_get(LYNQ_WIFI_AP_INDEX_AP0,&mode); //Gets the working protocol mode for wlan0
- printf("[lynq-wifi-demo] mode = %d ret = %d\n",mode, ret);
- ret = qser_wifi_ap_auth_get(LYNQ_WIFI_AP_INDEX_AP0,&auth_mode,pw); //Get wlan0's password security authentication and password
- printf("[lynq-wifi-demo] pw = %s auth_mode = %d ret = %d\n",pw, auth_mode, ret);
- ret = qser_wifi_ap_channel_get(LYNQ_WIFI_AP_INDEX_AP0,country_code,&channel); //Get the country code and channel of wlan0
- printf("[lynq-wifi-demo] country_code = %s channel = %d ret = %d\n",country_code, channel, ret);
- ret = qser_wifi_ap_bandwidth_get(LYNQ_WIFI_AP_INDEX_AP0,&bandwidth); //Gets the bandwidth of wlan0
- printf("[lynq-wifi-demo] bandwidth = %d ret = %d\n",bandwidth, ret);
- }
- else{
- printf(" [lynq-wifi-demo]Parameter error, please re-enter\n");
- }
- }
- else
- {
- printf("[lynq-wifi-demo]Please enter one of the parameters 0,1,2\n");
- printf(" [lynq-wifi-demo]2: View information such as ssid, password, and channel in ap mode\n");
- printf(" [lynq-wifi-demo]1: initializes wifi and enables and sets ap mode\n");
- printf(" [lynq-wifi-demo]0: indicates off.\n");
- return 0;
- }
-
- return 0;
-}
-
diff --git a/mbtk/test/liblynq_lib_t106/lynq_led-demo.c b/mbtk/test/liblynq_lib_t106/lynq_led-demo.c
deleted file mode 100755
index 3aa4dfa..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq_led-demo.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdio.h>
-#include <strings.h>
-#include<stdlib.h>
-#include "lynq/lynq_uci.h"
-
-
-
-
-int main(int argc, const char *argv[])
-{
- int ret = 0;
- ret = lynq_set_netled_on(atoi(argv[1]));
- if(ret){
- printf("[%s-%d] lynq_set_netled_on error\n", __FUNCTION__, __LINE__);
- return -1;
- }
- ret = lynq_set_statusled_on(atoi(argv[1]));
- if(ret){
- printf("[%s-%d] lynq_set_statusled_on error\n", __FUNCTION__, __LINE__);
- return -1;
- }
-
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib_t106/lynq_qser_network.h b/mbtk/test/liblynq_lib_t106/lynq_qser_network.h
deleted file mode 100755
index 577868e..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq_qser_network.h
+++ /dev/null
@@ -1,477 +0,0 @@
-/**
- *@file QSER_nw.h
- *@date 2018-02-22
- *@author
- *@brief
- */
-#ifndef __LYNQ_QSER_NETWORK_H__
-#define __LYNQ_QSER_NETWORK_H__
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "mbtk_type.h"
-
-typedef uint32_t nw_client_handle_type;
-
-
-#define QSER_NW_MODE_NONE 0x00 /**< No network. */
-#define QSER_NW_MODE_GSM 0x01 /**< Include GSM networks. */
-#define QSER_NW_MODE_WCDMA 0x02 /**< Include WCDMA networks. */
-#define QSER_NW_MODE_CDMA 0x04 /**< Include CDMA networks. */
-#define QSER_NW_MODE_EVDO 0x08 /**< Include EVDO networks. */
-#define QSER_NW_MODE_LTE 0x10 /**< Include LTE networks. */
-#define QSER_NW_MODE_TDSCDMA 0x20 /**< Include TDSCDMA networks. */
-
-typedef enum
-{
- E_QSER_NW_ROAM_STATE_OFF = 0, /**< None, or roaming indicator off. */
- E_QSER_NW_ROAM_STATE_ON = 1 /**< Roaming indicator on. */
-}E_QSER_NW_ROAM_STATE_TYPE_T;
-
-/** Configures the settings that define the MCM network interface. */
-typedef struct
-{
- /* Configuration parameters for MCM network registration Network registration details Technology dependent network registration details */
- uint64_t preferred_nw_mode; /**< Preferred network mode for connections; a bitmask of QSER_NW_MODE_xxxx.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming_pref; /**< Roaming preference.*/
-}QSER_NW_CONFIG_INFO_T;
-
-typedef enum
-{
- E_QSER_NW_IMS_MODE_OFF = 0, /**< close ims. */
- E_QSER_NW_IMS_MODE_VOLTE_ENABLE = 1, /**< support volte. */
-}E_QSER_NW_IMS_MODE_TYPE_T;
-
-/** Configures the OOS (out of service) settings that define the MCM network interface. */
-#define QSER_NW_OOS_CFG_TYPE_FAST_SCAN 0x00 /**< fast net scan */
-#define QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN 0x01 /**< full band scan */
-
-typedef struct
-{
- /* Configuration parameters for MCM network fast network scan when OOS (out of service)*/
- char enable;
- uint16_t time_interval;
-}QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T;
-
-typedef struct
-{
- /* Configuration parameters for MCM network full band network scan when OOS (out of service)*/
- int t_min;
- int t_step;
- int t_num;
- int t_max;
-}QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T;
-
-
-typedef struct
-{
- char type; /**< QSER_NW_OOS_CFG_TYPE_xxxx.*/
- union {
- QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T fast_can_info; // 00
- QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T full_band_scan_info; // 01
- } u;
-}QSER_NW_OOS_CONFIG_INFO_T;
-
-//defined for QSER_NW_EventRegister
-#define NW_IND_VOICE_REG_EVENT_IND_FLAG (1 << 0) /**< msg format : QSER_NW_VOICE_REG_EVENT_IND_T */
-#define NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) /**< msg format : QSER_NW_DATA_REG_EVENT_IND_T */
-#define NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) /**< msg format : QSER_NW_SINGNAL_EVENT_IND_T */
-//#define NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG (1 << 3) /**< msg format : QL_MCM_NW_CELL_ACCESS_STATE_EVENT_IND_T */
-//#define NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG (1 << 4) /**< msg format : QL_MCM_NW_NITZ_TIME_EVENT_IND_T */
-#define NW_IND_IMS_REG_EVENT_IND_FLAG (1 << 5) /**< msg format : NULL */
-
-typedef struct
-{
- char long_eons[512 + 1]; /**< Long EONS.*/
- char short_eons[512 + 1]; /**< Short EONS.*/
- char mcc[3 + 1]; /**< Mobile country code.*/
- char mnc[3 + 1]; /**< Mobile network code.*/
-}QSER_NW_OPERATOR_NAME_INFO_T;
-
-typedef enum
-{
- E_QSER_NW_RADIO_TECH_TD_SCDMA = 1,
- E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */
- E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */
- E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */
- E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */
- E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */
- E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */
- E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */
- E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */
- E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */
- E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */
- E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */
- E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */
- E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */
- E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */
- E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */
- E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */
- E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
-}E_QSER_NW_RADIO_TECH_TYPE_T;
-
-
-typedef enum
-{
- E_QSER_NW_TECH_DOMAIN_NONE = 0, /**< None. */
- E_QSER_NW_TECH_DOMAIN_3GPP = 1, /**< 3GPP. */
- E_QSER_NW_TECH_DOMAIN_3GPP2 = 2, /**< 3GPP2. */
-}E_QSER_NW_TECH_DOMAIN_TYPE_T;
-
-typedef enum
-{
- E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON = 1, /**< IMSI unknown in HLR. */
- E_QSER_NW_ILLEGAL_MS_DENY_REASON = 2, /**< Illegal MS. */
- E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON = 3, /**< IMSI unknown in VLR. */
- E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON = 4, /**< IMEI not accepted. */
- E_QSER_NW_ILLEGAL_ME_DENY_REASON = 5, /**< Illegal ME. */
- E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON = 6, /**< PLMN not allowed. */
- E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON = 7, /**< Location area not allowed. */
- E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON = 8, /**< Roaming not allowed in this location area. */
- E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON = 9, /**< No suitable cells in location area. */
- E_QSER_NW_NETWORK_FAILURE_DENY_REASON = 10, /**< Network failure. */
- E_QSER_NW_MAC_FAILURE_DENY_REASON = 11, /**< MAC failure. */
- E_QSER_NW_SYNCH_FAILURE_DENY_REASON = 12, /**< Sync failure. */
- E_QSER_NW_CONGESTION_DENY_REASON = 13, /**< Congestion. */
- E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON = 14, /**< GSM authentication unacceptable. */
- E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON = 15, /**< Not authorized in this CSG. */
- E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON = 16, /**< Service option not supported. */
- E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON = 17, /**< Requested service option not subscribed. */
- E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON = 18, /**< Call cannot be identified. */
- E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON = 19, /**< Semantically incorrect message. */
- E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON = 20, /**< Invalid mandatory information. */
- E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON = 21, /**< Message type non-existent or not implemented. */
- E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON = 22, /**< Message type not compatible with the protocol state. */
- E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON = 23, /**< Conditional IE error. */
- E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON = 24, /**< Message not compatible with the protocol state. */
- E_QSER_NW_PROTOCOL_ERROR_DENY_REASON = 25, /**< Unspecified protocol error. */
-}E_QSER_NW_DENY_REASON_TYPE_T;
-
-
-typedef enum
-{
- E_QSER_NW_SERVICE_NONE = 0x0000, /**< Not registered or no data. */
- E_QSER_NW_SERVICE_LIMITED = 0x0001, /**< Registered; emergency service only. */
- E_QSER_NW_SERVICE_FULL = 0x0002, /**< Registered, full service. */
-}E_QSER_NW_SERVICE_TYPE_T;
-
-typedef struct
-{
- E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
- E_QSER_NW_DENY_REASON_TYPE_T deny_reason; /**< Set when registration state is #nw_deny_reason_t_v01.*/
- E_QSER_NW_SERVICE_TYPE_T registration_state; /**< Registration state.*/
-}QSER_NW_COMMON_REG_INFO_T;
-
-
-typedef struct
-{
- E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
- char mcc[3+1]; /**< Mobile country code.*/
- char mnc[3+1]; /**< Mobile network code.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
- uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
- uint32_t cid; /**< Cell ID for the registered 3GPP system.*/
- uint16_t lac; /**< Locatin area code for the registered 3GPP system.*/
- uint16_t psc; /**< Primary scrambling code (WCDMA only); 0 -- None.*/
- uint16_t tac; /**< Tracking area code information for LTE.*/
-}QSER_NW_3GPP_REG_INFO_T;
-
-
-typedef struct
-{
- E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
- E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
- char mcc[3+1]; /**< Mobile country code.*/
- char mnc[3+1]; /**< Mobile network code.*/
- E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< Roaming status; see #nw_roam_state_t_v01.*/
- uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
- uint8_t inPRL; /**< 0 -- Not in PRL, 1 -- In PRL.*/
- uint8_t css; /**< Concurrent services supported: 0 -- No, 1 -- Yes.*/
- uint16_t sid; /**< CDMA system ID.*/
- uint16_t nid; /**< CDMA network ID.*/
- uint16_t bsid; /**< Base station ID. @newpagetable */
-}QSER_NW_3GPP2_REG_INFO_T;
-
-/** Gets the status associated with the connection of \<id\>. */
-typedef struct
-{
- uint8_t voice_registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T voice_registration; /**< Voice registration. */
-
- uint8_t data_registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T data_registration; /**< Data registration. */
-
- uint8_t voice_registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T voice_registration_details_3gpp; /**< Voice registration details for 3GPP. */
-
- uint8_t data_registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T data_registration_details_3gpp; /**< Data registration details for 3GPP. */
-
- uint8_t voice_registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T voice_registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
-
- uint8_t data_registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T data_registration_details_3gpp2; /**< Data registration details for 3GPP2. */
-}QSER_NW_REG_STATUS_INFO_T;
-
-typedef enum
-{
- E_QSER_NW_IMS_SERVICE_NONE = 0x0000, /**< Not registered */
- E_QSER_NW_IMS_SERVICE_REGISTERED = 0x0001, /**< Registered*/
-}E_QSER_NW_IMS_SERVICE_TYPE_T;
-
-typedef struct
-{
- E_QSER_NW_IMS_SERVICE_TYPE_T registration_state; /**< Registration state.*/
-}QSER_NW_IMS_REG_STATUS_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates received signal strength. A signed value; -125 or lower indicates no signal.*/
-}QSER_NW_GSM_SIGNAL_INFO_T;
-
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QSER_NW_WCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. a signed value; -125 or lower indicates no signal.*/
- int8_t rscp; /**< RSCP in dBm.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
- int8_t sinr; /**< Measured SINR in dB. @newpagetable */
-}QSER_NW_TDSCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
- int8_t rsrq; /**< RSRQ value in dB (signed integer value), as measured by L1. Range: -3 to -20 (-3 equals -3 dB, -20 equals -20 dB).*/
- int16_t rsrp; /**< Current RSRP in dBm, as measured by L1. Range: -44 to -140 (-44 equals -44 dBm, -140 equals -140 dBm).*/
- int16_t snr; /**< SNR level as a scaled integer in units of 0.1 dB; e.g., -16 dB has a value of -160 and 24.6 dB has a value of 246.*/
-}QSER_NW_LTE_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QSER_NW_CDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
- int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
- int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
- int8_t sinr; /**< SINR level.*/
- int32_t io; /**< Received IO in dBm. */
-}QSER_NW_HDR_SIGNAL_INFO_T;
-
-typedef struct
-{
- int16_t ssRsrp; /* SS(Synchronization Signal) reference signal received power, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [44, 140], INT_MAX means invalid/unreported.*/
- int16_t ssRsrq; /* SS reference signal received quality, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [3, 20], INT_MAX means invalid/unreported.*/
- int16_t ssSinr; /* SS signal-to-noise and interference ratio.
- * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
- * Range [-23, 40], INT_MAX means invalid/unreported.*/
- int16_t csiRsrp; /* CSI reference signal received power, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [44, 140], INT_MAX means invalid/unreported.*/
- int16_t csiRsrq; /* CSI reference signal received quality, multipled by -1.
- * Reference: 3GPP TS 38.215.
- * Range [3, 20], INT_MAX means invalid/unreported.*/
- int16_t csiSinr; /* CSI signal-to-noise and interference ratio.
- * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
- * Range [-23, 40], INT_MAX means invalid/unreported.*/
-}QSER_NW_NR_SIGNAL_INFO_T;
-
-
-/** Gets signal strength information. */
-typedef struct
-{
- uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
- QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM signal information. */
- uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
- QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA signal information. */
- uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
- QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA signal information. */
- uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
- QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE signal information. */
- uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
- QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA signal information. */
- uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
- QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR signal information. */
- uint8_t nr_sig_info_valid;
- QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
-}QSER_NW_SIGNAL_STRENGTH_INFO_T;
-
-
-
-
-
-/* @bridef Callback function registered to QSER_NW_AddRxMsgHandler
- * map of ind_flag and ind_msg_buf as bellow :
- * NW_IND_VOICE_REG_EVENT_IND_FLAG : QSER_NW_VOICE_REG_EVENT_IND_T
- * NW_IND_DATA_REG_EVENT_IND_FLAG : QSER_NW_DATA_REG_EVENT_IND_T
- * NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG : QSER_NW_SINGNAL_EVENT_IND_T
- * NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG : QSER_NW_CELL_ACCESS_STATE_EVENT_IND_T
- * NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG : QSER_NW_NITZ_TIME_EVENT_IND_T
- * NW_IND_IMS_REG_EVENT_IND_FLAG : NULL
- * */
-typedef void (*QSER_NW_RxMsgHandlerFunc_t)(
- nw_client_handle_type h_nw,
- uint32_t ind_flag,
- void *ind_msg_buf,
- uint32_t ind_msg_len,
- void *contextPtr
-);
-
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_VOICE_REG_EVENT_IND_FLAG */
-typedef struct {
-
- uint8_t registration_valid; /**< Must be set to TRUE if voice_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T registration; /**< Voice registration. */
-
- uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Voice registration details for 3GPP. */
-
- uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Voice registration details for 3GPP2. */
-}QSER_NW_VOICE_REG_EVENT_IND_T;
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_DATA_REG_EVENT_IND_FLAG */
-typedef struct {
-
- uint8_t registration_valid; /**< Must be set to TRUE if data_registration is being passed. */
- QSER_NW_COMMON_REG_INFO_T registration; /**< Data registration. */
-
- uint8_t registration_details_3gpp_valid; /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
- QSER_NW_3GPP_REG_INFO_T registration_details_3gpp; /**< Data registration details for 3GPP. */
-
- uint8_t registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
- QSER_NW_3GPP2_REG_INFO_T registration_details_3gpp2; /**< Data registration details for 3GPP2. */
-}QSER_NW_DATA_REG_EVENT_IND_T;
-
-
-/** Indication message; Indication for the corresponding registered event flag NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG */
-typedef struct {
- uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if gsm_sig_info is being passed. */
- QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM singal information. */
-
- uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if wcdma_sig_info is being passed. */
- QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA singal information. */
-
- uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
- QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA singal information. */
-
- uint8_t lte_sig_info_valid; /**< Must be set to TRUE if lte_sig_info is being passed. */
- QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE singal information. */
-
- uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if cdma_sig_info is being passed. */
- QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA singal information. */
-
- uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if hdr_sig_info is being passed. */
- QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR singal information. */
-
- uint8_t nr_sig_info_valid;
- QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
-}QSER_NW_SINGNAL_EVENT_IND_T;
-
-typedef enum
-{
- E_QSER_NW_RF_MODE_CFUN_0 = 0, /**< CFUN 0. */
- E_QSER_NW_RF_MODE_CFUN_1 = 1, /**< CFUN 1. */
- E_QSER_NW_RF_MODE_FLIGHT = 4, /**< Flight Mode, CFUN 4. */
-}E_QSER_NW_RF_MODE_TYPE_T;
-
-int qser_nw_client_init(nw_client_handle_type *ph_nw);
-
-int qser_nw_client_deinit(nw_client_handle_type h_nw);
-
-int qser_nw_set_config
-(
- nw_client_handle_type h_nw,
- QSER_NW_CONFIG_INFO_T *pt_info
-);
-
-int qser_nw_set_ims_enable
-(
- nw_client_handle_type h_nw,
- E_QSER_NW_IMS_MODE_TYPE_T ims_mode
-);
-
-int qser_nw_set_oos_config
-(
- nw_client_handle_type h_nw,
- QSER_NW_OOS_CONFIG_INFO_T *pt_info
-);
-
-int qser_nw_get_oos_config
-(
- nw_client_handle_type h_nw,
- QSER_NW_OOS_CONFIG_INFO_T *pt_info
-);
-
-int qser_nw_event_register
-(
- nw_client_handle_type h_nw,
- uint32_t bitmask // bit OR of NW_IND_xxxx_EVENT_ON
-);
-
-int qser_nw_get_operator_name
-(
- nw_client_handle_type h_nw,
- QSER_NW_OPERATOR_NAME_INFO_T *pt_info //You should malloc this or may cause stack overflow
-);
-
-int qser_nw_get_reg_status
-(
- nw_client_handle_type h_nw,
- QSER_NW_REG_STATUS_INFO_T *pt_info
-);
-
-int qser_nw_get_ims_reg_status
-(
- nw_client_handle_type h_nw,
- QSER_NW_IMS_REG_STATUS_INFO_T *pt_info
-);
-
-int qser_nw_get_signal_strength
-(
- nw_client_handle_type h_nw,
- QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info
-);
-
-int qser_nw_add_rx_msg_handler
-(
- nw_client_handle_type h_nw,
- QSER_NW_RxMsgHandlerFunc_t handlerPtr,
- void* contextPtr
-);
-
-int qser_nw_set_rf_mode
-(
- nw_client_handle_type h_nw,
- E_QSER_NW_RF_MODE_TYPE_T rf_mode
-);
-
-int qser_nw_get_rf_mode
-(
- nw_client_handle_type h_nw,
- E_QSER_NW_RF_MODE_TYPE_T *rf_mode
-);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif//__QSER_NW_H__
diff --git a/mbtk/test/liblynq_lib_t106/lynq_systime_demo.cpp b/mbtk/test/liblynq_lib_t106/lynq_systime_demo.cpp
deleted file mode 100755
index a600884..0000000
--- a/mbtk/test/liblynq_lib_t106/lynq_systime_demo.cpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/**@File lynq-systime-demo.cpp
- *
- * @Brief As a example for liblynq-systime.
- *
- * @Author sj.zhang
- *
- * @Date 2023-08-15
- *
- * @Version V1.0
- *
- * @copyright Copyright (c) MobileTek
- */
-#include <stdio.h>
-#include <dlfcn.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-
-typedef struct time_source_status
-{
- int ntp;
- int nitz;
- int gnss;
-} time_src_status_s;
-
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
-int (*lynq_sync_time_from_rtc)(void);
-int (*lynq_set_rtc_time)(void);
-int (*lynq_get_rtc_time)(unsigned long *ulsec);
-
-#endif
-void *dlHandle_systime = NULL;
-int (*modem_time_enable)(int enable);
-int (*gnss_time_enable)(int enable);
-int (*ntp_sync_time)(int enable);
-int (*user_set_time)(char *date, char *time);
-int (*lynq_get_time_src_status)(time_src_status_s *time_src);
-int (*get_sync_time_result)();
-
-
-int lynq_ntp_sync_demo(int argc, char *argv[])
-{
- int ret = -1;
- if (argc != 3)
- {
- printf("Parameter number wrong !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- ntp_sync_time = (int (*)(int enable))dlsym(dlHandle_systime, "ntp_sync_time");
- if (NULL == ntp_sync_time)
- {
- fprintf(stderr, "Failed to dlsym function ntp_sync_time : %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = ntp_sync_time(atoi(argv[2]));
- switch (ret)
- {
- case 0:
- printf("set success!\n");
- break;
- case 1:
- printf("NTP_ALREADY_ENABLE!\n");
- break;
- case 2:
- printf("NTP_ALREADY_DISENABLE!\n");
- break;
- default:
- break;
- }
- return ret;
-}
-
-int lynq_modem_sync_demo(int argc, char *argv[])
-{
- int ret = -1;
- if (argc != 3)
- {
- printf("Parameter number wrong !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- modem_time_enable = (int (*)(int enable))dlsym(dlHandle_systime, "modem_time_enable");
- if (NULL == modem_time_enable)
- {
- fprintf(stderr, "Failed to dlsym function modem_time_enable: %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = modem_time_enable(atoi(argv[2]));
- printf("ret = %d\n", ret);
- if (ret != 0 && ret != 4)
- {
- printf("modem_time_enable failed !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- return 0;
-}
-
-int lynq_gnss_sync_demo(int argc, char *argv[])
-{
- int ret = -1;
- if (argc != 3)
- {
- printf("Parameter number wrong !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- gnss_time_enable = (int (*)(int enable))dlsym(dlHandle_systime, "gnss_time_enable");
- if (NULL == gnss_time_enable)
- {
- fprintf(stderr, "Failed to dlsym function gnss_time_enable: %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = gnss_time_enable(atoi(argv[2]));
- printf("ret = %d\n", ret);
- if (ret != 0 && ret != 4)
- {
- printf("gnss_time_enable failed !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- return ret;
-}
-
-int lynq_user_set_time_demo(int argc, char *argv[])
-{
- int ret = -1;
- if (argc != 4)
- {
- printf("Parameter number wrong !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- user_set_time = (int (*)(char *date, char *time))dlsym(dlHandle_systime, "user_set_time");
- if (NULL == user_set_time)
- {
- fprintf(stderr, "Failed to dlsym function user_set_time: %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = user_set_time(argv[2], argv[3]);
- return ret;
-}
-
-int lynq_get_time_src_status_demo(int arg_c, char *arg_v[])
-{
- lynq_get_time_src_status = (int (*)(time_src_status_s *time_src))dlsym(dlHandle_systime, "lynq_get_time_src_status");
- if (NULL == lynq_get_time_src_status)
- {
- fprintf(stderr, "Failed to dlsym function lynq_get_time_src_status : %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- time_src_status_s time_src = {0};
- lynq_get_time_src_status(&time_src);
- printf("time source status are :\nntp=%d\nnitz=%d\ngnss=%d\n", time_src.ntp, time_src.nitz, time_src.gnss);
- return 0;
-}
-
-int lynq_get_sync_status_demo(int arg_c, char *arg_v[])
-{
- get_sync_time_result = (int (*)(void))dlsym(dlHandle_systime, "get_sync_time_result");
- int ret = 0;
- if(NULL == get_sync_time_result)
- {
- printf("Failed to dlsym function get_sync_time_result: %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = get_sync_time_result();
- printf("get_sync_time_result = %d\n",ret);
- dlclose(dlHandle_systime);
- return 0;
-}
-
-int main(int argc, char *argv[])
-{
- int ret = -1;
- char *cmd = argv[1];
- printf("enter lynq_systime_demo \n");
- dlHandle_systime = dlopen("/lib/liblynq-systime.so", RTLD_NOW);
- if (!dlHandle_systime)
- {
- fprintf(stderr, "Failed to load library: %s\n", dlerror());
- return 1;
- }
-
- if (cmd == NULL)
- {
- printf("No command received!\n");
- dlclose(dlHandle_systime);
- return 1;
- }
- else if (strcmp(cmd, "ntp") == 0)
- {
- ret = lynq_ntp_sync_demo(argc, argv);
- }
- else if (strcmp(cmd, "nitz") == 0)
- {
- ret = lynq_modem_sync_demo(argc, argv);
- }
- else if (strcmp(cmd, "gnss") == 0)
- {
- ret = lynq_gnss_sync_demo(argc, argv);
- }
- else if (strcmp(cmd, "user") == 0)
- {
- ret = lynq_user_set_time_demo(argc, argv);
- }
-#ifdef MOBILETEK_TARGET_PLATFORM_T106
- else if (strcmp(cmd, "sync_rtc") == 0)
- {
- lynq_sync_time_from_rtc = (int (*)(void))dlsym(dlHandle_systime, "lynq_sync_time_from_rtc");
- if (NULL == lynq_sync_time_from_rtc)
- {
- fprintf(stderr, "Failed to dlsym function lynq_sync_time_from_rtc : %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = lynq_sync_time_from_rtc();
- }
- else if (strcmp(cmd, "rtc_set") == 0)
- {
- lynq_set_rtc_time = (int (*)(void))dlsym(dlHandle_systime, "lynq_set_rtc_time");
- if (NULL == lynq_set_rtc_time)
- {
- fprintf(stderr, "Failed to dlsym function lynq_set_rtc_time : %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- ret = lynq_set_rtc_time();
- }
- else if (strcmp(cmd, "rtc_get") == 0)
- {
- lynq_get_rtc_time = (int (*)(unsigned long *ulsec))dlsym(dlHandle_systime, "lynq_get_rtc_time");
- if (NULL == lynq_get_rtc_time)
- {
- fprintf(stderr, "Failed to dlsym function lynq_get_rtc_time : %s\n", dlerror());
- dlclose(dlHandle_systime);
- return -1;
- }
- unsigned long time_ret;
- ret = lynq_get_rtc_time(&time_ret);
- time_t tp = (time_t)time_ret;
- char *rtc_time = ctime(&tp);
- printf("rtc_time seconds = %lu\n", time_ret);
- printf("rtc time = %s\n", rtc_time);
- }
-#endif
- else if (strcmp(cmd, "src_status") == 0)
- {
- ret = lynq_get_time_src_status_demo(argc, argv);
- }
- else if (strcmp(cmd,"sync_status") == 0)
- {
- ret = lynq_get_sync_status_demo(argc, argv);
- }
- else
- {
- printf("command wrong !\n");
- dlclose(dlHandle_systime);
- return -1;
- }
- if (0 != ret)
- {
- printf("ret = %d\n Command execution failure.\n", ret);
- }
- dlclose(dlHandle_systime);
- return ret;
-}
diff --git a/mbtk/test/liblynq_lib_t106/poweralarm-demo.cpp b/mbtk/test/liblynq_lib_t106/poweralarm-demo.cpp
deleted file mode 100755
index 0bca3bb..0000000
--- a/mbtk/test/liblynq_lib_t106/poweralarm-demo.cpp
+++ /dev/null
@@ -1,304 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-
-
-#define INIT_SUCCESS 0
-#define RTC_DEINIT -1
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "print_help"},
- {1, "lynq_rtc_service_init"},
- {2, "poweralarm"},
- {3, "wakealarm"},
- {4, "cancel_wakealarm"},
- {5, "lynq_set_poweralarm"},
- {6, "lynq_set_wakealarm"},
- {7, "lynq_rtc_service_deinit"},
- {-1, NULL}
-};
-
- int init_flag = -1;
- int src_id = -1;
- void *dlHandle_poweralarm = NULL;
-
-typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);
-
-int (*lynq_rtc_service_init)(void);
-int (*lynq_rtc_service_deinit)(void);
-int (*poweralarm)(char *buffer,int src_id);
-int (*wakealarm)(char *buffer,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);
-int (*cancel_wakealarm)(int src_id,int rtc_id);
-int (*lynq_set_poweralarm)(unsigned long time_sec,int src_id);
-int (*lynq_set_wakealarm)(unsigned long time_sec,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);
-
-
-
-void print_help(void)
-{
- int i;
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-int lynq_wakealarm_add_callback(unsigned int src_id, int rtc_id)
-{
- printf("wake alarm callback test \n");
- return 0;
-}
-
-
-int main(int argc,char *argv[])
-{
-
- int cmdIdx = 0;
- printf("Enter main function\n");
-
- const char *dlHandle_Path_poweralarm = "/lib/libpoweralarm.so";
- dlHandle_poweralarm = dlopen(dlHandle_Path_poweralarm, RTLD_NOW);
- if (dlHandle_poweralarm == NULL)
- {
- printf("dlopen dlHandle_fota failed: %s\n", dlerror());
- return -1;
- }
-
- poweralarm = (int (*)(char *buffer,int src_ids))dlsym(dlHandle_poweralarm, "poweralarm");
- if(poweralarm == NULL)
- {
- printf("poweralarm is null\n");
- return -1;
- }
-
- wakealarm = (int (*)(char *buffer,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify))dlsym(dlHandle_poweralarm, "wakealarm");
- if(wakealarm == NULL)
- {
- printf("wakealarm is null\n");
- return -1;
- }
- lynq_set_poweralarm = (int (*)(unsigned long,int src_id))dlsym(dlHandle_poweralarm,"lynq_set_poweralarm");
- if(lynq_set_poweralarm == NULL)
- {
- printf("lynq_set_poweralarm is null\n");
- return -1;
- }
- lynq_set_wakealarm = (int (*)(unsigned long,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify))dlsym(dlHandle_poweralarm,"lynq_set_wakealarm");
- if(lynq_set_wakealarm == NULL)
- {
- printf("lynq_set_wakealarm is null\n");
- return -1;
- }
-
- cancel_wakealarm = (int (*)(int src_id,int rtc_id))dlsym(dlHandle_poweralarm, "cancel_wakealarm");
- if(cancel_wakealarm == NULL)
- {
- printf("cancel_wakealarm is null\n");
- return -1;
- }
-
- lynq_rtc_service_init = (int(*)())dlsym(dlHandle_poweralarm,"lynq_rtc_service_init");
- if(lynq_rtc_service_init == NULL)
- {
- printf("lynq_rtc_service_init is null\n");
- return -1;
- }
-
- lynq_rtc_service_deinit = (int (*)())dlsym(dlHandle_poweralarm,"lynq_rtc_service_deinit");
- if(lynq_rtc_service_deinit == NULL)
- {
- printf("lynq_rtc_service_deinit is null \n");
- return -1;
- }
-
- print_help();
- while(1)
- {
-
- printf("\nplease input cmd index(-1 exit): ");
- scanf("%d", &cmdIdx);
- if(cmdIdx == -1)
- {
- break;
- }
- switch(cmdIdx)
- {
- case 0:
- print_help();
- break;
- case 1:
- {
- src_id = lynq_rtc_service_init();
- if(src_id <= 0)
- {
-
- printf("RTC service init failed ");
- return -1;
- }
- else
- {
- init_flag = INIT_SUCCESS;
- }
-
- break;
- }
- case 2:
- {
-
- if(init_flag != INIT_SUCCESS)
- {
- printf("*****ERROR must init rtc service ,Please reselect *******\n ");
- }
- else
- {
- int ret = 0;
- char tmp_time[32] = {0};
- printf("Set poweralarm time,e.g: 60 (seconds)\n");
- scanf("%s",tmp_time);
- ret = poweralarm(tmp_time,src_id);
- if(ret != 0)
- {
- printf("set poweralarm failed\n");
- return -1;
- }
- }
- break;
- }
- case 3:
- {
- if(init_flag != INIT_SUCCESS)
- {
- printf("*****ERROR must init rtc service ,Please reselect *******\n ");
- }
- else
- {
- int ret = 0;
- char tmp_time[32]={0};
- int rtc_id = 0;
- printf("Set wakealarm time ,e.g: 60 1 (seconds)\n");
- scanf("%s%d",tmp_time,&rtc_id);
-
- ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);
- if(ret != 0)
- {
- printf("set wakealarm failed\n");
- return -1;
- }
- }
- break;
- }
- case 4:
- {
- if(init_flag != INIT_SUCCESS)
- {
- printf("*****ERROR must init rtc service ,Please reselect *******\n ");
- }
- else
- {
- int ret = 0;
- int rtc_id = 0;
- printf("Please input you want cancel rtc timer rtc id\n");
- scanf("%d",&rtc_id);
- ret = cancel_wakealarm(src_id,rtc_id);
- if(ret != 0)
- {
- printf("Cancel_wakealarm failed!!!");
- return -1;
- }
- }
- break;
- }
- case 5:
- {
- if(init_flag != INIT_SUCCESS)
- {
- printf("*****ERROR must init rtc service ,Please reselect *******\n ");
- }
- else
- {
- int ret = 0;
- unsigned long time_sec = 0;
- printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");
- scanf("%lu",&time_sec);
- ret =lynq_set_poweralarm(time_sec,src_id);
- printf("ret is %d\n",ret);
- if(ret != 0)
- {
- printf("lynq_set_poweralarm failed\n");
- return -1;
- }
- }
- break;
- }
- case 6:
- {
- if(init_flag != INIT_SUCCESS)
- {
- printf("*****ERROR must init rtc service ,Please reselect *******\n ");
- }
- else
- {
- int ret = 0;
- unsigned long time_sec = 0;
- int rtc_id;
- printf("Input time_sec you want wakealarm,e.g:60 1(seconds)\n");
- scanf("%lu%d",&time_sec,&rtc_id);
- ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);
- if(ret != 0)
- {
- printf("lynq_set_wakealarm failed\n");
- return -1;
- }
- }
- break;
- }
- case 7:
- {
- if(init_flag != INIT_SUCCESS)
- {
- printf("*****ERROR must init rtc service ,Please reselect *******\n ");
- }
- else
- {
- int ret = -1;
- printf("rtc servce deinit !!!!!!!!!!!!");
- ret = lynq_rtc_service_deinit();
- if(ret != 0)
- {
- printf("lynq rtc service deinit failed \n");
- return -1;
- }
- else
- {
- init_flag = RTC_DEINIT;
- }
- }
- break;
- }
-
- default:
- break;
- }
- }
-
- return 0;
-
-}
-
diff --git a/mbtk/test/liblynq_lib_t106/qser_sim_test.c b/mbtk/test/liblynq_lib_t106/qser_sim_test.c
deleted file mode 100755
index d6478c4..0000000
--- a/mbtk/test/liblynq_lib_t106/qser_sim_test.c
+++ /dev/null
@@ -1,441 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdint.h>
-
-#include"lynq_qser_sim.h"
-
-
-#define BUF_SIZE 32
-#define BUF_PIN 16
-#define VER_SIZE 128
-
-typedef uint32_t sim_client_handle_type;
-
-sim_client_handle_type ph_sim = 2023;
-sim_client_handle_type h_sim = 2023;
-int flag_init = 0;
-
-typedef struct
-{
- int cmdIdx;
- const char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "qser_sim_init"},
- {1, "qser_get_imsi"},
- {2, "qser_get_iccid"},
- {3, "qser_get_phonenumber"},
- {4, "qser_verify_pin"},
- {5, "qser_change_pin"},
- {6, "qser_unlock_pin"},
- {7, "qser_enable_pin"},
- {8, "qser_disable_pin"},
- {9, "qser_get_sim_status"},
- {10, "qser_get_imei"},
- {11, "qser_get_imei_and_sv"},
- {12, "qser_reset_modem"},
- {13, "qser_get_version"},
- {14, "qser_reset_sim"},
- {15, "qser_deinit_sim"},
- {-1, NULL}
-};
-
-void print_help(void)
-{
- int i;
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-int main(int argc, char const *argv[])
-{
- int cmdIdx = 0;
- int res = 0;
-
- print_help();
- while(1)
- {
- printf("\nplease input cmd index(-1 exit): ");
- scanf("%d", &cmdIdx);
- if(cmdIdx == -1)
- {
- break;
- }
-
- switch(cmdIdx)
- {
- //"qser_sim_init"
- case 0:
- {
- if(flag_init == 1)
- {
- printf("init is already\n");
- break;
- }
- else{
- //int token;
- //printf("input token\n");
- //scanf("%d", &token);
- res = qser_sim_client_init(&h_sim);
- if(res == 0)
- {
- printf("Run qser_sim_client_init\n");
- flag_init = 1;
- }else{
- printf("qser_sim_client_init error\n");
- }
-
- break;
- }
- }
-
- //"qser_sim_getimsi"
- case 1:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char imsi[BUF_SIZE] = {0};
- QSER_SIM_APP_ID_INFO_T pt_info;
- res = qser_sim_getimsi(h_sim, &pt_info, imsi, 32);
- if(res == 0)
- {
- printf("imsi is %s!!!\n",imsi);
- }else{
- printf("get imsi error, res = %d\n", res);
- }
- }
- break;
- }
-
- //"qser_get_iccid"
- case 2:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char iccid[BUF_SIZE] = {0};
- res = qser_sim_geticcid(h_sim, QSER_SIM_SLOT_ID_1, iccid, 32);
- if(res == 0)
- {
- printf("get iccid success!!! iccid is %s\n",iccid);
- }else{
- printf("get iccid error, res = %d\n", res);
- }
- }
- break;
- }
- //qser_get_phonenumber
- case 3:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char phonenumber[BUF_SIZE] = "";
- QSER_SIM_APP_ID_INFO_T pt_info;
- res = qser_sim_getphonenumber(h_sim, &pt_info, phonenumber, 32);
- if(res == 0)
- {
- printf("get phonenumber success!!! phonenumber is %s\n",phonenumber);
- }else{
- printf("get phonenumber error, res = %d\n", res);
- }
- }
- break;
- }
- //qser_verify_pin
- case 4:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char pin[BUF_PIN] = {0};
- QSER_SIM_VERIFY_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- printf("pin_value = %s , pin = %s\n", pt_info.pin_value, pin);
- pt_info.pin_value_len = strlen(pt_info.pin_value);
-
- res = qser_sim_verifypin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("verify pin success!!!\n");
- }else{
- printf("verify pin error, res = %d\n", res);
- }
-
- }
- break;
- }
- //qser_change_pin
- case 5:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char old_pin[BUF_PIN] = {0};
- QSER_SIM_CHANGE_PIN_INFO_T pt_info;
- printf("input old pin\n");
- scanf("%s", old_pin);
- char new_pin[BUF_PIN] = {0};
- printf("input new pin\n");
- scanf("%s", new_pin);
- strncpy(pt_info.old_pin_value, old_pin, BUF_PIN);
- strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
- printf("pt_info.old_pin_value = %s, old_pin = %s\n", pt_info.old_pin_value, old_pin);
- printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
- pt_info.old_pin_value_len = strlen(pt_info.old_pin_value);
- pt_info.new_pin_value_len = strlen(pt_info.new_pin_value);
-
- res = qser_sim_changepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("change pin success!!!\n");
- }else{
- printf("change pin error, res = %d\n", res);
- }
- }
- break;
- }
- //qser_unlock_pin
- case 6:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char puk[BUF_PIN] = {0};
- QSER_SIM_UNBLOCK_PIN_INFO_T pt_info;
- printf("input puk\n");
- scanf("%s", puk);
- char new_pin[BUF_PIN] = {0};
- printf("input new pin\n");
- scanf("%s", new_pin);
-
- strncpy(pt_info.puk_value, puk, BUF_PIN);
- strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
- printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
- printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
- pt_info.new_pin_value_len = strlen(pt_info.new_pin_value);
- pt_info.puk_value_len = strlen(pt_info.puk_value);
-
- res = qser_sim_unblockpin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("unlock pin success!!!\n");
- }else{
- printf("unlock pin error, res = %d\n", res);
- }
- }
- break;
- }
- //qser_enable_pin
- case 7:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char pin[BUF_PIN] = {0};
- QSER_SIM_ENABLE_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- pt_info.pin_value_len = strlen(pt_info.pin_value);
-
- res = qser_sim_enablepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("pin enabled!!!\n");
- }else{
- printf("pin enable error, res =%d\n", res);
- }
- }
- break;
- }
- //qser_disable_pin
- case 8:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char pin[BUF_PIN] = {0};
- QSER_SIM_ENABLE_PIN_INFO_T pt_info;
- printf("input pin\n");
- scanf("%s", pin);
- strncpy(pt_info.pin_value, pin, BUF_PIN);
- pt_info.pin_value_len = strlen(pt_info.pin_value);
-
- res = qser_sim_disablepin(h_sim, &pt_info);
- if(res == 0)
- {
- printf("pin disnabled!!!\n");
- }else{
- printf("pin disable error,res = %d\n", res);
- }
- }
- break;
- }
- //qser_get_sim_status
- case 9:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- QSER_SIM_CARD_STATUS_INFO_T pt_info;
-
- res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
- if(res == 0)
- {
- printf("state is %d !!!\n",pt_info.e_card_state);
- }else{
- printf("get imsi error,res = %d\n", res);
- }
- }
- break;
- }
- //qser_get_imei
- case 10:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- char imei[BUF_SIZE]="";
- res = qser_sim_getimei(h_sim, imei);
- if(res == 0)
- {
- printf("get imei success!!! imei = %s\n", imei);
- }else{
- printf("get imei error, res = %d\n", res);
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_get_imei_and_sv
- case 11:
- {
- char imei[BUF_SIZE]="";
- char sv[BUF_SIZE]="";
-
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- res = qser_get_imei_and_sv(h_sim, imei, sv);
- if(res == 0)
- {
- printf("get imei and sv success!!!imei = %s sv = %s\n", imei, sv);
- }else{
- printf("get imei and sv error, res = %d\n", res);
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_reset_modem
- case 12:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- res = qser_reset_modem(h_sim);
- if(res == 0)
- {
- printf("reset modem success!!!\n");
- }else{
- printf("reset modem error, res = %d\n", res);
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_get_version
- case 13:
- {
- char buf[VER_SIZE]="";
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- res = qser_get_version(h_sim, buf);
- if(res == 0)
- {
- printf("get version success!!! ver = %s\n", buf);
- }else{
- printf("get version error, res = %d\n", res);
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_reset_sim
- case 14:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- res = qser_reset_sim(h_sim);
- if(res == 0)
- {
- printf("reset sim success!!!\n");
- }else{
- printf("reset sim error, res = %d\n", res);
- }
- }
- //flag_init = 0;
- break;
- }
- //qser_deinit_sim
- case 15:
- {
- if(flag_init == 0){
- printf("must init first\n");
- }
- else{
- res = qser_sim_client_deinit(h_sim);
- if(res == 0)
- {
- printf("sim deinit success is!!!\n");
- }else{
- printf("sim deint errors, res = %d\n", res);
- }
- }
- flag_init = 0;
- break;
- }
- default:
- print_help();
- break;
- }
-
- }
-
- return 0;
-}
diff --git a/mbtk/test/liblynq_lib_t106/ring_tele.h b/mbtk/test/liblynq_lib_t106/ring_tele.h
deleted file mode 100755
index 580bfe8..0000000
--- a/mbtk/test/liblynq_lib_t106/ring_tele.h
+++ /dev/null
@@ -1,6364 +0,0 @@
-/* Generated by reswrap version 4.0.0 */
-
-/* created by reswrap from file m.pcm */
-#ifndef RING_TELE
-#define RING_TELE
-
-#define PCM_DATA ring_tele
-#define PCM_DATA_SIZE (sizeof(ring_tele) / sizeof(ring_tele[0]))
-
-const unsigned char ring_tele[]={
-0xd8, 0xff, 0xbc, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xd8, 0xff,
-0xfc, 0xff, 0x18, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x64, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x38, 0x00,
-0x14, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x9a, 0xff, 0x86, 0xff, 0x70, 0xff, 0x68, 0xff, 0x86, 0xff,
-0x9c, 0xff, 0xca, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x58, 0x00, 0x74, 0x00, 0x86, 0x00, 0x82, 0x00,
-0x6a, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x66, 0xff, 0x4c, 0xff,
-0x56, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x0c, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x9a, 0x00,
-0xae, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x4e, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x96, 0xff, 0x62, 0xff,
-0x3e, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x9e, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x42, 0x00,
-0x8c, 0x00, 0xa0, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xc2, 0xff,
-0x7c, 0xff, 0x4c, 0xff, 0x20, 0xff, 0x20, 0xff, 0x34, 0xff, 0x64, 0xff, 0xa4, 0xff, 0xec, 0xff,
-0x24, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xb6, 0x00, 0xc2, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x26, 0x00,
-0xee, 0xff, 0xb2, 0xff, 0x74, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x3a, 0xff, 0x54, 0xff, 0x7a, 0xff,
-0xc8, 0xff, 0x06, 0x00, 0x2e, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x86, 0x00,
-0x4c, 0x00, 0x12, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x66, 0xff, 0x48, 0xff, 0x44, 0xff, 0x46, 0xff,
-0x62, 0xff, 0x90, 0xff, 0xce, 0xff, 0x02, 0x00, 0x32, 0x00, 0x62, 0x00, 0x8a, 0x00, 0x98, 0x00,
-0x90, 0x00, 0x72, 0x00, 0x42, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x5a, 0xff,
-0x5a, 0xff, 0x68, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xde, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x74, 0x00,
-0x88, 0x00, 0x96, 0x00, 0x86, 0x00, 0x60, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0xce, 0xff, 0xa8, 0xff,
-0x90, 0xff, 0x82, 0xff, 0x70, 0xff, 0x7e, 0xff, 0x94, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x16, 0x00,
-0x40, 0x00, 0x54, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x52, 0x00, 0x46, 0x00, 0x0c, 0x00, 0xf6, 0xff,
-0xd2, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xd2, 0xff,
-0xee, 0xff, 0x0a, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x42, 0x00, 0x36, 0x00,
-0x14, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xb4, 0xff, 0xbc, 0xff,
-0xc4, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x16, 0x00, 0x14, 0x00, 0x22, 0x00,
-0x0e, 0x00, 0x14, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xd2, 0xff,
-0xce, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xec, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff,
-0xf8, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xc6, 0xff,
-0xcc, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0x10, 0x00, 0x1e, 0x00,
-0x20, 0x00, 0x28, 0x00, 0x10, 0x00, 0x16, 0x00, 0x12, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xc0, 0xff,
-0xb6, 0xff, 0x9c, 0xff, 0x8c, 0xff, 0x98, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xdc, 0xff, 0xf8, 0xff,
-0x1a, 0x00, 0x36, 0x00, 0x42, 0x00, 0x50, 0x00, 0x40, 0x00, 0x38, 0x00, 0x18, 0x00, 0xf8, 0xff,
-0xd2, 0xff, 0xa8, 0xff, 0x86, 0xff, 0x78, 0xff, 0x76, 0xff, 0x86, 0xff, 0xa6, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x10, 0x00, 0x48, 0x00, 0x68, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x6c, 0x00, 0x46, 0x00,
-0x22, 0x00, 0xf4, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x70, 0xff,
-0x90, 0xff, 0xc2, 0xff, 0xea, 0xff, 0x22, 0x00, 0x60, 0x00, 0x7a, 0x00, 0x94, 0x00, 0x9a, 0x00,
-0x7a, 0x00, 0x54, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xc2, 0xff, 0x86, 0xff, 0x52, 0xff, 0x3e, 0xff,
-0x3c, 0xff, 0x4a, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x96, 0x00,
-0xaa, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xba, 0xff, 0x76, 0xff,
-0x3e, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x82, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x36, 0x00,
-0x7c, 0x00, 0xa2, 0x00, 0xb4, 0x00, 0xae, 0x00, 0x8e, 0x00, 0x60, 0x00, 0x0e, 0x00, 0xe4, 0xff,
-0xa0, 0xff, 0x62, 0xff, 0x36, 0xff, 0x18, 0xff, 0x2c, 0xff, 0x56, 0xff, 0x8e, 0xff, 0xcc, 0xff,
-0xfc, 0xff, 0x30, 0x00, 0x72, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x3e, 0x00,
-0x02, 0x00, 0xce, 0xff, 0x94, 0xff, 0x5a, 0xff, 0x2e, 0xff, 0x26, 0xff, 0x3a, 0xff, 0x5e, 0xff,
-0x96, 0xff, 0xd4, 0xff, 0x0e, 0x00, 0x44, 0x00, 0x78, 0x00, 0xa4, 0x00, 0xb2, 0x00, 0x9c, 0x00,
-0x74, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xbe, 0xff, 0x88, 0xff, 0x54, 0xff, 0x38, 0xff, 0x32, 0xff,
-0x40, 0xff, 0x6e, 0xff, 0xa6, 0xff, 0xe6, 0xff, 0x18, 0x00, 0x48, 0x00, 0x72, 0x00, 0x92, 0x00,
-0x96, 0x00, 0x7e, 0x00, 0x5a, 0x00, 0x28, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x88, 0xff, 0x5e, 0xff,
-0x4e, 0xff, 0x54, 0xff, 0x68, 0xff, 0x8a, 0xff, 0xc6, 0xff, 0xec, 0xff, 0x1c, 0x00, 0x4c, 0x00,
-0x6c, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x66, 0x00, 0x4c, 0x00, 0x10, 0x00, 0xe6, 0xff, 0xc2, 0xff,
-0xa0, 0xff, 0x90, 0xff, 0x74, 0xff, 0x7c, 0xff, 0x90, 0xff, 0xa2, 0xff, 0xde, 0xff, 0xfc, 0xff,
-0x20, 0x00, 0x44, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x2c, 0x00, 0x0e, 0x00,
-0xe8, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xb4, 0xff,
-0xe4, 0xff, 0x02, 0x00, 0x14, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x34, 0x00,
-0x08, 0x00, 0xfa, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xba, 0xff, 0xbc, 0xff,
-0xd2, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00,
-0x0c, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf4, 0xff,
-0xf4, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd4, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x14, 0x00,
-0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xb0, 0xff,
-0xa4, 0xff, 0xb6, 0xff, 0xac, 0xff, 0xb4, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x14, 0x00,
-0x2a, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf4, 0xff, 0xde, 0xff,
-0xb4, 0xff, 0x96, 0xff, 0x94, 0xff, 0x86, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xee, 0xff,
-0x04, 0x00, 0x32, 0x00, 0x50, 0x00, 0x62, 0x00, 0x60, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x1c, 0x00,
-0xf4, 0xff, 0xca, 0xff, 0x94, 0xff, 0x80, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x7e, 0xff, 0x98, 0xff,
-0xb6, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x4e, 0x00, 0x76, 0x00, 0x94, 0x00, 0x88, 0x00, 0x64, 0x00,
-0x46, 0x00, 0x14, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x80, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x54, 0xff,
-0x68, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x3a, 0x00, 0x6e, 0x00, 0x96, 0x00, 0xa8, 0x00,
-0x9c, 0x00, 0x7a, 0x00, 0x44, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x9a, 0xff, 0x64, 0xff, 0x48, 0xff,
-0x36, 0xff, 0x46, 0xff, 0x66, 0xff, 0xa0, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x48, 0x00, 0x90, 0x00,
-0xb2, 0x00, 0xb4, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00, 0xfc, 0xff, 0xc6, 0xff, 0x86, 0xff,
-0x5c, 0xff, 0x36, 0xff, 0x24, 0xff, 0x3a, 0xff, 0x6e, 0xff, 0xb0, 0xff, 0xec, 0xff, 0x1e, 0x00,
-0x60, 0x00, 0x90, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xa6, 0x00, 0x78, 0x00, 0x26, 0x00, 0xf8, 0xff,
-0xc2, 0xff, 0x7c, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x32, 0xff, 0x40, 0xff, 0x6c, 0xff, 0xb0, 0xff,
-0xf8, 0xff, 0x28, 0x00, 0x62, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x5a, 0x00,
-0x14, 0x00, 0xe2, 0xff, 0xa4, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x4a, 0xff,
-0x82, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x32, 0x00, 0x6e, 0x00, 0x90, 0x00, 0x96, 0x00, 0x96, 0x00,
-0x76, 0x00, 0x46, 0x00, 0x06, 0x00, 0xd6, 0xff, 0xa4, 0xff, 0x70, 0xff, 0x58, 0xff, 0x54, 0xff,
-0x52, 0xff, 0x6a, 0xff, 0xa4, 0xff, 0xe2, 0xff, 0x12, 0x00, 0x40, 0x00, 0x66, 0x00, 0x84, 0x00,
-0x90, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x32, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0x9c, 0xff, 0x82, 0xff,
-0x72, 0xff, 0x64, 0xff, 0x72, 0xff, 0x8c, 0xff, 0xb6, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x3a, 0x00,
-0x54, 0x00, 0x56, 0x00, 0x68, 0x00, 0x56, 0x00, 0x30, 0x00, 0x12, 0x00, 0xf2, 0xff, 0xd6, 0xff,
-0xaa, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x96, 0xff, 0xb0, 0xff, 0xdc, 0xff, 0xfc, 0xff,
-0x0e, 0x00, 0x30, 0x00, 0x42, 0x00, 0x40, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x20, 0x00, 0x04, 0x00,
-0xfa, 0xff, 0xdc, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb8, 0xff, 0xce, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x20, 0x00, 0x1e, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd4, 0xff,
-0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x00, 0x00,
-0xf4, 0xff, 0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0x06, 0x00, 0xfc, 0xff,
-0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xcc, 0xff,
-0xd0, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x16, 0x00, 0x20, 0x00,
-0x2a, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xbc, 0xff,
-0xa8, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x18, 0x00,
-0x2e, 0x00, 0x40, 0x00, 0x48, 0x00, 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x14, 0x00, 0xe8, 0xff,
-0xcc, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x7a, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xda, 0xff,
-0xfe, 0xff, 0x2a, 0x00, 0x54, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x3e, 0x00,
-0x08, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x7c, 0xff, 0x66, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x7c, 0xff,
-0x9e, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x40, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x9a, 0x00, 0x94, 0x00,
-0x72, 0x00, 0x36, 0x00, 0x06, 0x00, 0xc2, 0xff, 0x90, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x42, 0xff, 0x78, 0xff, 0xa2, 0xff, 0xe6, 0xff, 0x18, 0x00, 0x62, 0x00, 0x8a, 0x00, 0xa4, 0x00,
-0xb2, 0x00, 0x9a, 0x00, 0x7e, 0x00, 0x3a, 0x00, 0xf6, 0xff, 0xc0, 0xff, 0x84, 0xff, 0x4a, 0xff,
-0x30, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x70, 0x00,
-0xa6, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x20, 0x00, 0xf2, 0xff, 0xae, 0xff,
-0x6c, 0xff, 0x4a, 0xff, 0x24, 0xff, 0x30, 0xff, 0x58, 0xff, 0x88, 0xff, 0xce, 0xff, 0x08, 0x00,
-0x32, 0x00, 0x72, 0x00, 0xa8, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x92, 0x00, 0x4c, 0x00, 0x12, 0x00,
-0xde, 0xff, 0x9e, 0xff, 0x6c, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x38, 0xff, 0x60, 0xff, 0x96, 0xff,
-0xd0, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x7c, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0x7e, 0x00,
-0x48, 0x00, 0x08, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3a, 0xff, 0x46, 0xff,
-0x70, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x48, 0x00, 0x74, 0x00, 0x90, 0x00, 0x9a, 0x00,
-0x88, 0x00, 0x5e, 0x00, 0x28, 0x00, 0xf4, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x70, 0xff, 0x56, 0xff,
-0x5a, 0xff, 0x70, 0xff, 0x8c, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0x1c, 0x00, 0x4a, 0x00, 0x6c, 0x00,
-0x76, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x38, 0x00, 0x06, 0x00, 0xe8, 0xff, 0xb8, 0xff, 0x98, 0xff,
-0x88, 0xff, 0x76, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0xa4, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x22, 0x00,
-0x4e, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x14, 0x00, 0x02, 0x00, 0xde, 0xff,
-0xc4, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xe0, 0xff,
-0xfe, 0xff, 0x10, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe0, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00,
-0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfc, 0xff, 0x02, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd6, 0xff,
-0xd4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x18, 0x00,
-0x1e, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xa4, 0xff,
-0xa8, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xcc, 0xff, 0xea, 0xff, 0x04, 0x00, 0x1e, 0x00, 0x38, 0x00,
-0x44, 0x00, 0x46, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x18, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xbc, 0xff,
-0x9c, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x92, 0xff, 0xa4, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x06, 0x00,
-0x2c, 0x00, 0x54, 0x00, 0x62, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0xf2, 0xff,
-0xcc, 0xff, 0x96, 0xff, 0x80, 0xff, 0x62, 0xff, 0x54, 0xff, 0x72, 0xff, 0x94, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x14, 0x00, 0x50, 0x00, 0x6a, 0x00, 0x8a, 0x00, 0x92, 0x00, 0x6e, 0x00, 0x46, 0x00,
-0x1a, 0x00, 0xee, 0xff, 0xbc, 0xff, 0x8a, 0xff, 0x60, 0xff, 0x48, 0xff, 0x46, 0xff, 0x5c, 0xff,
-0x96, 0xff, 0xb6, 0xff, 0xf6, 0xff, 0x30, 0x00, 0x60, 0x00, 0x94, 0x00, 0xa2, 0x00, 0xa2, 0x00,
-0x82, 0x00, 0x56, 0x00, 0x12, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x6a, 0xff, 0x3e, 0xff, 0x30, 0xff,
-0x30, 0xff, 0x54, 0xff, 0x86, 0xff, 0xc2, 0xff, 0xf8, 0xff, 0x3e, 0x00, 0x82, 0x00, 0xa0, 0x00,
-0xbe, 0x00, 0xae, 0x00, 0x8e, 0x00, 0x52, 0x00, 0x0c, 0x00, 0xe6, 0xff, 0xa2, 0xff, 0x66, 0xff,
-0x3e, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x98, 0xff, 0xd8, 0xff, 0x0e, 0x00, 0x56, 0x00,
-0x88, 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xac, 0x00, 0x8a, 0x00, 0x46, 0x00, 0xfc, 0xff, 0xd2, 0xff,
-0x8e, 0xff, 0x54, 0xff, 0x30, 0xff, 0x30, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa2, 0xff, 0xe0, 0xff,
-0x16, 0x00, 0x56, 0x00, 0x8c, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0x9a, 0x00, 0x62, 0x00, 0x24, 0x00,
-0xf6, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x38, 0xff, 0x58, 0xff, 0x82, 0xff,
-0xc8, 0xff, 0xf8, 0xff, 0x30, 0x00, 0x68, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x86, 0x00,
-0x50, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x5a, 0xff, 0x44, 0xff, 0x58, 0xff,
-0x76, 0xff, 0xa0, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x32, 0x00, 0x56, 0x00, 0x78, 0x00, 0x7e, 0x00,
-0x7a, 0x00, 0x60, 0x00, 0x34, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x7e, 0xff, 0x66, 0xff,
-0x64, 0xff, 0x72, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x22, 0x00, 0x42, 0x00,
-0x4e, 0x00, 0x56, 0x00, 0x4a, 0x00, 0x36, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xb4, 0xff,
-0xa2, 0xff, 0x8e, 0xff, 0x96, 0xff, 0x96, 0xff, 0xa8, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x06, 0x00,
-0x1a, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x3a, 0x00, 0x32, 0x00, 0x26, 0x00, 0x08, 0x00, 0xfa, 0xff,
-0xea, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xca, 0xff, 0xd8, 0xff,
-0xf4, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x12, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0a, 0x00,
-0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xf8, 0xff,
-0xf2, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x12, 0x00, 0x0c, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xcc, 0xff,
-0xd0, 0xff, 0xca, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x20, 0x00, 0x30, 0x00,
-0x2a, 0x00, 0x28, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xc0, 0xff, 0xac, 0xff,
-0xa6, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x28, 0x00,
-0x40, 0x00, 0x56, 0x00, 0x54, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x16, 0x00, 0xfc, 0xff, 0xc4, 0xff,
-0xa6, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xc4, 0xff, 0xea, 0xff,
-0x0c, 0x00, 0x48, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x10, 0x00,
-0xe8, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x56, 0xff, 0x4e, 0xff, 0x60, 0xff, 0x8a, 0xff,
-0xb8, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x78, 0x00, 0x8e, 0x00, 0x88, 0x00, 0x68, 0x00,
-0x40, 0x00, 0x0e, 0x00, 0xd6, 0xff, 0xa0, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x42, 0xff,
-0x60, 0xff, 0x9a, 0xff, 0xc8, 0xff, 0xfa, 0xff, 0x3c, 0x00, 0x78, 0x00, 0x98, 0x00, 0xae, 0x00,
-0x9e, 0x00, 0x80, 0x00, 0x40, 0x00, 0x12, 0x00, 0xd0, 0xff, 0x8e, 0xff, 0x62, 0xff, 0x32, 0xff,
-0x28, 0xff, 0x32, 0xff, 0x56, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x10, 0x00, 0x5c, 0x00, 0x8a, 0x00,
-0xb2, 0x00, 0xb6, 0x00, 0xa8, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xf0, 0xff, 0xbc, 0xff, 0x80, 0xff,
-0x48, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x46, 0xff, 0x7a, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x28, 0x00,
-0x6e, 0x00, 0xb0, 0x00, 0xca, 0x00, 0xb8, 0x00, 0x9a, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xe0, 0xff,
-0xb0, 0xff, 0x74, 0xff, 0x46, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x9e, 0xff, 0xd6, 0xff,
-0x20, 0x00, 0x4e, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xbc, 0x00, 0xae, 0x00, 0x74, 0x00, 0x48, 0x00,
-0x06, 0x00, 0xce, 0xff, 0x96, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x4a, 0xff, 0x70, 0xff,
-0xae, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x48, 0x00, 0x84, 0x00, 0x90, 0x00, 0xa6, 0x00, 0x82, 0x00,
-0x62, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0x90, 0xff, 0x76, 0xff, 0x60, 0xff, 0x58, 0xff,
-0x68, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x4e, 0x00, 0x64, 0x00, 0x80, 0x00,
-0x7c, 0x00, 0x64, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xec, 0xff, 0xc2, 0xff, 0x9a, 0xff, 0x8c, 0xff,
-0x7c, 0xff, 0x74, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x1c, 0x00, 0x3e, 0x00,
-0x3e, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x1e, 0x00, 0x06, 0x00, 0xe6, 0xff, 0xc2, 0xff,
-0xa0, 0xff, 0x94, 0xff, 0x96, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xbe, 0xff, 0xda, 0xff, 0xf6, 0xff,
-0x0c, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x22, 0x00, 0x10, 0x00, 0xfe, 0xff,
-0xe8, 0xff, 0xd6, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xcc, 0xff, 0xda, 0xff,
-0xec, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0xff,
-0xfc, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe8, 0xff,
-0xee, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xda, 0xff,
-0xe0, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x12, 0x00, 0x14, 0x00, 0x20, 0x00, 0x12, 0x00,
-0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xbc, 0xff, 0xbc, 0xff,
-0xc6, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x00, 0x00, 0x18, 0x00, 0x36, 0x00, 0x3c, 0x00,
-0x46, 0x00, 0x3c, 0x00, 0x28, 0x00, 0x22, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0x98, 0xff,
-0x9a, 0xff, 0x92, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xba, 0xff, 0xee, 0xff, 0x08, 0x00, 0x2a, 0x00,
-0x58, 0x00, 0x5a, 0x00, 0x6c, 0x00, 0x60, 0x00, 0x42, 0x00, 0x34, 0x00, 0x02, 0x00, 0xda, 0xff,
-0xac, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x62, 0xff, 0x74, 0xff, 0x94, 0xff, 0xba, 0xff, 0xe6, 0xff,
-0x14, 0x00, 0x4c, 0x00, 0x78, 0x00, 0x88, 0x00, 0x84, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x28, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0x96, 0xff, 0x58, 0xff, 0x42, 0xff, 0x44, 0xff, 0x52, 0xff, 0x7e, 0xff,
-0xb2, 0xff, 0xe8, 0xff, 0x20, 0x00, 0x50, 0x00, 0x78, 0x00, 0x94, 0x00, 0x94, 0x00, 0x86, 0x00,
-0x52, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xa0, 0xff, 0x70, 0xff, 0x4e, 0xff, 0x62, 0xff, 0x8a, 0xff,
-0xc4, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x76, 0x00, 0x9a, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x8c, 0x00,
-0x52, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x9a, 0xff, 0x60, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x36, 0xff,
-0x62, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x0c, 0x00, 0x48, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb8, 0x00,
-0xa8, 0x00, 0x74, 0x00, 0x38, 0x00, 0xf6, 0xff, 0xc2, 0xff, 0x86, 0xff, 0x52, 0xff, 0x28, 0xff,
-0x26, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa0, 0xff, 0xe6, 0xff, 0x14, 0x00, 0x4e, 0x00, 0x80, 0x00,
-0xa2, 0x00, 0xb6, 0x00, 0x94, 0x00, 0x6c, 0x00, 0x2a, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x7a, 0xff,
-0x5c, 0xff, 0x48, 0xff, 0x46, 0xff, 0x62, 0xff, 0x82, 0xff, 0xb4, 0xff, 0xf4, 0xff, 0x26, 0x00,
-0x5a, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x60, 0x00, 0x20, 0x00, 0xf4, 0xff,
-0xbe, 0xff, 0x8c, 0xff, 0x62, 0xff, 0x44, 0xff, 0x54, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xc2, 0xff,
-0xf6, 0xff, 0x26, 0x00, 0x52, 0x00, 0x78, 0x00, 0x82, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x40, 0x00,
-0x0e, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x8c, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x82, 0xff,
-0x9e, 0xff, 0xda, 0xff, 0x06, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x66, 0x00, 0x60, 0x00, 0x56, 0x00,
-0x50, 0x00, 0x24, 0x00, 0x06, 0x00, 0xec, 0xff, 0xc2, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0x98, 0xff,
-0xa4, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x28, 0x00, 0x3a, 0x00,
-0x40, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xe4, 0xff, 0xcc, 0xff, 0xba, 0xff,
-0xb4, 0xff, 0xbc, 0xff, 0xac, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xfe, 0xff,
-0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x06, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xe8, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xea, 0xff,
-0xf2, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf0, 0xff,
-0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x08, 0x00, 0xf6, 0xff, 0xe6, 0xff,
-0xe6, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xe0, 0xff,
-0xf0, 0xff, 0x06, 0x00, 0x0c, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x16, 0x00,
-0x02, 0x00, 0xf4, 0xff, 0xd4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa2, 0xff, 0xa0, 0xff,
-0xb4, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x6a, 0x00,
-0x4c, 0x00, 0x30, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x8a, 0xff, 0x82, 0xff,
-0x7a, 0xff, 0x90, 0xff, 0xac, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x2a, 0x00, 0x5a, 0x00, 0x78, 0x00,
-0x82, 0x00, 0x7e, 0x00, 0x60, 0x00, 0x30, 0x00, 0x04, 0x00, 0xde, 0xff, 0xa4, 0xff, 0x6c, 0xff,
-0x5a, 0xff, 0x50, 0xff, 0x54, 0xff, 0x74, 0xff, 0x9c, 0xff, 0xd6, 0xff, 0x14, 0x00, 0x46, 0x00,
-0x6e, 0x00, 0x90, 0x00, 0x96, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x30, 0x00, 0x06, 0x00, 0xca, 0xff,
-0x94, 0xff, 0x66, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x68, 0xff, 0xa8, 0xff, 0xec, 0xff,
-0x20, 0x00, 0x5e, 0x00, 0x92, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0x90, 0x00, 0x62, 0x00, 0x2e, 0x00,
-0xee, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x44, 0xff, 0x70, 0xff,
-0xa8, 0xff, 0xee, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x92, 0x00, 0xac, 0x00, 0xa4, 0x00, 0x90, 0x00,
-0x62, 0x00, 0x2a, 0x00, 0xe8, 0xff, 0xb0, 0xff, 0x66, 0xff, 0x38, 0xff, 0x28, 0xff, 0x22, 0xff,
-0x44, 0xff, 0x74, 0xff, 0xc2, 0xff, 0x00, 0x00, 0x36, 0x00, 0x74, 0x00, 0x98, 0x00, 0xac, 0x00,
-0xaa, 0x00, 0x92, 0x00, 0x5a, 0x00, 0x1c, 0x00, 0xe8, 0xff, 0xa6, 0xff, 0x72, 0xff, 0x46, 0xff,
-0x2c, 0xff, 0x40, 0xff, 0x5a, 0xff, 0x8c, 0xff, 0xd4, 0xff, 0x0e, 0x00, 0x38, 0x00, 0x70, 0x00,
-0x92, 0x00, 0xa0, 0x00, 0x96, 0x00, 0x74, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xc8, 0xff, 0x8a, 0xff,
-0x6a, 0xff, 0x50, 0xff, 0x42, 0xff, 0x4c, 0xff, 0x76, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0x0a, 0x00,
-0x3e, 0x00, 0x74, 0x00, 0x86, 0x00, 0x8e, 0x00, 0x80, 0x00, 0x5e, 0x00, 0x32, 0x00, 0xf4, 0xff,
-0xc2, 0xff, 0x9e, 0xff, 0x76, 0xff, 0x64, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x8e, 0xff, 0xbe, 0xff,
-0xf6, 0xff, 0x2a, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x46, 0x00,
-0x14, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x78, 0xff, 0x74, 0xff, 0x88, 0xff,
-0xa6, 0xff, 0xd2, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x32, 0x00, 0x3e, 0x00, 0x48, 0x00, 0x3c, 0x00,
-0x3a, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xa0, 0xff,
-0xaa, 0xff, 0xae, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x24, 0x00,
-0x20, 0x00, 0x24, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x08, 0x00, 0xec, 0xff, 0xe8, 0xff, 0xcc, 0xff,
-0xca, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf6, 0xff,
-0xf2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xfe, 0xff,
-0xfa, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xdc, 0xff,
-0xd0, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, 0xe4, 0xff, 0xf6, 0xff,
-0x0e, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0x04, 0x00,
-0xf0, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xc0, 0xff,
-0xe4, 0xff, 0x04, 0x00, 0x10, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x3a, 0x00,
-0x26, 0x00, 0x08, 0x00, 0xda, 0xff, 0xb6, 0xff, 0x98, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x86, 0xff,
-0x9c, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x4c, 0x00, 0x6a, 0x00, 0x76, 0x00,
-0x72, 0x00, 0x50, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xde, 0xff, 0xa8, 0xff, 0x82, 0xff, 0x80, 0xff,
-0x68, 0xff, 0x72, 0xff, 0x8e, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x4e, 0x00, 0x6a, 0x00,
-0x90, 0x00, 0x9a, 0x00, 0x8e, 0x00, 0x6a, 0x00, 0x2c, 0x00, 0x12, 0x00, 0xce, 0xff, 0x98, 0xff,
-0x66, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x56, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x26, 0x00,
-0x56, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x66, 0x00, 0x28, 0x00, 0xf0, 0xff,
-0xbc, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xc0, 0xff,
-0xfa, 0xff, 0x36, 0x00, 0x80, 0x00, 0xa0, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0x90, 0x00, 0x60, 0x00,
-0x14, 0x00, 0xec, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x4e, 0xff, 0x2a, 0xff, 0x34, 0xff, 0x4a, 0xff,
-0x7a, 0xff, 0xd2, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x7c, 0x00, 0xae, 0x00, 0xb6, 0x00, 0xaa, 0x00,
-0x8a, 0x00, 0x48, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x8e, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x1a, 0xff,
-0x2c, 0xff, 0x50, 0xff, 0x8e, 0xff, 0xda, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xae, 0x00,
-0xb0, 0x00, 0x98, 0x00, 0x74, 0x00, 0x3a, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x86, 0xff, 0x5c, 0xff,
-0x32, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xae, 0xff, 0xea, 0xff, 0x2a, 0x00, 0x60, 0x00,
-0x86, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x58, 0x00, 0x2e, 0x00, 0xf2, 0xff, 0xbe, 0xff,
-0x8c, 0xff, 0x6e, 0xff, 0x4c, 0xff, 0x52, 0xff, 0x74, 0xff, 0x88, 0xff, 0xc6, 0xff, 0xfa, 0xff,
-0x28, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x80, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x3c, 0x00, 0x1a, 0x00,
-0xf8, 0xff, 0xbc, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x80, 0xff, 0x86, 0xff, 0x96, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x48, 0x00,
-0x28, 0x00, 0x12, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9c, 0xff,
-0xae, 0xff, 0xce, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x2e, 0x00, 0x38, 0x00,
-0x3e, 0x00, 0x30, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe8, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xba, 0xff,
-0xc2, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x1c, 0x00,
-0x16, 0x00, 0x20, 0x00, 0x18, 0x00, 0x16, 0x00, 0x12, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff,
-0xde, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xec, 0xff,
-0xf6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00,
-0xfe, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xee, 0xff, 0xe8, 0xff, 0xe4, 0xff,
-0xd0, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xd6, 0xff, 0xf0, 0xff,
-0xf6, 0xff, 0x04, 0x00, 0x1e, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x22, 0x00, 0x06, 0x00,
-0xe8, 0xff, 0xd2, 0xff, 0xb4, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x8e, 0xff, 0x9c, 0xff, 0xa6, 0xff,
-0xbe, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x32, 0x00, 0x52, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x40, 0x00,
-0x36, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xd0, 0xff, 0xa2, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x62, 0xff,
-0x78, 0xff, 0x92, 0xff, 0xb2, 0xff, 0xf6, 0xff, 0x14, 0x00, 0x50, 0x00, 0x66, 0x00, 0x72, 0x00,
-0x80, 0x00, 0x66, 0x00, 0x52, 0x00, 0x1e, 0x00, 0xfc, 0xff, 0xb6, 0xff, 0x7a, 0xff, 0x6a, 0xff,
-0x48, 0xff, 0x4e, 0xff, 0x6c, 0xff, 0x90, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x6c, 0x00,
-0x8a, 0x00, 0xac, 0x00, 0xa2, 0x00, 0x84, 0x00, 0x5a, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb6, 0xff,
-0x78, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x56, 0xff, 0x92, 0xff, 0xcc, 0xff, 0x04, 0x00,
-0x44, 0x00, 0x7c, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x86, 0x00, 0x50, 0x00, 0x16, 0x00,
-0xe2, 0xff, 0x9c, 0xff, 0x54, 0xff, 0x32, 0xff, 0x1a, 0xff, 0x38, 0xff, 0x58, 0xff, 0x96, 0xff,
-0xe2, 0xff, 0x16, 0x00, 0x52, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb8, 0x00, 0xac, 0x00, 0x80, 0x00,
-0x42, 0x00, 0x02, 0x00, 0xce, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x1e, 0xff, 0x16, 0xff, 0x3e, 0xff,
-0x68, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x64, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xb4, 0x00,
-0x96, 0x00, 0x6e, 0x00, 0x2a, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x6a, 0xff, 0x36, 0xff, 0x28, 0xff,
-0x2e, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x58, 0x00, 0x84, 0x00,
-0x98, 0x00, 0x9c, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x18, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x72, 0xff,
-0x4c, 0xff, 0x44, 0xff, 0x48, 0xff, 0x74, 0xff, 0x90, 0xff, 0xc8, 0xff, 0xfc, 0xff, 0x2c, 0x00,
-0x66, 0x00, 0x74, 0x00, 0x88, 0x00, 0x74, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x06, 0x00, 0xd6, 0xff,
-0xa4, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x66, 0xff, 0x72, 0xff, 0x8a, 0xff, 0xb8, 0xff, 0xe2, 0xff,
-0x04, 0x00, 0x38, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x48, 0x00, 0x16, 0x00,
-0xec, 0xff, 0xd2, 0xff, 0xa8, 0xff, 0x9a, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb6, 0xff,
-0xd4, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x40, 0x00, 0x34, 0x00,
-0x22, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xde, 0xff, 0xca, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xc0, 0xff,
-0xc2, 0xff, 0xd0, 0xff, 0xe6, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x14, 0x00, 0x26, 0x00, 0x20, 0x00,
-0x24, 0x00, 0x1e, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xea, 0xff, 0xda, 0xff, 0xd8, 0xff,
-0xe6, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xf6, 0xff,
-0xf4, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00,
-0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0xee, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xdc, 0xff,
-0xe2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0x02, 0x00,
-0x10, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x0e, 0x00, 0xfa, 0xff, 0xf0, 0xff,
-0xda, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xd4, 0xff,
-0xe2, 0xff, 0x06, 0x00, 0x26, 0x00, 0x32, 0x00, 0x34, 0x00, 0x34, 0x00, 0x22, 0x00, 0x26, 0x00,
-0x00, 0x00, 0xdc, 0xff, 0xc4, 0xff, 0x90, 0xff, 0x94, 0xff, 0x86, 0xff, 0x80, 0xff, 0x9a, 0xff,
-0x9e, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x5c, 0x00, 0x70, 0x00, 0x5c, 0x00,
-0x48, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xa6, 0xff, 0x84, 0xff, 0x66, 0xff, 0x58, 0xff,
-0x64, 0xff, 0x7c, 0xff, 0xac, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x46, 0x00, 0x68, 0x00, 0x88, 0x00,
-0x8c, 0x00, 0x86, 0x00, 0x50, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xc0, 0xff, 0x92, 0xff, 0x5a, 0xff,
-0x44, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x78, 0xff, 0xac, 0xff, 0xea, 0xff, 0x26, 0x00, 0x56, 0x00,
-0x98, 0x00, 0xaa, 0x00, 0xae, 0x00, 0x94, 0x00, 0x68, 0x00, 0x28, 0x00, 0xf2, 0xff, 0xbe, 0xff,
-0x86, 0xff, 0x58, 0xff, 0x38, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x8c, 0xff, 0xca, 0xff, 0x06, 0x00,
-0x3e, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xc0, 0x00, 0x98, 0x00, 0x66, 0x00, 0x18, 0x00,
-0xe0, 0xff, 0xb8, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x5c, 0xff, 0x86, 0xff,
-0xd4, 0xff, 0x02, 0x00, 0x38, 0x00, 0x88, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x90, 0x00,
-0x4e, 0x00, 0x0a, 0x00, 0xe2, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x40, 0xff, 0x32, 0xff, 0x3c, 0xff,
-0x5e, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x22, 0x00, 0x54, 0x00, 0x82, 0x00, 0xb2, 0x00, 0xb2, 0x00,
-0x98, 0x00, 0x78, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0xd2, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x40, 0xff,
-0x4c, 0xff, 0x5c, 0xff, 0x82, 0xff, 0xb2, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x56, 0x00, 0x82, 0x00,
-0x8e, 0x00, 0x8e, 0x00, 0x84, 0x00, 0x58, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x8c, 0xff,
-0x66, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x60, 0xff, 0x92, 0xff, 0xcc, 0xff, 0xee, 0xff, 0x20, 0x00,
-0x52, 0x00, 0x62, 0x00, 0x74, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x40, 0x00, 0x12, 0x00, 0xee, 0xff,
-0xc8, 0xff, 0x92, 0xff, 0x86, 0xff, 0x78, 0xff, 0x7c, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xe4, 0xff,
-0x02, 0x00, 0x1e, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x40, 0x00, 0x32, 0x00,
-0xfc, 0xff, 0xe4, 0xff, 0xc6, 0xff, 0xac, 0xff, 0xa0, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xaa, 0xff,
-0xc8, 0xff, 0xe6, 0xff, 0x00, 0x00, 0x10, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2e, 0x00,
-0x26, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf2, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc0, 0xff,
-0xca, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x08, 0x00, 0x1e, 0x00, 0x14, 0x00,
-0x12, 0x00, 0x24, 0x00, 0x16, 0x00, 0x0c, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf4, 0xff,
-0xe6, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf2, 0xff,
-0xee, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x02, 0x00,
-0x0a, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xe0, 0xff,
-0xcc, 0xff, 0xca, 0xff, 0xbe, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0xf8, 0xff,
-0x10, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x34, 0x00, 0x24, 0x00, 0x06, 0x00,
-0xf0, 0xff, 0xce, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9c, 0xff, 0xa4, 0xff, 0xbc, 0xff,
-0xda, 0xff, 0xee, 0xff, 0x20, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x50, 0x00, 0x42, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xd2, 0xff, 0x9c, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x60, 0xff, 0x6c, 0xff,
-0x7e, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0xfc, 0xff, 0x36, 0x00, 0x58, 0x00, 0x66, 0x00, 0x78, 0x00,
-0x6c, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x86, 0xff, 0x5c, 0xff, 0x58, 0xff,
-0x50, 0xff, 0x56, 0xff, 0x7e, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7a, 0x00,
-0x86, 0x00, 0x92, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xaa, 0xff, 0x78, 0xff,
-0x52, 0xff, 0x32, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x7a, 0xff, 0xb6, 0xff, 0xea, 0xff, 0x26, 0x00,
-0x62, 0x00, 0x82, 0x00, 0x94, 0x00, 0xa2, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x08, 0x00, 0xce, 0xff,
-0x98, 0xff, 0x68, 0xff, 0x42, 0xff, 0x38, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x90, 0xff, 0xda, 0xff,
-0x0a, 0x00, 0x48, 0x00, 0x84, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0x9e, 0x00, 0x76, 0x00, 0x40, 0x00,
-0x04, 0x00, 0xd4, 0xff, 0x98, 0xff, 0x60, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x70, 0xff,
-0xb4, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00, 0xaa, 0x00, 0xac, 0x00, 0x98, 0x00,
-0x68, 0x00, 0x2c, 0x00, 0xf2, 0xff, 0xb6, 0xff, 0x8a, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3c, 0xff,
-0x54, 0xff, 0x86, 0xff, 0xc0, 0xff, 0xf8, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00,
-0xac, 0x00, 0x92, 0x00, 0x62, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x84, 0xff, 0x5c, 0xff,
-0x56, 0xff, 0x50, 0xff, 0x72, 0xff, 0x92, 0xff, 0xba, 0xff, 0x00, 0x00, 0x32, 0x00, 0x64, 0x00,
-0x86, 0x00, 0x90, 0x00, 0x8e, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0a, 0x00, 0xe4, 0xff, 0xb4, 0xff,
-0x8c, 0xff, 0x78, 0xff, 0x64, 0xff, 0x62, 0xff, 0x70, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0xfc, 0xff,
-0x22, 0x00, 0x3e, 0x00, 0x56, 0x00, 0x60, 0x00, 0x52, 0x00, 0x46, 0x00, 0x22, 0x00, 0xfc, 0xff,
-0xe2, 0xff, 0xba, 0xff, 0xa4, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x96, 0xff, 0xc0, 0xff,
-0xd6, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x2e, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x30, 0x00,
-0x16, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xac, 0xff,
-0xc0, 0xff, 0xd0, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x0a, 0x00, 0x12, 0x00,
-0x0e, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xe0, 0xff,
-0xd6, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf8, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x04, 0x00, 0xfc, 0xff,
-0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf6, 0xff, 0x0a, 0x00,
-0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xea, 0xff,
-0xca, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xe6, 0xff,
-0x0a, 0x00, 0x26, 0x00, 0x4a, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x1a, 0x00,
-0xfe, 0xff, 0xdc, 0xff, 0xac, 0xff, 0x9c, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x90, 0xff, 0x9e, 0xff,
-0xd2, 0xff, 0xfa, 0xff, 0x2a, 0x00, 0x56, 0x00, 0x68, 0x00, 0x7c, 0x00, 0x68, 0x00, 0x4e, 0x00,
-0x3e, 0x00, 0x0e, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x88, 0xff, 0x68, 0xff, 0x48, 0xff, 0x5c, 0xff,
-0x78, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x8a, 0x00,
-0x80, 0x00, 0x5c, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xd0, 0xff, 0x9e, 0xff, 0x6a, 0xff, 0x4a, 0xff,
-0x48, 0xff, 0x54, 0xff, 0x80, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x1e, 0x00, 0x56, 0x00, 0x7a, 0x00,
-0x94, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x70, 0x00, 0x26, 0x00, 0xf2, 0xff, 0xbe, 0xff, 0x80, 0xff,
-0x48, 0xff, 0x3a, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xbc, 0xff, 0x02, 0x00, 0x26, 0x00,
-0x6a, 0x00, 0x96, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0x88, 0x00, 0x58, 0x00, 0x0e, 0x00, 0xd0, 0xff,
-0x98, 0xff, 0x64, 0xff, 0x44, 0xff, 0x22, 0xff, 0x28, 0xff, 0x56, 0xff, 0x82, 0xff, 0xd2, 0xff,
-0x10, 0x00, 0x46, 0x00, 0x86, 0x00, 0xa0, 0x00, 0xb6, 0x00, 0xa6, 0x00, 0x84, 0x00, 0x50, 0x00,
-0x12, 0x00, 0xdc, 0xff, 0x96, 0xff, 0x68, 0xff, 0x46, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x62, 0xff,
-0x9a, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x7a, 0x00, 0xa4, 0x00, 0xae, 0x00, 0xaa, 0x00,
-0x88, 0x00, 0x42, 0x00, 0x14, 0x00, 0xd6, 0xff, 0x98, 0xff, 0x70, 0xff, 0x48, 0xff, 0x42, 0xff,
-0x4e, 0xff, 0x6e, 0xff, 0xa8, 0xff, 0xe2, 0xff, 0x20, 0x00, 0x46, 0x00, 0x74, 0x00, 0x8e, 0x00,
-0x90, 0x00, 0x88, 0x00, 0x66, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x94, 0xff, 0x6e, 0xff,
-0x4e, 0xff, 0x4c, 0xff, 0x64, 0xff, 0x82, 0xff, 0xb6, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x48, 0x00,
-0x6a, 0x00, 0x7e, 0x00, 0x86, 0x00, 0x70, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf2, 0xff, 0xc2, 0xff,
-0x9c, 0xff, 0x88, 0xff, 0x70, 0xff, 0x78, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xf6, 0xff,
-0x10, 0x00, 0x38, 0x00, 0x48, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x06, 0x00,
-0xe2, 0xff, 0xc0, 0xff, 0xac, 0xff, 0x98, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa0, 0xff, 0xb4, 0xff,
-0xd2, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x22, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x20, 0x00,
-0x16, 0x00, 0x00, 0x00, 0xea, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xc0, 0xff,
-0xc6, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x06, 0x00,
-0x08, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfe, 0xff,
-0xf4, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xe8, 0xff,
-0xee, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x18, 0x00,
-0x0c, 0x00, 0x12, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xf4, 0xff, 0xe2, 0xff, 0xdc, 0xff, 0xce, 0xff,
-0xbc, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xfe, 0xff, 0x0a, 0x00,
-0x24, 0x00, 0x36, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x04, 0x00, 0xf0, 0xff,
-0xda, 0xff, 0xbe, 0xff, 0xa0, 0xff, 0x92, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xea, 0xff,
-0x16, 0x00, 0x2e, 0x00, 0x46, 0x00, 0x50, 0x00, 0x62, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x14, 0x00,
-0xee, 0xff, 0xd6, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x7a, 0xff, 0xac, 0xff,
-0xa0, 0xff, 0xc6, 0xff, 0x20, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x5c, 0x00, 0x82, 0x00, 0x64, 0x00,
-0x4a, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0x52, 0xff, 0x86, 0xff,
-0x7a, 0xff, 0x2c, 0xff, 0x98, 0xff, 0x26, 0x00, 0x6c, 0x00, 0x52, 0x00, 0x72, 0x00, 0xb8, 0x00,
-0xb6, 0x00, 0x04, 0x01, 0x34, 0x01, 0x48, 0x01, 0xbc, 0x00, 0xf0, 0xfe, 0x16, 0xfc, 0x70, 0xf8,
-0xc2, 0xf4, 0xf4, 0xf1, 0x12, 0xf1, 0x4c, 0xf3, 0xde, 0xf8, 0x9c, 0x01, 0x90, 0x0c, 0x1a, 0x18,
-0x0f, 0x22, 0x9b, 0x28, 0x0d, 0x2a, 0xb7, 0x24, 0xd4, 0x18, 0x6c, 0x07, 0x06, 0xf3, 0xcb, 0xde,
-0x0d, 0xcd, 0x37, 0xc0, 0x15, 0xba, 0xe1, 0xbc, 0xab, 0xc8, 0xf9, 0xdb, 0x28, 0xf5, 0x32, 0x11,
-0x43, 0x2c, 0x41, 0x42, 0xd1, 0x50, 0x7a, 0x55, 0x0d, 0x4f, 0x6b, 0x3e, 0x41, 0x25, 0xde, 0x06,
-0x6e, 0xe7, 0x63, 0xca, 0xf7, 0xb3, 0x14, 0xa7, 0x48, 0xa5, 0x41, 0xae, 0x5b, 0xc1, 0xad, 0xdc,
-0xf0, 0xfb, 0xf6, 0x1a, 0x4b, 0x35, 0xe7, 0x48, 0x45, 0x54, 0x88, 0x56, 0x4f, 0x4e, 0x6b, 0x3d,
-0xc1, 0x24, 0xbc, 0x06, 0x4c, 0xe7, 0x09, 0xca, 0x1b, 0xb4, 0xc2, 0xa8, 0x54, 0xa9, 0xf3, 0xb4,
-0x9b, 0xc9, 0x8a, 0xe4, 0x3a, 0x01, 0x9e, 0x1b, 0x71, 0x31, 0x03, 0x42, 0x7f, 0x4c, 0x8f, 0x4f,
-0xe3, 0x49, 0xcd, 0x3a, 0x49, 0x23, 0xa2, 0x05, 0xbe, 0xe5, 0x19, 0xc9, 0x87, 0xb4, 0x41, 0xab,
-0x37, 0xae, 0xdb, 0xbb, 0x37, 0xd1, 0x7e, 0xea, 0x40, 0x04, 0xa4, 0x1b, 0x51, 0x2f, 0x7b, 0x3e,
-0x1d, 0x48, 0xe3, 0x4a, 0x33, 0x45, 0xfb, 0x35, 0x07, 0x1e, 0x14, 0x00, 0xd3, 0xe0, 0xe3, 0xc5,
-0x79, 0xb4, 0x1f, 0xaf, 0x7d, 0xb5, 0x19, 0xc5, 0xc9, 0xda, 0x06, 0xf3, 0x10, 0x0a, 0x93, 0x1e,
-0x0b, 0x2f, 0xb7, 0x3a, 0x3f, 0x41, 0x59, 0x41, 0x91, 0x39, 0xb1, 0x29, 0x26, 0x13, 0xf4, 0xf8,
-0xbf, 0xdf, 0x33, 0xcc, 0xb9, 0xc1, 0xe1, 0xc0, 0x69, 0xc8, 0xc7, 0xd5, 0x14, 0xe6, 0x1a, 0xf7,
-0x12, 0x07, 0xf8, 0x14, 0x37, 0x20, 0x5d, 0x28, 0xd5, 0x2c, 0x27, 0x2d, 0xdf, 0x27, 0xff, 0x1c,
-0x9a, 0x0d, 0xbe, 0xfb, 0xdc, 0xea, 0x41, 0xde, 0x87, 0xd7, 0x43, 0xd7, 0x2b, 0xdc, 0x60, 0xe4,
-0x2e, 0xee, 0x14, 0xf8, 0x62, 0x01, 0x4c, 0x09, 0x98, 0x0f, 0x5e, 0x14, 0xba, 0x17, 0x2e, 0x19,
-0x36, 0x18, 0x4a, 0x14, 0x8a, 0x0d, 0x06, 0x05, 0x08, 0xfc, 0x30, 0xf4, 0xe8, 0xee, 0xbc, 0xec,
-0x4c, 0xed, 0xb2, 0xef, 0x20, 0xf3, 0x58, 0xf6, 0xde, 0xf8, 0xb0, 0xfa, 0x42, 0xfc, 0x34, 0xfe,
-0x6c, 0x01, 0x0c, 0x06, 0x62, 0x0b, 0x1c, 0x10, 0x8e, 0x12, 0x44, 0x12, 0x8c, 0x0f, 0x50, 0x0b,
-0x56, 0x06, 0xaa, 0x01, 0xc2, 0xfd, 0x54, 0xfa, 0x9c, 0xf6, 0x22, 0xf2, 0x2e, 0xed, 0xb6, 0xe8,
-0x12, 0xe6, 0xd0, 0xe6, 0x66, 0xec, 0xc8, 0xf6, 0x3c, 0x04, 0xa0, 0x11, 0x65, 0x1c, 0xad, 0x22,
-0x0f, 0x24, 0x0d, 0x21, 0x2a, 0x1b, 0xac, 0x13, 0x26, 0x0b, 0x82, 0x01, 0x5e, 0xf6, 0x22, 0xea,
-0xdf, 0xdd, 0xe3, 0xd3, 0x91, 0xce, 0x6f, 0xd0, 0x79, 0xda, 0xb0, 0xeb, 0xfe, 0x00, 0x76, 0x16,
-0x65, 0x28, 0x1f, 0x34, 0xc1, 0x38, 0xd5, 0x36, 0xb5, 0x2f, 0x63, 0x24, 0xb8, 0x15, 0xda, 0x03,
-0xde, 0xef, 0x45, 0xdb, 0x0b, 0xc9, 0x6b, 0xbc, 0x2b, 0xb8, 0x31, 0xbe, 0x59, 0xce, 0x68, 0xe6,
-0x82, 0x02, 0x13, 0x1e, 0xdb, 0x34, 0x95, 0x44, 0xa5, 0x4b, 0x33, 0x4a, 0x01, 0x41, 0x15, 0x31,
-0x44, 0x1b, 0x2c, 0x01, 0x24, 0xe5, 0x6b, 0xca, 0x2b, 0xb5, 0xc6, 0xa8, 0xb2, 0xa7, 0x8b, 0xb2,
-0x3f, 0xc8, 0x04, 0xe6, 0xae, 0x07, 0x0d, 0x28, 0xf1, 0x42, 0xe8, 0x54, 0x72, 0x5c, 0x34, 0x59,
-0xaf, 0x4b, 0x39, 0x35, 0x06, 0x18, 0x44, 0xf7, 0x67, 0xd6, 0xdf, 0xb9, 0x7a, 0xa5, 0x44, 0x9c,
-0x50, 0x9f, 0x5f, 0xae, 0x05, 0xc8, 0x94, 0xe9, 0xbc, 0x0e, 0x6f, 0x32, 0xf7, 0x4f, 0x6a, 0x63,
-0x5a, 0x6a, 0xdc, 0x63, 0x9f, 0x50, 0x11, 0x33, 0x44, 0x0f, 0xa6, 0xe9, 0x1f, 0xc7, 0xd3, 0xab,
-0xe8, 0x9a, 0xac, 0x95, 0x66, 0x9c, 0xa7, 0xae, 0x19, 0xcb, 0x4c, 0xef, 0xf4, 0x16, 0xc3, 0x3c,
-0x6c, 0x5b, 0x66, 0x6e, 0x4a, 0x72, 0x60, 0x66, 0xb3, 0x4c, 0xb5, 0x29, 0xc0, 0x02, 0xef, 0xdc,
-0xbb, 0xbc, 0x4e, 0xa5, 0x4e, 0x98, 0x4c, 0x96, 0x48, 0x9f, 0x0f, 0xb3, 0x1d, 0xd1, 0xc6, 0xf6,
-0x99, 0x1f, 0xd3, 0x45, 0x82, 0x63, 0x8a, 0x73, 0xcc, 0x72, 0xc8, 0x61, 0x27, 0x44, 0x91, 0x1f,
-0x88, 0xf9, 0x7b, 0xd6, 0xa7, 0xb9, 0x86, 0xa5, 0x26, 0x9b, 0x00, 0x9b, 0x70, 0xa5, 0xb5, 0xba,
-0xe9, 0xd9, 0x24, 0x00, 0x63, 0x28, 0x75, 0x4c, 0x4c, 0x66, 0x28, 0x71, 0x70, 0x6b, 0xec, 0x56,
-0x8d, 0x38, 0x8c, 0x15, 0x94, 0xf2, 0x37, 0xd3, 0x1f, 0xba, 0x4a, 0xa9, 0xb0, 0xa1, 0xee, 0xa3,
-0x57, 0xb0, 0xf3, 0xc6, 0x2a, 0xe6, 0x88, 0x0a, 0xcb, 0x2e, 0x3d, 0x4d, 0xa8, 0x60, 0x02, 0x66,
-0x14, 0x5d, 0x9d, 0x48, 0xdf, 0x2c, 0x28, 0x0e, 0x10, 0xf0, 0x6f, 0xd5, 0xab, 0xc0, 0x3d, 0xb3,
-0x4f, 0xae, 0x47, 0xb2, 0x7b, 0xbf, 0x4f, 0xd5, 0xa2, 0xf1, 0xca, 0x10, 0x45, 0x2e, 0x97, 0x45,
-0x17, 0x53, 0x10, 0x55, 0xb5, 0x4b, 0x7b, 0x39, 0xa9, 0x21, 0xc6, 0x07, 0xd2, 0xee, 0x6b, 0xd9,
-0x85, 0xc9, 0x83, 0xc0, 0xf3, 0xbe, 0xed, 0xc4, 0xed, 0xd1, 0x84, 0xe4, 0xca, 0xfa, 0xda, 0x11,
-0xef, 0x26, 0x1f, 0x37, 0x35, 0x40, 0xd7, 0x40, 0x3f, 0x39, 0xc1, 0x2a, 0xf4, 0x17, 0xc6, 0x03,
-0xd0, 0xf0, 0x6d, 0xe1, 0x01, 0xd7, 0x73, 0xd2, 0x79, 0xd3, 0x8f, 0xd9, 0x79, 0xe3, 0xee, 0xef,
-0xa4, 0xfd, 0x84, 0x0b, 0x62, 0x18, 0xcf, 0x22, 0x6d, 0x29, 0xc1, 0x2a, 0x67, 0x26, 0x11, 0x1d,
-0x8c, 0x10, 0x2a, 0x03, 0x4e, 0xf7, 0x7e, 0xee, 0x9e, 0xe9, 0x8e, 0xe8, 0x50, 0xea, 0x7a, 0xed,
-0x1a, 0xf1, 0xbe, 0xf4, 0xda, 0xf8, 0x22, 0xfe, 0xa2, 0x04, 0xd8, 0x0b, 0x1e, 0x12, 0xf6, 0x15,
-0xf4, 0x15, 0x76, 0x12, 0xce, 0x0c, 0xfc, 0x06, 0xb4, 0x02, 0x8e, 0x00, 0x4a, 0x00, 0xc4, 0x00,
-0x70, 0x00, 0x0e, 0xfe, 0xb6, 0xf9, 0x48, 0xf4, 0xb0, 0xef, 0xc0, 0xed, 0x48, 0xef, 0xdc, 0xf3,
-0x46, 0xfa, 0xa4, 0x00, 0xb8, 0x05, 0x50, 0x09, 0x2e, 0x0c, 0x4c, 0x0f, 0xea, 0x12, 0x82, 0x16,
-0xa0, 0x18, 0xda, 0x17, 0xd8, 0x12, 0x8c, 0x09, 0x18, 0xfd, 0x9c, 0xef, 0xd2, 0xe3, 0xf3, 0xdb,
-0x77, 0xd9, 0x87, 0xdc, 0x1a, 0xe4, 0x84, 0xee, 0x60, 0xfa, 0x98, 0x06, 0xd0, 0x12, 0x41, 0x1e,
-0xd7, 0x27, 0xed, 0x2d, 0x19, 0x2f, 0x59, 0x2a, 0x8f, 0x1f, 0x98, 0x0f, 0x3a, 0xfc, 0x30, 0xe8,
-0x4d, 0xd6, 0x8d, 0xc9, 0xb9, 0xc3, 0xed, 0xc5, 0xc5, 0xcf, 0xcf, 0xdf, 0xba, 0xf3, 0x3c, 0x09,
-0x1f, 0x1e, 0x0d, 0x30, 0xf1, 0x3c, 0xff, 0x42, 0x9b, 0x41, 0x8d, 0x38, 0x71, 0x28, 0x86, 0x12,
-0xfe, 0xf8, 0xa1, 0xde, 0x17, 0xc7, 0xcf, 0xb5, 0x0d, 0xae, 0x9f, 0xb1, 0x33, 0xc0, 0xb9, 0xd7,
-0x7e, 0xf4, 0x40, 0x12, 0x07, 0x2d, 0xf5, 0x41, 0xdf, 0x4e, 0x49, 0x53, 0x8f, 0x4e, 0x5d, 0x41,
-0xb3, 0x2c, 0xe6, 0x11, 0x12, 0xf3, 0x8b, 0xd3, 0x93, 0xb7, 0x00, 0xa4, 0xee, 0x9c, 0xfa, 0xa3,
-0xcd, 0xb8, 0xbb, 0xd7, 0x5c, 0xfb, 0xdd, 0x1d, 0x0b, 0x3b, 0x31, 0x50, 0xfa, 0x5b, 0xf6, 0x5d,
-0x30, 0x56, 0x83, 0x45, 0xdd, 0x2c, 0x90, 0x0d, 0xfe, 0xe9, 0x4d, 0xc6, 0x10, 0xa8, 0xac, 0x94,
-0x7a, 0x90, 0xd6, 0x9c, 0xe1, 0xb7, 0x9d, 0xdc, 0x44, 0x04, 0xe1, 0x28, 0x8f, 0x46, 0xde, 0x5a,
-0x0c, 0x65, 0xc6, 0x64, 0x00, 0x5a, 0xbf, 0x45, 0xed, 0x28, 0x38, 0x05, 0x11, 0xde, 0x8d, 0xb8,
-0xc2, 0x9a, 0xb6, 0x8a, 0x8e, 0x8b, 0x80, 0x9d, 0x23, 0xbd, 0xc8, 0xe4, 0x60, 0x0d, 0xb1, 0x31,
-0xfd, 0x4d, 0x82, 0x60, 0x7e, 0x68, 0x84, 0x65, 0xc0, 0x57, 0xf9, 0x3f, 0xc3, 0x1f, 0x5c, 0xf9,
-0x6b, 0xd1, 0x77, 0xad, 0xd2, 0x93, 0xf4, 0x88, 0xfe, 0x8e, 0x9a, 0xa4, 0x25, 0xc6, 0xb4, 0xed,
-0xee, 0x14, 0x45, 0x37, 0x4d, 0x51, 0x7c, 0x61, 0xd8, 0x66, 0xde, 0x60, 0xe7, 0x4f, 0x63, 0x35,
-0x48, 0x13, 0x38, 0xed, 0x17, 0xc8, 0x38, 0xa9, 0x76, 0x95, 0xd2, 0x8f, 0x1a, 0x99, 0x9f, 0xaf,
-0x15, 0xd0, 0x12, 0xf5, 0x48, 0x19, 0x6f, 0x38, 0xab, 0x4f, 0xd8, 0x5c, 0x3a, 0x5f, 0x3e, 0x56,
-0xd7, 0x42, 0x53, 0x27, 0x88, 0x06, 0x86, 0xe4, 0xad, 0xc5, 0xc1, 0xad, 0x90, 0x9f, 0x68, 0x9d,
-0x44, 0xa7, 0x75, 0xbc, 0xa1, 0xd9, 0x9c, 0xfa, 0xf0, 0x1a, 0xa3, 0x36, 0x47, 0x4a, 0x0d, 0x54,
-0xdf, 0x52, 0x2d, 0x47, 0x0b, 0x33, 0x06, 0x19, 0xd8, 0xfc, 0xbb, 0xe1, 0x69, 0xca, 0xd9, 0xb8,
-0xfb, 0xae, 0x2d, 0xae, 0x39, 0xb7, 0x5d, 0xc9, 0x77, 0xe2, 0xfc, 0xfe, 0xb8, 0x1a, 0xb9, 0x31,
-0x9f, 0x40, 0xc5, 0x45, 0x6b, 0x41, 0xb3, 0x34, 0x67, 0x22, 0xa4, 0x0d, 0xda, 0xf8, 0x14, 0xe6,
-0x4f, 0xd6, 0x33, 0xca, 0x21, 0xc3, 0x69, 0xc2, 0xf7, 0xc8, 0x37, 0xd7, 0x1e, 0xeb, 0xae, 0x01,
-0x08, 0x17, 0x6d, 0x27, 0x8f, 0x30, 0xb1, 0x31, 0xb3, 0x2b, 0x07, 0x21, 0x24, 0x14, 0xfc, 0x06,
-0xe8, 0xfa, 0x42, 0xf0, 0xec, 0xe6, 0x21, 0xdf, 0x61, 0xd9, 0xa5, 0xd7, 0x0f, 0xdb, 0xe2, 0xe3,
-0x0a, 0xf1, 0xde, 0xff, 0x60, 0x0d, 0xee, 0x16, 0x26, 0x1b, 0x30, 0x1a, 0x1e, 0x16, 0x4e, 0x10,
-0xc4, 0x0a, 0x2e, 0x06, 0x94, 0x02, 0x3c, 0xff, 0x32, 0xfb, 0x34, 0xf6, 0x00, 0xf1, 0x0c, 0xed,
-0x8e, 0xeb, 0x5c, 0xed, 0xcc, 0xf1, 0x9e, 0xf7, 0xdc, 0xfc, 0x54, 0x00, 0xfa, 0x01, 0x52, 0x02,
-0x76, 0x02, 0x78, 0x03, 0xd4, 0x05, 0x74, 0x09, 0x5e, 0x0d, 0x22, 0x10, 0xa8, 0x10, 0x28, 0x0e,
-0xac, 0x08, 0x4e, 0x01, 0x64, 0xf9, 0x4c, 0xf2, 0x0c, 0xed, 0xb0, 0xe9, 0x16, 0xe8, 0x32, 0xe8,
-0xf4, 0xe9, 0x90, 0xed, 0x4c, 0xf3, 0x20, 0xfb, 0xc8, 0x04, 0xae, 0x0f, 0x3c, 0x1a, 0x9f, 0x22,
-0x0d, 0x27, 0xd7, 0x25, 0x53, 0x1e, 0x5e, 0x11, 0x20, 0x01, 0x3c, 0xf0, 0xc1, 0xe1, 0xfd, 0xd6,
-0x35, 0xd1, 0x89, 0xd0, 0x9b, 0xd4, 0xad, 0xdc, 0x4a, 0xe8, 0xe6, 0xf6, 0xaa, 0x07, 0x7e, 0x19,
-0x01, 0x2a, 0x19, 0x37, 0x7b, 0x3d, 0x0d, 0x3b, 0xcf, 0x2e, 0x92, 0x1a, 0x8a, 0x01, 0x1c, 0xe8,
-0x71, 0xd2, 0x8b, 0xc3, 0x7b, 0xbc, 0x0b, 0xbd, 0x29, 0xc4, 0xa1, 0xd0, 0xcf, 0xe1, 0x7c, 0xf6,
-0xb2, 0x0d, 0xc7, 0x25, 0xaf, 0x3b, 0x4b, 0x4b, 0x91, 0x51, 0x69, 0x4b, 0x41, 0x39, 0x7f, 0x1d,
-0xe6, 0xfc, 0x3b, 0xdd, 0x77, 0xc3, 0x31, 0xb2, 0xbe, 0xaa, 0xc5, 0xac, 0xa3, 0xb6, 0xcd, 0xc7,
-0xc9, 0xde, 0x98, 0xfa, 0x08, 0x19, 0xaf, 0x36, 0x4d, 0x4f, 0x02, 0x5f, 0xc6, 0x61, 0xf8, 0x55,
-0x09, 0x3d, 0xee, 0x1a, 0x84, 0xf5, 0x89, 0xd2, 0xcb, 0xb6, 0x68, 0xa5, 0xfa, 0x9e, 0xec, 0xa2,
-0x07, 0xb0, 0x7d, 0xc5, 0x13, 0xe2, 0x3c, 0x03, 0xa3, 0x25, 0x6b, 0x45, 0xf6, 0x5d, 0xda, 0x6a,
-0x38, 0x69, 0x5a, 0x58, 0x45, 0x3b, 0x36, 0x16, 0x60, 0xee, 0xdd, 0xc9, 0x57, 0xad, 0x90, 0x9b,
-0xc2, 0x95, 0xa0, 0x9b, 0x8f, 0xac, 0x93, 0xc7, 0xd2, 0xe9, 0x86, 0x0f, 0x85, 0x34, 0xcf, 0x53,
-0x40, 0x69, 0x68, 0x71, 0xc6, 0x6a, 0x34, 0x56, 0xa7, 0x36, 0x28, 0x10, 0xc4, 0xe7, 0xf1, 0xc2,
-0x44, 0xa6, 0x4c, 0x95, 0x76, 0x91, 0x0a, 0x9b, 0x03, 0xb1, 0xf9, 0xd0, 0xce, 0xf6, 0x7b, 0x1d,
-0x4d, 0x40, 0x28, 0x5b, 0x36, 0x6b, 0x76, 0x6e, 0x6c, 0x64, 0x73, 0x4e, 0xe3, 0x2e, 0x3e, 0x09,
-0xbd, 0xe1, 0xf1, 0xbd, 0xdc, 0xa2, 0x6e, 0x94, 0x2a, 0x94, 0x16, 0xa2, 0x0f, 0xbc, 0x57, 0xde,
-0xc6, 0x03, 0x4f, 0x27, 0x15, 0x45, 0x38, 0x5a, 0x16, 0x65, 0x1a, 0x65, 0x1c, 0x5a, 0xc9, 0x44,
-0xd9, 0x26, 0xfe, 0x02, 0x8b, 0xdd, 0x0f, 0xbc, 0xdc, 0xa3, 0xfe, 0x98, 0x00, 0x9d, 0x5d, 0xae,
-0x3f, 0xca, 0x8a, 0xeb, 0x4c, 0x0d, 0x0f, 0x2b, 0x75, 0x42, 0x11, 0x52, 0x64, 0x59, 0xca, 0x57,
-0x1b, 0x4d, 0x8d, 0x39, 0xc3, 0x1d, 0xaa, 0xfc, 0x85, 0xda, 0x5d, 0xbd, 0x50, 0xaa, 0x70, 0xa4,
-0x09, 0xac, 0x4f, 0xbf, 0xa3, 0xd9, 0x64, 0xf6, 0x94, 0x11, 0x79, 0x28, 0xef, 0x39, 0x17, 0x45,
-0xa3, 0x49, 0x89, 0x47, 0x0d, 0x3e, 0xab, 0x2c, 0x56, 0x14, 0xd4, 0xf7, 0xbf, 0xdb, 0x07, 0xc5,
-0xb5, 0xb7, 0x15, 0xb6, 0x7f, 0xbf, 0xd5, 0xd0, 0x4a, 0xe6, 0x30, 0xfc, 0x14, 0x10, 0x87, 0x20,
-0x91, 0x2c, 0x39, 0x34, 0x45, 0x37, 0x3d, 0x35, 0x71, 0x2d, 0xbf, 0x1f, 0xf6, 0x0c, 0xbc, 0xf7,
-0x73, 0xe3, 0xdf, 0xd3, 0x09, 0xcc, 0x45, 0xcc, 0xfb, 0xd3, 0x7f, 0xe0, 0x24, 0xef, 0x70, 0xfd,
-0xf2, 0x09, 0xd8, 0x13, 0x40, 0x1b, 0xcd, 0x1f, 0x71, 0x21, 0x8b, 0x20, 0x5f, 0x1c, 0xe0, 0x14,
-0x68, 0x0a, 0x58, 0xfe, 0x9e, 0xf2, 0x8c, 0xe9, 0x62, 0xe4, 0xe8, 0xe3, 0x72, 0xe7, 0x7e, 0xed,
-0x6a, 0xf4, 0x18, 0xfb, 0x90, 0x00, 0x8a, 0x04, 0x38, 0x07, 0x14, 0x09, 0xac, 0x0a, 0x74, 0x0c,
-0x44, 0x0e, 0x38, 0x0f, 0xa0, 0x0e, 0xb0, 0x0b, 0x0a, 0x07, 0x9e, 0x01, 0xce, 0xfc, 0x40, 0xf9,
-0x5c, 0xf7, 0x96, 0xf6, 0x2c, 0xf6, 0x86, 0xf5, 0x20, 0xf4, 0x4e, 0xf2, 0x04, 0xf1, 0x6a, 0xf1,
-0xae, 0xf4, 0x88, 0xfb, 0x2e, 0x05, 0x88, 0x0f, 0x34, 0x18, 0xe5, 0x1c, 0x09, 0x1d, 0x82, 0x19,
-0x90, 0x13, 0x82, 0x0c, 0x2e, 0x05, 0x90, 0xfd, 0x80, 0xf5, 0x06, 0xed, 0x34, 0xe4, 0xad, 0xdc,
-0x89, 0xd8, 0xbd, 0xd9, 0xa1, 0xe1, 0xe6, 0xef, 0x64, 0x02, 0xee, 0x15, 0x55, 0x26, 0x63, 0x30,
-0x6b, 0x33, 0x0b, 0x30, 0xdb, 0x27, 0x55, 0x1c, 0xac, 0x0e, 0x88, 0xff, 0x66, 0xef, 0xdd, 0xde,
-0xd9, 0xcf, 0x33, 0xc5, 0x9f, 0xc1, 0xc7, 0xc6, 0x0d, 0xd5, 0x30, 0xeb, 0xbc, 0x05, 0xd1, 0x1f,
-0x29, 0x35, 0xa9, 0x42, 0x15, 0x47, 0x1f, 0x43, 0x27, 0x38, 0xfd, 0x27, 0xe2, 0x13, 0xec, 0xfc,
-0xb2, 0xe4, 0xdf, 0xcd, 0x45, 0xbb, 0x77, 0xb0, 0xe1, 0xaf, 0x61, 0xba, 0x47, 0xcf, 0x94, 0xeb,
-0x68, 0x0b, 0xef, 0x29, 0xe1, 0x42, 0xb9, 0x52, 0x44, 0x58, 0x3d, 0x53, 0xdb, 0x44, 0xc5, 0x2e,
-0x14, 0x13, 0x5e, 0xf4, 0xc1, 0xd5, 0x35, 0xbb, 0x82, 0xa8, 0x80, 0xa0, 0x82, 0xa4, 0x65, 0xb4,
-0x41, 0xce, 0x44, 0xef, 0xf2, 0x12, 0x91, 0x34, 0xc3, 0x4f, 0x26, 0x61, 0x28, 0x66, 0x62, 0x5e,
-0xd7, 0x4a, 0x17, 0x2e, 0x88, 0x0b, 0x10, 0xe7, 0x87, 0xc5, 0x5f, 0xab, 0xde, 0x9b, 0x2a, 0x98,
-0xb4, 0xa0, 0x6b, 0xb4, 0x9d, 0xd1, 0x04, 0xf5, 0xb0, 0x1a, 0x3f, 0x3e, 0xd4, 0x5a, 0x3a, 0x6c,
-0x44, 0x6f, 0x48, 0x63, 0x05, 0x4a, 0x91, 0x27, 0x7e, 0x00, 0x2d, 0xda, 0x7f, 0xb9, 0x44, 0xa2,
-0x7a, 0x96, 0x66, 0x96, 0xa2, 0xa1, 0x71, 0xb7, 0x1f, 0xd6, 0xae, 0xfa, 0x8d, 0x21, 0x0d, 0x46,
-0xf6, 0x62, 0x12, 0x73, 0xd0, 0x72, 0x1a, 0x62, 0x21, 0x44, 0xf7, 0x1d, 0x7a, 0xf5, 0x35, 0xd0,
-0x99, 0xb2, 0x54, 0x9f, 0x16, 0x97, 0xa0, 0x99, 0xd4, 0xa6, 0x09, 0xbe, 0xc5, 0xdd, 0x56, 0x03,
-0x93, 0x2a, 0x4d, 0x4e, 0x8a, 0x68, 0x06, 0x74, 0x5e, 0x6e, 0xe2, 0x58, 0xe5, 0x37, 0x5e, 0x11,
-0x10, 0xeb, 0xb3, 0xc9, 0xab, 0xb0, 0x8a, 0xa1, 0xc4, 0x9c, 0x22, 0xa2, 0x23, 0xb1, 0x39, 0xc9,
-0xd2, 0xe8, 0x1a, 0x0d, 0x9b, 0x31, 0xfd, 0x50, 0x82, 0x65, 0x76, 0x6b, 0xae, 0x61, 0xb5, 0x4a,
-0x2d, 0x2b, 0x7e, 0x08, 0x72, 0xe7, 0x93, 0xcb, 0x65, 0xb7, 0xfb, 0xab, 0x9e, 0xa9, 0x07, 0xb0,
-0x4b, 0xbf, 0x4f, 0xd6, 0x84, 0xf3, 0xd2, 0x13, 0xef, 0x32, 0xe9, 0x4b, 0x70, 0x5a, 0x08, 0x5c,
-0xd3, 0x50, 0x8b, 0x3b, 0xcd, 0x1f, 0x52, 0x02, 0xac, 0xe6, 0xe5, 0xcf, 0xd5, 0xbf, 0xb5, 0xb7,
-0xc7, 0xb7, 0xf7, 0xbf, 0x5f, 0xcf, 0x9e, 0xe4, 0xbe, 0xfd, 0x70, 0x17, 0xab, 0x2e, 0x03, 0x40,
-0x15, 0x49, 0x79, 0x48, 0x8d, 0x3e, 0x0b, 0x2d, 0x46, 0x17, 0x5a, 0x00, 0x36, 0xeb, 0x1d, 0xda,
-0xc3, 0xce, 0x09, 0xca, 0xd7, 0xcb, 0xb5, 0xd3, 0x61, 0xe0, 0x64, 0xf0, 0x82, 0x01, 0x88, 0x12,
-0x77, 0x21, 0xed, 0x2c, 0x33, 0x33, 0x57, 0x33, 0xfb, 0x2c, 0x0f, 0x21, 0x54, 0x11, 0xa0, 0x00,
-0xbc, 0xf1, 0x74, 0xe6, 0x49, 0xe0, 0x1d, 0xdf, 0x71, 0xe2, 0x92, 0xe8, 0x20, 0xf0, 0xbc, 0xf7,
-0x60, 0xff, 0xc0, 0x06, 0x2e, 0x0e, 0x4c, 0x15, 0xdc, 0x1a, 0x81, 0x1d, 0xfe, 0x1b, 0x7c, 0x16,
-0x34, 0x0e, 0x2e, 0x05, 0x4c, 0xfd, 0x4c, 0xf8, 0x58, 0xf6, 0xcc, 0xf6, 0x36, 0xf8, 0xf2, 0xf8,
-0x86, 0xf8, 0x16, 0xf7, 0x82, 0xf5, 0x80, 0xf5, 0x10, 0xf8, 0x42, 0xfd, 0xce, 0x03, 0xc8, 0x09,
-0xc0, 0x0d, 0x42, 0x0f, 0xb8, 0x0e, 0x88, 0x0d, 0xfa, 0x0c, 0x3a, 0x0d, 0xe6, 0x0d, 0x98, 0x0d,
-0xe2, 0x0a, 0xf4, 0x04, 0x26, 0xfc, 0x0e, 0xf2, 0xf6, 0xe8, 0x03, 0xe3, 0xc5, 0xe1, 0xc4, 0xe5,
-0xa2, 0xed, 0x92, 0xf7, 0xb8, 0x01, 0x10, 0x0b, 0x9e, 0x13, 0x04, 0x1b, 0x0b, 0x21, 0xff, 0x24,
-0xbd, 0x25, 0xeb, 0x21, 0x0a, 0x19, 0x7c, 0x0b, 0xde, 0xfa, 0x7c, 0xe9, 0xd1, 0xd9, 0x25, 0xcf,
-0x29, 0xcb, 0xb7, 0xce, 0xfb, 0xd8, 0x22, 0xe8, 0x20, 0xfa, 0xd4, 0x0c, 0x71, 0x1e, 0x2f, 0x2d,
-0xcb, 0x37, 0x59, 0x3c, 0x65, 0x3a, 0x7d, 0x31, 0x37, 0x22, 0xf2, 0x0d, 0xae, 0xf6, 0x3b, 0xdf,
-0xa9, 0xca, 0x4b, 0xbc, 0x7f, 0xb6, 0xf3, 0xba, 0x0f, 0xc9, 0xff, 0xde, 0x64, 0xf9, 0xb4, 0x14,
-0x6f, 0x2d, 0x8d, 0x40, 0xe1, 0x4b, 0x87, 0x4e, 0x55, 0x48, 0x2b, 0x3a, 0x69, 0x25, 0xe6, 0x0b,
-0xaa, 0xef, 0xa1, 0xd3, 0x37, 0xbb, 0x4e, 0xaa, 0x88, 0xa4, 0x8d, 0xab, 0x69, 0xbf, 0xdd, 0xdc,
-0x7c, 0xff, 0x65, 0x21, 0x01, 0x3e, 0x05, 0x52, 0xfe, 0x5b, 0x5c, 0x5b, 0x03, 0x51, 0xa7, 0x3e,
-0xab, 0x25, 0xf2, 0x07, 0x4a, 0xe7, 0x3b, 0xc7, 0x01, 0xac, 0x62, 0x9a, 0x54, 0x96, 0x1e, 0xa2,
-0xa5, 0xbc, 0x65, 0xe1, 0x9e, 0x09, 0xc1, 0x2e, 0x1b, 0x4c, 0xee, 0x5e, 0x1c, 0x66, 0x56, 0x62,
-0xaf, 0x54, 0xd3, 0x3e, 0x1d, 0x22, 0x4a, 0x00, 0x19, 0xdc, 0xa3, 0xb9, 0x2a, 0x9e, 0xca, 0x8e,
-0x7e, 0x8f, 0x04, 0xa1, 0x23, 0xc1, 0xdc, 0xe9, 0xfc, 0x13, 0x0f, 0x39, 0xd4, 0x54, 0x80, 0x65,
-0x74, 0x6a, 0x38, 0x64, 0xf5, 0x53, 0x3b, 0x3b, 0x7c, 0x1b, 0xca, 0xf6, 0xbb, 0xd0, 0x47, 0xae,
-0x5c, 0x95, 0x50, 0x8a, 0x04, 0x90, 0x3c, 0xa6, 0x47, 0xc9, 0xb8, 0xf2, 0x98, 0x1b, 0x81, 0x3e,
-0xee, 0x57, 0x78, 0x66, 0x44, 0x69, 0xdc, 0x60, 0x29, 0x4e, 0xc9, 0x32, 0xca, 0x10, 0x10, 0xeb,
-0x51, 0xc6, 0x92, 0xa7, 0xc6, 0x93, 0x3c, 0x8e, 0x60, 0x98, 0xc7, 0xb0, 0x95, 0xd3, 0x0a, 0xfb,
-0xdd, 0x20, 0x9d, 0x40, 0x10, 0x57, 0xcc, 0x62, 0xfa, 0x62, 0x08, 0x58, 0x3f, 0x43, 0x89, 0x26,
-0x92, 0x04, 0x27, 0xe1, 0xf5, 0xc0, 0x4a, 0xa8, 0xa0, 0x9a, 0xba, 0x99, 0xc0, 0xa5, 0x7f, 0xbd,
-0x45, 0xdd, 0x74, 0x00, 0x05, 0x22, 0xf3, 0x3d, 0x37, 0x51, 0xe2, 0x59, 0x86, 0x57, 0x6f, 0x4a,
-0xa5, 0x34, 0x6c, 0x18, 0xc0, 0xf9, 0x0b, 0xdc, 0x43, 0xc3, 0xcb, 0xb1, 0x36, 0xa9, 0x7a, 0xaa,
-0xa3, 0xb5, 0xe7, 0xc9, 0xdc, 0xe4, 0x10, 0x03, 0xeb, 0x1f, 0xbb, 0x37, 0x13, 0x47, 0x5b, 0x4c,
-0x67, 0x47, 0x61, 0x39, 0x9f, 0x24, 0x9e, 0x0c, 0x4c, 0xf4, 0xc3, 0xde, 0xa1, 0xcd, 0x0d, 0xc2,
-0x7b, 0xbc, 0xc7, 0xbd, 0x4d, 0xc6, 0x03, 0xd6, 0x8a, 0xeb, 0xc4, 0x03, 0x3a, 0x1b, 0xb7, 0x2d,
-0xc3, 0x38, 0x9d, 0x3a, 0x13, 0x34, 0xdd, 0x26, 0x08, 0x16, 0x4e, 0x04, 0x1e, 0xf4, 0xc6, 0xe6,
-0x85, 0xdc, 0x67, 0xd5, 0x85, 0xd1, 0xb3, 0xd1, 0xd5, 0xd6, 0x59, 0xe1, 0x7c, 0xf0, 0xe2, 0x01,
-0x4c, 0x12, 0x93, 0x1e, 0x99, 0x24, 0x1b, 0x24, 0x3f, 0x1e, 0x4e, 0x15, 0x7a, 0x0b, 0xac, 0x02,
-0x6c, 0xfb, 0xaa, 0xf5, 0xe2, 0xf0, 0xa4, 0xec, 0xf6, 0xe8, 0xa6, 0xe6, 0x06, 0xe7, 0xe8, 0xea,
-0xfc, 0xf1, 0xee, 0xfa, 0x60, 0x03, 0x9e, 0x09, 0x90, 0x0c, 0x78, 0x0c, 0x7a, 0x0a, 0x52, 0x08,
-0x12, 0x07, 0xdc, 0x06, 0x8a, 0x07, 0xe4, 0x07, 0x26, 0x07, 0x40, 0x04, 0x68, 0xff, 0x42, 0xf9,
-0x62, 0xf3, 0x16, 0xef, 0x20, 0xed, 0x60, 0xed, 0x0a, 0xef, 0x86, 0xf1, 0x36, 0xf4, 0x62, 0xf7,
-0x70, 0xfb, 0xc2, 0x00, 0x60, 0x07, 0xc0, 0x0e, 0xbe, 0x15, 0x0e, 0x1b, 0x53, 0x1d, 0x62, 0x1b,
-0xa2, 0x14, 0xd2, 0x09, 0x7c, 0xfc, 0x10, 0xef, 0x85, 0xe3, 0x8d, 0xdb, 0xe7, 0xd7, 0xa1, 0xd8,
-0x63, 0xdd, 0x50, 0xe5, 0xf4, 0xef, 0x6c, 0xfc, 0x58, 0x0a, 0x64, 0x18, 0x45, 0x25, 0x01, 0x2f,
-0x7f, 0x33, 0x09, 0x31, 0x8d, 0x26, 0x08, 0x15, 0xd2, 0xfe, 0xe8, 0xe7, 0x17, 0xd4, 0x8d, 0xc6,
-0xc7, 0xc0, 0xb5, 0xc2, 0x3d, 0xcb, 0xa1, 0xd8, 0x98, 0xe9, 0xbe, 0xfc, 0x14, 0x11, 0x0b, 0x25,
-0xc3, 0x36, 0x73, 0x43, 0x37, 0x48, 0xcb, 0x42, 0x79, 0x32, 0xf4, 0x18, 0x42, 0xfa, 0xf1, 0xdb,
-0x41, 0xc3, 0xa3, 0xb3, 0x43, 0xae, 0x6d, 0xb2, 0x5f, 0xbe, 0x69, 0xd0, 0xa8, 0xe6, 0xd6, 0xff,
-0xfc, 0x19, 0x4d, 0x33, 0xa3, 0x48, 0x9a, 0x56, 0x7e, 0x59, 0x43, 0x4f, 0x1b, 0x38, 0x22, 0x17,
-0xd8, 0xf1, 0xab, 0xce, 0x8f, 0xb3, 0x7a, 0xa3, 0x62, 0x9f, 0xf0, 0xa5, 0x93, 0xb5, 0x4f, 0xcc,
-0x40, 0xe8, 0x24, 0x07, 0x67, 0x26, 0x37, 0x43, 0x70, 0x59, 0x32, 0x65, 0x30, 0x63, 0xb9, 0x52,
-0xc1, 0x35, 0x72, 0x10, 0xb8, 0xe8, 0x95, 0xc4, 0x5c, 0xa9, 0xd6, 0x99, 0xba, 0x96, 0x28, 0x9f,
-0xd1, 0xb1, 0xf5, 0xcc, 0x06, 0xee, 0xd8, 0x11, 0xb5, 0x34, 0xa3, 0x52, 0x2c, 0x67, 0xb2, 0x6e,
-0x5a, 0x67, 0xdf, 0x51, 0x57, 0x31, 0x06, 0x0a, 0x45, 0xe1, 0xab, 0xbc, 0x6e, 0xa1, 0xac, 0x92,
-0x44, 0x91, 0xbe, 0x9c, 0x5d, 0xb3, 0x3f, 0xd3, 0x82, 0xf8, 0x0d, 0x1f, 0x19, 0x42, 0x48, 0x5d,
-0xee, 0x6c, 0xb2, 0x6e, 0x8a, 0x62, 0x29, 0x4a, 0xc9, 0x28, 0xfe, 0x01, 0x95, 0xda, 0xa5, 0xb7,
-0x2a, 0x9e, 0x6c, 0x91, 0x9c, 0x92, 0x88, 0xa1, 0x47, 0xbc, 0x83, 0xdf, 0x54, 0x06, 0x87, 0x2b,
-0x83, 0x4a, 0xd4, 0x5f, 0x8a, 0x69, 0xd6, 0x66, 0xc0, 0x58, 0xc5, 0x40, 0x35, 0x21, 0xd6, 0xfc,
-0x9d, 0xd7, 0xc5, 0xb6, 0x60, 0x9f, 0x18, 0x95, 0x72, 0x99, 0xad, 0xab, 0x09, 0xc9, 0xcc, 0xec,
-0x68, 0x11, 0xaf, 0x31, 0x5d, 0x4a, 0x90, 0x59, 0xce, 0x5e, 0x50, 0x5a, 0x9b, 0x4c, 0xcd, 0x36,
-0xea, 0x19, 0x7c, 0xf8, 0x39, 0xd6, 0xa3, 0xb8, 0xb6, 0xa4, 0x4a, 0x9e, 0x3a, 0xa6, 0xf5, 0xba,
-0x65, 0xd8, 0x34, 0xf9, 0x3c, 0x18, 0xad, 0x31, 0xc1, 0x43, 0xc9, 0x4d, 0x39, 0x50, 0x13, 0x4b,
-0xc9, 0x3e, 0x5f, 0x2b, 0xdc, 0x11, 0x70, 0xf4, 0x17, 0xd7, 0xb5, 0xbe, 0x15, 0xb0, 0xdf, 0xad,
-0x2f, 0xb8, 0x57, 0xcc, 0xd6, 0xe5, 0x30, 0x00, 0x8a, 0x17, 0xd1, 0x29, 0x25, 0x36, 0xa7, 0x3c,
-0x9b, 0x3d, 0x3d, 0x39, 0x53, 0x2f, 0xd7, 0x1f, 0x82, 0x0b, 0x6c, 0xf4, 0xeb, 0xdd, 0x35, 0xcc,
-0xbb, 0xc2, 0x3b, 0xc3, 0xdd, 0xcc, 0xcb, 0xdc, 0x8e, 0xef, 0xd4, 0x01, 0x6c, 0x11, 0x25, 0x1d,
-0xcb, 0x24, 0xa5, 0x28, 0x0f, 0x29, 0xf5, 0x25, 0x6f, 0x1f, 0x4e, 0x15, 0x06, 0x08, 0x06, 0xf9,
-0x78, 0xea, 0x33, 0xdf, 0x7d, 0xd9, 0x15, 0xda, 0x29, 0xe0, 0xe0, 0xe9, 0xcc, 0xf4, 0x26, 0xff,
-0xa4, 0x07, 0xa4, 0x0d, 0x56, 0x11, 0x1c, 0x13, 0x62, 0x13, 0xae, 0x12, 0x08, 0x11, 0x42, 0x0e,
-0x1c, 0x0a, 0x76, 0x04, 0xe2, 0xfd, 0x9a, 0xf7, 0xe6, 0xf2, 0x92, 0xf0, 0xba, 0xf0, 0x94, 0xf2,
-0x68, 0xf5, 0x08, 0xf8, 0xf8, 0xf9, 0xe0, 0xfa, 0x44, 0xfb, 0xd8, 0xfb, 0xb2, 0xfd, 0x5e, 0x01,
-0x20, 0x07, 0xb6, 0x0d, 0x30, 0x13, 0xe8, 0x15, 0xda, 0x14, 0x8a, 0x10, 0x50, 0x0a, 0x82, 0x03,
-0x3e, 0xfd, 0xe8, 0xf7, 0x04, 0xf3, 0x5e, 0xee, 0xd4, 0xe9, 0xd4, 0xe5, 0x9d, 0xe3, 0xa4, 0xe4,
-0x20, 0xea, 0xd0, 0xf4, 0x92, 0x03, 0xc2, 0x13, 0xd9, 0x21, 0x8f, 0x2a, 0x79, 0x2c, 0xf9, 0x27,
-0xc5, 0x1e, 0xf6, 0x12, 0x66, 0x06, 0xb8, 0xf9, 0x5e, 0xed, 0x5d, 0xe1, 0xa1, 0xd6, 0xc1, 0xce,
-0xd5, 0xcb, 0xd3, 0xcf, 0xb7, 0xdb, 0xde, 0xee, 0x9e, 0x06, 0xd7, 0x1e, 0xab, 0x32, 0xeb, 0x3e,
-0xd9, 0x41, 0x2d, 0x3c, 0xc3, 0x2f, 0x05, 0x1f, 0xf0, 0x0b, 0xd8, 0xf7, 0x79, 0xe3, 0x7b, 0xd0,
-0x39, 0xc1, 0x37, 0xb8, 0xfb, 0xb7, 0xc1, 0xc1, 0x25, 0xd5, 0xfe, 0xef, 0x5e, 0x0e, 0x5f, 0x2b,
-0x9f, 0x42, 0x83, 0x50, 0x93, 0x53, 0x49, 0x4c, 0x67, 0x3c, 0x4d, 0x26, 0x5c, 0x0c, 0x96, 0xf0,
-0x61, 0xd5, 0xb5, 0xbd, 0xeb, 0xac, 0x24, 0xa6, 0xb2, 0xaa, 0xad, 0xba, 0x79, 0xd4, 0xca, 0xf4,
-0x22, 0x17, 0xf1, 0x36, 0xd9, 0x4f, 0xa8, 0x5e, 0x5e, 0x61, 0xd4, 0x57, 0xed, 0x43, 0x11, 0x28,
-0x4e, 0x07, 0x12, 0xe5, 0x63, 0xc5, 0x47, 0xac, 0x74, 0x9d, 0xbc, 0x9a, 0x9e, 0xa4, 0xdb, 0xb9,
-0xdb, 0xd7, 0x34, 0xfb, 0xa7, 0x1f, 0xd9, 0x40, 0xc2, 0x5a, 0xac, 0x69, 0x1c, 0x6b, 0x9a, 0x5e,
-0xb1, 0x45, 0xdf, 0x23, 0x8e, 0xfd, 0x5f, 0xd7, 0xaf, 0xb6, 0xc0, 0x9f, 0xf0, 0x94, 0xea, 0x96,
-0xea, 0xa4, 0x1d, 0xbd, 0x37, 0xdd, 0xb2, 0x01, 0xe7, 0x26, 0xbf, 0x48, 0xd4, 0x62, 0xd6, 0x70,
-0xda, 0x6f, 0x14, 0x5f, 0x41, 0x41, 0xc8, 0x1a, 0x5a, 0xf1, 0x15, 0xcb, 0xe7, 0xac, 0x20, 0x9a,
-0xec, 0x93, 0xa2, 0x99, 0xf0, 0xa9, 0x8f, 0xc3, 0xfc, 0xe3, 0x78, 0x08, 0x85, 0x2d, 0xc3, 0x4e,
-0x9a, 0x67, 0x12, 0x73, 0x2a, 0x6e, 0x1e, 0x59, 0x89, 0x37, 0xf0, 0x0e, 0x04, 0xe6, 0x7b, 0xc2,
-0xb2, 0xa8, 0xd6, 0x9a, 0x92, 0x98, 0x0e, 0xa1, 0xe9, 0xb2, 0xe1, 0xcc, 0xf4, 0xec, 0x80, 0x10,
-0xc3, 0x33, 0x9d, 0x52, 0xa4, 0x67, 0x76, 0x6e, 0x1c, 0x65, 0xf1, 0x4c, 0x8b, 0x2a, 0x1a, 0x04,
-0x55, 0xdf, 0x4b, 0xc1, 0xf5, 0xac, 0x38, 0xa3, 0xa4, 0xa3, 0x3f, 0xad, 0x1f, 0xbf, 0x19, 0xd8,
-0x5a, 0xf6, 0xfa, 0x16, 0x59, 0x36, 0xe5, 0x4f, 0x56, 0x5f, 0x64, 0x61, 0x52, 0x55, 0x83, 0x3d,
-0x41, 0x1e, 0xf8, 0xfc, 0x5b, 0xde, 0x61, 0xc6, 0xc1, 0xb6, 0x5b, 0xb0, 0x79, 0xb2, 0x97, 0xbc,
-0xc1, 0xcd, 0xca, 0xe4, 0x98, 0xff, 0x38, 0x1b, 0x5d, 0x34, 0x6d, 0x47, 0x67, 0x51, 0x3b, 0x50,
-0x4d, 0x44, 0x7b, 0x2f, 0xa8, 0x15, 0xc4, 0xfa, 0x93, 0xe2, 0x0b, 0xd0, 0xaf, 0xc4, 0xe3, 0xc0,
-0x7b, 0xc4, 0x8b, 0xce, 0xd1, 0xdd, 0xbe, 0xf0, 0xdc, 0x04, 0x58, 0x18, 0x45, 0x29, 0xb9, 0x35,
-0x09, 0x3c, 0x23, 0x3b, 0xa5, 0x32, 0x03, 0x24, 0x48, 0x11, 0x6a, 0xfd, 0x6e, 0xeb, 0x9b, 0xdd,
-0x99, 0xd5, 0xc9, 0xd3, 0xcd, 0xd7, 0x55, 0xe0, 0xce, 0xeb, 0x2a, 0xf8, 0x6a, 0x04, 0x5e, 0x0f,
-0xc6, 0x18, 0x0d, 0x20, 0x95, 0x24, 0x61, 0x25, 0xcd, 0x21, 0xca, 0x19, 0x96, 0x0e, 0x5a, 0x02,
-0x3a, 0xf7, 0x54, 0xef, 0x7e, 0xeb, 0xbe, 0xeb, 0xf0, 0xee, 0x64, 0xf3, 0x60, 0xf7, 0x6e, 0xfa,
-0x80, 0xfc, 0xa0, 0xfe, 0xd6, 0x01, 0x64, 0x06, 0xe0, 0x0b, 0xc4, 0x10, 0x50, 0x13, 0xce, 0x12,
-0xa4, 0x0f, 0x00, 0x0b, 0xee, 0x06, 0x46, 0x04, 0x72, 0x03, 0x8c, 0x03, 0xf2, 0x02, 0x74, 0x00,
-0xba, 0xfb, 0x52, 0xf5, 0x14, 0xef, 0xec, 0xea, 0x7c, 0xea, 0x9a, 0xee, 0x2c, 0xf6, 0x64, 0xff,
-0x34, 0x08, 0x10, 0x0f, 0xe0, 0x13, 0x28, 0x17, 0x6a, 0x19, 0x10, 0x1b, 0x3c, 0x1b, 0xc2, 0x18,
-0x88, 0x12, 0x52, 0x08, 0xe0, 0xfa, 0x88, 0xec, 0x8b, 0xdf, 0xbb, 0xd6, 0x21, 0xd4, 0x31, 0xd8,
-0x3f, 0xe2, 0x48, 0xf0, 0xe2, 0xff, 0x2a, 0x0f, 0xf1, 0x1c, 0x0d, 0x28, 0xfd, 0x2f, 0x99, 0x33,
-0xc3, 0x31, 0xf5, 0x29, 0x51, 0x1c, 0xca, 0x09, 0xdc, 0xf4, 0xdd, 0xdf, 0x03, 0xce, 0x37, 0xc2,
-0x6b, 0xbe, 0xb5, 0xc3, 0x77, 0xd1, 0xba, 0xe5, 0x90, 0xfd, 0x14, 0x16, 0xef, 0x2b, 0x01, 0x3d,
-0x19, 0x47, 0x13, 0x49, 0x9f, 0x42, 0x5d, 0x34, 0xc5, 0x1f, 0x0a, 0x07, 0x90, 0xec, 0x33, 0xd3,
-0x11, 0xbe, 0x47, 0xb0, 0x6f, 0xac, 0xed, 0xb3, 0x8f, 0xc6, 0xe1, 0xe1, 0x26, 0x02, 0x19, 0x22,
-0x6d, 0x3d, 0x69, 0x50, 0x50, 0x59, 0x82, 0x57, 0xd5, 0x4b, 0x37, 0x38, 0xc5, 0x1e, 0xe8, 0x01,
-0xad, 0xe3, 0x27, 0xc7, 0x91, 0xaf, 0xdc, 0xa0, 0xfe, 0x9d, 0x04, 0xa9, 0x91, 0xc1, 0x4c, 0xe4,
-0x6a, 0x0b, 0x51, 0x30, 0x8b, 0x4d, 0xc2, 0x5f, 0xd0, 0x65, 0xf6, 0x5f, 0x35, 0x50, 0xb3, 0x38,
-0xe8, 0x1b, 0x8c, 0xfb, 0x53, 0xda, 0x2d, 0xbb, 0x8c, 0xa2, 0x8e, 0x94, 0xc8, 0x94, 0x1e, 0xa5,
-0x09, 0xc4, 0xaa, 0xec, 0x86, 0x17, 0xa7, 0x3d, 0x92, 0x59, 0x1e, 0x69, 0xb0, 0x6b, 0x7e, 0x62,
-0xad, 0x4f, 0x83, 0x35, 0xe4, 0x15, 0x06, 0xf3, 0xa3, 0xcf, 0xc3, 0xaf, 0x5e, 0x98, 0xc0, 0x8d,
-0x1a, 0x93, 0x08, 0xa9, 0x97, 0xcc, 0x64, 0xf7, 0x2d, 0x22, 0xe9, 0x45, 0xf4, 0x5e, 0x76, 0x6b,
-0x6a, 0x6b, 0xfe, 0x5f, 0x27, 0x4b, 0xef, 0x2e, 0x52, 0x0d, 0x04, 0xe9, 0x5b, 0xc5, 0x98, 0xa7,
-0x0c, 0x94, 0x9c, 0x8e, 0xf4, 0x98, 0x59, 0xb2, 0xe5, 0xd6, 0x58, 0x00, 0xf3, 0x27, 0x57, 0x48,
-0x78, 0x5e, 0x90, 0x68, 0xa2, 0x66, 0x70, 0x59, 0xe5, 0x42, 0x2b, 0x25, 0xba, 0x02, 0x11, 0xdf,
-0x85, 0xbe, 0x96, 0xa5, 0xea, 0x97, 0xb2, 0x97, 0x2c, 0xa5, 0x0d, 0xbf, 0x65, 0xe1, 0xf2, 0x06,
-0x59, 0x2a, 0xf7, 0x46, 0xce, 0x59, 0x54, 0x61, 0xdc, 0x5c, 0x97, 0x4d, 0x9b, 0x35, 0x82, 0x17,
-0xda, 0xf6, 0x75, 0xd7, 0x25, 0xbd, 0x3c, 0xab, 0xbc, 0xa3, 0xd4, 0xa6, 0xe7, 0xb4, 0x0f, 0xcc,
-0xc2, 0xe9, 0xfe, 0x09, 0x2d, 0x28, 0x4b, 0x40, 0x89, 0x4f, 0xf9, 0x53, 0x33, 0x4d, 0x1b, 0x3d,
-0x91, 0x25, 0x8e, 0x0a, 0x50, 0xef, 0x35, 0xd7, 0xd7, 0xc4, 0xc5, 0xb9, 0x09, 0xb6, 0x13, 0xba,
-0x99, 0xc5, 0xff, 0xd7, 0xce, 0xef, 0xba, 0x09, 0x39, 0x22, 0x8b, 0x35, 0xe5, 0x40, 0x93, 0x42,
-0xf5, 0x3a, 0x97, 0x2b, 0xb4, 0x17, 0x6a, 0x02, 0xc0, 0xee, 0xd1, 0xde, 0x75, 0xd3, 0xf9, 0xcc,
-0xfb, 0xca, 0x85, 0xcd, 0x25, 0xd5, 0xdf, 0xe1, 0x08, 0xf3, 0x58, 0x06, 0xac, 0x18, 0xa7, 0x26,
-0xf7, 0x2d, 0x9f, 0x2d, 0x45, 0x26, 0x7e, 0x1a, 0xa8, 0x0c, 0xaa, 0xff, 0xfc, 0xf4, 0x1c, 0xed,
-0xc0, 0xe7, 0x2e, 0xe4, 0x01, 0xe2, 0x7f, 0xe1, 0x04, 0xe4, 0xe8, 0xe9, 0x70, 0xf3, 0xfe, 0xfe,
-0x0c, 0x0a, 0x94, 0x12, 0xac, 0x16, 0x24, 0x16, 0x1a, 0x12, 0x70, 0x0c, 0xe8, 0x06, 0xde, 0x02,
-0x54, 0x00, 0xbc, 0xfe, 0x3a, 0xfd, 0xda, 0xfa, 0x48, 0xf7, 0x32, 0xf3, 0xba, 0xef, 0x2e, 0xee,
-0x32, 0xef, 0x6e, 0xf2, 0xce, 0xf6, 0x1e, 0xfb, 0x94, 0xfe, 0xce, 0x00, 0xb4, 0x02, 0xe6, 0x04,
-0xe8, 0x07, 0xd4, 0x0b, 0xbc, 0x0f, 0xaa, 0x12, 0x9a, 0x13, 0x5c, 0x11, 0xa6, 0x0b, 0xe6, 0x02,
-0x74, 0xf8, 0x26, 0xee, 0x0c, 0xe6, 0x11, 0xe1, 0xd1, 0xdf, 0x09, 0xe2, 0xf8, 0xe6, 0x38, 0xee,
-0xfe, 0xf6, 0x06, 0x01, 0x84, 0x0b, 0x26, 0x16, 0x91, 0x1f, 0x9d, 0x26, 0x95, 0x29, 0xe7, 0x26,
-0x05, 0x1e, 0x46, 0x0f, 0x8c, 0xfc, 0xd4, 0xe8, 0xbb, 0xd7, 0x13, 0xcc, 0x99, 0xc7, 0x45, 0xca,
-0xdb, 0xd2, 0xf1, 0xdf, 0xde, 0xef, 0x30, 0x01, 0xd6, 0x12, 0x67, 0x23, 0xaf, 0x31, 0x97, 0x3b,
-0x21, 0x3f, 0x03, 0x3a, 0xb5, 0x2b, 0x14, 0x15, 0x3e, 0xf9, 0xf7, 0xdc, 0x41, 0xc5, 0x53, 0xb6,
-0xd3, 0xb1, 0x77, 0xb7, 0xd5, 0xc4, 0xd5, 0xd7, 0xf0, 0xed, 0x6c, 0x05, 0x99, 0x1c, 0x05, 0x32,
-0x7b, 0x43, 0x9d, 0x4e, 0x85, 0x50, 0x03, 0x47, 0x1b, 0x32, 0xb8, 0x13, 0x86, 0xf0, 0x6f, 0xce,
-0x99, 0xb3, 0xf2, 0xa3, 0x2a, 0xa1, 0xc0, 0xa9, 0x39, 0xbb, 0x19, 0xd3, 0xbe, 0xee, 0x02, 0x0c,
-0xa3, 0x28, 0x07, 0x42, 0x4c, 0x55, 0x4c, 0x5f, 0x0e, 0x5d, 0x51, 0x4d, 0x75, 0x31, 0xe4, 0x0c,
-0x4a, 0xe5, 0x43, 0xc1, 0x3e, 0xa6, 0x2c, 0x98, 0x9a, 0x97, 0x22, 0xa3, 0x43, 0xb8, 0x73, 0xd4,
-0x7e, 0xf4, 0xbe, 0x15, 0x49, 0x35, 0xdf, 0x4f, 0x62, 0x62, 0xfa, 0x68, 0xa4, 0x61, 0x79, 0x4c,
-0x19, 0x2c, 0x90, 0x04, 0xc3, 0xdb, 0x6b, 0xb7, 0x18, 0x9d, 0x40, 0x90, 0x30, 0x91, 0x14, 0x9f,
-0x7f, 0xb7, 0xb5, 0xd7, 0x06, 0xfc, 0xf1, 0x20, 0x39, 0x42, 0x4a, 0x5c, 0x74, 0x6b, 0xdc, 0x6c,
-0x34, 0x60, 0xcf, 0x46, 0x33, 0x24, 0x68, 0xfc, 0x7b, 0xd4, 0xe1, 0xb1, 0x80, 0x99, 0x6c, 0x8e,
-0x9a, 0x91, 0x2a, 0xa2, 0xe9, 0xbd, 0x91, 0xe1, 0x8a, 0x08, 0xd3, 0x2d, 0x25, 0x4d, 0x6e, 0x62,
-0x80, 0x6b, 0x5a, 0x67, 0xbc, 0x56, 0x4b, 0x3c, 0xa2, 0x1a, 0x36, 0xf5, 0x29, 0xd0, 0x5b, 0xb0,
-0x3c, 0x9a, 0x76, 0x91, 0xf4, 0x96, 0x36, 0xaa, 0xf1, 0xc8, 0x24, 0xee, 0x8a, 0x14, 0xed, 0x36,
-0xeb, 0x50, 0x4e, 0x60, 0x22, 0x64, 0x7a, 0x5c, 0x45, 0x4b, 0x75, 0x32, 0xb8, 0x13, 0xbc, 0xf1,
-0x07, 0xd0, 0xff, 0xb2, 0xb6, 0x9f, 0x66, 0x99, 0x6c, 0xa1, 0x13, 0xb7, 0x79, 0xd6, 0x48, 0xfa,
-0xc9, 0x1c, 0x0d, 0x39, 0x8d, 0x4c, 0x3e, 0x56, 0x52, 0x56, 0xb9, 0x4d, 0x11, 0x3e, 0x0f, 0x28,
-0x46, 0x0d, 0x60, 0xef, 0xb9, 0xd1, 0x09, 0xb9, 0xc4, 0xa9, 0x24, 0xa7, 0xbb, 0xb1, 0xd7, 0xc7,
-0xe8, 0xe4, 0xa4, 0x03, 0xd9, 0x1e, 0xa9, 0x33, 0xa9, 0x40, 0xff, 0x45, 0x59, 0x44, 0x9f, 0x3c,
-0x8d, 0x2f, 0xe3, 0x1d, 0xf0, 0x07, 0x90, 0xef, 0xf1, 0xd7, 0x1d, 0xc5, 0xe9, 0xba, 0x51, 0xbb,
-0x5b, 0xc6, 0x4b, 0xd9, 0x62, 0xf0, 0xc8, 0x06, 0xd2, 0x19, 0x57, 0x27, 0x4d, 0x2f, 0x0d, 0x32,
-0x2d, 0x30, 0x65, 0x2a, 0x1f, 0x21, 0x88, 0x14, 0xe8, 0x04, 0xe8, 0xf3, 0x75, 0xe3, 0xd5, 0xd6,
-0x71, 0xd0, 0x81, 0xd1, 0x7f, 0xd9, 0xa0, 0xe6, 0x9a, 0xf5, 0xde, 0x03, 0x52, 0x0f, 0x20, 0x17,
-0x6c, 0x1b, 0xb3, 0x1c, 0x82, 0x1b, 0x60, 0x18, 0xc6, 0x13, 0x9e, 0x0d, 0x1e, 0x06, 0x72, 0xfd,
-0xca, 0xf4, 0x88, 0xed, 0xec, 0xe8, 0xe2, 0xe7, 0x86, 0xea, 0xdc, 0xef, 0x6a, 0xf6, 0xa0, 0xfc,
-0x58, 0x01, 0x30, 0x04, 0x7a, 0x05, 0xb8, 0x05, 0xd2, 0x05, 0xcc, 0x06, 0xd2, 0x08, 0x64, 0x0b,
-0x78, 0x0d, 0xda, 0x0d, 0xa2, 0x0b, 0x1e, 0x07, 0x6e, 0x01, 0xcc, 0xfb, 0x64, 0xf7, 0x6a, 0xf4,
-0x94, 0xf2, 0x4e, 0xf1, 0xf2, 0xef, 0x8a, 0xee, 0xd6, 0xed, 0xca, 0xee, 0x6c, 0xf2, 0xb6, 0xf9,
-0x36, 0x04, 0x66, 0x10, 0x88, 0x1b, 0x99, 0x22, 0xe3, 0x23, 0x73, 0x1f, 0x78, 0x16, 0x20, 0x0b,
-0x92, 0xff, 0xe6, 0xf4, 0x84, 0xeb, 0x61, 0xe3, 0xaf, 0xdc, 0x13, 0xd8, 0xc3, 0xd6, 0x25, 0xda,
-0x7d, 0xe3, 0xf2, 0xf2, 0xac, 0x06, 0x80, 0x1b, 0x47, 0x2d, 0x8f, 0x38, 0x11, 0x3b, 0xeb, 0x34,
-0xfd, 0x27, 0x04, 0x17, 0x96, 0x04, 0x68, 0xf2, 0xc1, 0xe1, 0x53, 0xd3, 0x3f, 0xc8, 0xd9, 0xc1,
-0x09, 0xc2, 0x2f, 0xca, 0xe5, 0xda, 0x9e, 0xf2, 0x36, 0x0e, 0x43, 0x29, 0x37, 0x3f, 0x17, 0x4c,
-0x3b, 0x4e, 0xe7, 0x45, 0xdf, 0x34, 0x7b, 0x1e, 0x7e, 0x05, 0x50, 0xec, 0xbf, 0xd4, 0x17, 0xc1,
-0x41, 0xb3, 0xcd, 0xad, 0x2d, 0xb2, 0x07, 0xc1, 0x65, 0xd9, 0x34, 0xf8, 0x1e, 0x19, 0x7d, 0x37,
-0xf1, 0x4e, 0x0e, 0x5c, 0x26, 0x5d, 0x1f, 0x52, 0x31, 0x3d, 0x7b, 0x21, 0x40, 0x02, 0x59, 0xe2,
-0x67, 0xc5, 0xa7, 0xae, 0x8a, 0xa1, 0xb4, 0x9f, 0xcc, 0xa9, 0x07, 0xbf, 0xeb, 0xdc, 0xb0, 0xff,
-0xdf, 0x22, 0x81, 0x42, 0x5c, 0x5a, 0x6c, 0x67, 0x36, 0x67, 0xb6, 0x59, 0xc5, 0x40, 0xb9, 0x1f,
-0x72, 0xfa, 0x6b, 0xd5, 0xa1, 0xb5, 0x8a, 0x9f, 0xc4, 0x95, 0x06, 0x99, 0x88, 0xa8, 0x39, 0xc2,
-0x1d, 0xe3, 0x7e, 0x07, 0x6d, 0x2b, 0x01, 0x4b, 0xd6, 0x62, 0x1a, 0x6f, 0x2c, 0x6d, 0x52, 0x5c,
-0xa9, 0x3e, 0x4a, 0x18, 0x78, 0xee, 0x41, 0xc7, 0x44, 0xa8, 0xc8, 0x95, 0x1c, 0x91, 0x84, 0x99,
-0xe9, 0xac, 0x0f, 0xc9, 0x02, 0xeb, 0x38, 0x0f, 0x65, 0x32, 0x2d, 0x51, 0xa2, 0x67, 0xbe, 0x71,
-0x92, 0x6c, 0xbc, 0x57, 0xfd, 0x35, 0x84, 0x0c, 0xd9, 0xe1, 0x97, 0xbc, 0x06, 0xa2, 0xc8, 0x94,
-0xe8, 0x94, 0x90, 0xa0, 0xad, 0xb5, 0xf5, 0xd1, 0xc6, 0xf2, 0x8e, 0x15, 0x27, 0x37, 0xfb, 0x53,
-0xea, 0x67, 0xde, 0x6e, 0xf4, 0x65, 0xb3, 0x4d, 0xff, 0x29, 0xc4, 0x00, 0xf1, 0xd8, 0x7d, 0xb8,
-0x56, 0xa3, 0xd6, 0x9a, 0x42, 0x9e, 0x8b, 0xab, 0xb9, 0xc0, 0xeb, 0xdb, 0xea, 0xfa, 0x24, 0x1b,
-0xa1, 0x39, 0xdb, 0x52, 0x78, 0x62, 0xca, 0x64, 0x7c, 0x58, 0x39, 0x3f, 0x1d, 0x1d, 0x26, 0xf8,
-0x3d, 0xd6, 0x19, 0xbc, 0x7b, 0xac, 0xd4, 0xa7, 0xff, 0xac, 0x53, 0xba, 0x4d, 0xce, 0xf8, 0xe6,
-0x70, 0x02, 0x6d, 0x1e, 0x05, 0x38, 0x77, 0x4b, 0xb4, 0x55, 0x9b, 0x54, 0xa3, 0x47, 0xab, 0x30,
-0xa4, 0x13, 0x48, 0xf5, 0x15, 0xda, 0xc7, 0xc5, 0x13, 0xba, 0x79, 0xb7, 0x25, 0xbd, 0xb9, 0xc9,
-0x81, 0xdb, 0xf4, 0xf0, 0xba, 0x07, 0x87, 0x1d, 0x05, 0x30, 0xe3, 0x3c, 0x63, 0x42, 0x8f, 0x3f,
-0xbf, 0x34, 0x21, 0x23, 0x86, 0x0d, 0x3a, 0xf7, 0x95, 0xe3, 0xf3, 0xd4, 0x1d, 0xcd, 0x25, 0xcc,
-0x95, 0xd1, 0x21, 0xdc, 0x0e, 0xea, 0x68, 0xf9, 0x92, 0x08, 0x4e, 0x16, 0x61, 0x21, 0x05, 0x29,
-0x8f, 0x2c, 0x99, 0x2b, 0x81, 0x25, 0xaa, 0x1a, 0x56, 0x0c, 0x10, 0xfd, 0x76, 0xef, 0xce, 0xe5,
-0x2f, 0xe1, 0xb7, 0xe1, 0x80, 0xe6, 0xb2, 0xed, 0x98, 0xf5, 0xe6, 0xfc, 0xe2, 0x02, 0x82, 0x07,
-0x92, 0x0b, 0x96, 0x0f, 0x8e, 0x13, 0x78, 0x16, 0x16, 0x17, 0x86, 0x14, 0xe6, 0x0e, 0xac, 0x07,
-0xac, 0x00, 0x90, 0xfb, 0x2e, 0xf9, 0x2c, 0xf9, 0x2a, 0xfa, 0xfa, 0xfa, 0x82, 0xfa, 0x5e, 0xf8,
-0x70, 0xf5, 0x64, 0xf3, 0xc8, 0xf3, 0x5c, 0xf7, 0x00, 0xfe, 0x0a, 0x06, 0x62, 0x0d, 0x64, 0x12,
-0x9a, 0x14, 0x7c, 0x14, 0x4a, 0x13, 0xea, 0x11, 0x72, 0x10, 0x40, 0x0e, 0x28, 0x0a, 0x42, 0x03,
-0xc8, 0xf9, 0x44, 0xef, 0x78, 0xe5, 0xa7, 0xde, 0xe7, 0xdc, 0x19, 0xe1, 0x8a, 0xea, 0x78, 0xf7,
-0x78, 0x05, 0x50, 0x12, 0xb9, 0x1c, 0x1f, 0x24, 0x67, 0x28, 0x79, 0x29, 0x17, 0x27, 0x53, 0x20,
-0xd0, 0x14, 0x50, 0x05, 0x92, 0xf3, 0xeb, 0xe1, 0xff, 0xd2, 0x63, 0xc9, 0xf9, 0xc6, 0xd1, 0xcc,
-0x41, 0xda, 0x6a, 0xed, 0x3e, 0x03, 0xd2, 0x18, 0x3d, 0x2b, 0xaf, 0x38, 0xe1, 0x3f, 0x27, 0x40,
-0x2f, 0x39, 0x71, 0x2b, 0x18, 0x18, 0x0a, 0x01, 0x16, 0xe9, 0xff, 0xd2, 0x7d, 0xc1, 0x99, 0xb6,
-0xab, 0xb4, 0xc1, 0xbc, 0xb3, 0xce, 0x2c, 0xe8, 0xbe, 0x05, 0xe9, 0x22, 0x9d, 0x3b, 0x9f, 0x4c,
-0xe1, 0x53, 0xf7, 0x50, 0x9d, 0x44, 0xad, 0x30, 0x46, 0x17, 0x62, 0xfb, 0x95, 0xdf, 0x91, 0xc6,
-0xe1, 0xb2, 0x64, 0xa7, 0x4a, 0xa6, 0x3f, 0xb1, 0x2f, 0xc8, 0x82, 0xe8, 0x40, 0x0d, 0x8f, 0x30,
-0x01, 0x4d, 0x98, 0x5e, 0xa2, 0x63, 0x3c, 0x5c, 0x7f, 0x4a, 0x5b, 0x31, 0xf4, 0x13, 0x7e, 0xf4,
-0xa3, 0xd5, 0x51, 0xba, 0xa2, 0xa5, 0x86, 0x9a, 0xe0, 0x9b, 0x73, 0xab, 0x6f, 0xc8, 0x3e, 0xef,
-0x62, 0x19, 0xb1, 0x3f, 0x36, 0x5c, 0x7c, 0x6b, 0x5e, 0x6c, 0x5c, 0x60, 0xa3, 0x4a, 0x61, 0x2e,
-0x4a, 0x0e, 0xb2, 0xec, 0x31, 0xcc, 0xe1, 0xaf, 0xb0, 0x9b, 0x10, 0x93, 0x8e, 0x98, 0x49, 0xad,
-0xb1, 0xcf, 0x80, 0xfa, 0x31, 0x26, 0x77, 0x4b, 0xfc, 0x64, 0x5c, 0x70, 0xb8, 0x6d, 0xe2, 0x5e,
-0xcf, 0x46, 0xcb, 0x28, 0x46, 0x07, 0x5e, 0xe4, 0x21, 0xc3, 0xba, 0xa7, 0x08, 0x96, 0x64, 0x91,
-0xde, 0x9b, 0x57, 0xb5, 0x9d, 0xda, 0xaa, 0x05, 0x1f, 0x2f, 0x8d, 0x50, 0x36, 0x66, 0x62, 0x6e,
-0x54, 0x69, 0xdc, 0x58, 0xd3, 0x3f, 0xd1, 0x20, 0x70, 0xfe, 0xbd, 0xdb, 0x3b, 0xbc, 0x1a, 0xa4,
-0x14, 0x97, 0xaa, 0x97, 0x58, 0xa6, 0xcb, 0xc1, 0x34, 0xe6, 0xc8, 0x0d, 0x8f, 0x32, 0x89, 0x4f,
-0x7c, 0x61, 0xe2, 0x66, 0x1e, 0x60, 0x9f, 0x4e, 0xe5, 0x34, 0xde, 0x15, 0x94, 0xf4, 0x73, 0xd4,
-0x6f, 0xb9, 0x2e, 0xa7, 0xfe, 0x9f, 0xde, 0xa4, 0x65, 0xb5, 0x77, 0xcf, 0xa6, 0xef, 0x92, 0x11,
-0xa1, 0x30, 0xdd, 0x48, 0x62, 0x57, 0xa8, 0x5a, 0x85, 0x52, 0xc7, 0x40, 0xd5, 0x27, 0xc8, 0x0a,
-0x1a, 0xed, 0xa7, 0xd2, 0x73, 0xbe, 0x93, 0xb2, 0x1b, 0xb0, 0xb1, 0xb6, 0x71, 0xc5, 0xc3, 0xda,
-0x94, 0xf4, 0xda, 0x0f, 0x63, 0x29, 0x9b, 0x3d, 0x3b, 0x49, 0xb1, 0x4a, 0x31, 0x42, 0x47, 0x31,
-0x94, 0x1a, 0xd2, 0x01, 0x98, 0xea, 0x9f, 0xd7, 0xb9, 0xca, 0x61, 0xc4, 0x3f, 0xc4, 0xc5, 0xc9,
-0x75, 0xd4, 0xb9, 0xe3, 0x9a, 0xf6, 0x8c, 0x0b, 0x6b, 0x1f, 0xf9, 0x2e, 0x53, 0x37, 0x25, 0x37,
-0xbb, 0x2e, 0x2f, 0x20, 0x86, 0x0e, 0xd6, 0xfc, 0x0e, 0xee, 0x7d, 0xe3, 0x35, 0xdd, 0x71, 0xda,
-0xa1, 0xda, 0x45, 0xdd, 0x93, 0xe2, 0x12, 0xeb, 0xb0, 0xf6, 0x42, 0x04, 0xb0, 0x11, 0x1a, 0x1c,
-0x3b, 0x21, 0x3f, 0x20, 0x34, 0x1a, 0xd4, 0x10, 0xe8, 0x06, 0x98, 0xfe, 0xec, 0xf8, 0x92, 0xf5,
-0xb6, 0xf3, 0x5e, 0xf2, 0xa0, 0xf0, 0xee, 0xee, 0xf2, 0xed, 0xea, 0xee, 0x5e, 0xf2, 0x36, 0xf8,
-0xfa, 0xfe, 0xfe, 0x04, 0xf4, 0x08, 0x44, 0x0a, 0x84, 0x09, 0x26, 0x08, 0x7c, 0x07, 0xfc, 0x07,
-0x46, 0x09, 0x7a, 0x0a, 0x7a, 0x0a, 0x7c, 0x08, 0x14, 0x04, 0x6c, 0xfd, 0xc6, 0xf5, 0x9c, 0xee,
-0x78, 0xe9, 0x1a, 0xe7, 0xf2, 0xe7, 0x50, 0xeb, 0x64, 0xf0, 0x98, 0xf6, 0x78, 0xfd, 0xe6, 0x04,
-0xa8, 0x0c, 0x7e, 0x14, 0x0c, 0x1b, 0x73, 0x1f, 0xa1, 0x20, 0xbd, 0x1d, 0xfc, 0x15, 0xb8, 0x09,
-0x64, 0xfa, 0x2e, 0xea, 0x29, 0xdc, 0xb9, 0xd2, 0x8f, 0xcf, 0xaf, 0xd2, 0x69, 0xdb, 0xda, 0xe7,
-0x84, 0xf6, 0xd6, 0x05, 0xcc, 0x14, 0x2b, 0x22, 0x11, 0x2d, 0xf9, 0x33, 0x8b, 0x35, 0x79, 0x30,
-0x19, 0x24, 0xb8, 0x10, 0x80, 0xf8, 0x81, 0xdf, 0xf7, 0xc9, 0x1f, 0xbc, 0x0d, 0xb8, 0x1b, 0xbe,
-0xed, 0xcb, 0x3d, 0xdf, 0xee, 0xf4, 0xe4, 0x0a, 0x43, 0x1f, 0x09, 0x31, 0xc5, 0x3e, 0xbd, 0x46,
-0x2b, 0x47, 0x49, 0x3e, 0xc9, 0x2b, 0xc0, 0x10, 0xc8, 0xf0, 0xed, 0xd0, 0x6d, 0xb7, 0x9c, 0xa8,
-0x6e, 0xa6, 0x0b, 0xb0, 0xff, 0xc2, 0xa7, 0xdb, 0xc0, 0xf6, 0xc6, 0x11, 0xb7, 0x2a, 0xf7, 0x3f,
-0xb7, 0x4f, 0xaa, 0x57, 0x42, 0x55, 0x51, 0x47, 0xfb, 0x2d, 0xc4, 0x0b, 0x50, 0xe5, 0x57, 0xc1,
-0x1e, 0xa6, 0x1e, 0x98, 0x9c, 0x98, 0x00, 0xa6, 0x59, 0xbd, 0xd9, 0xda, 0xee, 0xfa, 0x3a, 0x1a,
-0xd3, 0x36, 0x4d, 0x4e, 0x1e, 0x5e, 0x2e, 0x63, 0xac, 0x5b, 0x3b, 0x47, 0xa9, 0x27, 0xec, 0x00,
-0x65, 0xd8, 0xad, 0xb4, 0x70, 0x9b, 0x4e, 0x90, 0x82, 0x93, 0xb6, 0xa3, 0xe1, 0xbd, 0x87, 0xde,
-0xc8, 0x01, 0x65, 0x24, 0x1d, 0x43, 0xf2, 0x5a, 0x9e, 0x68, 0x54, 0x69, 0x02, 0x5c, 0x3b, 0x42,
-0x1f, 0x1f, 0xe8, 0xf6, 0xff, 0xce, 0x0b, 0xad, 0x0a, 0x96, 0xc2, 0x8c, 0x08, 0x92, 0x56, 0xa4,
-0x2f, 0xc1, 0xdc, 0xe4, 0x18, 0x0b, 0x8b, 0x2f, 0x2f, 0x4e, 0x7a, 0x63, 0x40, 0x6c, 0x48, 0x67,
-0x32, 0x55, 0xa3, 0x38, 0x08, 0x15, 0x72, 0xee, 0x4d, 0xc9, 0x42, 0xaa, 0xdc, 0x95, 0xd6, 0x8e,
-0x30, 0x96, 0xdc, 0xaa, 0x4f, 0xca, 0x0c, 0xf0, 0x10, 0x17, 0x39, 0x3a, 0x2c, 0x55, 0xb8, 0x64,
-0x72, 0x67, 0x96, 0x5d, 0x2b, 0x49, 0xf9, 0x2c, 0xf0, 0x0b, 0xfa, 0xe8, 0xbb, 0xc7, 0x4f, 0xac,
-0xac, 0x9a, 0xf0, 0x95, 0x64, 0x9f, 0x19, 0xb6, 0xab, 0xd6, 0x18, 0xfc, 0x81, 0x20, 0xbd, 0x3e,
-0x4f, 0x53, 0x7c, 0x5c, 0x7e, 0x5a, 0xbf, 0x4e, 0x91, 0x3b, 0xcb, 0x22, 0x5e, 0x06, 0x54, 0xe8,
-0x83, 0xcb, 0xbf, 0xb3, 0x04, 0xa5, 0xae, 0xa2, 0xa3, 0xad, 0xd3, 0xc4, 0x0e, 0xe4, 0xe2, 0x05,
-0x77, 0x24, 0xd5, 0x3b, 0x93, 0x49, 0xab, 0x4d, 0x5b, 0x49, 0x63, 0x3e, 0x21, 0x2e, 0xf2, 0x19,
-0xbc, 0x02, 0xfe, 0xe9, 0x37, 0xd2, 0x05, 0xbf, 0x13, 0xb4, 0x25, 0xb4, 0xfb, 0xbf, 0x37, 0xd5,
-0xe0, 0xef, 0xbe, 0x0a, 0x9d, 0x21, 0x5b, 0x31, 0x9b, 0x39, 0xd5, 0x3a, 0x67, 0x36, 0x99, 0x2d,
-0x69, 0x21, 0x48, 0x12, 0xe4, 0x00, 0x82, 0xee, 0x01, 0xdd, 0x2f, 0xcf, 0x21, 0xc8, 0x91, 0xc9,
-0x5b, 0xd3, 0x77, 0xe3, 0x66, 0xf6, 0xa2, 0x08, 0x52, 0x17, 0x15, 0x21, 0x87, 0x25, 0xc7, 0x25,
-0xa1, 0x22, 0x0d, 0x1d, 0x90, 0x15, 0xa2, 0x0c, 0x76, 0x02, 0x9a, 0xf7, 0x24, 0xed, 0xa6, 0xe4,
-0xe1, 0xdf, 0xe1, 0xdf, 0xa0, 0xe4, 0x0e, 0xed, 0x16, 0xf7, 0xba, 0x00, 0x5c, 0x08, 0x2a, 0x0d,
-0x56, 0x0f, 0x86, 0x0f, 0x90, 0x0e, 0xfe, 0x0c, 0x9e, 0x0b, 0x4c, 0x0a, 0xc6, 0x08, 0x4c, 0x06,
-0x7e, 0x02, 0x90, 0xfd, 0x88, 0xf8, 0x60, 0xf4, 0xfc, 0xf1, 0xb2, 0xf1, 0x0a, 0xf3, 0xec, 0xf4,
-0xa4, 0xf6, 0xc0, 0xf7, 0x64, 0xf8, 0x3e, 0xf9, 0x42, 0xfb, 0x44, 0xff, 0x66, 0x05, 0x38, 0x0d,
-0xaa, 0x14, 0xa0, 0x19, 0x4a, 0x1a, 0x30, 0x16, 0x22, 0x0e, 0x2c, 0x04, 0x40, 0xfa, 0xbe, 0xf1,
-0x66, 0xeb, 0xf0, 0xe6, 0xb3, 0xe3, 0xe7, 0xe1, 0xf5, 0xe1, 0xd4, 0xe4, 0xa6, 0xeb, 0x16, 0xf7,
-0x46, 0x06, 0x16, 0x17, 0x55, 0x26, 0x33, 0x30, 0x9b, 0x32, 0xd9, 0x2c, 0x8d, 0x20, 0x38, 0x10,
-0xec, 0xfe, 0xc2, 0xee, 0x13, 0xe1, 0x49, 0xd6, 0xa5, 0xce, 0xaf, 0xca, 0xb7, 0xcb, 0xeb, 0xd2,
-0x2b, 0xe1, 0x84, 0xf5, 0xd6, 0x0d, 0x3b, 0x26, 0x47, 0x3a, 0x39, 0x46, 0xa5, 0x47, 0xfb, 0x3e,
-0xb3, 0x2d, 0x64, 0x17, 0x2c, 0xff, 0x32, 0xe8, 0xf1, 0xd3, 0x2b, 0xc4, 0xc9, 0xb9, 0x1b, 0xb6,
-0xbf, 0xba, 0x6f, 0xc8, 0x79, 0xde, 0xb8, 0xfa, 0x6a, 0x19, 0xf3, 0x35, 0x01, 0x4c, 0xee, 0x57,
-0xce, 0x57, 0xcd, 0x4b, 0x63, 0x36, 0xae, 0x1a, 0xa0, 0xfc, 0x55, 0xdf, 0xc9, 0xc5, 0x2f, 0xb2,
-0xf4, 0xa6, 0xdc, 0xa5, 0xc3, 0xaf, 0x81, 0xc4, 0x8d, 0xe1, 0x82, 0x03, 0xc1, 0x25, 0xf1, 0x43,
-0xf4, 0x59, 0xdc, 0x64, 0xa4, 0x62, 0xa5, 0x53, 0x45, 0x3a, 0xd0, 0x19, 0x22, 0xf6, 0x9b, 0xd3,
-0x4b, 0xb6, 0xa6, 0xa1, 0x96, 0x98, 0x5a, 0x9c, 0xb7, 0xac, 0x9b, 0xc7, 0x8c, 0xe9, 0xea, 0x0d,
-0xdf, 0x30, 0x8b, 0x4e, 0x86, 0x63, 0xd0, 0x6c, 0xb2, 0x68, 0xee, 0x56, 0x91, 0x39, 0x4a, 0x14,
-0xa8, 0xeb, 0x8d, 0xc5, 0x58, 0xa7, 0xfe, 0x94, 0xa4, 0x90, 0x50, 0x9a, 0xf3, 0xaf, 0x81, 0xce,
-0x0c, 0xf2, 0x92, 0x16, 0x89, 0x38, 0xf0, 0x54, 0xa8, 0x68, 0x64, 0x70, 0x02, 0x6a, 0x16, 0x55,
-0xbb, 0x33, 0x6e, 0x0a, 0x57, 0xdf, 0x1f, 0xb9, 0xd6, 0x9d, 0xa4, 0x90, 0xfc, 0x91, 0x58, 0xa0,
-0xf7, 0xb8, 0x43, 0xd8, 0xa4, 0xfa, 0x17, 0x1d, 0x97, 0x3c, 0xbe, 0x56, 0x4e, 0x68, 0xa8, 0x6d,
-0x4c, 0x64, 0x4f, 0x4c, 0x83, 0x28, 0x5a, 0xfe, 0xb9, 0xd4, 0x71, 0xb2, 0x8a, 0x9c, 0xe6, 0x94,
-0x90, 0x9a, 0x28, 0xab, 0xcb, 0xc3, 0x77, 0xe1, 0x50, 0x01, 0xd7, 0x20, 0xc1, 0x3d, 0x2a, 0x55,
-0xd0, 0x63, 0x04, 0x66, 0xe4, 0x59, 0x2b, 0x40, 0x71, 0x1c, 0xb2, 0xf4, 0x9f, 0xcf, 0x41, 0xb3,
-0xec, 0xa2, 0x8c, 0x9f, 0x76, 0xa7, 0x2d, 0xb8, 0x43, 0xcf, 0x50, 0xea, 0xf0, 0x06, 0xd3, 0x22,
-0xcb, 0x3b, 0xe5, 0x4e, 0x0c, 0x59, 0x98, 0x57, 0x97, 0x49, 0xbb, 0x30, 0xf6, 0x10, 0x6c, 0xef,
-0xb1, 0xd1, 0x17, 0xbc, 0xe3, 0xb0, 0x09, 0xb0, 0x3d, 0xb8, 0x57, 0xc7, 0x73, 0xdb, 0xa0, 0xf2,
-0xa6, 0x0a, 0x83, 0x21, 0xf9, 0x34, 0xcf, 0x42, 0x73, 0x48, 0xf5, 0x44, 0x07, 0x38, 0x8f, 0x23,
-0x7e, 0x0a, 0xec, 0xf0, 0x9d, 0xda, 0xc7, 0xca, 0x0f, 0xc3, 0x6b, 0xc3, 0xf5, 0xca, 0x07, 0xd8,
-0xa4, 0xe8, 0xb0, 0xfa, 0x38, 0x0c, 0x9a, 0x1b, 0xe3, 0x27, 0xe9, 0x2f, 0xcd, 0x32, 0xdd, 0x2f,
-0x53, 0x27, 0xa8, 0x19, 0xc2, 0x08, 0x04, 0xf7, 0x50, 0xe7, 0xfd, 0xdb, 0x8f, 0xd6, 0x45, 0xd7,
-0x2b, 0xdd, 0x08, 0xe7, 0xb6, 0xf2, 0x58, 0xfe, 0x7c, 0x08, 0x68, 0x10, 0x0a, 0x16, 0xc0, 0x19,
-0xb2, 0x1b, 0x94, 0x1b, 0xfc, 0x18, 0x5a, 0x13, 0x02, 0x0b, 0x72, 0x01, 0x64, 0xf8, 0xb2, 0xf1,
-0x6e, 0xee, 0xc6, 0xee, 0xc6, 0xf1, 0xe6, 0xf5, 0xb4, 0xf9, 0x0a, 0xfc, 0xe4, 0xfc, 0x0c, 0xfd,
-0xc0, 0xfd, 0x26, 0x00, 0xb8, 0x04, 0x9a, 0x0a, 0xee, 0x0f, 0x26, 0x13, 0x42, 0x13, 0xb6, 0x10,
-0xda, 0x0c, 0xec, 0x08, 0x18, 0x06, 0x22, 0x04, 0x2a, 0x02, 0xca, 0xfe, 0xa6, 0xf9, 0xde, 0xf2,
-0xf8, 0xeb, 0xda, 0xe6, 0x86, 0xe5, 0x28, 0xe9, 0xa6, 0xf1, 0x62, 0xfd, 0xcc, 0x09, 0x74, 0x14,
-0xfa, 0x1b, 0xff, 0x1f, 0x15, 0x21, 0x05, 0x20, 0xd7, 0x1c, 0x48, 0x17, 0x76, 0x0e, 0x82, 0x02,
-0x22, 0xf4, 0x8c, 0xe5, 0xd1, 0xd8, 0xc3, 0xd0, 0x37, 0xcf, 0x19, 0xd5, 0xf5, 0xe1, 0xa4, 0xf3,
-0x42, 0x07, 0xc2, 0x19, 0xf3, 0x28, 0x3f, 0x33, 0x23, 0x38, 0x63, 0x37, 0xe3, 0x30, 0x9d, 0x24,
-0x56, 0x13, 0x9c, 0xfe, 0xd2, 0xe8, 0xc9, 0xd4, 0x3d, 0xc5, 0x55, 0xbc, 0x03, 0xbc, 0xf7, 0xc4,
-0x65, 0xd6, 0x50, 0xee, 0x3c, 0x09, 0x6b, 0x23, 0x55, 0x39, 0x55, 0x48, 0x6b, 0x4e, 0x47, 0x4b,
-0x25, 0x3f, 0x6d, 0x2b, 0x86, 0x12, 0x42, 0xf7, 0x95, 0xdc, 0x6b, 0xc5, 0x59, 0xb4, 0x91, 0xab,
-0xc5, 0xac, 0xe7, 0xb8, 0x3d, 0xcf, 0x84, 0xed, 0xac, 0x0f, 0xad, 0x30, 0x81, 0x4b, 0x44, 0x5c,
-0xbe, 0x60, 0xa6, 0x58, 0x07, 0x46, 0xc5, 0x2b, 0x6c, 0x0d, 0x42, 0xee, 0x13, 0xd1, 0x61, 0xb8,
-0xec, 0xa6, 0x02, 0x9f, 0x6a, 0xa2, 0x55, 0xb2, 0x13, 0xce, 0x86, 0xf2, 0xa8, 0x1a, 0xe3, 0x3f,
-0x30, 0x5c, 0x4c, 0x6b, 0xae, 0x6b, 0x52, 0x5e, 0x8b, 0x46, 0x45, 0x28, 0x12, 0x07, 0xfc, 0xe5,
-0x93, 0xc7, 0x79, 0xae, 0x6c, 0x9d, 0x10, 0x97, 0x66, 0x9d, 0x81, 0xb1, 0x7b, 0xd2, 0xf6, 0xfb,
-0x6f, 0x27, 0x9d, 0x4d, 0x38, 0x68, 0x9e, 0x73, 0x78, 0x6f, 0xf6, 0x5d, 0x03, 0x43, 0xd1, 0x22,
-0x6c, 0x00, 0x5d, 0xde, 0x7d, 0xbf, 0xba, 0xa6, 0x4a, 0x97, 0xe6, 0x93, 0x94, 0x9e, 0x93, 0xb7,
-0xad, 0xdc, 0x56, 0x08, 0x35, 0x33, 0x5e, 0x56, 0xa6, 0x6c, 0xa6, 0x73, 0xec, 0x6b, 0x40, 0x58,
-0x51, 0x3c, 0x92, 0x1b, 0x0c, 0xf9, 0x39, 0xd7, 0x6b, 0xb9, 0x10, 0xa3, 0x2a, 0x97, 0x32, 0x98,
-0x52, 0xa7, 0xa1, 0xc3, 0x82, 0xe9, 0x30, 0x13, 0xd3, 0x39, 0xce, 0x57, 0x72, 0x69, 0xf4, 0x6c,
-0x4a, 0x63, 0xc1, 0x4e, 0xc3, 0x32, 0x54, 0x12, 0xa0, 0xf0, 0xb1, 0xd0, 0x33, 0xb6, 0x5a, 0xa4,
-0xc6, 0x9d, 0x9a, 0xa3, 0xbb, 0xb5, 0x29, 0xd2, 0xf4, 0xf4, 0x20, 0x19, 0xab, 0x39, 0x47, 0x52,
-0xf6, 0x5f, 0x86, 0x61, 0x08, 0x57, 0xf7, 0x42, 0xf5, 0x27, 0x50, 0x09, 0x40, 0xea, 0x83, 0xce,
-0x3d, 0xb9, 0x33, 0xad, 0x8f, 0xab, 0x11, 0xb4, 0xc3, 0xc5, 0x45, 0xde, 0xd0, 0xfa, 0xe8, 0x17,
-0x3f, 0x32, 0x5d, 0x46, 0x85, 0x51, 0xeb, 0x51, 0xbf, 0x47, 0xaf, 0x34, 0xe6, 0x1b, 0xc6, 0x00,
-0xda, 0xe6, 0x75, 0xd1, 0x1f, 0xc3, 0xcf, 0xbc, 0x7b, 0xbe, 0x2d, 0xc7, 0x61, 0xd5, 0x04, 0xe8,
-0x46, 0xfd, 0x56, 0x13, 0xcd, 0x27, 0xbd, 0x37, 0x43, 0x40, 0xb7, 0x3f, 0x07, 0x36, 0x1d, 0x25,
-0x3a, 0x10, 0xd0, 0xfa, 0x42, 0xe8, 0xc7, 0xda, 0x4b, 0xd3, 0x81, 0xd1, 0x13, 0xd4, 0x01, 0xda,
-0xb5, 0xe2, 0xdc, 0xed, 0x6c, 0xfb, 0x80, 0x0a, 0x36, 0x19, 0xf5, 0x24, 0x2b, 0x2b, 0x27, 0x2a,
-0x8d, 0x22, 0x44, 0x16, 0x4e, 0x08, 0xa6, 0xfb, 0x1e, 0xf2, 0x50, 0xec, 0xd8, 0xe9, 0x62, 0xe9,
-0xfa, 0xe9, 0x0c, 0xeb, 0xe4, 0xec, 0x4c, 0xf0, 0x16, 0xf6, 0xf4, 0xfd, 0xda, 0x06, 0x8e, 0x0e,
-0x18, 0x13, 0xa4, 0x13, 0x90, 0x10, 0xa4, 0x0b, 0xb8, 0x06, 0x40, 0x03, 0x90, 0x01, 0x36, 0x01,
-0xe6, 0x00, 0xee, 0xff, 0x4c, 0xfd, 0x16, 0xf9, 0x22, 0xf4, 0xe4, 0xef, 0xa4, 0xed, 0x4e, 0xee,
-0x76, 0xf1, 0x1a, 0xf6, 0x20, 0xfb, 0x8e, 0xff, 0x88, 0x03, 0x5c, 0x07, 0xaa, 0x0b, 0x32, 0x10,
-0x76, 0x14, 0x36, 0x17, 0xa6, 0x17, 0xb0, 0x14, 0x2e, 0x0e, 0x4a, 0x04, 0x10, 0xf8, 0x9c, 0xeb,
-0x19, 0xe1, 0x85, 0xda, 0xfd, 0xd8, 0xb7, 0xdc, 0x8a, 0xe4, 0x84, 0xef, 0xf8, 0xfb, 0xec, 0x08,
-0x3c, 0x15, 0xf3, 0x1f, 0x1f, 0x28, 0xb1, 0x2c, 0xab, 0x2c, 0x47, 0x27, 0x49, 0x1c, 0xc4, 0x0b,
-0x84, 0xf7, 0x37, 0xe2, 0xa7, 0xcf, 0x7f, 0xc3, 0x01, 0xc0, 0xa9, 0xc5, 0x0f, 0xd3, 0xb2, 0xe5,
-0x9e, 0xfa, 0x58, 0x0f, 0xc1, 0x21, 0xdb, 0x30, 0x79, 0x3b, 0x8f, 0x40, 0x13, 0x3f, 0x17, 0x36,
-0x45, 0x25, 0x52, 0x0d, 0x98, 0xf0, 0x71, 0xd3, 0x69, 0xbb, 0x0b, 0xad, 0x04, 0xab, 0x25, 0xb5,
-0xdd, 0xc8, 0x71, 0xe2, 0xc2, 0xfd, 0xc6, 0x17, 0x41, 0x2e, 0x09, 0x40, 0xcd, 0x4b, 0x93, 0x50,
-0x97, 0x4c, 0x25, 0x3f, 0xf5, 0x27, 0xb8, 0x08, 0x20, 0xe5, 0xf5, 0xc2, 0xac, 0xa8, 0x1a, 0x9b,
-0x44, 0x9c, 0xc4, 0xaa, 0xa1, 0xc3, 0x03, 0xe2, 0x0a, 0x02, 0x1b, 0x20, 0x43, 0x3a, 0x8f, 0x4e,
-0x62, 0x5b, 0x82, 0x5e, 0x9a, 0x56, 0x05, 0x43, 0xcb, 0x24, 0x3c, 0xff, 0x37, 0xd7, 0x77, 0xb3,
-0x30, 0x9a, 0x8c, 0x8f, 0x78, 0x94, 0x2c, 0xa7, 0xc9, 0xc3, 0xde, 0xe5, 0x00, 0x09, 0xa7, 0x29,
-0x9b, 0x45, 0x76, 0x5a, 0xcc, 0x65, 0x70, 0x65, 0x1e, 0x58, 0xb3, 0x3e, 0xa6, 0x1b, 0x26, 0xf3,
-0xe7, 0xca, 0x1e, 0xa9, 0xc2, 0x92, 0x0e, 0x8b, 0x56, 0x92, 0x0e, 0xa7, 0xe7, 0xc5, 0x6a, 0xea,
-0x14, 0x10, 0x1b, 0x33, 0x09, 0x50, 0xd6, 0x63, 0xb6, 0x6b, 0xfe, 0x65, 0x3d, 0x53, 0x9f, 0x35,
-0xae, 0x10, 0xe6, 0xe8, 0x41, 0xc3, 0xc0, 0xa4, 0xa2, 0x91, 0x50, 0x8c, 0x84, 0x95, 0x09, 0xac,
-0xa9, 0xcc, 0x00, 0xf3, 0xf8, 0x19, 0xef, 0x3c, 0xe2, 0x57, 0x72, 0x67, 0xa4, 0x69, 0x7a, 0x5e,
-0xd1, 0x47, 0x01, 0x29, 0xa2, 0x05, 0x51, 0xe1, 0x0d, 0xc0, 0xcc, 0xa5, 0xe8, 0x95, 0xe4, 0x92,
-0xaa, 0x9d, 0x57, 0xb5, 0xf1, 0xd6, 0x74, 0xfd, 0x5b, 0x23, 0x61, 0x43, 0x6c, 0x59, 0xf6, 0x62,
-0xb2, 0x5f, 0xf7, 0x50, 0xef, 0x39, 0x7d, 0x1d, 0x88, 0xfe, 0x89, 0xdf, 0x75, 0xc3, 0x2d, 0xad,
-0x18, 0xa0, 0xcc, 0x9e, 0x82, 0xaa, 0x8d, 0xc2, 0x45, 0xe3, 0x7c, 0x07, 0x05, 0x29, 0x2d, 0x43,
-0x81, 0x52, 0x5e, 0x56, 0x77, 0x4f, 0x7b, 0x40, 0xeb, 0x2b, 0x2c, 0x14, 0xf6, 0xfa, 0xe1, 0xe1,
-0xcd, 0xca, 0x87, 0xb8, 0x27, 0xae, 0x7d, 0xae, 0xdd, 0xba, 0xd3, 0xd1, 0x60, 0xef, 0x08, 0x0e,
-0x71, 0x28, 0x15, 0x3b, 0x2d, 0x44, 0x21, 0x44, 0xad, 0x3c, 0xef, 0x2f, 0xe3, 0x1f, 0xea, 0x0d,
-0xc8, 0xfa, 0x80, 0xe7, 0xcd, 0xd5, 0xe1, 0xc7, 0xc7, 0xc0, 0x79, 0xc2, 0xa7, 0xcd, 0x91, 0xe0,
-0x5c, 0xf7, 0x8c, 0x0d, 0x85, 0x1f, 0xf9, 0x2a, 0xab, 0x2f, 0x6b, 0x2e, 0xab, 0x28, 0x15, 0x20,
-0xa4, 0x15, 0xf0, 0x09, 0xa0, 0xfd, 0x20, 0xf1, 0x80, 0xe5, 0x91, 0xdc, 0xd9, 0xd7, 0xed, 0xd8,
-0xcd, 0xdf, 0x3a, 0xeb, 0xd2, 0xf8, 0xea, 0x05, 0x48, 0x10, 0xd6, 0x16, 0x8a, 0x19, 0xee, 0x18,
-0x38, 0x16, 0x06, 0x12, 0x6e, 0x0d, 0x9c, 0x08, 0xc4, 0x03, 0x96, 0xfe, 0x30, 0xf9, 0xce, 0xf3,
-0x5e, 0xef, 0xea, 0xec, 0x1a, 0xed, 0xf8, 0xef, 0x8e, 0xf4, 0xbc, 0xf9, 0x22, 0xfe, 0x20, 0x01,
-0x9e, 0x02, 0x4c, 0x03, 0xd8, 0x03, 0x14, 0x05, 0x84, 0x07, 0x00, 0x0b, 0x9e, 0x0e, 0xf0, 0x10,
-0x86, 0x10, 0xd2, 0x0c, 0x14, 0x06, 0xd6, 0xfd, 0xe0, 0xf5, 0xb4, 0xef, 0xe0, 0xeb, 0x34, 0xea,
-0xd0, 0xe9, 0x4a, 0xea, 0xd0, 0xeb, 0x90, 0xee, 0xc2, 0xf3, 0xa6, 0xfb, 0x5c, 0x06, 0xca, 0x12,
-0xa5, 0x1e, 0xf7, 0x26, 0x57, 0x29, 0x7d, 0x24, 0x2c, 0x19, 0x08, 0x0a, 0xde, 0xf9, 0x9e, 0xeb,
-0x91, 0xe0, 0xe7, 0xd8, 0xbd, 0xd4, 0xb7, 0xd3, 0x2f, 0xd6, 0xef, 0xdc, 0x86, 0xe8, 0xf2, 0xf8,
-0xdc, 0x0c, 0x8d, 0x21, 0x6f, 0x33, 0xb5, 0x3e, 0x57, 0x40, 0xff, 0x37, 0xe7, 0x26, 0xca, 0x10,
-0x86, 0xf9, 0x26, 0xe4, 0xe7, 0xd2, 0xc1, 0xc6, 0x19, 0xc0, 0x5d, 0xbf, 0xe5, 0xc4, 0x33, 0xd1,
-0x8c, 0xe4, 0x26, 0xfd, 0x4c, 0x18, 0x39, 0x32, 0x77, 0x46, 0x89, 0x51, 0x01, 0x51, 0xe3, 0x44,
-0x85, 0x2f, 0x56, 0x14, 0x64, 0xf7, 0x33, 0xdc, 0xa1, 0xc5, 0xb3, 0xb5, 0xb1, 0xad, 0x51, 0xae,
-0x3f, 0xb8, 0x6f, 0xcb, 0x4a, 0xe6, 0xdc, 0x05, 0xdf, 0x25, 0x63, 0x42, 0x08, 0x57, 0xcc, 0x60,
-0xdc, 0x5d, 0x65, 0x4e, 0xd5, 0x34, 0x88, 0x14, 0xd8, 0xf1, 0xfb, 0xd0, 0xfb, 0xb5, 0xd8, 0xa3,
-0xc0, 0x9c, 0x56, 0xa1, 0xc1, 0xb1, 0x5b, 0xcc, 0x96, 0xed, 0x64, 0x11, 0x1b, 0x33, 0x2f, 0x4f,
-0x4e, 0x62, 0xd8, 0x69, 0x58, 0x64, 0x13, 0x52, 0xef, 0x34, 0x8c, 0x10, 0x6e, 0xe9, 0xbb, 0xc4,
-0xea, 0xa7, 0x90, 0x96, 0xe2, 0x92, 0x14, 0x9d, 0x8b, 0xb3, 0x49, 0xd3, 0xba, 0xf7, 0x49, 0x1c,
-0x5d, 0x3d, 0xd0, 0x57, 0xfa, 0x68, 0x78, 0x6e, 0x7c, 0x66, 0x27, 0x51, 0x6f, 0x30, 0x00, 0x08,
-0x9f, 0xdd, 0x97, 0xb7, 0xf2, 0x9b, 0xb2, 0x8e, 0xa2, 0x90, 0xae, 0xa0, 0xbf, 0xbb, 0x7f, 0xdd,
-0x9a, 0x01, 0x4b, 0x24, 0xc1, 0x42, 0xb8, 0x5a, 0x8e, 0x69, 0x8e, 0x6c, 0x2e, 0x62, 0x25, 0x4a,
-0xf9, 0x26, 0x0c, 0xfd, 0xbf, 0xd2, 0x1f, 0xaf, 0xe4, 0x97, 0xda, 0x8f, 0xae, 0x96, 0x06, 0xaa,
-0x0b, 0xc6, 0xb6, 0xe6, 0x46, 0x08, 0xff, 0x27, 0x91, 0x43, 0xda, 0x58, 0x32, 0x65, 0xda, 0x65,
-0x52, 0x59, 0xb1, 0x3f, 0xea, 0x1b, 0x0a, 0xf3, 0xe3, 0xcb, 0x59, 0xad, 0xec, 0x9b, 0xda, 0x98,
-0xe4, 0xa2, 0xe1, 0xb6, 0x55, 0xd1, 0x2c, 0xef, 0x3a, 0x0d, 0x5f, 0x29, 0x81, 0x41, 0x31, 0x53,
-0x1a, 0x5c, 0xc8, 0x59, 0x11, 0x4b, 0x33, 0x31, 0x48, 0x0f, 0xc8, 0xea, 0x05, 0xca, 0x17, 0xb2,
-0x4e, 0xa6, 0x04, 0xa7, 0x39, 0xb2, 0x77, 0xc5, 0x81, 0xdd, 0x8c, 0xf7, 0x76, 0x11, 0xc7, 0x28,
-0xd5, 0x3b, 0xa9, 0x48, 0x1f, 0x4d, 0x29, 0x48, 0x61, 0x39, 0x41, 0x22, 0x4c, 0x06, 0x9c, 0xe9,
-0xc5, 0xd0, 0xb5, 0xbf, 0xef, 0xb7, 0xd5, 0xb9, 0xf3, 0xc3, 0xd9, 0xd3, 0x86, 0xe7, 0x66, 0xfc,
-0x72, 0x10, 0x13, 0x22, 0x7b, 0x2f, 0x83, 0x37, 0x5b, 0x39, 0x27, 0x34, 0x87, 0x28, 0xd2, 0x17,
-0xfe, 0x03, 0x30, 0xf0, 0x0d, 0xdf, 0xf1, 0xd2, 0x7b, 0xcd, 0xcf, 0xce, 0x45, 0xd6, 0x37, 0xe2,
-0x8a, 0xf0, 0x2e, 0xff, 0x70, 0x0c, 0xfc, 0x16, 0x67, 0x1e, 0x79, 0x22, 0x43, 0x23, 0xef, 0x20,
-0x74, 0x1b, 0xf8, 0x12, 0xf2, 0x07, 0xc0, 0xfb, 0x40, 0xf0, 0x94, 0xe7, 0x75, 0xe3, 0x22, 0xe4,
-0xf0, 0xe8, 0x20, 0xf0, 0xd0, 0xf7, 0x6c, 0xfe, 0x1a, 0x03, 0xe4, 0x05, 0xb6, 0x07, 0x86, 0x09,
-0x02, 0x0c, 0x16, 0x0f, 0x72, 0x11, 0x10, 0x12, 0xe0, 0x0f, 0xe6, 0x0a, 0xa6, 0x04, 0xc0, 0xfe,
-0xc0, 0xfa, 0x18, 0xf9, 0xe0, 0xf8, 0xf4, 0xf8, 0x28, 0xf8, 0xc4, 0xf5, 0x82, 0xf2, 0x98, 0xef,
-0xd6, 0xee, 0xee, 0xf1, 0xc2, 0xf8, 0x68, 0x02, 0xda, 0x0c, 0x7c, 0x15, 0xe2, 0x1a, 0x55, 0x1c,
-0x84, 0x1a, 0xe0, 0x16, 0x42, 0x12, 0xd4, 0x0c, 0x44, 0x06, 0xc6, 0xfd, 0x9e, 0xf3, 0xcc, 0xe8,
-0xdb, 0xde, 0x85, 0xd8, 0x97, 0xd7, 0x13, 0xdd, 0xd6, 0xe8, 0xf4, 0xf8, 0x92, 0x0a, 0xe8, 0x1a,
-0x45, 0x27, 0x7f, 0x2e, 0x95, 0x30, 0xcb, 0x2d, 0xcb, 0x26, 0xc8, 0x1b, 0x18, 0x0d, 0xbe, 0xfb,
-0x42, 0xe9, 0x07, 0xd8, 0x9d, 0xca, 0x6b, 0xc3, 0xeb, 0xc3, 0xcb, 0xcc, 0x55, 0xdd, 0x98, 0xf3,
-0x30, 0x0c, 0x83, 0x23, 0x6b, 0x36, 0x75, 0x42, 0xa9, 0x46, 0x7b, 0x42, 0x7d, 0x36, 0xf9, 0x23,
-0xec, 0x0c, 0xd8, 0xf3, 0xa1, 0xdb, 0x19, 0xc7, 0xa9, 0xb8, 0x4d, 0xb2, 0xf3, 0xb4, 0x39, 0xc1,
-0x59, 0xd6, 0x2e, 0xf2, 0x3c, 0x11, 0xe1, 0x2e, 0x13, 0x47, 0x1a, 0x56, 0xfc, 0x59, 0x0b, 0x52,
-0x9b, 0x3f, 0xc1, 0x25, 0xe8, 0x07, 0xd2, 0xe9, 0x55, 0xce, 0x6b, 0xb8, 0x00, 0xaa, 0xde, 0xa4,
-0xc4, 0xa9, 0x6f, 0xb9, 0x7d, 0xd3, 0x58, 0xf5, 0xf0, 0x1a, 0x33, 0x3e, 0x90, 0x59, 0xa0, 0x68,
-0xcc, 0x68, 0xd0, 0x5a, 0xc9, 0x41, 0x0b, 0x22, 0x06, 0x00, 0x3f, 0xdf, 0x8f, 0xc2, 0x87, 0xac,
-0x10, 0x9f, 0x76, 0x9b, 0x7a, 0xa3, 0x77, 0xb7, 0xd7, 0xd6, 0x32, 0xfe, 0xdb, 0x27, 0x4b, 0x4d,
-0x18, 0x68, 0xc8, 0x73, 0x18, 0x6f, 0x08, 0x5c, 0xad, 0x3e, 0x2e, 0x1c, 0x66, 0xf8, 0xf7, 0xd6,
-0x5d, 0xba, 0xfc, 0xa4, 0xf0, 0x98, 0xce, 0x97, 0x32, 0xa3, 0x9f, 0xbb, 0x75, 0xdf, 0x08, 0x0a,
-0x01, 0x35, 0xe8, 0x58, 0x1e, 0x70, 0x38, 0x77, 0xfa, 0x6d, 0x9e, 0x57, 0x7f, 0x38, 0x20, 0x15,
-0x54, 0xf1, 0x17, 0xd0, 0x43, 0xb4, 0x9a, 0xa0, 0x10, 0x97, 0x7c, 0x99, 0x36, 0xa9, 0x91, 0xc5,
-0xc2, 0xeb, 0x3a, 0x16, 0x2d, 0x3e, 0x72, 0x5d, 0x78, 0x6f, 0x0c, 0x72, 0x28, 0x66, 0xef, 0x4e,
-0x23, 0x30, 0xd4, 0x0d, 0x12, 0xeb, 0x0d, 0xcb, 0x2b, 0xb1, 0x32, 0xa0, 0x68, 0x9a, 0x5c, 0xa1,
-0x01, 0xb5, 0x53, 0xd3, 0x7a, 0xf8, 0xd5, 0x1e, 0xfb, 0x40, 0x8a, 0x5a, 0xc2, 0x67, 0x9e, 0x67,
-0xc6, 0x5a, 0xdb, 0x43, 0x65, 0x26, 0xbc, 0x05, 0x26, 0xe5, 0x51, 0xc8, 0xbd, 0xb2, 0xda, 0xa6,
-0x66, 0xa6, 0x1d, 0xb1, 0xdb, 0xc5, 0xa1, 0xe1, 0xfe, 0x00, 0x27, 0x20, 0x81, 0x3b, 0xab, 0x4f,
-0xba, 0x59, 0x7c, 0x58, 0x6d, 0x4c, 0x71, 0x37, 0x42, 0x1c, 0x8c, 0xfe, 0xed, 0xe1, 0x4b, 0xca,
-0xab, 0xba, 0x63, 0xb4, 0xd7, 0xb7, 0xcf, 0xc3, 0xe1, 0xd5, 0x40, 0xec, 0x60, 0x04, 0x32, 0x1c,
-0x4d, 0x31, 0x01, 0x41, 0x99, 0x48, 0xf3, 0x46, 0xdd, 0x3b, 0xeb, 0x28, 0xa4, 0x11, 0xf0, 0xf8,
-0xfd, 0xe2, 0xbb, 0xd2, 0xcf, 0xc9, 0x5f, 0xc8, 0x5d, 0xcd, 0xf5, 0xd6, 0xad, 0xe3, 0xa4, 0xf2,
-0x96, 0x02, 0x16, 0x13, 0x91, 0x22, 0x5d, 0x2e, 0x5b, 0x34, 0xc5, 0x32, 0xaf, 0x29, 0x08, 0x1b,
-0x82, 0x09, 0x6a, 0xf8, 0xd4, 0xea, 0x25, 0xe2, 0x71, 0xde, 0x05, 0xdf, 0x6d, 0xe2, 0x50, 0xe7,
-0x54, 0xed, 0x06, 0xf4, 0x5a, 0xfc, 0xfe, 0x05, 0xec, 0x0f, 0x7c, 0x18, 0x75, 0x1d, 0x9d, 0x1d,
-0xbe, 0x18, 0x78, 0x10, 0x34, 0x07, 0x52, 0xff, 0xfe, 0xf9, 0x60, 0xf7, 0xd6, 0xf6, 0x18, 0xf7,
-0x02, 0xf7, 0xd6, 0xf5, 0xe8, 0xf3, 0x98, 0xf2, 0xb4, 0xf2, 0x76, 0xf5, 0x3e, 0xfa, 0x0a, 0x00,
-0x70, 0x05, 0xda, 0x08, 0xaa, 0x0a, 0x14, 0x0b, 0x6c, 0x0b, 0x04, 0x0c, 0x4e, 0x0d, 0x2a, 0x0e,
-0x0c, 0x0e, 0xe6, 0x0b, 0xf4, 0x06, 0xbc, 0xff, 0x94, 0xf6, 0x70, 0xed, 0x4e, 0xe6, 0x79, 0xe2,
-0xef, 0xe2, 0x66, 0xe7, 0x14, 0xef, 0x76, 0xf8, 0x86, 0x02, 0x32, 0x0c, 0xee, 0x14, 0x5f, 0x1c,
-0x55, 0x21, 0xdb, 0x23, 0xcd, 0x22, 0xd1, 0x1d, 0x4c, 0x14, 0xd8, 0x06, 0x70, 0xf6, 0x4e, 0xe5,
-0x63, 0xd6, 0x63, 0xcc, 0xf1, 0xc9, 0x75, 0xcf, 0xb9, 0xdb, 0xd0, 0xec, 0xb2, 0xff, 0x00, 0x12,
-0xc9, 0x21, 0xef, 0x2d, 0xd5, 0x35, 0xc7, 0x38, 0x3d, 0x36, 0x69, 0x2d, 0xab, 0x1e, 0xf6, 0x09,
-0x6c, 0xf1, 0xf7, 0xd7, 0x4f, 0xc2, 0xd1, 0xb4, 0x6d, 0xb2, 0xe3, 0xbb, 0xe3, 0xce, 0xf0, 0xe7,
-0x9c, 0x02, 0x62, 0x1b, 0xf3, 0x2f, 0x0b, 0x3f, 0xc3, 0x47, 0xf3, 0x49, 0x99, 0x44, 0x71, 0x37,
-0x5d, 0x22, 0x98, 0x06, 0x96, 0xe6, 0x65, 0xc7, 0x35, 0xae, 0xbc, 0xa0, 0xa2, 0xa1, 0x15, 0xb0,
-0x5f, 0xc9, 0x70, 0xe8, 0x82, 0x08, 0x73, 0x25, 0xe1, 0x3c, 0x91, 0x4d, 0xec, 0x56, 0xae, 0x57,
-0xe5, 0x4e, 0x91, 0x3c, 0x11, 0x21, 0x86, 0xfe, 0xff, 0xd8, 0x43, 0xb6, 0x14, 0x9d, 0x0c, 0x92,
-0xf0, 0x96, 0x54, 0xaa, 0x5b, 0xc8, 0xc2, 0xeb, 0x40, 0x0f, 0x17, 0x2f, 0x93, 0x48, 0x6a, 0x5a,
-0xe4, 0x62, 0xa6, 0x60, 0x07, 0x53, 0x55, 0x3a, 0xb4, 0x18, 0x7c, 0xf1, 0x25, 0xca, 0x8e, 0xa8,
-0x6e, 0x92, 0x7a, 0x8b, 0x58, 0x94, 0x2c, 0xab, 0xe3, 0xcb, 0x7a, 0xf1, 0xd2, 0x16, 0x25, 0x38,
-0x63, 0x52, 0x98, 0x63, 0xd0, 0x69, 0x52, 0x63, 0x37, 0x50, 0x85, 0x32, 0x40, 0x0d, 0x36, 0xe5,
-0x55, 0xbf, 0xf6, 0xa0, 0xde, 0x8e, 0x46, 0x8b, 0x8c, 0x96, 0xfd, 0xae, 0x19, 0xd1, 0xaa, 0xf7,
-0x3d, 0x1e, 0xe7, 0x3f, 0xaa, 0x59, 0x6e, 0x68, 0x14, 0x6a, 0x44, 0x5e, 0xbd, 0x46, 0x5d, 0x26,
-0x40, 0x01, 0xbd, 0xdb, 0x01, 0xba, 0x7e, 0xa0, 0x26, 0x92, 0x22, 0x91, 0xe0, 0x9d, 0x2f, 0xb7,
-0xa3, 0xd9, 0xb0, 0x00, 0xa5, 0x26, 0xb5, 0x46, 0xde, 0x5c, 0x82, 0x66, 0xb0, 0x62, 0x6d, 0x52,
-0xaf, 0x38, 0x30, 0x19, 0x9a, 0xf7, 0x39, 0xd7, 0x13, 0xbb, 0x1e, 0xa6, 0x08, 0x9b, 0x96, 0x9b,
-0xf4, 0xa8, 0x31, 0xc2, 0x22, 0xe4, 0x7a, 0x09, 0x83, 0x2c, 0x0b, 0x48, 0xb8, 0x58, 0xea, 0x5c,
-0xcc, 0x54, 0x35, 0x43, 0x01, 0x2b, 0x78, 0x0f, 0x6e, 0xf3, 0xd7, 0xd8, 0x11, 0xc2, 0x25, 0xb1,
-0x6a, 0xa8, 0x08, 0xaa, 0x63, 0xb7, 0x37, 0xcf, 0x46, 0xee, 0x76, 0x0f, 0xc3, 0x2c, 0x09, 0x42,
-0xb1, 0x4c, 0x83, 0x4c, 0x33, 0x43, 0x17, 0x33, 0xcb, 0x1e, 0x04, 0x09, 0x48, 0xf3, 0xe9, 0xde,
-0x41, 0xcd, 0x4b, 0xc0, 0x09, 0xba, 0xdb, 0xbc, 0x15, 0xc9, 0xd9, 0xdd, 0xa0, 0xf7, 0x96, 0x11,
-0x13, 0x27, 0x0f, 0x35, 0x8b, 0x3a, 0x01, 0x38, 0x9f, 0x2f, 0x0b, 0x23, 0x9e, 0x14, 0x6e, 0x05,
-0x76, 0xf6, 0x96, 0xe8, 0x75, 0xdc, 0x89, 0xd3, 0x75, 0xcf, 0xd1, 0xd1, 0x03, 0xdb, 0xa2, 0xe9,
-0x40, 0xfb, 0x62, 0x0c, 0x0c, 0x1a, 0x27, 0x22, 0x67, 0x24, 0x2f, 0x22, 0x87, 0x1c, 0x4c, 0x15,
-0x12, 0x0d, 0x2e, 0x05, 0xc4, 0xfd, 0x82, 0xf6, 0xdc, 0xef, 0x4a, 0xea, 0xf2, 0xe6, 0x8a, 0xe6,
-0x64, 0xe9, 0x56, 0xef, 0x74, 0xf7, 0xc4, 0xff, 0x98, 0x06, 0x10, 0x0b, 0xf0, 0x0c, 0xea, 0x0c,
-0xca, 0x0b, 0x46, 0x0a, 0x46, 0x09, 0xcc, 0x08, 0xa4, 0x08, 0x24, 0x08, 0x70, 0x06, 0xda, 0x02,
-0xda, 0xfd, 0x0c, 0xf8, 0xca, 0xf2, 0x78, 0xef, 0x20, 0xee, 0x0c, 0xef, 0x1c, 0xf1, 0x46, 0xf3,
-0xda, 0xf5, 0xa4, 0xf8, 0x70, 0xfc, 0x82, 0x01, 0x22, 0x08, 0x0a, 0x10, 0x02, 0x18, 0xd3, 0x1d,
-0x2f, 0x1f, 0x66, 0x1b, 0x1c, 0x12, 0x16, 0x05, 0x12, 0xf7, 0x6c, 0xea, 0x77, 0xe1, 0x59, 0xdc,
-0xa7, 0xda, 0x17, 0xdc, 0x25, 0xe0, 0xe0, 0xe6, 0x98, 0xf0, 0x68, 0xfd, 0xda, 0x0c, 0x2d, 0x1d,
-0xa9, 0x2b, 0x1f, 0x35, 0xe9, 0x36, 0xb1, 0x2f, 0x51, 0x20, 0x92, 0x0b, 0x88, 0xf5, 0xc7, 0xe1,
-0xd5, 0xd2, 0xa3, 0xc9, 0x17, 0xc6, 0xab, 0xc7, 0x53, 0xce, 0x1b, 0xda, 0xca, 0xea, 0xe2, 0xff,
-0x4a, 0x17, 0x01, 0x2e, 0x79, 0x40, 0x67, 0x4a, 0xcf, 0x49, 0x11, 0x3e, 0xd7, 0x28, 0xf2, 0x0d,
-0xa6, 0xf1, 0x2d, 0xd8, 0x85, 0xc4, 0x01, 0xb8, 0xf5, 0xb2, 0xbb, 0xb5, 0x3d, 0xc0, 0x3b, 0xd2,
-0xd0, 0xea, 0xbc, 0x07, 0x6b, 0x25, 0x13, 0x40, 0xf5, 0x52, 0x4a, 0x5b, 0x4c, 0x57, 0x2f, 0x47,
-0x63, 0x2d, 0x96, 0x0d, 0x4e, 0xec, 0x11, 0xce, 0x59, 0xb6, 0x62, 0xa7, 0x80, 0xa2, 0x0c, 0xa8,
-0x0d, 0xb8, 0x53, 0xd1, 0x54, 0xf1, 0xd2, 0x13, 0xad, 0x34, 0x8f, 0x4f, 0xf8, 0x60, 0x7c, 0x66,
-0x00, 0x5f, 0x5f, 0x4b, 0xe7, 0x2d, 0x20, 0x0a, 0x9c, 0xe4, 0x7f, 0xc2, 0x36, 0xa8, 0xec, 0x98,
-0x4e, 0x96, 0xf2, 0xa0, 0x75, 0xb7, 0x67, 0xd7, 0x18, 0xfc, 0xc9, 0x20, 0x61, 0x41, 0x2c, 0x5a,
-0xe6, 0x68, 0x84, 0x6b, 0x4a, 0x61, 0xdb, 0x4a, 0x4d, 0x2a, 0x1e, 0x03, 0x67, 0xda, 0x1b, 0xb6,
-0xa8, 0x9b, 0xfe, 0x8e, 0x80, 0x91, 0x5a, 0xa2, 0xc5, 0xbe, 0x69, 0xe2, 0x16, 0x08, 0x6f, 0x2b,
-0xe7, 0x48, 0x94, 0x5e, 0x74, 0x6a, 0xb8, 0x6a, 0x80, 0x5e, 0x11, 0x46, 0x81, 0x23, 0x5e, 0xfa,
-0x5f, 0xd0, 0x87, 0xac, 0xfe, 0x94, 0xee, 0x8c, 0xe6, 0x94, 0x68, 0xaa, 0x91, 0xc9, 0x3e, 0xed,
-0xb0, 0x10, 0x77, 0x30, 0x6f, 0x4a, 0xdc, 0x5c, 0xea, 0x65, 0x1e, 0x64, 0x1e, 0x56, 0x6d, 0x3c,
-0xe6, 0x18, 0xf0, 0xef, 0x05, 0xc8, 0x32, 0xa8, 0xd8, 0x95, 0x64, 0x93, 0x7a, 0x9f, 0xf1, 0xb6,
-0x69, 0xd5, 0x3c, 0xf6, 0xf4, 0x15, 0xad, 0x31, 0xe1, 0x47, 0x32, 0x57, 0xea, 0x5d, 0xfa, 0x59,
-0xc5, 0x4a, 0x91, 0x30, 0x02, 0x0e, 0x0a, 0xe8, 0xd9, 0xc4, 0xf8, 0xaa, 0x76, 0x9e, 0xcc, 0x9f,
-0x5d, 0xad, 0x07, 0xc4, 0x6b, 0xdf, 0x46, 0xfc, 0x6c, 0x17, 0x15, 0x2f, 0xa1, 0x41, 0x65, 0x4d,
-0xe1, 0x50, 0xfb, 0x4a, 0x07, 0x3b, 0x11, 0x22, 0x8c, 0x03, 0xd8, 0xe3, 0x85, 0xc8, 0xf3, 0xb5,
-0x89, 0xae, 0x6f, 0xb2, 0xa5, 0xbf, 0xeb, 0xd2, 0xac, 0xe9, 0xc4, 0x00, 0x36, 0x16, 0x7f, 0x28,
-0xdf, 0x35, 0x81, 0x3d, 0x43, 0x3e, 0xc1, 0x37, 0x15, 0x2a, 0x90, 0x16, 0xa4, 0xff, 0xd2, 0xe8,
-0x51, 0xd5, 0x45, 0xc8, 0x6f, 0xc3, 0xdd, 0xc6, 0x23, 0xd1, 0x3b, 0xe0, 0x84, 0xf1, 0xa4, 0x02,
-0xf0, 0x11, 0xbd, 0x1d, 0xe1, 0x25, 0x87, 0x29, 0xd3, 0x28, 0x3b, 0x24, 0xde, 0x1b, 0x3c, 0x10,
-0x6e, 0x02, 0x14, 0xf4, 0x3c, 0xe7, 0xc7, 0xdd, 0x79, 0xd9, 0x13, 0xdb, 0xa1, 0xe1, 0x84, 0xeb,
-0x62, 0xf6, 0xc8, 0x00, 0x26, 0x09, 0xc8, 0x0e, 0xcc, 0x11, 0xe2, 0x12, 0xf2, 0x12, 0x44, 0x12,
-0xec, 0x10, 0x3c, 0x0e, 0x7a, 0x09, 0xea, 0x02, 0x80, 0xfb, 0x02, 0xf5, 0x1a, 0xf1, 0x20, 0xf0,
-0x02, 0xf2, 0x2e, 0xf5, 0x38, 0xf8, 0x14, 0xfa, 0x5e, 0xfa, 0xea, 0xf9, 0xac, 0xf9, 0x28, 0xfb,
-0x3e, 0xff, 0xa0, 0x05, 0xd6, 0x0c, 0xd0, 0x12, 0xe2, 0x15, 0x68, 0x15, 0xcc, 0x11, 0x9c, 0x0c,
-0x52, 0x07, 0xd0, 0x02, 0xb4, 0xfe, 0x30, 0xfa, 0xc4, 0xf4, 0x44, 0xee, 0xc8, 0xe7, 0xc5, 0xe2,
-0x79, 0xe1, 0x6a, 0xe5, 0xae, 0xee, 0x20, 0xfc, 0x56, 0x0b, 0x44, 0x19, 0x73, 0x23, 0x5d, 0x28,
-0x1d, 0x28, 0xfb, 0x23, 0xb7, 0x1c, 0x02, 0x13, 0x1a, 0x07, 0x60, 0xf9, 0xd2, 0xea, 0xdb, 0xdc,
-0x8d, 0xd1, 0x5b, 0xcb, 0x0d, 0xcc, 0x53, 0xd4, 0xab, 0xe3, 0xee, 0xf7, 0x1c, 0x0e, 0xe9, 0x22,
-0xfb, 0x32, 0x7d, 0x3c, 0xa3, 0x3e, 0x75, 0x39, 0x0f, 0x2e, 0x49, 0x1d, 0x8e, 0x08, 0x36, 0xf2,
-0x6d, 0xdc, 0xef, 0xc9, 0x2b, 0xbd, 0xe1, 0xb7, 0x7b, 0xbb, 0x0f, 0xc8, 0x75, 0xdc, 0x78, 0xf6,
-0xfc, 0x12, 0xd9, 0x2d, 0x81, 0x43, 0x95, 0x50, 0x3f, 0x53, 0x75, 0x4b, 0xff, 0x39, 0x2f, 0x21,
-0x58, 0x04, 0xd2, 0xe6, 0x75, 0xcc, 0x21, 0xb8, 0xb3, 0xab, 0xc2, 0xa8, 0xa7, 0xaf, 0x57, 0xc0,
-0xcb, 0xd9, 0x74, 0xf9, 0xa2, 0x1b, 0xe1, 0x3b, 0x1a, 0x55, 0x48, 0x63, 0xa8, 0x63, 0x4e, 0x56,
-0x9d, 0x3d, 0xc7, 0x1d, 0x16, 0xfb, 0xff, 0xd9, 0x7d, 0xbe, 0xb0, 0xaa, 0x76, 0xa0, 0xda, 0x9f,
-0xa2, 0xa9, 0x05, 0xbe, 0xb3, 0xdb, 0x3a, 0x00, 0x05, 0x27, 0x8f, 0x4a, 0xc8, 0x64, 0xda, 0x70,
-0x7a, 0x6c, 0xe4, 0x58, 0x4f, 0x3a, 0xc6, 0x15, 0xb2, 0xf0, 0x45, 0xcf, 0x9d, 0xb4, 0xc4, 0xa2,
-0x72, 0x9a, 0x42, 0x9c, 0xf8, 0xa8, 0xf1, 0xc0, 0xe7, 0xe2, 0x62, 0x0b, 0xbb, 0x34, 0x70, 0x58,
-0x3c, 0x70, 0x8a, 0x77, 0x84, 0x6d, 0xb3, 0x54, 0x97, 0x32, 0xd0, 0x0c, 0xfc, 0xe7, 0xc7, 0xc7,
-0xb9, 0xae, 0xb8, 0x9e, 0x76, 0x98, 0x0e, 0x9d, 0x0d, 0xad, 0xd5, 0xc8, 0xfc, 0xed, 0xd2, 0x17,
-0x57, 0x40, 0xc0, 0x60, 0x94, 0x73, 0xb8, 0x75, 0xc2, 0x67, 0x25, 0x4d, 0x07, 0x2b, 0x22, 0x06,
-0xad, 0xe2, 0xf5, 0xc3, 0x95, 0xac, 0x64, 0x9e, 0xfe, 0x9a, 0x18, 0xa3, 0x0d, 0xb7, 0x91, 0xd5,
-0x30, 0xfb, 0xe1, 0x22, 0x87, 0x46, 0xf8, 0x60, 0x1a, 0x6e, 0x70, 0x6c, 0x00, 0x5d, 0x01, 0x43,
-0xbb, 0x22, 0x44, 0x00, 0x1b, 0xdf, 0xdb, 0xc2, 0x35, 0xae, 0x68, 0xa3, 0xd8, 0xa3, 0x81, 0xaf,
-0xb1, 0xc5, 0xaf, 0xe3, 0xd0, 0x05, 0x79, 0x27, 0x61, 0x44, 0xac, 0x58, 0xb4, 0x61, 0x52, 0x5e,
-0x71, 0x4f, 0xa5, 0x37, 0x30, 0x1a, 0xb8, 0xfa, 0x05, 0xdd, 0xd3, 0xc4, 0xd3, 0xb4, 0xd9, 0xae,
-0x2f, 0xb3, 0x39, 0xc1, 0x8f, 0xd6, 0x28, 0xf0, 0x30, 0x0b, 0xb5, 0x24, 0x41, 0x3a, 0x7d, 0x49,
-0xd9, 0x4f, 0xad, 0x4c, 0xcd, 0x3f, 0x03, 0x2b, 0x82, 0x11, 0x96, 0xf6, 0x4b, 0xde, 0xe3, 0xcb,
-0xd7, 0xc1, 0x83, 0xc0, 0xa1, 0xc7, 0xa9, 0xd4, 0x82, 0xe5, 0xde, 0xf7, 0x30, 0x0a, 0xbe, 0x1b,
-0x0f, 0x2b, 0x79, 0x36, 0xbb, 0x3b, 0x91, 0x39, 0x79, 0x2f, 0xe7, 0x1e, 0x96, 0x0a, 0xe2, 0xf5,
-0x8c, 0xe4, 0xf1, 0xd8, 0x4d, 0xd4, 0x03, 0xd6, 0x43, 0xdc, 0x4e, 0xe5, 0x1a, 0xef, 0x3c, 0xf9,
-0x6c, 0x03, 0x08, 0x0e, 0x72, 0x18, 0x2f, 0x21, 0x1d, 0x26, 0xab, 0x25, 0x69, 0x1f, 0x84, 0x14,
-0xb4, 0x07, 0x6c, 0xfb, 0x5a, 0xf2, 0x3c, 0xed, 0x18, 0xec, 0xb6, 0xed, 0x40, 0xf0, 0xba, 0xf2,
-0x92, 0xf4, 0x30, 0xf6, 0xd4, 0xf8, 0x02, 0xfd, 0xee, 0x02, 0x6c, 0x09, 0xbc, 0x0e, 0x5e, 0x11,
-0xfa, 0x10, 0x32, 0x0e, 0x84, 0x0a, 0x78, 0x07, 0x8e, 0x05, 0xf0, 0x04, 0x9e, 0x04, 0x86, 0x03,
-0xc8, 0x00, 0x48, 0xfc, 0x32, 0xf6, 0x20, 0xf0, 0x90, 0xeb, 0xe0, 0xe9, 0xe8, 0xeb, 0xfe, 0xf0,
-0x40, 0xf8, 0x4e, 0x00, 0xce, 0x07, 0x7e, 0x0e, 0x2a, 0x14, 0x98, 0x18, 0x8e, 0x1b, 0x3e, 0x1c,
-0x62, 0x1a, 0x54, 0x15, 0xf6, 0x0c, 0xc8, 0x01, 0x9a, 0xf4, 0x48, 0xe7, 0xd3, 0xdb, 0xcd, 0xd4,
-0xd9, 0xd3, 0x6b, 0xd9, 0xd0, 0xe4, 0x18, 0xf4, 0xc6, 0x04, 0xb6, 0x14, 0x2b, 0x22, 0xe5, 0x2b,
-0x45, 0x31, 0x99, 0x31, 0x43, 0x2d, 0x19, 0x24, 0x72, 0x16, 0xa6, 0x04, 0x32, 0xf0, 0x57, 0xdb,
-0x81, 0xc9, 0x55, 0xbe, 0x83, 0xbc, 0x11, 0xc5, 0x99, 0xd6, 0xf2, 0xed, 0x14, 0x07, 0x69, 0x1e,
-0x05, 0x31, 0xe9, 0x3d, 0xf7, 0x43, 0x97, 0x43, 0xb1, 0x3c, 0x65, 0x2f, 0x0e, 0x1c, 0x6e, 0x03,
-0x7e, 0xe7, 0x09, 0xcc, 0xaf, 0xb5, 0x38, 0xa9, 0xae, 0xa9, 0x41, 0xb7, 0xd9, 0xcf, 0x96, 0xee,
-0x46, 0x0e, 0x13, 0x2a, 0x8f, 0x3f, 0x3b, 0x4d, 0x29, 0x53, 0xcf, 0x50, 0x9d, 0x46, 0x7d, 0x34,
-0x16, 0x1b, 0xee, 0xfb, 0xf7, 0xd9, 0x83, 0xba, 0xd8, 0xa2, 0x3e, 0x98, 0xae, 0x9c, 0xf9, 0xaf,
-0x51, 0xce, 0x24, 0xf2, 0x84, 0x15, 0x05, 0x34, 0x59, 0x4b, 0x22, 0x5a, 0xb8, 0x5f, 0x78, 0x5b,
-0x55, 0x4d, 0xb3, 0x35, 0xe8, 0x15, 0xc0, 0xf0, 0xe5, 0xca, 0x44, 0xaa, 0x8a, 0x94, 0xda, 0x8d,
-0x4c, 0x97, 0x3b, 0xaf, 0xab, 0xd1, 0x36, 0xf8, 0x9f, 0x1d, 0x61, 0x3d, 0x2c, 0x55, 0xa4, 0x63,
-0x18, 0x67, 0x3a, 0x5f, 0x0b, 0x4c, 0xfd, 0x2e, 0xa4, 0x0a, 0x0b, 0xe3, 0x6b, 0xbd, 0xa8, 0x9f,
-0x52, 0x8e, 0xe8, 0x8b, 0xec, 0x98, 0x29, 0xb3, 0xc1, 0xd6, 0x0e, 0xfe, 0xd9, 0x23, 0xfd, 0x43,
-0xbe, 0x5b, 0x90, 0x68, 0x08, 0x69, 0xd4, 0x5c, 0xed, 0x44, 0x41, 0x24, 0x4e, 0xfe, 0xc5, 0xd7,
-0xb9, 0xb5, 0x90, 0x9c, 0xaa, 0x8f, 0xb4, 0x90, 0x5e, 0x9f, 0x51, 0xba, 0xcf, 0xdd, 0xec, 0x04,
-0x7d, 0x2a, 0xd7, 0x49, 0x96, 0x5f, 0xe6, 0x68, 0xa2, 0x64, 0x65, 0x53, 0xfd, 0x37, 0x4a, 0x16,
-0x72, 0xf2, 0x9b, 0xd0, 0x69, 0xb4, 0xda, 0xa0, 0xf4, 0x97, 0xcc, 0x9a, 0xc8, 0xa9, 0x17, 0xc4,
-0x80, 0xe6, 0x30, 0x0c, 0x9d, 0x2f, 0xf3, 0x4b, 0x66, 0x5d, 0xb2, 0x61, 0xc2, 0x58, 0xd1, 0x44,
-0x99, 0x29, 0xee, 0x0a, 0x6a, 0xec, 0xe1, 0xd0, 0x8b, 0xba, 0x3e, 0xab, 0x9e, 0xa4, 0xe2, 0xa7,
-0x57, 0xb6, 0x15, 0xcf, 0x44, 0xef, 0xf6, 0x11, 0x53, 0x31, 0xa5, 0x48, 0xa7, 0x54, 0x1d, 0x54,
-0x9d, 0x48, 0x15, 0x35, 0x11, 0x1d, 0x1a, 0x04, 0x1a, 0xec, 0x01, 0xd7, 0xdf, 0xc5, 0x15, 0xba,
-0xef, 0xb4, 0x75, 0xb8, 0x69, 0xc5, 0x87, 0xdb, 0x84, 0xf7, 0x72, 0x14, 0x51, 0x2d, 0xdf, 0x3d,
-0x57, 0x44, 0xc1, 0x40, 0x87, 0x35, 0x3b, 0x25, 0x08, 0x13, 0xbe, 0x00, 0xbc, 0xef, 0xfd, 0xe0,
-0xd5, 0xd4, 0x61, 0xcc, 0xeb, 0xc8, 0xdf, 0xcb, 0x5d, 0xd6, 0x68, 0xe7, 0x54, 0xfc, 0x32, 0x11,
-0x07, 0x22, 0x39, 0x2c, 0x01, 0x2f, 0x27, 0x2b, 0xc3, 0x22, 0xea, 0x17, 0x40, 0x0c, 0x34, 0x01,
-0x08, 0xf7, 0x78, 0xee, 0x44, 0xe7, 0xef, 0xe1, 0x4f, 0xdf, 0x3b, 0xe0, 0xb6, 0xe5, 0x00, 0xef,
-0xbe, 0xfa, 0x74, 0x06, 0xec, 0x0f, 0x9c, 0x15, 0x2e, 0x17, 0x7a, 0x15, 0x90, 0x11, 0xf6, 0x0c,
-0x6e, 0x08, 0xb8, 0x04, 0xf2, 0x01, 0xae, 0xff, 0x28, 0xfd, 0x12, 0xfa, 0x46, 0xf6, 0x96, 0xf2,
-0x30, 0xf0, 0x88, 0xef, 0x86, 0xf1, 0xfe, 0xf4, 0x18, 0xf9, 0xc8, 0xfc, 0x6a, 0xff, 0x52, 0x01,
-0x1e, 0x03, 0x48, 0x05, 0x74, 0x08, 0x9e, 0x0c, 0x02, 0x11, 0x82, 0x14, 0x52, 0x15, 0x42, 0x12,
-0xf6, 0x0a, 0x7e, 0x00, 0xf6, 0xf4, 0x02, 0xeb, 0x60, 0xe4, 0xb3, 0xe1, 0x6d, 0xe2, 0x8e, 0xe5,
-0x30, 0xea, 0x62, 0xf0, 0xe8, 0xf7, 0x62, 0x01, 0x6e, 0x0c, 0x60, 0x18, 0x7f, 0x23, 0x3f, 0x2b,
-0x19, 0x2d, 0x59, 0x27, 0x3c, 0x1a, 0xbc, 0x07, 0xb6, 0xf3, 0xd7, 0xe1, 0xeb, 0xd4, 0x0d, 0xce,
-0xeb, 0xcc, 0x65, 0xd0, 0xd1, 0xd7, 0xd1, 0xe2, 0x4c, 0xf1, 0xbe, 0x02, 0xfa, 0x15, 0xb5, 0x28,
-0x8b, 0x38, 0x83, 0x41, 0x5b, 0x41, 0xe1, 0x36, 0x33, 0x23, 0xe0, 0x09, 0x08, 0xef, 0x2d, 0xd7,
-0x93, 0xc5, 0xc7, 0xbb, 0x7d, 0xb9, 0x67, 0xbe, 0x6b, 0xc9, 0x55, 0xda, 0x5a, 0xf0, 0xb4, 0x09,
-0xf1, 0x23, 0xc1, 0x3b, 0x07, 0x4d, 0xab, 0x54, 0x61, 0x50, 0x57, 0x40, 0xd3, 0x26, 0xa6, 0x07,
-0x74, 0xe7, 0x0b, 0xcb, 0xe1, 0xb5, 0xf8, 0xa9, 0x1e, 0xa8, 0x57, 0xaf, 0xcf, 0xbf, 0xfb, 0xd7,
-0xd4, 0xf5, 0x1c, 0x16, 0xd3, 0x34, 0xe5, 0x4d, 0xce, 0x5d, 0xf6, 0x61, 0x5c, 0x59, 0x11, 0x45,
-0x6f, 0x27, 0x62, 0x04, 0x45, 0xe0, 0xf7, 0xbf, 0x0a, 0xa8, 0x38, 0x9b, 0x9c, 0x9a, 0x52, 0xa6,
-0xfb, 0xbc, 0x57, 0xdc, 0x60, 0x00, 0x65, 0x24, 0xe9, 0x43, 0x64, 0x5b, 0x00, 0x68, 0x3e, 0x68,
-0x1a, 0x5c, 0x97, 0x44, 0x23, 0x24, 0x20, 0xfe, 0x2d, 0xd7, 0xab, 0xb4, 0xcc, 0x9b, 0x4c, 0x90,
-0x6e, 0x93, 0xa6, 0xa4, 0x8b, 0xc1, 0xf8, 0xe5, 0xac, 0x0c, 0xa9, 0x30, 0x03, 0x4e, 0x0a, 0x62,
-0x3a, 0x6b, 0x84, 0x68, 0xf6, 0x59, 0x8f, 0x40, 0x45, 0x1e, 0x54, 0xf6, 0xcb, 0xcd, 0xec, 0xaa,
-0xc0, 0x93, 0xd0, 0x8b, 0x14, 0x94, 0xb2, 0xaa, 0xbf, 0xcb, 0xe8, 0xf1, 0x8e, 0x17, 0x5f, 0x38,
-0x9b, 0x51, 0xf4, 0x61, 0x04, 0x68, 0x54, 0x63, 0x7d, 0x53, 0x3f, 0x39, 0x56, 0x16, 0x26, 0xee,
-0x59, 0xc6, 0xba, 0xa5, 0x58, 0x92, 0x14, 0x8f, 0xdc, 0x9b, 0x87, 0xb5, 0x47, 0xd7, 0x98, 0xfb,
-0x8d, 0x1d, 0x13, 0x3a, 0x73, 0x4f, 0x8e, 0x5c, 0x74, 0x60, 0x32, 0x5a, 0x7d, 0x49, 0xcf, 0x2e,
-0x40, 0x0c, 0xc2, 0xe5, 0x7f, 0xc1, 0x12, 0xa6, 0x5c, 0x98, 0x24, 0x9a, 0x98, 0xa9, 0x63, 0xc3,
-0x8b, 0xe2, 0x54, 0x02, 0x4d, 0x1f, 0x45, 0x37, 0x01, 0x49, 0x69, 0x53, 0x40, 0x55, 0x8f, 0x4d,
-0x7d, 0x3c, 0xa1, 0x22, 0x88, 0x02, 0xbb, 0xe0, 0x95, 0xc2, 0xb1, 0xad, 0x4a, 0xa5, 0xe4, 0xa9,
-0xaf, 0xb9, 0xfd, 0xd0, 0xe2, 0xeb, 0xa8, 0x06, 0x61, 0x1e, 0x6d, 0x31, 0xf5, 0x3e, 0x81, 0x45,
-0x71, 0x44, 0x85, 0x3b, 0x0f, 0x2b, 0xd0, 0x14, 0x06, 0xfb, 0x59, 0xe1, 0xe7, 0xcb, 0xfb, 0xbd,
-0x75, 0xb9, 0xa3, 0xbe, 0xab, 0xcb, 0x0b, 0xde, 0xa4, 0xf2, 0xb6, 0x06, 0x42, 0x18, 0xe9, 0x25,
-0x95, 0x2e, 0xe5, 0x31, 0x7f, 0x2f, 0xe7, 0x27, 0x1a, 0x1c, 0xee, 0x0c, 0xfe, 0xfb, 0x3e, 0xeb,
-0x2d, 0xdd, 0x89, 0xd3, 0xeb, 0xcf, 0xc1, 0xd2, 0x97, 0xdb, 0x42, 0xe8, 0x9e, 0xf6, 0x4c, 0x04,
-0x88, 0x0f, 0x56, 0x17, 0x36, 0x1b, 0x88, 0x1b, 0x5e, 0x19, 0xa4, 0x15, 0xc4, 0x10, 0xda, 0x0a,
-0x8c, 0x03, 0x22, 0xfb, 0x80, 0xf2, 0x6c, 0xeb, 0x6a, 0xe7, 0x82, 0xe7, 0x46, 0xeb, 0x7c, 0xf1,
-0x2a, 0xf8, 0xdc, 0xfd, 0x78, 0x01, 0xd6, 0x02, 0xce, 0x02, 0xd4, 0x02, 0x32, 0x04, 0x60, 0x07,
-0x8a, 0x0b, 0x18, 0x0f, 0x3e, 0x10, 0x32, 0x0e, 0x5c, 0x09, 0x1a, 0x03, 0x72, 0xfd, 0x70, 0xf9,
-0x46, 0xf7, 0x04, 0xf6, 0xb6, 0xf4, 0x6a, 0xf2, 0x76, 0xef, 0x84, 0xec, 0x5a, 0xeb, 0xbc, 0xed,
-0x44, 0xf4, 0x98, 0xfe, 0xd4, 0x0a, 0x2c, 0x16, 0x57, 0x1e, 0xa9, 0x21, 0x09, 0x20, 0x9c, 0x1a,
-0xec, 0x12, 0x2e, 0x0a, 0xe0, 0x00, 0xd2, 0xf6, 0x32, 0xec, 0x03, 0xe2, 0x45, 0xd9, 0x63, 0xd4,
-0xb9, 0xd4, 0x83, 0xdb, 0xc0, 0xe8, 0xac, 0xfa, 0x88, 0x0e, 0x0b, 0x21, 0x07, 0x2f, 0x67, 0x36,
-0x9d, 0x36, 0x15, 0x30, 0x7f, 0x24, 0x3e, 0x15, 0x64, 0x03, 0x5e, 0xf0, 0x9d, 0xdd, 0x95, 0xcd,
-0xbf, 0xc2, 0xab, 0xbe, 0xcf, 0xc2, 0x21, 0xcf, 0x9d, 0xe2, 0x1a, 0xfb, 0x6e, 0x15, 0xb9, 0x2d,
-0xa9, 0x40, 0x21, 0x4b, 0xc1, 0x4b, 0xc9, 0x42, 0x6d, 0x31, 0x1e, 0x1a, 0x7e, 0xff, 0x68, 0xe4,
-0x4b, 0xcc, 0xfb, 0xb9, 0xb5, 0xaf, 0xbb, 0xae, 0xf1, 0xb6, 0x0b, 0xc8, 0x8f, 0xe0, 0x36, 0xfe,
-0x8b, 0x1d, 0xaf, 0x3a, 0x09, 0x51, 0x3c, 0x5d, 0xac, 0x5c, 0x59, 0x4f, 0x73, 0x37, 0x86, 0x18,
-0xe6, 0xf6, 0xfb, 0xd6, 0x9f, 0xbc, 0xb0, 0xaa, 0x94, 0xa2, 0x7c, 0xa4, 0x3d, 0xb0, 0x19, 0xc5,
-0xe1, 0xe1, 0xe0, 0x03, 0xa1, 0x27, 0x47, 0x48, 0xd2, 0x60, 0x4c, 0x6c, 0x54, 0x68, 0x3c, 0x55,
-0x95, 0x36, 0x8e, 0x11, 0xac, 0xeb, 0xfb, 0xc9, 0xf7, 0xaf, 0xee, 0x9f, 0x5a, 0x9a, 0x2e, 0x9f,
-0x15, 0xae, 0x87, 0xc6, 0x0c, 0xe7, 0xda, 0x0c, 0x85, 0x33, 0xa8, 0x55, 0x4e, 0x6d, 0x94, 0x75,
-0x74, 0x6c, 0xbf, 0x53, 0x67, 0x30, 0xaa, 0x08, 0x01, 0xe2, 0xe7, 0xc0, 0xae, 0xa8, 0xb4, 0x9a,
-0x7e, 0x97, 0xee, 0x9e, 0xe1, 0xb0, 0xe7, 0xcc, 0xd4, 0xf0, 0xd8, 0x18, 0xf7, 0x3f, 0x32, 0x60,
-0xbc, 0x73, 0xac, 0x76, 0x4a, 0x68, 0x09, 0x4c, 0x5d, 0x27, 0xe8, 0xff, 0xdb, 0xda, 0x0f, 0xbc,
-0x18, 0xa6, 0x80, 0x9a, 0xb0, 0x99, 0xec, 0xa3, 0x19, 0xb9, 0xbf, 0xd7, 0xf6, 0xfc, 0x45, 0x24,
-0x25, 0x48, 0x62, 0x63, 0x62, 0x71, 0x8a, 0x6f, 0xa8, 0x5e, 0xfb, 0x41, 0xbb, 0x1e, 0xe0, 0xf9,
-0x97, 0xd7, 0x7b, 0xbb, 0x50, 0xa8, 0x70, 0x9f, 0xa6, 0xa1, 0xe3, 0xae, 0x27, 0xc6, 0x66, 0xe5,
-0xa6, 0x08, 0x49, 0x2b, 0x3b, 0x49, 0xfe, 0x5d, 0xde, 0x66, 0x62, 0x62, 0x6f, 0x51, 0x13, 0x37,
-0x20, 0x17, 0xc0, 0xf5, 0xf1, 0xd6, 0x6d, 0xbe, 0x6d, 0xae, 0x20, 0xa9, 0x79, 0xae, 0xed, 0xbd,
-0x8b, 0xd5, 0xec, 0xf1, 0xce, 0x0f, 0x91, 0x2b, 0x3d, 0x42, 0x5d, 0x51, 0x1a, 0x57, 0x5f, 0x52,
-0x97, 0x43, 0xa5, 0x2c, 0xa0, 0x10, 0x9c, 0xf3, 0x57, 0xd9, 0x51, 0xc5, 0x31, 0xba, 0xc7, 0xb8,
-0xcf, 0xc0, 0x47, 0xd0, 0xba, 0xe4, 0x48, 0xfb, 0x42, 0x11, 0xe3, 0x24, 0xcb, 0x34, 0xa5, 0x3f,
-0xb9, 0x43, 0xff, 0x3f, 0x13, 0x34, 0x55, 0x21, 0x56, 0x0a, 0xe6, 0xf2, 0xdd, 0xde, 0x25, 0xd1,
-0x3b, 0xcb, 0x2b, 0xcd, 0x9d, 0xd5, 0x39, 0xe2, 0xa2, 0xf0, 0xe8, 0xfe, 0x62, 0x0c, 0x7e, 0x18,
-0xed, 0x22, 0xa3, 0x2a, 0x5b, 0x2e, 0x9f, 0x2c, 0x83, 0x24, 0x24, 0x17, 0xce, 0x06, 0xfe, 0xf6,
-0x74, 0xea, 0x29, 0xe3, 0x87, 0xe1, 0x7e, 0xe4, 0x40, 0xea, 0xba, 0xf0, 0xde, 0xf6, 0x30, 0xfc,
-0x46, 0x01, 0xd8, 0x06, 0xf2, 0x0c, 0x2c, 0x13, 0xb2, 0x17, 0x32, 0x19, 0xb2, 0x16, 0xb0, 0x10,
-0xf0, 0x08, 0x8e, 0x01, 0x74, 0xfc, 0x14, 0xfa, 0x0e, 0xfa, 0xd2, 0xfa, 0x2e, 0xfb, 0x1e, 0xfa,
-0xb6, 0xf7, 0xc8, 0xf4, 0x9e, 0xf2, 0xc2, 0xf2, 0xa8, 0xf5, 0xe2, 0xfa, 0x68, 0x01, 0xb2, 0x07,
-0xaa, 0x0c, 0xd2, 0x0f, 0x76, 0x11, 0x40, 0x12, 0x96, 0x12, 0x1e, 0x12, 0xac, 0x10, 0x56, 0x0d,
-0x96, 0x07, 0x86, 0xff, 0xb4, 0xf5, 0xa8, 0xeb, 0x3b, 0xe3, 0x4f, 0xde, 0x31, 0xde, 0x93, 0xe3,
-0x5c, 0xed, 0x2c, 0xfa, 0xe8, 0x07, 0x8e, 0x14, 0xe5, 0x1e, 0xc7, 0x25, 0x23, 0x29, 0xbf, 0x28,
-0x79, 0x24, 0x49, 0x1c, 0x60, 0x10, 0x6c, 0x01, 0x6c, 0xf0, 0x61, 0xdf, 0xcf, 0xd0, 0xcd, 0xc7,
-0x7d, 0xc6, 0xf7, 0xcd, 0x99, 0xdd, 0xc4, 0xf2, 0xe6, 0x09, 0x57, 0x1f, 0x25, 0x30, 0xf3, 0x3a,
-0x01, 0x3f, 0xa9, 0x3c, 0x5f, 0x34, 0xeb, 0x26, 0xcc, 0x14, 0x02, 0xff, 0x34, 0xe7, 0xf9, 0xcf,
-0xd3, 0xbc, 0xa5, 0xb1, 0xa1, 0xb1, 0xd5, 0xbd, 0xcb, 0xd4, 0x5e, 0xf2, 0x6e, 0x11, 0xd9, 0x2c,
-0x4b, 0x41, 0xf5, 0x4c, 0x11, 0x50, 0x05, 0x4b, 0x05, 0x3f, 0xab, 0x2c, 0x00, 0x15, 0x28, 0xf9,
-0x6b, 0xdb, 0x6f, 0xbf, 0xf0, 0xa9, 0xd6, 0x9f, 0xa6, 0xa3, 0xe9, 0xb5, 0xad, 0xd3, 0x98, 0xf7,
-0x48, 0x1b, 0x73, 0x39, 0xf3, 0x4e, 0x94, 0x5a, 0x84, 0x5c, 0x32, 0x55, 0x95, 0x45, 0xab, 0x2e,
-0x5c, 0x11, 0xa6, 0xef, 0xef, 0xcc, 0x61, 0xae, 0x80, 0x99, 0x84, 0x92, 0x7a, 0x9b, 0x6b, 0xb3,
-0x4b, 0xd6, 0xf8, 0xfd, 0x09, 0x24, 0x71, 0x43, 0x72, 0x59, 0xe0, 0x64, 0x5c, 0x65, 0x24, 0x5b,
-0x05, 0x47, 0x67, 0x2a, 0x72, 0x07, 0x7d, 0xe1, 0x3d, 0xbd, 0x62, 0xa0, 0xca, 0x8f, 0x4c, 0x8e,
-0x50, 0x9c, 0xd3, 0xb7, 0xd9, 0xdc, 0x4e, 0x05, 0x5d, 0x2b, 0x69, 0x4a, 0xfa, 0x5f, 0x56, 0x6a,
-0x86, 0x68, 0x8e, 0x5a, 0xe1, 0x41, 0x07, 0x21, 0x20, 0xfb, 0x9b, 0xd4, 0x9d, 0xb2, 0x4a, 0x9a,
-0xd6, 0x8e, 0x9a, 0x91, 0x46, 0xa2, 0xe5, 0xbe, 0xbd, 0xe3, 0x50, 0x0b, 0x71, 0x30, 0xc7, 0x4e,
-0x2a, 0x63, 0x4c, 0x6b, 0xe8, 0x65, 0xe5, 0x53, 0x69, 0x37, 0x3c, 0x14, 0x8e, 0xee, 0x25, 0xcb,
-0x55, 0xae, 0x8e, 0x9b, 0x7e, 0x94, 0xd4, 0x99, 0x2a, 0xab, 0x1d, 0xc7, 0x6c, 0xea, 0x88, 0x10,
-0x27, 0x34, 0x9b, 0x50, 0x30, 0x62, 0x80, 0x66, 0x0c, 0x5d, 0x8b, 0x47, 0x8b, 0x29, 0xa4, 0x07,
-0x12, 0xe6, 0x8f, 0xc8, 0x2f, 0xb2, 0x70, 0xa4, 0x6c, 0xa0, 0x82, 0xa6, 0x3d, 0xb7, 0x4b, 0xd1,
-0x4e, 0xf2, 0x68, 0x15, 0xa3, 0x35, 0x0d, 0x4e, 0xdc, 0x5a, 0x74, 0x5a, 0x9f, 0x4d, 0x61, 0x37,
-0x7a, 0x1b, 0x50, 0xfe, 0x1f, 0xe3, 0xbb, 0xcc, 0x4b, 0xbc, 0x73, 0xb2, 0x23, 0xb0, 0x25, 0xb6,
-0x2d, 0xc5, 0x5d, 0xdc, 0x50, 0xf9, 0xa8, 0x17, 0x71, 0x32, 0x0b, 0x45, 0x79, 0x4c, 0x8d, 0x48,
-0x05, 0x3b, 0xfd, 0x26, 0x64, 0x10, 0x2e, 0xfa, 0xa4, 0xe6, 0xe3, 0xd6, 0x71, 0xcb, 0xb3, 0xc4,
-0x65, 0xc3, 0x81, 0xc8, 0xa3, 0xd4, 0x62, 0xe7, 0x38, 0xfe, 0x8a, 0x15, 0xdd, 0x28, 0xfd, 0x34,
-0x1f, 0x38, 0x05, 0x33, 0xbb, 0x27, 0x30, 0x19, 0xd4, 0x09, 0x7a, 0xfb, 0x44, 0xef, 0x6e, 0xe5,
-0x43, 0xde, 0xa7, 0xd9, 0x9f, 0xd8, 0xa7, 0xdb, 0x4b, 0xe3, 0x04, 0xef, 0x8a, 0xfd, 0x30, 0x0c,
-0x18, 0x18, 0x4b, 0x1f, 0xe3, 0x20, 0xcf, 0x1d, 0x6e, 0x17, 0x7e, 0x0f, 0xa0, 0x07, 0xce, 0x00,
-0x28, 0xfb, 0x96, 0xf6, 0x10, 0xf3, 0x44, 0xf0, 0x5c, 0xee, 0x94, 0xed, 0x54, 0xee, 0x6c, 0xf1,
-0x5c, 0xf6, 0x4a, 0xfc, 0x20, 0x02, 0xc6, 0x06, 0x92, 0x09, 0x90, 0x0a, 0x3a, 0x0a, 0x6c, 0x09,
-0x24, 0x09, 0x7c, 0x09, 0x5a, 0x0a, 0x24, 0x0b, 0xda, 0x0a, 0x58, 0x08, 0x2a, 0x03, 0xb6, 0xfb,
-0x84, 0xf3, 0xaa, 0xec, 0x76, 0xe8, 0xc8, 0xe7, 0x10, 0xea, 0x5e, 0xee, 0x9e, 0xf3, 0x46, 0xf9,
-0x22, 0xff, 0xac, 0x05, 0x2e, 0x0d, 0x06, 0x15, 0x7f, 0x1c, 0xad, 0x21, 0xc1, 0x22, 0x33, 0x1e,
-0xb4, 0x13, 0x5a, 0x04, 0x0a, 0xf3, 0x57, 0xe3, 0xf3, 0xd7, 0x8f, 0xd2, 0x19, 0xd3, 0x77, 0xd8,
-0x2d, 0xe1, 0x10, 0xec, 0xae, 0xf8, 0xa8, 0x06, 0xc2, 0x15, 0x8b, 0x24, 0x07, 0x31, 0x8d, 0x38,
-0x91, 0x38, 0x59, 0x2f, 0xb5, 0x1d, 0x36, 0x06, 0x02, 0xed, 0x7f, 0xd6, 0x55, 0xc6, 0x61, 0xbe,
-0xbb, 0xbe, 0xe1, 0xc5, 0x2b, 0xd2, 0xc5, 0xe2, 0x54, 0xf6, 0x1a, 0x0c, 0x4f, 0x22, 0xd3, 0x36,
-0x1b, 0x46, 0x21, 0x4d, 0x39, 0x49, 0x49, 0x3a, 0x23, 0x22, 0x0c, 0x04, 0xe0, 0xe4, 0x99, 0xc9,
-0xfd, 0xb5, 0x5d, 0xac, 0xe1, 0xac, 0x4f, 0xb6, 0x5d, 0xc7, 0x77, 0xde, 0xb8, 0xf9, 0xe0, 0x16,
-0xf9, 0x32, 0x35, 0x4a, 0x28, 0x59, 0xb8, 0x5c, 0x99, 0x53, 0xeb, 0x3e, 0x53, 0x21, 0xca, 0xfe,
-0xef, 0xdb, 0x97, 0xbd, 0xea, 0xa7, 0x9c, 0x9d, 0x3a, 0x9f, 0xef, 0xab, 0xa3, 0xc2, 0xb3, 0xe0,
-0xce, 0x02, 0x31, 0x25, 0x9b, 0x43, 0x44, 0x5a, 0x06, 0x66, 0x02, 0x65, 0x42, 0x57, 0xad, 0x3e,
-0xef, 0x1d, 0x8e, 0xf8, 0x03, 0xd3, 0x87, 0xb2, 0xd6, 0x9b, 0xec, 0x91, 0x16, 0x96, 0xc0, 0xa7,
-0x9b, 0xc4, 0x04, 0xe9, 0xe4, 0x0f, 0xfd, 0x33, 0x45, 0x51, 0x76, 0x64, 0xba, 0x6b, 0x9c, 0x66,
-0xba, 0x55, 0xdb, 0x3a, 0x7a, 0x18, 0xb4, 0xf1, 0xe1, 0xca, 0xd2, 0xa9, 0x98, 0x93, 0x04, 0x8c,
-0x7c, 0x94, 0x5f, 0xab, 0x69, 0xcd, 0xea, 0xf4, 0x34, 0x1c, 0x23, 0x3e, 0x98, 0x57, 0x78, 0x66,
-0x06, 0x6a, 0x70, 0x62, 0x11, 0x50, 0xb5, 0x34, 0xc6, 0x11, 0x60, 0xea, 0xb1, 0xc3, 0xb8, 0xa3,
-0x04, 0x90, 0x72, 0x8c, 0x9c, 0x99, 0xc5, 0xb4, 0x3d, 0xd9, 0x68, 0x00, 0xbd, 0x24, 0xab, 0x42,
-0x66, 0x57, 0x54, 0x62, 0x20, 0x63, 0xd4, 0x59, 0x15, 0x47, 0xb7, 0x2b, 0xde, 0x08, 0xa3, 0xe2,
-0x4f, 0xbe, 0x06, 0xa2, 0x4e, 0x93, 0x0c, 0x95, 0xf8, 0xa5, 0xbf, 0xc2, 0xb8, 0xe5, 0xe6, 0x08,
-0x57, 0x28, 0xc5, 0x40, 0x3b, 0x51, 0xfc, 0x58, 0x08, 0x58, 0x17, 0x4e, 0x9f, 0x3b, 0xff, 0x20,
-0x66, 0x00, 0xb3, 0xdd, 0x25, 0xbe, 0x8c, 0xa7, 0x12, 0x9e, 0x2e, 0xa3, 0x2f, 0xb5, 0x27, 0xd0,
-0xf0, 0xee, 0xdc, 0x0c, 0x85, 0x26, 0x53, 0x3a, 0xff, 0x46, 0x05, 0x4c, 0x33, 0x49, 0xa1, 0x3e,
-0x53, 0x2c, 0x16, 0x14, 0x34, 0xf8, 0xf5, 0xdb, 0x3b, 0xc4, 0xe5, 0xb4, 0x5d, 0xb0, 0x67, 0xb7,
-0xcb, 0xc7, 0x0d, 0xde, 0xa2, 0xf6, 0xbe, 0x0d, 0x05, 0x21, 0x69, 0x2f, 0xcd, 0x37, 0x05, 0x3a,
-0x2d, 0x36, 0x33, 0x2c, 0x23, 0x1d, 0xdc, 0x0a, 0xb0, 0xf6, 0x41, 0xe3, 0x55, 0xd3, 0x11, 0xc9,
-0x57, 0xc6, 0xa7, 0xcb, 0x7f, 0xd7, 0xce, 0xe7, 0x8c, 0xf9, 0x2a, 0x0a, 0x8e, 0x17, 0x3f, 0x20,
-0x65, 0x24, 0x51, 0x24, 0x5f, 0x20, 0xa0, 0x19, 0x06, 0x11, 0x48, 0x07, 0xf0, 0xfc, 0x6e, 0xf2,
-0x9a, 0xe8, 0x41, 0xe1, 0xe3, 0xdd, 0x7b, 0xdf, 0x6c, 0xe5, 0x64, 0xee, 0x8e, 0xf8, 0xfa, 0x01,
-0x38, 0x09, 0x76, 0x0d, 0x7a, 0x0e, 0x6e, 0x0d, 0x96, 0x0b, 0x02, 0x0a, 0x4c, 0x09, 0xf2, 0x08,
-0xd6, 0x07, 0xa0, 0x04, 0x9c, 0xff, 0xea, 0xf9, 0xd0, 0xf5, 0x8a, 0xf3, 0x98, 0xf4, 0x5a, 0xf6,
-0xdc, 0xf6, 0x64, 0xf6, 0xca, 0xf5, 0x5a, 0xf7, 0x5c, 0xfb, 0x6a, 0x02, 0x22, 0x0b, 0xbc, 0x13,
-0x5a, 0x19, 0x96, 0x1a, 0x18, 0x17, 0xfc, 0x0f, 0xc2, 0x07, 0xb6, 0xff, 0x90, 0xf8, 0x50, 0xf2,
-0x58, 0xec, 0x60, 0xe6, 0x53, 0xe1, 0x4f, 0xde, 0x49, 0xdf, 0x5e, 0xe5, 0x9c, 0xf0, 0xbc, 0xff,
-0x90, 0x10, 0xef, 0x1f, 0xdb, 0x2a, 0x93, 0x2f, 0x33, 0x2d, 0x25, 0x25, 0xfa, 0x18, 0x6c, 0x0a,
-0x00, 0xfb, 0x98, 0xeb, 0xff, 0xdc, 0xe1, 0xd0, 0x09, 0xc9, 0x1b, 0xc7, 0x7b, 0xcc, 0x13, 0xd9,
-0xea, 0xeb, 0xa8, 0x02, 0x34, 0x1a, 0x09, 0x2f, 0xff, 0x3d, 0xb5, 0x44, 0x4d, 0x42, 0x5d, 0x37,
-0x9f, 0x25, 0x74, 0x0f, 0x24, 0xf7, 0x45, 0xdf, 0x7b, 0xca, 0x4b, 0xbb, 0x03, 0xb4, 0xb1, 0xb5,
-0x5b, 0xc0, 0x19, 0xd3, 0xf2, 0xeb, 0x0e, 0x08, 0x49, 0x24, 0x13, 0x3d, 0xdd, 0x4e, 0xfa, 0x56,
-0x6f, 0x53, 0x8b, 0x44, 0x3f, 0x2c, 0xe2, 0x0d, 0x80, 0xed, 0x7b, 0xcf, 0x87, 0xb7, 0x7a, 0xa8,
-0x10, 0xa4, 0xe0, 0xa9, 0x5b, 0xb9, 0xfb, 0xd0, 0x5a, 0xee, 0xb4, 0x0e, 0xc5, 0x2e, 0x8f, 0x4a,
-0x4e, 0x5e, 0x56, 0x66, 0xf2, 0x5f, 0xad, 0x4b, 0x75, 0x2c, 0x1c, 0x07, 0x7b, 0xe1, 0xdb, 0xc0,
-0x26, 0xa9, 0xa4, 0x9c, 0x66, 0x9b, 0x9c, 0xa4, 0x6b, 0xb7, 0x23, 0xd2, 0xc4, 0xf2, 0x7a, 0x16,
-0x9d, 0x39, 0x98, 0x57, 0x8a, 0x6b, 0xe0, 0x70, 0xa2, 0x65, 0x3b, 0x4b, 0x19, 0x26, 0xd6, 0xfc,
-0x83, 0xd5, 0x89, 0xb5, 0xe4, 0x9f, 0x22, 0x96, 0xcc, 0x97, 0x1a, 0xa4, 0xdf, 0xb9, 0xb3, 0xd7,
-0x56, 0xfb, 0x6b, 0x21, 0xdd, 0x45, 0x02, 0x63, 0xda, 0x73, 0x2a, 0x74, 0x40, 0x63, 0x0d, 0x44,
-0x30, 0x1c, 0x34, 0xf2, 0x4f, 0xcc, 0x05, 0xaf, 0xac, 0x9c, 0x16, 0x96, 0x9e, 0x9a, 0x78, 0xa9,
-0xb3, 0xc1, 0x99, 0xe1, 0x70, 0x06, 0x6d, 0x2c, 0xcb, 0x4e, 0x0a, 0x68, 0x96, 0x73, 0xc8, 0x6e,
-0x14, 0x5a, 0x4f, 0x39, 0x58, 0x12, 0xce, 0xea, 0x59, 0xc8, 0x57, 0xae, 0xe0, 0x9e, 0xc6, 0x9a,
-0xa0, 0xa1, 0x8f, 0xb2, 0xa7, 0xcc, 0x84, 0xed, 0x96, 0x11, 0xe5, 0x34, 0x31, 0x52, 0x7c, 0x65,
-0x76, 0x6b, 0x00, 0x63, 0x8f, 0x4d, 0xc9, 0x2e, 0x44, 0x0b, 0xf4, 0xe7, 0x6f, 0xc9, 0xe7, 0xb2,
-0x62, 0xa6, 0x98, 0xa4, 0x2d, 0xad, 0x9d, 0xbf, 0xd1, 0xd9, 0xf0, 0xf8, 0x10, 0x19, 0x5f, 0x36,
-0x05, 0x4d, 0x44, 0x5a, 0x9a, 0x5c, 0x81, 0x53, 0x8b, 0x40, 0x8d, 0x25, 0xa6, 0x06, 0xda, 0xe7,
-0xa1, 0xcd, 0xd7, 0xba, 0xd1, 0xb1, 0xcd, 0xb2, 0xa9, 0xbd, 0x8f, 0xd0, 0x7c, 0xe8, 0xa8, 0x02,
-0x6a, 0x1b, 0x83, 0x30, 0x15, 0x40, 0xdb, 0x48, 0xa3, 0x49, 0x4f, 0x42, 0x95, 0x32, 0x8b, 0x1c,
-0x14, 0x03, 0xec, 0xe9, 0x3d, 0xd5, 0xa9, 0xc7, 0x63, 0xc2, 0xf9, 0xc5, 0xfd, 0xd0, 0x3d, 0xe1,
-0x14, 0xf4, 0x72, 0x06, 0xe2, 0x16, 0x5f, 0x24, 0x33, 0x2e, 0x15, 0x34, 0x49, 0x35, 0x97, 0x30,
-0xe9, 0x25, 0xb0, 0x15, 0x80, 0x02, 0xf6, 0xef, 0x2b, 0xe1, 0x97, 0xd8, 0x47, 0xd7, 0x09, 0xdc,
-0x3a, 0xe5, 0x10, 0xf0, 0x92, 0xfa, 0xd4, 0x03, 0x80, 0x0b, 0x0e, 0x12, 0xd0, 0x17, 0xb5, 0x1c,
-0x69, 0x1f, 0xdf, 0x1e, 0xb2, 0x19, 0xa2, 0x10, 0x46, 0x05, 0x72, 0xfa, 0xac, 0xf2, 0x34, 0xef,
-0xd4, 0xef, 0xcc, 0xf2, 0x56, 0xf6, 0xe6, 0xf8, 0x16, 0xfa, 0x5e, 0xfa, 0xd2, 0xfa, 0x68, 0xfc,
-0xce, 0xff, 0xba, 0x04, 0x50, 0x0a, 0xea, 0x0e, 0x42, 0x11, 0xba, 0x10, 0x8c, 0x0e, 0xb6, 0x0b,
-0x9a, 0x09, 0x3c, 0x08, 0x00, 0x07, 0x16, 0x05, 0x40, 0x01, 0x96, 0xfb, 0xae, 0xf4, 0x0a, 0xee,
-0xec, 0xe8, 0xda, 0xe6, 0xa2, 0xe8, 0xa6, 0xee, 0x14, 0xf8, 0xf0, 0x02, 0xb6, 0x0d, 0x9a, 0x16,
-0x11, 0x1d, 0xab, 0x20, 0x73, 0x21, 0x91, 0x1f, 0xae, 0x1a, 0xe8, 0x12, 0x32, 0x08, 0x6c, 0xfb,
-0xb2, 0xed, 0xad, 0xe0, 0x6d, 0xd6, 0x09, 0xd1, 0x1f, 0xd2, 0x39, 0xda, 0xea, 0xe8, 0xae, 0xfb,
-0xa2, 0x0f, 0x93, 0x21, 0xfd, 0x2e, 0xfd, 0x36, 0x97, 0x38, 0x45, 0x34, 0xbf, 0x2a, 0xd3, 0x1c,
-0x96, 0x0b, 0x0e, 0xf8, 0xc6, 0xe3, 0x15, 0xd1, 0xb1, 0xc2, 0x07, 0xbb, 0x21, 0xbd, 0x8f, 0xc9,
-0x3d, 0xdf, 0xf8, 0xfa, 0x86, 0x17, 0xa1, 0x30, 0x97, 0x42, 0x91, 0x4b, 0x93, 0x4b, 0xb9, 0x43,
-0x07, 0x35, 0x77, 0x21, 0x1a, 0x0a, 0x5c, 0xf0, 0xb1, 0xd6, 0x89, 0xbf, 0xc1, 0xae, 0x0c, 0xa8,
-0xab, 0xad, 0x77, 0xc0, 0x15, 0xde, 0x80, 0x01, 0x5b, 0x24, 0x07, 0x41, 0xc5, 0x53, 0x9a, 0x5b,
-0xfe, 0x58, 0x2f, 0x4d, 0x6b, 0x3a, 0xe3, 0x21, 0x58, 0x05, 0x4e, 0xe6, 0xe7, 0xc7, 0x23, 0xae,
-0x7e, 0x9d, 0xb6, 0x99, 0xac, 0xa4, 0x0b, 0xbe, 0xab, 0xe1, 0x92, 0x09, 0xed, 0x2e, 0x7f, 0x4c,
-0x42, 0x5f, 0x4e, 0x66, 0xf8, 0x61, 0xb1, 0x53, 0x23, 0x3d, 0xd1, 0x1f, 0x1e, 0xfe, 0xaf, 0xda,
-0x95, 0xb9, 0x04, 0xa0, 0x16, 0x92, 0x16, 0x93, 0xac, 0xa3, 0xb9, 0xc1, 0xea, 0xe8, 0xb0, 0x12,
-0x61, 0x38, 0x58, 0x55, 0xe6, 0x66, 0xfc, 0x6b, 0x38, 0x65, 0x6d, 0x53, 0xc7, 0x38, 0x96, 0x17,
-0x54, 0xf2, 0x4d, 0xcd, 0x47, 0xad, 0x38, 0x97, 0x84, 0x8e, 0xae, 0x94, 0x20, 0xa9, 0x81, 0xc9,
-0xd2, 0xf0, 0x62, 0x19, 0xb5, 0x3d, 0x58, 0x59, 0xac, 0x69, 0x10, 0x6d, 0x9e, 0x63, 0xa3, 0x4e,
-0x5f, 0x30, 0xfe, 0x0b, 0xc8, 0xe5, 0x7d, 0xc2, 0xea, 0xa6, 0x7e, 0x96, 0xf2, 0x92, 0xa8, 0x9c,
-0x67, 0xb2, 0xe3, 0xd1, 0x6e, 0xf7, 0x05, 0x1e, 0x9b, 0x40, 0x9c, 0x5a, 0xae, 0x68, 0x36, 0x69,
-0x4a, 0x5c, 0xc1, 0x43, 0x43, 0x23, 0xf8, 0xfe, 0x95, 0xdb, 0xbd, 0xbd, 0x6e, 0xa8, 0xb6, 0x9d,
-0xe4, 0x9d, 0xbe, 0xa8, 0xb7, 0xbd, 0x0f, 0xdb, 0x80, 0xfd, 0xe3, 0x20, 0x1f, 0x40, 0x8c, 0x56,
-0x16, 0x61, 0xf0, 0x5d, 0x21, 0x4e, 0x8b, 0x34, 0x02, 0x15, 0x96, 0xf4, 0x4f, 0xd7, 0x53, 0xc0,
-0x51, 0xb1, 0xe6, 0xaa, 0xf1, 0xac, 0xab, 0xb7, 0x99, 0xca, 0x6e, 0xe4, 0xec, 0x02, 0xa9, 0x21,
-0x39, 0x3c, 0xff, 0x4d, 0x1d, 0x54, 0xcf, 0x4d, 0xe1, 0x3c, 0xc5, 0x24, 0xe8, 0x09, 0x68, 0xf0,
-0xe1, 0xda, 0xfb, 0xca, 0x15, 0xc1, 0x1b, 0xbd, 0x4f, 0xbf, 0xdb, 0xc7, 0xeb, 0xd6, 0xe8, 0xeb,
-0x9e, 0x04, 0x65, 0x1d, 0x0b, 0x32, 0xab, 0x3e, 0x03, 0x41, 0xab, 0x39, 0x9f, 0x2a, 0xba, 0x17,
-0x56, 0x04, 0xea, 0xf2, 0x02, 0xe5, 0xed, 0xda, 0x75, 0xd4, 0x99, 0xd1, 0xdd, 0xd2, 0x61, 0xd8,
-0xe3, 0xe2, 0x84, 0xf1, 0xea, 0x02, 0x50, 0x14, 0x35, 0x22, 0x05, 0x2a, 0xb1, 0x2a, 0xf5, 0x24,
-0xe0, 0x1a, 0x0e, 0x0f, 0x96, 0x03, 0xee, 0xf9, 0x82, 0xf2, 0x00, 0xed, 0x58, 0xe9, 0x28, 0xe7,
-0xc2, 0xe6, 0x54, 0xe8, 0x76, 0xec, 0x22, 0xf3, 0xbc, 0xfb, 0xdc, 0x04, 0xa0, 0x0c, 0xa4, 0x11,
-0x42, 0x13, 0xe6, 0x11, 0x9c, 0x0e, 0xb6, 0x0a, 0x18, 0x07, 0x84, 0x04, 0xee, 0x02, 0xce, 0x01,
-0x74, 0x00, 0x34, 0xfe, 0xc0, 0xfa, 0x98, 0xf6, 0x40, 0xf2, 0x36, 0xef, 0x5a, 0xee, 0x0a, 0xf0,
-0xb2, 0xf3, 0x74, 0xf8, 0x52, 0xfd, 0xde, 0x01, 0xf4, 0x05, 0xb4, 0x09, 0xbe, 0x0d, 0xb4, 0x11,
-0x78, 0x15, 0xcc, 0x17, 0x7e, 0x17, 0x3e, 0x13, 0xb0, 0x0a, 0x7a, 0xfe, 0xd4, 0xf0, 0x64, 0xe4,
-0xcd, 0xdb, 0xad, 0xd8, 0x17, 0xdb, 0xeb, 0xe1, 0x56, 0xeb, 0x10, 0xf6, 0x1e, 0x01, 0x54, 0x0c,
-0x60, 0x17, 0xd7, 0x21, 0x63, 0x2a, 0x21, 0x2f, 0xd7, 0x2d, 0x3f, 0x25, 0x8a, 0x15, 0x76, 0x00,
-0xce, 0xe9, 0xa5, 0xd5, 0xc5, 0xc7, 0x69, 0xc2, 0x41, 0xc5, 0xff, 0xce, 0x39, 0xdd, 0x12, 0xee,
-0x1a, 0x00, 0xb8, 0x12, 0x9f, 0x24, 0x95, 0x34, 0xfd, 0x3f, 0x23, 0x44, 0x4b, 0x3f, 0x3f, 0x30,
-0xe6, 0x18, 0x38, 0xfc, 0x09, 0xdf, 0x15, 0xc6, 0x91, 0xb5, 0x45, 0xaf, 0x8b, 0xb3, 0x4b, 0xc0,
-0x41, 0xd3, 0x66, 0xea, 0xc8, 0x03, 0x6b, 0x1d, 0x71, 0x35, 0x9d, 0x48, 0x41, 0x54, 0x4e, 0x55,
-0x8b, 0x4a, 0xdb, 0x34, 0xd0, 0x16, 0x98, 0xf4, 0xff, 0xd2, 0x77, 0xb7, 0xa4, 0xa5, 0x12, 0xa0,
-0xfc, 0xa5, 0x5b, 0xb6, 0x9b, 0xce, 0x3e, 0xec, 0x6e, 0x0c, 0xed, 0x2b, 0x51, 0x47, 0xc0, 0x5a,
-0x46, 0x63, 0x0a, 0x5f, 0x93, 0x4e, 0xb5, 0x33, 0xb0, 0x11, 0x84, 0xec, 0xfd, 0xc8, 0x19, 0xac,
-0xd8, 0x99, 0xb6, 0x94, 0x10, 0x9d, 0x85, 0xb1, 0x95, 0xcf, 0x80, 0xf3, 0xf4, 0x18, 0x61, 0x3b,
-0x68, 0x56, 0xc6, 0x66, 0x7e, 0x6a, 0x5c, 0x61, 0xb5, 0x4c, 0x1d, 0x2f, 0x5a, 0x0b, 0x30, 0xe5,
-0xeb, 0xc0, 0xac, 0xa3, 0xf0, 0x91, 0x88, 0x8e, 0x10, 0x9a, 0x47, 0xb3, 0x97, 0xd6, 0xc2, 0xfe,
-0x29, 0x26, 0xa9, 0x47, 0x8e, 0x5f, 0x66, 0x6b, 0xa0, 0x6a, 0xf2, 0x5d, 0x53, 0x47, 0xe5, 0x28,
-0xe6, 0x04, 0x97, 0xde, 0x8b, 0xba, 0x0a, 0x9e, 0xec, 0x8d, 0x84, 0x8d, 0x66, 0x9d, 0x35, 0xbb,
-0xf9, 0xe1, 0x42, 0x0b, 0xf9, 0x30, 0x8f, 0x4e, 0x5c, 0x61, 0x66, 0x68, 0x2e, 0x64, 0x0c, 0x56,
-0x4b, 0x3f, 0x69, 0x21, 0x3e, 0xfe, 0xb7, 0xd8, 0x15, 0xb6, 0x1a, 0x9c, 0xba, 0x8f, 0xd8, 0x93,
-0xf8, 0xa7, 0x37, 0xc8, 0xcc, 0xee, 0x06, 0x15, 0xb7, 0x35, 0xc3, 0x4d, 0x82, 0x5b, 0xfe, 0x5e,
-0x08, 0x59, 0x63, 0x4a, 0x43, 0x34, 0x88, 0x17, 0x0e, 0xf6, 0x9f, 0xd3, 0x4d, 0xb5, 0x96, 0xa0,
-0xc4, 0x99, 0x14, 0xa2, 0xe3, 0xb7, 0x01, 0xd7, 0x7a, 0xf9, 0xec, 0x19, 0x67, 0x34, 0xbb, 0x46,
-0x73, 0x50, 0xa1, 0x51, 0xd1, 0x4a, 0xf3, 0x3c, 0x51, 0x28, 0x44, 0x0e, 0x0a, 0xf1, 0xff, 0xd3,
-0xc9, 0xbb, 0xcf, 0xac, 0xda, 0xa9, 0x7d, 0xb3, 0xc9, 0xc7, 0x7f, 0xe2, 0xf6, 0xfe, 0xcc, 0x18,
-0x31, 0x2d, 0xb1, 0x3a, 0xdd, 0x40, 0xff, 0x3f, 0xc5, 0x38, 0xcf, 0x2b, 0x4e, 0x1a, 0x80, 0x05,
-0x48, 0xef, 0x73, 0xda, 0xd9, 0xc9, 0x3b, 0xc0, 0x5b, 0xbf, 0x75, 0xc7, 0xa1, 0xd6, 0x60, 0xea,
-0x2a, 0xff, 0x1e, 0x12, 0xdd, 0x20, 0x49, 0x2a, 0x07, 0x2e, 0x95, 0x2c, 0x7f, 0x26, 0xa3, 0x1c,
-0x36, 0x10, 0x5a, 0x02, 0x58, 0xf4, 0x78, 0xe7, 0x47, 0xdd, 0xcd, 0xd6, 0x55, 0xd5, 0x65, 0xd9,
-0x73, 0xe2, 0xc6, 0xee, 0x4e, 0xfc, 0xd2, 0x08, 0x0a, 0x12, 0x6e, 0x17, 0xb0, 0x18, 0xdc, 0x16,
-0xce, 0x12, 0x1c, 0x0e, 0x72, 0x09, 0x1c, 0x05, 0x98, 0x00, 0x30, 0xfb, 0x3e, 0xf5, 0x5c, 0xef,
-0x7a, 0xeb, 0x7c, 0xea, 0xe4, 0xec, 0xc4, 0xf1, 0xc6, 0xf7, 0x0e, 0xfd, 0x62, 0x00, 0x6e, 0x01,
-0x1a, 0x01, 0x98, 0x00, 0x7e, 0x01, 0x40, 0x04, 0x00, 0x09, 0xdc, 0x0d, 0x36, 0x11, 0x26, 0x11,
-0x60, 0x0d, 0xd8, 0x06, 0x32, 0xff, 0x84, 0xf8, 0x86, 0xf3, 0x6e, 0xf0, 0x30, 0xee, 0x2e, 0xec,
-0x0a, 0xea, 0xc2, 0xe8, 0x9a, 0xe9, 0xc0, 0xed, 0xf0, 0xf5, 0x68, 0x01, 0xb6, 0x0e, 0x46, 0x1b,
-0x1f, 0x24, 0x5d, 0x27, 0x51, 0x24, 0xde, 0x1b, 0xfc, 0x0f, 0xec, 0x02, 0xfe, 0xf5, 0x34, 0xea,
-0xb9, 0xdf, 0x29, 0xd7, 0xbd, 0xd1, 0xd5, 0xd0, 0x9f, 0xd5, 0x7b, 0xe0, 0x9a, 0xf0, 0x50, 0x04,
-0xe6, 0x18, 0x09, 0x2b, 0xe7, 0x37, 0x15, 0x3d, 0xcb, 0x39, 0xb9, 0x2e, 0xbb, 0x1d, 0x56, 0x09,
-0xec, 0xf3, 0x57, 0xdf, 0x9d, 0xcd, 0xd5, 0xc0, 0xab, 0xba, 0xc5, 0xbc, 0x2b, 0xc7, 0x33, 0xd9,
-0xd4, 0xf0, 0x3e, 0x0b, 0xd7, 0x24, 0xc3, 0x3a, 0xab, 0x49, 0x8f, 0x4f, 0xf1, 0x4a, 0x4b, 0x3c,
-0x51, 0x25, 0x42, 0x09, 0x80, 0xeb, 0xe9, 0xcf, 0x2b, 0xba, 0xbd, 0xac, 0x94, 0xa9, 0x61, 0xb0,
-0xaf, 0xc0, 0x43, 0xd8, 0xe0, 0xf4, 0x48, 0x13, 0x5d, 0x30, 0xd3, 0x48, 0x6a, 0x59, 0x50, 0x5f,
-0x46, 0x58, 0xcd, 0x44, 0x0d, 0x27, 0x56, 0x03, 0x3d, 0xdf, 0xa7, 0xbf, 0x00, 0xa9, 0xa4, 0x9d,
-0xfa, 0x9d, 0x36, 0xa9, 0xd7, 0xbd, 0x8b, 0xd9, 0xce, 0xf9, 0x8a, 0x1b, 0x69, 0x3b, 0x16, 0x56,
-0x58, 0x67, 0x76, 0x6b, 0x5c, 0x60, 0xbb, 0x46, 0x73, 0x22, 0x22, 0xf9, 0x59, 0xd1, 0xff, 0xb0,
-0x38, 0x9c, 0x6e, 0x94, 0x20, 0x99, 0x5e, 0xa8, 0x45, 0xc0, 0xaf, 0xde, 0xda, 0x00, 0x3f, 0x24,
-0x59, 0x45, 0x56, 0x60, 0x1a, 0x70, 0xc6, 0x70, 0x7c, 0x60, 0x69, 0x41, 0xb2, 0x18, 0x08, 0xed,
-0x7b, 0xc5, 0x9a, 0xa7, 0x60, 0x96, 0x22, 0x92, 0xb4, 0x99, 0x3c, 0xab, 0x45, 0xc5, 0xa4, 0xe5,
-0xc0, 0x09, 0x25, 0x2e, 0x19, 0x4f, 0xac, 0x67, 0x54, 0x73, 0xac, 0x6e, 0xb6, 0x59, 0xa9, 0x37,
-0x34, 0x0e, 0x1a, 0xe4, 0x8b, 0xbf, 0x68, 0xa5, 0xc4, 0x97, 0x78, 0x96, 0x48, 0xa0, 0x9d, 0xb3,
-0xf1, 0xce, 0xec, 0xef, 0x6e, 0x13, 0xe3, 0x35, 0xf9, 0x52, 0x8c, 0x66, 0x9c, 0x6c, 0xa4, 0x63,
-0x9f, 0x4c, 0x61, 0x2b, 0x06, 0x05, 0x63, 0xdf, 0xc7, 0xbf, 0xca, 0xa9, 0x4c, 0x9f, 0x04, 0xa0,
-0x0a, 0xab, 0x51, 0xbf, 0xcb, 0xda, 0xf6, 0xfa, 0xfa, 0x1b, 0x3b, 0x3a, 0xa7, 0x51, 0x14, 0x5f,
-0x70, 0x60, 0x1a, 0x55, 0x2b, 0x3f, 0x43, 0x21, 0xf8, 0xff, 0x9f, 0xdf, 0xd3, 0xc4, 0xa1, 0xb2,
-0xca, 0xaa, 0x43, 0xad, 0x63, 0xb9, 0xd5, 0xcd, 0xf4, 0xe7, 0xae, 0x04, 0x3b, 0x20, 0x4f, 0x37,
-0xbd, 0x47, 0x83, 0x4f, 0x3d, 0x4e, 0x2f, 0x44, 0xf9, 0x31, 0xe8, 0x19, 0x92, 0xfe, 0xd8, 0xe3,
-0x9f, 0xcd, 0x09, 0xbf, 0x7f, 0xb9, 0xc5, 0xbd, 0x93, 0xca, 0xad, 0xdd, 0x48, 0xf4, 0xa4, 0x0a,
-0x43, 0x1e, 0x57, 0x2d, 0x17, 0x37, 0x5d, 0x3b, 0x25, 0x3a, 0x17, 0x33, 0x55, 0x26, 0x86, 0x14,
-0xb8, 0xff, 0x10, 0xeb, 0x11, 0xda, 0xa3, 0xcf, 0x25, 0xcd, 0x73, 0xd2, 0xd7, 0xdd, 0x98, 0xec,
-0xca, 0xfb, 0x50, 0x09, 0x2c, 0x14, 0x1a, 0x1c, 0xa1, 0x21, 0xeb, 0x24, 0xb9, 0x25, 0x09, 0x23,
-0x2e, 0x1c, 0xf8, 0x10, 0x26, 0x03, 0x78, 0xf5, 0x8a, 0xea, 0xc8, 0xe4, 0x98, 0xe4, 0xde, 0xe8,
-0xbc, 0xef, 0xe2, 0xf6, 0xa2, 0xfc, 0xe0, 0x00, 0xbe, 0x03, 0x48, 0x06, 0x68, 0x09, 0x58, 0x0d,
-0x5e, 0x11, 0x14, 0x14, 0x38, 0x14, 0x38, 0x11, 0xe4, 0x0b, 0xc2, 0x05, 0xc2, 0x00, 0xba, 0xfd,
-0xd2, 0xfc, 0xd4, 0xfc, 0x74, 0xfc, 0x96, 0xfa, 0x36, 0xf7, 0x32, 0xf3, 0x16, 0xf0, 0x26, 0xef,
-0x6c, 0xf1, 0x1c, 0xf7, 0x54, 0xff, 0x58, 0x08, 0x44, 0x10, 0x38, 0x16, 0x2e, 0x19, 0x02, 0x1a,
-0xe6, 0x18, 0x4c, 0x16, 0x12, 0x12, 0xcc, 0x0b, 0x4e, 0x03, 0xf8, 0xf8, 0x1a, 0xee, 0x0a, 0xe4,
-0xb5, 0xdc, 0x8d, 0xd9, 0xa3, 0xdb, 0xa1, 0xe3, 0x86, 0xf0, 0xb4, 0x00, 0x64, 0x11, 0x49, 0x20,
-0x2b, 0x2b, 0xd7, 0x30, 0x23, 0x31, 0xfd, 0x2b, 0x47, 0x22, 0xec, 0x14, 0xe6, 0x04, 0xac, 0xf3,
-0x7d, 0xe2, 0x81, 0xd3, 0x81, 0xc8, 0x85, 0xc3, 0x83, 0xc6, 0xff, 0xd1, 0x8e, 0xe5, 0x4a, 0xfe,
-0x92, 0x18, 0x91, 0x2f, 0x33, 0x40, 0xb9, 0x47, 0x59, 0x46, 0x17, 0x3d, 0x75, 0x2d, 0xfc, 0x19,
-0xde, 0x03, 0x06, 0xed, 0xf7, 0xd6, 0xe3, 0xc3, 0x55, 0xb6, 0x17, 0xb1, 0x49, 0xb6, 0x37, 0xc7,
-0x15, 0xe2, 0x4e, 0x03, 0xb5, 0x24, 0xc3, 0x40, 0xfb, 0x52, 0xb2, 0x59, 0x1c, 0x55, 0x63, 0x47,
-0xef, 0x32, 0x34, 0x1a, 0x5e, 0xff, 0xa3, 0xe3, 0xaf, 0xc9, 0xaf, 0xb3, 0x92, 0xa5, 0x5e, 0xa2,
-0x63, 0xac, 0x0d, 0xc4, 0x30, 0xe6, 0x5c, 0x0d, 0xb7, 0x32, 0xfb, 0x4f, 0x76, 0x61, 0x1e, 0x66,
-0x84, 0x5e, 0x6f, 0x4d, 0x4d, 0x35, 0x7e, 0x18, 0x1e, 0xf9, 0x15, 0xd9, 0x7b, 0xbb, 0x72, 0xa4,
-0xc4, 0x97, 0xd6, 0x98, 0xe2, 0xa8, 0x93, 0xc6, 0xd2, 0xed, 0xc0, 0x17, 0xcd, 0x3d, 0x36, 0x5a,
-0x1e, 0x6a, 0xae, 0x6c, 0xe6, 0x62, 0xe1, 0x4e, 0x39, 0x33, 0x5a, 0x12, 0xc4, 0xee, 0xc1, 0xcb,
-0x8f, 0xad, 0xd8, 0x98, 0xe4, 0x90, 0xec, 0x97, 0x5d, 0xad, 0xd3, 0xce, 0x76, 0xf7, 0xb9, 0x20,
-0xe7, 0x44, 0x62, 0x5f, 0x66, 0x6d, 0x30, 0x6e, 0x58, 0x62, 0x9f, 0x4b, 0xf7, 0x2c, 0xe4, 0x08,
-0x43, 0xe3, 0x69, 0xc0, 0x0c, 0xa5, 0x28, 0x95, 0xc6, 0x92, 0x4a, 0x9e, 0x51, 0xb6, 0xff, 0xd7,
-0xcc, 0xfe, 0x8f, 0x25, 0x29, 0x47, 0xbe, 0x5f, 0x00, 0x6c, 0xe6, 0x6a, 0xaa, 0x5c, 0x57, 0x43,
-0x3b, 0x22, 0xec, 0xfc, 0x51, 0xd8, 0x1d, 0xb9, 0x60, 0xa3, 0x78, 0x99, 0xd6, 0x9b, 0xa0, 0xa9,
-0xab, 0xc1, 0xfd, 0xe0, 0x8e, 0x04, 0xfb, 0x27, 0xa7, 0x46, 0x9a, 0x5c, 0x96, 0x66, 0xaa, 0x62,
-0xf5, 0x51, 0xaf, 0x36, 0xe4, 0x14, 0x98, 0xf1, 0x35, 0xd1, 0x57, 0xb8, 0x20, 0xa9, 0x76, 0xa4,
-0x82, 0xa9, 0x91, 0xb7, 0x45, 0xcd, 0x02, 0xe9, 0x20, 0x08, 0x33, 0x27, 0x01, 0x42, 0x35, 0x54,
-0xd0, 0x5a, 0x4d, 0x54, 0x05, 0x42, 0x5b, 0x27, 0xbe, 0x08, 0xf4, 0xea, 0xff, 0xd1, 0x65, 0xc0,
-0x25, 0xb7, 0x9f, 0xb5, 0x79, 0xbb, 0x81, 0xc7, 0x65, 0xd9, 0x20, 0xf0, 0xaa, 0x09, 0x47, 0x23,
-0xf9, 0x38, 0xa7, 0x46, 0x87, 0x49, 0x7d, 0x41, 0xf7, 0x2f, 0x0a, 0x19, 0xd2, 0x00, 0x18, 0xeb,
-0x5b, 0xda, 0x5d, 0xcf, 0x2f, 0xca, 0x1b, 0xca, 0x8f, 0xce, 0x31, 0xd7, 0xfe, 0xe3, 0x96, 0xf4,
-0xa2, 0x07, 0x82, 0x1a, 0x0d, 0x2a, 0xeb, 0x32, 0x8d, 0x33, 0x11, 0x2c, 0xe1, 0x1e, 0xfe, 0x0e,
-0x6c, 0xff, 0x54, 0xf2, 0xc2, 0xe8, 0xe5, 0xe2, 0x23, 0xe0, 0xf9, 0xdf, 0x19, 0xe2, 0x72, 0xe6,
-0xe4, 0xec, 0xea, 0xf5, 0xde, 0x00, 0x2e, 0x0c, 0xa6, 0x15, 0x6a, 0x1b, 0x43, 0x1c, 0xe6, 0x18,
-0x76, 0x12, 0xca, 0x0a, 0xb4, 0x03, 0x1a, 0xfe, 0x4e, 0xfa, 0xfc, 0xf7, 0xd4, 0xf6, 0xf8, 0xf5,
-0xf0, 0xf4, 0xc4, 0xf3, 0xd2, 0xf2, 0xf6, 0xf2, 0xee, 0xf4, 0xac, 0xf8, 0x78, 0xfd, 0x3a, 0x02,
-0x3c, 0x06, 0xd6, 0x08, 0x50, 0x0a, 0x06, 0x0b, 0x96, 0x0b, 0x60, 0x0c, 0x66, 0x0d, 0x02, 0x0e,
-0x42, 0x0d, 0x7c, 0x0a, 0xda, 0x04, 0x8c, 0xfc, 0xc8, 0xf2, 0x8a, 0xe9, 0x49, 0xe3, 0x65, 0xe1,
-0x14, 0xe4, 0xa2, 0xea, 0x74, 0xf3, 0x10, 0xfd, 0x52, 0x06, 0xc4, 0x0e, 0x64, 0x16, 0x25, 0x1d,
-0x2b, 0x22, 0xa3, 0x24, 0x3f, 0x23, 0xc1, 0x1c, 0x80, 0x10, 0x72, 0xff, 0x12, 0xec, 0x39, 0xda,
-0x83, 0xcd, 0xb5, 0xc8, 0x2b, 0xcc, 0x65, 0xd6, 0xfe, 0xe4, 0x5c, 0xf5, 0xe6, 0x05, 0x92, 0x15,
-0xa3, 0x23, 0x89, 0x2f, 0xdf, 0x37, 0xe1, 0x3a, 0x8f, 0x36, 0x01, 0x2a, 0xca, 0x15, 0xd6, 0xfb,
-0x55, 0xe0, 0x83, 0xc8, 0xd9, 0xb8, 0xb7, 0xb3, 0x73, 0xb9, 0x81, 0xc7, 0x59, 0xdb, 0xf2, 0xf1,
-0xf2, 0x08, 0x1d, 0x1f, 0x01, 0x33, 0xe5, 0x42, 0x5f, 0x4c, 0xef, 0x4c, 0x75, 0x43, 0xb9, 0x2f,
-0x9c, 0x13, 0x08, 0xf3, 0x97, 0xd2, 0xe1, 0xb7, 0x56, 0xa7, 0x34, 0xa3, 0x18, 0xab, 0x17, 0xbd,
-0xd7, 0xd5, 0x9a, 0xf2, 0x4c, 0x10, 0x85, 0x2c, 0xa9, 0x44, 0xe6, 0x55, 0x96, 0x5d, 0x54, 0x59,
-0x31, 0x49, 0xd1, 0x2e, 0x54, 0x0d, 0xe6, 0xe8, 0x61, 0xc6, 0x02, 0xab, 0xea, 0x9a, 0xbe, 0x97,
-0xa6, 0xa1, 0xd7, 0xb6, 0x81, 0xd4, 0x32, 0xf7, 0xae, 0x1a, 0x35, 0x3b, 0x1e, 0x55, 0x04, 0x65,
-0x4e, 0x68, 0x60, 0x5e, 0xa9, 0x48, 0xff, 0x29, 0xb8, 0x05, 0x15, 0xe0, 0x6b, 0xbd, 0x3e, 0xa2,
-0xa4, 0x92, 0xd4, 0x90, 0x4a, 0x9d, 0xb3, 0xb6, 0xb7, 0xd9, 0x70, 0x01, 0x85, 0x28, 0xfb, 0x49,
-0xb6, 0x61, 0xd6, 0x6c, 0x90, 0x6a, 0x8c, 0x5b, 0x5d, 0x42, 0x53, 0x22, 0x06, 0xfe, 0xe3, 0xd8,
-0xe1, 0xb6, 0x96, 0x9c, 0x5a, 0x8e, 0xde, 0x8e, 0xfc, 0x9e, 0xd5, 0xbc, 0x02, 0xe4, 0x28, 0x0e,
-0x25, 0x35, 0x99, 0x53, 0x92, 0x66, 0x60, 0x6c, 0x58, 0x65, 0x9d, 0x53, 0xbb, 0x39, 0x34, 0x1a,
-0x42, 0xf7, 0xa5, 0xd3, 0x5d, 0xb3, 0x0a, 0x9b, 0x5a, 0x8f, 0x50, 0x93, 0x18, 0xa7, 0x35, 0xc8,
-0x9a, 0xf0, 0xac, 0x19, 0xf3, 0x3c, 0x58, 0x56, 0xaa, 0x63, 0xd4, 0x64, 0x50, 0x5b, 0x29, 0x49,
-0x4d, 0x30, 0x90, 0x12, 0xcc, 0xf1, 0x5f, 0xd0, 0xe9, 0xb2, 0x16, 0x9e, 0x62, 0x96, 0x2a, 0x9e,
-0xa9, 0xb4, 0x0b, 0xd6, 0x12, 0xfc, 0x0d, 0x20, 0x05, 0x3d, 0x4f, 0x50, 0x18, 0x59, 0xb4, 0x57,
-0x91, 0x4d, 0x8f, 0x3c, 0xdf, 0x25, 0xc4, 0x0a, 0x0a, 0xed, 0xcb, 0xcf, 0x37, 0xb7, 0x48, 0xa7,
-0xd6, 0xa3, 0x11, 0xae, 0x71, 0xc4, 0x79, 0xe2, 0xd2, 0x02, 0xef, 0x1f, 0xb5, 0x36, 0xf1, 0x44,
-0x7f, 0x4a, 0xd7, 0x47, 0x19, 0x3e, 0x95, 0x2e, 0x74, 0x1a, 0x4a, 0x03, 0x0c, 0xeb, 0x73, 0xd4,
-0x93, 0xc2, 0xcd, 0xb8, 0xa7, 0xb8, 0x0d, 0xc3, 0xa7, 0xd5, 0x1e, 0xed, 0x48, 0x05, 0x96, 0x1a,
-0x83, 0x2a, 0x03, 0x34, 0xdf, 0x36, 0xa3, 0x33, 0x2b, 0x2b, 0xcd, 0x1e, 0xc0, 0x0f, 0xfa, 0xfe,
-0x84, 0xee, 0xd3, 0xdf, 0x95, 0xd4, 0x59, 0xce, 0x93, 0xce, 0x69, 0xd5, 0xd3, 0xe1, 0x92, 0xf1,
-0x0c, 0x02, 0xca, 0x10, 0x98, 0x1b, 0x33, 0x21, 0xf1, 0x21, 0xc3, 0x1e, 0xa0, 0x18, 0xca, 0x10,
-0x5c, 0x08, 0x58, 0x00, 0x1a, 0xf9, 0x56, 0xf2, 0x6e, 0xec, 0xe4, 0xe7, 0xa4, 0xe5, 0xb0, 0xe6,
-0x1e, 0xeb, 0x16, 0xf2, 0x68, 0xfa, 0x34, 0x02, 0xfa, 0x07, 0xfc, 0x0a, 0x50, 0x0b, 0xe6, 0x09,
-0xfe, 0x07, 0xd2, 0x06, 0x08, 0x07, 0x26, 0x08, 0x08, 0x09, 0x5c, 0x08, 0x00, 0x05, 0x5a, 0xff,
-0xe6, 0xf8, 0x28, 0xf3, 0x92, 0xef, 0x60, 0xee, 0x0c, 0xef, 0x8e, 0xf0, 0xf2, 0xf1, 0xe6, 0xf2,
-0x0a, 0xf4, 0xb4, 0xf6, 0xd6, 0xfb, 0x62, 0x03, 0xda, 0x0c, 0x7a, 0x16, 0x7b, 0x1d, 0xc1, 0x1f,
-0x3c, 0x1c, 0xd6, 0x13, 0x6e, 0x08, 0x56, 0xfc, 0x7a, 0xf1, 0xd4, 0xe8, 0x99, 0xe2, 0x67, 0xde,
-0xf5, 0xdb, 0x2b, 0xdc, 0xfd, 0xdf, 0x30, 0xe8, 0xfa, 0xf4, 0x4a, 0x05, 0xf8, 0x16, 0xc3, 0x26,
-0xa9, 0x31, 0x75, 0x35, 0x4f, 0x31, 0x11, 0x26, 0xcc, 0x15, 0x04, 0x03, 0x36, 0xf0, 0x45, 0xdf,
-0x87, 0xd1, 0x1d, 0xc8, 0x0f, 0xc4, 0x6b, 0xc6, 0x97, 0xcf, 0x79, 0xdf, 0x9c, 0xf4, 0x6a, 0x0c,
-0xef, 0x23, 0xe1, 0x37, 0xe5, 0x44, 0xe7, 0x48, 0x37, 0x43, 0x67, 0x34, 0x75, 0x1e, 0x2c, 0x04,
-0x38, 0xe9, 0xa1, 0xd0, 0x8f, 0xbd, 0x07, 0xb2, 0xa5, 0xaf, 0xb7, 0xb6, 0xcb, 0xc6, 0xb9, 0xdd,
-0x3e, 0xf9, 0x30, 0x16, 0x1b, 0x31, 0xf1, 0x46, 0xc4, 0x54, 0x7e, 0x58, 0x8d, 0x50, 0x77, 0x3d,
-0x55, 0x21, 0xf6, 0xff, 0xbf, 0xdd, 0xdf, 0xbf, 0x46, 0xaa, 0xfc, 0x9f, 0x8c, 0xa1, 0x3d, 0xae,
-0x11, 0xc4, 0x6d, 0xe0, 0x20, 0x00, 0xd1, 0x1f, 0xad, 0x3c, 0xdd, 0x53, 0x34, 0x62, 0x8c, 0x64,
-0x8a, 0x59, 0x2d, 0x41, 0x77, 0x1e, 0x38, 0xf6, 0xf7, 0xce, 0xdb, 0xae, 0x6a, 0x9a, 0xc4, 0x93,
-0x5c, 0x9a, 0x47, 0xac, 0x8d, 0xc6, 0x08, 0xe6, 0xb2, 0x07, 0xed, 0x28, 0xb3, 0x46, 0x04, 0x5e,
-0x46, 0x6b, 0x18, 0x6b, 0xa6, 0x5b, 0xe9, 0x3d, 0x14, 0x16, 0x52, 0xea, 0xe1, 0xc1, 0x4a, 0xa3,
-0x68, 0x92, 0xf8, 0x8f, 0x98, 0x9a, 0x59, 0xaf, 0xbf, 0xcb, 0xb4, 0xec, 0x84, 0x0f, 0x3b, 0x31,
-0x01, 0x4f, 0x3a, 0x65, 0xb2, 0x6f, 0x30, 0x6b, 0xd2, 0x56, 0x19, 0x35, 0xdc, 0x0a, 0x4d, 0xdf,
-0x47, 0xb9, 0x9e, 0x9e, 0xe0, 0x91, 0xf2, 0x92, 0xe6, 0x9f, 0x3b, 0xb6, 0x8b, 0xd3, 0xe2, 0xf4,
-0xa8, 0x17, 0xe1, 0x38, 0xce, 0x54, 0x88, 0x67, 0x4e, 0x6d, 0x1c, 0x64, 0x5d, 0x4c, 0x3d, 0x29,
-0x5a, 0x00, 0x25, 0xd8, 0xb7, 0xb6, 0x70, 0xa0, 0x36, 0x97, 0x76, 0x9a, 0xd6, 0xa8, 0xdd, 0xbf,
-0x49, 0xdd, 0x5c, 0xfe, 0xab, 0x1f, 0xf7, 0x3d, 0x6e, 0x55, 0xd0, 0x62, 0x84, 0x63, 0xf2, 0x56,
-0xb5, 0x3e, 0x05, 0x1e, 0xa0, 0xf9, 0xc3, 0xd6, 0x91, 0xba, 0x64, 0xa8, 0xe8, 0xa1, 0xc0, 0xa6,
-0x95, 0xb5, 0x81, 0xcc, 0xd6, 0xe8, 0x5e, 0x07, 0x81, 0x24, 0x25, 0x3d, 0x2d, 0x4e, 0xa0, 0x55,
-0xc7, 0x52, 0xef, 0x45, 0xc9, 0x30, 0x7e, 0x15, 0xa4, 0xf7, 0x31, 0xdb, 0x43, 0xc4, 0xd3, 0xb5,
-0x7d, 0xb1, 0x4f, 0xb7, 0x2f, 0xc6, 0xb3, 0xdb, 0xa2, 0xf4, 0xde, 0x0d, 0x09, 0x24, 0xd7, 0x34,
-0xf1, 0x3e, 0x03, 0x42, 0x4b, 0x3e, 0x41, 0x34, 0x6f, 0x24, 0xfa, 0x0f, 0x0a, 0xf9, 0x0f, 0xe3,
-0x63, 0xd1, 0xd7, 0xc6, 0xcf, 0xc4, 0x5f, 0xcb, 0xbb, 0xd8, 0x6c, 0xea, 0x34, 0xfd, 0x5a, 0x0e,
-0x00, 0x1c, 0x51, 0x25, 0x65, 0x2a, 0xb5, 0x2b, 0xcf, 0x29, 0x57, 0x24, 0xe6, 0x1a, 0xac, 0x0d,
-0x26, 0xfe, 0xd0, 0xee, 0x81, 0xe2, 0x91, 0xdb, 0x13, 0xdb, 0x8f, 0xe0, 0x14, 0xea, 0x2e, 0xf5,
-0x66, 0xff, 0x70, 0x07, 0xee, 0x0c, 0x4a, 0x10, 0x96, 0x12, 0xa8, 0x14, 0x4a, 0x16, 0x8c, 0x16,
-0x5e, 0x14, 0x22, 0x0f, 0x6c, 0x07, 0xe6, 0xfe, 0xdc, 0xf7, 0xa6, 0xf3, 0xfe, 0xf2, 0xe6, 0xf4,
-0xba, 0xf7, 0xf8, 0xf9, 0xe2, 0xfa, 0x54, 0xfa, 0x3a, 0xf9, 0xec, 0xf8, 0x80, 0xfa, 0x8e, 0xfe,
-0xa8, 0x04, 0x6c, 0x0b, 0x0e, 0x11, 0x44, 0x14, 0xb4, 0x14, 0xba, 0x12, 0x94, 0x0f, 0x3e, 0x0c,
-0xb2, 0x08, 0x8c, 0x04, 0x1a, 0xff, 0x88, 0xf8, 0x14, 0xf1, 0x00, 0xea, 0x94, 0xe4, 0x55, 0xe2,
-0x88, 0xe4, 0x84, 0xeb, 0xa4, 0xf6, 0x20, 0x04, 0x1a, 0x12, 0xe1, 0x1d, 0xd9, 0x25, 0x1f, 0x29,
-0xdd, 0x27, 0x97, 0x22, 0xbc, 0x19, 0x22, 0x0e, 0x7e, 0x00, 0x2a, 0xf2, 0x5c, 0xe4, 0x51, 0xd8,
-0xfb, 0xcf, 0xdf, 0xcc, 0x73, 0xd0, 0xff, 0xda, 0x2a, 0xec, 0xa6, 0x01, 0x58, 0x18, 0x71, 0x2c,
-0x75, 0x3a, 0x9f, 0x40, 0x73, 0x3e, 0x21, 0x35, 0xf7, 0x25, 0x3a, 0x13, 0x9a, 0xfe, 0xd6, 0xe9,
-0xc5, 0xd6, 0xf1, 0xc6, 0x73, 0xbc, 0x33, 0xb9, 0xfd, 0xbe, 0x81, 0xce, 0xc0, 0xe6, 0xc8, 0x04,
-0xa3, 0x23, 0x1d, 0x3e, 0x61, 0x4f, 0x68, 0x55, 0x2d, 0x50, 0xb3, 0x41, 0xa9, 0x2c, 0xe4, 0x13,
-0xba, 0xf9, 0xff, 0xdf, 0xeb, 0xc8, 0x87, 0xb6, 0x4d, 0xab, 0x90, 0xa9, 0x35, 0xb3, 0xf5, 0xc8,
-0xc0, 0xe8, 0x18, 0x0e, 0x71, 0x32, 0x95, 0x4f, 0xd6, 0x60, 0x66, 0x64, 0x2c, 0x5b, 0xf1, 0x47,
-0x43, 0x2e, 0xf8, 0x10, 0x8a, 0xf2, 0x1b, 0xd5, 0x49, 0xbb, 0xdc, 0xa7, 0x9a, 0x9d, 0x32, 0x9f,
-0x47, 0xae, 0x65, 0xca, 0x0a, 0xf0, 0x66, 0x19, 0x6d, 0x3f, 0x2a, 0x5c, 0xd2, 0x6b, 0x0c, 0x6d,
-0x12, 0x61, 0xdd, 0x4a, 0xd9, 0x2d, 0xee, 0x0c, 0xb4, 0xea, 0x23, 0xca, 0xa9, 0xae, 0xd2, 0x9b,
-0xa4, 0x94, 0x56, 0x9b, 0x7b, 0xb0, 0xeb, 0xd1, 0xf2, 0xfa, 0x1d, 0x25, 0x29, 0x4a, 0xca, 0x64,
-0xd8, 0x71, 0x3e, 0x70, 0x7a, 0x61, 0x67, 0x48, 0x5d, 0x28, 0x76, 0x04, 0xc3, 0xdf, 0x41, 0xbe,
-0x2c, 0xa4, 0x04, 0x95, 0x4e, 0x93, 0xbc, 0x9f, 0x67, 0xb9, 0xe9, 0xdc, 0x4e, 0x05, 0xe3, 0x2c,
-0x81, 0x4e, 0x0a, 0x66, 0x86, 0x70, 0xf0, 0x6c, 0x4a, 0x5c, 0x69, 0x41, 0x87, 0x1f, 0x14, 0xfa,
-0x2f, 0xd5, 0x99, 0xb5, 0xbe, 0x9f, 0x34, 0x96, 0x18, 0x9a, 0x94, 0xaa, 0x7b, 0xc5, 0x74, 0xe7,
-0x26, 0x0c, 0x8b, 0x2f, 0x5b, 0x4d, 0x14, 0x62, 0x8e, 0x6a, 0x62, 0x65, 0x45, 0x53, 0xe7, 0x36,
-0x26, 0x14, 0x4a, 0xef, 0x69, 0xcd, 0x07, 0xb3, 0x8a, 0xa3, 0xf0, 0x9f, 0xa2, 0xa7, 0xe1, 0xb8,
-0x97, 0xd1, 0x46, 0xef, 0x08, 0x0f, 0xe5, 0x2d, 0x31, 0x48, 0x14, 0x5a, 0x4c, 0x60, 0x2c, 0x59,
-0xcd, 0x45, 0x37, 0x29, 0x06, 0x08, 0x48, 0xe7, 0x97, 0xcb, 0x6b, 0xb8, 0x3b, 0xaf, 0xd7, 0xaf,
-0x99, 0xb8, 0x13, 0xc8, 0x97, 0xdc, 0x04, 0xf5, 0x88, 0x0f, 0x93, 0x29, 0x9d, 0x3f, 0xcd, 0x4d,
-0xfd, 0x50, 0x0d, 0x48, 0xa9, 0x34, 0x74, 0x1a, 0x3c, 0xfe, 0x9a, 0xe4, 0xe1, 0xd0, 0xeb, 0xc4,
-0xad, 0xc0, 0x17, 0xc3, 0xe1, 0xca, 0xd9, 0xd6, 0x52, 0xe6, 0xe0, 0xf8, 0x50, 0x0d, 0x6b, 0x21,
-0x1b, 0x32, 0xf5, 0x3b, 0xcf, 0x3c, 0x37, 0x34, 0x07, 0x24, 0xe8, 0x0f, 0xa4, 0xfb, 0x9a, 0xea,
-0x95, 0xde, 0x2b, 0xd8, 0x65, 0xd6, 0x6d, 0xd8, 0x4f, 0xdd, 0x82, 0xe4, 0x02, 0xee, 0xac, 0xf9,
-0xfe, 0x06, 0x46, 0x14, 0x2f, 0x1f, 0x5b, 0x25, 0xa3, 0x25, 0xe5, 0x1f, 0xdc, 0x15, 0x00, 0x0a,
-0xea, 0xfe, 0x3c, 0xf6, 0xd0, 0xf0, 0x12, 0xee, 0x66, 0xed, 0xce, 0xed, 0xf4, 0xee, 0xba, 0xf0,
-0x16, 0xf3, 0xbe, 0xf6, 0xba, 0xfb, 0xc8, 0x01, 0xa8, 0x07, 0x72, 0x0c, 0x2a, 0x0f, 0x6e, 0x0f,
-0xa8, 0x0d, 0xbe, 0x0a, 0x08, 0x08, 0x12, 0x06, 0xfc, 0x04, 0x60, 0x04, 0x9c, 0x03, 0xe0, 0x01,
-0xbc, 0xfe, 0xe6, 0xf9, 0xfa, 0xf3, 0x48, 0xee, 0xc2, 0xea, 0x6e, 0xea, 0xd4, 0xed, 0x1e, 0xf4,
-0x08, 0xfc, 0xf8, 0x03, 0xb6, 0x0a, 0x48, 0x10, 0x9c, 0x14, 0x06, 0x18, 0x2c, 0x1a, 0xc0, 0x1a,
-0xd8, 0x18, 0xaa, 0x13, 0x6e, 0x0a, 0x78, 0xfd, 0x46, 0xee, 0xc1, 0xdf, 0x45, 0xd5, 0x77, 0xd1,
-0x05, 0xd5, 0xe7, 0xde, 0xf6, 0xec, 0x4a, 0xfc, 0xf0, 0x0a, 0xc6, 0x17, 0x4f, 0x22, 0x61, 0x2a,
-0x71, 0x2f, 0xa3, 0x30, 0x89, 0x2c, 0x43, 0x22, 0x66, 0x11, 0x6a, 0xfb, 0x7d, 0xe3, 0xcb, 0xcd,
-0x3b, 0xbf, 0x6f, 0xba, 0x21, 0xc0, 0x7b, 0xce, 0x7d, 0xe2, 0xa8, 0xf8, 0x1a, 0x0e, 0x69, 0x21,
-0x75, 0x31, 0x7f, 0x3d, 0x33, 0x44, 0xdf, 0x43, 0x45, 0x3b, 0xb7, 0x29, 0x9e, 0x10, 0x96, 0xf2,
-0x4b, 0xd4, 0x0b, 0xbb, 0x3e, 0xab, 0xda, 0xa7, 0x7b, 0xb0, 0x67, 0xc3, 0xe1, 0xdc, 0x3c, 0xf9,
-0x0c, 0x15, 0x25, 0x2e, 0xdb, 0x42, 0xf9, 0x50, 0xba, 0x56, 0x2f, 0x52, 0xdb, 0x42, 0xc9, 0x29,
-0x7e, 0x09, 0x22, 0xe6, 0xdf, 0xc4, 0xba, 0xaa, 0xec, 0x9b, 0x7c, 0x9a, 0x3a, 0xa6, 0x01, 0xbd,
-0x83, 0xdb, 0x64, 0xfd, 0xcd, 0x1e, 0xa3, 0x3c, 0xbf, 0x53, 0x8c, 0x61, 0x92, 0x63, 0x30, 0x59,
-0x4d, 0x43, 0x7f, 0x24, 0x62, 0x00, 0x3d, 0xdb, 0xdd, 0xb9, 0xac, 0xa0, 0x54, 0x93, 0xa0, 0x93,
-0xae, 0xa1, 0xe3, 0xbb, 0x97, 0xde, 0x08, 0x05, 0x77, 0x2a, 0x4f, 0x4a, 0x1a, 0x61, 0x84, 0x6b,
-0x48, 0x68, 0x1c, 0x58, 0xa7, 0x3d, 0x2e, 0x1c, 0x56, 0xf7, 0xf9, 0xd2, 0xcd, 0xb2, 0x1c, 0x9b,
-0x30, 0x8f, 0x2e, 0x91, 0xde, 0xa1, 0x8d, 0xbf, 0x30, 0xe6, 0x14, 0x10, 0xff, 0x36, 0x16, 0x56,
-0x68, 0x69, 0xc8, 0x6e, 0x4c, 0x66, 0x2d, 0x52, 0xc3, 0x35, 0x2c, 0x14, 0x6c, 0xf0, 0x71, 0xcd,
-0x15, 0xaf, 0xf0, 0x98, 0xd0, 0x8e, 0x6c, 0x93, 0x4a, 0xa7, 0x71, 0xc8, 0xb8, 0xf1, 0x3e, 0x1c,
-0x59, 0x41, 0x42, 0x5c, 0x02, 0x6a, 0xec, 0x69, 0xa0, 0x5d, 0xe3, 0x47, 0xeb, 0x2b, 0x36, 0x0c,
-0xe6, 0xea, 0xc1, 0xca, 0xfd, 0xae, 0x9a, 0x9b, 0x82, 0x94, 0x3a, 0x9c, 0xe1, 0xb2, 0xb3, 0xd5,
-0x40, 0xfe, 0x91, 0x25, 0x7d, 0x45, 0x28, 0x5a, 0x24, 0x62, 0x28, 0x5e, 0x3b, 0x50, 0x35, 0x3b,
-0x5b, 0x21, 0x8c, 0x04, 0xcc, 0xe6, 0x6f, 0xca, 0xd7, 0xb2, 0xda, 0xa3, 0xdc, 0xa0, 0x87, 0xab,
-0x45, 0xc3, 0x02, 0xe4, 0xfa, 0x07, 0x9b, 0x28, 0x4f, 0x41, 0xc3, 0x4f, 0xcf, 0x53, 0x3d, 0x4e,
-0x43, 0x41, 0xb7, 0x2e, 0x58, 0x18, 0xac, 0xff, 0x80, 0xe6, 0x39, 0xcf, 0xe7, 0xbc, 0x83, 0xb2,
-0x8f, 0xb2, 0xd7, 0xbd, 0xd5, 0xd2, 0x16, 0xee, 0x74, 0x0a, 0x41, 0x23, 0x3f, 0x35, 0x21, 0x3f,
-0xc7, 0x40, 0x4f, 0x3b, 0x19, 0x30, 0xa7, 0x20, 0xb2, 0x0e, 0xa6, 0xfb, 0x24, 0xe9, 0x3b, 0xd9,
-0x53, 0xcd, 0x53, 0xc7, 0x8d, 0xc8, 0x1f, 0xd1, 0xfd, 0xdf, 0xf2, 0xf2, 0xa8, 0x06, 0xea, 0x17,
-0x79, 0x24, 0x61, 0x2b, 0x57, 0x2c, 0x17, 0x28, 0x9d, 0x1f, 0xa6, 0x14, 0x70, 0x08, 0x5c, 0xfc,
-0x64, 0xf1, 0x38, 0xe8, 0xd3, 0xe1, 0xed, 0xdd, 0x61, 0xdd, 0xcd, 0xe0, 0x3e, 0xe8, 0xd6, 0xf2,
-0xc2, 0xfe, 0xd0, 0x09, 0xe8, 0x11, 0x1e, 0x16, 0x64, 0x16, 0x3e, 0x13, 0x94, 0x0e, 0xa0, 0x09,
-0x82, 0x05, 0x80, 0x02, 0x3a, 0x00, 0xf8, 0xfd, 0xb4, 0xfa, 0x88, 0xf6, 0x1e, 0xf2, 0xe6, 0xee,
-0x06, 0xee, 0xf2, 0xef, 0x28, 0xf4, 0xbc, 0xf8, 0x84, 0xfc, 0xd2, 0xfe, 0xa4, 0xff, 0x2c, 0x00,
-0x80, 0x01, 0xd4, 0x04, 0xd4, 0x09, 0x9c, 0x0f, 0x3a, 0x14, 0xe6, 0x15, 0x2e, 0x13, 0xfe, 0x0b,
-0x02, 0x02, 0x62, 0xf7, 0x54, 0xee, 0x72, 0xe8, 0x72, 0xe5, 0xa4, 0xe4, 0x36, 0xe5, 0x06, 0xe7,
-0x92, 0xea, 0xa2, 0xf0, 0xf4, 0xf9, 0x02, 0x06, 0xa0, 0x13, 0x1b, 0x20, 0x43, 0x29, 0x8d, 0x2c,
-0xbd, 0x28, 0x3f, 0x1e, 0xca, 0x0e, 0x74, 0xfd, 0xc4, 0xec, 0xdd, 0xde, 0xcf, 0xd4, 0xe5, 0xce,
-0x57, 0xcd, 0x97, 0xd0, 0xf9, 0xd8, 0xb6, 0xe6, 0x9a, 0xf8, 0x36, 0x0d, 0x57, 0x21, 0x73, 0x32,
-0x91, 0x3d, 0x99, 0x40, 0x9d, 0x3a, 0x11, 0x2c, 0x6a, 0x17, 0x54, 0xff, 0x3a, 0xe7, 0xe9, 0xd1,
-0xf7, 0xc1, 0xed, 0xb8, 0xd7, 0xb7, 0x09, 0xbf, 0x2d, 0xce, 0xd2, 0xe3, 0xa4, 0xfd, 0x34, 0x18,
-0xb9, 0x30, 0xef, 0x43, 0x75, 0x4f, 0x59, 0x51, 0x8b, 0x48, 0xdf, 0x35, 0x5e, 0x1b, 0x52, 0xfc,
-0xb1, 0xdc, 0x37, 0xc1, 0x91, 0xad, 0x86, 0xa4, 0xe8, 0xa6, 0x03, 0xb4, 0x37, 0xca, 0x94, 0xe6,
-0x78, 0x05, 0xa3, 0x23, 0xd7, 0x3d, 0xcd, 0x51, 0x20, 0x5d, 0xac, 0x5d, 0x1f, 0x52, 0x21, 0x3b,
-0xbe, 0x1a, 0x02, 0xf5, 0x7b, 0xcf, 0x2b, 0xb0, 0x2e, 0x9c, 0xfc, 0x95, 0x2c, 0x9d, 0x21, 0xb0,
-0xab, 0xcb, 0x16, 0xec, 0xa4, 0x0d, 0x25, 0x2d, 0x2f, 0x48, 0x5e, 0x5c, 0x20, 0x67, 0xa0, 0x65,
-0x90, 0x56, 0x65, 0x3a, 0x16, 0x14, 0x24, 0xe9, 0x89, 0xc0, 0x64, 0xa1, 0x7e, 0x90, 0xfe, 0x8e,
-0x7a, 0x9b, 0xaf, 0xb2, 0x33, 0xd1, 0x08, 0xf3, 0x22, 0x15, 0xb3, 0x34, 0x7b, 0x4f, 0x06, 0x63,
-0xca, 0x6b, 0x36, 0x67, 0xb3, 0x53, 0xd3, 0x32, 0xc4, 0x08, 0x27, 0xdc, 0xad, 0xb4, 0x02, 0x99,
-0xda, 0x8c, 0xf2, 0x8f, 0xfe, 0x9f, 0x83, 0xb9, 0x09, 0xd9, 0x3a, 0xfb, 0x09, 0x1d, 0xf7, 0x3b,
-0x86, 0x55, 0x78, 0x66, 0x7a, 0x6b, 0x34, 0x62, 0x63, 0x4a, 0xd3, 0x26, 0x90, 0xfc, 0x5f, 0xd2,
-0x55, 0xaf, 0xca, 0x98, 0xde, 0x90, 0xd8, 0x96, 0x52, 0xa8, 0x2d, 0xc2, 0x6b, 0xe1, 0xc4, 0x02,
-0x4f, 0x23, 0x5f, 0x40, 0xd0, 0x56, 0x78, 0x63, 0xd8, 0x63, 0xb4, 0x56, 0x57, 0x3d, 0xe6, 0x1a,
-0x4e, 0xf4, 0x7f, 0xcf, 0xf7, 0xb1, 0xe0, 0x9f, 0xca, 0x9a, 0x1a, 0xa2, 0x93, 0xb3, 0xe5, 0xcc,
-0xd0, 0xea, 0x3e, 0x0a, 0xf7, 0x27, 0xd9, 0x40, 0x09, 0x52, 0x4e, 0x59, 0x64, 0x55, 0xcf, 0x46,
-0x21, 0x2f, 0x34, 0x11, 0x10, 0xf1, 0xbb, 0xd2, 0xcd, 0xba, 0x8b, 0xac, 0x7c, 0xa9, 0x1f, 0xb1,
-0x2f, 0xc2, 0xed, 0xd9, 0x5a, 0xf5, 0xec, 0x10, 0x1d, 0x29, 0x6f, 0x3b, 0x1f, 0x46, 0x43, 0x48,
-0x8f, 0x42, 0x93, 0x35, 0xb7, 0x22, 0x8e, 0x0b, 0x98, 0xf2, 0xcf, 0xda, 0x05, 0xc8, 0xfd, 0xbc,
-0x55, 0xbb, 0x4d, 0xc3, 0xc1, 0xd2, 0x90, 0xe7, 0xfa, 0xfd, 0xd2, 0x12, 0x55, 0x23, 0x4f, 0x2e,
-0x3f, 0x33, 0xdf, 0x32, 0x35, 0x2e, 0x7d, 0x25, 0x52, 0x19, 0xe2, 0x09, 0x6e, 0xf8, 0x60, 0xe7,
-0x6b, 0xd9, 0x85, 0xd1, 0xed, 0xd0, 0x9d, 0xd7, 0x93, 0xe3, 0x76, 0xf2, 0x1c, 0x01, 0x4a, 0x0d,
-0xe4, 0x15, 0xb2, 0x1a, 0x97, 0x1c, 0x93, 0x1c, 0x48, 0x1b, 0x82, 0x18, 0xc0, 0x13, 0x26, 0x0c,
-0x30, 0x02, 0x88, 0xf7, 0x76, 0xee, 0x16, 0xe9, 0x62, 0xe8, 0xbe, 0xeb, 0x9e, 0xf1, 0x22, 0xf8,
-0x6a, 0xfd, 0xd8, 0x00, 0x96, 0x02, 0x84, 0x03, 0xd6, 0x04, 0x3a, 0x07, 0xce, 0x0a, 0xb4, 0x0e,
-0x8c, 0x11, 0xba, 0x11, 0x50, 0x0f, 0xb2, 0x0a, 0xb8, 0x05, 0x5e, 0x01, 0x4a, 0xfe, 0x04, 0xfc,
-0xf6, 0xf9, 0x4a, 0xf7, 0x94, 0xf3, 0xb4, 0xef, 0x7e, 0xec, 0x9c, 0xeb, 0xc2, 0xed, 0x8a, 0xf3,
-0x8a, 0xfc, 0x60, 0x07, 0x26, 0x12, 0xba, 0x1a, 0xc7, 0x1f, 0xe9, 0x20, 0x71, 0x1e, 0xe6, 0x18,
-0x0c, 0x11, 0x74, 0x07, 0x9a, 0xfc, 0x40, 0xf1, 0x5e, 0xe6, 0x4f, 0xdd, 0x93, 0xd7, 0x21, 0xd6,
-0xfd, 0xd9, 0x75, 0xe3, 0xee, 0xf1, 0xf4, 0x03, 0xf6, 0x16, 0xc1, 0x27, 0xad, 0x33, 0xbb, 0x38,
-0x23, 0x36, 0xf3, 0x2c, 0x67, 0x1e, 0xa0, 0x0c, 0xc0, 0xf9, 0x42, 0xe7, 0xfd, 0xd6, 0x85, 0xca,
-0x2b, 0xc3, 0x43, 0xc2, 0xb9, 0xc8, 0xd3, 0xd6, 0x0c, 0xec, 0x44, 0x06, 0x6b, 0x21, 0x3d, 0x39,
-0x73, 0x49, 0xed, 0x4e, 0xdb, 0x49, 0x0f, 0x3b, 0xd9, 0x25, 0x5a, 0x0d, 0x24, 0xf4, 0xa7, 0xdc,
-0xc1, 0xc8, 0xed, 0xb9, 0xc1, 0xb1, 0xf1, 0xb1, 0x8d, 0xbb, 0x47, 0xcf, 0xea, 0xeb, 0xcc, 0x0d,
-0xc1, 0x2f, 0xdb, 0x4b, 0xd0, 0x5c, 0x94, 0x60, 0xf6, 0x56, 0xc1, 0x42, 0xf5, 0x27, 0x1e, 0x0a,
-0x70, 0xec, 0x49, 0xd1, 0xc3, 0xba, 0xd8, 0xaa, 0x6c, 0xa3, 0x4c, 0xa6, 0xe7, 0xb4, 0x51, 0xcf,
-0xf6, 0xf2, 0x96, 0x1a, 0xd9, 0x3f, 0x56, 0x5c, 0x7a, 0x6b, 0xa4, 0x6b, 0xae, 0x5d, 0x6b, 0x45,
-0xb1, 0x26, 0x6c, 0x05, 0x78, 0xe4, 0xa1, 0xc6, 0xa7, 0xae, 0x98, 0x9e, 0x40, 0x99, 0x30, 0xa0,
-0x77, 0xb4, 0xe9, 0xd4, 0x0a, 0xfd, 0x15, 0x27, 0x4d, 0x4c, 0x0a, 0x67, 0x7c, 0x73, 0x70, 0x70,
-0x82, 0x5f, 0x31, 0x44, 0xc3, 0x22, 0x8a, 0xfe, 0x07, 0xdb, 0x91, 0xbb, 0x82, 0xa3, 0x00, 0x96,
-0x16, 0x95, 0xd0, 0xa1, 0xdd, 0xbb, 0x11, 0xe0, 0x60, 0x09, 0x0b, 0x32, 0x27, 0x54, 0x5c, 0x6b,
-0x70, 0x74, 0xc0, 0x6e, 0xb8, 0x5b, 0xb5, 0x3e, 0x5e, 0x1b, 0x92, 0xf5, 0x51, 0xd1, 0x91, 0xb2,
-0x6c, 0x9d, 0x9a, 0x94, 0x56, 0x99, 0x36, 0xab, 0x25, 0xc8, 0x56, 0xec, 0x0a, 0x13, 0x49, 0x37,
-0x00, 0x55, 0x7a, 0x68, 0x1e, 0x6f, 0xec, 0x67, 0xd7, 0x53, 0xf7, 0x35, 0x0e, 0x12, 0x4c, 0xec,
-0xb7, 0xc9, 0x87, 0xae, 0x84, 0x9e, 0x7a, 0x9b, 0xe8, 0xa4, 0x17, 0xb9, 0x39, 0xd5, 0xda, 0xf5,
-0x3a, 0x17, 0x65, 0x36, 0xa5, 0x4f, 0x02, 0x60, 0xe0, 0x64, 0x7a, 0x5c, 0x11, 0x48, 0x2d, 0x2a,
-0x34, 0x07, 0x52, 0xe4, 0x77, 0xc6, 0x7d, 0xb1, 0xe8, 0xa7, 0xa4, 0xa9, 0x31, 0xb5, 0x7b, 0xc8,
-0xb5, 0xe0, 0xc6, 0xfb, 0x8a, 0x17, 0x49, 0x31, 0x8b, 0x46, 0xeb, 0x53, 0xae, 0x56, 0x5b, 0x4d,
-0x1b, 0x39, 0xbd, 0x1c, 0x90, 0xfd, 0x73, 0xe0, 0x7b, 0xc9, 0xc9, 0xbb, 0x93, 0xb7, 0x2b, 0xbc,
-0x4d, 0xc7, 0x19, 0xd7, 0x14, 0xea, 0xea, 0xfe, 0x5a, 0x14, 0x91, 0x28, 0x45, 0x39, 0x31, 0x43,
-0x13, 0x44, 0xd9, 0x3a, 0xb3, 0x28, 0x3c, 0x11, 0xb6, 0xf8, 0xa9, 0xe3, 0xad, 0xd4, 0x15, 0xcd,
-0x23, 0xcc, 0xc7, 0xd0, 0x09, 0xd9, 0xea, 0xe3, 0x90, 0xf0, 0x9e, 0xfe, 0x60, 0x0d, 0x86, 0x1b,
-0x47, 0x27, 0x09, 0x2e, 0x0b, 0x2e, 0xf7, 0x26, 0x02, 0x1a, 0x1e, 0x0a, 0x9e, 0xfa, 0x1c, 0xee,
-0x12, 0xe6, 0xb1, 0xe2, 0x23, 0xe3, 0x0a, 0xe6, 0x74, 0xea, 0x7c, 0xef, 0x3e, 0xf5, 0x9e, 0xfb,
-0xa6, 0x02, 0x1a, 0x0a, 0xf8, 0x10, 0xc8, 0x15, 0x7e, 0x17, 0x6e, 0x15, 0x76, 0x10, 0xfa, 0x09,
-0x8a, 0x03, 0x8e, 0xfe, 0x84, 0xfb, 0x3e, 0xfa, 0xe0, 0xf9, 0xc4, 0xf9, 0x02, 0xf9, 0xb0, 0xf7,
-0xa2, 0xf5, 0x9a, 0xf3, 0xc0, 0xf2, 0xfe, 0xf3, 0x8e, 0xf7, 0x04, 0xfd, 0x2c, 0x03, 0xca, 0x08,
-0x1a, 0x0d, 0xbc, 0x0f, 0x2a, 0x11, 0xb2, 0x11, 0xb6, 0x11, 0x0c, 0x11, 0x24, 0x0f, 0x30, 0x0b,
-0xa6, 0x04, 0xa0, 0xfb, 0xde, 0xf0, 0x44, 0xe6, 0x43, 0xde, 0x49, 0xdb, 0xa1, 0xde, 0x84, 0xe7,
-0x2c, 0xf4, 0xcc, 0x01, 0x68, 0x0e, 0x9c, 0x18, 0xf3, 0x1f, 0xa7, 0x24, 0xe9, 0x26, 0x43, 0x26,
-0x21, 0x22, 0x98, 0x19, 0x32, 0x0c, 0xbc, 0xfa, 0x12, 0xe7, 0xaf, 0xd4, 0xa5, 0xc7, 0x17, 0xc3,
-0x51, 0xc8, 0x3b, 0xd6, 0xa8, 0xe9, 0xce, 0xfe, 0xc6, 0x12, 0x33, 0x23, 0xa7, 0x2f, 0xe5, 0x37,
-0x6d, 0x3b, 0xeb, 0x39, 0xef, 0x31, 0x0d, 0x23, 0x7a, 0x0d, 0x5e, 0xf3, 0x31, 0xd8, 0x03, 0xc1,
-0x3d, 0xb2, 0x0b, 0xaf, 0x19, 0xb8, 0x0d, 0xcb, 0x56, 0xe4, 0xa0, 0xff, 0x4a, 0x19, 0x2d, 0x2f,
-0xf3, 0x3f, 0x9f, 0x4a, 0x5f, 0x4e, 0xb5, 0x49, 0xe5, 0x3b, 0x2b, 0x25, 0x76, 0x07, 0x56, 0xe6,
-0xd1, 0xc6, 0xf7, 0xad, 0x5a, 0xa0, 0x00, 0xa0, 0xa9, 0xac, 0x33, 0xc4, 0x79, 0xe2, 0x36, 0x03,
-0x39, 0x22, 0xcf, 0x3c, 0xbb, 0x50, 0x50, 0x5c, 0x66, 0x5d, 0x4f, 0x53, 0x89, 0x3e, 0x9f, 0x20,
-0x3a, 0xfd, 0x99, 0xd8, 0x21, 0xb8, 0x80, 0xa0, 0x08, 0x95, 0x48, 0x97, 0x10, 0xa7, 0x3d, 0xc2,
-0xb8, 0xe4, 0x04, 0x0a, 0x61, 0x2d, 0x25, 0x4b, 0xfc, 0x5f, 0x58, 0x69, 0xbc, 0x65, 0x4e, 0x55,
-0x33, 0x3a, 0xb0, 0x17, 0x34, 0xf2, 0xbb, 0xcd, 0xef, 0xae, 0x80, 0x99, 0x42, 0x90, 0xa0, 0x94,
-0xae, 0xa6, 0xbd, 0xc4, 0xce, 0xea, 0x9a, 0x13, 0x4b, 0x39, 0x4a, 0x57, 0xdc, 0x69, 0x8a, 0x6e,
-0x28, 0x65, 0x63, 0x4f, 0x09, 0x31, 0xdc, 0x0d, 0x94, 0xe9, 0x6b, 0xc7, 0x1c, 0xab, 0xd6, 0x97,
-0x5a, 0x90, 0x92, 0x96, 0xd8, 0xaa, 0x99, 0xcb, 0x02, 0xf4, 0x45, 0x1e, 0xd3, 0x43, 0x80, 0x5f,
-0x88, 0x6d, 0xd4, 0x6c, 0x98, 0x5e, 0xff, 0x45, 0xfd, 0x26, 0x1e, 0x05, 0x51, 0xe3, 0x2d, 0xc4,
-0xb0, 0xaa, 0xd6, 0x99, 0x94, 0x94, 0xe6, 0x9c, 0x3f, 0xb3, 0x73, 0xd5, 0x82, 0xfe, 0x79, 0x27,
-0xc9, 0x49, 0x4e, 0x60, 0xd4, 0x68, 0xac, 0x63, 0x01, 0x53, 0x67, 0x3a, 0x69, 0x1d, 0xd2, 0xfe,
-0x89, 0xe0, 0x27, 0xc5, 0xef, 0xae, 0x54, 0xa1, 0xf0, 0x9e, 0x90, 0xa9, 0x5b, 0xc1, 0x1f, 0xe3,
-0x3a, 0x09, 0xf5, 0x2c, 0xb5, 0x48, 0x8c, 0x58, 0x18, 0x5c, 0xf9, 0x53, 0x47, 0x43, 0x0d, 0x2d,
-0x70, 0x13, 0x2e, 0xf9, 0xb1, 0xdf, 0x49, 0xc9, 0xf3, 0xb7, 0x5b, 0xae, 0xe7, 0xae, 0xf7, 0xba,
-0x49, 0xd1, 0x9c, 0xee, 0x0e, 0x0e, 0xfb, 0x29, 0x5f, 0x3e, 0xef, 0x48, 0xa9, 0x49, 0x03, 0x42,
-0xe5, 0x33, 0x57, 0x21, 0xba, 0x0c, 0xa0, 0xf7, 0xd8, 0xe3, 0xd7, 0xd2, 0x83, 0xc6, 0xdf, 0xc0,
-0x5d, 0xc3, 0x19, 0xce, 0xf9, 0xdf, 0x24, 0xf6, 0xbe, 0x0c, 0x59, 0x20, 0x29, 0x2e, 0xdf, 0x34,
-0x79, 0x34, 0xfd, 0x2d, 0x3d, 0x23, 0xb4, 0x15, 0xfa, 0x06, 0xa0, 0xf8, 0xe6, 0xeb, 0x7b, 0xe1,
-0x3f, 0xda, 0xf1, 0xd6, 0x51, 0xd8, 0x9b, 0xde, 0xea, 0xe8, 0x56, 0xf6, 0xdc, 0x04, 0x3c, 0x12,
-0xde, 0x1b, 0x5d, 0x20, 0xef, 0x1f, 0xc0, 0x1b, 0xc6, 0x14, 0x9c, 0x0c, 0xa8, 0x04, 0xc4, 0xfd,
-0x78, 0xf8, 0x7a, 0xf4, 0x5e, 0xf1, 0xe2, 0xee, 0x20, 0xed, 0xae, 0xec, 0x82, 0xee, 0xd6, 0xf2,
-0x0a, 0xf9, 0xd6, 0xff, 0x78, 0x05, 0xd4, 0x08, 0xb4, 0x09, 0xb8, 0x08, 0x36, 0x07, 0x5a, 0x06,
-0xd0, 0x06, 0x90, 0x08, 0xae, 0x0a, 0x9e, 0x0b, 0xce, 0x09, 0xaa, 0x04, 0x02, 0xfd, 0xa2, 0xf4,
-0x8c, 0xed, 0x8a, 0xe9, 0xea, 0xe8, 0xdc, 0xea, 0xf8, 0xed, 0x44, 0xf1, 0xd4, 0xf4, 0x36, 0xf9,
-0x46, 0xff, 0x44, 0x07, 0xc6, 0x10, 0x34, 0x1a, 0x43, 0x21, 0xb7, 0x23, 0x3d, 0x20, 0xd4, 0x16,
-0xe4, 0x08, 0x2e, 0xf9, 0xb2, 0xea, 0x9d, 0xdf, 0xd5, 0xd8, 0x1b, 0xd6, 0x0d, 0xd7, 0x31, 0xdb,
-0x95, 0xe2, 0xa0, 0xed, 0x3a, 0xfc, 0x6c, 0x0d, 0xdd, 0x1e, 0xe5, 0x2d, 0x9f, 0x37, 0xe1, 0x39,
-0x81, 0x33, 0x29, 0x25, 0x0e, 0x11, 0x44, 0xfa, 0x64, 0xe4, 0x15, 0xd2, 0x99, 0xc5, 0x87, 0xbf,
-0x5b, 0xc0, 0xf5, 0xc7, 0x11, 0xd6, 0xb4, 0xe9, 0x0c, 0x01, 0x54, 0x19, 0x97, 0x2f, 0xd9, 0x40,
-0x3d, 0x4a, 0x91, 0x4a, 0x0b, 0x41, 0xa1, 0x2e, 0x4c, 0x15, 0x4e, 0xf8, 0x7d, 0xdb, 0x0d, 0xc3,
-0xe7, 0xb1, 0x4c, 0xaa, 0x31, 0xad, 0x27, 0xba, 0xe1, 0xcf, 0x72, 0xeb, 0x98, 0x09, 0xb7, 0x26,
-0x71, 0x3f, 0x01, 0x51, 0x96, 0x59, 0xa6, 0x57, 0xfb, 0x4a, 0x4d, 0x34, 0x64, 0x15, 0x40, 0xf2,
-0x6f, 0xcf, 0x43, 0xb2, 0x88, 0x9f, 0xe6, 0x99, 0x96, 0xa1, 0x5b, 0xb5, 0xbd, 0xd1, 0xc4, 0xf2,
-0x2a, 0x14, 0x33, 0x32, 0xab, 0x4a, 0x84, 0x5b, 0xcc, 0x62, 0x12, 0x5f, 0xa9, 0x4f, 0xd9, 0x34,
-0x2c, 0x11, 0x64, 0xe8, 0x41, 0xc1, 0xae, 0xa2, 0x6a, 0x91, 0xea, 0x8f, 0x44, 0x9d, 0x85, 0xb6,
-0x31, 0xd7, 0xb0, 0xfa, 0x8d, 0x1c, 0x97, 0x3a, 0x77, 0x52, 0x4c, 0x62, 0x24, 0x68, 0xfc, 0x61,
-0x33, 0x4f, 0x3d, 0x30, 0x14, 0x08, 0x3f, 0xdc, 0x3b, 0xb4, 0x38, 0x97, 0x0e, 0x8a, 0x92, 0x8d,
-0xa2, 0x9f, 0x45, 0xbc, 0xa9, 0xde, 0x62, 0x02, 0x01, 0x24, 0x05, 0x41, 0xc2, 0x57, 0xf8, 0x65,
-0x1c, 0x69, 0x76, 0x5f, 0x67, 0x48, 0xdd, 0x25, 0x92, 0xfb, 0x33, 0xd0, 0x5b, 0xab, 0x68, 0x93,
-0x7c, 0x8b, 0x20, 0x93, 0x88, 0xa7, 0xaf, 0xc4, 0xb4, 0xe6, 0x3e, 0x09, 0x95, 0x29, 0x23, 0x45,
-0x72, 0x59, 0x56, 0x64, 0x5a, 0x63, 0x9e, 0x55, 0xa3, 0x3b, 0x52, 0x18, 0x3a, 0xf0, 0xab, 0xc9,
-0xc8, 0xaa, 0x5a, 0x98, 0x6c, 0x94, 0xe0, 0x9d, 0x67, 0xb2, 0x7d, 0xce, 0x8e, 0xee, 0x3e, 0x0f,
-0xfd, 0x2c, 0x61, 0x45, 0xe2, 0x55, 0x66, 0x5c, 0x4c, 0x57, 0xef, 0x46, 0xeb, 0x2c, 0x60, 0x0c,
-0xca, 0xe9, 0xbb, 0xc9, 0x6d, 0xb1, 0xec, 0xa3, 0xb0, 0xa2, 0xbf, 0xac, 0x47, 0xc0, 0x4f, 0xda,
-0x62, 0xf7, 0x4c, 0x14, 0xa1, 0x2d, 0xeb, 0x40, 0xb7, 0x4b, 0x3f, 0x4d, 0x6f, 0x45, 0xa7, 0x35,
-0xa1, 0x1f, 0xdc, 0x05, 0x04, 0xeb, 0x8b, 0xd2, 0xb5, 0xbf, 0x29, 0xb5, 0x81, 0xb4, 0xc1, 0xbd,
-0xf9, 0xce, 0xa8, 0xe5, 0x94, 0xfe, 0x28, 0x16, 0x61, 0x29, 0x17, 0x36, 0x47, 0x3b, 0x77, 0x39,
-0xb9, 0x31, 0x5f, 0x25, 0xb2, 0x15, 0xbc, 0x03, 0xd0, 0xf0, 0xdd, 0xde, 0x81, 0xd0, 0x6f, 0xc8,
-0x3b, 0xc8, 0xd9, 0xcf, 0x1d, 0xde, 0x16, 0xf0, 0xae, 0x02, 0xec, 0x12, 0xaf, 0x1e, 0xf9, 0x24,
-0x77, 0x26, 0xeb, 0x23, 0x03, 0x1f, 0x6c, 0x18, 0x58, 0x10, 0x5c, 0x06, 0xe0, 0xfa, 0xea, 0xee,
-0xb8, 0xe4, 0x7f, 0xde, 0xdd, 0xdd, 0x07, 0xe3, 0x24, 0xec, 0x12, 0xf7, 0xea, 0x00, 0x60, 0x08,
-0x86, 0x0c, 0x0a, 0x0e, 0xf4, 0x0d, 0xd8, 0x0d, 0x2e, 0x0e, 0xc4, 0x0e, 0xc4, 0x0e, 0xd4, 0x0c,
-0xa0, 0x08, 0x6e, 0x02, 0xf4, 0xfb, 0xf2, 0xf6, 0xae, 0xf4, 0xee, 0xf4, 0x84, 0xf6, 0x22, 0xf8,
-0xc2, 0xf8, 0x00, 0xf8, 0x74, 0xf6, 0x84, 0xf5, 0x66, 0xf6, 0xe8, 0xf9, 0x40, 0x00, 0x28, 0x08,
-0x1a, 0x10, 0x20, 0x16, 0xce, 0x18, 0x00, 0x18, 0x66, 0x14, 0x22, 0x0f, 0xbc, 0x08, 0xaa, 0x01,
-0x00, 0xfa, 0x06, 0xf2, 0x3c, 0xea, 0xa3, 0xe3, 0x63, 0xdf, 0x73, 0xde, 0x1d, 0xe2, 0x6a, 0xea,
-0xca, 0xf6, 0x1c, 0x06, 0xdc, 0x15, 0x6f, 0x23, 0x99, 0x2c, 0xf3, 0x2f, 0xd1, 0x2c, 0x35, 0x24,
-0x1e, 0x17, 0x5e, 0x07, 0xb6, 0xf6, 0xe8, 0xe6, 0x47, 0xd9, 0x53, 0xcf, 0xfd, 0xc9, 0x73, 0xca,
-0x2b, 0xd1, 0x83, 0xde, 0x6e, 0xf1, 0x00, 0x08, 0x77, 0x1f, 0x33, 0x34, 0x7b, 0x42, 0x6f, 0x47,
-0x79, 0x42, 0x3b, 0x34, 0xb7, 0x1f, 0xc2, 0x07, 0x9e, 0xef, 0xb9, 0xd9, 0x77, 0xc8, 0x8f, 0xbc,
-0x57, 0xb7, 0x89, 0xb9, 0xed, 0xc3, 0x6b, 0xd6, 0x1c, 0xf0, 0x44, 0x0e, 0xf3, 0x2c, 0x1f, 0x47,
-0x92, 0x57, 0x58, 0x5b, 0xbb, 0x51, 0x6d, 0x3d, 0xf3, 0x21, 0xe8, 0x03, 0xb2, 0xe6, 0x71, 0xcd,
-0xbb, 0xb9, 0x31, 0xad, 0xcc, 0xa8, 0x6d, 0xad, 0x29, 0xbc, 0xbd, 0xd4, 0x56, 0xf5, 0x34, 0x1a,
-0xa9, 0x3d, 0x92, 0x59, 0xe6, 0x68, 0xe4, 0x68, 0xfe, 0x59, 0xf1, 0x3f, 0x99, 0x1f, 0x66, 0xfd,
-0x3f, 0xdd, 0xc7, 0xc1, 0x37, 0xad, 0x0c, 0xa1, 0x80, 0x9e, 0xca, 0xa6, 0xbb, 0xba, 0x69, 0xd9,
-0x80, 0xff, 0xcd, 0x27, 0x1d, 0x4c, 0x92, 0x66, 0xc8, 0x72, 0xc0, 0x6e, 0x40, 0x5c, 0xfd, 0x3e,
-0x04, 0x1c, 0x86, 0xf7, 0x63, 0xd5, 0x7b, 0xb8, 0xb2, 0xa3, 0xb2, 0x98, 0x06, 0x99, 0x16, 0xa6,
-0x87, 0xbf, 0x2f, 0xe3, 0x46, 0x0c, 0x0b, 0x35, 0x62, 0x57, 0x84, 0x6e, 0x82, 0x76, 0xde, 0x6e,
-0x60, 0x59, 0x2b, 0x3a, 0x82, 0x15, 0xbe, 0xef, 0x9b, 0xcc, 0xe3, 0xaf, 0x82, 0x9c, 0xf8, 0x94,
-0x88, 0x9a, 0xf1, 0xac, 0xcf, 0xca, 0x40, 0xf0, 0x38, 0x18, 0x55, 0x3d, 0xfa, 0x5a, 0x36, 0x6d,
-0xe6, 0x71, 0x4e, 0x68, 0x0b, 0x52, 0x87, 0x32, 0xdc, 0x0d, 0x18, 0xe8, 0xd1, 0xc5, 0x43, 0xab,
-0xee, 0x9b, 0x92, 0x99, 0x16, 0xa4, 0x29, 0xba, 0xbf, 0xd8, 0xde, 0xfb, 0xfb, 0x1e, 0x69, 0x3e,
-0xba, 0x56, 0x80, 0x65, 0x3c, 0x68, 0x12, 0x5e, 0x41, 0x48, 0x53, 0x29, 0x62, 0x05, 0x55, 0xe1,
-0x17, 0xc2, 0x11, 0xac, 0x36, 0xa2, 0xd4, 0xa4, 0xa7, 0xb2, 0x4d, 0xc9, 0x2a, 0xe5, 0xfc, 0x02,
-0xe5, 0x1f, 0x7f, 0x39, 0x91, 0x4d, 0x82, 0x59, 0x36, 0x5b, 0x27, 0x51, 0x07, 0x3c, 0x71, 0x1e,
-0x22, 0xfd, 0x17, 0xdd, 0x89, 0xc3, 0xc9, 0xb3, 0x51, 0xaf, 0x61, 0xb5, 0xed, 0xc3, 0xbb, 0xd7,
-0x82, 0xee, 0x02, 0x06, 0x97, 0x1c, 0x9b, 0x30, 0x9d, 0x40, 0xf1, 0x49, 0x6d, 0x4a, 0xb5, 0x40,
-0x25, 0x2d, 0x3c, 0x13, 0x50, 0xf7, 0x4f, 0xde, 0x23, 0xcc, 0xff, 0xc2, 0xa7, 0xc2, 0xd1, 0xc9,
-0xcd, 0xd5, 0xa0, 0xe4, 0xb4, 0xf4, 0xf6, 0x04, 0xe4, 0x14, 0xad, 0x23, 0x73, 0x2f, 0x59, 0x36,
-0x0b, 0x36, 0x99, 0x2d, 0x57, 0x1e, 0xd0, 0x0a, 0x02, 0xf7, 0xbe, 0xe6, 0x35, 0xdc, 0xfd, 0xd7,
-0x65, 0xd9, 0xa1, 0xde, 0x1e, 0xe6, 0xa0, 0xee, 0x5a, 0xf7, 0x66, 0x00, 0xba, 0x09, 0xb8, 0x12,
-0x54, 0x1a, 0x09, 0x1f, 0x9d, 0x1f, 0x94, 0x1b, 0x70, 0x13, 0x1a, 0x09, 0xf2, 0xfe, 0xfa, 0xf6,
-0x1c, 0xf2, 0x44, 0xf0, 0x9c, 0xf0, 0x46, 0xf2, 0x20, 0xf4, 0xb0, 0xf5, 0xe4, 0xf6, 0x64, 0xf8,
-0x76, 0xfa, 0xa2, 0xfd, 0xe4, 0x01, 0xba, 0x06, 0x18, 0x0b, 0x06, 0x0e, 0xd4, 0x0e, 0x0a, 0x0e,
-0x62, 0x0c, 0x7c, 0x0a, 0xf0, 0x08, 0x74, 0x07, 0xac, 0x05, 0xfa, 0x02, 0xe6, 0xfe, 0x4c, 0xf9,
-0xba, 0xf2, 0xfe, 0xeb, 0x1a, 0xe7, 0x88, 0xe5, 0x88, 0xe8, 0x14, 0xf0, 0xb6, 0xfa, 0x1e, 0x06,
-0x86, 0x10, 0x2e, 0x18, 0x1f, 0x1d, 0x73, 0x1f, 0x5f, 0x1f, 0x2d, 0x1d, 0x80, 0x18, 0x10, 0x11,
-0x90, 0x06, 0x14, 0xf9, 0xc0, 0xe9, 0x31, 0xdb, 0x5b, 0xd0, 0x7f, 0xcc, 0x05, 0xd1, 0x85, 0xdd,
-0xc4, 0xef, 0x8a, 0x03, 0xb8, 0x15, 0x4b, 0x24, 0x19, 0x2e, 0x73, 0x33, 0x53, 0x34, 0xcf, 0x30,
-0xc1, 0x28, 0xa6, 0x1b, 0x3a, 0x09, 0x36, 0xf3, 0xc5, 0xdb, 0x15, 0xc7, 0x93, 0xb9, 0x37, 0xb6,
-0xd7, 0xbe, 0x5f, 0xd1, 0x66, 0xea, 0x52, 0x05, 0xf3, 0x1d, 0x7d, 0x31, 0x11, 0x3f, 0xfd, 0x45,
-0x65, 0x46, 0x83, 0x40, 0x4d, 0x33, 0x2f, 0x1f, 0xf4, 0x04, 0x34, 0xe7, 0x77, 0xca, 0x59, 0xb3,
-0x4a, 0xa6, 0x36, 0xa6, 0x27, 0xb3, 0x07, 0xcb, 0x92, 0xe9, 0xb6, 0x09, 0x1b, 0x27, 0xdb, 0x3e,
-0xed, 0x4e, 0x16, 0x57, 0x1c, 0x56, 0x95, 0x4b, 0xff, 0x37, 0x24, 0x1c, 0xf8, 0xfa, 0x71, 0xd8,
-0xab, 0xb9, 0x28, 0xa3, 0xf2, 0x98, 0x22, 0x9c, 0xcd, 0xac, 0x95, 0xc8, 0x22, 0xeb, 0x78, 0x0f,
-0xb5, 0x30, 0xa5, 0x4b, 0xa4, 0x5d, 0x00, 0x65, 0x62, 0x60, 0x17, 0x50, 0xa9, 0x35, 0xd8, 0x13,
-0xce, 0xee, 0x0d, 0xcb, 0x2f, 0xad, 0x54, 0x99, 0xa6, 0x91, 0xb6, 0x97, 0x47, 0xab, 0x05, 0xca,
-0xac, 0xef, 0x3e, 0x17, 0x5d, 0x3b, 0xf4, 0x57, 0xae, 0x69, 0xe2, 0x6d, 0x1e, 0x64, 0xb9, 0x4d,
-0xf1, 0x2d, 0x08, 0x09, 0x5b, 0xe3, 0x13, 0xc1, 0x3a, 0xa6, 0x5e, 0x95, 0x92, 0x90, 0x12, 0x99,
-0x67, 0xae, 0x4b, 0xcf, 0x56, 0xf7, 0xc7, 0x20, 0xf3, 0x45, 0x84, 0x61, 0xaa, 0x6f, 0xa4, 0x6e,
-0x06, 0x5f, 0x05, 0x44, 0x4d, 0x22, 0xe0, 0xfd, 0xbf, 0xda, 0x13, 0xbc, 0xd6, 0xa4, 0x26, 0x97,
-0xc8, 0x94, 0x10, 0x9f, 0x5d, 0xb6, 0xed, 0xd8, 0xf4, 0x01, 0x3d, 0x2b, 0x1d, 0x4e, 0x54, 0x65,
-0xd6, 0x6d, 0x10, 0x67, 0x9f, 0x53, 0xbf, 0x37, 0xa0, 0x17, 0xcc, 0xf6, 0xe7, 0xd7, 0x7f, 0xbd,
-0xac, 0xa9, 0x8c, 0x9e, 0xf2, 0x9d, 0x8e, 0xa9, 0xa3, 0xc1, 0xdc, 0xe3, 0x14, 0x0b, 0x9f, 0x30,
-0x4d, 0x4e, 0x94, 0x5f, 0x10, 0x63, 0x52, 0x59, 0xa7, 0x45, 0xe5, 0x2b, 0x6e, 0x0f, 0x1a, 0xf3,
-0xab, 0xd8, 0x6d, 0xc2, 0x33, 0xb2, 0x2e, 0xaa, 0xd5, 0xab, 0xe9, 0xb8, 0x91, 0xd0, 0x04, 0xf0,
-0x3e, 0x12, 0x0d, 0x31, 0xa3, 0x47, 0x1d, 0x53, 0xd3, 0x52, 0x5b, 0x48, 0xb1, 0x36, 0xab, 0x20,
-0x34, 0x09, 0x1e, 0xf2, 0xf5, 0xdc, 0x9b, 0xcb, 0x8b, 0xbf, 0x29, 0xba, 0x87, 0xbd, 0xf1, 0xc9,
-0x9d, 0xde, 0x82, 0xf8, 0x0a, 0x13, 0x0b, 0x2a, 0x0f, 0x3a, 0x17, 0x41, 0x3b, 0x3f, 0xeb, 0x35,
-0x39, 0x27, 0xda, 0x15, 0xde, 0x03, 0xda, 0xf2, 0x62, 0xe4, 0x1b, 0xd9, 0x29, 0xd2, 0x23, 0xd0,
-0x87, 0xd3, 0x95, 0xdc, 0x34, 0xea, 0x94, 0xfa, 0x72, 0x0b, 0x44, 0x1a, 0xd3, 0x24, 0xf1, 0x29,
-0x2f, 0x29, 0x4f, 0x23, 0xde, 0x19, 0x6c, 0x0e, 0xce, 0x02, 0x82, 0xf8, 0x3a, 0xf0, 0xa4, 0xea,
-0xe6, 0xe7, 0x26, 0xe7, 0x04, 0xe8, 0xb0, 0xea, 0x84, 0xef, 0xb4, 0xf6, 0x52, 0xff, 0x30, 0x08,
-0x4a, 0x0f, 0x32, 0x13, 0xa2, 0x13, 0xdc, 0x10, 0x86, 0x0c, 0xde, 0x07, 0x56, 0x04, 0x94, 0x02,
-0x12, 0x02, 0x1c, 0x02, 0x26, 0x01, 0x5a, 0xfe, 0xae, 0xf9, 0x44, 0xf4, 0xd6, 0xef, 0x18, 0xee,
-0x7a, 0xef, 0x20, 0xf3, 0xc6, 0xf7, 0xe8, 0xfb, 0x06, 0xff, 0x8a, 0x01, 0x3e, 0x04, 0x44, 0x08,
-0xac, 0x0d, 0xda, 0x13, 0xde, 0x18, 0xe0, 0x1a, 0x2a, 0x18, 0x38, 0x10, 0x4c, 0x04, 0x9e, 0xf6,
-0x22, 0xea, 0x2d, 0xe1, 0xe7, 0xdc, 0xaf, 0xdc, 0xff, 0xdf, 0x7e, 0xe5, 0xa2, 0xec, 0xd6, 0xf5,
-0xc0, 0x00, 0xa6, 0x0d, 0x26, 0x1b, 0xff, 0x26, 0x0b, 0x2f, 0x01, 0x31, 0x5f, 0x2b, 0xd9, 0x1e,
-0xd0, 0x0c, 0x06, 0xf8, 0x74, 0xe4, 0x3f, 0xd4, 0xf7, 0xc9, 0x37, 0xc6, 0x8b, 0xc8, 0xbf, 0xd0,
-0x1f, 0xde, 0x6c, 0xef, 0xee, 0x03, 0x42, 0x19, 0xc7, 0x2c, 0x4b, 0x3c, 0x79, 0x44, 0xe5, 0x43,
-0x5d, 0x3a, 0x31, 0x28, 0x1e, 0x10, 0x18, 0xf5, 0x8b, 0xda, 0xa1, 0xc4, 0x19, 0xb6, 0x7f, 0xb0,
-0xaf, 0xb4, 0xe5, 0xc1, 0x95, 0xd6, 0xc0, 0xf0, 0xde, 0x0c, 0xd3, 0x27, 0xb9, 0x3e, 0x73, 0x4e,
-0x52, 0x55, 0xd1, 0x51, 0x2f, 0x44, 0x7d, 0x2d, 0x3c, 0x10, 0x48, 0xef, 0x41, 0xcf, 0xc7, 0xb4,
-0xd0, 0xa3, 0x5a, 0x9f, 0x50, 0xa7, 0xf7, 0xba, 0x23, 0xd7, 0xf4, 0xf7, 0xe0, 0x18, 0x37, 0x36,
-0x13, 0x4d, 0x6a, 0x5b, 0xe8, 0x5f, 0x6a, 0x59, 0x6f, 0x48, 0xe5, 0x2d, 0xfa, 0x0b, 0x32, 0xe6,
-0xcd, 0xc1, 0xb0, 0xa4, 0x18, 0x94, 0xbe, 0x92, 0x3c, 0xa0, 0x41, 0xba, 0x4d, 0xdc, 0xe8, 0x00,
-0xe5, 0x23, 0x1d, 0x41, 0xee, 0x56, 0xb8, 0x63, 0xea, 0x65, 0x12, 0x5d, 0xfb, 0x48, 0xb3, 0x2a,
-0x92, 0x04, 0x11, 0xdb, 0x39, 0xb4, 0xa6, 0x97, 0x24, 0x8a, 0xca, 0x8d, 0x32, 0xa1, 0xe5, 0xbf,
-0xd4, 0xe4, 0x42, 0x0a, 0x09, 0x2c, 0x7b, 0x47, 0x66, 0x5b, 0x42, 0x66, 0xc0, 0x66, 0xb8, 0x5b,
-0xa3, 0x44, 0x0d, 0x23, 0xce, 0xf9, 0xb1, 0xce, 0x46, 0xa9, 0x60, 0x90, 0x4e, 0x88, 0x44, 0x91,
-0x58, 0xa8, 0xc9, 0xc8, 0x56, 0xed, 0x12, 0x11, 0xc9, 0x30, 0x63, 0x4a, 0x6c, 0x5c, 0x24, 0x65,
-0xae, 0x62, 0x27, 0x54, 0xeb, 0x39, 0x44, 0x16, 0x50, 0xed, 0x29, 0xc5, 0xd0, 0xa4, 0xa6, 0x91,
-0x6c, 0x8e, 0x6c, 0x9a, 0x87, 0xb2, 0x77, 0xd2, 0x28, 0xf5, 0x8a, 0x16, 0x8d, 0x33, 0x5d, 0x4a,
-0x3a, 0x59, 0x66, 0x5e, 0x6e, 0x58, 0x3f, 0x47, 0x0f, 0x2c, 0xde, 0x09, 0xea, 0xe4, 0xc9, 0xc2,
-0xfc, 0xa8, 0x46, 0x9b, 0x6a, 0x9b, 0x5a, 0xa8, 0x77, 0xbf, 0xe7, 0xdc, 0x46, 0xfc, 0xf2, 0x19,
-0x4f, 0x33, 0x1d, 0x46, 0xd5, 0x50, 0xf7, 0x51, 0x01, 0x49, 0x2b, 0x37, 0x25, 0x1e, 0x14, 0x01,
-0x63, 0xe3, 0xeb, 0xc8, 0x55, 0xb5, 0x5b, 0xab, 0x41, 0xac, 0xbf, 0xb7, 0xf7, 0xcb, 0x96, 0xe5,
-0xce, 0x00, 0x48, 0x1a, 0xe3, 0x2e, 0xdb, 0x3c, 0xaf, 0x42, 0x1f, 0x40, 0x2f, 0x36, 0x7f, 0x26,
-0xfc, 0x12, 0x88, 0xfd, 0x1e, 0xe8, 0xe5, 0xd4, 0x91, 0xc6, 0xf9, 0xbe, 0xf3, 0xbf, 0x79, 0xc9,
-0x1f, 0xda, 0x1c, 0xef, 0x9a, 0x04, 0xc0, 0x17, 0xc5, 0x25, 0x93, 0x2d, 0xfb, 0x2e, 0xb9, 0x2a,
-0xb7, 0x22, 0x54, 0x18, 0x74, 0x0c, 0xba, 0xff, 0x6a, 0xf2, 0xa0, 0xe5, 0x53, 0xdb, 0x1f, 0xd5,
-0xe7, 0xd4, 0x4b, 0xdb, 0xce, 0xe6, 0x54, 0xf5, 0x76, 0x03, 0x92, 0x0e, 0xbc, 0x15, 0x62, 0x18,
-0xa6, 0x17, 0xf8, 0x14, 0xa2, 0x11, 0x7a, 0x0e, 0x40, 0x0b, 0xf0, 0x06, 0x06, 0x01, 0xe6, 0xf9,
-0x86, 0xf2, 0x04, 0xed, 0xd4, 0xea, 0x76, 0xec, 0x4c, 0xf1, 0x28, 0xf7, 0x12, 0xfc, 0x26, 0xff,
-0x20, 0x00, 0x14, 0x00, 0x34, 0x00, 0x70, 0x01, 0x94, 0x04, 0x32, 0x09, 0xe4, 0x0d, 0x46, 0x11,
-0xce, 0x11, 0x4e, 0x0f, 0x96, 0x0a, 0xaa, 0x04, 0x1a, 0xff, 0x46, 0xfa, 0x20, 0xf6, 0x56, 0xf2,
-0x58, 0xee, 0xc2, 0xea, 0x24, 0xe8, 0xc2, 0xe7, 0x96, 0xea, 0x06, 0xf1, 0xfe, 0xfa, 0x2a, 0x07,
-0xa0, 0x13, 0x29, 0x1e, 0xad, 0x24, 0x2d, 0x26, 0x89, 0x22, 0x5e, 0x1a, 0xfa, 0x0e, 0xbe, 0x01,
-0x02, 0xf4, 0x56, 0xe7, 0xa9, 0xdc, 0x17, 0xd5, 0x9d, 0xd1, 0xe9, 0xd2, 0x95, 0xd9, 0x8c, 0xe5,
-0xf6, 0xf5, 0x34, 0x09, 0xed, 0x1c, 0x0f, 0x2e, 0xd3, 0x39, 0xe3, 0x3d, 0x1d, 0x39, 0x53, 0x2c,
-0x54, 0x19, 0x0a, 0x03, 0xca, 0xec, 0xfd, 0xd8, 0xe1, 0xc9, 0xa3, 0xc0, 0xb9, 0xbd, 0xc9, 0xc1,
-0xa1, 0xcc, 0xf7, 0xdd, 0xc8, 0xf4, 0xec, 0x0e, 0x6b, 0x29, 0x4f, 0x40, 0x47, 0x4f, 0x11, 0x53,
-0x9f, 0x4a, 0x31, 0x37, 0x7d, 0x1c, 0xb8, 0xfe, 0x2f, 0xe2, 0x63, 0xca, 0x59, 0xb9, 0x0b, 0xb0,
-0xbf, 0xae, 0x7f, 0xb5, 0x83, 0xc4, 0x45, 0xdb, 0x70, 0xf8, 0x1e, 0x19, 0x55, 0x39, 0x8b, 0x53,
-0xee, 0x62, 0xb4, 0x63, 0xb0, 0x55, 0xc7, 0x3b, 0x8c, 0x1a, 0x9c, 0xf7, 0x55, 0xd7, 0x4d, 0xbd,
-0x87, 0xab, 0xb8, 0xa2, 0x38, 0xa3, 0x4f, 0xad, 0x15, 0xc1, 0xcd, 0xdd, 0x32, 0x01, 0x0b, 0x27,
-0x21, 0x4a, 0x5a, 0x64, 0x98, 0x70, 0x9a, 0x6c, 0x04, 0x59, 0x39, 0x3a, 0x72, 0x15, 0xea, 0xef,
-0x55, 0xce, 0xaf, 0xb3, 0x18, 0xa2, 0x6c, 0x9a, 0x28, 0x9d, 0xdc, 0xaa, 0x91, 0xc3, 0x84, 0xe5,
-0x34, 0x0d, 0x2b, 0x35, 0x78, 0x57, 0xac, 0x6e, 0x8c, 0x76, 0xfe, 0x6d, 0xe6, 0x56, 0x8f, 0x35,
-0x34, 0x0f, 0xa0, 0xe8, 0x2d, 0xc6, 0x5f, 0xab, 0x92, 0x9a, 0x36, 0x95, 0xdc, 0x9b, 0xbb, 0xae,
-0x87, 0xcc, 0x3a, 0xf2, 0xc6, 0x1a, 0xbf, 0x40, 0xf2, 0x5e, 0x2e, 0x71, 0xb8, 0x74, 0x32, 0x69,
-0x9b, 0x50, 0xf7, 0x2e, 0x90, 0x08, 0x21, 0xe2, 0x2f, 0xc0, 0x9e, 0xa6, 0x7e, 0x98, 0xf4, 0x96,
-0x58, 0xa2, 0x83, 0xb9, 0xe1, 0xd9, 0x16, 0xff, 0x3d, 0x24, 0xcb, 0x44, 0x4a, 0x5d, 0x02, 0x6b,
-0xda, 0x6b, 0x98, 0x5f, 0x77, 0x47, 0xbf, 0x26, 0x9c, 0x01, 0xb1, 0xdc, 0x11, 0xbd, 0xca, 0xa6,
-0xc8, 0x9c, 0xe2, 0x9f, 0x47, 0xaf, 0x89, 0xc8, 0xca, 0xe7, 0xe2, 0x08, 0xd3, 0x27, 0x17, 0x42,
-0x4e, 0x55, 0x8c, 0x5f, 0x06, 0x5f, 0xdf, 0x52, 0x29, 0x3c, 0x63, 0x1d, 0xc4, 0xfa, 0x51, 0xd9,
-0x0f, 0xbe, 0xfd, 0xac, 0x18, 0xa8, 0x33, 0xaf, 0x37, 0xc0, 0xfb, 0xd7, 0x98, 0xf2, 0x18, 0x0d,
-0x2b, 0x25, 0x41, 0x39, 0x13, 0x48, 0x8b, 0x4f, 0x49, 0x4e, 0x21, 0x43, 0xaf, 0x2e, 0x6a, 0x13,
-0x5e, 0xf5, 0xb9, 0xd9, 0xf1, 0xc4, 0x03, 0xba, 0xa7, 0xb9, 0xb5, 0xc2, 0x57, 0xd2, 0x88, 0xe5,
-0x7e, 0xf9, 0x90, 0x0c, 0xd7, 0x1d, 0x73, 0x2c, 0x69, 0x37, 0xff, 0x3c, 0xa5, 0x3b, 0x43, 0x32,
-0x71, 0x21, 0x68, 0x0b, 0x34, 0xf4, 0x09, 0xe0, 0x87, 0xd2, 0x19, 0xcd, 0x67, 0xcf, 0x6f, 0xd7,
-0xdb, 0xe2, 0x86, 0xef, 0xf8, 0xfb, 0xb2, 0x07, 0x44, 0x12, 0xaa, 0x1b, 0xfd, 0x22, 0x3f, 0x27,
-0xe5, 0x26, 0x23, 0x21, 0x2c, 0x16, 0x16, 0x08, 0xa8, 0xf9, 0xfc, 0xed, 0xdc, 0xe6, 0x9e, 0xe4,
-0x86, 0xe6, 0xda, 0xea, 0x42, 0xf0, 0x96, 0xf5, 0x72, 0xfa, 0xca, 0xfe, 0x06, 0x03, 0x5e, 0x07,
-0xf8, 0x0b, 0x00, 0x10, 0x88, 0x12, 0xaa, 0x12, 0x2c, 0x10, 0xc0, 0x0b, 0x76, 0x06, 0xc6, 0x01,
-0x7e, 0xfe, 0xcc, 0xfc, 0x12, 0xfc, 0x8e, 0xfb, 0x8a, 0xfa, 0x94, 0xf8, 0xa0, 0xf5, 0x6a, 0xf2,
-0x04, 0xf0, 0xe8, 0xef, 0xb8, 0xf2, 0xac, 0xf8, 0xd0, 0x00, 0x8e, 0x09, 0x1c, 0x11, 0x3a, 0x16,
-0xa4, 0x18, 0xbe, 0x18, 0x1e, 0x17, 0xe8, 0x13, 0x66, 0x0f, 0x0c, 0x09, 0x10, 0x01, 0x36, 0xf7,
-0x5c, 0xec, 0x05, 0xe2, 0x3b, 0xda, 0x7f, 0xd7, 0x41, 0xdb, 0xaa, 0xe5, 0x18, 0xf5, 0x90, 0x06,
-0xc8, 0x16, 0x47, 0x23, 0xe3, 0x2a, 0xd1, 0x2d, 0x91, 0x2c, 0x9d, 0x27, 0x17, 0x1f, 0x24, 0x13,
-0xe4, 0x03, 0x32, 0xf2, 0x89, 0xdf, 0xd3, 0xce, 0x53, 0xc3, 0x45, 0xc0, 0x3b, 0xc7, 0xb1, 0xd7,
-0x0c, 0xef, 0x9e, 0x08, 0x39, 0x20, 0x41, 0x32, 0xab, 0x3d, 0x21, 0x42, 0x43, 0x40, 0x6b, 0x38,
-0x15, 0x2b, 0x84, 0x18, 0xa4, 0x01, 0xf6, 0xe7, 0xc7, 0xce, 0x19, 0xba, 0x07, 0xae, 0xa9, 0xad,
-0xc9, 0xb9, 0xe7, 0xd0, 0xc4, 0xee, 0x44, 0x0e, 0x5d, 0x2a, 0x15, 0x40, 0x93, 0x4d, 0xd3, 0x52,
-0x8b, 0x4f, 0x55, 0x44, 0x59, 0x31, 0xa4, 0x17, 0x46, 0xf9, 0x5d, 0xd9, 0x8b, 0xbc, 0x4e, 0xa7,
-0xa4, 0x9d, 0x72, 0xa1, 0xc3, 0xb2, 0xdf, 0xce, 0x66, 0xf1, 0xf0, 0x14, 0xa9, 0x34, 0x2b, 0x4d,
-0x6c, 0x5c, 0x38, 0x61, 0x0a, 0x5b, 0x7f, 0x4a, 0xc3, 0x30, 0x3e, 0x10, 0x48, 0xec, 0x7f, 0xc9,
-0xfd, 0xac, 0xb4, 0x9a, 0x16, 0x95, 0x10, 0x9d, 0xdb, 0xb1, 0x01, 0xd1, 0x1a, 0xf6, 0xfa, 0x1b,
-0x17, 0x3e, 0x42, 0x58, 0xb0, 0x67, 0x6a, 0x6a, 0xfe, 0x5f, 0xab, 0x49, 0x11, 0x2a, 0xe8, 0x04,
-0x07, 0xdf, 0x2d, 0xbd, 0x86, 0xa3, 0xd2, 0x94, 0x98, 0x92, 0x46, 0x9d, 0x23, 0xb4, 0x23, 0xd5,
-0x42, 0xfc, 0x39, 0x24, 0xbb, 0x47, 0x16, 0x62, 0x72, 0x6f, 0x02, 0x6e, 0xf2, 0x5d, 0x45, 0x42,
-0x03, 0x1f, 0xfa, 0xf8, 0x9d, 0xd4, 0x21, 0xb6, 0x80, 0xa0, 0x4a, 0x95, 0x7a, 0x95, 0x96, 0xa1,
-0xcf, 0xb9, 0x01, 0xdc, 0x24, 0x04, 0xa5, 0x2c, 0x79, 0x4f, 0x52, 0x67, 0x54, 0x70, 0xa4, 0x69,
-0x00, 0x55, 0xb7, 0x36, 0x38, 0x13, 0x96, 0xef, 0x53, 0xcf, 0x79, 0xb5, 0xe6, 0xa3, 0x92, 0x9b,
-0xde, 0x9d, 0x69, 0xab, 0x55, 0xc4, 0x5c, 0xe6, 0xae, 0x0d, 0xbd, 0x33, 0xc7, 0x52, 0x4c, 0x65,
-0xfa, 0x68, 0xd4, 0x5d, 0x25, 0x47, 0x7b, 0x29, 0x64, 0x09, 0x86, 0xea, 0x7d, 0xcf, 0x65, 0xba,
-0x5f, 0xac, 0xb8, 0xa6, 0x42, 0xaa, 0x61, 0xb8, 0x7f, 0xd0, 0xa2, 0xf0, 0xf0, 0x13, 0x05, 0x35,
-0xff, 0x4d, 0xd8, 0x5a, 0x48, 0x5a, 0xcd, 0x4d, 0xc5, 0x38, 0xf1, 0x1e, 0x12, 0x04, 0xbe, 0xea,
-0x01, 0xd5, 0x29, 0xc4, 0x6b, 0xb9, 0x09, 0xb6, 0xfd, 0xba, 0xb9, 0xc8, 0x93, 0xde, 0x10, 0xfa,
-0x20, 0x17, 0xc7, 0x30, 0xbd, 0x42, 0x8d, 0x4a, 0x09, 0x48, 0x63, 0x3c, 0x75, 0x2a, 0x92, 0x15,
-0x48, 0x00, 0xae, 0xec, 0x2b, 0xdc, 0x4b, 0xd0, 0xa3, 0xc9, 0xf3, 0xc8, 0x9b, 0xce, 0x3b, 0xda,
-0x1e, 0xeb, 0xde, 0xfe, 0xe0, 0x12, 0xed, 0x23, 0x9f, 0x2f, 0x23, 0x34, 0x7d, 0x31, 0xcb, 0x28,
-0x47, 0x1c, 0x04, 0x0e, 0xec, 0xff, 0x94, 0xf3, 0xa6, 0xe9, 0x03, 0xe3, 0xcb, 0xdf, 0xfd, 0xdf,
-0x0d, 0xe3, 0xd6, 0xe8, 0xf8, 0xf0, 0x5a, 0xfb, 0x94, 0x06, 0x64, 0x11, 0xc2, 0x19, 0xab, 0x1d,
-0x2d, 0x1d, 0xce, 0x18, 0xd6, 0x11, 0x02, 0x0a, 0xf0, 0x02, 0x6c, 0xfd, 0xde, 0xf9, 0xec, 0xf7,
-0x1e, 0xf7, 0x20, 0xf6, 0x7c, 0xf4, 0xb2, 0xf2, 0xac, 0xf1, 0x90, 0xf2, 0xb8, 0xf5, 0x1a, 0xfb,
-0xf8, 0x00, 0xe6, 0x05, 0xae, 0x08, 0x7a, 0x09, 0x48, 0x09, 0x0e, 0x09, 0xe4, 0x09, 0xb6, 0x0b,
-0x0e, 0x0e, 0x54, 0x0f, 0x0c, 0x0e, 0x0a, 0x09, 0x8a, 0x00, 0x14, 0xf6, 0x1e, 0xec, 0x22, 0xe5,
-0x83, 0xe2, 0x3c, 0xe4, 0x32, 0xe9, 0xc8, 0xef, 0xd0, 0xf6, 0xe8, 0xfd, 0x7a, 0x05, 0x00, 0x0e,
-0x04, 0x17, 0x69, 0x1f, 0x67, 0x25, 0xe5, 0x26, 0x5b, 0x22, 0x78, 0x17, 0x9e, 0x07, 0x7c, 0xf5,
-0x44, 0xe4, 0xdf, 0xd6, 0x71, 0xcf, 0x7f, 0xce, 0x1f, 0xd3, 0x03, 0xdc, 0x02, 0xe8, 0x80, 0xf6,
-0xce, 0x06, 0x04, 0x18, 0x09, 0x28, 0xe3, 0x34, 0xef, 0x3b, 0x4d, 0x3b, 0x31, 0x32, 0x71, 0x21,
-0x1a, 0x0b, 0x38, 0xf2, 0x77, 0xda, 0x7d, 0xc7, 0xf1, 0xbb, 0x0f, 0xb9, 0xa7, 0xbe, 0xa5, 0xcb,
-0xb7, 0xde, 0xc8, 0xf5, 0xee, 0x0e, 0x1b, 0x27, 0xaf, 0x3b, 0x93, 0x49, 0x0f, 0x4f, 0xb7, 0x4a,
-0x03, 0x3d, 0xe5, 0x26, 0x14, 0x0b, 0x64, 0xec, 0xf5, 0xce, 0x17, 0xb7, 0x6e, 0xa8, 0x6e, 0xa5,
-0xd1, 0xad, 0xe3, 0xc0, 0x9d, 0xdb, 0x26, 0xfb, 0xca, 0x1a, 0x01, 0x37, 0x6f, 0x4c, 0x1a, 0x59,
-0x96, 0x5b, 0x89, 0x53, 0xd1, 0x41, 0xdb, 0x27, 0xb8, 0x07, 0x62, 0xe4, 0x8f, 0xc2, 0x88, 0xa7,
-0x1e, 0x98, 0xd2, 0x96, 0x3c, 0xa4, 0xf9, 0xbd, 0x31, 0xe0, 0x40, 0x05, 0x51, 0x28, 0x39, 0x45,
-0x96, 0x59, 0xce, 0x63, 0x54, 0x63, 0x40, 0x58, 0x2b, 0x43, 0x67, 0x25, 0xec, 0x00, 0xa3, 0xd9,
-0xd1, 0xb4, 0x16, 0x99, 0x84, 0x8b, 0xec, 0x8e, 0x64, 0xa2, 0x5b, 0xc2, 0x10, 0xe9, 0x74, 0x10,
-0x57, 0x33, 0x77, 0x4e, 0x56, 0x60, 0xee, 0x67, 0xee, 0x64, 0x1a, 0x57, 0x35, 0x3f, 0x63, 0x1e,
-0x32, 0xf7, 0xf5, 0xcd, 0x48, 0xa9, 0xda, 0x8f, 0xac, 0x86, 0x42, 0x8f, 0xb2, 0xa7, 0xf7, 0xca,
-0xc0, 0xf2, 0x18, 0x19, 0xc7, 0x39, 0xb5, 0x52, 0x18, 0x62, 0x84, 0x67, 0xe8, 0x61, 0xa7, 0x51,
-0x0d, 0x37, 0xee, 0x13, 0x98, 0xeb, 0x63, 0xc3, 0x1e, 0xa2, 0xce, 0x8d, 0x60, 0x8a, 0xa4, 0x97,
-0x9f, 0xb2, 0xdb, 0xd5, 0xa4, 0xfb, 0x05, 0x1f, 0xab, 0x3c, 0x65, 0x52, 0x34, 0x5f, 0xda, 0x61,
-0xe4, 0x59, 0x35, 0x47, 0x0d, 0x2b, 0xec, 0x07, 0xe1, 0xe1, 0x37, 0xbe, 0xfe, 0xa2, 0xc2, 0x94,
-0x90, 0x95, 0x9e, 0xa4, 0xa9, 0xbe, 0x49, 0xdf, 0x6c, 0x01, 0x07, 0x21, 0xeb, 0x3a, 0x71, 0x4d,
-0xd6, 0x56, 0x6c, 0x56, 0xb9, 0x4b, 0xa3, 0x37, 0x4b, 0x1c, 0xb6, 0xfc, 0xbd, 0xdc, 0xc7, 0xc0,
-0xb1, 0xac, 0x92, 0xa3, 0x86, 0xa6, 0xbf, 0xb4, 0xdd, 0xcb, 0x14, 0xe8, 0x74, 0x05, 0x2f, 0x20,
-0xa3, 0x35, 0x89, 0x43, 0x1f, 0x49, 0xc1, 0x45, 0xf9, 0x39, 0x71, 0x27, 0x7e, 0x10, 0xee, 0xf7,
-0x4d, 0xe0, 0xfd, 0xcb, 0x89, 0xbd, 0xf3, 0xb6, 0x71, 0xb9, 0xdb, 0xc4, 0xcf, 0xd7, 0x24, 0xef,
-0x54, 0x07, 0xbd, 0x1c, 0xb9, 0x2c, 0xc9, 0x35, 0x4d, 0x37, 0xef, 0x31, 0xf3, 0x26, 0x90, 0x18,
-0x9c, 0x08, 0xbc, 0xf8, 0x92, 0xe9, 0x29, 0xdc, 0xbb, 0xd1, 0x35, 0xcc, 0x1f, 0xcd, 0xf9, 0xd4,
-0xcd, 0xe2, 0x06, 0xf4, 0x8a, 0x05, 0x38, 0x14, 0x17, 0x1e, 0x21, 0x22, 0x1f, 0x21, 0x42, 0x1c,
-0x7c, 0x15, 0x38, 0x0e, 0x36, 0x07, 0x42, 0x00, 0xc6, 0xf8, 0x9e, 0xf0, 0xf2, 0xe8, 0x7f, 0xe3,
-0x03, 0xe2, 0x4c, 0xe5, 0xc0, 0xec, 0x5c, 0xf6, 0xa2, 0xff, 0x74, 0x06, 0xbe, 0x09, 0x2e, 0x0a,
-0xe8, 0x08, 0xaa, 0x07, 0x90, 0x07, 0xb6, 0x08, 0x68, 0x0a, 0x5a, 0x0b, 0x1c, 0x0a, 0x4c, 0x06,
-0x82, 0x00, 0x6c, 0xfa, 0x78, 0xf5, 0xc2, 0xf2, 0x34, 0xf2, 0xbe, 0xf2, 0x4a, 0xf3, 0xe8, 0xf2,
-0x40, 0xf2, 0x02, 0xf2, 0xaa, 0xf3, 0x14, 0xf8, 0x2e, 0xff, 0x2a, 0x08, 0x5c, 0x11, 0xdc, 0x18,
-0xeb, 0x1c, 0x9b, 0x1c, 0x10, 0x18, 0x0c, 0x10, 0x18, 0x06, 0xb6, 0xfb, 0xca, 0xf1, 0x0a, 0xe9,
-0xa1, 0xe1, 0x73, 0xdc, 0x47, 0xda, 0xf9, 0xdb, 0x37, 0xe2, 0xb2, 0xec, 0xda, 0xfa, 0xce, 0x0a,
-0xda, 0x1a, 0x91, 0x28, 0x99, 0x31, 0x27, 0x34, 0x2b, 0x2f, 0x35, 0x23, 0x1c, 0x12, 0x80, 0xfe,
-0x08, 0xeb, 0xf3, 0xd9, 0x35, 0xcd, 0x09, 0xc6, 0xef, 0xc4, 0x07, 0xca, 0xe5, 0xd4, 0x54, 0xe5,
-0xd2, 0xf9, 0xae, 0x10, 0x4b, 0x27, 0x91, 0x3a, 0x3b, 0x47, 0x39, 0x4a, 0x31, 0x42, 0x01, 0x30,
-0xba, 0x16, 0x7a, 0xfa, 0x77, 0xdf, 0x3d, 0xc9, 0x21, 0xba, 0x2b, 0xb3, 0x37, 0xb4, 0x87, 0xbc,
-0x0d, 0xcc, 0xc3, 0xe1, 0x5e, 0xfc, 0x56, 0x19, 0x95, 0x35, 0xed, 0x4c, 0xf8, 0x5a, 0x20, 0x5c,
-0x1f, 0x4f, 0xfd, 0x35, 0x42, 0x15, 0x6c, 0xf2, 0x9f, 0xd2, 0xe3, 0xb9, 0x7a, 0xaa, 0xc8, 0xa4,
-0x16, 0xa8, 0x1f, 0xb4, 0x31, 0xc8, 0x99, 0xe3, 0x0c, 0x04, 0x6b, 0x26, 0x6f, 0x46, 0x0a, 0x5f,
-0x4e, 0x6b, 0xd2, 0x67, 0xad, 0x54, 0x55, 0x35, 0x68, 0x0f, 0xf2, 0xe8, 0x29, 0xc7, 0xfb, 0xad,
-0x2e, 0x9f, 0xf4, 0x9a, 0xea, 0xa0, 0x7d, 0xb0, 0x7b, 0xc9, 0xf0, 0xe9, 0xf6, 0x0e, 0x31, 0x34,
-0x9f, 0x54, 0x00, 0x6b, 0xf2, 0x72, 0x6a, 0x6a, 0xd7, 0x52, 0x6f, 0x30, 0xec, 0x08, 0xc7, 0xe1,
-0x13, 0xc0, 0x3a, 0xa7, 0x20, 0x99, 0x6a, 0x96, 0xe0, 0x9e, 0x8d, 0xb2, 0x01, 0xd0, 0xa8, 0xf4,
-0x24, 0x1c, 0x6d, 0x41, 0x54, 0x5f, 0x26, 0x71, 0xf4, 0x73, 0x2a, 0x67, 0xff, 0x4c, 0xb1, 0x29,
-0x02, 0x02, 0x51, 0xdb, 0x31, 0xba, 0x7a, 0xa2, 0x46, 0x96, 0x46, 0x96, 0xb2, 0xa2, 0x8d, 0xba,
-0xa7, 0xdb, 0xde, 0x01, 0x2f, 0x28, 0xa5, 0x49, 0xfc, 0x61, 0x50, 0x6e, 0xf8, 0x6c, 0x40, 0x5e,
-0x2d, 0x44, 0xeb, 0x21, 0xf0, 0xfb, 0xe3, 0xd6, 0xd7, 0xb7, 0xa8, 0xa2, 0x96, 0x99, 0x92, 0x9d,
-0xed, 0xad, 0xb3, 0xc8, 0x48, 0xea, 0xca, 0x0d, 0xd3, 0x2e, 0x9d, 0x49, 0xe4, 0x5b, 0xdc, 0x63,
-0xb6, 0x60, 0x6b, 0x52, 0x0b, 0x3a, 0x48, 0x1a, 0xaa, 0xf6, 0x79, 0xd4, 0xa7, 0xb8, 0x40, 0xa7,
-0x8c, 0xa2, 0x66, 0xaa, 0x5b, 0xbd, 0x0d, 0xd8, 0x42, 0xf6, 0xf2, 0x13, 0xd1, 0x2d, 0x37, 0x42,
-0xb5, 0x4f, 0x64, 0x55, 0x03, 0x52, 0x29, 0x45, 0x57, 0x2f, 0x84, 0x12, 0xac, 0xf2, 0xaf, 0xd4,
-0xd1, 0xbd, 0xa1, 0xb1, 0x69, 0xb1, 0x25, 0xbc, 0x1f, 0xcf, 0x6c, 0xe6, 0x9a, 0xfe, 0xaa, 0x14,
-0x4b, 0x27, 0xb7, 0x35, 0x63, 0x3f, 0x59, 0x43, 0x63, 0x40, 0xa1, 0x35, 0x3d, 0x23, 0x38, 0x0b,
-0x40, 0xf1, 0x15, 0xda, 0x13, 0xca, 0x6d, 0xc3, 0x75, 0xc6, 0xff, 0xd0, 0x33, 0xe0, 0xfe, 0xf0,
-0xe6, 0x00, 0x1e, 0x0f, 0xda, 0x1a, 0x67, 0x24, 0x07, 0x2b, 0x33, 0x2e, 0x93, 0x2c, 0x4b, 0x25,
-0x4c, 0x18, 0x4c, 0x07, 0x86, 0xf5, 0x7a, 0xe6, 0x2b, 0xdd, 0x89, 0xda, 0xcf, 0xdd, 0xf6, 0xe4,
-0xca, 0xed, 0x7e, 0xf6, 0x7c, 0xfe, 0x4e, 0x05, 0x32, 0x0b, 0x50, 0x10, 0x90, 0x14, 0xb4, 0x17,
-0xce, 0x18, 0xbe, 0x16, 0x74, 0x11, 0xa0, 0x09, 0x38, 0x01, 0x14, 0xfa, 0x90, 0xf5, 0xc2, 0xf3,
-0x1c, 0xf4, 0x66, 0xf5, 0x9a, 0xf6, 0x8c, 0xf7, 0xbc, 0xf7, 0xe6, 0xf7, 0x38, 0xf8, 0x94, 0xf9,
-0x9e, 0xfc, 0x58, 0x01, 0x3e, 0x07, 0xee, 0x0c, 0x42, 0x11, 0x20, 0x13, 0xdc, 0x12, 0xda, 0x10,
-0xf4, 0x0d, 0xa2, 0x0a, 0xa4, 0x06, 0x0c, 0x02, 0x88, 0xfc, 0x10, 0xf6, 0x20, 0xef, 0x8e, 0xe8,
-0x9b, 0xe3, 0x07, 0xe2, 0xfa, 0xe4, 0x56, 0xed, 0x3a, 0xfa, 0x16, 0x09, 0xf6, 0x16, 0x41, 0x21,
-0xb5, 0x26, 0x81, 0x27, 0x73, 0x24, 0x57, 0x1e, 0xe8, 0x15, 0x76, 0x0b, 0x00, 0xff, 0x4c, 0xf1,
-0x07, 0xe3, 0x29, 0xd6, 0x4f, 0xcd, 0x87, 0xca, 0x57, 0xd0, 0xc5, 0xde, 0xfe, 0xf3, 0xa8, 0x0b,
-0x6f, 0x21, 0x7d, 0x31, 0x7d, 0x3a, 0x61, 0x3c, 0xf3, 0x37, 0xe9, 0x2e, 0x91, 0x21, 0xd0, 0x10,
-0x44, 0xfd, 0xfe, 0xe7, 0x17, 0xd3, 0x9b, 0xc1, 0xd1, 0xb6, 0x31, 0xb6, 0x01, 0xc1, 0x69, 0xd6,
-0x20, 0xf3, 0xd4, 0x11, 0x11, 0x2d, 0x25, 0x41, 0x43, 0x4c, 0x7b, 0x4e, 0xb3, 0x48, 0xd1, 0x3b,
-0x07, 0x29, 0x80, 0x11, 0x44, 0xf6, 0xf3, 0xd9, 0x2b, 0xc0, 0xc9, 0xac, 0x12, 0xa4, 0xec, 0xa7,
-0xe7, 0xb8, 0xb5, 0xd4, 0x02, 0xf7, 0x0c, 0x1a, 0x97, 0x38, 0xdf, 0x4e, 0x1a, 0x5b, 0x2c, 0x5d,
-0xde, 0x54, 0x9f, 0x43, 0xaf, 0x2a, 0xfc, 0x0b, 0x58, 0xea, 0x93, 0xc9, 0x79, 0xae, 0x44, 0x9d,
-0x9e, 0x98, 0x84, 0xa1, 0x55, 0xb7, 0x1d, 0xd7, 0x5e, 0xfc, 0xc5, 0x21, 0x2f, 0x42, 0x26, 0x5a,
-0x1e, 0x67, 0xa2, 0x67, 0xe4, 0x5b, 0x51, 0x45, 0x07, 0x26, 0xa2, 0x01, 0x33, 0xdc, 0xc7, 0xba,
-0x18, 0xa2, 0xae, 0x94, 0x7c, 0x94, 0x66, 0xa1, 0xff, 0xb9, 0xd9, 0xdb, 0x7e, 0x02, 0x2b, 0x29,
-0xe9, 0x4a, 0x5c, 0x63, 0x0c, 0x6f, 0x8a, 0x6c, 0x0a, 0x5c, 0xed, 0x3f, 0x04, 0x1c, 0xcc, 0xf4,
-0xaf, 0xcf, 0x13, 0xb1, 0x8e, 0x9c, 0xa2, 0x93, 0xda, 0x96, 0xd0, 0xa5, 0x77, 0xbf, 0xaf, 0xe1,
-0xd0, 0x08, 0xf5, 0x2f, 0x8f, 0x51, 0xc4, 0x68, 0xaa, 0x71, 0xe0, 0x6a, 0x98, 0x55, 0xbd, 0x35,
-0x30, 0x10, 0x22, 0xea, 0x41, 0xc8, 0x0b, 0xae, 0xe8, 0x9d, 0x6e, 0x98, 0xb6, 0x9d, 0x95, 0xad,
-0x9b, 0xc7, 0xfa, 0xe9, 0x8e, 0x10, 0x85, 0x36, 0xde, 0x55, 0x5e, 0x69, 0x8a, 0x6d, 0xb8, 0x61,
-0xf7, 0x48, 0x0b, 0x28, 0x50, 0x04, 0x53, 0xe2, 0xbf, 0xc5, 0x09, 0xb1, 0x44, 0xa5, 0xac, 0xa2,
-0x7c, 0xa9, 0x01, 0xba, 0x8d, 0xd3, 0x1e, 0xf4, 0xe6, 0x17, 0xa3, 0x39, 0xad, 0x53, 0x66, 0x61,
-0x7a, 0x60, 0x03, 0x52, 0xa7, 0x39, 0xc0, 0x1b, 0x42, 0xfd, 0x9d, 0xe1, 0x49, 0xcb, 0x73, 0xbb,
-0xc1, 0xb2, 0xab, 0xb1, 0xb3, 0xb8, 0x0d, 0xc8, 0xed, 0xde, 0xb0, 0xfb, 0x4a, 0x1a, 0xf3, 0x35,
-0xad, 0x49, 0x3f, 0x52, 0xf3, 0x4e, 0x0f, 0x41, 0xc1, 0x2b, 0x2e, 0x13, 0xce, 0xfa, 0x50, 0xe5,
-0x39, 0xd4, 0x65, 0xc8, 0x71, 0xc2, 0x2d, 0xc3, 0x51, 0xca, 0x11, 0xd8, 0x88, 0xeb, 0x60, 0x02,
-0xa0, 0x19, 0x55, 0x2d, 0x6f, 0x3a, 0xff, 0x3e, 0xcf, 0x3a, 0xef, 0x2e, 0x7d, 0x1e, 0xf6, 0x0b,
-0x5e, 0xfa, 0x9a, 0xeb, 0x77, 0xe0, 0x9f, 0xd9, 0x0b, 0xd7, 0xa9, 0xd8, 0x4f, 0xde, 0x76, 0xe7,
-0x1c, 0xf3, 0x82, 0x00, 0x1a, 0x0e, 0x30, 0x1a, 0xe9, 0x22, 0xaf, 0x26, 0x0b, 0x25, 0xd5, 0x1e,
-0x2e, 0x15, 0x1c, 0x0a, 0x68, 0xff, 0x9c, 0xf6, 0x68, 0xf0, 0x24, 0xed, 0xa2, 0xec, 0x22, 0xee,
-0x24, 0xf0, 0x46, 0xf2, 0xea, 0xf4, 0x5e, 0xf8, 0x92, 0xfd, 0xf6, 0x03, 0x44, 0x0a, 0xfa, 0x0e,
-0x38, 0x11, 0x80, 0x10, 0xbe, 0x0d, 0x50, 0x0a, 0x60, 0x07, 0x02, 0x06, 0xac, 0x05, 0xca, 0x05,
-0x38, 0x05, 0x92, 0x02, 0x76, 0xfd, 0xae, 0xf6, 0xd0, 0xef, 0x28, 0xeb, 0x42, 0xea, 0x22, 0xed,
-0x10, 0xf3, 0x14, 0xfa, 0x7a, 0x00, 0xce, 0x05, 0x4a, 0x0a, 0xa2, 0x0e, 0x82, 0x13, 0x5a, 0x18,
-0x45, 0x1c, 0xb7, 0x1d, 0xac, 0x1a, 0x70, 0x12, 0x9c, 0x05, 0xe6, 0xf5, 0x94, 0xe6, 0x9b, 0xda,
-0x5f, 0xd4, 0xf7, 0xd4, 0x23, 0xdb, 0xfc, 0xe4, 0xd4, 0xf0, 0x78, 0xfd, 0x68, 0x0a, 0x96, 0x17,
-0xd3, 0x23, 0xf1, 0x2d, 0xbf, 0x33, 0x2d, 0x33, 0x55, 0x2b, 0x5d, 0x1c, 0xe8, 0x07, 0xf0, 0xf0,
-0x11, 0xdb, 0xef, 0xc9, 0x9f, 0xc0, 0xc5, 0xbf, 0xff, 0xc6, 0x83, 0xd4, 0x86, 0xe6, 0x6c, 0xfb,
-0x78, 0x11, 0x7f, 0x26, 0x47, 0x38, 0x53, 0x44, 0x6b, 0x48, 0xa7, 0x43, 0xe3, 0x35, 0x79, 0x20,
-0xe0, 0x05, 0x2e, 0xe9, 0x53, 0xce, 0x4f, 0xb9, 0x41, 0xad, 0xff, 0xab, 0x79, 0xb5, 0x35, 0xc8,
-0xd1, 0xe1, 0x5c, 0xff, 0x1d, 0x1d, 0xa7, 0x37, 0x99, 0x4b, 0x9a, 0x56, 0x7a, 0x57, 0x0b, 0x4e,
-0x4d, 0x3b, 0x01, 0x21, 0xdc, 0x01, 0xed, 0xe0, 0x61, 0xc2, 0x88, 0xaa, 0x6e, 0x9d, 0x66, 0x9d,
-0xbc, 0xaa, 0xc3, 0xc3, 0xcc, 0xe4, 0x18, 0x09, 0x77, 0x2b, 0xb9, 0x47, 0xf2, 0x5a, 0x66, 0x63,
-0x8e, 0x60, 0x03, 0x53, 0x63, 0x3c, 0x83, 0x1e, 0xbe, 0xfb, 0x45, 0xd7, 0xcd, 0xb5, 0x9e, 0x9c,
-0x48, 0x90, 0x74, 0x93, 0x4a, 0xa6, 0xfd, 0xc5, 0x2e, 0xed, 0x52, 0x15, 0xcd, 0x38, 0xcf, 0x53,
-0x58, 0x64, 0x80, 0x69, 0x50, 0x63, 0xd7, 0x52, 0x8f, 0x39, 0x1a, 0x19, 0xb0, 0xf3, 0x1d, 0xcd,
-0xaa, 0xaa, 0x7a, 0x92, 0x5a, 0x89, 0x90, 0x91, 0x20, 0xaa, 0x81, 0xce, 0x0a, 0xf8, 0x07, 0x20,
-0x5d, 0x41, 0x38, 0x59, 0x8a, 0x66, 0xd4, 0x68, 0x68, 0x60, 0x23, 0x4e, 0x1d, 0x33, 0xf8, 0x10,
-0x60, 0xea, 0x89, 0xc3, 0xac, 0xa2, 0xd4, 0x8d, 0x6a, 0x89, 0xa4, 0x96, 0xd9, 0xb2, 0xa1, 0xd8,
-0x3e, 0x01, 0x97, 0x26, 0x91, 0x44, 0x52, 0x59, 0xce, 0x63, 0xdc, 0x63, 0x84, 0x59, 0x57, 0x45,
-0xf5, 0x28, 0x2e, 0x06, 0x69, 0xe0, 0x7f, 0xbc, 0x58, 0xa0, 0x3a, 0x91, 0x36, 0x92, 0xbc, 0xa2,
-0x8f, 0xbf, 0x6f, 0xe3, 0x4a, 0x08, 0x49, 0x29, 0x35, 0x43, 0x37, 0x54, 0xd2, 0x5b, 0x64, 0x59,
-0x1b, 0x4d, 0x09, 0x38, 0xc4, 0x1b, 0x20, 0xfb, 0xb7, 0xd9, 0x29, 0xbc, 0xcc, 0xa6, 0x8a, 0x9d,
-0x74, 0xa1, 0x07, 0xb2, 0x39, 0xcc, 0x6c, 0xeb, 0x48, 0x0b, 0x85, 0x27, 0x69, 0x3d, 0x19, 0x4b,
-0xb5, 0x4f, 0xdd, 0x4a, 0x7b, 0x3d, 0xbb, 0x28, 0x18, 0x0f, 0xae, 0xf3, 0x99, 0xd9, 0xd9, 0xc3,
-0x4f, 0xb5, 0x85, 0xaf, 0x1f, 0xb4, 0x2f, 0xc2, 0xc9, 0xd7, 0xba, 0xf1, 0x22, 0x0c, 0x5f, 0x23,
-0x91, 0x34, 0x0b, 0x3e, 0xfb, 0x3e, 0x6f, 0x38, 0xed, 0x2a, 0x2c, 0x19, 0x6a, 0x05, 0xec, 0xf1,
-0xa1, 0xe0, 0x73, 0xd2, 0xa1, 0xc8, 0xbd, 0xc4, 0xa1, 0xc7, 0x8d, 0xd1, 0x9b, 0xe1, 0x40, 0xf5,
-0x4c, 0x09, 0xa6, 0x1a, 0x67, 0x26, 0xab, 0x2b, 0x7d, 0x2a, 0xa3, 0x23, 0x90, 0x19, 0xca, 0x0d,
-0x78, 0x02, 0x46, 0xf8, 0x3a, 0xef, 0x04, 0xe7, 0x2d, 0xe0, 0xb1, 0xdb, 0x3b, 0xdb, 0xf7, 0xdf,
-0x38, 0xe9, 0xb6, 0xf5, 0x8a, 0x02, 0x00, 0x0d, 0x7a, 0x13, 0x3e, 0x15, 0x58, 0x13, 0x62, 0x0f,
-0xfc, 0x0a, 0x70, 0x07, 0x30, 0x05, 0x7a, 0x03, 0x1c, 0x01, 0x3e, 0xfd, 0xcc, 0xf7, 0x44, 0xf2,
-0x2c, 0xee, 0xdc, 0xec, 0xc2, 0xee, 0xc4, 0xf2, 0x3a, 0xf7, 0x9a, 0xfa, 0x1e, 0xfc, 0x84, 0xfc,
-0xf2, 0xfc, 0x96, 0xfe, 0x08, 0x02, 0x54, 0x07, 0x46, 0x0d, 0x7a, 0x12, 0x0e, 0x15, 0xd2, 0x13,
-0xe8, 0x0e, 0x36, 0x07, 0x60, 0xfe, 0xf6, 0xf5, 0x04, 0xef, 0xc8, 0xe9, 0x1a, 0xe6, 0xbb, 0xe3,
-0x37, 0xe3, 0x3e, 0xe5, 0xa6, 0xea, 0x44, 0xf3, 0xac, 0xfe, 0x8a, 0x0b, 0x94, 0x18, 0x59, 0x23,
-0xfb, 0x29, 0xcf, 0x2a, 0x29, 0x25, 0xea, 0x19, 0x62, 0x0a, 0x38, 0xf9, 0xa2, 0xe8, 0xcf, 0xda,
-0xd3, 0xd0, 0xd7, 0xcb, 0x25, 0xcc, 0x0b, 0xd2, 0x15, 0xdd, 0x56, 0xec, 0xb0, 0xfe, 0x7a, 0x12,
-0x65, 0x25, 0x4b, 0x35, 0x27, 0x3f, 0xe5, 0x40, 0x2f, 0x39, 0x9b, 0x28, 0x8c, 0x11, 0x6a, 0xf7,
-0x5d, 0xde, 0xb7, 0xc9, 0x5d, 0xbc, 0xef, 0xb6, 0xdd, 0xb9, 0xdd, 0xc3, 0x2b, 0xd4, 0x58, 0xe9,
-0x82, 0x01, 0xda, 0x1a, 0xd7, 0x32, 0x6b, 0x46, 0x1b, 0x52, 0xf5, 0x52, 0x57, 0x47, 0x61, 0x30,
-0x8a, 0x11, 0xbc, 0xef, 0xbd, 0xd0, 0xe9, 0xb8, 0xe8, 0xaa, 0x66, 0xa7, 0x3b, 0xad, 0x53, 0xbb,
-0x09, 0xd0, 0x06, 0xea, 0x5a, 0x07, 0xb7, 0x25, 0xe1, 0x41, 0xe0, 0x57, 0x50, 0x63, 0x9a, 0x60,
-0x39, 0x4f, 0x1b, 0x31, 0x8c, 0x0b, 0xd8, 0xe4, 0x01, 0xc3, 0xb6, 0xaa, 0xf0, 0x9d, 0x96, 0x9c,
-0x5a, 0xa5, 0x19, 0xb7, 0x31, 0xd0, 0xf4, 0xee, 0xf6, 0x10, 0x15, 0x33, 0x5b, 0x51, 0xaa, 0x66,
-0xb6, 0x6e, 0xd4, 0x66, 0x6d, 0x4f, 0x55, 0x2c, 0x5e, 0x03, 0x07, 0xdb, 0x1b, 0xb9, 0xd8, 0xa1,
-0xa0, 0x96, 0x42, 0x97, 0x9c, 0xa2, 0x87, 0xb7, 0x83, 0xd4, 0x2e, 0xf7, 0x75, 0x1c, 0x03, 0x40,
-0x14, 0x5d, 0xfa, 0x6e, 0xe8, 0x71, 0xae, 0x64, 0x5d, 0x49, 0x4d, 0x24, 0x08, 0xfb, 0x93, 0xd3,
-0x0f, 0xb3, 0x2a, 0x9d, 0x9a, 0x93, 0x52, 0x96, 0xb0, 0xa4, 0x61, 0xbd, 0x41, 0xde, 0xd4, 0x03,
-0xaf, 0x29, 0x0b, 0x4b, 0x78, 0x63, 0x54, 0x6f, 0xca, 0x6c, 0x48, 0x5c, 0x0b, 0x40, 0x26, 0x1c,
-0x0c, 0xf5, 0xcb, 0xcf, 0x41, 0xb1, 0x5e, 0x9d, 0xf6, 0x95, 0x9e, 0x9b, 0x65, 0xad, 0x57, 0xc9,
-0x16, 0xec, 0xd8, 0x10, 0x15, 0x33, 0xbd, 0x4e, 0xb8, 0x60, 0x32, 0x67, 0xa0, 0x61, 0x81, 0x50,
-0xdd, 0x35, 0x88, 0x14, 0x44, 0xf0, 0xf9, 0xcd, 0x81, 0xb2, 0xa2, 0xa1, 0xa4, 0x9d, 0x90, 0xa6,
-0x2b, 0xbb, 0x2b, 0xd8, 0x20, 0xf9, 0x78, 0x19, 0x4d, 0x35, 0x23, 0x4a, 0x7c, 0x56, 0xca, 0x59,
-0x5d, 0x53, 0xe7, 0x43, 0xfd, 0x2b, 0x16, 0x0e, 0xa4, 0xed, 0x49, 0xcf, 0xe9, 0xb7, 0x4f, 0xab,
-0x1e, 0xab, 0xcd, 0xb6, 0x0b, 0xcc, 0xa4, 0xe6, 0x64, 0x02, 0xa6, 0x1b, 0x05, 0x30, 0x8f, 0x3e,
-0xd7, 0x46, 0x67, 0x48, 0xe1, 0x42, 0xdb, 0x35, 0xe9, 0x21, 0x9e, 0x08, 0x82, 0xed, 0xbd, 0xd4,
-0xf7, 0xc2, 0x05, 0xbb, 0xf7, 0xbd, 0x5f, 0xca, 0xd9, 0xdc, 0x04, 0xf2, 0x2c, 0x06, 0x66, 0x17,
-0xa1, 0x24, 0xe1, 0x2d, 0x35, 0x33, 0x5d, 0x34, 0xa3, 0x30, 0x65, 0x27, 0xc4, 0x18, 0xf2, 0x05,
-0xdc, 0xf1, 0x1f, 0xe0, 0x17, 0xd4, 0x3d, 0xd0, 0x1f, 0xd4, 0x05, 0xde, 0xee, 0xea, 0x2c, 0xf8,
-0x06, 0x04, 0x9c, 0x0d, 0xd6, 0x14, 0x00, 0x1a, 0x8d, 0x1d, 0x2b, 0x1f, 0x5b, 0x1e, 0x26, 0x1a,
-0x38, 0x12, 0x9a, 0x07, 0xe2, 0xfb, 0xa4, 0xf1, 0xf4, 0xea, 0xbc, 0xe8, 0xaa, 0xea, 0x14, 0xef,
-0x4e, 0xf4, 0x1a, 0xf9, 0xee, 0xfc, 0x6c, 0xff, 0x58, 0x01, 0x24, 0x03, 0xae, 0x05, 0x1a, 0x09,
-0xa8, 0x0c, 0x86, 0x0f, 0xa2, 0x10, 0x88, 0x0f, 0x96, 0x0c, 0x96, 0x08, 0x72, 0x04, 0x12, 0x01,
-0x34, 0xfe, 0x86, 0xfb, 0xc6, 0xf8, 0xb6, 0xf5, 0x3e, 0xf2, 0xf2, 0xee, 0x44, 0xec, 0xce, 0xeb,
-0x96, 0xee, 0x42, 0xf5, 0x3e, 0xff, 0xd6, 0x0a, 0xb2, 0x15, 0xc5, 0x1d, 0x6b, 0x21, 0xb7, 0x20,
-0x77, 0x1c, 0x8e, 0x15, 0x2a, 0x0d, 0xd0, 0x03, 0xfa, 0xf9, 0xd4, 0xef, 0xee, 0xe5, 0xdd, 0xdc,
-0xab, 0xd6, 0x09, 0xd5, 0xe5, 0xd9, 0xba, 0xe5, 0x4c, 0xf7, 0xc6, 0x0b, 0x51, 0x1f, 0x0d, 0x2e,
-0xe9, 0x35, 0x7b, 0x36, 0xc9, 0x30, 0x79, 0x26, 0xfc, 0x18, 0x5c, 0x09, 0x8a, 0xf8, 0x3a, 0xe7,
-0x81, 0xd6, 0xd7, 0xc8, 0x4b, 0xc0, 0x13, 0xc0, 0x45, 0xc9, 0x47, 0xdc, 0x20, 0xf6, 0xde, 0x12,
-0xeb, 0x2c, 0x15, 0x40, 0xed, 0x49, 0x19, 0x4a, 0x41, 0x42, 0xd3, 0x33, 0x11, 0x21, 0x0c, 0x0b,
-0x2e, 0xf3, 0x11, 0xdb, 0x2f, 0xc5, 0x9b, 0xb4, 0xcd, 0xac, 0x0f, 0xb0, 0x77, 0xbf, 0x93, 0xd9,
-0xa4, 0xfa, 0xcf, 0x1c, 0x9f, 0x3a, 0x83, 0x4f, 0x7c, 0x59, 0x8c, 0x58, 0xbf, 0x4d, 0x67, 0x3b,
-0xfb, 0x22, 0xb0, 0x06, 0x46, 0xe8, 0x09, 0xcb, 0x53, 0xb2, 0x76, 0xa2, 0x18, 0x9e, 0xde, 0xa6,
-0x7d, 0xbc, 0x03, 0xdc, 0x3e, 0x01, 0x3b, 0x26, 0xb9, 0x45, 0xba, 0x5b, 0x22, 0x66, 0x40, 0x64,
-0xfe, 0x56, 0x35, 0x40, 0xf7, 0x21, 0x4a, 0xff, 0x79, 0xdb, 0x2d, 0xbb, 0xfa, 0xa2, 0x34, 0x96,
-0xe6, 0x96, 0x0e, 0xa5, 0xfb, 0xbe, 0xb1, 0xe1, 0x9a, 0x08, 0x95, 0x2e, 0xb9, 0x4e, 0xfc, 0x64,
-0x72, 0x6e, 0x48, 0x6a, 0xfa, 0x58, 0xb1, 0x3c, 0x14, 0x19, 0x00, 0xf2, 0xab, 0xcc, 0xcf, 0xad,
-0x92, 0x99, 0x00, 0x92, 0xa2, 0x97, 0x50, 0xa9, 0x5b, 0xc5, 0xae, 0xe8, 0x58, 0x0f, 0x1f, 0x35,
-0xe2, 0x54, 0x6c, 0x6a, 0x14, 0x72, 0x86, 0x6a, 0xab, 0x54, 0x1d, 0x34, 0x36, 0x0d, 0xa6, 0xe5,
-0x79, 0xc2, 0xdc, 0xa7, 0xb2, 0x98, 0x6a, 0x95, 0xb4, 0x9d, 0x79, 0xb0, 0x5f, 0xcc, 0x24, 0xef,
-0x40, 0x15, 0x1d, 0x3a, 0xbc, 0x58, 0x00, 0x6c, 0x24, 0x70, 0x66, 0x64, 0xdd, 0x4a, 0xf3, 0x27,
-0x76, 0x01, 0x6f, 0xdc, 0xd5, 0xbd, 0xb4, 0xa8, 0x46, 0x9e, 0x90, 0x9e, 0x9c, 0xa8, 0xb1, 0xbb,
-0xa7, 0xd6, 0x86, 0xf7, 0xe8, 0x1a, 0xb7, 0x3c, 0x60, 0x57, 0x30, 0x66, 0x32, 0x66, 0x0e, 0x57,
-0x5f, 0x3c, 0xd6, 0x1a, 0x00, 0xf8, 0x8d, 0xd8, 0x0d, 0xc0, 0x61, 0xb0, 0xfa, 0xa9, 0x53, 0xac,
-0xab, 0xb6, 0xd9, 0xc8, 0x6f, 0xe1, 0xf6, 0xfe, 0x1b, 0x1e, 0xa9, 0x3a, 0xe7, 0x4f, 0x92, 0x59,
-0xe6, 0x55, 0xf1, 0x45, 0x3f, 0x2d, 0x92, 0x10, 0x68, 0xf4, 0x25, 0xdc, 0xfb, 0xc9, 0x27, 0xbf,
-0x35, 0xbb, 0x21, 0xbe, 0x9d, 0xc7, 0x1f, 0xd7, 0x04, 0xec, 0x3e, 0x04, 0x4f, 0x1d, 0x39, 0x33,
-0x61, 0x42, 0x9f, 0x47, 0x63, 0x42, 0x0b, 0x34, 0xe1, 0x1f, 0xba, 0x09, 0xa4, 0xf4, 0x3b, 0xe3,
-0xa9, 0xd6, 0x99, 0xcf, 0xf3, 0xcd, 0x57, 0xd1, 0x51, 0xd9, 0x5e, 0xe5, 0x60, 0xf4, 0xf2, 0x04,
-0x40, 0x15, 0x0d, 0x23, 0x49, 0x2c, 0x71, 0x2f, 0xf9, 0x2b, 0x0f, 0x23, 0x68, 0x16, 0x4a, 0x08,
-0x02, 0xfb, 0xf2, 0xef, 0x22, 0xe8, 0x50, 0xe4, 0x28, 0xe4, 0xfc, 0xe6, 0xd6, 0xeb, 0xb6, 0xf1,
-0x52, 0xf8, 0x8e, 0xff, 0x02, 0x07, 0x82, 0x0e, 0xe0, 0x14, 0x8a, 0x18, 0xd4, 0x18, 0xb4, 0x15,
-0xf6, 0x0f, 0x2e, 0x09, 0xf4, 0x02, 0x4a, 0xfe, 0xc6, 0xfb, 0xe6, 0xfa, 0x34, 0xfb, 0x46, 0xfb,
-0x3c, 0xfa, 0xf8, 0xf7, 0x52, 0xf5, 0x76, 0xf3, 0xb4, 0xf3, 0xa0, 0xf6, 0xa6, 0xfb, 0xb2, 0x01,
-0xe0, 0x06, 0x9c, 0x0a, 0xcc, 0x0c, 0x3c, 0x0e, 0x96, 0x0f, 0x22, 0x11, 0x8c, 0x12, 0x08, 0x13,
-0x30, 0x11, 0xde, 0x0b, 0xce, 0x02, 0x28, 0xf7, 0x28, 0xeb, 0x9d, 0xe1, 0xaf, 0xdc, 0xc9, 0xdd,
-0x3a, 0xe4, 0x22, 0xee, 0x68, 0xf9, 0x2e, 0x04, 0x34, 0x0e, 0x38, 0x17, 0x67, 0x1f, 0xdb, 0x25,
-0xab, 0x29, 0x1b, 0x29, 0xf7, 0x22, 0xac, 0x16, 0x22, 0x05, 0x2c, 0xf1, 0xd3, 0xdd, 0xe7, 0xce,
-0x0b, 0xc7, 0x81, 0xc7, 0xb5, 0xcf, 0x95, 0xdd, 0xb4, 0xee, 0x08, 0x01, 0x7c, 0x13, 0x75, 0x24,
-0xc9, 0x32, 0x71, 0x3c, 0xb7, 0x3f, 0x79, 0x3b, 0xfb, 0x2e, 0x48, 0x1b, 0x84, 0x02, 0x22, 0xe8,
-0xdb, 0xcf, 0x71, 0xbd, 0xb1, 0xb3, 0x1f, 0xb4, 0x6b, 0xbe, 0xbf, 0xd0, 0xaa, 0xe8, 0x58, 0x03,
-0xc7, 0x1d, 0x6d, 0x35, 0x31, 0x47, 0x21, 0x51, 0x95, 0x51, 0x21, 0x48, 0x8f, 0x35, 0xbc, 0x1b,
-0xa4, 0xfd, 0xab, 0xde, 0xe9, 0xc2, 0xd3, 0xad, 0x24, 0xa3, 0x5a, 0xa4, 0xd9, 0xb1, 0xfb, 0xc9,
-0x52, 0xe9, 0xb8, 0x0b, 0x75, 0x2c, 0x49, 0x47, 0x0e, 0x59, 0x10, 0x60, 0xc0, 0x5b, 0x0b, 0x4d,
-0xad, 0x35, 0xe0, 0x17, 0x82, 0xf6, 0xd1, 0xd4, 0x9d, 0xb6, 0x5c, 0xa0, 0xb0, 0x95, 0x5c, 0x99,
-0x8f, 0xab, 0x13, 0xca, 0x38, 0xf0, 0xf2, 0x17, 0x67, 0x3b, 0x26, 0x56, 0x8a, 0x65, 0x94, 0x68,
-0x08, 0x60, 0x5d, 0x4d, 0xcb, 0x32, 0xa0, 0x12, 0x1e, 0xef, 0x91, 0xcb, 0x1d, 0xac, 0xbe, 0x95,
-0x16, 0x8d, 0xdc, 0x94, 0xcb, 0xac, 0x5d, 0xd1, 0xf0, 0xfb, 0x37, 0x25, 0x5b, 0x47, 0xb0, 0x5e,
-0xf4, 0x69, 0x60, 0x69, 0x16, 0x5e, 0xa5, 0x49, 0xcd, 0x2d, 0xf2, 0x0b, 0xe8, 0xe6, 0x55, 0xc2,
-0x7c, 0xa3, 0xbe, 0x8f, 0x58, 0x8b, 0x2a, 0x98, 0x95, 0xb4, 0xaf, 0xdb, 0x5e, 0x06, 0xe3, 0x2d,
-0xfd, 0x4c, 0x26, 0x61, 0x68, 0x69, 0x1c, 0x66, 0x96, 0x58, 0x4b, 0x42, 0xd9, 0x24, 0x56, 0x02,
-0x87, 0xdd, 0xf5, 0xba, 0xb0, 0x9f, 0xc0, 0x90, 0x64, 0x91, 0x5a, 0xa2, 0xdb, 0xc0, 0x6a, 0xe7,
-0x4e, 0x0f, 0x45, 0x32, 0xb9, 0x4c, 0x7a, 0x5c, 0x70, 0x61, 0xe2, 0x5b, 0xf5, 0x4c, 0x19, 0x36,
-0xfa, 0x18, 0xde, 0xf7, 0x25, 0xd6, 0x5b, 0xb8, 0x14, 0xa3, 0x0e, 0x9a, 0x06, 0x9f, 0x59, 0xb1,
-0x41, 0xce, 0x98, 0xf0, 0xf8, 0x12, 0xaf, 0x30, 0xab, 0x46, 0x75, 0x53, 0x4e, 0x56, 0x93, 0x4f,
-0x17, 0x40, 0x9b, 0x29, 0x14, 0x0e, 0x78, 0xf0, 0x47, 0xd4, 0x47, 0xbd, 0xb9, 0xae, 0x44, 0xaa,
-0xb1, 0xb0, 0x21, 0xc1, 0x51, 0xd9, 0xb4, 0xf5, 0xec, 0x11, 0x47, 0x2a, 0x09, 0x3c, 0xa9, 0x45,
-0x61, 0x46, 0xb1, 0x3e, 0xb3, 0x2f, 0x6c, 0x1b, 0x7e, 0x04, 0x82, 0xed, 0x61, 0xd9, 0xeb, 0xc9,
-0x95, 0xc0, 0x17, 0xbe, 0x05, 0xc3, 0x55, 0xcf, 0xd1, 0xe1, 0xdc, 0xf7, 0x1c, 0x0e, 0x39, 0x21,
-0x97, 0x2e, 0xc5, 0x34, 0x77, 0x33, 0x73, 0x2b, 0xa9, 0x1e, 0x42, 0x0f, 0xa4, 0xff, 0xa2, 0xf1,
-0x10, 0xe6, 0x35, 0xdd, 0x31, 0xd7, 0x97, 0xd4, 0x69, 0xd6, 0x69, 0xdd, 0x1a, 0xe9, 0xf2, 0xf7,
-0x44, 0x07, 0x38, 0x14, 0xa3, 0x1c, 0x69, 0x1f, 0xfd, 0x1c, 0xea, 0x16, 0x26, 0x0f, 0x86, 0x07,
-0x06, 0x01, 0xb2, 0xfb, 0x10, 0xf7, 0xa2, 0xf2, 0xa0, 0xee, 0x0e, 0xec, 0xba, 0xeb, 0xec, 0xed,
-0xea, 0xf1, 0x6c, 0xf6, 0x58, 0xfa, 0x1c, 0xfd, 0x98, 0xfe, 0x3e, 0xff, 0x68, 0xff, 0x2e, 0xff,
-0xc4, 0xfe, 0x1e, 0xfe, 0x96, 0xfd, 0x34, 0xfd, 0x04, 0xfd, 0xda, 0xfc, 0xc4, 0xfc, 0xa6, 0xfc,
-0x8e, 0xfc, 0x76, 0xfc, 0x42, 0xfc, 0x2a, 0xfc, 0x34, 0xfc, 0x54, 0xfc, 0x88, 0xfc, 0xb8, 0xfc,
-0xda, 0xfc, 0x16, 0xfd, 0x4c, 0xfd, 0x78, 0xfd, 0x9e, 0xfd, 0xb4, 0xfd, 0xbc, 0xfd, 0xc8, 0xfd,
-0xcc, 0xfd, 0xe8, 0xfd, 0xf0, 0xfd, 0xe2, 0xfd, 0xd6, 0xfd, 0xce, 0xfd, 0xfc, 0xfd, 0x14, 0xfe,
-0x12, 0xfe, 0xf2, 0xfd, 0xda, 0xfd, 0xc2, 0xfd, 0xb4, 0xfd, 0xb2, 0xfd, 0xc4, 0xfd, 0xfa, 0xfd,
-0x2e, 0xfe, 0x56, 0xfe, 0x7c, 0xfe, 0x9a, 0xfe, 0xae, 0xfe, 0xb6, 0xfe, 0xa0, 0xfe, 0x76, 0xfe,
-0x3c, 0xfe, 0xfe, 0xfd, 0xf4, 0xfd, 0x26, 0xfe, 0x78, 0xfe, 0xdc, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe,
-0xfa, 0xfe, 0x04, 0xff, 0x28, 0xff, 0x30, 0xff, 0x18, 0xff, 0xe4, 0xfe, 0xc2, 0xfe, 0xb4, 0xfe,
-0xbe, 0xfe, 0xda, 0xfe, 0xe8, 0xfe, 0xe6, 0xfe, 0xe2, 0xfe, 0xee, 0xfe, 0x1e, 0xff, 0x70, 0xff,
-0xc2, 0xff, 0x04, 0x00, 0x44, 0x00, 0x84, 0x00, 0xa2, 0x00, 0x8c, 0x00, 0x5c, 0x00, 0x14, 0x00,
-0xc8, 0xff, 0x72, 0xff, 0x1a, 0xff, 0xe0, 0xfe, 0xca, 0xfe, 0xc4, 0xfe, 0xd6, 0xfe, 0x00, 0xff,
-0x50, 0xff, 0xba, 0xff, 0x28, 0x00, 0x84, 0x00, 0xc4, 0x00, 0xdc, 0x00, 0xd0, 0x00, 0xb0, 0x00,
-0x82, 0x00, 0x58, 0x00, 0x26, 0x00, 0xde, 0xff, 0x76, 0xff, 0x1c, 0xff, 0xde, 0xfe, 0xd6, 0xfe,
-0xee, 0xfe, 0x1e, 0xff, 0x64, 0xff, 0xb0, 0xff, 0xf8, 0xff, 0x36, 0x00, 0x6e, 0x00, 0x9a, 0x00,
-0xc0, 0x00, 0xbe, 0x00, 0x96, 0x00, 0x66, 0x00, 0x40, 0x00, 0x20, 0x00, 0x0c, 0x00, 0xfc, 0xff,
-0xf0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x38, 0x00, 0x74, 0x00, 0xa8, 0x00, 0xcc, 0x00,
-0xec, 0x00, 0xfc, 0x00, 0xee, 0x00, 0xbc, 0x00, 0x6c, 0x00, 0x22, 0x00, 0xec, 0xff, 0xc8, 0xff,
-0xb6, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb8, 0xff, 0xc6, 0xff, 0xe8, 0xff, 0x24, 0x00, 0x74, 0x00,
-0xbc, 0x00, 0xe8, 0x00, 0x10, 0x01, 0x24, 0x01, 0x24, 0x01, 0xf8, 0x00, 0xb6, 0x00, 0x68, 0x00,
-0x24, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xf2, 0xff, 0x24, 0x00, 0x4e, 0x00, 0x70, 0x00,
-0xae, 0x00, 0xf0, 0x00, 0x36, 0x01, 0x64, 0x01, 0x7a, 0x01, 0x70, 0x01, 0x3e, 0x01, 0xf6, 0x00,
-0x92, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xf4, 0xff,
-0x0e, 0x00, 0x38, 0x00, 0x7a, 0x00, 0xb8, 0x00, 0xea, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xee, 0x00,
-0xe8, 0x00, 0xcc, 0x00, 0x90, 0x00, 0x72, 0x00, 0x56, 0x00, 0x46, 0x00, 0x36, 0x00, 0x20, 0x00,
-0x10, 0x00, 0x08, 0x00, 0x16, 0x00, 0x4c, 0x00, 0x92, 0x00, 0xda, 0x00, 0x04, 0x01, 0xfe, 0x00,
-0xf8, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xd6, 0x00, 0x94, 0x00, 0x58, 0x00, 0x44, 0x00, 0x54, 0x00,
-0x7e, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x8a, 0x00,
-0xa8, 0x00, 0x9a, 0x00, 0x8a, 0x00, 0x94, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x96, 0x00,
-0x9c, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x76, 0x00, 0x70, 0x00,
-0x60, 0x00, 0x72, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xc0, 0x00, 0xe6, 0x00, 0xee, 0x00, 0xd4, 0x00,
-0xa8, 0x00, 0x8e, 0x00, 0x98, 0x00, 0xa8, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xae, 0x00, 0xb4, 0x00,
-0xbe, 0x00, 0xc8, 0x00, 0xd4, 0x00, 0xca, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x70, 0x00, 0x68, 0x00,
-0x7e, 0x00, 0x92, 0x00, 0xa0, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xc6, 0x00,
-0xc8, 0x00, 0xcc, 0x00, 0xc2, 0x00, 0xa2, 0x00, 0x8e, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x72, 0x00,
-0x5a, 0x00, 0x54, 0x00, 0x52, 0x00, 0x50, 0x00, 0x52, 0x00, 0x5c, 0x00, 0x84, 0x00, 0xb4, 0x00,
-0xd4, 0x00, 0xe4, 0x00, 0xda, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x60, 0x00, 0x3e, 0x00, 0x30, 0x00,
-0x2a, 0x00, 0x3a, 0x00, 0x50, 0x00, 0x6c, 0x00, 0x9e, 0x00, 0xc2, 0x00, 0xd6, 0x00, 0xe0, 0x00,
-0xe6, 0x00, 0xee, 0x00, 0xe4, 0x00, 0xd2, 0x00, 0xba, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x48, 0x00,
-0x1c, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x78, 0x00, 0xba, 0x00,
-0xf4, 0x00, 0x04, 0x01, 0x08, 0x01, 0xe2, 0x00, 0xac, 0x00, 0x68, 0x00, 0x42, 0x00, 0x20, 0x00,
-0x06, 0x00, 0xec, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xee, 0xff, 0x10, 0x00, 0x42, 0x00,
-0x8a, 0x00, 0xc4, 0x00, 0xfe, 0x00, 0x0e, 0x01, 0x16, 0x01, 0x0a, 0x01, 0xe2, 0x00, 0xb0, 0x00,
-0x74, 0x00, 0x44, 0x00, 0x02, 0x00, 0xbe, 0xff, 0x94, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xe4, 0xff,
-0x24, 0x00, 0x60, 0x00, 0xa0, 0x00, 0xc8, 0x00, 0xf0, 0x00, 0x08, 0x01, 0x1e, 0x01, 0x16, 0x01,
-0xdc, 0x00, 0x98, 0x00, 0x58, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xaa, 0xff, 0x8c, 0xff,
-0x88, 0xff, 0xa8, 0xff, 0xe0, 0xff, 0x32, 0x00, 0x7a, 0x00, 0xc4, 0x00, 0xfc, 0x00, 0x2c, 0x01,
-0x2e, 0x01, 0x1a, 0x01, 0xf0, 0x00, 0xa0, 0x00, 0x54, 0x00, 0x18, 0x00, 0xd0, 0xff, 0x90, 0xff,
-0x6a, 0xff, 0x6e, 0xff, 0x90, 0xff, 0xc4, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x7e, 0x00, 0xc8, 0x00,
-0x06, 0x01, 0x30, 0x01, 0x22, 0x01, 0xf4, 0x00, 0xb4, 0x00, 0x62, 0x00, 0x2c, 0x00, 0x02, 0x00,
-0xda, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x94, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x28, 0x00, 0x50, 0x00,
-0x6c, 0x00, 0xa6, 0x00, 0xd8, 0x00, 0xee, 0x00, 0xf2, 0x00, 0xd0, 0x00, 0x9c, 0x00, 0x52, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xc4, 0xff, 0xec, 0xff,
-0x22, 0x00, 0x4a, 0x00, 0x80, 0x00, 0xa8, 0x00, 0xbe, 0x00, 0xc6, 0x00, 0xba, 0x00, 0xa0, 0x00,
-0x7e, 0x00, 0x4a, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xe2, 0xff,
-0xe6, 0xff, 0x06, 0x00, 0x30, 0x00, 0x4e, 0x00, 0x7e, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0xa8, 0x00,
-0x96, 0x00, 0x82, 0x00, 0x64, 0x00, 0x3c, 0x00, 0x10, 0x00, 0xea, 0xff, 0xd4, 0xff, 0xc6, 0xff,
-0xca, 0xff, 0xc6, 0xff, 0xda, 0xff, 0xfa, 0xff, 0x14, 0x00, 0x40, 0x00, 0x60, 0x00, 0x74, 0x00,
-0x7e, 0x00, 0x82, 0x00, 0x82, 0x00, 0x74, 0x00, 0x58, 0x00, 0x2e, 0x00, 0x14, 0x00, 0xfc, 0xff,
-0xe4, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x18, 0x00, 0x30, 0x00,
-0x54, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x66, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x30, 0x00,
-0x1c, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0x02, 0x00,
-0x08, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2c, 0x00,
-0x32, 0x00, 0x36, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x22, 0x00,
-0x20, 0x00, 0x12, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x04, 0x00, 0x0a, 0x00,
-0x14, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x44, 0x00, 0x54, 0x00, 0x66, 0x00, 0x62, 0x00, 0x56, 0x00,
-0x4e, 0x00, 0x36, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xd0, 0xff,
-0xd0, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x10, 0x00, 0x28, 0x00, 0x4c, 0x00, 0x66, 0x00, 0x72, 0x00,
-0x7e, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x40, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0xcc, 0xff, 0xbc, 0xff,
-0xaa, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x6e, 0x00,
-0x88, 0x00, 0x9c, 0x00, 0x98, 0x00, 0x86, 0x00, 0x72, 0x00, 0x38, 0x00, 0x0c, 0x00, 0xd6, 0xff,
-0xa4, 0xff, 0x92, 0xff, 0x72, 0xff, 0x7c, 0xff, 0x8e, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x12, 0x00,
-0x54, 0x00, 0x80, 0x00, 0xa0, 0x00, 0xaa, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x58, 0x00, 0x28, 0x00,
-0xe6, 0xff, 0xaa, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x54, 0xff, 0x60, 0xff, 0x78, 0xff, 0xba, 0xff,
-0xee, 0xff, 0x22, 0x00, 0x58, 0x00, 0x8c, 0x00, 0xb4, 0x00, 0xc0, 0x00, 0xaa, 0x00, 0x82, 0x00,
-0x46, 0x00, 0x1a, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x44, 0xff, 0x58, 0xff,
-0x82, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x7a, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xc2, 0x00,
-0xae, 0x00, 0x7e, 0x00, 0x30, 0x00, 0x02, 0x00, 0xce, 0xff, 0x94, 0xff, 0x60, 0xff, 0x38, 0xff,
-0x3e, 0xff, 0x5c, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x3a, 0x00, 0x80, 0x00, 0x9e, 0x00,
-0xc4, 0x00, 0xc6, 0x00, 0xa4, 0x00, 0x78, 0x00, 0x26, 0x00, 0xf8, 0xff, 0xbe, 0xff, 0x86, 0xff,
-0x66, 0xff, 0x46, 0xff, 0x5a, 0xff, 0x6e, 0xff, 0xa6, 0xff, 0xec, 0xff, 0x24, 0x00, 0x5c, 0x00,
-0x86, 0x00, 0xb0, 0x00, 0xc8, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x62, 0x00, 0x24, 0x00, 0xf0, 0xff,
-0xc0, 0xff, 0x98, 0xff, 0x68, 0xff, 0x56, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xc0, 0xff, 0xf8, 0xff,
-0x24, 0x00, 0x5a, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x44, 0x00,
-0x0e, 0x00, 0xd6, 0xff, 0xae, 0xff, 0x8c, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x7a, 0xff, 0xa0, 0xff,
-0xc6, 0xff, 0xf8, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x72, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x64, 0x00,
-0x54, 0x00, 0x22, 0x00, 0xfe, 0xff, 0xde, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x8c, 0xff, 0x90, 0xff,
-0x9e, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x24, 0x00, 0x36, 0x00, 0x4a, 0x00, 0x54, 0x00,
-0x54, 0x00, 0x42, 0x00, 0x24, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xda, 0xff, 0xb8, 0xff, 0xb4, 0xff,
-0xa0, 0xff, 0xa8, 0xff, 0xb4, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0x00, 0x00, 0x10, 0x00,
-0x20, 0x00, 0x24, 0x00, 0x28, 0x00, 0x24, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xe8, 0xff,
-0xd4, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xea, 0xff, 0xf2, 0xff,
-0xf8, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00,
-0x04, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xe6, 0xff,
-0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xf6, 0xff,
-0x00, 0x00, 0xfe, 0xff, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x16, 0x00, 0x0c, 0x00,
-0x02, 0x00, 0xfe, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xd2, 0xff,
-0xde, 0xff, 0xf4, 0xff, 0x0c, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x3c, 0x00,
-0x48, 0x00, 0x2c, 0x00, 0x0a, 0x00, 0xec, 0xff, 0xda, 0xff, 0xae, 0xff, 0xac, 0xff, 0xa8, 0xff,
-0xb2, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x60, 0x00,
-0x58, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x26, 0x00, 0x04, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x90, 0xff,
-0x80, 0xff, 0x70, 0xff, 0x8a, 0xff, 0x94, 0xff, 0xbc, 0xff, 0xf6, 0xff, 0x10, 0x00, 0x3c, 0x00,
-0x60, 0x00, 0x72, 0x00, 0x86, 0x00, 0x80, 0x00, 0x60, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xd4, 0xff,
-0x9c, 0xff, 0x7e, 0xff, 0x5e, 0xff, 0x56, 0xff, 0x68, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xe2, 0xff,
-0x1a, 0x00, 0x4a, 0x00, 0x76, 0x00, 0x94, 0x00, 0x98, 0x00, 0x92, 0x00, 0x54, 0x00, 0x26, 0x00,
-0xf2, 0xff, 0xae, 0xff, 0x7c, 0xff, 0x52, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x46, 0xff, 0x78, 0xff,
-0xba, 0xff, 0xe2, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0x88, 0x00,
-0x58, 0x00, 0x18, 0x00, 0xea, 0xff, 0xb0, 0xff, 0x6c, 0xff, 0x46, 0xff, 0x24, 0xff, 0x38, 0xff,
-0x58, 0xff, 0x7c, 0xff, 0xbe, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xb8, 0x00,
-0xa8, 0x00, 0x82, 0x00, 0x48, 0x00, 0x0a, 0x00, 0xe0, 0xff, 0x94, 0xff, 0x62, 0xff, 0x42, 0xff,
-0x2e, 0xff, 0x40, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x04, 0x00, 0x46, 0x00, 0x7e, 0x00,
-0xa6, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x70, 0x00, 0x3a, 0x00, 0xfa, 0xff, 0xc0, 0xff, 0x8e, 0xff,
-0x5a, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x76, 0xff, 0xae, 0xff, 0xee, 0xff, 0x18, 0x00,
-0x58, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x92, 0x00, 0x62, 0x00, 0x30, 0x00, 0xf4, 0xff,
-0xc4, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x4a, 0xff, 0x50, 0xff, 0x62, 0xff, 0x92, 0xff, 0xc2, 0xff,
-0xf4, 0xff, 0x28, 0x00, 0x56, 0x00, 0x78, 0x00, 0x84, 0x00, 0x88, 0x00, 0x72, 0x00, 0x46, 0x00,
-0x08, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x72, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x70, 0xff,
-0x90, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x64, 0x00, 0x54, 0x00,
-0x4c, 0x00, 0x2e, 0x00, 0x06, 0x00, 0xe2, 0xff, 0xb8, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x92, 0xff,
-0x92, 0xff, 0x9c, 0xff, 0xc0, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x38, 0x00, 0x3a, 0x00,
-0x40, 0x00, 0x3e, 0x00, 0x2a, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xb2, 0xff,
-0xb8, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfa, 0xff, 0x04, 0x00,
-0x18, 0x00, 0x14, 0x00, 0x16, 0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xea, 0xff,
-0xde, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xde, 0xff,
-0xe0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfc, 0xff,
-0x08, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe8, 0xff,
-0xf2, 0xff, 0x08, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1a, 0x00,
-0xfe, 0xff, 0xf0, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xac, 0xff,
-0xb4, 0xff, 0xd0, 0xff, 0xf2, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x44, 0x00, 0x4c, 0x00,
-0x38, 0x00, 0x36, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xce, 0xff, 0xb0, 0xff, 0x94, 0xff, 0x8c, 0xff,
-0x7c, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xce, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x5a, 0x00, 0x68, 0x00,
-0x72, 0x00, 0x76, 0x00, 0x6a, 0x00, 0x50, 0x00, 0x2e, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x96, 0xff,
-0x6c, 0xff, 0x5e, 0xff, 0x5a, 0xff, 0x70, 0xff, 0x98, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x28, 0x00,
-0x68, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x9c, 0x00, 0x7a, 0x00, 0x4a, 0x00, 0x24, 0x00, 0xe2, 0xff,
-0xac, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x3a, 0xff, 0x40, 0xff, 0x5e, 0xff, 0x9c, 0xff, 0xd2, 0xff,
-0x06, 0x00, 0x46, 0x00, 0x70, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x44, 0x00,
-0x0c, 0x00, 0xdc, 0xff, 0x98, 0xff, 0x58, 0xff, 0x38, 0xff, 0x30, 0xff, 0x46, 0xff, 0x6a, 0xff,
-0xac, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x7e, 0x00, 0x96, 0x00, 0xa6, 0x00, 0x82, 0x00,
-0x5e, 0x00, 0x28, 0x00, 0xe6, 0xff, 0xb6, 0xff, 0x76, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x20, 0xff,
-0x36, 0xff, 0x72, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x16, 0x00, 0x4a, 0x00, 0x7c, 0x00, 0x92, 0x00,
-0x92, 0x00, 0x7c, 0x00, 0x40, 0x00, 0x00, 0x00, 0xce, 0xff, 0xa4, 0xff, 0x66, 0xff, 0x3e, 0xff,
-0x26, 0xff, 0x2e, 0xff, 0x58, 0xff, 0x88, 0xff, 0xc8, 0xff, 0xfe, 0xff, 0x2c, 0x00, 0x58, 0x00,
-0x88, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x68, 0x00, 0x3c, 0x00, 0x06, 0x00, 0xc2, 0xff, 0x94, 0xff,
-0x5c, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x64, 0xff, 0x94, 0xff, 0xce, 0xff, 0x00, 0x00,
-0x2a, 0x00, 0x4e, 0x00, 0x72, 0x00, 0x88, 0x00, 0x74, 0x00, 0x52, 0x00, 0x2a, 0x00, 0xf2, 0xff,
-0xbc, 0xff, 0x8a, 0xff, 0x62, 0xff, 0x46, 0xff, 0x50, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xac, 0xff,
-0xda, 0xff, 0x10, 0x00, 0x40, 0x00, 0x52, 0x00, 0x68, 0x00, 0x70, 0x00, 0x64, 0x00, 0x4a, 0x00,
-0x28, 0x00, 0xfa, 0xff, 0xc4, 0xff, 0x92, 0xff, 0x82, 0xff, 0x72, 0xff, 0x72, 0xff, 0x8a, 0xff,
-0x96, 0xff, 0xc2, 0xff, 0xee, 0xff, 0x0c, 0x00, 0x30, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x4a, 0x00,
-0x4e, 0x00, 0x28, 0x00, 0x10, 0x00, 0xee, 0xff, 0xc0, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x98, 0xff,
-0x8c, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x1a, 0x00, 0x20, 0x00,
-0x22, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x1e, 0x00, 0xfa, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xba, 0xff,
-0xb8, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xf4, 0xff, 0x04, 0x00,
-0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xe4, 0xff,
-0xe0, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff,
-0xde, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xf2, 0xff, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0xf4, 0xff,
-0xea, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xc2, 0xff,
-0xde, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x30, 0x00,
-0x1c, 0x00, 0x0e, 0x00, 0xde, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x8a, 0xff, 0x82, 0xff, 0x8a, 0xff,
-0x96, 0xff, 0xa8, 0xff, 0xd2, 0xff, 0xee, 0xff, 0x16, 0x00, 0x42, 0x00, 0x50, 0x00, 0x66, 0x00,
-0x54, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x6c, 0xff,
-0x6e, 0xff, 0x72, 0xff, 0x86, 0xff, 0xb4, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x36, 0x00, 0x68, 0x00,
-0x86, 0x00, 0x90, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0xda, 0xff, 0xaa, 0xff,
-0x7a, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x78, 0xff, 0xa6, 0xff, 0xde, 0xff, 0x10, 0x00,
-0x50, 0x00, 0x7c, 0x00, 0x94, 0x00, 0xa6, 0x00, 0x92, 0x00, 0x66, 0x00, 0x30, 0x00, 0x02, 0x00,
-0xc6, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x2c, 0xff, 0x32, 0xff, 0x40, 0xff, 0x6a, 0xff, 0xa6, 0xff,
-0xe2, 0xff, 0x16, 0x00, 0x5a, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xb2, 0x00, 0x92, 0x00, 0x64, 0x00,
-0x28, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x7c, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x44, 0xff,
-0x7a, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x36, 0x00, 0x74, 0x00, 0x96, 0x00, 0xb2, 0x00, 0xb0, 0x00,
-0x88, 0x00, 0x4e, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0xa0, 0xff, 0x5a, 0xff, 0x36, 0xff, 0x1a, 0xff,
-0x2a, 0xff, 0x4c, 0xff, 0x88, 0xff, 0xd0, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0xa0, 0x00,
-0xa0, 0x00, 0x94, 0x00, 0x62, 0x00, 0x36, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x96, 0xff, 0x4e, 0xff,
-0x2c, 0xff, 0x2c, 0xff, 0x36, 0xff, 0x6e, 0xff, 0x9e, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x52, 0x00,
-0x86, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xba, 0xff,
-0x88, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x52, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0xf2, 0xff,
-0x28, 0x00, 0x52, 0x00, 0x6a, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x6c, 0x00, 0x48, 0x00, 0x16, 0x00,
-0xf2, 0xff, 0xb0, 0xff, 0x90, 0xff, 0x72, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x78, 0xff, 0x96, 0xff,
-0xce, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x56, 0x00, 0x54, 0x00,
-0x40, 0x00, 0x10, 0x00, 0xec, 0xff, 0xca, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x8a, 0xff,
-0xa4, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x14, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x42, 0x00,
-0x4a, 0x00, 0x38, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xe4, 0xff, 0xda, 0xff, 0xbe, 0xff, 0xb4, 0xff,
-0xb4, 0xff, 0xa4, 0xff, 0xc0, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0x02, 0x00, 0x02, 0x00, 0x16, 0x00,
-0x16, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x14, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xe8, 0xff,
-0xde, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff,
-0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfc, 0xff,
-0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0xf4, 0xff, 0x02, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xf6, 0xff,
-0xe4, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xf2, 0xff,
-0xf8, 0xff, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00,
-0xee, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xae, 0xff,
-0xc4, 0xff, 0xe6, 0xff, 0x08, 0x00, 0x22, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x42, 0x00,
-0x38, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xd0, 0xff, 0xa8, 0xff, 0x8c, 0xff, 0x80, 0xff, 0x7c, 0xff,
-0x82, 0xff, 0x94, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x3e, 0x00, 0x58, 0x00, 0x6e, 0x00,
-0x6c, 0x00, 0x5c, 0x00, 0x4a, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x84, 0xff, 0x56, 0xff,
-0x4e, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x58, 0x00,
-0x74, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x82, 0x00, 0x58, 0x00, 0x1a, 0x00, 0xf2, 0xff, 0xb4, 0xff,
-0x7a, 0xff, 0x4c, 0xff, 0x3a, 0xff, 0x40, 0xff, 0x58, 0xff, 0x92, 0xff, 0xcc, 0xff, 0xfe, 0xff,
-0x3a, 0x00, 0x6e, 0x00, 0x98, 0x00, 0xae, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x60, 0x00, 0x1c, 0x00,
-0xe0, 0xff, 0xa4, 0xff, 0x62, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x52, 0xff, 0x90, 0xff,
-0xd4, 0xff, 0x00, 0x00, 0x38, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x80, 0x00,
-0x44, 0x00, 0x04, 0x00, 0xca, 0xff, 0x8a, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x3c, 0xff,
-0x68, 0xff, 0x9c, 0xff, 0xe8, 0xff, 0x0c, 0x00, 0x50, 0x00, 0x88, 0x00, 0xae, 0x00, 0xbc, 0x00,
-0x9c, 0x00, 0x78, 0x00, 0x30, 0x00, 0xf6, 0xff, 0xc0, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x3c, 0xff,
-0x34, 0xff, 0x42, 0xff, 0x7e, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x12, 0x00, 0x58, 0x00, 0x86, 0x00,
-0x96, 0x00, 0xa2, 0x00, 0x84, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xe6, 0xff, 0xa6, 0xff, 0x7a, 0xff,
-0x54, 0xff, 0x3c, 0xff, 0x42, 0xff, 0x50, 0xff, 0x80, 0xff, 0xba, 0xff, 0xf0, 0xff, 0x1a, 0x00,
-0x54, 0x00, 0x8c, 0x00, 0x90, 0x00, 0x92, 0x00, 0x70, 0x00, 0x46, 0x00, 0x18, 0x00, 0xea, 0xff,
-0xb4, 0xff, 0x88, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xa6, 0xff, 0xca, 0xff,
-0x04, 0x00, 0x2c, 0x00, 0x5e, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x70, 0x00, 0x56, 0x00, 0x32, 0x00,
-0x00, 0x00, 0xdc, 0xff, 0xb4, 0xff, 0xa6, 0xff, 0x90, 0xff, 0x84, 0xff, 0x88, 0xff, 0x9c, 0xff,
-0xbc, 0xff, 0xde, 0xff, 0x08, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x46, 0x00,
-0x34, 0x00, 0x14, 0x00, 0xfc, 0xff, 0xee, 0xff, 0xba, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0xb0, 0xff,
-0xae, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xf4, 0xff, 0x08, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x20, 0x00,
-0x30, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xde, 0xff,
-0xd0, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfc, 0xff,
-0xfe, 0xff, 0xfa, 0xff, 0x06, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x00, 0x00,
-0xf4, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xdc, 0xff,
-0xd8, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfc, 0xff,
-0x08, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf8, 0xff,
-0xe6, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xd4, 0xff,
-0xee, 0xff, 0x0c, 0x00, 0x20, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x34, 0x00, 0x1a, 0x00,
-0xf8, 0xff, 0xb0, 0xff, 0x8c, 0xff, 0x78, 0xff, 0x84, 0xff, 0x96, 0xff, 0xa4, 0xff, 0xcc, 0xff,
-0xf8, 0xff, 0x1c, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x52, 0x00, 0x34, 0x00,
-0x06, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x86, 0xff, 0x6c, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x7a, 0xff,
-0xa4, 0xff, 0xda, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x72, 0x00, 0x88, 0x00, 0x94, 0x00, 0x8c, 0x00,
-0x62, 0x00, 0x44, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x90, 0xff, 0x64, 0xff, 0x46, 0xff, 0x38, 0xff,
-0x50, 0xff, 0x70, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x1c, 0x00, 0x5a, 0x00, 0x8c, 0x00, 0xac, 0x00,
-0xb2, 0x00, 0x94, 0x00, 0x72, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x58, 0xff,
-0x3c, 0xff, 0x38, 0xff, 0x52, 0xff, 0x7a, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x74, 0x00,
-0x9c, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xc2, 0xff,
-0x76, 0xff, 0x54, 0xff, 0x34, 0xff, 0x32, 0xff, 0x5a, 0xff, 0x84, 0xff, 0xd4, 0xff, 0x08, 0x00,
-0x3e, 0x00, 0x7c, 0x00, 0xa6, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x58, 0x00, 0x12, 0x00,
-0xe6, 0xff, 0xa8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x2a, 0xff, 0x44, 0xff, 0x64, 0xff, 0x92, 0xff,
-0xde, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0xae, 0x00, 0x9c, 0x00, 0x7a, 0x00,
-0x46, 0x00, 0x08, 0x00, 0xd0, 0xff, 0x9e, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x3a, 0xff, 0x50, 0xff,
-0x70, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x98, 0x00,
-0x88, 0x00, 0x66, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xc4, 0xff, 0x94, 0xff, 0x5e, 0xff, 0x46, 0xff,
-0x4c, 0xff, 0x5c, 0xff, 0x84, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x16, 0x00, 0x46, 0x00, 0x66, 0x00,
-0x7e, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x8a, 0xff,
-0x74, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x78, 0xff, 0x98, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x16, 0x00,
-0x3e, 0x00, 0x46, 0x00, 0x68, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0xf4, 0xff,
-0xc2, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x98, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe0, 0xff,
-0xfa, 0xff, 0x16, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x12, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xc0, 0xff, 0xc4, 0xff,
-0xde, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00,
-0x12, 0x00, 0x0c, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe0, 0xff,
-0xde, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00,
-0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0xea, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xce, 0xff, 0xc8, 0xff,
-0xca, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x12, 0x00, 0x26, 0x00,
-0x28, 0x00, 0x32, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xc4, 0xff,
-0xaa, 0xff, 0x9c, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xee, 0xff, 0x0a, 0x00,
-0x28, 0x00, 0x50, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x22, 0x00, 0xf6, 0xff,
-0xd6, 0xff, 0xa8, 0xff, 0x7c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x78, 0xff, 0x8e, 0xff, 0xa6, 0xff,
-0xe2, 0xff, 0x0a, 0x00, 0x3c, 0x00, 0x5c, 0x00, 0x74, 0x00, 0x82, 0x00, 0x62, 0x00, 0x48, 0x00,
-0x1c, 0x00, 0xec, 0xff, 0xba, 0xff, 0x8a, 0xff, 0x58, 0xff, 0x46, 0xff, 0x4c, 0xff, 0x4c, 0xff,
-0x80, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x84, 0x00, 0x9a, 0x00, 0x96, 0x00,
-0x80, 0x00, 0x5a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x52, 0xff, 0x36, 0xff,
-0x40, 0xff, 0x58, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00,
-0xb0, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xae, 0xff, 0x6e, 0xff,
-0x3e, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x54, 0xff, 0x8c, 0xff, 0xd2, 0xff, 0x00, 0x00, 0x38, 0x00,
-0x7c, 0x00, 0xa8, 0x00, 0xb6, 0x00, 0xa8, 0x00, 0x80, 0x00, 0x3c, 0x00, 0x08, 0x00, 0xd6, 0xff,
-0x9a, 0xff, 0x68, 0xff, 0x44, 0xff, 0x32, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0xb0, 0xff, 0xf2, 0xff,
-0x1e, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x2c, 0x00,
-0xf8, 0xff, 0xc2, 0xff, 0x8c, 0xff, 0x5c, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x76, 0xff,
-0xb4, 0xff, 0xea, 0xff, 0x2a, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xaa, 0x00, 0x88, 0x00,
-0x60, 0x00, 0x2a, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x56, 0xff, 0x3c, 0xff, 0x44, 0xff,
-0x66, 0xff, 0x7e, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x38, 0x00, 0x74, 0x00, 0x92, 0x00, 0x9a, 0x00,
-0x8c, 0x00, 0x78, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x5e, 0xff,
-0x52, 0xff, 0x5a, 0xff, 0x7a, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x06, 0x00, 0x3a, 0x00, 0x56, 0x00,
-0x72, 0x00, 0x74, 0x00, 0x62, 0x00, 0x44, 0x00, 0x1e, 0x00, 0xf0, 0xff, 0xce, 0xff, 0xa4, 0xff,
-0x86, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7c, 0xff, 0x96, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0x0e, 0x00,
-0x34, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x46, 0x00, 0x34, 0x00, 0x32, 0x00, 0x0c, 0x00, 0xf2, 0xff,
-0xdc, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xb6, 0xff, 0xc6, 0xff, 0xd2, 0xff,
-0xf6, 0xff, 0x0a, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x20, 0x00, 0x18, 0x00, 0x0a, 0x00,
-0xfa, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xca, 0xff, 0xd6, 0xff,
-0xdc, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xf4, 0xff,
-0xf4, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xd8, 0xff,
-0xec, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x1a, 0x00, 0x12, 0x00,
-0x16, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xc0, 0xff,
-0xae, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x2a, 0x00,
-0x36, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x28, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xd4, 0xff,
-0xac, 0xff, 0x96, 0xff, 0x90, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xd8, 0xff, 0xf4, 0xff,
-0x20, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x5e, 0x00, 0x3a, 0x00, 0x1a, 0x00,
-0xe4, 0xff, 0xba, 0xff, 0x96, 0xff, 0x70, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x82, 0xff, 0x98, 0xff,
-0xd2, 0xff, 0xfa, 0xff, 0x30, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x72, 0x00,
-0x44, 0x00, 0x10, 0x00, 0xce, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x44, 0xff,
-0x62, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0xac, 0x00,
-0xa0, 0x00, 0x76, 0x00, 0x42, 0x00, 0x0c, 0x00, 0xce, 0xff, 0x82, 0xff, 0x48, 0xff, 0x26, 0xff,
-0x16, 0xff, 0x34, 0xff, 0x5e, 0xff, 0xa0, 0xff, 0xe8, 0xff, 0x0e, 0x00, 0x58, 0x00, 0x9a, 0x00,
-0xb6, 0x00, 0xc4, 0x00, 0xa6, 0x00, 0x76, 0x00, 0x36, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x78, 0xff,
-0x38, 0xff, 0x1a, 0xff, 0x18, 0xff, 0x32, 0xff, 0x58, 0xff, 0xac, 0xff, 0xea, 0xff, 0x26, 0x00,
-0x6c, 0x00, 0x9a, 0x00, 0xc2, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0x6c, 0x00, 0x20, 0x00, 0xe8, 0xff,
-0xaa, 0xff, 0x6a, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x52, 0xff, 0x7a, 0xff, 0xc8, 0xff,
-0xfe, 0xff, 0x44, 0x00, 0x80, 0x00, 0xa4, 0x00, 0xc6, 0x00, 0xae, 0x00, 0x96, 0x00, 0x58, 0x00,
-0x16, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x6e, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x6e, 0xff,
-0xa6, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0x9a, 0x00,
-0x78, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x98, 0xff, 0x6e, 0xff, 0x58, 0xff, 0x52, 0xff,
-0x58, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x50, 0x00, 0x74, 0x00, 0x86, 0x00,
-0x86, 0x00, 0x76, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc8, 0xff, 0x9c, 0xff, 0x88, 0xff,
-0x74, 0xff, 0x80, 0xff, 0x88, 0xff, 0x98, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x18, 0x00, 0x46, 0x00,
-0x5e, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xce, 0xff,
-0xae, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x9c, 0xff, 0xbc, 0xff, 0xda, 0xff, 0xf0, 0xff,
-0x02, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x10, 0x00, 0xf6, 0xff,
-0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xd4, 0xff,
-0xdc, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x04, 0x00, 0xf4, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe2, 0xff, 0xe0, 0xff,
-0xe4, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf0, 0xff,
-0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x00, 0x00,
-0xfa, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xc8, 0xff,
-0xc6, 0xff, 0xbe, 0xff, 0xd0, 0xff, 0xee, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x34, 0x00,
-0x36, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xa4, 0xff,
-0xb0, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xf6, 0xff, 0x10, 0x00, 0x2a, 0x00,
-0x52, 0x00, 0x62, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x36, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xd0, 0xff,
-0xae, 0xff, 0x86, 0xff, 0x7e, 0xff, 0x70, 0xff, 0x84, 0xff, 0xa2, 0xff, 0xbe, 0xff, 0xf6, 0xff,
-0x14, 0x00, 0x40, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x72, 0x00, 0x50, 0x00, 0x1e, 0x00,
-0xf4, 0xff, 0xce, 0xff, 0x98, 0xff, 0x6a, 0xff, 0x56, 0xff, 0x52, 0xff, 0x64, 0xff, 0x94, 0xff,
-0xc0, 0xff, 0xf6, 0xff, 0x26, 0x00, 0x54, 0x00, 0x88, 0x00, 0xa0, 0x00, 0x9a, 0x00, 0x90, 0x00,
-0x60, 0x00, 0x2c, 0x00, 0xfa, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x64, 0xff, 0x3e, 0xff, 0x32, 0xff,
-0x4a, 0xff, 0x7c, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x5e, 0x00, 0x98, 0x00, 0xa4, 0x00,
-0xa8, 0x00, 0x8c, 0x00, 0x58, 0x00, 0x1c, 0x00, 0xe2, 0xff, 0xae, 0xff, 0x72, 0xff, 0x44, 0xff,
-0x20, 0xff, 0x22, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x6e, 0x00,
-0x9e, 0x00, 0xae, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x48, 0x00, 0x0c, 0x00, 0xe6, 0xff, 0xa2, 0xff,
-0x64, 0xff, 0x40, 0xff, 0x28, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x98, 0xff, 0xe6, 0xff, 0x04, 0x00,
-0x44, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7c, 0x00, 0x3c, 0x00, 0x00, 0x00,
-0xcc, 0xff, 0x94, 0xff, 0x58, 0xff, 0x38, 0xff, 0x26, 0xff, 0x3e, 0xff, 0x66, 0xff, 0xaa, 0xff,
-0xf2, 0xff, 0x16, 0x00, 0x54, 0x00, 0x80, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0x92, 0x00, 0x68, 0x00,
-0x24, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x7e, 0xff, 0x56, 0xff, 0x3e, 0xff, 0x38, 0xff, 0x56, 0xff,
-0x88, 0xff, 0xb8, 0xff, 0x00, 0x00, 0x36, 0x00, 0x58, 0x00, 0x86, 0x00, 0x96, 0x00, 0x94, 0x00,
-0x86, 0x00, 0x58, 0x00, 0x1c, 0x00, 0xf2, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x70, 0xff, 0x5e, 0xff,
-0x68, 0xff, 0x80, 0xff, 0x9e, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x32, 0x00, 0x58, 0x00, 0x66, 0x00,
-0x6c, 0x00, 0x6c, 0x00, 0x5c, 0x00, 0x36, 0x00, 0x02, 0x00, 0xda, 0xff, 0xb2, 0xff, 0x9c, 0xff,
-0x8e, 0xff, 0x8c, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xc2, 0xff, 0xea, 0xff, 0x00, 0x00, 0x22, 0x00,
-0x3c, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3a, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xde, 0xff,
-0xbc, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xf6, 0xff,
-0x0e, 0x00, 0x10, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x20, 0x00, 0x22, 0x00, 0x08, 0x00, 0xfc, 0xff,
-0xde, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xd8, 0xff,
-0xe2, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0x00, 0x00,
-0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xe8, 0xff,
-0xf0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xde, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xe2, 0xff,
-0xd4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0x12, 0x00, 0x12, 0x00, 0x10, 0x00,
-0x14, 0x00, 0x12, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xaa, 0xff,
-0xb4, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xc8, 0xff, 0xee, 0xff, 0x02, 0x00, 0x1c, 0x00, 0x3a, 0x00,
-0x44, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x2e, 0x00, 0x16, 0x00, 0xee, 0xff, 0xce, 0xff, 0xb6, 0xff,
-0x8e, 0xff, 0x80, 0xff, 0x8e, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x24, 0x00,
-0x42, 0x00, 0x68, 0x00, 0x72, 0x00, 0x80, 0x00, 0x5a, 0x00, 0x3e, 0x00, 0x18, 0x00, 0xe2, 0xff,
-0xba, 0xff, 0x86, 0xff, 0x70, 0xff, 0x66, 0xff, 0x66, 0xff, 0x80, 0xff, 0xa4, 0xff, 0xd6, 0xff,
-0x02, 0x00, 0x2a, 0x00, 0x66, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x8e, 0x00, 0x6e, 0x00, 0x40, 0x00,
-0x16, 0x00, 0xce, 0xff, 0x9e, 0xff, 0x78, 0xff, 0x50, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x72, 0xff,
-0x9e, 0xff, 0xda, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x76, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0x9e, 0x00,
-0x78, 0x00, 0x3a, 0x00, 0xfe, 0xff, 0xd4, 0xff, 0xa0, 0xff, 0x62, 0xff, 0x46, 0xff, 0x3c, 0xff,
-0x4c, 0xff, 0x78, 0xff, 0xaa, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x88, 0x00, 0xa2, 0x00,
-0xb0, 0x00, 0x8e, 0x00, 0x5a, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb4, 0xff, 0x7a, 0xff, 0x50, 0xff,
-0x34, 0xff, 0x24, 0xff, 0x46, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x60, 0x00,
-0x92, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x54, 0x00, 0x0e, 0x00, 0xe0, 0xff, 0xa8, 0xff,
-0x74, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x4c, 0xff, 0x90, 0xff, 0xca, 0xff, 0x06, 0x00,
-0x42, 0x00, 0x76, 0x00, 0x9e, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0x8c, 0x00, 0x4c, 0x00, 0x16, 0x00,
-0xd0, 0xff, 0x9a, 0xff, 0x68, 0xff, 0x44, 0xff, 0x32, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x96, 0xff,
-0xd2, 0xff, 0x0e, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x9a, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x7a, 0x00,
-0x42, 0x00, 0x04, 0x00, 0xca, 0xff, 0x9e, 0xff, 0x70, 0xff, 0x52, 0xff, 0x44, 0xff, 0x50, 0xff,
-0x72, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x52, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x8e, 0x00,
-0x82, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x04, 0x00, 0xda, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x78, 0xff,
-0x6c, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x18, 0x00, 0x3e, 0x00, 0x56, 0x00,
-0x6a, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x16, 0x00, 0x00, 0x00, 0xe4, 0xff, 0xb6, 0xff,
-0xa2, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x94, 0xff, 0xae, 0xff, 0xdc, 0xff, 0xf2, 0xff, 0x10, 0x00,
-0x1e, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x30, 0x00, 0x10, 0x00, 0x0e, 0x00, 0xf4, 0xff,
-0xec, 0xff, 0xca, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xde, 0xff,
-0xf8, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x0c, 0x00,
-0x02, 0x00, 0xfc, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xd4, 0xff,
-0xde, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xd4, 0xff, 0xe6, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xfc, 0xff,
-0xfc, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xba, 0xff,
-0xc2, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x34, 0x00,
-0x24, 0x00, 0x24, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xaa, 0xff, 0x98, 0xff,
-0x90, 0xff, 0x92, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x40, 0x00,
-0x44, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xb8, 0xff,
-0x94, 0xff, 0x7c, 0xff, 0x6a, 0xff, 0x7a, 0xff, 0x8a, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0x14, 0x00,
-0x40, 0x00, 0x5a, 0x00, 0x78, 0x00, 0x80, 0x00, 0x7a, 0x00, 0x60, 0x00, 0x38, 0x00, 0x08, 0x00,
-0xd8, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x62, 0xff, 0x52, 0xff, 0x60, 0xff, 0x88, 0xff, 0xac, 0xff,
-0xf2, 0xff, 0x1e, 0x00, 0x58, 0x00, 0x88, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x70, 0x00,
-0x42, 0x00, 0x04, 0x00, 0xc8, 0xff, 0x88, 0xff, 0x58, 0xff, 0x40, 0xff, 0x32, 0xff, 0x50, 0xff,
-0x8a, 0xff, 0xc6, 0xff, 0xfc, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x9e, 0x00, 0xb6, 0x00, 0xb4, 0x00,
-0x9c, 0x00, 0x6a, 0x00, 0x28, 0x00, 0xea, 0xff, 0xac, 0xff, 0x66, 0xff, 0x34, 0xff, 0x20, 0xff,
-0x32, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x76, 0x00, 0xa2, 0x00,
-0xbe, 0x00, 0xba, 0x00, 0x96, 0x00, 0x5c, 0x00, 0x0c, 0x00, 0xd6, 0xff, 0xa4, 0xff, 0x54, 0xff,
-0x30, 0xff, 0x20, 0xff, 0x3a, 0xff, 0x5e, 0xff, 0x90, 0xff, 0xe6, 0xff, 0x0a, 0x00, 0x38, 0x00,
-0x78, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x78, 0x00, 0x3e, 0x00, 0xfc, 0xff, 0xc8, 0xff,
-0x84, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x2c, 0xff, 0x46, 0xff, 0x64, 0xff, 0xa2, 0xff, 0xd8, 0xff,
-0x0e, 0x00, 0x44, 0x00, 0x6e, 0x00, 0x96, 0x00, 0x92, 0x00, 0x7e, 0x00, 0x5e, 0x00, 0x26, 0x00,
-0xec, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x66, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x5a, 0xff, 0x8a, 0xff,
-0xb8, 0xff, 0xe4, 0xff, 0x1c, 0x00, 0x4c, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x88, 0x00, 0x70, 0x00,
-0x40, 0x00, 0x18, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x94, 0xff, 0x74, 0xff, 0x64, 0xff, 0x62, 0xff,
-0x7c, 0xff, 0x9a, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x74, 0x00,
-0x6c, 0x00, 0x5a, 0x00, 0x34, 0x00, 0x0c, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xac, 0xff, 0x9a, 0xff,
-0x8e, 0xff, 0x92, 0xff, 0x96, 0xff, 0xba, 0xff, 0xda, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x38, 0x00,
-0x42, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x04, 0x00, 0xf0, 0xff, 0xdc, 0xff,
-0xc2, 0xff, 0xc2, 0xff, 0xb8, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xea, 0xff, 0x06, 0x00,
-0x04, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0xfc, 0xff,
-0xee, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xec, 0xff, 0xe2, 0xff,
-0xea, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf0, 0xff,
-0xf8, 0xff, 0x04, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xfc, 0xff,
-0xfc, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xce, 0xff,
-0xd6, 0xff, 0xe0, 0xff, 0xea, 0xff, 0x00, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x18, 0x00,
-0x12, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xe2, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xa8, 0xff,
-0xb0, 0xff, 0xa6, 0xff, 0xba, 0xff, 0xd6, 0xff, 0xea, 0xff, 0x12, 0x00, 0x28, 0x00, 0x40, 0x00,
-0x3a, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf8, 0xff, 0xda, 0xff, 0xba, 0xff, 0x9e, 0xff,
-0x8e, 0xff, 0x8a, 0xff, 0x96, 0xff, 0xa2, 0xff, 0xb0, 0xff, 0xe6, 0xff, 0x06, 0x00, 0x3a, 0x00,
-0x5a, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x52, 0x00, 0x46, 0x00, 0x18, 0x00, 0xf6, 0xff, 0xca, 0xff,
-0x98, 0xff, 0x82, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x6a, 0xff, 0x92, 0xff, 0xb0, 0xff, 0xec, 0xff,
-0x20, 0x00, 0x48, 0x00, 0x6e, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x4c, 0x00, 0x1e, 0x00,
-0xf0, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x42, 0xff, 0x60, 0xff, 0x94, 0xff,
-0xca, 0xff, 0x00, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x92, 0x00, 0x8c, 0x00,
-0x5a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x48, 0xff, 0x46, 0xff,
-0x64, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x0e, 0x00, 0x40, 0x00, 0x7c, 0x00, 0xa4, 0x00, 0xa2, 0x00,
-0x94, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0x98, 0xff, 0x66, 0xff, 0x3e, 0xff,
-0x30, 0xff, 0x4a, 0xff, 0x70, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0x16, 0x00, 0x58, 0x00, 0x8a, 0x00,
-0xb2, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x88, 0xff,
-0x5c, 0xff, 0x34, 0xff, 0x40, 0xff, 0x50, 0xff, 0x84, 0xff, 0xc2, 0xff, 0x02, 0x00, 0x36, 0x00,
-0x64, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x5c, 0x00, 0x10, 0x00, 0xea, 0xff,
-0xb2, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x86, 0xff, 0xc6, 0xff,
-0xfc, 0xff, 0x32, 0x00, 0x64, 0x00, 0x86, 0x00, 0x9a, 0x00, 0x8c, 0x00, 0x72, 0x00, 0x46, 0x00,
-0x10, 0x00, 0xda, 0xff, 0x9a, 0xff, 0x70, 0xff, 0x54, 0xff, 0x42, 0xff, 0x44, 0xff, 0x70, 0xff,
-0xa0, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x84, 0x00, 0x76, 0x00,
-0x5a, 0x00, 0x32, 0x00, 0xf6, 0xff, 0xd0, 0xff, 0xa4, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x72, 0xff,
-0x72, 0xff, 0x80, 0xff, 0xba, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x22, 0x00, 0x3e, 0x00, 0x3c, 0x00,
-0x46, 0x00, 0x40, 0x00, 0x30, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xae, 0xff, 0x9a, 0xff,
-0x98, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0xb0, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x12, 0x00,
-0x24, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x16, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xd8, 0xff,
-0xc0, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xfe, 0xff,
-0x0a, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x06, 0x00,
-0xf2, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe0, 0xff,
-0xe4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xfe, 0xff,
-0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0e, 0x00,
-0xfe, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xd2, 0xff,
-0xd8, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x2c, 0x00, 0x26, 0x00, 0x02, 0x00, 0xea, 0xff, 0xd8, 0xff, 0xb2, 0xff, 0x98, 0xff, 0x96, 0xff,
-0x9e, 0xff, 0xa6, 0xff, 0xb2, 0xff, 0xd0, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x40, 0x00, 0x52, 0x00,
-0x52, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xda, 0xff, 0xa8, 0xff, 0x82, 0xff,
-0x72, 0xff, 0x62, 0xff, 0x64, 0xff, 0x8a, 0xff, 0xa8, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x32, 0x00,
-0x5c, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x64, 0x00, 0x36, 0x00, 0x00, 0x00, 0xcc, 0xff,
-0x96, 0xff, 0x6e, 0xff, 0x56, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x6e, 0xff, 0xa4, 0xff, 0xd4, 0xff,
-0x0e, 0x00, 0x40, 0x00, 0x70, 0x00, 0x90, 0x00, 0x98, 0x00, 0x90, 0x00, 0x64, 0x00, 0x32, 0x00,
-0xfa, 0xff, 0xc0, 0xff, 0x84, 0xff, 0x62, 0xff, 0x46, 0xff, 0x34, 0xff, 0x46, 0xff, 0x6a, 0xff,
-0xa8, 0xff, 0xe6, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7e, 0x00, 0xa6, 0x00, 0xac, 0x00, 0x9a, 0x00,
-0x70, 0x00, 0x2c, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x54, 0xff, 0x48, 0xff, 0x3a, 0xff,
-0x5a, 0xff, 0x88, 0xff, 0xb6, 0xff, 0xf2, 0xff, 0x28, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xae, 0x00,
-0xac, 0x00, 0x94, 0x00, 0x66, 0x00, 0x1a, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x82, 0xff, 0x60, 0xff,
-0x3c, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x88, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x28, 0x00, 0x6e, 0x00,
-0x92, 0x00, 0xa6, 0x00, 0x98, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xe8, 0xff, 0xaa, 0xff,
-0x7a, 0xff, 0x54, 0xff, 0x48, 0xff, 0x50, 0xff, 0x76, 0xff, 0xa2, 0xff, 0xce, 0xff, 0x18, 0x00,
-0x3e, 0x00, 0x70, 0x00, 0x96, 0x00, 0x94, 0x00, 0x8c, 0x00, 0x72, 0x00, 0x42, 0x00, 0x04, 0x00,
-0xd6, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x54, 0xff, 0x6e, 0xff, 0x8a, 0xff, 0xb0, 0xff,
-0xe8, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x64, 0x00, 0x80, 0x00, 0x82, 0x00, 0x70, 0x00, 0x46, 0x00,
-0x26, 0x00, 0xec, 0xff, 0xcc, 0xff, 0x9e, 0xff, 0x7e, 0xff, 0x78, 0xff, 0x76, 0xff, 0x7e, 0xff,
-0x90, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x3e, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x50, 0x00,
-0x50, 0x00, 0x30, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0x98, 0xff,
-0x9e, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xde, 0xff, 0xf8, 0xff, 0x1a, 0x00, 0x32, 0x00, 0x34, 0x00,
-0x3a, 0x00, 0x34, 0x00, 0x26, 0x00, 0x14, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xc8, 0xff, 0xbe, 0xff,
-0xbe, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x12, 0x00,
-0x20, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xe6, 0xff,
-0xe2, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff,
-0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
-0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff,
-0xf2, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd8, 0xff,
-0xee, 0xff, 0xf4, 0xff, 0x06, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x16, 0x00, 0x1e, 0x00,
-0x06, 0x00, 0xfe, 0xff, 0xf2, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xae, 0xff,
-0xbe, 0xff, 0xc0, 0xff, 0xe4, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x34, 0x00, 0x48, 0x00, 0x48, 0x00,
-0x42, 0x00, 0x36, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xbe, 0xff, 0xa0, 0xff, 0x90, 0xff,
-0x8a, 0xff, 0x8e, 0xff, 0x92, 0xff, 0xb0, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x52, 0x00,
-0x5c, 0x00, 0x64, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x92, 0xff,
-0x6e, 0xff, 0x5e, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x8a, 0xff, 0xae, 0xff, 0xdc, 0xff, 0x12, 0x00,
-0x50, 0x00, 0x6c, 0x00, 0x80, 0x00, 0x8a, 0x00, 0x78, 0x00, 0x54, 0x00, 0x20, 0x00, 0xee, 0xff,
-0xc2, 0xff, 0x88, 0xff, 0x5a, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x58, 0xff, 0x88, 0xff, 0xba, 0xff,
-0x00, 0x00, 0x32, 0x00, 0x54, 0x00, 0x94, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x56, 0x00,
-0x24, 0x00, 0xec, 0xff, 0xa2, 0xff, 0x74, 0xff, 0x3e, 0xff, 0x32, 0xff, 0x36, 0xff, 0x4c, 0xff,
-0x86, 0xff, 0xc6, 0xff, 0xfc, 0xff, 0x32, 0x00, 0x7e, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0xaa, 0x00,
-0x84, 0x00, 0x58, 0x00, 0x0e, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x62, 0xff, 0x36, 0xff, 0x28, 0xff,
-0x42, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x4e, 0x00, 0x86, 0x00, 0xae, 0x00,
-0xc4, 0x00, 0xb0, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfe, 0xff, 0xd6, 0xff, 0x96, 0xff, 0x62, 0xff,
-0x48, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x70, 0xff, 0xb4, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x4e, 0x00,
-0x84, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x66, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xbc, 0xff,
-0x90, 0xff, 0x60, 0xff, 0x42, 0xff, 0x40, 0xff, 0x64, 0xff, 0x8e, 0xff, 0xb2, 0xff, 0xf4, 0xff,
-0x26, 0x00, 0x4c, 0x00, 0x7e, 0x00, 0x90, 0x00, 0x92, 0x00, 0x7e, 0x00, 0x4a, 0x00, 0x1a, 0x00,
-0xe0, 0xff, 0xb2, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x7c, 0xff, 0xa4, 0xff,
-0xd8, 0xff, 0x04, 0x00, 0x2e, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x7a, 0x00, 0x70, 0x00, 0x56, 0x00,
-0x32, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x8c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x84, 0xff,
-0x8c, 0xff, 0xb0, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x26, 0x00, 0x46, 0x00, 0x48, 0x00, 0x4e, 0x00,
-0x42, 0x00, 0x40, 0x00, 0x1c, 0x00, 0xe8, 0xff, 0xd6, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0xa2, 0xff,
-0x96, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x18, 0x00, 0x36, 0x00,
-0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xec, 0xff, 0xde, 0xff,
-0xbc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xfe, 0xff,
-0xfc, 0xff, 0x08, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x04, 0x00, 0xf4, 0xff,
-0xe8, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xe4, 0xff,
-0xdc, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xee, 0xff,
-0xfc, 0xff, 0x14, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x02, 0x00,
-0x02, 0x00, 0xf2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff,
-0xdc, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x1e, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x2e, 0x00,
-0x26, 0x00, 0x12, 0x00, 0xf2, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x9a, 0xff,
-0xa2, 0xff, 0xa8, 0xff, 0xcc, 0xff, 0xe4, 0xff, 0x0a, 0x00, 0x30, 0x00, 0x52, 0x00, 0x60, 0x00,
-0x5a, 0x00, 0x4c, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xe8, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x7e, 0xff,
-0x78, 0xff, 0x6c, 0xff, 0x84, 0xff, 0x9e, 0xff, 0xc4, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00,
-0x76, 0x00, 0x8a, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x42, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xa2, 0xff,
-0x74, 0xff, 0x56, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x8e, 0xff, 0xc4, 0xff, 0x00, 0x00,
-0x30, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x90, 0x00, 0x82, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xfa, 0xff,
-0xc4, 0xff, 0x8e, 0xff, 0x54, 0xff, 0x32, 0xff, 0x32, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0xa4, 0xff,
-0xd0, 0xff, 0x12, 0x00, 0x4c, 0x00, 0x88, 0x00, 0xac, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x60, 0x00,
-0x36, 0x00, 0xee, 0xff, 0xc6, 0xff, 0x90, 0xff, 0x58, 0xff, 0x2c, 0xff, 0x18, 0xff, 0x36, 0xff,
-0x6c, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x66, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xba, 0x00,
-0xa6, 0x00, 0x74, 0x00, 0x26, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x70, 0xff, 0x32, 0xff, 0x20, 0xff,
-0x16, 0xff, 0x30, 0xff, 0x6c, 0xff, 0xb4, 0xff, 0xf2, 0xff, 0x30, 0x00, 0x72, 0x00, 0xa2, 0x00,
-0xb6, 0x00, 0xbc, 0x00, 0xa0, 0x00, 0x70, 0x00, 0x28, 0x00, 0xee, 0xff, 0xba, 0xff, 0x74, 0xff,
-0x46, 0xff, 0x32, 0xff, 0x32, 0xff, 0x56, 0xff, 0x82, 0xff, 0xc6, 0xff, 0x0c, 0x00, 0x46, 0x00,
-0x76, 0x00, 0xa2, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x20, 0x00, 0xe6, 0xff,
-0xae, 0xff, 0x80, 0xff, 0x56, 0xff, 0x3e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x9c, 0xff, 0xda, 0xff,
-0x10, 0x00, 0x40, 0x00, 0x64, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x7e, 0x00, 0x66, 0x00, 0x38, 0x00,
-0x0a, 0x00, 0xd0, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x6c, 0xff, 0x8c, 0xff,
-0xb2, 0xff, 0xe8, 0xff, 0x16, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x68, 0x00, 0x72, 0x00, 0x5a, 0x00,
-0x4c, 0x00, 0x22, 0x00, 0x02, 0x00, 0xd2, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x8a, 0xff,
-0x90, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xe6, 0xff, 0x16, 0x00, 0x28, 0x00, 0x36, 0x00, 0x34, 0x00,
-0x30, 0x00, 0x32, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xae, 0xff,
-0xa8, 0xff, 0x9e, 0xff, 0xae, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x04, 0x00,
-0x04, 0x00, 0x08, 0x00, 0x12, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xde, 0xff,
-0xdc, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe8, 0xff,
-0xde, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
-0xf8, 0xff, 0x02, 0x00, 0xfa, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xec, 0xff,
-0xea, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd4, 0xff, 0xe2, 0xff,
-0xf4, 0xff, 0xfc, 0xff, 0x0e, 0x00, 0x1a, 0x00, 0x26, 0x00, 0x20, 0x00, 0x28, 0x00, 0x24, 0x00,
-0x18, 0x00, 0x00, 0x00, 0xde, 0xff, 0xd0, 0xff, 0xba, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xba, 0xff,
-0xc4, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0x1a, 0x00, 0x36, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x52, 0x00,
-0x4e, 0x00, 0x3a, 0x00, 0x0e, 0x00, 0xf6, 0xff, 0xce, 0xff, 0xa6, 0xff, 0x8e, 0xff, 0x84, 0xff,
-0x86, 0xff, 0xa2, 0xff, 0xba, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x30, 0x00, 0x54, 0x00, 0x70, 0x00,
-0x7e, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x34, 0x00, 0x08, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x84, 0xff,
-0x5c, 0xff, 0x5c, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x4a, 0x00,
-0x76, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x92, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xfa, 0xff, 0xba, 0xff,
-0x82, 0xff, 0x56, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xba, 0xff, 0xf6, 0xff,
-0x2c, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x90, 0x00, 0x62, 0x00, 0x1a, 0x00,
-0xdc, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x2e, 0xff, 0x12, 0xff, 0x18, 0xff, 0x3e, 0xff, 0x74, 0xff,
-0xbc, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0x94, 0x00,
-0x60, 0x00, 0x14, 0x00, 0xdc, 0xff, 0x96, 0xff, 0x52, 0xff, 0x2c, 0xff, 0x16, 0xff, 0x24, 0xff,
-0x4e, 0xff, 0x8c, 0xff, 0xce, 0xff, 0x08, 0x00, 0x4a, 0x00, 0x8e, 0x00, 0xb8, 0x00, 0xcc, 0x00,
-0xbc, 0x00, 0x8a, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xce, 0xff, 0x88, 0xff, 0x52, 0xff, 0x2a, 0xff,
-0x18, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x8e, 0xff, 0xda, 0xff, 0x16, 0x00, 0x54, 0x00, 0x84, 0x00,
-0xaa, 0x00, 0xb2, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x38, 0x00, 0x02, 0x00, 0xc0, 0xff, 0x86, 0xff,
-0x56, 0xff, 0x40, 0xff, 0x3e, 0xff, 0x50, 0xff, 0x82, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0x2e, 0x00,
-0x5a, 0x00, 0x90, 0x00, 0xa0, 0x00, 0xa8, 0x00, 0x94, 0x00, 0x66, 0x00, 0x32, 0x00, 0xf6, 0xff,
-0xc2, 0xff, 0x90, 0xff, 0x74, 0xff, 0x56, 0xff, 0x5c, 0xff, 0x72, 0xff, 0x90, 0xff, 0xc6, 0xff,
-0xfc, 0xff, 0x32, 0x00, 0x50, 0x00, 0x76, 0x00, 0x86, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x40, 0x00,
-0x14, 0x00, 0xe6, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x86, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x88, 0xff,
-0xaa, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x62, 0x00, 0x54, 0x00,
-0x44, 0x00, 0x2a, 0x00, 0x02, 0x00, 0xe6, 0xff, 0xc2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa6, 0xff,
-0xb2, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xe2, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x2c, 0x00, 0x2c, 0x00,
-0x32, 0x00, 0x28, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xc6, 0xff,
-0xc0, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xee, 0xff, 0x00, 0x00,
-0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xe6, 0xff,
-0xf0, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xd8, 0xff,
-0xda, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf6, 0xff,
-0x08, 0x00, 0x08, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0xec, 0xff,
-0xdc, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xc8, 0xff,
-0xea, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x2e, 0x00, 0x26, 0x00,
-0x10, 0x00, 0xf0, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0x9a, 0xff, 0x8a, 0xff, 0x86, 0xff, 0x92, 0xff,
-0xa2, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x0c, 0x00, 0x32, 0x00, 0x52, 0x00, 0x64, 0x00, 0x68, 0x00,
-0x58, 0x00, 0x4c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x70, 0xff,
-0x6c, 0xff, 0x80, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x72, 0x00,
-0x8c, 0x00, 0x84, 0x00, 0x74, 0x00, 0x5c, 0x00, 0x30, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x90, 0xff,
-0x6a, 0xff, 0x56, 0xff, 0x46, 0xff, 0x60, 0xff, 0x8e, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x34, 0x00,
-0x60, 0x00, 0x96, 0x00, 0xa4, 0x00, 0x9c, 0x00, 0x90, 0x00, 0x54, 0x00, 0x22, 0x00, 0xf0, 0xff,
-0xaa, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x8c, 0xff, 0xd0, 0xff,
-0x04, 0x00, 0x46, 0x00, 0x80, 0x00, 0xa4, 0x00, 0xbc, 0x00, 0xae, 0x00, 0x88, 0x00, 0x52, 0x00,
-0x14, 0x00, 0xe2, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x32, 0xff, 0x58, 0xff,
-0x9c, 0xff, 0xd8, 0xff, 0x10, 0x00, 0x52, 0x00, 0x8c, 0x00, 0xa8, 0x00, 0xb4, 0x00, 0xa8, 0x00,
-0x80, 0x00, 0x3c, 0x00, 0xf8, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x48, 0xff, 0x26, 0xff, 0x1c, 0xff,
-0x3e, 0xff, 0x5c, 0xff, 0xa2, 0xff, 0xe8, 0xff, 0x12, 0x00, 0x58, 0x00, 0x98, 0x00, 0xa2, 0x00,
-0xa2, 0x00, 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x7c, 0xff, 0x44, 0xff,
-0x30, 0xff, 0x38, 0xff, 0x4e, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x58, 0x00,
-0x8a, 0x00, 0x9a, 0x00, 0xa4, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x14, 0x00, 0xe0, 0xff, 0xae, 0xff,
-0x7c, 0xff, 0x4a, 0xff, 0x4c, 0xff, 0x58, 0xff, 0x62, 0xff, 0x8e, 0xff, 0xd0, 0xff, 0x06, 0x00,
-0x36, 0x00, 0x5e, 0x00, 0x6e, 0x00, 0x86, 0x00, 0x84, 0x00, 0x68, 0x00, 0x3c, 0x00, 0x0e, 0x00,
-0xd4, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x70, 0xff, 0x66, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xb2, 0xff,
-0xec, 0xff, 0x0a, 0x00, 0x3e, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x60, 0x00, 0x50, 0x00,
-0x2e, 0x00, 0xfc, 0xff, 0xdc, 0xff, 0xba, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x94, 0xff, 0x9a, 0xff,
-0xb2, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0x08, 0x00, 0x24, 0x00, 0x34, 0x00, 0x38, 0x00, 0x4a, 0x00,
-0x46, 0x00, 0x3a, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xc8, 0xff, 0xbc, 0xff, 0xba, 0xff,
-0xba, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x18, 0x00,
-0x14, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xe4, 0xff,
-0xda, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xf8, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xfe, 0xff, 0xf6, 0xff,
-0xfc, 0xff, 0x02, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xf6, 0xff, 0xee, 0xff,
-0xde, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe8, 0xff,
-0xf2, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x28, 0x00, 0x22, 0x00, 0x28, 0x00, 0x22, 0x00, 0x16, 0x00,
-0xfa, 0xff, 0xe2, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xb6, 0xff,
-0xd2, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x32, 0x00, 0x4a, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4c, 0x00,
-0x30, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x92, 0xff, 0x86, 0xff, 0x70, 0xff, 0x72, 0xff,
-0x8e, 0xff, 0x98, 0xff, 0xce, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x54, 0x00, 0x70, 0x00, 0x7c, 0x00,
-0x7a, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x0a, 0x00, 0xdc, 0xff, 0xb2, 0xff, 0x7c, 0xff, 0x5e, 0xff,
-0x54, 0xff, 0x5c, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0x18, 0x00, 0x46, 0x00, 0x6e, 0x00,
-0xa6, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x78, 0x00, 0x38, 0x00, 0x12, 0x00, 0xd8, 0xff, 0xa0, 0xff,
-0x5e, 0xff, 0x42, 0xff, 0x40, 0xff, 0x40, 0xff, 0x6a, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x14, 0x00,
-0x52, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x74, 0x00, 0x36, 0x00, 0xfc, 0xff,
-0xc0, 0xff, 0x90, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x6a, 0xff, 0xb2, 0xff,
-0xec, 0xff, 0x1c, 0x00, 0x6a, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0xae, 0x00, 0x94, 0x00, 0x6a, 0x00,
-0x2a, 0x00, 0xfe, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x48, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x56, 0xff,
-0x88, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x32, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xaa, 0x00,
-0x8a, 0x00, 0x5a, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x64, 0xff, 0x46, 0xff, 0x2e, 0xff,
-0x38, 0xff, 0x60, 0xff, 0x8c, 0xff, 0xc4, 0xff, 0x06, 0x00, 0x36, 0x00, 0x6a, 0x00, 0x8c, 0x00,
-0x9c, 0x00, 0x96, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0e, 0x00, 0xca, 0xff, 0x9e, 0xff, 0x78, 0xff,
-0x42, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x70, 0xff, 0xa8, 0xff, 0xda, 0xff, 0x12, 0x00, 0x38, 0x00,
-0x6e, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x7c, 0x00, 0x5e, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xc6, 0xff,
-0x9c, 0xff, 0x72, 0xff, 0x58, 0xff, 0x58, 0xff, 0x66, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xe0, 0xff,
-0x12, 0x00, 0x42, 0x00, 0x50, 0x00, 0x64, 0x00, 0x66, 0x00, 0x64, 0x00, 0x4a, 0x00, 0x14, 0x00,
-0xf4, 0xff, 0xc2, 0xff, 0x98, 0xff, 0x8e, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x82, 0xff, 0x9a, 0xff,
-0xc2, 0xff, 0xee, 0xff, 0x16, 0x00, 0x30, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00,
-0x42, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xe6, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa4, 0xff,
-0xa8, 0xff, 0xbe, 0xff, 0xe2, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x1c, 0x00,
-0x2e, 0x00, 0x24, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0xee, 0xff, 0xd2, 0xff, 0xd0, 0xff,
-0xd4, 0xff, 0xc2, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xee, 0xff,
-0xf2, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00,
-0xf6, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xd6, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xee, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
-0x14, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf0, 0xff,
-0xd2, 0xff, 0xc2, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xe0, 0xff,
-0xf6, 0xff, 0x14, 0x00, 0x28, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x36, 0x00, 0x22, 0x00,
-0xfe, 0xff, 0xe6, 0xff, 0xbe, 0xff, 0x98, 0xff, 0x84, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xa2, 0xff,
-0xb8, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x54, 0x00, 0x62, 0x00, 0x70, 0x00, 0x68, 0x00,
-0x4c, 0x00, 0x2e, 0x00, 0x08, 0x00, 0xd6, 0xff, 0x9a, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x5a, 0xff,
-0x6e, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x4c, 0x00, 0x72, 0x00, 0x90, 0x00,
-0x8e, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x32, 0x00, 0xfe, 0xff, 0xc4, 0xff, 0x84, 0xff, 0x54, 0xff,
-0x42, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x74, 0xff, 0xac, 0xff, 0xe6, 0xff, 0x26, 0x00, 0x5a, 0x00,
-0x82, 0x00, 0xac, 0x00, 0x9c, 0x00, 0x92, 0x00, 0x66, 0x00, 0x30, 0x00, 0xfa, 0xff, 0xae, 0xff,
-0x78, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x54, 0xff, 0x8e, 0xff, 0xce, 0xff, 0xfe, 0xff,
-0x32, 0x00, 0x6a, 0x00, 0x94, 0x00, 0xb2, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x10, 0x00,
-0xdc, 0xff, 0x9c, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x26, 0xff, 0x38, 0xff, 0x64, 0xff, 0x98, 0xff,
-0xd8, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x78, 0x00, 0x92, 0x00, 0xb0, 0x00, 0x9c, 0x00, 0x70, 0x00,
-0x34, 0x00, 0xf2, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x52, 0xff, 0x36, 0xff, 0x2c, 0xff, 0x42, 0xff,
-0x7a, 0xff, 0xb2, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x50, 0x00, 0x82, 0x00, 0xaa, 0x00, 0xaa, 0x00,
-0x8c, 0x00, 0x6c, 0x00, 0x22, 0x00, 0xe0, 0xff, 0xbe, 0xff, 0x84, 0xff, 0x4c, 0xff, 0x3e, 0xff,
-0x42, 0xff, 0x5c, 0xff, 0x92, 0xff, 0xc8, 0xff, 0xf6, 0xff, 0x28, 0x00, 0x5a, 0x00, 0x7e, 0x00,
-0x9e, 0x00, 0x9e, 0x00, 0x7e, 0x00, 0x50, 0x00, 0x12, 0x00, 0xde, 0xff, 0xa4, 0xff, 0x80, 0xff,
-0x5c, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0x24, 0x00,
-0x4e, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x5c, 0x00, 0x44, 0x00, 0x00, 0x00, 0xde, 0xff,
-0xae, 0xff, 0x92, 0xff, 0x80, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x84, 0xff, 0xac, 0xff, 0xd6, 0xff,
-0xf2, 0xff, 0x20, 0x00, 0x40, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x22, 0x00,
-0x00, 0x00, 0xf0, 0xff, 0xba, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0x94, 0xff, 0x98, 0xff, 0xa4, 0xff,
-0xc6, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x26, 0x00,
-0x1c, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xde, 0xff, 0xc6, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xc2, 0xff,
-0xc6, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x04, 0x00,
-0x1a, 0x00, 0x14, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf0, 0xff,
-0xf4, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xee, 0xff,
-0xe8, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x08, 0x00, 0x0e, 0x00,
-0x06, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xe2, 0xff, 0xca, 0xff,
-0xca, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xf4, 0xff, 0x08, 0x00,
-0x12, 0x00, 0x26, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x26, 0x00, 0x22, 0x00, 0x0c, 0x00, 0xfc, 0xff,
-0xe4, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xa6, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xd0, 0xff,
-0xf2, 0xff, 0x08, 0x00, 0x34, 0x00, 0x52, 0x00, 0x50, 0x00, 0x46, 0x00, 0x3a, 0x00, 0x36, 0x00,
-0x0e, 0x00, 0xe6, 0xff, 0xca, 0xff, 0x94, 0xff, 0x76, 0xff, 0x72, 0xff, 0x6c, 0xff, 0x8c, 0xff,
-0x92, 0xff, 0xc2, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x58, 0x00, 0x64, 0x00, 0x7c, 0x00, 0x76, 0x00,
-0x54, 0x00, 0x44, 0x00, 0x10, 0x00, 0xe4, 0xff, 0xa8, 0xff, 0x74, 0xff, 0x64, 0xff, 0x4c, 0xff,
-0x54, 0xff, 0x6e, 0xff, 0x8e, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x3e, 0x00, 0x6e, 0x00, 0x86, 0x00,
-0xa8, 0x00, 0x94, 0x00, 0x76, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xd2, 0xff, 0xa2, 0xff, 0x6a, 0xff,
-0x40, 0xff, 0x36, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x98, 0xff, 0xd8, 0xff, 0x0a, 0x00, 0x44, 0x00,
-0x86, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xa2, 0x00, 0x76, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0xd4, 0xff,
-0x92, 0xff, 0x5c, 0xff, 0x30, 0xff, 0x20, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa2, 0xff, 0xe0, 0xff,
-0x14, 0x00, 0x64, 0x00, 0x94, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x3c, 0x00,
-0x08, 0x00, 0xda, 0xff, 0x86, 0xff, 0x58, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x66, 0xff,
-0xb2, 0xff, 0xee, 0xff, 0x1e, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xba, 0x00, 0x9e, 0x00,
-0x72, 0x00, 0x2c, 0x00, 0xf8, 0xff, 0xb8, 0xff, 0x7a, 0xff, 0x48, 0xff, 0x28, 0xff, 0x26, 0xff,
-0x4c, 0xff, 0x80, 0xff, 0xba, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa8, 0x00,
-0xa4, 0x00, 0x86, 0x00, 0x58, 0x00, 0x1a, 0x00, 0xdc, 0xff, 0xa8, 0xff, 0x6e, 0xff, 0x4c, 0xff,
-0x3c, 0xff, 0x48, 0xff, 0x74, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x1a, 0x00, 0x40, 0x00, 0x76, 0x00,
-0x8e, 0x00, 0x96, 0x00, 0x88, 0x00, 0x62, 0x00, 0x3a, 0x00, 0xf8, 0xff, 0xd0, 0xff, 0x9c, 0xff,
-0x70, 0xff, 0x54, 0xff, 0x52, 0xff, 0x58, 0xff, 0x80, 0xff, 0xac, 0xff, 0xe2, 0xff, 0x0e, 0x00,
-0x32, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x60, 0x00, 0x42, 0x00, 0x14, 0x00, 0xf4, 0xff,
-0xc6, 0xff, 0xa2, 0xff, 0x8e, 0xff, 0x74, 0xff, 0x78, 0xff, 0x84, 0xff, 0x96, 0xff, 0xc6, 0xff,
-0xec, 0xff, 0x0c, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x42, 0x00, 0x30, 0x00,
-0x06, 0x00, 0xee, 0xff, 0xd6, 0xff, 0xb4, 0xff, 0xae, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xb6, 0xff,
-0xc2, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x24, 0x00,
-0x14, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xc6, 0xff,
-0xc2, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf8, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe2, 0xff,
-0xe0, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0e, 0x00,
-0x12, 0x00, 0x16, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xd6, 0xff,
-0xd4, 0xff, 0xbc, 0xff, 0xac, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xe2, 0xff, 0x04, 0x00,
-0x0a, 0x00, 0x2c, 0x00, 0x48, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x2c, 0x00, 0xfc, 0xff,
-0xea, 0xff, 0xc8, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x92, 0xff, 0x92, 0xff, 0xa6, 0xff, 0xbe, 0xff,
-0xe2, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x68, 0x00, 0x76, 0x00, 0x60, 0x00, 0x46, 0x00,
-0x2c, 0x00, 0xfe, 0xff, 0xce, 0xff, 0x9c, 0xff, 0x7a, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x6c, 0xff,
-0x86, 0xff, 0xa8, 0xff, 0xe2, 0xff, 0x10, 0x00, 0x3c, 0x00, 0x6c, 0x00, 0x80, 0x00, 0x8a, 0x00,
-0x74, 0x00, 0x54, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x84, 0xff, 0x5e, 0xff, 0x46, 0xff,
-0x46, 0xff, 0x58, 0xff, 0x82, 0xff, 0xb0, 0xff, 0xee, 0xff, 0x22, 0x00, 0x5a, 0x00, 0x80, 0x00,
-0x9c, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x52, 0x00, 0x1a, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x7c, 0xff,
-0x52, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xfa, 0xff, 0x2e, 0x00,
-0x64, 0x00, 0x98, 0x00, 0xb2, 0x00, 0xa2, 0x00, 0x80, 0x00, 0x52, 0x00, 0x0e, 0x00, 0xda, 0xff,
-0xa4, 0xff, 0x6a, 0xff, 0x46, 0xff, 0x30, 0xff, 0x36, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd6, 0xff,
-0x06, 0x00, 0x34, 0x00, 0x7c, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0x7c, 0x00, 0x42, 0x00,
-0x00, 0x00, 0xe0, 0xff, 0x9e, 0xff, 0x6a, 0xff, 0x42, 0xff, 0x2a, 0xff, 0x40, 0xff, 0x60, 0xff,
-0xa6, 0xff, 0xe6, 0xff, 0x1a, 0x00, 0x56, 0x00, 0x88, 0x00, 0xaa, 0x00, 0xba, 0x00, 0x9e, 0x00,
-0x7c, 0x00, 0x3c, 0x00, 0x06, 0x00, 0xca, 0xff, 0x8c, 0xff, 0x64, 0xff, 0x38, 0xff, 0x38, 0xff,
-0x54, 0xff, 0x78, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x56, 0x00, 0x8a, 0x00, 0xa0, 0x00,
-0xa6, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x2e, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x92, 0xff, 0x6c, 0xff,
-0x4c, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x88, 0xff, 0xbe, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x56, 0x00,
-0x76, 0x00, 0x84, 0x00, 0x8a, 0x00, 0x72, 0x00, 0x54, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xba, 0xff,
-0x90, 0xff, 0x88, 0xff, 0x68, 0xff, 0x6c, 0xff, 0x78, 0xff, 0x98, 0xff, 0xcc, 0xff, 0xec, 0xff,
-0x1a, 0x00, 0x40, 0x00, 0x54, 0x00, 0x62, 0x00, 0x54, 0x00, 0x52, 0x00, 0x36, 0x00, 0x04, 0x00,
-0xf0, 0xff, 0xca, 0xff, 0xa6, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x90, 0xff, 0x8c, 0xff, 0xae, 0xff,
-0xd6, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x24, 0x00, 0x20, 0x00, 0x26, 0x00, 0x28, 0x00, 0x22, 0x00,
-0x06, 0x00, 0xfa, 0xff, 0xe6, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xba, 0xff,
-0xc8, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0xf8, 0xff, 0x06, 0x00,
-0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xec, 0xff,
-0xde, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe8, 0xff, 0xea, 0xff,
-0xf4, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00,
-0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xda, 0xff,
-0xc8, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf8, 0xff, 0x0a, 0x00, 0x18, 0x00,
-0x28, 0x00, 0x30, 0x00, 0x34, 0x00, 0x26, 0x00, 0x28, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xdc, 0xff,
-0xd2, 0xff, 0xb4, 0xff, 0xac, 0xff, 0xae, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xfc, 0xff,
-0x14, 0x00, 0x3c, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x36, 0x00, 0x10, 0x00,
-0xf6, 0xff, 0xcc, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x70, 0xff, 0x76, 0xff, 0x8a, 0xff, 0xaa, 0xff,
-0xcc, 0xff, 0xfc, 0xff, 0x24, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x78, 0x00, 0x7e, 0x00, 0x68, 0x00,
-0x4e, 0x00, 0x16, 0x00, 0xe8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x64, 0xff, 0x48, 0xff, 0x54, 0xff,
-0x72, 0xff, 0x9c, 0xff, 0xce, 0xff, 0x00, 0x00, 0x32, 0x00, 0x6e, 0x00, 0x92, 0x00, 0x9e, 0x00,
-0x9e, 0x00, 0x82, 0x00, 0x44, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x3e, 0xff,
-0x26, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x90, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x46, 0x00, 0x7a, 0x00,
-0x9c, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x44, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0x96, 0xff,
-0x58, 0xff, 0x32, 0xff, 0x14, 0xff, 0x3a, 0xff, 0x54, 0xff, 0x98, 0xff, 0xe6, 0xff, 0x02, 0x00,
-0x54, 0x00, 0x8c, 0x00, 0xa8, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x7a, 0x00, 0x32, 0x00, 0x02, 0x00,
-0xcc, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x28, 0xff, 0x22, 0xff, 0x3a, 0xff, 0x6a, 0xff, 0xb6, 0xff,
-0xf4, 0xff, 0x12, 0x00, 0x5c, 0x00, 0x88, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0x90, 0x00, 0x64, 0x00,
-0x12, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x70, 0xff, 0x52, 0xff, 0x26, 0xff, 0x38, 0xff, 0x52, 0xff,
-0x7c, 0xff, 0xc8, 0xff, 0x04, 0x00, 0x30, 0x00, 0x6c, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x9c, 0x00,
-0x84, 0x00, 0x58, 0x00, 0x1e, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x56, 0xff, 0x42, 0xff,
-0x4e, 0xff, 0x7c, 0xff, 0x9c, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x3a, 0x00, 0x68, 0x00, 0x94, 0x00,
-0x98, 0x00, 0x8c, 0x00, 0x68, 0x00, 0x42, 0x00, 0x08, 0x00, 0xd0, 0xff, 0xa6, 0xff, 0x7e, 0xff,
-0x6e, 0xff, 0x52, 0xff, 0x66, 0xff, 0x80, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x02, 0x00, 0x38, 0x00,
-0x4c, 0x00, 0x64, 0x00, 0x78, 0x00, 0x60, 0x00, 0x52, 0x00, 0x32, 0x00, 0x08, 0x00, 0xd6, 0xff,
-0xa4, 0xff, 0x9c, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x98, 0xff, 0xc2, 0xff, 0xe2, 0xff,
-0xfe, 0xff, 0x28, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4a, 0x00, 0x38, 0x00, 0x1e, 0x00,
-0x00, 0x00, 0xe0, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xbc, 0xff,
-0xd4, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x2a, 0x00, 0x24, 0x00,
-0x12, 0x00, 0x04, 0x00, 0xee, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xcc, 0xff,
-0xd2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xf8, 0xff,
-0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0x04, 0x00, 0xfa, 0xff, 0x08, 0x00, 0xfe, 0xff, 0x02, 0x00,
-0x02, 0x00, 0xf8, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd6, 0xff,
-0xd4, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0x10, 0x00, 0x16, 0x00,
-0x28, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x0e, 0x00, 0xf2, 0xff, 0xe8, 0xff, 0xce, 0xff, 0xca, 0xff,
-0xba, 0xff, 0xa6, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xec, 0xff, 0x06, 0x00,
-0x28, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xee, 0xff,
-0xd0, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x90, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xe0, 0xff,
-0xfe, 0xff, 0x16, 0x00, 0x4e, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x66, 0x00, 0x46, 0x00, 0x38, 0x00,
-0x02, 0x00, 0xea, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x7a, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x80, 0xff,
-0xa2, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x60, 0x00, 0x80, 0x00, 0x88, 0x00, 0x78, 0x00,
-0x68, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0xa0, 0xff, 0x78, 0xff, 0x56, 0xff, 0x4e, 0xff,
-0x52, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x24, 0x00, 0x52, 0x00, 0x7c, 0x00, 0x9e, 0x00,
-0xa8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x94, 0xff, 0x5a, 0xff,
-0x34, 0xff, 0x34, 0xff, 0x46, 0xff, 0x6c, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x62, 0x00,
-0x92, 0x00, 0xae, 0x00, 0xac, 0x00, 0x98, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb8, 0xff,
-0x6e, 0xff, 0x42, 0xff, 0x28, 0xff, 0x28, 0xff, 0x40, 0xff, 0x70, 0xff, 0xc0, 0xff, 0xf8, 0xff,
-0x28, 0x00, 0x6c, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xae, 0x00, 0x88, 0x00, 0x5a, 0x00, 0x10, 0x00,
-0xdc, 0xff, 0xac, 0xff, 0x76, 0xff, 0x46, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x5a, 0xff, 0x92, 0xff,
-0xe2, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x80, 0x00, 0x9e, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x7c, 0x00,
-0x3c, 0x00, 0x04, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff, 0x38, 0xff, 0x48, 0xff,
-0x70, 0xff, 0xa4, 0xff, 0xe6, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x74, 0x00, 0x98, 0x00, 0x9e, 0x00,
-0x88, 0x00, 0x66, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x64, 0xff, 0x4e, 0xff,
-0x4c, 0xff, 0x5a, 0xff, 0x86, 0xff, 0xc4, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x5c, 0x00, 0x6c, 0x00,
-0x8e, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x4e, 0x00, 0x22, 0x00, 0xea, 0xff, 0xb4, 0xff, 0x8c, 0xff,
-0x7a, 0xff, 0x68, 0xff, 0x68, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x26, 0x00,
-0x4a, 0x00, 0x52, 0x00, 0x56, 0x00, 0x52, 0x00, 0x52, 0x00, 0x34, 0x00, 0x06, 0x00, 0xe8, 0xff,
-0xbc, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x94, 0xff, 0xa0, 0xff, 0x98, 0xff, 0xbc, 0xff, 0xf6, 0xff,
-0x02, 0x00, 0x10, 0x00, 0x24, 0x00, 0x36, 0x00, 0x38, 0x00, 0x34, 0x00, 0x36, 0x00, 0x16, 0x00,
-0x00, 0x00, 0xf2, 0xff, 0xd6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xca, 0xff,
-0xd8, 0xff, 0xea, 0xff, 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00,
-0x10, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe0, 0xff,
-0xe2, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe4, 0xff,
-0xea, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0e, 0x00,
-0x06, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xbc, 0xff,
-0xbe, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xda, 0xff, 0xf2, 0xff, 0x00, 0x00, 0x0c, 0x00, 0x22, 0x00,
-0x2a, 0x00, 0x32, 0x00, 0x26, 0x00, 0x22, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xe4, 0xff, 0xc6, 0xff,
-0xac, 0xff, 0x8e, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xe2, 0xff, 0xfe, 0xff,
-0x1e, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x3e, 0x00, 0x2a, 0x00, 0xf6, 0xff,
-0xd8, 0xff, 0xaa, 0xff, 0x7e, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x7a, 0xff, 0x9a, 0xff, 0xbc, 0xff,
-0xea, 0xff, 0x16, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x8e, 0x00, 0x76, 0x00, 0x54, 0x00,
-0x32, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x92, 0xff, 0x70, 0xff, 0x5c, 0xff, 0x56, 0xff, 0x6c, 0xff,
-0x8c, 0xff, 0xc0, 0xff, 0xf4, 0xff, 0x24, 0x00, 0x60, 0x00, 0x82, 0x00, 0x94, 0x00, 0xa2, 0x00,
-0x92, 0x00, 0x5a, 0x00, 0x26, 0x00, 0xf4, 0xff, 0xae, 0xff, 0x86, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x40, 0xff, 0x52, 0xff, 0x88, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x70, 0x00, 0x98, 0x00,
-0xb0, 0x00, 0xac, 0x00, 0x8e, 0x00, 0x5c, 0x00, 0x24, 0x00, 0xee, 0xff, 0xae, 0xff, 0x74, 0xff,
-0x48, 0xff, 0x34, 0xff, 0x38, 0xff, 0x5a, 0xff, 0x8e, 0xff, 0xd2, 0xff, 0x0a, 0x00, 0x3e, 0x00,
-0x7a, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xb0, 0x00, 0x86, 0x00, 0x4a, 0x00, 0x0c, 0x00, 0xda, 0xff,
-0xa0, 0xff, 0x58, 0xff, 0x38, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x98, 0xff, 0xe4, 0xff,
-0x10, 0x00, 0x50, 0x00, 0x84, 0x00, 0xaa, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x36, 0x00,
-0xf6, 0xff, 0xba, 0xff, 0x88, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x30, 0xff, 0x4a, 0xff, 0x72, 0xff,
-0xa8, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x5e, 0x00, 0x92, 0x00, 0xa8, 0x00, 0x9e, 0x00, 0x84, 0x00,
-0x5c, 0x00, 0x1a, 0x00, 0xf4, 0xff, 0xb0, 0xff, 0x7e, 0xff, 0x56, 0xff, 0x3c, 0xff, 0x40, 0xff,
-0x5a, 0xff, 0x90, 0xff, 0xc6, 0xff, 0x02, 0x00, 0x28, 0x00, 0x66, 0x00, 0x80, 0x00, 0x90, 0x00,
-0x92, 0x00, 0x62, 0x00, 0x46, 0x00, 0x10, 0x00, 0xe2, 0xff, 0xb4, 0xff, 0x82, 0xff, 0x68, 0xff,
-0x60, 0xff, 0x62, 0xff, 0x7e, 0xff, 0x96, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x2e, 0x00, 0x54, 0x00,
-0x66, 0x00, 0x68, 0x00, 0x70, 0x00, 0x60, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xee, 0xff, 0xbe, 0xff,
-0xae, 0xff, 0xa2, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xe8, 0xff, 0x08, 0x00,
-0x20, 0x00, 0x3e, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x1a, 0x00, 0x02, 0x00,
-0xfe, 0xff, 0xda, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xdc, 0xff,
-0xf2, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x0c, 0x00,
-0x06, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xe4, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf4, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0x02, 0x00, 0xfe, 0xff, 0x04, 0x00, 0xfc, 0xff,
-0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xc8, 0xff,
-0xba, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xda, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x1a, 0x00, 0x2a, 0x00,
-0x1c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x06, 0x00, 0xf2, 0xff, 0xe2, 0xff, 0xc4, 0xff, 0xa2, 0xff,
-0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xce, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x32, 0x00,
-0x48, 0x00, 0x56, 0x00, 0x56, 0x00, 0x40, 0x00, 0x30, 0x00, 0x14, 0x00, 0xe8, 0xff, 0xc6, 0xff,
-0xa2, 0xff, 0x82, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0x04, 0x00,
-0x2a, 0x00, 0x4c, 0x00, 0x62, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0x02, 0x00,
-0xd2, 0xff, 0xa8, 0xff, 0x80, 0xff, 0x64, 0xff, 0x60, 0xff, 0x62, 0xff, 0x7c, 0xff, 0xa6, 0xff,
-0xda, 0xff, 0x0e, 0x00, 0x46, 0x00, 0x74, 0x00, 0x84, 0x00, 0x92, 0x00, 0x82, 0x00, 0x6e, 0x00,
-0x40, 0x00, 0x08, 0x00, 0xd8, 0xff, 0x9e, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x4a, 0xff, 0x50, 0xff,
-0x78, 0xff, 0xae, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x5a, 0x00, 0x8a, 0x00, 0xa0, 0x00, 0xba, 0x00,
-0xa6, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x02, 0x00, 0xd2, 0xff, 0x96, 0xff, 0x62, 0xff, 0x48, 0xff,
-0x2c, 0xff, 0x40, 0xff, 0x70, 0xff, 0xae, 0xff, 0xea, 0xff, 0x28, 0x00, 0x58, 0x00, 0x8c, 0x00,
-0xaa, 0x00, 0xb6, 0x00, 0xae, 0x00, 0x72, 0x00, 0x38, 0x00, 0xfc, 0xff, 0xc8, 0xff, 0x88, 0xff,
-0x5c, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xc6, 0xff, 0xfa, 0xff, 0x34, 0x00,
-0x74, 0x00, 0x98, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0x94, 0x00, 0x66, 0x00, 0x26, 0x00, 0xea, 0xff,
-0xb4, 0xff, 0x78, 0xff, 0x48, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xc8, 0xff,
-0x00, 0x00, 0x36, 0x00, 0x6c, 0x00, 0x8e, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00,
-0xfe, 0xff, 0xce, 0xff, 0x9c, 0xff, 0x6c, 0xff, 0x40, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x6a, 0xff,
-0x96, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x34, 0x00, 0x58, 0x00, 0x84, 0x00, 0x94, 0x00, 0x80, 0x00,
-0x60, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xa0, 0xff, 0x72, 0xff, 0x5e, 0xff, 0x54, 0xff,
-0x66, 0xff, 0x8c, 0xff, 0xa6, 0xff, 0xe6, 0xff, 0x0a, 0x00, 0x42, 0x00, 0x62, 0x00, 0x78, 0x00,
-0x76, 0x00, 0x62, 0x00, 0x56, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x7e, 0xff,
-0x72, 0xff, 0x74, 0xff, 0x7a, 0xff, 0x98, 0xff, 0xba, 0xff, 0xea, 0xff, 0x0c, 0x00, 0x3a, 0x00,
-0x46, 0x00, 0x5c, 0x00, 0x60, 0x00, 0x4e, 0x00, 0x32, 0x00, 0x04, 0x00, 0xf6, 0xff, 0xdc, 0xff,
-0xae, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0xa8, 0xff, 0xc6, 0xff, 0xe6, 0xff, 0x00, 0x00,
-0x0a, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x36, 0x00, 0x26, 0x00, 0x06, 0x00,
-0xf8, 0xff, 0xec, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd8, 0xff,
-0xee, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x0a, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x0c, 0x00,
-0x06, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf2, 0xff,
-0xfc, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0a, 0x00,
-0x12, 0x00, 0x04, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xbe, 0xff, 0xc6, 0xff,
-0xce, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xec, 0xff, 0xfe, 0xff, 0x0e, 0x00, 0x1e, 0x00, 0x2e, 0x00,
-0x38, 0x00, 0x30, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0xf4, 0xff, 0xd8, 0xff, 0xc2, 0xff, 0xa2, 0xff,
-0x88, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xb6, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x12, 0x00,
-0x38, 0x00, 0x58, 0x00, 0x62, 0x00, 0x4e, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x04, 0x00, 0xe0, 0xff,
-0xac, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x78, 0xff, 0x86, 0xff, 0x9c, 0xff, 0xb6, 0xff, 0xe0, 0xff,
-0x0e, 0x00, 0x3a, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x4e, 0x00, 0x28, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x66, 0xff, 0x84, 0xff,
-0xb4, 0xff, 0xe4, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x7a, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x80, 0x00,
-0x56, 0x00, 0x20, 0x00, 0xee, 0xff, 0xc0, 0xff, 0x88, 0xff, 0x58, 0xff, 0x46, 0xff, 0x46, 0xff,
-0x5c, 0xff, 0x88, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x68, 0x00, 0x92, 0x00, 0xac, 0x00,
-0xaa, 0x00, 0x92, 0x00, 0x5e, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xb6, 0xff, 0x7a, 0xff, 0x4e, 0xff,
-0x3a, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x8c, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x72, 0x00,
-0xa8, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xa0, 0xff,
-0x6a, 0xff, 0x44, 0xff, 0x34, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x9a, 0xff, 0xe6, 0xff, 0x18, 0x00,
-0x48, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xb8, 0x00, 0xa4, 0x00, 0x82, 0x00, 0x3a, 0x00, 0x0e, 0x00,
-0xdc, 0xff, 0x9e, 0xff, 0x64, 0xff, 0x48, 0xff, 0x40, 0xff, 0x46, 0xff, 0x74, 0xff, 0xb0, 0xff,
-0xec, 0xff, 0x1a, 0x00, 0x54, 0x00, 0x8a, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x90, 0x00, 0x74, 0x00,
-0x3c, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x56, 0xff,
-0x84, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x20, 0x00, 0x54, 0x00, 0x78, 0x00, 0x82, 0x00, 0x86, 0x00,
-0x6c, 0x00, 0x50, 0x00, 0x1a, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x68, 0xff,
-0x70, 0xff, 0x88, 0xff, 0x9c, 0xff, 0xd0, 0xff, 0x02, 0x00, 0x28, 0x00, 0x4c, 0x00, 0x5a, 0x00,
-0x6c, 0x00, 0x58, 0x00, 0x48, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xb0, 0xff, 0x96, 0xff,
-0x92, 0xff, 0x80, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0xc0, 0xff, 0xe6, 0xff, 0x02, 0x00, 0x12, 0x00,
-0x2e, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x36, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0xee, 0xff, 0xce, 0xff,
-0xc2, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xc4, 0xff, 0xd4, 0xff, 0xec, 0xff,
-0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xfe, 0xff,
-0xec, 0xff, 0xf2, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xdc, 0xff,
-0xe6, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x04, 0x00, 0xfc, 0xff, 0x04, 0x00, 0x04, 0x00,
-0x00, 0x00, 0xfe, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xf4, 0xff,
-0xee, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xe0, 0xff,
-0xd8, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x26, 0x00, 0x28, 0x00,
-0x22, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xee, 0xff, 0xd6, 0xff, 0xb6, 0xff, 0xac, 0xff,
-0xac, 0xff, 0xbc, 0xff, 0xc8, 0xff, 0xdc, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x28, 0x00, 0x4e, 0x00,
-0x5a, 0x00, 0x52, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0xa6, 0xff,
-0x88, 0xff, 0x6c, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0x94, 0xff, 0xce, 0xff, 0xee, 0xff, 0x1e, 0x00,
-0x46, 0x00, 0x5e, 0x00, 0x7a, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xee, 0xff,
-0xba, 0xff, 0x74, 0xff, 0x66, 0xff, 0x5e, 0xff, 0x60, 0xff, 0x82, 0xff, 0x94, 0xff, 0xc2, 0xff,
-0x06, 0x00, 0x34, 0x00, 0x62, 0x00, 0x7c, 0x00, 0x98, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x46, 0x00,
-0x10, 0x00, 0xd8, 0xff, 0xa2, 0xff, 0x70, 0xff, 0x4a, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x78, 0xff,
-0x9c, 0xff, 0xce, 0xff, 0x14, 0x00, 0x42, 0x00, 0x74, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0x98, 0x00,
-0x76, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x5e, 0xff, 0x34, 0xff, 0x2c, 0xff,
-0x38, 0xff, 0x62, 0xff, 0x9e, 0xff, 0xe6, 0xff, 0x14, 0x00, 0x40, 0x00, 0x88, 0x00, 0xaa, 0x00,
-0xb8, 0x00, 0xa4, 0x00, 0x76, 0x00, 0x36, 0x00, 0xfc, 0xff, 0xd2, 0xff, 0x90, 0xff, 0x62, 0xff,
-0x3e, 0xff, 0x2a, 0xff, 0x46, 0xff, 0x6a, 0xff, 0xb8, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x58, 0x00,
-0x92, 0x00, 0xba, 0x00, 0xb4, 0x00, 0x92, 0x00, 0x74, 0x00, 0x2e, 0x00, 0xec, 0xff, 0xc4, 0xff,
-0x84, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x80, 0xff, 0xba, 0xff, 0xfa, 0xff,
-0x28, 0x00, 0x66, 0x00, 0x90, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x5c, 0x00, 0x18, 0x00,
-0xe4, 0xff, 0xb2, 0xff, 0x80, 0xff, 0x4c, 0xff, 0x3e, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x96, 0xff,
-0xc4, 0xff, 0x0a, 0x00, 0x30, 0x00, 0x60, 0x00, 0x88, 0x00, 0x90, 0x00, 0xa0, 0x00, 0x84, 0x00,
-0x3e, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x68, 0xff, 0x58, 0xff, 0x6a, 0xff,
-0x80, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x02, 0x00, 0x36, 0x00, 0x56, 0x00, 0x6e, 0x00, 0x6c, 0x00,
-0x62, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x8a, 0xff, 0x82, 0xff,
-0x76, 0xff, 0x8e, 0xff, 0x98, 0xff, 0xbe, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x38, 0x00, 0x4c, 0x00,
-0x56, 0x00, 0x4a, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xc0, 0xff, 0xae, 0xff,
-0x98, 0xff, 0x9a, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xb4, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0x0c, 0x00,
-0x28, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x26, 0x00, 0x18, 0x00, 0x02, 0x00, 0xf2, 0xff,
-0xe8, 0xff, 0xce, 0xff, 0xbe, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xca, 0xff, 0xd6, 0xff,
-0xf2, 0xff, 0xf4, 0xff, 0x02, 0x00, 0x06, 0x00, 0xf6, 0xff, 0x04, 0x00, 0x04, 0x00, 0xfc, 0xff,
-0x02, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff,
-0xe8, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff,
-0xf8, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x0e, 0x00, 0x10, 0x00,
-0x1c, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xe8, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xb8, 0xff, 0xc6, 0xff,
-0xc2, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xec, 0xff, 0x06, 0x00, 0x14, 0x00, 0x32, 0x00, 0x40, 0x00,
-0x2e, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x12, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xae, 0xff, 0x98, 0xff,
-0x94, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x44, 0x00,
-0x56, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf8, 0xff, 0xca, 0xff,
-0xa0, 0xff, 0x7e, 0xff, 0x6a, 0xff, 0x72, 0xff, 0x80, 0xff, 0x9a, 0xff, 0xc4, 0xff, 0xfe, 0xff,
-0x26, 0x00, 0x50, 0x00, 0x78, 0x00, 0x86, 0x00, 0x74, 0x00, 0x64, 0x00, 0x3a, 0x00, 0x0c, 0x00,
-0xd8, 0xff, 0xaa, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x48, 0xff, 0x5a, 0xff, 0x72, 0xff, 0xaa, 0xff,
-0xe0, 0xff, 0x0a, 0x00, 0x46, 0x00, 0x78, 0x00, 0x98, 0x00, 0x9e, 0x00, 0x86, 0x00, 0x56, 0x00,
-0x24, 0x00, 0xfe, 0xff, 0xc0, 0xff, 0x7a, 0xff, 0x52, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x4a, 0xff,
-0x7a, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0x30, 0x00, 0x70, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xbe, 0x00,
-0x98, 0x00, 0x66, 0x00, 0x28, 0x00, 0xea, 0xff, 0xb8, 0xff, 0x66, 0xff, 0x3a, 0xff, 0x20, 0xff,
-0x1c, 0xff, 0x4e, 0xff, 0x78, 0xff, 0xc6, 0xff, 0x08, 0x00, 0x34, 0x00, 0x7c, 0x00, 0xa4, 0x00,
-0xc0, 0x00, 0xba, 0x00, 0x94, 0x00, 0x5c, 0x00, 0x10, 0x00, 0xe6, 0xff, 0x9e, 0xff, 0x58, 0xff,
-0x30, 0xff, 0x20, 0xff, 0x30, 0xff, 0x50, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x50, 0x00,
-0x86, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x12, 0x00, 0xc6, 0xff,
-0x8a, 0xff, 0x52, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa6, 0xff, 0xec, 0xff,
-0x22, 0x00, 0x58, 0x00, 0x96, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0xa8, 0x00, 0x7e, 0x00, 0x4a, 0x00,
-0xfc, 0xff, 0xc2, 0xff, 0x82, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x50, 0xff, 0x70, 0xff,
-0xae, 0xff, 0xe6, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x7e, 0x00, 0x8e, 0x00, 0x94, 0x00, 0x84, 0x00,
-0x5c, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xb4, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0x60, 0xff, 0x60, 0xff,
-0x7a, 0xff, 0x9a, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x26, 0x00, 0x48, 0x00, 0x5a, 0x00, 0x6e, 0x00,
-0x64, 0x00, 0x58, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xea, 0xff, 0xba, 0xff, 0xa0, 0xff, 0x9a, 0xff,
-0x90, 0xff, 0x8a, 0xff, 0x90, 0xff, 0xb2, 0xff, 0xda, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x2c, 0x00,
-0x40, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0xe8, 0xff, 0xcc, 0xff,
-0xb0, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xa8, 0xff, 0xba, 0xff, 0xca, 0xff, 0xda, 0xff, 0xf8, 0xff,
-0x04, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x20, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xf6, 0xff,
-0xf2, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xd6, 0xff, 0xea, 0xff,
-0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfa, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x06, 0x00, 0xfe, 0xff, 0x0a, 0x00, 0xfc, 0xff,
-0xf8, 0xff, 0xf0, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xc8, 0xff,
-0xd6, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x2a, 0x00,
-0x2e, 0x00, 0x10, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0xa6, 0xff,
-0xb2, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x22, 0x00, 0x52, 0x00, 0x5e, 0x00,
-0x58, 0x00, 0x52, 0x00, 0x46, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x92, 0xff,
-0x88, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x92, 0xff, 0xb4, 0xff, 0xe2, 0xff, 0x04, 0x00, 0x3a, 0x00,
-0x5c, 0x00, 0x72, 0x00, 0x7e, 0x00, 0x6c, 0x00, 0x4a, 0x00, 0x30, 0x00, 0xfe, 0xff, 0xce, 0xff,
-0x9c, 0xff, 0x7e, 0xff, 0x62, 0xff, 0x62, 0xff, 0x70, 0xff, 0x82, 0xff, 0xac, 0xff, 0xe4, 0xff,
-0x24, 0x00, 0x50, 0x00, 0x7a, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x80, 0x00, 0x54, 0x00, 0x20, 0x00,
-0xec, 0xff, 0xba, 0xff, 0x86, 0xff, 0x58, 0xff, 0x38, 0xff, 0x42, 0xff, 0x52, 0xff, 0x88, 0xff,
-0xbe, 0xff, 0xf2, 0xff, 0x2e, 0x00, 0x66, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x82, 0x00,
-0x50, 0x00, 0x0e, 0x00, 0xda, 0xff, 0x9a, 0xff, 0x62, 0xff, 0x40, 0xff, 0x24, 0xff, 0x28, 0xff,
-0x4a, 0xff, 0x84, 0xff, 0xcc, 0xff, 0x02, 0x00, 0x40, 0x00, 0x82, 0x00, 0xac, 0x00, 0xb4, 0x00,
-0xaa, 0x00, 0x84, 0x00, 0x4e, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0x8c, 0xff, 0x5a, 0xff, 0x3c, 0xff,
-0x20, 0xff, 0x38, 0xff, 0x62, 0xff, 0xa0, 0xff, 0xe0, 0xff, 0x1c, 0x00, 0x5e, 0x00, 0x96, 0x00,
-0xb2, 0x00, 0xc2, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x32, 0x00, 0xf0, 0xff, 0xc6, 0xff, 0x7c, 0xff,
-0x4a, 0xff, 0x34, 0xff, 0x2c, 0xff, 0x3a, 0xff, 0x6e, 0xff, 0xb4, 0xff, 0xf6, 0xff, 0x24, 0x00,
-0x66, 0x00, 0x8e, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x1e, 0x00, 0xe2, 0xff,
-0xa8, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x42, 0xff, 0x40, 0xff, 0x66, 0xff, 0x90, 0xff, 0xc8, 0xff,
-0x08, 0x00, 0x40, 0x00, 0x68, 0x00, 0x8c, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x78, 0x00, 0x4c, 0x00,
-0x10, 0x00, 0xde, 0xff, 0xae, 0xff, 0x88, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x62, 0xff, 0x78, 0xff,
-0xa8, 0xff, 0xe0, 0xff, 0x08, 0x00, 0x32, 0x00, 0x58, 0x00, 0x6e, 0x00, 0x82, 0x00, 0x72, 0x00,
-0x50, 0x00, 0x32, 0x00, 0xf8, 0xff, 0xe0, 0xff, 0xaa, 0xff, 0x90, 0xff, 0x7c, 0xff, 0x74, 0xff,
-0x80, 0xff, 0x92, 0xff, 0xba, 0xff, 0xe0, 0xff, 0x06, 0x00, 0x32, 0x00, 0x48, 0x00, 0x46, 0x00,
-0x60, 0x00, 0x58, 0x00, 0x44, 0x00, 0x24, 0x00, 0x02, 0x00, 0xdc, 0xff, 0xc6, 0xff, 0xb4, 0xff,
-0xa6, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x14, 0x00,
-0x26, 0x00, 0x2c, 0x00, 0x34, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x12, 0x00, 0xf6, 0xff, 0xe6, 0xff,
-0xcc, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xda, 0xff,
-0xe4, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe2, 0xff,
-0xe4, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xce, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xf4, 0xff,
-0xf6, 0xff, 0xfc, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x14, 0x00,
-0xfc, 0xff, 0xf8, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xb8, 0xff,
-0xba, 0xff, 0xda, 0xff, 0xe8, 0xff, 0x06, 0x00, 0x22, 0x00, 0x34, 0x00, 0x38, 0x00, 0x32, 0x00,
-0x36, 0x00, 0x38, 0x00, 0x18, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x92, 0xff,
-0x98, 0xff, 0x9e, 0xff, 0xb0, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x1c, 0x00, 0x3e, 0x00, 0x58, 0x00,
-0x64, 0x00, 0x6e, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x24, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x98, 0xff,
-0x84, 0xff, 0x6c, 0xff, 0x76, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0x26, 0x00,
-0x58, 0x00, 0x7c, 0x00, 0x86, 0x00, 0x84, 0x00, 0x78, 0x00, 0x44, 0x00, 0x20, 0x00, 0xf0, 0xff,
-0xac, 0xff, 0x76, 0xff, 0x44, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x94, 0xff, 0xc8, 0xff,
-0xf8, 0xff, 0x38, 0x00, 0x70, 0x00, 0x94, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x88, 0x00, 0x46, 0x00,
-0x10, 0x00, 0xe2, 0xff, 0x9a, 0xff, 0x5c, 0xff, 0x36, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x60, 0xff,
-0xa0, 0xff, 0xe0, 0xff, 0x12, 0x00, 0x52, 0x00, 0x8c, 0x00, 0xae, 0x00, 0xb8, 0x00, 0xae, 0x00,
-0x7e, 0x00, 0x32, 0x00, 0x00, 0x00, 0xb6, 0xff, 0x74, 0xff, 0x48, 0xff, 0x24, 0xff, 0x16, 0xff,
-0x30, 0xff, 0x60, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x90, 0x00, 0xac, 0x00,
-0xb0, 0x00, 0xa0, 0x00, 0x64, 0x00, 0x1e, 0x00, 0xe2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x36, 0xff,
-0x1c, 0xff, 0x22, 0xff, 0x46, 0xff, 0x72, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x32, 0x00, 0x70, 0x00,
-0x9a, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x06, 0x00, 0xe0, 0xff, 0xa6, 0xff,
-0x6e, 0xff, 0x46, 0xff, 0x30, 0xff, 0x48, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x0e, 0x00,
-0x40, 0x00, 0x6a, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x38, 0x00, 0xf8, 0xff,
-0xce, 0xff, 0x8e, 0xff, 0x76, 0xff, 0x58, 0xff, 0x4e, 0xff, 0x64, 0xff, 0x7e, 0xff, 0xac, 0xff,
-0xe4, 0xff, 0x18, 0x00, 0x40, 0x00, 0x6a, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x72, 0x00, 0x54, 0x00,
-0x20, 0x00, 0xfe, 0xff, 0xd0, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x84, 0xff,
-0x9a, 0xff, 0xca, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x3c, 0x00, 0x54, 0x00, 0x62, 0x00, 0x6a, 0x00,
-0x64, 0x00, 0x46, 0x00, 0x10, 0x00, 0xfc, 0xff, 0xe0, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0x94, 0xff,
-0x90, 0xff, 0x92, 0xff, 0xa4, 0xff, 0xc6, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x24, 0x00, 0x30, 0x00,
-0x40, 0x00, 0x36, 0x00, 0x32, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xc6, 0xff,
-0xbc, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xfc, 0xff,
-0x0a, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xfa, 0xff, 0xf6, 0xff,
-0xe8, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe4, 0xff,
-0xe6, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe8, 0xff,
-0x00, 0x00, 0x08, 0x00, 0x06, 0x00, 0x16, 0x00, 0x06, 0x00, 0x04, 0x00, 0xf6, 0xff, 0xf6, 0xff,
-0xec, 0xff, 0xda, 0xff, 0xce, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc0, 0xff,
-0xe4, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x18, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00,
-0x1e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xb6, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa8, 0xff,
-0xaa, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xf0, 0xff, 0x0e, 0x00, 0x36, 0x00, 0x46, 0x00, 0x4c, 0x00,
-0x4a, 0x00, 0x42, 0x00, 0x28, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x82, 0xff,
-0x7e, 0xff, 0x78, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xd8, 0xff, 0x02, 0x00, 0x36, 0x00, 0x56, 0x00,
-0x72, 0x00, 0x7c, 0x00, 0x70, 0x00, 0x52, 0x00, 0x30, 0x00, 0x0a, 0x00, 0xdc, 0xff, 0xa2, 0xff,
-0x78, 0xff, 0x68, 0xff, 0x52, 0xff, 0x60, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1e, 0x00,
-0x54, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x38, 0x00, 0x00, 0x00,
-0xc4, 0xff, 0x8a, 0xff, 0x52, 0xff, 0x3a, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xb6, 0xff,
-0xee, 0xff, 0x16, 0x00, 0x5e, 0x00, 0x96, 0x00, 0xa4, 0x00, 0xac, 0x00, 0x94, 0x00, 0x6c, 0x00,
-0x22, 0x00, 0xf4, 0xff, 0xbe, 0xff, 0x76, 0xff, 0x4a, 0xff, 0x36, 0xff, 0x2a, 0xff, 0x4a, 0xff,
-0x82, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x2c, 0x00, 0x7a, 0x00, 0xaa, 0x00, 0xb6, 0x00, 0xb2, 0x00,
-0x9e, 0x00, 0x60, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x72, 0xff, 0x40, 0xff, 0x22, 0xff,
-0x30, 0xff, 0x56, 0xff, 0x86, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x48, 0x00, 0x80, 0x00, 0xa2, 0x00,
-0xba, 0x00, 0xb8, 0x00, 0x82, 0x00, 0x40, 0x00, 0x04, 0x00, 0xc4, 0xff, 0x8c, 0xff, 0x4e, 0xff,
-0x2e, 0xff, 0x1e, 0xff, 0x32, 0xff, 0x5e, 0xff, 0x98, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x4e, 0x00,
-0x78, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x9c, 0x00, 0x70, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xb4, 0xff,
-0x80, 0xff, 0x5c, 0xff, 0x3e, 0xff, 0x2c, 0xff, 0x5a, 0xff, 0x84, 0xff, 0xb0, 0xff, 0xee, 0xff,
-0x2a, 0x00, 0x5e, 0x00, 0x78, 0x00, 0x92, 0x00, 0x8e, 0x00, 0x82, 0x00, 0x48, 0x00, 0x14, 0x00,
-0xe0, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x4c, 0xff, 0x4e, 0xff, 0x6e, 0xff, 0x86, 0xff,
-0xca, 0xff, 0xfc, 0xff, 0x1e, 0x00, 0x52, 0x00, 0x66, 0x00, 0x76, 0x00, 0x62, 0x00, 0x56, 0x00,
-0x38, 0x00, 0x06, 0x00, 0xe2, 0xff, 0xbc, 0xff, 0x98, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x7c, 0xff,
-0x90, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x00, 0x00, 0x20, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x60, 0x00,
-0x52, 0x00, 0x4c, 0x00, 0x28, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xae, 0xff,
-0xae, 0xff, 0xaa, 0xff, 0xba, 0xff, 0xd0, 0xff, 0xee, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x22, 0x00,
-0x1e, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xf0, 0xff, 0xe0, 0xff,
-0xe2, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xee, 0xff, 0xfa, 0xff,
-0xfa, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff,
-0x0a, 0x00, 0x04, 0x00, 0xfc, 0xff, 0x0a, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xee, 0xff,
-0xea, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xee, 0xff,
-0xf6, 0xff, 0xf4, 0xff, 0x0c, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x14, 0x00,
-0x02, 0x00, 0xde, 0xff, 0xc4, 0xff, 0xb6, 0xff, 0xaa, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xb6, 0xff,
-0xbc, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x2c, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x44, 0x00,
-0x3c, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xdc, 0xff, 0xb6, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x82, 0xff,
-0x8c, 0xff, 0x96, 0xff, 0xb6, 0xff, 0xea, 0xff, 0x06, 0x00, 0x34, 0x00, 0x52, 0x00, 0x68, 0x00,
-0x76, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x26, 0x00, 0xf8, 0xff, 0xce, 0xff, 0x98, 0xff, 0x80, 0xff,
-0x62, 0xff, 0x5a, 0xff, 0x66, 0xff, 0x8e, 0xff, 0xba, 0xff, 0xe6, 0xff, 0x10, 0x00, 0x52, 0x00,
-0x70, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x70, 0x00, 0x54, 0x00, 0x28, 0x00, 0xf0, 0xff, 0xb6, 0xff,
-0x86, 0xff, 0x64, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x92, 0xff, 0xbc, 0xff, 0xfc, 0xff,
-0x3e, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x50, 0x00, 0x1c, 0x00,
-0xec, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x46, 0xff, 0x34, 0xff, 0x4c, 0xff, 0x5e, 0xff, 0xa2, 0xff,
-0xd2, 0xff, 0x12, 0x00, 0x52, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x78, 0x00,
-0x48, 0x00, 0x06, 0x00, 0xdc, 0xff, 0x9a, 0xff, 0x56, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x48, 0xff,
-0x5e, 0xff, 0xae, 0xff, 0xee, 0xff, 0x16, 0x00, 0x5e, 0x00, 0x94, 0x00, 0xb8, 0x00, 0xb0, 0x00,
-0xa4, 0x00, 0x78, 0x00, 0x38, 0x00, 0x04, 0x00, 0xc0, 0xff, 0x86, 0xff, 0x54, 0xff, 0x32, 0xff,
-0x2a, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xba, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x6c, 0x00, 0x96, 0x00,
-0xb0, 0x00, 0xac, 0x00, 0x98, 0x00, 0x68, 0x00, 0x1e, 0x00, 0xe6, 0xff, 0xba, 0xff, 0x76, 0xff,
-0x44, 0xff, 0x2a, 0xff, 0x24, 0xff, 0x4e, 0xff, 0x84, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x32, 0x00,
-0x62, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x96, 0x00, 0x7a, 0x00, 0x44, 0x00, 0x12, 0x00, 0xde, 0xff,
-0xa2, 0xff, 0x70, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x42, 0xff, 0x70, 0xff, 0xa4, 0xff, 0xe0, 0xff,
-0x16, 0x00, 0x3a, 0x00, 0x64, 0x00, 0x74, 0x00, 0x8e, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x32, 0x00,
-0x02, 0x00, 0xe2, 0xff, 0xa4, 0xff, 0x84, 0xff, 0x70, 0xff, 0x62, 0xff, 0x78, 0xff, 0x8a, 0xff,
-0xae, 0xff, 0xe4, 0xff, 0x10, 0x00, 0x34, 0x00, 0x4a, 0x00, 0x58, 0x00, 0x60, 0x00, 0x4e, 0x00,
-0x40, 0x00, 0x1a, 0x00, 0xf6, 0xff, 0xde, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x9a, 0xff, 0x8e, 0xff,
-0x9a, 0xff, 0xa4, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x08, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x34, 0x00,
-0x34, 0x00, 0x3c, 0x00, 0x30, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd2, 0xff, 0xd4, 0xff,
-0xd0, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x04, 0x00,
-0x0c, 0x00, 0x12, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xfa, 0xff,
-0xf0, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe2, 0xff,
-0xdc, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x06, 0x00,
-0x0e, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xf0, 0xff,
-0xe2, 0xff, 0xd2, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xf0, 0xff,
-0xfc, 0xff, 0x10, 0x00, 0x16, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x16, 0x00,
-0x00, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xb0, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xa0, 0xff,
-0xb8, 0xff, 0xd4, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x48, 0x00,
-0x3a, 0x00, 0x28, 0x00, 0x08, 0x00, 0xe0, 0xff, 0xc6, 0xff, 0x92, 0xff, 0x78, 0xff, 0x6e, 0xff,
-0x76, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x54, 0x00, 0x64, 0x00,
-0x7c, 0x00, 0x78, 0x00, 0x5c, 0x00, 0x3e, 0x00, 0x10, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x7e, 0xff,
-0x56, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x42, 0x00,
-0x6e, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x86, 0x00, 0x6a, 0x00, 0x36, 0x00, 0x02, 0x00, 0xcc, 0xff,
-0x8c, 0xff, 0x5a, 0xff, 0x40, 0xff, 0x40, 0xff, 0x50, 0xff, 0x78, 0xff, 0xb0, 0xff, 0xee, 0xff,
-0x24, 0x00, 0x56, 0x00, 0x84, 0x00, 0x9e, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x72, 0x00, 0x2e, 0x00,
-0xfa, 0xff, 0xc4, 0xff, 0x80, 0xff, 0x5a, 0xff, 0x38, 0xff, 0x40, 0xff, 0x58, 0xff, 0x7e, 0xff,
-0xce, 0xff, 0xf0, 0xff, 0x26, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x9a, 0x00,
-0x62, 0x00, 0x20, 0x00, 0xf8, 0xff, 0xb6, 0xff, 0x76, 0xff, 0x4a, 0xff, 0x2a, 0xff, 0x3a, 0xff,
-0x5c, 0xff, 0x8c, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x6e, 0x00, 0x96, 0x00, 0xba, 0x00,
-0x9c, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x10, 0x00, 0xe0, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff,
-0x2c, 0xff, 0x3e, 0xff, 0x5c, 0xff, 0x96, 0xff, 0xda, 0xff, 0x10, 0x00, 0x4a, 0x00, 0x7e, 0x00,
-0xae, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0x76, 0x00, 0x44, 0x00, 0xfc, 0xff, 0xc2, 0xff, 0x96, 0xff,
-0x56, 0xff, 0x44, 0xff, 0x34, 0xff, 0x50, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x1a, 0x00,
-0x56, 0x00, 0x88, 0x00, 0x9a, 0x00, 0x94, 0x00, 0x80, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf0, 0xff,
-0xac, 0xff, 0x82, 0xff, 0x68, 0xff, 0x50, 0xff, 0x58, 0xff, 0x6c, 0xff, 0x90, 0xff, 0xba, 0xff,
-0xf4, 0xff, 0x22, 0x00, 0x46, 0x00, 0x62, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x40, 0x00,
-0x02, 0x00, 0xe8, 0xff, 0xc4, 0xff, 0x96, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x86, 0xff, 0x92, 0xff,
-0xb6, 0xff, 0xdc, 0xff, 0x04, 0x00, 0x20, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00,
-0x36, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xba, 0xff, 0xae, 0xff, 0xa6, 0xff,
-0xa2, 0xff, 0xb6, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x16, 0x00, 0x0e, 0x00,
-0x1a, 0x00, 0x20, 0x00, 0x06, 0x00, 0x0a, 0x00, 0xf2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xcc, 0xff,
-0xd6, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0x04, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0x04, 0x00,
-0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xe4, 0xff,
-0xe4, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xc6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xec, 0xff,
-0x00, 0x00, 0x0a, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x0c, 0x00, 0xfe, 0xff,
-0xec, 0xff, 0xd4, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xc6, 0xff,
-0xe0, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x2e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x3e, 0x00,
-0x16, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xbe, 0xff, 0xa2, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x8a, 0xff,
-0xa4, 0xff, 0xc0, 0xff, 0xe6, 0xff, 0x0c, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x6a, 0x00, 0x72, 0x00,
-0x62, 0x00, 0x48, 0x00, 0x20, 0x00, 0xea, 0xff, 0xc4, 0xff, 0x90, 0xff, 0x68, 0xff, 0x56, 0xff,
-0x5c, 0xff, 0x62, 0xff, 0x80, 0xff, 0xae, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x52, 0x00, 0x7c, 0x00,
-0x8c, 0x00, 0x96, 0x00, 0x74, 0x00, 0x56, 0x00, 0x26, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x82, 0xff,
-0x54, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x58, 0xff, 0x8c, 0xff, 0xc0, 0xff, 0xfe, 0xff, 0x30, 0x00,
-0x70, 0x00, 0x96, 0x00, 0xae, 0x00, 0xae, 0x00, 0x94, 0x00, 0x60, 0x00, 0x26, 0x00, 0xe2, 0xff,
-0xa8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x30, 0xff, 0x30, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xc2, 0xff,
-0xfc, 0xff, 0x3e, 0x00, 0x76, 0x00, 0x9a, 0x00, 0xb6, 0x00, 0xac, 0x00, 0x8e, 0x00, 0x4e, 0x00,
-0x0c, 0x00, 0xda, 0xff, 0x9c, 0xff, 0x5c, 0xff, 0x3a, 0xff, 0x20, 0xff, 0x32, 0xff, 0x5e, 0xff,
-0x94, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x52, 0x00, 0x90, 0x00, 0xbe, 0x00, 0xc8, 0x00, 0xb0, 0x00,
-0x84, 0x00, 0x4c, 0x00, 0x0a, 0x00, 0xd4, 0xff, 0x9c, 0xff, 0x58, 0xff, 0x36, 0xff, 0x26, 0xff,
-0x42, 0xff, 0x68, 0xff, 0xb4, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x6a, 0x00, 0x96, 0x00, 0xbc, 0x00,
-0xb2, 0x00, 0x96, 0x00, 0x6c, 0x00, 0x30, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x50, 0xff,
-0x34, 0xff, 0x36, 0xff, 0x4c, 0xff, 0x82, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x2c, 0x00, 0x66, 0x00,
-0x8c, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x1a, 0x00, 0xec, 0xff, 0xb8, 0xff,
-0x82, 0xff, 0x64, 0xff, 0x4e, 0xff, 0x5a, 0xff, 0x7c, 0xff, 0x98, 0xff, 0xd4, 0xff, 0x08, 0x00,
-0x38, 0x00, 0x68, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x76, 0x00, 0x64, 0x00, 0x36, 0x00, 0x18, 0x00,
-0xe6, 0xff, 0xb2, 0xff, 0x92, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x82, 0xff, 0xb8, 0xff,
-0xe8, 0xff, 0xfc, 0xff, 0x26, 0x00, 0x40, 0x00, 0x4e, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x44, 0x00,
-0x1c, 0x00, 0xfa, 0xff, 0xde, 0xff, 0xaa, 0xff, 0x94, 0xff, 0x94, 0xff, 0x84, 0xff, 0x92, 0xff,
-0x9e, 0xff, 0xd4, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x3c, 0x00, 0x30, 0x00, 0x1a, 0x00, 0xf8, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xc2, 0xff,
-0xae, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x08, 0x00,
-0x12, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x14, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xda, 0xff,
-0xe2, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe4, 0xff,
-0xea, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x06, 0x00, 0x08, 0x00,
-0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xee, 0xff, 0xe4, 0xff,
-0xde, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xfa, 0xff,
-0x0e, 0x00, 0x1c, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x24, 0x00, 0x28, 0x00, 0x22, 0x00, 0xfc, 0xff,
-0xf0, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xaa, 0xff, 0x98, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xb8, 0xff,
-0xd4, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x36, 0x00, 0x52, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x4c, 0x00,
-0x3a, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xc4, 0xff, 0xa0, 0xff, 0x90, 0xff, 0x80, 0xff, 0x7a, 0xff,
-0x8a, 0xff, 0xa6, 0xff, 0xd4, 0xff, 0xf6, 0xff, 0x1e, 0x00, 0x52, 0x00, 0x62, 0x00, 0x76, 0x00,
-0x7a, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x64, 0xff,
-0x56, 0xff, 0x54, 0xff, 0x74, 0xff, 0xa0, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x62, 0x00,
-0x7e, 0x00, 0x88, 0x00, 0x82, 0x00, 0x64, 0x00, 0x32, 0x00, 0x00, 0x00, 0xce, 0xff, 0x94, 0xff,
-0x5e, 0xff, 0x4a, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xaa, 0xff, 0xda, 0xff, 0x0a, 0x00,
-0x48, 0x00, 0x84, 0x00, 0x98, 0x00, 0xa8, 0x00, 0xa0, 0x00, 0x68, 0x00, 0x2e, 0x00, 0xf0, 0xff,
-0xb8, 0xff, 0x7e, 0xff, 0x4e, 0xff, 0x34, 0xff, 0x28, 0xff, 0x3e, 0xff, 0x6e, 0xff, 0xa0, 0xff,
-0xea, 0xff, 0x1e, 0x00, 0x66, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xb4, 0x00, 0x96, 0x00, 0x6a, 0x00,
-0x1e, 0x00, 0xe6, 0xff, 0xb4, 0xff, 0x78, 0xff, 0x40, 0xff, 0x16, 0xff, 0x20, 0xff, 0x42, 0xff,
-0x7c, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x78, 0x00, 0xa4, 0x00, 0xba, 0x00, 0xb8, 0x00,
-0x92, 0x00, 0x66, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x64, 0xff, 0x4c, 0xff, 0x30, 0xff,
-0x3a, 0xff, 0x62, 0xff, 0x90, 0xff, 0xe0, 0xff, 0x14, 0x00, 0x46, 0x00, 0x84, 0x00, 0xa4, 0x00,
-0xba, 0x00, 0xac, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x06, 0x00, 0xc8, 0xff, 0xa4, 0xff, 0x66, 0xff,
-0x56, 0xff, 0x44, 0xff, 0x48, 0xff, 0x72, 0xff, 0xaa, 0xff, 0xe8, 0xff, 0x22, 0x00, 0x46, 0x00,
-0x78, 0x00, 0x90, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x32, 0x00, 0xf8, 0xff, 0xce, 0xff,
-0x9a, 0xff, 0x78, 0xff, 0x62, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x88, 0xff, 0xc0, 0xff, 0xf2, 0xff,
-0x16, 0x00, 0x56, 0x00, 0x5e, 0x00, 0x70, 0x00, 0x76, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x1a, 0x00,
-0xf4, 0xff, 0xce, 0xff, 0x98, 0xff, 0x94, 0xff, 0x86, 0xff, 0x88, 0xff, 0x8c, 0xff, 0xa6, 0xff,
-0xcc, 0xff, 0xec, 0xff, 0x12, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x32, 0x00,
-0x22, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xa6, 0xff,
-0xa8, 0xff, 0xbe, 0xff, 0xd6, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x10, 0x00, 0x14, 0x00, 0x12, 0x00,
-0x14, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xc8, 0xff,
-0xd4, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xee, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00,
-0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xd2, 0xff,
-0xd8, 0xff, 0xca, 0xff, 0xda, 0xff, 0xda, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xee, 0xff, 0x08, 0x00,
-0x0a, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x14, 0x00, 0x12, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf6, 0xff,
-0xe2, 0xff, 0xca, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xe6, 0xff,
-0x00, 0x00, 0x12, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x46, 0x00, 0x30, 0x00,
-0x14, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x96, 0xff, 0xa6, 0xff,
-0xb4, 0xff, 0xda, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x54, 0x00, 0x64, 0x00, 0x64, 0x00, 0x64, 0x00,
-0x5a, 0x00, 0x34, 0x00, 0x08, 0x00, 0xe2, 0xff, 0xac, 0xff, 0x82, 0xff, 0x78, 0xff, 0x5c, 0xff,
-0x74, 0xff, 0x8c, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x6a, 0x00, 0x80, 0x00,
-0x8e, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x30, 0x00, 0x02, 0x00, 0xce, 0xff, 0x92, 0xff, 0x68, 0xff,
-0x40, 0xff, 0x42, 0xff, 0x54, 0xff, 0x7e, 0xff, 0xb2, 0xff, 0xee, 0xff, 0x2a, 0x00, 0x5c, 0x00,
-0x8a, 0x00, 0xa2, 0x00, 0xa6, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xea, 0xff, 0xb6, 0xff,
-0x70, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x1a, 0xff, 0x4a, 0xff, 0x76, 0xff, 0xbe, 0xff, 0x00, 0x00,
-0x20, 0x00, 0x60, 0x00, 0x8c, 0x00, 0xa6, 0x00, 0xb0, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x08, 0x00,
-0xd8, 0xff, 0x9a, 0xff, 0x58, 0xff, 0x3c, 0xff, 0x1e, 0xff, 0x26, 0xff, 0x5e, 0xff, 0x8c, 0xff,
-0xd6, 0xff, 0x04, 0x00, 0x34, 0x00, 0x7c, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xa8, 0x00, 0x78, 0x00,
-0x38, 0x00, 0x04, 0x00, 0xca, 0xff, 0x92, 0xff, 0x4e, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x48, 0xff,
-0x6a, 0xff, 0xa0, 0xff, 0xe2, 0xff, 0x18, 0x00, 0x44, 0x00, 0x7c, 0x00, 0x9a, 0x00, 0xa0, 0x00,
-0x9c, 0x00, 0x5e, 0x00, 0x20, 0x00, 0xf4, 0xff, 0xaa, 0xff, 0x88, 0xff, 0x60, 0xff, 0x3e, 0xff,
-0x44, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xba, 0xff, 0xf8, 0xff, 0x2a, 0x00, 0x56, 0x00, 0x80, 0x00,
-0x9a, 0x00, 0x8e, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x2a, 0x00, 0xf6, 0xff, 0xba, 0xff, 0x86, 0xff,
-0x68, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xda, 0xff, 0x02, 0x00, 0x36, 0x00,
-0x66, 0x00, 0x72, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x62, 0x00, 0x46, 0x00, 0x0c, 0x00, 0xe4, 0xff,
-0xae, 0xff, 0x8e, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x84, 0xff, 0x94, 0xff, 0xb0, 0xff, 0xe0, 0xff,
-0x0c, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x28, 0x00,
-0xf6, 0xff, 0xe6, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xb6, 0xff,
-0xca, 0xff, 0xee, 0xff, 0x06, 0x00, 0x20, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x40, 0x00,
-0x24, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xd8, 0xff, 0xca, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xb4, 0xff,
-0xbe, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xea, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x14, 0x00, 0x0e, 0x00,
-0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xe4, 0xff,
-0xdc, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xda, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xea, 0xff, 0x02, 0x00, 0x0e, 0x00,
-0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xde, 0xff,
-0xbc, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xee, 0xff,
-0x10, 0x00, 0x22, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0xf4, 0xff,
-0xdc, 0xff, 0xbe, 0xff, 0xa4, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xba, 0xff,
-0xe6, 0xff, 0xfe, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x44, 0x00,
-0x2a, 0x00, 0x00, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x84, 0xff, 0x84, 0xff, 0x7a, 0xff, 0x7c, 0xff,
-0x9e, 0xff, 0xc4, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x48, 0x00, 0x6e, 0x00, 0x8a, 0x00, 0x7c, 0x00,
-0x64, 0x00, 0x50, 0x00, 0x24, 0x00, 0xf6, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0x6e, 0xff, 0x56, 0xff,
-0x58, 0xff, 0x68, 0xff, 0x92, 0xff, 0xb6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x5a, 0x00, 0x86, 0x00,
-0x98, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x40, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xb0, 0xff, 0x78, 0xff,
-0x5a, 0xff, 0x48, 0xff, 0x42, 0xff, 0x5c, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x0e, 0x00, 0x4a, 0x00,
-0x78, 0x00, 0xa2, 0x00, 0xac, 0x00, 0xa0, 0x00, 0x7a, 0x00, 0x30, 0x00, 0x02, 0x00, 0xdc, 0xff,
-0x8e, 0xff, 0x58, 0xff, 0x40, 0xff, 0x26, 0xff, 0x4a, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xee, 0xff,
-0x1c, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xa4, 0x00, 0x8c, 0x00, 0x5e, 0x00, 0x2c, 0x00,
-0xee, 0xff, 0xba, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x4c, 0xff, 0x76, 0xff,
-0xc4, 0xff, 0xf6, 0xff, 0x26, 0x00, 0x68, 0x00, 0x96, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0x8a, 0x00,
-0x56, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x74, 0xff, 0x44, 0xff, 0x36, 0xff, 0x3e, 0xff,
-0x5c, 0xff, 0x84, 0xff, 0xc6, 0xff, 0x06, 0x00, 0x32, 0x00, 0x6a, 0x00, 0x88, 0x00, 0xa4, 0x00,
-0x96, 0x00, 0x6c, 0x00, 0x44, 0x00, 0x10, 0x00, 0xd2, 0xff, 0x9e, 0xff, 0x70, 0xff, 0x4e, 0xff,
-0x46, 0xff, 0x48, 0xff, 0x66, 0xff, 0x98, 0xff, 0xd4, 0xff, 0x0a, 0x00, 0x48, 0x00, 0x64, 0x00,
-0x7c, 0x00, 0x8a, 0x00, 0x74, 0x00, 0x5e, 0x00, 0x2a, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0xa2, 0xff,
-0x82, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x72, 0xff, 0x8e, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x12, 0x00,
-0x3a, 0x00, 0x52, 0x00, 0x62, 0x00, 0x66, 0x00, 0x52, 0x00, 0x3c, 0x00, 0x1c, 0x00, 0xfa, 0xff,
-0xd6, 0xff, 0xac, 0xff, 0x92, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xc8, 0xff,
-0xee, 0xff, 0x10, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x2e, 0x00,
-0x12, 0x00, 0xf6, 0xff, 0xce, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xa4, 0xff, 0xb0, 0xff,
-0xc2, 0xff, 0xe2, 0xff, 0x00, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x2e, 0x00,
-0x24, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xea, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xca, 0xff, 0xd8, 0xff,
-0xce, 0xff, 0xce, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf8, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xea, 0xff,
-0xe2, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe0, 0xff, 0xd8, 0xff, 0xd8, 0xff,
-0xd6, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x0a, 0x00,
-0x12, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xde, 0xff,
-0xc4, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xf6, 0xff,
-0x0a, 0x00, 0x20, 0x00, 0x30, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00,
-0xf2, 0xff, 0xc2, 0xff, 0xaa, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xa4, 0xff,
-0xd4, 0xff, 0xf0, 0xff, 0x10, 0x00, 0x44, 0x00, 0x58, 0x00, 0x68, 0x00, 0x62, 0x00, 0x52, 0x00,
-0x3e, 0x00, 0x0a, 0x00, 0xea, 0xff, 0xb6, 0xff, 0x80, 0xff, 0x78, 0xff, 0x6e, 0xff, 0x72, 0xff,
-0x90, 0xff, 0xac, 0xff, 0xde, 0xff, 0x10, 0x00, 0x36, 0x00, 0x6e, 0x00, 0x8c, 0x00, 0x96, 0x00,
-0x84, 0x00, 0x6e, 0x00, 0x4a, 0x00, 0x06, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x70, 0xff, 0x58, 0xff,
-0x4e, 0xff, 0x60, 0xff, 0x82, 0xff, 0xae, 0xff, 0xe2, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x82, 0x00,
-0x98, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xb6, 0xff, 0x80, 0xff,
-0x54, 0xff, 0x30, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x78, 0xff, 0xc0, 0xff, 0xf2, 0xff, 0x1c, 0x00,
-0x64, 0x00, 0x94, 0x00, 0xac, 0x00, 0xb2, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x16, 0x00, 0xdc, 0xff,
-0xac, 0xff, 0x5e, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xcc, 0xff,
-0x08, 0x00, 0x38, 0x00, 0x7e, 0x00, 0xa2, 0x00, 0xc0, 0x00, 0xba, 0x00, 0x90, 0x00, 0x48, 0x00,
-0x04, 0x00, 0xda, 0xff, 0x9c, 0xff, 0x5a, 0xff, 0x3e, 0xff, 0x28, 0xff, 0x36, 0xff, 0x5e, 0xff,
-0x9c, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x48, 0x00, 0x80, 0x00, 0xae, 0x00, 0xb2, 0x00, 0x98, 0x00,
-0x74, 0x00, 0x34, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x7e, 0xff, 0x58, 0xff, 0x38, 0xff, 0x30, 0xff,
-0x3a, 0xff, 0x76, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x20, 0x00, 0x58, 0x00, 0x8e, 0x00, 0xa2, 0x00,
-0x9e, 0x00, 0x86, 0x00, 0x4e, 0x00, 0x1a, 0x00, 0xec, 0xff, 0xb6, 0xff, 0x8a, 0xff, 0x66, 0xff,
-0x54, 0xff, 0x5c, 0xff, 0x76, 0xff, 0x90, 0xff, 0xc2, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00,
-0x76, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xd8, 0xff, 0x98, 0xff,
-0x72, 0xff, 0x70, 0xff, 0x86, 0xff, 0xaa, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x2e, 0x00, 0x44, 0x00,
-0x58, 0x00, 0x60, 0x00, 0x52, 0x00, 0x42, 0x00, 0x20, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xc6, 0xff,
-0xb0, 0xff, 0xa8, 0xff, 0xb0, 0xff, 0xa2, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xee, 0xff, 0x0e, 0x00,
-0x1c, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x30, 0x00, 0x22, 0x00, 0x10, 0x00, 0xfc, 0xff,
-0xf6, 0xff, 0xde, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xd6, 0xff,
-0xfa, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x08, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x04, 0x00,
-0x0a, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe4, 0xff,
-0xe6, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xe0, 0xff,
-0xf4, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x08, 0x00,
-0x08, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xb2, 0xff, 0xac, 0xff,
-0xb8, 0xff, 0xbc, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x22, 0x00, 0x28, 0x00,
-0x26, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xd8, 0xff, 0xb4, 0xff, 0x98, 0xff,
-0x8a, 0xff, 0x82, 0xff, 0x98, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x32, 0x00,
-0x56, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x34, 0x00, 0x1e, 0x00, 0xfa, 0xff, 0xd2, 0xff,
-0x9e, 0xff, 0x84, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x7c, 0xff, 0x92, 0xff, 0xca, 0xff, 0x08, 0x00,
-0x26, 0x00, 0x58, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x82, 0x00, 0x62, 0x00, 0x4e, 0x00, 0x20, 0x00,
-0xec, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x60, 0xff, 0x46, 0xff, 0x3c, 0xff, 0x5c, 0xff, 0x8e, 0xff,
-0xd0, 0xff, 0x02, 0x00, 0x3e, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00, 0x9c, 0x00, 0x88, 0x00,
-0x56, 0x00, 0x20, 0x00, 0xec, 0xff, 0xa6, 0xff, 0x74, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x3c, 0xff,
-0x52, 0xff, 0xa2, 0xff, 0xd8, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x82, 0x00, 0xac, 0x00, 0xbc, 0x00,
-0xa4, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x0c, 0x00, 0xdc, 0xff, 0x90, 0xff, 0x52, 0xff, 0x3e, 0xff,
-0x20, 0xff, 0x3c, 0xff, 0x68, 0xff, 0xa0, 0xff, 0xe6, 0xff, 0x06, 0x00, 0x4e, 0x00, 0x8a, 0x00,
-0xa2, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x7e, 0x00, 0x3a, 0x00, 0xee, 0xff, 0xc8, 0xff, 0x76, 0xff,
-0x50, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x48, 0xff, 0x68, 0xff, 0xb0, 0xff, 0xf6, 0xff, 0x18, 0x00,
-0x5e, 0x00, 0x92, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xa2, 0x00, 0x6c, 0x00, 0x24, 0x00, 0xe6, 0xff,
-0xac, 0xff, 0x78, 0xff, 0x48, 0xff, 0x2a, 0xff, 0x36, 0xff, 0x52, 0xff, 0x8a, 0xff, 0xbc, 0xff,
-0xf6, 0xff, 0x2a, 0x00, 0x5c, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x78, 0x00, 0x4a, 0x00,
-0x1c, 0x00, 0xce, 0xff, 0xa0, 0xff, 0x6e, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x48, 0xff, 0x78, 0xff,
-0x9c, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x38, 0x00, 0x58, 0x00, 0x7e, 0x00, 0x96, 0x00, 0x84, 0x00,
-0x60, 0x00, 0x2c, 0x00, 0xf0, 0xff, 0xcc, 0xff, 0x9e, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x58, 0xff,
-0x72, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xec, 0xff, 0x16, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x6a, 0x00,
-0x6c, 0x00, 0x5a, 0x00, 0x42, 0x00, 0x10, 0x00, 0xee, 0xff, 0xce, 0xff, 0x98, 0xff, 0x90, 0xff,
-0x84, 0xff, 0x7a, 0xff, 0x94, 0xff, 0xac, 0xff, 0xce, 0xff, 0xf2, 0xff, 0x0a, 0x00, 0x2c, 0x00,
-0x3c, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x1c, 0x00, 0xfc, 0xff, 0xe2, 0xff, 0xce, 0xff,
-0xbe, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xca, 0xff, 0xe2, 0xff, 0xfe, 0xff,
-0x0a, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0xfa, 0xff,
-0xde, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd8, 0xff,
-0xe6, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xfc, 0xff,
-0x00, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0x06, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
-0x00, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xd4, 0xff,
-0xd2, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0x1a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00,
-0x30, 0x00, 0x28, 0x00, 0x0e, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xa6, 0xff,
-0xa8, 0xff, 0xaa, 0xff, 0xc0, 0xff, 0xd6, 0xff, 0xec, 0xff, 0x08, 0x00, 0x22, 0x00, 0x44, 0x00,
-0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xca, 0xff, 0xa6, 0xff,
-0x9c, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x1a, 0x00,
-0x4c, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x0c, 0x00, 0xf8, 0xff,
-0xba, 0xff, 0x92, 0xff, 0x7a, 0xff, 0x6a, 0xff, 0x74, 0xff, 0x8c, 0xff, 0xa8, 0xff, 0xd0, 0xff,
-0x00, 0x00, 0x30, 0x00, 0x56, 0x00, 0x72, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x32, 0x00,
-0xfe, 0xff, 0xd4, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x50, 0xff, 0x78, 0xff,
-0xa6, 0xff, 0xd4, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x76, 0x00, 0x96, 0x00, 0xa0, 0x00, 0x80, 0x00,
-0x60, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0x8c, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x2e, 0xff,
-0x4c, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xfa, 0xff, 0x30, 0x00, 0x74, 0x00, 0x9e, 0x00, 0xba, 0x00,
-0xbc, 0x00, 0xa0, 0x00, 0x6a, 0x00, 0x22, 0x00, 0xea, 0xff, 0xc0, 0xff, 0x66, 0xff, 0x46, 0xff,
-0x28, 0xff, 0x1a, 0xff, 0x4c, 0xff, 0x84, 0xff, 0xd0, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x8c, 0x00,
-0xb0, 0x00, 0xcc, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x62, 0x00, 0x10, 0x00, 0xd8, 0xff, 0x9c, 0xff,
-0x5a, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x20, 0xff, 0x48, 0xff, 0x90, 0xff, 0xdc, 0xff, 0x20, 0x00,
-0x5c, 0x00, 0x90, 0x00, 0xb4, 0x00, 0xc4, 0x00, 0xb6, 0x00, 0x82, 0x00, 0x48, 0x00, 0x10, 0x00,
-0xc4, 0xff, 0x94, 0xff, 0x56, 0xff, 0x28, 0xff, 0x26, 0xff, 0x40, 0xff, 0x6e, 0xff, 0xaa, 0xff,
-0xf8, 0xff, 0x2e, 0x00, 0x60, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xac, 0x00, 0x90, 0x00, 0x64, 0x00,
-0x28, 0x00, 0xf8, 0xff, 0xc0, 0xff, 0x82, 0xff, 0x6c, 0xff, 0x46, 0xff, 0x48, 0xff, 0x64, 0xff,
-0x80, 0xff, 0xba, 0xff, 0xf4, 0xff, 0x2a, 0x00, 0x52, 0x00, 0x6c, 0x00, 0x7a, 0x00, 0x7a, 0x00,
-0x5a, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xea, 0xff, 0xc2, 0xff, 0x90, 0xff, 0x82, 0xff, 0x76, 0xff,
-0x72, 0xff, 0x86, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0x14, 0x00, 0x3e, 0x00, 0x4a, 0x00,
-0x52, 0x00, 0x50, 0x00, 0x3c, 0x00, 0x22, 0x00, 0x04, 0x00, 0xea, 0xff, 0xd4, 0xff, 0xba, 0xff,
-0xaa, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0xa8, 0xff, 0xc6, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0x06, 0x00,
-0x1c, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xee, 0xff,
-0xda, 0xff, 0xca, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xe6, 0xff,
-0xf8, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xee, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x06, 0x00,
-0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0x02, 0x00, 0xf8, 0xff, 0xfa, 0xff, 0xf0, 0xff,
-0xe8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe8, 0xff,
-0xf6, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x04, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x0e, 0x00, 0x22, 0x00,
-0x10, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xba, 0xff,
-0xbc, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xfc, 0xff, 0x12, 0x00, 0x28, 0x00, 0x34, 0x00, 0x3a, 0x00,
-0x36, 0x00, 0x2a, 0x00, 0x20, 0x00, 0x06, 0x00, 0xe8, 0xff, 0xce, 0xff, 0xa4, 0xff, 0xa2, 0xff,
-0x9a, 0xff, 0xa2, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x30, 0x00, 0x50, 0x00,
-0x5a, 0x00, 0x5c, 0x00, 0x52, 0x00, 0x44, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xd6, 0xff, 0xa0, 0xff,
-0x86, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x7e, 0xff, 0x92, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x12, 0x00,
-0x3c, 0x00, 0x62, 0x00, 0x72, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xe8, 0xff,
-0xb6, 0xff, 0x7c, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x86, 0xff, 0xb6, 0xff,
-0xf2, 0xff, 0x24, 0x00, 0x58, 0x00, 0x82, 0x00, 0x9c, 0x00, 0x96, 0x00, 0x88, 0x00, 0x54, 0x00,
-0x1c, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x76, 0xff, 0x42, 0xff, 0x38, 0xff, 0x40, 0xff, 0x4e, 0xff,
-0x94, 0xff, 0xc8, 0xff, 0xfc, 0xff, 0x2a, 0x00, 0x68, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xa6, 0x00,
-0x7c, 0x00, 0x4c, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x8c, 0xff, 0x54, 0xff, 0x38, 0xff, 0x2a, 0xff,
-0x34, 0xff, 0x56, 0xff, 0x90, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x4c, 0x00, 0x88, 0x00, 0xa2, 0x00,
-0xb8, 0x00, 0xa4, 0x00, 0x78, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xd4, 0xff, 0x86, 0xff, 0x5e, 0xff,
-0x36, 0xff, 0x2a, 0xff, 0x52, 0xff, 0x70, 0xff, 0xb0, 0xff, 0xf8, 0xff, 0x1c, 0x00, 0x5e, 0x00,
-0x98, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0xa0, 0x00, 0x6e, 0x00, 0x22, 0x00, 0x00, 0x00, 0xbe, 0xff,
-0x80, 0xff, 0x5a, 0xff, 0x36, 0xff, 0x36, 0xff, 0x52, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xfe, 0xff,
-0x28, 0x00, 0x58, 0x00, 0x96, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0x86, 0x00, 0x56, 0x00, 0x26, 0x00,
-0xe8, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x60, 0xff, 0x46, 0xff, 0x48, 0xff, 0x7a, 0xff, 0x9c, 0xff,
-0xd0, 0xff, 0x00, 0x00, 0x3e, 0x00, 0x60, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x90, 0x00, 0x72, 0x00,
-0x58, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xbc, 0xff, 0x90, 0xff, 0x78, 0xff, 0x6c, 0xff, 0x70, 0xff,
-0x86, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x68, 0x00,
-0x5c, 0x00, 0x4a, 0x00, 0x24, 0x00, 0x02, 0x00, 0xd8, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x8c, 0xff,
-0x86, 0xff, 0x90, 0xff, 0x9a, 0xff, 0xba, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x32, 0x00,
-0x3e, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xd0, 0xff,
-0xce, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xf0, 0xff, 0x02, 0x00,
-0x08, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x04, 0x00, 0xf4, 0xff,
-0xf4, 0xff, 0xe6, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xe2, 0xff,
-0xda, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0x00, 0x00,
-0xf6, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff,
-0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xdc, 0xff,
-0xe2, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x26, 0x00,
-0x2a, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xb0, 0xff, 0xb4, 0xff,
-0xae, 0xff, 0xb0, 0xff, 0xc2, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1e, 0x00, 0x42, 0x00, 0x40, 0x00,
-0x50, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x24, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xb8, 0xff, 0x94, 0xff,
-0x88, 0xff, 0x80, 0xff, 0x88, 0xff, 0x92, 0xff, 0xbc, 0xff, 0xee, 0xff, 0x12, 0x00, 0x48, 0x00,
-0x6a, 0x00, 0x76, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x5a, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xc6, 0xff,
-0x9c, 0xff, 0x7c, 0xff, 0x5c, 0xff, 0x60, 0xff, 0x64, 0xff, 0x86, 0xff, 0xb8, 0xff, 0xf6, 0xff,
-0x30, 0x00, 0x6a, 0x00, 0x84, 0x00, 0x96, 0x00, 0x96, 0x00, 0x76, 0x00, 0x46, 0x00, 0x1a, 0x00,
-0xe2, 0xff, 0xa6, 0xff, 0x6a, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x30, 0xff, 0x5a, 0xff, 0x8e, 0xff,
-0xca, 0xff, 0x0e, 0x00, 0x50, 0x00, 0x84, 0x00, 0xa8, 0x00, 0xae, 0x00, 0xa4, 0x00, 0x80, 0x00,
-0x40, 0x00, 0x0c, 0x00, 0xcc, 0xff, 0x86, 0xff, 0x58, 0xff, 0x2a, 0xff, 0x22, 0xff, 0x42, 0xff,
-0x6a, 0xff, 0xb4, 0xff, 0xee, 0xff, 0x24, 0x00, 0x64, 0x00, 0x92, 0x00, 0xb0, 0x00, 0xb4, 0x00,
-0xa4, 0x00, 0x76, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xb8, 0xff, 0x70, 0xff, 0x44, 0xff, 0x2e, 0xff,
-0x26, 0xff, 0x46, 0xff, 0x72, 0xff, 0xb2, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x68, 0x00, 0x94, 0x00,
-0xa8, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x54, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xaa, 0xff, 0x6e, 0xff,
-0x42, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x58, 0xff, 0x86, 0xff, 0xca, 0xff, 0x0a, 0x00, 0x3a, 0x00,
-0x72, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x54, 0x00, 0x16, 0x00, 0xda, 0xff,
-0xa8, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0xdc, 0xff,
-0x14, 0x00, 0x3e, 0x00, 0x70, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x8c, 0x00, 0x66, 0x00, 0x3e, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0x98, 0xff, 0x78, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x7e, 0xff,
-0xae, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x46, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x80, 0x00, 0x6c, 0x00,
-0x54, 0x00, 0x26, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xa8, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x84, 0xff,
-0x8a, 0xff, 0xaa, 0xff, 0xd0, 0xff, 0xf6, 0xff, 0x20, 0x00, 0x32, 0x00, 0x4c, 0x00, 0x5a, 0x00,
-0x52, 0x00, 0x4e, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0xb4, 0xff, 0xa4, 0xff,
-0x9a, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xca, 0xff, 0xea, 0xff, 0x00, 0x00, 0x1c, 0x00,
-0x26, 0x00, 0x26, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xdc, 0xff,
-0xc2, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xda, 0xff, 0xe8, 0xff,
-0xf6, 0xff, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x14, 0x00, 0x06, 0x00,
-0xfe, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xde, 0xff, 0xd8, 0xff,
-0xce, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xfa, 0xff,
-0xfc, 0xff, 0xfc, 0xff, 0x12, 0x00, 0x16, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x00, 0x00,
-0xea, 0xff, 0xdc, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xc0, 0xff,
-0xc8, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0x12, 0x00, 0x32, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x40, 0x00,
-0x36, 0x00, 0x24, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc8, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x92, 0xff,
-0x98, 0xff, 0xa2, 0xff, 0xb6, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x16, 0x00, 0x42, 0x00, 0x58, 0x00,
-0x66, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x34, 0x00, 0x08, 0x00, 0xe4, 0xff, 0xb2, 0xff, 0x94, 0xff,
-0x78, 0xff, 0x66, 0xff, 0x6e, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xd6, 0xff, 0x04, 0x00, 0x30, 0x00,
-0x6c, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x7e, 0x00, 0x5c, 0x00, 0x3c, 0x00, 0x08, 0x00, 0xd6, 0xff,
-0xa0, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x50, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xac, 0xff, 0xec, 0xff,
-0x28, 0x00, 0x56, 0x00, 0x8c, 0x00, 0x9c, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x5e, 0x00, 0x2a, 0x00,
-0xf4, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x4a, 0xff, 0x80, 0xff,
-0xbe, 0xff, 0xf8, 0xff, 0x2e, 0x00, 0x68, 0x00, 0x98, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x88, 0x00,
-0x54, 0x00, 0x10, 0x00, 0xda, 0xff, 0x94, 0xff, 0x62, 0xff, 0x3e, 0xff, 0x22, 0xff, 0x36, 0xff,
-0x54, 0xff, 0x8e, 0xff, 0xde, 0xff, 0x12, 0x00, 0x48, 0x00, 0x82, 0x00, 0xae, 0x00, 0xb6, 0x00,
-0xaa, 0x00, 0x80, 0x00, 0x4e, 0x00, 0x02, 0x00, 0xce, 0xff, 0x90, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x20, 0xff, 0x38, 0xff, 0x60, 0xff, 0x96, 0xff, 0xe0, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x8a, 0x00,
-0xac, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x32, 0x00, 0xf4, 0xff, 0xc0, 0xff, 0x7e, 0xff,
-0x4e, 0xff, 0x36, 0xff, 0x34, 0xff, 0x3c, 0xff, 0x6a, 0xff, 0xac, 0xff, 0xe2, 0xff, 0x2a, 0x00,
-0x5c, 0x00, 0x8e, 0x00, 0xac, 0x00, 0xa4, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xea, 0xff,
-0xb6, 0xff, 0x90, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x44, 0xff, 0x68, 0xff, 0x92, 0xff, 0xcc, 0xff,
-0x06, 0x00, 0x3c, 0x00, 0x66, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x46, 0x00,
-0x16, 0x00, 0xdc, 0xff, 0xba, 0xff, 0x8c, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x70, 0xff, 0x88, 0xff,
-0xa2, 0xff, 0xde, 0xff, 0x04, 0x00, 0x30, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x60, 0x00, 0x5c, 0x00,
-0x4a, 0x00, 0x28, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xc0, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0x96, 0xff,
-0x9c, 0xff, 0xa8, 0xff, 0xc0, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x22, 0x00, 0x32, 0x00, 0x3a, 0x00,
-0x36, 0x00, 0x36, 0x00, 0x28, 0x00, 0x12, 0x00, 0x00, 0x00, 0xea, 0xff, 0xd8, 0xff, 0xba, 0xff,
-0xc4, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xd8, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x00, 0x00,
-0x0a, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xf2, 0xff,
-0xea, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0xd6, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf6, 0xff,
-0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xd6, 0xff, 0xca, 0xff, 0xda, 0xff,
-0xea, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x16, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x10, 0x00,
-0x0c, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xd2, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xa2, 0xff,
-0xb0, 0xff, 0xc4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x44, 0x00, 0x44, 0x00, 0x50, 0x00,
-0x3a, 0x00, 0x3e, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xdc, 0xff, 0xb0, 0xff, 0x98, 0xff, 0x8a, 0xff,
-0x86, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x1a, 0x00, 0x4c, 0x00, 0x60, 0x00,
-0x70, 0x00, 0x70, 0x00, 0x60, 0x00, 0x4e, 0x00, 0x24, 0x00, 0xec, 0xff, 0xbc, 0xff, 0x92, 0xff,
-0x78, 0xff, 0x64, 0xff, 0x64, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xd2, 0xff, 0x06, 0x00, 0x34, 0x00,
-0x5e, 0x00, 0x7c, 0x00, 0x94, 0x00, 0x8e, 0x00, 0x76, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd6, 0xff,
-0xa2, 0xff, 0x6c, 0xff, 0x4a, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x66, 0xff, 0x9c, 0xff, 0xd4, 0xff,
-0x12, 0x00, 0x48, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xb2, 0x00, 0xae, 0x00, 0x86, 0x00, 0x4c, 0x00,
-0x00, 0x00, 0xc8, 0xff, 0x88, 0xff, 0x46, 0xff, 0x2a, 0xff, 0x20, 0xff, 0x2e, 0xff, 0x5a, 0xff,
-0xa0, 0xff, 0xe2, 0xff, 0x1a, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xb6, 0x00, 0xc4, 0x00, 0xa8, 0x00,
-0x84, 0x00, 0x36, 0x00, 0xe8, 0xff, 0xb2, 0xff, 0x68, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x0c, 0xff,
-0x2e, 0xff, 0x5a, 0xff, 0xa8, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x68, 0x00, 0x98, 0x00, 0xba, 0x00,
-0xba, 0x00, 0xa0, 0x00, 0x66, 0x00, 0x16, 0x00, 0xd6, 0xff, 0xa2, 0xff, 0x58, 0xff, 0x2e, 0xff,
-0x12, 0xff, 0x1e, 0xff, 0x48, 0xff, 0x7a, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x36, 0x00, 0x78, 0x00,
-0xaa, 0x00, 0xc4, 0x00, 0xba, 0x00, 0x98, 0x00, 0x54, 0x00, 0x0e, 0x00, 0xd4, 0xff, 0x9c, 0xff,
-0x68, 0xff, 0x3c, 0xff, 0x2a, 0xff, 0x36, 0xff, 0x5c, 0xff, 0x92, 0xff, 0xd2, 0xff, 0x10, 0x00,
-0x48, 0x00, 0x72, 0x00, 0x9a, 0x00, 0xac, 0x00, 0x9a, 0x00, 0x76, 0x00, 0x40, 0x00, 0x04, 0x00,
-0xca, 0xff, 0x8c, 0xff, 0x70, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x60, 0xff, 0x78, 0xff, 0xa4, 0xff,
-0xe2, 0xff, 0x18, 0x00, 0x40, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x84, 0x00, 0x68, 0x00, 0x58, 0x00,
-0x2c, 0x00, 0xfa, 0xff, 0xcc, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x90, 0xff,
-0xa2, 0xff, 0xd0, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x3e, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x4a, 0x00,
-0x48, 0x00, 0x32, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xda, 0xff, 0xb8, 0xff, 0xb0, 0xff, 0xa8, 0xff,
-0xaa, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0x00, 0x00, 0x1e, 0x00, 0x18, 0x00,
-0x22, 0x00, 0x26, 0x00, 0x14, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xde, 0xff,
-0xde, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf8, 0xff,
-0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0x00, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff,
-0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xe4, 0xff, 0xe0, 0xff,
-0xe2, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xe4, 0xff,
-0xfc, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xf2, 0xff, 0xd6, 0xff, 0xc6, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xc0, 0xff,
-0xd6, 0xff, 0xf0, 0xff, 0x02, 0x00, 0x28, 0x00, 0x36, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x32, 0x00,
-0x28, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x88, 0xff, 0x8c, 0xff,
-0x96, 0xff, 0xa4, 0xff, 0xcc, 0xff, 0xf2, 0xff, 0x14, 0x00, 0x30, 0x00, 0x54, 0x00, 0x60, 0x00,
-0x52, 0x00, 0x44, 0x00, 0x34, 0x00, 0x0e, 0x00, 0xe4, 0xff, 0xbc, 0xff, 0x9a, 0xff, 0x7a, 0xff,
-0x68, 0xff, 0x66, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x2e, 0x00, 0x5c, 0x00,
-0x76, 0x00, 0x88, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xae, 0xff,
-0x7c, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xa8, 0xff, 0xda, 0xff, 0x20, 0x00,
-0x54, 0x00, 0x82, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x64, 0x00, 0x36, 0x00, 0x04, 0x00,
-0xca, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x3e, 0xff, 0x4c, 0xff, 0x70, 0xff, 0xb4, 0xff,
-0xf0, 0xff, 0x28, 0x00, 0x66, 0x00, 0x90, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0x8e, 0x00, 0x6c, 0x00,
-0x24, 0x00, 0xe6, 0xff, 0xb8, 0xff, 0x76, 0xff, 0x4e, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x56, 0xff,
-0x8c, 0xff, 0xd8, 0xff, 0x02, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0xa2, 0x00, 0xbc, 0x00, 0xa8, 0x00,
-0x88, 0x00, 0x58, 0x00, 0x04, 0x00, 0xd2, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x3a, 0xff, 0x26, 0xff,
-0x3c, 0xff, 0x5c, 0xff, 0x96, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x46, 0x00, 0x74, 0x00, 0x8e, 0x00,
-0xa4, 0x00, 0x94, 0x00, 0x6a, 0x00, 0x34, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x4e, 0xff,
-0x3c, 0xff, 0x30, 0xff, 0x44, 0xff, 0x72, 0xff, 0x9c, 0xff, 0xe4, 0xff, 0x20, 0x00, 0x56, 0x00,
-0x7a, 0x00, 0x92, 0x00, 0x98, 0x00, 0x80, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xb8, 0xff,
-0x82, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x4e, 0xff, 0x6a, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xf6, 0xff,
-0x28, 0x00, 0x4c, 0x00, 0x6e, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x68, 0x00, 0x42, 0x00, 0x02, 0x00,
-0xde, 0xff, 0xae, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x86, 0xff, 0xa8, 0xff,
-0xd6, 0xff, 0x04, 0x00, 0x2a, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x4c, 0x00,
-0x1c, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xb0, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x90, 0xff, 0xa4, 0xff,
-0xae, 0xff, 0xd6, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x48, 0x00, 0x44, 0x00,
-0x44, 0x00, 0x36, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xbc, 0xff,
-0xc4, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xee, 0xff, 0x04, 0x00, 0x0a, 0x00, 0x1c, 0x00,
-0x1a, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x14, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xee, 0xff, 0xec, 0xff,
-0xe8, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xea, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0x04, 0x00,
-0x08, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xe8, 0xff,
-0xd8, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xd0, 0xff, 0xe0, 0xff,
-0xf0, 0xff, 0x02, 0x00, 0x1a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x1a, 0x00, 0x14, 0x00,
-0x06, 0x00, 0xe8, 0xff, 0xca, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xa2, 0xff, 0xaa, 0xff,
-0xbe, 0xff, 0xd4, 0xff, 0xea, 0xff, 0x0a, 0x00, 0x28, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x4a, 0x00,
-0x3c, 0x00, 0x22, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x7c, 0xff,
-0x7c, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xce, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x5a, 0x00, 0x64, 0x00,
-0x6a, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0xf8, 0xff, 0xd2, 0xff, 0x94, 0xff, 0x6e, 0xff,
-0x56, 0xff, 0x50, 0xff, 0x66, 0xff, 0x84, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x4a, 0x00,
-0x78, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x84, 0x00, 0x50, 0x00, 0x22, 0x00, 0xf4, 0xff, 0xb8, 0xff,
-0x7a, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x88, 0xff, 0xc4, 0xff, 0xfc, 0xff,
-0x3a, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xb8, 0x00, 0xb4, 0x00, 0x92, 0x00, 0x56, 0x00, 0x18, 0x00,
-0xe0, 0xff, 0x98, 0xff, 0x62, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x3e, 0xff, 0x64, 0xff, 0x9a, 0xff,
-0xe0, 0xff, 0x16, 0x00, 0x5c, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc8, 0x00, 0xa8, 0x00, 0x88, 0x00,
-0x3a, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x82, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x20, 0xff, 0x46, 0xff,
-0x68, 0xff, 0xaa, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xae, 0x00, 0xbe, 0x00,
-0x96, 0x00, 0x6c, 0x00, 0x2e, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x76, 0xff, 0x52, 0xff, 0x3c, 0xff,
-0x38, 0xff, 0x54, 0xff, 0x82, 0xff, 0xb2, 0xff, 0xfc, 0xff, 0x2e, 0x00, 0x60, 0x00, 0x90, 0x00,
-0xa4, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x50, 0x00, 0x24, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x86, 0xff,
-0x50, 0xff, 0x44, 0xff, 0x4e, 0xff, 0x5e, 0xff, 0x84, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x2e, 0x00,
-0x5a, 0x00, 0x88, 0x00, 0x86, 0x00, 0x7e, 0x00, 0x6a, 0x00, 0x38, 0x00, 0x0a, 0x00, 0xe4, 0xff,
-0xaa, 0xff, 0x7e, 0xff, 0x58, 0xff, 0x5a, 0xff, 0x60, 0xff, 0x72, 0xff, 0xa2, 0xff, 0xd6, 0xff,
-0x02, 0x00, 0x34, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x70, 0x00, 0x68, 0x00, 0x50, 0x00, 0x32, 0x00,
-0x00, 0x00, 0xda, 0xff, 0xb0, 0xff, 0x90, 0xff, 0x84, 0xff, 0x80, 0xff, 0x92, 0xff, 0x92, 0xff,
-0xb8, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x28, 0x00, 0x40, 0x00, 0x44, 0x00, 0x46, 0x00, 0x3a, 0x00,
-0x30, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xde, 0xff, 0xc0, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xaa, 0xff,
-0xa4, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x10, 0x00, 0x24, 0x00, 0x16, 0x00,
-0x20, 0x00, 0x28, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xee, 0xff, 0xda, 0xff, 0xd4, 0xff,
-0xda, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff,
-0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xfe, 0xff,
-0xfc, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xe2, 0xff,
-0xd8, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x08, 0x00, 0xfc, 0xff,
-0xea, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xe0, 0xff,
-0xf0, 0xff, 0x06, 0x00, 0x1a, 0x00, 0x44, 0x00, 0x52, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x30, 0x00,
-0x1a, 0x00, 0x00, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x98, 0xff,
-0xa0, 0xff, 0xca, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x38, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x68, 0x00,
-0x5c, 0x00, 0x40, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x90, 0xff, 0x6a, 0xff, 0x5a, 0xff,
-0x64, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xce, 0xff, 0x00, 0x00, 0x26, 0x00, 0x5c, 0x00, 0x80, 0x00,
-0x94, 0x00, 0x88, 0x00, 0x72, 0x00, 0x4c, 0x00, 0x1c, 0x00, 0xe6, 0xff, 0xa8, 0xff, 0x80, 0xff,
-0x58, 0xff, 0x44, 0xff, 0x56, 0xff, 0x6e, 0xff, 0x9a, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x40, 0x00,
-0x74, 0x00, 0x96, 0x00, 0xa2, 0x00, 0x9a, 0x00, 0x78, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xcc, 0xff,
-0x90, 0xff, 0x58, 0xff, 0x38, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xde, 0xff,
-0x12, 0x00, 0x4e, 0x00, 0x88, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xa0, 0x00, 0x76, 0x00, 0x36, 0x00,
-0x00, 0x00, 0xce, 0xff, 0x80, 0xff, 0x4a, 0xff, 0x38, 0xff, 0x34, 0xff, 0x52, 0xff, 0x78, 0xff,
-0xb4, 0xff, 0xfa, 0xff, 0x24, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0x98, 0x00,
-0x70, 0x00, 0x2a, 0x00, 0xf6, 0xff, 0xb4, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x32, 0xff,
-0x48, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x6a, 0x00, 0x90, 0x00, 0xb2, 0x00,
-0xa8, 0x00, 0x84, 0x00, 0x56, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xac, 0xff, 0x74, 0xff, 0x4c, 0xff,
-0x3a, 0xff, 0x4c, 0xff, 0x68, 0xff, 0x94, 0xff, 0xce, 0xff, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00,
-0x8e, 0x00, 0x9c, 0x00, 0xa0, 0x00, 0x72, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xd8, 0xff, 0xac, 0xff,
-0x7c, 0xff, 0x60, 0xff, 0x50, 0xff, 0x68, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x0c, 0x00,
-0x38, 0x00, 0x60, 0x00, 0x70, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x4a, 0x00, 0x22, 0x00, 0x00, 0x00,
-0xd2, 0xff, 0xa0, 0xff, 0x8e, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x86, 0xff, 0x94, 0xff, 0xb6, 0xff,
-0xe4, 0xff, 0x0e, 0x00, 0x38, 0x00, 0x4a, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x36, 0x00,
-0x0e, 0x00, 0xf2, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0x98, 0xff, 0x9e, 0xff,
-0xbc, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0x10, 0x00, 0x1c, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x30, 0x00,
-0x2e, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xca, 0xff, 0xbc, 0xff, 0xc0, 0xff,
-0xb4, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x0c, 0x00,
-0x16, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xe2, 0xff,
-0xd8, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xea, 0xff, 0xec, 0xff, 0xee, 0xff,
-0x02, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00,
-0x0c, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xdc, 0xff,
-0xce, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xda, 0xff, 0xf6, 0xff, 0xf6, 0xff,
-0x06, 0x00, 0x22, 0x00, 0x30, 0x00, 0x34, 0x00, 0x26, 0x00, 0x20, 0x00, 0x0a, 0x00, 0xfc, 0xff,
-0xec, 0xff, 0xd0, 0xff, 0xb4, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xc2, 0xff,
-0xe6, 0xff, 0xfe, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x54, 0x00, 0x56, 0x00, 0x50, 0x00, 0x3c, 0x00,
-0x28, 0x00, 0x02, 0x00, 0xee, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x92, 0xff, 0x76, 0xff, 0x7c, 0xff,
-0xa0, 0xff, 0xaa, 0xff, 0xdc, 0xff, 0x06, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x7c, 0x00,
-0x62, 0x00, 0x50, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xce, 0xff, 0xa6, 0xff, 0x7a, 0xff, 0x58, 0xff,
-0x52, 0xff, 0x60, 0xff, 0x82, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x1a, 0x00, 0x54, 0x00, 0x74, 0x00,
-0x8c, 0x00, 0x98, 0x00, 0x7a, 0x00, 0x58, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xc2, 0xff, 0x82, 0xff,
-0x5e, 0xff, 0x40, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x84, 0xff, 0xc8, 0xff, 0xfa, 0xff, 0x32, 0x00,
-0x78, 0x00, 0x9c, 0x00, 0xb0, 0x00, 0xb4, 0x00, 0x88, 0x00, 0x52, 0x00, 0x10, 0x00, 0xe0, 0xff,
-0xaa, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x28, 0xff, 0x20, 0xff, 0x44, 0xff, 0x88, 0xff, 0xcc, 0xff,
-0x00, 0x00, 0x44, 0x00, 0x86, 0x00, 0xa8, 0x00, 0xb0, 0x00, 0xb4, 0x00, 0x7e, 0x00, 0x52, 0x00,
-0x08, 0x00, 0xd6, 0xff, 0x9a, 0xff, 0x52, 0xff, 0x34, 0xff, 0x20, 0xff, 0x32, 0xff, 0x5e, 0xff,
-0xa2, 0xff, 0xec, 0xff, 0x16, 0x00, 0x5c, 0x00, 0x9a, 0x00, 0xb4, 0x00, 0xca, 0x00, 0xaa, 0x00,
-0x86, 0x00, 0x40, 0x00, 0x00, 0x00, 0xcc, 0xff, 0x8e, 0xff, 0x56, 0xff, 0x34, 0xff, 0x2a, 0xff,
-0x3e, 0xff, 0x6a, 0xff, 0xac, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xae, 0x00,
-0xb0, 0x00, 0x9e, 0x00, 0x72, 0x00, 0x30, 0x00, 0x04, 0x00, 0xbe, 0xff, 0x86, 0xff, 0x58, 0xff,
-0x3c, 0xff, 0x3c, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0x00, 0x00, 0x2a, 0x00, 0x58, 0x00,
-0x84, 0x00, 0x90, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x22, 0x00, 0xec, 0xff, 0xb6, 0xff,
-0x96, 0xff, 0x70, 0xff, 0x64, 0xff, 0x66, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xd6, 0xff, 0x06, 0x00,
-0x30, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x3e, 0x00, 0x0c, 0x00,
-0xec, 0xff, 0xb2, 0xff, 0x94, 0xff, 0x80, 0xff, 0x78, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xb8, 0xff,
-0xdc, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x2c, 0x00, 0x36, 0x00, 0x40, 0x00, 0x40, 0x00, 0x2c, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xd6, 0xff, 0xbc, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0xaa, 0xff,
-0xba, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0x12, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x28, 0x00,
-0x1c, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf6, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xce, 0xff, 0xd0, 0xff,
-0xca, 0xff, 0xd2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xf8, 0xff, 0xfc, 0xff,
-0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xea, 0xff,
-0xea, 0xff, 0xec, 0xff, 0xea, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xda, 0xff,
-0xd2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x10, 0x00,
-0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x0c, 0x00, 0xf6, 0xff, 0xe6, 0xff,
-0xca, 0xff, 0xc0, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xd2, 0xff, 0xec, 0xff,
-0x08, 0x00, 0x18, 0x00, 0x36, 0x00, 0x52, 0x00, 0x56, 0x00, 0x46, 0x00, 0x40, 0x00, 0x1e, 0x00,
-0xf6, 0xff, 0xd8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x78, 0xff, 0x76, 0xff, 0x92, 0xff, 0x9c, 0xff,
-0xbe, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x44, 0x00, 0x66, 0x00, 0x72, 0x00, 0x70, 0x00, 0x66, 0x00,
-0x4a, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x74, 0xff, 0x54, 0xff, 0x56, 0xff,
-0x70, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xee, 0xff, 0x1a, 0x00, 0x58, 0x00, 0x90, 0x00, 0xa8, 0x00,
-0xa2, 0x00, 0x8a, 0x00, 0x5c, 0x00, 0x28, 0x00, 0xea, 0xff, 0xa6, 0xff, 0x6a, 0xff, 0x3e, 0xff,
-0x28, 0xff, 0x2e, 0xff, 0x48, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x08, 0x00, 0x3c, 0x00, 0x7c, 0x00,
-0x96, 0x00, 0xa6, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x48, 0x00, 0x06, 0x00, 0xc6, 0xff, 0x7e, 0xff,
-0x4e, 0xff, 0x22, 0xff, 0x14, 0xff, 0x1e, 0xff, 0x4a, 0xff, 0x76, 0xff, 0xb8, 0xff, 0x02, 0x00,
-0x50, 0x00, 0xa4, 0x00, 0xce, 0x00, 0xdc, 0x00, 0xba, 0x00, 0x7e, 0x00, 0x46, 0x00, 0x06, 0x00,
-0xbc, 0xff, 0x88, 0xff, 0x42, 0xff, 0x36, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x4e, 0xff, 0x94, 0xff,
-0xe4, 0xff, 0x20, 0x00, 0x68, 0x00, 0xa2, 0x00, 0xde, 0x00, 0xc6, 0x00, 0x92, 0x00, 0x88, 0x00,
-0x82, 0x00, 0x44, 0x00, 0x98, 0xff, 0x04, 0xfe, 0x84, 0xfb, 0xc0, 0xf8, 0x44, 0xf6, 0x10, 0xf5,
-0xac, 0xf5, 0xf6, 0xf8, 0x4a, 0xff, 0xea, 0x07, 0x04, 0x12, 0xca, 0x1b, 0xc3, 0x22, 0x01, 0x26,
-0x0b, 0x24, 0x97, 0x1c, 0x38, 0x10, 0x52, 0x00, 0x3e, 0xee, 0xd5, 0xdb, 0xe9, 0xcb, 0xbf, 0xc0,
-0xb5, 0xbc, 0xe5, 0xc1, 0x47, 0xd1, 0x20, 0xe9, 0xec, 0x05, 0xa7, 0x22, 0x93, 0x3a, 0x15, 0x4a,
-0x6f, 0x4f, 0xfb, 0x4a, 0x7f, 0x3e, 0xc7, 0x2b, 0x14, 0x15, 0x70, 0xfc, 0xb9, 0xe3, 0x37, 0xcd,
-0x9d, 0xbb, 0xe3, 0xb1, 0x5f, 0xb2, 0x97, 0xbe, 0x77, 0xd5, 0x5e, 0xf3, 0xe6, 0x12, 0x47, 0x2e,
-0x7f, 0x41, 0x97, 0x4a, 0x89, 0x49, 0x21, 0x40, 0x87, 0x30, 0xf7, 0x1c, 0x88, 0x07, 0xde, 0xf1,
-0xed, 0xdd, 0x67, 0xcd, 0xc5, 0xc2, 0x83, 0xbf, 0x07, 0xc5, 0x97, 0xd3, 0x16, 0xe9, 0x16, 0x02,
-0x60, 0x1a, 0x17, 0x2e, 0x9b, 0x3a, 0xd3, 0x3e, 0xe1, 0x3a, 0x39, 0x30, 0xdb, 0x20, 0xf6, 0x0e,
-0x76, 0xfc, 0x14, 0xeb, 0x81, 0xdc, 0x0d, 0xd2, 0xe9, 0xcc, 0x99, 0xcd, 0x57, 0xd4, 0x9b, 0xe0,
-0x14, 0xf1, 0x9c, 0x03, 0x96, 0x15, 0x73, 0x24, 0xc7, 0x2d, 0x8f, 0x30, 0xdb, 0x2c, 0x13, 0x24,
-0xf6, 0x17, 0x36, 0x0a, 0x9e, 0xfc, 0x1a, 0xf1, 0x84, 0xe8, 0x25, 0xe3, 0xb9, 0xe0, 0xc1, 0xe0,
-0x25, 0xe3, 0x02, 0xe8, 0x62, 0xef, 0xaa, 0xf8, 0x24, 0x03, 0xfc, 0x0c, 0x5c, 0x14, 0xf6, 0x17,
-0xfc, 0x17, 0xee, 0x13, 0x28, 0x0e, 0xc6, 0x08, 0x40, 0x04, 0x64, 0x01, 0xb0, 0xff, 0x06, 0xfe,
-0x46, 0xfb, 0x84, 0xf7, 0x24, 0xf3, 0xb0, 0xef, 0x62, 0xee, 0xfa, 0xef, 0x00, 0xf4, 0x0e, 0xf9,
-0x6c, 0xfd, 0x5c, 0x00, 0xfc, 0x01, 0x3e, 0x03, 0x32, 0x05, 0x34, 0x08, 0x8e, 0x0c, 0x5c, 0x11,
-0x26, 0x15, 0xd0, 0x15, 0x3a, 0x12, 0x9e, 0x0a, 0x2c, 0x00, 0x20, 0xf5, 0xc6, 0xeb, 0xc2, 0xe5,
-0x47, 0xe3, 0x91, 0xe3, 0xb0, 0xe5, 0x40, 0xe9, 0xca, 0xee, 0xae, 0xf6, 0x0c, 0x01, 0x46, 0x0d,
-0xde, 0x19, 0xb5, 0x24, 0x67, 0x2b, 0x11, 0x2c, 0xfb, 0x25, 0xbe, 0x19, 0x38, 0x09, 0xda, 0xf6,
-0xce, 0xe5, 0x55, 0xd8, 0xd7, 0xcf, 0x87, 0xcc, 0x6b, 0xce, 0x3f, 0xd5, 0xbf, 0xe0, 0xc2, 0xf0,
-0xd6, 0x03, 0x22, 0x18, 0x91, 0x2a, 0xab, 0x38, 0x0d, 0x40, 0x6f, 0x3f, 0x6d, 0x36, 0xb9, 0x25,
-0x2a, 0x0f, 0xa2, 0xf5, 0xc7, 0xdc, 0x0b, 0xc8, 0x35, 0xba, 0xf3, 0xb4, 0xe1, 0xb8, 0x6b, 0xc5,
-0x49, 0xd9, 0x02, 0xf2, 0xb4, 0x0c, 0x11, 0x26, 0x41, 0x3b, 0x07, 0x4a, 0xc5, 0x50, 0x5d, 0x4e,
-0x37, 0x42, 0xd1, 0x2c, 0x08, 0x10, 0x52, 0xef, 0x39, 0xcf, 0x17, 0xb5, 0x1e, 0xa5, 0x9a, 0xa1,
-0x98, 0xaa, 0x41, 0xbe, 0x5f, 0xd9, 0x20, 0xf8, 0xda, 0x16, 0x8b, 0x32, 0xc7, 0x48, 0xa2, 0x57,
-0x8c, 0x5d, 0xe0, 0x58, 0xef, 0x48, 0x39, 0x2e, 0x3c, 0x0b, 0x66, 0xe4, 0xd5, 0xbf, 0xce, 0xa3,
-0x18, 0x95, 0x94, 0x95, 0x12, 0xa4, 0x5d, 0xbd, 0x15, 0xdd, 0x2c, 0xff, 0x01, 0x20, 0xe7, 0x3c,
-0xab, 0x53, 0x3c, 0x62, 0x6e, 0x66, 0xa8, 0x5e, 0xff, 0x49, 0xb7, 0x29, 0x2a, 0x01, 0x29, 0xd6,
-0x05, 0xb0, 0x7a, 0x95, 0xe0, 0x8a, 0x8c, 0x90, 0x00, 0xa4, 0x11, 0xc1, 0x3d, 0xe3, 0x74, 0x06,
-0x9b, 0x27, 0x65, 0x44, 0xb8, 0x5a, 0xec, 0x67, 0x9a, 0x69, 0xe4, 0x5d, 0xab, 0x44, 0x21, 0x20,
-0xc2, 0xf4, 0x7f, 0xc9, 0xaa, 0xa5, 0x52, 0x8f, 0x48, 0x89, 0xec, 0x92, 0x40, 0xa9, 0x0f, 0xc8,
-0xf4, 0xea, 0x1e, 0x0e, 0xa3, 0x2e, 0xfb, 0x49, 0xd2, 0x5d, 0x78, 0x67, 0xdc, 0x64, 0x08, 0x55,
-0xf5, 0x38, 0xaa, 0x13, 0x58, 0xea, 0x3b, 0xc3, 0xaa, 0xa4, 0x28, 0x93, 0x64, 0x90, 0xa8, 0x9b,
-0x07, 0xb2, 0x25, 0xd0, 0xee, 0xf1, 0xe8, 0x13, 0xef, 0x32, 0x61, 0x4c, 0x4c, 0x5d, 0x22, 0x63,
-0x68, 0x5c, 0x93, 0x49, 0xbf, 0x2c, 0x56, 0x09, 0x14, 0xe4, 0x2b, 0xc2, 0xae, 0xa8, 0xd2, 0x9a,
-0x38, 0x9a, 0x28, 0xa6, 0x9b, 0xbc, 0x1f, 0xda, 0xd4, 0xfa, 0xdc, 0x1a, 0xb1, 0x36, 0x63, 0x4b,
-0x64, 0x56, 0x90, 0x56, 0x17, 0x4c, 0xd1, 0x38, 0xe5, 0x1e, 0x1c, 0x01, 0xb7, 0xe2, 0xb7, 0xc7,
-0xad, 0xb3, 0x72, 0xa9, 0x66, 0xaa, 0x5d, 0xb6, 0xa5, 0xcb, 0xc8, 0xe6, 0xea, 0x03, 0xf7, 0x1e,
-0xb1, 0x34, 0x81, 0x42, 0x77, 0x47, 0xc1, 0x43, 0x0d, 0x39, 0x05, 0x29, 0x30, 0x15, 0x04, 0xff,
-0x54, 0xe8, 0xcd, 0xd3, 0x1f, 0xc4, 0x11, 0xbc, 0x31, 0xbd, 0xf5, 0xc7, 0x67, 0xda, 0x32, 0xf1,
-0x3e, 0x08, 0x0e, 0x1c, 0x23, 0x2a, 0x77, 0x31, 0x73, 0x32, 0x51, 0x2e, 0xad, 0x26, 0x43, 0x1c,
-0x96, 0x0f, 0xee, 0x00, 0x4a, 0xf1, 0x6f, 0xe2, 0xf3, 0xd6, 0x13, 0xd1, 0x81, 0xd2, 0x0b, 0xdb,
-0xb0, 0xe8, 0x70, 0xf8, 0x08, 0x07, 0x50, 0x12, 0x36, 0x19, 0x12, 0x1c, 0xd4, 0x1b, 0xf4, 0x19,
-0x1c, 0x17, 0x7a, 0x13, 0x86, 0x0e, 0x9a, 0x07, 0xd0, 0xfe, 0x4a, 0xf5, 0x14, 0xed, 0x34, 0xe8,
-0xf2, 0xe7, 0xe4, 0xeb, 0x86, 0xf2, 0x84, 0xf9, 0x1c, 0xff, 0x86, 0x02, 0xfc, 0x03, 0x52, 0x04,
-0xdc, 0x04, 0x74, 0x06, 0x4e, 0x09, 0xbc, 0x0c, 0x64, 0x0f, 0x10, 0x10, 0x0c, 0x0e, 0xd2, 0x09,
-0x96, 0x04, 0xd0, 0xff, 0xf8, 0xfb, 0x2a, 0xf9, 0xe0, 0xf6, 0x8a, 0xf4, 0x06, 0xf2, 0x8a, 0xef,
-0xdc, 0xed, 0x06, 0xee, 0xd8, 0xf0, 0xbc, 0xf6, 0x7c, 0xff, 0xce, 0x09, 0x1a, 0x14, 0x63, 0x1c,
-0x1b, 0x21, 0x71, 0x21, 0x81, 0x1d, 0xee, 0x15, 0xea, 0x0b, 0x92, 0x00, 0xfc, 0xf4, 0x36, 0xea,
-0xf5, 0xe0, 0x31, 0xda, 0xe5, 0xd6, 0xed, 0xd7, 0xe9, 0xdd, 0xde, 0xe8, 0x16, 0xf8, 0x3a, 0x0a,
-0xd1, 0x1c, 0xdd, 0x2c, 0x4b, 0x37, 0xed, 0x39, 0x45, 0x34, 0x7b, 0x27, 0xd4, 0x15, 0x04, 0x02,
-0x96, 0xee, 0x6d, 0xdd, 0xe5, 0xcf, 0xed, 0xc6, 0x31, 0xc3, 0xb1, 0xc5, 0xf9, 0xce, 0x57, 0xdf,
-0xea, 0xf5, 0x78, 0x10, 0x45, 0x2b, 0x97, 0x41, 0xdf, 0x4e, 0x5b, 0x50, 0x0d, 0x46, 0x6d, 0x32,
-0x54, 0x19, 0x8a, 0xfe, 0x44, 0xe5, 0xa5, 0xcf, 0x5f, 0xbf, 0x19, 0xb5, 0x05, 0xb2, 0xfd, 0xb6,
-0x09, 0xc5, 0x0f, 0xdc, 0x44, 0xfa, 0xec, 0x1b, 0xe7, 0x3b, 0x99, 0x54, 0x22, 0x61, 0x88, 0x5f,
-0x95, 0x50, 0xdd, 0x37, 0xc6, 0x19, 0x62, 0xfa, 0xe3, 0xdc, 0xfd, 0xc3, 0x3f, 0xb1, 0x4e, 0xa6,
-0x50, 0xa4, 0xad, 0xac, 0x4f, 0xc0, 0x0b, 0xde, 0xbe, 0x02, 0x33, 0x29, 0x7b, 0x4b, 0xbc, 0x63,
-0xea, 0x6d, 0x6a, 0x68, 0x3a, 0x55, 0x6b, 0x38, 0x96, 0x16, 0xd2, 0xf3, 0x67, 0xd3, 0x17, 0xb8,
-0x7e, 0xa4, 0x90, 0x9a, 0xf6, 0x9b, 0xfc, 0xa9, 0x01, 0xc4, 0xaa, 0xe7, 0x18, 0x10, 0x89, 0x37,
-0x42, 0x58, 0x72, 0x6d, 0xdc, 0x73, 0xee, 0x6a, 0xde, 0x54, 0x6b, 0x35, 0x2a, 0x11, 0xdc, 0xeb,
-0x61, 0xc9, 0x53, 0xad, 0xf2, 0x9a, 0x60, 0x94, 0x1e, 0x9b, 0xcd, 0xae, 0xa9, 0xcd, 0xb0, 0xf3,
-0xb6, 0x1b, 0x93, 0x40, 0xb0, 0x5d, 0x5e, 0x6f, 0xfe, 0x72, 0x32, 0x68, 0x95, 0x50, 0xef, 0x2f,
-0x1a, 0x0a, 0x89, 0xe3, 0xb1, 0xc0, 0x00, 0xa6, 0xfc, 0x96, 0xa0, 0x95, 0xc2, 0xa1, 0xbf, 0xb9,
-0x59, 0xda, 0xfa, 0xfe, 0x61, 0x23, 0x79, 0x43, 0x24, 0x5c, 0x7c, 0x6a, 0x4c, 0x6c, 0x88, 0x60,
-0x9d, 0x48, 0x67, 0x27, 0x52, 0x01, 0x6f, 0xdb, 0xcd, 0xba, 0x36, 0xa4, 0x82, 0x9a, 0x50, 0x9e,
-0x3d, 0xae, 0x6b, 0xc7, 0x0e, 0xe6, 0xbc, 0x06, 0x05, 0x26, 0x4d, 0x41, 0x40, 0x56, 0x0c, 0x62,
-0x42, 0x62, 0xc8, 0x55, 0x77, 0x3d, 0x67, 0x1c, 0xbe, 0xf7, 0xe5, 0xd4, 0x5d, 0xb9, 0xea, 0xa8,
-0xfe, 0xa4, 0xd9, 0xac, 0x15, 0xbe, 0x65, 0xd5, 0xbc, 0xef, 0x98, 0x0a, 0x01, 0x24, 0x69, 0x3a,
-0x77, 0x4b, 0xb3, 0x54, 0x7f, 0x53, 0xad, 0x46, 0x55, 0x2f, 0x16, 0x11, 0xee, 0xf0, 0x91, 0xd4,
-0x4f, 0xc0, 0x5f, 0xb6, 0x01, 0xb7, 0x3d, 0xc0, 0x7b, 0xcf, 0x35, 0xe2, 0x60, 0xf6, 0x8a, 0x0a,
-0x03, 0x1e, 0x25, 0x2f, 0x0f, 0x3c, 0x5f, 0x42, 0xf1, 0x3f, 0xff, 0x33, 0x1d, 0x20, 0xb6, 0x07,
-0x8c, 0xef, 0xdd, 0xdb, 0x3d, 0xcf, 0x99, 0xca, 0x0d, 0xcd, 0xd3, 0xd4, 0xed, 0xdf, 0x9a, 0xec,
-0xce, 0xf9, 0x28, 0x07, 0x02, 0x14, 0x95, 0x1f, 0x57, 0x28, 0x77, 0x2c, 0xab, 0x2a, 0x93, 0x22,
-0x40, 0x15, 0xa0, 0x05, 0xc2, 0xf6, 0x1c, 0xeb, 0x08, 0xe4, 0x91, 0xe1, 0xf1, 0xe2, 0x1e, 0xe7,
-0xbe, 0xec, 0x04, 0xf3, 0x8a, 0xf9, 0xf8, 0xff, 0x6a, 0x06, 0x8e, 0x0c, 0xbe, 0x11, 0x56, 0x15,
-0x9c, 0x16, 0xbc, 0x14, 0x32, 0x10, 0xda, 0x09, 0x40, 0x03, 0xd2, 0xfd, 0x36, 0xfa, 0x7e, 0xf8,
-0x60, 0xf8, 0xd2, 0xf8, 0xfa, 0xf8, 0x78, 0xf8, 0xfe, 0xf6, 0x38, 0xf5, 0x18, 0xf4, 0xd2, 0xf4,
-0x4c, 0xf8, 0x40, 0xfe, 0x1e, 0x05, 0x78, 0x0b, 0x04, 0x10, 0x44, 0x12, 0xbc, 0x12, 0xec, 0x11,
-0x6e, 0x10, 0x76, 0x0e, 0x8e, 0x0b, 0x10, 0x07, 0xa2, 0x00, 0x00, 0xf8, 0x08, 0xee, 0x5e, 0xe4,
-0x5b, 0xdd, 0x89, 0xdb, 0x23, 0xe0, 0x92, 0xea, 0xc0, 0xf8, 0xca, 0x07, 0x18, 0x15, 0x57, 0x1f,
-0x85, 0x25, 0xfd, 0x27, 0x69, 0x27, 0xe9, 0x23, 0x15, 0x1d, 0x7e, 0x12, 0xe2, 0x03, 0x48, 0xf2,
-0xe9, 0xdf, 0xc5, 0xcf, 0xbb, 0xc5, 0x7f, 0xc4, 0x03, 0xcd, 0xa1, 0xdd, 0x0e, 0xf3, 0x32, 0x09,
-0x19, 0x1d, 0x69, 0x2c, 0xa9, 0x36, 0xc7, 0x3b, 0xc5, 0x3b, 0x43, 0x36, 0x95, 0x2a, 0x82, 0x18,
-0x1e, 0x01, 0x06, 0xe7, 0xc5, 0xcd, 0x15, 0xba, 0x9d, 0xaf, 0xe3, 0xb0, 0xdd, 0xbd, 0x5f, 0xd4,
-0x4c, 0xf0, 0x60, 0x0d, 0x4f, 0x27, 0xc5, 0x3b, 0x59, 0x49, 0x63, 0x4f, 0x83, 0x4d, 0x19, 0x43,
-0x35, 0x30, 0xfc, 0x15, 0x3c, 0xf7, 0x8f, 0xd7, 0xf7, 0xbb, 0x74, 0xa8, 0x66, 0xa0, 0x2c, 0xa5,
-0x2f, 0xb6, 0x05, 0xd1, 0xb6, 0xf1, 0x54, 0x13, 0xb9, 0x31, 0xeb, 0x49, 0x88, 0x59, 0x44, 0x5f,
-0xe2, 0x59, 0x75, 0x49, 0x81, 0x2f, 0x0c, 0x0f, 0xa8, 0xeb, 0x35, 0xca, 0xd3, 0xae, 0xfc, 0x9c,
-0x36, 0x97, 0x34, 0x9e, 0xe3, 0xb1, 0x2d, 0xd0, 0x0c, 0xf5, 0x2e, 0x1b, 0xc7, 0x3d, 0x6c, 0x58,
-0x10, 0x68, 0x8c, 0x6a, 0x48, 0x5f, 0x35, 0x48, 0x97, 0x28, 0x6a, 0x04, 0xfd, 0xdf, 0x41, 0xbf,
-0xc0, 0xa5, 0x6c, 0x96, 0xc6, 0x92, 0x2c, 0x9c, 0x9f, 0xb2, 0x3d, 0xd4, 0xa4, 0xfc, 0x13, 0x26,
-0x59, 0x4a, 0x9e, 0x64, 0x28, 0x71, 0x26, 0x6e, 0x14, 0x5d, 0x15, 0x41, 0xbb, 0x1e, 0x44, 0xfa,
-0x3d, 0xd7, 0xc7, 0xb8, 0x0a, 0xa2, 0xe0, 0x94, 0x7e, 0x93, 0x4a, 0x9f, 0x6b, 0xb8, 0xcf, 0xdc,
-0x64, 0x07, 0x63, 0x31, 0x4f, 0x54, 0xe0, 0x6a, 0xd2, 0x71, 0x78, 0x69, 0x25, 0x54, 0x5f, 0x36,
-0x82, 0x14, 0x00, 0xf2, 0xe3, 0xd1, 0xd9, 0xb6, 0xec, 0xa2, 0x9e, 0x98, 0xd8, 0x99, 0x0a, 0xa8,
-0x4d, 0xc3, 0xa6, 0xe8, 0x40, 0x12, 0x5b, 0x39, 0x78, 0x57, 0x16, 0x68, 0x0e, 0x6a, 0x32, 0x5e,
-0x23, 0x48, 0xe5, 0x2b, 0xd2, 0x0c, 0xe0, 0xed, 0x81, 0xd1, 0xc9, 0xb9, 0x16, 0xa9, 0xaa, 0xa1,
-0x38, 0xa5, 0x3b, 0xb5, 0xb7, 0xd0, 0x1c, 0xf4, 0xac, 0x19, 0xdd, 0x3a, 0x59, 0x52, 0x5e, 0x5d,
-0x7c, 0x5b, 0xe3, 0x4e, 0xa5, 0x3a, 0x89, 0x21, 0xa0, 0x06, 0x0a, 0xec, 0x03, 0xd4, 0xa3, 0xc0,
-0x03, 0xb4, 0xf5, 0xaf, 0x0f, 0xb6, 0x67, 0xc6, 0x31, 0xdf, 0x3a, 0xfd, 0x48, 0x1b, 0xbd, 0x34,
-0xcf, 0x45, 0x83, 0x4c, 0x5f, 0x49, 0x23, 0x3e, 0xbf, 0x2c, 0xba, 0x17, 0x7a, 0x01, 0x3a, 0xec,
-0xcf, 0xd9, 0x0f, 0xcc, 0x39, 0xc4, 0x8f, 0xc3, 0x39, 0xca, 0xa3, 0xd7, 0x78, 0xea, 0xf0, 0xff,
-0x54, 0x15, 0x3f, 0x27, 0x3d, 0x33, 0xdb, 0x37, 0x37, 0x35, 0x63, 0x2c, 0x0d, 0x1f, 0x42, 0x0f,
-0x22, 0xff, 0xb6, 0xf0, 0x46, 0xe5, 0xa5, 0xdd, 0x35, 0xda, 0xc1, 0xda, 0xd9, 0xde, 0x2c, 0xe6,
-0x24, 0xf0, 0x48, 0xfc, 0x20, 0x09, 0xc8, 0x14, 0x31, 0x1d, 0xfb, 0x20, 0xe3, 0x1f, 0x6c, 0x1a,
-0x20, 0x12, 0xc8, 0x08, 0x62, 0x00, 0x00, 0xfa, 0xb8, 0xf5, 0x64, 0xf3, 0x18, 0xf2, 0xf6, 0xf0,
-0x92, 0xef, 0xd8, 0xee, 0xf4, 0xef, 0x88, 0xf3, 0x72, 0xf9, 0x3e, 0x00, 0x54, 0x06, 0x56, 0x0a,
-0x96, 0x0b, 0xaa, 0x0a, 0xdc, 0x08, 0xd0, 0x07, 0x18, 0x08, 0x96, 0x09, 0x54, 0x0b, 0xde, 0x0b,
-0xba, 0x09, 0x1e, 0x04, 0xf6, 0xfb, 0x08, 0xf3, 0xb0, 0xeb, 0x9e, 0xe7, 0x46, 0xe7, 0x0c, 0xea,
-0x76, 0xee, 0x5c, 0xf3, 0x52, 0xf8, 0x9e, 0xfd, 0x0c, 0x04, 0x0c, 0x0c, 0xe4, 0x14, 0xe9, 0x1c,
-0x39, 0x22, 0xed, 0x22, 0xed, 0x1d, 0x56, 0x13, 0x92, 0x04, 0x58, 0xf4, 0x98, 0xe5, 0x5d, 0xda,
-0x35, 0xd4, 0x31, 0xd3, 0xb9, 0xd6, 0x11, 0xde, 0x90, 0xe8, 0x12, 0xf6, 0xd6, 0x05, 0xb0, 0x16,
-0x29, 0x26, 0x17, 0x32, 0x37, 0x38, 0x3f, 0x37, 0x6f, 0x2e, 0x75, 0x1e, 0x86, 0x09, 0x2e, 0xf2,
-0xaf, 0xdb, 0xa9, 0xc9, 0x97, 0xbe, 0xa3, 0xbb, 0xcd, 0xc0, 0x35, 0xcd, 0xa9, 0xdf, 0x32, 0xf6,
-0x7c, 0x0e, 0x91, 0x25, 0xf7, 0x38, 0xd7, 0x45, 0xe7, 0x4a, 0x0f, 0x47, 0x45, 0x3a, 0x65, 0x25,
-0x40, 0x0a, 0x0c, 0xec, 0x0b, 0xcf, 0xe3, 0xb7, 0x12, 0xaa, 0xdc, 0xa7, 0x1b, 0xb1, 0x7b, 0xc4,
-0xc9, 0xde, 0xa2, 0xfc, 0x42, 0x1a, 0x89, 0x34, 0x9d, 0x48, 0xf6, 0x54, 0x4c, 0x58, 0xaf, 0x51,
-0x1d, 0x41, 0x4b, 0x27, 0x8a, 0x06, 0x5b, 0xe2, 0x41, 0xc0, 0x16, 0xa6, 0x8a, 0x98, 0x6c, 0x99,
-0x2c, 0xa8, 0x03, 0xc2, 0xa1, 0xe2, 0x2c, 0x05, 0x81, 0x25, 0x87, 0x40, 0x83, 0x54, 0xd2, 0x5f,
-0x30, 0x61, 0xc4, 0x57, 0x5b, 0x43, 0x05, 0x25, 0x26, 0xff, 0x9f, 0xd6, 0xd9, 0xb1, 0xb8, 0x97,
-0x88, 0x8c, 0xe4, 0x91, 0x1a, 0xa6, 0xed, 0xc4, 0xf8, 0xe8, 0x3c, 0x0d, 0xf1, 0x2d, 0xb1, 0x48,
-0xe6, 0x5b, 0x02, 0x66, 0x76, 0x65, 0x0a, 0x59, 0xd1, 0x40, 0x41, 0x1e, 0xd6, 0xf4, 0x45, 0xca,
-0xe0, 0xa5, 0x68, 0x8e, 0xb6, 0x87, 0xec, 0x91, 0x1a, 0xaa, 0x7f, 0xcb, 0xbe, 0xf0, 0x10, 0x15,
-0x31, 0x35, 0xcb, 0x4e, 0x62, 0x60, 0x0c, 0x68, 0x2a, 0x64, 0xdb, 0x53, 0xc1, 0x37, 0x4e, 0x12,
-0xd2, 0xe7, 0xf9, 0xbe, 0xc2, 0x9e, 0xb2, 0x8c, 0x02, 0x8b, 0xf6, 0x98, 0x05, 0xb3, 0x89, 0xd4,
-0xcc, 0xf8, 0x98, 0x1b, 0xdb, 0x39, 0x51, 0x51, 0xd4, 0x5f, 0xdc, 0x63, 0x1a, 0x5c, 0x49, 0x48,
-0x35, 0x2a, 0x38, 0x05, 0x1b, 0xde, 0xc3, 0xba, 0xc8, 0xa0, 0xe0, 0x93, 0xa0, 0x95, 0x8e, 0xa4,
-0xc9, 0xbd, 0x7d, 0xdd, 0x5e, 0xff, 0x9b, 0x1f, 0x0d, 0x3b, 0x19, 0x4f, 0xf0, 0x59, 0x2c, 0x5a,
-0x17, 0x4f, 0x05, 0x3a, 0x37, 0x1d, 0x4a, 0xfc, 0x49, 0xdb, 0xaf, 0xbe, 0x56, 0xaa, 0x22, 0xa1,
-0x02, 0xa4, 0x57, 0xb2, 0xf3, 0xc9, 0xf4, 0xe6, 0xd2, 0x05, 0x7f, 0x22, 0xab, 0x39, 0xb3, 0x48,
-0x27, 0x4e, 0xd5, 0x49, 0xd3, 0x3c, 0xf9, 0x28, 0xf4, 0x10, 0x64, 0xf7, 0x8f, 0xde, 0x0f, 0xc9,
-0x91, 0xb9, 0x75, 0xb2, 0x5d, 0xb5, 0x1b, 0xc2, 0xaf, 0xd6, 0x38, 0xf0, 0x62, 0x0a, 0x77, 0x21,
-0x3f, 0x32, 0xff, 0x3a, 0xa9, 0x3b, 0x6f, 0x35, 0x03, 0x2a, 0x84, 0x1b, 0x48, 0x0b, 0xf4, 0xf9,
-0xd4, 0xe8, 0x2d, 0xd9, 0x47, 0xcd, 0x7d, 0xc7, 0x83, 0xc9, 0x71, 0xd3, 0xea, 0xe3, 0x62, 0xf7,
-0x8e, 0x0a, 0xfe, 0x19, 0x81, 0x23, 0xcb, 0x26, 0xe1, 0x24, 0x99, 0x1f, 0xbc, 0x18, 0x3a, 0x11,
-0x14, 0x09, 0x24, 0x00, 0x18, 0xf6, 0xc0, 0xeb, 0x09, 0xe3, 0x07, 0xde, 0x83, 0xde, 0x98, 0xe4,
-0xa2, 0xee, 0x3e, 0xfa, 0x92, 0x04, 0xae, 0x0b, 0xfe, 0x0e, 0x54, 0x0f, 0x14, 0x0e, 0xa2, 0x0c,
-0xd4, 0x0b, 0xca, 0x0b, 0xa0, 0x0b, 0x00, 0x0a, 0x68, 0x06, 0x08, 0x01, 0xea, 0xfa, 0xa4, 0xf5,
-0x9c, 0xf2, 0x46, 0xf2, 0xd2, 0xf3, 0xd8, 0xf5, 0x40, 0xf7, 0x9c, 0xf7, 0x28, 0xf7, 0x1e, 0xf7,
-0x74, 0xf8, 0x0a, 0xfc, 0xfa, 0x01, 0x80, 0x09, 0x20, 0x11, 0x0a, 0x17, 0xaa, 0x19, 0x6e, 0x18,
-0xac, 0x13, 0x58, 0x0c, 0xd2, 0x03, 0x36, 0xfb, 0xea, 0xf2, 0x9e, 0xeb, 0x64, 0xe5, 0x1f, 0xe1,
-0x75, 0xdf, 0x27, 0xe1, 0x7c, 0xe6, 0x86, 0xef, 0x18, 0xfc, 0xf8, 0x0a, 0x30, 0x1a, 0xdf, 0x26,
-0x0b, 0x2f, 0x85, 0x30, 0xe9, 0x2a, 0xf9, 0x1e, 0xd6, 0x0e, 0xfc, 0xfc, 0xd2, 0xeb, 0x0b, 0xdd,
-0x19, 0xd2, 0xbd, 0xcb, 0x55, 0xca, 0x57, 0xce, 0xaf, 0xd7, 0x70, 0xe6, 0xe8, 0xf9, 0x5e, 0x10,
-0xe5, 0x26, 0x13, 0x3a, 0xd7, 0x45, 0x89, 0x47, 0x4f, 0x3e, 0xcf, 0x2b, 0xa4, 0x13, 0xc4, 0xf9,
-0x97, 0xe1, 0xef, 0xcd, 0x1b, 0xc0, 0xb5, 0xb8, 0x53, 0xb8, 0xcf, 0xbe, 0xc1, 0xcc, 0xaf, 0xe1,
-0x74, 0xfc, 0x06, 0x1a, 0xf1, 0x36, 0xcf, 0x4d, 0x56, 0x5a, 0x62, 0x59, 0xbb, 0x4a, 0xd9, 0x31,
-0x40, 0x13, 0xc4, 0xf3, 0x3b, 0xd7, 0x79, 0xc0, 0xe7, 0xb0, 0xa6, 0xa9, 0xa6, 0xaa, 0x89, 0xb4,
-0xa3, 0xc7, 0x13, 0xe3, 0x66, 0x04, 0xe9, 0x27, 0x35, 0x48, 0xf2, 0x5f, 0x50, 0x6a, 0xd6, 0x64,
-0x0f, 0x51, 0x13, 0x33, 0xfa, 0x0f, 0x9a, 0xec, 0x03, 0xcd, 0x37, 0xb4, 0x2e, 0xa4, 0xaa, 0x9d,
-0x5e, 0xa1, 0xf1, 0xaf, 0xf5, 0xc8, 0xa0, 0xea, 0x3e, 0x11, 0x77, 0x37, 0xa2, 0x57, 0xa8, 0x6c,
-0xa2, 0x72, 0xcc, 0x68, 0xf5, 0x50, 0xcb, 0x2f, 0x46, 0x0a, 0x10, 0xe5, 0x35, 0xc4, 0x0c, 0xab,
-0xa0, 0x9b, 0x3a, 0x97, 0xec, 0x9e, 0x7b, 0xb2, 0xfb, 0xd0, 0xa2, 0xf6, 0xa3, 0x1e, 0x73, 0x43,
-0x50, 0x60, 0x2c, 0x71, 0x76, 0x73, 0xa6, 0x66, 0x4b, 0x4d, 0x29, 0x2b, 0x9a, 0x04, 0x33, 0xde,
-0x81, 0xbc, 0x60, 0xa3, 0xb0, 0x95, 0x1c, 0x95, 0xf4, 0xa1, 0xfb, 0xba, 0x03, 0xdd, 0x88, 0x03,
-0x47, 0x29, 0xdb, 0x49, 0xe2, 0x61, 0x84, 0x6e, 0xf4, 0x6d, 0x02, 0x60, 0x29, 0x46, 0xc9, 0x23,
-0x3c, 0xfd, 0x5f, 0xd7, 0x39, 0xb7, 0xe8, 0xa0, 0x70, 0x97, 0xd2, 0x9b, 0xfb, 0xac, 0x3f, 0xc8,
-0xb8, 0xe9, 0xda, 0x0c, 0x93, 0x2d, 0x11, 0x49, 0xba, 0x5c, 0x7e, 0x66, 0x7a, 0x64, 0x20, 0x56,
-0xad, 0x3c, 0xe6, 0x1a, 0x6a, 0xf5, 0xa3, 0xd1, 0x07, 0xb5, 0xae, 0xa3, 0x8c, 0x9f, 0x54, 0xa8,
-0xc1, 0xbb, 0x69, 0xd6, 0x1e, 0xf4, 0xbc, 0x11, 0x7b, 0x2c, 0xb1, 0x42, 0x63, 0x52, 0xbe, 0x59,
-0xbe, 0x56, 0xb7, 0x48, 0x3b, 0x30, 0x7a, 0x10, 0x60, 0xee, 0x87, 0xcf, 0x09, 0xb9, 0xe1, 0xad,
-0xc5, 0xae, 0x17, 0xba, 0xed, 0xcc, 0xab, 0xe3, 0x7e, 0xfb, 0x48, 0x12, 0xa3, 0x26, 0x7d, 0x37,
-0x5d, 0x43, 0x79, 0x48, 0x21, 0x45, 0x55, 0x38, 0x31, 0x23, 0x80, 0x08, 0xfa, 0xec, 0xaf, 0xd5,
-0x4f, 0xc6, 0x7d, 0xc0, 0xd1, 0xc3, 0x2f, 0xce, 0xe1, 0xdc, 0x86, 0xed, 0x04, 0xfe, 0xa0, 0x0d,
-0xb6, 0x1b, 0x77, 0x27, 0xdb, 0x2f, 0x73, 0x33, 0xb3, 0x30, 0x03, 0x27, 0x3e, 0x17, 0xf6, 0x03,
-0x2c, 0xf1, 0x25, 0xe2, 0x3b, 0xd9, 0xf3, 0xd6, 0x3d, 0xda, 0x6d, 0xe1, 0x94, 0xea, 0x46, 0xf4,
-0x96, 0xfd, 0x62, 0x06, 0x3e, 0x0e, 0x3a, 0x15, 0xa2, 0x1a, 0xa7, 0x1d, 0x65, 0x1d, 0x34, 0x19,
-0x72, 0x11, 0x60, 0x07, 0x2e, 0xfd, 0xcc, 0xf4, 0x9a, 0xef, 0xb0, 0xed, 0x8c, 0xee, 0x06, 0xf1,
-0x0c, 0xf4, 0x0e, 0xf7, 0x68, 0xf9, 0x4a, 0xfb, 0x04, 0xfd, 0x34, 0xff, 0x4a, 0x02, 0x60, 0x06,
-0xba, 0x0a, 0x40, 0x0e, 0x06, 0x10, 0x74, 0x0f, 0x5a, 0x0d, 0x76, 0x0a, 0xba, 0x07, 0x58, 0x05,
-0x22, 0x03, 0x98, 0x00, 0x26, 0xfd, 0x68, 0xf8, 0x80, 0xf2, 0x62, 0xec, 0x7c, 0xe7, 0x0c, 0xe6,
-0x90, 0xe9, 0x0e, 0xf2, 0x0c, 0xfe, 0xcc, 0x0a, 0xc8, 0x15, 0x43, 0x1d, 0xc5, 0x20, 0xed, 0x20,
-0x89, 0x1e, 0x3e, 0x1a, 0x0e, 0x14, 0xc0, 0x0b, 0xc2, 0x00, 0x74, 0xf3, 0xd4, 0xe4, 0x7d, 0xd7,
-0xcf, 0xce, 0x37, 0xcd, 0x67, 0xd4, 0x55, 0xe3, 0x88, 0xf7, 0xbc, 0x0c, 0x8d, 0x1f, 0xcb, 0x2c,
-0x19, 0x34, 0x9d, 0x35, 0x61, 0x32, 0x39, 0x2b, 0x07, 0x20, 0xd6, 0x10, 0xd4, 0xfd, 0x92, 0xe8,
-0x67, 0xd3, 0x5b, 0xc2, 0xad, 0xb8, 0x6b, 0xb9, 0x2d, 0xc5, 0x51, 0xda, 0x3c, 0xf5, 0x40, 0x11,
-0xc5, 0x29, 0xfd, 0x3b, 0x9d, 0x46, 0x9d, 0x49, 0x85, 0x45, 0x91, 0x3a, 0xf9, 0x28, 0x66, 0x11,
-0xb0, 0xf5, 0xe1, 0xd8, 0x6d, 0xbf, 0x33, 0xad, 0xf2, 0xa5, 0xf2, 0xaa, 0x47, 0xbc, 0x53, 0xd7,
-0xf4, 0xf7, 0xe6, 0x18, 0xb7, 0x35, 0x1b, 0x4b, 0x72, 0x57, 0x40, 0x5a, 0x11, 0x53, 0xbb, 0x42,
-0x01, 0x2a, 0x0c, 0x0b, 0x1a, 0xe9, 0xbd, 0xc8, 0x7d, 0xae, 0x48, 0x9e, 0x3e, 0x9a, 0x0e, 0xa3,
-0x57, 0xb8, 0x3b, 0xd7, 0xae, 0xfb, 0x5f, 0x20, 0x89, 0x40, 0x80, 0x58, 0xaa, 0x65, 0x78, 0x66,
-0xc6, 0x5a, 0xfd, 0x43, 0x8b, 0x24, 0x74, 0x00, 0xcd, 0xdb, 0x71, 0xbb, 0x66, 0xa3, 0x2a, 0x96,
-0x38, 0x95, 0x14, 0xa1, 0xf3, 0xb8, 0xb9, 0xda, 0x08, 0x02, 0x71, 0x29, 0xb9, 0x4b, 0x4c, 0x64,
-0x8c, 0x6f, 0x2e, 0x6c, 0xc6, 0x5a, 0x43, 0x3e, 0x00, 0x1b, 0x22, 0xf5, 0x5b, 0xd1, 0x6b, 0xb3,
-0x78, 0x9e, 0x2c, 0x94, 0xaa, 0x95, 0x5c, 0xa3, 0x21, 0xbd, 0xb5, 0xe0, 0xb0, 0x09, 0x7f, 0x32,
-0xb9, 0x54, 0x5e, 0x6b, 0xca, 0x72, 0x30, 0x6a, 0xf1, 0x53, 0x51, 0x34, 0x10, 0x10, 0xb8, 0xeb,
-0xfd, 0xca, 0x9b, 0xb0, 0x26, 0x9f, 0x90, 0x97, 0x1e, 0x9b, 0xa0, 0xaa, 0xdd, 0xc5, 0x74, 0xea,
-0xc6, 0x13, 0x39, 0x3b, 0x72, 0x5a, 0x52, 0x6c, 0x3a, 0x6e, 0x28, 0x61, 0x5b, 0x48, 0xbd, 0x28,
-0xc4, 0x06, 0xf8, 0xe5, 0x57, 0xc9, 0x0b, 0xb3, 0x9e, 0xa4, 0x9e, 0x9f, 0x2e, 0xa5, 0xd9, 0xb5,
-0x87, 0xd1, 0x3e, 0xf5, 0xc8, 0x1b, 0x0f, 0x3f, 0xb4, 0x58, 0xd2, 0x64, 0x94, 0x62, 0x87, 0x53,
-0x6b, 0x3b, 0x91, 0x1e, 0x8c, 0x00, 0x38, 0xe4, 0x25, 0xcc, 0xdb, 0xb9, 0xf3, 0xae, 0xbb, 0xac,
-0x13, 0xb4, 0x81, 0xc5, 0x77, 0xdf, 0x50, 0xff, 0xdb, 0x1f, 0xf7, 0x3b, 0xd5, 0x4e, 0x02, 0x56,
-0x3d, 0x51, 0xdb, 0x42, 0xb5, 0x2d, 0x1a, 0x15, 0x58, 0xfc, 0x8c, 0xe5, 0xbd, 0xd2, 0x77, 0xc5,
-0x9b, 0xbe, 0x09, 0xbf, 0x45, 0xc7, 0x97, 0xd6, 0xb4, 0xeb, 0x04, 0x04, 0x10, 0x1c, 0x19, 0x30,
-0x0d, 0x3d, 0x39, 0x41, 0xe9, 0x3c, 0x6b, 0x31, 0x11, 0x21, 0x64, 0x0e, 0xb6, 0xfb, 0x20, 0xeb,
-0x33, 0xde, 0xd7, 0xd5, 0xaf, 0xd2, 0x93, 0xd4, 0x2d, 0xdb, 0xca, 0xe5, 0x24, 0xf3, 0x20, 0x02,
-0x2c, 0x11, 0x1d, 0x1e, 0xff, 0x26, 0x85, 0x2a, 0x23, 0x28, 0xd9, 0x20, 0x36, 0x16, 0xd2, 0x09,
-0xee, 0xfd, 0x14, 0xf4, 0x44, 0xed, 0xd0, 0xe9, 0x24, 0xe9, 0x4e, 0xea, 0x72, 0xec, 0x62, 0xef,
-0x70, 0xf3, 0x50, 0xf9, 0xd4, 0x00, 0xe6, 0x08, 0xe4, 0x0f, 0xfc, 0x13, 0xa4, 0x14, 0xfa, 0x11,
-0x66, 0x0d, 0x4e, 0x08, 0x22, 0x04, 0xe4, 0x01, 0x40, 0x01, 0x36, 0x01, 0x60, 0x00, 0xe2, 0xfd,
-0x2e, 0xf9, 0xc4, 0xf3, 0x4c, 0xef, 0x68, 0xed, 0xfc, 0xee, 0x68, 0xf3, 0xd6, 0xf8, 0xf2, 0xfd,
-0xf8, 0x01, 0xfc, 0x04, 0xd0, 0x07, 0x46, 0x0b, 0x92, 0x0f, 0x3e, 0x14, 0xe2, 0x17, 0xbc, 0x18,
-0x74, 0x15, 0x7e, 0x0d, 0xa4, 0x01, 0xec, 0xf3, 0x52, 0xe7, 0x59, 0xde, 0x75, 0xda, 0xb7, 0xdb,
-0xfb, 0xe0, 0xc2, 0xe8, 0x3e, 0xf2, 0xe8, 0xfc, 0xac, 0x08, 0x2a, 0x15, 0x1f, 0x21, 0xa9, 0x2a,
-0xe5, 0x2f, 0x01, 0x2f, 0x15, 0x27, 0xc4, 0x18, 0xb4, 0x05, 0xbc, 0xf0, 0x35, 0xdd, 0x37, 0xce,
-0xef, 0xc5, 0xe5, 0xc4, 0xf3, 0xca, 0xc9, 0xd6, 0x48, 0xe7, 0x08, 0xfb, 0x1c, 0x10, 0x55, 0x24,
-0x39, 0x35, 0x85, 0x40, 0x4f, 0x44, 0xe7, 0x3f, 0x0d, 0x33, 0xfb, 0x1e, 0xe4, 0x05, 0xa6, 0xea,
-0xfd, 0xd0, 0xeb, 0xbc, 0x67, 0xb1, 0x17, 0xb0, 0x33, 0xb9, 0x3d, 0xcb, 0x00, 0xe4, 0x3e, 0x00,
-0x4f, 0x1c, 0xd7, 0x34, 0x45, 0x47, 0x97, 0x51, 0xd5, 0x52, 0xa9, 0x4a, 0xb7, 0x39, 0xf7, 0x20,
-0xac, 0x02, 0x0d, 0xe2, 0x61, 0xc3, 0xa3, 0xab, 0x08, 0x9f, 0xdc, 0x9f, 0xf1, 0xad, 0x3b, 0xc7,
-0x80, 0xe7, 0xda, 0x09, 0xbb, 0x29, 0x9d, 0x43, 0x7c, 0x55, 0x2a, 0x5e, 0xde, 0x5c, 0x8d, 0x51,
-0xc3, 0x3c, 0xad, 0x1f, 0x72, 0xfc, 0xdf, 0xd6, 0x61, 0xb4, 0x08, 0x9b, 0xcc, 0x8f, 0xe8, 0x94,
-0x4e, 0xa9, 0x11, 0xc9, 0x9e, 0xee, 0xf0, 0x13, 0xaf, 0x34, 0x1b, 0x4e, 0x90, 0x5e, 0x58, 0x65,
-0xca, 0x61, 0xa1, 0x53, 0x6b, 0x3b, 0x74, 0x1a, 0x30, 0xf3, 0x71, 0xca, 0x0e, 0xa7, 0x50, 0x8f,
-0x18, 0x88, 0x82, 0x92, 0x03, 0xac, 0x91, 0xcf, 0xce, 0xf6, 0x3a, 0x1c, 0x11, 0x3c, 0x47, 0x54,
-0x5c, 0x63, 0x0e, 0x68, 0xda, 0x61, 0x6b, 0x50, 0x91, 0x34, 0x34, 0x10, 0xba, 0xe6, 0x07, 0xbe,
-0x14, 0x9d, 0x20, 0x8a, 0x0e, 0x88, 0x1e, 0x97, 0xa1, 0xb3, 0x2d, 0xd8, 0xf6, 0xfe, 0xe3, 0x22,
-0xf3, 0x40, 0x28, 0x57, 0xe6, 0x63, 0xa4, 0x65, 0x02, 0x5c, 0x39, 0x47, 0x97, 0x28, 0x0c, 0x03,
-0x05, 0xdb, 0x6b, 0xb6, 0x6c, 0x9b, 0x80, 0x8e, 0x48, 0x91, 0x96, 0xa2, 0x37, 0xbf, 0x2d, 0xe2,
-0x46, 0x06, 0x43, 0x27, 0x07, 0x42, 0xce, 0x54, 0xe8, 0x5d, 0x4c, 0x5c, 0xa7, 0x4f, 0x4d, 0x39,
-0x36, 0x1b, 0x8a, 0xf8, 0xf7, 0xd5, 0x03, 0xb8, 0x32, 0xa3, 0x80, 0x9a, 0xd4, 0x9e, 0x71, 0xaf,
-0x9b, 0xc9, 0x3e, 0xe9, 0xc4, 0x09, 0x79, 0x27, 0x11, 0x3f, 0x33, 0x4e, 0x79, 0x53, 0x25, 0x4e,
-0x6b, 0x3f, 0x15, 0x29, 0x16, 0x0e, 0x78, 0xf1, 0x6f, 0xd6, 0x33, 0xc0, 0x41, 0xb1, 0x9f, 0xab,
-0x63, 0xb0, 0x2b, 0xbf, 0x09, 0xd6, 0x8e, 0xf1, 0x9e, 0x0d, 0x2b, 0x26, 0x7d, 0x38, 0x43, 0x42,
-0xd9, 0x42, 0x0d, 0x3b, 0x97, 0x2c, 0x26, 0x1a, 0xf6, 0x05, 0xd8, 0xf1, 0x39, 0xdf, 0x9d, 0xcf,
-0x93, 0xc4, 0x0b, 0xc0, 0x77, 0xc3, 0x0f, 0xcf, 0x53, 0xe1, 0x3a, 0xf7, 0x06, 0x0d, 0x31, 0x1f,
-0x09, 0x2b, 0xcb, 0x2f, 0xab, 0x2d, 0x49, 0x26, 0xe8, 0x1b, 0x1e, 0x10, 0x2c, 0x04, 0x8e, 0xf8,
-0x36, 0xed, 0xa9, 0xe2, 0x7b, 0xda, 0x17, 0xd6, 0x5b, 0xd7, 0xc3, 0xde, 0x02, 0xeb, 0xc4, 0xf9,
-0xd2, 0x07, 0x66, 0x12, 0x2e, 0x18, 0x44, 0x19, 0xde, 0x16, 0xe2, 0x12, 0x8a, 0x0e, 0xc8, 0x0a,
-0x26, 0x07, 0x2e, 0x03, 0x0a, 0xfe, 0xd2, 0xf7, 0x52, 0xf1, 0x80, 0xec, 0x8a, 0xea, 0x3a, 0xec,
-0x18, 0xf1, 0x16, 0xf7, 0x88, 0xfc, 0xfc, 0xff, 0x20, 0x01, 0x1e, 0x01, 0x42, 0x01, 0x60, 0x02,
-0x12, 0x05, 0x00, 0x09, 0x24, 0x0d, 0x38, 0x10, 0xfa, 0x10, 0x80, 0x0e, 0x86, 0x09, 0xca, 0x02,
-0x00, 0xfc, 0x0e, 0xf6, 0x76, 0xf1, 0x16, 0xee, 0x60, 0xeb, 0x82, 0xe9, 0xf4, 0xe8, 0x7e, 0xea,
-0xbe, 0xee, 0x08, 0xf6, 0xb4, 0xff, 0x0a, 0x0b, 0x9a, 0x16, 0x01, 0x20, 0xc1, 0x25, 0x21, 0x26,
-0x95, 0x20, 0x2c, 0x16, 0x6e, 0x08, 0x6c, 0xf9, 0x46, 0xeb, 0x71, 0xdf, 0xd3, 0xd6, 0x5f, 0xd2,
-0x45, 0xd2, 0xbf, 0xd6, 0xe7, 0xdf, 0x46, 0xed, 0xfc, 0xfd, 0xa2, 0x10, 0x09, 0x23, 0x8d, 0x32,
-0x23, 0x3c, 0x77, 0x3d, 0x85, 0x35, 0x01, 0x25, 0xe2, 0x0e, 0x96, 0xf6, 0xf5, 0xdf, 0xe1, 0xcd,
-0x23, 0xc2, 0x17, 0xbd, 0xf3, 0xbe, 0x2b, 0xc7, 0x29, 0xd5, 0xae, 0xe8, 0x26, 0x00, 0xb8, 0x19,
-0x77, 0x32, 0x93, 0x46, 0xe7, 0x51, 0xa5, 0x51, 0x8b, 0x44, 0xb9, 0x2c, 0x7c, 0x0e, 0xfc, 0xee,
-0xf1, 0xd2, 0xe3, 0xbd, 0x1d, 0xb1, 0x01, 0xad, 0xd9, 0xb0, 0x5f, 0xbc, 0x47, 0xcf, 0xa0, 0xe8,
-0xba, 0x06, 0x55, 0x26, 0x73, 0x43, 0x62, 0x59, 0x84, 0x63, 0xde, 0x5e, 0xf5, 0x4b, 0xcf, 0x2d,
-0xe0, 0x09, 0x2c, 0xe6, 0x51, 0xc7, 0xe5, 0xb0, 0x3e, 0xa4, 0x22, 0xa1, 0x7a, 0xa7, 0x03, 0xb7,
-0x23, 0xcf, 0xa0, 0xee, 0x40, 0x12, 0xd3, 0x35, 0x6d, 0x54, 0xc6, 0x68, 0xcc, 0x6e, 0x02, 0x65,
-0xa9, 0x4c, 0x3b, 0x2a, 0x3c, 0x03, 0x29, 0xdd, 0x1d, 0xbd, 0x28, 0xa6, 0xe6, 0x99, 0xd4, 0x98,
-0x98, 0xa2, 0xe5, 0xb6, 0xd3, 0xd4, 0x5e, 0xf9, 0x51, 0x20, 0x87, 0x44, 0xd2, 0x60, 0xe4, 0x70,
-0x26, 0x72, 0xec, 0x63, 0xc1, 0x48, 0xe9, 0x24, 0x42, 0xfd, 0x27, 0xd7, 0x07, 0xb7, 0xa0, 0xa0,
-0xac, 0x95, 0x08, 0x97, 0xbc, 0xa4, 0xcd, 0xbd, 0xe7, 0xdf, 0x80, 0x06, 0x91, 0x2c, 0x29, 0x4d,
-0xb6, 0x64, 0xde, 0x6f, 0x40, 0x6d, 0x3c, 0x5d, 0x8d, 0x41, 0x09, 0x1e, 0xfc, 0xf6, 0x4d, 0xd1,
-0x25, 0xb2, 0x82, 0x9d, 0x62, 0x95, 0xc8, 0x9a, 0x0f, 0xad, 0xe1, 0xc9, 0x82, 0xed, 0xc0, 0x12,
-0xbb, 0x34, 0x37, 0x50, 0x8a, 0x62, 0xe8, 0x69, 0x2c, 0x65, 0x65, 0x54, 0x41, 0x39, 0xae, 0x16,
-0xb0, 0xf0, 0xaf, 0xcc, 0xe7, 0xaf, 0x90, 0x9e, 0xea, 0x9a, 0xa2, 0xa4, 0x0f, 0xba, 0xcd, 0xd7,
-0x0e, 0xf9, 0x46, 0x19, 0x4d, 0x35, 0xc9, 0x4a, 0x76, 0x58, 0x40, 0x5d, 0xb8, 0x57, 0x15, 0x48,
-0xed, 0x2e, 0x94, 0x0e, 0x8a, 0xeb, 0x41, 0xcb, 0x1f, 0xb3, 0xd4, 0xa6, 0x04, 0xa8, 0x13, 0xb5,
-0x49, 0xcb, 0x18, 0xe6, 0x9a, 0x01, 0xcc, 0x1a, 0xcb, 0x2f, 0xd5, 0x3f, 0xc5, 0x49, 0xcb, 0x4c,
-0xa3, 0x47, 0xad, 0x39, 0x7b, 0x23, 0x6e, 0x07, 0xcc, 0xe9, 0xc5, 0xcf, 0x31, 0xbe, 0x65, 0xb7,
-0xbf, 0xbb, 0xf5, 0xc8, 0x9b, 0xdb, 0x54, 0xf0, 0x34, 0x04, 0xb2, 0x15, 0x31, 0x24, 0x67, 0x2f,
-0xab, 0x36, 0x25, 0x39, 0x59, 0x35, 0x6d, 0x2a, 0xe4, 0x18, 0xfe, 0x02, 0xc0, 0xec, 0x51, 0xda,
-0x0b, 0xcf, 0x61, 0xcc, 0x61, 0xd1, 0xc1, 0xdb, 0xca, 0xe8, 0x44, 0xf6, 0xaa, 0x02, 0x94, 0x0d,
-0x8c, 0x16, 0xa5, 0x1d, 0x87, 0x22, 0x71, 0x24, 0x9d, 0x22, 0x3a, 0x1c, 0xb4, 0x11, 0x8e, 0x04,
-0x6a, 0xf7, 0x90, 0xec, 0x2c, 0xe6, 0x70, 0xe4, 0xac, 0xe6, 0x48, 0xeb, 0x04, 0xf1, 0xd4, 0xf6,
-0x1c, 0xfc, 0x9a, 0x00, 0x6e, 0x04, 0xfc, 0x07, 0x70, 0x0b, 0xd6, 0x0e, 0x3a, 0x11, 0xee, 0x11,
-0x46, 0x10, 0x64, 0x0c, 0x38, 0x07, 0x04, 0x02, 0xc4, 0xfd, 0x12, 0xfb, 0xb4, 0xf9, 0x10, 0xf9,
-0x66, 0xf8, 0x38, 0xf7, 0x2c, 0xf5, 0xd8, 0xf2, 0xe6, 0xf0, 0xc2, 0xf0, 0x9c, 0xf3, 0xca, 0xf9,
-0xa2, 0x02, 0x24, 0x0c, 0x7e, 0x14, 0xb4, 0x19, 0x66, 0x1b, 0xc8, 0x19, 0xf8, 0x15, 0x98, 0x10,
-0x56, 0x0a, 0x58, 0x03, 0x36, 0xfb, 0x18, 0xf2, 0x4c, 0xe8, 0x37, 0xdf, 0xd9, 0xd8, 0x81, 0xd7,
-0xdf, 0xdc, 0x0e, 0xe9, 0x5c, 0xfa, 0x4e, 0x0d, 0x75, 0x1e, 0xa9, 0x2a, 0x9d, 0x30, 0x6f, 0x30,
-0x55, 0x2b, 0xb3, 0x22, 0x70, 0x17, 0xfa, 0x09, 0x6a, 0xfa, 0x72, 0xe9, 0xb5, 0xd8, 0xdd, 0xca,
-0xc9, 0xc2, 0x2d, 0xc3, 0x4b, 0xcd, 0x59, 0xe0, 0x4a, 0xf9, 0x9a, 0x13, 0x71, 0x2a, 0xa3, 0x3a,
-0xb5, 0x42, 0xfd, 0x42, 0xb7, 0x3c, 0x0d, 0x31, 0xbb, 0x20, 0x5c, 0x0c, 0xe0, 0xf4, 0x47, 0xdc,
-0xe5, 0xc5, 0x3f, 0xb5, 0xf3, 0xad, 0x27, 0xb2, 0x43, 0xc2, 0x23, 0xdc, 0xce, 0xfb, 0xc0, 0x1b,
-0x27, 0x37, 0x5f, 0x4a, 0x01, 0x54, 0x0f, 0x54, 0x3f, 0x4b, 0xcd, 0x3a, 0xcd, 0x23, 0xbc, 0x07,
-0x00, 0xe9, 0x65, 0xcb, 0xd9, 0xb2, 0x76, 0xa3, 0xbe, 0x9f, 0xd0, 0xa8, 0x0b, 0xbe, 0xb5, 0xdc,
-0x58, 0x00, 0xb1, 0x23, 0xdf, 0x41, 0x66, 0x57, 0x3e, 0x62, 0x84, 0x61, 0x86, 0x55, 0x7f, 0x3f,
-0x77, 0x21, 0xa4, 0xfe, 0xe3, 0xda, 0xf7, 0xba, 0x66, 0xa3, 0x3a, 0x97, 0x10, 0x98, 0xc0, 0xa5,
-0xeb, 0xbe, 0xc7, 0xe0, 0x14, 0x07, 0xa9, 0x2c, 0xcb, 0x4c, 0x48, 0x63, 0x46, 0x6d, 0x7e, 0x69,
-0x3c, 0x58, 0xd3, 0x3b, 0x02, 0x18, 0x3e, 0xf1, 0xa3, 0xcc, 0xc5, 0xae, 0x0e, 0x9b, 0x42, 0x93,
-0xbc, 0x97, 0x1a, 0xa8, 0x3d, 0xc3, 0x90, 0xe6, 0x26, 0x0e, 0x1b, 0x35, 0xd0, 0x55, 0xc4, 0x6b,
-0x30, 0x73, 0xd0, 0x6a, 0x2f, 0x54, 0x21, 0x33, 0x8e, 0x0c, 0xd8, 0xe5, 0xa5, 0xc3, 0x8a, 0xa9,
-0xf8, 0x99, 0x72, 0x95, 0x3a, 0x9c, 0x05, 0xae, 0x01, 0xca, 0x06, 0xee, 0x0c, 0x16, 0x7b, 0x3c,
-0x98, 0x5b, 0x24, 0x6e, 0xc0, 0x70, 0x74, 0x63, 0x09, 0x49, 0x8b, 0x26, 0x76, 0x01, 0x65, 0xde,
-0x03, 0xc1, 0xb3, 0xab, 0xac, 0x9f, 0x90, 0x9d, 0x9a, 0xa5, 0xfb, 0xb7, 0x1d, 0xd4, 0x9e, 0xf7,
-0x1b, 0x1e, 0xf1, 0x41, 0xd4, 0x5c, 0x16, 0x6a, 0x90, 0x67, 0x7c, 0x56, 0x13, 0x3b, 0x54, 0x1a,
-0x16, 0xf9, 0x09, 0xdb, 0xb7, 0xc2, 0xb7, 0xb1, 0x08, 0xa9, 0x10, 0xa9, 0x55, 0xb2, 0x27, 0xc5,
-0x4d, 0xe0, 0x5a, 0x01, 0x85, 0x23, 0x87, 0x41, 0x24, 0x56, 0xe2, 0x5d, 0xf8, 0x57, 0xb1, 0x46,
-0xdb, 0x2d, 0xd4, 0x11, 0x44, 0xf6, 0xb5, 0xdd, 0x6b, 0xca, 0x83, 0xbd, 0xcd, 0xb7, 0xd5, 0xb9,
-0xd1, 0xc3, 0x43, 0xd5, 0xee, 0xec, 0xd4, 0x07, 0x7b, 0x22, 0xb9, 0x38, 0xdb, 0x46, 0xd1, 0x4a,
-0x9d, 0x44, 0xe9, 0x35, 0xe1, 0x21, 0x96, 0x0b, 0xcc, 0xf5, 0x25, 0xe3, 0xf7, 0xd4, 0x61, 0xcc,
-0xd7, 0xc9, 0x6d, 0xcd, 0x85, 0xd6, 0x78, 0xe4, 0xa4, 0xf5, 0x5a, 0x08, 0x46, 0x1a, 0xf5, 0x28,
-0x53, 0x32, 0xdd, 0x34, 0x7b, 0x30, 0x27, 0x26, 0xde, 0x17, 0x12, 0x08, 0x28, 0xf9, 0xdc, 0xec,
-0x76, 0xe4, 0x5f, 0xe0, 0x41, 0xe0, 0x87, 0xe3, 0x00, 0xe9, 0xf0, 0xef, 0xf8, 0xf7, 0xd2, 0x00,
-0x30, 0x0a, 0x20, 0x13, 0x22, 0x1a, 0xa7, 0x1d, 0xf5, 0x1c, 0x0a, 0x18, 0x4c, 0x10, 0xb4, 0x07,
-0x38, 0x00, 0xf0, 0xfa, 0x32, 0xf8, 0x9e, 0xf7, 0x10, 0xf8, 0x2a, 0xf8, 0x2e, 0xf7, 0x4c, 0xf5,
-0x9c, 0xf3, 0xb0, 0xf3, 0x66, 0xf6, 0x70, 0xfb, 0xa0, 0x01, 0x46, 0x07, 0xf8, 0x0a, 0x6c, 0x0c,
-0x34, 0x0c, 0xca, 0x0b, 0x14, 0x0c, 0x52, 0x0d, 0xc6, 0x0e, 0x4a, 0x0f, 0x3a, 0x0d, 0xc4, 0x07,
-0x00, 0xff, 0x52, 0xf4, 0x4a, 0xea, 0x4b, 0xe3, 0x15, 0xe1, 0xc0, 0xe3, 0x32, 0xea, 0x96, 0xf2,
-0x82, 0xfb, 0x0c, 0x04, 0x4e, 0x0c, 0x9c, 0x14, 0x85, 0x1c, 0x21, 0x23, 0xbf, 0x26, 0xbf, 0x25,
-0x31, 0x1f, 0xf8, 0x12, 0x50, 0x02, 0xd2, 0xef, 0xd1, 0xde, 0x45, 0xd2, 0x57, 0xcc, 0x59, 0xcd,
-0xad, 0xd4, 0xa1, 0xe0, 0x9a, 0xef, 0x50, 0x00, 0x8e, 0x11, 0xf9, 0x21, 0xdf, 0x2f, 0x3b, 0x39,
-0x2f, 0x3c, 0xbd, 0x37, 0xcb, 0x2b, 0x50, 0x19, 0x28, 0x02, 0x60, 0xe9, 0x8b, 0xd2, 0x57, 0xc1,
-0x3b, 0xb8, 0x99, 0xb8, 0x0f, 0xc2, 0x43, 0xd3, 0xd6, 0xe9, 0x4c, 0x03, 0x85, 0x1c, 0xd3, 0x32,
-0x85, 0x43, 0xa7, 0x4c, 0x1f, 0x4d, 0x69, 0x44, 0x63, 0x33, 0x72, 0x1b, 0xf0, 0xfe, 0xd9, 0xe0,
-0x59, 0xc5, 0x47, 0xb0, 0x78, 0xa5, 0xbc, 0xa6, 0x4f, 0xb4, 0x59, 0xcc, 0x32, 0xeb, 0x78, 0x0c,
-0x85, 0x2b, 0xa7, 0x44, 0x34, 0x55, 0xe0, 0x5b, 0x6c, 0x58, 0x5d, 0x4b, 0xbf, 0x35, 0x54, 0x19,
-0x46, 0xf8, 0xf1, 0xd5, 0xc3, 0xb6, 0xca, 0x9f, 0x68, 0x95, 0x3c, 0x9a, 0xcd, 0xad, 0x2f, 0xcd,
-0xd6, 0xf2, 0xcc, 0x18, 0xc5, 0x39, 0x63, 0x52, 0xec, 0x60, 0xd0, 0x64, 0x3e, 0x5e, 0xcf, 0x4d,
-0xc7, 0x34, 0xa0, 0x14, 0xc6, 0xef, 0x1f, 0xca, 0x36, 0xa9, 0xca, 0x92, 0x90, 0x8b, 0x8e, 0x95,
-0x1d, 0xaf, 0xc1, 0xd3, 0xbc, 0xfc, 0x9f, 0x23, 0xb9, 0x43, 0x48, 0x5a, 0x6a, 0x66, 0xb8, 0x67,
-0x86, 0x5e, 0x59, 0x4b, 0x71, 0x2f, 0x68, 0x0c, 0x52, 0xe5, 0xc3, 0xbe, 0xe6, 0x9e, 0xd4, 0x8b,
-0x46, 0x89, 0x42, 0x98, 0xbd, 0xb5, 0x71, 0xdc, 0x6c, 0x05, 0xc7, 0x2a, 0xb5, 0x48, 0x30, 0x5d,
-0x30, 0x67, 0x2c, 0x66, 0x9a, 0x5a, 0x05, 0x45, 0xc5, 0x26, 0x08, 0x02, 0xa1, 0xda, 0xeb, 0xb5,
-0x04, 0x9a, 0x0e, 0x8c, 0x86, 0x8e, 0x08, 0xa1, 0xf9, 0xbf, 0xda, 0xe5, 0x96, 0x0c, 0x15, 0x2f,
-0x0d, 0x4a, 0x94, 0x5b, 0x96, 0x62, 0x8e, 0x5e, 0xfd, 0x4f, 0x13, 0x38, 0xbc, 0x18, 0x0c, 0xf5,
-0x3d, 0xd1, 0x87, 0xb2, 0x80, 0x9d, 0x74, 0x95, 0x8e, 0x9b, 0xb5, 0xae, 0xc7, 0xcb, 0xf4, 0xed,
-0x70, 0x10, 0xef, 0x2e, 0x73, 0x46, 0xbd, 0x54, 0xd6, 0x58, 0x5b, 0x52, 0x57, 0x42, 0x6b, 0x2a,
-0x1e, 0x0d, 0xe4, 0xed, 0x75, 0xd0, 0xd9, 0xb8, 0xb4, 0xa9, 0x52, 0xa5, 0x05, 0xac, 0x41, 0xbd,
-0x7d, 0xd6, 0x2e, 0xf4, 0xe0, 0x11, 0xe3, 0x2b, 0x09, 0x3f, 0x1f, 0x49, 0x73, 0x49, 0x8f, 0x40,
-0x43, 0x30, 0xa0, 0x1a, 0xae, 0x02, 0x04, 0xeb, 0x31, 0xd6, 0xf7, 0xc5, 0xed, 0xbb, 0x31, 0xb9,
-0xdd, 0xbe, 0xa3, 0xcc, 0x17, 0xe1, 0xfe, 0xf8, 0xe2, 0x10, 0x11, 0x25, 0xb7, 0x32, 0x2f, 0x38,
-0x95, 0x35, 0x75, 0x2c, 0xcd, 0x1e, 0x04, 0x0f, 0x0a, 0xff, 0x72, 0xf0, 0x95, 0xe3, 0x29, 0xd9,
-0xb7, 0xd1, 0xb5, 0xce, 0x65, 0xd1, 0x6d, 0xda, 0xcc, 0xe8, 0x0a, 0xfa, 0x32, 0x0b, 0xe2, 0x18,
-0x15, 0x21, 0x11, 0x23, 0xf1, 0x1f, 0x78, 0x19, 0x86, 0x11, 0x90, 0x09, 0x36, 0x02, 0xa4, 0xfb,
-0x24, 0xf5, 0x78, 0xee, 0x1c, 0xe8, 0xbb, 0xe3, 0xd9, 0xe2, 0x5a, 0xe6, 0xd8, 0xed, 0x6e, 0xf7,
-0xda, 0x00, 0xca, 0x07, 0x56, 0x0b, 0xda, 0x0b, 0xba, 0x0a, 0x4c, 0x09, 0x62, 0x08, 0x80, 0x08,
-0x38, 0x09, 0x9e, 0x09, 0x6e, 0x08, 0xd0, 0x04, 0x36, 0xff, 0xf4, 0xf8, 0xc2, 0xf3, 0x82, 0xf0,
-0x90, 0xef, 0x2c, 0xf0, 0x4e, 0xf1, 0x56, 0xf2, 0x36, 0xf3, 0xa2, 0xf4, 0x72, 0xf7, 0x42, 0xfc,
-0xca, 0x02, 0xbe, 0x0a, 0xfe, 0x12, 0xd2, 0x19, 0x61, 0x1d, 0x81, 0x1c, 0x14, 0x17, 0xc2, 0x0d,
-0x40, 0x02, 0x24, 0xf6, 0x1c, 0xeb, 0x61, 0xe2, 0x65, 0xdc, 0xbf, 0xd9, 0x97, 0xda, 0x37, 0xdf,
-0x62, 0xe7, 0xfa, 0xf2, 0x22, 0x01, 0xae, 0x10, 0xcb, 0x1f, 0x2f, 0x2c, 0x6b, 0x33, 0xa7, 0x33,
-0x13, 0x2c, 0x23, 0x1d, 0x62, 0x09, 0xd0, 0xf3, 0xeb, 0xdf, 0x37, 0xd0, 0xa5, 0xc6, 0x67, 0xc3,
-0xa5, 0xc6, 0x99, 0xcf, 0x6f, 0xdd, 0x46, 0xef, 0x16, 0x04, 0x1a, 0x1a, 0xcb, 0x2e, 0x79, 0x3f,
-0xc1, 0x48, 0x0b, 0x48, 0x0d, 0x3c, 0x13, 0x26, 0xa6, 0x09, 0xe2, 0xeb, 0x53, 0xd1, 0xa9, 0xbd,
-0xb7, 0xb2, 0xef, 0xb0, 0x33, 0xb7, 0x91, 0xc4, 0xa1, 0xd7, 0x64, 0xef, 0x4c, 0x0a, 0xf1, 0x25,
-0x49, 0x3f, 0x53, 0x52, 0x68, 0x5b, 0x0e, 0x57, 0x2d, 0x45, 0xf5, 0x27, 0xb0, 0x04, 0x47, 0xe1,
-0x4f, 0xc3, 0x39, 0xae, 0xb0, 0xa3, 0xb6, 0xa3, 0xdb, 0xac, 0x0f, 0xbe, 0x07, 0xd6, 0x5a, 0xf3,
-0xb6, 0x13, 0xff, 0x33, 0xff, 0x4f, 0x10, 0x63, 0x1e, 0x69, 0xba, 0x5f, 0xa9, 0x47, 0xfb, 0x24,
-0x52, 0xfd, 0x39, 0xd7, 0xcf, 0xb7, 0xcc, 0xa2, 0x3e, 0x99, 0x00, 0x9b, 0x2a, 0xa7, 0x5d, 0xbc,
-0x85, 0xd9, 0xf4, 0xfb, 0x81, 0x20, 0xe7, 0x42, 0x56, 0x5e, 0x2e, 0x6e, 0x16, 0x6f, 0x50, 0x60,
-0xe3, 0x43, 0x4f, 0x1e, 0x5e, 0xf5, 0xd9, 0xce, 0xe7, 0xaf, 0xdc, 0x9b, 0xd6, 0x93, 0xd8, 0x97,
-0x52, 0xa7, 0x03, 0xc1, 0x9b, 0xe2, 0x86, 0x08, 0x3f, 0x2e, 0x11, 0x4f, 0xc8, 0x66, 0x6c, 0x71,
-0x56, 0x6d, 0x0e, 0x5b, 0x21, 0x3d, 0x88, 0x17, 0x40, 0xef, 0x93, 0xc9, 0x85, 0xab, 0xc4, 0x98,
-0x9e, 0x92, 0xac, 0x99, 0x25, 0xad, 0x0d, 0xcb, 0x74, 0xef, 0x9c, 0x15, 0xbf, 0x38, 0xbf, 0x54,
-0xac, 0x66, 0x2c, 0x6c, 0xce, 0x64, 0x8f, 0x51, 0x99, 0x34, 0xd6, 0x10, 0x94, 0xea, 0xf5, 0xc6,
-0xfc, 0xaa, 0xac, 0x9a, 0xb6, 0x97, 0x7e, 0xa2, 0x65, 0xb9, 0x23, 0xd9, 0xc6, 0xfc, 0x49, 0x1f,
-0xdf, 0x3c, 0xb5, 0x52, 0x2c, 0x5f, 0x58, 0x61, 0x0c, 0x59, 0xe3, 0x46, 0x09, 0x2c, 0xe6, 0x0a,
-0x36, 0xe7, 0x61, 0xc6, 0xab, 0xad, 0xd8, 0xa0, 0xf2, 0xa1, 0x0f, 0xb0, 0x97, 0xc8, 0xf8, 0xe6,
-0x70, 0x06, 0xbb, 0x22, 0x85, 0x39, 0x55, 0x49, 0x85, 0x51, 0xd7, 0x51, 0xff, 0x49, 0xe1, 0x39,
-0xfd, 0x21, 0xac, 0x04, 0x5c, 0xe5, 0x8d, 0xc9, 0xf9, 0xb5, 0x33, 0xae, 0xf3, 0xb2, 0xa9, 0xc2,
-0x59, 0xd9, 0xb8, 0xf2, 0x00, 0x0b, 0x8f, 0x1f, 0x53, 0x2f, 0xf1, 0x39, 0x5f, 0x3f, 0x3b, 0x3f,
-0x21, 0x39, 0x03, 0x2c, 0x72, 0x18, 0x70, 0x00, 0xac, 0xe7, 0x7b, 0xd2, 0x1b, 0xc5, 0xaf, 0xc1,
-0xe9, 0xc7, 0xad, 0xd5, 0x3a, 0xe7, 0x3a, 0xf9, 0x8e, 0x09, 0xec, 0x16, 0xb9, 0x20, 0x45, 0x27,
-0xb1, 0x2a, 0xc1, 0x2a, 0xd3, 0x26, 0x37, 0x1e, 0xf4, 0x10, 0xe8, 0x00, 0xac, 0xf0, 0x21, 0xe3,
-0x0f, 0xdb, 0x9d, 0xd9, 0x0f, 0xde, 0x6c, 0xe6, 0x74, 0xf0, 0x1a, 0xfa, 0x72, 0x02, 0x22, 0x09,
-0x16, 0x0e, 0xba, 0x11, 0x80, 0x14, 0x3c, 0x16, 0x3c, 0x16, 0xfe, 0x13, 0x06, 0x0f, 0xf8, 0x07,
-0xf2, 0xff, 0x90, 0xf8, 0x50, 0xf3, 0x02, 0xf1, 0x68, 0xf1, 0x50, 0xf3, 0xfc, 0xf5, 0x2e, 0xf8,
-0x80, 0xf9, 0x04, 0xfa, 0x36, 0xfa, 0xd8, 0xfa, 0x02, 0xfd, 0x28, 0x01, 0xae, 0x06, 0x94, 0x0c,
-0x62, 0x11, 0xa4, 0x13, 0x06, 0x13, 0x28, 0x10, 0xb8, 0x0b, 0x06, 0x07, 0x6a, 0x02, 0xd0, 0xfd,
-0xda, 0xf8, 0x8c, 0xf3, 0xa6, 0xed, 0xf2, 0xe7, 0xe2, 0xe3, 0x0b, 0xe3, 0x12, 0xe7, 0x80, 0xf0,
-0x54, 0xfe, 0xd0, 0x0d, 0x22, 0x1c, 0xfb, 0x25, 0x05, 0x2a, 0x75, 0x28, 0x95, 0x22, 0xcc, 0x19,
-0x4c, 0x0f, 0xb2, 0x03, 0x3a, 0xf7, 0x30, 0xea, 0x21, 0xdd, 0xf7, 0xd1, 0x6b, 0xcb, 0xe3, 0xcb,
-0x85, 0xd4, 0x68, 0xe5, 0xfc, 0xfb, 0x76, 0x14, 0xf9, 0x29, 0x05, 0x39, 0x6d, 0x3f, 0xad, 0x3d,
-0x6b, 0x35, 0x37, 0x28, 0xc8, 0x17, 0xfe, 0x04, 0xe0, 0xf0, 0x91, 0xdc, 0x3f, 0xca, 0x79, 0xbc,
-0x61, 0xb6, 0x47, 0xba, 0xed, 0xc8, 0xdf, 0xe0, 0xae, 0xfe, 0x53, 0x1d, 0xa1, 0x37, 0xcb, 0x49,
-0xbf, 0x51, 0xa1, 0x4f, 0x01, 0x45, 0x89, 0x33, 0xcf, 0x1c, 0x88, 0x02, 0xba, 0xe6, 0x1b, 0xcc,
-0x2b, 0xb6, 0x62, 0xa8, 0x7c, 0xa5, 0xff, 0xae, 0x63, 0xc4, 0xd9, 0xe2, 0xea, 0x05, 0x6b, 0x28,
-0x47, 0x45, 0xb2, 0x58, 0xc4, 0x60, 0xfc, 0x5c, 0xc7, 0x4e, 0x25, 0x38, 0x0c, 0x1b, 0x3e, 0xfa,
-0xfd, 0xd8, 0x77, 0xbb, 0xa4, 0xa5, 0xbe, 0x9a, 0x7e, 0x9c, 0xfc, 0xaa, 0xf1, 0xc4, 0xd2, 0xe6,
-0x5c, 0x0c, 0xa3, 0x30, 0xff, 0x4e, 0x76, 0x63, 0x84, 0x6b, 0x04, 0x66, 0xc7, 0x53, 0x7d, 0x37,
-0x4e, 0x14, 0x30, 0xee, 0xf7, 0xc9, 0x93, 0xac, 0xc6, 0x99, 0x76, 0x93, 0x12, 0x9a, 0xa1, 0xac,
-0x49, 0xc9, 0x12, 0xed, 0xb2, 0x13, 0xf7, 0x38, 0x08, 0x58, 0x5c, 0x6c, 0x90, 0x72, 0x4a, 0x69,
-0x0b, 0x52, 0x4d, 0x30, 0xf0, 0x08, 0xf5, 0xe0, 0xdd, 0xbd, 0x0c, 0xa4, 0x00, 0x96, 0x2e, 0x94,
-0x10, 0x9e, 0x79, 0xb2, 0xc7, 0xcf, 0x96, 0xf3, 0x36, 0x1a, 0x27, 0x3f, 0x5c, 0x5d, 0xb8, 0x6f,
-0x78, 0x72, 0xd8, 0x64, 0x45, 0x49, 0xa5, 0x24, 0x86, 0xfc, 0xb5, 0xd6, 0xab, 0xb7, 0xec, 0xa2,
-0x7c, 0x99, 0x00, 0x9b, 0xa2, 0xa6, 0xb3, 0xbb, 0xf9, 0xd8, 0x14, 0xfc, 0x97, 0x21, 0x81, 0x44,
-0x82, 0x5f, 0x66, 0x6d, 0x42, 0x6b, 0x76, 0x59, 0xd7, 0x3b, 0xb2, 0x17, 0xc8, 0xf2, 0x07, 0xd2,
-0xd9, 0xb8, 0xfa, 0xa8, 0xfe, 0xa2, 0x60, 0xa6, 0x99, 0xb2, 0x59, 0xc7, 0x51, 0xe3, 0x3a, 0x04,
-0x45, 0x26, 0xe3, 0x44, 0x7a, 0x5a, 0x48, 0x63, 0x5e, 0x5d, 0x6b, 0x4a, 0x61, 0x2e, 0x46, 0x0e,
-0xf6, 0xee, 0x11, 0xd4, 0x39, 0xc0, 0x2f, 0xb4, 0x93, 0xb0, 0x09, 0xb5, 0x4d, 0xc1, 0xb7, 0xd4,
-0x18, 0xee, 0xac, 0x0a, 0x09, 0x27, 0x1b, 0x3f, 0x93, 0x4e, 0xcb, 0x52, 0x6f, 0x4b, 0xf9, 0x39,
-0x35, 0x22, 0x1a, 0x08, 0x50, 0xef, 0xa1, 0xda, 0xc9, 0xcb, 0xb1, 0xc3, 0x4f, 0xc2, 0xb7, 0xc7,
-0x07, 0xd3, 0x67, 0xe3, 0x24, 0xf7, 0x66, 0x0c, 0x87, 0x20, 0xd1, 0x30, 0xf5, 0x3a, 0x0d, 0x3d,
-0x35, 0x37, 0x5f, 0x2a, 0xee, 0x18, 0xd2, 0x05, 0xda, 0xf3, 0x20, 0xe5, 0x0d, 0xdb, 0x71, 0xd6,
-0x0b, 0xd7, 0x41, 0xdc, 0xd0, 0xe4, 0x70, 0xef, 0x4a, 0xfb, 0x56, 0x07, 0xc0, 0x12, 0x97, 0x1c,
-0x7d, 0x23, 0x09, 0x26, 0xab, 0x23, 0xc7, 0x1c, 0x7a, 0x12, 0xec, 0x06, 0x10, 0xfc, 0xa4, 0xf3,
-0x7e, 0xee, 0xde, 0xec, 0xfe, 0xed, 0x8c, 0xf0, 0x64, 0xf3, 0xd6, 0xf5, 0x0e, 0xf8, 0xfc, 0xfa,
-0x54, 0xff, 0xea, 0x04, 0xfa, 0x0a, 0xf4, 0x0f, 0x4c, 0x12, 0xc8, 0x11, 0xf6, 0x0e, 0x02, 0x0b,
-0x7a, 0x07, 0x4a, 0x05, 0x9a, 0x04, 0xbc, 0x04, 0x50, 0x04, 0xf6, 0x01, 0x2e, 0xfd, 0x8a, 0xf6,
-0xc6, 0xef, 0xf6, 0xea, 0xe8, 0xe9, 0x22, 0xed, 0xa8, 0xf3, 0xb0, 0xfb, 0x60, 0x03, 0xc2, 0x09,
-0xcc, 0x0e, 0x10, 0x13, 0xe8, 0x16, 0x46, 0x1a, 0x3c, 0x1c, 0x90, 0x1b, 0xf2, 0x16, 0xaa, 0x0d,
-0x96, 0x00, 0x74, 0xf1, 0x51, 0xe3, 0xdd, 0xd8, 0x69, 0xd4, 0x9d, 0xd6, 0x8b, 0xde, 0x62, 0xea,
-0x18, 0xf8, 0x14, 0x06, 0x8a, 0x13, 0xd9, 0x1f, 0x17, 0x2a, 0xcb, 0x30, 0x93, 0x32, 0x67, 0x2e,
-0xcd, 0x23, 0x62, 0x13, 0xc4, 0xfe, 0xf0, 0xe8, 0x19, 0xd5, 0xa5, 0xc6, 0xc9, 0xbf, 0xb5, 0xc1,
-0xb1, 0xcb, 0x37, 0xdc, 0xd6, 0xf0, 0x6e, 0x07, 0xa1, 0x1d, 0xff, 0x30, 0x87, 0x3f, 0xe5, 0x46,
-0x57, 0x46, 0x45, 0x3d, 0x85, 0x2c, 0xba, 0x15, 0x24, 0xfb, 0xb1, 0xdf, 0x25, 0xc7, 0x29, 0xb5,
-0x7b, 0xac, 0xcb, 0xae, 0x2d, 0xbc, 0xe9, 0xd2, 0xde, 0xef, 0x00, 0x0f, 0x1f, 0x2c, 0xbb, 0x43,
-0xe7, 0x52, 0x1c, 0x58, 0x21, 0x53, 0xf5, 0x44, 0x0b, 0x2f, 0x7e, 0x13, 0x72, 0xf4, 0x33, 0xd5,
-0x69, 0xb9, 0x56, 0xa5, 0x74, 0x9c, 0x16, 0xa1, 0x9f, 0xb3, 0x73, 0xd1, 0x0e, 0xf6, 0x6e, 0x1b,
-0x23, 0x3c, 0x49, 0x54, 0x86, 0x61, 0x3c, 0x63, 0xea, 0x59, 0x79, 0x47, 0x9f, 0x2d, 0x82, 0x0e,
-0x26, 0xec, 0xcf, 0xc9, 0xf9, 0xab, 0x58, 0x97, 0x62, 0x90, 0x84, 0x99, 0x73, 0xb2, 0xff, 0xd6,
-0xd0, 0x00, 0xb7, 0x28, 0x31, 0x49, 0x14, 0x5f, 0x1a, 0x69, 0x42, 0x67, 0xf0, 0x5a, 0xcb, 0x45,
-0x7f, 0x29, 0xba, 0x07, 0x01, 0xe3, 0x1d, 0xbf, 0x3a, 0xa1, 0xc2, 0x8e, 0xe4, 0x8b, 0x84, 0x9a,
-0x97, 0xb8, 0xc5, 0xe0, 0x88, 0x0b, 0x57, 0x32, 0x5d, 0x50, 0x62, 0x63, 0x74, 0x6a, 0x26, 0x66,
-0x9a, 0x57, 0x43, 0x40, 0xe7, 0x21, 0x32, 0xfe, 0x85, 0xd8, 0x4d, 0xb5, 0x38, 0x9a, 0x1e, 0x8c,
-0x96, 0x8e, 0xca, 0xa1, 0x95, 0xc2, 0xe8, 0xea, 0xd4, 0x13, 0x87, 0x37, 0x37, 0x52, 0x20, 0x62,
-0xa6, 0x66, 0x38, 0x60, 0xcd, 0x4f, 0xe1, 0x36, 0x1a, 0x17, 0x44, 0xf3, 0x3d, 0xcf, 0xf7, 0xaf,
-0x76, 0x9a, 0x88, 0x92, 0xbe, 0x99, 0x35, 0xaf, 0x5f, 0xcf, 0xa8, 0xf4, 0x4a, 0x19, 0x59, 0x38,
-0xd9, 0x4e, 0x3c, 0x5b, 0x2a, 0x5d, 0xab, 0x54, 0xf9, 0x42, 0x93, 0x29, 0xe2, 0x0a, 0x4c, 0xea,
-0xa7, 0xcb, 0x3b, 0xb3, 0x26, 0xa4, 0xca, 0xa0, 0x62, 0xa9, 0x2d, 0xbd, 0x13, 0xd9, 0x20, 0xf9,
-0x9e, 0x18, 0x89, 0x33, 0xdd, 0x46, 0xa1, 0x50, 0x13, 0x50, 0xbf, 0x45, 0x23, 0x33, 0xae, 0x1a,
-0x94, 0xff, 0xfc, 0xe4, 0x1b, 0xce, 0x31, 0xbd, 0x05, 0xb4, 0x27, 0xb3, 0x43, 0xbb, 0x7d, 0xcb,
-0x5b, 0xe2, 0xa8, 0xfc, 0xc0, 0x16, 0xa5, 0x2c, 0x69, 0x3b, 0x6f, 0x41, 0x51, 0x3e, 0x3d, 0x33,
-0x35, 0x22, 0x44, 0x0e, 0x10, 0xfa, 0x0c, 0xe8, 0x63, 0xd9, 0xf3, 0xce, 0x07, 0xc9, 0x37, 0xc8,
-0x2d, 0xcd, 0x31, 0xd8, 0xa2, 0xe8, 0x4c, 0xfc, 0xda, 0x0f, 0xcf, 0x1f, 0xd1, 0x29, 0xb1, 0x2c,
-0xd1, 0x28, 0xb1, 0x1f, 0xac, 0x13, 0x18, 0x07, 0xe2, 0xfb, 0x8e, 0xf2, 0x32, 0xeb, 0x48, 0xe5,
-0xc9, 0xe0, 0x45, 0xde, 0xe5, 0xde, 0xd2, 0xe3, 0x26, 0xed, 0x4c, 0xf9, 0x7e, 0x05, 0x2a, 0x0f,
-0x9a, 0x14, 0x94, 0x15, 0xfc, 0x12, 0x5c, 0x0e, 0x6e, 0x09, 0x94, 0x05, 0x1e, 0x03, 0x68, 0x01,
-0x66, 0xff, 0x26, 0xfc, 0x7e, 0xf7, 0x5e, 0xf2, 0x4e, 0xee, 0xe8, 0xec, 0x9a, 0xee, 0x94, 0xf2,
-0x0a, 0xf7, 0xcc, 0xfa, 0x18, 0xfd, 0x6a, 0xfe, 0x8c, 0xff, 0x5c, 0x01, 0xa4, 0x04, 0x48, 0x09,
-0x7c, 0x0e, 0xc2, 0x12, 0xb4, 0x14, 0x2e, 0x13, 0xdc, 0x0d, 0x9e, 0x05, 0xf6, 0xfb, 0xba, 0xf2,
-0x2c, 0xeb, 0xc6, 0xe5, 0xb5, 0xe2, 0x11, 0xe2, 0xf2, 0xe3, 0x76, 0xe8, 0x9c, 0xef, 0x1a, 0xf9,
-0x6a, 0x04, 0x80, 0x10, 0xe2, 0x1b, 0xf1, 0x24, 0xe9, 0x29, 0x45, 0x29, 0x3d, 0x22, 0x78, 0x15,
-0x84, 0x04, 0x20, 0xf2, 0x1b, 0xe1, 0xa7, 0xd3, 0xd7, 0xcb, 0x1b, 0xca, 0x6b, 0xce, 0xd9, 0xd7,
-0x70, 0xe5, 0xfc, 0xf5, 0x28, 0x08, 0x74, 0x1a, 0x11, 0x2b, 0x1f, 0x38, 0x11, 0x3f, 0xdd, 0x3d,
-0x2f, 0x33, 0xd5, 0x1f, 0x54, 0x06, 0xdc, 0xea, 0xd7, 0xd1, 0x69, 0xbf, 0xe9, 0xb5, 0xc9, 0xb5,
-0xf5, 0xbd, 0xb9, 0xcc, 0x49, 0xe0, 0xdc, 0xf6, 0xc8, 0x0e, 0x2d, 0x26, 0x15, 0x3b, 0xbd, 0x4a,
-0x33, 0x52, 0x49, 0x4e, 0x55, 0x3e, 0x6d, 0x23, 0xe2, 0x01, 0x4d, 0xdf, 0xb9, 0xc1, 0x8d, 0xad,
-0xee, 0xa4, 0x62, 0xa7, 0x0f, 0xb3, 0x15, 0xc6, 0x23, 0xde, 0xb4, 0xf9, 0x94, 0x16, 0xb5, 0x32,
-0x0f, 0x4b, 0xf8, 0x5b, 0x74, 0x61, 0xf0, 0x58, 0x59, 0x42, 0x8f, 0x20, 0x34, 0xf9, 0xd5, 0xd2,
-0xbd, 0xb3, 0x08, 0xa0, 0x06, 0x99, 0xce, 0x9d, 0x9f, 0xac, 0x53, 0xc3, 0x03, 0xe0, 0x6e, 0x00,
-0xf9, 0x21, 0x6f, 0x41, 0xe0, 0x5a, 0xec, 0x69, 0xee, 0x6a, 0x90, 0x5c, 0x51, 0x40, 0x56, 0x1a,
-0x48, 0xf0, 0x0b, 0xc9, 0x26, 0xaa, 0x88, 0x97, 0x00, 0x92, 0xc0, 0x98, 0x52, 0xaa, 0xd9, 0xc4,
-0x10, 0xe6, 0xa4, 0x0a, 0x0d, 0x2f, 0xeb, 0x4e, 0x28, 0x66, 0x9c, 0x70, 0x18, 0x6c, 0xca, 0x58,
-0x65, 0x39, 0x42, 0x12, 0xc6, 0xe8, 0xd5, 0xc2, 0x88, 0xa5, 0x7c, 0x94, 0x98, 0x90, 0x9c, 0x99,
-0x47, 0xae, 0x85, 0xcc, 0x00, 0xf1, 0x6c, 0x17, 0xfb, 0x3a, 0x74, 0x57, 0x38, 0x69, 0xea, 0x6d,
-0xda, 0x64, 0x5b, 0x4f, 0x23, 0x30, 0xc2, 0x0a, 0xde, 0xe3, 0x5b, 0xc0, 0x38, 0xa5, 0x0a, 0x96,
-0x6c, 0x94, 0x2a, 0xa0, 0x0f, 0xb8, 0xdd, 0xd8, 0x1c, 0xfe, 0xa3, 0x22, 0xcd, 0x41, 0x52, 0x58,
-0xfe, 0x63, 0x12, 0x64, 0xfc, 0x58, 0x17, 0x44, 0x27, 0x27, 0x00, 0x05, 0x63, 0xe1, 0xd5, 0xc0,
-0x86, 0xa8, 0x2e, 0x9c, 0x9e, 0x9d, 0x6d, 0xac, 0x5d, 0xc6, 0xfc, 0xe6, 0x60, 0x09, 0x7f, 0x28,
-0xdd, 0x40, 0xdd, 0x50, 0xb4, 0x57, 0x72, 0x55, 0x9b, 0x4a, 0x0b, 0x38, 0xa9, 0x1e, 0xa2, 0x00,
-0xff, 0xe0, 0x6d, 0xc4, 0x03, 0xb0, 0x92, 0xa7, 0x39, 0xac, 0x05, 0xbd, 0x5d, 0xd6, 0x80, 0xf3,
-0xc4, 0x0f, 0x8f, 0x27, 0xd1, 0x38, 0x29, 0x43, 0xb9, 0x46, 0xbf, 0x43, 0xb7, 0x3a, 0x4f, 0x2b,
-0x5e, 0x16, 0x66, 0xfd, 0x83, 0xe3, 0xcd, 0xcc, 0x01, 0xbe, 0xbd, 0xb9, 0x99, 0xc0, 0x6d, 0xd0,
-0x54, 0xe5, 0x6e, 0xfb, 0x50, 0x0f, 0x11, 0x1f, 0xe1, 0x29, 0x1d, 0x30, 0xff, 0x31, 0xd5, 0x2f,
-0x91, 0x29, 0xd1, 0x1e, 0xb6, 0x0f, 0xbe, 0xfd, 0x18, 0xeb, 0x73, 0xdb, 0xef, 0xd1, 0x39, 0xd0,
-0x1b, 0xd6, 0x8b, 0xe1, 0x86, 0xef, 0x54, 0xfd, 0x40, 0x09, 0x04, 0x12, 0xde, 0x17, 0x3c, 0x1b,
-0x85, 0x1c, 0x0c, 0x1c, 0x88, 0x19, 0x80, 0x14, 0xf6, 0x0c, 0x78, 0x03, 0x40, 0xf9, 0x46, 0xf0,
-0x52, 0xea, 0x44, 0xe8, 0x02, 0xea, 0x78, 0xee, 0x2c, 0xf4, 0xb2, 0xf9, 0x20, 0xfe, 0x18, 0x01,
-0x12, 0x03, 0x94, 0x04, 0x40, 0x06, 0x8e, 0x08, 0x6e, 0x0b, 0x06, 0x0e, 0x92, 0x0f, 0x22, 0x0f,
-0x5c, 0x0c, 0xfa, 0x07, 0xf0, 0x02, 0x46, 0xfe, 0xac, 0xfa, 0x22, 0xf8, 0x30, 0xf6, 0x42, 0xf4,
-0xd8, 0xf1, 0x3c, 0xef, 0x76, 0xed, 0x78, 0xed, 0x58, 0xf0, 0xfc, 0xf6, 0x12, 0x01, 0x08, 0x0d,
-0x4a, 0x18, 0x33, 0x20, 0x11, 0x23, 0xb7, 0x20, 0x22, 0x1a, 0xf0, 0x10, 0xe2, 0x06, 0xdc, 0xfc,
-0x30, 0xf3, 0xe0, 0xe9, 0x07, 0xe1, 0xd5, 0xd9, 0xcf, 0xd5, 0x81, 0xd6, 0x5b, 0xdd, 0xda, 0xea,
-0xa6, 0xfd, 0xbe, 0x12, 0xf5, 0x25, 0xa9, 0x33, 0x85, 0x39, 0xfb, 0x36, 0x95, 0x2d, 0xad, 0x1f,
-0xba, 0x0f, 0xe8, 0xfe, 0x12, 0xee, 0xeb, 0xdd, 0x99, 0xcf, 0x03, 0xc5, 0x85, 0xc0, 0x05, 0xc4,
-0xbd, 0xd0, 0x1a, 0xe6, 0x22, 0x01, 0x7b, 0x1d, 0xf3, 0x35, 0x81, 0x46, 0xeb, 0x4c, 0x45, 0x49,
-0xfb, 0x3c, 0xdd, 0x2a, 0xfc, 0x14, 0x3c, 0xfd, 0xf8, 0xe4, 0x31, 0xce, 0x57, 0xbb, 0x6d, 0xaf,
-0x11, 0xad, 0xe5, 0xb5, 0x11, 0xca, 0x2a, 0xe7, 0xe0, 0x08, 0xbf, 0x29, 0x1f, 0x45, 0xe4, 0x56,
-0x52, 0x5d, 0xd6, 0x57, 0x45, 0x48, 0x37, 0x31, 0x46, 0x15, 0x90, 0xf6, 0x0b, 0xd8, 0xdb, 0xbc,
-0xb8, 0xa8, 0xe6, 0x9e, 0x34, 0xa1, 0x4b, 0xb0, 0x8d, 0xca, 0x5e, 0xec, 0xfa, 0x10, 0xcd, 0x33,
-0x3b, 0x50, 0xdc, 0x62, 0x02, 0x69, 0x08, 0x62, 0x2b, 0x4f, 0x27, 0x33, 0xf8, 0x10, 0x58, 0xec,
-0x77, 0xc9, 0xe3, 0xac, 0xa0, 0x9a, 0x1a, 0x95, 0xd2, 0x9c, 0xe5, 0xb0, 0xe5, 0xce, 0xec, 0xf2,
-0xca, 0x18, 0x33, 0x3c, 0x10, 0x59, 0x8e, 0x6b, 0x74, 0x70, 0x86, 0x66, 0x53, 0x4f, 0xf7, 0x2d,
-0xae, 0x06, 0xa3, 0xde, 0x51, 0xbb, 0x82, 0xa1, 0x3a, 0x94, 0x00, 0x94, 0x06, 0xa0, 0xc9, 0xb6,
-0xd7, 0xd5, 0xe4, 0xf9, 0x71, 0x1f, 0x91, 0x42, 0xf0, 0x5e, 0x30, 0x70, 0x9e, 0x72, 0xf6, 0x64,
-0x25, 0x49, 0x81, 0x23, 0xae, 0xf9, 0xed, 0xd1, 0xb7, 0xb1, 0xe8, 0x9c, 0xea, 0x94, 0x04, 0x99,
-0xb2, 0xa7, 0x71, 0xbf, 0x2b, 0xde, 0x20, 0x01, 0x47, 0x25, 0xbf, 0x46, 0xfa, 0x60, 0x32, 0x6f,
-0xd8, 0x6d, 0x36, 0x5c, 0x4f, 0x3d, 0x76, 0x16, 0x36, 0xee, 0xbd, 0xca, 0x5d, 0xb0, 0x3c, 0xa1,
-0x60, 0x9d, 0xb2, 0xa3, 0xe1, 0xb2, 0xc1, 0xc9, 0x9c, 0xe6, 0x6a, 0x07, 0x0b, 0x29, 0x73, 0x47,
-0xdc, 0x5d, 0xba, 0x67, 0x34, 0x62, 0xf3, 0x4d, 0x05, 0x2f, 0x0e, 0x0b, 0x2a, 0xe8, 0x05, 0xcb,
-0x8f, 0xb6, 0xbb, 0xab, 0x60, 0xaa, 0x83, 0xb1, 0x6d, 0xc0, 0xe1, 0xd5, 0x3a, 0xf0, 0x66, 0x0d,
-0x71, 0x2a, 0x69, 0x43, 0x01, 0x54, 0xf4, 0x58, 0xad, 0x50, 0x07, 0x3d, 0xa7, 0x21, 0x9a, 0x03,
-0x74, 0xe7, 0xe3, 0xd0, 0xa7, 0xc1, 0x81, 0xba, 0x21, 0xbb, 0xc5, 0xc2, 0x7b, 0xd0, 0x13, 0xe3,
-0x2c, 0xf9, 0x96, 0x10, 0xe1, 0x26, 0xc5, 0x38, 0x9f, 0x43, 0x1f, 0x45, 0x2b, 0x3d, 0x23, 0x2d,
-0xec, 0x17, 0x06, 0x01, 0x18, 0xec, 0xad, 0xdb, 0x3d, 0xd1, 0x45, 0xcd, 0x3d, 0xcf, 0x63, 0xd6,
-0x75, 0xe1, 0x56, 0xef, 0x72, 0xfe, 0xa2, 0x0d, 0x2a, 0x1b, 0xcb, 0x25, 0x3b, 0x2c, 0x77, 0x2d,
-0xf9, 0x28, 0x5d, 0x1f, 0x08, 0x12, 0x50, 0x03, 0xc8, 0xf5, 0x50, 0xeb, 0x28, 0xe5, 0x63, 0xe3,
-0x78, 0xe5, 0x22, 0xea, 0x74, 0xf0, 0x20, 0xf7, 0x74, 0xfd, 0x4e, 0x03, 0xf2, 0x08, 0x80, 0x0e,
-0x9e, 0x13, 0x24, 0x17, 0xfa, 0x17, 0x80, 0x15, 0xf4, 0x0f, 0xe6, 0x08, 0x04, 0x02, 0xf6, 0xfc,
-0x7c, 0xfa, 0x4c, 0xfa, 0x2e, 0xfb, 0xd4, 0xfb, 0x2c, 0xfb, 0xd0, 0xf8, 0x90, 0xf5, 0xec, 0xf2,
-0xac, 0xf2, 0xe8, 0xf5, 0x30, 0xfc, 0xae, 0x03, 0x66, 0x0a, 0xf4, 0x0e, 0x12, 0x11, 0x9c, 0x11,
-0x8c, 0x11, 0x98, 0x11, 0xc0, 0x11, 0x2c, 0x11, 0x6e, 0x0e, 0x88, 0x08, 0x4c, 0xff, 0xea, 0xf3,
-0x8a, 0xe8, 0xdb, 0xdf, 0x3d, 0xdc, 0xcb, 0xde, 0xea, 0xe6, 0x82, 0xf2, 0x32, 0xff, 0x10, 0x0b,
-0x60, 0x15, 0xc1, 0x1d, 0x27, 0x24, 0x41, 0x28, 0x37, 0x29, 0xcf, 0x25, 0x25, 0x1d, 0x5a, 0x0f,
-0x96, 0xfd, 0x4a, 0xea, 0x99, 0xd8, 0xbf, 0xcb, 0x45, 0xc6, 0x53, 0xc9, 0x09, 0xd4, 0x78, 0xe4,
-0x0e, 0xf8, 0x16, 0x0c, 0xb5, 0x1e, 0x69, 0x2e, 0xd9, 0x39, 0x77, 0x3f, 0x4b, 0x3e, 0x95, 0x35,
-0xe3, 0x25, 0x88, 0x10, 0xca, 0xf7, 0xad, 0xde, 0xdd, 0xc8, 0x83, 0xb9, 0x0f, 0xb3, 0xe7, 0xb6,
-0x85, 0xc4, 0x5f, 0xda, 0x4c, 0xf5, 0xbc, 0x11, 0xf9, 0x2b, 0x3b, 0x41, 0xd7, 0x4e, 0x39, 0x53,
-0x9f, 0x4d, 0xd1, 0x3e, 0xbf, 0x28, 0xce, 0x0d, 0x5c, 0xf0, 0x93, 0xd3, 0xe9, 0xba, 0xca, 0xa9,
-0x42, 0xa3, 0xcc, 0xa8, 0xc1, 0xba, 0x11, 0xd7, 0xa4, 0xf9, 0x17, 0x1d, 0x7b, 0x3c, 0xa7, 0x53,
-0x16, 0x60, 0xa2, 0x60, 0xdc, 0x55, 0xd9, 0x41, 0x39, 0x27, 0x64, 0x08, 0xc4, 0xe7, 0x6b, 0xc8,
-0xe3, 0xad, 0x26, 0x9c, 0xa0, 0x96, 0x84, 0x9f, 0xe5, 0xb6, 0xff, 0xd9, 0xf8, 0x02, 0xf9, 0x2a,
-0x1b, 0x4c, 0x36, 0x62, 0x5e, 0x6b, 0x8c, 0x67, 0x68, 0x58, 0xbd, 0x40, 0x2f, 0x23, 0xe8, 0x01,
-0x23, 0xdf, 0x27, 0xbe, 0x1a, 0xa3, 0x82, 0x92, 0x12, 0x90, 0xde, 0x9d, 0xf1, 0xba, 0xff, 0xe2,
-0xf4, 0x0e, 0x43, 0x37, 0x6a, 0x56, 0x02, 0x69, 0x2a, 0x6e, 0xc8, 0x66, 0xf8, 0x54, 0x59, 0x3b,
-0x43, 0x1c, 0xb0, 0xf9, 0x2f, 0xd6, 0x83, 0xb5, 0x2e, 0x9c, 0xc6, 0x8e, 0xc2, 0x90, 0x74, 0xa3,
-0x77, 0xc4, 0x54, 0xee, 0x7a, 0x19, 0xf3, 0x3e, 0x34, 0x5a, 0x06, 0x69, 0x22, 0x6b, 0x9e, 0x61,
-0x69, 0x4e, 0xbb, 0x33, 0xac, 0x13, 0xa0, 0xf0, 0xef, 0xcd, 0x9f, 0xaf, 0x40, 0x9a, 0xcc, 0x91,
-0xaa, 0x98, 0x93, 0xae, 0x79, 0xd0, 0x68, 0xf8, 0xd7, 0x1f, 0xe9, 0x40, 0x08, 0x58, 0x6e, 0x63,
-0x12, 0x63, 0xec, 0x57, 0x95, 0x43, 0x41, 0x28, 0x54, 0x08, 0xe8, 0xe6, 0x9f, 0xc7, 0xe7, 0xae,
-0xfa, 0x9f, 0x4c, 0x9d, 0x82, 0xa7, 0x93, 0xbd, 0x5f, 0xdc, 0x28, 0xff, 0xa7, 0x20, 0x7b, 0x3c,
-0x9f, 0x4f, 0x54, 0x58, 0x72, 0x56, 0x8f, 0x4a, 0x65, 0x36, 0x28, 0x1c, 0x02, 0xff, 0x1b, 0xe2,
-0x21, 0xc9, 0xf3, 0xb6, 0xbb, 0xad, 0x65, 0xae, 0xcd, 0xb8, 0xed, 0xcb, 0x8c, 0xe5, 0x5a, 0x02,
-0x41, 0x1e, 0x65, 0x35, 0x9f, 0x44, 0x63, 0x4a, 0x3b, 0x46, 0x65, 0x39, 0xdb, 0x25, 0xbe, 0x0e,
-0x0e, 0xf7, 0xbd, 0xe1, 0xdd, 0xd0, 0xbf, 0xc5, 0x0d, 0xc1, 0xb1, 0xc2, 0xbb, 0xca, 0x93, 0xd8,
-0x9a, 0xeb, 0x74, 0x01, 0x10, 0x17, 0xcb, 0x28, 0x01, 0x34, 0x1b, 0x37, 0x3f, 0x32, 0xd1, 0x26,
-0x46, 0x17, 0x9e, 0x06, 0x2a, 0xf7, 0x96, 0xea, 0x4b, 0xe1, 0x55, 0xdb, 0x35, 0xd8, 0x17, 0xd8,
-0x5f, 0xdb, 0xbb, 0xe2, 0x44, 0xee, 0xb8, 0xfc, 0x86, 0x0b, 0xaa, 0x17, 0xeb, 0x1e, 0x47, 0x20,
-0x65, 0x1c, 0xd6, 0x14, 0xd0, 0x0b, 0x7e, 0x03, 0x1e, 0xfd, 0xb4, 0xf8, 0x6e, 0xf5, 0x60, 0xf2,
-0x2e, 0xef, 0x14, 0xec, 0x36, 0xea, 0xfc, 0xea, 0x18, 0xef, 0xf0, 0xf5, 0xa4, 0xfd, 0x24, 0x04,
-0x0c, 0x08, 0x38, 0x09, 0x58, 0x08, 0xca, 0x06, 0xfa, 0x05, 0x92, 0x06, 0x6a, 0x08, 0x54, 0x0a,
-0x16, 0x0b, 0x7a, 0x09, 0x28, 0x05, 0x98, 0xfe, 0x10, 0xf7, 0x4e, 0xf0, 0xb0, 0xeb, 0xda, 0xe9,
-0x3e, 0xea, 0x18, 0xec, 0xc6, 0xee, 0x62, 0xf2, 0x40, 0xf7, 0xd2, 0xfd, 0xf6, 0x05, 0xfc, 0x0e,
-0x96, 0x17, 0x55, 0x1e, 0x95, 0x21, 0x61, 0x20, 0x08, 0x1a, 0xe6, 0x0e, 0x70, 0x00, 0xd4, 0xf0,
-0xd1, 0xe2, 0x4b, 0xd8, 0xb5, 0xd2, 0x4b, 0xd2, 0xdf, 0xd6, 0x9f, 0xdf, 0xf0, 0xeb, 0xb6, 0xfa,
-0x9a, 0x0a, 0x60, 0x1a, 0xff, 0x27, 0x19, 0x32, 0xe1, 0x36, 0xf7, 0x34, 0x35, 0x2b, 0x1e, 0x1a,
-0x72, 0x03, 0xde, 0xea, 0x65, 0xd4, 0xd3, 0xc3, 0xa5, 0xbb, 0x61, 0xbc, 0x0b, 0xc5, 0xe1, 0xd3,
-0xea, 0xe6, 0x22, 0xfc, 0xe4, 0x11, 0x25, 0x26, 0x8d, 0x37, 0xf7, 0x43, 0x63, 0x49, 0x65, 0x45,
-0x3d, 0x37, 0x45, 0x1f, 0xae, 0x00, 0x55, 0xe0, 0xdb, 0xc3, 0x35, 0xb0, 0xfe, 0xa7, 0x5f, 0xab,
-0x65, 0xb8, 0xa5, 0xcc, 0x36, 0xe5, 0xf2, 0xff, 0x8c, 0x1a, 0x1f, 0x33, 0x6f, 0x47, 0x02, 0x55,
-0x1a, 0x59, 0x5f, 0x51, 0x17, 0x3d, 0xff, 0x1d, 0x78, 0xf8, 0xad, 0xd2, 0x69, 0xb3, 0xa0, 0x9f,
-0x88, 0x99, 0x5e, 0xa0, 0x8f, 0xb1, 0x0d, 0xca, 0x3e, 0xe7, 0x5e, 0x06, 0xfd, 0x24, 0xb9, 0x40,
-0xc4, 0x56, 0xb4, 0x63, 0x5a, 0x64, 0xf0, 0x56, 0xfd, 0x3b, 0xe2, 0x16, 0x02, 0xed, 0x6d, 0xc5,
-0x84, 0xa6, 0xb0, 0x94, 0x12, 0x91, 0x8c, 0x9a, 0xc3, 0xae, 0xdf, 0xca, 0xe4, 0xeb, 0xda, 0x0e,
-0xbb, 0x30, 0x13, 0x4e, 0x38, 0x63, 0x80, 0x6c, 0x82, 0x67, 0x15, 0x54, 0x61, 0x34, 0xca, 0x0c,
-0xd5, 0xe2, 0xa7, 0xbc, 0xe2, 0x9f, 0x38, 0x90, 0xb4, 0x8e, 0x72, 0x9a, 0x55, 0xb1, 0x97, 0xd0,
-0xea, 0xf4, 0x3c, 0x1a, 0x83, 0x3c, 0xfe, 0x57, 0x14, 0x69, 0xde, 0x6c, 0x96, 0x62, 0x77, 0x4b,
-0x9b, 0x2a, 0xce, 0x03, 0xff, 0xdb, 0x7f, 0xb8, 0x7c, 0x9e, 0x38, 0x91, 0xe8, 0x91, 0xde, 0x9f,
-0x3d, 0xb9, 0xff, 0xda, 0xa0, 0x00, 0xbb, 0x25, 0x8d, 0x45, 0x56, 0x5c, 0x56, 0x67, 0x9a, 0x65,
-0x88, 0x57, 0x91, 0x3f, 0x4f, 0x20, 0xfc, 0xfc, 0x57, 0xd9, 0xbd, 0xb9, 0xac, 0xa2, 0xc2, 0x97,
-0x4c, 0x9a, 0x0a, 0xaa, 0xf9, 0xc4, 0x20, 0xe7, 0xa2, 0x0b, 0x1d, 0x2d, 0x45, 0x47, 0x92, 0x57,
-0x06, 0x5d, 0xba, 0x57, 0x75, 0x49, 0xed, 0x33, 0xb0, 0x18, 0xe6, 0xf9, 0x3d, 0xda, 0x31, 0xbe,
-0x50, 0xaa, 0x3c, 0xa2, 0x74, 0xa7, 0x4f, 0xb9, 0x7d, 0xd4, 0x62, 0xf4, 0xcc, 0x13, 0x29, 0x2e,
-0xe7, 0x40, 0xc5, 0x4a, 0x49, 0x4c, 0x8b, 0x46, 0x89, 0x3a, 0xed, 0x28, 0xae, 0x12, 0x00, 0xf9,
-0x97, 0xde, 0x31, 0xc7, 0x45, 0xb7, 0x1b, 0xb2, 0x03, 0xb9, 0x39, 0xca, 0x59, 0xe2, 0xa6, 0xfc,
-0xee, 0x14, 0xef, 0x27, 0x39, 0x34, 0x03, 0x3a, 0x07, 0x3a, 0x31, 0x35, 0x01, 0x2c, 0xcd, 0x1e,
-0xb6, 0x0d, 0xe6, 0xf9, 0x7e, 0xe5, 0xe1, 0xd3, 0xb7, 0xc8, 0x69, 0xc6, 0x6f, 0xcd, 0xdf, 0xdb,
-0x2e, 0xee, 0xb2, 0x00, 0x86, 0x10, 0x18, 0x1c, 0xf1, 0x22, 0xb1, 0x25, 0x17, 0x25, 0x05, 0x22,
-0x8b, 0x1c, 0x88, 0x14, 0x32, 0x0a, 0x1a, 0xfe, 0x9a, 0xf1, 0xcc, 0xe6, 0xfd, 0xdf, 0x9f, 0xde,
-0xdd, 0xe2, 0x0c, 0xeb, 0xe4, 0xf4, 0x5c, 0xfe, 0xe8, 0x05, 0xe6, 0x0a, 0x9a, 0x0d, 0x8e, 0x0e,
-0xa6, 0x0e, 0x68, 0x0e, 0x02, 0x0e, 0x3c, 0x0d, 0x84, 0x0b, 0x5e, 0x08, 0xea, 0x03, 0xac, 0xfe,
-0xa2, 0xf9, 0x06, 0xf6, 0x2e, 0xf4, 0x28, 0xf4, 0x28, 0xf5, 0x34, 0xf6, 0xda, 0xf6, 0x10, 0xf7,
-0x04, 0xf7, 0x8a, 0xf7, 0x86, 0xf9, 0xa2, 0xfd, 0x0c, 0x04, 0xbc, 0x0b, 0x44, 0x13, 0xca, 0x18,
-0x80, 0x1a, 0xee, 0x17, 0xde, 0x11, 0xb6, 0x09, 0x28, 0x01, 0x36, 0xf9, 0xfc, 0xf1, 0xac, 0xeb,
-0x4c, 0xe6, 0x07, 0xe2, 0xf1, 0xdf, 0x05, 0xe1, 0x76, 0xe6, 0xe0, 0xf0, 0xca, 0xff, 0x22, 0x11,
-0xb5, 0x21, 0xab, 0x2d, 0xa5, 0x32, 0xcb, 0x2f, 0x3f, 0x26, 0x70, 0x18, 0x06, 0x09, 0xba, 0xf9,
-0xb0, 0xeb, 0x0b, 0xdf, 0x29, 0xd4, 0x6b, 0xcc, 0x51, 0xc9, 0xb3, 0xcc, 0x8f, 0xd7, 0x0a, 0xea,
-0xd4, 0x01, 0x92, 0x1b, 0x2b, 0x32, 0xf3, 0x41, 0xc9, 0x47, 0x57, 0x43, 0x1f, 0x36, 0x59, 0x23,
-0xba, 0x0d, 0xb0, 0xf7, 0xaf, 0xe2, 0x15, 0xd0, 0x5d, 0xc1, 0xe9, 0xb7, 0x19, 0xb6, 0xa3, 0xbd,
-0x4d, 0xcf, 0x6a, 0xe9, 0xdc, 0x08, 0x21, 0x28, 0xad, 0x42, 0xc9, 0x53, 0x32, 0x59, 0xb7, 0x52,
-0x13, 0x42, 0x43, 0x2a, 0x9c, 0x0e, 0xe0, 0xf1, 0x45, 0xd6, 0xbf, 0xbe, 0x7f, 0xad, 0x58, 0xa5,
-0xf8, 0xa7, 0x2d, 0xb6, 0x2b, 0xcf, 0x04, 0xf0, 0xde, 0x13, 0xad, 0x35, 0xfd, 0x50, 0xe2, 0x61,
-0x32, 0x66, 0x3c, 0x5d, 0xe9, 0x48, 0x71, 0x2c, 0x40, 0x0b, 0xb2, 0xe8, 0x93, 0xc8, 0x91, 0xae,
-0x14, 0x9e, 0x60, 0x99, 0x78, 0xa1, 0xf3, 0xb5, 0x5f, 0xd4, 0x9e, 0xf8, 0x0f, 0x1e, 0x2f, 0x40,
-0xf6, 0x5a, 0xfc, 0x6a, 0x84, 0x6d, 0x14, 0x62, 0x45, 0x4a, 0x1f, 0x29, 0xe4, 0x02, 0x0d, 0xdc,
-0xab, 0xb9, 0x7a, 0xa0, 0xbc, 0x93, 0x84, 0x94, 0x6c, 0xa2, 0x55, 0xbb, 0x33, 0xdc, 0x28, 0x01,
-0xe7, 0x25, 0xf7, 0x46, 0xaa, 0x60, 0x5c, 0x6f, 0xf4, 0x6f, 0xa8, 0x61, 0xed, 0x45, 0xe5, 0x20,
-0x46, 0xf7, 0x11, 0xcf, 0x43, 0xae, 0x6c, 0x99, 0x30, 0x92, 0x60, 0x98, 0x02, 0xaa, 0x9b, 0xc4,
-0x34, 0xe5, 0x5c, 0x08, 0x25, 0x2b, 0x5f, 0x4a, 0x48, 0x62, 0xca, 0x6e, 0xdc, 0x6c, 0x54, 0x5b,
-0x8b, 0x3c, 0x26, 0x15, 0x46, 0xeb, 0x99, 0xc5, 0x7e, 0xa9, 0x2c, 0x9a, 0xf4, 0x97, 0x64, 0xa1,
-0x15, 0xb4, 0x03, 0xce, 0xbc, 0xec, 0xc8, 0x0d, 0x43, 0x2e, 0xf5, 0x4a, 0x08, 0x60, 0x44, 0x69,
-0xce, 0x63, 0x7d, 0x4f, 0x7f, 0x2f, 0x18, 0x09, 0xcb, 0xe2, 0x71, 0xc2, 0x8f, 0xac, 0x8e, 0xa2,
-0xca, 0xa3, 0x6b, 0xae, 0xc5, 0xc0, 0xb5, 0xd8, 0x88, 0xf4, 0xfa, 0x11, 0x91, 0x2e, 0x3d, 0x47,
-0x04, 0x58, 0x4e, 0x5d, 0x1a, 0x55, 0x85, 0x40, 0x89, 0x22, 0xcc, 0x00, 0xb5, 0xe0, 0x55, 0xc7,
-0x1b, 0xb7, 0xdf, 0xb0, 0x9d, 0xb3, 0x13, 0xbe, 0xb9, 0xce, 0xd6, 0xe3, 0xd6, 0xfb, 0x9c, 0x14,
-0xc9, 0x2b, 0x69, 0x3e, 0xbd, 0x49, 0x2d, 0x4b, 0x05, 0x42, 0x9f, 0x2f, 0x1e, 0x17, 0x8e, 0xfc,
-0x74, 0xe4, 0xff, 0xd1, 0x05, 0xc7, 0xb3, 0xc3, 0x5d, 0xc7, 0xa3, 0xd0, 0x7d, 0xde, 0x18, 0xef,
-0xf8, 0x00, 0x98, 0x12, 0x41, 0x22, 0x3f, 0x2e, 0xe5, 0x34, 0x01, 0x35, 0x45, 0x2e, 0xb1, 0x21,
-0xec, 0x10, 0xc4, 0xfe, 0x36, 0xee, 0xa5, 0xe1, 0x4b, 0xda, 0x91, 0xd8, 0xfb, 0xdb, 0x43, 0xe3,
-0xe8, 0xec, 0x84, 0xf7, 0xb2, 0x01, 0xd8, 0x0a, 0x9a, 0x12, 0xc2, 0x18, 0xeb, 0x1c, 0x8f, 0x1e,
-0xd7, 0x1c, 0x9a, 0x17, 0x72, 0x0f, 0x6c, 0x05, 0xcc, 0xfb, 0x56, 0xf4, 0x1c, 0xf0, 0x4c, 0xef,
-0x38, 0xf1, 0x7a, 0xf4, 0x96, 0xf7, 0xd2, 0xf9, 0xb4, 0xfa, 0x50, 0xfb, 0xb8, 0xfc, 0xfa, 0xff,
-0x04, 0x05, 0xda, 0x0a, 0xd2, 0x0f, 0x5a, 0x12, 0xf8, 0x11, 0x26, 0x0f, 0xa6, 0x0b, 0x98, 0x08,
-0xc2, 0x06, 0xe0, 0x05, 0xd8, 0x04, 0x52, 0x02, 0x74, 0xfd, 0x7c, 0xf6, 0xc6, 0xee, 0x4e, 0xe8,
-0x60, 0xe5, 0x96, 0xe7, 0xb0, 0xee, 0x3e, 0xf9, 0xda, 0x04, 0x1a, 0x0f, 0xb2, 0x16, 0xa8, 0x1b,
-0x39, 0x1e, 0x59, 0x1f, 0xc9, 0x1e, 0xc6, 0x1b, 0x64, 0x15, 0xf6, 0x0a, 0xee, 0xfc, 0x36, 0xed,
-0x55, 0xde, 0x27, 0xd3, 0x89, 0xce, 0x93, 0xd1, 0xe9, 0xdb, 0x8c, 0xeb, 0xd8, 0xfd, 0x80, 0x0f,
-0xe9, 0x1e, 0xcf, 0x2a, 0xf3, 0x32, 0x69, 0x36, 0xad, 0x34, 0xfd, 0x2c, 0x39, 0x1f, 0x54, 0x0c,
-0x1c, 0xf6, 0xdd, 0xdf, 0x53, 0xcc, 0x2d, 0xbf, 0x35, 0xba, 0x11, 0xbf, 0x03, 0xcd, 0x37, 0xe2,
-0x6a, 0xfb, 0x3c, 0x15, 0x4d, 0x2c, 0x53, 0x3e, 0x73, 0x49, 0x09, 0x4c, 0xff, 0x45, 0x85, 0x37,
-0x1d, 0x22, 0x2c, 0x08, 0x70, 0xec, 0x0b, 0xd2, 0x89, 0xbc, 0x6d, 0xae, 0x46, 0xaa, 0x17, 0xb1,
-0xb1, 0xc2, 0x55, 0xdd, 0x98, 0xfd, 0x69, 0x1e, 0x93, 0x3b, 0x25, 0x51, 0x3c, 0x5c, 0xd0, 0x5b,
-0x27, 0x50, 0x71, 0x3b, 0x35, 0x20, 0xc0, 0x01, 0xb9, 0xe2, 0x6b, 0xc6, 0x97, 0xaf, 0x4c, 0xa1,
-0x08, 0x9e, 0x46, 0xa7, 0x89, 0xbd, 0x45, 0xde, 0x1e, 0x05, 0xaf, 0x2b, 0x2f, 0x4c, 0xda, 0x61,
-0x62, 0x6a, 0x38, 0x65, 0x4b, 0x54, 0xe5, 0x3a, 0xea, 0x1b, 0x7a, 0xfa, 0x83, 0xd9, 0xb5, 0xbb,
-0x78, 0xa4, 0x0a, 0x97, 0x06, 0x96, 0x64, 0xa3, 0xfb, 0xbe, 0x92, 0xe5, 0x02, 0x11, 0x27, 0x3a,
-0x04, 0x5a, 0xdc, 0x6c, 0xba, 0x70, 0xce, 0x66, 0xf5, 0x51, 0xa9, 0x35, 0x00, 0x15, 0xb2, 0xf2,
-0x4d, 0xd1, 0x97, 0xb3, 0x48, 0x9d, 0xb8, 0x91, 0x46, 0x94, 0x48, 0xa6, 0xa7, 0xc6, 0xc4, 0xf0,
-0x47, 0x1d, 0x93, 0x44, 0x04, 0x61, 0x3c, 0x6f, 0xe0, 0x6e, 0x02, 0x62, 0x77, 0x4b, 0x81, 0x2e,
-0xb0, 0x0d, 0x20, 0xeb, 0xbf, 0xc9, 0x4d, 0xad, 0x6e, 0x99, 0x2a, 0x92, 0xaa, 0x99, 0x11, 0xb0,
-0x07, 0xd3, 0xda, 0xfc, 0x43, 0x26, 0x17, 0x49, 0xc4, 0x60, 0xde, 0x6a, 0xf6, 0x67, 0xa0, 0x59,
-0xab, 0x42, 0xbd, 0x25, 0x3c, 0x05, 0xb3, 0xe3, 0xd9, 0xc4, 0x29, 0xac, 0x82, 0x9d, 0x60, 0x9b,
-0xaa, 0xa6, 0x9b, 0xbe, 0x0f, 0xe0, 0xa2, 0x05, 0x85, 0x29, 0xc1, 0x46, 0x88, 0x59, 0x9a, 0x60,
-0xd6, 0x5b, 0x0d, 0x4d, 0x65, 0x36, 0x70, 0x1a, 0xea, 0xfb, 0x3d, 0xde, 0x9d, 0xc4, 0x3d, 0xb2,
-0x90, 0xa9, 0x53, 0xab, 0xc1, 0xb7, 0x47, 0xcd, 0x3e, 0xe9, 0xf0, 0x07, 0x3f, 0x25, 0x2f, 0x3d,
-0xb1, 0x4c, 0xdd, 0x51, 0x57, 0x4c, 0xe1, 0x3d, 0x4f, 0x28, 0xaa, 0x0e, 0x52, 0xf4, 0x8b, 0xdc,
-0x21, 0xca, 0xed, 0xbe, 0x75, 0xbb, 0x5b, 0xbf, 0x2d, 0xca, 0xbd, 0xda, 0xc4, 0xef, 0x02, 0x07,
-0x97, 0x1d, 0x4d, 0x30, 0x2d, 0x3c, 0x3d, 0x3f, 0x7b, 0x39, 0x39, 0x2c, 0x0c, 0x1a, 0xc0, 0x05,
-0xb2, 0xf2, 0x09, 0xe3, 0x3b, 0xd8, 0x75, 0xd2, 0x37, 0xd1, 0xc3, 0xd3, 0xe1, 0xd9, 0xee, 0xe3,
-0x5a, 0xf1, 0x6c, 0x01, 0xc6, 0x11, 0x9d, 0x1f, 0x37, 0x28, 0x11, 0x2a, 0x19, 0x25, 0xfc, 0x1a,
-0x6c, 0x0e, 0xd4, 0x01, 0x8e, 0xf7, 0x60, 0xf0, 0x08, 0xec, 0xb4, 0xe9, 0x78, 0xe8, 0xe2, 0xe7,
-0x76, 0xe8, 0x64, 0xeb, 0x3a, 0xf1, 0xd6, 0xf9, 0xb6, 0x03, 0x80, 0x0c, 0x24, 0x12, 0x8e, 0x13,
-0x0c, 0x11, 0x52, 0x0c, 0x52, 0x07, 0x7a, 0x03, 0x8c, 0x01, 0x26, 0x01, 0xf2, 0x00, 0xd8, 0xff,
-0x26, 0xfd, 0xc0, 0xf8, 0xb4, 0xf3, 0xa0, 0xef, 0xba, 0xed, 0x84, 0xee, 0x74, 0xf1, 0x7c, 0xf5,
-0x4c, 0xf9, 0x74, 0xfc, 0x4c, 0xff, 0x8e, 0x02, 0xca, 0x06, 0x14, 0x0c, 0xd2, 0x11, 0x5a, 0x16,
-0xa8, 0x18, 0x4c, 0x17, 0xe6, 0x11, 0x98, 0x08, 0xac, 0xfc, 0x18, 0xf0, 0x38, 0xe5, 0x8f, 0xdd,
-0x39, 0xda, 0x71, 0xdb, 0x43, 0xe0, 0x36, 0xe8, 0xe6, 0xf2, 0x14, 0xff, 0x2c, 0x0c, 0x10, 0x19,
-0xef, 0x23, 0x7d, 0x2b, 0x77, 0x2e, 0xc1, 0x2b, 0xb5, 0x22, 0xf0, 0x13, 0x60, 0x00, 0x46, 0xeb,
-0xaf, 0xd7, 0x25, 0xc9, 0x31, 0xc2, 0x69, 0xc3, 0x39, 0xcc, 0xe1, 0xda, 0x66, 0xed, 0x42, 0x01,
-0x06, 0x15, 0xc5, 0x26, 0x11, 0x35, 0x71, 0x3e, 0x69, 0x41, 0xbb, 0x3c, 0x35, 0x2f, 0xac, 0x19,
-0x10, 0xfe, 0x83, 0xe0, 0x2d, 0xc6, 0xe7, 0xb3, 0x85, 0xac, 0xcf, 0xb0, 0xf5, 0xbe, 0xe1, 0xd3,
-0x9e, 0xec, 0x4a, 0x06, 0x97, 0x1e, 0x39, 0x34, 0x0f, 0x45, 0x8b, 0x4f, 0xc7, 0x51, 0xbb, 0x49,
-0xc1, 0x36, 0x22, 0x1a, 0x1c, 0xf7, 0x25, 0xd3, 0xfb, 0xb4, 0x7a, 0xa1, 0x00, 0x9c, 0xfe, 0xa3,
-0xd5, 0xb6, 0xcd, 0xd0, 0x64, 0xee, 0x62, 0x0c, 0xa3, 0x28, 0x23, 0x41, 0xc7, 0x53, 0x1c, 0x5e,
-0x7a, 0x5d, 0x73, 0x50, 0x07, 0x37, 0xa8, 0x13, 0x5a, 0xeb, 0x79, 0xc4, 0xb2, 0xa5, 0x38, 0x94,
-0xde, 0x91, 0x58, 0x9d, 0xf9, 0xb3, 0xb9, 0xd1, 0xf6, 0xf2, 0x8c, 0x14, 0xa9, 0x33, 0xe3, 0x4d,
-0x74, 0x60, 0x30, 0x68, 0xec, 0x62, 0x17, 0x50, 0xfb, 0x30, 0x8e, 0x09, 0x51, 0xdf, 0xb5, 0xb8,
-0xf4, 0x9b, 0x4e, 0x8d, 0xd2, 0x8d, 0x44, 0x9c, 0xb7, 0xb5, 0xa3, 0xd6, 0xc6, 0xfa, 0x9d, 0x1e,
-0x05, 0x3f, 0xc4, 0x58, 0x74, 0x68, 0x98, 0x6b, 0xca, 0x60, 0xc1, 0x48, 0xb3, 0x26, 0xae, 0xfe,
-0x13, 0xd6, 0x6f, 0xb2, 0x02, 0x99, 0x1c, 0x8d, 0xd8, 0x8f, 0x1e, 0xa0, 0x81, 0xbb, 0x73, 0xde,
-0x3e, 0x04, 0xe9, 0x28, 0x37, 0x48, 0xbc, 0x5e, 0x86, 0x69, 0x14, 0x67, 0x78, 0x57, 0x1d, 0x3d,
-0x68, 0x1b, 0x04, 0xf6, 0x59, 0xd1, 0xc7, 0xb1, 0xda, 0x9b, 0x76, 0x92, 0xf8, 0x96, 0xc0, 0xa8,
-0x9f, 0xc5, 0x44, 0xe9, 0xe2, 0x0e, 0x63, 0x31, 0x9b, 0x4c, 0x90, 0x5d, 0xac, 0x62, 0x96, 0x5b,
-0x19, 0x4a, 0xdf, 0x30, 0x8c, 0x12, 0xe6, 0xf1, 0x01, 0xd2, 0xbd, 0xb6, 0xe4, 0xa3, 0xbe, 0x9c,
-0xae, 0xa2, 0x91, 0xb5, 0x73, 0xd2, 0xce, 0xf4, 0x28, 0x17, 0x71, 0x34, 0x53, 0x49, 0xed, 0x53,
-0x17, 0x54, 0xdf, 0x4a, 0x8f, 0x3a, 0xdd, 0x24, 0xd2, 0x0b, 0xe4, 0xf0, 0x5d, 0xd6, 0xa3, 0xbf,
-0x5d, 0xb0, 0x83, 0xab, 0xdf, 0xb2, 0xb9, 0xc5, 0x71, 0xe0, 0x56, 0xfe, 0x1c, 0x1a, 0x07, 0x30,
-0xe9, 0x3d, 0x49, 0x43, 0xe9, 0x40, 0xc7, 0x38, 0x01, 0x2c, 0xbc, 0x1b, 0xae, 0x08, 0xbc, 0xf3,
-0xbd, 0xde, 0xdb, 0xcc, 0x77, 0xc1, 0x0d, 0xbf, 0xc7, 0xc6, 0x31, 0xd7, 0xe6, 0xec, 0x30, 0x03,
-0x98, 0x16, 0x7b, 0x24, 0x2f, 0x2c, 0x1d, 0x2e, 0xa3, 0x2b, 0xed, 0x25, 0xd3, 0x1d, 0x66, 0x13,
-0xde, 0x06, 0xe8, 0xf8, 0xaa, 0xea, 0x7b, 0xde, 0xdd, 0xd6, 0x97, 0xd5, 0x37, 0xdb, 0x54, 0xe6,
-0xf2, 0xf3, 0x52, 0x01, 0x34, 0x0c, 0x7a, 0x13, 0x2c, 0x17, 0x1a, 0x18, 0xe2, 0x16, 0x8c, 0x14,
-0x64, 0x11, 0x84, 0x0d, 0x74, 0x08, 0x42, 0x02, 0x62, 0xfb, 0xca, 0xf4, 0xae, 0xef, 0x34, 0xed,
-0xcc, 0xed, 0xbe, 0xf0, 0x14, 0xf5, 0x6e, 0xf9, 0xea, 0xfc, 0x16, 0xff, 0x56, 0x00, 0x44, 0x01,
-0x7e, 0x02, 0xa2, 0x04, 0xf4, 0x07, 0x02, 0x0c, 0xbc, 0x0f, 0xf6, 0x11, 0x7e, 0x11, 0x0a, 0x0e,
-0x40, 0x08, 0x32, 0x01, 0x58, 0xfa, 0xa6, 0xf4, 0x76, 0xf0, 0x8a, 0xed, 0x6a, 0xeb, 0x1e, 0xea,
-0xee, 0xe9, 0x5e, 0xeb, 0x4c, 0xef, 0xc2, 0xf6, 0x6e, 0x01, 0x58, 0x0e, 0x64, 0x1b, 0x43, 0x25,
-0xa7, 0x29, 0x3b, 0x27, 0xa7, 0x1e, 0xaa, 0x11, 0x24, 0x03, 0x10, 0xf5, 0x20, 0xe9, 0x8d, 0xdf,
-0x83, 0xd8, 0x6b, 0xd4, 0x9f, 0xd3, 0x47, 0xd7, 0x49, 0xe0, 0xec, 0xee, 0x2e, 0x02, 0xec, 0x17,
-0x13, 0x2c, 0xbd, 0x3a, 0xb3, 0x40, 0xbf, 0x3c, 0xd7, 0x2f, 0xef, 0x1c, 0x74, 0x07, 0x8a, 0xf2,
-0xd3, 0xdf, 0x99, 0xd0, 0x77, 0xc5, 0x4f, 0xbf, 0x53, 0xbf, 0xcf, 0xc6, 0x45, 0xd6, 0x02, 0xed,
-0xf6, 0x08, 0xd3, 0x25, 0xdb, 0x3e, 0x29, 0x4f, 0x23, 0x54, 0x05, 0x4d, 0xc1, 0x3b, 0xbf, 0x23,
-0x88, 0x08, 0x66, 0xed, 0xd9, 0xd4, 0xef, 0xc0, 0xd9, 0xb2, 0xb3, 0xac, 0xb1, 0xaf, 0x1d, 0xbd,
-0x6d, 0xd4, 0x4c, 0xf3, 0xbc, 0x15, 0x93, 0x36, 0xbd, 0x50, 0x32, 0x60, 0xa2, 0x62, 0xc4, 0x57,
-0x39, 0x42, 0x3d, 0x25, 0x96, 0x04, 0x24, 0xe4, 0x0d, 0xc7, 0x19, 0xb0, 0xfc, 0xa1, 0x76, 0x9e,
-0xec, 0xa6, 0x23, 0xbb, 0x21, 0xd9, 0xe2, 0xfc, 0xb1, 0x21, 0x93, 0x42, 0xaa, 0x5b, 0x86, 0x69,
-0xe2, 0x69, 0x04, 0x5d, 0x99, 0x44, 0xf9, 0x23, 0xe2, 0xfe, 0xdf, 0xd9, 0x39, 0xb9, 0x70, 0xa1,
-0x8a, 0x95, 0x0c, 0x97, 0xbc, 0xa5, 0xa3, 0xbf, 0x97, 0xe1, 0xf0, 0x06, 0x67, 0x2b, 0x1f, 0x4b,
-0x9e, 0x62, 0xce, 0x6e, 0x82, 0x6d, 0x3e, 0x5e, 0xa3, 0x42, 0x2b, 0x1e, 0x6e, 0xf5, 0xf3, 0xcd,
-0x2f, 0xad, 0xe2, 0x97, 0xb0, 0x90, 0x86, 0x97, 0xf8, 0xaa, 0xf9, 0xc7, 0xac, 0xea, 0x0c, 0x0f,
-0xc1, 0x31, 0x3b, 0x4f, 0xbc, 0x64, 0x10, 0x6f, 0xa6, 0x6b, 0xdc, 0x59, 0x49, 0x3b, 0xe0, 0x13,
-0x62, 0xe9, 0x33, 0xc2, 0x74, 0xa4, 0x5a, 0x94, 0xc2, 0x92, 0x8e, 0x9e, 0xfb, 0xb4, 0x7d, 0xd2,
-0x96, 0xf3, 0x3e, 0x15, 0xb1, 0x34, 0x8f, 0x4f, 0xaa, 0x62, 0xce, 0x6a, 0xe4, 0x64, 0x93, 0x50,
-0x0b, 0x30, 0x3c, 0x08, 0x8b, 0xdf, 0xad, 0xbc, 0xf8, 0xa4, 0xac, 0x9a, 0xa2, 0x9d, 0x95, 0xab,
-0xb9, 0xc1, 0xf9, 0xdc, 0xbe, 0xfa, 0xc8, 0x18, 0x9d, 0x34, 0xed, 0x4b, 0x6e, 0x5b, 0x06, 0x60,
-0x2a, 0x57, 0x79, 0x41, 0xb7, 0x21, 0x0c, 0xfd, 0xe3, 0xd9, 0x07, 0xbe, 0xe1, 0xac, 0xba, 0xa7,
-0x2b, 0xad, 0x2d, 0xbb, 0x3d, 0xcf, 0xf4, 0xe6, 0x8a, 0x00, 0xe2, 0x19, 0x0f, 0x31, 0xb5, 0x43,
-0xf9, 0x4e, 0x31, 0x50, 0x57, 0x46, 0xf7, 0x31, 0x84, 0x16, 0x7a, 0xf8, 0xff, 0xdc, 0x35, 0xc8,
-0xd1, 0xbc, 0x5b, 0xba, 0x27, 0xc0, 0x25, 0xcc, 0x93, 0xdc, 0xfc, 0xef, 0x2a, 0x04, 0xc2, 0x17,
-0xbd, 0x28, 0x7b, 0x35, 0x29, 0x3c, 0x63, 0x3b, 0xb9, 0x32, 0x35, 0x23, 0x04, 0x0f, 0x62, 0xf9,
-0x06, 0xe6, 0x87, 0xd7, 0xad, 0xcf, 0xa3, 0xce, 0x8f, 0xd3, 0xe9, 0xdc, 0x76, 0xe9, 0x44, 0xf7,
-0xd6, 0x04, 0x0c, 0x11, 0xe4, 0x1a, 0x07, 0x22, 0x91, 0x25, 0x23, 0x25, 0x55, 0x20, 0x56, 0x17,
-0x0a, 0x0c, 0x18, 0x00, 0x68, 0xf5, 0x48, 0xee, 0x02, 0xec, 0x00, 0xee, 0x2e, 0xf3, 0xb8, 0xf9,
-0x96, 0xff, 0x18, 0x04, 0x66, 0x07, 0x8a, 0x0a, 0x0a, 0x0e, 0x60, 0x11, 0x44, 0x13, 0xda, 0x12,
-0xac, 0x0f, 0x2e, 0x0a, 0x16, 0x04, 0x14, 0xff, 0x1c, 0xfc, 0x40, 0xfb, 0xb0, 0xfb, 0xc0, 0xfb,
-0xb2, 0xfa, 0xf4, 0xf7, 0xf0, 0xf3, 0x66, 0xf0, 0x38, 0xef, 0xb6, 0xf1, 0x06, 0xf8, 0x18, 0x01,
-0x78, 0x0a, 0x60, 0x12, 0x16, 0x17, 0x7c, 0x18, 0xc0, 0x17, 0xd2, 0x15, 0x70, 0x13, 0x50, 0x10,
-0x4a, 0x0b, 0x72, 0x03, 0x20, 0xf9, 0x24, 0xed, 0x99, 0xe1, 0x3d, 0xd9, 0x9b, 0xd6, 0x9b, 0xda,
-0x2c, 0xe5, 0x70, 0xf4, 0x44, 0x05, 0xd8, 0x14, 0x21, 0x21, 0x29, 0x29, 0x37, 0x2d, 0xab, 0x2d,
-0x0f, 0x2a, 0x81, 0x22, 0x22, 0x16, 0x76, 0x05, 0x5c, 0xf2, 0xeb, 0xde, 0x83, 0xce, 0x13, 0xc4,
-0xd7, 0xc1, 0xa1, 0xc8, 0xb5, 0xd7, 0xc2, 0xec, 0x64, 0x04, 0x1c, 0x1b, 0xf3, 0x2d, 0x9b, 0x3b,
-0xd7, 0x42, 0x0b, 0x43, 0xb9, 0x3b, 0x37, 0x2d, 0x9c, 0x18, 0xf4, 0xff, 0x04, 0xe6, 0x53, 0xce,
-0xe1, 0xbb, 0x89, 0xb1, 0x39, 0xb1, 0x0f, 0xbb, 0xc1, 0xce, 0x88, 0xe9, 0xfc, 0x07, 0xa1, 0x25,
-0xdb, 0x3e, 0x3d, 0x50, 0xf6, 0x57, 0xcc, 0x54, 0x3b, 0x47, 0x7f, 0x31, 0xca, 0x15, 0x50, 0xf7,
-0xd7, 0xd9, 0xe9, 0xbf, 0xe7, 0xac, 0x4e, 0xa3, 0x80, 0xa4, 0x75, 0xb1, 0x93, 0xc9, 0x34, 0xea,
-0x2c, 0x0f, 0xdd, 0x32, 0xc9, 0x4f, 0x32, 0x62, 0x62, 0x67, 0x16, 0x5f, 0x75, 0x4b, 0xb3, 0x2f,
-0x68, 0x0f, 0x12, 0xee, 0xed, 0xce, 0xa1, 0xb4, 0x12, 0xa2, 0x8c, 0x99, 0xfe, 0x9c, 0x3b, 0xad,
-0x17, 0xca, 0x30, 0xf0, 0x26, 0x1a, 0xf5, 0x40, 0x84, 0x5e, 0xd2, 0x6e, 0x98, 0x6f, 0x0e, 0x62,
-0x9f, 0x49, 0x73, 0x2a, 0x28, 0x08, 0x18, 0xe6, 0xb5, 0xc6, 0xe3, 0xac, 0x40, 0x9b, 0x84, 0x94,
-0xb4, 0x9a, 0x07, 0xaf, 0x69, 0xd0, 0xa6, 0xfa, 0xbf, 0x26, 0x35, 0x4d, 0x28, 0x68, 0xc2, 0x73,
-0xce, 0x6f, 0x48, 0x5e, 0x3d, 0x43, 0xeb, 0x22, 0x5c, 0x00, 0xbf, 0xde, 0x5d, 0xc0, 0x12, 0xa8,
-0xe2, 0x98, 0x66, 0x95, 0xc2, 0x9f, 0x27, 0xb8, 0x97, 0xdc, 0x3a, 0x07, 0x61, 0x31, 0xdf, 0x53,
-0xc6, 0x69, 0xc2, 0x70, 0x46, 0x69, 0xf6, 0x55, 0xbb, 0x3a, 0xda, 0x1a, 0x82, 0xf9, 0x29, 0xd9,
-0xe1, 0xbc, 0x78, 0xa7, 0xd8, 0x9b, 0x84, 0x9c, 0x72, 0xaa, 0x3b, 0xc5, 0xea, 0xe8, 0x84, 0x10,
-0x6f, 0x35, 0x6d, 0x52, 0x94, 0x63, 0x4c, 0x67, 0x82, 0x5e, 0x3b, 0x4b, 0xe3, 0x30, 0x5c, 0x12,
-0x68, 0xf2, 0x85, 0xd4, 0xc1, 0xbb, 0x0c, 0xab, 0xac, 0xa4, 0x9a, 0xa9, 0xc5, 0xb9, 0x6d, 0xd3,
-0x30, 0xf3, 0x68, 0x14, 0xbd, 0x32, 0xd1, 0x49, 0x24, 0x57, 0x56, 0x59, 0x63, 0x50, 0x87, 0x3e,
-0x07, 0x26, 0x12, 0x0a, 0xda, 0xed, 0xab, 0xd4, 0x83, 0xc1, 0xa1, 0xb6, 0xc3, 0xb4, 0x37, 0xbc,
-0x59, 0xcb, 0xd1, 0xe0, 0x0c, 0xfa, 0x08, 0x14, 0x89, 0x2b, 0x93, 0x3d, 0x85, 0x47, 0x0d, 0x48,
-0x57, 0x3f, 0x8d, 0x2e, 0xd6, 0x18, 0xfa, 0x00, 0xbe, 0xea, 0xf9, 0xd8, 0x47, 0xcd, 0x69, 0xc8,
-0x07, 0xca, 0xc5, 0xd0, 0xad, 0xdb, 0x06, 0xea, 0xee, 0xfa, 0x0e, 0x0d, 0x2b, 0x1e, 0xb5, 0x2b,
-0x1f, 0x33, 0x1b, 0x33, 0x8f, 0x2b, 0x41, 0x1e, 0xf6, 0x0d, 0x94, 0xfd, 0x0c, 0xf0, 0x82, 0xe6,
-0x63, 0xe1, 0xe3, 0xdf, 0x13, 0xe1, 0xe6, 0xe3, 0x5e, 0xe8, 0xce, 0xee, 0x7e, 0xf7, 0x22, 0x02,
-0x3c, 0x0d, 0xbe, 0x16, 0x4f, 0x1c, 0xc7, 0x1c, 0x2c, 0x18, 0x36, 0x10, 0x36, 0x07, 0x8a, 0xff,
-0x66, 0xfa, 0x08, 0xf8, 0x2a, 0xf7, 0xda, 0xf6, 0xe6, 0xf5, 0xea, 0xf3, 0xba, 0xf1, 0x66, 0xf0,
-0x3a, 0xf1, 0xba, 0xf4, 0xfc, 0xf9, 0xc0, 0xff, 0x5c, 0x04, 0xe2, 0x06, 0x96, 0x07, 0x74, 0x07,
-0xfc, 0x07, 0xb6, 0x09, 0x42, 0x0c, 0x88, 0x0e, 0x60, 0x0f, 0x80, 0x0d, 0x92, 0x08, 0xb2, 0x00,
-0x4c, 0xf7, 0x3a, 0xee, 0x20, 0xe7, 0x61, 0xe3, 0x69, 0xe3, 0x8e, 0xe6, 0x3c, 0xec, 0x68, 0xf3,
-0xc8, 0xfb, 0x26, 0x05, 0xdc, 0x0e, 0x42, 0x18, 0xe9, 0x1f, 0xc7, 0x24, 0xa9, 0x25, 0x81, 0x21,
-0x44, 0x18, 0x78, 0x0a, 0xc2, 0xf9, 0x9a, 0xe8, 0x65, 0xd9, 0x19, 0xcf, 0x5d, 0xcb, 0x47, 0xce,
-0x75, 0xd7, 0x7c, 0xe5, 0x52, 0xf6, 0x34, 0x08, 0x50, 0x19, 0xd5, 0x27, 0xf5, 0x32, 0xd9, 0x38,
-0xd5, 0x38, 0x2b, 0x32, 0x53, 0x24, 0x68, 0x10, 0x36, 0xf8, 0xc5, 0xde, 0x69, 0xc8, 0x53, 0xb9,
-0x35, 0xb4, 0xad, 0xb9, 0x7f, 0xc8, 0xef, 0xdd, 0x5a, 0xf6, 0xfc, 0x0e, 0x1f, 0x25, 0x7d, 0x37,
-0x4b, 0x44, 0x8f, 0x4a, 0x13, 0x49, 0xd9, 0x3e, 0x91, 0x2b, 0x72, 0x10, 0x6a, 0xf0, 0xb7, 0xcf,
-0x83, 0xb4, 0xd4, 0xa3, 0xd6, 0xa0, 0x34, 0xab, 0x7b, 0xc0, 0x8d, 0xdc, 0x04, 0xfb, 0x1c, 0x18,
-0xc1, 0x31, 0xf7, 0x45, 0xad, 0x53, 0x2a, 0x59, 0xd0, 0x54, 0xc1, 0x45, 0x17, 0x2c, 0x22, 0x0a,
-0xd2, 0xe3, 0xf3, 0xbe, 0x64, 0xa2, 0xa0, 0x93, 0x96, 0x94, 0xfc, 0xa3, 0x63, 0xbe, 0x05, 0xdf,
-0x1e, 0x01, 0x17, 0x21, 0x97, 0x3c, 0x03, 0x52, 0x68, 0x5f, 0xd6, 0x62, 0x94, 0x5a, 0x2f, 0x46,
-0xe9, 0x26, 0xca, 0xff, 0x73, 0xd6, 0x0b, 0xb1, 0xa0, 0x96, 0x60, 0x8b, 0x1a, 0x90, 0x0a, 0xa3,
-0x8b, 0xc0, 0xc2, 0xe3, 0xfc, 0x07, 0xb5, 0x29, 0x57, 0x46, 0xb4, 0x5b, 0x40, 0x67, 0xe6, 0x66,
-0x74, 0x59, 0xe1, 0x3f, 0x75, 0x1c, 0xc0, 0xf3, 0x47, 0xcb, 0xf8, 0xa8, 0x3a, 0x92, 0x68, 0x8a,
-0x94, 0x91, 0x50, 0xa6, 0x49, 0xc5, 0xca, 0xe9, 0x66, 0x0f, 0x1f, 0x32, 0x8d, 0x4e, 0xea, 0x61,
-0x88, 0x69, 0xee, 0x63, 0xe3, 0x51, 0x11, 0x35, 0x2a, 0x11, 0x80, 0xea, 0xbd, 0xc5, 0xce, 0xa7,
-0xd6, 0x94, 0x4a, 0x8f, 0xcc, 0x97, 0x5b, 0xad, 0x01, 0xcd, 0x2c, 0xf2, 0xbe, 0x17, 0x25, 0x39,
-0xf9, 0x52, 0xe6, 0x61, 0x46, 0x64, 0x14, 0x5a, 0x11, 0x45, 0x55, 0x28, 0xfe, 0x06, 0x9a, 0xe4,
-0x03, 0xc5, 0xb7, 0xab, 0x02, 0x9c, 0x88, 0x98, 0xfc, 0xa1, 0x1d, 0xb8, 0xcd, 0xd7, 0xf8, 0xfb,
-0x4b, 0x1f, 0x43, 0x3d, 0xb5, 0x51, 0xca, 0x5a, 0x1a, 0x58, 0xe9, 0x4a, 0xa1, 0x36, 0xdd, 0x1c,
-0x94, 0x00, 0x04, 0xe4, 0xb5, 0xc9, 0xb7, 0xb4, 0x28, 0xa8, 0x7a, 0xa6, 0xfb, 0xb0, 0x0b, 0xc7,
-0xec, 0xe4, 0xc0, 0x05, 0xed, 0x23, 0x13, 0x3b, 0xa9, 0x48, 0xdb, 0x4b, 0xdd, 0x45, 0x21, 0x39,
-0xa7, 0x27, 0x90, 0x13, 0xa0, 0xfd, 0xa8, 0xe7, 0x23, 0xd3, 0xa5, 0xc2, 0x19, 0xb9, 0xef, 0xb8,
-0x3d, 0xc3, 0xcf, 0xd6, 0x10, 0xf0, 0xfe, 0x09, 0x6f, 0x20, 0xf7, 0x2f, 0x8b, 0x37, 0x73, 0x37,
-0x9b, 0x31, 0x99, 0x27, 0x78, 0x1b, 0x8c, 0x0d, 0x98, 0xfe, 0x3e, 0xef, 0x87, 0xe0, 0xad, 0xd4,
-0xdd, 0xcd, 0x3d, 0xce, 0x29, 0xd6, 0xa8, 0xe4, 0x70, 0xf6, 0x04, 0x08, 0x52, 0x16, 0x4b, 0x1f,
-0xd7, 0x22, 0xb5, 0x21, 0x9d, 0x1d, 0xe4, 0x17, 0x48, 0x11, 0x16, 0x0a, 0x40, 0x02, 0x18, 0xfa,
-0xfa, 0xf1, 0xe6, 0xea, 0x42, 0xe6, 0x44, 0xe5, 0x5a, 0xe8, 0xe2, 0xee, 0x22, 0xf7, 0x44, 0xff,
-0x08, 0x06, 0x28, 0x0a, 0xcc, 0x0b, 0xb6, 0x0b, 0xda, 0x0a, 0x24, 0x0a, 0xee, 0x09, 0x0c, 0x0a,
-0x36, 0x0a, 0x86, 0x09, 0xfe, 0x06, 0xe0, 0x02, 0x8c, 0xfd, 0x46, 0xf8, 0x1c, 0xf4, 0x80, 0xf1,
-0xc0, 0xf0, 0x3c, 0xf1, 0x64, 0xf2, 0x8e, 0xf3, 0xd4, 0xf4, 0xc2, 0xf6, 0x06, 0xfa, 0x20, 0xff,
-0x28, 0x06, 0x9e, 0x0e, 0xe0, 0x16, 0x1f, 0x1d, 0x21, 0x1f, 0xfe, 0x1b, 0xee, 0x13, 0x80, 0x08,
-0x0c, 0xfc, 0x7e, 0xf0, 0x58, 0xe7, 0x01, 0xe1, 0xa1, 0xdd, 0xb1, 0xdc, 0x8b, 0xde, 0x59, 0xe3,
-0xc4, 0xeb, 0x1e, 0xf8, 0xaa, 0x07, 0xca, 0x18, 0x89, 0x28, 0x89, 0x33, 0xe3, 0x36, 0x99, 0x31,
-0x73, 0x24, 0x1e, 0x12, 0x16, 0xfe, 0x42, 0xeb, 0xcf, 0xdb, 0xa3, 0xd0, 0xbd, 0xc9, 0x67, 0xc7,
-0x35, 0xca, 0xcb, 0xd2, 0xb7, 0xe1, 0x50, 0xf6, 0xb0, 0x0e, 0x9b, 0x27, 0xab, 0x3c, 0xdb, 0x49,
-0x35, 0x4c, 0x1d, 0x43, 0x7f, 0x30, 0x9a, 0x17, 0xc4, 0xfc, 0x85, 0xe3, 0x6f, 0xce, 0x1b, 0xbf,
-0x4f, 0xb6, 0x7f, 0xb4, 0x57, 0xba, 0x87, 0xc8, 0xa3, 0xde, 0x6e, 0xfb, 0xec, 0x1a, 0xad, 0x38,
-0xcf, 0x4f, 0x4e, 0x5c, 0xf8, 0x5b, 0xb9, 0x4e, 0xf1, 0x36, 0xac, 0x18, 0x52, 0xf8, 0xa3, 0xd9,
-0x09, 0xc0, 0x93, 0xad, 0x24, 0xa4, 0xc2, 0xa4, 0xdd, 0xaf, 0x7f, 0xc5, 0xa9, 0xe3, 0xcc, 0x06,
-0x01, 0x2a, 0xb5, 0x48, 0x88, 0x5e, 0x94, 0x68, 0xf4, 0x64, 0x3b, 0x54, 0xf9, 0x38, 0x00, 0x17,
-0x82, 0xf2, 0xe3, 0xcf, 0x15, 0xb3, 0xb2, 0x9f, 0xdc, 0x97, 0xa4, 0x9c, 0xfb, 0xad, 0xef, 0xc9,
-0x0c, 0xed, 0x98, 0x12, 0xd7, 0x35, 0xcb, 0x52, 0x66, 0x66, 0xd4, 0x6d, 0x0a, 0x68, 0x26, 0x55,
-0x7f, 0x37, 0x64, 0x12, 0x68, 0xea, 0xb1, 0xc4, 0x9c, 0xa6, 0x74, 0x94, 0x6c, 0x90, 0xe0, 0x9a,
-0xd7, 0xb1, 0x55, 0xd2, 0x78, 0xf7, 0xad, 0x1c, 0xeb, 0x3d, 0x4c, 0x58, 0x5a, 0x69, 0xc2, 0x6e,
-0xec, 0x66, 0xeb, 0x51, 0xab, 0x31, 0xd6, 0x09, 0xcb, 0xdf, 0xc7, 0xb9, 0xee, 0x9d, 0x4c, 0x90,
-0xe4, 0x91, 0x82, 0xa1, 0x09, 0xbc, 0x5d, 0xdd, 0x16, 0x01, 0x45, 0x23, 0x1f, 0x41, 0x7c, 0x58,
-0x22, 0x67, 0x68, 0x6a, 0xba, 0x60, 0xbd, 0x49, 0xb9, 0x27, 0xe4, 0xfe, 0x93, 0xd5, 0xb1, 0xb2,
-0x00, 0x9c, 0x28, 0x94, 0xe0, 0x9a, 0x7d, 0xad, 0x6b, 0xc8, 0xc6, 0xe7, 0xce, 0x07, 0xb7, 0x25,
-0x9d, 0x3f, 0x93, 0x53, 0x56, 0x5f, 0x50, 0x60, 0xca, 0x54, 0xeb, 0x3c, 0x3a, 0x1b, 0xcc, 0xf4,
-0x1b, 0xd0, 0x9d, 0xb3, 0x6e, 0xa3, 0xc0, 0xa0, 0x0c, 0xaa, 0x95, 0xbc, 0xfd, 0xd4, 0x0a, 0xf0,
-0x4a, 0x0b, 0x7b, 0x24, 0x3d, 0x3a, 0x5d, 0x4a, 0xf5, 0x52, 0x99, 0x51, 0x47, 0x45, 0x65, 0x2e,
-0x22, 0x10, 0x58, 0xef, 0xd7, 0xd1, 0x7f, 0xbc, 0xc3, 0xb1, 0x1b, 0xb2, 0x9d, 0xbb, 0xed, 0xcb,
-0x59, 0xe0, 0xb4, 0xf6, 0xb6, 0x0c, 0xe5, 0x20, 0x7d, 0x31, 0x29, 0x3d, 0x2d, 0x42, 0x15, 0x3f,
-0x5d, 0x33, 0x35, 0x20, 0x3a, 0x08, 0x80, 0xef, 0x37, 0xda, 0x81, 0xcb, 0xfb, 0xc4, 0x57, 0xc6,
-0x61, 0xce, 0x2f, 0xdb, 0xd8, 0xea, 0x42, 0xfb, 0x28, 0x0b, 0xf2, 0x18, 0xd1, 0x23, 0xaf, 0x2a,
-0x0d, 0x2d, 0x6d, 0x2a, 0xc5, 0x22, 0x94, 0x16, 0x54, 0x07, 0x7a, 0xf7, 0x74, 0xe9, 0x79, 0xdf,
-0xa5, 0xda, 0x7f, 0xdb, 0xff, 0xe0, 0x98, 0xe9, 0x84, 0xf3, 0x42, 0xfd, 0xac, 0x05, 0x4a, 0x0c,
-0xec, 0x10, 0xfe, 0x13, 0xe8, 0x15, 0x96, 0x16, 0x5a, 0x15, 0xc4, 0x11, 0xa8, 0x0b, 0xe0, 0x03,
-0xd0, 0xfb, 0x4a, 0xf5, 0xac, 0xf1, 0x22, 0xf1, 0xfa, 0xf2, 0xc8, 0xf5, 0x62, 0xf8, 0xde, 0xf9,
-0x0c, 0xfa, 0x4e, 0xf9, 0x28, 0xf9, 0x10, 0xfb, 0x9c, 0xff, 0x50, 0x06, 0x60, 0x0d, 0xd6, 0x12,
-0x1a, 0x15, 0x2e, 0x14, 0xe0, 0x10, 0xd8, 0x0c, 0x08, 0x09, 0xc0, 0x05, 0x52, 0x02, 0xdc, 0xfd,
-0xc8, 0xf7, 0x3c, 0xf0, 0x5e, 0xe8, 0x0f, 0xe2, 0xdf, 0xdf, 0x5f, 0xe3, 0x96, 0xec, 0x00, 0xfa,
-0x0e, 0x09, 0x92, 0x16, 0x6d, 0x20, 0x9d, 0x25, 0xa5, 0x26, 0x6f, 0x24, 0xb5, 0x1f, 0x3c, 0x18,
-0x10, 0x0e, 0xee, 0x00, 0xb2, 0xf1, 0xf7, 0xe1, 0x55, 0xd4, 0x97, 0xcb, 0xfb, 0xc9, 0x9d, 0xd0,
-0xcb, 0xde, 0x76, 0xf2, 0x14, 0x08, 0x93, 0x1c, 0xcf, 0x2c, 0x47, 0x37, 0x6f, 0x3b, 0x9d, 0x39,
-0xeb, 0x31, 0xbd, 0x24, 0x76, 0x12, 0xb4, 0xfc, 0xde, 0xe5, 0xc9, 0xd0, 0x75, 0xc0, 0x9f, 0xb7,
-0x0d, 0xb8, 0x53, 0xc2, 0x4b, 0xd5, 0x86, 0xee, 0xa4, 0x0a, 0xd5, 0x25, 0x47, 0x3c, 0x47, 0x4b,
-0x53, 0x51, 0xb5, 0x4d, 0xbd, 0x40, 0xa1, 0x2b, 0xe0, 0x10, 0x80, 0xf3, 0x2f, 0xd7, 0x4f, 0xbf,
-0xc3, 0xae, 0x92, 0xa7, 0xd2, 0xaa, 0xab, 0xb8, 0x3d, 0xd0, 0x30, 0xef, 0x86, 0x11, 0x77, 0x32,
-0x5f, 0x4d, 0x60, 0x5e, 0x04, 0x63, 0xb4, 0x5a, 0xed, 0x46, 0x9f, 0x2a, 0xc2, 0x09, 0x50, 0xe8,
-0x25, 0xca, 0x4b, 0xb2, 0xfe, 0xa2, 0x8e, 0x9d, 0x1c, 0xa3, 0x3d, 0xb4, 0x1b, 0xd0, 0x0a, 0xf4,
-0x72, 0x1b, 0x8d, 0x40, 0x7a, 0x5d, 0x66, 0x6d, 0x0a, 0x6e, 0xf8, 0x5f, 0x37, 0x46, 0x1f, 0x25,
-0x52, 0x01, 0xd7, 0xde, 0xd7, 0xc0, 0xd4, 0xa9, 0xba, 0x9b, 0x08, 0x98, 0x12, 0xa0, 0x7b, 0xb4,
-0x7f, 0xd4, 0xc8, 0xfc, 0x9b, 0x27, 0xef, 0x4d, 0x6e, 0x69, 0xac, 0x75, 0x3a, 0x71, 0xee, 0x5d,
-0x4d, 0x40, 0x3d, 0x1d, 0x26, 0xf9, 0x27, 0xd7, 0x29, 0xba, 0xba, 0xa4, 0xb6, 0x98, 0x98, 0x97,
-0xd8, 0xa2, 0x0b, 0xbb, 0x79, 0xde, 0xc0, 0x08, 0x3d, 0x33, 0xfc, 0x56, 0x2e, 0x6e, 0x66, 0x75,
-0x6e, 0x6c, 0x6a, 0x56, 0xd5, 0x37, 0x4c, 0x15, 0x4a, 0xf2, 0xe9, 0xd1, 0xd5, 0xb6, 0x90, 0xa3,
-0x3a, 0x9a, 0x8c, 0x9c, 0x55, 0xab, 0x57, 0xc6, 0xcc, 0xea, 0x80, 0x13, 0x11, 0x3a, 0x82, 0x58,
-0x54, 0x6a, 0x64, 0x6d, 0x4a, 0x62, 0x07, 0x4c, 0xc5, 0x2e, 0x32, 0x0e, 0x4e, 0xed, 0x11, 0xcf,
-0x95, 0xb6, 0xae, 0xa6, 0x30, 0xa1, 0x28, 0xa7, 0xcb, 0xb8, 0x71, 0xd4, 0xb6, 0xf6, 0x9c, 0x1a,
-0x0b, 0x3b, 0x71, 0x53, 0x68, 0x60, 0xa8, 0x60, 0x1a, 0x55, 0x0b, 0x40, 0xe9, 0x24, 0xbe, 0x06,
-0x02, 0xe9, 0xe7, 0xce, 0x4d, 0xbb, 0x5d, 0xb0, 0x67, 0xaf, 0x59, 0xb8, 0x21, 0xca, 0x75, 0xe2,
-0x7c, 0xfe, 0xb2, 0x1a, 0xbd, 0x33, 0x61, 0x46, 0x1b, 0x50, 0x99, 0x4f, 0x03, 0x45, 0x1d, 0x32,
-0xdc, 0x19, 0xa2, 0xff, 0xc4, 0xe6, 0x75, 0xd2, 0x0d, 0xc5, 0xc9, 0xbf, 0xad, 0xc2, 0x7b, 0xcc,
-0x71, 0xdb, 0xb6, 0xed, 0x92, 0x01, 0xa4, 0x15, 0xcf, 0x27, 0xc1, 0x35, 0x05, 0x3d, 0x21, 0x3c,
-0x27, 0x33, 0x83, 0x23, 0xe0, 0x0f, 0xca, 0xfb, 0x60, 0xea, 0xe5, 0xdd, 0x41, 0xd7, 0x45, 0xd6,
-0xe9, 0xd9, 0x9b, 0xe0, 0xe8, 0xe8, 0x9e, 0xf2, 0xa8, 0xfd, 0xe2, 0x09, 0x2e, 0x16, 0x39, 0x20,
-0x13, 0x26, 0x31, 0x26, 0x41, 0x20, 0xd4, 0x15, 0x54, 0x09, 0x96, 0xfd, 0xae, 0xf4, 0x78, 0xef,
-0xb6, 0xed, 0x36, 0xee, 0x90, 0xef, 0xc0, 0xf0, 0xa6, 0xf1, 0x0e, 0xf3, 0x22, 0xf6, 0x6c, 0xfb,
-0x64, 0x02, 0x76, 0x09, 0xba, 0x0e, 0xf4, 0x10, 0xea, 0x0f, 0x96, 0x0c, 0xa4, 0x08, 0xd8, 0x05,
-0xd6, 0x04, 0x12, 0x05, 0x48, 0x05, 0x52, 0x04, 0x5e, 0x01, 0x4a, 0xfc, 0xd0, 0xf5, 0x86, 0xef,
-0x4c, 0xeb, 0x38, 0xea, 0x48, 0xec, 0x0e, 0xf1, 0x1e, 0xf7, 0x68, 0xfd, 0x44, 0x03, 0xd4, 0x08,
-0xbc, 0x0e, 0xa6, 0x14, 0xa2, 0x19, 0xaf, 0x1c, 0xb9, 0x1c, 0x04, 0x19, 0x42, 0x11, 0xc2, 0x05,
-0xdc, 0xf7, 0xd8, 0xe9, 0xbf, 0xdd, 0xfd, 0xd5, 0x1b, 0xd4, 0x07, 0xd8, 0x1f, 0xe1, 0xa8, 0xed,
-0x2a, 0xfc, 0x50, 0x0b, 0x88, 0x19, 0x61, 0x25, 0xc1, 0x2d, 0x77, 0x31, 0x1b, 0x30, 0x49, 0x29,
-0xd5, 0x1c, 0x76, 0x0b, 0xa4, 0xf6, 0xe9, 0xe0, 0xf9, 0xcd, 0x0d, 0xc1, 0xf3, 0xbc, 0x93, 0xc2,
-0xa5, 0xd0, 0xb2, 0xe4, 0xa2, 0xfb, 0x74, 0x12, 0x99, 0x26, 0x15, 0x36, 0xdd, 0x3f, 0x6b, 0x43,
-0x5f, 0x40, 0x2b, 0x36, 0xbd, 0x24, 0x06, 0x0d, 0x04, 0xf1, 0x43, 0xd4, 0x73, 0xbb, 0x85, 0xab,
-0xfc, 0xa7, 0x93, 0xb1, 0x1d, 0xc6, 0xdd, 0xe1, 0x14, 0x00, 0x93, 0x1c, 0x65, 0x34, 0xf5, 0x45,
-0x47, 0x50, 0xfd, 0x52, 0x0b, 0x4d, 0x6d, 0x3e, 0x23, 0x27, 0x94, 0x08, 0xb0, 0xe5, 0x87, 0xc3,
-0x02, 0xa8, 0xba, 0x98, 0xe0, 0x98, 0x06, 0xa8, 0x31, 0xc3, 0xb8, 0xe4, 0x70, 0x07, 0x0f, 0x27,
-0xc7, 0x40, 0x3f, 0x53, 0x62, 0x5d, 0x30, 0x5e, 0xec, 0x54, 0x39, 0x41, 0xd5, 0x23, 0x36, 0xff,
-0xaf, 0xd7, 0x45, 0xb3, 0xd6, 0x98, 0xee, 0x8c, 0xdc, 0x91, 0xf6, 0xa5, 0x0f, 0xc5, 0xf8, 0xe9,
-0xd4, 0x0e, 0xeb, 0x2f, 0x97, 0x4a, 0x36, 0x5d, 0x0c, 0x66, 0xd2, 0x63, 0xbe, 0x55, 0x97, 0x3c,
-0x3e, 0x1a, 0xf4, 0xf1, 0x8b, 0xc9, 0x0a, 0xa7, 0x72, 0x90, 0x2e, 0x89, 0xe2, 0x91, 0xec, 0xa8,
-0x0f, 0xca, 0x0c, 0xf0, 0xd0, 0x15, 0x7b, 0x37, 0x3f, 0x52, 0xdc, 0x63, 0x12, 0x6a, 0x8c, 0x63,
-0xa1, 0x50, 0xd9, 0x32, 0xb0, 0x0d, 0x8a, 0xe5, 0xb9, 0xbf, 0xce, 0xa1, 0xdc, 0x8f, 0x52, 0x8c,
-0x76, 0x97, 0x9f, 0xaf, 0x17, 0xd1, 0x1c, 0xf7, 0x8f, 0x1c, 0x4f, 0x3d, 0x6a, 0x56, 0xd2, 0x64,
-0xc4, 0x66, 0x84, 0x5b, 0xbf, 0x44, 0x7f, 0x25, 0xd4, 0x01, 0x99, 0xdd, 0x51, 0xbd, 0xa8, 0xa4,
-0xa6, 0x96, 0x48, 0x95, 0x1a, 0xa1, 0x13, 0xb9, 0xf7, 0xd9, 0xee, 0xfe, 0xd7, 0x22, 0x3d, 0x41,
-0x6e, 0x56, 0xfe, 0x5f, 0xc6, 0x5c, 0xc7, 0x4d, 0xd3, 0x35, 0x66, 0x18, 0x10, 0xf9, 0x01, 0xdb,
-0xdf, 0xc0, 0x2d, 0xad, 0x74, 0xa2, 0xa6, 0xa2, 0xa7, 0xae, 0xd7, 0xc5, 0xd8, 0xe4, 0x1a, 0x07,
-0x5b, 0x27, 0xaf, 0x40, 0xfb, 0x4f, 0xbd, 0x53, 0x53, 0x4c, 0x4b, 0x3c, 0x93, 0x26, 0x44, 0x0e,
-0xc2, 0xf5, 0x95, 0xde, 0x3f, 0xca, 0x1d, 0xbb, 0xa1, 0xb2, 0x93, 0xb3, 0xe9, 0xbe, 0x9d, 0xd3,
-0x02, 0xef, 0x1c, 0x0c, 0xc3, 0x25, 0x35, 0x38, 0x49, 0x41, 0xa7, 0x40, 0x71, 0x38, 0xa9, 0x2a,
-0x16, 0x1a, 0x8a, 0x08, 0x1c, 0xf7, 0xb2, 0xe6, 0x1b, 0xd8, 0x9d, 0xcc, 0xab, 0xc6, 0xd1, 0xc7,
-0x2b, 0xd1, 0xaf, 0xe1, 0x74, 0xf6, 0x66, 0x0b, 0xdf, 0x1c, 0x05, 0x28, 0x2b, 0x2c, 0x61, 0x2a,
-0x0b, 0x24, 0x3c, 0x1b, 0x30, 0x11, 0xe6, 0x06, 0xba, 0xfc, 0xd0, 0xf2, 0x66, 0xe9, 0xa7, 0xe1,
-0x19, 0xdd, 0x2f, 0xdd, 0x79, 0xe2, 0x3c, 0xec, 0x82, 0xf8, 0xae, 0x04, 0x1a, 0x0e, 0x9e, 0x13,
-0x46, 0x15, 0x0a, 0x14, 0x2e, 0x11, 0xc2, 0x0d, 0x70, 0x0a, 0x94, 0x07, 0xe2, 0x04, 0xb8, 0x01,
-0xc0, 0xfd, 0x44, 0xf9, 0xc4, 0xf4, 0x78, 0xf1, 0xf8, 0xef, 0x9e, 0xf0, 0x2a, 0xf3, 0x78, 0xf6,
-0xa2, 0xf9, 0x28, 0xfc, 0x0a, 0xfe, 0xb6, 0xff, 0xd2, 0x01, 0x7e, 0x04, 0x40, 0x08, 0xbe, 0x0c,
-0x26, 0x11, 0x44, 0x14, 0x92, 0x14, 0x3e, 0x11, 0x6c, 0x0a, 0x32, 0x01, 0x7e, 0xf7, 0xec, 0xee,
-0xa6, 0xe8, 0x2e, 0xe5, 0x0a, 0xe4, 0x14, 0xe5, 0xe6, 0xe7, 0x92, 0xec, 0x50, 0xf3, 0x70, 0xfc,
-0xec, 0x07, 0xf2, 0x14, 0x3b, 0x21, 0x59, 0x2a, 0xb7, 0x2d, 0x61, 0x29, 0xdf, 0x1d, 0xe0, 0x0c,
-0xe0, 0xf9, 0x5a, 0xe8, 0xa1, 0xda, 0x01, 0xd2, 0xa1, 0xce, 0x95, 0xcf, 0xbd, 0xd4, 0xab, 0xdd,
-0x70, 0xea, 0x0a, 0xfb, 0x6a, 0x0e, 0x7f, 0x22, 0x53, 0x34, 0x4d, 0x40, 0x15, 0x43, 0x67, 0x3b,
-0x93, 0x29, 0x92, 0x11, 0x60, 0xf7, 0x8b, 0xdf, 0xf5, 0xcc, 0x07, 0xc1, 0xc3, 0xbb, 0xc7, 0xbc,
-0x0f, 0xc4, 0x73, 0xd1, 0x10, 0xe5, 0xa2, 0xfd, 0xe4, 0x18, 0x4f, 0x33, 0x77, 0x48, 0x85, 0x54,
-0xa9, 0x54, 0x3b, 0x48, 0x4f, 0x31, 0xb2, 0x13, 0x3e, 0xf4, 0x2b, 0xd7, 0x3f, 0xc0, 0xe5, 0xb0,
-0x52, 0xaa, 0x7d, 0xac, 0x9f, 0xb7, 0xbf, 0xcb, 0x32, 0xe7, 0x7e, 0x07, 0x59, 0x28, 0x91, 0x45,
-0x82, 0x5a, 0xf6, 0x63, 0xda, 0x5f, 0x77, 0x4e, 0xe7, 0x32, 0xaa, 0x10, 0x0c, 0xed, 0x4b, 0xcc,
-0x6b, 0xb2, 0x04, 0xa2, 0x74, 0x9c, 0x36, 0xa2, 0x2f, 0xb3, 0x0d, 0xce, 0x76, 0xef, 0xce, 0x13,
-0xf5, 0x35, 0x25, 0x52, 0xb2, 0x64, 0xbe, 0x6a, 0x92, 0x63, 0xcb, 0x4f, 0xbd, 0x31, 0x4c, 0x0d,
-0xa0, 0xe6, 0xfb, 0xc2, 0x42, 0xa7, 0xf0, 0x96, 0xee, 0x93, 0xba, 0x9e, 0x89, 0xb5, 0xe9, 0xd5,
-0x1a, 0xfb, 0x0f, 0x20, 0xed, 0x40, 0xfc, 0x59, 0x1e, 0x69, 0x30, 0x6c, 0x9a, 0x62, 0xbf, 0x4c,
-0x0f, 0x2d, 0x5c, 0x06, 0xe7, 0xdd, 0x47, 0xb9, 0x3e, 0x9e, 0xd4, 0x90, 0x82, 0x92, 0x9c, 0xa2,
-0x41, 0xbe, 0x39, 0xe1, 0x38, 0x06, 0xdb, 0x28, 0xef, 0x45, 0x46, 0x5b, 0x1c, 0x67, 0xe0, 0x67,
-0xaa, 0x5c, 0xbd, 0x45, 0xb5, 0x24, 0x24, 0xfd, 0x95, 0xd4, 0xd1, 0xb1, 0x88, 0x9a, 0x64, 0x92,
-0x92, 0x99, 0xf9, 0xad, 0x89, 0xcb, 0x76, 0xed, 0x2e, 0x0f, 0x65, 0x2d, 0xf9, 0x45, 0x64, 0x57,
-0x38, 0x60, 0xd6, 0x5e, 0x4b, 0x52, 0x85, 0x3a, 0x7e, 0x19, 0x2a, 0xf3, 0xbd, 0xcd, 0xd1, 0xaf,
-0x7a, 0x9e, 0xfc, 0x9b, 0x28, 0xa7, 0xe5, 0xbc, 0xdb, 0xd8, 0xcc, 0xf6, 0x60, 0x13, 0x3f, 0x2c,
-0x39, 0x40, 0xe7, 0x4d, 0x35, 0x54, 0x23, 0x51, 0x05, 0x44, 0xe9, 0x2c, 0xfe, 0x0d, 0xf0, 0xeb,
-0x69, 0xcc, 0x47, 0xb5, 0x44, 0xaa, 0xf3, 0xab, 0x6f, 0xb8, 0x99, 0xcc, 0x88, 0xe4, 0x26, 0xfd,
-0x2c, 0x14, 0xbf, 0x27, 0x15, 0x37, 0x47, 0x41, 0x9d, 0x44, 0x85, 0x40, 0xcb, 0x33, 0x5f, 0x1f,
-0xbc, 0x05, 0xa6, 0xea, 0xfd, 0xd2, 0xf5, 0xc2, 0x79, 0xbc, 0x91, 0xbf, 0xa1, 0xca, 0xa1, 0xda,
-0x60, 0xed, 0x46, 0x00, 0x5e, 0x11, 0xd9, 0x1f, 0x5f, 0x2a, 0x65, 0x30, 0x85, 0x31, 0xc9, 0x2c,
-0xb1, 0x22, 0xd6, 0x13, 0xdc, 0x01, 0x9c, 0xef, 0x2d, 0xe0, 0xcf, 0xd5, 0x15, 0xd2, 0xdf, 0xd4,
-0xb9, 0xdc, 0x60, 0xe8, 0x34, 0xf5, 0xb2, 0x01, 0x58, 0x0c, 0x26, 0x14, 0xfa, 0x18, 0x08, 0x1b,
-0xa4, 0x1a, 0x2c, 0x18, 0xce, 0x13, 0x46, 0x0d, 0xfe, 0x04, 0xd0, 0xfb, 0x18, 0xf3, 0xa8, 0xec,
-0xa2, 0xe9, 0x6a, 0xea, 0x68, 0xee, 0x32, 0xf4, 0x24, 0xfa, 0xfc, 0xfe, 0xf6, 0x01, 0xf4, 0x02,
-0xd8, 0x02, 0xbe, 0x02, 0xe4, 0x03, 0xa6, 0x06, 0x1e, 0x0a, 0xe4, 0x0c, 0xc2, 0x0d, 0x04, 0x0c,
-0x5c, 0x08, 0x34, 0x04, 0xb4, 0x00, 0xba, 0xfe, 0xc8, 0xfd, 0xc2, 0xfc, 0xc8, 0xfa, 0x1c, 0xf7,
-0x54, 0xf2, 0x8a, 0xed, 0x8e, 0xea, 0x50, 0xeb, 0xb8, 0xf0, 0x5a, 0xfa, 0x2a, 0x06, 0x8a, 0x11,
-0xfa, 0x19, 0x1d, 0x1e, 0x23, 0x1e, 0x42, 0x1b, 0x9a, 0x16, 0xce, 0x10, 0x94, 0x09, 0x80, 0x00,
-0x92, 0xf5, 0x9e, 0xe9, 0x4f, 0xde, 0x15, 0xd6, 0x47, 0xd3, 0x77, 0xd7, 0xcf, 0xe2, 0x84, 0xf3,
-0xea, 0x06, 0x82, 0x19, 0x17, 0x28, 0x03, 0x31, 0xbd, 0x33, 0x1b, 0x31, 0xbb, 0x29, 0x7b, 0x1e,
-0x7c, 0x0f, 0x8c, 0xfd, 0x4a, 0xea, 0xa5, 0xd7, 0xf1, 0xc8, 0x5d, 0xc0, 0x29, 0xc0, 0xfd, 0xc8,
-0xeb, 0xd9, 0xf6, 0xf0, 0xa2, 0x0a, 0x15, 0x23, 0xd9, 0x36, 0x9b, 0x43, 0xf3, 0x47, 0x13, 0x44,
-0x6d, 0x38, 0x21, 0x26, 0x10, 0x0f, 0x2c, 0xf5, 0xb1, 0xdb, 0xdf, 0xc5, 0x65, 0xb6, 0xf3, 0xaf,
-0xf3, 0xb2, 0xdb, 0xbf, 0x65, 0xd5, 0x5c, 0xf1, 0x48, 0x10, 0x03, 0x2e, 0x43, 0x46, 0x96, 0x55,
-0xf8, 0x59, 0x8f, 0x52, 0xbf, 0x40, 0xaf, 0x26, 0xec, 0x07, 0x32, 0xe8, 0x75, 0xcb, 0x1f, 0xb5,
-0x90, 0xa7, 0xf6, 0xa3, 0x9a, 0xaa, 0x61, 0xbb, 0x43, 0xd5, 0xfa, 0xf5, 0xb0, 0x19, 0x95, 0x3b,
-0x70, 0x56, 0xec, 0x65, 0x3a, 0x67, 0x16, 0x5a, 0x4f, 0x41, 0x9f, 0x20, 0x3a, 0xfd, 0x4f, 0xdb,
-0xb1, 0xbe, 0x4a, 0xaa, 0x52, 0x9f, 0x76, 0x9e, 0x04, 0xa8, 0xf3, 0xbb, 0x97, 0xd9, 0x40, 0xfe,
-0x69, 0x25, 0x67, 0x49, 0x24, 0x64, 0xbc, 0x70, 0xfe, 0x6c, 0x08, 0x5a, 0x05, 0x3c, 0x30, 0x18,
-0x7c, 0xf3, 0x27, 0xd2, 0x3d, 0xb7, 0xd8, 0xa4, 0xdc, 0x9b, 0xf2, 0x9c, 0xee, 0xa8, 0x03, 0xc0,
-0x1b, 0xe1, 0xa2, 0x08, 0x21, 0x31, 0x39, 0x54, 0xcc, 0x6b, 0x5e, 0x73, 0x6a, 0x6a, 0x0f, 0x53,
-0xd1, 0x32, 0xa8, 0x0e, 0x4c, 0xeb, 0x41, 0xcc, 0x0f, 0xb4, 0x74, 0xa4, 0x2e, 0x9e, 0x4c, 0xa2,
-0x63, 0xb1, 0x73, 0xcb, 0x32, 0xee, 0x62, 0x15, 0x37, 0x3b, 0xb8, 0x59, 0x8e, 0x6b, 0xde, 0x6d,
-0x06, 0x61, 0x41, 0x48, 0x7b, 0x28, 0x72, 0x06, 0xbe, 0xe5, 0xcb, 0xc9, 0x93, 0xb4, 0xc0, 0xa7,
-0xb2, 0xa4, 0xcf, 0xab, 0xc3, 0xbd, 0x07, 0xd9, 0x9e, 0xfa, 0x3f, 0x1e, 0xa5, 0x3e, 0xd6, 0x56,
-0x4a, 0x63, 0x16, 0x62, 0x21, 0x54, 0x85, 0x3c, 0xff, 0x1e, 0xda, 0xff, 0x5b, 0xe2, 0x91, 0xc9,
-0xeb, 0xb7, 0x39, 0xaf, 0x19, 0xb0, 0xb3, 0xba, 0xfb, 0xcd, 0xaa, 0xe7, 0xca, 0x04, 0xa5, 0x21,
-0x97, 0x3a, 0x59, 0x4c, 0x6b, 0x54, 0x91, 0x51, 0xaf, 0x44, 0xc3, 0x2f, 0xfc, 0x15, 0x2e, 0xfb,
-0x4f, 0xe2, 0x87, 0xce, 0xff, 0xc1, 0x8f, 0xbd, 0xd7, 0xc1, 0x99, 0xcd, 0x0f, 0xdf, 0x10, 0xf4,
-0xe0, 0x09, 0xa3, 0x1e, 0x4f, 0x30, 0xa5, 0x3c, 0xf9, 0x41, 0x21, 0x3f, 0x25, 0x34, 0xc5, 0x22,
-0x90, 0x0d, 0xe6, 0xf7, 0x0c, 0xe5, 0x67, 0xd7, 0xb5, 0xd0, 0xf7, 0xd0, 0x05, 0xd7, 0x1f, 0xe1,
-0x60, 0xed, 0x6a, 0xfa, 0x82, 0x07, 0xde, 0x13, 0x2f, 0x1f, 0x9d, 0x27, 0xc7, 0x2b, 0x43, 0x2a,
-0xa7, 0x22, 0x62, 0x16, 0x56, 0x07, 0xda, 0xf8, 0x66, 0xed, 0xbe, 0xe6, 0x2e, 0xe5, 0xb2, 0xe7,
-0x80, 0xec, 0xd0, 0xf1, 0xac, 0xf6, 0x0a, 0xfb, 0xc4, 0xff, 0x4e, 0x05, 0xba, 0x0b, 0xb6, 0x11,
-0xaa, 0x15, 0x52, 0x16, 0xec, 0x12, 0x96, 0x0c, 0x24, 0x05, 0xd0, 0xfe, 0x66, 0xfb, 0xc0, 0xfa,
-0x46, 0xfc, 0x5e, 0xfe, 0x28, 0xff, 0xfa, 0xfd, 0xc4, 0xfa, 0xda, 0xf6, 0x06, 0xf4, 0x5c, 0xf3,
-0x5e, 0xf5, 0x6a, 0xf9, 0x16, 0xfe, 0x72, 0x02, 0x9e, 0x05, 0xd6, 0x07, 0xe2, 0x09, 0x86, 0x0c,
-0xd8, 0x0f, 0xf6, 0x12, 0x72, 0x14, 0x38, 0x13, 0x80, 0x0e, 0x40, 0x06, 0x94, 0xfb, 0x1c, 0xf0,
-0x4c, 0xe6, 0xe5, 0xdf, 0x19, 0xde, 0x35, 0xe1, 0x54, 0xe8, 0x7a, 0xf2, 0xe4, 0xfd, 0x7e, 0x09,
-0x82, 0x14, 0x25, 0x1e, 0x63, 0x25, 0x41, 0x29, 0x9f, 0x28, 0x4f, 0x23, 0x2c, 0x19, 0x9c, 0x0a,
-0x2e, 0xf9, 0xde, 0xe6, 0xbd, 0xd6, 0x79, 0xcb, 0x3f, 0xc7, 0x53, 0xcb, 0xf7, 0xd6, 0x92, 0xe8,
-0x10, 0xfd, 0x92, 0x11, 0xbf, 0x23, 0xcf, 0x31, 0x8d, 0x3a, 0x27, 0x3d, 0x67, 0x39, 0x75, 0x2f,
-0xd1, 0x1f, 0x14, 0x0b, 0xea, 0xf2, 0x0d, 0xda, 0x59, 0xc4, 0xe9, 0xb5, 0xb9, 0xb1, 0x6d, 0xb9,
-0xef, 0xcb, 0xb2, 0xe5, 0x50, 0x02, 0x37, 0x1d, 0x89, 0x33, 0x29, 0x43, 0x53, 0x4b, 0xe7, 0x4b,
-0xe7, 0x44, 0xdd, 0x36, 0x05, 0x22, 0x4e, 0x07, 0xee, 0xe8, 0xbd, 0xca, 0x97, 0xb1, 0xb8, 0xa2,
-0xa0, 0xa1, 0xed, 0xae, 0x77, 0xc8, 0x16, 0xe9, 0x20, 0x0b, 0x9f, 0x29, 0x57, 0x41, 0x27, 0x51,
-0x68, 0x58, 0xec, 0x56, 0xc9, 0x4c, 0x31, 0x3a, 0xcf, 0x1f, 0x32, 0xff, 0x85, 0xdb, 0xc7, 0xb9,
-0x3c, 0xa0, 0xfe, 0x93, 0xb2, 0x97, 0xf2, 0xaa, 0xfd, 0xc9, 0xd8, 0xee, 0x84, 0x13, 0x53, 0x33,
-0xa3, 0x4b, 0x48, 0x5b, 0x70, 0x61, 0x98, 0x5d, 0xa7, 0x4f, 0x3b, 0x38, 0x6c, 0x18, 0x22, 0xf3,
-0xaf, 0xcc, 0x26, 0xab, 0x70, 0x94, 0xc6, 0x8c, 0x88, 0x95, 0x29, 0xad, 0x53, 0xcf, 0x18, 0xf6,
-0xa0, 0x1b, 0x81, 0x3b, 0x6b, 0x53, 0x04, 0x62, 0x00, 0x66, 0x98, 0x5e, 0x1b, 0x4c, 0xb5, 0x2f,
-0x14, 0x0c, 0x04, 0xe5, 0xad, 0xbf, 0xe8, 0xa1, 0x82, 0x90, 0xc4, 0x8d, 0x4c, 0x9a, 0xff, 0xb3,
-0xb3, 0xd6, 0x18, 0xfd, 0xe5, 0x21, 0x11, 0x41, 0x04, 0x58, 0x8c, 0x64, 0x00, 0x65, 0x4e, 0x59,
-0x61, 0x42, 0x09, 0x23, 0xbe, 0xfe, 0xbb, 0xd9, 0x2f, 0xb9, 0x3a, 0xa1, 0xcc, 0x94, 0x84, 0x95,
-0x78, 0xa3, 0xff, 0xbc, 0xc5, 0xde, 0xcc, 0x03, 0x31, 0x27, 0xa9, 0x44, 0xea, 0x58, 0x9a, 0x61,
-0x82, 0x5d, 0x73, 0x4d, 0x2b, 0x34, 0xbc, 0x14, 0xb0, 0xf3, 0x69, 0xd4, 0x63, 0xba, 0x56, 0xa8,
-0xe2, 0x9f, 0x18, 0xa2, 0x99, 0xaf, 0xab, 0xc7, 0x1a, 0xe7, 0xe0, 0x09, 0x4b, 0x2a, 0x35, 0x44,
-0x11, 0x54, 0xb2, 0x57, 0x7f, 0x4f, 0xb5, 0x3d, 0x35, 0x25, 0xd8, 0x09, 0xc0, 0xee, 0x47, 0xd6,
-0xcf, 0xc2, 0x37, 0xb5, 0xdb, 0xae, 0x5d, 0xb1, 0xcd, 0xbd, 0x71, 0xd3, 0x08, 0xf0, 0xaa, 0x0e,
-0x55, 0x2a, 0xc1, 0x3e, 0xbf, 0x48, 0xc7, 0x47, 0x73, 0x3d, 0x37, 0x2c, 0x9c, 0x17, 0x9a, 0x02,
-0xce, 0xee, 0xb9, 0xdd, 0xd9, 0xcf, 0xf5, 0xc5, 0x71, 0xc1, 0xc7, 0xc3, 0x27, 0xce, 0x6b, 0xe0,
-0x9a, 0xf7, 0xbe, 0x0f, 0x3b, 0x24, 0xa9, 0x31, 0x87, 0x36, 0x17, 0x33, 0x83, 0x29, 0x73, 0x1c,
-0x70, 0x0e, 0xc8, 0x00, 0x9e, 0xf4, 0xfe, 0xe9, 0x1b, 0xe1, 0x43, 0xda, 0x91, 0xd6, 0x9d, 0xd7,
-0x51, 0xde, 0x4e, 0xea, 0x9a, 0xf9, 0x42, 0x09, 0xd6, 0x15, 0x95, 0x1d, 0x73, 0x1f, 0xab, 0x1c,
-0x0e, 0x17, 0x14, 0x10, 0x4e, 0x09, 0x5c, 0x03, 0x50, 0xfe, 0xb4, 0xf9, 0x1e, 0xf5, 0xc0, 0xf0,
-0x4c, 0xed, 0x88, 0xeb, 0x54, 0xec, 0x1c, 0xf0, 0xf2, 0xf5, 0x7e, 0xfc, 0x44, 0x02, 0xfe, 0x05,
-0xe4, 0x07, 0x1a, 0x08, 0xa2, 0x07, 0x6a, 0x07, 0xe4, 0x07, 0x02, 0x09, 0x78, 0x0a, 0x74, 0x0b,
-0xb4, 0x0a, 0xd8, 0x07, 0x94, 0x02, 0xf8, 0xfb, 0x1a, 0xf5, 0x56, 0xef, 0xb2, 0xeb, 0x7c, 0xea,
-0x72, 0xeb, 0xc8, 0xed, 0x4c, 0xf1, 0x8e, 0xf5, 0xd8, 0xfa, 0x38, 0x01, 0xde, 0x08, 0x74, 0x11,
-0xfc, 0x19, 0x77, 0x20, 0xcf, 0x22, 0xa7, 0x1f, 0x60, 0x16, 0x76, 0x08, 0x44, 0xf8, 0x00, 0xe9,
-0x51, 0xdd, 0x69, 0xd6, 0x7b, 0xd4, 0xeb, 0xd6, 0xdb, 0xdc, 0x96, 0xe5, 0x10, 0xf1, 0x1e, 0xff,
-0xfa, 0x0e, 0x61, 0x1f, 0xe9, 0x2d, 0xbb, 0x37, 0xfb, 0x39, 0xd1, 0x32, 0xed, 0x22, 0xe0, 0x0c,
-0x82, 0xf4, 0x21, 0xde, 0x13, 0xcd, 0x3f, 0xc3, 0x83, 0xc0, 0xcd, 0xc3, 0xad, 0xcc, 0x85, 0xda,
-0xa2, 0xec, 0x30, 0x02, 0x8a, 0x19, 0x39, 0x30, 0xc9, 0x42, 0x71, 0x4d, 0x3f, 0x4d, 0x3d, 0x41,
-0xd5, 0x2a, 0xaa, 0x0d, 0xb8, 0xee, 0x9d, 0xd2, 0x87, 0xbd, 0x19, 0xb1, 0xd1, 0xad, 0x07, 0xb3,
-0x9f, 0xbf, 0xf3, 0xd2, 0x36, 0xec, 0x16, 0x09, 0x9d, 0x26, 0x81, 0x41, 0x26, 0x55, 0x4e, 0x5e,
-0x46, 0x5a, 0xfb, 0x48, 0x17, 0x2d, 0x12, 0x0b, 0xb2, 0xe7, 0x15, 0xc8, 0x51, 0xb0, 0x86, 0xa2,
-0xcc, 0x9f, 0x74, 0xa7, 0xfb, 0xb8, 0x4b, 0xd3, 0xa2, 0xf3, 0x42, 0x16, 0x2f, 0x37, 0x0d, 0x52,
-0x70, 0x63, 0x42, 0x68, 0x60, 0x5f, 0xef, 0x49, 0xe3, 0x2a, 0x04, 0x06, 0x63, 0xe0, 0xe7, 0xbe,
-0xd6, 0xa5, 0x6a, 0x98, 0x58, 0x97, 0xd2, 0xa2, 0x9d, 0xb9, 0x5d, 0xd9, 0x22, 0xfe, 0x4f, 0x23,
-0x03, 0x44, 0x6e, 0x5c, 0xfe, 0x69, 0xd8, 0x6a, 0xf4, 0x5e, 0x51, 0x47, 0xb1, 0x26, 0x76, 0x00,
-0x43, 0xd9, 0x57, 0xb6, 0xf6, 0x9c, 0xd6, 0x90, 0x62, 0x93, 0xe8, 0xa3, 0x29, 0xc0, 0x5e, 0xe4,
-0x0e, 0x0b, 0x33, 0x2f, 0xa1, 0x4c, 0xcc, 0x60, 0x3a, 0x6a, 0xda, 0x67, 0xb8, 0x59, 0x09, 0x41,
-0xa9, 0x1f, 0xca, 0xf8, 0x71, 0xd1, 0x41, 0xaf, 0x26, 0x98, 0xec, 0x8f, 0x52, 0x97, 0xd9, 0xac,
-0xa7, 0xcc, 0x5a, 0xf1, 0xca, 0x15, 0x75, 0x35, 0x97, 0x4d, 0x1c, 0x5d, 0x28, 0x63, 0xfe, 0x5e,
-0x77, 0x50, 0xc9, 0x37, 0xb4, 0x16, 0xa2, 0xf0, 0xd7, 0xca, 0xdb, 0xab, 0x70, 0x99, 0x7c, 0x96,
-0x9e, 0xa2, 0xdf, 0xba, 0x87, 0xda, 0x6a, 0xfc, 0xec, 0x1b, 0xe3, 0x35, 0xf3, 0x48, 0x87, 0x54,
-0x1c, 0x58, 0xa7, 0x52, 0xd7, 0x43, 0xdb, 0x2b, 0x64, 0x0c, 0x44, 0xe9, 0x09, 0xc8, 0x0b, 0xaf,
-0xb8, 0xa2, 0xaa, 0xa4, 0x33, 0xb3, 0xf3, 0xca, 0x0c, 0xe7, 0x60, 0x03, 0x9f, 0x1c, 0xe3, 0x30,
-0x7b, 0x3f, 0xab, 0x47, 0xff, 0x48, 0xc5, 0x42, 0x8d, 0x34, 0xab, 0x1e, 0x6e, 0x03, 0x38, 0xe6,
-0x2f, 0xcc, 0x1f, 0xba, 0x05, 0xb3, 0x69, 0xb7, 0x57, 0xc5, 0x57, 0xd9, 0xf8, 0xef, 0x22, 0x06,
-0x6c, 0x19, 0x89, 0x28, 0xc5, 0x32, 0x8f, 0x37, 0xad, 0x36, 0xd7, 0x2f, 0x5d, 0x23, 0x2c, 0x12,
-0xd4, 0xfd, 0x5c, 0xe9, 0xf5, 0xd7, 0xd9, 0xcc, 0x6d, 0xc9, 0xc9, 0xcd, 0x4d, 0xd8, 0xdc, 0xe6,
-0xcc, 0xf6, 0xea, 0x05, 0xba, 0x12, 0xe6, 0x1b, 0x53, 0x21, 0x8d, 0x22, 0x7b, 0x20, 0x76, 0x1b,
-0xec, 0x13, 0x4e, 0x0a, 0x62, 0xff, 0x38, 0xf4, 0x5a, 0xea, 0xb1, 0xe3, 0xeb, 0xe0, 0xf1, 0xe2,
-0xbc, 0xe8, 0xda, 0xf0, 0x00, 0xfa, 0x58, 0x02, 0x7a, 0x08, 0xe2, 0x0b, 0xb4, 0x0c, 0xbc, 0x0b,
-0x86, 0x0a, 0x8a, 0x09, 0x06, 0x09, 0x96, 0x08, 0xf4, 0x06, 0xca, 0x03, 0x88, 0xff, 0x20, 0xfb,
-0xe0, 0xf7, 0x92, 0xf6, 0x26, 0xf7, 0xe2, 0xf8, 0x96, 0xfa, 0xf0, 0xfa, 0xd8, 0xf9, 0x74, 0xf7,
-0x24, 0xf5, 0x98, 0xf4, 0xf8, 0xf6, 0xd2, 0xfc, 0xfa, 0x04, 0x80, 0x0d, 0x1e, 0x14, 0x46, 0x17,
-0x68, 0x16, 0x9a, 0x12, 0x54, 0x0d, 0xcc, 0x07, 0x6e, 0x02, 0xb2, 0xfc, 0x24, 0xf6, 0x86, 0xee,
-0x78, 0xe6, 0xcd, 0xdf, 0xa7, 0xdc, 0x0d, 0xdf, 0x8c, 0xe7, 0x4e, 0xf5, 0xe8, 0x05, 0x64, 0x16,
-0x59, 0x23, 0xbb, 0x2a, 0x21, 0x2c, 0x3b, 0x28, 0x9d, 0x20, 0x2c, 0x16, 0xc6, 0x09, 0x9a, 0xfb,
-0x7c, 0xec, 0x67, 0xdd, 0xe3, 0xd0, 0x1d, 0xc9, 0x69, 0xc8, 0xcd, 0xcf, 0xff, 0xde, 0x06, 0xf4,
-0x88, 0x0b, 0xdf, 0x21, 0x8b, 0x33, 0x3b, 0x3e, 0x89, 0x40, 0x6f, 0x3b, 0xc9, 0x2f, 0x01, 0x1f,
-0x68, 0x0a, 0xb0, 0xf3, 0x1d, 0xdd, 0x87, 0xc9, 0x89, 0xbb, 0x71, 0xb5, 0xdd, 0xb8, 0xbb, 0xc5,
-0x9f, 0xda, 0x56, 0xf5, 0x30, 0x12, 0x71, 0x2d, 0xff, 0x42, 0xd3, 0x4f, 0x5f, 0x52, 0x81, 0x4a,
-0x79, 0x39, 0x43, 0x21, 0xf2, 0x04, 0x68, 0xe7, 0x97, 0xcc, 0x77, 0xb7, 0xf8, 0xaa, 0x7e, 0xa8,
-0x39, 0xb0, 0xc1, 0xc1, 0x59, 0xdb, 0x76, 0xfa, 0x58, 0x1b, 0xff, 0x39, 0x09, 0x52, 0xc4, 0x5f,
-0xd4, 0x60, 0xa1, 0x54, 0x45, 0x3d, 0xf9, 0x1d, 0x30, 0xfb, 0x71, 0xd9, 0x25, 0xbd, 0x9e, 0xa9,
-0x22, 0xa0, 0x68, 0xa1, 0xd5, 0xac, 0xd9, 0xc1, 0xd9, 0xde, 0x5c, 0x01, 0x91, 0x25, 0xdb, 0x46,
-0x22, 0x60, 0x4e, 0x6c, 0x26, 0x69, 0xc4, 0x56, 0x95, 0x38, 0xd6, 0x13, 0x12, 0xee, 0x71, 0xcc,
-0x63, 0xb2, 0x1a, 0xa2, 0x0a, 0x9c, 0x3c, 0xa0, 0x45, 0xae, 0xcf, 0xc5, 0x6e, 0xe5, 0x52, 0x0a,
-0x5f, 0x30, 0xd3, 0x51, 0x26, 0x69, 0xd2, 0x71, 0x96, 0x69, 0x37, 0x52, 0x71, 0x30, 0x12, 0x0a,
-0xca, 0xe4, 0x09, 0xc5, 0x8f, 0xad, 0xe8, 0x9f, 0x8e, 0x9c, 0x28, 0xa3, 0xe1, 0xb3, 0x11, 0xce,
-0xd2, 0xef, 0xae, 0x15, 0xb1, 0x3a, 0x54, 0x59, 0x14, 0x6c, 0x22, 0x6f, 0xfc, 0x61, 0x75, 0x47,
-0xd1, 0x24, 0xe2, 0xff, 0x87, 0xdd, 0x45, 0xc1, 0x81, 0xad, 0x4a, 0xa3, 0xb6, 0xa2, 0x21, 0xac,
-0xf3, 0xbe, 0x7f, 0xda, 0x20, 0xfc, 0xe9, 0x1f, 0xa9, 0x40, 0x84, 0x59, 0x6a, 0x66, 0xe2, 0x64,
-0x92, 0x55, 0x81, 0x3b, 0x86, 0x1b, 0x54, 0xfa, 0x01, 0xdc, 0x6f, 0xc3, 0xbf, 0xb2, 0x53, 0xab,
-0x77, 0xad, 0x1f, 0xb9, 0xa3, 0xcd, 0xd8, 0xe8, 0xca, 0x07, 0x65, 0x26, 0xd5, 0x40, 0x1f, 0x53,
-0xc2, 0x5a, 0x78, 0x56, 0x25, 0x47, 0x8d, 0x2f, 0x16, 0x13, 0x00, 0xf6, 0xa1, 0xdb, 0x59, 0xc7,
-0xcf, 0xba, 0x49, 0xb7, 0xe3, 0xbc, 0xbf, 0xca, 0xd3, 0xde, 0x8a, 0xf6, 0x1a, 0x0f, 0x8b, 0x25,
-0xdb, 0x37, 0xe7, 0x43, 0x09, 0x48, 0x95, 0x43, 0x97, 0x36, 0xc7, 0x22, 0x48, 0x0b, 0x88, 0xf3,
-0xc5, 0xde, 0xcb, 0xcf, 0x65, 0xc8, 0x01, 0xc9, 0xff, 0xd0, 0x3f, 0xde, 0xa2, 0xee, 0xb0, 0xff,
-0xc0, 0x0f, 0xd1, 0x1d, 0xeb, 0x28, 0x77, 0x30, 0x25, 0x33, 0xfb, 0x2f, 0x95, 0x26, 0x26, 0x18,
-0x8e, 0x06, 0x3e, 0xf5, 0x30, 0xe7, 0x59, 0xde, 0xdd, 0xdb, 0x01, 0xdf, 0x56, 0xe6, 0x92, 0xef,
-0xd4, 0xf8, 0xf6, 0x00, 0x0a, 0x08, 0x8a, 0x0e, 0xa8, 0x14, 0xf4, 0x19, 0x2f, 0x1d, 0x25, 0x1d,
-0x9a, 0x18, 0x2a, 0x10, 0xc0, 0x05, 0xbc, 0xfb, 0x92, 0xf4, 0x60, 0xf1, 0xf8, 0xf1, 0x2c, 0xf5,
-0x40, 0xf9, 0x3e, 0xfc, 0x6e, 0xfd, 0x2c, 0xfd, 0x8e, 0xfc, 0xfa, 0xfc, 0x24, 0xff, 0xfc, 0x02,
-0x3c, 0x07, 0x86, 0x0a, 0xb0, 0x0b, 0xb2, 0x0a, 0xba, 0x08, 0x4e, 0x07, 0x46, 0x07, 0x8e, 0x08,
-0x46, 0x0a, 0xce, 0x0a, 0xf8, 0x08, 0x52, 0x04, 0x36, 0xfd, 0x18, 0xf5, 0xc6, 0xed, 0x1c, 0xe9,
-0x26, 0xe8, 0x5a, 0xeb, 0xd0, 0xf1, 0xfa, 0xf9, 0x9a, 0x02, 0xba, 0x0a, 0x2a, 0x12, 0x94, 0x18,
-0xb7, 0x1d, 0x83, 0x20, 0x47, 0x20, 0x2e, 0x1c, 0xee, 0x13, 0x16, 0x08, 0xb2, 0xf9, 0xbe, 0xea,
-0x37, 0xdd, 0xeb, 0xd3, 0xb9, 0xd0, 0x8f, 0xd4, 0xeb, 0xde, 0x18, 0xee, 0x92, 0xff, 0x12, 0x11,
-0xa5, 0x20, 0x8b, 0x2c, 0xe1, 0x33, 0xcf, 0x35, 0xf9, 0x31, 0x99, 0x28, 0x2c, 0x1a, 0xa6, 0x07,
-0xb8, 0xf2, 0x83, 0xdd, 0x1f, 0xcb, 0xb7, 0xbe, 0x3b, 0xbb, 0x33, 0xc2, 0xb1, 0xd2, 0x02, 0xea,
-0x4c, 0x04, 0x57, 0x1d, 0xf1, 0x31, 0x29, 0x40, 0xef, 0x46, 0x59, 0x46, 0xbd, 0x3e, 0x5b, 0x30,
-0x67, 0x1c, 0x06, 0x04, 0x1a, 0xe9, 0xaf, 0xce, 0x7d, 0xb8, 0x08, 0xab, 0x9a, 0xa9, 0x85, 0xb5,
-0x13, 0xcd, 0x38, 0xec, 0x30, 0x0d, 0x07, 0x2b, 0xfb, 0x41, 0x3b, 0x50, 0x9e, 0x55, 0x05, 0x52,
-0x6d, 0x46, 0x97, 0x33, 0x80, 0x1a, 0xa8, 0xfc, 0xb9, 0xdc, 0x6d, 0xbe, 0xe8, 0xa6, 0xf2, 0x9a,
-0xd0, 0x9d, 0x17, 0xb0, 0x83, 0xce, 0x74, 0xf3, 0x7a, 0x18, 0x2d, 0x38, 0x45, 0x4f, 0x66, 0x5c,
-0x48, 0x5f, 0xd4, 0x58, 0x73, 0x49, 0x43, 0x32, 0x84, 0x14, 0x36, 0xf2, 0xd3, 0xce, 0x63, 0xaf,
-0x72, 0x99, 0x76, 0x91, 0xe2, 0x99, 0x65, 0xb1, 0x37, 0xd4, 0xf6, 0xfb, 0x21, 0x22, 0xb1, 0x41,
-0xb8, 0x57, 0x5a, 0x63, 0x04, 0x64, 0x58, 0x5a, 0x2b, 0x47, 0xcf, 0x2b, 0xf2, 0x09, 0xc2, 0xe4,
-0xe9, 0xc0, 0xb6, 0xa3, 0x62, 0x92, 0xc2, 0x8f, 0xe0, 0x9c, 0xdf, 0xb7, 0x47, 0xdc, 0x10, 0x04,
-0x39, 0x29, 0xa3, 0x47, 0x3e, 0x5c, 0xea, 0x65, 0xf4, 0x63, 0xcc, 0x56, 0xa3, 0x3f, 0x91, 0x20,
-0x98, 0xfc, 0xcb, 0xd7, 0x3b, 0xb7, 0x5a, 0x9f, 0xb4, 0x93, 0xd4, 0x95, 0x96, 0xa5, 0x07, 0xc1,
-0x3c, 0xe4, 0x22, 0x0a, 0x57, 0x2d, 0xc9, 0x49, 0x8e, 0x5c, 0xc6, 0x63, 0xa0, 0x5e, 0xdd, 0x4d,
-0x9f, 0x33, 0x34, 0x13, 0x84, 0xf0, 0x9f, 0xcf, 0xeb, 0xb4, 0x56, 0xa3, 0x6c, 0x9c, 0xf6, 0xa0,
-0xd3, 0xb0, 0xb1, 0xca, 0x8e, 0xeb, 0xcc, 0x0e, 0x77, 0x2f, 0x6d, 0x49, 0xf8, 0x58, 0x44, 0x5c,
-0x1b, 0x53, 0x67, 0x3f, 0x5d, 0x24, 0xda, 0x05, 0xe8, 0xe7, 0x0b, 0xce, 0x6d, 0xba, 0x6d, 0xae,
-0xe8, 0xaa, 0x0d, 0xb0, 0x7d, 0xbe, 0x5b, 0xd5, 0x58, 0xf2, 0xaa, 0x11, 0x75, 0x2e, 0xef, 0x43,
-0x0d, 0x4f, 0x51, 0x4e, 0x9d, 0x42, 0xcd, 0x2e, 0x96, 0x16, 0xe6, 0xfd, 0x6c, 0xe7, 0xe5, 0xd4,
-0x4f, 0xc7, 0x05, 0xbf, 0x71, 0xbc, 0xab, 0xc0, 0x53, 0xcc, 0x79, 0xdf, 0x2c, 0xf8, 0x46, 0x12,
-0x59, 0x29, 0x45, 0x39, 0x73, 0x3f, 0xc5, 0x3b, 0x03, 0x30, 0x3d, 0x1f, 0xcc, 0x0c, 0x08, 0xfb,
-0xda, 0xeb, 0xf3, 0xdf, 0x1f, 0xd7, 0x8f, 0xd1, 0xeb, 0xcf, 0xf7, 0xd2, 0xcd, 0xdb, 0xfe, 0xe9,
-0xd2, 0xfb, 0x3c, 0x0e, 0x6f, 0x1d, 0xad, 0x26, 0xeb, 0x28, 0xcf, 0x24, 0x53, 0x1c, 0xbc, 0x11,
-0xee, 0x06, 0xc0, 0xfd, 0x3a, 0xf6, 0x3a, 0xf0, 0x8e, 0xeb, 0x14, 0xe8, 0x22, 0xe6, 0x5e, 0xe6,
-0xa0, 0xe9, 0x26, 0xf0, 0x30, 0xf9, 0x98, 0x02, 0xbe, 0x0a, 0xd6, 0x0f, 0x94, 0x11, 0x7e, 0x10,
-0x9c, 0x0d, 0x22, 0x0a, 0x0a, 0x07, 0xda, 0x04, 0x7e, 0x03, 0xb4, 0x02, 0x6e, 0x01, 0x18, 0xff,
-0x62, 0xfb, 0xf6, 0xf6, 0xba, 0xf2, 0xde, 0xef, 0x48, 0xef, 0xea, 0xf0, 0x0c, 0xf4, 0x8a, 0xf7,
-0xf6, 0xfa, 0x38, 0xfe, 0x94, 0x01, 0x42, 0x05, 0x98, 0x09, 0xc8, 0x0e, 0x08, 0x14, 0xf2, 0x17,
-0xfc, 0x18, 0x1e, 0x16, 0x90, 0x0e, 0x2e, 0x03, 0x0a, 0xf6, 0xb6, 0xe9, 0xcb, 0xe0, 0x3d, 0xdc,
-0x03, 0xdc, 0x8f, 0xdf, 0xf8, 0xe5, 0x26, 0xee, 0xf4, 0xf7, 0x04, 0x03, 0x20, 0x0f, 0x84, 0x1b,
-0xa1, 0x26, 0x83, 0x2e, 0x87, 0x30, 0xe7, 0x2a, 0x87, 0x1d, 0xec, 0x09, 0x60, 0xf3, 0x73, 0xde,
-0x85, 0xce, 0xf3, 0xc5, 0xfb, 0xc4, 0x55, 0xca, 0xcb, 0xd4, 0xfb, 0xe2, 0x90, 0xf3, 0x06, 0x06,
-0x40, 0x19, 0xa5, 0x2b, 0xd3, 0x3a, 0xbd, 0x43, 0xf1, 0x43, 0xc1, 0x39, 0x6f, 0x25, 0x16, 0x0a,
-0x70, 0xec, 0x77, 0xd1, 0xd9, 0xbd, 0x4d, 0xb3, 0x33, 0xb2, 0x87, 0xb9, 0xa5, 0xc7, 0x09, 0xdb,
-0x56, 0xf2, 0x04, 0x0c, 0x15, 0x26, 0xab, 0x3d, 0xf7, 0x4e, 0x0e, 0x57, 0x0f, 0x53, 0xbb, 0x42,
-0xe3, 0x27, 0x9a, 0x06, 0x14, 0xe4, 0xdb, 0xc5, 0x01, 0xb0, 0xca, 0xa4, 0x6a, 0xa4, 0xd1, 0xad,
-0x13, 0xc0, 0x35, 0xd9, 0x34, 0xf7, 0x14, 0x17, 0x91, 0x35, 0xd1, 0x4e, 0x12, 0x5f, 0x20, 0x63,
-0xf2, 0x59, 0x83, 0x44, 0x51, 0x25, 0xb2, 0x00, 0xbd, 0xdb, 0xc3, 0xbb, 0xdc, 0xa4, 0x98, 0x99,
-0x98, 0x9a, 0x92, 0xa7, 0xd7, 0xbe, 0xe3, 0xdd, 0x4c, 0x01, 0xe7, 0x24, 0x5b, 0x44, 0xdc, 0x5b,
-0x50, 0x68, 0xf4, 0x67, 0xb8, 0x5a, 0x11, 0x42, 0xdd, 0x20, 0xca, 0xfa, 0x65, 0xd4, 0x09, 0xb3,
-0x8a, 0x9b, 0x06, 0x91, 0xf2, 0x94, 0x6a, 0xa6, 0x2d, 0xc3, 0x8c, 0xe7, 0x68, 0x0e, 0x8b, 0x32,
-0xdb, 0x4f, 0x4c, 0x63, 0xf2, 0x6a, 0x52, 0x66, 0xf0, 0x55, 0xb9, 0x3b, 0xd0, 0x19, 0x6a, 0xf3,
-0x17, 0xcd, 0x4b, 0xac, 0x64, 0x96, 0xf2, 0x8e, 0xfc, 0x96, 0x31, 0xad, 0x31, 0xce, 0x6e, 0xf4,
-0x84, 0x1a, 0x87, 0x3b, 0x0f, 0x54, 0x84, 0x62, 0x22, 0x66, 0xd6, 0x5e, 0x95, 0x4d, 0x7b, 0x33,
-0x44, 0x12, 0x02, 0xed, 0x1b, 0xc8, 0x88, 0xa9, 0xd6, 0x96, 0x76, 0x93, 0xd0, 0x9f, 0x8d, 0xb9,
-0xb7, 0xdb, 0xba, 0x00, 0xd3, 0x22, 0x31, 0x3e, 0x35, 0x51, 0xe0, 0x5a, 0x64, 0x5b, 0xa1, 0x52,
-0x61, 0x41, 0x5d, 0x28, 0x2e, 0x09, 0x5c, 0xe6, 0x23, 0xc5, 0x53, 0xab, 0xae, 0x9d, 0x20, 0x9f,
-0x77, 0xae, 0xf5, 0xc8, 0x04, 0xe9, 0x20, 0x09, 0xe7, 0x24, 0x41, 0x3a, 0x23, 0x48, 0x69, 0x4e,
-0x17, 0x4d, 0x19, 0x44, 0x01, 0x34, 0xfb, 0x1c, 0xf0, 0x00, 0xcf, 0xe2, 0x61, 0xc7, 0xbd, 0xb3,
-0xa7, 0xab, 0x63, 0xb0, 0xbf, 0xc0, 0xb7, 0xd8, 0xa6, 0xf3, 0x54, 0x0d, 0x67, 0x22, 0xc9, 0x31,
-0x19, 0x3b, 0x37, 0x3e, 0x3b, 0x3b, 0x5d, 0x32, 0xd5, 0x23, 0xc0, 0x10, 0x72, 0xfa, 0xc0, 0xe3,
-0x69, 0xd0, 0xc7, 0xc3, 0x3f, 0xc0, 0xf7, 0xc5, 0x81, 0xd3, 0x02, 0xe6, 0xc0, 0xf9, 0xac, 0x0b,
-0x1a, 0x1a, 0x13, 0x24, 0x7f, 0x29, 0x51, 0x2a, 0xb9, 0x26, 0x73, 0x1f, 0x2a, 0x15, 0x3c, 0x08,
-0x3a, 0xfa, 0x6c, 0xec, 0xed, 0xe0, 0x7b, 0xd9, 0x53, 0xd7, 0x03, 0xdb, 0xab, 0xe3, 0x5c, 0xef,
-0xbe, 0xfb, 0xf4, 0x06, 0x66, 0x0f, 0xb2, 0x14, 0x7e, 0x16, 0x7a, 0x15, 0x6e, 0x12, 0x2c, 0x0e,
-0xb6, 0x09, 0x28, 0x05, 0x60, 0x00, 0x3a, 0xfb, 0xf2, 0xf5, 0x46, 0xf1, 0xa4, 0xee, 0x90, 0xee,
-0x50, 0xf1, 0xfc, 0xf5, 0xf8, 0xfa, 0xd4, 0xfe, 0xa4, 0x00, 0x66, 0x00, 0xee, 0xfe, 0x90, 0xfd,
-0x76, 0xfd, 0xae, 0xff, 0xec, 0x03, 0x2a, 0x09, 0x60, 0x0d, 0xfc, 0x0e, 0x86, 0x0d, 0x88, 0x09,
-0x98, 0x04, 0xf0, 0xff, 0x5c, 0xfc, 0x78, 0xf9, 0x9e, 0xf6, 0xd2, 0xf2, 0x3e, 0xee, 0xd4, 0xe9,
-0x2a, 0xe7, 0x2c, 0xe8, 0x9a, 0xed, 0xaa, 0xf7, 0xb0, 0x04, 0x60, 0x12, 0x85, 0x1d, 0xc9, 0x23,
-0x4b, 0x24, 0xc3, 0x1f, 0xca, 0x17, 0xf6, 0x0d, 0x6e, 0x03, 0x68, 0xf8, 0x3e, 0xed, 0x31, 0xe2,
-0x87, 0xd8, 0x51, 0xd2, 0x75, 0xd1, 0x45, 0xd7, 0xee, 0xe3, 0xea, 0xf5, 0xc0, 0x0a, 0xef, 0x1e,
-0xeb, 0x2e, 0x11, 0x38, 0x55, 0x39, 0x4b, 0x33, 0xa7, 0x27, 0x0c, 0x18, 0xca, 0x05, 0x60, 0xf2,
-0x2f, 0xdf, 0x7d, 0xce, 0x73, 0xc2, 0x41, 0xbd, 0xb1, 0xc0, 0xdf, 0xcc, 0x85, 0xe0, 0x50, 0xf9,
-0xd8, 0x13, 0x6d, 0x2c, 0x71, 0x3f, 0xff, 0x49, 0xeb, 0x4a, 0x99, 0x42, 0x1f, 0x32, 0x88, 0x1b,
-0x5e, 0x01, 0x2e, 0xe6, 0x89, 0xcd, 0x43, 0xba, 0x47, 0xaf, 0x19, 0xae, 0xe1, 0xb6, 0xd3, 0xc8,
-0xcd, 0xe1, 0x22, 0xff, 0x47, 0x1d, 0xd9, 0x38, 0xed, 0x4d, 0xac, 0x59, 0xba, 0x59, 0xc5, 0x4d,
-0x91, 0x37, 0xaa, 0x19, 0x30, 0xf8, 0x89, 0xd7, 0x3b, 0xbc, 0xe8, 0xa9, 0x4c, 0xa2, 0x98, 0xa5,
-0xef, 0xb2, 0x15, 0xc9, 0xac, 0xe5, 0x0a, 0x06, 0xd3, 0x26, 0x73, 0x44, 0xe2, 0x5a, 0xea, 0x65,
-0xf4, 0x62, 0xb5, 0x51, 0xdf, 0x34, 0xd2, 0x10, 0xe2, 0xea, 0xc5, 0xc8, 0xff, 0xae, 0x2c, 0xa0,
-0x98, 0x9c, 0xae, 0xa3, 0x33, 0xb4, 0xe9, 0xcc, 0xac, 0xeb, 0xe6, 0x0d, 0x69, 0x30, 0x29, 0x4f,
-0x32, 0x65, 0xc8, 0x6d, 0x66, 0x66, 0x99, 0x4f, 0x8f, 0x2d, 0x0a, 0x06, 0x51, 0xdf, 0x9f, 0xbe,
-0xf0, 0xa7, 0x98, 0x9c, 0x3a, 0x9c, 0xe6, 0xa5, 0x6b, 0xb8, 0xeb, 0xd2, 0x64, 0xf3, 0x1a, 0x17,
-0x21, 0x3a, 0xc2, 0x57, 0xa8, 0x6a, 0x70, 0x6e, 0xb2, 0x61, 0x59, 0x46, 0xed, 0x21, 0x80, 0xfa,
-0x07, 0xd6, 0x13, 0xb9, 0x76, 0xa6, 0xc8, 0x9e, 0x52, 0xa1, 0x49, 0xad, 0xd9, 0xc1, 0xeb, 0xdd,
-0x1e, 0xff, 0x33, 0x22, 0xa9, 0x42, 0xc2, 0x5b, 0xf6, 0x68, 0x1c, 0x67, 0x58, 0x56, 0xd1, 0x39,
-0xc4, 0x16, 0xbe, 0xf2, 0xcd, 0xd2, 0x2f, 0xba, 0x3a, 0xab, 0x66, 0xa6, 0xee, 0xaa, 0x45, 0xb8,
-0xdd, 0xcd, 0xea, 0xe9, 0x72, 0x09, 0xcd, 0x28, 0x01, 0x44, 0xf8, 0x56, 0x84, 0x5e, 0x32, 0x59,
-0xdd, 0x47, 0x8b, 0x2d, 0x48, 0x0e, 0xfa, 0xee, 0x7b, 0xd3, 0x0d, 0xbf, 0x4f, 0xb3, 0x39, 0xb1,
-0x57, 0xb8, 0x91, 0xc7, 0x8b, 0xdd, 0x8c, 0xf7, 0xa6, 0x12, 0x47, 0x2b, 0xc1, 0x3e, 0x83, 0x4a,
-0x63, 0x4d, 0xf9, 0x46, 0x81, 0x37, 0x85, 0x21, 0xee, 0x07, 0x7c, 0xee, 0x99, 0xd8, 0x15, 0xc9,
-0x5f, 0xc1, 0x39, 0xc2, 0x13, 0xcb, 0xf9, 0xd9, 0x48, 0xed, 0x08, 0x02, 0x8a, 0x15, 0xed, 0x25,
-0xd5, 0x31, 0xaf, 0x38, 0xc7, 0x39, 0x87, 0x34, 0xeb, 0x28, 0x42, 0x18, 0xa8, 0x04, 0x2e, 0xf1,
-0xf7, 0xe0, 0x61, 0xd6, 0xf7, 0xd2, 0x27, 0xd6, 0xed, 0xde, 0x66, 0xeb, 0xda, 0xf8, 0x7e, 0x05,
-0x06, 0x10, 0x26, 0x18, 0x29, 0x1e, 0x41, 0x22, 0xb5, 0x23, 0xc7, 0x21, 0x88, 0x1b, 0xf0, 0x10,
-0x00, 0x04, 0x22, 0xf7, 0x38, 0xed, 0x02, 0xe8, 0xfa, 0xe7, 0x3a, 0xec, 0xba, 0xf2, 0x56, 0xf9,
-0xbe, 0xfe, 0x62, 0x02, 0x94, 0x04, 0x72, 0x06, 0xe2, 0x08, 0x3e, 0x0c, 0x9e, 0x0f, 0x56, 0x11,
-0x60, 0x10, 0x9a, 0x0c, 0x14, 0x07, 0xf0, 0x01, 0xd4, 0xfe, 0x46, 0xfe, 0xd6, 0xff, 0xe6, 0x01,
-0xc4, 0x02, 0xc4, 0x01, 0x92, 0xfe, 0xd0, 0xf9, 0x02, 0xf5, 0x10, 0xf2, 0xe8, 0xf1, 0xfa, 0xf4,
-0x70, 0xfa, 0xaa, 0x00, 0x8e, 0x06, 0x52, 0x0b, 0x26, 0x0f, 0x44, 0x12, 0x0c, 0x15, 0xe0, 0x16,
-0x0a, 0x17, 0x50, 0x14, 0x48, 0x0e, 0x44, 0x05, 0x1a, 0xfa, 0x8e, 0xee, 0x3e, 0xe4, 0x5d, 0xdd,
-0x6b, 0xdb, 0x2f, 0xdf, 0xf6, 0xe7, 0x8c, 0xf4, 0xd0, 0x02, 0x00, 0x11, 0x79, 0x1d, 0xc1, 0x26,
-0x3f, 0x2c, 0x3f, 0x2d, 0x41, 0x29, 0x89, 0x20, 0xb6, 0x13, 0xae, 0x03, 0x0a, 0xf2, 0x97, 0xe0,
-0xb7, 0xd1, 0x1d, 0xc8, 0xdb, 0xc5, 0x0b, 0xcc, 0x75, 0xda, 0xfe, 0xee, 0x88, 0x06, 0x3d, 0x1d,
-0xf5, 0x2f, 0x6d, 0x3c, 0x83, 0x41, 0x45, 0x3f, 0x7f, 0x36, 0x25, 0x28, 0x6e, 0x15, 0xb4, 0xff,
-0x8e, 0xe8, 0x93, 0xd2, 0x4b, 0xc0, 0x01, 0xb5, 0xa5, 0xb3, 0xf5, 0xbd, 0xff, 0xd2, 0xe2, 0xef,
-0x6a, 0x0f, 0x43, 0x2c, 0x59, 0x42, 0x01, 0x4f, 0xdd, 0x51, 0xad, 0x4b, 0x71, 0x3e, 0x31, 0x2b,
-0xbc, 0x13, 0x28, 0xf9, 0x77, 0xdd, 0x6b, 0xc3, 0xe7, 0xae, 0xec, 0xa3, 0xac, 0xa5, 0xd3, 0xb5,
-0x3f, 0xd2, 0x38, 0xf6, 0x1c, 0x1b, 0xe1, 0x3a, 0x49, 0x51, 0xa4, 0x5c, 0xfa, 0x5c, 0x9b, 0x53,
-0x7d, 0x42, 0x47, 0x2b, 0x30, 0x0f, 0xe4, 0xef, 0x43, 0xd0, 0x17, 0xb4, 0xe4, 0x9f, 0x06, 0x98,
-0x38, 0x9f, 0xb3, 0xb5, 0x3b, 0xd8, 0x62, 0x00, 0x43, 0x27, 0xed, 0x46, 0x0c, 0x5c, 0x84, 0x65,
-0x58, 0x63, 0xf0, 0x56, 0x1f, 0x42, 0x8d, 0x26, 0xd4, 0x05, 0xc9, 0xe2, 0x37, 0xc1, 0x04, 0xa6,
-0x9c, 0x95, 0x56, 0x93, 0xb8, 0xa0, 0x41, 0xbc, 0xb9, 0xe1, 0x7a, 0x0a, 0x3d, 0x30, 0x2d, 0x4e,
-0x7a, 0x61, 0xa2, 0x68, 0x12, 0x64, 0xf2, 0x54, 0xb1, 0x3c, 0xc1, 0x1d, 0x4a, 0xfa, 0x09, 0xd6,
-0xed, 0xb5, 0xce, 0x9e, 0xac, 0x93, 0xda, 0x96, 0x16, 0xa8, 0x49, 0xc5, 0x24, 0xea, 0x0a, 0x11,
-0x9f, 0x34, 0x87, 0x50, 0xe8, 0x61, 0x1c, 0x67, 0x08, 0x60, 0xed, 0x4d, 0xd7, 0x32, 0x6e, 0x11,
-0xb6, 0xed, 0xfd, 0xcb, 0xb5, 0xb0, 0x4c, 0x9f, 0xe8, 0x99, 0xc0, 0xa0, 0x4d, 0xb3, 0x6f, 0xcf,
-0xbc, 0xf1, 0x9a, 0x15, 0x43, 0x36, 0x79, 0x4f, 0x0a, 0x5e, 0x84, 0x60, 0x64, 0x56, 0xab, 0x41,
-0x05, 0x25, 0x76, 0x04, 0xf0, 0xe3, 0xaf, 0xc7, 0x01, 0xb3, 0xd0, 0xa7, 0x94, 0xa6, 0xdb, 0xae,
-0x71, 0xc0, 0xaf, 0xd9, 0x08, 0xf8, 0xb0, 0x17, 0x77, 0x34, 0xdb, 0x49, 0xe4, 0x54, 0xdb, 0x53,
-0x4f, 0x47, 0xab, 0x31, 0x9a, 0x16, 0x00, 0xfa, 0xf1, 0xdf, 0x2d, 0xcb, 0x65, 0xbd, 0xcd, 0xb6,
-0x61, 0xb7, 0x1d, 0xbf, 0x93, 0xcd, 0xad, 0xe2, 0x26, 0xfc, 0x12, 0x17, 0x17, 0x2f, 0x45, 0x40,
-0x25, 0x47, 0x47, 0x43, 0xed, 0x35, 0xf1, 0x21, 0x5e, 0x0b, 0x8c, 0xf5, 0x71, 0xe3, 0xd1, 0xd5,
-0x6d, 0xcd, 0xb3, 0xc9, 0x99, 0xca, 0x4f, 0xd0, 0x39, 0xdb, 0x32, 0xeb, 0xca, 0xfe, 0x52, 0x13,
-0xdb, 0x24, 0x2b, 0x30, 0x39, 0x33, 0xe9, 0x2d, 0x4b, 0x22, 0x58, 0x13, 0x40, 0x04, 0x30, 0xf7,
-0x46, 0xed, 0x80, 0xe6, 0x63, 0xe2, 0x85, 0xe0, 0xa3, 0xe0, 0x5d, 0xe3, 0xe0, 0xe8, 0xc6, 0xf1,
-0x28, 0xfd, 0x22, 0x09, 0x62, 0x13, 0xa2, 0x19, 0xda, 0x1a, 0x7a, 0x17, 0x68, 0x11, 0x3e, 0x0a,
-0xe2, 0x03, 0x1c, 0xff, 0xfc, 0xfb, 0xf0, 0xf9, 0x4a, 0xf8, 0x98, 0xf6, 0x92, 0xf4, 0xb2, 0xf2,
-0x90, 0xf1, 0x12, 0xf2, 0xa0, 0xf4, 0xc8, 0xf8, 0x52, 0xfd, 0x2c, 0x01, 0x00, 0x04, 0x9e, 0x05,
-0x68, 0x06, 0x3c, 0x07, 0xae, 0x08, 0xac, 0x0a, 0xb8, 0x0c, 0x22, 0x0e, 0xe0, 0x0d, 0x72, 0x0b,
-0x4a, 0x06, 0x92, 0xfe, 0x8a, 0xf5, 0xe8, 0xec, 0xb4, 0xe6, 0xee, 0xe3, 0xfa, 0xe4, 0x14, 0xe9,
-0x46, 0xef, 0x98, 0xf6, 0x7a, 0xfe, 0xb6, 0x06, 0x16, 0x0f, 0x7c, 0x17, 0xbd, 0x1e, 0xcf, 0x23,
-0x17, 0x25, 0x11, 0x21, 0xda, 0x16, 0x3a, 0x07, 0x8a, 0xf4, 0x2f, 0xe2, 0x05, 0xd4, 0x77, 0xcc,
-0x2b, 0xcc, 0x53, 0xd2, 0x1d, 0xdd, 0xca, 0xea, 0xf2, 0xf9, 0xcc, 0x09, 0x84, 0x19, 0xdb, 0x27,
-0x81, 0x33, 0x5f, 0x3a, 0x41, 0x3a, 0x63, 0x31, 0x01, 0x20, 0xb4, 0x07, 0x9a, 0xec, 0x93, 0xd3,
-0x39, 0xc1, 0x51, 0xb8, 0xfd, 0xb8, 0xcd, 0xc1, 0xa9, 0xd0, 0xd0, 0xe3, 0x58, 0xf9, 0xd2, 0x0f,
-0xaf, 0x25, 0x45, 0x39, 0xe7, 0x47, 0xe1, 0x4e, 0x8f, 0x4b, 0xc7, 0x3c, 0x77, 0x23, 0x4c, 0x03,
-0x6d, 0xe1, 0x91, 0xc3, 0x97, 0xae, 0x32, 0xa5, 0x7c, 0xa7, 0xa7, 0xb3, 0xab, 0xc7, 0xcb, 0xe0,
-0xf4, 0xfc, 0xa4, 0x19, 0xb5, 0x34, 0x13, 0x4b, 0xe0, 0x59, 0xd8, 0x5d, 0x0c, 0x55, 0xe3, 0x3f,
-0xdf, 0x20, 0x42, 0xfc, 0x3d, 0xd7, 0xc7, 0xb7, 0x28, 0xa2, 0x2c, 0x99, 0xde, 0x9c, 0x07, 0xac,
-0x41, 0xc4, 0x07, 0xe3, 0x16, 0x05, 0xe9, 0x26, 0x11, 0x45, 0xe0, 0x5b, 0xcc, 0x67, 0x9a, 0x66,
-0x06, 0x58, 0xa1, 0x3d, 0xd4, 0x1a, 0xee, 0xf3, 0xe9, 0xcd, 0xd1, 0xad, 0x64, 0x98, 0x24, 0x90,
-0xde, 0x95, 0x86, 0xa8, 0xfb, 0xc5, 0x5c, 0xea, 0x36, 0x11, 0xe3, 0x35, 0xbd, 0x53, 0x20, 0x67,
-0xa6, 0x6d, 0xe2, 0x66, 0xbb, 0x53, 0xe9, 0x36, 0x64, 0x13, 0x94, 0xec, 0xed, 0xc6, 0x88, 0xa7,
-0x18, 0x93, 0x98, 0x8c, 0x64, 0x95, 0x61, 0xac, 0x79, 0xce, 0x9c, 0xf6, 0xdd, 0x1e, 0xe7, 0x41,
-0x86, 0x5b, 0x6c, 0x69, 0x92, 0x6a, 0x14, 0x60, 0x87, 0x4b, 0xf7, 0x2e, 0x6e, 0x0c, 0xfa, 0xe6,
-0xc7, 0xc2, 0xda, 0xa4, 0x68, 0x92, 0xc6, 0x8e, 0x3c, 0x9b, 0x01, 0xb6, 0xc5, 0xda, 0x10, 0x03,
-0xcb, 0x28, 0x0f, 0x47, 0xf2, 0x5a, 0x6c, 0x63, 0x32, 0x61, 0x4e, 0x55, 0x2f, 0x41, 0x17, 0x26,
-0xb2, 0x05, 0x6f, 0xe2, 0xb5, 0xc0, 0xf4, 0xa5, 0x1a, 0x97, 0x90, 0x97, 0xa8, 0xa7, 0x9d, 0xc4,
-0x96, 0xe8, 0x7e, 0x0d, 0x67, 0x2d, 0x43, 0x45, 0x6f, 0x53, 0x20, 0x58, 0x01, 0x54, 0x21, 0x48,
-0x5d, 0x35, 0x45, 0x1c, 0x96, 0xfe, 0xcf, 0xde, 0x93, 0xc1, 0xb3, 0xab, 0xea, 0xa1, 0x44, 0xa6,
-0x33, 0xb8, 0xe3, 0xd3, 0x9c, 0xf3, 0xf2, 0x11, 0xf3, 0x2a, 0xbf, 0x3c, 0x75, 0x46, 0xad, 0x48,
-0x0b, 0x44, 0x13, 0x39, 0x3f, 0x28, 0x8a, 0x12, 0x92, 0xf9, 0xf1, 0xdf, 0x4f, 0xc9, 0xef, 0xb9,
-0xbd, 0xb4, 0xf1, 0xba, 0x01, 0xcb, 0x7b, 0xe1, 0xca, 0xf9, 0x32, 0x10, 0x19, 0x22, 0x41, 0x2e,
-0xb5, 0x34, 0x55, 0x35, 0xd3, 0x30, 0x87, 0x27, 0x82, 0x1a, 0x42, 0x0a, 0x7a, 0xf8, 0xf6, 0xe6,
-0x1f, 0xd8, 0x7b, 0xce, 0xb1, 0xcb, 0x79, 0xd0, 0x81, 0xdb, 0x9a, 0xea, 0xc6, 0xfa, 0xa2, 0x09,
-0x7a, 0x15, 0x69, 0x1d, 0x11, 0x21, 0xbb, 0x20, 0x41, 0x1d, 0x22, 0x17, 0x66, 0x0f, 0xec, 0x06,
-0x08, 0xfe, 0x34, 0xf5, 0x30, 0xed, 0x22, 0xe7, 0xfe, 0xe3, 0x94, 0xe4, 0xce, 0xe8, 0xc8, 0xef,
-0xf6, 0xf7, 0x92, 0xff, 0x7c, 0x05, 0xf2, 0x08, 0x40, 0x0a, 0xea, 0x09, 0xf4, 0x08, 0x62, 0x08,
-0xcc, 0x08, 0xc0, 0x09, 0x22, 0x0a, 0xfc, 0x08, 0x78, 0x05, 0x14, 0x00, 0x24, 0xfa, 0x2e, 0xf5,
-0x3c, 0xf2, 0x6c, 0xf1, 0xdc, 0xf1, 0x86, 0xf2, 0xbc, 0xf2, 0x4a, 0xf2, 0x28, 0xf2, 0xa4, 0xf3,
-0xde, 0xf7, 0x3a, 0xff, 0x18, 0x09, 0xba, 0x13, 0x43, 0x1c, 0x0f, 0x20, 0x41, 0x1e, 0x94, 0x17,
-0xa2, 0x0d, 0xb6, 0x02, 0xa4, 0xf8, 0x04, 0xf0, 0xb8, 0xe8, 0x5b, 0xe2, 0x29, 0xdd, 0x19, 0xda,
-0xd9, 0xda, 0x9f, 0xe0, 0xde, 0xeb, 0xea, 0xfb, 0x92, 0x0e, 0x9d, 0x20, 0x5d, 0x2e, 0x51, 0x35,
-0x47, 0x34, 0xcf, 0x2b, 0xe5, 0x1d, 0x1e, 0x0d, 0x90, 0xfb, 0x8c, 0xea, 0x51, 0xdb, 0xa5, 0xce,
-0x2d, 0xc6, 0x4d, 0xc3, 0xc9, 0xc7, 0x1d, 0xd4, 0x76, 0xe7, 0x62, 0xff, 0xbc, 0x18, 0xc7, 0x2f,
-0xb3, 0x40, 0xef, 0x48, 0x4f, 0x47, 0x55, 0x3c, 0xcf, 0x29, 0x80, 0x12, 0x1a, 0xf9, 0x31, 0xe0,
-0x43, 0xca, 0xef, 0xb9, 0x1d, 0xb1, 0x8b, 0xb1, 0x9b, 0xbb, 0xad, 0xce, 0x62, 0xe8, 0xea, 0x05,
-0x7f, 0x23, 0x81, 0x3d, 0x67, 0x50, 0x74, 0x59, 0xe8, 0x56, 0xa1, 0x48, 0xdf, 0x30, 0xae, 0x12,
-0xcc, 0xf1, 0x35, 0xd2, 0x4d, 0xb8, 0x3e, 0xa7, 0x0a, 0xa1, 0x0c, 0xa6, 0xbf, 0xb5, 0x29, 0xce,
-0x8a, 0xec, 0x8c, 0x0d, 0xcb, 0x2d, 0xf1, 0x49, 0x14, 0x5e, 0xea, 0x66, 0x32, 0x62, 0xa5, 0x4f,
-0xc3, 0x31, 0x92, 0x0c, 0x96, 0xe5, 0x41, 0xc2, 0xda, 0xa7, 0x48, 0x99, 0x56, 0x97, 0x5e, 0xa1,
-0x7d, 0xb5, 0x5f, 0xd1, 0x52, 0xf2, 0x64, 0x15, 0x41, 0x37, 0x53, 0x54, 0xa2, 0x68, 0xf0, 0x6f,
-0xb2, 0x67, 0x1b, 0x50, 0x91, 0x2c, 0xbe, 0x02, 0x0b, 0xd9, 0xd1, 0xb5, 0xde, 0x9d, 0x24, 0x93,
-0x32, 0x95, 0x98, 0xa2, 0x33, 0xb9, 0xf7, 0xd6, 0x4c, 0xf9, 0x4f, 0x1d, 0xb7, 0x3f, 0x68, 0x5c,
-0xd6, 0x6e, 0x9c, 0x72, 0xb2, 0x65, 0x59, 0x49, 0x37, 0x22, 0xc6, 0xf6, 0x0b, 0xce, 0xef, 0xad,
-0x1c, 0x9a, 0x52, 0x93, 0x96, 0x98, 0x68, 0xa8, 0xd1, 0xc0, 0xcd, 0xdf, 0xe2, 0x02, 0x01, 0x27,
-0x05, 0x48, 0x94, 0x61, 0x5c, 0x6f, 0xc0, 0x6d, 0xfa, 0x5b, 0x9d, 0x3c, 0x18, 0x15, 0xf0, 0xeb,
-0x67, 0xc7, 0x5f, 0xac, 0x2a, 0x9d, 0x08, 0x9a, 0xc0, 0xa1, 0xdf, 0xb2, 0xdd, 0xcb, 0x8a, 0xea,
-0x2c, 0x0c, 0x3f, 0x2d, 0xfb, 0x49, 0x46, 0x5e, 0xbe, 0x66, 0x2c, 0x61, 0x13, 0x4e, 0x57, 0x30,
-0xe4, 0x0c, 0x08, 0xe9, 0x1b, 0xca, 0xc3, 0xb3, 0x9c, 0xa7, 0x02, 0xa6, 0x81, 0xae, 0xd9, 0xbf,
-0x35, 0xd8, 0x28, 0xf5, 0xa0, 0x13, 0x03, 0x30, 0xe3, 0x46, 0x30, 0x55, 0xe2, 0x58, 0x3b, 0x51,
-0x57, 0x3f, 0x71, 0x25, 0x80, 0x07, 0xa4, 0xe9, 0x09, 0xd0, 0xeb, 0xbd, 0xdd, 0xb4, 0x6d, 0xb5,
-0x13, 0xbf, 0x4f, 0xd0, 0x9e, 0xe6, 0x34, 0xff, 0x10, 0x17, 0x7d, 0x2b, 0x7f, 0x3a, 0xf7, 0x42,
-0x3f, 0x44, 0xf7, 0x3d, 0x6b, 0x30, 0xdd, 0x1c, 0x9a, 0x05, 0x18, 0xee, 0xf7, 0xd9, 0x0f, 0xcc,
-0x17, 0xc6, 0x55, 0xc8, 0x01, 0xd2, 0x03, 0xe1, 0x80, 0xf2, 0x06, 0x04, 0xa4, 0x13, 0x03, 0x20,
-0xbd, 0x28, 0xbd, 0x2d, 0x05, 0x2f, 0xef, 0x2b, 0xd5, 0x23, 0x10, 0x17, 0x08, 0x07, 0x76, 0xf6,
-0x66, 0xe8, 0x33, 0xdf, 0x17, 0xdc, 0xef, 0xde, 0x2a, 0xe6, 0xaa, 0xef, 0x5c, 0xf9, 0xd0, 0x01,
-0x84, 0x08, 0x82, 0x0d, 0xde, 0x11, 0xe6, 0x15, 0x3c, 0x19, 0xbe, 0x1a, 0x32, 0x19, 0xf4, 0x13,
-0x94, 0x0b, 0x3c, 0x02, 0x34, 0xfa, 0x3c, 0xf5, 0xa8, 0xf3, 0xda, 0xf4, 0x50, 0xf7, 0x8c, 0xf9,
-0x8c, 0xfa, 0x2c, 0xfa, 0x44, 0xf9, 0x1e, 0xf9, 0xe8, 0xfa, 0x16, 0xff, 0x20, 0x05, 0x7e, 0x0b,
-0x82, 0x10, 0xfa, 0x12, 0xf0, 0x12, 0x5a, 0x11, 0x44, 0x0f, 0x3c, 0x0d, 0x34, 0x0b, 0x72, 0x08,
-0xf2, 0x03, 0x78, 0xfd, 0xa0, 0xf5, 0x68, 0xed, 0x46, 0xe6, 0x39, 0xe2, 0xc1, 0xe2, 0x6e, 0xe8,
-0x4c, 0xf2, 0xe4, 0xfe, 0x0c, 0x0c, 0xd8, 0x17, 0xab, 0x20, 0xff, 0x25, 0xc7, 0x27, 0xfb, 0x25,
-0x59, 0x20, 0x0a, 0x17, 0xb2, 0x0a, 0x1c, 0xfc, 0xca, 0xec, 0x69, 0xde, 0x01, 0xd3, 0xb7, 0xcc,
-0x31, 0xcd, 0x19, 0xd5, 0xd6, 0xe3, 0xb6, 0xf7, 0x92, 0x0d, 0x11, 0x22, 0x2f, 0x32, 0x11, 0x3c,
-0x9f, 0x3e, 0xff, 0x39, 0x27, 0x2f, 0x55, 0x1f, 0x0a, 0x0c, 0xec, 0xf6, 0xf7, 0xe1, 0x17, 0xcf,
-0x99, 0xc0, 0xd1, 0xb8, 0x29, 0xba, 0x8f, 0xc5, 0x59, 0xda, 0xf8, 0xf5, 0x72, 0x14, 0x7f, 0x30,
-0xad, 0x45, 0x1d, 0x51, 0x2d, 0x52, 0x7d, 0x49, 0x25, 0x39, 0x65, 0x23, 0x72, 0x0a, 0x2a, 0xf0,
-0x7b, 0xd6, 0xcf, 0xbf, 0x09, 0xaf, 0x68, 0xa7, 0x22, 0xab, 0x9b, 0xbb, 0x93, 0xd7, 0x34, 0xfb,
-0x45, 0x20, 0x95, 0x40, 0x1c, 0x57, 0x52, 0x61, 0x12, 0x5f, 0x29, 0x52, 0x79, 0x3d, 0x8d, 0x23,
-0x74, 0x06, 0xf0, 0xe7, 0x8d, 0xca, 0x63, 0xb1, 0x02, 0xa0, 0x14, 0x9a, 0x4c, 0xa2, 0x0d, 0xb9,
-0xbf, 0xdb, 0xf4, 0x04, 0x85, 0x2d, 0xd5, 0x4e, 0x52, 0x64, 0x10, 0x6c, 0xd0, 0x66, 0xca, 0x56,
-0xc3, 0x3e, 0x2d, 0x21, 0x4a, 0x00, 0x55, 0xde, 0x57, 0xbe, 0x56, 0xa4, 0xbe, 0x94, 0x04, 0x93,
-0xbe, 0xa0, 0x21, 0xbd, 0x4c, 0xe4, 0xaa, 0x0f, 0x2d, 0x38, 0xb6, 0x57, 0xd2, 0x6a, 0x26, 0x70,
-0x68, 0x68, 0xaa, 0x55, 0xd5, 0x3a, 0x54, 0x1a, 0x92, 0xf6, 0xd5, 0xd2, 0x0d, 0xb3, 0xca, 0x9b,
-0xd0, 0x90, 0x86, 0x94, 0x48, 0xa7, 0xdb, 0xc6, 0xc0, 0xee, 0x98, 0x18, 0x51, 0x3e, 0xf2, 0x5a,
-0x96, 0x6b, 0x82, 0x6e, 0xb2, 0x64, 0xdf, 0x4f, 0xa5, 0x32, 0xe6, 0x0f, 0x18, 0xeb, 0x33, 0xc8,
-0xb7, 0xab, 0x94, 0x99, 0x50, 0x94, 0xde, 0x9c, 0x0d, 0xb2, 0x59, 0xd1, 0xb8, 0xf6, 0x19, 0x1d,
-0x55, 0x3f, 0x26, 0x59, 0x7e, 0x67, 0xaa, 0x68, 0xb0, 0x5c, 0xb9, 0x45, 0xe3, 0x26, 0xc0, 0x03,
-0x9d, 0xe0, 0x0d, 0xc2, 0xb9, 0xab, 0x40, 0xa0, 0x60, 0xa0, 0x53, 0xab, 0xfd, 0xbf, 0x29, 0xdc,
-0xca, 0xfc, 0x27, 0x1e, 0x31, 0x3c, 0x97, 0x52, 0x02, 0x5e, 0x9e, 0x5c, 0xcf, 0x4e, 0x07, 0x37,
-0xda, 0x18, 0xae, 0xf8, 0xcb, 0xda, 0x2b, 0xc3, 0x17, 0xb4, 0x1b, 0xae, 0xf7, 0xb0, 0xc3, 0xbb,
-0x41, 0xcd, 0x5c, 0xe4, 0x92, 0xff, 0xb2, 0x1b, 0x17, 0x35, 0x89, 0x47, 0xaf, 0x4f, 0x13, 0x4c,
-0x97, 0x3d, 0x01, 0x27, 0x8a, 0x0c, 0x7a, 0xf2, 0x5f, 0xdc, 0x67, 0xcc, 0x81, 0xc3, 0x2d, 0xc1,
-0x81, 0xc4, 0xdd, 0xcc, 0x27, 0xda, 0xcc, 0xeb, 0xf0, 0x00, 0x42, 0x17, 0x15, 0x2b, 0xc7, 0x38,
-0x8b, 0x3d, 0x99, 0x38, 0x4b, 0x2b, 0xfc, 0x18, 0x12, 0x05, 0x28, 0xf3, 0x38, 0xe5, 0x19, 0xdc,
-0x5f, 0xd7, 0x63, 0xd6, 0x67, 0xd8, 0x47, 0xdd, 0x5e, 0xe5, 0xb2, 0xf0, 0xb0, 0xfe, 0xa8, 0x0d,
-0x06, 0x1b, 0xab, 0x23, 0x0d, 0x26, 0x39, 0x22, 0x90, 0x19, 0x68, 0x0e, 0x94, 0x03, 0x98, 0xfa,
-0x38, 0xf4, 0x48, 0xf0, 0x32, 0xee, 0x3c, 0xed, 0xf2, 0xec, 0x60, 0xed, 0x0a, 0xef, 0x98, 0xf2,
-0x08, 0xf8, 0xfa, 0xfe, 0xcc, 0x05, 0x48, 0x0b, 0xfc, 0x0d, 0x2e, 0x0e, 0x80, 0x0c, 0x10, 0x0a,
-0xc0, 0x07, 0x80, 0x06, 0xee, 0x05, 0x92, 0x05, 0xf0, 0x04, 0xf4, 0x02, 0x52, 0xff, 0x0e, 0xfa,
-0x32, 0xf4, 0xc8, 0xee, 0x62, 0xeb, 0xe8, 0xea, 0x8e, 0xed, 0x30, 0xf2, 0x26, 0xf8, 0x8c, 0xfe,
-0xc0, 0x04, 0x7c, 0x0a, 0xc2, 0x0f, 0x96, 0x14, 0xbc, 0x18, 0x2e, 0x1b, 0x02, 0x1b, 0x60, 0x17,
-0x48, 0x0f, 0x3a, 0x03, 0x7e, 0xf4, 0xc0, 0xe5, 0xf3, 0xd9, 0xf5, 0xd3, 0x71, 0xd4, 0xe1, 0xda,
-0x58, 0xe5, 0x2c, 0xf2, 0xc6, 0xff, 0xf8, 0x0c, 0x62, 0x19, 0x2f, 0x24, 0xa9, 0x2c, 0x51, 0x31,
-0xb1, 0x30, 0x39, 0x29, 0xbc, 0x1a, 0xe6, 0x05, 0xca, 0xed, 0xb9, 0xd6, 0x2f, 0xc5, 0xa5, 0xbc,
-0x1f, 0xbe, 0x25, 0xc8, 0x19, 0xd8, 0x80, 0xeb, 0xec, 0xff, 0xae, 0x13, 0x91, 0x25, 0xcb, 0x34,
-0xb9, 0x3f, 0x8f, 0x44, 0x59, 0x41, 0xc9, 0x34, 0xbd, 0x1e, 0xd8, 0x01, 0x4d, 0xe2, 0xb1, 0xc5,
-0x7b, 0xb1, 0xc0, 0xa8, 0xf9, 0xab, 0xa9, 0xb9, 0xb1, 0xce, 0xc0, 0xe7, 0x9a, 0x02, 0xcd, 0x1c,
-0x8f, 0x34, 0xc7, 0x47, 0x35, 0x54, 0xec, 0x56, 0x1f, 0x4e, 0xdf, 0x39, 0x1a, 0x1c, 0xac, 0xf8,
-0xe5, 0xd4, 0x95, 0xb6, 0x46, 0xa2, 0x20, 0x9b, 0xfa, 0xa0, 0xe3, 0xb1, 0x27, 0xcb, 0x82, 0xe9,
-0x96, 0x09, 0xa3, 0x28, 0xe1, 0x43, 0x42, 0x58, 0xd8, 0x62, 0xfe, 0x60, 0x39, 0x52, 0x09, 0x38,
-0x9c, 0x15, 0x32, 0xef, 0xdb, 0xc9, 0x16, 0xab, 0x86, 0x97, 0x5c, 0x91, 0x3a, 0x99, 0x8d, 0xad,
-0x6f, 0xcb, 0x08, 0xef, 0x6c, 0x14, 0x37, 0x37, 0x97, 0x53, 0x1a, 0x66, 0xd8, 0x6b, 0x0c, 0x64,
-0x9d, 0x4f, 0x5f, 0x31, 0xce, 0x0c, 0x0a, 0xe6, 0x5b, 0xc1, 0xb4, 0xa3, 0x76, 0x91, 0x48, 0x8d,
-0xca, 0x97, 0xa1, 0xaf, 0xf3, 0xd1, 0xac, 0xf9, 0x8b, 0x21, 0x77, 0x44, 0xec, 0x5d, 0x3a, 0x6b,
-0x26, 0x6b, 0x40, 0x5e, 0xe9, 0x46, 0x4f, 0x28, 0xf4, 0x04, 0x01, 0xe0, 0x67, 0xbd, 0xb6, 0xa1,
-0x6a, 0x91, 0x4e, 0x8f, 0x6e, 0x9c, 0x99, 0xb7, 0xbf, 0xdc, 0xe4, 0x05, 0xc7, 0x2c, 0x2f, 0x4c,
-0xaa, 0x60, 0x66, 0x68, 0xc4, 0x63, 0xd4, 0x54, 0x89, 0x3d, 0x29, 0x20, 0x0e, 0xff, 0x7f, 0xdc,
-0x61, 0xbc, 0x48, 0xa3, 0x82, 0x95, 0x48, 0x96, 0x5a, 0xa6, 0xa5, 0xc3, 0x52, 0xe9, 0xa8, 0x10,
-0x4b, 0x33, 0x2f, 0x4d, 0xc6, 0x5b, 0x08, 0x5f, 0xdc, 0x57, 0x37, 0x48, 0x49, 0x32, 0x60, 0x17,
-0x22, 0xf9, 0x33, 0xda, 0xfb, 0xbd, 0xa4, 0xa8, 0x02, 0x9f, 0xfc, 0xa2, 0x2d, 0xb5, 0x7b, 0xd2,
-0x48, 0xf5, 0x34, 0x17, 0x29, 0x33, 0x5b, 0x46, 0xd7, 0x4f, 0xe7, 0x4f, 0xdb, 0x47, 0xc9, 0x39,
-0x7f, 0x26, 0x58, 0x0f, 0x86, 0xf5, 0x87, 0xdb, 0xbd, 0xc4, 0xbb, 0xb4, 0xc9, 0xae, 0x3f, 0xb5,
-0xbf, 0xc6, 0x2f, 0xe0, 0x9c, 0xfc, 0xf4, 0x16, 0xbb, 0x2b, 0x63, 0x39, 0x43, 0x3f, 0x1f, 0x3e,
-0x0b, 0x37, 0xe9, 0x2a, 0x52, 0x1b, 0x96, 0x08, 0x94, 0xf4, 0x3f, 0xe1, 0xfd, 0xd0, 0x51, 0xc6,
-0x95, 0xc3, 0x59, 0xc9, 0xfb, 0xd6, 0xe2, 0xe9, 0x2e, 0xfe, 0xd2, 0x10, 0x1b, 0x1f, 0x0d, 0x28,
-0x79, 0x2b, 0xb3, 0x29, 0xa5, 0x23, 0xde, 0x1a, 0x0e, 0x10, 0x22, 0x04, 0x18, 0xf8, 0x0a, 0xed,
-0xf0, 0xe3, 0x91, 0xdd, 0x55, 0xdb, 0xe9, 0xdd, 0x10, 0xe5, 0x6a, 0xef, 0x18, 0xfb, 0xd0, 0x05,
-0x32, 0x0e, 0x2a, 0x13, 0xaa, 0x14, 0x76, 0x13, 0x70, 0x10, 0xb8, 0x0c, 0x3a, 0x09, 0x14, 0x06,
-0x40, 0x03, 0x22, 0x00, 0x26, 0xfc, 0x60, 0xf7, 0xb6, 0xf2, 0x7a, 0xef, 0x80, 0xee, 0x26, 0xf0,
-0x8c, 0xf3, 0x90, 0xf7, 0xa6, 0xfa, 0x92, 0xfc, 0x60, 0xfd, 0xec, 0xfd, 0x6c, 0xff, 0xb2, 0x02,
-0xe8, 0x07, 0x10, 0x0e, 0x7c, 0x13, 0x34, 0x16, 0xb6, 0x14, 0xca, 0x0e, 0xe4, 0x05, 0x54, 0xfc,
-0xdc, 0xf3, 0xcc, 0xed, 0xec, 0xe9, 0x8e, 0xe7, 0x14, 0xe6, 0x74, 0xe5, 0x96, 0xe6, 0xaa, 0xea,
-0xc2, 0xf2, 0x86, 0xfe, 0x24, 0x0d, 0xd0, 0x1b, 0x6f, 0x27, 0x6f, 0x2d, 0x05, 0x2c, 0x7b, 0x23,
-0xd6, 0x15, 0xd8, 0x05, 0xf4, 0xf5, 0x38, 0xe8, 0x0b, 0xdd, 0x75, 0xd4, 0x39, 0xcf, 0xeb, 0xcd,
-0xfd, 0xd1, 0x4b, 0xdc, 0x86, 0xec, 0x3a, 0x01, 0xb2, 0x17, 0x17, 0x2c, 0x33, 0x3b, 0x4b, 0x42,
-0xe5, 0x3f, 0x7f, 0x34, 0x39, 0x22, 0xf0, 0x0b, 0xe4, 0xf4, 0x3f, 0xdf, 0xff, 0xcc, 0xe1, 0xbf,
-0xf3, 0xb8, 0xe9, 0xb9, 0x47, 0xc3, 0xf1, 0xd4, 0x14, 0xed, 0xb2, 0x08, 0xf5, 0x23, 0xa9, 0x3b,
-0x2b, 0x4c, 0x49, 0x53, 0x71, 0x4f, 0xfd, 0x40, 0xeb, 0x29, 0x3a, 0x0d, 0x7e, 0xee, 0xaf, 0xd1,
-0x2b, 0xba, 0xac, 0xaa, 0x8e, 0xa5, 0x0e, 0xab, 0x35, 0xbb, 0xf1, 0xd3, 0x30, 0xf2, 0x38, 0x12,
-0xa5, 0x30, 0xdd, 0x49, 0x34, 0x5b, 0x02, 0x62, 0xfe, 0x5b, 0x99, 0x49, 0x9b, 0x2c, 0xd8, 0x08,
-0x37, 0xe3, 0x23, 0xc1, 0x8c, 0xa7, 0xa8, 0x99, 0xda, 0x98, 0x62, 0xa4, 0x71, 0xba, 0x0f, 0xd8,
-0xa2, 0xf9, 0x86, 0x1b, 0xc1, 0x3a, 0x59, 0x54, 0x54, 0x65, 0x90, 0x6a, 0xba, 0x61, 0xcd, 0x4a,
-0x7f, 0x28, 0x5a, 0xff, 0xeb, 0xd5, 0xa1, 0xb2, 0xc8, 0x9a, 0xf4, 0x90, 0xe2, 0x94, 0x06, 0xa5,
-0x5f, 0xbe, 0xff, 0xdd, 0x38, 0x00, 0x71, 0x22, 0xbb, 0x41, 0x44, 0x5b, 0x84, 0x6b, 0x92, 0x6e,
-0x34, 0x62, 0xdf, 0x46, 0x45, 0x20, 0x50, 0xf4, 0x49, 0xca, 0x02, 0xa9, 0xe8, 0x94, 0x5a, 0x8f,
-0x28, 0x97, 0xe0, 0xa9, 0xd5, 0xc4, 0x0e, 0xe5, 0x8a, 0x07, 0x99, 0x29, 0x8b, 0x48, 0x9e, 0x60,
-0xee, 0x6d, 0xe6, 0x6c, 0xa6, 0x5b, 0x71, 0x3c, 0xb4, 0x13, 0x2c, 0xe8, 0xfd, 0xc0, 0x5a, 0xa4,
-0x44, 0x95, 0xec, 0x93, 0xc6, 0x9e, 0xe9, 0xb2, 0x89, 0xce, 0x80, 0xee, 0x1a, 0x10, 0x85, 0x30,
-0xa7, 0x4c, 0xa0, 0x60, 0xf0, 0x68, 0x20, 0x63, 0xc3, 0x4e, 0x1b, 0x2f, 0xba, 0x08, 0xd9, 0xe1,
-0xbb, 0xc0, 0xa0, 0xa9, 0xcc, 0x9e, 0x24, 0xa0, 0x7d, 0xab, 0x8d, 0xbf, 0xe5, 0xd9, 0xb2, 0xf7,
-0x58, 0x16, 0xdb, 0x32, 0xb7, 0x49, 0x46, 0x58, 0xf4, 0x5b, 0x3b, 0x53, 0x99, 0x3f, 0xf9, 0x22,
-0x24, 0x02, 0x7b, 0xe1, 0xf7, 0xc5, 0x2f, 0xb3, 0x14, 0xab, 0x8d, 0xad, 0xa1, 0xb9, 0x2d, 0xcd,
-0xe4, 0xe5, 0xe4, 0x00, 0xa4, 0x1a, 0xdf, 0x30, 0x35, 0x41, 0x9f, 0x49, 0x85, 0x49, 0xc1, 0x40,
-0xed, 0x2f, 0x94, 0x19, 0xfc, 0xff, 0xd8, 0xe6, 0xb1, 0xd1, 0x85, 0xc3, 0xdd, 0xbd, 0x1f, 0xc1,
-0xfd, 0xcb, 0xed, 0xdc, 0x78, 0xf1, 0x2a, 0x06, 0xd2, 0x18, 0x87, 0x27, 0x1f, 0x31, 0x75, 0x35,
-0x85, 0x34, 0x5f, 0x2e, 0x7d, 0x23, 0x42, 0x14, 0x1e, 0x02, 0x9e, 0xef, 0xbb, 0xdf, 0x2b, 0xd5,
-0xad, 0xd1, 0x41, 0xd5, 0xaf, 0xde, 0xde, 0xeb, 0x26, 0xfa, 0x06, 0x07, 0xe8, 0x10, 0xe6, 0x17,
-0x0a, 0x1c, 0x37, 0x1e, 0xe9, 0x1e, 0x83, 0x1d, 0x56, 0x19, 0xbc, 0x11, 0x32, 0x07, 0x92, 0xfb,
-0x44, 0xf1, 0x6a, 0xea, 0x54, 0xe8, 0xae, 0xea, 0xe0, 0xef, 0x46, 0xf6, 0xc8, 0xfb, 0x70, 0xff,
-0x42, 0x01, 0x58, 0x02, 0xf4, 0x03, 0xe4, 0x06, 0x48, 0x0b, 0xf8, 0x0f, 0x20, 0x13, 0x86, 0x13,
-0xba, 0x10, 0xe8, 0x0b, 0xae, 0x06, 0x88, 0x02, 0x06, 0x00, 0xcc, 0xfe, 0x72, 0xfd, 0xfe, 0xfa,
-0x2e, 0xf7, 0x22, 0xf2, 0x98, 0xed, 0x04, 0xeb, 0xf0, 0xeb, 0xd6, 0xf0, 0x86, 0xf9, 0x54, 0x04,
-0x04, 0x0f, 0x8e, 0x17, 0xfd, 0x1c, 0x1b, 0x1f, 0x5d, 0x1e, 0x46, 0x1b, 0x42, 0x16, 0x0c, 0x0f,
-0x74, 0x05, 0xf0, 0xf9, 0xac, 0xed, 0x2d, 0xe2, 0x4b, 0xd9, 0xfd, 0xd4, 0x2d, 0xd6, 0xdb, 0xdd,
-0x54, 0xeb, 0xd0, 0xfc, 0x9a, 0x0f, 0xc5, 0x20, 0xd5, 0x2d, 0x6f, 0x35, 0xaf, 0x36, 0x99, 0x31,
-0x57, 0x27, 0x7e, 0x18, 0xa0, 0x06, 0x98, 0xf3, 0x2d, 0xe1, 0x49, 0xd1, 0x1f, 0xc6, 0xe9, 0xc0,
-0x85, 0xc3, 0x65, 0xce, 0x67, 0xe1, 0x40, 0xfa, 0x58, 0x15, 0x37, 0x2e, 0x69, 0x41, 0xa3, 0x4b,
-0xe9, 0x4b, 0xdd, 0x42, 0x2d, 0x32, 0xa5, 0x1c, 0x48, 0x04, 0xc2, 0xeb, 0xfd, 0xd4, 0x2b, 0xc2,
-0xeb, 0xb4, 0xdf, 0xaf, 0x17, 0xb4, 0x47, 0xc3, 0x8b, 0xdc, 0xfe, 0xfc, 0x83, 0x1f, 0x79, 0x3e,
-0x6b, 0x54, 0x86, 0x5e, 0xac, 0x5b, 0x9d, 0x4d, 0xb5, 0x37, 0xc3, 0x1c, 0xc8, 0xff, 0x2b, 0xe3,
-0xfb, 0xc8, 0x97, 0xb3, 0xc4, 0xa5, 0xa4, 0xa1, 0xa2, 0xa9, 0x9b, 0xbe, 0xe7, 0xde, 0x00, 0x06,
-0x85, 0x2d, 0x8b, 0x4e, 0x56, 0x64, 0xe8, 0x6b, 0x34, 0x65, 0xef, 0x52, 0xb3, 0x38, 0xca, 0x19,
-0x22, 0xf9, 0x41, 0xd9, 0xdb, 0xbc, 0xdc, 0xa6, 0x32, 0x9a, 0x4e, 0x99, 0x70, 0xa6, 0x73, 0xc1,
-0x42, 0xe7, 0x24, 0x12, 0xc1, 0x3a, 0xa4, 0x5a, 0x66, 0x6d, 0x2a, 0x71, 0xc0, 0x66, 0x7d, 0x51,
-0xad, 0x34, 0x78, 0x13, 0xb4, 0xf0, 0x09, 0xcf, 0x01, 0xb2, 0x26, 0x9d, 0x9a, 0x93, 0xc6, 0x97,
-0x70, 0xaa, 0x21, 0xca, 0x7a, 0xf2, 0x3f, 0x1d, 0x9d, 0x43, 0x6e, 0x60, 0x10, 0x70, 0x2c, 0x71,
-0xbe, 0x64, 0x75, 0x4d, 0xdf, 0x2e, 0xa8, 0x0b, 0x4a, 0xe7, 0x47, 0xc5, 0x06, 0xaa, 0xea, 0x98,
-0x84, 0x94, 0xfa, 0x9d, 0xbb, 0xb4, 0x23, 0xd6, 0x46, 0xfd, 0xb9, 0x24, 0xf7, 0x46, 0xee, 0x5f,
-0x7a, 0x6c, 0x62, 0x6b, 0x74, 0x5d, 0x05, 0x45, 0x59, 0x25, 0x9e, 0x01, 0xc5, 0xdd, 0x53, 0xbe,
-0x72, 0xa7, 0x08, 0x9c, 0x40, 0x9d, 0x74, 0xaa, 0x29, 0xc2, 0x79, 0xe1, 0x6a, 0x04, 0xbf, 0x26,
-0x81, 0x44, 0xc0, 0x59, 0xea, 0x63, 0x0e, 0x61, 0xb5, 0x51, 0xb1, 0x38, 0x1c, 0x19, 0x38, 0xf7,
-0x45, 0xd7, 0xc1, 0xbd, 0xa1, 0xad, 0x6a, 0xa8, 0x41, 0xad, 0x29, 0xbb, 0x65, 0xd0, 0x82, 0xea,
-0x8e, 0x07, 0x45, 0x24, 0x67, 0x3d, 0x4d, 0x4f, 0xd4, 0x56, 0x59, 0x52, 0xab, 0x42, 0x41, 0x2a,
-0x18, 0x0d, 0xd8, 0xef, 0x77, 0xd6, 0x51, 0xc4, 0xc9, 0xba, 0x81, 0xb9, 0x95, 0xbf, 0x69, 0xcb,
-0xc7, 0xdb, 0xea, 0xef, 0x6c, 0x06, 0x63, 0x1d, 0xb1, 0x31, 0x03, 0x40, 0x31, 0x45, 0x25, 0x40,
-0x65, 0x31, 0x5d, 0x1c, 0xe0, 0x04, 0xec, 0xee, 0x8f, 0xdd, 0x83, 0xd2, 0xbf, 0xcd, 0x39, 0xce,
-0x05, 0xd3, 0xf7, 0xda, 0xfe, 0xe5, 0x8c, 0xf3, 0x5e, 0x03, 0xfc, 0x13, 0xef, 0x22, 0xf1, 0x2c,
-0x0d, 0x30, 0x47, 0x2b, 0xe1, 0x1f, 0xde, 0x10, 0x3e, 0x01, 0x12, 0xf4, 0xc0, 0xea, 0x88, 0xe5,
-0xc4, 0xe3, 0x68, 0xe4, 0x74, 0xe6, 0xae, 0xe9, 0x34, 0xee, 0x6c, 0xf4, 0xb2, 0xfc, 0x3a, 0x06,
-0x62, 0x0f, 0x12, 0x16, 0xc0, 0x18, 0x02, 0x17, 0xe6, 0x11, 0x2c, 0x0b, 0xd8, 0x04, 0x0e, 0x00,
-0x18, 0xfd, 0x98, 0xfb, 0xc4, 0xfa, 0xcc, 0xf9, 0x26, 0xf8, 0xc4, 0xf5, 0x0a, 0xf3, 0x12, 0xf1,
-0xda, 0xf0, 0xfe, 0xf2, 0x44, 0xf7, 0x72, 0xfc, 0xb8, 0x01, 0xf8, 0x05, 0x46, 0x09, 0xc4, 0x0b,
-0xce, 0x0d, 0xc8, 0x0f, 0x40, 0x11, 0xf2, 0x11, 0xe8, 0x10, 0xb6, 0x0d, 0x90, 0x07, 0xc2, 0xfe,
-0xca, 0xf3, 0xf4, 0xe8, 0x8f, 0xe0, 0x75, 0xdc, 0xef, 0xdd, 0x30, 0xe4, 0x3c, 0xee, 0xd8, 0xf9,
-0x6e, 0x05, 0x04, 0x10, 0x48, 0x19, 0x7d, 0x20, 0x83, 0x25, 0x95, 0x27, 0xc7, 0x25, 0x6f, 0x1f,
-0xa2, 0x13, 0xee, 0x02, 0xfc, 0xee, 0x23, 0xdb, 0x7b, 0xcb, 0xd1, 0xc3, 0x43, 0xc5, 0x4d, 0xcf,
-0x6d, 0xdf, 0x7a, 0xf2, 0xd0, 0x05, 0x98, 0x17, 0xb7, 0x26, 0xa7, 0x32, 0x77, 0x3a, 0xf1, 0x3c,
-0xfd, 0x38, 0x65, 0x2d, 0x0e, 0x1a, 0x84, 0x00, 0x10, 0xe4, 0xc7, 0xc9, 0x01, 0xb7, 0x09, 0xaf,
-0x17, 0xb3, 0x49, 0xc1, 0xbf, 0xd6, 0xc6, 0xef, 0x38, 0x09, 0x7f, 0x20, 0x8d, 0x34, 0xd5, 0x43,
-0x07, 0x4d, 0x5d, 0x4e, 0x35, 0x46, 0x29, 0x34, 0x20, 0x19, 0x0e, 0xf8, 0xb1, 0xd5, 0x17, 0xb8,
-0x2a, 0xa4, 0xb4, 0x9d, 0xb2, 0xa4, 0x4f, 0xb7, 0xed, 0xd1, 0x96, 0xf0, 0x66, 0x0f, 0xc3, 0x2b,
-0x83, 0x43, 0x99, 0x54, 0xfa, 0x5c, 0x44, 0x5a, 0x03, 0x4c, 0x0d, 0x33, 0xda, 0x11, 0x84, 0xec,
-0x4b, 0xc8, 0xba, 0xaa, 0x56, 0x98, 0xc4, 0x93, 0x2e, 0x9d, 0xdd, 0xb2, 0x57, 0xd1, 0x4e, 0xf4,
-0xda, 0x17, 0x41, 0x38, 0x77, 0x52, 0x44, 0x63, 0x62, 0x68, 0x52, 0x60, 0xd1, 0x4b, 0x3f, 0x2d,
-0x76, 0x08, 0xd7, 0xe1, 0x17, 0xbe, 0xe2, 0xa1, 0x34, 0x91, 0x84, 0x8e, 0x26, 0x9a, 0x9f, 0xb2,
-0xc7, 0xd4, 0x0c, 0xfc, 0x57, 0x23, 0xb7, 0x45, 0x1e, 0x5f, 0x70, 0x6c, 0xd2, 0x6b, 0x8c, 0x5d,
-0x15, 0x44, 0x0f, 0x23, 0x2e, 0xfe, 0x1b, 0xd9, 0xbd, 0xb7, 0x46, 0x9e, 0x20, 0x90, 0xa2, 0x8f,
-0xc2, 0x9d, 0x33, 0xb9, 0x65, 0xde, 0xea, 0x07, 0x7f, 0x2f, 0xd3, 0x4f, 0xee, 0x64, 0x7c, 0x6c,
-0x54, 0x66, 0x69, 0x54, 0xb3, 0x39, 0x90, 0x19, 0x08, 0xf7, 0xe5, 0xd4, 0xa1, 0xb6, 0x9a, 0x9f,
-0x88, 0x93, 0x4a, 0x95, 0xc8, 0xa5, 0x5b, 0xc3, 0xe4, 0xe9, 0xfa, 0x12, 0xd1, 0x37, 0x83, 0x53,
-0xd8, 0x62, 0x38, 0x65, 0xa8, 0x5b, 0x93, 0x48, 0x13, 0x2f, 0xa0, 0x11, 0x70, 0xf2, 0xaf, 0xd3,
-0x99, 0xb8, 0xa4, 0xa4, 0xa6, 0x9b, 0xee, 0x9f, 0x59, 0xb2, 0xcd, 0xd0, 0xda, 0xf5, 0x10, 0x1b,
-0x3b, 0x3a, 0x87, 0x4f, 0x16, 0x59, 0x7a, 0x57, 0x77, 0x4c, 0xa1, 0x3a, 0xf3, 0x23, 0x66, 0x0a,
-0xc0, 0xef, 0xc9, 0xd5, 0x67, 0xbf, 0xdb, 0xaf, 0x46, 0xaa, 0xd3, 0xb0, 0x7d, 0xc3, 0x33, 0xdf,
-0x10, 0xff, 0x27, 0x1d, 0xdf, 0x34, 0x9f, 0x43, 0xdd, 0x48, 0x77, 0x45, 0x4f, 0x3b, 0xff, 0x2b,
-0x7c, 0x19, 0x20, 0x05, 0xfc, 0xef, 0xe7, 0xdb, 0x17, 0xcb, 0x37, 0xc0, 0x8d, 0xbd, 0x6b, 0xc4,
-0xff, 0xd3, 0x04, 0xea, 0x02, 0x02, 0xe2, 0x17, 0x83, 0x28, 0x5f, 0x32, 0x39, 0x35, 0xe1, 0x31,
-0x8d, 0x29, 0xdf, 0x1d, 0x32, 0x10, 0x72, 0x01, 0xec, 0xf2, 0xcc, 0xe5, 0x65, 0xdb, 0x01, 0xd5,
-0xdd, 0xd3, 0x75, 0xd8, 0x8d, 0xe2, 0x44, 0xf0, 0x66, 0xff, 0x50, 0x0d, 0xde, 0x17, 0xd1, 0x1d,
-0x45, 0x1f, 0xd3, 0x1c, 0x5e, 0x17, 0x62, 0x10, 0xf8, 0x08, 0x3c, 0x02, 0x30, 0xfc, 0xee, 0xf6,
-0x40, 0xf2, 0x42, 0xee, 0x52, 0xeb, 0x40, 0xea, 0x0a, 0xec, 0x78, 0xf0, 0xf0, 0xf6, 0x84, 0xfd,
-0x0c, 0x03, 0x92, 0x06, 0xfe, 0x07, 0x9a, 0x07, 0x9a, 0x06, 0x2e, 0x06, 0xf0, 0x06, 0xec, 0x08,
-0x2c, 0x0b, 0x50, 0x0c, 0xd6, 0x0a, 0x22, 0x06, 0x0c, 0xff, 0x48, 0xf7, 0xc4, 0xf0, 0xe4, 0xec,
-0xca, 0xeb, 0x88, 0xec, 0x14, 0xee, 0xcc, 0xef, 0xa6, 0xf1, 0xaa, 0xf4, 0x98, 0xf9, 0x0e, 0x01,
-0xc4, 0x0a, 0x74, 0x15, 0x8d, 0x1e, 0x8d, 0x23, 0x77, 0x22, 0x38, 0x1b, 0x0c, 0x0f, 0x52, 0x00,
-0x1c, 0xf2, 0x92, 0xe6, 0x7b, 0xde, 0x97, 0xd9, 0x99, 0xd7, 0x5d, 0xd8, 0xc5, 0xdc, 0x4a, 0xe5,
-0x4c, 0xf2, 0x14, 0x03, 0xb6, 0x15, 0x29, 0x27, 0x5f, 0x34, 0x6d, 0x3a, 0xd7, 0x37, 0xb3, 0x2c,
-0xee, 0x1a, 0xd4, 0x05, 0x96, 0xf0, 0xb9, 0xdd, 0xe3, 0xce, 0x1f, 0xc5, 0xd1, 0xc0, 0xfb, 0xc2,
-0x0b, 0xcc, 0x27, 0xdc, 0xec, 0xf1, 0xd6, 0x0a, 0x9f, 0x23, 0xf5, 0x38, 0x6f, 0x47, 0xa7, 0x4c,
-0x8d, 0x47, 0xb3, 0x38, 0x37, 0x22, 0x3e, 0x07, 0x42, 0xeb, 0xdd, 0xd1, 0xd3, 0xbd, 0x2f, 0xb1,
-0x8f, 0xad, 0x75, 0xb3, 0xdf, 0xc2, 0x2b, 0xda, 0xd0, 0xf6, 0x06, 0x15, 0x4b, 0x31, 0x25, 0x48,
-0xf4, 0x56, 0x92, 0x5b, 0x89, 0x54, 0x61, 0x42, 0xed, 0x26, 0xb4, 0x05, 0xc9, 0xe2, 0x0b, 0xc3,
-0x04, 0xab, 0x0e, 0x9e, 0x86, 0x9d, 0x1c, 0xa9, 0x55, 0xbf, 0x33, 0xdd, 0xcc, 0xfe, 0xeb, 0x1f,
-0x5b, 0x3d, 0x6d, 0x54, 0xae, 0x62, 0xa8, 0x65, 0xf8, 0x5b, 0xb1, 0x45, 0xf1, 0x24, 0x7a, 0xfd,
-0x25, 0xd5, 0x6b, 0xb2, 0xc8, 0x9a, 0x4a, 0x91, 0x60, 0x96, 0x5c, 0xa8, 0x0f, 0xc4, 0x82, 0xe5,
-0x8a, 0x08, 0xcb, 0x29, 0x81, 0x46, 0x74, 0x5c, 0x40, 0x69, 0x30, 0x6a, 0x58, 0x5d, 0xe9, 0x42,
-0x87, 0x1d, 0x3e, 0xf2, 0x11, 0xc8, 0x0e, 0xa6, 0xaa, 0x91, 0x20, 0x8d, 0x48, 0x97, 0x09, 0xad,
-0xd3, 0xca, 0xc6, 0xec, 0x4a, 0x0f, 0x89, 0x2f, 0x51, 0x4b, 0x54, 0x60, 0x58, 0x6b, 0x70, 0x69,
-0xfe, 0x58, 0xd7, 0x3a, 0x8c, 0x12, 0x3a, 0xe6, 0x73, 0xbd, 0x32, 0x9f, 0xa8, 0x8f, 0x84, 0x8f,
-0xee, 0x9c, 0xad, 0xb4, 0x21, 0xd3, 0xae, 0xf4, 0x3e, 0x16, 0x55, 0x35, 0x77, 0x4f, 0xa6, 0x61,
-0xea, 0x68, 0xc4, 0x62, 0x75, 0x4e, 0xeb, 0x2d, 0xa4, 0x05, 0x3f, 0xdc, 0x8b, 0xb8, 0x26, 0xa0,
-0xce, 0x95, 0x60, 0x99, 0x88, 0xa8, 0x31, 0xc0, 0x49, 0xdd, 0xd4, 0xfc, 0xe8, 0x1b, 0xc7, 0x37,
-0xc9, 0x4d, 0x0e, 0x5b, 0x5e, 0x5d, 0x79, 0x53, 0x23, 0x3e, 0xe7, 0x1f, 0xe8, 0xfc, 0x57, 0xda,
-0xa1, 0xbd, 0xce, 0xaa, 0xb4, 0xa3, 0x0c, 0xa8, 0x53, 0xb6, 0x69, 0xcc, 0x50, 0xe7, 0xf2, 0x03,
-0x6f, 0x1f, 0xdd, 0x36, 0xaf, 0x47, 0xf3, 0x4f, 0x3b, 0x4e, 0xc9, 0x42, 0x27, 0x2f, 0x80, 0x15,
-0x2c, 0xf9, 0xeb, 0xdd, 0x91, 0xc7, 0x21, 0xb9, 0x59, 0xb4, 0x39, 0xb9, 0xa1, 0xc6, 0x51, 0xda,
-0x7c, 0xf1, 0x18, 0x09, 0x3f, 0x1e, 0xa7, 0x2e, 0xe1, 0x38, 0x53, 0x3c, 0x0b, 0x39, 0xff, 0x2f,
-0xd5, 0x21, 0xc8, 0x0f, 0x6e, 0xfb, 0x72, 0xe7, 0x8f, 0xd6, 0x99, 0xcb, 0x21, 0xc8, 0x7f, 0xcc,
-0xb3, 0xd7, 0x9a, 0xe7, 0x3c, 0xf9, 0xe2, 0x09, 0x7a, 0x17, 0xa1, 0x20, 0x63, 0x25, 0x39, 0x26,
-0x33, 0x24, 0x89, 0x1f, 0x34, 0x18, 0xf8, 0x0d, 0x78, 0x01, 0x30, 0xf4, 0x6e, 0xe8, 0xa3, 0xe0,
-0x3f, 0xde, 0x99, 0xe1, 0x34, 0xe9, 0x20, 0xf3, 0xd8, 0xfc, 0xcc, 0x04, 0xbc, 0x09, 0x40, 0x0c,
-0x44, 0x0d, 0x42, 0x0e, 0xbc, 0x0f, 0x50, 0x11, 0xc8, 0x11, 0x14, 0x10, 0xa0, 0x0b, 0x16, 0x05,
-0x34, 0xfe, 0xd2, 0xf8, 0x28, 0xf6, 0x0e, 0xf6, 0x7c, 0xf7, 0xde, 0xf8, 0x3e, 0xf9, 0x22, 0xf8,
-0x34, 0xf6, 0xc6, 0xf4, 0x60, 0xf5, 0xe8, 0xf8, 0x60, 0xff, 0x88, 0x07, 0x9e, 0x0f, 0xc4, 0x15,
-0xa2, 0x18, 0x36, 0x18, 0x56, 0x15, 0x2e, 0x11, 0x58, 0x0c, 0xba, 0x06, 0xfc, 0xff, 0x34, 0xf8,
-0xc8, 0xef, 0x96, 0xe7, 0x01, 0xe1, 0xd7, 0xdd, 0x59, 0xdf, 0x2e, 0xe6, 0xb6, 0xf1, 0x84, 0x00,
-0x50, 0x10, 0x71, 0x1e, 0x85, 0x28, 0x6b, 0x2d, 0xf9, 0x2c, 0xb7, 0x27, 0x27, 0x1e, 0x34, 0x11,
-0xf6, 0x01, 0xca, 0xf1, 0x3d, 0xe2, 0xfb, 0xd4, 0xf9, 0xcb, 0x9f, 0xc8, 0x3f, 0xcc, 0xdf, 0xd6,
-0x22, 0xe8, 0xfa, 0xfd, 0xc6, 0x15, 0x65, 0x2b, 0xcd, 0x3b, 0x47, 0x44, 0xe1, 0x43, 0xe9, 0x3a,
-0xe7, 0x2a, 0x34, 0x16, 0x2c, 0xff, 0x86, 0xe8, 0x2f, 0xd4, 0x57, 0xc4, 0x53, 0xba, 0xc5, 0xb7,
-0x6f, 0xbd, 0x15, 0xcc, 0xf5, 0xe2, 0xf2, 0xff, 0xef, 0x1e, 0x23, 0x3b, 0xaf, 0x4f, 0xfe, 0x58,
-0xf4, 0x55, 0xb3, 0x47, 0x23, 0x31, 0xc8, 0x15, 0x30, 0xf9, 0xf1, 0xdd, 0xab, 0xc6, 0x19, 0xb5,
-0xfa, 0xaa, 0x6e, 0xa9, 0x0d, 0xb2, 0x83, 0xc5, 0x03, 0xe3, 0x28, 0x07, 0x5d, 0x2c, 0x8d, 0x4c,
-0xe8, 0x61, 0x58, 0x69, 0xd0, 0x61, 0x25, 0x4e, 0x31, 0x32, 0x94, 0x12, 0x42, 0xf2, 0x59, 0xd4,
-0x29, 0xbb, 0xc8, 0xa8, 0xfc, 0x9e, 0x98, 0x9f, 0x73, 0xac, 0xe3, 0xc5, 0xde, 0xe9, 0x38, 0x13,
-0x79, 0x3b, 0xd4, 0x5b, 0x0a, 0x6f, 0x4e, 0x72, 0x5c, 0x66, 0x8b, 0x4e, 0x5d, 0x2f, 0xda, 0x0c,
-0x5a, 0xea, 0x85, 0xca, 0x37, 0xb0, 0x14, 0x9e, 0x76, 0x96, 0x4a, 0x9b, 0xbd, 0xad, 0x13, 0xcd,
-0x4a, 0xf5, 0x6f, 0x20, 0xa1, 0x47, 0x16, 0x65, 0x82, 0x74, 0x28, 0x74, 0x28, 0x65, 0x0f, 0x4b,
-0x49, 0x2a, 0x44, 0x06, 0x4b, 0xe2, 0x9b, 0xc1, 0xf0, 0xa7, 0x30, 0x98, 0xca, 0x94, 0x1e, 0x9f,
-0xc3, 0xb6, 0x43, 0xd9, 0xa8, 0x01, 0x49, 0x2a, 0x61, 0x4d, 0x6e, 0x66, 0x14, 0x72, 0x1c, 0x6f,
-0xd8, 0x5e, 0x31, 0x44, 0xe3, 0x22, 0x60, 0xfe, 0x8b, 0xda, 0x2f, 0xbb, 0x6a, 0xa4, 0x46, 0x99,
-0x56, 0x9b, 0x5a, 0xaa, 0x77, 0xc4, 0x38, 0xe6, 0x12, 0x0b, 0x77, 0x2e, 0x49, 0x4c, 0xe2, 0x60,
-0xa8, 0x69, 0x50, 0x65, 0x89, 0x54, 0xc9, 0x39, 0x98, 0x18, 0x14, 0xf5, 0x5d, 0xd3, 0x37, 0xb8,
-0x16, 0xa7, 0x16, 0xa2, 0xdc, 0xa8, 0x13, 0xba, 0xff, 0xd2, 0x80, 0xf0, 0x6c, 0x0f, 0x9b, 0x2c,
-0x33, 0x45, 0x12, 0x56, 0xd0, 0x5c, 0x92, 0x57, 0x07, 0x47, 0x3f, 0x2d, 0x06, 0x0e, 0xc4, 0xed,
-0x59, 0xd1, 0x91, 0xbc, 0xcd, 0xb1, 0x81, 0xb1, 0x71, 0xba, 0x5f, 0xca, 0x13, 0xdf, 0x8c, 0xf6,
-0xe6, 0x0e, 0x33, 0x26, 0x0b, 0x3a, 0xb1, 0x47, 0x51, 0x4c, 0x97, 0x46, 0xa3, 0x36, 0x3f, 0x1f,
-0x58, 0x04, 0xb4, 0xea, 0xe9, 0xd5, 0xc3, 0xc8, 0xef, 0xc3, 0x77, 0xc6, 0xa7, 0xce, 0xd9, 0xda,
-0x8c, 0xe9, 0xc8, 0xf9, 0xf6, 0x0a, 0xe8, 0x1b, 0xb3, 0x2a, 0xd9, 0x34, 0xeb, 0x37, 0x8b, 0x32,
-0x73, 0x25, 0x4c, 0x13, 0xc4, 0xff, 0x7e, 0xee, 0x11, 0xe2, 0x51, 0xdb, 0xdf, 0xd9, 0x6f, 0xdc,
-0x9f, 0xe1, 0x22, 0xe8, 0xc6, 0xef, 0xa8, 0xf8, 0xbc, 0x02, 0x76, 0x0d, 0x94, 0x17, 0x15, 0x1f,
-0xf1, 0x21, 0x49, 0x1f, 0xac, 0x17, 0x4a, 0x0d, 0xb8, 0x02, 0x0c, 0xfa, 0x3e, 0xf4, 0x94, 0xf1,
-0x26, 0xf1, 0xcc, 0xf1, 0x88, 0xf2, 0x22, 0xf3, 0xaa, 0xf3, 0x00, 0xf5, 0xa4, 0xf7, 0xec, 0xfb,
-0x46, 0x01, 0xc0, 0x06, 0xf6, 0x0a, 0x08, 0x0d, 0x1a, 0x0d, 0xda, 0x0b, 0x58, 0x0a, 0x30, 0x09,
-0xcc, 0x08, 0x94, 0x08, 0xe4, 0x07, 0xfa, 0x05, 0x1e, 0x02, 0x3a, 0xfc, 0x08, 0xf5, 0xb8, 0xed,
-0xf4, 0xe7, 0x82, 0xe5, 0x6c, 0xe7, 0x3e, 0xed, 0xca, 0xf5, 0x74, 0xff, 0xd2, 0x08, 0x08, 0x11,
-0xaa, 0x17, 0x6d, 0x1c, 0x1b, 0x1f, 0xa9, 0x1f, 0x3f, 0x1d, 0x58, 0x17, 0x88, 0x0d, 0x4c, 0x00,
-0x8e, 0xf0, 0xad, 0xe0, 0xf1, 0xd3, 0x53, 0xcd, 0x95, 0xce, 0xa3, 0xd7, 0x98, 0xe6, 0x68, 0xf8,
-0x4e, 0x0a, 0x3a, 0x1a, 0xa3, 0x26, 0x51, 0x2f, 0xf9, 0x33, 0x4b, 0x34, 0x8f, 0x2f, 0x0d, 0x25,
-0xa2, 0x14, 0xf0, 0xfe, 0x96, 0xe6, 0x39, 0xcf, 0xa9, 0xbd, 0xa9, 0xb5, 0x49, 0xb9, 0x57, 0xc7,
-0x21, 0xdd, 0x5a, 0xf6, 0xf2, 0x0e, 0x51, 0x24, 0xef, 0x34, 0x3f, 0x40, 0xab, 0x45, 0xcf, 0x44,
-0xdb, 0x3c, 0xc7, 0x2c, 0x0a, 0x15, 0xaa, 0xf7, 0x4b, 0xd8, 0x63, 0xbc, 0x40, 0xa9, 0xc4, 0xa2,
-0xc6, 0xa9, 0xe7, 0xbc, 0x37, 0xd8, 0x24, 0xf7, 0x2e, 0x15, 0x77, 0x2f, 0x03, 0x44, 0xd5, 0x51,
-0xbe, 0x57, 0x29, 0x54, 0x7b, 0x46, 0xdb, 0x2e, 0x64, 0x0f, 0x6c, 0xeb, 0x57, 0xc8, 0xb7, 0xab,
-0x56, 0x9a, 0x1c, 0x97, 0x2e, 0xa2, 0x91, 0xb9, 0xff, 0xd8, 0xf2, 0xfb, 0x9f, 0x1d, 0x01, 0x3b,
-0xbd, 0x51, 0xbe, 0x5f, 0x3a, 0x63, 0xf6, 0x5a, 0x1f, 0x47, 0x4f, 0x29, 0x04, 0x05, 0xab, 0xde,
-0x61, 0xbb, 0x42, 0xa0, 0x5e, 0x91, 0xa8, 0x90, 0x36, 0x9e, 0x37, 0xb8, 0xdd, 0xda, 0x4a, 0x01,
-0xb3, 0x26, 0xf3, 0x46, 0x9a, 0x5e, 0xd8, 0x6a, 0x04, 0x6a, 0xba, 0x5b, 0xe1, 0x41, 0xdb, 0x1f,
-0xaa, 0xf9, 0xed, 0xd3, 0xff, 0xb2, 0x0e, 0x9b, 0xd6, 0x8e, 0x74, 0x90, 0x40, 0xa0, 0x83, 0xbc,
-0xc5, 0xe1, 0xbc, 0x0a, 0xe1, 0x31, 0xe7, 0x51, 0xfe, 0x66, 0x40, 0x6e, 0x36, 0x67, 0x7d, 0x53,
-0x69, 0x36, 0xcc, 0x13, 0x86, 0xef, 0x3b, 0xcd, 0xff, 0xaf, 0x4c, 0x9b, 0xa8, 0x91, 0x42, 0x95,
-0xbc, 0xa6, 0xf7, 0xc4, 0xc4, 0xeb, 0x64, 0x15, 0x79, 0x3b, 0x70, 0x58, 0x70, 0x68, 0x16, 0x6a,
-0x60, 0x5e, 0x15, 0x48, 0x1b, 0x2b, 0xc2, 0x0a, 0x1c, 0xea, 0x9d, 0xcb, 0x47, 0xb2, 0x94, 0xa0,
-0x60, 0x99, 0xcc, 0x9e, 0xed, 0xb1, 0xb3, 0xd0, 0xd2, 0xf6, 0xef, 0x1d, 0x83, 0x3f, 0x92, 0x56,
-0x90, 0x60, 0xa6, 0x5d, 0xab, 0x4f, 0x03, 0x3a, 0xef, 0x1f, 0x02, 0x04, 0x46, 0xe8, 0xd1, 0xce,
-0x9b, 0xb9, 0x65, 0xab, 0xbe, 0xa6, 0xb9, 0xad, 0xeb, 0xc0, 0x1b, 0xde, 0x78, 0x00, 0x9f, 0x21,
-0x45, 0x3c, 0x91, 0x4c, 0xa3, 0x51, 0x6d, 0x4c, 0x59, 0x3f, 0xc9, 0x2c, 0x5c, 0x17, 0xb4, 0x00,
-0x2a, 0xea, 0x75, 0xd5, 0x95, 0xc4, 0xdd, 0xb9, 0x85, 0xb7, 0x67, 0xbf, 0xe7, 0xd0, 0xdc, 0xe9,
-0x76, 0x05, 0xe9, 0x1e, 0xe9, 0x31, 0xbd, 0x3c, 0xff, 0x3e, 0xc3, 0x39, 0xbd, 0x2e, 0x09, 0x20,
-0x42, 0x0f, 0xf8, 0xfd, 0x58, 0xed, 0xb9, 0xde, 0x85, 0xd3, 0x33, 0xcd, 0x05, 0xcd, 0x7d, 0xd3,
-0x43, 0xe0, 0x56, 0xf1, 0xe2, 0x03, 0x82, 0x14, 0x07, 0x21, 0xe1, 0x27, 0x0f, 0x29, 0x3f, 0x25,
-0xc3, 0x1d, 0x00, 0x14, 0x6e, 0x09, 0x24, 0xff, 0xe0, 0xf5, 0x48, 0xee, 0xb0, 0xe8, 0x56, 0xe5,
-0x56, 0xe4, 0x30, 0xe6, 0x18, 0xeb, 0x98, 0xf2, 0xb6, 0xfb, 0xc6, 0x04, 0x32, 0x0c, 0xd0, 0x10,
-0x52, 0x12, 0x22, 0x11, 0x1a, 0x0e, 0x8c, 0x0a, 0x6c, 0x07, 0x62, 0x05, 0x24, 0x04, 0x12, 0x03,
-0x14, 0x01, 0xa4, 0xfd, 0xca, 0xf8, 0x88, 0xf3, 0x9a, 0xef, 0x00, 0xee, 0x1a, 0xef, 0x0e, 0xf2,
-0xc0, 0xf5, 0x24, 0xf9, 0xd2, 0xfb, 0x2e, 0xfe, 0xec, 0x00, 0xf8, 0x04, 0x96, 0x0a, 0x38, 0x11,
-0x32, 0x17, 0x86, 0x1a, 0x76, 0x19, 0x50, 0x13, 0xd8, 0x08, 0x26, 0xfc, 0xfe, 0xef, 0x84, 0xe6,
-0xef, 0xe0, 0xef, 0xde, 0xbd, 0xdf, 0xb1, 0xe2, 0x76, 0xe7, 0x70, 0xee, 0x30, 0xf8, 0xdc, 0x04,
-0x64, 0x13, 0xb9, 0x21, 0xf9, 0x2c, 0x27, 0x32, 0x9b, 0x2f, 0x1b, 0x25, 0x64, 0x14, 0x70, 0x00,
-0xc0, 0xec, 0x55, 0xdc, 0xc5, 0xd0, 0x99, 0xca, 0x97, 0xc9, 0x7d, 0xcd, 0x41, 0xd6, 0x1c, 0xe4,
-0x88, 0xf6, 0x08, 0x0c, 0x09, 0x22, 0x2b, 0x35, 0x15, 0x42, 0x37, 0x46, 0x99, 0x40, 0x87, 0x31,
-0x48, 0x1b, 0x38, 0x01, 0x16, 0xe7, 0x55, 0xd0, 0x77, 0xbf, 0xf3, 0xb5, 0x81, 0xb4, 0x5f, 0xbb,
-0x41, 0xca, 0x15, 0xe0, 0xb4, 0xfa, 0x1a, 0x17, 0x91, 0x31, 0x91, 0x46, 0x45, 0x53, 0xb8, 0x55,
-0x1f, 0x4d, 0x3b, 0x3a, 0x3d, 0x1f, 0x96, 0xff, 0x57, 0xdf, 0xe7, 0xc2, 0xcf, 0xad, 0xda, 0xa2,
-0x72, 0xa3, 0x85, 0xaf, 0x7f, 0xc5, 0xc5, 0xe2, 0x8e, 0x03, 0xbd, 0x23, 0xaf, 0x3f, 0x81, 0x54,
-0xda, 0x5f, 0x30, 0x60, 0xb9, 0x54, 0x2b, 0x3e, 0x8b, 0x1e, 0x94, 0xf9, 0x1f, 0xd4, 0x77, 0xb3,
-0xd2, 0x9c, 0x7e, 0x93, 0xba, 0x98, 0x26, 0xab, 0xd5, 0xc7, 0x62, 0xea, 0x44, 0x0e, 0x55, 0x2f,
-0xad, 0x4a, 0xf8, 0x5d, 0x6c, 0x67, 0x62, 0x65, 0xee, 0x56, 0xc1, 0x3c, 0x18, 0x19, 0x02, 0xf0,
-0x41, 0xc7, 0xae, 0xa5, 0xd0, 0x90, 0xec, 0x8b, 0xd0, 0x96, 0xc9, 0xae, 0x75, 0xcf, 0xee, 0xf3,
-0x9a, 0x17, 0x43, 0x37, 0xaf, 0x50, 0x1a, 0x62, 0xb6, 0x69, 0x6a, 0x65, 0x77, 0x54, 0x27, 0x37,
-0x60, 0x10, 0xea, 0xe4, 0xdd, 0xbb, 0x48, 0x9c, 0xca, 0x8b, 0x14, 0x8c, 0x88, 0x9b, 0x65, 0xb6,
-0x0d, 0xd8, 0xc4, 0xfb, 0xad, 0x1d, 0x81, 0x3b, 0x17, 0x53, 0xae, 0x62, 0xf2, 0x67, 0xf6, 0x60,
-0xbd, 0x4c, 0xbd, 0x2c, 0x72, 0x04, 0xdd, 0xd9, 0x1d, 0xb4, 0xfa, 0x99, 0x28, 0x8f, 0xf8, 0x93,
-0xf4, 0xa5, 0x43, 0xc1, 0xcf, 0xe1, 0x66, 0x03, 0xe9, 0x22, 0xed, 0x3d, 0x8f, 0x52, 0x86, 0x5e,
-0xe2, 0x5f, 0x34, 0x55, 0xcf, 0x3e, 0xd1, 0x1e, 0x4c, 0xf9, 0xeb, 0xd3, 0xef, 0xb4, 0x42, 0xa1,
-0x0a, 0x9b, 0x00, 0xa2, 0xa9, 0xb3, 0xf5, 0xcc, 0x2a, 0xea, 0x0c, 0x08, 0x9b, 0x23, 0x8d, 0x3a,
-0xf5, 0x4a, 0xeb, 0x52, 0xf5, 0x50, 0xcd, 0x44, 0x6b, 0x2f, 0x3c, 0x13, 0xe6, 0xf3, 0xbb, 0xd5,
-0x75, 0xbd, 0x63, 0xae, 0x64, 0xaa, 0x75, 0xb1, 0xe9, 0xc1, 0xa9, 0xd8, 0xa0, 0xf2, 0x60, 0x0c,
-0x33, 0x23, 0xe3, 0x34, 0xe9, 0x3f, 0x1f, 0x43, 0x6b, 0x3e, 0x7b, 0x32, 0xd7, 0x20, 0x52, 0x0b,
-0x30, 0xf4, 0x59, 0xde, 0xcd, 0xcc, 0x11, 0xc2, 0x99, 0xbf, 0x83, 0xc5, 0x9f, 0xd2, 0xc0, 0xe4,
-0x02, 0xf9, 0x8c, 0x0c, 0xb9, 0x1c, 0x0d, 0x28, 0xa7, 0x2d, 0xcb, 0x2d, 0x4b, 0x29, 0x3b, 0x21,
-0x66, 0x16, 0x60, 0x09, 0xdc, 0xfa, 0x48, 0xec, 0xab, 0xdf, 0x55, 0xd7, 0xf5, 0xd4, 0x07, 0xd9,
-0xa3, 0xe2, 0xb4, 0xef, 0x68, 0xfd, 0x50, 0x09, 0xc2, 0x11, 0x42, 0x16, 0x5c, 0x17, 0x8a, 0x16,
-0xe8, 0x14, 0xfa, 0x12, 0x50, 0x10, 0x08, 0x0c, 0x70, 0x05, 0x2c, 0xfd, 0xa0, 0xf4, 0x1c, 0xee,
-0x40, 0xeb, 0x82, 0xec, 0xe2, 0xf0, 0x7c, 0xf6, 0x6e, 0xfb, 0x64, 0xfe, 0x38, 0xff, 0xca, 0xfe,
-0xa8, 0xfe, 0x26, 0x00, 0x02, 0x04, 0x8e, 0x09, 0x3c, 0x0f, 0x20, 0x13, 0xd8, 0x13, 0x08, 0x11,
-0xfe, 0x0b, 0x48, 0x06, 0x5e, 0x01, 0x76, 0xfd, 0x1a, 0xfa, 0x7a, 0xf6, 0x18, 0xf2, 0x3a, 0xed,
-0xd8, 0xe8, 0x98, 0xe6, 0xd2, 0xe7, 0x7c, 0xed, 0x3c, 0xf7, 0xda, 0x03, 0x0e, 0x11, 0x6b, 0x1c,
-0xc3, 0x23, 0x1f, 0x26, 0xd5, 0x23, 0xc3, 0x1d, 0xf0, 0x14, 0x10, 0x0a, 0xc4, 0xfd, 0xd6, 0xf0,
-0x66, 0xe4, 0xc7, 0xd9, 0xbf, 0xd2, 0x89, 0xd0, 0x61, 0xd4, 0x3d, 0xde, 0xaa, 0xed, 0xf2, 0x00,
-0xa8, 0x15, 0x3b, 0x28, 0xdf, 0x35, 0x6b, 0x3c, 0x07, 0x3b, 0x55, 0x32, 0x45, 0x23, 0xfc, 0x0f,
-0xaa, 0xfa, 0xce, 0xe5, 0x7d, 0xd3, 0xd9, 0xc5, 0x29, 0xbe, 0xa3, 0xbd, 0xa7, 0xc4, 0x29, 0xd3,
-0x8a, 0xe8, 0xda, 0x02, 0xc7, 0x1e, 0x2d, 0x38, 0xa1, 0x4a, 0x01, 0x53, 0xd1, 0x4f, 0x8f, 0x41,
-0xf9, 0x2a, 0x9e, 0x0f, 0x5a, 0xf3, 0x3b, 0xd9, 0xed, 0xc3, 0xfd, 0xb4, 0xeb, 0xad, 0x3b, 0xaf,
-0x69, 0xb9, 0xa7, 0xcc, 0x0a, 0xe8, 0x12, 0x09, 0x1b, 0x2b, 0x29, 0x49, 0x76, 0x5d, 0x94, 0x64,
-0x0a, 0x5d, 0xcd, 0x48, 0xed, 0x2b, 0x4a, 0x0b, 0xe8, 0xea, 0x0f, 0xce, 0x37, 0xb7, 0x0e, 0xa8,
-0xfe, 0xa1, 0x78, 0xa5, 0x73, 0xb3, 0xff, 0xcb, 0x72, 0xed, 0xf4, 0x13, 0x25, 0x3a, 0x76, 0x59,
-0xa2, 0x6c, 0xec, 0x6f, 0x50, 0x63, 0xf5, 0x49, 0xef, 0x28, 0x2c, 0x05, 0xb5, 0xe2, 0x77, 0xc4,
-0x15, 0xad, 0x8c, 0x9e, 0xf8, 0x99, 0xc4, 0xa0, 0x57, 0xb3, 0x49, 0xd1, 0x96, 0xf7, 0x3d, 0x21,
-0xef, 0x47, 0x84, 0x65, 0xea, 0x74, 0xc8, 0x73, 0x36, 0x63, 0xe1, 0x46, 0xf1, 0x23, 0xce, 0xfe,
-0x5b, 0xdb, 0xa5, 0xbc, 0xae, 0xa5, 0xa4, 0x98, 0x18, 0x97, 0x0a, 0xa2, 0x77, 0xb9, 0x7f, 0xdb,
-0xda, 0x03, 0x01, 0x2d, 0xdb, 0x50, 0x48, 0x6a, 0x48, 0x75, 0xb4, 0x70, 0xf4, 0x5d, 0xb7, 0x40,
-0x5d, 0x1d, 0x16, 0xf8, 0xab, 0xd4, 0xdd, 0xb6, 0xdc, 0xa1, 0x12, 0x98, 0xe2, 0x9a, 0x62, 0xaa,
-0x87, 0xc5, 0xc2, 0xe8, 0x64, 0x0f, 0x63, 0x34, 0x23, 0x53, 0x86, 0x67, 0xec, 0x6e, 0x32, 0x68,
-0xde, 0x54, 0xff, 0x37, 0x3a, 0x15, 0xe2, 0xf0, 0x25, 0xcf, 0x21, 0xb4, 0x52, 0xa3, 0x64, 0x9e,
-0xd6, 0xa5, 0xcd, 0xb8, 0x6f, 0xd4, 0xfa, 0xf4, 0x54, 0x16, 0xef, 0x34, 0xa3, 0x4d, 0x98, 0x5d,
-0x7c, 0x62, 0x56, 0x5b, 0xdd, 0x48, 0x47, 0x2d, 0x7c, 0x0c, 0x9c, 0xea, 0xa9, 0xcc, 0xad, 0xb6,
-0x5f, 0xab, 0xa3, 0xab, 0x73, 0xb6, 0xe1, 0xc9, 0x65, 0xe2, 0x32, 0xfd, 0x66, 0x17, 0x35, 0x2f,
-0x75, 0x42, 0xf7, 0x4e, 0x75, 0x52, 0x93, 0x4b, 0x81, 0x3a, 0x59, 0x21, 0x2c, 0x04, 0x74, 0xe7,
-0xcb, 0xcf, 0x89, 0xc0, 0xef, 0xba, 0xab, 0xbe, 0xc3, 0xc9, 0xd1, 0xd9, 0x8c, 0xec, 0xb6, 0xff,
-0x9a, 0x12, 0x29, 0x24, 0xeb, 0x32, 0xaf, 0x3c, 0x75, 0x3f, 0x53, 0x39, 0xe5, 0x2a, 0x58, 0x16,
-0x48, 0xff, 0x4c, 0xea, 0x5b, 0xda, 0xaf, 0xd1, 0x27, 0xd0, 0x81, 0xd4, 0xbf, 0xdc, 0x34, 0xe7,
-0x70, 0xf2, 0x20, 0xfe, 0x24, 0x0a, 0xe8, 0x15, 0x8d, 0x20, 0xed, 0x27, 0x45, 0x2a, 0x55, 0x26,
-0x5d, 0x1c, 0x9a, 0x0e, 0xf2, 0xff, 0x50, 0xf3, 0xb2, 0xea, 0x96, 0xe6, 0x6a, 0xe6, 0xfc, 0xe8,
-0xec, 0xec, 0x1a, 0xf1, 0x80, 0xf5, 0x18, 0xfa, 0x4c, 0xff, 0x2c, 0x05, 0x6c, 0x0b, 0xda, 0x10,
-0x0c, 0x14, 0x38, 0x14, 0x30, 0x11, 0x42, 0x0c, 0xc4, 0x06, 0x38, 0x02, 0x4c, 0xff, 0xda, 0xfd,
-0x42, 0xfd, 0xba, 0xfc, 0x50, 0xfb, 0xd6, 0xf8, 0x9a, 0xf5, 0x3c, 0xf2, 0xf8, 0xef, 0xd8, 0xef,
-0x6a, 0xf2, 0xb6, 0xf7, 0x84, 0xfe, 0x8e, 0x05, 0xf2, 0x0b, 0xc8, 0x10, 0x52, 0x14, 0x5e, 0x16,
-0xce, 0x16, 0xba, 0x15, 0xf0, 0x12, 0xde, 0x0d, 0x92, 0x06, 0xe6, 0xfc, 0x98, 0xf1, 0x24, 0xe6,
-0xa1, 0xdc, 0xb5, 0xd7, 0x07, 0xd9, 0xe3, 0xe0, 0xec, 0xed, 0xc0, 0xfd, 0x5c, 0x0d, 0xe0, 0x1a,
-0x8b, 0x24, 0x57, 0x2a, 0x43, 0x2c, 0x5d, 0x2a, 0xab, 0x24, 0x26, 0x1b, 0x7c, 0x0d, 0x38, 0xfc,
-0xbe, 0xe8, 0xa1, 0xd5, 0xcf, 0xc6, 0xa5, 0xbf, 0x6f, 0xc2, 0x25, 0xcf, 0x83, 0xe3, 0x7e, 0xfb,
-0x1e, 0x13, 0xed, 0x26, 0x5b, 0x35, 0xb3, 0x3d, 0x3d, 0x40, 0xf5, 0x3c, 0xc9, 0x33, 0xbd, 0x24,
-0xe4, 0x0f, 0xb4, 0xf6, 0xbd, 0xdb, 0x2d, 0xc3, 0xcb, 0xb1, 0xb7, 0xab, 0x63, 0xb2, 0xc5, 0xc4,
-0x71, 0xdf, 0xde, 0xfd, 0xd0, 0x1a, 0xd5, 0x32, 0x53, 0x44, 0x7f, 0x4e, 0x2d, 0x51, 0xe7, 0x4b,
-0x61, 0x3e, 0x93, 0x28, 0x30, 0x0c, 0x4e, 0xeb, 0x9f, 0xca, 0x3f, 0xaf, 0x28, 0x9e, 0x30, 0x9b,
-0xb8, 0xa6, 0xc9, 0xbe, 0x57, 0xdf, 0xb8, 0x02, 0xc9, 0x23, 0x47, 0x3f, 0xcb, 0x52, 0x6c, 0x5d,
-0x36, 0x5e, 0x79, 0x54, 0xa9, 0x40, 0x05, 0x24, 0x2e, 0x01, 0x5d, 0xdc, 0x51, 0xba, 0x90, 0xa0,
-0x1e, 0x93, 0x12, 0x94, 0x70, 0xa3, 0xf3, 0xbe, 0x71, 0xe2, 0x7a, 0x08, 0x5b, 0x2c, 0xef, 0x49,
-0xc8, 0x5e, 0x90, 0x68, 0x4c, 0x66, 0x94, 0x57, 0xd5, 0x3d, 0x04, 0x1c, 0xc0, 0xf5, 0x1b, 0xd0,
-0xb1, 0xaf, 0x20, 0x99, 0x10, 0x8f, 0xce, 0x92, 0x28, 0xa4, 0x43, 0xc1, 0x60, 0xe6, 0x6c, 0x0e,
-0x39, 0x34, 0x05, 0x53, 0x54, 0x67, 0x42, 0x6e, 0xfa, 0x66, 0xdf, 0x52, 0x83, 0x34, 0x46, 0x10,
-0x78, 0xea, 0x3f, 0xc7, 0xde, 0xaa, 0x06, 0x98, 0xc8, 0x90, 0x8a, 0x96, 0x48, 0xa9, 0xd1, 0xc7,
-0x76, 0xee, 0xa0, 0x17, 0x89, 0x3d, 0xce, 0x5a, 0x1a, 0x6b, 0xc2, 0x6c, 0x00, 0x60, 0xc3, 0x47,
-0x09, 0x28, 0x16, 0x05, 0xa5, 0xe2, 0x2b, 0xc4, 0x13, 0xac, 0x92, 0x9c, 0xae, 0x97, 0x98, 0x9e,
-0x77, 0xb2, 0x93, 0xd1, 0x24, 0xf8, 0x2f, 0x20, 0x4d, 0x43, 0xf8, 0x5b, 0xba, 0x66, 0x0c, 0x63,
-0xcf, 0x52, 0xd5, 0x39, 0x20, 0x1c, 0x48, 0xfd, 0xff, 0xdf, 0x89, 0xc6, 0x83, 0xb2, 0x08, 0xa6,
-0x16, 0xa3, 0x5d, 0xab, 0xaf, 0xbf, 0xfd, 0xdd, 0x0c, 0x02, 0xe5, 0x25, 0x33, 0x43, 0x7c, 0x55,
-0xc6, 0x5a, 0x77, 0x53, 0xc7, 0x42, 0x07, 0x2c, 0xa8, 0x12, 0x48, 0xf9, 0x9d, 0xe1, 0x29, 0xcd,
-0x7d, 0xbd, 0x3b, 0xb4, 0x3d, 0xb3, 0x4f, 0xbc, 0x11, 0xcf, 0xd6, 0xe9, 0x2a, 0x08, 0xb1, 0x24,
-0x95, 0x3a, 0xc5, 0x46, 0x21, 0x48, 0xad, 0x40, 0x4f, 0x32, 0x3f, 0x20, 0xa8, 0x0c, 0x14, 0xf9,
-0x36, 0xe7, 0xf3, 0xd7, 0xd1, 0xcc, 0xe7, 0xc6, 0xb3, 0xc7, 0x97, 0xcf, 0x85, 0xde, 0x5e, 0xf2,
-0x2a, 0x08, 0x06, 0x1c, 0xcd, 0x2a, 0x65, 0x32, 0xdb, 0x32, 0xff, 0x2c, 0xb5, 0x22, 0xea, 0x15,
-0x1c, 0x08, 0xf2, 0xfa, 0x44, 0xef, 0x18, 0xe6, 0xdd, 0xdf, 0xf3, 0xdc, 0x91, 0xdd, 0xdd, 0xe1,
-0xc2, 0xe9, 0x9a, 0xf4, 0xe2, 0x00, 0xec, 0x0c, 0x3c, 0x16, 0xda, 0x1b, 0xf7, 0x1c, 0x1a, 0x1a,
-0x72, 0x14, 0x44, 0x0d, 0x6a, 0x06, 0xb0, 0x00, 0xaa, 0xfc, 0xe6, 0xf9, 0xe6, 0xf7, 0xbe, 0xf5,
-0x3a, 0xf3, 0xc4, 0xf0, 0x82, 0xef, 0xa0, 0xf0, 0x32, 0xf4, 0x80, 0xf9, 0x1c, 0xff, 0xa2, 0x03,
-0x56, 0x06, 0x48, 0x07, 0x3a, 0x07, 0x76, 0x07, 0xd0, 0x08, 0x6e, 0x0b, 0x9e, 0x0e, 0xbc, 0x10,
-0x30, 0x10, 0xf4, 0x0b, 0xd4, 0x03, 0x96, 0xf9, 0x74, 0xef, 0x1a, 0xe8, 0xb4, 0xe4, 0xfe, 0xe4,
-0xfa, 0xe7, 0x76, 0xec, 0xa8, 0xf1, 0x7e, 0xf7, 0x80, 0xfe, 0x26, 0x07, 0x66, 0x11, 0xb2, 0x1b,
-0x35, 0x24, 0x8b, 0x28, 0xb5, 0x26, 0x19, 0x1e, 0x72, 0x0f, 0x80, 0xfd, 0x94, 0xeb, 0x05, 0xdd,
-0x95, 0xd3, 0xe7, 0xcf, 0x45, 0xd1, 0x9f, 0xd6, 0x99, 0xdf, 0x8e, 0xeb, 0xbe, 0xfa, 0x5e, 0x0c,
-0x83, 0x1e, 0xed, 0x2e, 0x4f, 0x3a, 0x55, 0x3e, 0x69, 0x39, 0x71, 0x2b, 0x88, 0x16, 0xb0, 0xfd,
-0x3a, 0xe5, 0x7d, 0xd0, 0x67, 0xc2, 0xd3, 0xbb, 0xd7, 0xbc, 0xe3, 0xc4, 0x05, 0xd3, 0x96, 0xe6,
-0x28, 0xfe, 0x66, 0x17, 0x35, 0x2f, 0x2d, 0x42, 0x67, 0x4d, 0x0b, 0x4f, 0x03, 0x46, 0x6f, 0x33,
-0x36, 0x19, 0x10, 0xfb, 0xbb, 0xdc, 0xd5, 0xc2, 0xbb, 0xb0, 0x9c, 0xa8, 0x18, 0xab, 0x8f, 0xb7,
-0xc5, 0xcc, 0x52, 0xe8, 0x12, 0x07, 0x53, 0x25, 0x7f, 0x3f, 0x57, 0x52, 0xf2, 0x5b, 0xa6, 0x5a,
-0x5d, 0x4e, 0xd3, 0x37, 0x50, 0x19, 0x26, 0xf6, 0xe9, 0xd2, 0x9d, 0xb4, 0x04, 0xa0, 0x1a, 0x98,
-0xc4, 0x9d, 0x43, 0xb0, 0xb7, 0xcc, 0x3c, 0xef, 0xf0, 0x12, 0x99, 0x33, 0xa3, 0x4d, 0xe2, 0x5e,
-0xaa, 0x65, 0x5c, 0x61, 0xb5, 0x51, 0x8f, 0x37, 0x02, 0x15, 0x92, 0xed, 0x89, 0xc6, 0x02, 0xa6,
-0x9a, 0x91, 0xc0, 0x8c, 0x04, 0x98, 0xeb, 0xb0, 0x6f, 0xd3, 0xac, 0xf9, 0xad, 0x1e, 0x6f, 0x3e,
-0x5c, 0x56, 0x14, 0x65, 0x38, 0x69, 0x2e, 0x62, 0xc7, 0x4f, 0xa9, 0x32, 0xe6, 0x0c, 0xd1, 0xe2,
-0x8b, 0xba, 0x24, 0x9b, 0x5a, 0x8a, 0xaa, 0x8a, 0x40, 0x9b, 0x7f, 0xb8, 0xb9, 0xdc, 0xb2, 0x02,
-0xb3, 0x25, 0xad, 0x42, 0x36, 0x58, 0x96, 0x64, 0xb6, 0x66, 0x96, 0x5d, 0xc5, 0x48, 0x59, 0x29,
-0x0c, 0x02, 0xe5, 0xd7, 0xc5, 0xb1, 0xc2, 0x96, 0x48, 0x8b, 0xb2, 0x90, 0xe2, 0xa4, 0x2b, 0xc3,
-0xa4, 0xe6, 0x2c, 0x0a, 0xfb, 0x29, 0x33, 0x44, 0xca, 0x56, 0x7a, 0x60, 0x0e, 0x60, 0x4d, 0x54,
-0x97, 0x3d, 0x39, 0x1d, 0xbc, 0xf6, 0xb9, 0xcf, 0xd3, 0xae, 0x96, 0x99, 0x80, 0x93, 0x8a, 0x9c,
-0xa3, 0xb1, 0xf1, 0xce, 0x80, 0xef, 0x44, 0x0f, 0x75, 0x2b, 0xb9, 0x41, 0xc9, 0x50, 0x44, 0x57,
-0xb5, 0x53, 0x25, 0x46, 0x25, 0x2f, 0xce, 0x10, 0x04, 0xef, 0xbb, 0xce, 0x0b, 0xb5, 0x00, 0xa6,
-0x72, 0xa3, 0xdb, 0xac, 0x37, 0xc0, 0xad, 0xd9, 0xc2, 0xf5, 0x16, 0x11, 0xe1, 0x28, 0x19, 0x3b,
-0x41, 0x46, 0xf9, 0x48, 0xfb, 0x42, 0xc9, 0x34, 0x27, 0x20, 0x6c, 0x07, 0x74, 0xed, 0x65, 0xd5,
-0xb1, 0xc2, 0x0b, 0xb8, 0xb5, 0xb6, 0xf9, 0xbe, 0xe9, 0xce, 0x18, 0xe4, 0x20, 0xfb, 0x2c, 0x11,
-0x73, 0x23, 0x3b, 0x30, 0x3d, 0x36, 0x87, 0x35, 0xcf, 0x2e, 0x61, 0x23, 0xa2, 0x14, 0x12, 0x04,
-0xb4, 0xf2, 0x47, 0xe2, 0xdb, 0xd4, 0x85, 0xcc, 0x35, 0xcb, 0x07, 0xd1, 0x3f, 0xdd, 0x3a, 0xed,
-0x5a, 0xfe, 0x9e, 0x0d, 0x12, 0x19, 0x8d, 0x1f, 0x11, 0x21, 0xc1, 0x1e, 0x0a, 0x1a, 0xe4, 0x13,
-0x26, 0x0d, 0x86, 0x05, 0xfe, 0xfc, 0xd6, 0xf3, 0x04, 0xeb, 0x7e, 0xe4, 0xed, 0xe1, 0x34, 0xe4,
-0x88, 0xea, 0x56, 0xf3, 0x38, 0xfc, 0x68, 0x03, 0xfa, 0x07, 0x94, 0x09, 0x8a, 0x09, 0x22, 0x09,
-0x5c, 0x09, 0xce, 0x0a, 0x96, 0x0c, 0x7a, 0x0d, 0x46, 0x0c, 0x44, 0x08, 0x64, 0x02, 0x60, 0xfc,
-0xc8, 0xf7, 0x60, 0xf5, 0xe4, 0xf4, 0x20, 0xf5, 0x0e, 0xf5, 0x24, 0xf4, 0x5a, 0xf2, 0x16, 0xf1,
-0x9c, 0xf1, 0x08, 0xf5, 0xce, 0xfb, 0xfa, 0x04, 0xde, 0x0e, 0x70, 0x17, 0x85, 0x1c, 0x53, 0x1d,
-0x20, 0x1a, 0xd4, 0x13, 0xe8, 0x0b, 0x2e, 0x03, 0xf4, 0xf9, 0xa0, 0xf0, 0xb8, 0xe7, 0x05, 0xe0,
-0xe5, 0xda, 0x63, 0xd9, 0xb9, 0xdc, 0x52, 0xe5, 0x94, 0xf2, 0x0a, 0x03, 0x8c, 0x14, 0x2d, 0x24,
-0x3f, 0x2f, 0x07, 0x34, 0x97, 0x31, 0xfb, 0x28, 0x44, 0x1b, 0x52, 0x0a, 0xf8, 0xf7, 0x2a, 0xe6,
-0x9d, 0xd6, 0x45, 0xcb, 0x1f, 0xc5, 0x69, 0xc5, 0x7b, 0xcc, 0x47, 0xda, 0xc2, 0xed, 0x10, 0x05,
-0x73, 0x1d, 0x45, 0x33, 0x3d, 0x43, 0x27, 0x4a, 0x03, 0x47, 0xed, 0x39, 0x27, 0x25, 0x9e, 0x0b,
-0xfe, 0xf0, 0x53, 0xd8, 0xbd, 0xc4, 0xbf, 0xb7, 0xa9, 0xb2, 0xa3, 0xb5, 0xe3, 0xc0, 0xc9, 0xd3,
-0x12, 0xed, 0xae, 0x0a, 0x05, 0x29, 0x1f, 0x44, 0x06, 0x57, 0x1c, 0x5e, 0x6a, 0x57, 0x2b, 0x44,
-0x93, 0x27, 0xb0, 0x06, 0x10, 0xe6, 0xfd, 0xc9, 0x07, 0xb5, 0xba, 0xa8, 0x4e, 0xa5, 0xfe, 0xaa,
-0xe1, 0xb9, 0x75, 0xd1, 0x98, 0xf0, 0xee, 0x13, 0x71, 0x37, 0x72, 0x55, 0x68, 0x68, 0x58, 0x6c,
-0x44, 0x60, 0x73, 0x46, 0x15, 0x24, 0xae, 0xfe, 0x61, 0xdb, 0x33, 0xbe, 0x90, 0xa9, 0x70, 0x9e,
-0x30, 0x9d, 0xea, 0xa5, 0xa3, 0xb8, 0x27, 0xd5, 0xe2, 0xf8, 0x5d, 0x20, 0x13, 0x46, 0xb6, 0x63,
-0xe0, 0x73, 0x10, 0x73, 0x96, 0x61, 0x65, 0x43, 0xfd, 0x1d, 0x02, 0xf7, 0x5f, 0xd3, 0x6b, 0xb6,
-0x96, 0xa2, 0xfc, 0x98, 0x00, 0x9a, 0x20, 0xa6, 0x67, 0xbd, 0x49, 0xde, 0x7c, 0x05, 0x23, 0x2e,
-0x37, 0x52, 0x22, 0x6c, 0x28, 0x77, 0x84, 0x71, 0xbc, 0x5c, 0xc5, 0x3c, 0x04, 0x17, 0x7a, 0xf0,
-0x75, 0xcd, 0x63, 0xb1, 0xf0, 0x9e, 0x5a, 0x97, 0xb2, 0x9b, 0x03, 0xac, 0x81, 0xc7, 0x34, 0xeb,
-0x8a, 0x12, 0x29, 0x38, 0x30, 0x57, 0x54, 0x6b, 0x9c, 0x71, 0x48, 0x69, 0xdd, 0x53, 0xe9, 0x34,
-0xae, 0x10, 0x96, 0xeb, 0xed, 0xc9, 0xc9, 0xaf, 0xcc, 0x9f, 0xf2, 0x9b, 0x86, 0xa4, 0xd5, 0xb8,
-0x73, 0xd6, 0x44, 0xf9, 0x7f, 0x1c, 0xfb, 0x3b, 0x8f, 0x54, 0x5e, 0x63, 0xa6, 0x66, 0x84, 0x5d,
-0x03, 0x49, 0xc3, 0x2b, 0x92, 0x09, 0xaa, 0xe6, 0xdf, 0xc7, 0x3f, 0xb1, 0xbc, 0xa5, 0x50, 0xa6,
-0x5b, 0xb2, 0x2b, 0xc8, 0x46, 0xe4, 0xb8, 0x02, 0x83, 0x1f, 0x53, 0x38, 0x17, 0x4b, 0x1c, 0x56,
-0xc6, 0x57, 0x07, 0x4f, 0x67, 0x3c, 0xdb, 0x21, 0xc4, 0x02, 0xaf, 0xe3, 0xb1, 0xc9, 0x93, 0xb8,
-0x81, 0xb2, 0x23, 0xb7, 0xbb, 0xc4, 0x6b, 0xd8, 0x58, 0xef, 0x40, 0x06, 0x60, 0x1b, 0x8f, 0x2d,
-0xc9, 0x3b, 0x77, 0x44, 0xb5, 0x45, 0x49, 0x3e, 0x4d, 0x2e, 0xac, 0x17, 0xcc, 0xfd, 0x54, 0xe5,
-0x59, 0xd2, 0xdd, 0xc7, 0x4f, 0xc6, 0x7b, 0xcc, 0x19, 0xd8, 0xd0, 0xe6, 0x76, 0xf6, 0x7e, 0x05,
-0x1e, 0x13, 0x25, 0x1f, 0x31, 0x29, 0xa9, 0x2f, 0xe7, 0x30, 0xc1, 0x2b, 0x35, 0x20, 0xda, 0x0f,
-0xd4, 0xfd, 0x90, 0xed, 0x3d, 0xe2, 0x2f, 0xdd, 0xdd, 0xdd, 0xbf, 0xe2, 0xda, 0xe9, 0xa6, 0xf1,
-0x36, 0xf9, 0xfe, 0xff, 0x4e, 0x06, 0xba, 0x0c, 0xec, 0x12, 0x06, 0x18, 0xa8, 0x1a, 0xa6, 0x19,
-0xbc, 0x14, 0xe4, 0x0c, 0xc4, 0x03, 0xba, 0xfb, 0x8e, 0xf6, 0x5a, 0xf4, 0xaa, 0xf4, 0xf6, 0xf5,
-0x20, 0xf7, 0xac, 0xf7, 0x7c, 0xf7, 0xfe, 0xf6, 0x2a, 0xf7, 0xca, 0xf8, 0x24, 0xfc, 0xf4, 0x00,
-0x3e, 0x06, 0x14, 0x0b, 0x98, 0x0e, 0x5e, 0x10, 0x72, 0x10, 0xa6, 0x0f, 0x46, 0x0e, 0x8e, 0x0c,
-0x1c, 0x0a, 0x62, 0x06, 0x32, 0x01, 0x7a, 0xfa, 0xa4, 0xf2, 0xc2, 0xea, 0x84, 0xe4, 0x7b, 0xe1,
-0x2f, 0xe3, 0xc6, 0xe9, 0x9e, 0xf4, 0xb8, 0x01, 0xc8, 0x0e, 0x90, 0x19, 0xfd, 0x20, 0x83, 0x24,
-0x59, 0x24, 0xf1, 0x20, 0x6a, 0x1a, 0x3a, 0x11, 0xf2, 0x05, 0xd6, 0xf9, 0xba, 0xee, 0xaa, 0xe6,
-0xe5, 0xe2, 0x04, 0xe4, 0x2e, 0xe9, 0xfa, 0xf0, 0x86, 0xf9, 0xfe, 0x00, 0x66, 0x06, 0x74, 0x09,
-0x60, 0x0a, 0xde, 0x09, 0x8e, 0x08, 0xe6, 0x06, 0x16, 0x05, 0x4c, 0x03, 0x76, 0x01, 0xb2, 0xff,
-0x20, 0xfe, 0x12, 0xfd, 0xa6, 0xfc, 0xd8, 0xfc, 0x8e, 0xfd, 0x9e, 0xfe, 0xc2, 0xff, 0xbe, 0x00,
-0x82, 0x01, 0xf6, 0x01, 0x38, 0x02, 0x26, 0x02, 0xbe, 0x01, 0x2c, 0x01, 0xdc, 0x00, 0x9a, 0x00,
-0x6c, 0x00, 0x26, 0x00, 0xfe, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0x1c, 0x00, 0x48, 0x00,
-0x80, 0x00, 0xb0, 0x00, 0xd2, 0x00, 0x04, 0x01, 0x1a, 0x01, 0x08, 0x01, 0xae, 0x00, 0x38, 0x00,
-0xc4, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x82, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x14, 0x00,
-0x20, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x26, 0x00, 0x38, 0x00, 0x56, 0x00, 0x9a, 0x00, 0xb6, 0x00,
-0xa8, 0x00, 0x74, 0x00, 0x3a, 0x00, 0xf2, 0xff, 0xa4, 0xff, 0x34, 0xff, 0xce, 0xfe, 0x94, 0xfe,
-0x9a, 0xfe, 0xc8, 0xfe, 0x10, 0xff, 0x7a, 0xff, 0xcc, 0xff, 0xf6, 0xff, 0x1a, 0x00, 0x46, 0x00,
-0x6a, 0x00, 0x74, 0x00, 0x54, 0x00, 0x20, 0x00, 0xf2, 0xff, 0xc2, 0xff, 0x8a, 0xff, 0x46, 0xff,
-0x0c, 0xff, 0xe8, 0xfe, 0xea, 0xfe, 0x10, 0xff, 0x4e, 0xff, 0x96, 0xff, 0xca, 0xff, 0xf0, 0xff,
-0x0c, 0x00, 0x40, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x0c, 0x00, 0xb2, 0xff, 0x64, 0xff, 0x46, 0xff,
-0x16, 0xff, 0xdc, 0xfe, 0x8e, 0xfe, 0x42, 0xfe, 0x2a, 0xfe, 0x56, 0xfe, 0xd0, 0xfe, 0x4a, 0xff,
-0xaa, 0xff, 0xca, 0xff, 0xe8, 0xff, 0x1a, 0x00, 0x78, 0x00, 0xae, 0x00, 0xa0, 0x00, 0x3a, 0x00,
-0xc6, 0xff, 0x48, 0xff, 0xf8, 0xfe, 0xd2, 0xfe, 0xc8, 0xfe, 0xb8, 0xfe, 0xa2, 0xfe, 0xa6, 0xfe,
-0xbe, 0xfe, 0x12, 0xff, 0x64, 0xff, 0xc8, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x14, 0x00,
-0xd0, 0xff, 0x76, 0xff, 0x18, 0xff, 0xd0, 0xfe, 0xa6, 0xfe, 0x8e, 0xfe, 0xa2, 0xfe, 0xca, 0xfe,
-0x06, 0xff, 0x46, 0xff, 0x74, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x8e, 0xff, 0x98, 0xff, 0xb6, 0xff,
-0xdc, 0xff, 0x06, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xcc, 0xff, 0x8c, 0xff, 0x3c, 0xff, 0xf4, 0xfe,
-0xb2, 0xfe, 0x98, 0xfe, 0xa2, 0xfe, 0xbe, 0xfe, 0xfa, 0xfe, 0x1c, 0xff, 0x52, 0xff, 0x7c, 0xff,
-0xa2, 0xff, 0xa6, 0xff, 0xac, 0xff, 0xaa, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x6e, 0xff, 0x54, 0xff,
-0x2a, 0xff, 0x0e, 0xff, 0xec, 0xfe, 0xee, 0xfe, 0xfe, 0xfe, 0x20, 0xff, 0x1e, 0xff, 0x22, 0xff,
-0x1e, 0xff, 0x40, 0xff, 0x6a, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xb6, 0xff, 0xa2, 0xff, 0x70, 0xff,
-0x56, 0xff, 0x4c, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x32, 0xff, 0x46, 0xff,
-0x68, 0xff, 0x82, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x64, 0xff, 0x70, 0xff, 0x8a, 0xff,
-0xa6, 0xff, 0xae, 0xff, 0xa8, 0xff, 0x96, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x22, 0xff, 0x1e, 0xff,
-0x36, 0xff, 0x58, 0xff, 0x78, 0xff, 0x80, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x6a, 0xff, 0x4c, 0xff,
-0x4c, 0xff, 0x62, 0xff, 0x70, 0xff, 0x90, 0xff, 0x9c, 0xff, 0xa8, 0xff, 0x98, 0xff, 0x8a, 0xff,
-0x78, 0xff, 0x88, 0xff, 0x92, 0xff, 0x8a, 0xff, 0x66, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x40, 0xff,
-0x62, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x4c, 0xff, 0x48, 0xff, 0x56, 0xff, 0x86, 0xff, 0xb2, 0xff,
-0xc8, 0xff, 0xbc, 0xff, 0xae, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x6e, 0xff, 0x4c, 0xff,
-0x34, 0xff, 0x28, 0xff, 0x22, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x6c, 0xff, 0x94, 0xff,
-0xae, 0xff, 0xc6, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xae, 0xff, 0xae, 0xff,
-0x92, 0xff, 0x6e, 0xff, 0x5c, 0xff, 0x34, 0xff, 0x22, 0xff, 0x20, 0xff, 0x28, 0xff, 0x48, 0xff,
-0x88, 0xff, 0xde, 0xff, 0x20, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x4a, 0x00, 0x20, 0x00, 0xea, 0xff,
-0xac, 0xff, 0x64, 0xff, 0x2a, 0xff, 0x04, 0xff, 0xea, 0xfe, 0xee, 0xfe, 0x22, 0xff, 0x3c, 0xff,
-0x72, 0xff, 0x96, 0xff, 0xc8, 0xff, 0xf2, 0xff, 0x16, 0x00, 0x22, 0x00, 0x32, 0x00, 0x38, 0x00,
-0x1a, 0x00, 0xec, 0xff, 0xa8, 0xff, 0x5e, 0xff, 0x28, 0xff, 0x0c, 0xff, 0x02, 0xff, 0x12, 0xff,
-0x18, 0xff, 0x38, 0xff, 0x58, 0xff, 0x92, 0xff, 0xca, 0xff, 0x14, 0x00, 0x46, 0x00, 0x5c, 0x00,
-0x40, 0x00, 0x2e, 0x00, 0x0c, 0x00, 0xd0, 0xff, 0xae, 0xff, 0x6a, 0xff, 0x28, 0xff, 0xdc, 0xfe,
-0xb4, 0xfe, 0xb8, 0xfe, 0xf6, 0xfe, 0x26, 0xff, 0x80, 0xff, 0xb6, 0xff, 0x04, 0x00, 0x50, 0x00,
-0x7c, 0x00, 0x9e, 0x00, 0x92, 0x00, 0x68, 0x00, 0x1e, 0x00, 0xdc, 0xff, 0x9e, 0xff, 0x68, 0xff,
-0x14, 0xff, 0xdc, 0xfe, 0xba, 0xfe, 0xcc, 0xfe, 0xf6, 0xfe, 0x34, 0xff, 0x82, 0xff, 0xc4, 0xff,
-0x0e, 0x00, 0x4c, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x60, 0x00, 0x32, 0x00, 0xf2, 0xff, 0xb6, 0xff,
-0x78, 0xff, 0x50, 0xff, 0x20, 0xff, 0x00, 0xff, 0xf4, 0xfe, 0x04, 0xff, 0x2c, 0xff, 0x60, 0xff,
-0xa4, 0xff, 0xd8, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x42, 0x00,
-0x08, 0x00, 0xbe, 0xff, 0x86, 0xff, 0x50, 0xff, 0x24, 0xff, 0xfc, 0xfe, 0x08, 0xff, 0x20, 0xff,
-0x4c, 0xff, 0x78, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x32, 0x00, 0x4e, 0x00, 0x50, 0x00,
-0x34, 0x00, 0x20, 0x00, 0xf4, 0xff, 0xb4, 0xff, 0x86, 0xff, 0x54, 0xff, 0x3e, 0xff, 0x2c, 0xff,
-0x24, 0xff, 0x3c, 0xff, 0x56, 0xff, 0x8a, 0xff, 0xb6, 0xff, 0xe4, 0xff, 0x10, 0x00, 0x1a, 0x00,
-0x32, 0x00, 0x2c, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xde, 0xff, 0xc0, 0xff, 0xa0, 0xff, 0x7e, 0xff,
-0x74, 0xff, 0x76, 0xff, 0x76, 0xff, 0x8a, 0xff, 0x96, 0xff, 0xb2, 0xff, 0xe2, 0xff, 0xee, 0xff,
-0x02, 0x00, 0x04, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0xea, 0xff, 0xda, 0xff, 0xc2, 0xff,
-0xb8, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xc0, 0xff,
-0xcc, 0xff, 0xd6, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf2, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xf8, 0xff,
-0xec, 0xff, 0xe6, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff,
-0xce, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xea, 0xff,
-0xf8, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x0e, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xac, 0xff, 0xa8, 0xff, 0xba, 0xff,
-0xbe, 0xff, 0xd0, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x18, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x2c, 0x00, 0x1c, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xde, 0xff, 0xca, 0xff, 0xa2, 0xff, 0x9c, 0xff,
-0xa2, 0xff, 0xac, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xe6, 0xff, 0x08, 0x00, 0x2c, 0x00, 0x4c, 0x00,
-0x54, 0x00, 0x58, 0x00, 0x50, 0x00, 0x46, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xda, 0xff, 0xb8, 0xff,
-0x9e, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x86, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xe6, 0xff, 0x08, 0x00,
-0x32, 0x00, 0x4e, 0x00, 0x66, 0x00, 0x6a, 0x00, 0x62, 0x00, 0x42, 0x00, 0x28, 0x00, 0xf4, 0xff,
-0xce, 0xff, 0x9a, 0xff, 0x6c, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x66, 0xff, 0x88, 0xff, 0xb0, 0xff,
-0xda, 0xff, 0x14, 0x00, 0x4e, 0x00, 0x64, 0x00, 0x92, 0x00, 0x9c, 0x00, 0x82, 0x00, 0x60, 0x00,
-0x2a, 0x00, 0x02, 0x00, 0xc6, 0xff, 0x90, 0xff, 0x66, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x64, 0xff,
-0x8a, 0xff, 0xb4, 0xff, 0xf4, 0xff, 0x2e, 0x00, 0x6c, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa8, 0x00,
-0x8c, 0x00, 0x56, 0x00, 0x22, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x72, 0xff, 0x48, 0xff, 0x3a, 0xff,
-0x38, 0xff, 0x5a, 0xff, 0x88, 0xff, 0xd0, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x88, 0x00, 0xac, 0x00,
-0xb8, 0x00, 0xae, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x16, 0x00, 0xea, 0xff, 0xa0, 0xff, 0x70, 0xff,
-0x44, 0xff, 0x40, 0xff, 0x54, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x6c, 0x00,
-0xa2, 0x00, 0xc0, 0x00, 0xc8, 0x00, 0xb8, 0x00, 0x8e, 0x00, 0x48, 0x00, 0x10, 0x00, 0xda, 0xff,
-0xa4, 0xff, 0x74, 0xff, 0x5e, 0xff, 0x52, 0xff, 0x64, 0xff, 0x8e, 0xff, 0xca, 0xff, 0x06, 0x00,
-0x36, 0x00, 0x7a, 0x00, 0xa0, 0x00, 0xb8, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x3a, 0x00,
-0x00, 0x00, 0xcc, 0xff, 0xaa, 0xff, 0x76, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x72, 0xff, 0xa2, 0xff,
-0xd4, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x7a, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x88, 0x00,
-0x6c, 0x00, 0x36, 0x00, 0x06, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x96, 0xff, 0x86, 0xff, 0x7c, 0xff,
-0x98, 0xff, 0xba, 0xff, 0xf2, 0xff, 0x18, 0x00, 0x44, 0x00, 0x64, 0x00, 0x80, 0x00, 0x8a, 0x00,
-0x84, 0x00, 0x72, 0x00, 0x58, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xd2, 0xff, 0xb6, 0xff, 0xa0, 0xff,
-0x9c, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xc2, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x2a, 0x00, 0x46, 0x00,
-0x5a, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x48, 0x00, 0x36, 0x00, 0x12, 0x00, 0x02, 0x00, 0xea, 0xff,
-0xd0, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xd8, 0xff, 0x00, 0x00, 0x0e, 0x00,
-0x1c, 0x00, 0x36, 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x28, 0x00, 0x10, 0x00,
-0x16, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xea, 0xff,
-0xf4, 0xff, 0x04, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x26, 0x00,
-0x16, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x10, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x04, 0x00,
-0xfc, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xde, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xfe, 0xff,
-0x00, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x30, 0x00, 0x46, 0x00, 0x50, 0x00, 0x48, 0x00, 0x40, 0x00,
-0x38, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xee, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd4, 0xff,
-0xd8, 0xff, 0xd6, 0xff, 0xee, 0xff, 0x18, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x6c, 0x00, 0x70, 0x00,
-0x6e, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xcc, 0xff, 0xb4, 0xff,
-0xa8, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xe4, 0xff, 0x08, 0x00, 0x32, 0x00, 0x62, 0x00,
-0x80, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x7c, 0x00, 0x64, 0x00, 0x40, 0x00, 0x12, 0x00, 0xde, 0xff,
-0xac, 0xff, 0x9a, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xb0, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x26, 0x00,
-0x4a, 0x00, 0x84, 0x00, 0x9e, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x8a, 0x00, 0x6a, 0x00, 0x3a, 0x00,
-0xfe, 0xff, 0xd6, 0xff, 0x9a, 0xff, 0x7c, 0xff, 0x64, 0xff, 0x66, 0xff, 0x7a, 0xff, 0xb2, 0xff,
-0xec, 0xff, 0x18, 0x00, 0x5a, 0x00, 0x84, 0x00, 0xae, 0x00, 0xbc, 0x00, 0xa6, 0x00, 0x90, 0x00,
-0x64, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x80, 0xff, 0x56, 0xff, 0x40, 0xff, 0x54, 0xff,
-0x74, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x2e, 0x00, 0x6e, 0x00, 0x9c, 0x00, 0xc2, 0x00, 0xd8, 0x00,
-0xc0, 0x00, 0x9c, 0x00, 0x64, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xa4, 0xff, 0x70, 0xff, 0x4c, 0xff,
-0x44, 0xff, 0x62, 0xff, 0x86, 0xff, 0xc2, 0xff, 0x0c, 0x00, 0x40, 0x00, 0x88, 0x00, 0xbc, 0x00,
-0xda, 0x00, 0xb8, 0x00, 0x4a, 0x00, 0x08, 0x00, 0xc0, 0xff, 0x80, 0xff, 0x5a, 0xff, 0x3a, 0xff,
-0x4c, 0xff, 0x64, 0xff, 0x98, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x56, 0x00, 0x92, 0x00, 0xb8, 0x00,
-0xce, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x7c, 0x00, 0x34, 0x00, 0x06, 0x00, 0xc4, 0xff, 0x86, 0xff,
-0x62, 0xff, 0x50, 0xff, 0x58, 0xff, 0x90, 0xff, 0xba, 0xff, 0xfa, 0xff, 0x40, 0x00, 0x62, 0x00,
-0xa4, 0x00, 0xc6, 0x00, 0xc2, 0x00, 0xb8, 0x00, 0x96, 0x00, 0x5e, 0x00, 0x22, 0x00, 0xe6, 0xff,
-0xb8, 0xff, 0x86, 0xff, 0x6a, 0xff, 0x70, 0xff, 0x80, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x08, 0x00,
-0x42, 0x00, 0x72, 0x00, 0x8e, 0x00, 0xa6, 0x00, 0x9e, 0x00, 0x80, 0x00, 0x70, 0x00, 0x34, 0x00,
-0x02, 0x00, 0xd6, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x8e, 0xff, 0xac, 0xff, 0xb8, 0xff,
-0xe4, 0xff, 0x16, 0x00, 0x3c, 0x00, 0x68, 0x00, 0x76, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x6c, 0x00,
-0x56, 0x00, 0x2e, 0x00, 0x0e, 0x00, 0xe2, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xc0, 0xff,
-0xc6, 0xff, 0xd8, 0xff, 0x04, 0x00, 0x26, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x50, 0x00,
-0x50, 0x00, 0x58, 0x00, 0x30, 0x00, 0x18, 0x00, 0x02, 0x00, 0xea, 0xff, 0xde, 0xff, 0xd2, 0xff,
-0xd6, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xfe, 0xff, 0x14, 0x00, 0x14, 0x00, 0x28, 0x00,
-0x28, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00,
-0x0a, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff,
-0xfe, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x1c, 0x00,
-0x2c, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x24, 0x00, 0x0e, 0x00, 0x02, 0x00, 0xfa, 0xff,
-0xee, 0xff, 0xe6, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xec, 0xff, 0x04, 0x00,
-0x0c, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x2c, 0x00,
-0x10, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xc0, 0xff,
-0xd8, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x42, 0x00, 0x5e, 0x00, 0x70, 0x00, 0x7a, 0x00, 0x76, 0x00,
-0x5e, 0x00, 0x48, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xd8, 0xff, 0xb0, 0xff, 0x9e, 0xff, 0x94, 0xff,
-0x94, 0xff, 0xac, 0xff, 0xbe, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x54, 0x00, 0x7c, 0x00, 0x92, 0x00,
-0x9c, 0x00, 0x8a, 0x00, 0x72, 0x00, 0x4a, 0x00, 0x16, 0x00, 0xe2, 0xff, 0xb2, 0xff, 0x92, 0xff,
-0x70, 0xff, 0x6a, 0xff, 0x76, 0xff, 0xa4, 0xff, 0xca, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x6e, 0x00,
-0x94, 0x00, 0xb2, 0x00, 0xb4, 0x00, 0x9e, 0x00, 0x6e, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xe2, 0xff,
-0xa8, 0xff, 0x70, 0xff, 0x62, 0xff, 0x58, 0xff, 0x70, 0xff, 0xa2, 0xff, 0xdc, 0xff, 0x08, 0x00,
-0x48, 0x00, 0x82, 0x00, 0xb0, 0x00, 0xc6, 0x00, 0xbc, 0x00, 0xa2, 0x00, 0x6e, 0x00, 0x34, 0x00,
-0x02, 0x00, 0xb8, 0xff, 0x82, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x3c, 0xff, 0x64, 0xff, 0x9c, 0xff,
-0xd6, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x94, 0x00, 0xae, 0x00, 0xc6, 0x00, 0xac, 0x00, 0x90, 0x00,
-0x58, 0x00, 0x16, 0x00, 0xd8, 0xff, 0xa2, 0xff, 0x6e, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x4a, 0xff,
-0x6c, 0xff, 0xac, 0xff, 0xf6, 0xff, 0x24, 0x00, 0x64, 0x00, 0x9a, 0x00, 0xbc, 0x00, 0xc4, 0x00,
-0xa2, 0x00, 0x7e, 0x00, 0x40, 0x00, 0x08, 0x00, 0xca, 0xff, 0x8a, 0xff, 0x5a, 0xff, 0x3c, 0xff,
-0x36, 0xff, 0x3c, 0xff, 0x78, 0xff, 0xc6, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x5e, 0x00, 0x90, 0x00,
-0xae, 0x00, 0xac, 0x00, 0x90, 0x00, 0x60, 0x00, 0x34, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x84, 0xff,
-0x52, 0xff, 0x3e, 0xff, 0x3c, 0xff, 0x5a, 0xff, 0x8a, 0xff, 0xc0, 0xff, 0x08, 0x00, 0x38, 0x00,
-0x6c, 0x00, 0x88, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x68, 0x00, 0x26, 0x00, 0xea, 0xff,
-0xb2, 0xff, 0x92, 0xff, 0x74, 0xff, 0x66, 0xff, 0x66, 0xff, 0x7a, 0xff, 0xa6, 0xff, 0xda, 0xff,
-0x14, 0x00, 0x3c, 0x00, 0x60, 0x00, 0x74, 0x00, 0x8c, 0x00, 0x78, 0x00, 0x68, 0x00, 0x3a, 0x00,
-0x14, 0x00, 0xec, 0xff, 0xb0, 0xff, 0x9c, 0xff, 0x8a, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x9e, 0xff,
-0xc2, 0xff, 0xf6, 0xff, 0x12, 0x00, 0x26, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4e, 0x00,
-0x40, 0x00, 0x18, 0x00, 0x00, 0x00, 0xe8, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xb6, 0xff,
-0xbe, 0xff, 0xe2, 0xff, 0xec, 0xff, 0x06, 0x00, 0x12, 0x00, 0x22, 0x00, 0x30, 0x00, 0x2c, 0x00,
-0x2a, 0x00, 0x20, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xf4, 0xff, 0xe6, 0xff, 0xe0, 0xff,
-0xec, 0xff, 0xee, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf8, 0xff,
-0xf4, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0x0e, 0x00,
-0x04, 0x00, 0xf8, 0xff, 0x06, 0x00, 0x0a, 0x00, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xe4, 0xff,
-0xda, 0xff, 0xce, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xf6, 0xff, 0x00, 0x00,
-0x10, 0x00, 0x26, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x20, 0x00, 0x0c, 0x00,
-0xfe, 0xff, 0xdc, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xc4, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x34, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x44, 0x00,
-0x2c, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x94, 0xff,
-0xa0, 0xff, 0xc6, 0xff, 0xec, 0xff, 0x0e, 0x00, 0x3c, 0x00, 0x62, 0x00, 0x78, 0x00, 0x72, 0x00,
-0x68, 0x00, 0x56, 0x00, 0x2a, 0x00, 0x04, 0x00, 0xd4, 0xff, 0xa8, 0xff, 0x8e, 0xff, 0x76, 0xff,
-0x76, 0xff, 0x8a, 0xff, 0xa4, 0xff, 0xd2, 0xff, 0xfa, 0xff, 0x24, 0x00, 0x5e, 0x00, 0x7e, 0x00,
-0x92, 0x00, 0x88, 0x00, 0x70, 0x00, 0x50, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xb6, 0xff, 0x84, 0xff,
-0x64, 0xff, 0x50, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0xa0, 0xff, 0xcc, 0xff, 0x02, 0x00, 0x3a, 0x00,
-0x66, 0x00, 0x92, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x84, 0x00, 0x48, 0x00, 0x08, 0x00, 0xd8, 0xff,
-0x9e, 0xff, 0x68, 0xff, 0x4a, 0xff, 0x36, 0xff, 0x42, 0xff, 0x72, 0xff, 0xa6, 0xff, 0xea, 0xff,
-0x12, 0x00, 0x5a, 0x00, 0x8c, 0x00, 0xac, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x7a, 0x00, 0x36, 0x00,
-0xfa, 0xff, 0xc2, 0xff, 0x82, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x70, 0xff,
-0xb4, 0xff, 0xfa, 0xff, 0x22, 0x00, 0x62, 0x00, 0x98, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x8e, 0x00,
-0x5e, 0x00, 0x20, 0x00, 0xe4, 0xff, 0xa8, 0xff, 0x64, 0xff, 0x38, 0xff, 0x32, 0xff, 0x2c, 0xff,
-0x52, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x04, 0x00, 0x30, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xb0, 0x00,
-0xac, 0x00, 0x88, 0x00, 0x4e, 0x00, 0x16, 0x00, 0xdc, 0xff, 0xae, 0xff, 0x70, 0xff, 0x4a, 0xff,
-0x44, 0xff, 0x4e, 0xff, 0x6e, 0xff, 0x9e, 0xff, 0xda, 0xff, 0x14, 0x00, 0x44, 0x00, 0x7a, 0x00,
-0x9c, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x46, 0x00, 0x0a, 0x00, 0xce, 0xff, 0x98, 0xff,
-0x70, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x60, 0xff, 0x7c, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x14, 0x00,
-0x44, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x62, 0x00, 0x56, 0x00, 0x28, 0x00, 0xf8, 0xff,
-0xda, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x80, 0xff, 0x80, 0xff, 0x88, 0xff, 0x9a, 0xff, 0xc6, 0xff,
-0xee, 0xff, 0x1a, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x64, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x3a, 0x00,
-0x1c, 0x00, 0x00, 0x00, 0xda, 0xff, 0xbc, 0xff, 0xaa, 0xff, 0xa4, 0xff, 0x9e, 0xff, 0xa2, 0xff,
-0xb8, 0xff, 0xda, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x20, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2c, 0x00,
-0x32, 0x00, 0x12, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xe2, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xc4, 0xff,
-0xc6, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x14, 0x00,
-0x0c, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xee, 0xff,
-0xec, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xf0, 0xff, 0xee, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x04, 0x00,
-0x02, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf8, 0xff, 0xe2, 0xff,
-0xd4, 0xff, 0xc4, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xea, 0xff,
-0xf6, 0xff, 0x12, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x0e, 0x00,
-0xfa, 0xff, 0xe8, 0xff, 0xbc, 0xff, 0xa6, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xa2, 0xff,
-0xcc, 0xff, 0xea, 0xff, 0x10, 0x00, 0x3a, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x54, 0x00, 0x4e, 0x00,
-0x3c, 0x00, 0x20, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0xa2, 0xff, 0x84, 0xff, 0x6e, 0xff, 0x76, 0xff,
-0x8a, 0xff, 0x9a, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x78, 0x00,
-0x6c, 0x00, 0x58, 0x00, 0x3a, 0x00, 0x08, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x7a, 0xff, 0x62, 0xff,
-0x5a, 0xff, 0x62, 0xff, 0x88, 0xff, 0xac, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x7c, 0x00,
-0x94, 0x00, 0x9e, 0x00, 0x8a, 0x00, 0x64, 0x00, 0x2c, 0x00, 0x08, 0x00, 0xd2, 0xff, 0x8e, 0xff,
-0x60, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xb8, 0xff, 0xf2, 0xff, 0x28, 0x00,
-0x5e, 0x00, 0x90, 0x00, 0xac, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x6a, 0x00, 0x24, 0x00, 0xee, 0xff,
-0xb6, 0xff, 0x70, 0xff, 0x44, 0xff, 0x28, 0xff, 0x28, 0xff, 0x56, 0xff, 0x78, 0xff, 0xc4, 0xff,
-0x06, 0x00, 0x32, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xc0, 0x00, 0xb0, 0x00, 0x94, 0x00, 0x62, 0x00,
-0x18, 0x00, 0xee, 0xff, 0xa2, 0xff, 0x5e, 0xff, 0x36, 0xff, 0x22, 0xff, 0x3e, 0xff, 0x5a, 0xff,
-0x92, 0xff, 0xd6, 0xff, 0x02, 0x00, 0x44, 0x00, 0x80, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0xa2, 0x00,
-0x80, 0x00, 0x48, 0x00, 0x02, 0x00, 0xca, 0xff, 0x94, 0xff, 0x58, 0xff, 0x36, 0xff, 0x30, 0xff,
-0x34, 0xff, 0x5a, 0xff, 0x98, 0xff, 0xd0, 0xff, 0x14, 0x00, 0x42, 0x00, 0x70, 0x00, 0x92, 0x00,
-0x94, 0x00, 0x92, 0x00, 0x72, 0x00, 0x38, 0x00, 0xfa, 0xff, 0xba, 0xff, 0x82, 0xff, 0x56, 0xff,
-0x40, 0xff, 0x40, 0xff, 0x4e, 0xff, 0x7a, 0xff, 0xb2, 0xff, 0xe2, 0xff, 0x28, 0x00, 0x54, 0x00,
-0x76, 0x00, 0x96, 0x00, 0x96, 0x00, 0x7c, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xe8, 0xff, 0xb8, 0xff,
-0x8e, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x52, 0xff, 0x68, 0xff, 0x94, 0xff, 0xbe, 0xff, 0xee, 0xff,
-0x26, 0x00, 0x46, 0x00, 0x56, 0x00, 0x70, 0x00, 0x66, 0x00, 0x60, 0x00, 0x3a, 0x00, 0x0a, 0x00,
-0xe8, 0xff, 0xaa, 0xff, 0x94, 0xff, 0x86, 0xff, 0x82, 0xff, 0x7c, 0xff, 0x88, 0xff, 0xa6, 0xff,
-0xd0, 0xff, 0xf8, 0xff, 0x14, 0x00, 0x30, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x42, 0x00, 0x48, 0x00,
-0x2a, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xde, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xae, 0xff,
-0xca, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x20, 0x00,
-0x20, 0x00, 0x1e, 0x00, 0x10, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xea, 0xff, 0xde, 0xff, 0xe0, 0xff,
-0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xf0, 0xff,
-0xf4, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
-0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xd4, 0xff,
-0xcc, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0x0a, 0x00,
-0x22, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x12, 0x00, 0x22, 0x00, 0x08, 0x00, 0xea, 0xff, 0xd8, 0xff,
-0xc0, 0xff, 0xae, 0xff, 0x92, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xe2, 0xff,
-0xf8, 0xff, 0x14, 0x00, 0x38, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x26, 0x00, 0x16, 0x00,
-0xe4, 0xff, 0xc0, 0xff, 0xa2, 0xff, 0x8a, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7e, 0xff, 0x9e, 0xff,
-0xb8, 0xff, 0xe8, 0xff, 0x0a, 0x00, 0x38, 0x00, 0x64, 0x00, 0x6e, 0x00, 0x7e, 0x00, 0x60, 0x00,
-0x44, 0x00, 0x18, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x6e, 0xff, 0x54, 0xff, 0x58, 0xff,
-0x6e, 0xff, 0x8e, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x28, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x90, 0x00,
-0x8a, 0x00, 0x6e, 0x00, 0x42, 0x00, 0x14, 0x00, 0xd8, 0xff, 0xa0, 0xff, 0x6a, 0xff, 0x48, 0xff,
-0x40, 0xff, 0x42, 0xff, 0x5a, 0xff, 0x8c, 0xff, 0xc8, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x80, 0x00,
-0xa4, 0x00, 0xb2, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x50, 0x00, 0x1c, 0x00, 0xd0, 0xff, 0x9a, 0xff,
-0x66, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x70, 0xff, 0x9c, 0xff, 0xea, 0xff, 0x1c, 0x00,
-0x5c, 0x00, 0x9e, 0x00, 0xba, 0x00, 0xce, 0x00, 0xb8, 0x00, 0x86, 0x00, 0x44, 0x00, 0x00, 0x00,
-0xd2, 0xff, 0x8e, 0xff, 0x50, 0xff, 0x2c, 0xff, 0x14, 0xff, 0x2c, 0xff, 0x62, 0xff, 0xaa, 0xff,
-0xf4, 0xff, 0x24, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xa4, 0x00, 0x6c, 0x00,
-0x2c, 0x00, 0xe6, 0xff, 0xba, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x2e, 0xff, 0x28, 0xff, 0x42, 0xff,
-0x7a, 0xff, 0xc6, 0xff, 0x02, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xaa, 0x00, 0xba, 0x00, 0xb6, 0x00,
-0x98, 0x00, 0x62, 0x00, 0x20, 0x00, 0xdc, 0xff, 0xa2, 0xff, 0x78, 0xff, 0x3e, 0xff, 0x34, 0xff,
-0x3a, 0xff, 0x4e, 0xff, 0x88, 0xff, 0xcc, 0xff, 0x0e, 0x00, 0x3a, 0x00, 0x70, 0x00, 0x8e, 0x00,
-0xa0, 0x00, 0x98, 0x00, 0x76, 0x00, 0x46, 0x00, 0x02, 0x00, 0xc2, 0xff, 0x88, 0xff, 0x6c, 0xff,
-0x46, 0xff, 0x38, 0xff, 0x4a, 0xff, 0x64, 0xff, 0x96, 0xff, 0xce, 0xff, 0x00, 0x00, 0x3a, 0x00,
-0x5a, 0x00, 0x72, 0x00, 0x72, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xd2, 0xff,
-0x96, 0xff, 0x80, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x78, 0xff, 0x84, 0xff, 0xb8, 0xff, 0xe4, 0xff,
-0x0a, 0x00, 0x38, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x04, 0x00,
-0xf2, 0xff, 0xce, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xb0, 0xff,
-0xd0, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x12, 0x00, 0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1e, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xc0, 0xff,
-0xcc, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
-0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xfa, 0xff,
-0xfc, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xde, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xce, 0xff,
-0xd2, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x06, 0x00,
-0x1a, 0x00, 0x14, 0x00, 0x16, 0x00, 0x12, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xe4, 0xff, 0xc4, 0xff,
-0xba, 0xff, 0xa6, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xe0, 0xff, 0xf4, 0xff, 0x0c, 0x00,
-0x12, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x34, 0x00, 0x36, 0x00, 0x1e, 0x00, 0x00, 0x00,
-0xdc, 0xff, 0xb8, 0xff, 0xa4, 0xff, 0x90, 0xff, 0x92, 0xff, 0x98, 0xff, 0x9c, 0xff, 0xc2, 0xff,
-0xf0, 0xff, 0x10, 0x00, 0x34, 0x00, 0x54, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x4e, 0x00, 0x36, 0x00,
-0x16, 0x00, 0xf2, 0xff, 0xc8, 0xff, 0x96, 0xff, 0x7a, 0xff, 0x68, 0xff, 0x60, 0xff, 0x7c, 0xff,
-0x92, 0xff, 0xc0, 0xff, 0xee, 0xff, 0x18, 0x00, 0x4a, 0x00, 0x70, 0x00, 0x8c, 0x00, 0x86, 0x00,
-0x6a, 0x00, 0x3e, 0x00, 0x14, 0x00, 0xe6, 0xff, 0xac, 0xff, 0x80, 0xff, 0x54, 0xff, 0x48, 0xff,
-0x4c, 0xff, 0x66, 0xff, 0xa0, 0xff, 0xc6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x68, 0x00, 0x8a, 0x00,
-0xa0, 0x00, 0x9e, 0x00, 0x7a, 0x00, 0x42, 0x00, 0xfe, 0xff, 0xc4, 0xff, 0x8a, 0xff, 0x56, 0xff,
-0x3c, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x64, 0xff, 0x9c, 0xff, 0xdc, 0xff, 0x0e, 0x00, 0x48, 0x00,
-0x7c, 0x00, 0xa8, 0x00, 0xae, 0x00, 0x90, 0x00, 0x6c, 0x00, 0x28, 0x00, 0xfc, 0xff, 0xbe, 0xff,
-0x76, 0xff, 0x40, 0xff, 0x22, 0xff, 0x1a, 0xff, 0x4c, 0xff, 0x74, 0xff, 0xb8, 0xff, 0xf4, 0xff,
-0x22, 0x00, 0x6e, 0x00, 0xa2, 0x00, 0xc0, 0x00, 0xb6, 0x00, 0x94, 0x00, 0x66, 0x00, 0x18, 0x00,
-0xe2, 0xff, 0xa8, 0xff, 0x6a, 0xff, 0x40, 0xff, 0x22, 0xff, 0x30, 0xff, 0x4e, 0xff, 0x82, 0xff,
-0xc6, 0xff, 0x08, 0x00, 0x3a, 0x00, 0x86, 0x00, 0xaa, 0x00, 0xba, 0x00, 0xb8, 0x00, 0x7c, 0x00,
-0x4c, 0x00, 0x06, 0x00, 0xd0, 0xff, 0x98, 0xff, 0x60, 0xff, 0x44, 0xff, 0x30, 0xff, 0x44, 0xff,
-0x60, 0xff, 0x9a, 0xff, 0xdc, 0xff, 0x12, 0x00, 0x50, 0x00, 0x7e, 0x00, 0xa4, 0x00, 0xb2, 0x00,
-0x9e, 0x00, 0x7c, 0x00, 0x40, 0x00, 0x06, 0x00, 0xc4, 0xff, 0x96, 0xff, 0x68, 0xff, 0x56, 0xff,
-0x4e, 0xff, 0x62, 0xff, 0x7e, 0xff, 0xae, 0xff, 0xe8, 0xff, 0x1c, 0x00, 0x50, 0x00, 0x6a, 0x00,
-0x8a, 0x00, 0x86, 0x00, 0x78, 0x00, 0x5a, 0x00, 0x24, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x90, 0xff,
-0x7a, 0xff, 0x68, 0xff, 0x66, 0xff, 0x7a, 0xff, 0x96, 0xff, 0xca, 0xff, 0xfa, 0xff, 0x10, 0x00,
-0x3e, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x5e, 0x00, 0x50, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xf0, 0xff,
-0xc8, 0xff, 0xa4, 0xff, 0x90, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x90, 0xff, 0xaa, 0xff, 0xd0, 0xff,
-0xee, 0xff, 0x02, 0x00, 0x24, 0x00, 0x32, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x32, 0x00, 0x1a, 0x00,
-0x0a, 0x00, 0xf0, 0xff, 0xdc, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xac, 0xff,
-0xbc, 0xff, 0xd0, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0x0e, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x14, 0x00,
-0x08, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xde, 0xff, 0xea, 0xff,
-0xcc, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xec, 0xff,
-0xf2, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xcc, 0xff,
-0xc4, 0xff, 0xca, 0xff, 0xc0, 0xff, 0xc4, 0xff, 0xdc, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x1c, 0x00,
-0x2c, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x02, 0x00, 0xf6, 0xff, 0xd4, 0xff,
-0xb8, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xbc, 0xff, 0xe2, 0xff, 0x00, 0x00,
-0x18, 0x00, 0x42, 0x00, 0x46, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x36, 0x00, 0x32, 0x00, 0x04, 0x00,
-0xe0, 0xff, 0xc0, 0xff, 0x9a, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x8e, 0xff, 0xb0, 0xff,
-0xe0, 0xff, 0x0e, 0x00, 0x3e, 0x00, 0x52, 0x00, 0x6c, 0x00, 0x70, 0x00, 0x56, 0x00, 0x50, 0x00,
-0x38, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xa4, 0xff, 0x76, 0xff, 0x5a, 0xff, 0x4a, 0xff, 0x64, 0xff,
-0x86, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0x1e, 0x00, 0x4a, 0x00, 0x6a, 0x00, 0x80, 0x00, 0x88, 0x00,
-0x82, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xbc, 0xff, 0x80, 0xff, 0x50, 0xff, 0x44, 0xff,
-0x3c, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x1e, 0x00, 0x64, 0x00, 0x8e, 0x00,
-0xa4, 0x00, 0x96, 0x00, 0x84, 0x00, 0x56, 0x00, 0x14, 0x00, 0xde, 0xff, 0xa6, 0xff, 0x6a, 0xff,
-0x44, 0xff, 0x2c, 0xff, 0x2a, 0xff, 0x54, 0xff, 0x84, 0xff, 0xd0, 0xff, 0x00, 0x00, 0x2c, 0x00,
-0x70, 0x00, 0xa0, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0x86, 0x00, 0x3e, 0x00, 0xf8, 0xff, 0xc8, 0xff,
-0x8e, 0xff, 0x56, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x3c, 0xff, 0x60, 0xff, 0x94, 0xff, 0xe4, 0xff,
-0x10, 0x00, 0x46, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0x9c, 0x00, 0x6c, 0x00, 0x36, 0x00,
-0xe8, 0xff, 0xc8, 0xff, 0x8a, 0xff, 0x4c, 0xff, 0x28, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x74, 0xff,
-0xbe, 0xff, 0xf8, 0xff, 0x26, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x92, 0x00,
-0x64, 0x00, 0x26, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x46, 0xff, 0x40, 0xff, 0x44, 0xff,
-0x5a, 0xff, 0x96, 0xff, 0xca, 0xff, 0x02, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x76, 0x00, 0x84, 0x00,
-0x84, 0x00, 0x6a, 0x00, 0x4c, 0x00, 0x0a, 0x00, 0xda, 0xff, 0xae, 0xff, 0x7c, 0xff, 0x64, 0xff,
-0x5c, 0xff, 0x68, 0xff, 0x82, 0xff, 0xaa, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x36, 0x00, 0x52, 0x00,
-0x66, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x46, 0x00, 0x26, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xa8, 0xff,
-0x90, 0xff, 0x88, 0xff, 0x80, 0xff, 0x92, 0xff, 0x9e, 0xff, 0xc4, 0xff, 0xee, 0xff, 0x02, 0x00,
-0x1e, 0x00, 0x34, 0x00, 0x4e, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xf6, 0xff,
-0xdc, 0xff, 0xb8, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xc2, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0x0e, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x22, 0x00, 0x1c, 0x00,
-0xf6, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xbc, 0xff,
-0xc8, 0xff, 0xcc, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0e, 0x00,
-0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf2, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0xf2, 0xff,
-0xf2, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd0, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xd2, 0xff,
-0xe0, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x0e, 0x00, 0x1a, 0x00,
-0x16, 0x00, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xe2, 0xff, 0xcc, 0xff, 0xac, 0xff,
-0xa8, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xd4, 0xff, 0xea, 0xff, 0x02, 0x00, 0x1c, 0x00,
-0x24, 0x00, 0x48, 0x00, 0x40, 0x00, 0x34, 0x00, 0x36, 0x00, 0x18, 0x00, 0x04, 0x00, 0xda, 0xff,
-0xbc, 0xff, 0xa0, 0xff, 0x96, 0xff, 0x96, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xee, 0xff,
-0x02, 0x00, 0x2e, 0x00, 0x50, 0x00, 0x60, 0x00, 0x5a, 0x00, 0x4c, 0x00, 0x42, 0x00, 0x14, 0x00,
-0xf0, 0xff, 0xcc, 0xff, 0x9c, 0xff, 0x7a, 0xff, 0x64, 0xff, 0x5e, 0xff, 0x6e, 0xff, 0x94, 0xff,
-0xba, 0xff, 0xe6, 0xff, 0x1c, 0x00, 0x4a, 0x00, 0x62, 0x00, 0x78, 0x00, 0x80, 0x00, 0x6c, 0x00,
-0x4c, 0x00, 0x18, 0x00, 0xee, 0xff, 0xb4, 0xff, 0x88, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x56, 0xff,
-0x62, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa6, 0x00,
-0xa2, 0x00, 0x78, 0x00, 0x48, 0x00, 0x0e, 0x00, 0xdc, 0xff, 0xa4, 0xff, 0x6a, 0xff, 0x42, 0xff,
-0x2c, 0xff, 0x34, 0xff, 0x54, 0xff, 0x88, 0xff, 0xca, 0xff, 0x02, 0x00, 0x3c, 0x00, 0x76, 0x00,
-0x8e, 0x00, 0xac, 0x00, 0x92, 0x00, 0x6c, 0x00, 0x30, 0x00, 0xf6, 0xff, 0xc4, 0xff, 0x86, 0xff,
-0x58, 0xff, 0x2e, 0xff, 0x1e, 0xff, 0x34, 0xff, 0x66, 0xff, 0xaa, 0xff, 0xea, 0xff, 0x16, 0x00,
-0x58, 0x00, 0x96, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x20, 0x00, 0xec, 0xff,
-0xbc, 0xff, 0x72, 0xff, 0x46, 0xff, 0x26, 0xff, 0x24, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xc0, 0xff,
-0xfe, 0xff, 0x2a, 0x00, 0x78, 0x00, 0x9a, 0x00, 0xb0, 0x00, 0xac, 0x00, 0x82, 0x00, 0x4c, 0x00,
-0x1c, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x76, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x56, 0xff,
-0x88, 0xff, 0xc4, 0xff, 0x06, 0x00, 0x40, 0x00, 0x7a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0x94, 0x00,
-0x7c, 0x00, 0x52, 0x00, 0x12, 0x00, 0xe0, 0xff, 0xb0, 0xff, 0x74, 0xff, 0x56, 0xff, 0x50, 0xff,
-0x58, 0xff, 0x7a, 0xff, 0xa4, 0xff, 0xda, 0xff, 0x14, 0x00, 0x4a, 0x00, 0x60, 0x00, 0x84, 0x00,
-0x86, 0x00, 0x76, 0x00, 0x64, 0x00, 0x38, 0x00, 0x14, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x8e, 0xff,
-0x76, 0xff, 0x5e, 0xff, 0x6c, 0xff, 0x88, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x04, 0x00, 0x28, 0x00,
-0x42, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x4c, 0x00, 0x26, 0x00, 0x08, 0x00, 0xda, 0xff,
-0xbe, 0xff, 0x9e, 0xff, 0x92, 0xff, 0x98, 0xff, 0x92, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0xe4, 0xff,
-0xfc, 0xff, 0x22, 0x00, 0x30, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x2c, 0x00, 0x0e, 0x00,
-0xfc, 0xff, 0xec, 0xff, 0xd0, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xc0, 0xff,
-0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0c, 0x00,
-0x0a, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xce, 0xff,
-0xd8, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xea, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x02, 0x00, 0xf8, 0xff, 0xee, 0xff, 0xea, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xc2, 0xff,
-0xc2, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x00, 0x00, 0x16, 0x00, 0x22, 0x00,
-0x2a, 0x00, 0x20, 0x00, 0x22, 0x00, 0x14, 0x00, 0x06, 0x00, 0xe4, 0xff, 0xd4, 0xff, 0xae, 0xff,
-0x98, 0xff, 0x9a, 0xff, 0x9e, 0xff, 0xae, 0xff, 0xbe, 0xff, 0xe8, 0xff, 0xfc, 0xff, 0x14, 0x00,
-0x38, 0x00, 0x48, 0x00, 0x54, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xee, 0xff,
-0xc0, 0xff, 0xa4, 0xff, 0x96, 0xff, 0x88, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xba, 0xff, 0xee, 0xff,
-0x06, 0x00, 0x2c, 0x00, 0x58, 0x00, 0x66, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x56, 0x00, 0x3c, 0x00,
-0x04, 0x00, 0xda, 0xff, 0xaa, 0xff, 0x78, 0xff, 0x6c, 0xff, 0x60, 0xff, 0x6a, 0xff, 0x7e, 0xff,
-0xac, 0xff, 0xec, 0xff, 0x0a, 0x00, 0x42, 0x00, 0x6a, 0x00, 0x78, 0x00, 0x90, 0x00, 0x7e, 0x00,
-0x58, 0x00, 0x2a, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8e, 0xff, 0x6a, 0xff, 0x42, 0xff, 0x40, 0xff,
-0x54, 0xff, 0x80, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x26, 0x00, 0x5e, 0x00, 0x88, 0x00, 0xa6, 0x00,
-0xae, 0x00, 0x98, 0x00, 0x68, 0x00, 0x2a, 0x00, 0xee, 0xff, 0xae, 0xff, 0x72, 0xff, 0x46, 0xff,
-0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x26, 0x00, 0x68, 0x00,
-0x8a, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0x7c, 0x00, 0x4e, 0x00, 0x02, 0x00, 0xd2, 0xff, 0x94, 0xff,
-0x5a, 0xff, 0x30, 0xff, 0x20, 0xff, 0x24, 0xff, 0x4a, 0xff, 0x80, 0xff, 0xc0, 0xff, 0x00, 0x00,
-0x38, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xae, 0x00, 0x9e, 0x00, 0x78, 0x00, 0x40, 0x00, 0x00, 0x00,
-0xd2, 0xff, 0x8a, 0xff, 0x54, 0xff, 0x3a, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x6c, 0xff, 0xa6, 0xff,
-0xe6, 0xff, 0x14, 0x00, 0x46, 0x00, 0x82, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x86, 0x00, 0x5e, 0x00,
-0x28, 0x00, 0xf0, 0xff, 0xba, 0xff, 0x88, 0xff, 0x52, 0xff, 0x40, 0xff, 0x44, 0xff, 0x56, 0xff,
-0x7c, 0xff, 0xaa, 0xff, 0xee, 0xff, 0x18, 0x00, 0x42, 0x00, 0x7e, 0x00, 0x90, 0x00, 0x8a, 0x00,
-0x76, 0x00, 0x46, 0x00, 0x1e, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x86, 0xff, 0x68, 0xff, 0x62, 0xff,
-0x5c, 0xff, 0x76, 0xff, 0x94, 0xff, 0xca, 0xff, 0x00, 0x00, 0x38, 0x00, 0x58, 0x00, 0x70, 0x00,
-0x7e, 0x00, 0x78, 0x00, 0x6a, 0x00, 0x44, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xb8, 0xff, 0x9c, 0xff,
-0x94, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xda, 0xff, 0xf0, 0xff, 0x1e, 0x00,
-0x40, 0x00, 0x48, 0x00, 0x52, 0x00, 0x52, 0x00, 0x48, 0x00, 0x24, 0x00, 0x02, 0x00, 0xea, 0xff,
-0xcc, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xde, 0xff,
-0xf4, 0xff, 0x02, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x12, 0x00,
-0x02, 0x00, 0xf8, 0xff, 0xf6, 0xff, 0xda, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xd4, 0xff,
-0xd4, 0xff, 0xee, 0xff, 0xea, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x04, 0x00,
-0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff,
-0xe8, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd4, 0xff,
-0xcc, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xee, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x20, 0x00,
-0x0e, 0x00, 0x12, 0x00, 0x06, 0x00, 0xf8, 0xff, 0xe6, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xb0, 0xff,
-0xa8, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xe4, 0xff, 0xf6, 0xff, 0x0e, 0x00, 0x32, 0x00,
-0x3c, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x08, 0x00, 0xe8, 0xff, 0xc2, 0xff,
-0x9e, 0xff, 0x8a, 0xff, 0x80, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb0, 0xff, 0xe0, 0xff, 0xfc, 0xff,
-0x1e, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x26, 0x00, 0x00, 0x00,
-0xd0, 0xff, 0xa4, 0xff, 0x8e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x98, 0xff, 0xc4, 0xff,
-0xea, 0xff, 0x20, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x74, 0x00, 0x5a, 0x00,
-0x22, 0x00, 0xf0, 0xff, 0xc2, 0xff, 0x96, 0xff, 0x70, 0xff, 0x54, 0xff, 0x58, 0xff, 0x6a, 0xff,
-0x90, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x98, 0x00, 0x9e, 0x00,
-0x84, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x4e, 0xff, 0x3a, 0xff,
-0x34, 0xff, 0x5a, 0xff, 0x9a, 0xff, 0xd0, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x76, 0x00, 0xa0, 0x00,
-0xaa, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x4c, 0x00, 0x12, 0x00, 0xda, 0xff, 0xa0, 0xff, 0x6a, 0xff,
-0x3e, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x66, 0xff, 0x9e, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x5a, 0x00,
-0x82, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0xa2, 0x00, 0x74, 0x00, 0x32, 0x00, 0xfc, 0xff, 0xc6, 0xff,
-0x7a, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x26, 0xff, 0x4c, 0xff, 0x5e, 0xff, 0xae, 0xff, 0xe8, 0xff,
-0x1c, 0x00, 0x54, 0x00, 0x88, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x86, 0x00, 0x5a, 0x00, 0x22, 0x00,
-0xea, 0xff, 0xb2, 0xff, 0x76, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x5a, 0xff, 0x86, 0xff,
-0xb8, 0xff, 0xf6, 0xff, 0x28, 0x00, 0x62, 0x00, 0x80, 0x00, 0x90, 0x00, 0x9e, 0x00, 0x78, 0x00,
-0x42, 0x00, 0x12, 0x00, 0xd4, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x4e, 0xff,
-0x70, 0xff, 0x94, 0xff, 0xce, 0xff, 0x08, 0x00, 0x30, 0x00, 0x58, 0x00, 0x74, 0x00, 0x78, 0x00,
-0x74, 0x00, 0x56, 0x00, 0x26, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xa0, 0xff, 0x86, 0xff, 0x6e, 0xff,
-0x62, 0xff, 0x7c, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xe6, 0xff, 0x02, 0x00, 0x36, 0x00, 0x50, 0x00,
-0x56, 0x00, 0x64, 0x00, 0x58, 0x00, 0x48, 0x00, 0x1a, 0x00, 0xf4, 0xff, 0xe2, 0xff, 0xac, 0xff,
-0xa2, 0xff, 0x98, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xb4, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0x08, 0x00,
-0x1e, 0x00, 0x32, 0x00, 0x36, 0x00, 0x44, 0x00, 0x40, 0x00, 0x24, 0x00, 0x08, 0x00, 0xf0, 0xff,
-0xd6, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xd8, 0xff, 0xd8, 0xff,
-0xec, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x18, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x0a, 0x00,
-0xfc, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe2, 0xff,
-0xde, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf8, 0xff,
-0xf0, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
-0xfe, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xe8, 0xff, 0xd2, 0xff, 0xc8, 0xff, 0xb8, 0xff, 0xc8, 0xff,
-0xcc, 0xff, 0xc8, 0xff, 0xe4, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x16, 0x00, 0x22, 0x00, 0x28, 0x00,
-0x2c, 0x00, 0x22, 0x00, 0x16, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xbc, 0xff, 0xa2, 0xff,
-0x96, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xd4, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x36, 0x00,
-0x4a, 0x00, 0x54, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x36, 0x00, 0x0e, 0x00, 0xe6, 0xff, 0xce, 0xff,
-0xa2, 0xff, 0x8e, 0xff, 0x78, 0xff, 0x76, 0xff, 0x8e, 0xff, 0xa4, 0xff, 0xd6, 0xff, 0xf6, 0xff,
-0x18, 0x00, 0x48, 0x00, 0x66, 0x00, 0x70, 0x00, 0x76, 0x00, 0x66, 0x00, 0x3e, 0x00, 0x04, 0x00,
-0xe0, 0xff, 0xac, 0xff, 0x7e, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x78, 0xff, 0xa2, 0xff,
-0xc4, 0xff, 0xfa, 0xff, 0x38, 0x00, 0x6e, 0x00, 0x9a, 0x00, 0xa0, 0x00, 0x92, 0x00, 0x66, 0x00,
-0x30, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x98, 0xff, 0x66, 0xff, 0x4e, 0xff, 0x46, 0xff, 0x48, 0xff,
-0x6c, 0xff, 0xb0, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x54, 0x00, 0x8a, 0x00, 0xa4, 0x00, 0xb2, 0x00,
-0x9c, 0x00, 0x70, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc2, 0xff, 0x7e, 0xff, 0x50, 0xff, 0x32, 0xff,
-0x30, 0xff, 0x44, 0xff, 0x76, 0xff, 0xb6, 0xff, 0xf0, 0xff, 0x1e, 0x00, 0x64, 0x00, 0x9c, 0x00,
-0xba, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x6e, 0x00, 0x1c, 0x00, 0xf8, 0xff, 0xaa, 0xff, 0x68, 0xff,
-0x3e, 0xff, 0x30, 0xff, 0x36, 0xff, 0x56, 0xff, 0x84, 0xff, 0xc2, 0xff, 0x00, 0x00, 0x38, 0x00,
-0x7a, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xac, 0x00, 0x92, 0x00, 0x56, 0x00, 0x18, 0x00, 0xe8, 0xff,
-0xac, 0xff, 0x6e, 0xff, 0x3c, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x5c, 0xff, 0x90, 0xff, 0xde, 0xff,
-0x10, 0x00, 0x3c, 0x00, 0x7a, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x74, 0x00, 0x3e, 0x00,
-0x04, 0x00, 0xca, 0xff, 0x96, 0xff, 0x62, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x68, 0xff,
-0xa6, 0xff, 0xea, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x74, 0x00, 0x90, 0x00, 0x92, 0x00, 0x80, 0x00,
-0x5a, 0x00, 0x28, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0xa0, 0xff, 0x7a, 0xff, 0x58, 0xff, 0x5a, 0xff,
-0x64, 0xff, 0x8e, 0xff, 0xc4, 0xff, 0xea, 0xff, 0x24, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x72, 0x00,
-0x6a, 0x00, 0x5e, 0x00, 0x44, 0x00, 0x16, 0x00, 0xe6, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x92, 0xff,
-0x7c, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x9e, 0xff, 0xc8, 0xff, 0xea, 0xff, 0x10, 0x00, 0x2a, 0x00,
-0x3c, 0x00, 0x42, 0x00, 0x4e, 0x00, 0x3e, 0x00, 0x26, 0x00, 0x02, 0x00, 0xea, 0xff, 0xd4, 0xff,
-0xb6, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xc8, 0xff, 0xe2, 0xff, 0xf6, 0xff,
-0x08, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x16, 0x00, 0xfe, 0xff,
-0xf2, 0xff, 0xe4, 0xff, 0xd4, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xdc, 0xff,
-0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x04, 0x00,
-0x02, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfe, 0xff,
-0xf6, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd8, 0xff,
-0xea, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x14, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x16, 0x00,
-0x16, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe6, 0xff, 0xc2, 0xff, 0xb6, 0xff, 0xb0, 0xff,
-0xb0, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x2e, 0x00, 0x3a, 0x00,
-0x3c, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x14, 0x00, 0xfc, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xa2, 0xff,
-0x92, 0xff, 0x86, 0xff, 0x90, 0xff, 0xa4, 0xff, 0xba, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x2e, 0x00,
-0x46, 0x00, 0x54, 0x00, 0x54, 0x00, 0x56, 0x00, 0x46, 0x00, 0x28, 0x00, 0x04, 0x00, 0xd8, 0xff,
-0xa4, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x6c, 0xff, 0x7a, 0xff, 0x92, 0xff, 0xaa, 0xff, 0xe0, 0xff,
-0x0c, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x70, 0x00, 0x58, 0x00, 0x2e, 0x00,
-0xfe, 0xff, 0xca, 0xff, 0x9c, 0xff, 0x74, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x5c, 0xff, 0x88, 0xff,
-0xba, 0xff, 0xee, 0xff, 0x1c, 0x00, 0x52, 0x00, 0x78, 0x00, 0x96, 0x00, 0x96, 0x00, 0x86, 0x00,
-0x5e, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb0, 0xff, 0x78, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x3e, 0xff,
-0x5e, 0xff, 0x86, 0xff, 0xca, 0xff, 0xfe, 0xff, 0x30, 0x00, 0x74, 0x00, 0x9c, 0x00, 0xac, 0x00,
-0xa6, 0x00, 0x88, 0x00, 0x56, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0xa2, 0xff, 0x68, 0xff, 0x44, 0xff,
-0x2c, 0xff, 0x3a, 0xff, 0x60, 0xff, 0x9e, 0xff, 0xe2, 0xff, 0x12, 0x00, 0x4e, 0x00, 0x82, 0x00,
-0xa6, 0x00, 0xc4, 0x00, 0xaa, 0x00, 0x8c, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xd6, 0xff, 0x7a, 0xff,
-0x58, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x48, 0xff, 0x6a, 0xff, 0xa6, 0xff, 0xe4, 0xff, 0x18, 0x00,
-0x50, 0x00, 0x92, 0x00, 0xb0, 0x00, 0xbc, 0x00, 0xaa, 0x00, 0x6e, 0x00, 0x2c, 0x00, 0xec, 0xff,
-0xbc, 0xff, 0x82, 0xff, 0x58, 0xff, 0x3e, 0xff, 0x30, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xc2, 0xff,
-0xfe, 0xff, 0x2a, 0x00, 0x62, 0x00, 0x86, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0x88, 0x00, 0x58, 0x00,
-0x1e, 0x00, 0xe6, 0xff, 0xb0, 0xff, 0x82, 0xff, 0x60, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x68, 0xff,
-0x94, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x50, 0x00, 0x68, 0x00, 0x82, 0x00, 0x7a, 0x00,
-0x66, 0x00, 0x36, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xa6, 0xff, 0x90, 0xff, 0x72, 0xff, 0x66, 0xff,
-0x70, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x34, 0x00, 0x44, 0x00, 0x54, 0x00,
-0x6a, 0x00, 0x52, 0x00, 0x48, 0x00, 0x28, 0x00, 0xfa, 0xff, 0xea, 0xff, 0xc4, 0xff, 0xb0, 0xff,
-0xa0, 0xff, 0x92, 0xff, 0x96, 0xff, 0xa4, 0xff, 0xc4, 0xff, 0xe6, 0xff, 0xfe, 0xff, 0x1c, 0x00,
-0x34, 0x00, 0x38, 0x00, 0x32, 0x00, 0x34, 0x00, 0x26, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xe4, 0xff,
-0xce, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xe8, 0xff,
-0xf8, 0xff, 0x06, 0x00, 0x18, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x0e, 0x00,
-0xf6, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xdc, 0xff,
-0xda, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0x00, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x06, 0x00,
-0xf0, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xc6, 0xff,
-0xc8, 0xff, 0xd2, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x12, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2a, 0x00,
-0x26, 0x00, 0x28, 0x00, 0x0e, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xc8, 0xff, 0xaa, 0xff, 0xa6, 0xff,
-0x94, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x02, 0x00, 0x2c, 0x00, 0x48, 0x00,
-0x50, 0x00, 0x5a, 0x00, 0x50, 0x00, 0x38, 0x00, 0x1a, 0x00, 0x02, 0x00, 0xcc, 0xff, 0x9e, 0xff,
-0x8c, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x84, 0xff, 0x8e, 0xff, 0xb2, 0xff, 0xde, 0xff, 0x08, 0x00,
-0x3c, 0x00, 0x4e, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x4e, 0x00, 0x38, 0x00, 0x02, 0x00, 0xd8, 0xff,
-0xb2, 0xff, 0x88, 0xff, 0x66, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x6e, 0xff, 0x96, 0xff, 0xc8, 0xff,
-0xfc, 0xff, 0x28, 0x00, 0x56, 0x00, 0x7c, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x6c, 0x00, 0x38, 0x00,
-0x0a, 0x00, 0xd8, 0xff, 0xa0, 0xff, 0x76, 0xff, 0x46, 0xff, 0x3a, 0xff, 0x46, 0xff, 0x64, 0xff,
-0xb2, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x3e, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0x8e, 0x00,
-0x6a, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x8e, 0xff, 0x52, 0xff, 0x36, 0xff, 0x26, 0xff,
-0x3e, 0xff, 0x62, 0xff, 0xae, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x5c, 0x00, 0x94, 0x00, 0xb2, 0x00,
-0xaa, 0x00, 0x9a, 0x00, 0x74, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xc6, 0xff, 0x8a, 0xff, 0x5c, 0xff,
-0x32, 0xff, 0x2e, 0xff, 0x4e, 0xff, 0x7e, 0xff, 0xc8, 0xff, 0x02, 0x00, 0x3a, 0x00, 0x78, 0x00,
-0xa2, 0x00, 0xc0, 0x00, 0xb4, 0x00, 0x9a, 0x00, 0x70, 0x00, 0x26, 0x00, 0xe6, 0xff, 0xbc, 0xff,
-0x7e, 0xff, 0x44, 0xff, 0x30, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x86, 0xff, 0xcc, 0xff, 0x0a, 0x00,
-0x2c, 0x00, 0x6c, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x80, 0x00, 0x4a, 0x00, 0x12, 0x00,
-0xd6, 0xff, 0x9e, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x5c, 0xff, 0x70, 0xff, 0xa4, 0xff,
-0xd8, 0xff, 0x0e, 0x00, 0x3a, 0x00, 0x64, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x66, 0x00,
-0x38, 0x00, 0x02, 0x00, 0xce, 0xff, 0xa6, 0xff, 0x7e, 0xff, 0x66, 0xff, 0x62, 0xff, 0x6e, 0xff,
-0x84, 0xff, 0xb4, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x38, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x6a, 0x00,
-0x5c, 0x00, 0x42, 0x00, 0x16, 0x00, 0xf0, 0xff, 0xc4, 0xff, 0x98, 0xff, 0x86, 0xff, 0x70, 0xff,
-0x70, 0xff, 0x86, 0xff, 0x9c, 0xff, 0xbc, 0xff, 0xde, 0xff, 0x02, 0x00, 0x2c, 0x00, 0x32, 0x00,
-0x3a, 0x00, 0x48, 0x00, 0x32, 0x00, 0x20, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xd6, 0xff, 0xb0, 0xff,
-0xb0, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0xaa, 0xff, 0xbe, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff,
-0x18, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x28, 0x00, 0x20, 0x00, 0x0e, 0x00, 0xfe, 0xff, 0xec, 0xff,
-0xea, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd8, 0xff,
-0xdc, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00,
-0x06, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf0, 0xff,
-0xe6, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x14, 0x00, 0x20, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x2a, 0x00,
-0x16, 0x00, 0x04, 0x00, 0xf0, 0xff, 0xd8, 0xff, 0xc6, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xbc, 0xff,
-0xba, 0xff, 0xc8, 0xff, 0xde, 0xff, 0xfa, 0xff, 0x16, 0x00, 0x30, 0x00, 0x40, 0x00, 0x4a, 0x00,
-0x42, 0x00, 0x36, 0x00, 0x2c, 0x00, 0x0a, 0x00, 0xe8, 0xff, 0xc0, 0xff, 0xa6, 0xff, 0x90, 0xff,
-0x86, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x54, 0x00,
-0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x54, 0x00, 0x36, 0x00, 0x10, 0x00, 0xd6, 0xff, 0xb4, 0xff,
-0x88, 0xff, 0x68, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x84, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x0c, 0x00,
-0x34, 0x00, 0x66, 0x00, 0x86, 0x00, 0x8c, 0x00, 0x7c, 0x00, 0x5e, 0x00, 0x28, 0x00, 0xfe, 0xff,
-0xc4, 0xff, 0x8c, 0xff, 0x54, 0xff, 0x38, 0xff, 0x3e, 0xff, 0x48, 0xff, 0x6a, 0xff, 0x9a, 0xff,
-0xd6, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x82, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x82, 0x00, 0x5c, 0x00,
-0x1e, 0x00, 0xf0, 0xff, 0xb4, 0xff, 0x76, 0xff, 0x48, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x46, 0xff,
-0x78, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x2c, 0x00, 0x66, 0x00, 0x9e, 0x00, 0xb8, 0x00, 0xb2, 0x00,
-0x90, 0x00, 0x5e, 0x00, 0x12, 0x00, 0xe6, 0xff, 0xa0, 0xff, 0x5e, 0xff, 0x3e, 0xff, 0x22, 0xff,
-0x26, 0xff, 0x48, 0xff, 0x80, 0xff, 0xce, 0xff, 0x02, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xa8, 0x00,
-0xbc, 0x00, 0xa8, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc8, 0xff, 0x8e, 0xff, 0x5a, 0xff,
-0x2a, 0xff, 0x22, 0xff, 0x42, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xe2, 0xff, 0x22, 0x00, 0x54, 0x00,
-0x8e, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0x9a, 0x00, 0x72, 0x00, 0x38, 0x00, 0x02, 0x00, 0xc0, 0xff,
-0x88, 0xff, 0x56, 0xff, 0x44, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x80, 0xff, 0xbc, 0xff, 0xfc, 0xff,
-0x30, 0x00, 0x6c, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x60, 0x00, 0x2e, 0x00,
-0xf8, 0xff, 0xba, 0xff, 0x82, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x5a, 0xff, 0x66, 0xff, 0x90, 0xff,
-0xcc, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x62, 0x00, 0x7a, 0x00, 0x84, 0x00, 0x84, 0x00, 0x70, 0x00,
-0x44, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x96, 0xff, 0x80, 0xff, 0x70, 0xff, 0x7a, 0xff,
-0x86, 0xff, 0xa4, 0xff, 0xde, 0xff, 0x06, 0x00, 0x2c, 0x00, 0x48, 0x00, 0x50, 0x00, 0x56, 0x00,
-0x52, 0x00, 0x4a, 0x00, 0x32, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xc4, 0xff, 0xa4, 0xff, 0x9c, 0xff,
-0x94, 0xff, 0x90, 0xff, 0x9e, 0xff, 0xbc, 0xff, 0xde, 0xff, 0x00, 0x00, 0x10, 0x00, 0x26, 0x00,
-0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xc2, 0xff,
-0xb6, 0xff, 0xbe, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0xf6, 0xff,
-0xec, 0xff, 0x08, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xfe, 0xff, 0x02, 0x00, 0xfe, 0xff, 0xf4, 0xff,
-0xf2, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff,
-0xde, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xec, 0xff, 0xea, 0xff,
-0xfa, 0xff, 0x02, 0x00, 0x0c, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0x06, 0x00, 0xfc, 0xff, 0xfa, 0xff,
-0xf0, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xc2, 0xff, 0xc6, 0xff,
-0xe0, 0xff, 0xf6, 0xff, 0x06, 0x00, 0x1e, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x3a, 0x00,
-0x2e, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xca, 0xff, 0xa4, 0xff, 0x88, 0xff, 0x90, 0xff,
-0xa6, 0xff, 0xb6, 0xff, 0xca, 0xff, 0xf8, 0xff, 0x18, 0x00, 0x48, 0x00, 0x60, 0x00, 0x62, 0x00,
-0x6e, 0x00, 0x58, 0x00, 0x42, 0x00, 0x22, 0x00, 0xfa, 0xff, 0xd4, 0xff, 0xa2, 0xff, 0x78, 0xff,
-0x64, 0xff, 0x72, 0xff, 0x88, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xf6, 0xff, 0x24, 0x00, 0x56, 0x00,
-0x72, 0x00, 0x84, 0x00, 0x80, 0x00, 0x6c, 0x00, 0x48, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xc0, 0xff,
-0x92, 0xff, 0x72, 0xff, 0x5a, 0xff, 0x58, 0xff, 0x80, 0xff, 0x9a, 0xff, 0xd2, 0xff, 0x08, 0x00,
-0x36, 0x00, 0x68, 0x00, 0x88, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x44, 0x00, 0x18, 0x00,
-0xe0, 0xff, 0xae, 0xff, 0x70, 0xff, 0x50, 0xff, 0x3a, 0xff, 0x4a, 0xff, 0x6e, 0xff, 0x90, 0xff,
-0xd2, 0xff, 0xfe, 0xff, 0x3e, 0x00, 0x6e, 0x00, 0x94, 0x00, 0xac, 0x00, 0x94, 0x00, 0x80, 0x00,
-0x3e, 0x00, 0xfc, 0xff, 0xd8, 0xff, 0x92, 0xff, 0x54, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x44, 0xff,
-0x5c, 0xff, 0x9e, 0xff, 0xda, 0xff, 0x08, 0x00, 0x4c, 0x00, 0x86, 0x00, 0xaa, 0x00, 0xb4, 0x00,
-0xa4, 0x00, 0x7c, 0x00, 0x38, 0x00, 0xfc, 0xff, 0xce, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x2a, 0xff,
-0x26, 0xff, 0x44, 0xff, 0x66, 0xff, 0xaa, 0xff, 0xee, 0xff, 0x16, 0x00, 0x52, 0x00, 0x8a, 0x00,
-0xb2, 0x00, 0xb2, 0x00, 0x96, 0x00, 0x64, 0x00, 0x1c, 0x00, 0xf0, 0xff, 0xbe, 0xff, 0x7c, 0xff,
-0x46, 0xff, 0x28, 0xff, 0x2c, 0xff, 0x4e, 0xff, 0x7c, 0xff, 0xc2, 0xff, 0xfc, 0xff, 0x24, 0x00,
-0x56, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xa0, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x1a, 0x00, 0xea, 0xff,
-0xb2, 0xff, 0x86, 0xff, 0x60, 0xff, 0x48, 0xff, 0x4c, 0xff, 0x6a, 0xff, 0x92, 0xff, 0xd0, 0xff,
-0x04, 0x00, 0x34, 0x00, 0x60, 0x00, 0x86, 0x00, 0x92, 0x00, 0x84, 0x00, 0x72, 0x00, 0x40, 0x00,
-0x14, 0x00, 0xe8, 0xff, 0xaa, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x66, 0xff, 0x64, 0xff, 0x80, 0xff,
-0xa8, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x6e, 0x00, 0x62, 0x00,
-0x4e, 0x00, 0x24, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x82, 0xff,
-0x90, 0xff, 0x9a, 0xff, 0xc2, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x28, 0x00, 0x34, 0x00, 0x44, 0x00,
-0x50, 0x00, 0x4a, 0x00, 0x3c, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xcc, 0xff, 0xc0, 0xff,
-0xb6, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfa, 0xff, 0x0e, 0x00,
-0x20, 0x00, 0x22, 0x00, 0x24, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0xff,
-0xe0, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xda, 0xff,
-0xe6, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00,
-0x0c, 0x00, 0x06, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xf0, 0xff,
-0xd4, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xe4, 0xff,
-0xf8, 0xff, 0x04, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1c, 0x00,
-0x06, 0x00, 0xf4, 0xff, 0xe0, 0xff, 0xc4, 0xff, 0xb2, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xa6, 0xff,
-0xb2, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x48, 0x00, 0x48, 0x00, 0x46, 0x00,
-0x38, 0x00, 0x30, 0x00, 0x10, 0x00, 0x04, 0x00, 0xde, 0xff, 0xac, 0xff, 0x94, 0xff, 0x86, 0xff,
-0x88, 0xff, 0x90, 0xff, 0xa8, 0xff, 0xc8, 0xff, 0xec, 0xff, 0x10, 0x00, 0x56, 0x00, 0x68, 0x00,
-0x6e, 0x00, 0x72, 0x00, 0x56, 0x00, 0x44, 0x00, 0x24, 0x00, 0xfc, 0xff, 0xc0, 0xff, 0x8e, 0xff,
-0x78, 0xff, 0x64, 0xff, 0x62, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0xfc, 0xff, 0x2c, 0x00,
-0x66, 0x00, 0x82, 0x00, 0x92, 0x00, 0x8c, 0x00, 0x6c, 0x00, 0x34, 0x00, 0x0e, 0x00, 0xe0, 0xff,
-0x92, 0xff, 0x76, 0xff, 0x48, 0xff, 0x40, 0xff, 0x46, 0xff, 0x68, 0xff, 0x9c, 0xff, 0xd2, 0xff,
-0x14, 0x00, 0x46, 0x00, 0x84, 0x00, 0xa2, 0x00, 0xac, 0x00, 0x96, 0x00, 0x76, 0x00, 0x32, 0x00,
-0xfe, 0xff, 0xc6, 0xff, 0x8c, 0xff, 0x5a, 0xff, 0x34, 0xff, 0x32, 0xff, 0x3a, 0xff, 0x66, 0xff,
-0xb2, 0xff, 0xec, 0xff, 0x26, 0x00, 0x6a, 0x00, 0xa2, 0x00, 0xb4, 0x00, 0xae, 0x00, 0x9a, 0x00,
-0x6e, 0x00, 0x20, 0x00, 0xee, 0xff, 0xb6, 0xff, 0x68, 0xff, 0x3e, 0xff, 0x20, 0xff, 0x20, 0xff,
-0x3a, 0xff, 0x6e, 0xff, 0xc0, 0xff, 0xfa, 0xff, 0x2a, 0x00, 0x70, 0x00, 0xa0, 0x00, 0xba, 0x00,
-0xa8, 0x00, 0x8c, 0x00, 0x50, 0x00, 0x0a, 0x00, 0xde, 0xff, 0x9c, 0xff, 0x62, 0xff, 0x34, 0xff,
-0x26, 0xff, 0x26, 0xff, 0x50, 0xff, 0x92, 0xff, 0xca, 0xff, 0x0e, 0x00, 0x42, 0x00, 0x7a, 0x00,
-0xa8, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x78, 0x00, 0x40, 0x00, 0x06, 0x00, 0xd2, 0xff, 0x9e, 0xff,
-0x64, 0xff, 0x3e, 0xff, 0x2e, 0xff, 0x40, 0xff, 0x6c, 0xff, 0x9e, 0xff, 0xe0, 0xff, 0x1c, 0x00,
-0x4c, 0x00, 0x78, 0x00, 0x92, 0x00, 0x92, 0x00, 0x82, 0x00, 0x58, 0x00, 0x2c, 0x00, 0xf8, 0xff,
-0xc2, 0xff, 0x92, 0xff, 0x68, 0xff, 0x44, 0xff, 0x42, 0xff, 0x5e, 0xff, 0x74, 0xff, 0xb4, 0xff,
-0xea, 0xff, 0x20, 0x00, 0x4e, 0x00, 0x62, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x56, 0x00,
-0x22, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x72, 0xff, 0x82, 0xff,
-0x96, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x20, 0x00, 0x42, 0x00, 0x4c, 0x00, 0x5c, 0x00, 0x58, 0x00,
-0x58, 0x00, 0x38, 0x00, 0x10, 0x00, 0xe8, 0xff, 0xcc, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x8a, 0xff,
-0x90, 0xff, 0xa0, 0xff, 0xc0, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0x0c, 0x00, 0x26, 0x00, 0x28, 0x00,
-0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x18, 0x00, 0x04, 0x00, 0xea, 0xff, 0xdc, 0xff, 0xce, 0xff,
-0xbe, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xda, 0xff, 0xe6, 0xff, 0xfa, 0xff, 0xf8, 0xff,
-0x06, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x12, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xfa, 0xff,
-0xf6, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xde, 0xff,
-0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xf8, 0xff, 0x04, 0x00,
-0x12, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x16, 0x00, 0x16, 0x00, 0x08, 0x00, 0xfe, 0xff, 0xea, 0xff,
-0xde, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xae, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xd8, 0xff,
-0xf4, 0xff, 0x12, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x36, 0x00,
-0x1a, 0x00, 0xf6, 0xff, 0xd6, 0xff, 0xc2, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x90, 0xff, 0x98, 0xff,
-0xae, 0xff, 0xbe, 0xff, 0xe4, 0xff, 0xfa, 0xff, 0x2e, 0x00, 0x3c, 0x00, 0x56, 0x00, 0x60, 0x00,
-0x5a, 0x00, 0x50, 0x00, 0x28, 0x00, 0xf8, 0xff, 0xca, 0xff, 0xa8, 0xff, 0x8c, 0xff, 0x70, 0xff,
-0x6e, 0xff, 0x80, 0xff, 0x90, 0xff, 0xac, 0xff, 0xdc, 0xff, 0x0e, 0x00, 0x44, 0x00, 0x68, 0x00,
-0x8c, 0x00, 0x8c, 0x00, 0x76, 0x00, 0x62, 0x00, 0x34, 0x00, 0xf8, 0xff, 0xc8, 0xff, 0x94, 0xff,
-0x78, 0xff, 0x56, 0xff, 0x54, 0xff, 0x5e, 0xff, 0x88, 0xff, 0xba, 0xff, 0xe8, 0xff, 0x32, 0x00,
-0x5e, 0x00, 0x8c, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x22, 0x00, 0xf2, 0xff,
-0xb6, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x56, 0xff, 0x88, 0xff, 0xd2, 0xff,
-0xf8, 0xff, 0x36, 0x00, 0x76, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xae, 0x00, 0x86, 0x00, 0x46, 0x00,
-0x12, 0x00, 0xd4, 0xff, 0x96, 0xff, 0x62, 0xff, 0x38, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x5e, 0xff,
-0x9c, 0xff, 0xe0, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xc6, 0x00, 0xa6, 0x00,
-0x7e, 0x00, 0x3a, 0x00, 0xfc, 0xff, 0xcc, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x30, 0xff, 0x26, 0xff,
-0x40, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xea, 0xff, 0x18, 0x00, 0x5c, 0x00, 0x96, 0x00, 0xa8, 0x00,
-0xb2, 0x00, 0x98, 0x00, 0x64, 0x00, 0x20, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x4a, 0xff,
-0x2e, 0xff, 0x2e, 0xff, 0x46, 0xff, 0x72, 0xff, 0xa8, 0xff, 0xf0, 0xff, 0x28, 0x00, 0x58, 0x00,
-0x8a, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0x88, 0x00, 0x5e, 0x00, 0x20, 0x00, 0xec, 0xff, 0xb0, 0xff,
-0x82, 0xff, 0x62, 0xff, 0x42, 0xff, 0x4e, 0xff, 0x5e, 0xff, 0x86, 0xff, 0xc2, 0xff, 0xfc, 0xff,
-0x32, 0x00, 0x62, 0x00, 0x88, 0x00, 0x90, 0x00, 0x84, 0x00, 0x6a, 0x00, 0x4c, 0x00, 0x0c, 0x00,
-0xe6, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x72, 0xff, 0x62, 0xff, 0x68, 0xff, 0x7a, 0xff, 0x9c, 0xff,
-0xd4, 0xff, 0x0a, 0x00, 0x34, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x66, 0x00, 0x52, 0x00,
-0x30, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xb8, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x92, 0xff, 0x9e, 0xff,
-0xa2, 0xff, 0xc0, 0xff, 0xf0, 0xff, 0x0c, 0x00, 0x28, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x4a, 0x00,
-0x44, 0x00, 0x32, 0x00, 0x20, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xd2, 0xff, 0xbe, 0xff, 0xce, 0xff,
-0xbc, 0xff, 0xb2, 0xff, 0xc8, 0xff, 0xda, 0xff, 0xee, 0xff, 0xfc, 0xff, 0x06, 0x00, 0x1c, 0x00,
-0x14, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x12, 0x00, 0x0a, 0x00, 0xfc, 0xff, 0xf6, 0xff, 0xf4, 0xff,
-0xea, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xec, 0xff,
-0xf2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x0c, 0x00, 0x0c, 0x00,
-0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0x02, 0x00, 0xec, 0xff, 0xda, 0xff,
-0xdc, 0xff, 0xd6, 0xff, 0xc0, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xe8, 0xff, 0xf0, 0xff,
-0xfa, 0xff, 0x06, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x04, 0x00,
-0xf2, 0xff, 0xd2, 0xff, 0xba, 0xff, 0xaa, 0xff, 0x94, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xb2, 0xff,
-0xd0, 0xff, 0xf0, 0xff, 0x06, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x48, 0x00, 0x3c, 0x00, 0x30, 0x00,
-0x28, 0x00, 0x10, 0x00, 0xe2, 0xff, 0xcc, 0xff, 0xaa, 0xff, 0x82, 0xff, 0x74, 0xff, 0x82, 0xff,
-0x98, 0xff, 0xa4, 0xff, 0xc8, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x42, 0x00, 0x68, 0x00, 0x74, 0x00,
-0x64, 0x00, 0x50, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xe8, 0xff, 0xba, 0xff, 0x8e, 0xff, 0x6c, 0xff,
-0x56, 0xff, 0x5e, 0xff, 0x82, 0xff, 0xa2, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x60, 0x00,
-0x80, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x70, 0x00, 0x40, 0x00, 0x18, 0x00, 0xec, 0xff, 0xb2, 0xff,
-0x7e, 0xff, 0x54, 0xff, 0x4c, 0xff, 0x56, 0xff, 0x76, 0xff, 0xaa, 0xff, 0xd8, 0xff, 0x12, 0x00,
-0x46, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa4, 0x00, 0x94, 0x00, 0x7c, 0x00, 0x44, 0x00, 0x0e, 0x00,
-0xea, 0xff, 0x9e, 0xff, 0x60, 0xff, 0x52, 0xff, 0x3c, 0xff, 0x4e, 0xff, 0x72, 0xff, 0xaa, 0xff,
-0xea, 0xff, 0x14, 0x00, 0x5a, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xb6, 0x00, 0x9a, 0x00, 0x7a, 0x00,
-0x38, 0x00, 0x00, 0x00, 0xce, 0xff, 0x7e, 0xff, 0x52, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x46, 0xff,
-0x78, 0xff, 0xb8, 0xff, 0xf8, 0xff, 0x24, 0x00, 0x6c, 0x00, 0x98, 0x00, 0xb6, 0x00, 0xb4, 0x00,
-0x90, 0x00, 0x70, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xbe, 0xff, 0x70, 0xff, 0x40, 0xff, 0x36, 0xff,
-0x2c, 0xff, 0x4e, 0xff, 0x84, 0xff, 0xbe, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x70, 0x00, 0xa6, 0x00,
-0xa8, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x58, 0x00, 0x12, 0x00, 0xe0, 0xff, 0xa4, 0xff, 0x6c, 0xff,
-0x3e, 0xff, 0x2c, 0xff, 0x3c, 0xff, 0x68, 0xff, 0x92, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x3c, 0x00,
-0x6c, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x78, 0x00, 0x64, 0x00, 0x2c, 0x00, 0xfc, 0xff, 0xce, 0xff,
-0x92, 0xff, 0x64, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x6c, 0xff, 0x84, 0xff, 0xa8, 0xff, 0xe8, 0xff,
-0x06, 0x00, 0x38, 0x00, 0x5c, 0x00, 0x68, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x1c, 0x00,
-0xf2, 0xff, 0xca, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x88, 0xff, 0xa2, 0xff,
-0xc6, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x26, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x40, 0x00,
-0x30, 0x00, 0x04, 0x00, 0xee, 0xff, 0xcc, 0xff, 0xb4, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xa6, 0xff,
-0xac, 0xff, 0xb8, 0xff, 0xce, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x1e, 0x00, 0x1e, 0x00, 0x22, 0x00,
-0x2e, 0x00, 0x26, 0x00, 0x14, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe0, 0xff, 0xda, 0xff,
-0xda, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xfa, 0xff, 0x00, 0x00,
-0x04, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x0a, 0x00,
-0x02, 0x00, 0xf6, 0xff, 0xf4, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xce, 0xff,
-0xda, 0xff, 0xde, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xea, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x10, 0x00,
-0x1e, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xf4, 0xff,
-0xd8, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xb4, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xea, 0xff,
-0x02, 0x00, 0x12, 0x00, 0x28, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x32, 0x00, 0x20, 0x00,
-0x04, 0x00, 0xee, 0xff, 0xc8, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x84, 0xff, 0x8c, 0xff, 0x9a, 0xff,
-0xa4, 0xff, 0xcc, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x36, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x54, 0x00,
-0x40, 0x00, 0x28, 0x00, 0x02, 0x00, 0xde, 0xff, 0xa8, 0xff, 0x90, 0xff, 0x6a, 0xff, 0x60, 0xff,
-0x6a, 0xff, 0x84, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x00, 0x00, 0x2c, 0x00, 0x60, 0x00, 0x70, 0x00,
-0x82, 0x00, 0x74, 0x00, 0x58, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0x90, 0xff, 0x6a, 0xff,
-0x52, 0xff, 0x48, 0xff, 0x54, 0xff, 0x84, 0xff, 0xac, 0xff, 0xda, 0xff, 0x14, 0x00, 0x4c, 0x00,
-0x7c, 0x00, 0x94, 0x00, 0x90, 0x00, 0x86, 0x00, 0x56, 0x00, 0x1e, 0x00, 0xf2, 0xff, 0xb2, 0xff,
-0x7e, 0xff, 0x46, 0xff, 0x34, 0xff, 0x40, 0xff, 0x54, 0xff, 0x84, 0xff, 0xc0, 0xff, 0xf2, 0xff,
-0x2a, 0x00, 0x66, 0x00, 0x9c, 0x00, 0xba, 0x00, 0xb6, 0x00, 0x92, 0x00, 0x68, 0x00, 0x1a, 0x00,
-0xea, 0xff, 0xb8, 0xff, 0x6c, 0xff, 0x4e, 0xff, 0x36, 0xff, 0x38, 0xff, 0x62, 0xff, 0x8e, 0xff,
-0xd8, 0xff, 0x0a, 0x00, 0x4a, 0x00, 0x92, 0x00, 0xb2, 0x00, 0xd2, 0x00, 0xb8, 0x00, 0x90, 0x00,
-0x58, 0x00, 0x12, 0x00, 0xec, 0xff, 0xa2, 0xff, 0x5c, 0xff, 0x34, 0xff, 0x26, 0xff, 0x2e, 0xff,
-0x60, 0xff, 0x9c, 0xff, 0xe0, 0xff, 0x0e, 0x00, 0x52, 0x00, 0x8e, 0x00, 0xac, 0x00, 0xc2, 0x00,
-0xaa, 0x00, 0x88, 0x00, 0x42, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x8e, 0xff, 0x5c, 0xff, 0x3e, 0xff,
-0x34, 0xff, 0x4a, 0xff, 0x6c, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x28, 0x00, 0x60, 0x00, 0x8a, 0x00,
-0xae, 0x00, 0xae, 0x00, 0x9a, 0x00, 0x66, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x9a, 0xff,
-0x6a, 0xff, 0x46, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x8a, 0xff, 0xc2, 0xff, 0xfe, 0xff, 0x2a, 0x00,
-0x56, 0x00, 0x72, 0x00, 0x80, 0x00, 0x82, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x12, 0x00, 0xe0, 0xff,
-0xa8, 0xff, 0x7e, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x7c, 0xff, 0x9e, 0xff, 0xce, 0xff,
-0xf0, 0xff, 0x1e, 0x00, 0x50, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x56, 0x00, 0x48, 0x00, 0x28, 0x00,
-0x04, 0x00, 0xe4, 0xff, 0xb6, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x84, 0xff, 0x90, 0xff, 0xa2, 0xff,
-0xbe, 0xff, 0xe8, 0xff, 0x04, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x38, 0x00, 0x32, 0x00,
-0x32, 0x00, 0x18, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xac, 0xff, 0xae, 0xff,
-0xb2, 0xff, 0xb6, 0xff, 0xc6, 0xff, 0xdc, 0xff, 0xf4, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x10, 0x00,
-0x14, 0x00, 0x1c, 0x00, 0x08, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xdc, 0xff,
-0xe0, 0xff, 0xd4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xf4, 0xff,
-0xf4, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x04, 0x00, 0xfe, 0xff, 0x10, 0x00, 0x0c, 0x00,
-0x0a, 0x00, 0x14, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xe0, 0xff,
-0xd6, 0xff, 0xce, 0xff, 0xc4, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xdc, 0xff, 0xee, 0xff, 0xfc, 0xff,
-0x08, 0x00, 0x1e, 0x00, 0x2e, 0x00, 0x26, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0xfe, 0xff,
-0xe6, 0xff, 0xd0, 0xff, 0xb4, 0xff, 0xa0, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xda, 0xff,
-0xee, 0xff, 0x00, 0x00, 0x24, 0x00, 0x42, 0x00, 0x56, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x40, 0x00,
-0x28, 0x00, 0x06, 0x00, 0xf0, 0xff, 0xc0, 0xff, 0x94, 0xff, 0x84, 0xff, 0x84, 0xff, 0x90, 0xff,
-0x9e, 0xff, 0xc4, 0xff, 0xf0, 0xff, 0x08, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x64, 0x00, 0x70, 0x00,
-0x58, 0x00, 0x44, 0x00, 0x22, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x8c, 0xff, 0x6a, 0xff, 0x5a, 0xff,
-0x56, 0xff, 0x66, 0xff, 0x90, 0xff, 0xc8, 0xff, 0xe8, 0xff, 0x24, 0x00, 0x50, 0x00, 0x68, 0x00,
-0x80, 0x00, 0x80, 0x00, 0x72, 0x00, 0x42, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x80, 0xff,
-0x56, 0xff, 0x42, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x96, 0xff, 0xce, 0xff, 0x04, 0x00, 0x38, 0x00,
-0x66, 0x00, 0x90, 0x00, 0x9c, 0x00, 0x94, 0x00, 0x80, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0xce, 0xff,
-0x94, 0xff, 0x6c, 0xff, 0x3e, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x56, 0xff, 0x92, 0xff, 0xda, 0xff,
-0x10, 0x00, 0x3c, 0x00, 0x70, 0x00, 0x92, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x6c, 0x00, 0x34, 0x00,
-0xf6, 0xff, 0xca, 0xff, 0x8c, 0xff, 0x58, 0xff, 0x30, 0xff, 0x20, 0xff, 0x3a, 0xff, 0x74, 0xff,
-0xa8, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x50, 0x00, 0x88, 0x00, 0xa4, 0x00, 0xb0, 0x00, 0xa8, 0x00,
-0x6a, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc4, 0xff, 0x86, 0xff, 0x58, 0xff, 0x3c, 0xff, 0x3a, 0xff,
-0x50, 0xff, 0x7a, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x30, 0x00, 0x60, 0x00, 0x94, 0x00, 0xa4, 0x00,
-0xa4, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x24, 0x00, 0xf2, 0xff, 0xba, 0xff, 0x80, 0xff, 0x54, 0xff,
-0x34, 0xff, 0x3e, 0xff, 0x54, 0xff, 0x86, 0xff, 0xbc, 0xff, 0xfa, 0xff, 0x28, 0x00, 0x60, 0x00,
-0x8a, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x72, 0x00, 0x54, 0x00, 0x1e, 0x00, 0xde, 0xff, 0xb0, 0xff,
-0x7c, 0xff, 0x6a, 0xff, 0x54, 0xff, 0x5c, 0xff, 0x7c, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x04, 0x00,
-0x3e, 0x00, 0x5a, 0x00, 0x74, 0x00, 0x88, 0x00, 0x70, 0x00, 0x58, 0x00, 0x32, 0x00, 0x06, 0x00,
-0xde, 0xff, 0xb0, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x92, 0xff, 0xb8, 0xff,
-0xdc, 0xff, 0xfe, 0xff, 0x26, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x34, 0x00,
-0x0e, 0x00, 0xee, 0xff, 0xda, 0xff, 0xba, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa6, 0xff,
-0xba, 0xff, 0xce, 0xff, 0xee, 0xff, 0x04, 0x00, 0x16, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00,
-0x24, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xf6, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xc8, 0xff, 0xd2, 0xff,
-0xd0, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfc, 0xff,
-0xf8, 0xff, 0x04, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xec, 0xff,
-0xf4, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff,
-0xe4, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x0c, 0x00,
-0x16, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x04, 0x00, 0x02, 0x00, 0xf2, 0xff,
-0xd4, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xd8, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0x08, 0x00, 0x12, 0x00, 0x30, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x1a, 0x00, 0x10, 0x00,
-0xf8, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x90, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xb4, 0xff,
-0xcc, 0xff, 0xf6, 0xff, 0x18, 0x00, 0x40, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x46, 0x00,
-0x3e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xc8, 0xff, 0x90, 0xff, 0x88, 0xff, 0x76, 0xff, 0x76, 0xff,
-0x9a, 0xff, 0xa2, 0xff, 0xd4, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x52, 0x00, 0x6e, 0x00, 0x76, 0x00,
-0x7c, 0x00, 0x62, 0x00, 0x3c, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xac, 0xff, 0x78, 0xff, 0x52, 0xff,
-0x44, 0xff, 0x56, 0xff, 0x74, 0xff, 0x9e, 0xff, 0xd6, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x72, 0x00,
-0x86, 0x00, 0x9a, 0x00, 0x80, 0x00, 0x70, 0x00, 0x30, 0x00, 0xfc, 0xff, 0xcc, 0xff, 0x88, 0xff,
-0x56, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x3a, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x1e, 0x00,
-0x5a, 0x00, 0x92, 0x00, 0xa2, 0x00, 0xac, 0x00, 0x90, 0x00, 0x60, 0x00, 0x2c, 0x00, 0xf0, 0xff,
-0xc2, 0xff, 0x7a, 0xff, 0x40, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x4c, 0xff, 0x8a, 0xff, 0xca, 0xff,
-0xf8, 0xff, 0x2a, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xb6, 0x00, 0xa6, 0x00, 0x8a, 0x00, 0x52, 0x00,
-0x08, 0x00, 0xde, 0xff, 0xaa, 0xff, 0x5c, 0xff, 0x42, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x56, 0xff,
-0x8c, 0xff, 0xd8, 0xff, 0x06, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x9e, 0x00, 0xac, 0x00, 0x96, 0x00,
-0x7a, 0x00, 0x40, 0x00, 0x00, 0x00, 0xd8, 0xff, 0x9c, 0xff, 0x66, 0xff, 0x3e, 0xff, 0x44, 0xff,
-0x5a, 0xff, 0x72, 0xff, 0xb2, 0xff, 0xea, 0xff, 0x1a, 0x00, 0x4a, 0x00, 0x7c, 0x00, 0x96, 0x00,
-0x9e, 0x00, 0x96, 0x00, 0x6a, 0x00, 0x32, 0x00, 0x00, 0x00, 0xca, 0xff, 0x9a, 0xff, 0x70, 0xff,
-0x54, 0xff, 0x56, 0xff, 0x62, 0xff, 0x88, 0xff, 0xbc, 0xff, 0xf0, 0xff, 0x1c, 0x00, 0x46, 0x00,
-0x64, 0x00, 0x80, 0x00, 0x88, 0x00, 0x72, 0x00, 0x4e, 0x00, 0x1c, 0x00, 0xea, 0xff, 0xb0, 0xff,
-0x96, 0xff, 0x80, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x82, 0xff, 0xa6, 0xff, 0xd0, 0xff, 0xf6, 0xff,
-0x26, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x68, 0x00, 0x64, 0x00, 0x4e, 0x00, 0x30, 0x00, 0x08, 0x00,
-0xe4, 0xff, 0xb8, 0xff, 0xa0, 0xff, 0x92, 0xff, 0x86, 0xff, 0x8a, 0xff, 0xa2, 0xff, 0xc6, 0xff,
-0xe4, 0xff, 0xfe, 0xff, 0x16, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x46, 0x00, 0x36, 0x00,
-0x14, 0x00, 0xf2, 0xff, 0xe0, 0xff, 0xca, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xae, 0xff,
-0xbe, 0xff, 0xd2, 0xff, 0xda, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x0e, 0x00, 0x16, 0x00,
-0x20, 0x00, 0x14, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xda, 0xff,
-0xec, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xf2, 0xff,
-0xea, 0xff, 0xee, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00,
-0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xee, 0xff, 0xd4, 0xff, 0xcc, 0xff,
-0xb4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xd2, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x06, 0x00,
-0x18, 0x00, 0x26, 0x00, 0x30, 0x00, 0x26, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0xf8, 0xff, 0xe2, 0xff,
-0xc8, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xea, 0xff,
-0x02, 0x00, 0x24, 0x00, 0x44, 0x00, 0x50, 0x00, 0x60, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x26, 0x00,
-0x06, 0x00, 0xe2, 0xff, 0xb4, 0xff, 0x94, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x7e, 0xff, 0xa0, 0xff,
-0xbc, 0xff, 0xe8, 0xff, 0x08, 0x00, 0x40, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x64, 0x00,
-0x48, 0x00, 0x30, 0x00, 0xfa, 0xff, 0xca, 0xff, 0x94, 0xff, 0x6e, 0xff, 0x64, 0xff, 0x5c, 0xff,
-0x74, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xf2, 0xff, 0x20, 0x00, 0x64, 0x00, 0x8a, 0x00, 0x9e, 0x00,
-0x9a, 0x00, 0x7e, 0x00, 0x50, 0x00, 0x1e, 0x00, 0xf6, 0xff, 0xac, 0xff, 0x72, 0xff, 0x5c, 0xff,
-0x44, 0xff, 0x42, 0xff, 0x60, 0xff, 0x92, 0xff, 0xd2, 0xff, 0x02, 0x00, 0x38, 0x00, 0x80, 0x00,
-0x9c, 0x00, 0xb6, 0x00, 0xa4, 0x00, 0x80, 0x00, 0x52, 0x00, 0x0a, 0x00, 0xd6, 0xff, 0xa0, 0xff,
-0x62, 0xff, 0x48, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x5a, 0xff, 0x82, 0xff, 0xda, 0xff, 0x04, 0x00,
-0x3e, 0x00, 0x82, 0x00, 0x9a, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0x74, 0x00, 0x42, 0x00, 0x10, 0x00,
-0xe0, 0xff, 0x92, 0xff, 0x62, 0xff, 0x40, 0xff, 0x30, 0xff, 0x38, 0xff, 0x5e, 0xff, 0xa2, 0xff,
-0xe0, 0xff, 0x0c, 0x00, 0x4a, 0x00, 0x82, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x98, 0x00, 0x7c, 0x00,
-0x32, 0x00, 0x02, 0x00, 0xd0, 0xff, 0x94, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x4c, 0xff,
-0x74, 0xff, 0xb0, 0xff, 0xf2, 0xff, 0x1e, 0x00, 0x5a, 0x00, 0x7e, 0x00, 0x9e, 0x00, 0x9c, 0x00,
-0x86, 0x00, 0x62, 0x00, 0x1c, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x8a, 0xff, 0x58, 0xff, 0x44, 0xff,
-0x4c, 0xff, 0x56, 0xff, 0x90, 0xff, 0xca, 0xff, 0x02, 0x00, 0x34, 0x00, 0x60, 0x00, 0x84, 0x00,
-0x90, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x4a, 0x00, 0x10, 0x00, 0xdc, 0xff, 0xba, 0xff, 0x8e, 0xff,
-0x6e, 0xff, 0x64, 0xff, 0x6c, 0xff, 0x8a, 0xff, 0xa8, 0xff, 0xe8, 0xff, 0x14, 0x00, 0x2c, 0x00,
-0x52, 0x00, 0x58, 0x00, 0x70, 0x00, 0x66, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xfe, 0xff, 0xe6, 0xff,
-0xb0, 0xff, 0x9e, 0xff, 0x84, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xec, 0xff,
-0x0c, 0x00, 0x20, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x44, 0x00, 0x32, 0x00, 0x1a, 0x00,
-0xf0, 0xff, 0xe6, 0xff, 0xce, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xba, 0xff,
-0xd8, 0xff, 0xec, 0xff, 0x02, 0x00, 0x10, 0x00, 0x24, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x20, 0x00,
-0x16, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xc8, 0xff, 0xd0, 0xff,
-0xd8, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xf2, 0xff, 0xfc, 0xff,
-0xfe, 0xff, 0xfc, 0xff, 0x08, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xf2, 0xff,
-0xec, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd0, 0xff,
-0xd2, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00,
-0x1e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0a, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0xe4, 0xff, 0xd0, 0xff,
-0xbe, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x08, 0x00,
-0x1a, 0x00, 0x28, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xf2, 0xff,
-0xe2, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xd4, 0xff,
-0xf4, 0xff, 0x10, 0x00, 0x36, 0x00, 0x4c, 0x00, 0x56, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x3e, 0x00,
-0x1c, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0xa2, 0xff, 0x8c, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x8e, 0xff,
-0xa0, 0xff, 0xd0, 0xff, 0xfe, 0xff, 0x2a, 0x00, 0x58, 0x00, 0x6a, 0x00, 0x8c, 0x00, 0x7e, 0x00,
-0x70, 0x00, 0x52, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xb2, 0xff, 0x7e, 0xff, 0x64, 0xff, 0x54, 0xff,
-0x54, 0xff, 0x70, 0xff, 0x92, 0xff, 0xc8, 0xff, 0x06, 0x00, 0x3e, 0x00, 0x72, 0x00, 0x8e, 0x00,
-0xa8, 0x00, 0xa0, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x10, 0x00, 0xd6, 0xff, 0x96, 0xff, 0x5e, 0xff,
-0x42, 0xff, 0x34, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xa6, 0xff, 0xdc, 0xff, 0x10, 0x00, 0x60, 0x00,
-0x90, 0x00, 0xa8, 0x00, 0xc4, 0x00, 0xa6, 0x00, 0x78, 0x00, 0x30, 0x00, 0xf2, 0xff, 0xc4, 0xff,
-0x78, 0xff, 0x44, 0xff, 0x24, 0xff, 0x28, 0xff, 0x48, 0xff, 0x70, 0xff, 0xba, 0xff, 0xf8, 0xff,
-0x1e, 0x00, 0x60, 0x00, 0x9c, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0x9c, 0x00, 0x5e, 0x00, 0x1c, 0x00,
-0xe0, 0xff, 0xac, 0xff, 0x60, 0xff, 0x38, 0xff, 0x22, 0xff, 0x22, 0xff, 0x48, 0xff, 0x6e, 0xff,
-0xb6, 0xff, 0xf6, 0xff, 0x2e, 0x00, 0x70, 0x00, 0x9a, 0x00, 0xae, 0x00, 0xac, 0x00, 0x88, 0x00,
-0x58, 0x00, 0x1c, 0x00, 0xd8, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x3a, 0xff,
-0x52, 0xff, 0x84, 0xff, 0xc4, 0xff, 0x0a, 0x00, 0x3a, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa6, 0x00,
-0xa4, 0x00, 0x76, 0x00, 0x48, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x8c, 0xff, 0x60, 0xff, 0x44, 0xff,
-0x34, 0xff, 0x4c, 0xff, 0x62, 0xff, 0x94, 0xff, 0xd8, 0xff, 0x0c, 0x00, 0x42, 0x00, 0x7c, 0x00,
-0x8c, 0x00, 0x94, 0x00, 0x82, 0x00, 0x5c, 0x00, 0x32, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x9a, 0xff,
-0x84, 0xff, 0x64, 0xff, 0x62, 0xff, 0x6a, 0xff, 0x8c, 0xff, 0xbe, 0xff, 0xec, 0xff, 0x12, 0x00,
-0x42, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x4a, 0x00, 0x24, 0x00, 0xfa, 0xff,
-0xd8, 0xff, 0xba, 0xff, 0xae, 0xff, 0xa2, 0xff, 0x94, 0xff, 0xa4, 0xff, 0xb0, 0xff, 0xd6, 0xff,
-0xf2, 0xff, 0x0c, 0x00, 0x28, 0x00, 0x34, 0x00, 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x1e, 0x00,
-0x0e, 0x00, 0xee, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xb6, 0xff, 0xbc, 0xff,
-0xc4, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0x0c, 0x00, 0x04, 0x00, 0x10, 0x00, 0x1a, 0x00,
-0x16, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff,
-0xda, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe8, 0xff,
-0xe2, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x14, 0x00,
-0x06, 0x00, 0xfc, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xca, 0xff, 0xb8, 0xff, 0xae, 0xff,
-0xb4, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xe0, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x1e, 0x00,
-0x30, 0x00, 0x30, 0x00, 0x24, 0x00, 0x28, 0x00, 0x0e, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc0, 0xff,
-0xae, 0xff, 0x96, 0xff, 0x98, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe4, 0xff, 0x00, 0x00,
-0x1e, 0x00, 0x42, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x26, 0x00, 0xf6, 0xff,
-0xe4, 0xff, 0xae, 0xff, 0x8e, 0xff, 0x74, 0xff, 0x70, 0xff, 0x76, 0xff, 0x88, 0xff, 0xaa, 0xff,
-0xd2, 0xff, 0x04, 0x00, 0x34, 0x00, 0x62, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6a, 0x00, 0x58, 0x00,
-0x38, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0x9c, 0xff, 0x6a, 0xff, 0x5a, 0xff, 0x50, 0xff, 0x5c, 0xff,
-0x7c, 0xff, 0xb2, 0xff, 0xe0, 0xff, 0x1a, 0x00, 0x5e, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x9c, 0x00,
-0x90, 0x00, 0x6a, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xca, 0xff, 0x8e, 0xff, 0x5c, 0xff, 0x46, 0xff,
-0x3c, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xba, 0xff, 0xfa, 0xff, 0x32, 0x00, 0x64, 0x00, 0x9e, 0x00,
-0xaa, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x5a, 0x00, 0x1c, 0x00, 0xe6, 0xff, 0xb8, 0xff, 0x76, 0xff,
-0x48, 0xff, 0x22, 0xff, 0x38, 0xff, 0x58, 0xff, 0x8a, 0xff, 0xcc, 0xff, 0xfa, 0xff, 0x40, 0x00,
-0x7e, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xa8, 0x00, 0x8c, 0x00, 0x52, 0x00, 0x0c, 0x00, 0xd8, 0xff,
-0xa6, 0xff, 0x6c, 0xff, 0x34, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x60, 0xff, 0x9a, 0xff, 0xe2, 0xff,
-0x0e, 0x00, 0x4c, 0x00, 0x80, 0x00, 0x9c, 0x00, 0xae, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x42, 0x00,
-0x00, 0x00, 0xc0, 0xff, 0x92, 0xff, 0x5c, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x3e, 0xff, 0x62, 0xff,
-0xa2, 0xff, 0xe0, 0xff, 0x12, 0x00, 0x44, 0x00, 0x78, 0x00, 0x8c, 0x00, 0x96, 0x00, 0x82, 0x00,
-0x64, 0x00, 0x2e, 0x00, 0xea, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x5a, 0xff, 0x38, 0xff, 0x3a, 0xff,
-0x56, 0xff, 0x7e, 0xff, 0xb6, 0xff, 0xf4, 0xff, 0x28, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x86, 0x00,
-0x84, 0x00, 0x70, 0x00, 0x4a, 0x00, 0x14, 0x00, 0xee, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x62, 0xff,
-0x56, 0xff, 0x5a, 0xff, 0x7e, 0xff, 0x9a, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x50, 0x00,
-0x5e, 0x00, 0x70, 0x00, 0x66, 0x00, 0x52, 0x00, 0x32, 0x00, 0x04, 0x00, 0xe2, 0xff, 0xaa, 0xff,
-0x8c, 0xff, 0x7e, 0xff, 0x76, 0xff, 0x80, 0xff, 0x90, 0xff, 0xb8, 0xff, 0xe2, 0xff, 0x00, 0x00,
-0x14, 0x00, 0x38, 0x00, 0x50, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x42, 0x00, 0x22, 0x00, 0x06, 0x00,
-0xea, 0xff, 0xce, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc0, 0xff, 0xda, 0xff,
-0xf0, 0xff, 0x00, 0x00, 0x10, 0x00, 0x26, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x22, 0x00,
-0x12, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xd6, 0xff,
-0xd6, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00,
-0x10, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xf8, 0xff,
-0xfa, 0xff, 0xfa, 0xff, 0xec, 0xff, 0xee, 0xff, 0xea, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff,
-0xde, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1e, 0x00,
-0x26, 0x00, 0x1a, 0x00, 0x14, 0x00, 0x08, 0x00, 0xf8, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xb4, 0xff,
-0xaa, 0xff, 0xb0, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xf8, 0xff, 0x18, 0x00,
-0x30, 0x00, 0x40, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x24, 0x00, 0x0a, 0x00, 0xf0, 0xff, 0xd6, 0xff,
-0xb2, 0xff, 0x94, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xc4, 0xff, 0xf0, 0xff,
-0x06, 0x00, 0x34, 0x00, 0x54, 0x00, 0x54, 0x00, 0x66, 0x00, 0x52, 0x00, 0x3a, 0x00, 0x1a, 0x00,
-0xe6, 0xff, 0xc8, 0xff, 0xa6, 0xff, 0x82, 0xff, 0x68, 0xff, 0x68, 0xff, 0x7c, 0xff, 0x9c, 0xff,
-0xc0, 0xff, 0xf0, 0xff, 0x20, 0x00, 0x4a, 0x00, 0x66, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x6e, 0x00,
-0x46, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xa8, 0xff, 0x7e, 0xff, 0x5a, 0xff, 0x42, 0xff, 0x3c, 0xff,
-0x62, 0xff, 0x90, 0xff, 0xc8, 0xff, 0x00, 0x00, 0x32, 0x00, 0x66, 0x00, 0x8c, 0x00, 0xa2, 0x00,
-0xa2, 0x00, 0x8c, 0x00, 0x44, 0x00, 0x12, 0x00, 0xd6, 0xff, 0xa8, 0xff, 0x70, 0xff, 0x48, 0xff,
-0x40, 0xff, 0x3a, 0xff, 0x6a, 0xff, 0x98, 0xff, 0xda, 0xff, 0x0c, 0x00, 0x46, 0x00, 0x82, 0x00,
-0xac, 0x00, 0xba, 0x00, 0xb0, 0x00, 0x8e, 0x00, 0x40, 0x00, 0x08, 0x00, 0xd2, 0xff, 0x8e, 0xff,
-0x64, 0xff, 0x34, 0xff, 0x22, 0xff, 0x36, 0xff, 0x5c, 0xff, 0xa4, 0xff, 0xdc, 0xff, 0x1c, 0x00,
-0x5a, 0x00, 0x8c, 0x00, 0xb8, 0x00, 0xc8, 0x00, 0xb0, 0x00, 0x78, 0x00, 0x44, 0x00, 0xf6, 0xff,
-0xcc, 0xff, 0x82, 0xff, 0x46, 0xff, 0x32, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x6c, 0xff, 0xb6, 0xff,
-0xec, 0xff, 0x2a, 0x00, 0x6c, 0x00, 0x9c, 0x00, 0xbe, 0x00, 0xb8, 0x00, 0xa0, 0x00, 0x74, 0x00,
-0x2a, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0x7c, 0xff, 0x4a, 0xff, 0x2e, 0xff, 0x42, 0xff, 0x50, 0xff,
-0x78, 0xff, 0xbe, 0xff, 0xf8, 0xff, 0x2a, 0x00, 0x68, 0x00, 0x96, 0x00, 0x9e, 0x00, 0xa0, 0x00,
-0x78, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd8, 0xff, 0xa4, 0xff, 0x6c, 0xff, 0x48, 0xff, 0x3c, 0xff,
-0x4a, 0xff, 0x6c, 0xff, 0x92, 0xff, 0xbe, 0xff, 0x0a, 0x00, 0x44, 0x00, 0x6a, 0x00, 0x80, 0x00,
-0x88, 0x00, 0x80, 0x00, 0x60, 0x00, 0x36, 0x00, 0x02, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x84, 0xff,
-0x6c, 0xff, 0x60, 0xff, 0x76, 0xff, 0x8e, 0xff, 0xb8, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x42, 0x00,
-0x5a, 0x00, 0x68, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x3c, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xc6, 0xff,
-0xac, 0xff, 0x98, 0xff, 0x94, 0xff, 0x94, 0xff, 0x9e, 0xff, 0xac, 0xff, 0xd0, 0xff, 0xee, 0xff,
-0x02, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x1a, 0x00, 0x04, 0x00,
-0xf2, 0xff, 0xd8, 0xff, 0xc6, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xca, 0xff,
-0xe2, 0xff, 0xfa, 0xff, 0x0a, 0x00, 0x10, 0x00, 0x14, 0x00, 0x12, 0x00, 0x18, 0x00, 0x10, 0x00,
-0x12, 0x00, 0x06, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe6, 0xff,
-0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xe8, 0xff,
-0xea, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x04, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00,
-0x06, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xba, 0xff,
-0xbc, 0xff, 0xbe, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x24, 0x00, 0x36, 0x00,
-0x40, 0x00, 0x34, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xda, 0xff, 0xae, 0xff,
-0x9e, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xac, 0xff, 0xb4, 0xff, 0xdc, 0xff, 0xfc, 0xff, 0x12, 0x00,
-0x3a, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x3e, 0x00, 0x28, 0x00, 0x08, 0x00, 0xec, 0xff,
-0xba, 0xff, 0x92, 0xff, 0x82, 0xff, 0x72, 0xff, 0x6a, 0xff, 0x84, 0xff, 0xa0, 0xff, 0xcc, 0xff,
-0xfc, 0xff, 0x1c, 0x00, 0x48, 0x00, 0x5e, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x54, 0x00, 0x36, 0x00,
-0x0a, 0x00, 0xec, 0xff, 0xb2, 0xff, 0x82, 0xff, 0x66, 0xff, 0x5a, 0xff, 0x56, 0xff, 0x7e, 0xff,
-0xa2, 0xff, 0xd4, 0xff, 0x18, 0x00, 0x3c, 0x00, 0x6a, 0x00, 0x7e, 0x00, 0x8e, 0x00, 0x8a, 0x00,
-0x74, 0x00, 0x42, 0x00, 0x0c, 0x00, 0xd4, 0xff, 0x96, 0xff, 0x5e, 0xff, 0x42, 0xff, 0x3e, 0xff,
-0x4c, 0xff, 0x7a, 0xff, 0xac, 0xff, 0xe4, 0xff, 0x16, 0x00, 0x50, 0x00, 0x84, 0x00, 0x9a, 0x00,
-0xa6, 0x00, 0x9e, 0x00, 0x62, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x88, 0xff, 0x4a, 0xff,
-0x2c, 0xff, 0x38, 0xff, 0x54, 0xff, 0x82, 0xff, 0xc2, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x7c, 0x00,
-0xa2, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x20, 0x00, 0xf0, 0xff, 0xb4, 0xff,
-0x74, 0xff, 0x44, 0xff, 0x30, 0xff, 0x44, 0xff, 0x56, 0xff, 0x92, 0xff, 0xda, 0xff, 0x0a, 0x00,
-0x40, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0x8e, 0x00, 0x48, 0x00, 0x0c, 0x00,
-0xd8, 0xff, 0x98, 0xff, 0x62, 0xff, 0x3a, 0xff, 0x2c, 0xff, 0x42, 0xff, 0x62, 0xff, 0xa0, 0xff,
-0xea, 0xff, 0x16, 0x00, 0x4c, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7a, 0x00,
-0x3e, 0x00, 0x02, 0x00, 0xc6, 0xff, 0x8c, 0xff, 0x66, 0xff, 0x52, 0xff, 0x44, 0xff, 0x5c, 0xff,
-0x7c, 0xff, 0xb8, 0xff, 0xec, 0xff, 0x34, 0x00, 0x54, 0x00, 0x70, 0x00, 0x90, 0x00, 0x96, 0x00,
-0x82, 0x00, 0x56, 0x00, 0x28, 0x00, 0xea, 0xff, 0xbe, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x68, 0xff,
-0x54, 0xff, 0x7a, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xf0, 0xff, 0x14, 0x00, 0x36, 0x00, 0x5c, 0x00,
-0x6a, 0x00, 0x6a, 0x00, 0x56, 0x00, 0x3a, 0x00, 0x04, 0x00, 0xe6, 0xff, 0xc2, 0xff, 0x9e, 0xff,
-0x94, 0xff, 0x88, 0xff, 0x80, 0xff, 0x8a, 0xff, 0xac, 0xff, 0xce, 0xff, 0xf8, 0xff, 0x16, 0x00,
-0x2c, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x46, 0x00, 0x40, 0x00, 0x26, 0x00, 0x04, 0x00, 0xf2, 0xff,
-0xd4, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xb0, 0xff, 0xa0, 0xff, 0xb2, 0xff, 0xce, 0xff, 0xd6, 0xff,
-0xf8, 0xff, 0x0c, 0x00, 0x14, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x08, 0x00,
-0x00, 0x00, 0xe8, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xc8, 0xff, 0xc8, 0xff,
-0xd0, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0x02, 0x00, 0x06, 0x00,
-0x16, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0xf4, 0xff,
-0xf8, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe8, 0xff,
-0xe2, 0xff, 0xe2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x00, 0x00, 0x10, 0x00, 0x22, 0x00, 0x26, 0x00,
-0x14, 0x00, 0x18, 0x00, 0x0a, 0x00, 0xf4, 0xff, 0xf0, 0xff, 0xd0, 0xff, 0xc4, 0xff, 0xb8, 0xff,
-0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x14, 0x00, 0x34, 0x00,
-0x40, 0x00, 0x52, 0x00, 0x42, 0x00, 0x34, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xda, 0xff, 0xbc, 0xff,
-0xa0, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8c, 0xff, 0xa2, 0xff, 0xb4, 0xff, 0xea, 0xff, 0x0e, 0x00,
-0x3a, 0x00, 0x5c, 0x00, 0x68, 0x00, 0x78, 0x00, 0x60, 0x00, 0x40, 0x00, 0x1e, 0x00, 0xf8, 0xff,
-0xd8, 0xff, 0x96, 0xff, 0x76, 0xff, 0x56, 0xff, 0x56, 0xff, 0x68, 0xff, 0x86, 0xff, 0xb0, 0xff,
-0xf0, 0xff, 0x18, 0x00, 0x4a, 0x00, 0x76, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x76, 0x00, 0x4c, 0x00,
-0x1c, 0x00, 0xf0, 0xff, 0xaa, 0xff, 0x80, 0xff, 0x58, 0xff, 0x3a, 0xff, 0x42, 0xff, 0x5a, 0xff,
-0x84, 0xff, 0xbc, 0xff, 0xee, 0xff, 0x26, 0x00, 0x6a, 0x00, 0x98, 0x00, 0xa8, 0x00, 0x9c, 0x00,
-0x7a, 0x00, 0x4c, 0x00, 0x18, 0x00, 0xe6, 0xff, 0xaa, 0xff, 0x70, 0xff, 0x42, 0xff, 0x24, 0xff,
-0x30, 0xff, 0x52, 0xff, 0x7e, 0xff, 0xd0, 0xff, 0xfc, 0xff, 0x36, 0x00, 0x80, 0x00, 0x9c, 0x00,
-0xb6, 0x00, 0xa8, 0x00, 0x80, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xd6, 0xff, 0x9c, 0xff, 0x58, 0xff,
-0x32, 0xff, 0x22, 0xff, 0x2a, 0xff, 0x4e, 0xff, 0x90, 0xff, 0xd8, 0xff, 0x18, 0x00, 0x54, 0x00,
-0x82, 0x00, 0xb4, 0x00, 0xb8, 0x00, 0xa2, 0x00, 0x8a, 0x00, 0x44, 0x00, 0x00, 0x00, 0xda, 0xff,
-0x92, 0xff, 0x58, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x6c, 0xff, 0xae, 0xff, 0xe8, 0xff,
-0x1a, 0x00, 0x64, 0x00, 0x8e, 0x00, 0xaa, 0x00, 0xae, 0x00, 0x98, 0x00, 0x6a, 0x00, 0x3a, 0x00,
-0x02, 0x00, 0xc2, 0xff, 0x86, 0xff, 0x4c, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x4e, 0xff, 0x88, 0xff,
-0xbc, 0xff, 0xf0, 0xff, 0x26, 0x00, 0x60, 0x00, 0x88, 0x00, 0x94, 0x00, 0x9a, 0x00, 0x82, 0x00,
-0x56, 0x00, 0x1c, 0x00, 0xee, 0xff, 0xba, 0xff, 0x88, 0xff, 0x64, 0xff, 0x52, 0xff, 0x52, 0xff,
-0x76, 0xff, 0x98, 0xff, 0xda, 0xff, 0x02, 0x00, 0x2a, 0x00, 0x62, 0x00, 0x70, 0x00, 0x80, 0x00,
-0x78, 0x00, 0x64, 0x00, 0x46, 0x00, 0x0e, 0x00, 0xec, 0xff, 0xb8, 0xff, 0x8e, 0xff, 0x72, 0xff,
-0x72, 0xff, 0x7c, 0xff, 0x86, 0xff, 0xae, 0xff, 0xe4, 0xff, 0x0c, 0x00, 0x24, 0x00, 0x4a, 0x00,
-0x58, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x46, 0x00, 0x28, 0x00, 0x04, 0x00, 0xd8, 0xff, 0xb2, 0xff,
-0xa0, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xc4, 0xff, 0xe2, 0xff, 0x08, 0x00,
-0x16, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x28, 0x00, 0x12, 0x00, 0xf8, 0xff,
-0xe2, 0xff, 0xc6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xc2, 0xff, 0xce, 0xff, 0xde, 0xff,
-0xec, 0xff, 0xf6, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x10, 0x00,
-0x00, 0x00, 0xf6, 0xff, 0xf0, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf4, 0xff,
-0xec, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe2, 0xff,
-0xf2, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x18, 0x00, 0x12, 0x00, 0x12, 0x00,
-0x18, 0x00, 0x08, 0x00, 0x02, 0x00, 0xf2, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xbe, 0xff, 0xcc, 0xff,
-0xce, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xee, 0xff, 0x06, 0x00, 0x10, 0x00, 0x32, 0x00, 0x3a, 0x00,
-0x3e, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x1e, 0x00, 0x06, 0x00, 0xec, 0xff, 0xc6, 0xff, 0xaa, 0xff,
-0xa0, 0xff, 0xa4, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x30, 0x00,
-0x50, 0x00, 0x58, 0x00, 0x58, 0x00, 0x50, 0x00, 0x40, 0x00, 0x16, 0x00, 0xfa, 0xff, 0xce, 0xff,
-0x98, 0xff, 0x7a, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0xa8, 0xff, 0xcc, 0xff, 0xfc, 0xff,
-0x24, 0x00, 0x54, 0x00, 0x76, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x64, 0x00, 0x42, 0x00, 0x18, 0x00,
-0xda, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x66, 0xff, 0x4c, 0xff, 0x58, 0xff, 0x7c, 0xff, 0xa0, 0xff,
-0xd4, 0xff, 0xfc, 0xff, 0x42, 0x00, 0x70, 0x00, 0x88, 0x00, 0xa2, 0x00, 0x92, 0x00, 0x70, 0x00,
-0x38, 0x00, 0xfe, 0xff, 0xc0, 0xff, 0x86, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x30, 0xff, 0x3c, 0xff,
-0x5a, 0xff, 0x9c, 0xff, 0xda, 0xff, 0x10, 0x00, 0x52, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xaa, 0x00,
-0xa0, 0x00, 0x74, 0x00, 0x2a, 0x00, 0xee, 0xff, 0xbe, 0xff, 0x7e, 0xff, 0x4a, 0xff, 0x2a, 0xff,
-0x22, 0xff, 0x3c, 0xff, 0x68, 0xff, 0xb2, 0xff, 0xec, 0xff, 0x16, 0x00, 0x60, 0x00, 0x92, 0x00,
-0xb8, 0x00, 0xb0, 0x00, 0x90, 0x00, 0x6e, 0x00, 0x24, 0x00, 0xee, 0xff, 0xa8, 0xff, 0x76, 0xff,
-0x48, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x74, 0xff, 0xb2, 0xff, 0xf6, 0xff, 0x2a, 0x00,
-0x66, 0x00, 0x8e, 0x00, 0xae, 0x00, 0xb4, 0x00, 0x8e, 0x00, 0x5a, 0x00, 0x18, 0x00, 0xdc, 0xff,
-0xae, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3a, 0xff, 0x5c, 0xff, 0x8a, 0xff, 0xc8, 0xff,
-0x04, 0x00, 0x40, 0x00, 0x7a, 0x00, 0x92, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x7c, 0x00, 0x4a, 0x00,
-0x0e, 0x00, 0xda, 0xff, 0xa8, 0xff, 0x76, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x56, 0xff, 0x6e, 0xff,
-0xa0, 0xff, 0xe6, 0xff, 0x20, 0x00, 0x42, 0x00, 0x74, 0x00, 0x92, 0x00, 0x92, 0x00, 0x84, 0x00,
-0x5c, 0x00, 0x34, 0x00, 0xfa, 0xff, 0xce, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x66, 0xff, 0x64, 0xff,
-0x72, 0xff, 0x8c, 0xff, 0xbe, 0xff, 0xf4, 0xff, 0x22, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x6e, 0x00,
-0x68, 0x00, 0x5c, 0x00, 0x46, 0x00, 0x1a, 0x00, 0xfa, 0xff, 0xc6, 0xff, 0xa8, 0xff, 0x9a, 0xff,
-0x88, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0xac, 0xff, 0xce, 0xff, 0xfa, 0xff, 0x14, 0x00, 0x3a, 0x00,
-0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x04, 0x00, 0xec, 0xff, 0xd0, 0xff,
-0xb6, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xbc, 0xff, 0xda, 0xff, 0xe8, 0xff,
-0xfe, 0xff, 0x18, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x12, 0x00, 0xfe, 0xff,
-0xea, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xce, 0xff,
-0xce, 0xff, 0xe8, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00,
-0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xea, 0xff,
-0xea, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xd0, 0xff,
-0xd4, 0xff, 0xf8, 0xff, 0x02, 0x00, 0x0a, 0x00, 0x1a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x18, 0x00,
-0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xee, 0xff, 0xd0, 0xff, 0xb8, 0xff, 0xa8, 0xff, 0x9e, 0xff,
-0xb4, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xe0, 0xff, 0xfa, 0xff, 0x1e, 0x00, 0x3c, 0x00, 0x50, 0x00,
-0x4a, 0x00, 0x46, 0x00, 0x3e, 0x00, 0x28, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xbc, 0xff, 0xa4, 0xff,
-0x84, 0xff, 0x84, 0xff, 0x8c, 0xff, 0xaa, 0xff, 0xc4, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x40, 0x00,
-0x64, 0x00, 0x64, 0x00, 0x74, 0x00, 0x66, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x06, 0x00, 0xde, 0xff,
-0xaa, 0xff, 0x7a, 0xff, 0x66, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x86, 0xff, 0xb6, 0xff, 0xe6, 0xff,
-0x0e, 0x00, 0x52, 0x00, 0x72, 0x00, 0x94, 0x00, 0xa0, 0x00, 0x8a, 0x00, 0x60, 0x00, 0x34, 0x00,
-0x02, 0x00, 0xc6, 0xff, 0x98, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x3c, 0xff, 0x5e, 0xff, 0x82, 0xff,
-0xba, 0xff, 0xfc, 0xff, 0x20, 0x00, 0x60, 0x00, 0x92, 0x00, 0xae, 0x00, 0xa6, 0x00, 0x92, 0x00,
-0x6a, 0x00, 0x2a, 0x00, 0xf4, 0xff, 0xba, 0xff, 0x7e, 0xff, 0x40, 0xff, 0x2e, 0xff, 0x2c, 0xff,
-0x4c, 0xff, 0x82, 0xff, 0xc0, 0xff, 0xf6, 0xff, 0x2c, 0x00, 0x72, 0x00, 0x9a, 0x00, 0xb6, 0x00,
-0xb0, 0x00, 0x8c, 0x00, 0x4c, 0x00, 0x08, 0x00, 0xd6, 0xff, 0x96, 0xff, 0x56, 0xff, 0x28, 0xff,
-0x1c, 0xff, 0x30, 0xff, 0x56, 0xff, 0x88, 0xff, 0xda, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x86, 0x00,
-0xa8, 0x00, 0xb0, 0x00, 0xa2, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x92, 0xff,
-0x4a, 0xff, 0x26, 0xff, 0x26, 0xff, 0x3c, 0xff, 0x64, 0xff, 0xa8, 0xff, 0xec, 0xff, 0x1a, 0x00,
-0x56, 0x00, 0x82, 0x00, 0xa6, 0x00, 0xb4, 0x00, 0x9c, 0x00, 0x72, 0x00, 0x20, 0x00, 0xe6, 0xff,
-0xae, 0xff, 0x7c, 0xff, 0x46, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x50, 0xff, 0x7c, 0xff, 0xac, 0xff,
-0xfa, 0xff, 0x28, 0x00, 0x56, 0x00, 0x84, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x84, 0x00, 0x5a, 0x00,
-0x1e, 0x00, 0xec, 0xff, 0xb6, 0xff, 0x86, 0xff, 0x5e, 0xff, 0x54, 0xff, 0x58, 0xff, 0x7a, 0xff,
-0x96, 0xff, 0xd0, 0xff, 0x02, 0x00, 0x32, 0x00, 0x66, 0x00, 0x74, 0x00, 0x96, 0x00, 0x84, 0x00,
-0x72, 0x00, 0x46, 0x00, 0x0e, 0x00, 0xe8, 0xff, 0xb8, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x86, 0xff,
-0x80, 0xff, 0x9a, 0xff, 0xb6, 0xff, 0xde, 0xff, 0x08, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x42, 0x00,
-0x52, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x20, 0x00, 0xfc, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xb4, 0xff,
-0xaa, 0xff, 0xac, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0x14, 0x00,
-0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x22, 0x00, 0x06, 0x00, 0xf4, 0xff, 0xec, 0xff,
-0xdc, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xfa, 0xff,
-0xfc, 0xff, 0xf6, 0xff, 0x0a, 0x00, 0x04, 0x00, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf6, 0xff,
-0xf4, 0xff, 0xea, 0xff, 0xdc, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xd8, 0xff, 0xd8, 0xff,
-0xe0, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe4, 0xff,
-0xe6, 0xff, 0xea, 0xff, 0xf8, 0xff, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00,
-0xfc, 0xff, 0xf2, 0xff, 0xe0, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xc8, 0xff,
-0xc2, 0xff, 0xda, 0xff, 0xf2, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x28, 0x00, 0x30, 0x00, 0x30, 0x00,
-0x2a, 0x00, 0x10, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xca, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x94, 0xff,
-0x98, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xbc, 0xff, 0xe4, 0xff, 0x06, 0x00, 0x34, 0x00, 0x4c, 0x00,
-0x56, 0x00, 0x56, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x10, 0x00, 0xea, 0xff, 0xc8, 0xff, 0x92, 0xff,
-0x7a, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xca, 0xff, 0x04, 0x00, 0x2c, 0x00,
-0x52, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x86, 0x00, 0x68, 0x00, 0x4c, 0x00, 0x1e, 0x00, 0xe6, 0xff,
-0xb4, 0xff, 0x90, 0xff, 0x78, 0xff, 0x5c, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x9c, 0xff, 0xca, 0xff,
-0x02, 0x00, 0x3a, 0x00, 0x70, 0x00, 0x94, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x78, 0x00, 0x48, 0x00,
-0x10, 0x00, 0xdc, 0xff, 0x9e, 0xff, 0x72, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x44, 0xff, 0x6a, 0xff,
-0x9e, 0xff, 0xde, 0xff, 0x14, 0x00, 0x4c, 0x00, 0x8c, 0x00, 0xa6, 0x00, 0xbc, 0x00, 0xac, 0x00,
-0x7c, 0x00, 0x4a, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xa6, 0xff, 0x6c, 0xff, 0x4c, 0xff, 0x36, 0xff,
-0x46, 0xff, 0x6c, 0xff, 0xac, 0xff, 0xf0, 0xff, 0x22, 0x00, 0x66, 0x00, 0x96, 0x00, 0xb6, 0x00,
-0xbc, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x36, 0x00, 0xfa, 0xff, 0xc8, 0xff, 0x84, 0xff, 0x4e, 0xff,
-0x2a, 0xff, 0x12, 0xff, 0x42, 0xff, 0x66, 0xff, 0xa2, 0xff, 0xf2, 0xff, 0x1e, 0x00, 0x60, 0x00,
-0x92, 0x00, 0xa4, 0x00, 0xb4, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x20, 0x00, 0xe6, 0xff, 0xb0, 0xff,
-0x74, 0xff, 0x4c, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x4c, 0xff, 0x7e, 0xff, 0xc4, 0xff, 0x04, 0x00,
-0x2e, 0x00, 0x64, 0x00, 0x94, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x82, 0x00, 0x5a, 0x00, 0x16, 0x00,
-0xe0, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x4a, 0xff, 0x3a, 0xff, 0x46, 0xff, 0x5e, 0xff, 0x90, 0xff,
-0xce, 0xff, 0x08, 0x00, 0x2a, 0x00, 0x60, 0x00, 0x74, 0x00, 0x8c, 0x00, 0x80, 0x00, 0x5c, 0x00,
-0x34, 0x00, 0x0a, 0x00, 0xde, 0xff, 0xa0, 0xff, 0x80, 0xff, 0x5e, 0xff, 0x56, 0xff, 0x52, 0xff,
-0x78, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0xfa, 0xff, 0x34, 0x00, 0x58, 0x00, 0x68, 0x00, 0x72, 0x00,
-0x5e, 0x00, 0x5a, 0x00, 0x26, 0x00, 0x02, 0x00, 0xde, 0xff, 0xb0, 0xff, 0xa6, 0xff, 0x8a, 0xff,
-0x84, 0xff, 0x8e, 0xff, 0x9e, 0xff, 0xc6, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x36, 0x00, 0x40, 0x00,
-0x42, 0x00, 0x4c, 0x00, 0x3c, 0x00, 0x34, 0x00, 0x20, 0x00, 0xfa, 0xff, 0xe2, 0xff, 0xba, 0xff,
-0xb4, 0xff, 0xa8, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xc2, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0x0a, 0x00,
-0x12, 0x00, 0x1e, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xf4, 0xff,
-0xe8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xee, 0xff,
-0xf2, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x08, 0x00, 0x10, 0x00, 0x12, 0x00,
-0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf8, 0xff, 0x06, 0x00, 0xfc, 0xff, 0xf8, 0xff,
-0xf4, 0xff, 0xea, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xd0, 0xff, 0xd6, 0xff,
-0xe8, 0xff, 0xee, 0xff, 0xfa, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x12, 0x00,
-0x0e, 0x00, 0xfa, 0xff, 0xf2, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xae, 0xff, 0xa0, 0xff, 0xae, 0xff,
-0xae, 0xff, 0xc4, 0xff, 0xd6, 0xff, 0xf0, 0xff, 0x04, 0x00, 0x2c, 0x00, 0x38, 0x00, 0x36, 0x00,
-0x46, 0x00, 0x3a, 0x00, 0x36, 0x00, 0x0a, 0x00, 0xf6, 0xff, 0xd2, 0xff, 0xac, 0xff, 0x9a, 0xff,
-0x8a, 0xff, 0x90, 0xff, 0x96, 0xff, 0xac, 0xff, 0xce, 0xff, 0xec, 0xff, 0x1a, 0x00, 0x36, 0x00,
-0x48, 0x00, 0x56, 0x00, 0x5a, 0x00, 0x4a, 0x00, 0x2e, 0x00, 0x10, 0x00, 0xec, 0xff, 0xbc, 0xff,
-0x92, 0xff, 0x72, 0xff, 0x5e, 0xff, 0x62, 0xff, 0x7a, 0xff, 0x90, 0xff, 0xcc, 0xff, 0xfa, 0xff,
-0x2e, 0x00, 0x64, 0x00, 0x7a, 0x00, 0x8e, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x40, 0x00, 0x0e, 0x00,
-0xda, 0xff, 0xa8, 0xff, 0x72, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x56, 0xff, 0x72, 0xff, 0xa8, 0xff,
-0xe0, 0xff, 0x18, 0x00, 0x4e, 0x00, 0x8a, 0x00, 0xa8, 0x00, 0xba, 0x00, 0xa8, 0x00, 0x80, 0x00,
-0x42, 0x00, 0x08, 0x00, 0xd4, 0xff, 0x88, 0xff, 0x52, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x48, 0xff,
-0x6c, 0xff, 0xb6, 0xff, 0xee, 0xff, 0x24, 0x00, 0x5c, 0x00, 0x90, 0x00, 0xaa, 0x00, 0xb2, 0x00,
-0xa0, 0x00, 0x6a, 0x00, 0x2c, 0x00, 0xf6, 0xff, 0xc4, 0xff, 0x78, 0xff, 0x40, 0xff, 0x2c, 0xff,
-0x34, 0xff, 0x58, 0xff, 0x78, 0xff, 0xc6, 0xff, 0x00, 0x00, 0x2e, 0x00, 0x72, 0x00, 0x9e, 0x00,
-0xbc, 0x00, 0xb8, 0x00, 0x8a, 0x00, 0x58, 0x00, 0x16, 0x00, 0xe6, 0xff, 0xa4, 0xff, 0x62, 0xff,
-0x4a, 0xff, 0x30, 0xff, 0x48, 0xff, 0x6a, 0xff, 0xa0, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x40, 0x00,
-0x7e, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xc4, 0xff,
-0x90, 0xff, 0x5c, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x50, 0xff, 0x7a, 0xff, 0xa0, 0xff, 0xe6, 0xff,
-0x24, 0x00, 0x4a, 0x00, 0x7a, 0x00, 0x94, 0x00, 0x94, 0x00, 0x7c, 0x00, 0x56, 0x00, 0x22, 0x00,
-0xf6, 0xff, 0xb8, 0xff, 0x90, 0xff, 0x72, 0xff, 0x5c, 0xff, 0x5e, 0xff, 0x70, 0xff, 0x8a, 0xff,
-0xc2, 0xff, 0xf6, 0xff, 0x22, 0x00, 0x54, 0x00, 0x74, 0x00, 0x86, 0x00, 0x78, 0x00, 0x5e, 0x00,
-0x3a, 0x00, 0x10, 0x00, 0xe0, 0xff, 0xb6, 0xff, 0x8e, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x7a, 0xff,
-0x94, 0xff, 0xa8, 0xff, 0xdc, 0xff, 0xfa, 0xff, 0x2c, 0x00, 0x3c, 0x00, 0x4a, 0x00, 0x60, 0x00,
-0x48, 0x00, 0x40, 0x00, 0x24, 0x00, 0x08, 0x00, 0xe6, 0xff, 0xbe, 0xff, 0xa6, 0xff, 0x9c, 0xff,
-0x98, 0xff, 0xa0, 0xff, 0xae, 0xff, 0xce, 0xff, 0xec, 0xff, 0x0c, 0x00, 0x1c, 0x00, 0x30, 0x00,
-0x32, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x0a, 0x00, 0xf8, 0xff, 0xf0, 0xff, 0xde, 0xff,
-0xcc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xe4, 0xff, 0xf2, 0xff, 0xfa, 0xff,
-0xf8, 0xff, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0a, 0x00, 0xfa, 0xff, 0x00, 0x00, 0xfc, 0xff,
-0xf4, 0xff, 0xf4, 0xff, 0xe6, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xea, 0xff,
-0xf0, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xf2, 0xff,
-0xf0, 0xff, 0x06, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x08, 0x00,
-0x00, 0x00, 0xf2, 0xff, 0xe6, 0xff, 0xcc, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xbc, 0xff,
-0xd0, 0xff, 0xda, 0xff, 0xf2, 0xff, 0x10, 0x00, 0x22, 0x00, 0x38, 0x00, 0x44, 0x00, 0x30, 0x00,
-0x26, 0x00, 0x16, 0x00, 0xf8, 0xff, 0xe6, 0xff, 0xc2, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x8c, 0xff,
-0x94, 0xff, 0xa2, 0xff, 0xb2, 0xff, 0xea, 0xff, 0xfc, 0xff, 0x2a, 0x00, 0x4a, 0x00, 0x50, 0x00,
-0x60, 0x00, 0x4e, 0x00, 0x40, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xea, 0xff, 0xb2, 0xff, 0x8c, 0xff,
-0x78, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x8a, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0x0c, 0x00, 0x44, 0x00,
-0x64, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x6c, 0x00, 0x50, 0x00, 0x2c, 0x00, 0xfc, 0xff, 0xd0, 0xff,
-0x9c, 0xff, 0x7a, 0xff, 0x54, 0xff, 0x50, 0xff, 0x64, 0xff, 0x8c, 0xff, 0xbc, 0xff, 0xe6, 0xff,
-0x22, 0x00, 0x4e, 0x00, 0x7c, 0x00, 0x98, 0x00, 0x90, 0x00, 0x7c, 0x00, 0x58, 0x00, 0x26, 0x00,
-0xf4, 0xff, 0xb6, 0xff, 0x82, 0xff, 0x4c, 0xff, 0x36, 0xff, 0x44, 0xff, 0x60, 0xff, 0x90, 0xff,
-0xd0, 0xff, 0x0a, 0x00, 0x38, 0x00, 0x76, 0x00, 0x9c, 0x00, 0xaa, 0x00, 0xa6, 0x00, 0x82, 0x00,
-0x4c, 0x00, 0x12, 0x00, 0xe8, 0xff, 0x9c, 0xff, 0x64, 0xff, 0x46, 0xff, 0x32, 0xff, 0x3e, 0xff,
-0x5e, 0xff, 0x9e, 0xff, 0xe8, 0xff, 0x0c, 0x00, 0x54, 0x00, 0x92, 0x00, 0xa4, 0x00, 0xc0, 0x00,
-0xa0, 0x00, 0x76, 0x00, 0x38, 0x00, 0xfe, 0xff, 0xcc, 0xff, 0x80, 0xff, 0x50, 0xff, 0x30, 0xff,
-0x26, 0xff, 0x40, 0xff, 0x74, 0xff, 0xb4, 0xff, 0xe8, 0xff, 0x16, 0x00, 0x58, 0x00, 0x90, 0x00,
-0xb2, 0x00, 0xb8, 0x00, 0x9e, 0x00, 0x68, 0x00, 0x2e, 0x00, 0xfc, 0xff, 0xba, 0xff, 0x7e, 0xff,
-0x4e, 0xff, 0x34, 0xff, 0x32, 0xff, 0x4c, 0xff, 0x80, 0xff, 0xb8, 0xff, 0x00, 0x00, 0x32, 0x00,
-0x6a, 0x00, 0x8e, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0x76, 0x00, 0x4e, 0x00, 0x16, 0x00, 0xd6, 0xff,
-0xa6, 0xff, 0x6e, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x48, 0xff, 0x66, 0xff, 0x94, 0xff, 0xce, 0xff,
-0x00, 0x00, 0x3c, 0x00, 0x58, 0x00, 0x74, 0x00, 0x86, 0x00, 0x72, 0x00, 0x5a, 0x00, 0x28, 0x00,
-0xf4, 0xff, 0xca, 0xff, 0x96, 0xff, 0x74, 0xff, 0x66, 0xff, 0x60, 0xff, 0x76, 0xff, 0x8c, 0xff,
-0xba, 0xff, 0xec, 0xff, 0x12, 0x00, 0x34, 0x00, 0x52, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x4c, 0x00,
-0x3a, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xd0, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x8c, 0xff, 0x92, 0xff,
-0x94, 0xff, 0xbc, 0xff, 0xd0, 0xff, 0xec, 0xff, 0x18, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x2e, 0x00,
-0x2e, 0x00, 0x28, 0x00, 0x1c, 0x00, 0xfa, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xb2, 0xff,
-0xb6, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xf4, 0xff, 0x02, 0x00, 0x0a, 0x00,
-0x1e, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x0a, 0x00, 0xfe, 0xff, 0xea, 0xff, 0xe6, 0xff,
-0xe4, 0xff, 0xd6, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf4, 0xff,
-0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xfe, 0xff,
-0x02, 0x00, 0xf2, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff,
-0xee, 0xff, 0xe6, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xdc, 0xff,
-0xe8, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x26, 0x00, 0x18, 0x00, 0x10, 0x00,
-0x08, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xb2, 0xff,
-0xba, 0xff, 0xde, 0xff, 0xf2, 0xff, 0x06, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x42, 0x00,
-0x44, 0x00, 0x2e, 0x00, 0x08, 0x00, 0xee, 0xff, 0xc6, 0xff, 0x9a, 0xff, 0x8e, 0xff, 0x7e, 0xff,
-0x78, 0xff, 0x92, 0xff, 0x9a, 0xff, 0xc2, 0xff, 0xf4, 0xff, 0x18, 0x00, 0x34, 0x00, 0x62, 0x00,
-0x62, 0x00, 0x62, 0x00, 0x54, 0x00, 0x26, 0x00, 0xfa, 0xff, 0xd0, 0xff, 0xac, 0xff, 0x7e, 0xff,
-0x62, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x9a, 0xff, 0xd6, 0xff, 0xfe, 0xff, 0x3c, 0x00,
-0x56, 0x00, 0x78, 0x00, 0x8a, 0x00, 0x82, 0x00, 0x6c, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0xd6, 0xff,
-0x92, 0xff, 0x68, 0xff, 0x46, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x9a, 0xff, 0xd2, 0xff,
-0x0c, 0x00, 0x48, 0x00, 0x82, 0x00, 0xa2, 0x00, 0xae, 0x00, 0x96, 0x00, 0x6e, 0x00, 0x30, 0x00,
-0x00, 0x00, 0xca, 0xff, 0x84, 0xff, 0x52, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x2e, 0xff, 0x5c, 0xff,
-0xa8, 0xff, 0xee, 0xff, 0x22, 0x00, 0x66, 0x00, 0x92, 0x00, 0xc0, 0x00, 0xc6, 0x00, 0xaa, 0x00,
-0x78, 0x00, 0x2a, 0x00, 0xf0, 0xff, 0xca, 0xff, 0x78, 0xff, 0x4a, 0xff, 0x26, 0xff, 0x1e, 0xff,
-0x48, 0xff, 0x74, 0xff, 0xc4, 0xff, 0x02, 0x00, 0x36, 0x00, 0x78, 0x00, 0xa2, 0x00, 0xbc, 0x00,
-0xc0, 0x00, 0x96, 0x00, 0x6a, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xae, 0xff, 0x6c, 0xff, 0x46, 0xff,
-0x2e, 0xff, 0x38, 0xff, 0x54, 0xff, 0x8e, 0xff, 0xca, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x78, 0x00,
-0x96, 0x00, 0xb4, 0x00, 0xa2, 0x00, 0x80, 0x00, 0x52, 0x00, 0x10, 0x00, 0xe4, 0xff, 0xa8, 0xff,
-0x6c, 0xff, 0x46, 0xff, 0x38, 0xff, 0x44, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xde, 0xff, 0x12, 0x00,
-0x3a, 0x00, 0x70, 0x00, 0x90, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x6a, 0x00, 0x30, 0x00, 0xc4, 0xff,
-0x7a, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x76, 0xff, 0x8c, 0xff, 0xb8, 0xff, 0xee, 0xff, 0x1a, 0x00,
-0x4e, 0x00, 0x56, 0x00, 0x72, 0x00, 0x6a, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x14, 0x00, 0xec, 0xff,
-0xc8, 0xff, 0x9c, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x76, 0xff, 0x82, 0xff, 0x9e, 0xff, 0xd6, 0xff,
-0xf6, 0xff, 0x0a, 0x00, 0x32, 0x00, 0x40, 0x00, 0x42, 0x00, 0x48, 0x00, 0x3e, 0x00, 0x2e, 0x00,
-0x0c, 0x00, 0xe6, 0xff, 0xcc, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xa4, 0xff,
-0xc2, 0xff, 0xe0, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x20, 0x00, 0x24, 0x00, 0x22, 0x00, 0x2c, 0x00,
-0x22, 0x00, 0x10, 0x00, 0xfe, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xbc, 0xff,
-0xbc, 0xff, 0xc0, 0xff, 0xd4, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0x08, 0x00,
-0x04, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfe, 0xff,
-0xfe, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xea, 0xff, 0xd6, 0xff, 0xe2, 0xff,
-0xde, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x10, 0x00, 0x16, 0x00,
-0x16, 0x00, 0x28, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x16, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xda, 0xff,
-0xc4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xfc, 0xff,
-0x12, 0x00, 0x24, 0x00, 0x32, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x34, 0x00, 0x22, 0x00, 0xfe, 0xff,
-0xf0, 0xff, 0xc6, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x92, 0xff, 0x9a, 0xff, 0xa6, 0xff, 0xbe, 0xff,
-0xe8, 0xff, 0xfe, 0xff, 0x28, 0x00, 0x48, 0x00, 0x5c, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x4a, 0x00,
-0x2a, 0x00, 0x04, 0x00, 0xe4, 0xff, 0xae, 0xff, 0x82, 0xff, 0x70, 0xff, 0x64, 0xff, 0x76, 0xff,
-0x8e, 0xff, 0xb6, 0xff, 0xe2, 0xff, 0x0a, 0x00, 0x40, 0x00, 0x5e, 0x00, 0x8a, 0x00, 0x86, 0x00,
-0x6e, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf8, 0xff, 0xae, 0xff, 0x86, 0xff, 0x5c, 0xff, 0x40, 0xff,
-0x30, 0xff, 0x58, 0xff, 0x82, 0xff, 0xae, 0xff, 0xe4, 0xff, 0x1e, 0x00, 0x5c, 0x00, 0x8c, 0x00,
-0xa6, 0x00, 0xa4, 0x00, 0x8e, 0x00, 0x56, 0x00, 0x24, 0x00, 0xe8, 0xff, 0xa8, 0xff, 0x6e, 0xff,
-0x42, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x44, 0xff, 0x7e, 0xff, 0xbc, 0xff, 0xec, 0xff, 0x2c, 0x00,
-0x72, 0x00, 0xa4, 0x00, 0xbe, 0x00, 0xb6, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x0e, 0x00, 0xde, 0xff,
-0x92, 0xff, 0x50, 0xff, 0x30, 0xff, 0x1a, 0xff, 0x20, 0xff, 0x4e, 0xff, 0x86, 0xff, 0xd0, 0xff,
-0xfe, 0xff, 0x46, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xc6, 0x00, 0xb2, 0x00, 0x8a, 0x00, 0x42, 0x00,
-0x02, 0x00, 0xc4, 0xff, 0x82, 0xff, 0x50, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x60, 0xff,
-0xaa, 0xff, 0xe2, 0xff, 0x22, 0x00, 0x58, 0x00, 0x94, 0x00, 0xb4, 0x00, 0xbc, 0x00, 0xac, 0x00,
-0x76, 0x00, 0x36, 0x00, 0xf2, 0xff, 0xc4, 0xff, 0x80, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3a, 0xff,
-0x56, 0xff, 0x84, 0xff, 0xb6, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x62, 0x00, 0x9a, 0x00, 0xa0, 0x00,
-0xac, 0x00, 0x84, 0x00, 0x56, 0x00, 0x26, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x7a, 0xff, 0x62, 0xff,
-0x4a, 0xff, 0x54, 0xff, 0x66, 0xff, 0x94, 0xff, 0xca, 0xff, 0x08, 0x00, 0x40, 0x00, 0x62, 0x00,
-0x82, 0x00, 0x90, 0x00, 0x80, 0x00, 0x6a, 0x00, 0x42, 0x00, 0x0a, 0x00, 0xd6, 0xff, 0xaa, 0xff,
-0x8e, 0xff, 0x74, 0xff, 0x6e, 0xff, 0x74, 0xff, 0x90, 0xff, 0xa4, 0xff, 0xea, 0xff, 0x1a, 0x00,
-0x40, 0x00, 0x66, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x46, 0x00, 0x2c, 0x00, 0xfa, 0xff,
-0xda, 0xff, 0xb2, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x9c, 0xff, 0xca, 0xff,
-0xea, 0xff, 0x04, 0x00, 0x30, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x26, 0x00,
-0x00, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0xc2, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb0, 0xff,
-0xbe, 0xff, 0xd2, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0x0e, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x12, 0x00,
-0x16, 0x00, 0x0e, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xf4, 0xff, 0xea, 0xff, 0xe0, 0xff, 0xe2, 0xff,
-0xd8, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xee, 0xff,
-0xee, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00,
-0xfe, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xca, 0xff,
-0xc4, 0xff, 0xcc, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xec, 0xff, 0xf6, 0xff, 0x0c, 0x00,
-0x2a, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0xf4, 0xff, 0xe6, 0xff,
-0xce, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0x9a, 0xff, 0xa4, 0xff, 0xac, 0xff, 0xd2, 0xff, 0xf6, 0xff,
-0x14, 0x00, 0x32, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x3a, 0x00, 0x12, 0x00,
-0xf2, 0xff, 0xd8, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x74, 0xff, 0x6c, 0xff, 0x7c, 0xff, 0x96, 0xff,
-0xc8, 0xff, 0xf2, 0xff, 0x22, 0x00, 0x56, 0x00, 0x6a, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x62, 0x00,
-0x42, 0x00, 0x0e, 0x00, 0xe8, 0xff, 0xbe, 0xff, 0x90, 0xff, 0x62, 0xff, 0x4e, 0xff, 0x54, 0xff,
-0x78, 0xff, 0x98, 0xff, 0xca, 0xff, 0x08, 0x00, 0x3e, 0x00, 0x6a, 0x00, 0x92, 0x00, 0xa4, 0x00,
-0x96, 0x00, 0x7c, 0x00, 0x48, 0x00, 0x1a, 0x00, 0xe4, 0xff, 0xac, 0xff, 0x6c, 0xff, 0x40, 0xff,
-0x46, 0xff, 0x3a, 0xff, 0x64, 0xff, 0xa0, 0xff, 0xd4, 0xff, 0x18, 0x00, 0x4c, 0x00, 0x8a, 0x00,
-0xa4, 0x00, 0xac, 0x00, 0xa0, 0x00, 0x74, 0x00, 0x46, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x8e, 0xff,
-0x4e, 0xff, 0x32, 0xff, 0x1a, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0xa4, 0xff, 0xee, 0xff, 0x20, 0x00,
-0x60, 0x00, 0x9a, 0x00, 0xaa, 0x00, 0xb8, 0x00, 0x98, 0x00, 0x6e, 0x00, 0x2c, 0x00, 0xee, 0xff,
-0xc6, 0xff, 0x7a, 0xff, 0x44, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x42, 0xff, 0x78, 0xff, 0xc2, 0xff,
-0xfe, 0xff, 0x34, 0x00, 0x6c, 0x00, 0x94, 0x00, 0xb6, 0x00, 0xb0, 0x00, 0x98, 0x00, 0x5e, 0x00,
-0x16, 0x00, 0xe4, 0xff, 0xaa, 0xff, 0x68, 0xff, 0x42, 0xff, 0x1a, 0xff, 0x2a, 0xff, 0x54, 0xff,
-0x82, 0xff, 0xd0, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x74, 0x00, 0x9a, 0x00, 0xa8, 0x00, 0x98, 0x00,
-0x78, 0x00, 0x4e, 0x00, 0x10, 0x00, 0xd0, 0xff, 0x96, 0xff, 0x62, 0xff, 0x46, 0xff, 0x38, 0xff,
-0x42, 0xff, 0x6a, 0xff, 0xa8, 0xff, 0xe0, 0xff, 0x18, 0x00, 0x50, 0x00, 0x76, 0x00, 0x90, 0x00,
-0x9e, 0x00, 0x88, 0x00, 0x6a, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0xd0, 0xff, 0x9c, 0xff, 0x6e, 0xff,
-0x60, 0xff, 0x52, 0xff, 0x6c, 0xff, 0x8c, 0xff, 0xb2, 0xff, 0xf8, 0xff, 0x1e, 0x00, 0x3e, 0x00,
-0x66, 0x00, 0x74, 0x00, 0x72, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x22, 0x00, 0xf2, 0xff, 0xc4, 0xff,
-0xa0, 0xff, 0x8c, 0xff, 0x76, 0xff, 0x86, 0xff, 0x8e, 0xff, 0xa8, 0xff, 0xd8, 0xff, 0xfa, 0xff,
-0x1c, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x4a, 0x00, 0x40, 0x00, 0x2e, 0x00, 0x08, 0x00,
-0xf4, 0xff, 0xd8, 0xff, 0xba, 0xff, 0xb2, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xc8, 0xff, 0xce, 0xff,
-0xea, 0xff, 0xfe, 0xff, 0x0e, 0x00, 0x22, 0x00, 0x26, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1e, 0x00,
-0x0c, 0x00, 0xf4, 0xff, 0xe6, 0xff, 0xd8, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc6, 0xff,
-0xd6, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x02, 0x00, 0xfc, 0xff, 0xf8, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xf0, 0xff,
-0xea, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xea, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe2, 0xff,
-0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0c, 0x00,
-0x14, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xea, 0xff, 0xce, 0xff, 0xc0, 0xff,
-0xb6, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xca, 0xff, 0xe0, 0xff, 0xf6, 0xff, 0x08, 0x00,
-0x24, 0x00, 0x36, 0x00, 0x34, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xe4, 0xff,
-0xcc, 0xff, 0xa6, 0xff, 0x9c, 0xff, 0x92, 0xff, 0x90, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xde, 0xff,
-0x02, 0x00, 0x24, 0x00, 0x4c, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x3c, 0x00,
-0x0a, 0x00, 0xe4, 0xff, 0xb0, 0xff, 0x8e, 0xff, 0x72, 0xff, 0x62, 0xff, 0x72, 0xff, 0x8c, 0xff,
-0xa6, 0xff, 0xde, 0xff, 0x0a, 0x00, 0x3c, 0x00, 0x64, 0x00, 0x82, 0x00, 0x94, 0x00, 0x74, 0x00,
-0x60, 0x00, 0x36, 0x00, 0x0a, 0x00, 0xd2, 0xff, 0x84, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x3c, 0xff,
-0x54, 0xff, 0x7e, 0xff, 0xb2, 0xff, 0xe4, 0xff, 0x24, 0x00, 0x60, 0x00, 0x8e, 0x00, 0xa4, 0x00,
-0xa6, 0x00, 0x98, 0x00, 0x64, 0x00, 0x24, 0x00, 0xf8, 0xff, 0xb8, 0xff, 0x80, 0xff, 0x56, 0xff,
-0x2c, 0xff, 0x32, 0xff, 0x4e, 0xff, 0x82, 0xff, 0xbc, 0xff, 0x02, 0x00, 0x36, 0x00, 0x72, 0x00,
-0x9e, 0x00, 0xa6, 0x00, 0xae, 0x00, 0x8a, 0x00, 0x52, 0x00, 0x14, 0x00, 0xd4, 0xff, 0xa4, 0xff,
-0x5e, 0xff, 0x40, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x4c, 0xff, 0x7c, 0xff, 0xce, 0xff, 0x04, 0x00,
-0x40, 0x00, 0x7c, 0x00, 0x98, 0x00, 0xa6, 0x00, 0x94, 0x00, 0x7e, 0x00, 0x40, 0x00, 0xfa, 0xff,
-0xce, 0xff, 0x8e, 0xff, 0x5e, 0xff, 0x36, 0xff, 0x26, 0xff, 0x38, 0xff, 0x5e, 0xff, 0x9a, 0xff,
-0xde, 0xff, 0x10, 0x00, 0x4c, 0x00, 0x84, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x6e, 0x00,
-0x32, 0x00, 0xfc, 0xff, 0xb8, 0xff, 0x8c, 0xff, 0x64, 0xff, 0x40, 0xff, 0x38, 0xff, 0x40, 0xff,
-0x70, 0xff, 0xaa, 0xff, 0xec, 0xff, 0x1e, 0x00, 0x44, 0x00, 0x76, 0x00, 0x8a, 0x00, 0x8a, 0x00,
-0x76, 0x00, 0x4c, 0x00, 0x20, 0x00, 0xea, 0xff, 0xbc, 0xff, 0x8e, 0xff, 0x6c, 0xff, 0x5c, 0xff,
-0x5a, 0xff, 0x6a, 0xff, 0x94, 0xff, 0xc4, 0xff, 0xfa, 0xff, 0x34, 0x00, 0x4a, 0x00, 0x62, 0x00,
-0x74, 0x00, 0x76, 0x00, 0x6a, 0x00, 0x36, 0x00, 0x18, 0x00, 0xf2, 0xff, 0xbc, 0xff, 0xa6, 0xff,
-0x90, 0xff, 0x7e, 0xff, 0x88, 0xff, 0x90, 0xff, 0xa8, 0xff, 0xe4, 0xff, 0x0c, 0x00, 0x26, 0x00,
-0x44, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x58, 0x00, 0x46, 0x00, 0x2c, 0x00, 0x06, 0x00, 0xea, 0xff,
-0xc4, 0xff, 0xae, 0xff, 0x9e, 0xff, 0x96, 0xff, 0x9a, 0xff, 0xa2, 0xff, 0xc2, 0xff, 0xe4, 0xff,
-0xfe, 0xff, 0x1a, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x34, 0x00, 0x38, 0x00, 0x34, 0x00, 0x12, 0x00,
-0x00, 0x00, 0xec, 0xff, 0xd4, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xc0, 0xff, 0xc4, 0xff,
-0xd6, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0x02, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x12, 0x00,
-0x10, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff,
-0xde, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff,
-0xec, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x02, 0x00,
-0xfc, 0xff, 0x04, 0x00, 0xfa, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xd0, 0xff, 0xbc, 0xff, 0xbe, 0xff,
-0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xde, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0x0e, 0x00, 0x18, 0x00,
-0x24, 0x00, 0x22, 0x00, 0x16, 0x00, 0x22, 0x00, 0x14, 0x00, 0xfe, 0xff, 0xe2, 0xff, 0xbc, 0xff,
-0xa8, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xb2, 0xff, 0xd4, 0xff, 0xf0, 0xff, 0x04, 0x00,
-0x22, 0x00, 0x38, 0x00, 0x48, 0x00, 0x4c, 0x00, 0x3a, 0x00, 0x30, 0x00, 0x20, 0x00, 0xfa, 0xff,
-0xd6, 0xff, 0xa6, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x76, 0xff, 0x8c, 0xff, 0x9e, 0xff, 0xc8, 0xff,
-0xf6, 0xff, 0x1a, 0x00, 0x44, 0x00, 0x60, 0x00, 0x74, 0x00, 0x72, 0x00, 0x62, 0x00, 0x4c, 0x00,
-0x22, 0x00, 0xea, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x7a, 0xff, 0x66, 0xff, 0x62, 0xff, 0x82, 0xff,
-0x9e, 0xff, 0xd4, 0xff, 0x08, 0x00, 0x36, 0x00, 0x60, 0x00, 0x84, 0x00, 0x9e, 0x00, 0x92, 0x00,
-0x7a, 0x00, 0x4c, 0x00, 0x22, 0x00, 0xe0, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x54, 0xff, 0x4a, 0xff,
-0x4e, 0xff, 0x6a, 0xff, 0xa2, 0xff, 0xd2, 0xff, 0x06, 0x00, 0x3c, 0x00, 0x76, 0x00, 0x98, 0x00,
-0xa2, 0x00, 0xa4, 0x00, 0x72, 0x00, 0x40, 0x00, 0x0a, 0x00, 0xd0, 0xff, 0x96, 0xff, 0x5c, 0xff,
-0x3c, 0xff, 0x28, 0xff, 0x3e, 0xff, 0x68, 0xff, 0xac, 0xff, 0xe8, 0xff, 0x10, 0x00, 0x48, 0x00,
-0x8a, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0x9c, 0x00, 0x6a, 0x00, 0x32, 0x00, 0xf2, 0xff, 0xbe, 0xff,
-0x7a, 0xff, 0x54, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x6e, 0xff, 0xbe, 0xff, 0xf2, 0xff,
-0x24, 0x00, 0x60, 0x00, 0x8e, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0x86, 0x00, 0x50, 0x00, 0x14, 0x00,
-0xd8, 0xff, 0xaa, 0xff, 0x74, 0xff, 0x48, 0xff, 0x28, 0xff, 0x38, 0xff, 0x52, 0xff, 0x7e, 0xff,
-0xbc, 0xff, 0xf8, 0xff, 0x36, 0x00, 0x60, 0x00, 0x8a, 0x00, 0xa2, 0x00, 0x94, 0x00, 0x76, 0x00,
-0x46, 0x00, 0x0c, 0x00, 0xde, 0xff, 0xac, 0xff, 0x76, 0xff, 0x58, 0xff, 0x4a, 0xff, 0x4a, 0xff,
-0x66, 0xff, 0x92, 0xff, 0xc8, 0xff, 0xfe, 0xff, 0x34, 0x00, 0x68, 0x00, 0x80, 0x00, 0x9a, 0x00,
-0x88, 0x00, 0x60, 0x00, 0x3c, 0x00, 0xfe, 0xff, 0xd6, 0xff, 0xa4, 0xff, 0x84, 0xff, 0x6c, 0xff,
-0x60, 0xff, 0x6e, 0xff, 0x86, 0xff, 0xa6, 0xff, 0xde, 0xff, 0x0e, 0x00, 0x30, 0x00, 0x54, 0x00,
-0x64, 0x00, 0x72, 0x00, 0x64, 0x00, 0x48, 0x00, 0x1c, 0x00, 0xf0, 0xff, 0xd2, 0xff, 0xa8, 0xff,
-0xa0, 0xff, 0x94, 0xff, 0x86, 0xff, 0x96, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xf4, 0xff, 0x14, 0x00,
-0x36, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x50, 0x00, 0x46, 0x00, 0x2a, 0x00, 0x12, 0x00, 0xf2, 0xff,
-0xda, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xe4, 0xff,
-0x02, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x18, 0x00, 0x26, 0x00, 0x1c, 0x00, 0x02, 0x00,
-0xfe, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xdc, 0xff,
-0xde, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff,
-0xfa, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfa, 0xff,
-0xf8, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff,
-0xd4, 0xff, 0xcc, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xee, 0xff, 0x00, 0x00, 0x10, 0x00, 0x1a, 0x00,
-0x0e, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x02, 0x00, 0xf8, 0xff, 0xdc, 0xff, 0xd0, 0xff, 0xbc, 0xff,
-0xb4, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xde, 0xff, 0xfc, 0xff, 0x1a, 0x00,
-0x2e, 0x00, 0x30, 0x00, 0x38, 0x00, 0x2e, 0x00, 0x1c, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xcc, 0xff,
-0xa4, 0xff, 0x96, 0xff, 0x88, 0xff, 0x8c, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xcc, 0xff, 0xf6, 0xff,
-0x1a, 0x00, 0x48, 0x00, 0x52, 0x00, 0x60, 0x00, 0x60, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x06, 0x00,
-0xe6, 0xff, 0xbe, 0xff, 0x8a, 0xff, 0x66, 0xff, 0x64, 0xff, 0x62, 0xff, 0x78, 0xff, 0x9c, 0xff,
-0xca, 0xff, 0xf8, 0xff, 0x32, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x62, 0x00,
-0x36, 0x00, 0x0a, 0x00, 0xda, 0xff, 0xa4, 0xff, 0x6e, 0xff, 0x40, 0xff, 0x40, 0xff, 0x48, 0xff,
-0x66, 0xff, 0xb0, 0xff, 0xde, 0xff, 0x16, 0x00, 0x50, 0x00, 0x8a, 0x00, 0xac, 0x00, 0xac, 0x00,
-0xa0, 0x00, 0x74, 0x00, 0x3e, 0x00, 0x0a, 0x00, 0xcc, 0xff, 0x90, 0xff, 0x4e, 0xff, 0x3a, 0xff,
-0x30, 0xff, 0x3a, 0xff, 0x76, 0xff, 0xb8, 0xff, 0xf4, 0xff, 0x26, 0x00, 0x70, 0x00, 0xa4, 0x00,
-0xb8, 0x00, 0xc0, 0x00, 0xa4, 0x00, 0x74, 0x00, 0x2e, 0x00, 0xf4, 0xff, 0xb8, 0xff, 0x74, 0xff,
-0x3c, 0xff, 0x20, 0xff, 0x26, 0xff, 0x44, 0xff, 0x6c, 0xff, 0xc4, 0xff, 0x00, 0x00, 0x3c, 0x00,
-0x7c, 0x00, 0xaa, 0x00, 0xc8, 0x00, 0xba, 0x00, 0xa4, 0x00, 0x6e, 0x00, 0x1a, 0x00, 0xee, 0xff,
-0xa8, 0xff, 0x64, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x2c, 0xff, 0x50, 0xff, 0x94, 0xff, 0xd2, 0xff,
-0x0e, 0x00, 0x4e, 0x00, 0x7e, 0x00, 0xa6, 0x00, 0xc2, 0x00, 0xb2, 0x00, 0x90, 0x00, 0x5a, 0x00,
-0x12, 0x00, 0xd0, 0xff, 0x9c, 0xff, 0x60, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x36, 0xff, 0x5e, 0xff,
-0x9a, 0xff, 0xd6, 0xff, 0x10, 0x00, 0x3c, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x96, 0x00, 0x8e, 0x00,
-0x64, 0x00, 0x36, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x52, 0xff, 0x42, 0xff,
-0x5e, 0xff, 0x7e, 0xff, 0xb4, 0xff, 0xec, 0xff, 0x16, 0x00, 0x44, 0x00, 0x5e, 0x00, 0x78, 0x00,
-0x78, 0x00, 0x5e, 0x00, 0x4a, 0x00, 0x10, 0x00, 0xf4, 0xff, 0xc2, 0xff, 0x8e, 0xff, 0x84, 0xff,
-0x66, 0xff, 0x72, 0xff, 0x84, 0xff, 0x98, 0xff, 0xd2, 0xff, 0xf4, 0xff, 0x1c, 0x00, 0x38, 0x00,
-0x42, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x26, 0x00, 0x04, 0x00, 0xee, 0xff, 0xc0, 0xff,
-0xa0, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xe2, 0xff, 0x02, 0x00,
-0x14, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x22, 0x00, 0x16, 0x00, 0x00, 0x00,
-0xec, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xe6, 0xff,
-0xf2, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x0c, 0x00,
-0xfc, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xe4, 0xff,
-0xe4, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xf0, 0xff, 0xf2, 0xff};
-
-#endif
diff --git a/mbtk/test/libql_lib/Makefile b/mbtk/test/libql_lib/Makefile
deleted file mode 100755
index 736aee1..0000000
--- a/mbtk/test/libql_lib/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-BUILD_ROOT = $(shell pwd)/../..
-include $(BUILD_ROOT)/Make.defines
-
-INC_DIR +=
-
-LIB_DIR +=
-
-LIBS += -lmbtk_lib -lmbtk_net -lmbtk_ril -lql_lib -lmbtk_audio -lmbtk_http -lmbtk_fota -lmbtk_factory
-
-CFLAGS +=
-
-DEFINE +=
-
-LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
-
-$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
-
-OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(LOCAL_SRC_FILES)))
-BINS = $(patsubst %.o,%,$(OBJS))
-
-all: $(BINS)
-
-$(BINS):$(OBJS)
- @echo " BIN $@"
- $(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $@.o -o $(OUT_DIR)/bin/$@
-
-%.o:%.c
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-%.o:%.cpp
- $(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
-
-clean:
- rm -f $(OBJS)
diff --git a/mbtk/test/libql_lib/ql_DSI_ConnectManager_test.c b/mbtk/test/libql_lib/ql_DSI_ConnectManager_test.c
deleted file mode 100755
index ae7edcc..0000000
--- a/mbtk/test/libql_lib/ql_DSI_ConnectManager_test.c
+++ /dev/null
@@ -1,364 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#include <pthread.h>
-#include <sys/epoll.h>
-#include <string.h>
-#include <fcntl.h>
-#include <signal.h>
-
-#include "ql/DSI_ConnectManager.h"
-#include "mbtk_log.h"
-
-static void help()
-{
- printf("apn_get <cid> : Get current apns.\n");
- printf("apn <cid> <0/1/2> <apn> [<user> <pass> <auth>] : Set apn (IPV4V6/IPV4/IPV6).\n");
- printf("data_call <0/1/2> <cid> <timeout>: Stop/Start/State data call.\n");
- printf("data_call_ex <0/1/2> <cid> <timeout>: Stop/Start/State data call.\n");
-}
-
-static int proc_exit()
-{
- int err = ql_wan_release();
- if(err)
- {
- printf("ql_wan_release fail.");
- return -1;
- }
- return 0;
-}
-
-static void sig_process(int sig)
-{
- LOGI("I got signal %d\n", sig);
- switch(sig)
- {
- case SIGINT: // Ctrl + C
- {
- LOGI("Exit by SIGINT.\n");
- proc_exit();
- exit(0);
- }
- case SIGQUIT: // Ctrl + \ (类似 SIGINT ,但要产生core文件)
- {
- LOGI("Exit by SIGQUIT.\n");
- proc_exit();
- exit(0);
- }
- case SIGTERM:// 默认kill (同 SIGKILL ,但 SIGKILL 不可捕获)
- {
- LOGI("Exit by SIGTERM.\n");
- proc_exit();
- exit(0);
- }
- case SIGTSTP:// Ctrl + Z (同 SIGSTOP ,但 SIGSTOP 不可捕获)
- {
- LOGI("Exit by SIGTSTP.\n");
- exit(0);
- }
- case SIGSEGV: // 如空指针
- {
- LOGI("Exit by SIGSEGV.\n");
- exit(0);
- }
- default:
- {
- LOGI("Unknown sig:%d\n",sig);
- break;
- }
- }
-}
-
-static void data_call_status_cb(int status)
-{
- printf("DATA_CALL_STATE:%d\n", status);
-}
-
-static void data_call_ex_status_cb(int cid,int iptype,int status,int cause)
-{
- printf("DATA_CALL_EX_STATE:%d, %d, %d, %d\n", cid, iptype, status, cause);
-}
-
-int main(int argc, char *argv[])
-{
- signal(SIGINT, sig_process);
- signal(SIGQUIT, sig_process);
- signal(SIGTERM, sig_process);
- //signal(SIGTSTP, sig_process);
- //signal(SIGSEGV, sig_process);
-
- mbtk_log_init(NULL,"MBTK_QL_TEST");
-
- //test2(0, "192.168.1.198");
- //test2(1, "2409:8162:140:cd3c:1:2:1494:72ba");
- //test2(1, "254.128.0.0.0.0.0.0.0.1.0.2.144.5.212.239");
- //test2(1, "2400:3200::1");
-
- int err = ql_wan_init();
- if(err)
- {
- printf("ql_wan_init fail.");
- return -1;
- }
-
- printf(">>>>>>>>>>>>>>>>>>>>>>>>Enter cmd:\n");
- char cmd[100];
- while(1)
- {
- memset(cmd, 0, 100);
- if(fgets(cmd, 100, stdin))
- {
- char *ptr = cmd + strlen(cmd) - 1;
- while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
- {
- *ptr-- = '\0';
- }
-
- if(!strncasecmp(cmd, "apn", 3)){
- if(!strncasecmp(cmd, "apn_get", 7)) { // Get apn
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int cid = atoi(ptr);
- int ip_type = -1;
- char apn[128] = {0};
- char userName[128] = {0};
- char password[128] = {0};
- int auth = -1;
- err = ql_wan_getapn(cid, &ip_type, apn, 128, userName, 128, password, 128, &auth);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("APN : %d, %d, %s, %s, %s, %d\n", cid, ip_type, apn, userName, password, auth);
- }
- } else { // apn <cid> <0/1/2> <apn> [<user> <pass> <auth>]
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int cid = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int ip_type = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- char apn[128] = {0};
- memcpy(apn, ptr, strlen(ptr));
- char *tmp = apn;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL) {
- err = ql_wan_setapn(cid, ip_type, apn, NULL, NULL, QL_DSI_AUTH_PREF_NULL);
- } else {
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- char user[128] = {0};
- memcpy(user, ptr, strlen(ptr));
- tmp = user;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- char pass[128] = {0};
- memcpy(pass, ptr, strlen(ptr));
- tmp = pass;
- while(*tmp) {
- if(*tmp == ' ') {
- *tmp = '\0';
- break;
- }
- tmp++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- QL_DSI_AUTH_PREF_T auth = (QL_DSI_AUTH_PREF_T)atoi(ptr);
-
- err = ql_wan_setapn(cid, ip_type, apn, user, pass, auth);
- }
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("APN set success\n");
- }
- }
- } else if(!strncasecmp(cmd, "data_call_ex", 12)){ // data_call_ex <0/1/2> <cid> <timeout>
- // data_call <0/1/2> <cid> <timeout>
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int type = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int cid = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int timeout = atoi(ptr);
-
- switch (type)
- {
- case 0:
- err = ql_wan_stop(cid);
- break;
- case 1:
- err = ql_wan_start_ex(cid, 1, data_call_ex_status_cb);
- break;
- case 2: {
- ql_data_call_info info;
- err = ql_get_data_call_info(cid, &info);
- if(!err) {
- printf("cid : %d, ip_type : %d\n", info.profile_idx, info.ip_type);
- if(info.v4.state) {
- printf("%s: %s, %s, %s\n", info.v4.addr.name, info.v4.addr.ip, info.v4.addr.pri_dns, info.v4.addr.sec_dns);
- } else {
- printf("IPV4 not available.\n");
- }
-
- if(info.v6.state) {
- printf("%s: %s, %s, %s\n", info.v6.addr.name, info.v6.addr.ip, info.v6.addr.pri_dns, info.v6.addr.sec_dns);
- } else {
- printf("IPV6 not available.\n");
- }
- }
- break;
- }
- default:
- printf("Type error:%d\n", type);
- break;
- }
-
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("DATA_CALL success\n");
- }
- } else if(!strncasecmp(cmd, "data_call", 9)){ // data_call <0/1/2> <cid> <timeout>
- // data_call <0/1/2> <cid> <timeout>
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int type = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int cid = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int timeout = atoi(ptr);
-
- switch (type)
- {
- case 0:
- err = ql_wan_stop(cid);
- break;
- case 1:
- err = ql_wan_start(cid, 1, data_call_status_cb);
- break;
- case 2: {
- ql_data_call_info info;
- err = ql_get_data_call_info(cid, &info);
- if(!err) {
- printf("cid : %d, ip_type : %d\n", info.profile_idx, info.ip_type);
- if(info.v4.state) {
- printf("%s: %s, %s, %s\n", info.v4.addr.name, info.v4.addr.ip, info.v4.addr.pri_dns, info.v4.addr.sec_dns);
- } else {
- printf("IPV4 not available.\n");
- }
-
- if(info.v6.state) {
- printf("%s: %s, %s, %s\n", info.v6.addr.name, info.v6.addr.ip, info.v6.addr.pri_dns, info.v6.addr.sec_dns);
- } else {
- printf("IPV6 not available.\n");
- }
- }
- break;
- }
- default:
- printf("Type error:%d\n", type);
- break;
- }
-
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("DATA_CALL success\n");
- }
- }
- else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help")) {
- help();
- } else if(!strcasecmp(cmd, "q")) {
- break;
- } else {
- printf("\n");
- }
- }
- }
-
- proc_exit();
-
- LOGI("Client exec complete.");
-#if 1
- while(1)
- {
- sleep(1000 * 365 * 24 * 60 * 60);
- }
-#else
- sleep(1);
-#endif
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_adc_test.c b/mbtk/test/libql_lib/ql_adc_test.c
deleted file mode 100755
index 6eb83f6..0000000
--- a/mbtk/test/libql_lib/ql_adc_test.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <stdio.h>
-
-#include "ql/ql_adc.h"
-
-int main(int argc, char *argv[])
-{
- int adc = ql_adc_show(ADC0);
- if(adc > 0) {
- printf("ADC0 = %d\n", adc);
- } else {
- printf("Get ADC0 fail.\n");
- }
-
- adc = ql_adc_show(ADC1);
- if(adc > 0) {
- printf("ADC1 = %d\n", adc);
- } else {
- printf("Get ADC1 fail.\n");
- }
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_call_test.c b/mbtk/test/libql_lib/ql_call_test.c
deleted file mode 100755
index 3d41fed..0000000
--- a/mbtk/test/libql_lib/ql_call_test.c
+++ /dev/null
@@ -1,283 +0,0 @@
-#include "mbtk_type.h"
-#include "ql/ql_at.h"
-#include "ql/ql_vcall.h"
-#include "ql/ql_mcm_call.h"
-
-typedef struct
-{
- int cmdIdx;
- char *funcName;
-} st_api_test_case;
-
-//for server test
-st_api_test_case at_api_testcases[] =
-{
- {0, "print_help"},
- {1, "QL_Voice_Call_Ecall"},
- {2, "QL_Voice_Call_Ecall_HangUp"},
-
- {-1, NULL}
-};
-
-void print_help(void)
-{
- int i;
-
- printf("Supported test cases:\n");
- for(i = 0; ; i++)
- {
- if(at_api_testcases[i].cmdIdx == -1)
- {
- break;
- }
- printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
- }
-}
-
-static void ql_voice_call_ind_func(unsigned int ind_id,
- void* ind_data,
- uint32_t ind_data_len)
-{
- if(NULL == ind_data)
- {
- return;
- }
-
- switch(ind_id)
- {
- case E_QL_MCM_VOICE_CALL_IND:
- {
- if(ind_data_len != sizeof(ql_mcm_voice_call_ind))
- {
- break;
- }
-
- ql_mcm_voice_call_ind *pVoiceCallInd = (ql_mcm_voice_call_ind*)ind_data;
-
- char *call_state[] = {"INCOMING", "DIALING", "ALERTING", "ACTIVE", "HOLDING", "END", "WAITING"};
-
- int i = 0;
- for(i = 0; i < pVoiceCallInd->calls_len; i++)
- {
- printf("######### Call id=%d, PhoneNum:%s, event=%s! ######\n",
- pVoiceCallInd->calls[i].call_id, pVoiceCallInd->calls[i].number, call_state[pVoiceCallInd->calls[i].state]);
- }
-
- break;
- }
-
- case E_QL_MCM_VOICE_ECALL_STATUE_IND:
- {
- if(ind_data_len != sizeof(ql_mcm_voice_ecall_status_ind))
- {
- break;
- }
-
- ql_mcm_voice_ecall_status_ind *pEcallStatusInd
- = (ql_mcm_voice_ecall_status_ind*)ind_data;
-
- if (pEcallStatusInd->ecall_msd_tx_status_valid)
- {
- if (pEcallStatusInd->ecall_msd_tx_status == E_QL_MCM_VOICE_ECALL_MSD_TRANSMISSION_STATUS_SUCCESS)
- {
- printf("========== Ecall status call_id =%d , ecall msd tx success.\r\n", pEcallStatusInd->call_id);
- }
- else
- {
- printf("========== Ecall status call_id =%d , ecall msd tx failure.\r\n", pEcallStatusInd->call_id);
- }
- }
- else
- {
- printf("========== Ecall status call_id =%d \r\n", pEcallStatusInd->call_id);
- }
-
- break;
- }
-
- case E_QL_MCM_VOICE_UNKOWN_IND:
- default:
- break;
- }
-}
-
-#if 0
-int main(int argc, char *argv[])
-{
- int cmdIdx = 0;
- int ret = E_QL_OK;
- char phoneNum[32] = {0};
- voice_client_handle_type h_voice = 0;
- int voice_call_id = 0;
-
- printf("QL_Voice_Call_Client_Init .....\n");
- ret = QL_Voice_Call_Client_Init(&h_voice);
- if(ret < 0)
- {
- printf("QL_Voice_Call_Client_Init FAIL. ret:%d\n",ret);
- return -1;
- }
- printf("QL_Voice_Call_Client_Init ret = %d, with h_voice=%d\n", ret, h_voice);
-
- ret = QL_Voice_Call_AddCommonStateHandler(h_voice, (QL_VoiceCall_CommonStateHandlerFunc_t)ql_voice_call_ind_func);
- if(ret < 0)
- {
- printf("QL_Voice_Call_AddCommonStateHandler FAIL. ret:%d\n",ret);
- return -1;
- }
- printf("QL_Voice_Call_AddCommonStateHandler ret = %d\n", ret);
-
- print_help();
-
- while(1)
- {
- printf("please input cmd index(-1 exit): ");
- scanf("%d", &cmdIdx);
- if(cmdIdx == -1)
- {
- break;
- }
-
- switch(cmdIdx)
- {
- case 0://"print_help"
- {
- print_help();
- break;
- }
- case 1://"QL_Voice_Call_Ecall"
- {
- char PhoneNum[32] = {0};
- printf("please input dest phone number: \n");
- scanf("%s", PhoneNum);
-
- char msd[140+1] = {0};
- printf("please input msd content: \n");
- scanf("%s", msd);
-
- E_QL_MCM_ECALL_VARIANT_T ecall_mode;
- printf("please input ecall mode(1:test 2:emergency): \n");
- scanf("%d", &ecall_mode);
- QL_Voice_Call_Start(h_voice, E_QL_VCALL_EXTERNAL_SLOT_1, PhoneNum, NULL);
- // ret = QL_Voice_Call_Ecall(h_voice, E_QL_VCALL_EXTERNAL_SLOT_1, PhoneNum,
- // ecall_mode, &voice_call_id);
- printf(" voice_call_id = %d\n", voice_call_id);
- printf(" ret = %d\n", ret);
- break;
- }
- case 2://QL_Voice_Call_Ecall_HangUp
- {
- ret = QL_Voice_Call_Ecall_HangUp(h_voice);
- printf(" ret = %d\n", ret);
- break;
- }
-
- default:
- print_help();
- break;
- }
- }
-
- ret = QL_Voice_Call_RemoveCommonStateHandler(h_voice);
- if(ret < 0)
- {
- printf("QL_Voice_Call_RemoveCommonStateHandler. ret:%d\n",ret);
- return -1;
- }
- printf("QL_Voice_Call_RemoveCommonStateHandler ret = %d\n", ret);
-
- ret = QL_Voice_Call_Client_Deinit(h_voice);
- if(ret < 0)
- {
- printf("QL_Voice_Call_Client_Deinit FAIL. ret:%d\n",ret);
- return -1;
- }
- printf("QL_Voice_Call_Client_Deinit ret = %d, with h_voice=%d\n", ret, h_voice);
-
- return 0;
-}
-#else
-
-int main(int argc, char *argv[])
-{
- char operator[10];
- int opt;
- int ret = E_QL_OK;
- char phoneNum[32] = {0};
- voice_client_handle_type h_voice = 0;
-
- while(1)
- {
- printf("=========call main=========\n"
- "\t0 exit\n"
- "\t1 call init\n"
- "\t2 call register handle\n"
- "\t3 call start\n"
- "\t4 call end\n"
- "\t5 call answer\n"
- "\t6 call set auto answer\n"
- "\t7 call hold\n"
- "\t8 call unhold\n"
- "\t9 call deinit\n"
- "operator: >> ");
-
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- ret = QL_Voice_Call_Client_Init(&h_voice);
- if(ret < 0)
- {
- printf("QL_Voice_Call_Client_Init FAIL. ret:%d\n",ret);
- return -1;
- }
- printf("QL_Voice_Call_Client_Init ret = %d, with h_voice=%d\n", ret, h_voice);
-
- break;
- case 2:
- ret = QL_Voice_Call_AddCommonStateHandler(h_voice, (QL_VoiceCall_CommonStateHandlerFunc_t)ql_voice_call_ind_func);
- if(ret < 0)
- {
- printf("QL_Voice_Call_AddCommonStateHandler FAIL. ret:%d\n",ret);
- return -1;
- }
- break;
- case 3:
- QL_Voice_Call_Start(h_voice, 0, "15982066434", NULL);
- break;
- case 4:
- QL_Voice_Call_End(h_voice, 0);
- break;
- case 5:
- QL_Voice_Call_Answer(h_voice, 0);
- break;
- case 6:
- QL_Voice_Call_SetAutoAnswer(h_voice, E_QL_MCM_VOICE_AUTO_ANSWER_ENABLE, 6000);
- break;
- case 7:
- QL_Voice_Call_Hold(h_voice);
- break;
- case 8:
- QL_Voice_Call_UnHold(h_voice);
- break;
- case 9:
- QL_Voice_Call_Client_Deinit(h_voice);
- break;
- case 10:
- // QL_Voice_Call_UnHold;
- break;
- default:
- break;
- }
-
- sleep(1);
- }
-
- return 0;
-}
-#endif
diff --git a/mbtk/test/libql_lib/ql_dev_test.c b/mbtk/test/libql_lib/ql_dev_test.c
deleted file mode 100755
index 105f460..0000000
--- a/mbtk/test/libql_lib/ql_dev_test.c
+++ /dev/null
@@ -1,201 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#include <pthread.h>
-#include <sys/epoll.h>
-#include <string.h>
-#include <fcntl.h>
-#include <signal.h>
-
-#include "ql/ql_dev.h"
-#include "mbtk_log.h"
-
-static void help()
-{
- printf("version: Get version.\n");
- printf("imei: Get IMEI.\n");
- printf("sn: Get SN.\n");
- printf("model: Get Model.\n");
- printf("cfun: Get radio state.\n");
- printf("cfun <state> <rest>: Set radio state.\n");
-}
-
-static int proc_exit()
-{
- QL_DEV_ERROR_CODE err = ql_dev_release();
- if(QL_DEV_SUCCESS != err)
- {
- printf("ql_dev_release fail.");
- return -1;
- }
- return 0;
-}
-
-static void sig_process(int sig)
-{
- LOGI("I got signal %d\n", sig);
- switch(sig)
- {
- case SIGINT: // Ctrl + C
- {
- LOGI("Exit by SIGINT.\n");
- proc_exit();
- exit(0);
- }
- case SIGQUIT: // Ctrl + \ (类似 SIGINT ,但要产生core文件)
- {
- LOGI("Exit by SIGQUIT.\n");
- proc_exit();
- exit(0);
- }
- case SIGTERM:// 默认kill (同 SIGKILL ,但 SIGKILL 不可捕获)
- {
- LOGI("Exit by SIGTERM.\n");
- proc_exit();
- exit(0);
- }
- case SIGTSTP:// Ctrl + Z (同 SIGSTOP ,但 SIGSTOP 不可捕获)
- {
- LOGI("Exit by SIGTSTP.\n");
- exit(0);
- }
- case SIGSEGV: // 如空指针
- {
- LOGI("Exit by SIGSEGV.\n");
- exit(0);
- }
- default:
- {
- LOGI("Unknown sig:%d\n",sig);
- break;
- }
- }
-}
-
-int main(int argc, char *argv[])
-{
- signal(SIGINT, sig_process);
- signal(SIGQUIT, sig_process);
- signal(SIGTERM, sig_process);
- //signal(SIGTSTP, sig_process);
- //signal(SIGSEGV, sig_process);
-
- mbtk_log_init(NULL,"MBTK_QL_TEST");
-
- //test2(0, "192.168.1.198");
- //test2(1, "2409:8162:140:cd3c:1:2:1494:72ba");
- //test2(1, "254.128.0.0.0.0.0.0.0.1.0.2.144.5.212.239");
- //test2(1, "2400:3200::1");
-
- QL_DEV_ERROR_CODE err = ql_dev_init();
- if(QL_DEV_SUCCESS != err)
- {
- printf("ql_dev_init fail.");
- return -1;
- }
-
- printf(">>>>>>>>>>>>>>>>>>>>>>>>Enter cmd:\n");
- char cmd[100];
- while(1)
- {
- memset(cmd, 0, 100);
- if(fgets(cmd, 100, stdin))
- {
- char *ptr = cmd + strlen(cmd) - 1;
- while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
- {
- *ptr-- = '\0';
- }
-
- if(!strncasecmp(cmd, "version", 7))
- {
- char version[50] = {0};
- err = ql_dev_get_firmware_version(version);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Version : %s\n", version);
- }
- } else if(!strncasecmp(cmd, "imei", 4)){
- char imei[50] = {0};
- err = ql_dev_get_imei(imei);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("IMEI : %s\n", imei);
- }
- } else if(!strncasecmp(cmd, "sn", 2)){
- char sn[50] = {0};
- err = ql_dev_get_sn(sn);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("SN : %s\n", sn);
- }
- } else if(!strncasecmp(cmd, "model", 5)){
- char model[50] = {0};
- err = ql_dev_get_model(model);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Model : %s\n", model);
- }
- } else if(!strncasecmp(cmd, "cfun", 4)){
- int cfun;
- if(!strcasecmp(cmd, "cfun")) { // Get
- err = ql_dev_get_modem_fun(&cfun);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Cfun : %d\n", cfun);
- }
- } else { // Set
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- cfun = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- int rst = atoi(ptr);
- err = ql_dev_set_modem_fun((QL_DEV_MODEM_FUNCTION)cfun, rst);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("cfun set success\n");
- }
- }
- }
- else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help")) {
- help();
- } else if(!strcasecmp(cmd, "q")) {
- break;
- } else {
- printf("\n");
- }
- }
- }
-
- proc_exit();
-
- LOGI("Client exec complete.");
-#if 1
- while(1)
- {
- sleep(1000 * 365 * 24 * 60 * 60);
- }
-#else
- sleep(1);
-#endif
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_gnss_nmea_get.c b/mbtk/test/libql_lib/ql_gnss_nmea_get.c
deleted file mode 100644
index c9da7df..0000000
--- a/mbtk/test/libql_lib/ql_gnss_nmea_get.c
+++ /dev/null
@@ -1,170 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include "ql/ql_uart.h"
-
-#define READ_SIZE 1024
-#define NMEA_MAX_SIZE 127
-
-typedef struct{
- int pos;
- int overflow;
- char in[ NMEA_MAX_SIZE+1 ];
-}NmeaReader;
-
-int fd = -1;
-static NmeaReader r = {0};
-
-static const char CHARSET[] = {",.*$GRABMCDVLONSWTKPVUXYZEF-="};
-static int CharSetValid(const char *ptr, int len)
-{
- unsigned int temp, i, j = 0;
- const char *p = ptr;
- for (; len > 0; len--, j++) {
- temp = *ptr++;
- if (temp >= '0' && temp <= '9') {
- continue;
- }
- i = 0;
- for (;;) {
- if (temp == CHARSET[i]) {
- break;
- }
- if (++i >= strlen(CHARSET)) {
- printf("[CharSetValid err:%.2x %d %d ]\n", temp, j, len);
- printf("[ERR1_NMEA]:%s", p);
- return -1;
- }
- }
- }
-
- return 0;
-}
-
-static unsigned char nmea_checksum(const char *nmea)
-{
- const char *p = nmea;
- unsigned char chs = 0;
-
- while (*p == '$') // skip '$'
- p++;
- while (*p != '*' && *p != 0)
- chs ^= *p++;
-
- return chs;
-}
-
-static int str_count(const char *data, int data_len, char ch)
-{
- int count = 0;
- int i = 0;
- while(i < data_len && data[i]){
- if(data[i] == ch){
- count++;
- }
- i++;
- }
-
- return count;
-}
-
-static int nmea_check(const char *nmea, int len)
-{
- // No found '*'
- if(str_count(nmea, len, '*') == 0)
- {
- return -1;
- }
-
- char *checksum_str = strstr(nmea, "*");
- checksum_str++; // Jump '*'
- char checksum_buf[3] = {0};
- snprintf(checksum_buf, 3, "%02x", nmea_checksum(nmea));
- if(strncasecmp(checksum_buf, checksum_str, 2))
- {
- printf("[nmea_checksum error : %s]\n", checksum_buf);
- printf("[ERR2_NMEA]:%s", nmea);
- return -1;
- }
-
- return 0;
-}
-
-static void nmea_reader_addc(NmeaReader* r, int c)
-{
- if (r->overflow)
- {
- r->overflow = (c != '\n');
- return;
- }
-
- if (r->pos >= (int) sizeof(r->in)-1 )
- {
- r->overflow = 1;
- r->pos = 0;
- return;
- }
-
- if(c == '\0')
- {
- return;
- }
-
- r->in[r->pos] = (char)c;
- r->pos += 1;
-
- if (c == '\n')
- {
- r->in[r->pos] = 0;
- CharSetValid(r->in, r->pos);
- nmea_check(r->in, r->pos);
- printf("[NMEA]:%s", r->in);
-
- r->pos = 0;
- }
-}
-
-
-int main(int argc, char *argv[])
-{
- printf("main() start \n");
- mbtk_log_init("radio", "MBTK_GNSS");
- if(argc != 3) {
- printf("./uart_test <dev> <baudrate>\n");
- return -1;
- }
-
- printf("main() start node = %s rate = %s\n", argv[1], argv[2]);
- fd = Ql_UART_Open(argv[1], (Enum_BaudRate)atoi(argv[2]), FC_NONE);
- if(fd < 0) {
- printf("Ql_UART_Open() fail.\n");
- return -1;
- }
-
- char read_buf[READ_SIZE] = {0};
- int read_len = -1;
- int i = 0;
-
- while(1)
- {
-
- read_len = Ql_UART_Read(fd, read_buf, READ_SIZE);
- if(read_len < 0 && errno != EWOULDBLOCK)
- {
- printf("error while reading from gps fd: %s\n", strerror(errno));
- }
- else
- {
- for(i = 0; i < read_len; i++)
- {
- nmea_reader_addc(&r, read_buf[i]);
- }
- memset(read_buf, 0x0 , read_len);
- }
- }
- printf("main() end \n");
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_gpio_test.c b/mbtk/test/libql_lib/ql_gpio_test.c
deleted file mode 100755
index c2b2754..0000000
--- a/mbtk/test/libql_lib/ql_gpio_test.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "ql/ql_gpio.h"
-#include "mbtk_log.h"
-
-int main(int argc, char *argv[])
-{
- mbtk_log_init("radio", "MBTK_GPIO");
-
- if(argc != 2) {
- printf("./gpio_test <gpio>\n");
- return -1;
- }
-
- int tmp_gpio = atoi(argv[1]);
- if(tmp_gpio <= 0) {
- printf("GPIO error : %d\n", tmp_gpio);
- return -1;
- }
-
- Enum_PinName gpio = (Enum_PinName)tmp_gpio;
- if(Ql_GPIO_Init(gpio, PINDIRECTION_OUT, PINLEVEL_LOW, PINPULLSEL_DISABLE)) {
- printf("Ql_GPIO_Init() fail.\n");
- return -1;
- }
-
- printf("GPIO : %d, dir : %s, level : %d\n", gpio, Ql_GPIO_GetDirection(gpio) == PINDIRECTION_IN ? "in" : "out",
- Ql_GPIO_GetLevel(gpio));
-
- if(Ql_GPIO_SetLevel(gpio, PINLEVEL_HIGH)) {
- printf("Ql_GPIO_SetLevel() fail.\n");
- return -1;
- }
-
- printf("GPIO : %d, dir : %s, level : %d\n", gpio, Ql_GPIO_GetDirection(gpio) == PINDIRECTION_IN ? "in" : "out",
- Ql_GPIO_GetLevel(gpio));
-
- if(Ql_GPIO_Uninit(gpio)) {
- printf("Ql_GPIO_Uninit() fail.\n");
- return -1;
- }
-
- printf("Success!!!\n");
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_i2c_test.c b/mbtk/test/libql_lib/ql_i2c_test.c
deleted file mode 100755
index 04aed4d..0000000
--- a/mbtk/test/libql_lib/ql_i2c_test.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "ql/ql_i2c.h"
-
-
-int main(int argc, char *argv[])
-{
- int fd = -1;
- if(argc != 2) {
- printf("./i2c_test <dev>\n");
- return -1;
- }
- char send_data[64] = {0};
- send_data[0] = 0x55;
- send_data[1] = 0x00;
- send_data[2] = 0x84;
- fd= Ql_I2C_Init(argv[1]);
- if(fd <= 0) {
- printf("Ql_I2C_Init() fail.\n");
- return -1;
- }
-
- if(Ql_I2C_Write(fd, 0x12, 0x10,send_data, 3) < 0) {
- printf("Ql_I2C_Write() fail.\n");
- return -1;
- }
-
- Ql_I2C_Deinit(fd);
-
- printf("Success!!!\n");
-
- return 0;
-}
diff --git a/mbtk/test/libql_lib/ql_nw_test.c b/mbtk/test/libql_lib/ql_nw_test.c
deleted file mode 100755
index 81acb5c..0000000
--- a/mbtk/test/libql_lib/ql_nw_test.c
+++ /dev/null
@@ -1,334 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#include <pthread.h>
-#include <sys/epoll.h>
-#include <string.h>
-#include <fcntl.h>
-#include <signal.h>
-
-#include "ql/ql_nw.h"
-#include "mbtk_log.h"
-
-static void help()
-{
- printf("net_pref : Get net prefferred.\n");
- printf("net_pref <net_pref> <roaming> : Set net prefferred.\n");
- printf("net_time : Get network time.\n");
- printf("operator : Get current operator information.\n");
- printf("net_avail : Get available networks.\n");
- printf("reg : Get current reg info.\n");
- printf("sel_mode: Get network select mode.\n");
- printf("sel_mode <sel_mode> <net_type> <plmn>: Set network select mode.\n");
- printf("signal : Get current signal.\n");
- printf("cell : Get cell info.\n");
- printf("volte : Get VOLTE state.\n");
- printf("csq_signal : Get current csq signal.\n");
-}
-
-static int proc_exit()
-{
- QL_NW_ERROR_CODE err = ql_nw_release();
- if(QL_NW_SUCCESS != err)
- {
- printf("ql_nw_release fail.");
- return -1;
- }
- return 0;
-}
-
-static void sig_process(int sig)
-{
- LOGI("I got signal %d\n", sig);
- switch(sig)
- {
- case SIGINT: // Ctrl + C
- {
- LOGI("Exit by SIGINT.\n");
- proc_exit();
- exit(0);
- }
- case SIGQUIT: // Ctrl + \ (类似 SIGINT ,但要产生core文件)
- {
- LOGI("Exit by SIGQUIT.\n");
- proc_exit();
- exit(0);
- }
- case SIGTERM:// 默认kill (同 SIGKILL ,但 SIGKILL 不可捕获)
- {
- LOGI("Exit by SIGTERM.\n");
- proc_exit();
- exit(0);
- }
- case SIGTSTP:// Ctrl + Z (同 SIGSTOP ,但 SIGSTOP 不可捕获)
- {
- LOGI("Exit by SIGTSTP.\n");
- exit(0);
- }
- case SIGSEGV: // 如空指针
- {
- LOGI("Exit by SIGSEGV.\n");
- exit(0);
- }
- default:
- {
- LOGI("Unknown sig:%d\n",sig);
- break;
- }
- }
-}
-
-int main(int argc, char *argv[])
-{
- signal(SIGINT, sig_process);
- signal(SIGQUIT, sig_process);
- signal(SIGTERM, sig_process);
- //signal(SIGTSTP, sig_process);
- //signal(SIGSEGV, sig_process);
-
- mbtk_log_init(NULL,"MBTK_QL_TEST");
-
- //test2(0, "192.168.1.198");
- //test2(1, "2409:8162:140:cd3c:1:2:1494:72ba");
- //test2(1, "254.128.0.0.0.0.0.0.0.1.0.2.144.5.212.239");
- //test2(1, "2400:3200::1");
-
- QL_NW_ERROR_CODE err = ql_nw_init();
- if(QL_NW_SUCCESS != err)
- {
- printf("ql_nw_init fail.");
- return -1;
- }
-
- printf(">>>>>>>>>>>>>>>>>>>>>>>>Enter cmd:\n");
- char cmd[100];
- while(1)
- {
- memset(cmd, 0, 100);
- if(fgets(cmd, 100, stdin))
- {
- char *ptr = cmd + strlen(cmd) - 1;
- while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
- {
- *ptr-- = '\0';
- }
-
- if(!strncasecmp(cmd, "net_pref", 8)){
- QL_NW_CONFIG_INFO_T net_pref;
- if(!strcasecmp(cmd, "net_pref")) { // Get
- err = ql_nw_get_config(&net_pref);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("net_pref : %d, roaming : %d\n", net_pref.preferred_nw_mode, net_pref.roaming_pref);
- }
- } else { // Set
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- net_pref.preferred_nw_mode = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- net_pref.roaming_pref = atoi(ptr);
-
- err = ql_nw_set_config(&net_pref);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("net_pref set success\n");
- }
- }
- } else if(!strncasecmp(cmd, "net_time", 8)){
- QL_NW_NITZ_TIME_INFO_T time;
- err = ql_nw_get_nitz_time_info(&time);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Time : %s, %ld, %d\n", time.nitz_time, time.abs_time, time.leap_sec);
- }
- } else if(!strncasecmp(cmd, "operator", 8)){
- QL_NW_OPERATOR_INFO_T operator;
- err = ql_nw_get_operator_name(&operator);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Operator : %s, %s, %s, %s\n", operator.long_eons, operator.short_eons, operator.mcc, operator.mnc);
- }
- } else if(!strncasecmp(cmd, "net_avail", 9)){
- QL_NW_SCAN_RESULT_LIST_INFO_T nets;
- err = ql_nw_perform_scan(&nets);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- if(nets.entry_len > 0) {
- int i = 0;
- for(; i < nets.entry_len; i++) {
- printf("Net %d: %d, %d, %s, %s, %s, %s\n", i+1, nets.entry[i].status, nets.entry[i].act,
- nets.entry[i].operator_name.long_eons, nets.entry[i].operator_name.short_eons,
- nets.entry[i].operator_name.mcc, nets.entry[i].operator_name.mnc);
- }
- }
- }
- } else if(!strncasecmp(cmd, "reg", 3)){
- QL_NW_REG_STATUS_INFO_T reg;
- err = ql_nw_get_reg_status(®);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Data Reg:%d, %d, %x, %x\n", reg.data_reg.state, reg.data_reg.rat, reg.data_reg.lac, reg.data_reg.cid);
- printf("Voice Reg:%d, %d, %x, %x\n", reg.voice_reg.state, reg.voice_reg.rat, reg.voice_reg.lac, reg.voice_reg.cid);
- }
- } else if(!strncasecmp(cmd, "sel_mode", 8)){ // "sel_mode" or "sel_mode 460 00 7"
- QL_NW_SELECTION_INFO_T net;
- memset(&net, 0, sizeof(QL_NW_SELECTION_INFO_T));
- if(!strcasecmp(cmd, "sel_mode")) { // Get
- err = ql_nw_get_selection(&net);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Net : %d, %s, %s, %d\n", net.nw_selection_mode , net.mcc , net.mnc , net.act);
- }
- } else { // Set
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- net.nw_selection_mode = atoi(ptr);
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- //net.mcc = (uint8)atoi(ptr);
- memcpy(net.mcc, ptr, 4);
- int i = 0;
- while(i < 4) {
- if(net.mcc[i] == ' ') {
- net.mcc[i] = '\0';
- break;
- }
- i++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- //net.mnc = (uint32)atoi(ptr);
- memcpy(net.mnc, ptr, 4);
- i = 0;
- while(i < 4) {
- if(net.mnc[i] == ' ') {
- net.mnc[i] = '\0';
- break;
- }
- i++;
- }
-
- ptr = strstr(ptr, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- net.act = (QL_NW_ACCESS_TECHNOLOGY)atoi(ptr);
-
- err = ql_nw_set_selection(&net);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Net select mode set success\n");
- }
- }
- } else if(!strncasecmp(cmd, "signal", 6)){
- QL_NW_SIGNAL_STRENGTH_INFO_T sig;
- err = ql_nw_get_signal_strength(&sig);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Signal GSM:%d, %d, %d, %d\n", sig.GW_SignalStrength.rscp, sig.GW_SignalStrength.bitErrorRate, sig.GW_SignalStrength.rscp, sig.GW_SignalStrength.ecio);
- printf("Signal LTE:%d, %d, %d, %d, %d\n", sig.LTE_SignalStrength.rssi , sig.LTE_SignalStrength.rsrp, sig.LTE_SignalStrength.rsrq, sig.LTE_SignalStrength.rssnr, sig.LTE_SignalStrength.cqi);
- }
- } else if(!strncasecmp(cmd, "cell", 4)){
- QL_NW_CELL_INFO_T cell;
- err = ql_nw_get_cell_info(&cell);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- int i = 0;
- if(cell.gsm_info_valid) {
- while(i < cell.gsm_info_num) {
- printf("GSM cell %d: %d, %x, %d, %d, %x, %d, %d\n", i + 1, cell.gsm_info[i].flag, cell.gsm_info[i].cid, cell.gsm_info[i].mcc, cell.gsm_info[i].mnc, cell.gsm_info[i].lac, cell.gsm_info[i].arfcn, cell.gsm_info[i].bsic);
- i++;
- }
- }
-
- if(cell.umts_info_valid) {
- i = 0;
- while(i < cell.umts_info_num) {
- printf("UMTS cell %d: %d, %x, %x, %d, %d, %x, %d, %d\n", i + 1, cell.umts_info[i].flag , cell.umts_info[i].cid, cell.umts_info[i].lcid, cell.umts_info[i].mcc, cell.umts_info[i].mnc, cell.umts_info[i].lac, cell.umts_info[i].uarfcn, cell.umts_info[i].psc);
- i++;
- }
- }
-
- if(cell.lte_info_valid) {
- i = 0;
- while(i < cell.lte_info_num) {
- printf("LTE cell %d: %d, %x, %d, %d, %x, %d, %d\n", i + 1, cell.lte_info[i].flag, cell.lte_info[i].cid, cell.lte_info[i].mcc, cell.lte_info[i].mnc, cell.lte_info[i].tac, cell.lte_info[i].pci, cell.lte_info[i].earfcn);
- i++;
- }
- }
- }
- } else if(!strncasecmp(cmd, "volte", 5)){
- VOLTE_STATE state;
- err = ql_nw_get_volte_state(&state);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("VOLTE state : %d\n", state.reg_state);
- }
- } else if(!strncasecmp(cmd, "csq_signal", 10)){
- QL_NW_CSQ_SIGNAL_STRENGTH_INFO_T signal;
- err = ql_nw_csq_get_signal_strength(&signal);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("+CSQ : %d, %d\n", signal.rssi, signal.bitErrorRate);
- }
- }
- else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help")) {
- help();
- } else if(!strcasecmp(cmd, "q")) {
- break;
- } else {
- printf("\n");
- }
- }
- }
-
- proc_exit();
-
- LOGI("Client exec complete.");
-#if 1
- while(1)
- {
- sleep(1000 * 365 * 24 * 60 * 60);
- }
-#else
- sleep(1);
-#endif
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_sim_test.c b/mbtk/test/libql_lib/ql_sim_test.c
deleted file mode 100755
index f907ab3..0000000
--- a/mbtk/test/libql_lib/ql_sim_test.c
+++ /dev/null
@@ -1,274 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <netinet/in.h>
-#include <pthread.h>
-#include <sys/epoll.h>
-#include <string.h>
-#include <fcntl.h>
-#include <signal.h>
-
-#include "ql/ql_sim.h"
-#include "mbtk_log.h"
-
-static void help()
-{
- printf("imsi : Get IMSI.\n");
- printf("iccid : Get ICCID.\n");
- printf("pn : Get phone number.\n");
- printf("pin_en <pin> : Enable pin.\n");
- printf("pin_dis <pin> : Disable pin.\n");
- printf("pin_ch <old_pin> <new_pin> : Change pin.\n");
- printf("pin_verify <pin> : Verify pin.\n");
- printf("puk_unlock <puk> <new_pin> : Unlock using PUK.\n");
- printf("sim : Get sim state.\n");
-}
-
-static int proc_exit()
-{
- QL_SIM_ERROR_CODE err = ql_sim_release();
- if(QL_SIM_SUCCESS != err)
- {
- printf("ql_sim_release fail.");
- return -1;
- }
- return 0;
-}
-
-static void sig_process(int sig)
-{
- LOGI("I got signal %d\n", sig);
- switch(sig)
- {
- case SIGINT: // Ctrl + C
- {
- LOGI("Exit by SIGINT.\n");
- proc_exit();
- exit(0);
- }
- case SIGQUIT: // Ctrl + \ (类似 SIGINT ,但要产生core文件)
- {
- LOGI("Exit by SIGQUIT.\n");
- proc_exit();
- exit(0);
- }
- case SIGTERM:// 默认kill (同 SIGKILL ,但 SIGKILL 不可捕获)
- {
- LOGI("Exit by SIGTERM.\n");
- proc_exit();
- exit(0);
- }
- case SIGTSTP:// Ctrl + Z (同 SIGSTOP ,但 SIGSTOP 不可捕获)
- {
- LOGI("Exit by SIGTSTP.\n");
- exit(0);
- }
- case SIGSEGV: // 如空指针
- {
- LOGI("Exit by SIGSEGV.\n");
- exit(0);
- }
- default:
- {
- LOGI("Unknown sig:%d\n",sig);
- break;
- }
- }
-}
-
-int main(int argc, char *argv[])
-{
- signal(SIGINT, sig_process);
- signal(SIGQUIT, sig_process);
- signal(SIGTERM, sig_process);
- //signal(SIGTSTP, sig_process);
- //signal(SIGSEGV, sig_process);
-
- mbtk_log_init(NULL,"MBTK_QL_TEST");
-
- //test2(0, "192.168.1.198");
- //test2(1, "2409:8162:140:cd3c:1:2:1494:72ba");
- //test2(1, "254.128.0.0.0.0.0.0.0.1.0.2.144.5.212.239");
- //test2(1, "2400:3200::1");
-
- QL_SIM_ERROR_CODE err = ql_sim_init();
- if(QL_SIM_SUCCESS != err)
- {
- printf("ql_sim_init fail.");
- return -1;
- }
-
- printf(">>>>>>>>>>>>>>>>>>>>>>>>Enter cmd:\n");
- char cmd[100];
- while(1)
- {
- memset(cmd, 0, 100);
- if(fgets(cmd, 100, stdin))
- {
- char *ptr = cmd + strlen(cmd) - 1;
- while(ptr >= cmd && (*ptr == '\r' || *ptr == '\n'))
- {
- *ptr-- = '\0';
- }
-
- if(!strncasecmp(cmd, "imsi", 4)){
- char imsi[30];
- err = ql_sim_get_imsi(imsi, 30);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("IMSI : %s\n", imsi);
- }
- }else if(!strncasecmp(cmd, "iccid", 5)){
- char iccid[30];
- err = ql_sim_get_iccid(iccid, 30);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("ICCID : %s\n", iccid);
- }
- }else if(!strncasecmp(cmd, "pn", 2)){
- char phonenumber[30];
- err = ql_sim_get_phonenumber(phonenumber, 30);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("PhoneNumber : %s\n", phonenumber);
- }
- }else if(!strncasecmp(cmd, "pin_en", 6)){ // pin_en <pin>
- QL_SIM_VERIFY_PIN_INFO pin = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(pin.pin_value, ptr, strlen(ptr));
-
- err = ql_sim_enable_pin(&pin);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Enable PIN(%s) success.\n", pin.pin_value);
- }
- }else if(!strncasecmp(cmd, "pin_dis", 7)){ // pin_dis <pin>
- QL_SIM_VERIFY_PIN_INFO pin = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(pin.pin_value, ptr, strlen(ptr));
-
- err = ql_sim_disable_pin(&pin);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Disable PIN(%s) success.\n", pin.pin_value);
- }
- }else if(!strncasecmp(cmd, "pin_ch", 6)){ // pin_ch <old_pin> <new_pin>
- QL_SIM_CHANGE_PIN_INFO pin = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
-
- char *tmp = pin.old_pin_value;
- while(*ptr != '\0' && *ptr != ' ' && *ptr != '\r' && *ptr != '\n') {
- *tmp++ = *ptr++;
- }
- *tmp = '\0';
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
-
- tmp = pin.new_pin_value;
- while(*ptr != '\0' && *ptr != ' ' && *ptr != '\r' && *ptr != '\n') {
- *tmp++ = *ptr++;
- }
- *tmp = '\0';
-
- err = ql_sim_change_pin(&pin);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Change PIN(%s -> %s) success.\n", pin.old_pin_value, pin.new_pin_value);
- }
- }else if(!strncasecmp(cmd, "pin_verify", 10)){ // pin_verify <pin>
- QL_SIM_VERIFY_PIN_INFO pin = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
- memcpy(pin.pin_value, ptr, strlen(ptr));
-
- err = ql_sim_verify_pin(&pin);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Verify PIN(%s) success.\n", pin.pin_value);
- }
- }else if(!strncasecmp(cmd, "puk_unlock", 10)){ // puk_unlock <puk> <new_pin>
- QL_SIM_UNBLOCK_PIN_INFO pin = {0};
- char *ptr = strstr(cmd, " ");
- if(ptr == NULL)
- continue;
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
-
- char *tmp = pin.puk_value;
- while(*ptr != '\0' && *ptr != ' ' && *ptr != '\r' && *ptr != '\n') {
- *tmp++ = *ptr++;
- }
- *tmp = '\0';
- while(*ptr != '\0' && *ptr == ' ')
- ptr++;
-
- tmp = pin.new_pin_value;
- while(*ptr != '\0' && *ptr != ' ' && *ptr != '\r' && *ptr != '\n') {
- *tmp++ = *ptr++;
- }
- *tmp = '\0';
-
- err = ql_sim_unblock_pin(&pin);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("PUI unlock(PUK:%s PIN:%s) success.\n", pin.puk_value, pin.new_pin_value);
- }
- }else if(!strncasecmp(cmd, "sim", 3)){
- QL_SIM_CARD_STATUS_INFO sim;
- err = ql_sim_get_card_status(&sim);
- if(err) {
- printf("Error : %d\n", err);
- } else {
- printf("Sim type:%d, state:%d, PIN:%d,%d,%d,%d\n", sim.card_type, sim.card_state, sim.card_pin_info.pin1_num_retries, sim.card_pin_info.pin2_num_retries, sim.card_pin_info.puk1_num_retries, sim.card_pin_info.puk2_num_retries);
- }
- }
- else if(!strcasecmp(cmd, "h") || !strcasecmp(cmd, "help")) {
- help();
- } else if(!strcasecmp(cmd, "q")) {
- break;
- } else {
- printf("\n");
- }
- }
- }
-
- proc_exit();
-
- LOGI("Client exec complete.");
-#if 1
- while(1)
- {
- sleep(1000 * 365 * 24 * 60 * 60);
- }
-#else
- sleep(1);
-#endif
- return 0;
-}
-
diff --git a/mbtk/test/libql_lib/ql_sms_test.c b/mbtk/test/libql_lib/ql_sms_test.c
deleted file mode 100755
index 2d07d80..0000000
--- a/mbtk/test/libql_lib/ql_sms_test.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * \file dtmf_test.c
- * \brief A Documented file.
- *
- * Detailed description
- * \Author: jinLuo
- * \Version: 1.0.0
- * \Date: 2022-12-1
- */
-
-/******************************************************************************\
- * Include files
-\******************************************************************************/
-#include <pthread.h>
-#include <time.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <poll.h>
-#include <stdlib.h>
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "ql/ql_sms.h"
-
-
-int main(int argc, char *argv[])
-{
- char operator[10];
- char serNum[50] = {0};
- char phonenumter[20] ={0};
- int opt;
- int ret, uToken;
-
- while(1)
- {
- printf("=========audio main=========\n"
- "\t0 exit\n"
- "\t1 sms init\n"
- "\t2 send sms\n"
- "\t3 wait receive new sms\n"
- "\t4 delete sms(int index);\n"
- "\t5 list sms\n"
- "\t6 query sms storage status\n"
- "\t7 query service number\n"
- "\t8 set service number\n"
- "\t9 deinit sms\n"
- "operator: >> ");
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- ql_sms_init();
- break;
- case 2:
- ql_sms_send_text_msg("+8615775690697", "hello world", 1);
- break;
- case 3:
- ql_sms_add_event_handler(NULL, NULL);
- break;
- case 4:
- ql_sms_send_pdu_msg("+8615775690697","你好",1);
- break;
- // printf("please input volume (0~100): \n");
- // fgets(operator, sizeof(operator), stdin);
- // fflush(stdin);
- // opt = atoi(operator);
- // lynq_delete_sms(opt);
- break;
- case 5:
- printf("please input index (0~50): \n");
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- // lynq_list_sms(1, opt, "ALL" );
- break;
- case 6:
- // lynq_query_sms_storage_status();
- break;
- case 7:
- ret = ql_sms_get_sms_center_address(serNum);
- if(!ret)
- printf("get_smsc:%s\n", serNum);
- break;
- case 8:
- // printf("please input service num: \n");
- // fgets(phonenumter, sizeof(phonenumter), stdin);
- // fflush(stdin);
- // memcpy(phonenumter, "+8613800280500", "+8613800280500");
-
- // ret= ql_sms_set_sms_center_address(phonenumter);
- ret= ql_sms_set_sms_center_address("+8613800280500");
- break;
- case 9:
- ql_sms_release();
- break;
- default:
- break;
- }
- }
-
- return 0;
-}
diff --git a/mbtk/test/libql_lib/ql_spi_test.c b/mbtk/test/libql_lib/ql_spi_test.c
deleted file mode 100755
index dff5208..0000000
--- a/mbtk/test/libql_lib/ql_spi_test.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include "ql/ql_spi.h"
-
-
-int main(int argc, char *argv[])
-{
- char send_data[64] = {0};
- char read_data[64] = {0};
- char crc = 0;
- int i = 0;
- int j = 0;
-
- //system("echo PB6 > /sys/kernel/debug/sunxi_pinctrl/sunxi_pin");
- //system("echo PB6 1 > /sys/kernel/debug/sunxi_pinctrl/function");
- //system("echo PB6 0 > /sys/kernel/debug/sunxi_pinctrl/data");
-
-#if 0
-static const char *device = "/dev/spidev1.0\0";
-static uint8_t mode = 3; /* SPI通信使用全双工,设置CPOL=0,CPHA=0。 */
-static uint8_t bits = 8; /* 8bits读写,MSB first。*/
-static uint32_t speed = 100 * 1000;/* 设置0.5M传输速度 */
-static uint16_t delay = 500;
-#endif
- int fd = -1;
- /* spi 初始化程序 */
- if((fd = Ql_SPI_Init("/dev/spidev1.0", SPIMODE3, 8, S_13M)) <= 0)
- {
- printf("Ql_SPI_Init() fail.\n");
- return -1;
- }
-
- send_data[0] = 0x55;
- send_data[1] = 0x00;
- send_data[2] = 0x84;
- send_data[3] = 0x00;
- send_data[4] = 0x08;
- send_data[5] = 0x00;
- send_data[6] = 0x00;
-
- crc = send_data[1];
- for (i = 2; i < 7; i++)
- {
- crc ^= send_data[i];
- }
- crc = ~crc;
-
- send_data[7] = crc;
-
- printf("send data:");
- for (i = 0; i < 8; i++)
- {
- printf("%#x, ", send_data[i]);
- }
- printf("\n");
-
- /* spi 发送数据 */
- if(Ql_SPI_Write_Read(fd, send_data,read_data, 8)) {
- printf("Ql_SPI_Write_Read() fail.\n");
- return -1;
- }
-
-#if 0
- printf("read data:");
- for (j = 0; j < 20; j++)
- {
- printf("%#x, ", read_data[j]);
- }
-
- usleep(10000);
-
- memset(read_data, 0, sizeof(read_data));
- memset(send_data, 0, sizeof(send_data));
- /* spi 读取数据 */
- if(Ql_SPI_Write_Read(fd, send_data,read_data, 16)) {
- printf("Ql_SPI_Write_Read() fail.\n");
- return -1;
- }
-
- printf("read data:");
- for (j = 0; j < 20; j++)
- {
- printf("%#x, ", read_data[j]);
- }
-#endif
-
- if(Ql_SPI_DeInit(fd)) {
- printf("Ql_SPI_DeInit() fail.\n");
- return -1;
- }
-
- printf("success!!!\n");
- return 0;
-}
diff --git a/mbtk/test/libql_lib/ql_uart_test.c b/mbtk/test/libql_lib/ql_uart_test.c
deleted file mode 100755
index 2bef6ac..0000000
--- a/mbtk/test/libql_lib/ql_uart_test.c
+++ /dev/null
@@ -1,96 +0,0 @@
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include "ql/ql_uart.h"
-
-int fd;
-pthread_mutex_t mutexsum; //创建mutex锁
-
-typedef struct {
- char *node;
- char *rate;
-} thread_arg;
-
-void *read_function(void *arg) {
- thread_arg *args = (thread_arg *)arg;
- printf("read_function() node = %s rate = %s\n", args->node, args->rate);
-
- ST_UARTDCB dcb;
- memset(&dcb, 0x0, sizeof(ST_UARTDCB));
- dcb.databit = DB_CS8;
- dcb.parity = PB_NONE;
- dcb.flowctrl = FC_NONE;
-
- if(Ql_UART_SetDCB(fd, &dcb)) {
- printf("Ql_UART_SetDCB() fail.\n");
- return -1;
- }
-
- char buff[1024];
- int len;
- while(1) {
- // pthread_mutex_lock(&mutexsum);
- memset(buff, 0x0 ,1024);
- len = Ql_UART_Read(fd, buff, 1024);
- if(len > 0) {
- if(memcmp(buff, "exit", 4) == 0) {
- Ql_UART_Write(fd, "exit\r\n", 6);
- break;
- } else {
- printf("<%s\n", buff);
-
- Ql_UART_Write(fd, "Module received data!\r\n", 23);
- }
- }
- // pthread_mutex_unlock(&mutexsum);
- }
- Ql_UART_Close(fd);
- return NULL;
-}
-
-void *write_function(void *arg) {
- char str[20] = "write success!\r\n";
- while (1)
- {
- sleep(3);
- // pthread_mutex_lock(&mutexsum);
- Ql_UART_Write(fd, str, strlen(str));
- // pthread_mutex_unlock(&mutexsum);
- }
- Ql_UART_Close(fd);
- return NULL;
-}
-
-int main(int argc, char *argv[])
-{
- printf("main() start \n");
- mbtk_log_init("radio", "MBTK_UART");
- if(argc != 3) {
- printf("./uart_test <dev> <baudrate>\n");
- return -1;
- }
-
- printf("main() start node = %s rate = %s\n", argv[1], argv[2]);
- fd = Ql_UART_Open(argv[1], (Enum_BaudRate)atoi(argv[2]), FC_NONE);
- if(fd < 0) {
- printf("Ql_UART_Open() fail.\n");
- return -1;
- }
-
- // pthread_mutex_init(&mutexsum, NULL);
- pthread_t read_thread, write_thread;
-
- thread_arg args = {argv[1], argv[2]};
- printf("start read_thread node = %s rate = %s\n", args.node, args.rate);
- pthread_create(&read_thread, NULL, read_function, &args);
-
- printf("start write_thread \n");
- pthread_create(&write_thread, NULL, write_function, NULL);
-
- pthread_join(read_thread, NULL);
- pthread_join(write_thread, NULL);
-
- printf("main() end \n");
- return 0;
-}
\ No newline at end of file
diff --git a/mbtk/test/libql_lib/ql_voice_test.c b/mbtk/test/libql_lib/ql_voice_test.c
deleted file mode 100755
index 43af279..0000000
--- a/mbtk/test/libql_lib/ql_voice_test.c
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "mbtk_type.h"
-//#include "ql/ql_vcall.h"
-//#include "ql/ql_mcm_call.h"
-#include "ql/ql_voice.h"
-
-
-
-
-int main(int argc, char *argv[])
-{
- char operator[10] = {0};
- int opt;
- int ret = 0;
- char phoneNum[32] = {0};
- int h_voice = 0;
-
- while(1)
- {
- printf("=========call main=========\n"
- "\t0 exit\n"
- "\t1 call init\n"
- "\t2 call register handle\n"
- "\t3 call start\n"
- "\t4 call end\n"
- "\t5 call answer\n"
- "\t6 call set auto answer\n"
- "\t7 call hold\n"
- "\t8 call unhold\n"
- "\t9 call deinit\n"
- "operator: >> ");
-
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- opt = atoi(operator);
- switch (opt)
- {
- case 0:
- printf("main exit\n");
- return 0;
- case 1:
- ret = ql_voice_call_init();
- if(ret < 0)
- {
- printf("ql_voice_call_init FAIL. ret:%d\n",ret);
- return -1;
- }
- printf("ql_voice_call_init ret = %d, with h_voice=%d\n", ret, h_voice);
-
- break;
- case 2:
- ret = ql_voice_call_event_register(NULL, NULL);
- if(ret < 0)
- {
- printf("ql_voice_call_event_register FAIL. ret:%d\n",ret);
- return -1;
- }
- break;
- case 3:
- ql_voice_call_start("15775690697");
- break;
- case 4:
- ql_voice_call_end();
- break;
- case 5:
- ql_voice_call_answer();
- break;
- case 6:
- ql_voice_auto_answer(6000);
- break;
- case 7:
- ql_voice_call_hold();
- break;
- case 8:
- ql_voice_call_unhold();
- break;
- case 9:
- ql_voice_call_release();
- break;
- case 10:
- // QL_Voice_Call_UnHold;
- break;
- default:
- break;
- }
-
- sleep(1);
- }
-
- return 0;
-}
-