diff options
Diffstat (limited to 'drivers/media/dvb-frontends')
19 files changed, 26522 insertions, 21562 deletions
diff --git a/drivers/media/dvb-frontends/drx39xyj/bsp_host.h b/drivers/media/dvb-frontends/drx39xyj/bsp_host.h index 95b5232b0c67..5a2dd5f969df 100644 --- a/drivers/media/dvb-frontends/drx39xyj/bsp_host.h +++ b/drivers/media/dvb-frontends/drx39xyj/bsp_host.h @@ -50,7 +50,6 @@ extern "C" { TYPEDEFS -------------------------------------------------------------------------*/ - /*------------------------------------------------------------------------- DEFINES -------------------------------------------------------------------------*/ @@ -58,17 +57,17 @@ DEFINES /*------------------------------------------------------------------------- Exported FUNCTIONS -------------------------------------------------------------------------*/ -DRXStatus_t DRXBSP_HST_Init( void ); + DRXStatus_t DRXBSP_HST_Init(void); -DRXStatus_t DRXBSP_HST_Term( void ); + DRXStatus_t DRXBSP_HST_Term(void); -void* DRXBSP_HST_Memcpy( void *to, void *from, u32_t n); + void *DRXBSP_HST_Memcpy(void *to, void *from, u32_t n); -int DRXBSP_HST_Memcmp( void *s1, void *s2, u32_t n); + int DRXBSP_HST_Memcmp(void *s1, void *s2, u32_t n); -u32_t DRXBSP_HST_Clock( void ); + u32_t DRXBSP_HST_Clock(void); -DRXStatus_t DRXBSP_HST_Sleep( u32_t n ); + DRXStatus_t DRXBSP_HST_Sleep(u32_t n); /*------------------------------------------------------------------------- THE END @@ -76,5 +75,4 @@ THE END #ifdef __cplusplus } #endif - -#endif /* __DRXBSP_HOST_H__ */ +#endif /* __DRXBSP_HOST_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/bsp_i2c.h b/drivers/media/dvb-frontends/drx39xyj/bsp_i2c.h index 25207c80a6b8..982fc6b7eaa7 100644 --- a/drivers/media/dvb-frontends/drx39xyj/bsp_i2c.h +++ b/drivers/media/dvb-frontends/drx39xyj/bsp_i2c.h @@ -59,7 +59,7 @@ TYPEDEFS * \typedef I2Caddr_t * \brief I2C device address (7-bit or 10-bit) */ -typedef u16_t I2Caddr_t; + typedef u16_t I2Caddr_t; /** * \typedef I2CdevId_t @@ -71,7 +71,7 @@ typedef u16_t I2Caddr_t; * I2C bus. * */ -typedef u16_t I2CdevId_t; + typedef u16_t I2CdevId_t; /** * \struct _I2CDeviceAddr_t @@ -81,11 +81,14 @@ typedef u16_t I2CdevId_t; * The userData pointer can be used for application specific purposes. * */ -struct _I2CDeviceAddr_t { - I2Caddr_t i2cAddr; /**< The I2C address of the device. */ - I2CdevId_t i2cDevId; /**< The device identifier. */ - void *userData; /**< User data pointer */ -}; + struct _I2CDeviceAddr_t { + I2Caddr_t i2cAddr; + /**< The I2C address of the device. */ + I2CdevId_t i2cDevId; + /**< The device identifier. */ + void *userData; + /**< User data pointer */ + }; /** * \typedef I2CDeviceAddr_t @@ -94,13 +97,13 @@ struct _I2CDeviceAddr_t { * This structure contains the I2C address and the device ID. * */ -typedef struct _I2CDeviceAddr_t I2CDeviceAddr_t; + typedef struct _I2CDeviceAddr_t I2CDeviceAddr_t; /** * \typedef pI2CDeviceAddr_t * \brief Pointer to I2C device parameters. */ -typedef I2CDeviceAddr_t *pI2CDeviceAddr_t; + typedef I2CDeviceAddr_t *pI2CDeviceAddr_t; /*------------------------------------------------------------------------------ DEFINES @@ -133,7 +136,6 @@ STRUCTS Exported FUNCTIONS ------------------------------------------------------------------------------*/ - /** * \fn DRXBSP_I2C_Init() * \brief Initialize I2C communication module. @@ -141,8 +143,7 @@ Exported FUNCTIONS * \retval DRX_STS_OK Initialization successful. * \retval DRX_STS_ERROR Initialization failed. */ -DRXStatus_t DRXBSP_I2C_Init( void ); - + DRXStatus_t DRXBSP_I2C_Init(void); /** * \fn DRXBSP_I2C_Term() @@ -151,7 +152,7 @@ DRXStatus_t DRXBSP_I2C_Init( void ); * \retval DRX_STS_OK Termination successful. * \retval DRX_STS_ERROR Termination failed. */ -DRXStatus_t DRXBSP_I2C_Term( void ); + DRXStatus_t DRXBSP_I2C_Term(void); /** * \fn DRXStatus_t DRXBSP_I2C_WriteRead( pI2CDeviceAddr_t wDevAddr, @@ -183,13 +184,11 @@ DRXStatus_t DRXBSP_I2C_Term( void ); * The device ID can be useful if several devices share an I2C address. * It can be used to control a "switch" on the I2C bus to the correct device. */ -DRXStatus_t DRXBSP_I2C_WriteRead( pI2CDeviceAddr_t wDevAddr, - u16_t wCount, - pu8_t wData, - pI2CDeviceAddr_t rDevAddr, - u16_t rCount, - pu8_t rData); - + DRXStatus_t DRXBSP_I2C_WriteRead(pI2CDeviceAddr_t wDevAddr, + u16_t wCount, + pu8_t wData, + pI2CDeviceAddr_t rDevAddr, + u16_t rCount, pu8_t rData); /** * \fn DRXBSP_I2C_ErrorText() @@ -198,14 +197,13 @@ DRXStatus_t DRXBSP_I2C_WriteRead( pI2CDeviceAddr_t wDevAddr, * * \return char* Pointer to human readable error text. */ -char* DRXBSP_I2C_ErrorText( void ); + char *DRXBSP_I2C_ErrorText(void); /** * \var DRX_I2C_Error_g; * \brief I2C specific error codes, platform dependent. */ -extern int DRX_I2C_Error_g; - + extern int DRX_I2C_Error_g; /*------------------------------------------------------------------------------ THE END @@ -213,4 +211,4 @@ THE END #ifdef __cplusplus } #endif -#endif /* __BSPI2C_H__ */ +#endif /* __BSPI2C_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/bsp_tuner.h b/drivers/media/dvb-frontends/drx39xyj/bsp_tuner.h index 668f988e8687..6a92a684c22e 100644 --- a/drivers/media/dvb-frontends/drx39xyj/bsp_tuner.h +++ b/drivers/media/dvb-frontends/drx39xyj/bsp_tuner.h @@ -51,24 +51,23 @@ extern "C" { DEFINES ------------------------------------------------------------------------------*/ - - /* Sub-mode bits should be adjacent and incremental */ -#define TUNER_MODE_SUB0 0x0001 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB1 0x0002 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB2 0x0004 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB3 0x0008 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB4 0x0010 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB5 0x0020 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB6 0x0040 /* for sub-mode (e.g. RF-AGC setting) */ -#define TUNER_MODE_SUB7 0x0080 /* for sub-mode (e.g. RF-AGC setting) */ - -#define TUNER_MODE_DIGITAL 0x0100 /* for digital channel (e.g. DVB-T) */ -#define TUNER_MODE_ANALOG 0x0200 /* for analog channel (e.g. PAL) */ -#define TUNER_MODE_SWITCH 0x0400 /* during channel switch & scanning */ -#define TUNER_MODE_LOCK 0x0800 /* after tuner has locked */ -#define TUNER_MODE_6MHZ 0x1000 /* for 6MHz bandwidth channels */ -#define TUNER_MODE_7MHZ 0x2000 /* for 7MHz bandwidth channels */ -#define TUNER_MODE_8MHZ 0x4000 /* for 8MHz bandwidth channels */ + /* Sub-mode bits should be adjacent and incremental */ +#define TUNER_MODE_SUB0 0x0001 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB1 0x0002 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB2 0x0004 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB3 0x0008 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB4 0x0010 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB5 0x0020 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB6 0x0040 /* for sub-mode (e.g. RF-AGC setting) */ +#define TUNER_MODE_SUB7 0x0080 /* for sub-mode (e.g. RF-AGC setting) */ + +#define TUNER_MODE_DIGITAL 0x0100 /* for digital channel (e.g. DVB-T) */ +#define TUNER_MODE_ANALOG 0x0200 /* for analog channel (e.g. PAL) */ +#define TUNER_MODE_SWITCH 0x0400 /* during channel switch & scanning */ +#define TUNER_MODE_LOCK 0x0800 /* after tuner has locked */ +#define TUNER_MODE_6MHZ 0x1000 /* for 6MHz bandwidth channels */ +#define TUNER_MODE_7MHZ 0x2000 /* for 7MHz bandwidth channels */ +#define TUNER_MODE_8MHZ 0x4000 /* for 8MHz bandwidth channels */ #define TUNER_MODE_SUB_MAX 8 #define TUNER_MODE_SUBALL ( TUNER_MODE_SUB0 | TUNER_MODE_SUB1 | \ @@ -80,92 +79,90 @@ DEFINES TYPEDEFS ------------------------------------------------------------------------------*/ -typedef u32_t TUNERMode_t; -typedef pu32_t pTUNERMode_t; - -typedef char* TUNERSubMode_t; /* description of submode */ -typedef TUNERSubMode_t *pTUNERSubMode_t; - - -typedef enum { - - TUNER_LOCKED, - TUNER_NOT_LOCKED + typedef u32_t TUNERMode_t; + typedef pu32_t pTUNERMode_t; -} TUNERLockStatus_t, *pTUNERLockStatus_t; + typedef char *TUNERSubMode_t; /* description of submode */ + typedef TUNERSubMode_t *pTUNERSubMode_t; + typedef enum { -typedef struct { + TUNER_LOCKED, + TUNER_NOT_LOCKED + } TUNERLockStatus_t, *pTUNERLockStatus_t; - char *name; /* Tuner brand & type name */ - DRXFrequency_t minFreqRF; /* Lowest RF input frequency, in kHz */ - DRXFrequency_t maxFreqRF; /* Highest RF input frequency, in kHz */ + typedef struct { - u8_t subMode; /* Index to sub-mode in use */ - pTUNERSubMode_t subModeDescriptions; /* Pointer to description of sub-modes*/ - u8_t subModes; /* Number of available sub-modes */ + char *name; /* Tuner brand & type name */ + DRXFrequency_t minFreqRF; /* Lowest RF input frequency, in kHz */ + DRXFrequency_t maxFreqRF; /* Highest RF input frequency, in kHz */ - /* The following fields will be either 0, NULL or FALSE and do not need - initialisation */ - void *selfCheck; /* gives proof of initialization */ - Bool_t programmed; /* only valid if selfCheck is OK */ - DRXFrequency_t RFfrequency; /* only valid if programmed */ - DRXFrequency_t IFfrequency; /* only valid if programmed */ + u8_t subMode; /* Index to sub-mode in use */ + pTUNERSubMode_t subModeDescriptions; /* Pointer to description of sub-modes */ + u8_t subModes; /* Number of available sub-modes */ - void* myUserData; /* pointer to associated demod instance */ - u16_t myCapabilities; /* value for storing application flags */ + /* The following fields will be either 0, NULL or FALSE and do not need + initialisation */ + void *selfCheck; /* gives proof of initialization */ + Bool_t programmed; /* only valid if selfCheck is OK */ + DRXFrequency_t RFfrequency; /* only valid if programmed */ + DRXFrequency_t IFfrequency; /* only valid if programmed */ -} TUNERCommonAttr_t, *pTUNERCommonAttr_t; + void *myUserData; /* pointer to associated demod instance */ + u16_t myCapabilities; /* value for storing application flags */ + } TUNERCommonAttr_t, *pTUNERCommonAttr_t; /* * Generic functions for DRX devices. */ -typedef struct TUNERInstance_s *pTUNERInstance_t; - -typedef DRXStatus_t (*TUNEROpenFunc_t)( pTUNERInstance_t tuner ); -typedef DRXStatus_t (*TUNERCloseFunc_t)( pTUNERInstance_t tuner ); - -typedef DRXStatus_t (*TUNERSetFrequencyFunc_t)( pTUNERInstance_t tuner, - TUNERMode_t mode, - DRXFrequency_t frequency ); - -typedef DRXStatus_t (*TUNERGetFrequencyFunc_t)( pTUNERInstance_t tuner, - TUNERMode_t mode, - pDRXFrequency_t RFfrequency, - pDRXFrequency_t IFfrequency ); - -typedef DRXStatus_t (*TUNERLockStatusFunc_t)( pTUNERInstance_t tuner, - pTUNERLockStatus_t lockStat ); - -typedef DRXStatus_t (*TUNERi2cWriteReadFunc_t)( pTUNERInstance_t tuner, - pI2CDeviceAddr_t wDevAddr, - u16_t wCount, - pu8_t wData, - pI2CDeviceAddr_t rDevAddr, - u16_t rCount, - pu8_t rData ); - -typedef struct -{ - TUNEROpenFunc_t openFunc; - TUNERCloseFunc_t closeFunc; - TUNERSetFrequencyFunc_t setFrequencyFunc; - TUNERGetFrequencyFunc_t getFrequencyFunc; - TUNERLockStatusFunc_t lockStatusFunc; - TUNERi2cWriteReadFunc_t i2cWriteReadFunc; - -} TUNERFunc_t, *pTUNERFunc_t; - -typedef struct TUNERInstance_s { - - I2CDeviceAddr_t myI2CDevAddr; - pTUNERCommonAttr_t myCommonAttr; - void* myExtAttr; - pTUNERFunc_t myFunct; - -} TUNERInstance_t; - + typedef struct TUNERInstance_s *pTUNERInstance_t; + + typedef DRXStatus_t(*TUNEROpenFunc_t) (pTUNERInstance_t tuner); + typedef DRXStatus_t(*TUNERCloseFunc_t) (pTUNERInstance_t tuner); + + typedef DRXStatus_t(*TUNERSetFrequencyFunc_t) (pTUNERInstance_t tuner, + TUNERMode_t mode, + DRXFrequency_t + frequency); + + typedef DRXStatus_t(*TUNERGetFrequencyFunc_t) (pTUNERInstance_t tuner, + TUNERMode_t mode, + pDRXFrequency_t + RFfrequency, + pDRXFrequency_t + IFfrequency); + + typedef DRXStatus_t(*TUNERLockStatusFunc_t) (pTUNERInstance_t tuner, + pTUNERLockStatus_t + lockStat); + + typedef DRXStatus_t(*TUNERi2cWriteReadFunc_t) (pTUNERInstance_t tuner, + pI2CDeviceAddr_t + wDevAddr, u16_t wCount, + pu8_t wData, + pI2CDeviceAddr_t + rDevAddr, u16_t rCount, + pu8_t rData); + + typedef struct { + TUNEROpenFunc_t openFunc; + TUNERCloseFunc_t closeFunc; + TUNERSetFrequencyFunc_t setFrequencyFunc; + TUNERGetFrequencyFunc_t getFrequencyFunc; + TUNERLockStatusFunc_t lockStatusFunc; + TUNERi2cWriteReadFunc_t i2cWriteReadFunc; + + } TUNERFunc_t, *pTUNERFunc_t; + + typedef struct TUNERInstance_s { + + I2CDeviceAddr_t myI2CDevAddr; + pTUNERCommonAttr_t myCommonAttr; + void *myExtAttr; + pTUNERFunc_t myFunct; + + } TUNERInstance_t; /*------------------------------------------------------------------------------ ENUM @@ -175,34 +172,32 @@ ENUM STRUCTS ------------------------------------------------------------------------------*/ - /*------------------------------------------------------------------------------ Exported FUNCTIONS ------------------------------------------------------------------------------*/ -DRXStatus_t DRXBSP_TUNER_Open( pTUNERInstance_t tuner ); + DRXStatus_t DRXBSP_TUNER_Open(pTUNERInstance_t tuner); -DRXStatus_t DRXBSP_TUNER_Close( pTUNERInstance_t tuner ); + DRXStatus_t DRXBSP_TUNER_Close(pTUNERInstance_t tuner); -DRXStatus_t DRXBSP_TUNER_SetFrequency( pTUNERInstance_t tuner, - TUNERMode_t mode, - DRXFrequency_t frequency ); + DRXStatus_t DRXBSP_TUNER_SetFrequency(pTUNERInstance_t tuner, + TUNERMode_t mode, + DRXFrequency_t frequency); -DRXStatus_t DRXBSP_TUNER_GetFrequency( pTUNERInstance_t tuner, - TUNERMode_t mode, - pDRXFrequency_t RFfrequency, - pDRXFrequency_t IFfrequency ); + DRXStatus_t DRXBSP_TUNER_GetFrequency(pTUNERInstance_t tuner, + TUNERMode_t mode, + pDRXFrequency_t RFfrequency, + pDRXFrequency_t IFfrequency); -DRXStatus_t DRXBSP_TUNER_LockStatus( pTUNERInstance_t tuner, - pTUNERLockStatus_t lockStat ); + DRXStatus_t DRXBSP_TUNER_LockStatus(pTUNERInstance_t tuner, + pTUNERLockStatus_t lockStat); -DRXStatus_t DRXBSP_TUNER_DefaultI2CWriteRead( pTUNERInstance_t tuner, - pI2CDeviceAddr_t wDevAddr, - u16_t wCount, - pu8_t wData, - pI2CDeviceAddr_t rDevAddr, - u16_t rCount, - pu8_t rData); + DRXStatus_t DRXBSP_TUNER_DefaultI2CWriteRead(pTUNERInstance_t tuner, + pI2CDeviceAddr_t wDevAddr, + u16_t wCount, + pu8_t wData, + pI2CDeviceAddr_t rDevAddr, + u16_t rCount, pu8_t rData); /*------------------------------------------------------------------------------ THE END @@ -210,6 +205,5 @@ THE END #ifdef __cplusplus } #endif -#endif /* __DRXBSP_TUNER_H__ */ - +#endif /* __DRXBSP_TUNER_H__ */ /* End of file */ diff --git a/drivers/media/dvb-frontends/drx39xyj/bsp_types.h b/drivers/media/dvb-frontends/drx39xyj/bsp_types.h index 15a483d64ab0..e10a79beda36 100644 --- a/drivers/media/dvb-frontends/drx39xyj/bsp_types.h +++ b/drivers/media/dvb-frontends/drx39xyj/bsp_types.h @@ -56,114 +56,113 @@ TYPEDEFS * \typedef unsigned char u8_t * \brief type definition of an unsigned 8 bits integer */ -typedef unsigned char u8_t; + typedef unsigned char u8_t; /** * \typedef char s8_t * \brief type definition of a signed 8 bits integer */ -typedef char s8_t; + typedef char s8_t; /** * \typedef unsigned short u16_t *pu16_t * \brief type definition of an unsigned 16 bits integer */ -typedef unsigned short u16_t; + typedef unsigned short u16_t; /** * \typedef short s16_t * \brief type definition of a signed 16 bits integer */ -typedef short s16_t; + typedef short s16_t; /** * \typedef unsigned long u32_t * \brief type definition of an unsigned 32 bits integer */ -typedef unsigned long u32_t; + typedef unsigned long u32_t; /** * \typedef long s32_t * \brief type definition of a signed 32 bits integer */ -typedef long s32_t; + typedef long s32_t; /* * \typedef struct ... u64_t * \brief type definition of an usigned 64 bits integer */ -typedef struct { - u32_t MSLW; - u32_t LSLW; -} u64_t; + typedef struct { + u32_t MSLW; + u32_t LSLW; + } u64_t; /* * \typedef struct ... i64_t * \brief type definition of a signed 64 bits integer */ -typedef struct { - s32_t MSLW; - u32_t LSLW; -} s64_t; + typedef struct { + s32_t MSLW; + u32_t LSLW; + } s64_t; /** * \typedef u8_t *pu8_t * \brief type definition of pointer to an unsigned 8 bits integer */ -typedef u8_t *pu8_t; + typedef u8_t *pu8_t; /** * \typedef s8_t *ps8_t * \brief type definition of pointer to a signed 8 bits integer */ -typedef s8_t *ps8_t; + typedef s8_t *ps8_t; /** * \typedef u16_t *pu16_t * \brief type definition of pointer to an unsigned 16 bits integer */ -typedef u16_t *pu16_t; + typedef u16_t *pu16_t; /** * \typedef s16_t *ps16_t * \brief type definition of pointer to a signed 16 bits integer */ -typedef s16_t *ps16_t; + typedef s16_t *ps16_t; /** * \typedef u32_t *pu32_t * \brief type definition of pointer to an unsigned 32 bits integer */ -typedef u32_t *pu32_t; + typedef u32_t *pu32_t; /** * \typedef s32_t *ps32_t * \brief type definition of pointer to a signed 32 bits integer */ -typedef s32_t *ps32_t; + typedef s32_t *ps32_t; /** * \typedef u64_t *pu64_t * \brief type definition of pointer to an usigned 64 bits integer */ -typedef u64_t *pu64_t; + typedef u64_t *pu64_t; /** * \typedef s64_t *ps64_t * \brief type definition of pointer to a signed 64 bits integer */ -typedef s64_t *ps64_t; - + typedef s64_t *ps64_t; /** * \typedef s32_t DRXFrequency_t * \brief type definition of frequency */ -typedef s32_t DRXFrequency_t; + typedef s32_t DRXFrequency_t; /** * \typedef DRXFrequency_t *pDRXFrequency_t * \brief type definition of a pointer to a frequency */ -typedef DRXFrequency_t *pDRXFrequency_t; + typedef DRXFrequency_t *pDRXFrequency_t; /** * \typedef u32_t DRXSymbolrate_t * \brief type definition of symbol rate */ -typedef u32_t DRXSymbolrate_t; + typedef u32_t DRXSymbolrate_t; /** * \typedef DRXSymbolrate_t *pDRXSymbolrate_t * \brief type definition of a pointer to a symbol rate */ -typedef DRXSymbolrate_t *pDRXSymbolrate_t; + typedef DRXSymbolrate_t *pDRXSymbolrate_t; /*------------------------------------------------------------------------- DEFINES @@ -184,32 +183,33 @@ ENUM * Boolean datatype. Only define if not already defined TRUE or FALSE. */ #if defined (TRUE) || defined (FALSE) -typedef int Bool_t; + typedef int Bool_t; #else /** * \enum Bool_t * \brief Boolean type */ -typedef enum { - FALSE = 0, - TRUE -} Bool_t; + typedef enum { + FALSE = 0, + TRUE + } Bool_t; #endif -typedef Bool_t *pBool_t; + typedef Bool_t *pBool_t; /** * \enum DRXStatus_t * \brief Various return statusses */ -typedef enum { - DRX_STS_READY = 3, /**< device/service is ready */ - DRX_STS_BUSY = 2, /**< device/service is busy */ - DRX_STS_OK = 1, /**< everything is OK */ - DRX_STS_INVALID_ARG = -1, /**< invalid arguments */ - DRX_STS_ERROR = -2, /**< general error */ - DRX_STS_FUNC_NOT_AVAILABLE = -3 /**< unavailable functionality */ -} DRXStatus_t, *pDRXStatus_t; - + typedef enum { + DRX_STS_READY = 3, /**< device/service is ready */ + DRX_STS_BUSY = 2, /**< device/service is busy */ + DRX_STS_OK = 1, /**< everything is OK */ + DRX_STS_INVALID_ARG = -1, + /**< invalid arguments */ + DRX_STS_ERROR = -2, /**< general error */ + DRX_STS_FUNC_NOT_AVAILABLE = -3 + /**< unavailable functionality */ + } DRXStatus_t, *pDRXStatus_t; /*------------------------------------------------------------------------- STRUCTS @@ -225,4 +225,4 @@ THE END #ifdef __cplusplus } #endif -#endif /* __BSP_TYPES_H__ */ +#endif /* __BSP_TYPES_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c b/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c index 36db20a8e0b8..6c8c8456cb05 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c +++ b/drivers/media/dvb-frontends/drx39xyj/drx39xxj.c @@ -32,7 +32,7 @@ #include "drxj_mc.h" #include "drxj.h" -static int drx39xxj_set_powerstate(struct dvb_frontend* fe, int enable) +static int drx39xxj_set_powerstate(struct dvb_frontend *fe, int enable) { struct drx39xxj_state *state = fe->demodulator_priv; DRXDemodInstance_t *demod = state->demod; @@ -54,10 +54,10 @@ static int drx39xxj_set_powerstate(struct dvb_frontend* fe, int enable) return 0; } -static int drx39xxj_read_status(struct dvb_frontend* fe, fe_status_t* status) +static int drx39xxj_read_status(struct dvb_frontend *fe, fe_status_t * status) { - struct drx39xxj_state* state = fe->demodulator_priv; - DRXDemodInstance_t *demod = state->demod; + struct drx39xxj_state *state = fe->demodulator_priv; + DRXDemodInstance_t *demod = state->demod; DRXStatus_t result; DRXLockStatus_t lock_status; @@ -87,16 +87,12 @@ static int drx39xxj_read_status(struct dvb_frontend* fe, fe_status_t* status) case DRX_LOCK_STATE_8: case DRX_LOCK_STATE_9: *status = FE_HAS_SIGNAL - | FE_HAS_CARRIER - | FE_HAS_VITERBI - | FE_HAS_SYNC; + | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC; break; case DRX_LOCKED: *status = FE_HAS_SIGNAL - | FE_HAS_CARRIER - | FE_HAS_VITERBI - | FE_HAS_SYNC - | FE_HAS_LOCK; + | FE_HAS_CARRIER + | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK; break; default: printk("Lock state unknown %d\n", lock_status); @@ -105,10 +101,10 @@ static int drx39xxj_read_status(struct dvb_frontend* fe, fe_status_t* status) return 0; } -static int drx39xxj_read_ber(struct dvb_frontend* fe, u32* ber) +static int drx39xxj_read_ber(struct dvb_frontend *fe, u32 * ber) { - struct drx39xxj_state* state = fe->demodulator_priv; - DRXDemodInstance_t *demod = state->demod; + struct drx39xxj_state *state = fe->demodulator_priv; + DRXDemodInstance_t *demod = state->demod; DRXStatus_t result; DRXSigQuality_t sig_quality; @@ -123,10 +119,11 @@ static int drx39xxj_read_ber(struct dvb_frontend* fe, u32* ber) return 0; } -static int drx39xxj_read_signal_strength(struct dvb_frontend* fe, u16* strength) +static int drx39xxj_read_signal_strength(struct dvb_frontend *fe, + u16 * strength) { - struct drx39xxj_state* state = fe->demodulator_priv; - DRXDemodInstance_t *demod = state->demod; + struct drx39xxj_state *state = fe->demodulator_priv; + DRXDemodInstance_t *demod = state->demod; DRXStatus_t result; DRXSigQuality_t sig_quality; @@ -142,10 +139,10 @@ static int drx39xxj_read_signal_strength(struct dvb_frontend* fe, u16* strength) return 0; } -static int drx39xxj_read_snr(struct dvb_frontend* fe, u16* snr) +static int drx39xxj_read_snr(struct dvb_frontend *fe, u16 * snr) { - struct drx39xxj_state* state = fe->demodulator_priv; - DRXDemodInstance_t *demod = state->demod; + struct drx39xxj_state *state = fe->demodulator_priv; + DRXDemodInstance_t *demod = state->demod; DRXStatus_t result; DRXSigQuality_t sig_quality; @@ -160,10 +157,10 @@ static int drx39xxj_read_snr(struct dvb_frontend* fe, u16* snr) return 0; } -static int drx39xxj_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks) +static int drx39xxj_read_ucblocks(struct dvb_frontend *fe, u32 * ucblocks) { - struct drx39xxj_state* state = fe->demodulator_priv; - DRXDemodInstance_t *demod = state->demod; + struct drx39xxj_state *state = fe->demodulator_priv; + DRXDemodInstance_t *demod = state->demod; DRXStatus_t result; DRXSigQuality_t sig_quality; @@ -178,38 +175,40 @@ static int drx39xxj_read_ucblocks(struct dvb_frontend* fe, u32* ucblocks) return 0; } -static int drx39xxj_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters *p) +static int drx39xxj_get_frontend(struct dvb_frontend *fe, + struct dvb_frontend_parameters *p) { return 0; } -static int drx39xxj_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters *p) +static int drx39xxj_set_frontend(struct dvb_frontend *fe, + struct dvb_frontend_parameters *p) { #ifdef DJH_DEBUG int i; #endif - struct drx39xxj_state* state = fe->demodulator_priv; - DRXDemodInstance_t *demod = state->demod; + struct drx39xxj_state *state = fe->demodulator_priv; + DRXDemodInstance_t *demod = state->demod; DRXStandard_t standard = DRX_STANDARD_8VSB; DRXChannel_t channel; DRXStatus_t result; DRXUIOData_t uioData; - DRXChannel_t defChannel = {/* frequency */ 0, - /* bandwidth */ DRX_BANDWIDTH_6MHZ, - /* mirror */ DRX_MIRROR_NO, - /* constellation */ DRX_CONSTELLATION_AUTO, - /* hierarchy */ DRX_HIERARCHY_UNKNOWN, - /* priority */ DRX_PRIORITY_UNKNOWN, - /* coderate */ DRX_CODERATE_UNKNOWN, - /* guard */ DRX_GUARD_UNKNOWN, - /* fftmode */ DRX_FFTMODE_UNKNOWN, - /* classification */ DRX_CLASSIFICATION_AUTO, - /* symbolrate */ 5057000, - /* interleavemode */ DRX_INTERLEAVEMODE_UNKNOWN, - /* ldpc */ DRX_LDPC_UNKNOWN, - /* carrier */ DRX_CARRIER_UNKNOWN, - /* frame mode */ DRX_FRAMEMODE_UNKNOWN - }; + DRXChannel_t defChannel = { /* frequency */ 0, + /* bandwidth */ DRX_BANDWIDTH_6MHZ, + /* mirror */ DRX_MIRROR_NO, + /* constellation */ DRX_CONSTELLATION_AUTO, + /* hierarchy */ DRX_HIERARCHY_UNKNOWN, + /* priority */ DRX_PRIORITY_UNKNOWN, + /* coderate */ DRX_CODERATE_UNKNOWN, + /* guard */ DRX_GUARD_UNKNOWN, + /* fftmode */ DRX_FFTMODE_UNKNOWN, + /* classification */ DRX_CLASSIFICATION_AUTO, + /* symbolrate */ 5057000, + /* interleavemode */ DRX_INTERLEAVEMODE_UNKNOWN, + /* ldpc */ DRX_LDPC_UNKNOWN, + /* carrier */ DRX_CARRIER_UNKNOWN, + /* frame mode */ DRX_FRAMEMODE_UNKNOWN + }; /* Bring the demod out of sleep */ drx39xxj_set_powerstate(fe, 1); @@ -236,9 +235,9 @@ static int drx39xxj_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_pa /* set channel parameters */ channel = defChannel; - channel.frequency = p->frequency / 1000; - channel.bandwidth = DRX_BANDWIDTH_6MHZ; - channel.constellation = DRX_CONSTELLATION_AUTO; + channel.frequency = p->frequency / 1000; + channel.bandwidth = DRX_BANDWIDTH_6MHZ; + channel.constellation = DRX_CONSTELLATION_AUTO; /* program channel */ result = DRX_Ctrl(demod, DRX_CTRL_SET_CHANNEL, &channel); @@ -246,31 +245,28 @@ static int drx39xxj_set_frontend(struct dvb_frontend* fe, struct dvb_frontend_pa printk("Failed to set channel!\n"); return -EINVAL; } - // Just for giggles, let's shut off the LNA again.... - uioData.uio = DRX_UIO1; + uioData.uio = DRX_UIO1; uioData.value = FALSE; result = DRX_Ctrl(demod, DRX_CTRL_UIO_WRITE, &uioData); if (result != DRX_STS_OK) { printk("Failed to disable LNA!\n"); return 0; } - #ifdef DJH_DEBUG - for(i = 0; i < 2000; i++) { - fe_status_t status; - drx39xxj_read_status(fe, &status); - printk("i=%d status=%d\n", i, status); - msleep(100); - i += 100; + for (i = 0; i < 2000; i++) { + fe_status_t status; + drx39xxj_read_status(fe, &status); + printk("i=%d status=%d\n", i, status); + msleep(100); + i += 100; } #endif return 0; } - -static int drx39xxj_sleep(struct dvb_frontend* fe) +static int drx39xxj_sleep(struct dvb_frontend *fe) { /* power-down the demodulator */ return drx39xxj_set_powerstate(fe, 0); @@ -308,8 +304,7 @@ static int drx39xxj_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) return 0; } - -static int drx39xxj_init(struct dvb_frontend* fe) +static int drx39xxj_init(struct dvb_frontend *fe) { /* Bring the demod out of sleep */ drx39xxj_set_powerstate(fe, 1); @@ -318,15 +313,15 @@ static int drx39xxj_init(struct dvb_frontend* fe) } static int drx39xxj_get_tune_settings(struct dvb_frontend *fe, - struct dvb_frontend_tune_settings *tune) + struct dvb_frontend_tune_settings *tune) { tune->min_delay_ms = 1000; return 0; } -static void drx39xxj_release(struct dvb_frontend* fe) +static void drx39xxj_release(struct dvb_frontend *fe) { - struct drx39xxj_state* state = fe->demodulator_priv; + struct drx39xxj_state *state = fe->demodulator_priv; kfree(state); } @@ -334,31 +329,36 @@ static struct dvb_frontend_ops drx39xxj_ops; struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c) { - struct drx39xxj_state* state = NULL; + struct drx39xxj_state *state = NULL; - I2CDeviceAddr_t *demodAddr = NULL; - DRXCommonAttr_t *demodCommAttr = NULL; - DRXJData_t *demodExtAttr = NULL; - DRXDemodInstance_t *demod = NULL; + I2CDeviceAddr_t *demodAddr = NULL; + DRXCommonAttr_t *demodCommAttr = NULL; + DRXJData_t *demodExtAttr = NULL; + DRXDemodInstance_t *demod = NULL; DRXUIOCfg_t uioCfg; DRXUIOData_t uioData; DRXStatus_t result; /* allocate memory for the internal state */ state = kmalloc(sizeof(struct drx39xxj_state), GFP_KERNEL); - if (state == NULL) goto error; + if (state == NULL) + goto error; demod = kmalloc(sizeof(DRXDemodInstance_t), GFP_KERNEL); - if (demod == NULL) goto error; + if (demod == NULL) + goto error; demodAddr = kmalloc(sizeof(I2CDeviceAddr_t), GFP_KERNEL); - if (demodAddr == NULL) goto error; + if (demodAddr == NULL) + goto error; demodCommAttr = kmalloc(sizeof(DRXCommonAttr_t), GFP_KERNEL); - if (demodCommAttr == NULL) goto error; + if (demodCommAttr == NULL) + goto error; demodExtAttr = kmalloc(sizeof(DRXJData_t), GFP_KERNEL); - if (demodExtAttr == NULL) goto error; + if (demodExtAttr == NULL) + goto error; /* setup the state */ state->i2c = i2c; @@ -374,13 +374,14 @@ struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c) memcpy(demod->myCommonAttr, &DRXJDefaultCommAttr_g, sizeof(DRXCommonAttr_t)); demod->myCommonAttr->microcode = DRXJ_MC_MAIN; - // demod->myCommonAttr->verifyMicrocode = FALSE; + // demod->myCommonAttr->verifyMicrocode = FALSE; demod->myCommonAttr->verifyMicrocode = TRUE; demod->myCommonAttr->intermediateFreq = 5000; demod->myExtAttr = demodExtAttr; memcpy(demod->myExtAttr, &DRXJData_g, sizeof(DRXJData_t)); - ((DRXJData_t *) demod->myExtAttr)->uioSmaTxMode = DRX_UIO_MODE_READWRITE; + ((DRXJData_t *) demod->myExtAttr)->uioSmaTxMode = + DRX_UIO_MODE_READWRITE; demod->myTuner = NULL; @@ -392,8 +393,8 @@ struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c) } /* Turn off the LNA */ - uioCfg.uio = DRX_UIO1; - uioCfg.mode = DRX_UIO_MODE_READWRITE; + uioCfg.uio = DRX_UIO1; + uioCfg.mode = DRX_UIO_MODE_READWRITE; /* Configure user-I/O #3: enable read/write */ result = DRX_Ctrl(demod, DRX_CTRL_UIO_CFG, &uioCfg); if (result != DRX_STS_OK) { @@ -401,7 +402,7 @@ struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c) return NULL; } - uioData.uio = DRX_UIO1; + uioData.uio = DRX_UIO1; uioData.value = FALSE; result = DRX_Ctrl(demod, DRX_CTRL_UIO_WRITE, &uioData); if (result != DRX_STS_OK) { @@ -427,13 +428,12 @@ error: static struct dvb_frontend_ops drx39xxj_ops = { .info = { - .name = "Micronas DRX39xxj family Frontend", - .type = FE_ATSC | FE_QAM, - .frequency_stepsize = 62500, - .frequency_min = 51000000, - .frequency_max = 858000000, - .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB - }, + .name = "Micronas DRX39xxj family Frontend", + .type = FE_ATSC | FE_QAM, + .frequency_stepsize = 62500, + .frequency_min = 51000000, + .frequency_max = 858000000, + .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB}, .init = drx39xxj_init, .i2c_gate_ctrl = drx39xxj_i2c_gate_ctrl, diff --git a/drivers/media/dvb-frontends/drx39xyj/drx39xxj.h b/drivers/media/dvb-frontends/drx39xyj/drx39xxj.h index c29cd43f2b00..467b390372d8 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx39xxj.h +++ b/drivers/media/dvb-frontends/drx39xyj/drx39xxj.h @@ -35,6 +35,6 @@ struct drx39xxj_state { unsigned int i2c_gate_open:1; }; -extern struct dvb_frontend* drx39xxj_attach(struct i2c_adapter *i2c); +extern struct dvb_frontend *drx39xxj_attach(struct i2c_adapter *i2c); #endif // DVB_DUMMY_FE_H diff --git a/drivers/media/dvb-frontends/drx39xyj/drx39xxj_dummy.c b/drivers/media/dvb-frontends/drx39xyj/drx39xxj_dummy.c index 2b9344f92449..37967b2379b0 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx39xxj_dummy.c +++ b/drivers/media/dvb-frontends/drx39xyj/drx39xxj_dummy.c @@ -13,59 +13,58 @@ #include "drx39xxj.h" /* Dummy function to satisfy drxj.c */ -DRXStatus_t DRXBSP_TUNER_Open( pTUNERInstance_t tuner ) +DRXStatus_t DRXBSP_TUNER_Open(pTUNERInstance_t tuner) { return DRX_STS_OK; } -DRXStatus_t DRXBSP_TUNER_Close( pTUNERInstance_t tuner ) +DRXStatus_t DRXBSP_TUNER_Close(pTUNERInstance_t tuner) { return DRX_STS_OK; } -DRXStatus_t DRXBSP_TUNER_SetFrequency( pTUNERInstance_t tuner, - TUNERMode_t mode, - DRXFrequency_t centerFrequency ) +DRXStatus_t DRXBSP_TUNER_SetFrequency(pTUNERInstance_t tuner, + TUNERMode_t mode, + DRXFrequency_t centerFrequency) { return DRX_STS_OK; } DRXStatus_t -DRXBSP_TUNER_GetFrequency( pTUNERInstance_t tuner, - TUNERMode_t mode, - pDRXFrequency_t RFfrequency, - pDRXFrequency_t IFfrequency ) +DRXBSP_TUNER_GetFrequency(pTUNERInstance_t tuner, + TUNERMode_t mode, + pDRXFrequency_t RFfrequency, + pDRXFrequency_t IFfrequency) { return DRX_STS_OK; } -DRXStatus_t DRXBSP_HST_Sleep( u32_t n ) +DRXStatus_t DRXBSP_HST_Sleep(u32_t n) { msleep(n); return DRX_STS_OK; } -u32_t DRXBSP_HST_Clock( void ) +u32_t DRXBSP_HST_Clock(void) { return jiffies_to_msecs(jiffies); } -int DRXBSP_HST_Memcmp( void *s1, void *s2, u32_t n) +int DRXBSP_HST_Memcmp(void *s1, void *s2, u32_t n) { - return ( memcmp( s1, s2, (size_t) n) ); + return (memcmp(s1, s2, (size_t) n)); } -void* DRXBSP_HST_Memcpy( void *to, void *from, u32_t n) +void *DRXBSP_HST_Memcpy(void *to, void *from, u32_t n) { - return ( memcpy( to, from, (size_t) n) ); + return (memcpy(to, from, (size_t) n)); } -DRXStatus_t DRXBSP_I2C_WriteRead( pI2CDeviceAddr_t wDevAddr, - u16_t wCount, - pu8_t wData, - pI2CDeviceAddr_t rDevAddr, - u16_t rCount, - pu8_t rData ) +DRXStatus_t DRXBSP_I2C_WriteRead(pI2CDeviceAddr_t wDevAddr, + u16_t wCount, + pu8_t wData, + pI2CDeviceAddr_t rDevAddr, + u16_t rCount, pu8_t rData) { struct drx39xxj_state *state; struct i2c_msg msg[2]; @@ -102,8 +101,8 @@ DRXStatus_t DRXBSP_I2C_WriteRead( pI2CDeviceAddr_t wDevAddr, } if (state->i2c == NULL) { - printk("i2c was zero, aborting\n"); - return 0; + printk("i2c was zero, aborting\n"); + return 0; } if (i2c_transfer(state->i2c, msg, num_msgs) != num_msgs) { printk(KERN_WARNING "drx3933: I2C write/read failed\n"); @@ -116,10 +115,10 @@ DRXStatus_t DRXBSP_I2C_WriteRead( pI2CDeviceAddr_t wDevAddr, struct drx39xxj_state *state = wDevAddr->userData; struct i2c_msg msg[2] = { - { .addr = wDevAddr->i2cAddr, - .flags = 0, .buf = wData, .len = wCount }, - { .addr = rDevAddr->i2cAddr, - .flags = I2C_M_RD, .buf = rData, .len = rCount }, + {.addr = wDevAddr->i2cAddr, + .flags = 0,.buf = wData,.len = wCount}, + {.addr = rDevAddr->i2cAddr, + .flags = I2C_M_RD,.buf = rData,.len = rCount}, }; printk("drx3933 i2c operation addr=%x i2c=%p, wc=%x rc=%x\n", diff --git a/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.c b/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.c index 8289b901ff68..a4d3ed39fe58 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.c +++ b/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.c @@ -50,154 +50,137 @@ *******************************************************************************/ #include "drx_dap_fasi.h" -#include "bsp_host.h" /* for DRXBSP_HST_Memcpy() */ +#include "bsp_host.h" /* for DRXBSP_HST_Memcpy() */ /*============================================================================*/ /* Function prototypes */ -static DRXStatus_t DRXDAP_FASI_WriteBlock ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u16_t datasize, /* size of data */ - pu8_t data, /* data to send */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadBlock ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u16_t datasize, /* size of data */ - pu8_t data, /* data to send */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_WriteReg8 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - u8_t data, /* data to write */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadReg8 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - pu8_t data, /* buffer to receive data */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg8 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* address of register */ - DRXaddr_t raddr, /* address to read back from */ - u8_t datain, /* data to send */ - pu8_t dataout); /* data to receive back */ - -static DRXStatus_t DRXDAP_FASI_WriteReg16 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - u16_t data, /* data to write */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadReg16 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - pu16_t data, /* buffer to receive data */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg16 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* address of register */ - DRXaddr_t raddr, /* address to read back from */ - u16_t datain, /* data to send */ - pu16_t dataout); /* data to receive back */ - -static DRXStatus_t DRXDAP_FASI_WriteReg32 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - u32_t data, /* data to write */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadReg32 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - pu32_t data, /* buffer to receive data */ - DRXflags_t flags); /* special device flags */ - -static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg32 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* address of register */ - DRXaddr_t raddr, /* address to read back from */ - u32_t datain, /* data to send */ - pu32_t dataout); /* data to receive back */ +static DRXStatus_t DRXDAP_FASI_WriteBlock(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u16_t datasize, /* size of data */ + pu8_t data, /* data to send */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadBlock(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u16_t datasize, /* size of data */ + pu8_t data, /* data to send */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_WriteReg8(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + u8_t data, /* data to write */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadReg8(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + pu8_t data, /* buffer to receive data */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg8(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* address of register */ + DRXaddr_t raddr, /* address to read back from */ + u8_t datain, /* data to send */ + pu8_t dataout); /* data to receive back */ + +static DRXStatus_t DRXDAP_FASI_WriteReg16(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + u16_t data, /* data to write */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadReg16(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + pu16_t data, /* buffer to receive data */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg16(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* address of register */ + DRXaddr_t raddr, /* address to read back from */ + u16_t datain, /* data to send */ + pu16_t dataout); /* data to receive back */ + +static DRXStatus_t DRXDAP_FASI_WriteReg32(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + u32_t data, /* data to write */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadReg32(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + pu32_t data, /* buffer to receive data */ + DRXflags_t flags); /* special device flags */ + +static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg32(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* address of register */ + DRXaddr_t raddr, /* address to read back from */ + u32_t datain, /* data to send */ + pu32_t dataout); /* data to receive back */ /* The version structure of this protocol implementation */ -char drxDapFASIModuleName[] = "FASI Data Access Protocol"; +char drxDapFASIModuleName[] = "FASI Data Access Protocol"; char drxDapFASIVersionText[] = ""; -DRXVersion_t drxDapFASIVersion = -{ - DRX_MODULE_DAP, /**< type identifier of the module */ - drxDapFASIModuleName, /**< name or description of module */ +DRXVersion_t drxDapFASIVersion = { + DRX_MODULE_DAP, /**< type identifier of the module */ + drxDapFASIModuleName, /**< name or description of module */ - 0, /**< major version number */ - 0, /**< minor version number */ - 0, /**< patch version number */ - drxDapFASIVersionText /**< version as text string */ + 0, /**< major version number */ + 0, /**< minor version number */ + 0, /**< patch version number */ + drxDapFASIVersionText /**< version as text string */ }; /* The structure containing the protocol interface */ -DRXAccessFunc_t drxDapFASIFunct_g = -{ - &drxDapFASIVersion, - DRXDAP_FASI_WriteBlock, /* Supported */ - DRXDAP_FASI_ReadBlock, /* Supported */ - DRXDAP_FASI_WriteReg8, /* Not supported */ - DRXDAP_FASI_ReadReg8, /* Not supported */ - DRXDAP_FASI_ReadModifyWriteReg8, /* Not supported */ - DRXDAP_FASI_WriteReg16, /* Supported */ - DRXDAP_FASI_ReadReg16, /* Supported */ - DRXDAP_FASI_ReadModifyWriteReg16, /* Supported */ - DRXDAP_FASI_WriteReg32, /* Supported */ - DRXDAP_FASI_ReadReg32, /* Supported */ - DRXDAP_FASI_ReadModifyWriteReg32 /* Not supported */ +DRXAccessFunc_t drxDapFASIFunct_g = { + &drxDapFASIVersion, + DRXDAP_FASI_WriteBlock, /* Supported */ + DRXDAP_FASI_ReadBlock, /* Supported */ + DRXDAP_FASI_WriteReg8, /* Not supported */ + DRXDAP_FASI_ReadReg8, /* Not supported */ + DRXDAP_FASI_ReadModifyWriteReg8, /* Not supported */ + DRXDAP_FASI_WriteReg16, /* Supported */ + DRXDAP_FASI_ReadReg16, /* Supported */ + DRXDAP_FASI_ReadModifyWriteReg16, /* Supported */ + DRXDAP_FASI_WriteReg32, /* Supported */ + DRXDAP_FASI_ReadReg32, /* Supported */ + DRXDAP_FASI_ReadModifyWriteReg32 /* Not supported */ }; /*============================================================================*/ /* Functions not supported by protocol*/ -static DRXStatus_t DRXDAP_FASI_WriteReg8 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - u8_t data, /* data to write */ - DRXflags_t flags) /* special device flags */ -{ - return DRX_STS_ERROR; +static DRXStatus_t DRXDAP_FASI_WriteReg8(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + u8_t data, /* data to write */ + DRXflags_t flags) +{ /* special device flags */ + return DRX_STS_ERROR; } -static DRXStatus_t DRXDAP_FASI_ReadReg8 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register */ - pu8_t data, /* buffer to receive data */ - DRXflags_t flags) /* special device flags */ -{ - return DRX_STS_ERROR; +static DRXStatus_t DRXDAP_FASI_ReadReg8(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register */ + pu8_t data, /* buffer to receive data */ + DRXflags_t flags) +{ /* special device flags */ + return DRX_STS_ERROR; } -static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg8 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* address of register */ - DRXaddr_t raddr, /* address to read back from */ - u8_t datain, /* data to send */ - pu8_t dataout) /* data to receive back */ -{ - return DRX_STS_ERROR; +static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg8(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* address of register */ + DRXaddr_t raddr, /* address to read back from */ + u8_t datain, /* data to send */ + pu8_t dataout) +{ /* data to receive back */ + return DRX_STS_ERROR; } -static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg32 ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* address of register */ - DRXaddr_t raddr, /* address to read back from */ - u32_t datain, /* data to send */ - pu32_t dataout) /* data to receive back */ -{ - return DRX_STS_ERROR; +static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg32(pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* address of register */ + DRXaddr_t raddr, /* address to read back from */ + u32_t datain, /* data to send */ + pu32_t dataout) +{ /* data to receive back */ + return DRX_STS_ERROR; } /*============================================================================*/ @@ -227,105 +210,96 @@ static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg32 ( * ******************************/ -static DRXStatus_t DRXDAP_FASI_ReadBlock ( pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - DRXflags_t flags ) +static DRXStatus_t DRXDAP_FASI_ReadBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, DRXflags_t flags) { - u8_t buf[4]; - u16_t bufx; - DRXStatus_t rc; - u16_t overheadSize = 0; - - /* Check parameters ********************************************************/ - if ( devAddr == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - overheadSize = (IS_I2C_10BIT (devAddr->i2cAddr) ? 2 : 1) + - (DRXDAP_FASI_LONG_FORMAT(addr) ? 4 : 2 ); - - if ( ( DRXDAP_FASI_OFFSET_TOO_LARGE(addr) ) || - ( ( !(DRXDAPFASI_LONG_ADDR_ALLOWED) ) && - DRXDAP_FASI_LONG_FORMAT( addr ) ) || - (overheadSize > (DRXDAP_MAX_WCHUNKSIZE)) || - ((datasize!=0) && (data==NULL)) || - ((datasize & 1)==1 ) ) - { - return DRX_STS_INVALID_ARG; - } - - /* ReadModifyWrite & mode flag bits are not allowed */ - flags &= (~DRXDAP_FASI_RMW & ~DRXDAP_FASI_MODEFLAGS); + u8_t buf[4]; + u16_t bufx; + DRXStatus_t rc; + u16_t overheadSize = 0; + + /* Check parameters ******************************************************* */ + if (devAddr == NULL) { + return DRX_STS_INVALID_ARG; + } + + overheadSize = (IS_I2C_10BIT(devAddr->i2cAddr) ? 2 : 1) + + (DRXDAP_FASI_LONG_FORMAT(addr) ? 4 : 2); + + if ((DRXDAP_FASI_OFFSET_TOO_LARGE(addr)) || + ((!(DRXDAPFASI_LONG_ADDR_ALLOWED)) && + DRXDAP_FASI_LONG_FORMAT(addr)) || + (overheadSize > (DRXDAP_MAX_WCHUNKSIZE)) || + ((datasize != 0) && (data == NULL)) || ((datasize & 1) == 1)) { + return DRX_STS_INVALID_ARG; + } + + /* ReadModifyWrite & mode flag bits are not allowed */ + flags &= (~DRXDAP_FASI_RMW & ~DRXDAP_FASI_MODEFLAGS); #if DRXDAP_SINGLE_MASTER - flags |= DRXDAP_FASI_SINGLE_MASTER; + flags |= DRXDAP_FASI_SINGLE_MASTER; #endif - /* Read block from I2C *****************************************************/ - do { - u16_t todo = ( datasize < DRXDAP_MAX_RCHUNKSIZE ? - datasize : DRXDAP_MAX_RCHUNKSIZE); + /* Read block from I2C **************************************************** */ + do { + u16_t todo = (datasize < DRXDAP_MAX_RCHUNKSIZE ? + datasize : DRXDAP_MAX_RCHUNKSIZE); - bufx = 0; + bufx = 0; - addr &= ~DRXDAP_FASI_FLAGS; - addr |= flags; + addr &= ~DRXDAP_FASI_FLAGS; + addr |= flags; #if ( ( DRXDAPFASI_LONG_ADDR_ALLOWED==1 ) && \ ( DRXDAPFASI_SHORT_ADDR_ALLOWED==1 ) ) - /* short format address preferred but long format otherwise */ - if ( DRXDAP_FASI_LONG_FORMAT(addr) ) - { + /* short format address preferred but long format otherwise */ + if (DRXDAP_FASI_LONG_FORMAT(addr)) { #endif #if ( DRXDAPFASI_LONG_ADDR_ALLOWED==1 ) - buf[bufx++] = (u8_t) (((addr << 1) & 0xFF)|0x01); - buf[bufx++] = (u8_t) ((addr >> 16) & 0xFF); - buf[bufx++] = (u8_t) ((addr >> 24) & 0xFF); - buf[bufx++] = (u8_t) ((addr >> 7) & 0xFF); + buf[bufx++] = (u8_t) (((addr << 1) & 0xFF) | 0x01); + buf[bufx++] = (u8_t) ((addr >> 16) & 0xFF); + buf[bufx++] = (u8_t) ((addr >> 24) & 0xFF); + buf[bufx++] = (u8_t) ((addr >> 7) & 0xFF); #endif #if ( ( DRXDAPFASI_LONG_ADDR_ALLOWED==1 ) && \ ( DRXDAPFASI_SHORT_ADDR_ALLOWED==1 ) ) - } else { + } else { #endif #if ( DRXDAPFASI_SHORT_ADDR_ALLOWED==1 ) - buf[bufx++] = (u8_t) ((addr << 1) & 0xFF); - buf[bufx++] = (u8_t) ( ((addr >> 16) & 0x0F) | ((addr >> 18) & 0xF0) ); + buf[bufx++] = (u8_t) ((addr << 1) & 0xFF); + buf[bufx++] = + (u8_t) (((addr >> 16) & 0x0F) | + ((addr >> 18) & 0xF0)); #endif #if ( ( DRXDAPFASI_LONG_ADDR_ALLOWED==1 ) && \ ( DRXDAPFASI_SHORT_ADDR_ALLOWED==1 ) ) - } + } #endif - - - #if DRXDAP_SINGLE_MASTER - /* - * In single master mode, split the read and write actions. - * No special action is needed for write chunks here. - */ - rc = DRXBSP_I2C_WriteRead (devAddr, bufx, buf, 0, 0, 0); - if (rc == DRX_STS_OK) - { - rc = DRXBSP_I2C_WriteRead (0, 0, 0, devAddr, todo, data); - } + /* + * In single master mode, split the read and write actions. + * No special action is needed for write chunks here. + */ + rc = DRXBSP_I2C_WriteRead(devAddr, bufx, buf, 0, 0, 0); + if (rc == DRX_STS_OK) { + rc = DRXBSP_I2C_WriteRead(0, 0, 0, devAddr, todo, data); + } #else - /* In multi master mode, do everything in one RW action */ - rc = DRXBSP_I2C_WriteRead (devAddr, bufx, buf, devAddr, todo, data); + /* In multi master mode, do everything in one RW action */ + rc = DRXBSP_I2C_WriteRead(devAddr, bufx, buf, devAddr, todo, + data); #endif - data += todo; - addr += (todo >> 1); - datasize -= todo; - } while (datasize && rc == DRX_STS_OK); + data += todo; + addr += (todo >> 1); + datasize -= todo; + } while (datasize && rc == DRX_STS_OK); - return rc; + return rc; } - - - /****************************** * * DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg16 ( @@ -351,33 +325,27 @@ static DRXStatus_t DRXDAP_FASI_ReadBlock ( pI2CDeviceAddr_t devAddr, * ******************************/ -static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg16 ( pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u16_t wdata, - pu16_t rdata ) +static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u16_t wdata, pu16_t rdata) { - DRXStatus_t rc=DRX_STS_ERROR; + DRXStatus_t rc = DRX_STS_ERROR; #if ( DRXDAPFASI_LONG_ADDR_ALLOWED==1 ) - if (rdata == NULL) - { - return DRX_STS_INVALID_ARG; - } - - rc = DRXDAP_FASI_WriteReg16 (devAddr, waddr, wdata, DRXDAP_FASI_RMW); - if (rc == DRX_STS_OK) - { - rc = DRXDAP_FASI_ReadReg16 (devAddr, raddr, rdata, 0); - } + if (rdata == NULL) { + return DRX_STS_INVALID_ARG; + } + + rc = DRXDAP_FASI_WriteReg16(devAddr, waddr, wdata, DRXDAP_FASI_RMW); + if (rc == DRX_STS_OK) { + rc = DRXDAP_FASI_ReadReg16(devAddr, raddr, rdata, 0); + } #endif - return rc; + return rc; } - - - /****************************** * * DRXStatus_t DRXDAP_FASI_ReadReg16 ( @@ -396,26 +364,21 @@ static DRXStatus_t DRXDAP_FASI_ReadModifyWriteReg16 ( pI2CDeviceAddr_t devAddr, * ******************************/ -static DRXStatus_t DRXDAP_FASI_ReadReg16 ( pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu16_t data, - DRXflags_t flags ) +static DRXStatus_t DRXDAP_FASI_ReadReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu16_t data, DRXflags_t flags) { - u8_t buf[sizeof (*data)]; - DRXStatus_t rc; - - if (!data) - { - return DRX_STS_INVALID_ARG; - } - rc = DRXDAP_FASI_ReadBlock (devAddr, addr, sizeof (*data), buf, flags); - *data = buf[0] + (((u16_t) buf[1]) << 8); - return rc; + u8_t buf[sizeof(*data)]; + DRXStatus_t rc; + + if (!data) { + return DRX_STS_INVALID_ARG; + } + rc = DRXDAP_FASI_ReadBlock(devAddr, addr, sizeof(*data), buf, flags); + *data = buf[0] + (((u16_t) buf[1]) << 8); + return rc; } - - - /****************************** * * DRXStatus_t DRXDAP_FASI_ReadReg32 ( @@ -434,29 +397,23 @@ static DRXStatus_t DRXDAP_FASI_ReadReg16 ( pI2CDeviceAddr_t devAddr, * ******************************/ -static DRXStatus_t DRXDAP_FASI_ReadReg32 ( pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu32_t data, - DRXflags_t flags ) +static DRXStatus_t DRXDAP_FASI_ReadReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu32_t data, DRXflags_t flags) { - u8_t buf[sizeof (*data)]; - DRXStatus_t rc; - - if (!data) - { - return DRX_STS_INVALID_ARG; - } - rc = DRXDAP_FASI_ReadBlock (devAddr, addr, sizeof (*data), buf, flags); - *data = (((u32_t) buf[0]) << 0) + - (((u32_t) buf[1]) << 8) + - (((u32_t) buf[2]) << 16) + - (((u32_t) buf[3]) << 24); - return rc; + u8_t buf[sizeof(*data)]; + DRXStatus_t rc; + + if (!data) { + return DRX_STS_INVALID_ARG; + } + rc = DRXDAP_FASI_ReadBlock(devAddr, addr, sizeof(*data), buf, flags); + *data = (((u32_t) buf[0]) << 0) + + (((u32_t) buf[1]) << 8) + + (((u32_t) buf[2]) << 16) + (((u32_t) buf[3]) << 24); + return rc; } - - - /****************************** * * DRXStatus_t DRXDAP_FASI_WriteBlock ( @@ -479,136 +436,128 @@ static DRXStatus_t DRXDAP_FASI_ReadReg32 ( pI2CDeviceAddr_t devAddr, * ******************************/ -static DRXStatus_t DRXDAP_FASI_WriteBlock ( pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - DRXflags_t flags ) +static DRXStatus_t DRXDAP_FASI_WriteBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, DRXflags_t flags) { - u8_t buf[ DRXDAP_MAX_WCHUNKSIZE ]; - DRXStatus_t st = DRX_STS_ERROR; - DRXStatus_t firstErr = DRX_STS_OK; - u16_t overheadSize = 0; - u16_t blockSize = 0; - - /* Check parameters ********************************************************/ - if ( devAddr == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - overheadSize = (IS_I2C_10BIT (devAddr->i2cAddr) ? 2 : 1) + - (DRXDAP_FASI_LONG_FORMAT(addr) ? 4 : 2 ); - - if ( ( DRXDAP_FASI_OFFSET_TOO_LARGE(addr) ) || - ( ( !(DRXDAPFASI_LONG_ADDR_ALLOWED) ) && - DRXDAP_FASI_LONG_FORMAT( addr ) ) || - (overheadSize > (DRXDAP_MAX_WCHUNKSIZE)) || - ((datasize!=0) && (data==NULL)) || - ((datasize & 1)==1 ) ) - { - return DRX_STS_INVALID_ARG; - } - - flags &= DRXDAP_FASI_FLAGS; - flags &= ~DRXDAP_FASI_MODEFLAGS; + u8_t buf[DRXDAP_MAX_WCHUNKSIZE]; + DRXStatus_t st = DRX_STS_ERROR; + DRXStatus_t firstErr = DRX_STS_OK; + u16_t overheadSize = 0; + u16_t blockSize = 0; + + /* Check parameters ******************************************************* */ + if (devAddr == NULL) { + return DRX_STS_INVALID_ARG; + } + + overheadSize = (IS_I2C_10BIT(devAddr->i2cAddr) ? 2 : 1) + + (DRXDAP_FASI_LONG_FORMAT(addr) ? 4 : 2); + + if ((DRXDAP_FASI_OFFSET_TOO_LARGE(addr)) || + ((!(DRXDAPFASI_LONG_ADDR_ALLOWED)) && + DRXDAP_FASI_LONG_FORMAT(addr)) || + (overheadSize > (DRXDAP_MAX_WCHUNKSIZE)) || + ((datasize != 0) && (data == NULL)) || ((datasize & 1) == 1)) { + return DRX_STS_INVALID_ARG; + } + + flags &= DRXDAP_FASI_FLAGS; + flags &= ~DRXDAP_FASI_MODEFLAGS; #if DRXDAP_SINGLE_MASTER - flags |= DRXDAP_FASI_SINGLE_MASTER; + flags |= DRXDAP_FASI_SINGLE_MASTER; #endif - /* Write block to I2C ******************************************************/ - blockSize = ( (DRXDAP_MAX_WCHUNKSIZE) - overheadSize) & ~1; - do - { - u16_t todo = 0; - u16_t bufx = 0; + /* Write block to I2C ***************************************************** */ + blockSize = ((DRXDAP_MAX_WCHUNKSIZE) - overheadSize) & ~1; + do { + u16_t todo = 0; + u16_t bufx = 0; - /* Buffer device address */ - addr &= ~DRXDAP_FASI_FLAGS; - addr |= flags; + /* Buffer device address */ + addr &= ~DRXDAP_FASI_FLAGS; + addr |= flags; #if ( ( (DRXDAPFASI_LONG_ADDR_ALLOWED)==1 ) && \ ( (DRXDAPFASI_SHORT_ADDR_ALLOWED)==1 ) ) - /* short format address preferred but long format otherwise */ - if ( DRXDAP_FASI_LONG_FORMAT(addr) ) - { + /* short format address preferred but long format otherwise */ + if (DRXDAP_FASI_LONG_FORMAT(addr)) { #endif #if ( (DRXDAPFASI_LONG_ADDR_ALLOWED)==1 ) - buf[bufx++] = (u8_t) (((addr << 1) & 0xFF)|0x01); - buf[bufx++] = (u8_t) ((addr >> 16) & 0xFF); - buf[bufx++] = (u8_t) ((addr >> 24) & 0xFF); - buf[bufx++] = (u8_t) ((addr >> 7) & 0xFF); + buf[bufx++] = (u8_t) (((addr << 1) & 0xFF) | 0x01); + buf[bufx++] = (u8_t) ((addr >> 16) & 0xFF); + buf[bufx++] = (u8_t) ((addr >> 24) & 0xFF); + buf[bufx++] = (u8_t) ((addr >> 7) & 0xFF); #endif #if ( ( (DRXDAPFASI_LONG_ADDR_ALLOWED)==1 ) && \ ( (DRXDAPFASI_SHORT_ADDR_ALLOWED)==1 ) ) - } else { + } else { #endif #if ( (DRXDAPFASI_SHORT_ADDR_ALLOWED)==1 ) - buf[bufx++] = (u8_t) ((addr << 1) & 0xFF); - buf[bufx++] = (u8_t) ( ((addr >> 16) & 0x0F) | ((addr >> 18) & 0xF0) ); + buf[bufx++] = (u8_t) ((addr << 1) & 0xFF); + buf[bufx++] = + (u8_t) (((addr >> 16) & 0x0F) | + ((addr >> 18) & 0xF0)); #endif #if ( ( (DRXDAPFASI_LONG_ADDR_ALLOWED)==1 ) && \ ( (DRXDAPFASI_SHORT_ADDR_ALLOWED)==1 ) ) - } + } #endif - /* - In single master mode blockSize can be 0. In such a case this I2C - sequense will be visible: (1) write address {i2c addr, - 4 bytes chip address} (2) write data {i2c addr, 4 bytes data } - (3) write address (4) write data etc... - Addres must be rewriten because HI is reset after data transport and - expects an address. - */ - todo = (blockSize < datasize ? blockSize : datasize); - if (todo==0) - { - u16_t overheadSizeI2cAddr = 0; - u16_t dataBlockSize = 0; - - overheadSizeI2cAddr = (IS_I2C_10BIT (devAddr->i2cAddr) ? 2 : 1); - dataBlockSize = ( DRXDAP_MAX_WCHUNKSIZE - overheadSizeI2cAddr) & ~1; - - /* write device address */ - st = DRXBSP_I2C_WriteRead( devAddr, - (u16_t) (bufx), - buf, - (pI2CDeviceAddr_t)(NULL), - 0, - (pu8_t)(NULL) ); - - if ( ( st != DRX_STS_OK ) && ( firstErr == DRX_STS_OK ) ) - { - /* at the end, return the first error encountered */ - firstErr = st; - } - bufx = 0; - todo = (dataBlockSize < datasize ? dataBlockSize : datasize); - } - DRXBSP_HST_Memcpy (&buf[bufx], data, todo); - /* write (address if can do and) data */ - st = DRXBSP_I2C_WriteRead( devAddr, - (u16_t)(bufx + todo), - buf, - (pI2CDeviceAddr_t)(NULL), - 0, - (pu8_t)(NULL) ); - - if ( ( st != DRX_STS_OK ) && ( firstErr == DRX_STS_OK ) ) - { - /* at the end, return the first error encountered */ - firstErr = st; - } - datasize -= todo; - data += todo; - addr += (todo >> 1); - } while (datasize); - - return firstErr; + /* + In single master mode blockSize can be 0. In such a case this I2C + sequense will be visible: (1) write address {i2c addr, + 4 bytes chip address} (2) write data {i2c addr, 4 bytes data } + (3) write address (4) write data etc... + Addres must be rewriten because HI is reset after data transport and + expects an address. + */ + todo = (blockSize < datasize ? blockSize : datasize); + if (todo == 0) { + u16_t overheadSizeI2cAddr = 0; + u16_t dataBlockSize = 0; + + overheadSizeI2cAddr = + (IS_I2C_10BIT(devAddr->i2cAddr) ? 2 : 1); + dataBlockSize = + (DRXDAP_MAX_WCHUNKSIZE - overheadSizeI2cAddr) & ~1; + + /* write device address */ + st = DRXBSP_I2C_WriteRead(devAddr, + (u16_t) (bufx), + buf, + (pI2CDeviceAddr_t) (NULL), + 0, (pu8_t) (NULL)); + + if ((st != DRX_STS_OK) && (firstErr == DRX_STS_OK)) { + /* at the end, return the first error encountered */ + firstErr = st; + } + bufx = 0; + todo = + (dataBlockSize < + datasize ? dataBlockSize : datasize); + } + DRXBSP_HST_Memcpy(&buf[bufx], data, todo); + /* write (address if can do and) data */ + st = DRXBSP_I2C_WriteRead(devAddr, + (u16_t) (bufx + todo), + buf, + (pI2CDeviceAddr_t) (NULL), + 0, (pu8_t) (NULL)); + + if ((st != DRX_STS_OK) && (firstErr == DRX_STS_OK)) { + /* at the end, return the first error encountered */ + firstErr = st; + } + datasize -= todo; + data += todo; + addr += (todo >> 1); + } while (datasize); + + return firstErr; } - - - /****************************** * * DRXStatus_t DRXDAP_FASI_WriteReg16 ( @@ -626,22 +575,18 @@ static DRXStatus_t DRXDAP_FASI_WriteBlock ( pI2CDeviceAddr_t devAddr, * ******************************/ -static DRXStatus_t DRXDAP_FASI_WriteReg16 ( pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t data, - DRXflags_t flags ) +static DRXStatus_t DRXDAP_FASI_WriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t data, DRXflags_t flags) { - u8_t buf[sizeof (data)]; + u8_t buf[sizeof(data)]; - buf[0] = (u8_t) ( (data >> 0 ) & 0xFF ); - buf[1] = (u8_t) ( (data >> 8 ) & 0xFF ); + buf[0] = (u8_t) ((data >> 0) & 0xFF); + buf[1] = (u8_t) ((data >> 8) & 0xFF); - return DRXDAP_FASI_WriteBlock (devAddr, addr, sizeof (data), buf, flags); + return DRXDAP_FASI_WriteBlock(devAddr, addr, sizeof(data), buf, flags); } - - - /****************************** * * DRXStatus_t DRXDAP_FASI_WriteReg32 ( @@ -659,17 +604,16 @@ static DRXStatus_t DRXDAP_FASI_WriteReg16 ( pI2CDeviceAddr_t devAddr, * ******************************/ -static DRXStatus_t DRXDAP_FASI_WriteReg32 ( pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u32_t data, - DRXflags_t flags ) +static DRXStatus_t DRXDAP_FASI_WriteReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u32_t data, DRXflags_t flags) { - u8_t buf[sizeof (data)]; + u8_t buf[sizeof(data)]; - buf[0] = (u8_t) ( (data >> 0 ) & 0xFF ); - buf[1] = (u8_t) ( (data >> 8 ) & 0xFF ); - buf[2] = (u8_t) ( (data >> 16) & 0xFF ); - buf[3] = (u8_t) ( (data >> 24) & 0xFF ); + buf[0] = (u8_t) ((data >> 0) & 0xFF); + buf[1] = (u8_t) ((data >> 8) & 0xFF); + buf[2] = (u8_t) ((data >> 16) & 0xFF); + buf[3] = (u8_t) ((data >> 24) & 0xFF); - return DRXDAP_FASI_WriteBlock (devAddr, addr, sizeof (data), buf, flags); + return DRXDAP_FASI_WriteBlock(devAddr, addr, sizeof(data), buf, flags); } diff --git a/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.h b/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.h index 4429ef7c21e4..756f08d8220e 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.h +++ b/drivers/media/dvb-frontends/drx39xyj/drx_dap_fasi.h @@ -96,10 +96,9 @@ #if ( ( DRXDAPFASI_LONG_ADDR_ALLOWED==0 ) && \ ( DRXDAPFASI_SHORT_ADDR_ALLOWED==0 ) ) #error At least one of short- or long-addressing format must be allowed. -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #endif - /******************************************** * Single/master multi master setting ********************************************/ @@ -200,18 +199,18 @@ #if ( (DRXDAPFASI_LONG_ADDR_ALLOWED==0)&&(DRXDAPFASI_SHORT_ADDR_ALLOWED==1) ) #if DRXDAP_SINGLE_MASTER #error DRXDAP_MAX_WCHUNKSIZE must be at least 3 in single master mode -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #else #error DRXDAP_MAX_WCHUNKSIZE must be at least 5 in multi master mode -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #endif #else #if DRXDAP_SINGLE_MASTER #error DRXDAP_MAX_WCHUNKSIZE must be at least 5 in single master mode -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #else #error DRXDAP_MAX_WCHUNKSIZE must be at least 7 in multi master mode -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #endif #endif #endif @@ -224,13 +223,13 @@ /* check */ #if DRXDAP_MAX_RCHUNKSIZE < 2 #error DRXDAP_MAX_RCHUNKSIZE must be at least 2 -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #endif /* check */ #if DRXDAP_MAX_RCHUNKSIZE & 1 #error DRXDAP_MAX_RCHUNKSIZE must be even -*; /* illegal statement to force compiler error */ +*; /* illegal statement to force compiler error */ #endif /*-------- Public API functions ----------------------------------------------*/ @@ -239,15 +238,14 @@ extern "C" { #endif - -extern DRXAccessFunc_t drxDapFASIFunct_g; + extern DRXAccessFunc_t drxDapFASIFunct_g; #define DRXDAP_FASI_RMW 0x10000000 #define DRXDAP_FASI_BROADCAST 0x20000000 #define DRXDAP_FASI_CLEARCRC 0x80000000 #define DRXDAP_FASI_SINGLE_MASTER 0xC0000000 #define DRXDAP_FASI_MULTI_MASTER 0x40000000 -#define DRXDAP_FASI_SMM_SWITCH 0x40000000 /* single/multi master switch */ +#define DRXDAP_FASI_SMM_SWITCH 0x40000000 /* single/multi master switch */ #define DRXDAP_FASI_MODEFLAGS 0xC0000000 #define DRXDAP_FASI_FLAGS 0xF0000000 @@ -259,10 +257,7 @@ extern DRXAccessFunc_t drxDapFASIFunct_g; #define DRXDAP_FASI_LONG_FORMAT( addr ) (((addr)& 0xFC30FF80)!=0) #define DRXDAP_FASI_OFFSET_TOO_LARGE( addr ) (((addr)& 0x00008000)!=0) - #ifdef __cplusplus } #endif - - -#endif /* __DRX_DAP_FASI_H__ */ +#endif /* __DRX_DAP_FASI_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drx_driver.c b/drivers/media/dvb-frontends/drx39xyj/drx_driver.c index 84c7dd42eb91..2d2711032292 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx_driver.c +++ b/drivers/media/dvb-frontends/drx39xyj/drx_driver.c @@ -119,14 +119,17 @@ STRUCTURES ------------------------------------------------------------------------------*/ /** \brief Structure of the microcode block headers */ typedef struct { - u32_t addr; /**< Destination address of the data in this block */ - u16_t size; /**< Size of the block data following this header counted in + u32_t addr; + /**< Destination address of the data in this block */ + u16_t size; + /**< Size of the block data following this header counted in 16 bits words */ - u16_t flags; /**< Flags for this data block: + u16_t flags; + /**< Flags for this data block: - bit[0]= CRC on/off - bit[1]= compression on/off - bit[15..2]=reserved */ - u16_t CRC; /**< CRC value of the data block, only valid if CRC flag is + u16_t CRC;/**< CRC value of the data block, only valid if CRC flag is set. */ } DRXUCodeBlockHdr_t, *pDRXUCodeBlockHdr_t; @@ -144,33 +147,30 @@ FUNCTIONS /* Prototype of default scanning function */ static DRXStatus_t -ScanFunctionDefault( void *scanContext, - DRXScanCommand_t scanCommand, - pDRXChannel_t scanChannel, - pBool_t getNextChannel ); +ScanFunctionDefault(void *scanContext, + DRXScanCommand_t scanCommand, + pDRXChannel_t scanChannel, pBool_t getNextChannel); /** * \brief Get pointer to scanning function. * \param demod: Pointer to demodulator instance. * \return DRXScanFunc_t. */ -static DRXScanFunc_t -GetScanFunction( pDRXDemodInstance_t demod ) +static DRXScanFunc_t GetScanFunction(pDRXDemodInstance_t demod) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - DRXScanFunc_t scanFunc = (DRXScanFunc_t)(NULL); - - /* get scan function from common attributes */ - commonAttr = (pDRXCommonAttr_t)demod->myCommonAttr; - scanFunc = commonAttr->scanFunction; - - if ( scanFunc != NULL ) - { - /* return device-specific scan function if it's not NULL */ - return scanFunc; - } - /* otherwise return default scan function in core driver */ - return &ScanFunctionDefault; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + DRXScanFunc_t scanFunc = (DRXScanFunc_t) (NULL); + + /* get scan function from common attributes */ + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + scanFunc = commonAttr->scanFunction; + + if (scanFunc != NULL) { + /* return device-specific scan function if it's not NULL */ + return scanFunc; + } + /* otherwise return default scan function in core driver */ + return &ScanFunctionDefault; } /** @@ -179,21 +179,19 @@ GetScanFunction( pDRXDemodInstance_t demod ) * \param scanContext: Context Pointer. * \return DRXScanFunc_t. */ -void *GetScanContext( pDRXDemodInstance_t demod, - void *scanContext) +void *GetScanContext(pDRXDemodInstance_t demod, void *scanContext) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); - /* get scan function from common attributes */ - commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; - scanContext = commonAttr->scanContext; + /* get scan function from common attributes */ + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + scanContext = commonAttr->scanContext; - if ( scanContext == NULL ) - { - scanContext = (void *) demod; - } + if (scanContext == NULL) { + scanContext = (void *)demod; + } - return scanContext; + return scanContext; } /** @@ -214,59 +212,50 @@ void *GetScanContext( pDRXDemodInstance_t demod, * In case DRX_NEVER_LOCK is returned the poll-wait will be aborted. * */ -static DRXStatus_t -ScanWaitForLock( pDRXDemodInstance_t demod, - pBool_t isLocked ) +static DRXStatus_t ScanWaitForLock(pDRXDemodInstance_t demod, pBool_t isLocked) { - Bool_t doneWaiting = FALSE; - DRXLockStatus_t lockState = DRX_NOT_LOCKED; - DRXLockStatus_t desiredLockState = DRX_NOT_LOCKED; - u32_t timeoutValue = 0; - u32_t startTimeLockStage = 0; - u32_t currentTime = 0; - u32_t timerValue = 0; - - *isLocked = FALSE; - timeoutValue = (u32_t) demod->myCommonAttr->scanDemodLockTimeout; - desiredLockState = demod->myCommonAttr->scanDesiredLock; - startTimeLockStage = DRXBSP_HST_Clock(); - - /* Start polling loop, checking for lock & timeout */ - while ( doneWaiting == FALSE ) - { - - if ( DRX_Ctrl( demod, DRX_CTRL_LOCK_STATUS, &lockState ) != DRX_STS_OK ) - { - return DRX_STS_ERROR; - } - currentTime = DRXBSP_HST_Clock(); - - timerValue = currentTime - startTimeLockStage; - if ( lockState >= desiredLockState ) - { - *isLocked = TRUE; - doneWaiting = TRUE; - } /* if ( lockState >= desiredLockState ) .. */ - else if ( lockState == DRX_NEVER_LOCK ) - { - doneWaiting = TRUE; - } /* if ( lockState == DRX_NEVER_LOCK ) .. */ - else if ( timerValue > timeoutValue ) - { - /* lockState == DRX_NOT_LOCKED and timeout */ - doneWaiting = TRUE; - } - else - { - if ( DRXBSP_HST_Sleep( 10 ) != DRX_STS_OK ) - { - return DRX_STS_ERROR; - } - } /* if ( timerValue > timeoutValue ) .. */ - - } /* while */ - - return DRX_STS_OK; + Bool_t doneWaiting = FALSE; + DRXLockStatus_t lockState = DRX_NOT_LOCKED; + DRXLockStatus_t desiredLockState = DRX_NOT_LOCKED; + u32_t timeoutValue = 0; + u32_t startTimeLockStage = 0; + u32_t currentTime = 0; + u32_t timerValue = 0; + + *isLocked = FALSE; + timeoutValue = (u32_t) demod->myCommonAttr->scanDemodLockTimeout; + desiredLockState = demod->myCommonAttr->scanDesiredLock; + startTimeLockStage = DRXBSP_HST_Clock(); + + /* Start polling loop, checking for lock & timeout */ + while (doneWaiting == FALSE) { + + if (DRX_Ctrl(demod, DRX_CTRL_LOCK_STATUS, &lockState) != + DRX_STS_OK) { + return DRX_STS_ERROR; + } + currentTime = DRXBSP_HST_Clock(); + + timerValue = currentTime - startTimeLockStage; + if (lockState >= desiredLockState) { + *isLocked = TRUE; + doneWaiting = TRUE; + } /* if ( lockState >= desiredLockState ) .. */ + else if (lockState == DRX_NEVER_LOCK) { + doneWaiting = TRUE; + } /* if ( lockState == DRX_NEVER_LOCK ) .. */ + else if (timerValue > timeoutValue) { + /* lockState == DRX_NOT_LOCKED and timeout */ + doneWaiting = TRUE; + } else { + if (DRXBSP_HST_Sleep(10) != DRX_STS_OK) { + return DRX_STS_ERROR; + } + } /* if ( timerValue > timeoutValue ) .. */ + + } /* while */ + + return DRX_STS_OK; } /*============================================================================*/ @@ -285,73 +274,66 @@ ScanWaitForLock( pDRXDemodInstance_t demod, * */ static DRXStatus_t -ScanPrepareNextScan ( pDRXDemodInstance_t demod, - DRXFrequency_t skip ) +ScanPrepareNextScan(pDRXDemodInstance_t demod, DRXFrequency_t skip) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - u16_t tableIndex = 0; - u16_t frequencyPlanSize = 0; - pDRXFrequencyPlan_t frequencyPlan = (pDRXFrequencyPlan_t)(NULL); - DRXFrequency_t nextFrequency = 0; - DRXFrequency_t tunerMinFrequency = 0; - DRXFrequency_t tunerMaxFrequency = 0; - - commonAttr = (pDRXCommonAttr_t)demod->myCommonAttr; - tableIndex = commonAttr->scanFreqPlanIndex; - frequencyPlan = commonAttr->scanParam->frequencyPlan; - nextFrequency = commonAttr->scanNextFrequency; - tunerMinFrequency = commonAttr->tunerMinFreqRF; - tunerMaxFrequency = commonAttr->tunerMaxFreqRF; - - do - { - /* Search next frequency to scan */ - - /* always take at least one step */ - (commonAttr->scanChannelsScanned) ++; - nextFrequency += frequencyPlan[tableIndex].step; - skip -= frequencyPlan[tableIndex].step; - - /* and then as many steps necessary to exceed 'skip' - without exceeding end of the band */ - while ( ( skip > 0 ) && - ( nextFrequency <= frequencyPlan[tableIndex].last ) ) - { - (commonAttr->scanChannelsScanned) ++; - nextFrequency += frequencyPlan[tableIndex].step; - skip -= frequencyPlan[tableIndex].step; - } - /* reset skip, in case we move to the next band later */ - skip = 0; - - if ( nextFrequency > frequencyPlan[tableIndex].last ) - { - /* reached end of this band */ - tableIndex++; - frequencyPlanSize = commonAttr->scanParam->frequencyPlanSize; - if ( tableIndex >= frequencyPlanSize ) - { - /* reached end of frequency plan */ - commonAttr->scanReady = TRUE; - } - else - { - nextFrequency = frequencyPlan[tableIndex].first; - } - } - if ( nextFrequency > (tunerMaxFrequency) ) - { - /* reached end of tuner range */ - commonAttr->scanReady = TRUE; - } - } while( ( nextFrequency < tunerMinFrequency ) && - ( commonAttr->scanReady == FALSE ) ); - - /* Store new values */ - commonAttr->scanFreqPlanIndex = tableIndex; - commonAttr->scanNextFrequency = nextFrequency; - - return DRX_STS_OK; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + u16_t tableIndex = 0; + u16_t frequencyPlanSize = 0; + pDRXFrequencyPlan_t frequencyPlan = (pDRXFrequencyPlan_t) (NULL); + DRXFrequency_t nextFrequency = 0; + DRXFrequency_t tunerMinFrequency = 0; + DRXFrequency_t tunerMaxFrequency = 0; + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + tableIndex = commonAttr->scanFreqPlanIndex; + frequencyPlan = commonAttr->scanParam->frequencyPlan; + nextFrequency = commonAttr->scanNextFrequency; + tunerMinFrequency = commonAttr->tunerMinFreqRF; + tunerMaxFrequency = commonAttr->tunerMaxFreqRF; + + do { + /* Search next frequency to scan */ + + /* always take at least one step */ + (commonAttr->scanChannelsScanned)++; + nextFrequency += frequencyPlan[tableIndex].step; + skip -= frequencyPlan[tableIndex].step; + + /* and then as many steps necessary to exceed 'skip' + without exceeding end of the band */ + while ((skip > 0) && + (nextFrequency <= frequencyPlan[tableIndex].last)) { + (commonAttr->scanChannelsScanned)++; + nextFrequency += frequencyPlan[tableIndex].step; + skip -= frequencyPlan[tableIndex].step; + } + /* reset skip, in case we move to the next band later */ + skip = 0; + + if (nextFrequency > frequencyPlan[tableIndex].last) { + /* reached end of this band */ + tableIndex++; + frequencyPlanSize = + commonAttr->scanParam->frequencyPlanSize; + if (tableIndex >= frequencyPlanSize) { + /* reached end of frequency plan */ + commonAttr->scanReady = TRUE; + } else { + nextFrequency = frequencyPlan[tableIndex].first; + } + } + if (nextFrequency > (tunerMaxFrequency)) { + /* reached end of tuner range */ + commonAttr->scanReady = TRUE; + } + } while ((nextFrequency < tunerMinFrequency) && + (commonAttr->scanReady == FALSE)); + + /* Store new values */ + commonAttr->scanFreqPlanIndex = tableIndex; + commonAttr->scanNextFrequency = nextFrequency; + + return DRX_STS_OK; } /*============================================================================*/ @@ -373,47 +355,42 @@ ScanPrepareNextScan ( pDRXDemodInstance_t demod, * scanChannel and getNextChannel will be NULL for INIT and STOP. */ static DRXStatus_t -ScanFunctionDefault ( void *scanContext, - DRXScanCommand_t scanCommand, - pDRXChannel_t scanChannel, - pBool_t getNextChannel ) +ScanFunctionDefault(void *scanContext, + DRXScanCommand_t scanCommand, + pDRXChannel_t scanChannel, pBool_t getNextChannel) { - pDRXDemodInstance_t demod = NULL; - DRXStatus_t status = DRX_STS_ERROR; - Bool_t isLocked = FALSE; - - demod = (pDRXDemodInstance_t) scanContext; - - if ( scanCommand != DRX_SCAN_COMMAND_NEXT ) - { - /* just return OK if not doing "scan next" */ - return DRX_STS_OK; - } - - *getNextChannel = FALSE; - - status = DRX_Ctrl ( demod, DRX_CTRL_SET_CHANNEL, scanChannel ); - if ( status != DRX_STS_OK ) - { - return (status); - } - - status = ScanWaitForLock ( demod, &isLocked ); - if ( status != DRX_STS_OK ) - { - return status; - } - - /* done with this channel, move to next one */ - *getNextChannel = TRUE; - - if ( isLocked == FALSE ) - { - /* no channel found */ - return DRX_STS_BUSY; - } - /* channel found */ - return DRX_STS_OK; + pDRXDemodInstance_t demod = NULL; + DRXStatus_t status = DRX_STS_ERROR; + Bool_t isLocked = FALSE; + + demod = (pDRXDemodInstance_t) scanContext; + + if (scanCommand != DRX_SCAN_COMMAND_NEXT) { + /* just return OK if not doing "scan next" */ + return DRX_STS_OK; + } + + *getNextChannel = FALSE; + + status = DRX_Ctrl(demod, DRX_CTRL_SET_CHANNEL, scanChannel); + if (status != DRX_STS_OK) { + return (status); + } + + status = ScanWaitForLock(demod, &isLocked); + if (status != DRX_STS_OK) { + return status; + } + + /* done with this channel, move to next one */ + *getNextChannel = TRUE; + + if (isLocked == FALSE) { + /* no channel found */ + return DRX_STS_BUSY; + } + /* channel found */ + return DRX_STS_OK; } /*============================================================================*/ @@ -436,150 +413,133 @@ ScanFunctionDefault ( void *scanContext, * */ static DRXStatus_t -CtrlScanInit( pDRXDemodInstance_t demod, - pDRXScanParam_t scanParam ) +CtrlScanInit(pDRXDemodInstance_t demod, pDRXScanParam_t scanParam) { - DRXStatus_t status = DRX_STS_ERROR; - pDRXCommonAttr_t commonAttr =(pDRXCommonAttr_t)(NULL); - DRXFrequency_t maxTunerFreq = 0; - DRXFrequency_t minTunerFreq = 0; - u16_t nrChannelsInPlan = 0; - u16_t i = 0; - void *scanContext = NULL; - - commonAttr = (pDRXCommonAttr_t)demod->myCommonAttr; - commonAttr->scanActive = TRUE; - - /* invalidate a previous SCAN_INIT */ - commonAttr->scanParam = (pDRXScanParam_t)(NULL); - commonAttr->scanNextFrequency = 0; - - /* Check parameters */ - if ( ( ( demod->myTuner == NULL ) && - ( scanParam->numTries !=1) ) || - - ( scanParam == NULL) || - ( scanParam->numTries == 0) || - ( scanParam->frequencyPlan == NULL) || - ( scanParam->frequencyPlanSize == 0 ) - ) - { - commonAttr->scanActive = FALSE; - return DRX_STS_INVALID_ARG; - } - - /* Check frequency plan contents */ - maxTunerFreq = commonAttr->tunerMaxFreqRF; - minTunerFreq = commonAttr->tunerMinFreqRF; - for( i = 0; i < (scanParam->frequencyPlanSize); i++ ) - { - DRXFrequency_t width = 0; - DRXFrequency_t step = scanParam->frequencyPlan[i].step; - DRXFrequency_t firstFreq = scanParam->frequencyPlan[i].first; - DRXFrequency_t lastFreq = scanParam->frequencyPlan[i].last; - DRXFrequency_t minFreq = 0; - DRXFrequency_t maxFreq = 0; - - if ( step <= 0 ) - { - /* Step must be positive and non-zero */ - commonAttr->scanActive = FALSE; - return DRX_STS_INVALID_ARG; - } - - if ( firstFreq > lastFreq ) - { - /* First center frequency is higher than last center frequency */ - commonAttr->scanActive = FALSE; - return DRX_STS_INVALID_ARG; - } - - width = lastFreq - firstFreq; - - if ( ( width % step ) != 0 ) - { - /* Difference between last and first center frequency is not - an integer number of steps */ - commonAttr->scanActive = FALSE; - return DRX_STS_INVALID_ARG; - } - - /* Check if frequency plan entry intersects with tuner range */ - if ( lastFreq >= minTunerFreq ) - { - if ( firstFreq <= maxTunerFreq ) - { - if ( firstFreq >= minTunerFreq ) - { - minFreq = firstFreq; - } - else - { - DRXFrequency_t n = 0; - - n = ( minTunerFreq - firstFreq ) / step; - if ( ( ( minTunerFreq - firstFreq ) % step ) != 0 ) - { - n++; - } - minFreq = firstFreq + n*step; - } - - if ( lastFreq <= maxTunerFreq ) - { - maxFreq = lastFreq; - } - else - { - DRXFrequency_t n=0; - - n=( lastFreq - maxTunerFreq )/step; - if ( (( lastFreq - maxTunerFreq )%step) !=0 ) - { - n++; - } - maxFreq = lastFreq - n*step; - } - } - } - - /* Keep track of total number of channels within tuner range - in this frequency plan. */ - if ( (minFreq !=0 ) && ( maxFreq != 0 ) ) - { - nrChannelsInPlan += (u16_t)( ( ( maxFreq-minFreq ) / step ) +1 ); - - /* Determine first frequency (within tuner range) to scan */ - if ( commonAttr->scanNextFrequency == 0 ) - { - commonAttr->scanNextFrequency = minFreq; - commonAttr->scanFreqPlanIndex = i; - } - } - - }/* for ( ... ) */ - - if ( nrChannelsInPlan == 0 ) - { - /* Tuner range and frequency plan ranges do not overlap */ - commonAttr->scanActive = FALSE; - return DRX_STS_ERROR; - } - - /* Store parameters */ - commonAttr->scanReady = FALSE; - commonAttr->scanMaxChannels = nrChannelsInPlan; - commonAttr->scanChannelsScanned = 0; - commonAttr->scanParam = scanParam; /* SCAN_NEXT is now allowed */ - - scanContext = GetScanContext(demod, scanContext); - - status = (*(GetScanFunction( demod ))) - ( scanContext, DRX_SCAN_COMMAND_INIT, NULL, NULL ); - - commonAttr->scanActive = FALSE; - - return DRX_STS_OK; + DRXStatus_t status = DRX_STS_ERROR; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + DRXFrequency_t maxTunerFreq = 0; + DRXFrequency_t minTunerFreq = 0; + u16_t nrChannelsInPlan = 0; + u16_t i = 0; + void *scanContext = NULL; + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + commonAttr->scanActive = TRUE; + + /* invalidate a previous SCAN_INIT */ + commonAttr->scanParam = (pDRXScanParam_t) (NULL); + commonAttr->scanNextFrequency = 0; + + /* Check parameters */ + if (((demod->myTuner == NULL) && + (scanParam->numTries != 1)) || + (scanParam == NULL) || + (scanParam->numTries == 0) || + (scanParam->frequencyPlan == NULL) || + (scanParam->frequencyPlanSize == 0) + ) { + commonAttr->scanActive = FALSE; + return DRX_STS_INVALID_ARG; + } + + /* Check frequency plan contents */ + maxTunerFreq = commonAttr->tunerMaxFreqRF; + minTunerFreq = commonAttr->tunerMinFreqRF; + for (i = 0; i < (scanParam->frequencyPlanSize); i++) { + DRXFrequency_t width = 0; + DRXFrequency_t step = scanParam->frequencyPlan[i].step; + DRXFrequency_t firstFreq = scanParam->frequencyPlan[i].first; + DRXFrequency_t lastFreq = scanParam->frequencyPlan[i].last; + DRXFrequency_t minFreq = 0; + DRXFrequency_t maxFreq = 0; + + if (step <= 0) { + /* Step must be positive and non-zero */ + commonAttr->scanActive = FALSE; + return DRX_STS_INVALID_ARG; + } + + if (firstFreq > lastFreq) { + /* First center frequency is higher than last center frequency */ + commonAttr->scanActive = FALSE; + return DRX_STS_INVALID_ARG; + } + + width = lastFreq - firstFreq; + + if ((width % step) != 0) { + /* Difference between last and first center frequency is not + an integer number of steps */ + commonAttr->scanActive = FALSE; + return DRX_STS_INVALID_ARG; + } + + /* Check if frequency plan entry intersects with tuner range */ + if (lastFreq >= minTunerFreq) { + if (firstFreq <= maxTunerFreq) { + if (firstFreq >= minTunerFreq) { + minFreq = firstFreq; + } else { + DRXFrequency_t n = 0; + + n = (minTunerFreq - firstFreq) / step; + if (((minTunerFreq - + firstFreq) % step) != 0) { + n++; + } + minFreq = firstFreq + n * step; + } + + if (lastFreq <= maxTunerFreq) { + maxFreq = lastFreq; + } else { + DRXFrequency_t n = 0; + + n = (lastFreq - maxTunerFreq) / step; + if (((lastFreq - + maxTunerFreq) % step) != 0) { + n++; + } + maxFreq = lastFreq - n * step; + } + } + } + + /* Keep track of total number of channels within tuner range + in this frequency plan. */ + if ((minFreq != 0) && (maxFreq != 0)) { + nrChannelsInPlan += + (u16_t) (((maxFreq - minFreq) / step) + 1); + + /* Determine first frequency (within tuner range) to scan */ + if (commonAttr->scanNextFrequency == 0) { + commonAttr->scanNextFrequency = minFreq; + commonAttr->scanFreqPlanIndex = i; + } + } + + } /* for ( ... ) */ + + if (nrChannelsInPlan == 0) { + /* Tuner range and frequency plan ranges do not overlap */ + commonAttr->scanActive = FALSE; + return DRX_STS_ERROR; + } + + /* Store parameters */ + commonAttr->scanReady = FALSE; + commonAttr->scanMaxChannels = nrChannelsInPlan; + commonAttr->scanChannelsScanned = 0; + commonAttr->scanParam = scanParam; /* SCAN_NEXT is now allowed */ + + scanContext = GetScanContext(demod, scanContext); + + status = (*(GetScanFunction(demod))) + (scanContext, DRX_SCAN_COMMAND_INIT, NULL, NULL); + + commonAttr->scanActive = FALSE; + + return DRX_STS_OK; } /*============================================================================*/ @@ -592,36 +552,34 @@ CtrlScanInit( pDRXDemodInstance_t demod, * \retval DRX_STS_ERROR: Something went wrong. * \retval DRX_STS_INVALID_ARG: Wrong parameters. */ -static DRXStatus_t -CtrlScanStop( pDRXDemodInstance_t demod ) +static DRXStatus_t CtrlScanStop(pDRXDemodInstance_t demod) { - DRXStatus_t status = DRX_STS_ERROR; - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); - void *scanContext = NULL; + DRXStatus_t status = DRX_STS_ERROR; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + void *scanContext = NULL; - commonAttr = (pDRXCommonAttr_t)demod->myCommonAttr; - commonAttr->scanActive = TRUE; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + commonAttr->scanActive = TRUE; - if ( ( commonAttr->scanParam == NULL ) || - ( commonAttr->scanMaxChannels == 0 ) ) - { - /* Scan was not running, just return OK */ - commonAttr->scanActive = FALSE; - return DRX_STS_OK; - } + if ((commonAttr->scanParam == NULL) || + (commonAttr->scanMaxChannels == 0)) { + /* Scan was not running, just return OK */ + commonAttr->scanActive = FALSE; + return DRX_STS_OK; + } - /* Call default or device-specific scanning stop function */ - scanContext = GetScanContext(demod, scanContext); + /* Call default or device-specific scanning stop function */ + scanContext = GetScanContext(demod, scanContext); - status = (*(GetScanFunction( demod ))) - ( scanContext, DRX_SCAN_COMMAND_STOP, NULL, NULL ); + status = (*(GetScanFunction(demod))) + (scanContext, DRX_SCAN_COMMAND_STOP, NULL, NULL); - /* All done, invalidate scan-init */ - commonAttr->scanParam = NULL; - commonAttr->scanMaxChannels = 0; - commonAttr->scanActive = FALSE; + /* All done, invalidate scan-init */ + commonAttr->scanParam = NULL; + commonAttr->scanMaxChannels = 0; + commonAttr->scanActive = FALSE; - return status; + return status; } /*============================================================================*/ @@ -644,120 +602,113 @@ CtrlScanStop( pDRXDemodInstance_t demod ) * Progress indication will run from 0 upto DRX_SCAN_MAX_PROGRESS during scan. * */ -static DRXStatus_t -CtrlScanNext ( pDRXDemodInstance_t demod, - pu16_t scanProgress ) +static DRXStatus_t CtrlScanNext(pDRXDemodInstance_t demod, pu16_t scanProgress) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - pBool_t scanReady = (pBool_t)(NULL); - u16_t maxProgress = DRX_SCAN_MAX_PROGRESS; - u32_t numTries = 0; - u32_t i = 0; - - commonAttr = (pDRXCommonAttr_t)demod->myCommonAttr; - - /* Check scan parameters */ - if ( scanProgress == NULL ) - { - commonAttr->scanActive = FALSE; - return DRX_STS_INVALID_ARG; - } - - *scanProgress = 0; - commonAttr->scanActive = TRUE; - if ( ( commonAttr->scanParam == NULL) || - ( commonAttr->scanMaxChannels == 0 ) ) - { - /* CtrlScanInit() was not called succesfully before CtrlScanNext() */ - commonAttr->scanActive = FALSE; - return DRX_STS_ERROR; - } - - *scanProgress = (u16_t)( ( ( commonAttr->scanChannelsScanned)* - ( (u32_t)(maxProgress) ) ) / - ( commonAttr->scanMaxChannels ) ); - - /* Scan */ - numTries = commonAttr->scanParam->numTries; - scanReady = &(commonAttr->scanReady); - - for ( i = 0; ( (i < numTries) && ( (*scanReady) == FALSE) ); i++) - { - DRXChannel_t scanChannel = { 0 }; - DRXStatus_t status = DRX_STS_ERROR; - pDRXFrequencyPlan_t freqPlan = (pDRXFrequencyPlan_t) (NULL); - Bool_t nextChannel = FALSE; - void *scanContext = NULL; - - /* Next channel to scan */ - freqPlan = - &(commonAttr->scanParam->frequencyPlan[commonAttr->scanFreqPlanIndex]); - scanChannel.frequency = commonAttr->scanNextFrequency; - scanChannel.bandwidth = freqPlan->bandwidth; - scanChannel.mirror = DRX_MIRROR_AUTO; - scanChannel.constellation = DRX_CONSTELLATION_AUTO; - scanChannel.hierarchy = DRX_HIERARCHY_AUTO; - scanChannel.priority = DRX_PRIORITY_HIGH; - scanChannel.coderate = DRX_CODERATE_AUTO; - scanChannel.guard = DRX_GUARD_AUTO; - scanChannel.fftmode = DRX_FFTMODE_AUTO; - scanChannel.classification = DRX_CLASSIFICATION_AUTO; - scanChannel.symbolrate = 0; - scanChannel.interleavemode = DRX_INTERLEAVEMODE_AUTO; - scanChannel.ldpc = DRX_LDPC_AUTO; - scanChannel.carrier = DRX_CARRIER_AUTO; - scanChannel.framemode = DRX_FRAMEMODE_AUTO; - scanChannel.pilot = DRX_PILOT_AUTO; - - /* Call default or device-specific scanning function */ - scanContext = GetScanContext(demod, scanContext); - - status = (*(GetScanFunction( demod ))) - ( scanContext,DRX_SCAN_COMMAND_NEXT,&scanChannel,&nextChannel ); - - /* Proceed to next channel if requested */ - if ( nextChannel == TRUE ) - { - DRXStatus_t nextStatus = DRX_STS_ERROR; - DRXFrequency_t skip = 0; - - if ( status == DRX_STS_OK ) - { - /* a channel was found, so skip some frequency steps */ - skip = commonAttr->scanParam->skip; - } - nextStatus = ScanPrepareNextScan( demod, skip ); - - /* keep track of progress */ - *scanProgress = (u16_t)(((commonAttr->scanChannelsScanned)* - ((u32_t)(maxProgress)))/ - (commonAttr->scanMaxChannels)); - - if ( nextStatus != DRX_STS_OK ) - { - commonAttr->scanActive = FALSE; - return (nextStatus); - } - } - if ( status != DRX_STS_BUSY ) - { - /* channel found or error */ - commonAttr->scanActive = FALSE; - return status; - } - } /* for ( i = 0; i < ( ... numTries); i++) */ - - if ( (*scanReady) == TRUE ) - { - /* End of scan reached: call stop-scan, ignore any error */ - CtrlScanStop( demod ); - commonAttr->scanActive = FALSE; - return (DRX_STS_READY); - } - - commonAttr->scanActive = FALSE; - - return DRX_STS_BUSY; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + pBool_t scanReady = (pBool_t) (NULL); + u16_t maxProgress = DRX_SCAN_MAX_PROGRESS; + u32_t numTries = 0; + u32_t i = 0; + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + /* Check scan parameters */ + if (scanProgress == NULL) { + commonAttr->scanActive = FALSE; + return DRX_STS_INVALID_ARG; + } + + *scanProgress = 0; + commonAttr->scanActive = TRUE; + if ((commonAttr->scanParam == NULL) || + (commonAttr->scanMaxChannels == 0)) { + /* CtrlScanInit() was not called succesfully before CtrlScanNext() */ + commonAttr->scanActive = FALSE; + return DRX_STS_ERROR; + } + + *scanProgress = (u16_t) (((commonAttr->scanChannelsScanned) * + ((u32_t) (maxProgress))) / + (commonAttr->scanMaxChannels)); + + /* Scan */ + numTries = commonAttr->scanParam->numTries; + scanReady = &(commonAttr->scanReady); + + for (i = 0; ((i < numTries) && ((*scanReady) == FALSE)); i++) { + DRXChannel_t scanChannel = { 0 }; + DRXStatus_t status = DRX_STS_ERROR; + pDRXFrequencyPlan_t freqPlan = (pDRXFrequencyPlan_t) (NULL); + Bool_t nextChannel = FALSE; + void *scanContext = NULL; + + /* Next channel to scan */ + freqPlan = + &(commonAttr->scanParam-> + frequencyPlan[commonAttr->scanFreqPlanIndex]); + scanChannel.frequency = commonAttr->scanNextFrequency; + scanChannel.bandwidth = freqPlan->bandwidth; + scanChannel.mirror = DRX_MIRROR_AUTO; + scanChannel.constellation = DRX_CONSTELLATION_AUTO; + scanChannel.hierarchy = DRX_HIERARCHY_AUTO; + scanChannel.priority = DRX_PRIORITY_HIGH; + scanChannel.coderate = DRX_CODERATE_AUTO; + scanChannel.guard = DRX_GUARD_AUTO; + scanChannel.fftmode = DRX_FFTMODE_AUTO; + scanChannel.classification = DRX_CLASSIFICATION_AUTO; + scanChannel.symbolrate = 0; + scanChannel.interleavemode = DRX_INTERLEAVEMODE_AUTO; + scanChannel.ldpc = DRX_LDPC_AUTO; + scanChannel.carrier = DRX_CARRIER_AUTO; + scanChannel.framemode = DRX_FRAMEMODE_AUTO; + scanChannel.pilot = DRX_PILOT_AUTO; + + /* Call default or device-specific scanning function */ + scanContext = GetScanContext(demod, scanContext); + + status = (*(GetScanFunction(demod))) + (scanContext, DRX_SCAN_COMMAND_NEXT, &scanChannel, + &nextChannel); + + /* Proceed to next channel if requested */ + if (nextChannel == TRUE) { + DRXStatus_t nextStatus = DRX_STS_ERROR; + DRXFrequency_t skip = 0; + + if (status == DRX_STS_OK) { + /* a channel was found, so skip some frequency steps */ + skip = commonAttr->scanParam->skip; + } + nextStatus = ScanPrepareNextScan(demod, skip); + + /* keep track of progress */ + *scanProgress = + (u16_t) (((commonAttr->scanChannelsScanned) * + ((u32_t) (maxProgress))) / + (commonAttr->scanMaxChannels)); + + if (nextStatus != DRX_STS_OK) { + commonAttr->scanActive = FALSE; + return (nextStatus); + } + } + if (status != DRX_STS_BUSY) { + /* channel found or error */ + commonAttr->scanActive = FALSE; + return status; + } + } /* for ( i = 0; i < ( ... numTries); i++) */ + + if ((*scanReady) == TRUE) { + /* End of scan reached: call stop-scan, ignore any error */ + CtrlScanStop(demod); + commonAttr->scanActive = FALSE; + return (DRX_STS_READY); + } + + commonAttr->scanActive = FALSE; + + return DRX_STS_BUSY; } #endif /* #ifndef DRX_EXCLUDE_SCAN */ @@ -778,117 +729,103 @@ CtrlScanNext ( pDRXDemodInstance_t demod, * */ static DRXStatus_t -CtrlProgramTuner( pDRXDemodInstance_t demod, - pDRXChannel_t channel ) +CtrlProgramTuner(pDRXDemodInstance_t demod, pDRXChannel_t channel) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - TUNERMode_t tunerMode = 0; - DRXStatus_t status = DRX_STS_ERROR; - DRXFrequency_t ifFrequency = 0; - Bool_t tunerSlowMode = FALSE; - - /* can't tune without a tuner */ - if ( demod->myTuner == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; - - /* select analog or digital tuner mode based on current standard */ - if ( DRX_Ctrl( demod, DRX_CTRL_GET_STANDARD, &standard ) != DRX_STS_OK ) - { - return DRX_STS_ERROR; - } - - if ( DRX_ISATVSTD( standard ) ) - { - tunerMode |= TUNER_MODE_ANALOG; - } - else /* note: also for unknown standard */ - { - tunerMode |= TUNER_MODE_DIGITAL; - } - - /* select tuner bandwidth */ - switch ( channel->bandwidth ) - { - case DRX_BANDWIDTH_6MHZ: - tunerMode |= TUNER_MODE_6MHZ; - break; - case DRX_BANDWIDTH_7MHZ: - tunerMode |= TUNER_MODE_7MHZ; - break; - case DRX_BANDWIDTH_8MHZ: - tunerMode |= TUNER_MODE_8MHZ; - break; - default: /* note: also for unknown bandwidth */ - return DRX_STS_INVALID_ARG; - } - - DRX_GET_TUNERSLOWMODE (demod, tunerSlowMode); - - /* select fast (switch) or slow (lock) tuner mode */ - if ( tunerSlowMode ) - { - tunerMode |= TUNER_MODE_LOCK; - } - else - { - tunerMode |= TUNER_MODE_SWITCH; - } - - if ( commonAttr->tunerPortNr == 1 ) - { - Bool_t bridgeClosed = TRUE; - DRXStatus_t statusBridge = DRX_STS_ERROR; - - statusBridge = DRX_Ctrl( demod, DRX_CTRL_I2C_BRIDGE, &bridgeClosed ); - if ( statusBridge != DRX_STS_OK ) - { - return statusBridge; - } - } - - status = DRXBSP_TUNER_SetFrequency( demod->myTuner, - tunerMode, - channel->frequency ); - - /* attempt restoring bridge before checking status of SetFrequency */ - if ( commonAttr->tunerPortNr == 1 ) - { - Bool_t bridgeClosed = FALSE; - DRXStatus_t statusBridge = DRX_STS_ERROR; - - statusBridge = DRX_Ctrl( demod, DRX_CTRL_I2C_BRIDGE, &bridgeClosed ); - if ( statusBridge != DRX_STS_OK ) - { - return statusBridge; - } - } - - /* now check status of DRXBSP_TUNER_SetFrequency */ - if ( status != DRX_STS_OK ) - { - return status; - } - - /* get actual RF and IF frequencies from tuner */ - status = DRXBSP_TUNER_GetFrequency( demod->myTuner, - tunerMode, - &(channel->frequency), - &(ifFrequency) ); - if ( status != DRX_STS_OK ) - { - return status; - } - - /* update common attributes with information available from this function; - TODO: check if this is required and safe */ - DRX_SET_INTERMEDIATEFREQ( demod, ifFrequency ); - - return DRX_STS_OK; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + TUNERMode_t tunerMode = 0; + DRXStatus_t status = DRX_STS_ERROR; + DRXFrequency_t ifFrequency = 0; + Bool_t tunerSlowMode = FALSE; + + /* can't tune without a tuner */ + if (demod->myTuner == NULL) { + return DRX_STS_INVALID_ARG; + } + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + /* select analog or digital tuner mode based on current standard */ + if (DRX_Ctrl(demod, DRX_CTRL_GET_STANDARD, &standard) != DRX_STS_OK) { + return DRX_STS_ERROR; + } + + if (DRX_ISATVSTD(standard)) { + tunerMode |= TUNER_MODE_ANALOG; + } else { /* note: also for unknown standard */ + + tunerMode |= TUNER_MODE_DIGITAL; + } + + /* select tuner bandwidth */ + switch (channel->bandwidth) { + case DRX_BANDWIDTH_6MHZ: + tunerMode |= TUNER_MODE_6MHZ; + break; + case DRX_BANDWIDTH_7MHZ: + tunerMode |= TUNER_MODE_7MHZ; + break; + case DRX_BANDWIDTH_8MHZ: + tunerMode |= TUNER_MODE_8MHZ; + break; + default: /* note: also for unknown bandwidth */ + return DRX_STS_INVALID_ARG; + } + + DRX_GET_TUNERSLOWMODE(demod, tunerSlowMode); + + /* select fast (switch) or slow (lock) tuner mode */ + if (tunerSlowMode) { + tunerMode |= TUNER_MODE_LOCK; + } else { + tunerMode |= TUNER_MODE_SWITCH; + } + + if (commonAttr->tunerPortNr == 1) { + Bool_t bridgeClosed = TRUE; + DRXStatus_t statusBridge = DRX_STS_ERROR; + + statusBridge = + DRX_Ctrl(demod, DRX_CTRL_I2C_BRIDGE, &bridgeClosed); + if (statusBridge != DRX_STS_OK) { + return statusBridge; + } + } + + status = DRXBSP_TUNER_SetFrequency(demod->myTuner, + tunerMode, channel->frequency); + + /* attempt restoring bridge before checking status of SetFrequency */ + if (commonAttr->tunerPortNr == 1) { + Bool_t bridgeClosed = FALSE; + DRXStatus_t statusBridge = DRX_STS_ERROR; + + statusBridge = + DRX_Ctrl(demod, DRX_CTRL_I2C_BRIDGE, &bridgeClosed); + if (statusBridge != DRX_STS_OK) { + return statusBridge; + } + } + + /* now check status of DRXBSP_TUNER_SetFrequency */ + if (status != DRX_STS_OK) { + return status; + } + + /* get actual RF and IF frequencies from tuner */ + status = DRXBSP_TUNER_GetFrequency(demod->myTuner, + tunerMode, + &(channel->frequency), + &(ifFrequency)); + if (status != DRX_STS_OK) { + return status; + } + + /* update common attributes with information available from this function; + TODO: check if this is required and safe */ + DRX_SET_INTERMEDIATEFREQ(demod, ifFrequency); + + return DRX_STS_OK; } /*============================================================================*/ @@ -903,41 +840,40 @@ CtrlProgramTuner( pDRXDemodInstance_t demod, * \retval DRX_STS_INVALID_ARG: Wrong parameters. * */ -DRXStatus_t CtrlDumpRegisters( pDRXDemodInstance_t demod, - pDRXRegDump_t registers ) +DRXStatus_t CtrlDumpRegisters(pDRXDemodInstance_t demod, + pDRXRegDump_t registers) { - u16_t i = 0; - - if ( registers == NULL ) - { - /* registers not supplied */ - return DRX_STS_INVALID_ARG; - } - - /* start dumping registers */ - while ( registers[i].address != 0 ) - { - DRXStatus_t status = DRX_STS_ERROR; - u16_t value = 0; - u32_t data = 0; - - status = demod->myAccessFunct->readReg16Func( - demod->myI2CDevAddr, registers[i].address, &value, 0 ); - - data = (u32_t)value; - - if ( status != DRX_STS_OK ) - { - /* no breakouts; - depending on device ID, some HW blocks might not be available */ - data |= ( (u32_t)status ) << 16; - } - registers[i].data = data; - i++; - } - - /* all done, all OK (any errors are saved inside data) */ - return DRX_STS_OK; + u16_t i = 0; + + if (registers == NULL) { + /* registers not supplied */ + return DRX_STS_INVALID_ARG; + } + + /* start dumping registers */ + while (registers[i].address != 0) { + DRXStatus_t status = DRX_STS_ERROR; + u16_t value = 0; + u32_t data = 0; + + status = + demod->myAccessFunct->readReg16Func(demod->myI2CDevAddr, + registers[i].address, + &value, 0); + + data = (u32_t) value; + + if (status != DRX_STS_OK) { + /* no breakouts; + depending on device ID, some HW blocks might not be available */ + data |= ((u32_t) status) << 16; + } + registers[i].data = data; + i++; + } + + /* all done, all OK (any errors are saved inside data) */ + return DRX_STS_OK; } /*============================================================================*/ @@ -955,18 +891,17 @@ DRXStatus_t CtrlDumpRegisters( pDRXDemodInstance_t demod, * host and the data contained in the microcode image file. * */ -static u16_t -UCodeRead16( pu8_t addr) +static u16_t UCodeRead16(pu8_t addr) { - /* Works fo any host processor */ + /* Works fo any host processor */ - u16_t word=0; + u16_t word = 0; - word = ((u16_t)addr[0]); - word <<= 8; - word |=((u16_t)addr[1]); + word = ((u16_t) addr[0]); + word <<= 8; + word |= ((u16_t) addr[1]); - return word; + return word; } /*============================================================================*/ @@ -980,22 +915,21 @@ UCodeRead16( pu8_t addr) * host and the data contained in the microcode image file. * */ -static u32_t -UCodeRead32( pu8_t addr) +static u32_t UCodeRead32(pu8_t addr) { - /* Works fo any host processor */ + /* Works fo any host processor */ - u32_t word=0; + u32_t word = 0; - word = ((u16_t)addr[0]); - word <<= 8; - word |= ((u16_t)addr[1]); - word <<= 8; - word |= ((u16_t)addr[2]); - word <<= 8; - word |= ((u16_t)addr[3]); + word = ((u16_t) addr[0]); + word <<= 8; + word |= ((u16_t) addr[1]); + word <<= 8; + word |= ((u16_t) addr[2]); + word <<= 8; + word |= ((u16_t) addr[3]); - return word ; + return word; } /*============================================================================*/ @@ -1006,30 +940,26 @@ UCodeRead32( pu8_t addr) * \param nrWords: Size of microcode block (number of 16 bits words). * \return u16_t The computed CRC residu. */ -static u16_t -UCodeComputeCRC (pu8_t blockData, u16_t nrWords) +static u16_t UCodeComputeCRC(pu8_t blockData, u16_t nrWords) { - u16_t i = 0; - u16_t j = 0; - u32_t CRCWord = 0; - u32_t carry = 0; - - while ( i < nrWords ) - { - CRCWord |= (u32_t) UCodeRead16(blockData); - for (j = 0; j < 16; j++) - { - CRCWord <<= 1; - if (carry != 0) - { - CRCWord ^= 0x80050000UL; - } - carry = CRCWord & 0x80000000UL; - } - i++; - blockData+=(sizeof(u16_t)); - } - return ((u16_t) (CRCWord >> 16)); + u16_t i = 0; + u16_t j = 0; + u32_t CRCWord = 0; + u32_t carry = 0; + + while (i < nrWords) { + CRCWord |= (u32_t) UCodeRead16(blockData); + for (j = 0; j < 16; j++) { + CRCWord <<= 1; + if (carry != 0) { + CRCWord ^= 0x80050000UL; + } + carry = CRCWord & 0x80000000UL; + } + i++; + blockData += (sizeof(u16_t)); + } + return ((u16_t) (CRCWord >> 16)); } /*============================================================================*/ @@ -1053,213 +983,213 @@ UCodeComputeCRC (pu8_t blockData, u16_t nrWords) * - Provided image is corrupt */ static DRXStatus_t -CtrlUCode( pDRXDemodInstance_t demod, - pDRXUCodeInfo_t mcInfo, - DRXUCodeAction_t action) +CtrlUCode(pDRXDemodInstance_t demod, + pDRXUCodeInfo_t mcInfo, DRXUCodeAction_t action) { - DRXStatus_t rc; - u16_t i = 0; - u16_t mcNrOfBlks = 0; - u16_t mcMagicWord = 0; - pu8_t mcData = (pu8_t)(NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - - devAddr = demod -> myI2CDevAddr; - - /* Check arguments */ - if ( ( mcInfo == NULL ) || - ( mcInfo->mcData == NULL ) ) - { - return DRX_STS_INVALID_ARG; - } - - mcData = mcInfo->mcData; - - /* Check data */ - mcMagicWord = UCodeRead16( mcData ); - mcData += sizeof( u16_t ); - mcNrOfBlks = UCodeRead16( mcData ); - mcData += sizeof( u16_t ); - - if ( ( mcMagicWord != DRX_UCODE_MAGIC_WORD ) || - ( mcNrOfBlks == 0 ) ) - { - /* wrong endianess or wrong data ? */ - return DRX_STS_INVALID_ARG; - } - - /* Scan microcode blocks first for version info if uploading */ - if (action == UCODE_UPLOAD) - { - /* Clear version block */ - DRX_SET_MCVERTYPE (demod, 0); - DRX_SET_MCDEV (demod, 0); - DRX_SET_MCVERSION (demod, 0); - DRX_SET_MCPATCH (demod, 0); - for (i = 0; i < mcNrOfBlks; i++) - { - DRXUCodeBlockHdr_t blockHdr; - - /* Process block header */ - blockHdr.addr = UCodeRead32( mcData ); - mcData += sizeof(u32_t); - blockHdr.size = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - blockHdr.flags = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - blockHdr.CRC = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - - if (blockHdr.flags & 0x8) - { - /* Aux block. Check type */ - pu8_t auxblk = mcInfo->mcData + blockHdr.addr; - u16_t auxtype = UCodeRead16 (auxblk); - if (DRX_ISMCVERTYPE (auxtype)) - { - DRX_SET_MCVERTYPE (demod, UCodeRead16 (auxblk)); - auxblk += sizeof (u16_t); - DRX_SET_MCDEV (demod, UCodeRead32 (auxblk)); - auxblk += sizeof (u32_t); - DRX_SET_MCVERSION (demod, UCodeRead32 (auxblk)); - auxblk += sizeof (u32_t); - DRX_SET_MCPATCH (demod, UCodeRead32 (auxblk)); - } - } - - /* Next block */ - mcData += blockHdr.size * sizeof (u16_t); - } - - /* After scanning, validate the microcode. - It is also valid if no validation control exists. - */ - rc = DRX_Ctrl (demod, DRX_CTRL_VALIDATE_UCODE, NULL); - if (rc != DRX_STS_OK && rc != DRX_STS_FUNC_NOT_AVAILABLE) - { - return rc; - } - - /* Restore data pointer */ - mcData = mcInfo->mcData + 2 * sizeof( u16_t ); - } - - /* Process microcode blocks */ - for( i = 0 ; i<mcNrOfBlks ; i++ ) - { - DRXUCodeBlockHdr_t blockHdr; - u16_t mcBlockNrBytes = 0; - - /* Process block header */ - blockHdr.addr = UCodeRead32( mcData ); - mcData += sizeof(u32_t); - blockHdr.size = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - blockHdr.flags = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - blockHdr.CRC = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - - /* Check block header on: - - data larger than 64Kb - - if CRC enabled check CRC - */ - if ( ( blockHdr.size > 0x7FFF ) || - ( ( ( blockHdr.flags & DRX_UCODE_CRC_FLAG ) != 0 ) && - ( blockHdr.CRC != UCodeComputeCRC ( mcData, blockHdr.size) ) ) - ) - { - /* Wrong data ! */ - return DRX_STS_INVALID_ARG; - } - - mcBlockNrBytes = blockHdr.size * ((u16_t)sizeof( u16_t )); - - if ( blockHdr.size != 0 ) - { - /* Perform the desired action */ - switch ( action ) { + DRXStatus_t rc; + u16_t i = 0; + u16_t mcNrOfBlks = 0; + u16_t mcMagicWord = 0; + pu8_t mcData = (pu8_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + + devAddr = demod->myI2CDevAddr; + + /* Check arguments */ + if ((mcInfo == NULL) || (mcInfo->mcData == NULL)) { + return DRX_STS_INVALID_ARG; + } + + mcData = mcInfo->mcData; + + /* Check data */ + mcMagicWord = UCodeRead16(mcData); + mcData += sizeof(u16_t); + mcNrOfBlks = UCodeRead16(mcData); + mcData += sizeof(u16_t); + + if ((mcMagicWord != DRX_UCODE_MAGIC_WORD) || (mcNrOfBlks == 0)) { + /* wrong endianess or wrong data ? */ + return DRX_STS_INVALID_ARG; + } + + /* Scan microcode blocks first for version info if uploading */ + if (action == UCODE_UPLOAD) { + /* Clear version block */ + DRX_SET_MCVERTYPE(demod, 0); + DRX_SET_MCDEV(demod, 0); + DRX_SET_MCVERSION(demod, 0); + DRX_SET_MCPATCH(demod, 0); + for (i = 0; i < mcNrOfBlks; i++) { + DRXUCodeBlockHdr_t blockHdr; + + /* Process block header */ + blockHdr.addr = UCodeRead32(mcData); + mcData += sizeof(u32_t); + blockHdr.size = UCodeRead16(mcData); + mcData += sizeof(u16_t); + blockHdr.flags = UCodeRead16(mcData); + mcData += sizeof(u16_t); + blockHdr.CRC = UCodeRead16(mcData); + mcData += sizeof(u16_t); + + if (blockHdr.flags & 0x8) { + /* Aux block. Check type */ + pu8_t auxblk = mcInfo->mcData + blockHdr.addr; + u16_t auxtype = UCodeRead16(auxblk); + if (DRX_ISMCVERTYPE(auxtype)) { + DRX_SET_MCVERTYPE(demod, + UCodeRead16(auxblk)); + auxblk += sizeof(u16_t); + DRX_SET_MCDEV(demod, + UCodeRead32(auxblk)); + auxblk += sizeof(u32_t); + DRX_SET_MCVERSION(demod, + UCodeRead32(auxblk)); + auxblk += sizeof(u32_t); + DRX_SET_MCPATCH(demod, + UCodeRead32(auxblk)); + } + } + + /* Next block */ + mcData += blockHdr.size * sizeof(u16_t); + } + + /* After scanning, validate the microcode. + It is also valid if no validation control exists. + */ + rc = DRX_Ctrl(demod, DRX_CTRL_VALIDATE_UCODE, NULL); + if (rc != DRX_STS_OK && rc != DRX_STS_FUNC_NOT_AVAILABLE) { + return rc; + } + + /* Restore data pointer */ + mcData = mcInfo->mcData + 2 * sizeof(u16_t); + } + + /* Process microcode blocks */ + for (i = 0; i < mcNrOfBlks; i++) { + DRXUCodeBlockHdr_t blockHdr; + u16_t mcBlockNrBytes = 0; + + /* Process block header */ + blockHdr.addr = UCodeRead32(mcData); + mcData += sizeof(u32_t); + blockHdr.size = UCodeRead16(mcData); + mcData += sizeof(u16_t); + blockHdr.flags = UCodeRead16(mcData); + mcData += sizeof(u16_t); + blockHdr.CRC = UCodeRead16(mcData); + mcData += sizeof(u16_t); + + /* Check block header on: + - data larger than 64Kb + - if CRC enabled check CRC + */ + if ((blockHdr.size > 0x7FFF) || + (((blockHdr.flags & DRX_UCODE_CRC_FLAG) != 0) && + (blockHdr.CRC != UCodeComputeCRC(mcData, blockHdr.size))) + ) { + /* Wrong data ! */ + return DRX_STS_INVALID_ARG; + } + + mcBlockNrBytes = blockHdr.size * ((u16_t) sizeof(u16_t)); + + if (blockHdr.size != 0) { + /* Perform the desired action */ + switch (action) { /*================================================================*/ - case UCODE_UPLOAD : - { - /* Upload microcode */ - if ( demod->myAccessFunct->writeBlockFunc( - devAddr, - (DRXaddr_t) blockHdr.addr, - mcBlockNrBytes, - mcData, - 0x0000) != DRX_STS_OK) - { - return (DRX_STS_ERROR); - } /* if */ - }; - break; + case UCODE_UPLOAD: + { + /* Upload microcode */ + if (demod->myAccessFunct-> + writeBlockFunc(devAddr, + (DRXaddr_t) blockHdr. + addr, mcBlockNrBytes, + mcData, + 0x0000) != + DRX_STS_OK) { + return (DRX_STS_ERROR); + } /* if */ + }; + break; /*================================================================*/ - case UCODE_VERIFY : - { - int result = 0; - u8_t mcDataBuffer[DRX_UCODE_MAX_BUF_SIZE]; - u32_t bytesToCompare=0; - u32_t bytesLeftToCompare=0; - DRXaddr_t currAddr = (DRXaddr_t)0; - pu8_t currPtr =NULL; - - bytesLeftToCompare = mcBlockNrBytes; - currAddr = blockHdr.addr; - currPtr = mcData; - - while( bytesLeftToCompare != 0 ) - { - if (bytesLeftToCompare > ( (u32_t)DRX_UCODE_MAX_BUF_SIZE) ) - { - bytesToCompare = ( (u32_t)DRX_UCODE_MAX_BUF_SIZE ); - } - else - { - bytesToCompare = bytesLeftToCompare; - } - - if ( demod->myAccessFunct->readBlockFunc( - devAddr, - currAddr, - (u16_t)bytesToCompare, - (pu8_t)mcDataBuffer, - 0x0000) != DRX_STS_OK) - { - return (DRX_STS_ERROR); - } - - result = DRXBSP_HST_Memcmp( currPtr, - mcDataBuffer, - bytesToCompare); - - if ( result != 0 ) - { - return DRX_STS_ERROR; - } - - currAddr += ((DRXaddr_t)(bytesToCompare/2)); - currPtr = &(currPtr[bytesToCompare]); - bytesLeftToCompare -= ((u32_t)bytesToCompare); - } /* while( bytesToCompare > DRX_UCODE_MAX_BUF_SIZE ) */ - }; - break; + case UCODE_VERIFY: + { + int result = 0; + u8_t mcDataBuffer + [DRX_UCODE_MAX_BUF_SIZE]; + u32_t bytesToCompare = 0; + u32_t bytesLeftToCompare = 0; + DRXaddr_t currAddr = (DRXaddr_t) 0; + pu8_t currPtr = NULL; + + bytesLeftToCompare = mcBlockNrBytes; + currAddr = blockHdr.addr; + currPtr = mcData; + + while (bytesLeftToCompare != 0) { + if (bytesLeftToCompare > + ((u32_t) + DRX_UCODE_MAX_BUF_SIZE)) { + bytesToCompare = + ((u32_t) + DRX_UCODE_MAX_BUF_SIZE); + } else { + bytesToCompare = + bytesLeftToCompare; + } + + if (demod->myAccessFunct-> + readBlockFunc(devAddr, + currAddr, + (u16_t) + bytesToCompare, + (pu8_t) + mcDataBuffer, + 0x0000) != + DRX_STS_OK) { + return (DRX_STS_ERROR); + } + + result = + DRXBSP_HST_Memcmp(currPtr, + mcDataBuffer, + bytesToCompare); + + if (result != 0) { + return DRX_STS_ERROR; + } + + currAddr += + ((DRXaddr_t) + (bytesToCompare / 2)); + currPtr = + &(currPtr[bytesToCompare]); + bytesLeftToCompare -= + ((u32_t) bytesToCompare); + } /* while( bytesToCompare > DRX_UCODE_MAX_BUF_SIZE ) */ + }; + break; /*================================================================*/ - default: - return DRX_STS_INVALID_ARG; - break; + default: + return DRX_STS_INVALID_ARG; + break; - } /* switch ( action ) */ - } /* if (blockHdr.size != 0 ) */ + } /* switch ( action ) */ + } - /* Next block */ - mcData += mcBlockNrBytes; + /* if (blockHdr.size != 0 ) */ + /* Next block */ + mcData += mcBlockNrBytes; - } /* for( i = 0 ; i<mcNrOfBlks ; i++ ) */ + } /* for( i = 0 ; i<mcNrOfBlks ; i++ ) */ - return DRX_STS_OK; + return DRX_STS_OK; } /*============================================================================*/ @@ -1273,63 +1203,57 @@ CtrlUCode( pDRXDemodInstance_t demod, * \retval DRX_STS_INVALID_ARG: Invalid arguments. */ static DRXStatus_t -CtrlVersion( pDRXDemodInstance_t demod, - pDRXVersionList_t *versionList ) +CtrlVersion(pDRXDemodInstance_t demod, pDRXVersionList_t * versionList) { - static char drxDriverCoreModuleName[] = "Core driver"; - static char drxDriverCoreVersionText[] = - DRX_VERSIONSTRING( VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH ); - - static DRXVersion_t drxDriverCoreVersion; - static DRXVersionList_t drxDriverCoreVersionList; - - pDRXVersionList_t demodVersionList = (pDRXVersionList_t)(NULL); - DRXStatus_t returnStatus = DRX_STS_ERROR; - - /* Check arguments */ - if ( versionList == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - /* Get version info list from demod */ - returnStatus = (*(demod->myDemodFunct->ctrlFunc))( - demod, - DRX_CTRL_VERSION, - (void *) &demodVersionList ); - - /* Always fill in the information of the driver SW . */ - drxDriverCoreVersion.moduleType = DRX_MODULE_DRIVERCORE; - drxDriverCoreVersion.moduleName = drxDriverCoreModuleName; - drxDriverCoreVersion.vMajor = VERSION_MAJOR; - drxDriverCoreVersion.vMinor = VERSION_MINOR; - drxDriverCoreVersion.vPatch = VERSION_PATCH; - drxDriverCoreVersion.vString = drxDriverCoreVersionText; - - drxDriverCoreVersionList.version = &drxDriverCoreVersion; - drxDriverCoreVersionList.next = (pDRXVersionList_t)(NULL); - - if ( ( returnStatus == DRX_STS_OK ) && ( demodVersionList != NULL ) ) - { - /* Append versioninfo from driver to versioninfo from demod */ - /* Return version info in "bottom-up" order. This way, multiple - devices can be handled without using malloc. */ - pDRXVersionList_t currentListElement = demodVersionList; - while ( currentListElement->next != NULL ) - { - currentListElement = currentListElement->next; - } - currentListElement->next = &drxDriverCoreVersionList; - - *versionList = demodVersionList; - } - else - { - /* Just return versioninfo from driver */ - *versionList = &drxDriverCoreVersionList; - } - - return DRX_STS_OK; + static char drxDriverCoreModuleName[] = "Core driver"; + static char drxDriverCoreVersionText[] = + DRX_VERSIONSTRING(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); + + static DRXVersion_t drxDriverCoreVersion; + static DRXVersionList_t drxDriverCoreVersionList; + + pDRXVersionList_t demodVersionList = (pDRXVersionList_t) (NULL); + DRXStatus_t returnStatus = DRX_STS_ERROR; + + /* Check arguments */ + if (versionList == NULL) { + return DRX_STS_INVALID_ARG; + } + + /* Get version info list from demod */ + returnStatus = (*(demod->myDemodFunct->ctrlFunc)) (demod, + DRX_CTRL_VERSION, + (void *) + &demodVersionList); + + /* Always fill in the information of the driver SW . */ + drxDriverCoreVersion.moduleType = DRX_MODULE_DRIVERCORE; + drxDriverCoreVersion.moduleName = drxDriverCoreModuleName; + drxDriverCoreVersion.vMajor = VERSION_MAJOR; + drxDriverCoreVersion.vMinor = VERSION_MINOR; + drxDriverCoreVersion.vPatch = VERSION_PATCH; + drxDriverCoreVersion.vString = drxDriverCoreVersionText; + + drxDriverCoreVersionList.version = &drxDriverCoreVersion; + drxDriverCoreVersionList.next = (pDRXVersionList_t) (NULL); + + if ((returnStatus == DRX_STS_OK) && (demodVersionList != NULL)) { + /* Append versioninfo from driver to versioninfo from demod */ + /* Return version info in "bottom-up" order. This way, multiple + devices can be handled without using malloc. */ + pDRXVersionList_t currentListElement = demodVersionList; + while (currentListElement->next != NULL) { + currentListElement = currentListElement->next; + } + currentListElement->next = &drxDriverCoreVersionList; + + *versionList = demodVersionList; + } else { + /* Just return versioninfo from driver */ + *versionList = &drxDriverCoreVersionList; + } + + return DRX_STS_OK; } /*============================================================================*/ @@ -1338,8 +1262,6 @@ CtrlVersion( pDRXDemodInstance_t demod, /*============================================================================*/ /*============================================================================*/ - - /** * \brief This function is obsolete. * \param demods: Don't care, parameter is ignored. @@ -1350,10 +1272,9 @@ CtrlVersion( pDRXDemodInstance_t demod, * */ -DRXStatus_t -DRX_Init( pDRXDemodInstance_t demods[] ) +DRXStatus_t DRX_Init(pDRXDemodInstance_t demods[]) { - return DRX_STS_OK; + return DRX_STS_OK; } /*============================================================================*/ @@ -1367,10 +1288,9 @@ DRX_Init( pDRXDemodInstance_t demods[] ) * */ -DRXStatus_t -DRX_Term( void ) +DRXStatus_t DRX_Term(void) { - return DRX_STS_OK; + return DRX_STS_OK; } /*============================================================================*/ @@ -1386,29 +1306,26 @@ DRX_Term( void ) * */ -DRXStatus_t -DRX_Open(pDRXDemodInstance_t demod) +DRXStatus_t DRX_Open(pDRXDemodInstance_t demod) { - DRXStatus_t status = DRX_STS_OK; - - if ( ( demod == NULL ) || - ( demod->myDemodFunct == NULL ) || - ( demod->myCommonAttr == NULL ) || - ( demod->myExtAttr == NULL ) || - ( demod->myI2CDevAddr == NULL ) || - ( demod->myCommonAttr->isOpened == TRUE )) - { - return (DRX_STS_INVALID_ARG); - } - - status = (*(demod->myDemodFunct->openFunc))( demod ); - - if ( status == DRX_STS_OK ) - { - demod->myCommonAttr->isOpened = TRUE; - } - - return status; + DRXStatus_t status = DRX_STS_OK; + + if ((demod == NULL) || + (demod->myDemodFunct == NULL) || + (demod->myCommonAttr == NULL) || + (demod->myExtAttr == NULL) || + (demod->myI2CDevAddr == NULL) || + (demod->myCommonAttr->isOpened == TRUE)) { + return (DRX_STS_INVALID_ARG); + } + + status = (*(demod->myDemodFunct->openFunc)) (demod); + + if (status == DRX_STS_OK) { + demod->myCommonAttr->isOpened = TRUE; + } + + return status; } /*============================================================================*/ @@ -1426,26 +1343,24 @@ DRX_Open(pDRXDemodInstance_t demod) * Put device into sleep mode. */ -DRXStatus_t -DRX_Close(pDRXDemodInstance_t demod) +DRXStatus_t DRX_Close(pDRXDemodInstance_t demod) { - DRXStatus_t status = DRX_STS_OK; + DRXStatus_t status = DRX_STS_OK; - if ( ( demod == NULL ) || - ( demod->myDemodFunct == NULL ) || - ( demod->myCommonAttr == NULL ) || - ( demod->myExtAttr == NULL ) || - ( demod->myI2CDevAddr == NULL ) || - ( demod->myCommonAttr->isOpened == FALSE )) - { - return DRX_STS_INVALID_ARG; - } + if ((demod == NULL) || + (demod->myDemodFunct == NULL) || + (demod->myCommonAttr == NULL) || + (demod->myExtAttr == NULL) || + (demod->myI2CDevAddr == NULL) || + (demod->myCommonAttr->isOpened == FALSE)) { + return DRX_STS_INVALID_ARG; + } - status = (*(demod->myDemodFunct->closeFunc))( demod ); + status = (*(demod->myDemodFunct->closeFunc)) (demod); - DRX_SET_ISOPENED (demod, FALSE); + DRX_SET_ISOPENED(demod, FALSE); - return status; + return status; } /*============================================================================*/ @@ -1471,130 +1386,125 @@ DRX_Close(pDRXDemodInstance_t demod) DRXStatus_t DRX_Ctrl(pDRXDemodInstance_t demod, DRXCtrlIndex_t ctrl, void *ctrlData) { - DRXStatus_t status = DRX_STS_ERROR; - - if ( ( demod == NULL ) || - ( demod->myDemodFunct == NULL ) || - ( demod->myCommonAttr == NULL ) || - ( demod->myExtAttr == NULL ) || - ( demod->myI2CDevAddr == NULL ) - ) - { - return (DRX_STS_INVALID_ARG); - } - - if ( ( ( demod->myCommonAttr->isOpened == FALSE ) && - ( ctrl != DRX_CTRL_PROBE_DEVICE ) && - ( ctrl != DRX_CTRL_VERSION) ) - ) - { - return (DRX_STS_INVALID_ARG); - } - - if ( ( DRX_ISPOWERDOWNMODE( demod->myCommonAttr->currentPowerMode ) && - ( ctrl != DRX_CTRL_POWER_MODE ) && - ( ctrl != DRX_CTRL_PROBE_DEVICE ) && - ( ctrl != DRX_CTRL_NOP ) && - ( ctrl != DRX_CTRL_VERSION) - ) - ) - { - return DRX_STS_FUNC_NOT_AVAILABLE; - } - - /* Fixed control functions */ - switch ( ctrl ) { + DRXStatus_t status = DRX_STS_ERROR; + + if ((demod == NULL) || + (demod->myDemodFunct == NULL) || + (demod->myCommonAttr == NULL) || + (demod->myExtAttr == NULL) || (demod->myI2CDevAddr == NULL) + ) { + return (DRX_STS_INVALID_ARG); + } + + if (((demod->myCommonAttr->isOpened == FALSE) && + (ctrl != DRX_CTRL_PROBE_DEVICE) && (ctrl != DRX_CTRL_VERSION)) + ) { + return (DRX_STS_INVALID_ARG); + } + + if ((DRX_ISPOWERDOWNMODE(demod->myCommonAttr->currentPowerMode) && + (ctrl != DRX_CTRL_POWER_MODE) && + (ctrl != DRX_CTRL_PROBE_DEVICE) && + (ctrl != DRX_CTRL_NOP) && (ctrl != DRX_CTRL_VERSION) + ) + ) { + return DRX_STS_FUNC_NOT_AVAILABLE; + } + + /* Fixed control functions */ + switch (ctrl) { /*======================================================================*/ - case DRX_CTRL_NOP: - /* No operation */ - return DRX_STS_OK; - break; + case DRX_CTRL_NOP: + /* No operation */ + return DRX_STS_OK; + break; /*======================================================================*/ - case DRX_CTRL_VERSION: - return CtrlVersion( demod, (pDRXVersionList_t *) ctrlData ); - break; + case DRX_CTRL_VERSION: + return CtrlVersion(demod, (pDRXVersionList_t *) ctrlData); + break; /*======================================================================*/ - default : - /* Do nothing */ - break; - } - - /* Virtual functions */ - /* First try calling function from derived class */ - status = (*(demod->myDemodFunct->ctrlFunc))( demod, ctrl, ctrlData ); - if (status == DRX_STS_FUNC_NOT_AVAILABLE) - { - /* Now try calling a the base class function */ - switch ( ctrl ) { + default: + /* Do nothing */ + break; + } + + /* Virtual functions */ + /* First try calling function from derived class */ + status = (*(demod->myDemodFunct->ctrlFunc)) (demod, ctrl, ctrlData); + if (status == DRX_STS_FUNC_NOT_AVAILABLE) { + /* Now try calling a the base class function */ + switch (ctrl) { /*===================================================================*/ - case DRX_CTRL_LOAD_UCODE: - return CtrlUCode ( demod, - (pDRXUCodeInfo_t) ctrlData, - UCODE_UPLOAD ); - break; + case DRX_CTRL_LOAD_UCODE: + return CtrlUCode(demod, + (pDRXUCodeInfo_t) ctrlData, + UCODE_UPLOAD); + break; /*===================================================================*/ - case DRX_CTRL_VERIFY_UCODE: - { - return CtrlUCode ( demod, - (pDRXUCodeInfo_t) ctrlData, - UCODE_VERIFY); - } - break; + case DRX_CTRL_VERIFY_UCODE: + { + return CtrlUCode(demod, + (pDRXUCodeInfo_t) ctrlData, + UCODE_VERIFY); + } + break; #ifndef DRX_EXCLUDE_SCAN /*===================================================================*/ - case DRX_CTRL_SCAN_INIT: - { - return CtrlScanInit( demod, (pDRXScanParam_t) ctrlData ); - } - break; + case DRX_CTRL_SCAN_INIT: + { + return CtrlScanInit(demod, + (pDRXScanParam_t) ctrlData); + } + break; /*===================================================================*/ - case DRX_CTRL_SCAN_NEXT: - { - return CtrlScanNext( demod, (pu16_t) ctrlData ); - } - break; + case DRX_CTRL_SCAN_NEXT: + { + return CtrlScanNext(demod, (pu16_t) ctrlData); + } + break; /*===================================================================*/ - case DRX_CTRL_SCAN_STOP: - { - return CtrlScanStop( demod ); - } - break; + case DRX_CTRL_SCAN_STOP: + { + return CtrlScanStop(demod); + } + break; #endif /* #ifndef DRX_EXCLUDE_SCAN */ /*===================================================================*/ - case DRX_CTRL_PROGRAM_TUNER: - { - return CtrlProgramTuner( demod, (pDRXChannel_t) ctrlData ); - } - break; + case DRX_CTRL_PROGRAM_TUNER: + { + return CtrlProgramTuner(demod, + (pDRXChannel_t) + ctrlData); + } + break; /*===================================================================*/ - case DRX_CTRL_DUMP_REGISTERS: - { - return CtrlDumpRegisters( demod, (pDRXRegDump_t) ctrlData ); - } - break; + case DRX_CTRL_DUMP_REGISTERS: + { + return CtrlDumpRegisters(demod, + (pDRXRegDump_t) + ctrlData); + } + break; /*===================================================================*/ - default : - return DRX_STS_FUNC_NOT_AVAILABLE; - } - } - else - { - return (status); - } - - return DRX_STS_OK; + default: + return DRX_STS_FUNC_NOT_AVAILABLE; + } + } else { + return (status); + } + + return DRX_STS_OK; } - /*============================================================================*/ /* END OF FILE */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drx_driver.h b/drivers/media/dvb-frontends/drx39xyj/drx_driver.h index 053334455831..712ffd5a2fbb 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx_driver.h +++ b/drivers/media/dvb-frontends/drx39xyj/drx_driver.h @@ -140,7 +140,6 @@ DEFINES #define DRX_AUTO (255) #endif - /************** * * This section describes flag definitions for the device capbilities. @@ -295,258 +294,292 @@ ENUM * \enum DRXStandard_t * \brief Modulation standards. */ -typedef enum { - DRX_STANDARD_DVBT = 0, /**< Terrestrial DVB-T. */ - DRX_STANDARD_8VSB, /**< Terrestrial 8VSB. */ - DRX_STANDARD_NTSC, /**< Terrestrial\Cable analog NTSC. */ - DRX_STANDARD_PAL_SECAM_BG, /**< Terrestrial analog PAL/SECAM B/G */ - DRX_STANDARD_PAL_SECAM_DK, /**< Terrestrial analog PAL/SECAM D/K */ - DRX_STANDARD_PAL_SECAM_I, /**< Terrestrial analog PAL/SECAM I */ - DRX_STANDARD_PAL_SECAM_L, /**< Terrestrial analog PAL/SECAM L + typedef enum { + DRX_STANDARD_DVBT = 0, /**< Terrestrial DVB-T. */ + DRX_STANDARD_8VSB, /**< Terrestrial 8VSB. */ + DRX_STANDARD_NTSC, /**< Terrestrial\Cable analog NTSC. */ + DRX_STANDARD_PAL_SECAM_BG, + /**< Terrestrial analog PAL/SECAM B/G */ + DRX_STANDARD_PAL_SECAM_DK, + /**< Terrestrial analog PAL/SECAM D/K */ + DRX_STANDARD_PAL_SECAM_I, + /**< Terrestrial analog PAL/SECAM I */ + DRX_STANDARD_PAL_SECAM_L, + /**< Terrestrial analog PAL/SECAM L with negative modulation */ - DRX_STANDARD_PAL_SECAM_LP, /**< Terrestrial analog PAL/SECAM L + DRX_STANDARD_PAL_SECAM_LP, + /**< Terrestrial analog PAL/SECAM L with positive modulation */ - DRX_STANDARD_ITU_A, /**< Cable ITU ANNEX A. */ - DRX_STANDARD_ITU_B, /**< Cable ITU ANNEX B. */ - DRX_STANDARD_ITU_C, /**< Cable ITU ANNEX C. */ - DRX_STANDARD_ITU_D, /**< Cable ITU ANNEX D. */ - DRX_STANDARD_FM, /**< Terrestrial\Cable FM radio */ - DRX_STANDARD_DTMB, /**< Terrestrial DTMB standard (China)*/ - DRX_STANDARD_UNKNOWN = DRX_UNKNOWN, /**< Standard unknown. */ - DRX_STANDARD_AUTO = DRX_AUTO /**< Autodetect standard. */ -} DRXStandard_t, *pDRXStandard_t; + DRX_STANDARD_ITU_A, /**< Cable ITU ANNEX A. */ + DRX_STANDARD_ITU_B, /**< Cable ITU ANNEX B. */ + DRX_STANDARD_ITU_C, /**< Cable ITU ANNEX C. */ + DRX_STANDARD_ITU_D, /**< Cable ITU ANNEX D. */ + DRX_STANDARD_FM, /**< Terrestrial\Cable FM radio */ + DRX_STANDARD_DTMB, /**< Terrestrial DTMB standard (China)*/ + DRX_STANDARD_UNKNOWN = DRX_UNKNOWN, + /**< Standard unknown. */ + DRX_STANDARD_AUTO = DRX_AUTO + /**< Autodetect standard. */ + } DRXStandard_t, *pDRXStandard_t; /** * \enum DRXStandard_t * \brief Modulation sub-standards. */ -typedef enum { - DRX_SUBSTANDARD_MAIN = 0, /**< Main subvariant of standard */ - DRX_SUBSTANDARD_ATV_BG_SCANDINAVIA, - DRX_SUBSTANDARD_ATV_DK_POLAND, - DRX_SUBSTANDARD_ATV_DK_CHINA, - DRX_SUBSTANDARD_UNKNOWN = DRX_UNKNOWN, /**< Sub-standard unknown. */ - DRX_SUBSTANDARD_AUTO = DRX_AUTO /**< Auto (default) sub-standard */ -} DRXSubstandard_t, *pDRXSubstandard_t; + typedef enum { + DRX_SUBSTANDARD_MAIN = 0, /**< Main subvariant of standard */ + DRX_SUBSTANDARD_ATV_BG_SCANDINAVIA, + DRX_SUBSTANDARD_ATV_DK_POLAND, + DRX_SUBSTANDARD_ATV_DK_CHINA, + DRX_SUBSTANDARD_UNKNOWN = DRX_UNKNOWN, + /**< Sub-standard unknown. */ + DRX_SUBSTANDARD_AUTO = DRX_AUTO + /**< Auto (default) sub-standard */ + } DRXSubstandard_t, *pDRXSubstandard_t; /** * \enum DRXBandwidth_t * \brief Channel bandwidth or channel spacing. */ -typedef enum { - DRX_BANDWIDTH_8MHZ = 0, /**< Bandwidth 8 MHz. */ - DRX_BANDWIDTH_7MHZ, /**< Bandwidth 7 MHz. */ - DRX_BANDWIDTH_6MHZ, /**< Bandwidth 6 MHz. */ - DRX_BANDWIDTH_UNKNOWN = DRX_UNKNOWN, /**< Bandwidth unknown. */ - DRX_BANDWIDTH_AUTO = DRX_AUTO /**< Auto Set Bandwidth */ -} DRXBandwidth_t, *pDRXBandwidth_t; + typedef enum { + DRX_BANDWIDTH_8MHZ = 0, /**< Bandwidth 8 MHz. */ + DRX_BANDWIDTH_7MHZ, /**< Bandwidth 7 MHz. */ + DRX_BANDWIDTH_6MHZ, /**< Bandwidth 6 MHz. */ + DRX_BANDWIDTH_UNKNOWN = DRX_UNKNOWN, + /**< Bandwidth unknown. */ + DRX_BANDWIDTH_AUTO = DRX_AUTO + /**< Auto Set Bandwidth */ + } DRXBandwidth_t, *pDRXBandwidth_t; /** * \enum DRXMirror_t * \brief Indicate if channel spectrum is mirrored or not. */ -typedef enum { - DRX_MIRROR_NO = 0, /**< Spectrum is not mirrored. */ - DRX_MIRROR_YES, /**< Spectrum is mirrored. */ - DRX_MIRROR_UNKNOWN = DRX_UNKNOWN, /**< Unknown if spectrum is mirrored. */ - DRX_MIRROR_AUTO = DRX_AUTO /**< Autodetect if spectrum is mirrored. */ -} DRXMirror_t, *pDRXMirror_t; + typedef enum { + DRX_MIRROR_NO = 0, /**< Spectrum is not mirrored. */ + DRX_MIRROR_YES, /**< Spectrum is mirrored. */ + DRX_MIRROR_UNKNOWN = DRX_UNKNOWN, + /**< Unknown if spectrum is mirrored. */ + DRX_MIRROR_AUTO = DRX_AUTO + /**< Autodetect if spectrum is mirrored. */ + } DRXMirror_t, *pDRXMirror_t; /** * \enum DRXConstellation_t * \brief Constellation type of the channel. */ -typedef enum { - DRX_CONSTELLATION_BPSK = 0, /**< Modulation is BPSK. */ - DRX_CONSTELLATION_QPSK, /**< Constellation is QPSK. */ - DRX_CONSTELLATION_PSK8, /**< Constellation is PSK8. */ - DRX_CONSTELLATION_QAM16, /**< Constellation is QAM16. */ - DRX_CONSTELLATION_QAM32, /**< Constellation is QAM32. */ - DRX_CONSTELLATION_QAM64, /**< Constellation is QAM64. */ - DRX_CONSTELLATION_QAM128, /**< Constellation is QAM128. */ - DRX_CONSTELLATION_QAM256, /**< Constellation is QAM256. */ - DRX_CONSTELLATION_QAM512, /**< Constellation is QAM512. */ - DRX_CONSTELLATION_QAM1024, /**< Constellation is QAM1024. */ - DRX_CONSTELLATION_QPSK_NR, /**< Constellation is QPSK_NR */ - DRX_CONSTELLATION_UNKNOWN = DRX_UNKNOWN, /**< Constellation unknown. */ - DRX_CONSTELLATION_AUTO = DRX_AUTO /**< Autodetect constellation. */ -} DRXConstellation_t, *pDRXConstellation_t; + typedef enum { + DRX_CONSTELLATION_BPSK = 0, /**< Modulation is BPSK. */ + DRX_CONSTELLATION_QPSK, /**< Constellation is QPSK. */ + DRX_CONSTELLATION_PSK8, /**< Constellation is PSK8. */ + DRX_CONSTELLATION_QAM16, /**< Constellation is QAM16. */ + DRX_CONSTELLATION_QAM32, /**< Constellation is QAM32. */ + DRX_CONSTELLATION_QAM64, /**< Constellation is QAM64. */ + DRX_CONSTELLATION_QAM128, /**< Constellation is QAM128. */ + DRX_CONSTELLATION_QAM256, /**< Constellation is QAM256. */ + DRX_CONSTELLATION_QAM512, /**< Constellation is QAM512. */ + DRX_CONSTELLATION_QAM1024, /**< Constellation is QAM1024. */ + DRX_CONSTELLATION_QPSK_NR, /**< Constellation is QPSK_NR */ + DRX_CONSTELLATION_UNKNOWN = DRX_UNKNOWN, + /**< Constellation unknown. */ + DRX_CONSTELLATION_AUTO = DRX_AUTO + /**< Autodetect constellation. */ + } DRXConstellation_t, *pDRXConstellation_t; /** * \enum DRXHierarchy_t * \brief Hierarchy of the channel. */ -typedef enum { - DRX_HIERARCHY_NONE = 0, /**< None hierarchical channel. */ - DRX_HIERARCHY_ALPHA1, /**< Hierarchical channel, alpha=1. */ - DRX_HIERARCHY_ALPHA2, /**< Hierarchical channel, alpha=2. */ - DRX_HIERARCHY_ALPHA4, /**< Hierarchical channel, alpha=4. */ - DRX_HIERARCHY_UNKNOWN = DRX_UNKNOWN, /**< Hierarchy unknown. */ - DRX_HIERARCHY_AUTO = DRX_AUTO /**< Autodetect hierarchy. */ -} DRXHierarchy_t, *pDRXHierarchy_t; + typedef enum { + DRX_HIERARCHY_NONE = 0, /**< None hierarchical channel. */ + DRX_HIERARCHY_ALPHA1, /**< Hierarchical channel, alpha=1. */ + DRX_HIERARCHY_ALPHA2, /**< Hierarchical channel, alpha=2. */ + DRX_HIERARCHY_ALPHA4, /**< Hierarchical channel, alpha=4. */ + DRX_HIERARCHY_UNKNOWN = DRX_UNKNOWN, + /**< Hierarchy unknown. */ + DRX_HIERARCHY_AUTO = DRX_AUTO + /**< Autodetect hierarchy. */ + } DRXHierarchy_t, *pDRXHierarchy_t; /** * \enum DRXPriority_t * \brief Channel priority in case of hierarchical transmission. */ -typedef enum { - DRX_PRIORITY_LOW = 0, /**< Low priority channel. */ - DRX_PRIORITY_HIGH, /**< High priority channel. */ - DRX_PRIORITY_UNKNOWN = DRX_UNKNOWN /**< Priority unknown. */ -} DRXPriority_t, *pDRXPriority_t; + typedef enum { + DRX_PRIORITY_LOW = 0, /**< Low priority channel. */ + DRX_PRIORITY_HIGH, /**< High priority channel. */ + DRX_PRIORITY_UNKNOWN = DRX_UNKNOWN + /**< Priority unknown. */ + } DRXPriority_t, *pDRXPriority_t; /** * \enum DRXCoderate_t * \brief Channel priority in case of hierarchical transmission. */ -typedef enum { - DRX_CODERATE_1DIV2 = 0, /**< Code rate 1/2nd. */ - DRX_CODERATE_2DIV3, /**< Code rate 2/3nd. */ - DRX_CODERATE_3DIV4, /**< Code rate 3/4nd. */ - DRX_CODERATE_5DIV6, /**< Code rate 5/6nd. */ - DRX_CODERATE_7DIV8, /**< Code rate 7/8nd. */ - DRX_CODERATE_UNKNOWN = DRX_UNKNOWN, /**< Code rate unknown. */ - DRX_CODERATE_AUTO = DRX_AUTO /**< Autodetect code rate. */ -} DRXCoderate_t, *pDRXCoderate_t; + typedef enum { + DRX_CODERATE_1DIV2 = 0, /**< Code rate 1/2nd. */ + DRX_CODERATE_2DIV3, /**< Code rate 2/3nd. */ + DRX_CODERATE_3DIV4, /**< Code rate 3/4nd. */ + DRX_CODERATE_5DIV6, /**< Code rate 5/6nd. */ + DRX_CODERATE_7DIV8, /**< Code rate 7/8nd. */ + DRX_CODERATE_UNKNOWN = DRX_UNKNOWN, + /**< Code rate unknown. */ + DRX_CODERATE_AUTO = DRX_AUTO + /**< Autodetect code rate. */ + } DRXCoderate_t, *pDRXCoderate_t; /** * \enum DRXGuard_t * \brief Guard interval of a channel. */ -typedef enum { - DRX_GUARD_1DIV32 = 0, /**< Guard interval 1/32nd. */ - DRX_GUARD_1DIV16, /**< Guard interval 1/16th. */ - DRX_GUARD_1DIV8, /**< Guard interval 1/8th. */ - DRX_GUARD_1DIV4, /**< Guard interval 1/4th. */ - DRX_GUARD_UNKNOWN = DRX_UNKNOWN, /**< Guard interval unknown. */ - DRX_GUARD_AUTO = DRX_AUTO /**< Autodetect guard interval. */ -} DRXGuard_t, *pDRXGuard_t; + typedef enum { + DRX_GUARD_1DIV32 = 0, /**< Guard interval 1/32nd. */ + DRX_GUARD_1DIV16, /**< Guard interval 1/16th. */ + DRX_GUARD_1DIV8, /**< Guard interval 1/8th. */ + DRX_GUARD_1DIV4, /**< Guard interval 1/4th. */ + DRX_GUARD_UNKNOWN = DRX_UNKNOWN, + /**< Guard interval unknown. */ + DRX_GUARD_AUTO = DRX_AUTO + /**< Autodetect guard interval. */ + } DRXGuard_t, *pDRXGuard_t; /** * \enum DRXFftmode_t * \brief FFT mode. */ -typedef enum { - DRX_FFTMODE_2K = 0, /**< 2K FFT mode. */ - DRX_FFTMODE_4K, /**< 4K FFT mode. */ - DRX_FFTMODE_8K, /**< 8K FFT mode. */ - DRX_FFTMODE_UNKNOWN = DRX_UNKNOWN, /**< FFT mode unknown. */ - DRX_FFTMODE_AUTO = DRX_AUTO /**< Autodetect FFT mode. */ -} DRXFftmode_t, *pDRXFftmode_t; + typedef enum { + DRX_FFTMODE_2K = 0, /**< 2K FFT mode. */ + DRX_FFTMODE_4K, /**< 4K FFT mode. */ + DRX_FFTMODE_8K, /**< 8K FFT mode. */ + DRX_FFTMODE_UNKNOWN = DRX_UNKNOWN, + /**< FFT mode unknown. */ + DRX_FFTMODE_AUTO = DRX_AUTO + /**< Autodetect FFT mode. */ + } DRXFftmode_t, *pDRXFftmode_t; /** * \enum DRXClassification_t * \brief Channel classification. */ -typedef enum { - DRX_CLASSIFICATION_GAUSS = 0, /**< Gaussion noise. */ - DRX_CLASSIFICATION_HVY_GAUSS, /**< Heavy Gaussion noise. */ - DRX_CLASSIFICATION_COCHANNEL, /**< Co-channel. */ - DRX_CLASSIFICATION_STATIC, /**< Static echo. */ - DRX_CLASSIFICATION_MOVING, /**< Moving echo. */ - DRX_CLASSIFICATION_ZERODB, /**< Zero dB echo. */ - DRX_CLASSIFICATION_UNKNOWN = DRX_UNKNOWN, /**< Unknown classification */ - DRX_CLASSIFICATION_AUTO = DRX_AUTO /**< Autodetect classification. */ -} DRXClassification_t, *pDRXClassification_t; + typedef enum { + DRX_CLASSIFICATION_GAUSS = 0, /**< Gaussion noise. */ + DRX_CLASSIFICATION_HVY_GAUSS, /**< Heavy Gaussion noise. */ + DRX_CLASSIFICATION_COCHANNEL, /**< Co-channel. */ + DRX_CLASSIFICATION_STATIC, /**< Static echo. */ + DRX_CLASSIFICATION_MOVING, /**< Moving echo. */ + DRX_CLASSIFICATION_ZERODB, /**< Zero dB echo. */ + DRX_CLASSIFICATION_UNKNOWN = DRX_UNKNOWN, + /**< Unknown classification */ + DRX_CLASSIFICATION_AUTO = DRX_AUTO + /**< Autodetect classification. */ + } DRXClassification_t, *pDRXClassification_t; /** * /enum DRXInterleaveModes_t * /brief Interleave modes */ -typedef enum { - DRX_INTERLEAVEMODE_I128_J1 = 0, - DRX_INTERLEAVEMODE_I128_J1_V2, - DRX_INTERLEAVEMODE_I128_J2, - DRX_INTERLEAVEMODE_I64_J2, - DRX_INTERLEAVEMODE_I128_J3, - DRX_INTERLEAVEMODE_I32_J4, - DRX_INTERLEAVEMODE_I128_J4, - DRX_INTERLEAVEMODE_I16_J8, - DRX_INTERLEAVEMODE_I128_J5, - DRX_INTERLEAVEMODE_I8_J16, - DRX_INTERLEAVEMODE_I128_J6, - DRX_INTERLEAVEMODE_RESERVED_11, - DRX_INTERLEAVEMODE_I128_J7, - DRX_INTERLEAVEMODE_RESERVED_13, - DRX_INTERLEAVEMODE_I128_J8, - DRX_INTERLEAVEMODE_RESERVED_15, - DRX_INTERLEAVEMODE_I12_J17, - DRX_INTERLEAVEMODE_I5_J4, - DRX_INTERLEAVEMODE_B52_M240, - DRX_INTERLEAVEMODE_B52_M720, - DRX_INTERLEAVEMODE_B52_M48, - DRX_INTERLEAVEMODE_B52_M0, - DRX_INTERLEAVEMODE_UNKNOWN = DRX_UNKNOWN, /**< Unknown interleave mode */ - DRX_INTERLEAVEMODE_AUTO = DRX_AUTO /**< Autodetect interleave mode */ -} DRXInterleaveModes_t, *pDRXInterleaveModes_t; + typedef enum { + DRX_INTERLEAVEMODE_I128_J1 = 0, + DRX_INTERLEAVEMODE_I128_J1_V2, + DRX_INTERLEAVEMODE_I128_J2, + DRX_INTERLEAVEMODE_I64_J2, + DRX_INTERLEAVEMODE_I128_J3, + DRX_INTERLEAVEMODE_I32_J4, + DRX_INTERLEAVEMODE_I128_J4, + DRX_INTERLEAVEMODE_I16_J8, + DRX_INTERLEAVEMODE_I128_J5, + DRX_INTERLEAVEMODE_I8_J16, + DRX_INTERLEAVEMODE_I128_J6, + DRX_INTERLEAVEMODE_RESERVED_11, + DRX_INTERLEAVEMODE_I128_J7, + DRX_INTERLEAVEMODE_RESERVED_13, + DRX_INTERLEAVEMODE_I128_J8, + DRX_INTERLEAVEMODE_RESERVED_15, + DRX_INTERLEAVEMODE_I12_J17, + DRX_INTERLEAVEMODE_I5_J4, + DRX_INTERLEAVEMODE_B52_M240, + DRX_INTERLEAVEMODE_B52_M720, + DRX_INTERLEAVEMODE_B52_M48, + DRX_INTERLEAVEMODE_B52_M0, + DRX_INTERLEAVEMODE_UNKNOWN = DRX_UNKNOWN, + /**< Unknown interleave mode */ + DRX_INTERLEAVEMODE_AUTO = DRX_AUTO + /**< Autodetect interleave mode */ + } DRXInterleaveModes_t, *pDRXInterleaveModes_t; /** * \enum DRXCarrier_t * \brief Channel Carrier Mode. */ -typedef enum { - DRX_CARRIER_MULTI = 0, /**< Multi carrier mode */ - DRX_CARRIER_SINGLE, /**< Single carrier mode */ - DRX_CARRIER_UNKNOWN = DRX_UNKNOWN, /**< Carrier mode unknown. */ - DRX_CARRIER_AUTO = DRX_AUTO /**< Autodetect carrier mode */ -} DRXCarrier_t, *pDRXCarrier_t; + typedef enum { + DRX_CARRIER_MULTI = 0, /**< Multi carrier mode */ + DRX_CARRIER_SINGLE, /**< Single carrier mode */ + DRX_CARRIER_UNKNOWN = DRX_UNKNOWN, + /**< Carrier mode unknown. */ + DRX_CARRIER_AUTO = DRX_AUTO /**< Autodetect carrier mode */ + } DRXCarrier_t, *pDRXCarrier_t; /** * \enum DRXFramemode_t * \brief Channel Frame Mode. */ -typedef enum { - DRX_FRAMEMODE_420 = 0, /**< 420 with variable PN */ - DRX_FRAMEMODE_595, /**< 595 */ - DRX_FRAMEMODE_945, /**< 945 with variable PN */ - DRX_FRAMEMODE_420_FIXED_PN, /**< 420 with fixed PN */ - DRX_FRAMEMODE_945_FIXED_PN, /**< 945 with fixed PN */ - DRX_FRAMEMODE_UNKNOWN = DRX_UNKNOWN, /**< Frame mode unknown. */ - DRX_FRAMEMODE_AUTO = DRX_AUTO /**< Autodetect frame mode */ -} DRXFramemode_t, *pDRXFramemode_t; + typedef enum { + DRX_FRAMEMODE_420 = 0, /**< 420 with variable PN */ + DRX_FRAMEMODE_595, /**< 595 */ + DRX_FRAMEMODE_945, /**< 945 with variable PN */ + DRX_FRAMEMODE_420_FIXED_PN, + /**< 420 with fixed PN */ + DRX_FRAMEMODE_945_FIXED_PN, + /**< 945 with fixed PN */ + DRX_FRAMEMODE_UNKNOWN = DRX_UNKNOWN, + /**< Frame mode unknown. */ + DRX_FRAMEMODE_AUTO = DRX_AUTO + /**< Autodetect frame mode */ + } DRXFramemode_t, *pDRXFramemode_t; /** * \enum DRXTPSFrame_t * \brief Frame number in current super-frame. */ -typedef enum { - DRX_TPS_FRAME1 = 0, /**< TPS frame 1. */ - DRX_TPS_FRAME2, /**< TPS frame 2. */ - DRX_TPS_FRAME3, /**< TPS frame 3. */ - DRX_TPS_FRAME4, /**< TPS frame 4. */ - DRX_TPS_FRAME_UNKNOWN = DRX_UNKNOWN /**< TPS frame unknown. */ -} DRXTPSFrame_t, *pDRXTPSFrame_t; + typedef enum { + DRX_TPS_FRAME1 = 0, /**< TPS frame 1. */ + DRX_TPS_FRAME2, /**< TPS frame 2. */ + DRX_TPS_FRAME3, /**< TPS frame 3. */ + DRX_TPS_FRAME4, /**< TPS frame 4. */ + DRX_TPS_FRAME_UNKNOWN = DRX_UNKNOWN + /**< TPS frame unknown. */ + } DRXTPSFrame_t, *pDRXTPSFrame_t; /** * \enum DRXLDPC_t * \brief TPS LDPC . */ -typedef enum { - DRX_LDPC_0_4 = 0, /**< LDPC 0.4 */ - DRX_LDPC_0_6, /**< LDPC 0.6 */ - DRX_LDPC_0_8, /**< LDPC 0.8 */ - DRX_LDPC_UNKNOWN = DRX_UNKNOWN, /**< LDPC unknown. */ - DRX_LDPC_AUTO = DRX_AUTO /**< Autodetect LDPC */ -} DRXLDPC_t, *pDRXLDPC_t; + typedef enum { + DRX_LDPC_0_4 = 0, /**< LDPC 0.4 */ + DRX_LDPC_0_6, /**< LDPC 0.6 */ + DRX_LDPC_0_8, /**< LDPC 0.8 */ + DRX_LDPC_UNKNOWN = DRX_UNKNOWN, + /**< LDPC unknown. */ + DRX_LDPC_AUTO = DRX_AUTO /**< Autodetect LDPC */ + } DRXLDPC_t, *pDRXLDPC_t; /** * \enum DRXPilotMode_t * \brief Pilot modes in DTMB. */ -typedef enum { - DRX_PILOT_ON = 0, /**< Pilot On */ - DRX_PILOT_OFF, /**< Pilot Off */ - DRX_PILOT_UNKNOWN = DRX_UNKNOWN, /**< Pilot unknown. */ - DRX_PILOT_AUTO = DRX_AUTO /**< Autodetect Pilot */ -} DRXPilotMode_t, *pDRXPilotMode_t; - - + typedef enum { + DRX_PILOT_ON = 0, /**< Pilot On */ + DRX_PILOT_OFF, /**< Pilot Off */ + DRX_PILOT_UNKNOWN = DRX_UNKNOWN, + /**< Pilot unknown. */ + DRX_PILOT_AUTO = DRX_AUTO /**< Autodetect Pilot */ + } DRXPilotMode_t, *pDRXPilotMode_t; /** * \enum DRXCtrlIndex_t * \brief Indices of the control functions. */ -typedef u32_t DRXCtrlIndex_t, *pDRXCtrlIndex_t; + typedef u32_t DRXCtrlIndex_t, *pDRXCtrlIndex_t; #ifndef DRX_CTRL_BASE #define DRX_CTRL_BASE ((DRXCtrlIndex_t)0) @@ -583,14 +616,14 @@ typedef u32_t DRXCtrlIndex_t, *pDRXCtrlIndex_t; #define DRX_CTRL_I2C_READWRITE ( DRX_CTRL_BASE + 27)/**< Read/write I2C */ #define DRX_CTRL_PROGRAM_TUNER ( DRX_CTRL_BASE + 28)/**< Program tuner */ - /* Professional */ + /* Professional */ #define DRX_CTRL_MB_CFG ( DRX_CTRL_BASE + 29) /**< */ #define DRX_CTRL_MB_READ ( DRX_CTRL_BASE + 30) /**< */ #define DRX_CTRL_MB_WRITE ( DRX_CTRL_BASE + 31) /**< */ #define DRX_CTRL_MB_CONSTEL ( DRX_CTRL_BASE + 32) /**< */ #define DRX_CTRL_MB_MER ( DRX_CTRL_BASE + 33) /**< */ - /* Misc */ + /* Misc */ #define DRX_CTRL_UIO_CFG DRX_CTRL_SET_UIO_CFG /**< Configure UIO */ #define DRX_CTRL_SET_UIO_CFG ( DRX_CTRL_BASE + 34) /**< Configure UIO */ #define DRX_CTRL_GET_UIO_CFG ( DRX_CTRL_BASE + 35) /**< Configure UIO */ @@ -603,18 +636,19 @@ typedef u32_t DRXCtrlIndex_t, *pDRXCtrlIndex_t; #define DRX_CTRL_VALIDATE_UCODE ( DRX_CTRL_BASE + 42) /**< Validate ucode */ #define DRX_CTRL_DUMP_REGISTERS ( DRX_CTRL_BASE + 43) /**< Dump registers */ -#define DRX_CTRL_MAX ( DRX_CTRL_BASE + 44) /* never to be used */ +#define DRX_CTRL_MAX ( DRX_CTRL_BASE + 44) /* never to be used */ /** * \enum DRXUCodeAction_t * \brief Used to indicate if firmware has to be uploaded or verified. */ -typedef enum { - UCODE_UPLOAD, /**< Upload the microcode image to device */ - UCODE_VERIFY /**< Compare microcode image with code on device */ -} DRXUCodeAction_t, *pDRXUCodeAction_t; - + typedef enum { + UCODE_UPLOAD, + /**< Upload the microcode image to device */ + UCODE_VERIFY + /**< Compare microcode image with code on device */ + } DRXUCodeAction_t, *pDRXUCodeAction_t; /** * \enum DRXLockStatus_t @@ -622,60 +656,71 @@ typedef enum { * * The generic lock states have device dependent semantics. */ -typedef enum{ - DRX_NEVER_LOCK = 0, /**< Device will never lock on this signal */ - DRX_NOT_LOCKED, /**< Device has no lock at all */ - DRX_LOCK_STATE_1, /**< Generic lock state */ - DRX_LOCK_STATE_2, /**< Generic lock state */ - DRX_LOCK_STATE_3, /**< Generic lock state */ - DRX_LOCK_STATE_4, /**< Generic lock state */ - DRX_LOCK_STATE_5, /**< Generic lock state */ - DRX_LOCK_STATE_6, /**< Generic lock state */ - DRX_LOCK_STATE_7, /**< Generic lock state */ - DRX_LOCK_STATE_8, /**< Generic lock state */ - DRX_LOCK_STATE_9, /**< Generic lock state */ - DRX_LOCKED /**< Device is in lock */ -} DRXLockStatus_t, *pDRXLockStatus_t; + typedef enum { + DRX_NEVER_LOCK = 0, + /**< Device will never lock on this signal */ + DRX_NOT_LOCKED, + /**< Device has no lock at all */ + DRX_LOCK_STATE_1, + /**< Generic lock state */ + DRX_LOCK_STATE_2, + /**< Generic lock state */ + DRX_LOCK_STATE_3, + /**< Generic lock state */ + DRX_LOCK_STATE_4, + /**< Generic lock state */ + DRX_LOCK_STATE_5, + /**< Generic lock state */ + DRX_LOCK_STATE_6, + /**< Generic lock state */ + DRX_LOCK_STATE_7, + /**< Generic lock state */ + DRX_LOCK_STATE_8, + /**< Generic lock state */ + DRX_LOCK_STATE_9, + /**< Generic lock state */ + DRX_LOCKED /**< Device is in lock */ + } DRXLockStatus_t, *pDRXLockStatus_t; /** * \enum DRXUIO_t * \brief Used to address a User IO (UIO). */ -typedef enum{ - DRX_UIO1 , - DRX_UIO2 , - DRX_UIO3 , - DRX_UIO4 , - DRX_UIO5 , - DRX_UIO6 , - DRX_UIO7 , - DRX_UIO8 , - DRX_UIO9 , - DRX_UIO10 , - DRX_UIO11 , - DRX_UIO12 , - DRX_UIO13 , - DRX_UIO14 , - DRX_UIO15 , - DRX_UIO16 , - DRX_UIO17 , - DRX_UIO18 , - DRX_UIO19 , - DRX_UIO20 , - DRX_UIO21 , - DRX_UIO22 , - DRX_UIO23 , - DRX_UIO24 , - DRX_UIO25 , - DRX_UIO26 , - DRX_UIO27 , - DRX_UIO28 , - DRX_UIO29 , - DRX_UIO30 , - DRX_UIO31 , - DRX_UIO32 , - DRX_UIO_MAX = DRX_UIO32 -} DRXUIO_t, *pDRXUIO_t; + typedef enum { + DRX_UIO1, + DRX_UIO2, + DRX_UIO3, + DRX_UIO4, + DRX_UIO5, + DRX_UIO6, + DRX_UIO7, + DRX_UIO8, + DRX_UIO9, + DRX_UIO10, + DRX_UIO11, + DRX_UIO12, + DRX_UIO13, + DRX_UIO14, + DRX_UIO15, + DRX_UIO16, + DRX_UIO17, + DRX_UIO18, + DRX_UIO19, + DRX_UIO20, + DRX_UIO21, + DRX_UIO22, + DRX_UIO23, + DRX_UIO24, + DRX_UIO25, + DRX_UIO26, + DRX_UIO27, + DRX_UIO28, + DRX_UIO29, + DRX_UIO30, + DRX_UIO31, + DRX_UIO32, + DRX_UIO_MAX = DRX_UIO32 + } DRXUIO_t, *pDRXUIO_t; /** * \enum DRXUIOMode_t @@ -686,17 +731,26 @@ typedef enum{ * To be backward compatible DRX_UIO_MODE_FIRMWARE is equivalent to * DRX_UIO_MODE_FIRMWARE0. */ -typedef enum{ - DRX_UIO_MODE_DISABLE = 0x01, /**< not used, pin is configured as input */ - DRX_UIO_MODE_READWRITE = 0x02, /**< used for read/write by application */ - DRX_UIO_MODE_FIRMWARE = 0x04, /**< controlled by firmware, function 0 */ - DRX_UIO_MODE_FIRMWARE0 = DRX_UIO_MODE_FIRMWARE , /**< same as above */ - DRX_UIO_MODE_FIRMWARE1 = 0x08, /**< controlled by firmware, function 1 */ - DRX_UIO_MODE_FIRMWARE2 = 0x10, /**< controlled by firmware, function 2 */ - DRX_UIO_MODE_FIRMWARE3 = 0x20, /**< controlled by firmware, function 3 */ - DRX_UIO_MODE_FIRMWARE4 = 0x40, /**< controlled by firmware, function 4 */ - DRX_UIO_MODE_FIRMWARE5 = 0x80 /**< controlled by firmware, function 5 */ -} DRXUIOMode_t, *pDRXUIOMode_t; + typedef enum { + DRX_UIO_MODE_DISABLE = 0x01, + /**< not used, pin is configured as input */ + DRX_UIO_MODE_READWRITE = 0x02, + /**< used for read/write by application */ + DRX_UIO_MODE_FIRMWARE = 0x04, + /**< controlled by firmware, function 0 */ + DRX_UIO_MODE_FIRMWARE0 = DRX_UIO_MODE_FIRMWARE, + /**< same as above */ + DRX_UIO_MODE_FIRMWARE1 = 0x08, + /**< controlled by firmware, function 1 */ + DRX_UIO_MODE_FIRMWARE2 = 0x10, + /**< controlled by firmware, function 2 */ + DRX_UIO_MODE_FIRMWARE3 = 0x20, + /**< controlled by firmware, function 3 */ + DRX_UIO_MODE_FIRMWARE4 = 0x40, + /**< controlled by firmware, function 4 */ + DRX_UIO_MODE_FIRMWARE5 = 0x80 + /**< controlled by firmware, function 5 */ + } DRXUIOMode_t, *pDRXUIOMode_t; /** * \enum DRXOOBDownstreamStandard_t @@ -704,12 +758,14 @@ typedef enum{ * * Based on ANSI 55-1 and 55-2 */ -typedef enum { - DRX_OOB_MODE_A = 0, /**< ANSI 55-1 */ - DRX_OOB_MODE_B_GRADE_A, /**< ANSI 55-2 A */ - DRX_OOB_MODE_B_GRADE_B /**< ANSI 55-2 B */ -} DRXOOBDownstreamStandard_t, *pDRXOOBDownstreamStandard_t; - + typedef enum { + DRX_OOB_MODE_A = 0, + /**< ANSI 55-1 */ + DRX_OOB_MODE_B_GRADE_A, + /**< ANSI 55-2 A */ + DRX_OOB_MODE_B_GRADE_B + /**< ANSI 55-2 B */ + } DRXOOBDownstreamStandard_t, *pDRXOOBDownstreamStandard_t; /*------------------------------------------------------------------------- STRUCTS @@ -725,31 +781,31 @@ STRUCTS * \enum DRXCfgType_t * \brief Generic configuration function identifiers. */ -typedef u32_t DRXCfgType_t, *pDRXCfgType_t; + typedef u32_t DRXCfgType_t, *pDRXCfgType_t; #ifndef DRX_CFG_BASE #define DRX_CFG_BASE ((DRXCfgType_t)0) #endif -#define DRX_CFG_MPEG_OUTPUT ( DRX_CFG_BASE + 0) /* MPEG TS output */ -#define DRX_CFG_PKTERR ( DRX_CFG_BASE + 1) /* Packet Error */ -#define DRX_CFG_SYMCLK_OFFS ( DRX_CFG_BASE + 2) /* Symbol Clk Offset */ -#define DRX_CFG_SMA ( DRX_CFG_BASE + 3) /* Smart Antenna */ -#define DRX_CFG_PINSAFE ( DRX_CFG_BASE + 4) /* Pin safe mode */ -#define DRX_CFG_SUBSTANDARD ( DRX_CFG_BASE + 5) /* substandard */ -#define DRX_CFG_AUD_VOLUME ( DRX_CFG_BASE + 6) /* volume */ -#define DRX_CFG_AUD_RDS ( DRX_CFG_BASE + 7) /* rds */ -#define DRX_CFG_AUD_AUTOSOUND ( DRX_CFG_BASE + 8) /* ASS & ASC */ -#define DRX_CFG_AUD_ASS_THRES ( DRX_CFG_BASE + 9) /* ASS Thresholds */ -#define DRX_CFG_AUD_DEVIATION ( DRX_CFG_BASE + 10) /* Deviation */ -#define DRX_CFG_AUD_PRESCALE ( DRX_CFG_BASE + 11) /* Prescale */ -#define DRX_CFG_AUD_MIXER ( DRX_CFG_BASE + 12) /* Mixer */ -#define DRX_CFG_AUD_AVSYNC ( DRX_CFG_BASE + 13) /* AVSync */ -#define DRX_CFG_AUD_CARRIER ( DRX_CFG_BASE + 14) /* Audio carriers */ -#define DRX_CFG_I2S_OUTPUT ( DRX_CFG_BASE + 15) /* I2S output */ -#define DRX_CFG_ATV_STANDARD ( DRX_CFG_BASE + 16) /* ATV standard */ -#define DRX_CFG_SQI_SPEED ( DRX_CFG_BASE + 17) /* SQI speed */ -#define DRX_CTRL_CFG_MAX ( DRX_CFG_BASE + 18) /* never to be used */ +#define DRX_CFG_MPEG_OUTPUT ( DRX_CFG_BASE + 0) /* MPEG TS output */ +#define DRX_CFG_PKTERR ( DRX_CFG_BASE + 1) /* Packet Error */ +#define DRX_CFG_SYMCLK_OFFS ( DRX_CFG_BASE + 2) /* Symbol Clk Offset */ +#define DRX_CFG_SMA ( DRX_CFG_BASE + 3) /* Smart Antenna */ +#define DRX_CFG_PINSAFE ( DRX_CFG_BASE + 4) /* Pin safe mode */ +#define DRX_CFG_SUBSTANDARD ( DRX_CFG_BASE + 5) /* substandard */ +#define DRX_CFG_AUD_VOLUME ( DRX_CFG_BASE + 6) /* volume */ +#define DRX_CFG_AUD_RDS ( DRX_CFG_BASE + 7) /* rds */ +#define DRX_CFG_AUD_AUTOSOUND ( DRX_CFG_BASE + 8) /* ASS & ASC */ +#define DRX_CFG_AUD_ASS_THRES ( DRX_CFG_BASE + 9) /* ASS Thresholds */ +#define DRX_CFG_AUD_DEVIATION ( DRX_CFG_BASE + 10) /* Deviation */ +#define DRX_CFG_AUD_PRESCALE ( DRX_CFG_BASE + 11) /* Prescale */ +#define DRX_CFG_AUD_MIXER ( DRX_CFG_BASE + 12) /* Mixer */ +#define DRX_CFG_AUD_AVSYNC ( DRX_CFG_BASE + 13) /* AVSync */ +#define DRX_CFG_AUD_CARRIER ( DRX_CFG_BASE + 14) /* Audio carriers */ +#define DRX_CFG_I2S_OUTPUT ( DRX_CFG_BASE + 15) /* I2S output */ +#define DRX_CFG_ATV_STANDARD ( DRX_CFG_BASE + 16) /* ATV standard */ +#define DRX_CFG_SQI_SPEED ( DRX_CFG_BASE + 17) /* SQI speed */ +#define DRX_CTRL_CFG_MAX ( DRX_CFG_BASE + 18) /* never to be used */ #define DRX_CFG_PINS_SAFE_MODE DRX_CFG_PINSAFE /*============================================================================*/ @@ -764,10 +820,12 @@ typedef u32_t DRXCfgType_t, *pDRXCfgType_t; * * Used by DRX_CTRL_LOAD_UCODE and DRX_CTRL_VERIFY_UCODE */ -typedef struct { - pu8_t mcData; /**< Pointer to microcode image. */ - u16_t mcSize; /**< Microcode image size. */ -} DRXUCodeInfo_t, *pDRXUCodeInfo_t; + typedef struct { + pu8_t mcData; + /**< Pointer to microcode image. */ + u16_t mcSize; + /**< Microcode image size. */ + } DRXUCodeInfo_t, *pDRXUCodeInfo_t; /** * \struct DRXMcVersionRec_t @@ -788,12 +846,12 @@ typedef struct { */ #define AUX_VER_RECORD 0x8000 -typedef struct { - u16_t auxType; /* type of aux data - 0x8000 for version record */ - u32_t mcDevType; /* device type, based on JTAG ID */ - u32_t mcVersion; /* version of microcode */ - u32_t mcBaseVersion; /* in case of patch: the original microcode version */ -} DRXMcVersionRec_t, *pDRXMcVersionRec_t; + typedef struct { + u16_t auxType; /* type of aux data - 0x8000 for version record */ + u32_t mcDevType; /* device type, based on JTAG ID */ + u32_t mcVersion; /* version of microcode */ + u32_t mcBaseVersion; /* in case of patch: the original microcode version */ + } DRXMcVersionRec_t, *pDRXMcVersionRec_t; /*========================================*/ @@ -803,14 +861,16 @@ typedef struct { * * Used by DRX_CTRL_LOAD_FILTER */ -typedef struct { - pu8_t dataRe; /**< pointer to coefficients for RE */ - pu8_t dataIm; /**< pointer to coefficients for IM */ - u16_t sizeRe; /**< size of coefficients for RE */ - u16_t sizeIm; /**< size of coefficients for IM */ -} DRXFilterInfo_t, *pDRXFilterInfo_t; - - + typedef struct { + pu8_t dataRe; + /**< pointer to coefficients for RE */ + pu8_t dataIm; + /**< pointer to coefficients for IM */ + u16_t sizeRe; + /**< size of coefficients for RE */ + u16_t sizeIm; + /**< size of coefficients for IM */ + } DRXFilterInfo_t, *pDRXFilterInfo_t; /*========================================*/ @@ -822,24 +882,32 @@ typedef struct { * Only certain fields need to be used for a specfic standard. * */ -typedef struct { - DRXFrequency_t frequency; /**< frequency in kHz */ - DRXBandwidth_t bandwidth; /**< bandwidth */ - DRXMirror_t mirror; /**< mirrored or not on RF */ - DRXConstellation_t constellation; /**< constellation */ - DRXHierarchy_t hierarchy; /**< hierarchy */ - DRXPriority_t priority; /**< priority */ - DRXCoderate_t coderate; /**< coderate */ - DRXGuard_t guard; /**< guard interval */ - DRXFftmode_t fftmode; /**< fftmode */ - DRXClassification_t classification; /**< classification */ - DRXSymbolrate_t symbolrate; /**< symbolrate in symbols/sec */ - DRXInterleaveModes_t interleavemode; /**< interleaveMode QAM */ - DRXLDPC_t ldpc; /**< ldpc */ - DRXCarrier_t carrier; /**< carrier */ - DRXFramemode_t framemode; /**< frame mode */ - DRXPilotMode_t pilot; /**< pilot mode */ -} DRXChannel_t, *pDRXChannel_t; + typedef struct { + DRXFrequency_t frequency; + /**< frequency in kHz */ + DRXBandwidth_t bandwidth; + /**< bandwidth */ + DRXMirror_t mirror; /**< mirrored or not on RF */ + DRXConstellation_t constellation; + /**< constellation */ + DRXHierarchy_t hierarchy; + /**< hierarchy */ + DRXPriority_t priority; /**< priority */ + DRXCoderate_t coderate; /**< coderate */ + DRXGuard_t guard; /**< guard interval */ + DRXFftmode_t fftmode; /**< fftmode */ + DRXClassification_t classification; + /**< classification */ + DRXSymbolrate_t symbolrate; + /**< symbolrate in symbols/sec */ + DRXInterleaveModes_t interleavemode; + /**< interleaveMode QAM */ + DRXLDPC_t ldpc; /**< ldpc */ + DRXCarrier_t carrier; /**< carrier */ + DRXFramemode_t framemode; + /**< frame mode */ + DRXPilotMode_t pilot; /**< pilot mode */ + } DRXChannel_t, *pDRXChannel_t; /*========================================*/ @@ -849,25 +917,31 @@ typedef struct { * * Used by DRX_CTRL_SIG_QUALITY. */ -typedef struct { - u16_t MER; /**< in steps of 0.1 dB */ - u32_t preViterbiBER ; /**< in steps of 1/scaleFactorBER */ - u32_t postViterbiBER ; /**< in steps of 1/scaleFactorBER */ - u32_t scaleFactorBER; /**< scale factor for BER */ - u16_t packetError ; /**< number of packet errors */ - u32_t postReedSolomonBER ; /**< in steps of 1/scaleFactorBER */ - u32_t preLdpcBER; /**< in steps of 1/scaleFactorBER */ - u32_t averIter; /**< in steps of 0.01 */ - u16_t indicator; /**< indicative signal quality low=0..100=high */ -}DRXSigQuality_t, *pDRXSigQuality_t; - - -typedef enum { - DRX_SQI_SPEED_FAST = 0, - DRX_SQI_SPEED_MEDIUM, - DRX_SQI_SPEED_SLOW, - DRX_SQI_SPEED_UNKNOWN = DRX_UNKNOWN -} DRXCfgSqiSpeed_t, *pDRXCfgSqiSpeed_t; + typedef struct { + u16_t MER; /**< in steps of 0.1 dB */ + u32_t preViterbiBER; + /**< in steps of 1/scaleFactorBER */ + u32_t postViterbiBER; + /**< in steps of 1/scaleFactorBER */ + u32_t scaleFactorBER; + /**< scale factor for BER */ + u16_t packetError; + /**< number of packet errors */ + u32_t postReedSolomonBER; + /**< in steps of 1/scaleFactorBER */ + u32_t preLdpcBER; + /**< in steps of 1/scaleFactorBER */ + u32_t averIter;/**< in steps of 0.01 */ + u16_t indicator; + /**< indicative signal quality low=0..100=high */ + } DRXSigQuality_t, *pDRXSigQuality_t; + + typedef enum { + DRX_SQI_SPEED_FAST = 0, + DRX_SQI_SPEED_MEDIUM, + DRX_SQI_SPEED_SLOW, + DRX_SQI_SPEED_UNKNOWN = DRX_UNKNOWN + } DRXCfgSqiSpeed_t, *pDRXCfgSqiSpeed_t; /*========================================*/ @@ -877,11 +951,12 @@ typedef enum { * * Used by DRX_CTRL_CONSTEL. */ -typedef struct { - s16_t im; /**< Imaginary part. */ - s16_t re; /**< Real part. */ -} DRXComplex_t, *pDRXComplex_t; - + typedef struct { + s16_t im; + /**< Imaginary part. */ + s16_t re; + /**< Real part. */ + } DRXComplex_t, *pDRXComplex_t; /*========================================*/ @@ -891,16 +966,22 @@ typedef struct { * * Used by DRX_CTRL_SCAN_INIT. */ -typedef struct { - DRXFrequency_t first; /**< First centre frequency in this band */ - DRXFrequency_t last; /**< Last centre frequency in this band */ - DRXFrequency_t step; /**< Stepping frequency in this band */ - DRXBandwidth_t bandwidth; /**< Bandwidth within this frequency band */ - u16_t chNumber; /**< First channel number in this band, or first + typedef struct { + DRXFrequency_t first; + /**< First centre frequency in this band */ + DRXFrequency_t last; + /**< Last centre frequency in this band */ + DRXFrequency_t step; + /**< Stepping frequency in this band */ + DRXBandwidth_t bandwidth; + /**< Bandwidth within this frequency band */ + u16_t chNumber; + /**< First channel number in this band, or first index in chNames */ - char **chNames; /**< Optional list of channel names in this + char **chNames; + /**< Optional list of channel names in this band */ -} DRXFrequencyPlan_t, *pDRXFrequencyPlan_t; + } DRXFrequencyPlan_t, *pDRXFrequencyPlan_t; /*========================================*/ @@ -910,11 +991,11 @@ typedef struct { * * Used by frequency_plan.h */ -typedef struct{ - pDRXFrequencyPlan_t freqPlan; - int freqPlanSize; - char *freqPlanName; -}DRXFrequencyPlanInfo_t, *pDRXFrequencyPlanInfo_t; + typedef struct { + pDRXFrequencyPlan_t freqPlan; + int freqPlanSize; + char *freqPlanName; + } DRXFrequencyPlanInfo_t, *pDRXFrequencyPlanInfo_t; /*========================================*/ @@ -922,14 +1003,15 @@ typedef struct{ * /struct DRXScanDataQam_t * QAM specific scanning variables */ -typedef struct { - pu32_t symbolrate; /**< list of symbolrates to scan */ - u16_t symbolrateSize; /**< size of symbolrate array */ - pDRXConstellation_t constellation; /**< list of constellations */ - u16_t constellationSize; /**< size of constellation array */ - u16_t ifAgcThreshold; /**< thresholf for IF-AGC based + typedef struct { + pu32_t symbolrate; /**< list of symbolrates to scan */ + u16_t symbolrateSize; /**< size of symbolrate array */ + pDRXConstellation_t constellation; + /**< list of constellations */ + u16_t constellationSize; /**< size of constellation array */ + u16_t ifAgcThreshold; /**< thresholf for IF-AGC based scanning filter */ -} DRXScanDataQam_t, *pDRXScanDataQam_t; + } DRXScanDataQam_t, *pDRXScanDataQam_t; /*========================================*/ @@ -937,9 +1019,10 @@ typedef struct { * /struct DRXScanDataAtv_t * ATV specific scanning variables */ -typedef struct { - s16_t svrThreshold; /**< threshold of Sound/Video ratio in 0.1dB steps */ -} DRXScanDataAtv_t, *pDRXScanDataAtv_t; + typedef struct { + s16_t svrThreshold; + /**< threshold of Sound/Video ratio in 0.1dB steps */ + } DRXScanDataAtv_t, *pDRXScanDataAtv_t; /*========================================*/ @@ -949,14 +1032,15 @@ typedef struct { * * Used by DRX_CTRL_SCAN_INIT. */ -typedef struct { - pDRXFrequencyPlan_t frequencyPlan; /**< Frequency plan (array)*/ - u16_t frequencyPlanSize; /**< Number of bands */ - u32_t numTries; /**< Max channels tried */ - DRXFrequency_t skip; /**< Minimum frequency step to take + typedef struct { + pDRXFrequencyPlan_t frequencyPlan; + /**< Frequency plan (array)*/ + u16_t frequencyPlanSize; /**< Number of bands */ + u32_t numTries; /**< Max channels tried */ + DRXFrequency_t skip; /**< Minimum frequency step to take after a channel is found */ - void *extParams; /**< Standard specific params */ -} DRXScanParam_t, *pDRXScanParam_t; + void *extParams; /**< Standard specific params */ + } DRXScanParam_t, *pDRXScanParam_t; /*========================================*/ @@ -964,21 +1048,21 @@ typedef struct { * \brief Scan commands. * Used by scanning algorithms. */ -typedef enum { - DRX_SCAN_COMMAND_INIT = 0, /**< Initialize scanning */ - DRX_SCAN_COMMAND_NEXT, /**< Next scan */ - DRX_SCAN_COMMAND_STOP /**< Stop scanning */ -}DRXScanCommand_t, *pDRXScanCommand_t; + typedef enum { + DRX_SCAN_COMMAND_INIT = 0,/**< Initialize scanning */ + DRX_SCAN_COMMAND_NEXT, /**< Next scan */ + DRX_SCAN_COMMAND_STOP /**< Stop scanning */ + } DRXScanCommand_t, *pDRXScanCommand_t; /*========================================*/ /** * \brief Inner scan function prototype. */ -typedef DRXStatus_t (*DRXScanFunc_t) (void* scanContext, - DRXScanCommand_t scanCommand, - pDRXChannel_t scanChannel, - pBool_t getNextChannel ); + typedef DRXStatus_t(*DRXScanFunc_t) (void *scanContext, + DRXScanCommand_t scanCommand, + pDRXChannel_t scanChannel, + pBool_t getNextChannel); /*========================================*/ @@ -988,17 +1072,21 @@ typedef DRXStatus_t (*DRXScanFunc_t) (void* scanContext, * * Used by DRX_CTRL_TPS_INFO. */ -typedef struct { - DRXFftmode_t fftmode; /**< Fft mode */ - DRXGuard_t guard; /**< Guard interval */ - DRXConstellation_t constellation; /**< Constellation */ - DRXHierarchy_t hierarchy; /**< Hierarchy */ - DRXCoderate_t highCoderate; /**< High code rate */ - DRXCoderate_t lowCoderate; /**< Low cod rate */ - DRXTPSFrame_t frame; /**< Tps frame */ - u8_t length; /**< Length */ - u16_t cellId; /**< Cell id */ -}DRXTPSInfo_t, *pDRXTPSInfo_t; + typedef struct { + DRXFftmode_t fftmode; /**< Fft mode */ + DRXGuard_t guard; /**< Guard interval */ + DRXConstellation_t constellation; + /**< Constellation */ + DRXHierarchy_t hierarchy; + /**< Hierarchy */ + DRXCoderate_t highCoderate; + /**< High code rate */ + DRXCoderate_t lowCoderate; + /**< Low cod rate */ + DRXTPSFrame_t frame; /**< Tps frame */ + u8_t length; /**< Length */ + u16_t cellId; /**< Cell id */ + } DRXTPSInfo_t, *pDRXTPSInfo_t; /*========================================*/ @@ -1007,27 +1095,45 @@ typedef struct { * * Used by DRX_CTRL_SET_POWER_MODE. */ -typedef enum { - DRX_POWER_UP = 0, /**< Generic , Power Up Mode */ - DRX_POWER_MODE_1, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_2, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_3, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_4, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_5, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_6, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_7, /**< Device specific , Power Up Mode */ - DRX_POWER_MODE_8, /**< Device specific , Power Up Mode */ - - DRX_POWER_MODE_9, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_10, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_11, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_12, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_13, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_14, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_15, /**< Device specific , Power Down Mode */ - DRX_POWER_MODE_16, /**< Device specific , Power Down Mode */ - DRX_POWER_DOWN = 255 /**< Generic , Power Down Mode */ -}DRXPowerMode_t, *pDRXPowerMode_t; + typedef enum { + DRX_POWER_UP = 0, + /**< Generic , Power Up Mode */ + DRX_POWER_MODE_1, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_2, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_3, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_4, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_5, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_6, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_7, + /**< Device specific , Power Up Mode */ + DRX_POWER_MODE_8, + /**< Device specific , Power Up Mode */ + + DRX_POWER_MODE_9, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_10, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_11, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_12, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_13, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_14, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_15, + /**< Device specific , Power Down Mode */ + DRX_POWER_MODE_16, + /**< Device specific , Power Down Mode */ + DRX_POWER_DOWN = 255 + /**< Generic , Power Down Mode */ + } DRXPowerMode_t, *pDRXPowerMode_t; /*========================================*/ @@ -1037,18 +1143,17 @@ typedef enum { * * Used by DRX_CTRL_VERSION. */ -typedef enum { - DRX_MODULE_DEVICE, - DRX_MODULE_MICROCODE, - DRX_MODULE_DRIVERCORE, - DRX_MODULE_DEVICEDRIVER, - DRX_MODULE_DAP, - DRX_MODULE_BSP_I2C, - DRX_MODULE_BSP_TUNER, - DRX_MODULE_BSP_HOST, - DRX_MODULE_UNKNOWN -} DRXModule_t, *pDRXModule_t; - + typedef enum { + DRX_MODULE_DEVICE, + DRX_MODULE_MICROCODE, + DRX_MODULE_DRIVERCORE, + DRX_MODULE_DEVICEDRIVER, + DRX_MODULE_DAP, + DRX_MODULE_BSP_I2C, + DRX_MODULE_BSP_TUNER, + DRX_MODULE_BSP_HOST, + DRX_MODULE_UNKNOWN + } DRXModule_t, *pDRXModule_t; /** * \enum DRXVersion_t @@ -1056,14 +1161,16 @@ typedef enum { * * Used by DRX_CTRL_VERSION. */ -typedef struct { - DRXModule_t moduleType; /**< Type identifier of the module */ - char *moduleName; /**< Name or description of module */ - u16_t vMajor; /**< Major version number */ - u16_t vMinor; /**< Minor version number */ - u16_t vPatch; /**< Patch version number */ - char *vString; /**< Version as text string */ -} DRXVersion_t, *pDRXVersion_t; + typedef struct { + DRXModule_t moduleType; + /**< Type identifier of the module */ + char *moduleName; + /**< Name or description of module */ + u16_t vMajor; /**< Major version number */ + u16_t vMinor; /**< Minor version number */ + u16_t vPatch; /**< Patch version number */ + char *vString; /**< Version as text string */ + } DRXVersion_t, *pDRXVersion_t; /** * \enum DRXVersionList_t @@ -1071,10 +1178,11 @@ typedef struct { * * Used by DRX_CTRL_VERSION. */ -typedef struct DRXVersionList_s { - pDRXVersion_t version; /**< Version information */ - struct DRXVersionList_s *next; /**< Next list element */ -} DRXVersionList_t, *pDRXVersionList_t; + typedef struct DRXVersionList_s { + pDRXVersion_t version;/**< Version information */ + struct DRXVersionList_s *next; + /**< Next list element */ + } DRXVersionList_t, *pDRXVersionList_t; /*========================================*/ @@ -1083,10 +1191,12 @@ typedef struct DRXVersionList_s { * * Used by DRX_CTRL_UIO_CFG. */ -typedef struct { - DRXUIO_t uio; /**< UIO identifier */ - DRXUIOMode_t mode; /**< UIO operational mode */ -} DRXUIOCfg_t, *pDRXUIOCfg_t; + typedef struct { + DRXUIO_t uio; + /**< UIO identifier */ + DRXUIOMode_t mode; + /**< UIO operational mode */ + } DRXUIOCfg_t, *pDRXUIOCfg_t; /*========================================*/ @@ -1095,10 +1205,12 @@ typedef struct { * * Used by DRX_CTRL_UIO_READ and DRX_CTRL_UIO_WRITE. */ -typedef struct { - DRXUIO_t uio; /**< UIO identifier */ - Bool_t value; /**< UIO value (TRUE=1, FALSE=0) */ -} DRXUIOData_t, *pDRXUIOData_t; + typedef struct { + DRXUIO_t uio; + /**< UIO identifier */ + Bool_t value; + /**< UIO value (TRUE=1, FALSE=0) */ + } DRXUIOData_t, *pDRXUIOData_t; /*========================================*/ @@ -1107,13 +1219,13 @@ typedef struct { * * Used by DRX_CTRL_SET_OOB. */ -typedef struct { - DRXFrequency_t frequency; /**< Frequency in kHz */ - DRXOOBDownstreamStandard_t standard; /**< OOB standard */ - Bool_t spectrumInverted; /**< If TRUE, then spectrum + typedef struct { + DRXFrequency_t frequency; /**< Frequency in kHz */ + DRXOOBDownstreamStandard_t standard; + /**< OOB standard */ + Bool_t spectrumInverted; /**< If TRUE, then spectrum is inverted */ -} DRXOOB_t, *pDRXOOB_t; - + } DRXOOB_t, *pDRXOOB_t; /*========================================*/ @@ -1122,13 +1234,12 @@ typedef struct { * * Used by DRX_CTRL_GET_OOB. */ -typedef struct { - DRXFrequency_t frequency; /**< Frequency in Khz */ - DRXLockStatus_t lock; /**< Lock status */ - u32_t mer; /**< MER */ - s32_t symbolRateOffset; /**< Symbolrate offset in ppm */ -} DRXOOBStatus_t, *pDRXOOBStatus_t; - + typedef struct { + DRXFrequency_t frequency; /**< Frequency in Khz */ + DRXLockStatus_t lock; /**< Lock status */ + u32_t mer; /**< MER */ + s32_t symbolRateOffset; /**< Symbolrate offset in ppm */ + } DRXOOBStatus_t, *pDRXOOBStatus_t; /*========================================*/ @@ -1138,10 +1249,12 @@ typedef struct { * Used by DRX_CTRL_SET_CFG and DRX_CTRL_GET_CFG. * A sort of nested DRX_Ctrl() functionality for device specific controls. */ -typedef struct { - DRXCfgType_t cfgType ; /**< Function identifier */ - void* cfgData ; /**< Function data */ -} DRXCfg_t, *pDRXCfg_t; + typedef struct { + DRXCfgType_t cfgType; + /**< Function identifier */ + void *cfgData; + /**< Function data */ + } DRXCfg_t, *pDRXCfg_t; /*========================================*/ @@ -1150,11 +1263,10 @@ typedef struct { * MStart width [nr MCLK cycles] for serial MPEG output. */ -typedef enum { - DRX_MPEG_STR_WIDTH_1, - DRX_MPEG_STR_WIDTH_8 -} DRXMPEGStrWidth_t, *pDRXMPEGStrWidth_t; - + typedef enum { + DRX_MPEG_STR_WIDTH_1, + DRX_MPEG_STR_WIDTH_8 + } DRXMPEGStrWidth_t, *pDRXMPEGStrWidth_t; /* CTRL CFG MPEG ouput */ /** @@ -1165,44 +1277,45 @@ typedef enum { * DRX_CTRL_GET_CFG. */ -typedef struct { - Bool_t enableMPEGOutput; /**< If TRUE, enable MPEG output */ - Bool_t insertRSByte; /**< If TRUE, insert RS byte */ - Bool_t enableParallel; /**< If TRUE, parallel out otherwise + typedef struct { + Bool_t enableMPEGOutput;/**< If TRUE, enable MPEG output */ + Bool_t insertRSByte; /**< If TRUE, insert RS byte */ + Bool_t enableParallel; /**< If TRUE, parallel out otherwise serial */ - Bool_t invertDATA; /**< If TRUE, invert DATA signals */ - Bool_t invertERR; /**< If TRUE, invert ERR signal */ - Bool_t invertSTR; /**< If TRUE, invert STR signals */ - Bool_t invertVAL; /**< If TRUE, invert VAL signals */ - Bool_t invertCLK; /**< If TRUE, invert CLK signals */ - Bool_t staticCLK; /**< If TRUE, static MPEG clockrate + Bool_t invertDATA; /**< If TRUE, invert DATA signals */ + Bool_t invertERR; /**< If TRUE, invert ERR signal */ + Bool_t invertSTR; /**< If TRUE, invert STR signals */ + Bool_t invertVAL; /**< If TRUE, invert VAL signals */ + Bool_t invertCLK; /**< If TRUE, invert CLK signals */ + Bool_t staticCLK; /**< If TRUE, static MPEG clockrate will be used, otherwise clockrate will adapt to the bitrate of the TS */ - u32_t bitrate; /**< Maximum bitrate in b/s in case + u32_t bitrate; /**< Maximum bitrate in b/s in case static clockrate is selected */ - DRXMPEGStrWidth_t widthSTR; /**< MPEG start width */ -} DRXCfgMPEGOutput_t, *pDRXCfgMPEGOutput_t; + DRXMPEGStrWidth_t widthSTR; + /**< MPEG start width */ + } DRXCfgMPEGOutput_t, *pDRXCfgMPEGOutput_t; /* CTRL CFG SMA */ /** * /struct DRXCfgSMAIO_t * smart antenna i/o. */ -typedef enum DRXCfgSMAIO_t { - DRX_SMA_OUTPUT = 0, - DRX_SMA_INPUT -} DRXCfgSMAIO_t, *pDRXCfgSMAIO_t; + typedef enum DRXCfgSMAIO_t { + DRX_SMA_OUTPUT = 0, + DRX_SMA_INPUT + } DRXCfgSMAIO_t, *pDRXCfgSMAIO_t; /** * /struct DRXCfgSMA_t * Set smart antenna. */ -typedef struct { - DRXCfgSMAIO_t io; - u16_t ctrlData; - Bool_t smartAntInverted; -} DRXCfgSMA_t, *pDRXCfgSMA_t; + typedef struct { + DRXCfgSMAIO_t io; + u16_t ctrlData; + Bool_t smartAntInverted; + } DRXCfgSMA_t, *pDRXCfgSMA_t; /*========================================*/ @@ -1214,15 +1327,17 @@ typedef struct { * If portNr is equal to primairy portNr BSPI2C will be used. * */ -typedef struct { - u16_t portNr; /**< I2C port number */ - pI2CDeviceAddr_t wDevAddr; /**< Write device address */ - u16_t wCount; /**< Size of write data in bytes */ - pu8_t wData; /**< Pointer to write data */ - pI2CDeviceAddr_t rDevAddr; /**< Read device address */ - u16_t rCount; /**< Size of data to read in bytes */ - pu8_t rData; /**< Pointer to read buffer */ -} DRXI2CData_t, *pDRXI2CData_t; + typedef struct { + u16_t portNr; /**< I2C port number */ + pI2CDeviceAddr_t wDevAddr; + /**< Write device address */ + u16_t wCount; /**< Size of write data in bytes */ + pu8_t wData; /**< Pointer to write data */ + pI2CDeviceAddr_t rDevAddr; + /**< Read device address */ + u16_t rCount; /**< Size of data to read in bytes */ + pu8_t rData; /**< Pointer to read buffer */ + } DRXI2CData_t, *pDRXI2CData_t; /*========================================*/ @@ -1232,50 +1347,59 @@ typedef struct { * * Used by DRX_CTRL_SET_AUD. */ -typedef enum { - DRX_AUD_STANDARD_BTSC, /**< set BTSC standard (USA) */ - DRX_AUD_STANDARD_A2, /**< set A2-Korea FM Stereo */ - DRX_AUD_STANDARD_EIAJ, /**< set to Japanese FM Stereo */ - DRX_AUD_STANDARD_FM_STEREO, /**< set to FM-Stereo Radio */ - DRX_AUD_STANDARD_M_MONO, /**< for 4.5 MHz mono detected */ - DRX_AUD_STANDARD_D_K_MONO, /**< for 6.5 MHz mono detected */ - DRX_AUD_STANDARD_BG_FM, /**< set BG_FM standard */ - DRX_AUD_STANDARD_D_K1, /**< set D_K1 standard */ - DRX_AUD_STANDARD_D_K2, /**< set D_K2 standard */ - DRX_AUD_STANDARD_D_K3, /**< set D_K3 standard */ - DRX_AUD_STANDARD_BG_NICAM_FM, /**< set BG_NICAM_FM standard */ - DRX_AUD_STANDARD_L_NICAM_AM, /**< set L_NICAM_AM standard */ - DRX_AUD_STANDARD_I_NICAM_FM, /**< set I_NICAM_FM standard */ - DRX_AUD_STANDARD_D_K_NICAM_FM, /**< set D_K_NICAM_FM standard */ - DRX_AUD_STANDARD_NOT_READY, /**< used to detect audio standard */ - DRX_AUD_STANDARD_AUTO = DRX_AUTO, /**< Automatic Standard Detection */ - DRX_AUD_STANDARD_UNKNOWN = DRX_UNKNOWN /**< used as auto and for readback */ -} DRXAudStandard_t, *pDRXAudStandard_t; + typedef enum { + DRX_AUD_STANDARD_BTSC, /**< set BTSC standard (USA) */ + DRX_AUD_STANDARD_A2, /**< set A2-Korea FM Stereo */ + DRX_AUD_STANDARD_EIAJ, /**< set to Japanese FM Stereo */ + DRX_AUD_STANDARD_FM_STEREO,/**< set to FM-Stereo Radio */ + DRX_AUD_STANDARD_M_MONO, /**< for 4.5 MHz mono detected */ + DRX_AUD_STANDARD_D_K_MONO, /**< for 6.5 MHz mono detected */ + DRX_AUD_STANDARD_BG_FM, /**< set BG_FM standard */ + DRX_AUD_STANDARD_D_K1, /**< set D_K1 standard */ + DRX_AUD_STANDARD_D_K2, /**< set D_K2 standard */ + DRX_AUD_STANDARD_D_K3, /**< set D_K3 standard */ + DRX_AUD_STANDARD_BG_NICAM_FM, + /**< set BG_NICAM_FM standard */ + DRX_AUD_STANDARD_L_NICAM_AM, + /**< set L_NICAM_AM standard */ + DRX_AUD_STANDARD_I_NICAM_FM, + /**< set I_NICAM_FM standard */ + DRX_AUD_STANDARD_D_K_NICAM_FM, + /**< set D_K_NICAM_FM standard */ + DRX_AUD_STANDARD_NOT_READY,/**< used to detect audio standard */ + DRX_AUD_STANDARD_AUTO = DRX_AUTO, + /**< Automatic Standard Detection */ + DRX_AUD_STANDARD_UNKNOWN = DRX_UNKNOWN + /**< used as auto and for readback */ + } DRXAudStandard_t, *pDRXAudStandard_t; /* CTRL_AUD_GET_STATUS - DRXAudStatus_t */ /** * \enum DRXAudNICAMStatus_t * \brief Status of NICAM carrier. */ -typedef enum { - DRX_AUD_NICAM_DETECTED = 0, /**< NICAM carrier detected */ - DRX_AUD_NICAM_NOT_DETECTED, /**< NICAM carrier not detected */ - DRX_AUD_NICAM_BAD /**< NICAM carrier bad quality */ -} DRXAudNICAMStatus_t, *pDRXAudNICAMStatus_t; + typedef enum { + DRX_AUD_NICAM_DETECTED = 0, + /**< NICAM carrier detected */ + DRX_AUD_NICAM_NOT_DETECTED, + /**< NICAM carrier not detected */ + DRX_AUD_NICAM_BAD /**< NICAM carrier bad quality */ + } DRXAudNICAMStatus_t, *pDRXAudNICAMStatus_t; /** * \struct DRXAudStatus_t * \brief Audio status characteristics. */ -typedef struct { - Bool_t stereo; /**< stereo detection */ - Bool_t carrierA; /**< carrier A detected */ - Bool_t carrierB; /**< carrier B detected */ - Bool_t sap; /**< sap / bilingual detection */ - Bool_t rds; /**< RDS data array present */ - DRXAudNICAMStatus_t nicamStatus; /**< status of NICAM carrier */ - s8_t fmIdent; /**< FM Identification value */ -} DRXAudStatus_t, *pDRXAudStatus_t; + typedef struct { + Bool_t stereo; /**< stereo detection */ + Bool_t carrierA; /**< carrier A detected */ + Bool_t carrierB; /**< carrier B detected */ + Bool_t sap; /**< sap / bilingual detection */ + Bool_t rds; /**< RDS data array present */ + DRXAudNICAMStatus_t nicamStatus; + /**< status of NICAM carrier */ + s8_t fmIdent; /**< FM Identification value */ + } DRXAudStatus_t, *pDRXAudStatus_t; /* CTRL_AUD_READ_RDS - DRXRDSdata_t */ @@ -1283,110 +1407,114 @@ typedef struct { * \struct DRXRDSdata_t * \brief Raw RDS data array. */ -typedef struct { - Bool_t valid; /**< RDS data validation */ - u16_t data[18]; /**< data from one RDS data array */ -} DRXCfgAudRDS_t, *pDRXCfgAudRDS_t; + typedef struct { + Bool_t valid; /**< RDS data validation */ + u16_t data[18]; /**< data from one RDS data array */ + } DRXCfgAudRDS_t, *pDRXCfgAudRDS_t; /* DRX_CFG_AUD_VOLUME - DRXCfgAudVolume_t - set/get */ /** * \enum DRXAudAVCDecayTime_t * \brief Automatic volume control configuration. */ -typedef enum { - DRX_AUD_AVC_OFF, /**< Automatic volume control off */ - DRX_AUD_AVC_DECAYTIME_8S, /**< level volume in 8 seconds */ - DRX_AUD_AVC_DECAYTIME_4S, /**< level volume in 4 seconds */ - DRX_AUD_AVC_DECAYTIME_2S, /**< level volume in 2 seconds */ - DRX_AUD_AVC_DECAYTIME_20MS /**< level volume in 20 millisec */ -} DRXAudAVCMode_t, *pDRXAudAVCMode_t; + typedef enum { + DRX_AUD_AVC_OFF, /**< Automatic volume control off */ + DRX_AUD_AVC_DECAYTIME_8S, /**< level volume in 8 seconds */ + DRX_AUD_AVC_DECAYTIME_4S, /**< level volume in 4 seconds */ + DRX_AUD_AVC_DECAYTIME_2S, /**< level volume in 2 seconds */ + DRX_AUD_AVC_DECAYTIME_20MS/**< level volume in 20 millisec */ + } DRXAudAVCMode_t, *pDRXAudAVCMode_t; /** * /enum DRXAudMaxAVCGain_t * /brief Automatic volume control max gain in audio baseband. */ -typedef enum { - DRX_AUD_AVC_MAX_GAIN_0DB, /**< maximum AVC gain 0 dB */ - DRX_AUD_AVC_MAX_GAIN_6DB, /**< maximum AVC gain 6 dB */ - DRX_AUD_AVC_MAX_GAIN_12DB /**< maximum AVC gain 12 dB */ -} DRXAudAVCMaxGain_t, *pDRXAudAVCMaxGain_t; + typedef enum { + DRX_AUD_AVC_MAX_GAIN_0DB, /**< maximum AVC gain 0 dB */ + DRX_AUD_AVC_MAX_GAIN_6DB, /**< maximum AVC gain 6 dB */ + DRX_AUD_AVC_MAX_GAIN_12DB /**< maximum AVC gain 12 dB */ + } DRXAudAVCMaxGain_t, *pDRXAudAVCMaxGain_t; /** * /enum DRXAudMaxAVCAtten_t * /brief Automatic volume control max attenuation in audio baseband. */ -typedef enum { - DRX_AUD_AVC_MAX_ATTEN_12DB, /**< maximum AVC attenuation 12 dB */ - DRX_AUD_AVC_MAX_ATTEN_18DB, /**< maximum AVC attenuation 18 dB */ - DRX_AUD_AVC_MAX_ATTEN_24DB /**< maximum AVC attenuation 24 dB */ -} DRXAudAVCMaxAtten_t, *pDRXAudAVCMaxAtten_t; + typedef enum { + DRX_AUD_AVC_MAX_ATTEN_12DB, + /**< maximum AVC attenuation 12 dB */ + DRX_AUD_AVC_MAX_ATTEN_18DB, + /**< maximum AVC attenuation 18 dB */ + DRX_AUD_AVC_MAX_ATTEN_24DB/**< maximum AVC attenuation 24 dB */ + } DRXAudAVCMaxAtten_t, *pDRXAudAVCMaxAtten_t; /** * \struct DRXCfgAudVolume_t * \brief Audio volume configuration. */ -typedef struct { - Bool_t mute; /**< mute overrides volume setting */ - s16_t volume; /**< volume, range -114 to 12 dB */ - DRXAudAVCMode_t avcMode; /**< AVC auto volume control mode */ - u16_t avcRefLevel; /**< AVC reference level */ - DRXAudAVCMaxGain_t avcMaxGain; /**< AVC max gain selection */ - DRXAudAVCMaxAtten_t avcMaxAtten; /**< AVC max attenuation selection */ - s16_t strengthLeft; /**< quasi-peak, left speaker */ - s16_t strengthRight; /**< quasi-peak, right speaker */ -} DRXCfgAudVolume_t, *pDRXCfgAudVolume_t; + typedef struct { + Bool_t mute; /**< mute overrides volume setting */ + s16_t volume; /**< volume, range -114 to 12 dB */ + DRXAudAVCMode_t avcMode; /**< AVC auto volume control mode */ + u16_t avcRefLevel; /**< AVC reference level */ + DRXAudAVCMaxGain_t avcMaxGain; + /**< AVC max gain selection */ + DRXAudAVCMaxAtten_t avcMaxAtten; + /**< AVC max attenuation selection */ + s16_t strengthLeft; /**< quasi-peak, left speaker */ + s16_t strengthRight; /**< quasi-peak, right speaker */ + } DRXCfgAudVolume_t, *pDRXCfgAudVolume_t; /* DRX_CFG_I2S_OUTPUT - DRXCfgI2SOutput_t - set/get */ /** * \enum DRXI2SMode_t * \brief I2S output mode. */ -typedef enum { - DRX_I2S_MODE_MASTER, /**< I2S is in master mode */ - DRX_I2S_MODE_SLAVE /**< I2S is in slave mode */ -} DRXI2SMode_t, *pDRXI2SMode_t; + typedef enum { + DRX_I2S_MODE_MASTER, /**< I2S is in master mode */ + DRX_I2S_MODE_SLAVE /**< I2S is in slave mode */ + } DRXI2SMode_t, *pDRXI2SMode_t; /** * \enum DRXI2SWordLength_t * \brief Width of I2S data. */ -typedef enum { - DRX_I2S_WORDLENGTH_32 = 0, /**< I2S data is 32 bit wide */ - DRX_I2S_WORDLENGTH_16 = 1 /**< I2S data is 16 bit wide */ -} DRXI2SWordLength_t, *pDRXI2SWordLength_t; + typedef enum { + DRX_I2S_WORDLENGTH_32 = 0,/**< I2S data is 32 bit wide */ + DRX_I2S_WORDLENGTH_16 = 1 /**< I2S data is 16 bit wide */ + } DRXI2SWordLength_t, *pDRXI2SWordLength_t; /** * \enum DRXI2SFormat_t * \brief Data wordstrobe alignment for I2S. */ -typedef enum { - DRX_I2S_FORMAT_WS_WITH_DATA, /**< I2S data and wordstrobe are aligned */ - DRX_I2S_FORMAT_WS_ADVANCED /**< I2S data one cycle after wordstrobe */ -} DRXI2SFormat_t, *pDRXI2SFormat_t; + typedef enum { + DRX_I2S_FORMAT_WS_WITH_DATA, + /**< I2S data and wordstrobe are aligned */ + DRX_I2S_FORMAT_WS_ADVANCED + /**< I2S data one cycle after wordstrobe */ + } DRXI2SFormat_t, *pDRXI2SFormat_t; /** * \enum DRXI2SPolarity_t * \brief Polarity of I2S data. */ -typedef enum { - DRX_I2S_POLARITY_RIGHT, /**< wordstrobe - right high, left low */ - DRX_I2S_POLARITY_LEFT /**< wordstrobe - right low, left high */ -} DRXI2SPolarity_t, *pDRXI2SPolarity_t; - - + typedef enum { + DRX_I2S_POLARITY_RIGHT,/**< wordstrobe - right high, left low */ + DRX_I2S_POLARITY_LEFT /**< wordstrobe - right low, left high */ + } DRXI2SPolarity_t, *pDRXI2SPolarity_t; /** * \struct DRXCfgI2SOutput_t * \brief I2S output configuration. */ -typedef struct { - Bool_t outputEnable; /**< I2S output enable */ - u32_t frequency; /**< range from 8000-48000 Hz */ - DRXI2SMode_t mode; /**< I2S mode, master or slave */ - DRXI2SWordLength_t wordLength; /**< I2S wordlength, 16 or 32 bits */ - DRXI2SPolarity_t polarity; /**< I2S wordstrobe polarity */ - DRXI2SFormat_t format; /**< I2S wordstrobe delay to data */ -} DRXCfgI2SOutput_t, *pDRXCfgI2SOutput_t; - + typedef struct { + Bool_t outputEnable; /**< I2S output enable */ + u32_t frequency; /**< range from 8000-48000 Hz */ + DRXI2SMode_t mode; /**< I2S mode, master or slave */ + DRXI2SWordLength_t wordLength; + /**< I2S wordlength, 16 or 32 bits */ + DRXI2SPolarity_t polarity;/**< I2S wordstrobe polarity */ + DRXI2SFormat_t format; /**< I2S wordstrobe delay to data */ + } DRXCfgI2SOutput_t, *pDRXCfgI2SOutput_t; /* ------------------------------expert interface-----------------------------*/ /** @@ -1394,119 +1522,119 @@ typedef struct { * setting for FM-Deemphasis in audio demodulator. * */ -typedef enum { - DRX_AUD_FM_DEEMPH_50US, - DRX_AUD_FM_DEEMPH_75US, - DRX_AUD_FM_DEEMPH_OFF -} DRXAudFMDeemphasis_t, *pDRXAudFMDeemphasis_t; + typedef enum { + DRX_AUD_FM_DEEMPH_50US, + DRX_AUD_FM_DEEMPH_75US, + DRX_AUD_FM_DEEMPH_OFF + } DRXAudFMDeemphasis_t, *pDRXAudFMDeemphasis_t; /** * /enum DRXAudDeviation_t * setting for deviation mode in audio demodulator. * */ -typedef enum { - DRX_AUD_DEVIATION_NORMAL, - DRX_AUD_DEVIATION_HIGH -} DRXCfgAudDeviation_t, *pDRXCfgAudDeviation_t; + typedef enum { + DRX_AUD_DEVIATION_NORMAL, + DRX_AUD_DEVIATION_HIGH + } DRXCfgAudDeviation_t, *pDRXCfgAudDeviation_t; /** * /enum DRXNoCarrierOption_t * setting for carrier, mute/noise. * */ -typedef enum { - DRX_NO_CARRIER_MUTE, - DRX_NO_CARRIER_NOISE -} DRXNoCarrierOption_t, *pDRXNoCarrierOption_t; - + typedef enum { + DRX_NO_CARRIER_MUTE, + DRX_NO_CARRIER_NOISE + } DRXNoCarrierOption_t, *pDRXNoCarrierOption_t; /** * \enum DRXAudAutoSound_t * \brief Automatic Sound */ -typedef enum { - DRX_AUD_AUTO_SOUND_OFF = 0, - DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON, - DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_OFF -} DRXCfgAudAutoSound_t, *pDRXCfgAudAutoSound_t; + typedef enum { + DRX_AUD_AUTO_SOUND_OFF = 0, + DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON, + DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_OFF + } DRXCfgAudAutoSound_t, *pDRXCfgAudAutoSound_t; /** * \enum DRXAudASSThres_t * \brief Automatic Sound Select Thresholds */ -typedef struct { - u16_t a2; /* A2 Threshold for ASS configuration */ - u16_t btsc; /* BTSC Threshold for ASS configuration */ - u16_t nicam; /* Nicam Threshold for ASS configuration */ -} DRXCfgAudASSThres_t, *pDRXCfgAudASSThres_t; + typedef struct { + u16_t a2; /* A2 Threshold for ASS configuration */ + u16_t btsc; /* BTSC Threshold for ASS configuration */ + u16_t nicam; /* Nicam Threshold for ASS configuration */ + } DRXCfgAudASSThres_t, *pDRXCfgAudASSThres_t; /** * \struct DRXAudCarrier_t * \brief Carrier detection related parameters */ -typedef struct { - u16_t thres; /* carrier detetcion threshold for primary carrier (A) */ - DRXNoCarrierOption_t opt; /* Mute or noise at no carrier detection (A) */ - DRXFrequency_t shift; /* DC level of incoming signal (A) */ - DRXFrequency_t dco; /* frequency adjustment (A) */ -} DRXAudCarrier_t, *pDRXCfgAudCarrier_t; + typedef struct { + u16_t thres; /* carrier detetcion threshold for primary carrier (A) */ + DRXNoCarrierOption_t opt; /* Mute or noise at no carrier detection (A) */ + DRXFrequency_t shift; /* DC level of incoming signal (A) */ + DRXFrequency_t dco; /* frequency adjustment (A) */ + } DRXAudCarrier_t, *pDRXCfgAudCarrier_t; /** * \struct DRXCfgAudCarriers_t * \brief combining carrier A & B to one struct */ -typedef struct { - DRXAudCarrier_t a; - DRXAudCarrier_t b; -} DRXCfgAudCarriers_t, *pDRXCfgAudCarriers_t; + typedef struct { + DRXAudCarrier_t a; + DRXAudCarrier_t b; + } DRXCfgAudCarriers_t, *pDRXCfgAudCarriers_t; /** * /enum DRXAudI2SSrc_t * Selection of audio source */ -typedef enum { - DRX_AUD_SRC_MONO, - DRX_AUD_SRC_STEREO_OR_AB, - DRX_AUD_SRC_STEREO_OR_A, - DRX_AUD_SRC_STEREO_OR_B -} DRXAudI2SSrc_t, *pDRXAudI2SSrc_t; - + typedef enum { + DRX_AUD_SRC_MONO, + DRX_AUD_SRC_STEREO_OR_AB, + DRX_AUD_SRC_STEREO_OR_A, + DRX_AUD_SRC_STEREO_OR_B + } DRXAudI2SSrc_t, *pDRXAudI2SSrc_t; /** * \enum DRXAudI2SMatrix_t * \brief Used for selecting I2S output. */ -typedef enum { - DRX_AUD_I2S_MATRIX_A_MONO, /**< A sound only, stereo or mono */ - DRX_AUD_I2S_MATRIX_B_MONO, /**< B sound only, stereo or mono */ - DRX_AUD_I2S_MATRIX_STEREO, /**< A+B sound, transparant */ - DRX_AUD_I2S_MATRIX_MONO /**< A+B mixed to mono sum, (L+R)/2 */ -} DRXAudI2SMatrix_t, *pDRXAudI2SMatrix_t; - + typedef enum { + DRX_AUD_I2S_MATRIX_A_MONO, + /**< A sound only, stereo or mono */ + DRX_AUD_I2S_MATRIX_B_MONO, + /**< B sound only, stereo or mono */ + DRX_AUD_I2S_MATRIX_STEREO, + /**< A+B sound, transparant */ + DRX_AUD_I2S_MATRIX_MONO /**< A+B mixed to mono sum, (L+R)/2 */ + } DRXAudI2SMatrix_t, *pDRXAudI2SMatrix_t; /** * /enum DRXAudFMMatrix_t * setting for FM-Matrix in audio demodulator. * */ -typedef enum { - DRX_AUD_FM_MATRIX_NO_MATRIX, - DRX_AUD_FM_MATRIX_GERMAN, - DRX_AUD_FM_MATRIX_KOREAN, - DRX_AUD_FM_MATRIX_SOUND_A, - DRX_AUD_FM_MATRIX_SOUND_B -} DRXAudFMMatrix_t, *pDRXAudFMMatrix_t; + typedef enum { + DRX_AUD_FM_MATRIX_NO_MATRIX, + DRX_AUD_FM_MATRIX_GERMAN, + DRX_AUD_FM_MATRIX_KOREAN, + DRX_AUD_FM_MATRIX_SOUND_A, + DRX_AUD_FM_MATRIX_SOUND_B + } DRXAudFMMatrix_t, *pDRXAudFMMatrix_t; /** * \struct DRXAudMatrices_t * \brief Mixer settings */ -typedef struct { - DRXAudI2SSrc_t sourceI2S; - DRXAudI2SMatrix_t matrixI2S; - DRXAudFMMatrix_t matrixFm; -} DRXCfgAudMixer_t, *pDRXCfgAudMixer_t; + typedef struct { + DRXAudI2SSrc_t sourceI2S; + DRXAudI2SMatrix_t matrixI2S; + DRXAudFMMatrix_t matrixFm; + } DRXCfgAudMixer_t, *pDRXCfgAudMixer_t; /** * \enum DRXI2SVidSync_t @@ -1514,77 +1642,76 @@ typedef struct { * AUTO_1 and AUTO_2 are for automatic video standard detection with preference * for NTSC or Monochrome, because the frequencies are too close (59.94 & 60 Hz) */ -typedef enum { - DRX_AUD_AVSYNC_OFF, /**< audio/video synchronization is off */ - DRX_AUD_AVSYNC_NTSC, /**< it is an NTSC system */ - DRX_AUD_AVSYNC_MONOCHROME, /**< it is a MONOCHROME system */ - DRX_AUD_AVSYNC_PAL_SECAM /**< it is a PAL/SECAM system */ -} DRXCfgAudAVSync_t, *pDRXCfgAudAVSync_t; + typedef enum { + DRX_AUD_AVSYNC_OFF,/**< audio/video synchronization is off */ + DRX_AUD_AVSYNC_NTSC, + /**< it is an NTSC system */ + DRX_AUD_AVSYNC_MONOCHROME, + /**< it is a MONOCHROME system */ + DRX_AUD_AVSYNC_PAL_SECAM + /**< it is a PAL/SECAM system */ + } DRXCfgAudAVSync_t, *pDRXCfgAudAVSync_t; /** * \struct DRXCfgAudPrescale_t * \brief Prescalers */ -typedef struct { - u16_t fmDeviation; - s16_t nicamGain; -} DRXCfgAudPrescale_t, *pDRXCfgAudPrescale_t; + typedef struct { + u16_t fmDeviation; + s16_t nicamGain; + } DRXCfgAudPrescale_t, *pDRXCfgAudPrescale_t; /** * \struct DRXAudBeep_t * \brief Beep */ -typedef struct { - s16_t volume; /* dB */ - u16_t frequency; /* Hz */ - Bool_t mute; -} DRXAudBeep_t, *pDRXAudBeep_t; - + typedef struct { + s16_t volume; /* dB */ + u16_t frequency; /* Hz */ + Bool_t mute; + } DRXAudBeep_t, *pDRXAudBeep_t; /** * \enum DRXAudBtscDetect_t * \brief BTSC detetcion mode */ -typedef enum { - DRX_BTSC_STEREO, - DRX_BTSC_MONO_AND_SAP -} DRXAudBtscDetect_t, *pDRXAudBtscDetect_t; + typedef enum { + DRX_BTSC_STEREO, + DRX_BTSC_MONO_AND_SAP + } DRXAudBtscDetect_t, *pDRXAudBtscDetect_t; /** * \struct DRXAudData_t * \brief Audio data structure */ -typedef struct -{ - /* audio storage */ - Bool_t audioIsActive; - DRXAudStandard_t audioStandard; - DRXCfgI2SOutput_t i2sdata; - DRXCfgAudVolume_t volume; - DRXCfgAudAutoSound_t autoSound; - DRXCfgAudASSThres_t assThresholds; - DRXCfgAudCarriers_t carriers; - DRXCfgAudMixer_t mixer; - DRXCfgAudDeviation_t deviation; - DRXCfgAudAVSync_t avSync; - DRXCfgAudPrescale_t prescale; - DRXAudFMDeemphasis_t deemph; - DRXAudBtscDetect_t btscDetect; - /* rds */ - u16_t rdsDataCounter; - Bool_t rdsDataPresent; -} DRXAudData_t, *pDRXAudData_t; - + typedef struct { + /* audio storage */ + Bool_t audioIsActive; + DRXAudStandard_t audioStandard; + DRXCfgI2SOutput_t i2sdata; + DRXCfgAudVolume_t volume; + DRXCfgAudAutoSound_t autoSound; + DRXCfgAudASSThres_t assThresholds; + DRXCfgAudCarriers_t carriers; + DRXCfgAudMixer_t mixer; + DRXCfgAudDeviation_t deviation; + DRXCfgAudAVSync_t avSync; + DRXCfgAudPrescale_t prescale; + DRXAudFMDeemphasis_t deemph; + DRXAudBtscDetect_t btscDetect; + /* rds */ + u16_t rdsDataCounter; + Bool_t rdsDataPresent; + } DRXAudData_t, *pDRXAudData_t; /** * \enum DRXQamLockRange_t * \brief QAM lock range mode */ -typedef enum -{ - DRX_QAM_LOCKRANGE_NORMAL, - DRX_QAM_LOCKRANGE_EXTENDED -}DRXQamLockRange_t, *pDRXQamLockRange_t; + typedef enum { + DRX_QAM_LOCKRANGE_NORMAL, + DRX_QAM_LOCKRANGE_EXTENDED + } DRXQamLockRange_t, *pDRXQamLockRange_t; /*============================================================================*/ /*============================================================================*/ @@ -1593,119 +1720,108 @@ typedef enum /*============================================================================*/ /* Address on device */ -typedef u32_t DRXaddr_t, *pDRXaddr_t; + typedef u32_t DRXaddr_t, *pDRXaddr_t; /* Protocol specific flags */ -typedef u32_t DRXflags_t, *pDRXflags_t; + typedef u32_t DRXflags_t, *pDRXflags_t; /* Write block of data to device */ -typedef DRXStatus_t (*DRXWriteBlockFunc_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u16_t datasize, /* size of data in bytes */ - pu8_t data, /* data to send */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXWriteBlockFunc_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u16_t datasize, /* size of data in bytes */ + pu8_t data, /* data to send */ + DRXflags_t flags); /* Read block of data from device */ -typedef DRXStatus_t (*DRXReadBlockFunc_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u16_t datasize, /* size of data in bytes */ - pu8_t data, /* receive buffer */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXReadBlockFunc_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u16_t datasize, /* size of data in bytes */ + pu8_t data, /* receive buffer */ + DRXflags_t flags); /* Write 8-bits value to device */ -typedef DRXStatus_t (*DRXWriteReg8Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u8_t data, /* data to send */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXWriteReg8Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u8_t data, /* data to send */ + DRXflags_t flags); /* Read 8-bits value to device */ -typedef DRXStatus_t (*DRXReadReg8Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - pu8_t data, /* receive buffer */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXReadReg8Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + pu8_t data, /* receive buffer */ + DRXflags_t flags); /* Read modify write 8-bits value to device */ -typedef DRXStatus_t (*DRXReadModifyWriteReg8Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* write address of register */ - DRXaddr_t raddr, /* read address of register */ - u8_t wdata, /* data to write */ - pu8_t rdata); /* data to read */ + typedef DRXStatus_t(*DRXReadModifyWriteReg8Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* write address of register */ + DRXaddr_t raddr, /* read address of register */ + u8_t wdata, /* data to write */ + pu8_t rdata); /* data to read */ /* Write 16-bits value to device */ -typedef DRXStatus_t (*DRXWriteReg16Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u16_t data, /* data to send */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXWriteReg16Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u16_t data, /* data to send */ + DRXflags_t flags); /* Read 16-bits value to device */ -typedef DRXStatus_t (*DRXReadReg16Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - pu16_t data, /* receive buffer */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXReadReg16Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + pu16_t data, /* receive buffer */ + DRXflags_t flags); /* Read modify write 16-bits value to device */ -typedef DRXStatus_t (*DRXReadModifyWriteReg16Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* write address of register */ - DRXaddr_t raddr, /* read address of register */ - u16_t wdata, /* data to write */ - pu16_t rdata); /* data to read */ + typedef DRXStatus_t(*DRXReadModifyWriteReg16Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* write address of register */ + DRXaddr_t raddr, /* read address of register */ + u16_t wdata, /* data to write */ + pu16_t rdata); /* data to read */ /* Write 32-bits value to device */ -typedef DRXStatus_t (*DRXWriteReg32Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - u32_t data, /* data to send */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXWriteReg32Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + u32_t data, /* data to send */ + DRXflags_t flags); /* Read 32-bits value to device */ -typedef DRXStatus_t (*DRXReadReg32Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t addr, /* address of register/memory */ - pu32_t data, /* receive buffer */ - DRXflags_t flags); + typedef DRXStatus_t(*DRXReadReg32Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t addr, /* address of register/memory */ + pu32_t data, /* receive buffer */ + DRXflags_t flags); /* Read modify write 32-bits value to device */ -typedef DRXStatus_t (*DRXReadModifyWriteReg32Func_t) ( - pI2CDeviceAddr_t devAddr, /* address of I2C device */ - DRXaddr_t waddr, /* write address of register */ - DRXaddr_t raddr, /* read address of register */ - u32_t wdata, /* data to write */ - pu32_t rdata); /* data to read */ + typedef DRXStatus_t(*DRXReadModifyWriteReg32Func_t) (pI2CDeviceAddr_t devAddr, /* address of I2C device */ + DRXaddr_t waddr, /* write address of register */ + DRXaddr_t raddr, /* read address of register */ + u32_t wdata, /* data to write */ + pu32_t rdata); /* data to read */ /** * \struct DRXAccessFunc_t * \brief Interface to an access protocol. */ -typedef struct { - pDRXVersion_t protocolVersion; - DRXWriteBlockFunc_t writeBlockFunc; - DRXReadBlockFunc_t readBlockFunc; - DRXWriteReg8Func_t writeReg8Func; - DRXReadReg8Func_t readReg8Func; - DRXReadModifyWriteReg8Func_t readModifyWriteReg8Func; - DRXWriteReg16Func_t writeReg16Func; - DRXReadReg16Func_t readReg16Func; - DRXReadModifyWriteReg16Func_t readModifyWriteReg16Func; - DRXWriteReg32Func_t writeReg32Func; - DRXReadReg32Func_t readReg32Func; - DRXReadModifyWriteReg32Func_t readModifyWriteReg32Func; -} DRXAccessFunc_t, *pDRXAccessFunc_t; + typedef struct { + pDRXVersion_t protocolVersion; + DRXWriteBlockFunc_t writeBlockFunc; + DRXReadBlockFunc_t readBlockFunc; + DRXWriteReg8Func_t writeReg8Func; + DRXReadReg8Func_t readReg8Func; + DRXReadModifyWriteReg8Func_t readModifyWriteReg8Func; + DRXWriteReg16Func_t writeReg16Func; + DRXReadReg16Func_t readReg16Func; + DRXReadModifyWriteReg16Func_t readModifyWriteReg16Func; + DRXWriteReg32Func_t writeReg32Func; + DRXReadReg32Func_t readReg32Func; + DRXReadModifyWriteReg32Func_t readModifyWriteReg32Func; + } DRXAccessFunc_t, *pDRXAccessFunc_t; /* Register address and data for register dump function */ -typedef struct { + typedef struct { - DRXaddr_t address; - u32_t data; + DRXaddr_t address; + u32_t data; -} DRXRegDump_t, *pDRXRegDump_t ; + } DRXRegDump_t, *pDRXRegDump_t; /*============================================================================*/ /*============================================================================*/ @@ -1717,103 +1833,128 @@ typedef struct { * \struct DRXCommonAttr_t * \brief Set of common attributes, shared by all DRX devices. */ -typedef struct { - /* Microcode (firmware) attributes */ - pu8_t microcode; /**< Pointer to microcode image. */ - u16_t microcodeSize; /**< Size of microcode image in bytes. */ - Bool_t verifyMicrocode; /**< Use microcode verify or not. */ - DRXMcVersionRec_t mcversion; /**< Version record of microcode from file */ - - /* Clocks and tuner attributes */ - DRXFrequency_t intermediateFreq; /**< IF,if tuner instance not used. (kHz)*/ - DRXFrequency_t sysClockFreq; /**< Systemclock frequency. (kHz) */ - DRXFrequency_t oscClockFreq; /**< Oscillator clock frequency. (kHz) */ - s16_t oscClockDeviation; /**< Oscillator clock deviation. (ppm) */ - Bool_t mirrorFreqSpect; /**< Mirror IF frequency spectrum or not.*/ - - /* Initial MPEG output attributes */ - DRXCfgMPEGOutput_t mpegCfg; /**< MPEG configuration */ - - Bool_t isOpened; /**< if TRUE instance is already opened. */ - - /* Channel scan */ - pDRXScanParam_t scanParam; /**< scan parameters */ - u16_t scanFreqPlanIndex; /**< next index in freq plan */ - DRXFrequency_t scanNextFrequency; /**< next freq to scan */ - Bool_t scanReady; /**< scan ready flag */ - u32_t scanMaxChannels; /**< number of channels in freqplan */ - u32_t scanChannelsScanned; /**< number of channels scanned */ - /* Channel scan - inner loop: demod related */ - DRXScanFunc_t scanFunction; /**< function to check channel */ - /* Channel scan - inner loop: SYSObj related */ - void* scanContext; /**< Context Pointer of SYSObj */ - /* Channel scan - parameters for default DTV scan function in core driver */ - u16_t scanDemodLockTimeout; /**< millisecs to wait for lock */ - DRXLockStatus_t scanDesiredLock; /**< lock requirement for channel found */ - /* scanActive can be used by SetChannel to decide how to program the tuner, - fast or slow (but stable). Usually fast during scan. */ - Bool_t scanActive; /**< TRUE when scan routines are active */ - - /* Power management */ - DRXPowerMode_t currentPowerMode; /**< current power management mode */ - - /* Tuner */ - u8_t tunerPortNr; /**< nr of I2C port to wich tuner is */ - DRXFrequency_t tunerMinFreqRF; /**< minimum RF input frequency, in kHz */ - DRXFrequency_t tunerMaxFreqRF; /**< maximum RF input frequency, in kHz */ - Bool_t tunerRfAgcPol; /**< if TRUE invert RF AGC polarity */ - Bool_t tunerIfAgcPol; /**< if TRUE invert IF AGC polarity */ - Bool_t tunerSlowMode; /**< if TRUE invert IF AGC polarity */ - - DRXChannel_t currentChannel; /**< current channel parameters */ - DRXStandard_t currentStandard; /**< current standard selection */ - DRXStandard_t prevStandard; /**< previous standard selection */ - DRXStandard_t diCacheStandard; /**< standard in DI cache if available */ - Bool_t useBootloader; /**< use bootloader in open */ - u32_t capabilities; /**< capabilities flags */ - u32_t productId; /**< product ID inc. metal fix number */ - -} DRXCommonAttr_t, *pDRXCommonAttr_t; - + typedef struct { + /* Microcode (firmware) attributes */ + pu8_t microcode; /**< Pointer to microcode image. */ + u16_t microcodeSize; + /**< Size of microcode image in bytes. */ + Bool_t verifyMicrocode; + /**< Use microcode verify or not. */ + DRXMcVersionRec_t mcversion; + /**< Version record of microcode from file */ + + /* Clocks and tuner attributes */ + DRXFrequency_t intermediateFreq; + /**< IF,if tuner instance not used. (kHz)*/ + DRXFrequency_t sysClockFreq; + /**< Systemclock frequency. (kHz) */ + DRXFrequency_t oscClockFreq; + /**< Oscillator clock frequency. (kHz) */ + s16_t oscClockDeviation; + /**< Oscillator clock deviation. (ppm) */ + Bool_t mirrorFreqSpect; + /**< Mirror IF frequency spectrum or not.*/ + + /* Initial MPEG output attributes */ + DRXCfgMPEGOutput_t mpegCfg; + /**< MPEG configuration */ + + Bool_t isOpened; /**< if TRUE instance is already opened. */ + + /* Channel scan */ + pDRXScanParam_t scanParam; + /**< scan parameters */ + u16_t scanFreqPlanIndex; + /**< next index in freq plan */ + DRXFrequency_t scanNextFrequency; + /**< next freq to scan */ + Bool_t scanReady; /**< scan ready flag */ + u32_t scanMaxChannels;/**< number of channels in freqplan */ + u32_t scanChannelsScanned; + /**< number of channels scanned */ + /* Channel scan - inner loop: demod related */ + DRXScanFunc_t scanFunction; + /**< function to check channel */ + /* Channel scan - inner loop: SYSObj related */ + void *scanContext; /**< Context Pointer of SYSObj */ + /* Channel scan - parameters for default DTV scan function in core driver */ + u16_t scanDemodLockTimeout; + /**< millisecs to wait for lock */ + DRXLockStatus_t scanDesiredLock; + /**< lock requirement for channel found */ + /* scanActive can be used by SetChannel to decide how to program the tuner, + fast or slow (but stable). Usually fast during scan. */ + Bool_t scanActive; /**< TRUE when scan routines are active */ + + /* Power management */ + DRXPowerMode_t currentPowerMode; + /**< current power management mode */ + + /* Tuner */ + u8_t tunerPortNr; /**< nr of I2C port to wich tuner is */ + DRXFrequency_t tunerMinFreqRF; + /**< minimum RF input frequency, in kHz */ + DRXFrequency_t tunerMaxFreqRF; + /**< maximum RF input frequency, in kHz */ + Bool_t tunerRfAgcPol; /**< if TRUE invert RF AGC polarity */ + Bool_t tunerIfAgcPol; /**< if TRUE invert IF AGC polarity */ + Bool_t tunerSlowMode; /**< if TRUE invert IF AGC polarity */ + + DRXChannel_t currentChannel; + /**< current channel parameters */ + DRXStandard_t currentStandard; + /**< current standard selection */ + DRXStandard_t prevStandard; + /**< previous standard selection */ + DRXStandard_t diCacheStandard; + /**< standard in DI cache if available */ + Bool_t useBootloader; /**< use bootloader in open */ + u32_t capabilities; /**< capabilities flags */ + u32_t productId; /**< product ID inc. metal fix number */ + + } DRXCommonAttr_t, *pDRXCommonAttr_t; /* * Generic functions for DRX devices. */ -typedef struct DRXDemodInstance_s *pDRXDemodInstance_t; + typedef struct DRXDemodInstance_s *pDRXDemodInstance_t; -typedef DRXStatus_t (*DRXOpenFunc_t) (pDRXDemodInstance_t demod); -typedef DRXStatus_t (*DRXCloseFunc_t) (pDRXDemodInstance_t demod); -typedef DRXStatus_t (*DRXCtrlFunc_t) (pDRXDemodInstance_t demod, - DRXCtrlIndex_t ctrl, - void *ctrlData); + typedef DRXStatus_t(*DRXOpenFunc_t) (pDRXDemodInstance_t demod); + typedef DRXStatus_t(*DRXCloseFunc_t) (pDRXDemodInstance_t demod); + typedef DRXStatus_t(*DRXCtrlFunc_t) (pDRXDemodInstance_t demod, + DRXCtrlIndex_t ctrl, + void *ctrlData); /** * \struct DRXDemodFunc_t * \brief A stucture containing all functions of a demodulator. */ -typedef struct { - u32_t typeId; /**< Device type identifier. */ - DRXOpenFunc_t openFunc; /**< Pointer to Open() function. */ - DRXCloseFunc_t closeFunc; /**< Pointer to Close() function. */ - DRXCtrlFunc_t ctrlFunc; /**< Pointer to Ctrl() function. */ -} DRXDemodFunc_t, *pDRXDemodFunc_t; + typedef struct { + u32_t typeId; /**< Device type identifier. */ + DRXOpenFunc_t openFunc; /**< Pointer to Open() function. */ + DRXCloseFunc_t closeFunc;/**< Pointer to Close() function. */ + DRXCtrlFunc_t ctrlFunc; /**< Pointer to Ctrl() function. */ + } DRXDemodFunc_t, *pDRXDemodFunc_t; /** * \struct DRXDemodInstance_t * \brief Top structure of demodulator instance. */ -typedef struct DRXDemodInstance_s { - /* type specific demodulator data */ - pDRXDemodFunc_t myDemodFunct; /**< demodulator functions */ - pDRXAccessFunc_t myAccessFunct; /**< data access protocol functions */ - pTUNERInstance_t myTuner; /**< tuner instance,if NULL then baseband */ - pI2CDeviceAddr_t myI2CDevAddr; /**< i2c address and device identifier */ - pDRXCommonAttr_t myCommonAttr; /**< common DRX attributes */ - void* myExtAttr; /**< device specific attributes */ - /* generic demodulator data */ -} DRXDemodInstance_t; - - + typedef struct DRXDemodInstance_s { + /* type specific demodulator data */ + pDRXDemodFunc_t myDemodFunct; + /**< demodulator functions */ + pDRXAccessFunc_t myAccessFunct; + /**< data access protocol functions */ + pTUNERInstance_t myTuner; + /**< tuner instance,if NULL then baseband */ + pI2CDeviceAddr_t myI2CDevAddr; + /**< i2c address and device identifier */ + pDRXCommonAttr_t myCommonAttr; + /**< common DRX attributes */ + void *myExtAttr; /**< device specific attributes */ + /* generic demodulator data */ + } DRXDemodInstance_t; /*------------------------------------------------------------------------- MACROS @@ -2097,7 +2238,6 @@ Conversion from enum values to human readable form. Access macros -------------------------------------------------------------------------*/ - /** * \brief Create a compilable reference to the microcode attribute * \param d pointer to demod instance @@ -2494,7 +2634,6 @@ Access macros } \ } while ( 0 ) - /* Configuration functions for usage by Access (XS) Macros */ #ifndef DRX_XS_CFG_BASE @@ -2522,7 +2661,6 @@ Access macros #define DRX_GET_QAM_LOCKRANGE( d, x ) DRX_ACCESSMACRO_GET( (d), (x), \ DRX_XS_CFG_QAM_LOCKRANGE, DRXQamLockRange_t, DRX_UNKNOWN ) - /** * \brief Macro to check if std is an ATV standard * \retval TRUE std is an ATV standard @@ -2560,24 +2698,20 @@ Access macros */ #define DRX_ISDVBTSTD( std ) ( (std) == DRX_STANDARD_DVBT ) - - - /*------------------------------------------------------------------------- Exported FUNCTIONS -------------------------------------------------------------------------*/ -DRXStatus_t DRX_Init( pDRXDemodInstance_t demods[] ); + DRXStatus_t DRX_Init(pDRXDemodInstance_t demods[]); -DRXStatus_t DRX_Term( void ); + DRXStatus_t DRX_Term(void); -DRXStatus_t DRX_Open(pDRXDemodInstance_t demod); + DRXStatus_t DRX_Open(pDRXDemodInstance_t demod); -DRXStatus_t DRX_Close(pDRXDemodInstance_t demod); + DRXStatus_t DRX_Close(pDRXDemodInstance_t demod); -DRXStatus_t DRX_Ctrl(pDRXDemodInstance_t demod, - DRXCtrlIndex_t ctrl, - void *ctrlData); + DRXStatus_t DRX_Ctrl(pDRXDemodInstance_t demod, + DRXCtrlIndex_t ctrl, void *ctrlData); /*------------------------------------------------------------------------- THE END @@ -2585,4 +2719,4 @@ THE END #ifdef __cplusplus } #endif -#endif /* __DRXDRIVER_H__ */ +#endif /* __DRXDRIVER_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drx_driver_version.h b/drivers/media/dvb-frontends/drx39xyj/drx_driver_version.h index fd2b2780f8c4..dda9398f43a5 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drx_driver_version.h +++ b/drivers/media/dvb-frontends/drx39xyj/drx_driver_version.h @@ -53,10 +53,9 @@ extern "C" { #ifdef _REGISTERTABLE_ #include <registertable.h> -extern RegisterTable_t drx_driver_version[]; -extern RegisterTableInfo_t drx_driver_version_info[]; -#endif /* _REGISTERTABLE_ */ - + extern RegisterTable_t drx_driver_version[]; + extern RegisterTableInfo_t drx_driver_version_info[]; +#endif /* _REGISTERTABLE_ */ /* *============================================================================== @@ -73,9 +72,7 @@ extern RegisterTableInfo_t drx_driver_version_info[]; #ifdef __cplusplus } #endif - -#endif /* __DRX_DRIVER_VERSION__H__ */ - +#endif /* __DRX_DRIVER_VERSION__H__ */ /* * End of file (drx_driver_version.h) ******************************************************************************* diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.c b/drivers/media/dvb-frontends/drx39xyj/drxj.c index b4c70ac4029f..ddfde425e049 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj.c +++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c @@ -47,7 +47,6 @@ INCLUDE FILES #include "drxj_options.h" #endif - /*============================================================================*/ /*=== DEFINES ================================================================*/ /*============================================================================*/ @@ -280,30 +279,30 @@ DEFINES * \brief SCU */ #define DRX_SCU_READY 0 -#define DRXJ_MAX_WAITTIME 100 /* ms */ -#define FEC_RS_MEASUREMENT_PERIOD 12894 /* 1 sec */ -#define FEC_RS_MEASUREMENT_PRESCALE 1 /* n sec */ +#define DRXJ_MAX_WAITTIME 100 /* ms */ +#define FEC_RS_MEASUREMENT_PERIOD 12894 /* 1 sec */ +#define FEC_RS_MEASUREMENT_PRESCALE 1 /* n sec */ /** * \def DRX_AUD_MAX_DEVIATION * \brief Needed for calculation of prescale feature in AUD */ #ifndef DRXJ_AUD_MAX_FM_DEVIATION -#define DRXJ_AUD_MAX_FM_DEVIATION 100 /* kHz */ +#define DRXJ_AUD_MAX_FM_DEVIATION 100 /* kHz */ #endif /** * \brief Needed for calculation of NICAM prescale feature in AUD */ #ifndef DRXJ_AUD_MAX_NICAM_PRESCALE -#define DRXJ_AUD_MAX_NICAM_PRESCALE (9) /* dB */ +#define DRXJ_AUD_MAX_NICAM_PRESCALE (9) /* dB */ #endif /** * \brief Needed for calculation of NICAM prescale feature in AUD */ #ifndef DRXJ_AUD_MAX_WAITTIME -#define DRXJ_AUD_MAX_WAITTIME 250 /* ms */ +#define DRXJ_AUD_MAX_WAITTIME 250 /* ms */ #endif /* ATV config changed flags */ @@ -448,17 +447,16 @@ DEFINES * \brief Needed for calculation of prescale feature in AUD */ #ifndef DRX_AUD_MAX_FM_DEVIATION -#define DRX_AUD_MAX_FM_DEVIATION (100) /* kHz */ +#define DRX_AUD_MAX_FM_DEVIATION (100) /* kHz */ #endif /** * \brief Needed for calculation of NICAM prescale feature in AUD */ #ifndef DRX_AUD_MAX_NICAM_PRESCALE -#define DRX_AUD_MAX_NICAM_PRESCALE (9) /* dB */ +#define DRX_AUD_MAX_NICAM_PRESCALE (9) /* dB */ #endif - /*============================================================================*/ /* Values for I2S Master/Slave pin configurations */ #define SIO_PDR_I2S_CL_CFG_MODE__MASTER 0x0004 @@ -588,11 +586,10 @@ DEFINES /*----------------------------------------------------------------------------- STATIC VARIABLES ----------------------------------------------------------------------------*/ -DRXStatus_t DRXJ_Open ( pDRXDemodInstance_t demod ); -DRXStatus_t DRXJ_Close ( pDRXDemodInstance_t demod); -DRXStatus_t DRXJ_Ctrl ( pDRXDemodInstance_t demod, - DRXCtrlIndex_t ctrl, - void *ctrlData); +DRXStatus_t DRXJ_Open(pDRXDemodInstance_t demod); +DRXStatus_t DRXJ_Close(pDRXDemodInstance_t demod); +DRXStatus_t DRXJ_Ctrl(pDRXDemodInstance_t demod, + DRXCtrlIndex_t ctrl, void *ctrlData); /*----------------------------------------------------------------------------- GLOBAL VARIABLES @@ -601,170 +598,146 @@ GLOBAL VARIABLES * DRXJ DAP structures */ -static DRXStatus_t DRXJ_DAP_ReadBlock ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg8 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u8_t wdata, - pu8_t rdata); - -static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u16_t wdata, - pu16_t rdata); - -static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u32_t wdata, - pu32_t rdata); - -static DRXStatus_t DRXJ_DAP_ReadReg8 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu8_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_ReadReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu16_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_ReadReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu32_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_WriteBlock ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_WriteReg8 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u8_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_WriteReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t data, - DRXflags_t flags); - -static DRXStatus_t DRXJ_DAP_WriteReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u32_t data, - DRXflags_t flags); +static DRXStatus_t DRXJ_DAP_ReadBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg8(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u8_t wdata, pu8_t rdata); + +static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u16_t wdata, pu16_t rdata); + +static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u32_t wdata, pu32_t rdata); + +static DRXStatus_t DRXJ_DAP_ReadReg8(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu8_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_ReadReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu16_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_ReadReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu32_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_WriteBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_WriteReg8(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u8_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_WriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t data, DRXflags_t flags); + +static DRXStatus_t DRXJ_DAP_WriteReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u32_t data, DRXflags_t flags); /* The version structure of this protocol implementation */ -char drxDapDRXJModuleName[] = "DRXJ Data Access Protocol"; +char drxDapDRXJModuleName[] = "DRXJ Data Access Protocol"; char drxDapDRXJVersionText[] = "0.0.0"; DRXVersion_t drxDapDRXJVersion = { - DRX_MODULE_DAP, /**< type identifier of the module */ - drxDapDRXJModuleName, /**< name or description of module */ + DRX_MODULE_DAP, /**< type identifier of the module */ + drxDapDRXJModuleName, /**< name or description of module */ - 0, /**< major version number */ - 0, /**< minor version number */ - 0, /**< patch version number */ - drxDapDRXJVersionText /**< version as text string */ + 0, /**< major version number */ + 0, /**< minor version number */ + 0, /**< patch version number */ + drxDapDRXJVersionText /**< version as text string */ }; /* The structure containing the protocol interface */ DRXAccessFunc_t drxDapDRXJFunct_g = { - &drxDapDRXJVersion, - DRXJ_DAP_WriteBlock, /* Supported */ - DRXJ_DAP_ReadBlock, /* Supported */ - DRXJ_DAP_WriteReg8, /* Not supported */ - DRXJ_DAP_ReadReg8, /* Not supported */ - DRXJ_DAP_ReadModifyWriteReg8, /* Not supported */ - DRXJ_DAP_WriteReg16, /* Supported */ - DRXJ_DAP_ReadReg16, /* Supported */ - DRXJ_DAP_ReadModifyWriteReg16, /* Supported */ - DRXJ_DAP_WriteReg32, /* Supported */ - DRXJ_DAP_ReadReg32, /* Supported */ - DRXJ_DAP_ReadModifyWriteReg32, /* Not supported */ + &drxDapDRXJVersion, + DRXJ_DAP_WriteBlock, /* Supported */ + DRXJ_DAP_ReadBlock, /* Supported */ + DRXJ_DAP_WriteReg8, /* Not supported */ + DRXJ_DAP_ReadReg8, /* Not supported */ + DRXJ_DAP_ReadModifyWriteReg8, /* Not supported */ + DRXJ_DAP_WriteReg16, /* Supported */ + DRXJ_DAP_ReadReg16, /* Supported */ + DRXJ_DAP_ReadModifyWriteReg16, /* Supported */ + DRXJ_DAP_WriteReg32, /* Supported */ + DRXJ_DAP_ReadReg32, /* Supported */ + DRXJ_DAP_ReadModifyWriteReg32, /* Not supported */ }; /** * /var DRXJ_Func_g * /brief The driver functions of the drxj */ -DRXDemodFunc_t DRXJFunctions_g = -{ - DRXJ_TYPE_ID, - DRXJ_Open, - DRXJ_Close, - DRXJ_Ctrl +DRXDemodFunc_t DRXJFunctions_g = { + DRXJ_TYPE_ID, + DRXJ_Open, + DRXJ_Close, + DRXJ_Ctrl }; -DRXJData_t DRXJData_g = -{ - FALSE, /* hasLNA : TRUE if LNA (aka PGA) present */ - FALSE, /* hasOOB : TRUE if OOB supported */ - FALSE, /* hasNTSC: TRUE if NTSC supported */ - FALSE, /* hasBTSC: TRUE if BTSC supported */ - FALSE, /* hasSMATX: TRUE if SMA_TX pin is available */ - FALSE, /* hasSMARX: TRUE if SMA_RX pin is available */ - FALSE, /* hasGPIO : TRUE if GPIO pin is available */ - FALSE, /* hasIRQN : TRUE if IRQN pin is available */ - 0, /* mfx A1/A2/A... */ - - /* tuner settings */ - FALSE, /* tuner mirrors RF signal */ - /* standard/channel settings */ - DRX_STANDARD_UNKNOWN, /* current standard */ - DRX_CONSTELLATION_AUTO, /* constellation */ - 0, /* frequency in KHz */ - DRX_BANDWIDTH_UNKNOWN, /* currBandwidth */ - DRX_MIRROR_NO, /* mirror */ - - /* signal quality information: */ - /* default values taken from the QAM Programming guide */ - /* fecBitsDesired should not be less than 4000000 */ - 4000000, /* fecBitsDesired */ - 5, /* fecVdPlen */ - 4, /* qamVdPrescale */ - 0xFFFF, /* qamVDPeriod */ - 204*8, /* fecRsPlen annex A */ - 1, /* fecRsPrescale */ - FEC_RS_MEASUREMENT_PERIOD,/* fecRsPeriod */ - TRUE, /* resetPktErrAcc */ - 0, /* pktErrAccStart */ - - /* HI configuration */ - 0, /* HICfgTimingDiv */ - 0, /* HICfgBridgeDelay */ - 0, /* HICfgWakeUpKey */ - 0, /* HICfgCtrl */ - 0, /* HICfgTimeout */ - /* UIO configuartion */ - DRX_UIO_MODE_DISABLE, /* uioSmaRxMode */ - DRX_UIO_MODE_DISABLE, /* uioSmaTxMode */ - DRX_UIO_MODE_DISABLE, /* uioASELMode */ - DRX_UIO_MODE_DISABLE, /* uioIRQNMode */ - /* FS setting */ - 0UL, /* iqmFsRateOfs */ - FALSE, /* posImage */ - /* RC setting */ - 0UL, /* iqmRcRateOfs */ - /* AUD information */ +DRXJData_t DRXJData_g = { + FALSE, /* hasLNA : TRUE if LNA (aka PGA) present */ + FALSE, /* hasOOB : TRUE if OOB supported */ + FALSE, /* hasNTSC: TRUE if NTSC supported */ + FALSE, /* hasBTSC: TRUE if BTSC supported */ + FALSE, /* hasSMATX: TRUE if SMA_TX pin is available */ + FALSE, /* hasSMARX: TRUE if SMA_RX pin is available */ + FALSE, /* hasGPIO : TRUE if GPIO pin is available */ + FALSE, /* hasIRQN : TRUE if IRQN pin is available */ + 0, /* mfx A1/A2/A... */ + + /* tuner settings */ + FALSE, /* tuner mirrors RF signal */ + /* standard/channel settings */ + DRX_STANDARD_UNKNOWN, /* current standard */ + DRX_CONSTELLATION_AUTO, /* constellation */ + 0, /* frequency in KHz */ + DRX_BANDWIDTH_UNKNOWN, /* currBandwidth */ + DRX_MIRROR_NO, /* mirror */ + + /* signal quality information: */ + /* default values taken from the QAM Programming guide */ + /* fecBitsDesired should not be less than 4000000 */ + 4000000, /* fecBitsDesired */ + 5, /* fecVdPlen */ + 4, /* qamVdPrescale */ + 0xFFFF, /* qamVDPeriod */ + 204 * 8, /* fecRsPlen annex A */ + 1, /* fecRsPrescale */ + FEC_RS_MEASUREMENT_PERIOD, /* fecRsPeriod */ + TRUE, /* resetPktErrAcc */ + 0, /* pktErrAccStart */ + + /* HI configuration */ + 0, /* HICfgTimingDiv */ + 0, /* HICfgBridgeDelay */ + 0, /* HICfgWakeUpKey */ + 0, /* HICfgCtrl */ + 0, /* HICfgTimeout */ + /* UIO configuartion */ + DRX_UIO_MODE_DISABLE, /* uioSmaRxMode */ + DRX_UIO_MODE_DISABLE, /* uioSmaTxMode */ + DRX_UIO_MODE_DISABLE, /* uioASELMode */ + DRX_UIO_MODE_DISABLE, /* uioIRQNMode */ + /* FS setting */ + 0UL, /* iqmFsRateOfs */ + FALSE, /* posImage */ + /* RC setting */ + 0UL, /* iqmRcRateOfs */ + /* AUD information */ /* FALSE, * flagSetAUDdone */ /* FALSE, * detectedRDS */ /* TRUE, * flagASDRequest */ @@ -775,207 +748,201 @@ DRXJData_t DRXJData_g = /*#ifdef DRXJ_SPLIT_UCODE_UPLOAD FALSE, * flagAudMcUploaded */ /*#endif * DRXJ_SPLIT_UCODE_UPLOAD */ - /* ATV configuartion */ - 0UL, /* flags cfg changes */ - /* shadow of ATV_TOP_EQU0__A */ - {-5, - ATV_TOP_EQU0_EQU_C0_FM, - ATV_TOP_EQU0_EQU_C0_L, - ATV_TOP_EQU0_EQU_C0_LP, - ATV_TOP_EQU0_EQU_C0_BG, - ATV_TOP_EQU0_EQU_C0_DK, - ATV_TOP_EQU0_EQU_C0_I - }, - /* shadow of ATV_TOP_EQU1__A */ - {-50, - ATV_TOP_EQU1_EQU_C1_FM, - ATV_TOP_EQU1_EQU_C1_L, - ATV_TOP_EQU1_EQU_C1_LP, - ATV_TOP_EQU1_EQU_C1_BG, - ATV_TOP_EQU1_EQU_C1_DK, - ATV_TOP_EQU1_EQU_C1_I - }, - /* shadow of ATV_TOP_EQU2__A */ - {210, - ATV_TOP_EQU2_EQU_C2_FM, - ATV_TOP_EQU2_EQU_C2_L, - ATV_TOP_EQU2_EQU_C2_LP, - ATV_TOP_EQU2_EQU_C2_BG, - ATV_TOP_EQU2_EQU_C2_DK, - ATV_TOP_EQU2_EQU_C2_I - }, - /* shadow of ATV_TOP_EQU3__A */ - {-160, - ATV_TOP_EQU3_EQU_C3_FM, - ATV_TOP_EQU3_EQU_C3_L, - ATV_TOP_EQU3_EQU_C3_LP, - ATV_TOP_EQU3_EQU_C3_BG, - ATV_TOP_EQU3_EQU_C3_DK, - ATV_TOP_EQU3_EQU_C3_I - }, - FALSE, /* flag: TRUE=bypass */ - ATV_TOP_VID_PEAK__PRE, /* shadow of ATV_TOP_VID_PEAK__A */ - ATV_TOP_NOISE_TH__PRE, /* shadow of ATV_TOP_NOISE_TH__A */ - TRUE, /* flag CVBS ouput enable */ - FALSE, /* flag SIF ouput enable */ - DRXJ_SIF_ATTENUATION_0DB, /* current SIF att setting */ - { /* qamRfAgcCfg */ - DRX_STANDARD_ITU_B, /* standard */ - DRX_AGC_CTRL_AUTO, /* ctrlMode */ - 0, /* outputLevel */ - 0, /* minOutputLevel */ - 0xFFFF, /* maxOutputLevel */ - 0x0000, /* speed */ - 0x0000, /* top */ - 0x0000 /* c.o.c. */ - }, - { /* qamIfAgcCfg */ - DRX_STANDARD_ITU_B, /* standard */ - DRX_AGC_CTRL_AUTO, /* ctrlMode */ - 0, /* outputLevel */ - 0, /* minOutputLevel */ - 0xFFFF, /* maxOutputLevel */ - 0x0000, /* speed */ - 0x0000, /* top (don't care) */ - 0x0000 /* c.o.c. (don't care) */ - }, - { /* vsbRfAgcCfg */ - DRX_STANDARD_8VSB, /* standard */ - DRX_AGC_CTRL_AUTO, /* ctrlMode */ - 0, /* outputLevel */ - 0, /* minOutputLevel */ - 0xFFFF, /* maxOutputLevel */ - 0x0000, /* speed */ - 0x0000, /* top (don't care) */ - 0x0000 /* c.o.c. (don't care) */ - }, - { /* vsbIfAgcCfg */ - DRX_STANDARD_8VSB, /* standard */ - DRX_AGC_CTRL_AUTO, /* ctrlMode */ - 0, /* outputLevel */ - 0, /* minOutputLevel */ - 0xFFFF, /* maxOutputLevel */ - 0x0000, /* speed */ - 0x0000, /* top (don't care) */ - 0x0000 /* c.o.c. (don't care) */ - }, - 0, /* qamPgaCfg */ - 0, /* vsbPgaCfg */ - { /* qamPreSawCfg */ - DRX_STANDARD_ITU_B, /* standard */ - 0, /* reference */ - FALSE /* usePreSaw */ - }, - { /* vsbPreSawCfg */ - DRX_STANDARD_8VSB, /* standard */ - 0, /* reference */ - FALSE /* usePreSaw */ - }, - - /* Version information */ + /* ATV configuartion */ + 0UL, /* flags cfg changes */ + /* shadow of ATV_TOP_EQU0__A */ + {-5, + ATV_TOP_EQU0_EQU_C0_FM, + ATV_TOP_EQU0_EQU_C0_L, + ATV_TOP_EQU0_EQU_C0_LP, + ATV_TOP_EQU0_EQU_C0_BG, + ATV_TOP_EQU0_EQU_C0_DK, + ATV_TOP_EQU0_EQU_C0_I}, + /* shadow of ATV_TOP_EQU1__A */ + {-50, + ATV_TOP_EQU1_EQU_C1_FM, + ATV_TOP_EQU1_EQU_C1_L, + ATV_TOP_EQU1_EQU_C1_LP, + ATV_TOP_EQU1_EQU_C1_BG, + ATV_TOP_EQU1_EQU_C1_DK, + ATV_TOP_EQU1_EQU_C1_I}, + /* shadow of ATV_TOP_EQU2__A */ + {210, + ATV_TOP_EQU2_EQU_C2_FM, + ATV_TOP_EQU2_EQU_C2_L, + ATV_TOP_EQU2_EQU_C2_LP, + ATV_TOP_EQU2_EQU_C2_BG, + ATV_TOP_EQU2_EQU_C2_DK, + ATV_TOP_EQU2_EQU_C2_I}, + /* shadow of ATV_TOP_EQU3__A */ + {-160, + ATV_TOP_EQU3_EQU_C3_FM, + ATV_TOP_EQU3_EQU_C3_L, + ATV_TOP_EQU3_EQU_C3_LP, + ATV_TOP_EQU3_EQU_C3_BG, + ATV_TOP_EQU3_EQU_C3_DK, + ATV_TOP_EQU3_EQU_C3_I}, + FALSE, /* flag: TRUE=bypass */ + ATV_TOP_VID_PEAK__PRE, /* shadow of ATV_TOP_VID_PEAK__A */ + ATV_TOP_NOISE_TH__PRE, /* shadow of ATV_TOP_NOISE_TH__A */ + TRUE, /* flag CVBS ouput enable */ + FALSE, /* flag SIF ouput enable */ + DRXJ_SIF_ATTENUATION_0DB, /* current SIF att setting */ + { /* qamRfAgcCfg */ + DRX_STANDARD_ITU_B, /* standard */ + DRX_AGC_CTRL_AUTO, /* ctrlMode */ + 0, /* outputLevel */ + 0, /* minOutputLevel */ + 0xFFFF, /* maxOutputLevel */ + 0x0000, /* speed */ + 0x0000, /* top */ + 0x0000 /* c.o.c. */ + }, + { /* qamIfAgcCfg */ + DRX_STANDARD_ITU_B, /* standard */ + DRX_AGC_CTRL_AUTO, /* ctrlMode */ + 0, /* outputLevel */ + 0, /* minOutputLevel */ + 0xFFFF, /* maxOutputLevel */ + 0x0000, /* speed */ + 0x0000, /* top (don't care) */ + 0x0000 /* c.o.c. (don't care) */ + }, + { /* vsbRfAgcCfg */ + DRX_STANDARD_8VSB, /* standard */ + DRX_AGC_CTRL_AUTO, /* ctrlMode */ + 0, /* outputLevel */ + 0, /* minOutputLevel */ + 0xFFFF, /* maxOutputLevel */ + 0x0000, /* speed */ + 0x0000, /* top (don't care) */ + 0x0000 /* c.o.c. (don't care) */ + }, + { /* vsbIfAgcCfg */ + DRX_STANDARD_8VSB, /* standard */ + DRX_AGC_CTRL_AUTO, /* ctrlMode */ + 0, /* outputLevel */ + 0, /* minOutputLevel */ + 0xFFFF, /* maxOutputLevel */ + 0x0000, /* speed */ + 0x0000, /* top (don't care) */ + 0x0000 /* c.o.c. (don't care) */ + }, + 0, /* qamPgaCfg */ + 0, /* vsbPgaCfg */ + { /* qamPreSawCfg */ + DRX_STANDARD_ITU_B, /* standard */ + 0, /* reference */ + FALSE /* usePreSaw */ + }, + { /* vsbPreSawCfg */ + DRX_STANDARD_8VSB, /* standard */ + 0, /* reference */ + FALSE /* usePreSaw */ + }, + + /* Version information */ #ifndef _CH_ - { - "01234567890", /* human readable version microcode */ - "01234567890" /* human readable version device specific code */ - }, - { - { /* DRXVersion_t for microcode */ - DRX_MODULE_UNKNOWN, - (char*)(NULL), - 0, - 0, - 0, - (char*)(NULL) - }, - { /* DRXVersion_t for device specific code */ - DRX_MODULE_UNKNOWN, - (char*)(NULL), - 0, - 0, - 0, - (char*)(NULL) - } - }, - { - { /* DRXVersionList_t for microcode */ - (pDRXVersion_t)(NULL), - (pDRXVersionList_t)(NULL) - }, - { /* DRXVersionList_t for device specific code */ - (pDRXVersion_t)(NULL), - (pDRXVersionList_t)(NULL) - } - }, + { + "01234567890", /* human readable version microcode */ + "01234567890" /* human readable version device specific code */ + }, + { + { /* DRXVersion_t for microcode */ + DRX_MODULE_UNKNOWN, + (char *)(NULL), + 0, + 0, + 0, + (char *)(NULL) + }, + { /* DRXVersion_t for device specific code */ + DRX_MODULE_UNKNOWN, + (char *)(NULL), + 0, + 0, + 0, + (char *)(NULL) + } + }, + { + { /* DRXVersionList_t for microcode */ + (pDRXVersion_t) (NULL), + (pDRXVersionList_t) (NULL) + }, + { /* DRXVersionList_t for device specific code */ + (pDRXVersion_t) (NULL), + (pDRXVersionList_t) (NULL) + } + }, #endif - FALSE, /* smartAntInverted */ - /* Tracking filter setting for OOB */ - { - 12000, - 9300, - 6600, - 5280, - 3700, - 3000, - 2000, - 0 - }, - FALSE, /* oobPowerOn */ - 0, /* mpegTsStaticBitrate */ - FALSE, /* disableTEIhandling */ - FALSE, /* bitReverseMpegOutout */ - DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO, /* mpegOutputClockRate */ - DRXJ_MPEG_START_WIDTH_1CLKCYC, /* mpegStartWidth */ - - /* Pre SAW & Agc configuration for ATV */ - { - DRX_STANDARD_NTSC, /* standard */ - 7, /* reference */ - TRUE /* usePreSaw */ - }, - { /* ATV RF-AGC */ - DRX_STANDARD_NTSC, /* standard */ - DRX_AGC_CTRL_AUTO, /* ctrlMode */ - 0, /* outputLevel */ - 0, /* minOutputLevel (d.c.) */ - 0, /* maxOutputLevel (d.c.) */ - 3, /* speed */ - 9500, /* top */ - 4000 /* cut-off current */ - }, - { /* ATV IF-AGC */ - DRX_STANDARD_NTSC, /* standard */ - DRX_AGC_CTRL_AUTO, /* ctrlMode */ - 0, /* outputLevel */ - 0, /* minOutputLevel (d.c.) */ - 0, /* maxOutputLevel (d.c.) */ - 3, /* speed */ - 2400, /* top */ - 0 /* c.o.c. (d.c.) */ - }, - 140, /* ATV PGA config */ - 0, /* currSymbolRate */ - - FALSE, /* pdrSafeMode */ - SIO_PDR_GPIO_CFG__PRE, /* pdrSafeRestoreValGpio */ - SIO_PDR_VSYNC_CFG__PRE, /* pdrSafeRestoreValVSync */ - SIO_PDR_SMA_RX_CFG__PRE, /* pdrSafeRestoreValSmaRx */ - SIO_PDR_SMA_TX_CFG__PRE, /* pdrSafeRestoreValSmaTx */ - - 4, /* oobPreSaw */ - DRXJ_OOB_LO_POW_MINUS10DB, /* oobLoPow */ - { - FALSE /* audData, only first member */ - }, + FALSE, /* smartAntInverted */ + /* Tracking filter setting for OOB */ + { + 12000, + 9300, + 6600, + 5280, + 3700, + 3000, + 2000, + 0}, + FALSE, /* oobPowerOn */ + 0, /* mpegTsStaticBitrate */ + FALSE, /* disableTEIhandling */ + FALSE, /* bitReverseMpegOutout */ + DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO, /* mpegOutputClockRate */ + DRXJ_MPEG_START_WIDTH_1CLKCYC, /* mpegStartWidth */ + + /* Pre SAW & Agc configuration for ATV */ + { + DRX_STANDARD_NTSC, /* standard */ + 7, /* reference */ + TRUE /* usePreSaw */ + }, + { /* ATV RF-AGC */ + DRX_STANDARD_NTSC, /* standard */ + DRX_AGC_CTRL_AUTO, /* ctrlMode */ + 0, /* outputLevel */ + 0, /* minOutputLevel (d.c.) */ + 0, /* maxOutputLevel (d.c.) */ + 3, /* speed */ + 9500, /* top */ + 4000 /* cut-off current */ + }, + { /* ATV IF-AGC */ + DRX_STANDARD_NTSC, /* standard */ + DRX_AGC_CTRL_AUTO, /* ctrlMode */ + 0, /* outputLevel */ + 0, /* minOutputLevel (d.c.) */ + 0, /* maxOutputLevel (d.c.) */ + 3, /* speed */ + 2400, /* top */ + 0 /* c.o.c. (d.c.) */ + }, + 140, /* ATV PGA config */ + 0, /* currSymbolRate */ + + FALSE, /* pdrSafeMode */ + SIO_PDR_GPIO_CFG__PRE, /* pdrSafeRestoreValGpio */ + SIO_PDR_VSYNC_CFG__PRE, /* pdrSafeRestoreValVSync */ + SIO_PDR_SMA_RX_CFG__PRE, /* pdrSafeRestoreValSmaRx */ + SIO_PDR_SMA_TX_CFG__PRE, /* pdrSafeRestoreValSmaTx */ + + 4, /* oobPreSaw */ + DRXJ_OOB_LO_POW_MINUS10DB, /* oobLoPow */ + { + FALSE /* audData, only first member */ + }, }; - /** * \var DRXJDefaultAddr_g * \brief Default I2C address and device identifier. */ I2CDeviceAddr_t DRXJDefaultAddr_g = { - DRXJ_DEF_I2C_ADDR, /* i2c address */ - DRXJ_DEF_DEMOD_DEV_ID /* device id */ + DRXJ_DEF_I2C_ADDR, /* i2c address */ + DRXJ_DEF_DEMOD_DEV_ID /* device id */ }; /** @@ -983,73 +950,71 @@ I2CDeviceAddr_t DRXJDefaultAddr_g = { * \brief Default common attributes of a drxj demodulator instance. */ DRXCommonAttr_t DRXJDefaultCommAttr_g = { - (pu8_t)NULL, /* ucode ptr */ - 0, /* ucode size */ - TRUE, /* ucode verify switch */ - { 0 }, /* version record */ - - 44000, /* IF in kHz in case no tuner instance is used */ - (151875-0), /* system clock frequency in kHz */ - 0, /* oscillator frequency kHz */ - 0, /* oscillator deviation in ppm, signed */ - FALSE, /* If TRUE mirror frequency spectrum */ - { - /* MPEG output configuration */ - TRUE, /* If TRUE, enable MPEG ouput */ - FALSE, /* If TRUE, insert RS byte */ - TRUE, /* If TRUE, parallel out otherwise serial */ - FALSE, /* If TRUE, invert DATA signals */ - FALSE, /* If TRUE, invert ERR signal */ - FALSE, /* If TRUE, invert STR signals */ - FALSE, /* If TRUE, invert VAL signals */ - FALSE, /* If TRUE, invert CLK signals */ - TRUE, /* If TRUE, static MPEG clockrate will - be used, otherwise clockrate will - adapt to the bitrate of the TS */ - 19392658UL, /* Maximum bitrate in b/s in case - static clockrate is selected */ - DRX_MPEG_STR_WIDTH_1 /* MPEG Start width in clock cycles */ - }, - /* Initilisations below can be ommited, they require no user input and - are initialy 0, NULL or FALSE. The compiler will initialize them to these - values when ommited. */ - FALSE, /* isOpened */ - - /* SCAN */ - NULL, /* no scan params yet */ - 0, /* current scan index */ - 0, /* next scan frequency */ - FALSE, /* scan ready flag */ - 0, /* max channels to scan */ - 0, /* nr of channels scanned */ - NULL, /* default scan function */ - NULL, /* default context pointer */ - 0, /* millisec to wait for demod lock */ - DRXJ_DEMOD_LOCK, /* desired lock */ - FALSE, - - /* Power management */ - DRX_POWER_UP, - - /* Tuner */ - 1, /* nr of I2C port to wich tuner is */ - 0L, /* minimum RF input frequency, in kHz */ - 0L, /* maximum RF input frequency, in kHz */ - FALSE, /* Rf Agc Polarity */ - FALSE, /* If Agc Polarity */ - FALSE, /* tuner slow mode */ - - - { /* current channel (all 0) */ - 0UL /* channel.frequency */ - }, - DRX_STANDARD_UNKNOWN, /* current standard */ - DRX_STANDARD_UNKNOWN, /* previous standard */ - DRX_STANDARD_UNKNOWN, /* diCacheStandard */ - FALSE, /* useBootloader */ - 0UL, /* capabilities */ - 0 /* mfx */ - + (pu8_t) NULL, /* ucode ptr */ + 0, /* ucode size */ + TRUE, /* ucode verify switch */ + {0}, /* version record */ + + 44000, /* IF in kHz in case no tuner instance is used */ + (151875 - 0), /* system clock frequency in kHz */ + 0, /* oscillator frequency kHz */ + 0, /* oscillator deviation in ppm, signed */ + FALSE, /* If TRUE mirror frequency spectrum */ + { + /* MPEG output configuration */ + TRUE, /* If TRUE, enable MPEG ouput */ + FALSE, /* If TRUE, insert RS byte */ + TRUE, /* If TRUE, parallel out otherwise serial */ + FALSE, /* If TRUE, invert DATA signals */ + FALSE, /* If TRUE, invert ERR signal */ + FALSE, /* If TRUE, invert STR signals */ + FALSE, /* If TRUE, invert VAL signals */ + FALSE, /* If TRUE, invert CLK signals */ + TRUE, /* If TRUE, static MPEG clockrate will + be used, otherwise clockrate will + adapt to the bitrate of the TS */ + 19392658UL, /* Maximum bitrate in b/s in case + static clockrate is selected */ + DRX_MPEG_STR_WIDTH_1 /* MPEG Start width in clock cycles */ + }, + /* Initilisations below can be ommited, they require no user input and + are initialy 0, NULL or FALSE. The compiler will initialize them to these + values when ommited. */ + FALSE, /* isOpened */ + + /* SCAN */ + NULL, /* no scan params yet */ + 0, /* current scan index */ + 0, /* next scan frequency */ + FALSE, /* scan ready flag */ + 0, /* max channels to scan */ + 0, /* nr of channels scanned */ + NULL, /* default scan function */ + NULL, /* default context pointer */ + 0, /* millisec to wait for demod lock */ + DRXJ_DEMOD_LOCK, /* desired lock */ + FALSE, + + /* Power management */ + DRX_POWER_UP, + + /* Tuner */ + 1, /* nr of I2C port to wich tuner is */ + 0L, /* minimum RF input frequency, in kHz */ + 0L, /* maximum RF input frequency, in kHz */ + FALSE, /* Rf Agc Polarity */ + FALSE, /* If Agc Polarity */ + FALSE, /* tuner slow mode */ + + { /* current channel (all 0) */ + 0UL /* channel.frequency */ + }, + DRX_STANDARD_UNKNOWN, /* current standard */ + DRX_STANDARD_UNKNOWN, /* previous standard */ + DRX_STANDARD_UNKNOWN, /* diCacheStandard */ + FALSE, /* useBootloader */ + 0UL, /* capabilities */ + 0 /* mfx */ }; /** @@ -1057,12 +1022,12 @@ DRXCommonAttr_t DRXJDefaultCommAttr_g = { * \brief Default drxj demodulator instance. */ DRXDemodInstance_t DRXJDefaultDemod_g = { - &DRXJFunctions_g, /* demod functions */ - &DRXJ_DAP, /* data access protocol functions */ - NULL, /* tuner instance */ - &DRXJDefaultAddr_g, /* i2c address & device id */ - &DRXJDefaultCommAttr_g, /* demod common attributes */ - &DRXJData_g /* demod device specific attributes */ + &DRXJFunctions_g, /* demod functions */ + &DRXJ_DAP, /* data access protocol functions */ + NULL, /* tuner instance */ + &DRXJDefaultAddr_g, /* i2c address & device id */ + &DRXJDefaultCommAttr_g, /* demod common attributes */ + &DRXJData_g /* demod device specific attributes */ }; /** @@ -1071,96 +1036,94 @@ DRXDemodInstance_t DRXJDefaultDemod_g = { * This structure is DRXK specific. * */ -DRXAudData_t DRXJDefaultAudData_g = -{ - FALSE, /* audioIsActive */ - DRX_AUD_STANDARD_AUTO, /* audioStandard */ +DRXAudData_t DRXJDefaultAudData_g = { + FALSE, /* audioIsActive */ + DRX_AUD_STANDARD_AUTO, /* audioStandard */ - /* i2sdata */ - { - FALSE, /* outputEnable */ - 48000, /* frequency */ - DRX_I2S_MODE_MASTER, /* mode */ - DRX_I2S_WORDLENGTH_32, /* wordLength */ - DRX_I2S_POLARITY_RIGHT, /* polarity */ - DRX_I2S_FORMAT_WS_WITH_DATA /* format */ - }, - /* volume */ - { - TRUE, /* mute; */ - 0, /* volume */ - DRX_AUD_AVC_OFF , /* avcMode */ - 0, /* avcRefLevel */ - DRX_AUD_AVC_MAX_GAIN_12DB, /* avcMaxGain */ - DRX_AUD_AVC_MAX_ATTEN_24DB, /* avcMaxAtten */ - 0, /* strengthLeft */ - 0 /* strengthRight */ - }, - DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON,/* autoSound */ - /* assThresholds */ - { - 440, /* A2 */ - 12, /* BTSC */ - 700, /* NICAM */ - }, - /* carrier */ - { - /* a */ - { - 42, /* thres */ - DRX_NO_CARRIER_NOISE, /* opt */ - 0, /* shift */ - 0 /* dco */ - }, - /* b */ - { - 42, /* thres */ - DRX_NO_CARRIER_MUTE, /* opt */ - 0, /* shift */ - 0 /* dco */ - }, - - }, - /* mixer */ - { - DRX_AUD_SRC_STEREO_OR_A, /* sourceI2S */ - DRX_AUD_I2S_MATRIX_STEREO, /* matrixI2S */ - DRX_AUD_FM_MATRIX_SOUND_A /* matrixFm */ - }, - DRX_AUD_DEVIATION_NORMAL, /* deviation */ - DRX_AUD_AVSYNC_OFF, /* avSync */ - - /* prescale */ - { - DRX_AUD_MAX_FM_DEVIATION, /* fmDeviation */ - DRX_AUD_MAX_NICAM_PRESCALE /* nicamGain */ - }, - DRX_AUD_FM_DEEMPH_75US, /* deemph */ - DRX_BTSC_STEREO, /* btscDetect */ - 0, /* rdsDataCounter */ - FALSE /* rdsDataPresent */ + /* i2sdata */ + { + FALSE, /* outputEnable */ + 48000, /* frequency */ + DRX_I2S_MODE_MASTER, /* mode */ + DRX_I2S_WORDLENGTH_32, /* wordLength */ + DRX_I2S_POLARITY_RIGHT, /* polarity */ + DRX_I2S_FORMAT_WS_WITH_DATA /* format */ + }, + /* volume */ + { + TRUE, /* mute; */ + 0, /* volume */ + DRX_AUD_AVC_OFF, /* avcMode */ + 0, /* avcRefLevel */ + DRX_AUD_AVC_MAX_GAIN_12DB, /* avcMaxGain */ + DRX_AUD_AVC_MAX_ATTEN_24DB, /* avcMaxAtten */ + 0, /* strengthLeft */ + 0 /* strengthRight */ + }, + DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON, /* autoSound */ + /* assThresholds */ + { + 440, /* A2 */ + 12, /* BTSC */ + 700, /* NICAM */ + }, + /* carrier */ + { + /* a */ + { + 42, /* thres */ + DRX_NO_CARRIER_NOISE, /* opt */ + 0, /* shift */ + 0 /* dco */ + }, + /* b */ + { + 42, /* thres */ + DRX_NO_CARRIER_MUTE, /* opt */ + 0, /* shift */ + 0 /* dco */ + }, + + }, + /* mixer */ + { + DRX_AUD_SRC_STEREO_OR_A, /* sourceI2S */ + DRX_AUD_I2S_MATRIX_STEREO, /* matrixI2S */ + DRX_AUD_FM_MATRIX_SOUND_A /* matrixFm */ + }, + DRX_AUD_DEVIATION_NORMAL, /* deviation */ + DRX_AUD_AVSYNC_OFF, /* avSync */ + + /* prescale */ + { + DRX_AUD_MAX_FM_DEVIATION, /* fmDeviation */ + DRX_AUD_MAX_NICAM_PRESCALE /* nicamGain */ + }, + DRX_AUD_FM_DEEMPH_75US, /* deemph */ + DRX_BTSC_STEREO, /* btscDetect */ + 0, /* rdsDataCounter */ + FALSE /* rdsDataPresent */ }; - /*----------------------------------------------------------------------------- STRUCTURES ----------------------------------------------------------------------------*/ typedef struct { - u16_t eqMSE; - u8_t eqMode; - u8_t eqCtrl; - u8_t eqStat; + u16_t eqMSE; + u8_t eqMode; + u8_t eqCtrl; + u8_t eqStat; } DRXJEQStat_t, *pDRXJEQStat_t; /* HI command */ typedef struct { - u16_t cmd; - u16_t param1; - u16_t param2; - u16_t param3; - u16_t param4; - u16_t param5; - u16_t param6; + u16_t cmd; + u16_t param1; + u16_t param2; + u16_t param3; + u16_t param4; + u16_t param5; + u16_t param6; } DRXJHiCmd_t, *pDRXJHiCmd_t; #ifdef DRXJ_SPLIT_UCODE_UPLOAD @@ -1169,12 +1132,12 @@ typedef struct { /*============================================================================*/ typedef struct { - u32_t addr; - u16_t size; - u16_t flags; /* bit[15..2]=reserved, - bit[1]= compression on/off - bit[0]= CRC on/off */ - u16_t CRC; + u32_t addr; + u16_t size; + u16_t flags; /* bit[15..2]=reserved, + bit[1]= compression on/off + bit[0]= CRC on/off */ + u16_t CRC; } DRXUCodeBlockHdr_t, *pDRXUCodeBlockHdr_t; #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ @@ -1184,42 +1147,34 @@ FUNCTIONS /* Some prototypes */ static DRXStatus_t HICommand(const pI2CDeviceAddr_t devAddr, - const pDRXJHiCmd_t cmd, - pu16_t result); + const pDRXJHiCmd_t cmd, pu16_t result); static DRXStatus_t -CtrlLockStatus( pDRXDemodInstance_t demod, - pDRXLockStatus_t lockStat ); +CtrlLockStatus(pDRXDemodInstance_t demod, pDRXLockStatus_t lockStat); static DRXStatus_t -CtrlPowerMode( pDRXDemodInstance_t demod, - pDRXPowerMode_t mode ); +CtrlPowerMode(pDRXDemodInstance_t demod, pDRXPowerMode_t mode); -static DRXStatus_t -PowerDownAud( pDRXDemodInstance_t demod ); +static DRXStatus_t PowerDownAud(pDRXDemodInstance_t demod); #ifndef DRXJ_DIGITAL_ONLY -static DRXStatus_t -PowerUpAud( pDRXDemodInstance_t demod, - Bool_t setStandard ); +static DRXStatus_t PowerUpAud(pDRXDemodInstance_t demod, Bool_t setStandard); #endif static DRXStatus_t -AUDCtrlSetStandard ( pDRXDemodInstance_t demod, - pDRXAudStandard_t standard ); +AUDCtrlSetStandard(pDRXDemodInstance_t demod, pDRXAudStandard_t standard); static DRXStatus_t -CtrlSetCfgPreSaw ( pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw ); +CtrlSetCfgPreSaw(pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw); static DRXStatus_t -CtrlSetCfgAfeGain ( pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain ); +CtrlSetCfgAfeGain(pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain); #ifdef DRXJ_SPLIT_UCODE_UPLOAD static DRXStatus_t -CtrlUCodeUpload( pDRXDemodInstance_t demod, - pDRXUCodeInfo_t mcInfo, - DRXUCodeAction_t action, - Bool_t audioMCUpload ); +CtrlUCodeUpload(pDRXDemodInstance_t demod, + pDRXUCodeInfo_t mcInfo, + DRXUCodeAction_t action, Bool_t audioMCUpload); #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ /*============================================================================*/ @@ -1271,45 +1226,51 @@ CtrlUCodeUpload( pDRXDemodInstance_t demod, #define DRX_IS_BOOTH_NEGATIVE(__a) (((__a) & (1 << (sizeof (u32_t) * 8 - 1))) != 0) -static void Mult32(u32_t a, u32_t b, pu32_t h, pu32_t l) -{ - unsigned int i; - *h = *l = 0; - - /* n/2 iterations; shift operand a left two bits after each iteration. */ - /* This automatically appends a zero to the operand for the last iteration. */ - for (i = 0; i < sizeof (a) * 8; i += 2, a = a << 2) - { - /* Shift result left two bits */ - *h = (*h << 2) + (*l >> (sizeof (*l) * 8 - 2)); - *l = (*l << 2); - - /* Take the first three bits of operand a for the Booth conversion: */ - /* 0, 7: do nothing */ - /* 1, 2: add b */ - /* 3 : add 2b */ - /* 4 : subtract 2b */ - /* 5, 6: subtract b */ - switch (a >> (sizeof (a) * 8 - 3)) - { - case 3: - *l += b; - *h = *h - DRX_IS_BOOTH_NEGATIVE (b) + (*l < b); - case 1: - case 2: - *l += b; - *h = *h - DRX_IS_BOOTH_NEGATIVE (b) + (*l < b); - break; - case 4: - *l -= b; - *h = *h - !DRX_IS_BOOTH_NEGATIVE (b) + !b + (*l < ((u32_t) (-((s32_t)b))) ); - case 5: - case 6: - *l -= b; - *h = *h - !DRX_IS_BOOTH_NEGATIVE (b) + !b + (*l < ((u32_t) (-((s32_t)b))) ); - break; +static void Mult32(u32_t a, u32_t b, pu32_t h, pu32_t l) +{ + unsigned int i; + *h = *l = 0; + + /* n/2 iterations; shift operand a left two bits after each iteration. */ + /* This automatically appends a zero to the operand for the last iteration. */ + for (i = 0; i < sizeof(a) * 8; i += 2, a = a << 2) { + /* Shift result left two bits */ + *h = (*h << 2) + (*l >> (sizeof(*l) * 8 - 2)); + *l = (*l << 2); + + /* Take the first three bits of operand a for the Booth conversion: */ + /* 0, 7: do nothing */ + /* 1, 2: add b */ + /* 3 : add 2b */ + /* 4 : subtract 2b */ + /* 5, 6: subtract b */ + switch (a >> (sizeof(a) * 8 - 3)) { + case 3: + *l += b; + *h = *h - DRX_IS_BOOTH_NEGATIVE(b) + (*l < b); + case 1: + case 2: + *l += b; + *h = *h - DRX_IS_BOOTH_NEGATIVE(b) + (*l < b); + break; + case 4: + *l -= b; + *h = *h - !DRX_IS_BOOTH_NEGATIVE(b) + !b + (*l < + ((u32_t) + (- + ((s32_t) + b)))); + case 5: + case 6: + *l -= b; + *h = *h - !DRX_IS_BOOTH_NEGATIVE(b) + !b + (*l < + ((u32_t) + (- + ((s32_t) + b)))); + break; + } } - } } /*============================================================================*/ @@ -1336,23 +1297,24 @@ static void Mult32(u32_t a, u32_t b, pu32_t h, pu32_t l) */ static u32_t Frac28(u32_t N, u32_t D) { - int i=0; - u32_t Q1=0; - u32_t R0=0; - - R0 = (N%D)<<4; /* 32-28 == 4 shifts possible at max */ - Q1 = N/D; /* integer part, only the 4 least significant bits - will be visible in the result */ - - /* division using radix 16, 7 nibbles in the result */ - for (i=0; i<7; i++) { - Q1 = (Q1 << 4) | R0/D; - R0 = (R0%D)<<4; - } - /* rounding */ - if ((R0>>3) >= D) Q1++; - - return Q1; + int i = 0; + u32_t Q1 = 0; + u32_t R0 = 0; + + R0 = (N % D) << 4; /* 32-28 == 4 shifts possible at max */ + Q1 = N / D; /* integer part, only the 4 least significant bits + will be visible in the result */ + + /* division using radix 16, 7 nibbles in the result */ + for (i = 0; i < 7; i++) { + Q1 = (Q1 << 4) | R0 / D; + R0 = (R0 % D) << 4; + } + /* rounding */ + if ((R0 >> 3) >= D) + Q1++; + + return Q1; } /** @@ -1371,98 +1333,99 @@ static u32_t Frac28(u32_t N, u32_t D) * where y = 2^k and 1<= (x/y) < 2 */ -static u32_t Log10Times100( u32_t x) +static u32_t Log10Times100(u32_t x) { - static const u8_t scale=15; - static const u8_t indexWidth=5; - /* - log2lut[n] = (1<<scale) * 200 * log2( 1.0 + ( (1.0/(1<<INDEXWIDTH)) * n )) - 0 <= n < ((1<<INDEXWIDTH)+1) - */ - - static const u32_t log2lut[] = { - 0, /* 0.000000 */ - 290941, /* 290941.300628 */ - 573196, /* 573196.476418 */ - 847269, /* 847269.179851 */ - 1113620, /* 1113620.489452 */ - 1372674, /* 1372673.576986 */ - 1624818, /* 1624817.752104 */ - 1870412, /* 1870411.981536 */ - 2109788, /* 2109787.962654 */ - 2343253, /* 2343252.817465 */ - 2571091, /* 2571091.461923 */ - 2793569, /* 2793568.696416 */ - 3010931, /* 3010931.055901 */ - 3223408, /* 3223408.452106 */ - 3431216, /* 3431215.635215 */ - 3634553, /* 3634553.498355 */ - 3833610, /* 3833610.244726 */ - 4028562, /* 4028562.434393 */ - 4219576, /* 4219575.925308 */ - 4406807, /* 4406806.721144 */ - 4590402, /* 4590401.736809 */ - 4770499, /* 4770499.491025 */ - 4947231, /* 4947230.734179 */ - 5120719, /* 5120719.018555 */ - 5291081, /* 5291081.217197 */ - 5458428, /* 5458427.996830 */ - 5622864, /* 5622864.249668 */ - 5784489, /* 5784489.488298 */ - 5943398, /* 5943398.207380 */ - 6099680, /* 6099680.215452 */ - 6253421, /* 6253420.939751 */ - 6404702, /* 6404701.706649 */ - 6553600, /* 6553600.000000 */ - }; - - - u8_t i = 0; - u32_t y = 0; - u32_t d = 0; - u32_t k = 0; - u32_t r = 0; - - if (x==0) return (0); - - /* Scale x (normalize) */ - /* computing y in log(x/y) = log(x) - log(y) */ - if ( (x & (((u32_t)(-1))<<(scale+1)) ) == 0 ) - { - for (k = scale; k>0 ; k--) - { - if (x & (((u32_t)1)<<scale)) break; - x <<= 1; - } - } else { - for (k = scale; k<31 ; k++) - { - if ((x & (((u32_t)(-1))<<(scale+1)))==0) break; - x >>= 1; - } - } - /* - Now x has binary point between bit[scale] and bit[scale-1] - and 1.0 <= x < 2.0 */ - - /* correction for divison: log(x) = log(x/y)+log(y) */ - y = k * ( ( ((u32_t)1) << scale ) * 200 ); - - /* remove integer part */ - x &= ((((u32_t)1) << scale)-1); - /* get index */ - i = (u8_t) (x >> (scale -indexWidth)); - /* compute delta (x-a) */ - d = x & ((((u32_t)1) << (scale-indexWidth))-1); - /* compute log, multiplication ( d* (.. )) must be within range ! */ - y += log2lut[i] + (( d*( log2lut[i+1]-log2lut[i] ))>>(scale-indexWidth)); - /* Conver to log10() */ - y /= 108853; /* (log2(10) << scale) */ - r = (y>>1); - /* rounding */ - if (y&((u32_t)1)) r++; - - return (r); + static const u8_t scale = 15; + static const u8_t indexWidth = 5; + /* + log2lut[n] = (1<<scale) * 200 * log2( 1.0 + ( (1.0/(1<<INDEXWIDTH)) * n )) + 0 <= n < ((1<<INDEXWIDTH)+1) + */ + + static const u32_t log2lut[] = { + 0, /* 0.000000 */ + 290941, /* 290941.300628 */ + 573196, /* 573196.476418 */ + 847269, /* 847269.179851 */ + 1113620, /* 1113620.489452 */ + 1372674, /* 1372673.576986 */ + 1624818, /* 1624817.752104 */ + 1870412, /* 1870411.981536 */ + 2109788, /* 2109787.962654 */ + 2343253, /* 2343252.817465 */ + 2571091, /* 2571091.461923 */ + 2793569, /* 2793568.696416 */ + 3010931, /* 3010931.055901 */ + 3223408, /* 3223408.452106 */ + 3431216, /* 3431215.635215 */ + 3634553, /* 3634553.498355 */ + 3833610, /* 3833610.244726 */ + 4028562, /* 4028562.434393 */ + 4219576, /* 4219575.925308 */ + 4406807, /* 4406806.721144 */ + 4590402, /* 4590401.736809 */ + 4770499, /* 4770499.491025 */ + 4947231, /* 4947230.734179 */ + 5120719, /* 5120719.018555 */ + 5291081, /* 5291081.217197 */ + 5458428, /* 5458427.996830 */ + 5622864, /* 5622864.249668 */ + 5784489, /* 5784489.488298 */ + 5943398, /* 5943398.207380 */ + 6099680, /* 6099680.215452 */ + 6253421, /* 6253420.939751 */ + 6404702, /* 6404701.706649 */ + 6553600, /* 6553600.000000 */ + }; + + u8_t i = 0; + u32_t y = 0; + u32_t d = 0; + u32_t k = 0; + u32_t r = 0; + + if (x == 0) + return (0); + + /* Scale x (normalize) */ + /* computing y in log(x/y) = log(x) - log(y) */ + if ((x & (((u32_t) (-1)) << (scale + 1))) == 0) { + for (k = scale; k > 0; k--) { + if (x & (((u32_t) 1) << scale)) + break; + x <<= 1; + } + } else { + for (k = scale; k < 31; k++) { + if ((x & (((u32_t) (-1)) << (scale + 1))) == 0) + break; + x >>= 1; + } + } + /* + Now x has binary point between bit[scale] and bit[scale-1] + and 1.0 <= x < 2.0 */ + + /* correction for divison: log(x) = log(x/y)+log(y) */ + y = k * ((((u32_t) 1) << scale) * 200); + + /* remove integer part */ + x &= ((((u32_t) 1) << scale) - 1); + /* get index */ + i = (u8_t) (x >> (scale - indexWidth)); + /* compute delta (x-a) */ + d = x & ((((u32_t) 1) << (scale - indexWidth)) - 1); + /* compute log, multiplication ( d* (.. )) must be within range ! */ + y += log2lut[i] + + ((d * (log2lut[i + 1] - log2lut[i])) >> (scale - indexWidth)); + /* Conver to log10() */ + y /= 108853; /* (log2(10) << scale) */ + r = (y >> 1); + /* rounding */ + if (y & ((u32_t) 1)) + r++; + + return (r); } @@ -1476,30 +1439,29 @@ static u32_t Log10Times100( u32_t x) * * No check on D=0! */ -static u32_t FracTimes1e6( u32_t N, u32_t D) +static u32_t FracTimes1e6(u32_t N, u32_t D) { - u32_t remainder = 0; - u32_t frac = 0; - - /* - frac = (N * 1000000) / D - To let it fit in a 32 bits computation: - frac = (N * (1000000 >> 4)) / (D >> 4) - This would result in a problem in case D < 16 (div by 0). - So we do it more elaborate as shown below. - */ - frac = ( ((u32_t)N) * (1000000 >> 4) ) / D ; - frac <<= 4 ; - remainder = ( ((u32_t)N) * (1000000 >> 4) ) % D ; - remainder <<= 4; - frac += remainder / D; - remainder = remainder % D ; - if( (remainder * 2) > D ) - { - frac++; - } + u32_t remainder = 0; + u32_t frac = 0; + + /* + frac = (N * 1000000) / D + To let it fit in a 32 bits computation: + frac = (N * (1000000 >> 4)) / (D >> 4) + This would result in a problem in case D < 16 (div by 0). + So we do it more elaborate as shown below. + */ + frac = (((u32_t) N) * (1000000 >> 4)) / D; + frac <<= 4; + remainder = (((u32_t) N) * (1000000 >> 4)) % D; + remainder <<= 4; + frac += remainder / D; + remainder = remainder % D; + if ((remainder * 2) > D) { + frac++; + } - return ( frac ); + return (frac); } /*============================================================================*/ @@ -1510,42 +1472,40 @@ static u32_t FracTimes1e6( u32_t N, u32_t D) * \return u32_t Gainfactor in 0.01 resolution * */ -static u32_t dB2LinTimes100( u32_t GdB ) +static u32_t dB2LinTimes100(u32_t GdB) { - u32_t result = 0; - u32_t nr6dBSteps = 0; - u32_t remainder = 0; - u32_t remainderFac = 0; - - /* start with factors 2 (6.02dB) */ - nr6dBSteps = GdB * 1000UL / 60206UL; - if ( nr6dBSteps > 17 ) - { - /* Result max overflow if > log2( maxu32 / 2e4 ) ~= 17.7 */ - return MAX_U32; - } - result = (1<<nr6dBSteps); + u32_t result = 0; + u32_t nr6dBSteps = 0; + u32_t remainder = 0; + u32_t remainderFac = 0; - /* calculate remaining factor, - poly approximation of 10^(GdB/200): + /* start with factors 2 (6.02dB) */ + nr6dBSteps = GdB * 1000UL / 60206UL; + if (nr6dBSteps > 17) { + /* Result max overflow if > log2( maxu32 / 2e4 ) ~= 17.7 */ + return MAX_U32; + } + result = (1 << nr6dBSteps); - y = 1E-04x2 + 0.0106x + 1.0026 + /* calculate remaining factor, + poly approximation of 10^(GdB/200): - max deviation < 0.005 for range x = [0 ... 60] - */ - remainder = ( ( GdB * 1000UL ) % 60206UL ) / 1000UL; - /* using 1e-4 for poly calculation */ - remainderFac = 1 * remainder * remainder; - remainderFac += 106 * remainder; - remainderFac += 10026; + y = 1E-04x2 + 0.0106x + 1.0026 - /* multiply by remaining factor */ - result *= remainderFac; + max deviation < 0.005 for range x = [0 ... 60] + */ + remainder = ((GdB * 1000UL) % 60206UL) / 1000UL; + /* using 1e-4 for poly calculation */ + remainderFac = 1 * remainder * remainder; + remainderFac += 106 * remainder; + remainderFac += 10026; - /* conversion from 1e-4 to 1e-2 */ - return ( (result + 50 ) / 100); -} + /* multiply by remaining factor */ + result *= remainderFac; + /* conversion from 1e-4 to 1e-2 */ + return ((result + 50) / 100); +} #ifndef DRXJ_DIGITAL_ONLY #define FRAC_FLOOR 0 @@ -1562,60 +1522,50 @@ static u32_t dB2LinTimes100( u32_t GdB ) * * If D=0 returns 0 */ -static u32_t Frac( u32_t N, u32_t D, u16_t RC ) +static u32_t Frac(u32_t N, u32_t D, u16_t RC) { - u32_t remainder = 0; - u32_t frac = 0; - u16_t bitCnt = 32; + u32_t remainder = 0; + u32_t frac = 0; + u16_t bitCnt = 32; - if ( D == 0 ) - { - frac = 0; - remainder = 0; + if (D == 0) { + frac = 0; + remainder = 0; + + return (frac); + } - return ( frac ); - } + if (D > N) { + frac = 0; + remainder = N; + } else { + remainder = 0; + frac = N; + while (bitCnt-- > 0) { + remainder <<= 1; + remainder |= ((frac & 0x80000000) >> 31); + frac <<= 1; + if (remainder < D) { + frac &= 0xFFFFFFFE; + } else { + remainder -= D; + frac |= 0x1; + } + } + + /* result correction if needed */ + if ((RC == FRAC_CEIL) && (remainder != 0)) { + /* ceil the result */ + /*(remainder is not zero -> value behind decimal point exists) */ + frac++; + } + if ((RC == FRAC_ROUND) && (remainder >= D >> 1)) { + /* remainder is bigger from D/2 -> round the result */ + frac++; + } + } - if ( D > N ) - { - frac = 0; - remainder = N; - } - else - { - remainder = 0; - frac = N; - while ( bitCnt-- > 0 ) - { - remainder <<= 1; - remainder |= ( ( frac & 0x80000000 ) >> 31 ); - frac <<= 1; - if ( remainder < D ) - { - frac &= 0xFFFFFFFE; - } - else - { - remainder -= D; - frac |= 0x1; - } - } - - /* result correction if needed */ - if ( ( RC == FRAC_CEIL ) && ( remainder != 0 ) ) - { - /* ceil the result */ - /*(remainder is not zero -> value behind decimal point exists) */ - frac++; - } - if ( ( RC == FRAC_ROUND ) && ( remainder >= D>>1 ) ) - { - /* remainder is bigger from D/2 -> round the result */ - frac++; - } - } - - return ( frac ); + return (frac); } #endif @@ -1627,18 +1577,17 @@ static u32_t Frac( u32_t N, u32_t D, u16_t RC ) * \brief Read a 16 bits word, expect big endian data. * \return u16_t The data read. */ -static u16_t -UCodeRead16( pu8_t addr) +static u16_t UCodeRead16(pu8_t addr) { - /* Works fo any host processor */ + /* Works fo any host processor */ - u16_t word=0; + u16_t word = 0; - word = ((u16_t)addr[0]); - word <<= 8; - word |=((u16_t)addr[1]); + word = ((u16_t) addr[0]); + word <<= 8; + word |= ((u16_t) addr[1]); - return ( word ); + return (word); } /*============================================================================*/ @@ -1648,22 +1597,21 @@ UCodeRead16( pu8_t addr) * \brief Read a 32 bits word, expect big endian data. * \return u32_t The data read. */ -static u32_t -UCodeRead32( pu8_t addr) +static u32_t UCodeRead32(pu8_t addr) { - /* Works fo any host processor */ + /* Works fo any host processor */ - u32_t word=0; + u32_t word = 0; - word = ((u16_t)addr[0]); - word <<= 8; - word |= ((u16_t)addr[1]); - word <<= 8; - word |= ((u16_t)addr[2]); - word <<= 8; - word |= ((u16_t)addr[3]); + word = ((u16_t) addr[0]); + word <<= 8; + word |= ((u16_t) addr[1]); + word <<= 8; + word |= ((u16_t) addr[2]); + word <<= 8; + word |= ((u16_t) addr[3]); - return ( word ); + return (word); } /*============================================================================*/ @@ -1675,27 +1623,25 @@ UCodeRead32( pu8_t addr) * \param nrWords Size of microcode block (number of 16 bits words). * \return u16_t The computed CRC residu. */ -static u16_t -UCodeComputeCRC (pu8_t blockData, u16_t nrWords) -{ - u16_t i = 0; - u16_t j = 0; - u32_t CRCWord=0; - u32_t carry=0; - - while (i < nrWords) { - CRCWord |= (u32_t) UCodeRead16(blockData); - for (j = 0; j < 16; j++) - { - CRCWord <<= 1; - if (carry != 0) - CRCWord ^= 0x80050000UL; - carry = CRCWord & 0x80000000UL; - } - i++; - blockData+=(sizeof(u16_t)); - } - return ((u16_t) (CRCWord >> 16)); +static u16_t UCodeComputeCRC(pu8_t blockData, u16_t nrWords) +{ + u16_t i = 0; + u16_t j = 0; + u32_t CRCWord = 0; + u32_t carry = 0; + + while (i < nrWords) { + CRCWord |= (u32_t) UCodeRead16(blockData); + for (j = 0; j < 16; j++) { + CRCWord <<= 1; + if (carry != 0) + CRCWord ^= 0x80050000UL; + carry = CRCWord & 0x80000000UL; + } + i++; + blockData += (sizeof(u16_t)); + } + return ((u16_t) (CRCWord >> 16)); } #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ @@ -1704,17 +1650,17 @@ UCodeComputeCRC (pu8_t blockData, u16_t nrWords) * and rounded. For calc used formula: 16*10^(prescaleGain[dB]/20). * */ -static const u16_t NicamPrescTableVal[43] = { 1,1,1,1,2,2,2,2,3,3,3,4,4, - 5,5,6,6,7,8,9,10,11,13,14,16, - 18,20,23,25,28,32,36,40,45, - 51,57,64,71,80,90,101,113,127 - }; +static const u16_t NicamPrescTableVal[43] = + { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 8, 9, 10, 11, 13, 14, 16, + 18, 20, 23, 25, 28, 32, 36, 40, 45, + 51, 57, 64, 71, 80, 90, 101, 113, 127 +}; /*============================================================================*/ /*== END HELPER FUNCTIONS ==*/ /*============================================================================*/ - /*============================================================================*/ /*============================================================================*/ /*== DRXJ DAP FUNCTIONS ==*/ @@ -1734,12 +1680,11 @@ static const u16_t NicamPrescTableVal[43] = { 1,1,1,1,2,2,2,2,3,3,3,4,4, registers will have undefined behaviour. Flags (RMW, CRC reset, broadcast single/multi master) will be ignored. - TODO: check ignoring single/multimaster is ok for AUD access ? */ #define DRXJ_ISAUDWRITE( addr ) (((((addr)>>16)&1)==1)?TRUE:FALSE) -#define DRXJ_DAP_AUDTRIF_TIMEOUT 80 /* millisec */ +#define DRXJ_DAP_AUDTRIF_TIMEOUT 80 /* millisec */ /*============================================================================*/ /** @@ -1752,50 +1697,40 @@ static const u16_t NicamPrescTableVal[43] = { 1,1,1,1,2,2,2,2,3,3,3,4,4, * */ static -Bool_t IsHandledByAudTrIf( DRXaddr_t addr ) +Bool_t IsHandledByAudTrIf(DRXaddr_t addr) { - Bool_t retval = FALSE; + Bool_t retval = FALSE; - if ( (DRXDAP_FASI_ADDR2BLOCK( addr ) == 4) && - ( DRXDAP_FASI_ADDR2BANK( addr) > 1 ) && - ( DRXDAP_FASI_ADDR2BANK( addr) < 6 ) ) - { - retval=TRUE; - } + if ((DRXDAP_FASI_ADDR2BLOCK(addr) == 4) && + (DRXDAP_FASI_ADDR2BANK(addr) > 1) && + (DRXDAP_FASI_ADDR2BANK(addr) < 6)) { + retval = TRUE; + } - return (retval); + return (retval); } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadBlock ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_ReadBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, DRXflags_t flags) { - return drxDapFASIFunct_g.readBlockFunc( devAddr, - addr, - datasize, - data, - flags); + return drxDapFASIFunct_g.readBlockFunc(devAddr, + addr, datasize, data, flags); } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg8 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u8_t wdata, - pu8_t rdata) +static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg8(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u8_t wdata, pu8_t rdata) { - return drxDapFASIFunct_g.readModifyWriteReg8Func( devAddr, - waddr, - raddr, - wdata, - rdata); + return drxDapFASIFunct_g.readModifyWriteReg8Func(devAddr, + waddr, + raddr, wdata, rdata); } /*============================================================================*/ @@ -1821,103 +1756,81 @@ static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg8 ( /* TODO correct define should be #if ( DRXDAPFASI_SHORT_ADDR_ALLOWED==1 ) See comments DRXJ_DAP_ReadModifyWriteReg16 */ #if ( DRXDAPFASI_LONG_ADDR_ALLOWED == 0 ) -static DRXStatus_t DRXJ_DAP_RMWriteReg16Short ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u16_t wdata, - pu16_t rdata) +static DRXStatus_t DRXJ_DAP_RMWriteReg16Short(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u16_t wdata, pu16_t rdata) { - DRXStatus_t rc; - - if (rdata == NULL) - { - return DRX_STS_INVALID_ARG; - } - - /* Set RMW flag */ - rc = drxDapFASIFunct_g.writeReg16Func (devAddr, - SIO_HI_RA_RAM_S0_FLG_ACC__A, - SIO_HI_RA_RAM_S0_FLG_ACC_S0_RWM__M, - 0x0000); - if (rc == DRX_STS_OK) - { - /* Write new data: triggers RMW */ - rc = drxDapFASIFunct_g.writeReg16Func (devAddr, waddr, wdata, 0x0000 ); - } - if (rc == DRX_STS_OK) - { - /* Read old data */ - rc = drxDapFASIFunct_g.readReg16Func (devAddr, raddr, rdata, 0x0000 ); - } - if (rc == DRX_STS_OK) - { - /* Reset RMW flag */ - rc = drxDapFASIFunct_g.writeReg16Func (devAddr, + DRXStatus_t rc; + + if (rdata == NULL) { + return DRX_STS_INVALID_ARG; + } + + /* Set RMW flag */ + rc = drxDapFASIFunct_g.writeReg16Func(devAddr, SIO_HI_RA_RAM_S0_FLG_ACC__A, - 0, + SIO_HI_RA_RAM_S0_FLG_ACC_S0_RWM__M, 0x0000); - } + if (rc == DRX_STS_OK) { + /* Write new data: triggers RMW */ + rc = drxDapFASIFunct_g.writeReg16Func(devAddr, waddr, wdata, + 0x0000); + } + if (rc == DRX_STS_OK) { + /* Read old data */ + rc = drxDapFASIFunct_g.readReg16Func(devAddr, raddr, rdata, + 0x0000); + } + if (rc == DRX_STS_OK) { + /* Reset RMW flag */ + rc = drxDapFASIFunct_g.writeReg16Func(devAddr, + SIO_HI_RA_RAM_S0_FLG_ACC__A, + 0, 0x0000); + } - return rc; + return rc; } #endif /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u16_t wdata, - pu16_t rdata) +static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u16_t wdata, pu16_t rdata) { - /* TODO: correct short/long addressing format decision, - now long format has higher prio then short because short also - needs virt bnks (not impl yet) for certain audio registers */ + /* TODO: correct short/long addressing format decision, + now long format has higher prio then short because short also + needs virt bnks (not impl yet) for certain audio registers */ #if ( DRXDAPFASI_LONG_ADDR_ALLOWED==1 ) - return drxDapFASIFunct_g.readModifyWriteReg16Func( devAddr, - waddr, - raddr, - wdata, - rdata); + return drxDapFASIFunct_g.readModifyWriteReg16Func(devAddr, + waddr, + raddr, wdata, rdata); #else - return DRXJ_DAP_RMWriteReg16Short( devAddr, - waddr, - raddr, - wdata, - rdata); + return DRXJ_DAP_RMWriteReg16Short(devAddr, waddr, raddr, wdata, rdata); #endif } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t waddr, - DRXaddr_t raddr, - u32_t wdata, - pu32_t rdata) +static DRXStatus_t DRXJ_DAP_ReadModifyWriteReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t waddr, + DRXaddr_t raddr, + u32_t wdata, pu32_t rdata) { - return drxDapFASIFunct_g.readModifyWriteReg32Func( devAddr, - waddr, - raddr, - wdata, - rdata); + return drxDapFASIFunct_g.readModifyWriteReg32Func(devAddr, + waddr, + raddr, wdata, rdata); } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadReg8 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu8_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_ReadReg8(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu8_t data, DRXflags_t flags) { - return drxDapFASIFunct_g.readReg8Func( devAddr, - addr, - data, - flags); + return drxDapFASIFunct_g.readReg8Func(devAddr, addr, data, flags); } /*============================================================================*/ @@ -1935,169 +1848,134 @@ static DRXStatus_t DRXJ_DAP_ReadReg8 ( * 16 bits register read access via audio token ring interface. * */ -static DRXStatus_t DRXJ_DAP_ReadAudReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu16_t data) -{ - u32_t startTimer = 0; - u32_t currentTimer = 0; - u32_t deltaTimer = 0; - u16_t trStatus = 0; - DRXStatus_t stat = DRX_STS_ERROR; - - /* No read possible for bank 3, return with error */ - if ( DRXDAP_FASI_ADDR2BANK(addr) == 3 ) - { - stat=DRX_STS_INVALID_ARG; - } else { - const DRXaddr_t writeBit = ((DRXaddr_t)1)<<16; - - /* Force reset write bit */ - addr &= (~writeBit); - - /* Set up read */ - startTimer = DRXBSP_HST_Clock(); - do { - /* RMW to aud TR IF until request is granted or timeout */ - stat = DRXJ_DAP_ReadModifyWriteReg16( devAddr, - addr, - SIO_HI_RA_RAM_S0_RMWBUF__A, - 0x0000, - &trStatus); - - if ( stat != DRX_STS_OK ) - { - break; - }; - - currentTimer = DRXBSP_HST_Clock(); - deltaTimer = currentTimer - startTimer; - if ( deltaTimer > DRXJ_DAP_AUDTRIF_TIMEOUT ) - { - stat = DRX_STS_ERROR; - break; - }; - - } while ( ( ( trStatus & AUD_TOP_TR_CTR_FIFO_LOCK__M ) == - AUD_TOP_TR_CTR_FIFO_LOCK_LOCKED ) || - ( ( trStatus & AUD_TOP_TR_CTR_FIFO_FULL__M ) == - AUD_TOP_TR_CTR_FIFO_FULL_FULL ) ); - } /* if ( DRXDAP_FASI_ADDR2BANK(addr)!=3 ) */ - - /* Wait for read ready status or timeout */ - if ( stat == DRX_STS_OK ) - { - startTimer = DRXBSP_HST_Clock(); - - while ( ( trStatus & AUD_TOP_TR_CTR_FIFO_RD_RDY__M) != - AUD_TOP_TR_CTR_FIFO_RD_RDY_READY) - { - stat = DRXJ_DAP_ReadReg16( devAddr, - AUD_TOP_TR_CTR__A, - &trStatus, - 0x0000); - if ( stat != DRX_STS_OK ) - { - break; - }; +static DRXStatus_t DRXJ_DAP_ReadAudReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, pu16_t data) +{ + u32_t startTimer = 0; + u32_t currentTimer = 0; + u32_t deltaTimer = 0; + u16_t trStatus = 0; + DRXStatus_t stat = DRX_STS_ERROR; + + /* No read possible for bank 3, return with error */ + if (DRXDAP_FASI_ADDR2BANK(addr) == 3) { + stat = DRX_STS_INVALID_ARG; + } else { + const DRXaddr_t writeBit = ((DRXaddr_t) 1) << 16; + + /* Force reset write bit */ + addr &= (~writeBit); + + /* Set up read */ + startTimer = DRXBSP_HST_Clock(); + do { + /* RMW to aud TR IF until request is granted or timeout */ + stat = DRXJ_DAP_ReadModifyWriteReg16(devAddr, + addr, + SIO_HI_RA_RAM_S0_RMWBUF__A, + 0x0000, &trStatus); + + if (stat != DRX_STS_OK) { + break; + }; + + currentTimer = DRXBSP_HST_Clock(); + deltaTimer = currentTimer - startTimer; + if (deltaTimer > DRXJ_DAP_AUDTRIF_TIMEOUT) { + stat = DRX_STS_ERROR; + break; + }; + + } while (((trStatus & AUD_TOP_TR_CTR_FIFO_LOCK__M) == + AUD_TOP_TR_CTR_FIFO_LOCK_LOCKED) || + ((trStatus & AUD_TOP_TR_CTR_FIFO_FULL__M) == + AUD_TOP_TR_CTR_FIFO_FULL_FULL)); + } /* if ( DRXDAP_FASI_ADDR2BANK(addr)!=3 ) */ + + /* Wait for read ready status or timeout */ + if (stat == DRX_STS_OK) { + startTimer = DRXBSP_HST_Clock(); + + while ((trStatus & AUD_TOP_TR_CTR_FIFO_RD_RDY__M) != + AUD_TOP_TR_CTR_FIFO_RD_RDY_READY) { + stat = DRXJ_DAP_ReadReg16(devAddr, + AUD_TOP_TR_CTR__A, + &trStatus, 0x0000); + if (stat != DRX_STS_OK) { + break; + }; + + currentTimer = DRXBSP_HST_Clock(); + deltaTimer = currentTimer - startTimer; + if (deltaTimer > DRXJ_DAP_AUDTRIF_TIMEOUT) { + stat = DRX_STS_ERROR; + break; + }; + } /* while ( ... ) */ + } - currentTimer = DRXBSP_HST_Clock(); - deltaTimer = currentTimer - startTimer; - if ( deltaTimer > DRXJ_DAP_AUDTRIF_TIMEOUT ) - { - stat = DRX_STS_ERROR; - break; - }; - } /* while ( ... ) */ - } /* if { stat == DRX_STS_OK ) */ - - /* Read value */ - if ( stat == DRX_STS_OK ) - { - stat = DRXJ_DAP_ReadModifyWriteReg16( devAddr, - AUD_TOP_TR_RD_REG__A, - SIO_HI_RA_RAM_S0_RMWBUF__A, - 0x0000, - data); - } /* if { stat == DRX_STS_OK ) */ - - return stat; + /* if { stat == DRX_STS_OK ) */ + /* Read value */ + if (stat == DRX_STS_OK) { + stat = DRXJ_DAP_ReadModifyWriteReg16(devAddr, + AUD_TOP_TR_RD_REG__A, + SIO_HI_RA_RAM_S0_RMWBUF__A, + 0x0000, data); + } + /* if { stat == DRX_STS_OK ) */ + return stat; } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu16_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_ReadReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu16_t data, DRXflags_t flags) { - DRXStatus_t stat = DRX_STS_ERROR; + DRXStatus_t stat = DRX_STS_ERROR; - /* Check param */ - if ( ( devAddr == NULL ) || ( data == NULL ) ) - { - return DRX_STS_INVALID_ARG; - } + /* Check param */ + if ((devAddr == NULL) || (data == NULL)) { + return DRX_STS_INVALID_ARG; + } - if ( IsHandledByAudTrIf(addr) ) - { - stat = DRXJ_DAP_ReadAudReg16 (devAddr, - addr, - data); - } else { - stat = drxDapFASIFunct_g.readReg16Func( devAddr, - addr, - data, - flags); - } - - return stat; + if (IsHandledByAudTrIf(addr)) { + stat = DRXJ_DAP_ReadAudReg16(devAddr, addr, data); + } else { + stat = drxDapFASIFunct_g.readReg16Func(devAddr, + addr, data, flags); + } + + return stat; } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_ReadReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu32_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_ReadReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu32_t data, DRXflags_t flags) { - return drxDapFASIFunct_g.readReg32Func( devAddr, - addr, - data, - flags); + return drxDapFASIFunct_g.readReg32Func(devAddr, addr, data, flags); } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_WriteBlock ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_WriteBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, DRXflags_t flags) { - return drxDapFASIFunct_g.writeBlockFunc( devAddr, - addr, - datasize, - data, - flags); + return drxDapFASIFunct_g.writeBlockFunc(devAddr, + addr, datasize, data, flags); } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_WriteReg8 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u8_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_WriteReg8(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u8_t data, DRXflags_t flags) { - return drxDapFASIFunct_g.writeReg8Func( devAddr, - addr, - data, - flags); + return drxDapFASIFunct_g.writeReg8Func(devAddr, addr, data, flags); } /*============================================================================*/ @@ -2115,101 +1993,81 @@ static DRXStatus_t DRXJ_DAP_WriteReg8 ( * 16 bits register write access via audio token ring interface. * */ -static DRXStatus_t DRXJ_DAP_WriteAudReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t data) +static DRXStatus_t DRXJ_DAP_WriteAudReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, u16_t data) { - DRXStatus_t stat = DRX_STS_ERROR; + DRXStatus_t stat = DRX_STS_ERROR; - /* No write possible for bank 2, return with error */ - if ( DRXDAP_FASI_ADDR2BANK(addr) == 2 ) - { - stat=DRX_STS_INVALID_ARG; - } else { - u32_t startTimer = 0; - u32_t currentTimer = 0; - u32_t deltaTimer = 0; - u16_t trStatus = 0; - const DRXaddr_t writeBit = ((DRXaddr_t)1)<<16; - - /* Force write bit */ - addr |= writeBit; - startTimer = DRXBSP_HST_Clock(); - do { - /* RMW to aud TR IF until request is granted or timeout */ - stat = DRXJ_DAP_ReadModifyWriteReg16( devAddr, - addr, - SIO_HI_RA_RAM_S0_RMWBUF__A, - data, - &trStatus); - if ( stat != DRX_STS_OK ) - { - break; - }; + /* No write possible for bank 2, return with error */ + if (DRXDAP_FASI_ADDR2BANK(addr) == 2) { + stat = DRX_STS_INVALID_ARG; + } else { + u32_t startTimer = 0; + u32_t currentTimer = 0; + u32_t deltaTimer = 0; + u16_t trStatus = 0; + const DRXaddr_t writeBit = ((DRXaddr_t) 1) << 16; - currentTimer = DRXBSP_HST_Clock(); - deltaTimer = currentTimer - startTimer; - if ( deltaTimer > DRXJ_DAP_AUDTRIF_TIMEOUT ) - { - stat = DRX_STS_ERROR; - break; - }; + /* Force write bit */ + addr |= writeBit; + startTimer = DRXBSP_HST_Clock(); + do { + /* RMW to aud TR IF until request is granted or timeout */ + stat = DRXJ_DAP_ReadModifyWriteReg16(devAddr, + addr, + SIO_HI_RA_RAM_S0_RMWBUF__A, + data, &trStatus); + if (stat != DRX_STS_OK) { + break; + }; + + currentTimer = DRXBSP_HST_Clock(); + deltaTimer = currentTimer - startTimer; + if (deltaTimer > DRXJ_DAP_AUDTRIF_TIMEOUT) { + stat = DRX_STS_ERROR; + break; + }; - } while ( ( ( trStatus & AUD_TOP_TR_CTR_FIFO_LOCK__M ) == - AUD_TOP_TR_CTR_FIFO_LOCK_LOCKED ) || - ( ( trStatus & AUD_TOP_TR_CTR_FIFO_FULL__M ) == - AUD_TOP_TR_CTR_FIFO_FULL_FULL ) ); + } while (((trStatus & AUD_TOP_TR_CTR_FIFO_LOCK__M) == + AUD_TOP_TR_CTR_FIFO_LOCK_LOCKED) || + ((trStatus & AUD_TOP_TR_CTR_FIFO_FULL__M) == + AUD_TOP_TR_CTR_FIFO_FULL_FULL)); - } /* if ( DRXDAP_FASI_ADDR2BANK(addr)!=2 ) */ + } /* if ( DRXDAP_FASI_ADDR2BANK(addr)!=2 ) */ - return stat; + return stat; } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_WriteReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_WriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t data, DRXflags_t flags) { - DRXStatus_t stat=DRX_STS_ERROR; + DRXStatus_t stat = DRX_STS_ERROR; - /* Check param */ - if ( devAddr == NULL ) - { - return DRX_STS_INVALID_ARG; - } + /* Check param */ + if (devAddr == NULL) { + return DRX_STS_INVALID_ARG; + } + if (IsHandledByAudTrIf(addr)) { + stat = DRXJ_DAP_WriteAudReg16(devAddr, addr, data); + } else { + stat = drxDapFASIFunct_g.writeReg16Func(devAddr, + addr, data, flags); + } - if ( IsHandledByAudTrIf(addr) ) - { - stat = DRXJ_DAP_WriteAudReg16 (devAddr, - addr, - data); - } else { - stat = drxDapFASIFunct_g.writeReg16Func( devAddr, - addr, - data, - flags); - } - - return stat; + return stat; } /*============================================================================*/ -static DRXStatus_t DRXJ_DAP_WriteReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u32_t data, - DRXflags_t flags) +static DRXStatus_t DRXJ_DAP_WriteReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u32_t data, DRXflags_t flags) { - return drxDapFASIFunct_g.writeReg32Func( devAddr, - addr, - data, - flags); + return drxDapFASIFunct_g.writeReg32Func(devAddr, addr, data, flags); } /*============================================================================*/ @@ -2236,76 +2094,70 @@ static DRXStatus_t DRXJ_DAP_WriteReg32 ( * */ static -DRXStatus_t DRXJ_DAP_AtomicReadWriteBlock ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, - pu8_t data, - Bool_t readFlag) -{ - DRXJHiCmd_t hiCmd; - - u16_t word; - u16_t dummy=0; - u16_t i=0; - - /* Parameter check */ - if ( ( data == NULL ) || - ( devAddr == NULL ) || - ( (datasize%2)!= 0 ) || - ( (datasize/2) > 8 ) - ) - { - return (DRX_STS_INVALID_ARG); - } - - /* Set up HI parameters to read or write n bytes */ - hiCmd.cmd = SIO_HI_RA_RAM_CMD_ATOMIC_COPY; - hiCmd.param1 = - (u16_t)(( DRXDAP_FASI_ADDR2BLOCK( DRXJ_HI_ATOMIC_BUF_START ) << 6 ) + - DRXDAP_FASI_ADDR2BANK( DRXJ_HI_ATOMIC_BUF_START ) ); - hiCmd.param2 = (u16_t)DRXDAP_FASI_ADDR2OFFSET( DRXJ_HI_ATOMIC_BUF_START ); - hiCmd.param3 = (u16_t)((datasize/2) - 1); - if ( readFlag == FALSE ) - { - hiCmd.param3 |= DRXJ_HI_ATOMIC_WRITE; - } else { - hiCmd.param3 |= DRXJ_HI_ATOMIC_READ; - } - hiCmd.param4 = (u16_t) ( ( DRXDAP_FASI_ADDR2BLOCK(addr) << 6 ) + - DRXDAP_FASI_ADDR2BANK(addr) ); - hiCmd.param5 = (u16_t)DRXDAP_FASI_ADDR2OFFSET(addr); - - if ( readFlag == FALSE ) - { - /* write data to buffer */ - for (i = 0; i < (datasize/2); i++) - { - - - word = ((u16_t)data[2*i]); - word += (((u16_t)data[(2*i)+1])<<8); - DRXJ_DAP_WriteReg16 (devAddr, (DRXJ_HI_ATOMIC_BUF_START + i), word, 0); - } - } +DRXStatus_t DRXJ_DAP_AtomicReadWriteBlock(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t datasize, + pu8_t data, Bool_t readFlag) +{ + DRXJHiCmd_t hiCmd; + + u16_t word; + u16_t dummy = 0; + u16_t i = 0; + + /* Parameter check */ + if ((data == NULL) || + (devAddr == NULL) || ((datasize % 2) != 0) || ((datasize / 2) > 8) + ) { + return (DRX_STS_INVALID_ARG); + } - CHK_ERROR( HICommand( devAddr, &hiCmd, &dummy) ); + /* Set up HI parameters to read or write n bytes */ + hiCmd.cmd = SIO_HI_RA_RAM_CMD_ATOMIC_COPY; + hiCmd.param1 = + (u16_t) ((DRXDAP_FASI_ADDR2BLOCK(DRXJ_HI_ATOMIC_BUF_START) << 6) + + DRXDAP_FASI_ADDR2BANK(DRXJ_HI_ATOMIC_BUF_START)); + hiCmd.param2 = + (u16_t) DRXDAP_FASI_ADDR2OFFSET(DRXJ_HI_ATOMIC_BUF_START); + hiCmd.param3 = (u16_t) ((datasize / 2) - 1); + if (readFlag == FALSE) { + hiCmd.param3 |= DRXJ_HI_ATOMIC_WRITE; + } else { + hiCmd.param3 |= DRXJ_HI_ATOMIC_READ; + } + hiCmd.param4 = (u16_t) ((DRXDAP_FASI_ADDR2BLOCK(addr) << 6) + + DRXDAP_FASI_ADDR2BANK(addr)); + hiCmd.param5 = (u16_t) DRXDAP_FASI_ADDR2OFFSET(addr); + + if (readFlag == FALSE) { + /* write data to buffer */ + for (i = 0; i < (datasize / 2); i++) { + + word = ((u16_t) data[2 * i]); + word += (((u16_t) data[(2 * i) + 1]) << 8); + DRXJ_DAP_WriteReg16(devAddr, + (DRXJ_HI_ATOMIC_BUF_START + i), + word, 0); + } + } - if ( readFlag == TRUE ) - { - /* read data from buffer */ - for (i = 0; i < (datasize/2); i++) - { - DRXJ_DAP_ReadReg16 (devAddr, (DRXJ_HI_ATOMIC_BUF_START + i), &word, 0); - data[2*i] = (u8_t) (word & 0xFF); - data[(2*i) + 1] = (u8_t) (word >> 8 ); - } - } + CHK_ERROR(HICommand(devAddr, &hiCmd, &dummy)); + + if (readFlag == TRUE) { + /* read data from buffer */ + for (i = 0; i < (datasize / 2); i++) { + DRXJ_DAP_ReadReg16(devAddr, + (DRXJ_HI_ATOMIC_BUF_START + i), + &word, 0); + data[2 * i] = (u8_t) (word & 0xFF); + data[(2 * i) + 1] = (u8_t) (word >> 8); + } + } - return DRX_STS_OK; + return DRX_STS_OK; - rw_error: - return (DRX_STS_ERROR); +rw_error: + return (DRX_STS_ERROR); } @@ -2316,41 +2168,36 @@ DRXStatus_t DRXJ_DAP_AtomicReadWriteBlock ( * \brief Atomic read of 32 bits words */ static -DRXStatus_t DRXJ_DAP_AtomicReadReg32 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu32_t data, - DRXflags_t flags) +DRXStatus_t DRXJ_DAP_AtomicReadReg32(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu32_t data, DRXflags_t flags) { - u8_t buf[sizeof (*data)]; - DRXStatus_t rc = DRX_STS_ERROR; - u32_t word = 0; + u8_t buf[sizeof(*data)]; + DRXStatus_t rc = DRX_STS_ERROR; + u32_t word = 0; - if (!data) - { - return DRX_STS_INVALID_ARG; - } + if (!data) { + return DRX_STS_INVALID_ARG; + } - rc = DRXJ_DAP_AtomicReadWriteBlock ( devAddr, addr, - sizeof (*data), buf, TRUE); + rc = DRXJ_DAP_AtomicReadWriteBlock(devAddr, addr, + sizeof(*data), buf, TRUE); - word = (u32_t)buf[3]; - word <<= 8; - word |= (u32_t)buf[2]; - word <<= 8; - word |= (u32_t)buf[1]; - word <<= 8; - word |= (u32_t)buf[0]; + word = (u32_t) buf[3]; + word <<= 8; + word |= (u32_t) buf[2]; + word <<= 8; + word |= (u32_t) buf[1]; + word <<= 8; + word |= (u32_t) buf[0]; - *data = word; + *data = word; - return rc; + return rc; } - /*============================================================================*/ - /*============================================================================*/ /*== END DRXJ DAP FUNCTIONS ==*/ /*============================================================================*/ @@ -2372,32 +2219,31 @@ DRXStatus_t DRXJ_DAP_AtomicReadReg32 ( * enable/disable should not need re-configuration of the HI. * */ -static DRXStatus_t -HICfgCommand(const pDRXDemodInstance_t demod) +static DRXStatus_t HICfgCommand(const pDRXDemodInstance_t demod) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - DRXJHiCmd_t hiCmd; - u16_t result=0; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + DRXJHiCmd_t hiCmd; + u16_t result = 0; - extAttr = (pDRXJData_t)demod -> myExtAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; - hiCmd.cmd = SIO_HI_RA_RAM_CMD_CONFIG; - hiCmd.param1 = SIO_HI_RA_RAM_PAR_1_PAR1_SEC_KEY; - hiCmd.param2 = extAttr -> HICfgTimingDiv; - hiCmd.param3 = extAttr -> HICfgBridgeDelay; - hiCmd.param4 = extAttr -> HICfgWakeUpKey; - hiCmd.param5 = extAttr -> HICfgCtrl; - hiCmd.param6 = extAttr -> HICfgTransmit; + hiCmd.cmd = SIO_HI_RA_RAM_CMD_CONFIG; + hiCmd.param1 = SIO_HI_RA_RAM_PAR_1_PAR1_SEC_KEY; + hiCmd.param2 = extAttr->HICfgTimingDiv; + hiCmd.param3 = extAttr->HICfgBridgeDelay; + hiCmd.param4 = extAttr->HICfgWakeUpKey; + hiCmd.param5 = extAttr->HICfgCtrl; + hiCmd.param6 = extAttr->HICfgTransmit; - CHK_ERROR( HICommand( demod -> myI2CDevAddr, &hiCmd, &result) ); + CHK_ERROR(HICommand(demod->myI2CDevAddr, &hiCmd, &result)); - /* Reset power down flag (set one call only) */ - extAttr -> HICfgCtrl &= (~(SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ)); + /* Reset power down flag (set one call only) */ + extAttr->HICfgCtrl &= (~(SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ)); - return (DRX_STS_OK); + return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); +rw_error: + return (DRX_STS_ERROR); } /** @@ -2412,73 +2258,67 @@ HICfgCommand(const pDRXDemodInstance_t demod) * */ static DRXStatus_t -HICommand(const pI2CDeviceAddr_t devAddr, - const pDRXJHiCmd_t cmd, - pu16_t result) +HICommand(const pI2CDeviceAddr_t devAddr, const pDRXJHiCmd_t cmd, pu16_t result) { - u16_t waitCmd=0; - u16_t nrRetries = 0; - Bool_t powerdown_cmd = FALSE; - - - /* Write parameters */ - switch ( cmd->cmd ) { - - case SIO_HI_RA_RAM_CMD_CONFIG: - case SIO_HI_RA_RAM_CMD_ATOMIC_COPY: - WR16(devAddr, SIO_HI_RA_RAM_PAR_6__A, cmd->param6); - WR16(devAddr, SIO_HI_RA_RAM_PAR_5__A, cmd->param5); - WR16(devAddr, SIO_HI_RA_RAM_PAR_4__A, cmd->param4); - WR16(devAddr, SIO_HI_RA_RAM_PAR_3__A, cmd->param3); - /* fallthrough */ - case SIO_HI_RA_RAM_CMD_BRDCTRL: - WR16(devAddr, SIO_HI_RA_RAM_PAR_2__A, cmd->param2); - WR16(devAddr, SIO_HI_RA_RAM_PAR_1__A, cmd->param1); - /* fallthrough */ - case SIO_HI_RA_RAM_CMD_NULL: - /* No parameters */ - break; - - default: - return (DRX_STS_INVALID_ARG); - break; - } - - /* Write command */ - WR16(devAddr, SIO_HI_RA_RAM_CMD__A, cmd->cmd); - - if ( (cmd->cmd) == SIO_HI_RA_RAM_CMD_RESET ) - { - /* Allow for HI to reset */ - DRXBSP_HST_Sleep(1); - } - - /* Detect power down to ommit reading result */ - powerdown_cmd = (Bool_t)( ( cmd->cmd == SIO_HI_RA_RAM_CMD_CONFIG ) && - ( ((cmd->param5) & SIO_HI_RA_RAM_PAR_5_CFG_SLEEP__M) == - SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ ) ); - if ( powerdown_cmd == FALSE ) - { - /* Wait until command rdy */ - do - { - nrRetries++; - if ( nrRetries > DRXJ_MAX_RETRIES ) - { - goto rw_error; - }; + u16_t waitCmd = 0; + u16_t nrRetries = 0; + Bool_t powerdown_cmd = FALSE; - RR16(devAddr, SIO_HI_RA_RAM_CMD__A, &waitCmd); - } while ( waitCmd != 0 ); + /* Write parameters */ + switch (cmd->cmd) { - /* Read result */ - RR16(devAddr, SIO_HI_RA_RAM_RES__A, result); + case SIO_HI_RA_RAM_CMD_CONFIG: + case SIO_HI_RA_RAM_CMD_ATOMIC_COPY: + WR16(devAddr, SIO_HI_RA_RAM_PAR_6__A, cmd->param6); + WR16(devAddr, SIO_HI_RA_RAM_PAR_5__A, cmd->param5); + WR16(devAddr, SIO_HI_RA_RAM_PAR_4__A, cmd->param4); + WR16(devAddr, SIO_HI_RA_RAM_PAR_3__A, cmd->param3); + /* fallthrough */ + case SIO_HI_RA_RAM_CMD_BRDCTRL: + WR16(devAddr, SIO_HI_RA_RAM_PAR_2__A, cmd->param2); + WR16(devAddr, SIO_HI_RA_RAM_PAR_1__A, cmd->param1); + /* fallthrough */ + case SIO_HI_RA_RAM_CMD_NULL: + /* No parameters */ + break; - } /* if ( powerdown_cmd == TRUE ) */ + default: + return (DRX_STS_INVALID_ARG); + break; + } + + /* Write command */ + WR16(devAddr, SIO_HI_RA_RAM_CMD__A, cmd->cmd); + + if ((cmd->cmd) == SIO_HI_RA_RAM_CMD_RESET) { + /* Allow for HI to reset */ + DRXBSP_HST_Sleep(1); + } + + /* Detect power down to ommit reading result */ + powerdown_cmd = (Bool_t) ((cmd->cmd == SIO_HI_RA_RAM_CMD_CONFIG) && + (((cmd-> + param5) & SIO_HI_RA_RAM_PAR_5_CFG_SLEEP__M) + == SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ)); + if (powerdown_cmd == FALSE) { + /* Wait until command rdy */ + do { + nrRetries++; + if (nrRetries > DRXJ_MAX_RETRIES) { + goto rw_error; + }; + + RR16(devAddr, SIO_HI_RA_RAM_CMD__A, &waitCmd); + } while (waitCmd != 0); + + /* Read result */ + RR16(devAddr, SIO_HI_RA_RAM_RES__A, result); - return (DRX_STS_OK); + } + /* if ( powerdown_cmd == TRUE ) */ + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -2494,59 +2334,56 @@ rw_error: * bridging is controlled. * */ -static DRXStatus_t -InitHI( const pDRXDemodInstance_t demod ) +static DRXStatus_t InitHI(const pDRXDemodInstance_t demod) { - pDRXJData_t extAttr =(pDRXJData_t)(NULL); - pDRXCommonAttr_t commonAttr =(pDRXCommonAttr_t)(NULL); - pI2CDeviceAddr_t devAddr =(pI2CDeviceAddr_t)(NULL); - - extAttr = (pDRXJData_t) demod -> myExtAttr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - devAddr = demod -> myI2CDevAddr; - - /* PATCH for bug 5003, HI ucode v3.1.0 */ - WR16( devAddr, 0x4301D7, 0x801 ); - - /* Timing div, 250ns/Psys */ - /* Timing div, = ( delay (nano seconds) * sysclk (kHz) )/ 1000 */ - extAttr -> HICfgTimingDiv = - (u16_t)((commonAttr->sysClockFreq/1000)* HI_I2C_DELAY)/1000 ; - /* Clipping */ - if ( (extAttr -> HICfgTimingDiv) > SIO_HI_RA_RAM_PAR_2_CFG_DIV__M ) - { - extAttr -> HICfgTimingDiv = SIO_HI_RA_RAM_PAR_2_CFG_DIV__M; - } - /* Bridge delay, uses oscilator clock */ - /* Delay = ( delay (nano seconds) * oscclk (kHz) )/ 1000 */ - /* SDA brdige delay */ - extAttr -> HICfgBridgeDelay = - (u16_t)((commonAttr->oscClockFreq/1000)* HI_I2C_BRIDGE_DELAY)/1000 ; - /* Clipping */ - if ( (extAttr -> HICfgBridgeDelay) > SIO_HI_RA_RAM_PAR_3_CFG_DBL_SDA__M ) - { - extAttr -> HICfgBridgeDelay = SIO_HI_RA_RAM_PAR_3_CFG_DBL_SDA__M; - } - /* SCL bridge delay, same as SDA for now */ - extAttr -> HICfgBridgeDelay += ((extAttr -> HICfgBridgeDelay)<< - SIO_HI_RA_RAM_PAR_3_CFG_DBL_SCL__B); - /* Wakeup key, setting the read flag (as suggest in the documentation) does - not always result into a working solution (barebones worked VI2C failed). - Not setting the bit works in all cases . */ - extAttr -> HICfgWakeUpKey = DRXJ_WAKE_UP_KEY; - /* port/bridge/power down ctrl */ - extAttr -> HICfgCtrl = ( SIO_HI_RA_RAM_PAR_5_CFG_SLV0_SLAVE ); - /* transit mode time out delay and watch dog divider */ - extAttr ->HICfgTransmit = SIO_HI_RA_RAM_PAR_6__PRE; - - CHK_ERROR( HICfgCommand( demod ) ); - - return (DRX_STS_OK); - - rw_error: - return (DRX_STS_ERROR); -} + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + devAddr = demod->myI2CDevAddr; + /* PATCH for bug 5003, HI ucode v3.1.0 */ + WR16(devAddr, 0x4301D7, 0x801); + + /* Timing div, 250ns/Psys */ + /* Timing div, = ( delay (nano seconds) * sysclk (kHz) )/ 1000 */ + extAttr->HICfgTimingDiv = + (u16_t) ((commonAttr->sysClockFreq / 1000) * HI_I2C_DELAY) / 1000; + /* Clipping */ + if ((extAttr->HICfgTimingDiv) > SIO_HI_RA_RAM_PAR_2_CFG_DIV__M) { + extAttr->HICfgTimingDiv = SIO_HI_RA_RAM_PAR_2_CFG_DIV__M; + } + /* Bridge delay, uses oscilator clock */ + /* Delay = ( delay (nano seconds) * oscclk (kHz) )/ 1000 */ + /* SDA brdige delay */ + extAttr->HICfgBridgeDelay = + (u16_t) ((commonAttr->oscClockFreq / 1000) * HI_I2C_BRIDGE_DELAY) / + 1000; + /* Clipping */ + if ((extAttr->HICfgBridgeDelay) > SIO_HI_RA_RAM_PAR_3_CFG_DBL_SDA__M) { + extAttr->HICfgBridgeDelay = SIO_HI_RA_RAM_PAR_3_CFG_DBL_SDA__M; + } + /* SCL bridge delay, same as SDA for now */ + extAttr->HICfgBridgeDelay += ((extAttr->HICfgBridgeDelay) << + SIO_HI_RA_RAM_PAR_3_CFG_DBL_SCL__B); + /* Wakeup key, setting the read flag (as suggest in the documentation) does + not always result into a working solution (barebones worked VI2C failed). + Not setting the bit works in all cases . */ + extAttr->HICfgWakeUpKey = DRXJ_WAKE_UP_KEY; + /* port/bridge/power down ctrl */ + extAttr->HICfgCtrl = (SIO_HI_RA_RAM_PAR_5_CFG_SLV0_SLAVE); + /* transit mode time out delay and watch dog divider */ + extAttr->HICfgTransmit = SIO_HI_RA_RAM_PAR_6__PRE; + + CHK_ERROR(HICfgCommand(demod)); + + return (DRX_STS_OK); + +rw_error: + return (DRX_STS_ERROR); +} /*============================================================================*/ /*== END HOST INTERFACE FUNCTIONS ==*/ @@ -2574,171 +2411,167 @@ InitHI( const pDRXDemodInstance_t demod ) * * extAttr->hasOOB * */ -static DRXStatus_t -GetDeviceCapabilities( pDRXDemodInstance_t demod ) +static DRXStatus_t GetDeviceCapabilities(pDRXDemodInstance_t demod) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - pDRXJData_t extAttr = (pDRXJData_t)NULL; - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - u16_t sioPdrOhwCfg = 0; - u32_t sioTopJtagidLo = 0; - u16_t bid = 0; - - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - extAttr = (pDRXJData_t) demod -> myExtAttr; - devAddr = demod -> myI2CDevAddr; - - WR16 ( devAddr, SIO_TOP_COMM_KEY__A , SIO_TOP_COMM_KEY_KEY); - RR16 ( devAddr, SIO_PDR_OHW_CFG__A , &sioPdrOhwCfg); - WR16 ( devAddr, SIO_TOP_COMM_KEY__A , SIO_TOP_COMM_KEY__PRE); - - switch ( (sioPdrOhwCfg & SIO_PDR_OHW_CFG_FREF_SEL__M ) ) - { - case 0: - /* ignore (bypass ?)*/ - break; - case 1: - /* 27 MHz */ - commonAttr->oscClockFreq = 27000; - break; - case 2: - /* 20.25 MHz */ - commonAttr->oscClockFreq = 20250; - break; - case 3: - /* 4 MHz */ - commonAttr->oscClockFreq = 4000; - break; - default: - return (DRX_STS_ERROR); - } - - /* - Determine device capabilities - Based on pinning v47 - */ - RR32( devAddr, SIO_TOP_JTAGID_LO__A , &sioTopJtagidLo); - extAttr->mfx = (u8_t)((sioTopJtagidLo>>29)&0xF) ; - - switch ((sioTopJtagidLo>>12)&0xFF) - { - case 0x31: - WR16( devAddr, SIO_TOP_COMM_KEY__A , SIO_TOP_COMM_KEY_KEY); - RR16( devAddr, SIO_PDR_UIO_IN_HI__A , &bid); - bid = (bid >> 10) & 0xf; - WR16( devAddr, SIO_TOP_COMM_KEY__A , SIO_TOP_COMM_KEY__PRE); - - extAttr->hasLNA = TRUE; - extAttr->hasNTSC = FALSE; - extAttr->hasBTSC = FALSE; - extAttr->hasOOB = FALSE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = FALSE; - extAttr->hasGPIO = FALSE; - extAttr->hasIRQN = FALSE; - break; - case 0x33: - extAttr->hasLNA = FALSE; - extAttr->hasNTSC = FALSE; - extAttr->hasBTSC = FALSE; - extAttr->hasOOB = FALSE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = FALSE; - extAttr->hasGPIO = FALSE; - extAttr->hasIRQN = FALSE; - break; - case 0x45: - extAttr->hasLNA = TRUE; - extAttr->hasNTSC = TRUE; - extAttr->hasBTSC = FALSE; - extAttr->hasOOB = FALSE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = FALSE; - break; - case 0x46: - extAttr->hasLNA = FALSE; - extAttr->hasNTSC = TRUE; - extAttr->hasBTSC = FALSE; - extAttr->hasOOB = FALSE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = FALSE; - break; - case 0x41: - extAttr->hasLNA = TRUE; - extAttr->hasNTSC = TRUE; - extAttr->hasBTSC = TRUE; - extAttr->hasOOB = FALSE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = FALSE; - break; - case 0x43: - extAttr->hasLNA = FALSE; - extAttr->hasNTSC = TRUE; - extAttr->hasBTSC = TRUE; - extAttr->hasOOB = FALSE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = FALSE; - break; - case 0x32: - extAttr->hasLNA = TRUE; - extAttr->hasNTSC = FALSE; - extAttr->hasBTSC = FALSE; - extAttr->hasOOB = TRUE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = TRUE; - break; - case 0x34: - extAttr->hasLNA = FALSE; - extAttr->hasNTSC = TRUE; - extAttr->hasBTSC = TRUE; - extAttr->hasOOB = TRUE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = TRUE; - break; - case 0x42: - extAttr->hasLNA = TRUE ; - extAttr->hasNTSC = TRUE ; - extAttr->hasBTSC = TRUE ; - extAttr->hasOOB = TRUE ; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = TRUE; - break; - case 0x44: - extAttr->hasLNA = FALSE; - extAttr->hasNTSC = TRUE; - extAttr->hasBTSC = TRUE; - extAttr->hasOOB = TRUE; - extAttr->hasSMATX = TRUE; - extAttr->hasSMARX = TRUE; - extAttr->hasGPIO = TRUE; - extAttr->hasIRQN = TRUE; - break; - default: - /* Unknown device variant */ - return (DRX_STS_ERROR); - break; - } - - return (DRX_STS_OK); + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + pDRXJData_t extAttr = (pDRXJData_t) NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + u16_t sioPdrOhwCfg = 0; + u32_t sioTopJtagidLo = 0; + u16_t bid = 0; + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + RR16(devAddr, SIO_PDR_OHW_CFG__A, &sioPdrOhwCfg); + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE); + + switch ((sioPdrOhwCfg & SIO_PDR_OHW_CFG_FREF_SEL__M)) { + case 0: + /* ignore (bypass ?) */ + break; + case 1: + /* 27 MHz */ + commonAttr->oscClockFreq = 27000; + break; + case 2: + /* 20.25 MHz */ + commonAttr->oscClockFreq = 20250; + break; + case 3: + /* 4 MHz */ + commonAttr->oscClockFreq = 4000; + break; + default: + return (DRX_STS_ERROR); + } + + /* + Determine device capabilities + Based on pinning v47 + */ + RR32(devAddr, SIO_TOP_JTAGID_LO__A, &sioTopJtagidLo); + extAttr->mfx = (u8_t) ((sioTopJtagidLo >> 29) & 0xF); + + switch ((sioTopJtagidLo >> 12) & 0xFF) { + case 0x31: + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + RR16(devAddr, SIO_PDR_UIO_IN_HI__A, &bid); + bid = (bid >> 10) & 0xf; + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE); + + extAttr->hasLNA = TRUE; + extAttr->hasNTSC = FALSE; + extAttr->hasBTSC = FALSE; + extAttr->hasOOB = FALSE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = FALSE; + extAttr->hasGPIO = FALSE; + extAttr->hasIRQN = FALSE; + break; + case 0x33: + extAttr->hasLNA = FALSE; + extAttr->hasNTSC = FALSE; + extAttr->hasBTSC = FALSE; + extAttr->hasOOB = FALSE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = FALSE; + extAttr->hasGPIO = FALSE; + extAttr->hasIRQN = FALSE; + break; + case 0x45: + extAttr->hasLNA = TRUE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = FALSE; + extAttr->hasOOB = FALSE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = FALSE; + break; + case 0x46: + extAttr->hasLNA = FALSE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = FALSE; + extAttr->hasOOB = FALSE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = FALSE; + break; + case 0x41: + extAttr->hasLNA = TRUE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = TRUE; + extAttr->hasOOB = FALSE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = FALSE; + break; + case 0x43: + extAttr->hasLNA = FALSE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = TRUE; + extAttr->hasOOB = FALSE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = FALSE; + break; + case 0x32: + extAttr->hasLNA = TRUE; + extAttr->hasNTSC = FALSE; + extAttr->hasBTSC = FALSE; + extAttr->hasOOB = TRUE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = TRUE; + break; + case 0x34: + extAttr->hasLNA = FALSE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = TRUE; + extAttr->hasOOB = TRUE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = TRUE; + break; + case 0x42: + extAttr->hasLNA = TRUE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = TRUE; + extAttr->hasOOB = TRUE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = TRUE; + break; + case 0x44: + extAttr->hasLNA = FALSE; + extAttr->hasNTSC = TRUE; + extAttr->hasBTSC = TRUE; + extAttr->hasOOB = TRUE; + extAttr->hasSMATX = TRUE; + extAttr->hasSMARX = TRUE; + extAttr->hasGPIO = TRUE; + extAttr->hasIRQN = TRUE; + break; + default: + /* Unknown device variant */ + return (DRX_STS_ERROR); + break; + } + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } - /** * \fn DRXStatus_t PowerUpDevice() * \brief Power up device. @@ -2753,42 +2586,40 @@ rw_error: #define DRXJ_MAX_RETRIES_POWERUP 10 #endif -static DRXStatus_t -PowerUpDevice( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr =(pI2CDeviceAddr_t)(NULL); - u8_t data = 0 ; - u16_t retryCount = 0; - I2CDeviceAddr_t wakeUpAddr; - - devAddr = demod->myI2CDevAddr; - wakeUpAddr.i2cAddr = DRXJ_WAKE_UP_KEY; - wakeUpAddr.i2cDevId = devAddr->i2cDevId; - wakeUpAddr.userData = devAddr->userData; - /* CHK_ERROR macro not used, I2C access may fail in this case: no ack - dummy write must be used to wake uop device, dummy read must be used to - reset HI state machine (avoiding actual writes) */ - do - { - data = 0; - DRXBSP_I2C_WriteRead( &wakeUpAddr, 1, &data, - (pI2CDeviceAddr_t)(NULL), 0, (pu8_t)(NULL) ); - DRXBSP_HST_Sleep(10); - retryCount++ ; - }while ( (DRXBSP_I2C_WriteRead( (pI2CDeviceAddr_t)(NULL), 0, (pu8_t)(NULL), - devAddr, 1, &data ) - != DRX_STS_OK ) && - (retryCount < DRXJ_MAX_RETRIES_POWERUP) ); - - /* Need some recovery time .... */ - DRXBSP_HST_Sleep(10); - - if ( retryCount == DRXJ_MAX_RETRIES_POWERUP ) - { - return (DRX_STS_ERROR); - } +static DRXStatus_t PowerUpDevice(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + u8_t data = 0; + u16_t retryCount = 0; + I2CDeviceAddr_t wakeUpAddr; + + devAddr = demod->myI2CDevAddr; + wakeUpAddr.i2cAddr = DRXJ_WAKE_UP_KEY; + wakeUpAddr.i2cDevId = devAddr->i2cDevId; + wakeUpAddr.userData = devAddr->userData; + /* CHK_ERROR macro not used, I2C access may fail in this case: no ack + dummy write must be used to wake uop device, dummy read must be used to + reset HI state machine (avoiding actual writes) */ + do { + data = 0; + DRXBSP_I2C_WriteRead(&wakeUpAddr, 1, &data, + (pI2CDeviceAddr_t) (NULL), 0, + (pu8_t) (NULL)); + DRXBSP_HST_Sleep(10); + retryCount++; + } while ((DRXBSP_I2C_WriteRead + ((pI2CDeviceAddr_t) (NULL), 0, (pu8_t) (NULL), devAddr, 1, + &data) + != DRX_STS_OK) && (retryCount < DRXJ_MAX_RETRIES_POWERUP)); + + /* Need some recovery time .... */ + DRXBSP_HST_Sleep(10); + + if (retryCount == DRXJ_MAX_RETRIES_POWERUP) { + return (DRX_STS_ERROR); + } - return (DRX_STS_OK); + return (DRX_STS_OK); } /*----------------------------------------------------------------------------*/ @@ -2805,407 +2636,393 @@ PowerUpDevice( pDRXDemodInstance_t demod ) * */ static DRXStatus_t -CtrlSetCfgMPEGOutput( pDRXDemodInstance_t demod, - pDRXCfgMPEGOutput_t cfgData ) -{ - pI2CDeviceAddr_t devAddr =(pI2CDeviceAddr_t)(NULL); - pDRXJData_t extAttr =(pDRXJData_t)(NULL); - pDRXCommonAttr_t commonAttr =(pDRXCommonAttr_t)(NULL); - u16_t fecOcRegMode = 0; - u16_t fecOcRegIprMode = 0; - u16_t fecOcRegIprInvert = 0; - u32_t maxBitRate = 0; - u32_t rcnRate = 0; - u32_t nrBits = 0; - u16_t sioPdrMdCfg = 0; - /* data mask for the output data byte */ - u16_t InvertDataMask = FEC_OC_IPR_INVERT_MD7__M | FEC_OC_IPR_INVERT_MD6__M | - FEC_OC_IPR_INVERT_MD5__M | FEC_OC_IPR_INVERT_MD4__M | - FEC_OC_IPR_INVERT_MD3__M | FEC_OC_IPR_INVERT_MD2__M | - FEC_OC_IPR_INVERT_MD1__M | FEC_OC_IPR_INVERT_MD0__M; - /* check arguments */ - if (( demod == NULL ) || - ( cfgData == NULL )) - { - return (DRX_STS_INVALID_ARG); - } - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; +CtrlSetCfgMPEGOutput(pDRXDemodInstance_t demod, pDRXCfgMPEGOutput_t cfgData) +{ + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + u16_t fecOcRegMode = 0; + u16_t fecOcRegIprMode = 0; + u16_t fecOcRegIprInvert = 0; + u32_t maxBitRate = 0; + u32_t rcnRate = 0; + u32_t nrBits = 0; + u16_t sioPdrMdCfg = 0; + /* data mask for the output data byte */ + u16_t InvertDataMask = + FEC_OC_IPR_INVERT_MD7__M | FEC_OC_IPR_INVERT_MD6__M | + FEC_OC_IPR_INVERT_MD5__M | FEC_OC_IPR_INVERT_MD4__M | + FEC_OC_IPR_INVERT_MD3__M | FEC_OC_IPR_INVERT_MD2__M | + FEC_OC_IPR_INVERT_MD1__M | FEC_OC_IPR_INVERT_MD0__M; + /* check arguments */ + if ((demod == NULL) || (cfgData == NULL)) { + return (DRX_STS_INVALID_ARG); + } - if ( cfgData->enableMPEGOutput == TRUE ) - { - /* quick and dirty patch to set MPEG incase current std is not - producing MPEG */ - switch ( extAttr->standard ) - { - case DRX_STANDARD_8VSB: - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - break; - default: - /* not an MPEG producing std, just store MPEG cfg */ - commonAttr->mpegCfg.enableMPEGOutput = cfgData->enableMPEGOutput; - commonAttr->mpegCfg.insertRSByte = cfgData->insertRSByte; - commonAttr->mpegCfg.enableParallel = cfgData->enableParallel; - commonAttr->mpegCfg.invertDATA = cfgData->invertDATA; - commonAttr->mpegCfg.invertERR = cfgData->invertERR; - commonAttr->mpegCfg.invertSTR = cfgData->invertSTR; - commonAttr->mpegCfg.invertVAL = cfgData->invertVAL; - commonAttr->mpegCfg.invertCLK = cfgData->invertCLK; - commonAttr->mpegCfg.staticCLK = cfgData->staticCLK; - commonAttr->mpegCfg.bitrate = cfgData->bitrate; - return (DRX_STS_OK); - } - - WR16( devAddr, FEC_OC_OCR_INVERT__A, 0); - switch (extAttr->standard) - { - case DRX_STANDARD_8VSB: - WR16( devAddr, FEC_OC_FCT_USAGE__A, 7 ); /* 2048 bytes fifo ram */ - WR16( devAddr, FEC_OC_TMD_CTL_UPD_RATE__A, 10); - WR16( devAddr, FEC_OC_TMD_INT_UPD_RATE__A, 10); - WR16( devAddr, FEC_OC_AVR_PARM_A__A, 5); - WR16( devAddr, FEC_OC_AVR_PARM_B__A, 7); - WR16( devAddr, FEC_OC_RCN_GAIN__A, 10); - /* Low Water Mark for synchronization */ - WR16( devAddr, FEC_OC_SNC_LWM__A, 3 ); - /* High Water Mark for synchronization */ - WR16( devAddr, FEC_OC_SNC_HWM__A, 5 ); - break; - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_C: - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - nrBits = 8; - break; - case DRX_CONSTELLATION_QAM128: - nrBits = 7; - break; - case DRX_CONSTELLATION_QAM64: - nrBits = 6; - break; - case DRX_CONSTELLATION_QAM32: - nrBits = 5; - break; - case DRX_CONSTELLATION_QAM16: - nrBits = 4; - break; - default: - return (DRX_STS_ERROR); - } /* extAttr->constellation */ - /* maxBitRate = symbolRate * nrBits * coef */ - /* coef = 188/204 */ - maxBitRate = ( extAttr->currSymbolRate / 8 ) * nrBits * 188; - /* pass through b/c Annex A/c need following settings */ - case DRX_STANDARD_ITU_B: - WR16( devAddr, FEC_OC_FCT_USAGE__A, FEC_OC_FCT_USAGE__PRE); - WR16( devAddr, FEC_OC_TMD_CTL_UPD_RATE__A, FEC_OC_TMD_CTL_UPD_RATE__PRE); - WR16( devAddr, FEC_OC_TMD_INT_UPD_RATE__A, 5); - WR16( devAddr, FEC_OC_AVR_PARM_A__A, FEC_OC_AVR_PARM_A__PRE); - WR16( devAddr, FEC_OC_AVR_PARM_B__A, FEC_OC_AVR_PARM_B__PRE); - if (cfgData->staticCLK == TRUE) - { - WR16( devAddr, FEC_OC_RCN_GAIN__A, 0xD ); - } - else - { - WR16( devAddr, FEC_OC_RCN_GAIN__A, FEC_OC_RCN_GAIN__PRE ); - } - WR16( devAddr, FEC_OC_SNC_LWM__A, 2); - WR16( devAddr, FEC_OC_SNC_HWM__A, 12); - break; - default: - break; - }/* swtich (standard) */ - - /* Check insertion of the Reed-Solomon parity bytes */ - RR16( devAddr, FEC_OC_MODE__A , &fecOcRegMode ); - RR16( devAddr, FEC_OC_IPR_MODE__A, &fecOcRegIprMode ); - if ( cfgData->insertRSByte == TRUE ) - { - /* enable parity symbol forward */ - fecOcRegMode |= FEC_OC_MODE_PARITY__M; - /* MVAL disable during parity bytes */ - fecOcRegIprMode |= FEC_OC_IPR_MODE_MVAL_DIS_PAR__M; - switch ( extAttr->standard ) - { - case DRX_STANDARD_8VSB: - rcnRate = 0x004854D3; - break; - case DRX_STANDARD_ITU_B: - fecOcRegMode |= FEC_OC_MODE_TRANSPARENT__M; - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - rcnRate = 0x008945E7; - break; - case DRX_CONSTELLATION_QAM64: - rcnRate = 0x005F64D4; - break; - default: - return (DRX_STS_ERROR); - } - break; - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_C: - /* insertRSByte = TRUE -> coef = 188/188 -> 1, RS bits are in MPEG output */ - rcnRate = ( Frac28 ( maxBitRate, ( u32_t )( commonAttr->sysClockFreq / 8 ) ) ) / 188; - break; - default: - return (DRX_STS_ERROR); - } /* extAttr->standard */ - } - else /* insertRSByte == FALSE */ - { - /* disable parity symbol forward */ - fecOcRegMode &= (~FEC_OC_MODE_PARITY__M); - /* MVAL enable during parity bytes */ - fecOcRegIprMode &= (~FEC_OC_IPR_MODE_MVAL_DIS_PAR__M); - switch ( extAttr->standard ) - { - case DRX_STANDARD_8VSB: - rcnRate = 0x0041605C; - break; - case DRX_STANDARD_ITU_B: - fecOcRegMode &= (~FEC_OC_MODE_TRANSPARENT__M); - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - rcnRate = 0x0082D6A0; - break; - case DRX_CONSTELLATION_QAM64: - rcnRate = 0x005AEC1A; - break; - default: - return (DRX_STS_ERROR); - } - break; - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_C: - /* insertRSByte = FALSE -> coef = 188/204, RS bits not in MPEG output */ - rcnRate = ( Frac28 ( maxBitRate, ( u32_t )( commonAttr->sysClockFreq / 8 ) ) ) / 204; - break; - default: - return (DRX_STS_ERROR); - } /* extAttr->standard */ - } - - if ( cfgData->enableParallel == TRUE ) - { /* MPEG data output is paralel -> clear ipr_mode[0] */ - fecOcRegIprMode &= (~(FEC_OC_IPR_MODE_SERIAL__M)); - } - else - { /* MPEG data output is serial -> set ipr_mode[0] */ - fecOcRegIprMode |= FEC_OC_IPR_MODE_SERIAL__M; - } - - /* Control slective inversion of output bits */ - if ( cfgData->invertDATA == TRUE ) - { - fecOcRegIprInvert |= InvertDataMask; - } - else - { - fecOcRegIprInvert &= (~(InvertDataMask)); - } - - if ( cfgData->invertERR == TRUE ) - { - fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MERR__M; - } - else - { - fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MERR__M)); - } - - if ( cfgData->invertSTR == TRUE ) - { - fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MSTRT__M; - } - else - { - fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MSTRT__M)); - } - - if ( cfgData->invertVAL == TRUE ) - { - fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MVAL__M; - } - else - { - fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MVAL__M)); - } - - if ( cfgData->invertCLK == TRUE ) - { - fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MCLK__M; - } - else - { - fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MCLK__M)); - } - - if ( cfgData->staticCLK == TRUE ) /* Static mode */ - { - u32_t dtoRate = 0; - u32_t bitRate = 0; - u16_t fecOcDtoBurstLen = 0; - u16_t fecOcDtoPeriod = 0; - - fecOcDtoBurstLen = FEC_OC_DTO_BURST_LEN__PRE; - - switch ( extAttr->standard ) - { - case DRX_STANDARD_8VSB: - fecOcDtoPeriod = 4; - if ( cfgData->insertRSByte == TRUE ) - { - fecOcDtoBurstLen = 208; - } - break; - case DRX_STANDARD_ITU_A: - { - u32_t symbolRateTh = 6400000; - if ( cfgData->insertRSByte == TRUE ) - { - fecOcDtoBurstLen = 204; - symbolRateTh = 5900000; - } - if ( extAttr->currSymbolRate >= symbolRateTh) - { - fecOcDtoPeriod = 0; - } - else - { - fecOcDtoPeriod = 1; - } - } - break; - case DRX_STANDARD_ITU_B: - fecOcDtoPeriod = 1; - if ( cfgData->insertRSByte == TRUE ) - { - fecOcDtoBurstLen = 128; - } - break; - case DRX_STANDARD_ITU_C: - fecOcDtoPeriod = 1; - if ( cfgData->insertRSByte == TRUE ) - { - fecOcDtoBurstLen = 204; - } - break; - default: - return (DRX_STS_ERROR); - } - bitRate = commonAttr->sysClockFreq * 1000 / (fecOcDtoPeriod + 2); - dtoRate = Frac28(bitRate, commonAttr->sysClockFreq * 1000 ); - dtoRate >>= 3; - WR16 ( devAddr, FEC_OC_DTO_RATE_HI__A, (u16_t) ((dtoRate >> 16) & FEC_OC_DTO_RATE_HI__M) ); - WR16 ( devAddr, FEC_OC_DTO_RATE_LO__A, (u16_t) (dtoRate & FEC_OC_DTO_RATE_LO_RATE_LO__M) ); - WR16 ( devAddr, FEC_OC_DTO_MODE__A, FEC_OC_DTO_MODE_DYNAMIC__M | FEC_OC_DTO_MODE_OFFSET_ENABLE__M ); - WR16 ( devAddr, FEC_OC_FCT_MODE__A, FEC_OC_FCT_MODE_RAT_ENA__M | FEC_OC_FCT_MODE_VIRT_ENA__M ); - WR16 ( devAddr, FEC_OC_DTO_BURST_LEN__A, fecOcDtoBurstLen ); - if ( extAttr->mpegOutputClockRate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO ) - fecOcDtoPeriod = extAttr->mpegOutputClockRate - 1; - WR16 ( devAddr, FEC_OC_DTO_PERIOD__A, fecOcDtoPeriod ); - } - else /* Dynamic mode */ - { - WR16 ( devAddr, FEC_OC_DTO_MODE__A, FEC_OC_DTO_MODE_DYNAMIC__M ); - WR16 ( devAddr, FEC_OC_FCT_MODE__A, 0 ); - } - - WR32 ( devAddr, FEC_OC_RCN_CTL_RATE_LO__A, rcnRate ); - - /* Write appropriate registers with requested configuration */ - WR16 ( devAddr, FEC_OC_MODE__A, fecOcRegMode ); - WR16 ( devAddr, FEC_OC_IPR_MODE__A, fecOcRegIprMode ); - WR16 ( devAddr, FEC_OC_IPR_INVERT__A, fecOcRegIprInvert ); - - /* enabling for both parallel and serial now */ - /* Write magic word to enable pdr reg write */ - WR16 ( devAddr, SIO_TOP_COMM_KEY__A, 0xFABA); - /* Set MPEG TS pads to outputmode */ - WR16 ( devAddr, SIO_PDR_MSTRT_CFG__A, 0x0013); - WR16 ( devAddr, SIO_PDR_MERR_CFG__A, 0x0013); - WR16 ( devAddr, SIO_PDR_MCLK_CFG__A, + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + if (cfgData->enableMPEGOutput == TRUE) { + /* quick and dirty patch to set MPEG incase current std is not + producing MPEG */ + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + break; + default: + /* not an MPEG producing std, just store MPEG cfg */ + commonAttr->mpegCfg.enableMPEGOutput = + cfgData->enableMPEGOutput; + commonAttr->mpegCfg.insertRSByte = + cfgData->insertRSByte; + commonAttr->mpegCfg.enableParallel = + cfgData->enableParallel; + commonAttr->mpegCfg.invertDATA = cfgData->invertDATA; + commonAttr->mpegCfg.invertERR = cfgData->invertERR; + commonAttr->mpegCfg.invertSTR = cfgData->invertSTR; + commonAttr->mpegCfg.invertVAL = cfgData->invertVAL; + commonAttr->mpegCfg.invertCLK = cfgData->invertCLK; + commonAttr->mpegCfg.staticCLK = cfgData->staticCLK; + commonAttr->mpegCfg.bitrate = cfgData->bitrate; + return (DRX_STS_OK); + } + + WR16(devAddr, FEC_OC_OCR_INVERT__A, 0); + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + WR16(devAddr, FEC_OC_FCT_USAGE__A, 7); /* 2048 bytes fifo ram */ + WR16(devAddr, FEC_OC_TMD_CTL_UPD_RATE__A, 10); + WR16(devAddr, FEC_OC_TMD_INT_UPD_RATE__A, 10); + WR16(devAddr, FEC_OC_AVR_PARM_A__A, 5); + WR16(devAddr, FEC_OC_AVR_PARM_B__A, 7); + WR16(devAddr, FEC_OC_RCN_GAIN__A, 10); + /* Low Water Mark for synchronization */ + WR16(devAddr, FEC_OC_SNC_LWM__A, 3); + /* High Water Mark for synchronization */ + WR16(devAddr, FEC_OC_SNC_HWM__A, 5); + break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_C: + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + nrBits = 8; + break; + case DRX_CONSTELLATION_QAM128: + nrBits = 7; + break; + case DRX_CONSTELLATION_QAM64: + nrBits = 6; + break; + case DRX_CONSTELLATION_QAM32: + nrBits = 5; + break; + case DRX_CONSTELLATION_QAM16: + nrBits = 4; + break; + default: + return (DRX_STS_ERROR); + } /* extAttr->constellation */ + /* maxBitRate = symbolRate * nrBits * coef */ + /* coef = 188/204 */ + maxBitRate = + (extAttr->currSymbolRate / 8) * nrBits * 188; + /* pass through b/c Annex A/c need following settings */ + case DRX_STANDARD_ITU_B: + WR16(devAddr, FEC_OC_FCT_USAGE__A, + FEC_OC_FCT_USAGE__PRE); + WR16(devAddr, FEC_OC_TMD_CTL_UPD_RATE__A, + FEC_OC_TMD_CTL_UPD_RATE__PRE); + WR16(devAddr, FEC_OC_TMD_INT_UPD_RATE__A, 5); + WR16(devAddr, FEC_OC_AVR_PARM_A__A, + FEC_OC_AVR_PARM_A__PRE); + WR16(devAddr, FEC_OC_AVR_PARM_B__A, + FEC_OC_AVR_PARM_B__PRE); + if (cfgData->staticCLK == TRUE) { + WR16(devAddr, FEC_OC_RCN_GAIN__A, 0xD); + } else { + WR16(devAddr, FEC_OC_RCN_GAIN__A, + FEC_OC_RCN_GAIN__PRE); + } + WR16(devAddr, FEC_OC_SNC_LWM__A, 2); + WR16(devAddr, FEC_OC_SNC_HWM__A, 12); + break; + default: + break; + } /* swtich (standard) */ + + /* Check insertion of the Reed-Solomon parity bytes */ + RR16(devAddr, FEC_OC_MODE__A, &fecOcRegMode); + RR16(devAddr, FEC_OC_IPR_MODE__A, &fecOcRegIprMode); + if (cfgData->insertRSByte == TRUE) { + /* enable parity symbol forward */ + fecOcRegMode |= FEC_OC_MODE_PARITY__M; + /* MVAL disable during parity bytes */ + fecOcRegIprMode |= FEC_OC_IPR_MODE_MVAL_DIS_PAR__M; + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + rcnRate = 0x004854D3; + break; + case DRX_STANDARD_ITU_B: + fecOcRegMode |= FEC_OC_MODE_TRANSPARENT__M; + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + rcnRate = 0x008945E7; + break; + case DRX_CONSTELLATION_QAM64: + rcnRate = 0x005F64D4; + break; + default: + return (DRX_STS_ERROR); + } + break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_C: + /* insertRSByte = TRUE -> coef = 188/188 -> 1, RS bits are in MPEG output */ + rcnRate = + (Frac28 + (maxBitRate, + (u32_t) (commonAttr->sysClockFreq / 8))) / + 188; + break; + default: + return (DRX_STS_ERROR); + } /* extAttr->standard */ + } else { /* insertRSByte == FALSE */ + + /* disable parity symbol forward */ + fecOcRegMode &= (~FEC_OC_MODE_PARITY__M); + /* MVAL enable during parity bytes */ + fecOcRegIprMode &= (~FEC_OC_IPR_MODE_MVAL_DIS_PAR__M); + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + rcnRate = 0x0041605C; + break; + case DRX_STANDARD_ITU_B: + fecOcRegMode &= (~FEC_OC_MODE_TRANSPARENT__M); + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + rcnRate = 0x0082D6A0; + break; + case DRX_CONSTELLATION_QAM64: + rcnRate = 0x005AEC1A; + break; + default: + return (DRX_STS_ERROR); + } + break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_C: + /* insertRSByte = FALSE -> coef = 188/204, RS bits not in MPEG output */ + rcnRate = + (Frac28 + (maxBitRate, + (u32_t) (commonAttr->sysClockFreq / 8))) / + 204; + break; + default: + return (DRX_STS_ERROR); + } /* extAttr->standard */ + } + + if (cfgData->enableParallel == TRUE) { /* MPEG data output is paralel -> clear ipr_mode[0] */ + fecOcRegIprMode &= (~(FEC_OC_IPR_MODE_SERIAL__M)); + } else { /* MPEG data output is serial -> set ipr_mode[0] */ + fecOcRegIprMode |= FEC_OC_IPR_MODE_SERIAL__M; + } + + /* Control slective inversion of output bits */ + if (cfgData->invertDATA == TRUE) { + fecOcRegIprInvert |= InvertDataMask; + } else { + fecOcRegIprInvert &= (~(InvertDataMask)); + } + + if (cfgData->invertERR == TRUE) { + fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MERR__M; + } else { + fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MERR__M)); + } + + if (cfgData->invertSTR == TRUE) { + fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MSTRT__M; + } else { + fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MSTRT__M)); + } + + if (cfgData->invertVAL == TRUE) { + fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MVAL__M; + } else { + fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MVAL__M)); + } + + if (cfgData->invertCLK == TRUE) { + fecOcRegIprInvert |= FEC_OC_IPR_INVERT_MCLK__M; + } else { + fecOcRegIprInvert &= (~(FEC_OC_IPR_INVERT_MCLK__M)); + } + + if (cfgData->staticCLK == TRUE) { /* Static mode */ + u32_t dtoRate = 0; + u32_t bitRate = 0; + u16_t fecOcDtoBurstLen = 0; + u16_t fecOcDtoPeriod = 0; + + fecOcDtoBurstLen = FEC_OC_DTO_BURST_LEN__PRE; + + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + fecOcDtoPeriod = 4; + if (cfgData->insertRSByte == TRUE) { + fecOcDtoBurstLen = 208; + } + break; + case DRX_STANDARD_ITU_A: + { + u32_t symbolRateTh = 6400000; + if (cfgData->insertRSByte == TRUE) { + fecOcDtoBurstLen = 204; + symbolRateTh = 5900000; + } + if (extAttr->currSymbolRate >= + symbolRateTh) { + fecOcDtoPeriod = 0; + } else { + fecOcDtoPeriod = 1; + } + } + break; + case DRX_STANDARD_ITU_B: + fecOcDtoPeriod = 1; + if (cfgData->insertRSByte == TRUE) { + fecOcDtoBurstLen = 128; + } + break; + case DRX_STANDARD_ITU_C: + fecOcDtoPeriod = 1; + if (cfgData->insertRSByte == TRUE) { + fecOcDtoBurstLen = 204; + } + break; + default: + return (DRX_STS_ERROR); + } + bitRate = + commonAttr->sysClockFreq * 1000 / (fecOcDtoPeriod + + 2); + dtoRate = + Frac28(bitRate, commonAttr->sysClockFreq * 1000); + dtoRate >>= 3; + WR16(devAddr, FEC_OC_DTO_RATE_HI__A, + (u16_t) ((dtoRate >> 16) & FEC_OC_DTO_RATE_HI__M)); + WR16(devAddr, FEC_OC_DTO_RATE_LO__A, + (u16_t) (dtoRate & FEC_OC_DTO_RATE_LO_RATE_LO__M)); + WR16(devAddr, FEC_OC_DTO_MODE__A, + FEC_OC_DTO_MODE_DYNAMIC__M | + FEC_OC_DTO_MODE_OFFSET_ENABLE__M); + WR16(devAddr, FEC_OC_FCT_MODE__A, + FEC_OC_FCT_MODE_RAT_ENA__M | + FEC_OC_FCT_MODE_VIRT_ENA__M); + WR16(devAddr, FEC_OC_DTO_BURST_LEN__A, + fecOcDtoBurstLen); + if (extAttr->mpegOutputClockRate != + DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO) + fecOcDtoPeriod = + extAttr->mpegOutputClockRate - 1; + WR16(devAddr, FEC_OC_DTO_PERIOD__A, fecOcDtoPeriod); + } else { /* Dynamic mode */ + + WR16(devAddr, FEC_OC_DTO_MODE__A, + FEC_OC_DTO_MODE_DYNAMIC__M); + WR16(devAddr, FEC_OC_FCT_MODE__A, 0); + } + + WR32(devAddr, FEC_OC_RCN_CTL_RATE_LO__A, rcnRate); + + /* Write appropriate registers with requested configuration */ + WR16(devAddr, FEC_OC_MODE__A, fecOcRegMode); + WR16(devAddr, FEC_OC_IPR_MODE__A, fecOcRegIprMode); + WR16(devAddr, FEC_OC_IPR_INVERT__A, fecOcRegIprInvert); + + /* enabling for both parallel and serial now */ + /* Write magic word to enable pdr reg write */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0xFABA); + /* Set MPEG TS pads to outputmode */ + WR16(devAddr, SIO_PDR_MSTRT_CFG__A, 0x0013); + WR16(devAddr, SIO_PDR_MERR_CFG__A, 0x0013); + WR16(devAddr, SIO_PDR_MCLK_CFG__A, MPEG_OUTPUT_CLK_DRIVE_STRENGTH << SIO_PDR_MCLK_CFG_DRIVE__B - | 0x03 << SIO_PDR_MCLK_CFG_MODE__B ); - WR16 ( devAddr, SIO_PDR_MVAL_CFG__A, 0x0013); - sioPdrMdCfg = MPEG_SERIAL_OUTPUT_PIN_DRIVE_STRENGTH << SIO_PDR_MD0_CFG_DRIVE__B - |0x03 << SIO_PDR_MD0_CFG_MODE__B; - WR16 ( devAddr, SIO_PDR_MD0_CFG__A, sioPdrMdCfg); - if ( cfgData->enableParallel == TRUE ) - { /* MPEG data output is paralel -> set MD1 to MD7 to output mode */ - sioPdrMdCfg = MPEG_PARALLEL_OUTPUT_PIN_DRIVE_STRENGTH << SIO_PDR_MD0_CFG_DRIVE__B - |0x03 << SIO_PDR_MD0_CFG_MODE__B; - WR16 ( devAddr, SIO_PDR_MD0_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD1_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD2_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD3_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD4_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD5_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD6_CFG__A, sioPdrMdCfg); - WR16 ( devAddr, SIO_PDR_MD7_CFG__A, sioPdrMdCfg); - } - else - { /* MPEG data output is serial -> set MD1 to MD7 to tri-state */ - WR16 ( devAddr, SIO_PDR_MD1_CFG__A, 0x0000); - WR16 ( devAddr, SIO_PDR_MD2_CFG__A, 0x0000); - WR16 ( devAddr, SIO_PDR_MD3_CFG__A, 0x0000); - WR16 ( devAddr, SIO_PDR_MD4_CFG__A, 0x0000); - WR16 ( devAddr, SIO_PDR_MD5_CFG__A, 0x0000); - WR16 ( devAddr, SIO_PDR_MD6_CFG__A, 0x0000); - WR16 ( devAddr, SIO_PDR_MD7_CFG__A, 0x0000); - } - /* Enable Monitor Bus output over MPEG pads and ctl input */ - WR16 ( devAddr, SIO_PDR_MON_CFG__A, 0x0000); - /* Write nomagic word to enable pdr reg write */ - WR16 ( devAddr, SIO_TOP_COMM_KEY__A, 0x0000); - } - else - { - /* Write magic word to enable pdr reg write */ - WR16 ( devAddr, SIO_TOP_COMM_KEY__A , 0xFABA); - /* Set MPEG TS pads to inputmode */ - WR16 ( devAddr, SIO_PDR_MSTRT_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MERR_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MCLK_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MVAL_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD0_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD1_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD2_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD3_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD4_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD5_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD6_CFG__A , 0x0000); - WR16 ( devAddr, SIO_PDR_MD7_CFG__A , 0x0000); - /* Enable Monitor Bus output over MPEG pads and ctl input */ - WR16 ( devAddr, SIO_PDR_MON_CFG__A , 0x0000); - /* Write nomagic word to enable pdr reg write */ - WR16 ( devAddr, SIO_TOP_COMM_KEY__A , 0x0000); - } - - /* save values for restore after re-acquire */ - commonAttr->mpegCfg.enableMPEGOutput = cfgData->enableMPEGOutput; - commonAttr->mpegCfg.insertRSByte = cfgData->insertRSByte; - commonAttr->mpegCfg.enableParallel = cfgData->enableParallel; - commonAttr->mpegCfg.invertDATA = cfgData->invertDATA; - commonAttr->mpegCfg.invertERR = cfgData->invertERR; - commonAttr->mpegCfg.invertSTR = cfgData->invertSTR; - commonAttr->mpegCfg.invertVAL = cfgData->invertVAL; - commonAttr->mpegCfg.invertCLK = cfgData->invertCLK; - commonAttr->mpegCfg.staticCLK = cfgData->staticCLK; - commonAttr->mpegCfg.bitrate = cfgData->bitrate; - - return (DRX_STS_OK); + | 0x03 << SIO_PDR_MCLK_CFG_MODE__B); + WR16(devAddr, SIO_PDR_MVAL_CFG__A, 0x0013); + sioPdrMdCfg = + MPEG_SERIAL_OUTPUT_PIN_DRIVE_STRENGTH << + SIO_PDR_MD0_CFG_DRIVE__B | 0x03 << SIO_PDR_MD0_CFG_MODE__B; + WR16(devAddr, SIO_PDR_MD0_CFG__A, sioPdrMdCfg); + if (cfgData->enableParallel == TRUE) { /* MPEG data output is paralel -> set MD1 to MD7 to output mode */ + sioPdrMdCfg = + MPEG_PARALLEL_OUTPUT_PIN_DRIVE_STRENGTH << + SIO_PDR_MD0_CFG_DRIVE__B | 0x03 << + SIO_PDR_MD0_CFG_MODE__B; + WR16(devAddr, SIO_PDR_MD0_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD1_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD2_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD3_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD4_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD5_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD6_CFG__A, sioPdrMdCfg); + WR16(devAddr, SIO_PDR_MD7_CFG__A, sioPdrMdCfg); + } else { /* MPEG data output is serial -> set MD1 to MD7 to tri-state */ + WR16(devAddr, SIO_PDR_MD1_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD2_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD3_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD4_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD5_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD6_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD7_CFG__A, 0x0000); + } + /* Enable Monitor Bus output over MPEG pads and ctl input */ + WR16(devAddr, SIO_PDR_MON_CFG__A, 0x0000); + /* Write nomagic word to enable pdr reg write */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0x0000); + } else { + /* Write magic word to enable pdr reg write */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0xFABA); + /* Set MPEG TS pads to inputmode */ + WR16(devAddr, SIO_PDR_MSTRT_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MERR_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MCLK_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MVAL_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD0_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD1_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD2_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD3_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD4_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD5_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD6_CFG__A, 0x0000); + WR16(devAddr, SIO_PDR_MD7_CFG__A, 0x0000); + /* Enable Monitor Bus output over MPEG pads and ctl input */ + WR16(devAddr, SIO_PDR_MON_CFG__A, 0x0000); + /* Write nomagic word to enable pdr reg write */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0x0000); + } + + /* save values for restore after re-acquire */ + commonAttr->mpegCfg.enableMPEGOutput = cfgData->enableMPEGOutput; + commonAttr->mpegCfg.insertRSByte = cfgData->insertRSByte; + commonAttr->mpegCfg.enableParallel = cfgData->enableParallel; + commonAttr->mpegCfg.invertDATA = cfgData->invertDATA; + commonAttr->mpegCfg.invertERR = cfgData->invertERR; + commonAttr->mpegCfg.invertSTR = cfgData->invertSTR; + commonAttr->mpegCfg.invertVAL = cfgData->invertVAL; + commonAttr->mpegCfg.invertCLK = cfgData->invertCLK; + commonAttr->mpegCfg.staticCLK = cfgData->staticCLK; + commonAttr->mpegCfg.bitrate = cfgData->bitrate; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3221,46 +3038,44 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgMPEGOutput( pDRXDemodInstance_t demod, - pDRXCfgMPEGOutput_t cfgData ) +CtrlGetCfgMPEGOutput(pDRXDemodInstance_t demod, pDRXCfgMPEGOutput_t cfgData) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; - u32_t rateReg = 0; - u32_t data64Hi = 0; - u32_t data64Lo = 0; - - if( cfgData == NULL ) - { - return (DRX_STS_INVALID_ARG); - } - devAddr = demod->myI2CDevAddr; - commonAttr = demod->myCommonAttr; - - cfgData->enableMPEGOutput = commonAttr->mpegCfg.enableMPEGOutput; - cfgData->insertRSByte = commonAttr->mpegCfg.insertRSByte; - cfgData->enableParallel = commonAttr->mpegCfg.enableParallel; - cfgData->invertDATA = commonAttr->mpegCfg.invertDATA; - cfgData->invertERR = commonAttr->mpegCfg.invertERR; - cfgData->invertSTR = commonAttr->mpegCfg.invertSTR; - cfgData->invertVAL = commonAttr->mpegCfg.invertVAL; - cfgData->invertCLK = commonAttr->mpegCfg.invertCLK; - cfgData->staticCLK = commonAttr->mpegCfg.staticCLK; - cfgData->bitrate = 0; - - CHK_ERROR( CtrlLockStatus( demod, &lockStatus) ); - if ( (lockStatus == DRX_LOCKED) ) - { - RR32 (devAddr, FEC_OC_RCN_DYN_RATE_LO__A, &rateReg); - /* Frcn_rate = rateReg * Fsys / 2 ^ 25 */ - Mult32 ( rateReg, commonAttr->sysClockFreq * 1000, &data64Hi, &data64Lo ); - cfgData->bitrate = (data64Hi << 7) | (data64Lo >> 25); - } + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; + u32_t rateReg = 0; + u32_t data64Hi = 0; + u32_t data64Lo = 0; + + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + devAddr = demod->myI2CDevAddr; + commonAttr = demod->myCommonAttr; + + cfgData->enableMPEGOutput = commonAttr->mpegCfg.enableMPEGOutput; + cfgData->insertRSByte = commonAttr->mpegCfg.insertRSByte; + cfgData->enableParallel = commonAttr->mpegCfg.enableParallel; + cfgData->invertDATA = commonAttr->mpegCfg.invertDATA; + cfgData->invertERR = commonAttr->mpegCfg.invertERR; + cfgData->invertSTR = commonAttr->mpegCfg.invertSTR; + cfgData->invertVAL = commonAttr->mpegCfg.invertVAL; + cfgData->invertCLK = commonAttr->mpegCfg.invertCLK; + cfgData->staticCLK = commonAttr->mpegCfg.staticCLK; + cfgData->bitrate = 0; + + CHK_ERROR(CtrlLockStatus(demod, &lockStatus)); + if ((lockStatus == DRX_LOCKED)) { + RR32(devAddr, FEC_OC_RCN_DYN_RATE_LO__A, &rateReg); + /* Frcn_rate = rateReg * Fsys / 2 ^ 25 */ + Mult32(rateReg, commonAttr->sysClockFreq * 1000, &data64Hi, + &data64Lo); + cfgData->bitrate = (data64Hi << 7) | (data64Lo >> 25); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3280,44 +3095,42 @@ rw_error: * This routine should be called during a set channel of QAM/VSB * */ -static DRXStatus_t -SetMPEGTEIHandling( pDRXDemodInstance_t demod ) +static DRXStatus_t SetMPEGTEIHandling(pDRXDemodInstance_t demod) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - u16_t fecOcDprMode = 0; - u16_t fecOcSncMode = 0; - u16_t fecOcEmsMode = 0; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; - - RR16( devAddr, FEC_OC_DPR_MODE__A, &fecOcDprMode ); - RR16( devAddr, FEC_OC_SNC_MODE__A, &fecOcSncMode ); - RR16( devAddr, FEC_OC_EMS_MODE__A, &fecOcEmsMode ); - - /* reset to default, allow TEI bit to be changed */ - fecOcDprMode &= (~FEC_OC_DPR_MODE_ERR_DISABLE__M); - fecOcSncMode &= (~(FEC_OC_SNC_MODE_ERROR_CTL__M | - FEC_OC_SNC_MODE_CORR_DISABLE__M)); - fecOcEmsMode &= (~FEC_OC_EMS_MODE_MODE__M); - - if ( extAttr->disableTEIhandling == TRUE ) - { - /* do not change TEI bit */ - fecOcDprMode |= FEC_OC_DPR_MODE_ERR_DISABLE__M; - fecOcSncMode |= FEC_OC_SNC_MODE_CORR_DISABLE__M | - ( (0x2)<<(FEC_OC_SNC_MODE_ERROR_CTL__B)); - fecOcEmsMode |= ((0x01)<<(FEC_OC_EMS_MODE_MODE__B)); - } - - WR16( devAddr, FEC_OC_DPR_MODE__A, fecOcDprMode ); - WR16( devAddr, FEC_OC_SNC_MODE__A, fecOcSncMode ); - WR16( devAddr, FEC_OC_EMS_MODE__A, fecOcEmsMode ); - - return (DRX_STS_OK); + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + u16_t fecOcDprMode = 0; + u16_t fecOcSncMode = 0; + u16_t fecOcEmsMode = 0; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + RR16(devAddr, FEC_OC_DPR_MODE__A, &fecOcDprMode); + RR16(devAddr, FEC_OC_SNC_MODE__A, &fecOcSncMode); + RR16(devAddr, FEC_OC_EMS_MODE__A, &fecOcEmsMode); + + /* reset to default, allow TEI bit to be changed */ + fecOcDprMode &= (~FEC_OC_DPR_MODE_ERR_DISABLE__M); + fecOcSncMode &= (~(FEC_OC_SNC_MODE_ERROR_CTL__M | + FEC_OC_SNC_MODE_CORR_DISABLE__M)); + fecOcEmsMode &= (~FEC_OC_EMS_MODE_MODE__M); + + if (extAttr->disableTEIhandling == TRUE) { + /* do not change TEI bit */ + fecOcDprMode |= FEC_OC_DPR_MODE_ERR_DISABLE__M; + fecOcSncMode |= FEC_OC_SNC_MODE_CORR_DISABLE__M | + ((0x2) << (FEC_OC_SNC_MODE_ERROR_CTL__B)); + fecOcEmsMode |= ((0x01) << (FEC_OC_EMS_MODE_MODE__B)); + } + + WR16(devAddr, FEC_OC_DPR_MODE__A, fecOcDprMode); + WR16(devAddr, FEC_OC_SNC_MODE__A, fecOcSncMode); + WR16(devAddr, FEC_OC_EMS_MODE__A, fecOcEmsMode); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3330,32 +3143,30 @@ rw_error: * This routine should be called during a set channel of QAM/VSB * */ -static DRXStatus_t -BitReverseMPEGOutput ( pDRXDemodInstance_t demod ) +static DRXStatus_t BitReverseMPEGOutput(pDRXDemodInstance_t demod) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - u16_t fecOcIprMode = 0; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + u16_t fecOcIprMode = 0; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - RR16( devAddr, FEC_OC_IPR_MODE__A, &fecOcIprMode ); + RR16(devAddr, FEC_OC_IPR_MODE__A, &fecOcIprMode); - /* reset to default (normal bit order) */ - fecOcIprMode &= (~FEC_OC_IPR_MODE_REVERSE_ORDER__M); + /* reset to default (normal bit order) */ + fecOcIprMode &= (~FEC_OC_IPR_MODE_REVERSE_ORDER__M); - if ( extAttr->bitReverseMpegOutout == TRUE) - { - /* reverse bit order */ - fecOcIprMode |= FEC_OC_IPR_MODE_REVERSE_ORDER__M; - } + if (extAttr->bitReverseMpegOutout == TRUE) { + /* reverse bit order */ + fecOcIprMode |= FEC_OC_IPR_MODE_REVERSE_ORDER__M; + } - WR16( devAddr, FEC_OC_IPR_MODE__A, fecOcIprMode ); + WR16(devAddr, FEC_OC_IPR_MODE__A, fecOcIprMode); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3368,23 +3179,22 @@ rw_error: * This routine should be called during a set channel of QAM/VSB * */ -static DRXStatus_t -SetMPEGOutputClockRate ( pDRXDemodInstance_t demod ) +static DRXStatus_t SetMPEGOutputClockRate(pDRXDemodInstance_t demod) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - if ( extAttr->mpegOutputClockRate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO ) - { - WR16 ( devAddr, FEC_OC_DTO_PERIOD__A, extAttr->mpegOutputClockRate - 1 ); - } + if (extAttr->mpegOutputClockRate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO) { + WR16(devAddr, FEC_OC_DTO_PERIOD__A, + extAttr->mpegOutputClockRate - 1); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3397,32 +3207,30 @@ rw_error: * This routine should be called during a set channel of QAM/VSB * */ -static DRXStatus_t -SetMPEGStartWidth ( pDRXDemodInstance_t demod ) +static DRXStatus_t SetMPEGStartWidth(pDRXDemodInstance_t demod) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - u16_t fecOcCommMb = 0; - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + u16_t fecOcCommMb = 0; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) NULL; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; - commonAttr = demod->myCommonAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = demod->myCommonAttr; - if ((commonAttr->mpegCfg.staticCLK == TRUE) && (commonAttr->mpegCfg.enableParallel == FALSE)) - { - RR16 ( devAddr, FEC_OC_COMM_MB__A, &fecOcCommMb ); - fecOcCommMb &= ~FEC_OC_COMM_MB_CTL_ON; - if ( extAttr->mpegStartWidth == DRXJ_MPEG_START_WIDTH_8CLKCYC ) - { - fecOcCommMb |= FEC_OC_COMM_MB_CTL_ON; - } - WR16 ( devAddr, FEC_OC_COMM_MB__A, fecOcCommMb); - } - - return (DRX_STS_OK); + if ((commonAttr->mpegCfg.staticCLK == TRUE) + && (commonAttr->mpegCfg.enableParallel == FALSE)) { + RR16(devAddr, FEC_OC_COMM_MB__A, &fecOcCommMb); + fecOcCommMb &= ~FEC_OC_COMM_MB_CTL_ON; + if (extAttr->mpegStartWidth == DRXJ_MPEG_START_WIDTH_8CLKCYC) { + fecOcCommMb |= FEC_OC_COMM_MB_CTL_ON; + } + WR16(devAddr, FEC_OC_COMM_MB__A, fecOcCommMb); + } + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3438,41 +3246,39 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgMpegOutputMisc( - pDRXDemodInstance_t demod, - pDRXJCfgMpegOutputMisc_t cfgData ) +CtrlSetCfgMpegOutputMisc(pDRXDemodInstance_t demod, + pDRXJCfgMpegOutputMisc_t cfgData) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); + pDRXJData_t extAttr = (pDRXJData_t) (NULL); - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } - - extAttr = (pDRXJData_t) demod -> myExtAttr; - - /* - Set disable TEI bit handling flag. - TEI must be left untouched by device in case of BER measurements using - external equipment that is unable to ignore the TEI bit in the TS. - Default will FALSE (enable TEI bit handling). - Reverse output bit order. Default is FALSE (msb on MD7 (parallel) or out first (serial)). - Set clock rate. Default is auto that is derived from symbol rate. - The flags and values will also be used to set registers during a set channel. - */ - extAttr->disableTEIhandling = cfgData->disableTEIHandling; - extAttr->bitReverseMpegOutout = cfgData->bitReverseMpegOutout; - extAttr->mpegOutputClockRate = cfgData->mpegOutputClockRate; - extAttr->mpegStartWidth = cfgData->mpegStartWidth; - /* Don't care what the active standard is, activate setting immediatly */ - CHK_ERROR ( SetMPEGTEIHandling( demod ) ); - CHK_ERROR ( BitReverseMPEGOutput( demod ) ); - CHK_ERROR ( SetMPEGOutputClockRate( demod ) ); - CHK_ERROR ( SetMPEGStartWidth ( demod ) ); - - return (DRX_STS_OK); + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* + Set disable TEI bit handling flag. + TEI must be left untouched by device in case of BER measurements using + external equipment that is unable to ignore the TEI bit in the TS. + Default will FALSE (enable TEI bit handling). + Reverse output bit order. Default is FALSE (msb on MD7 (parallel) or out first (serial)). + Set clock rate. Default is auto that is derived from symbol rate. + The flags and values will also be used to set registers during a set channel. + */ + extAttr->disableTEIhandling = cfgData->disableTEIHandling; + extAttr->bitReverseMpegOutout = cfgData->bitReverseMpegOutout; + extAttr->mpegOutputClockRate = cfgData->mpegOutputClockRate; + extAttr->mpegStartWidth = cfgData->mpegStartWidth; + /* Don't care what the active standard is, activate setting immediatly */ + CHK_ERROR(SetMPEGTEIHandling(demod)); + CHK_ERROR(BitReverseMPEGOutput(demod)); + CHK_ERROR(SetMPEGOutputClockRate(demod)); + CHK_ERROR(SetMPEGStartWidth(demod)); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3490,35 +3296,31 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgMpegOutputMisc( - pDRXDemodInstance_t demod, - pDRXJCfgMpegOutputMisc_t cfgData ) +CtrlGetCfgMpegOutputMisc(pDRXDemodInstance_t demod, + pDRXJCfgMpegOutputMisc_t cfgData) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - u16_t data = 0; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + u16_t data = 0; - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } - - extAttr = (pDRXJData_t) demod -> myExtAttr; - cfgData->disableTEIHandling = extAttr->disableTEIhandling; - cfgData->bitReverseMpegOutout = extAttr->bitReverseMpegOutout; - cfgData->mpegStartWidth = extAttr->mpegStartWidth; - if (extAttr->mpegOutputClockRate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO) - { - cfgData->mpegOutputClockRate = extAttr->mpegOutputClockRate; - } - else - { - RR16 ( demod->myI2CDevAddr, FEC_OC_DTO_PERIOD__A, &data ); - cfgData->mpegOutputClockRate = (DRXJMpegOutputClockRate_t) (data + 1); - } + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + + extAttr = (pDRXJData_t) demod->myExtAttr; + cfgData->disableTEIHandling = extAttr->disableTEIhandling; + cfgData->bitReverseMpegOutout = extAttr->bitReverseMpegOutout; + cfgData->mpegStartWidth = extAttr->mpegStartWidth; + if (extAttr->mpegOutputClockRate != DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO) { + cfgData->mpegOutputClockRate = extAttr->mpegOutputClockRate; + } else { + RR16(demod->myI2CDevAddr, FEC_OC_DTO_PERIOD__A, &data); + cfgData->mpegOutputClockRate = + (DRXJMpegOutputClockRate_t) (data + 1); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*----------------------------------------------------------------------------*/ @@ -3536,29 +3338,28 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgHwCfg( pDRXDemodInstance_t demod, - pDRXJCfgHwCfg_t cfgData ) +CtrlGetCfgHwCfg(pDRXDemodInstance_t demod, pDRXJCfgHwCfg_t cfgData) { - u16_t data = 0; - pDRXJData_t extAttr = (pDRXJData_t)(NULL); + u16_t data = 0; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } - extAttr = (pDRXJData_t) demod -> myExtAttr; - WR16 ( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0xFABA); - RR16 ( demod->myI2CDevAddr, SIO_PDR_OHW_CFG__A, &data ); - WR16 ( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); + extAttr = (pDRXJData_t) demod->myExtAttr; + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0xFABA); + RR16(demod->myI2CDevAddr, SIO_PDR_OHW_CFG__A, &data); + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); - cfgData->i2cSpeed = (DRXJI2CSpeed_t)((data >> 6) & 0x1); - cfgData->xtalFreq = (DRXJXtalFreq_t)(data & 0x3); + cfgData->i2cSpeed = (DRXJI2CSpeed_t) ((data >> 6) & 0x1); + cfgData->xtalFreq = (DRXJXtalFreq_t) (data & 0x3); - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } + /*----------------------------------------------------------------------------*/ /* miscellaneous configuartions - end */ /*----------------------------------------------------------------------------*/ @@ -3573,115 +3374,109 @@ CtrlGetCfgHwCfg( pDRXDemodInstance_t demod, * \param UIOCfg Pointer to a configuration setting for a certain UIO. * \return DRXStatus_t. */ -static DRXStatus_t -CtrlSetUIOCfg( pDRXDemodInstance_t demod, pDRXUIOCfg_t UIOCfg ) +static DRXStatus_t CtrlSetUIOCfg(pDRXDemodInstance_t demod, pDRXUIOCfg_t UIOCfg) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); + pDRXJData_t extAttr = (pDRXJData_t) (NULL); - if (( UIOCfg == NULL ) || ( demod == NULL )) - { - return DRX_STS_INVALID_ARG; - } - extAttr = (pDRXJData_t)demod -> myExtAttr; + if ((UIOCfg == NULL) || (demod == NULL)) { + return DRX_STS_INVALID_ARG; + } + extAttr = (pDRXJData_t) demod->myExtAttr; - /* Write magic word to enable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); - switch ( UIOCfg->uio ) { + /* Write magic word to enable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + switch (UIOCfg->uio) { /*====================================================================*/ - case DRX_UIO1 : - /* DRX_UIO1: SMA_TX UIO-1 */ - if (extAttr->hasSMATX != TRUE) - return DRX_STS_ERROR; - switch ( UIOCfg->mode ) - { - case DRX_UIO_MODE_FIRMWARE_SMA: /* falltrough */ - case DRX_UIO_MODE_FIRMWARE_SAW: /* falltrough */ - case DRX_UIO_MODE_READWRITE: - extAttr->uioSmaTxMode = UIOCfg->mode; - break; - case DRX_UIO_MODE_DISABLE: - extAttr->uioSmaTxMode = UIOCfg->mode; - /* pad configuration register is set 0 - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, 0 ); - break; - default: - return DRX_STS_INVALID_ARG; - } /* switch ( UIOCfg->mode ) */ - break; + case DRX_UIO1: + /* DRX_UIO1: SMA_TX UIO-1 */ + if (extAttr->hasSMATX != TRUE) + return DRX_STS_ERROR; + switch (UIOCfg->mode) { + case DRX_UIO_MODE_FIRMWARE_SMA: /* falltrough */ + case DRX_UIO_MODE_FIRMWARE_SAW: /* falltrough */ + case DRX_UIO_MODE_READWRITE: + extAttr->uioSmaTxMode = UIOCfg->mode; + break; + case DRX_UIO_MODE_DISABLE: + extAttr->uioSmaTxMode = UIOCfg->mode; + /* pad configuration register is set 0 - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, 0); + break; + default: + return DRX_STS_INVALID_ARG; + } /* switch ( UIOCfg->mode ) */ + break; /*====================================================================*/ - case DRX_UIO2 : - /* DRX_UIO2: SMA_RX UIO-2 */ - if (extAttr->hasSMARX != TRUE) - return DRX_STS_ERROR; - switch ( UIOCfg->mode ) - { - case DRX_UIO_MODE_FIRMWARE0: /* falltrough */ - case DRX_UIO_MODE_READWRITE: - extAttr->uioSmaRxMode = UIOCfg->mode; - break; - case DRX_UIO_MODE_DISABLE: - extAttr->uioSmaRxMode = UIOCfg->mode; - /* pad configuration register is set 0 - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_RX_CFG__A, 0 ); - break; - default: - return DRX_STS_INVALID_ARG; - break; - } /* switch ( UIOCfg->mode ) */ - break; + case DRX_UIO2: + /* DRX_UIO2: SMA_RX UIO-2 */ + if (extAttr->hasSMARX != TRUE) + return DRX_STS_ERROR; + switch (UIOCfg->mode) { + case DRX_UIO_MODE_FIRMWARE0: /* falltrough */ + case DRX_UIO_MODE_READWRITE: + extAttr->uioSmaRxMode = UIOCfg->mode; + break; + case DRX_UIO_MODE_DISABLE: + extAttr->uioSmaRxMode = UIOCfg->mode; + /* pad configuration register is set 0 - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_RX_CFG__A, 0); + break; + default: + return DRX_STS_INVALID_ARG; + break; + } /* switch ( UIOCfg->mode ) */ + break; /*====================================================================*/ - case DRX_UIO3 : - /* DRX_UIO3: GPIO UIO-3 */ - if (extAttr->hasGPIO != TRUE) - return DRX_STS_ERROR; - switch ( UIOCfg->mode ) - { - case DRX_UIO_MODE_FIRMWARE0: /* falltrough */ - case DRX_UIO_MODE_READWRITE: - extAttr->uioGPIOMode = UIOCfg->mode; - break; - case DRX_UIO_MODE_DISABLE: - extAttr->uioGPIOMode = UIOCfg->mode; - /* pad configuration register is set 0 - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_GPIO_CFG__A, 0 ); - break; - default: - return DRX_STS_INVALID_ARG; - break; - } /* switch ( UIOCfg->mode ) */ - break; + case DRX_UIO3: + /* DRX_UIO3: GPIO UIO-3 */ + if (extAttr->hasGPIO != TRUE) + return DRX_STS_ERROR; + switch (UIOCfg->mode) { + case DRX_UIO_MODE_FIRMWARE0: /* falltrough */ + case DRX_UIO_MODE_READWRITE: + extAttr->uioGPIOMode = UIOCfg->mode; + break; + case DRX_UIO_MODE_DISABLE: + extAttr->uioGPIOMode = UIOCfg->mode; + /* pad configuration register is set 0 - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_GPIO_CFG__A, 0); + break; + default: + return DRX_STS_INVALID_ARG; + break; + } /* switch ( UIOCfg->mode ) */ + break; /*====================================================================*/ - case DRX_UIO4 : - /* DRX_UIO4: IRQN UIO-4 */ - if (extAttr->hasIRQN != TRUE) - return DRX_STS_ERROR; - switch ( UIOCfg->mode ) - { - case DRX_UIO_MODE_READWRITE: - extAttr->uioIRQNMode = UIOCfg->mode; - break; - case DRX_UIO_MODE_DISABLE: - /* pad configuration register is set 0 - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_IRQN_CFG__A, 0 ); - extAttr->uioIRQNMode = UIOCfg->mode; - break; - case DRX_UIO_MODE_FIRMWARE0: /* falltrough */ - default: - return DRX_STS_INVALID_ARG; - break; - } /* switch ( UIOCfg->mode ) */ - break; + case DRX_UIO4: + /* DRX_UIO4: IRQN UIO-4 */ + if (extAttr->hasIRQN != TRUE) + return DRX_STS_ERROR; + switch (UIOCfg->mode) { + case DRX_UIO_MODE_READWRITE: + extAttr->uioIRQNMode = UIOCfg->mode; + break; + case DRX_UIO_MODE_DISABLE: + /* pad configuration register is set 0 - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_IRQN_CFG__A, 0); + extAttr->uioIRQNMode = UIOCfg->mode; + break; + case DRX_UIO_MODE_FIRMWARE0: /* falltrough */ + default: + return DRX_STS_INVALID_ARG; + break; + } /* switch ( UIOCfg->mode ) */ + break; /*====================================================================*/ - default: - return DRX_STS_INVALID_ARG; - } /* switch ( UIOCfg->uio ) */ + default: + return DRX_STS_INVALID_ARG; + } /* switch ( UIOCfg->uio ) */ - /* Write magic word to disable pdr reg write */ - WR16 ( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); + /* Write magic word to disable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -3692,45 +3487,40 @@ CtrlSetUIOCfg( pDRXDemodInstance_t demod, pDRXUIOCfg_t UIOCfg ) * \param UIOCfg Pointer to a configuration setting for a certain UIO. * \return DRXStatus_t. */ -static DRXStatus_t -CtrlGetUIOCfg( pDRXDemodInstance_t demod, pDRXUIOCfg_t UIOCfg ) +static DRXStatus_t CtrlGetUIOCfg(pDRXDemodInstance_t demod, pDRXUIOCfg_t UIOCfg) { - pDRXJData_t extAttr = (pDRXJData_t) NULL; - pDRXUIOMode_t UIOMode[4] = {NULL}; - pBool_t UIOAvailable[4] = {NULL}; + pDRXJData_t extAttr = (pDRXJData_t) NULL; + pDRXUIOMode_t UIOMode[4] = { NULL }; + pBool_t UIOAvailable[4] = { NULL }; - extAttr = demod->myExtAttr; + extAttr = demod->myExtAttr; - UIOMode[DRX_UIO1] = &extAttr->uioSmaTxMode; - UIOMode[DRX_UIO2] = &extAttr->uioSmaRxMode; - UIOMode[DRX_UIO3] = &extAttr->uioGPIOMode; - UIOMode[DRX_UIO4] = &extAttr->uioIRQNMode; + UIOMode[DRX_UIO1] = &extAttr->uioSmaTxMode; + UIOMode[DRX_UIO2] = &extAttr->uioSmaRxMode; + UIOMode[DRX_UIO3] = &extAttr->uioGPIOMode; + UIOMode[DRX_UIO4] = &extAttr->uioIRQNMode; - UIOAvailable[DRX_UIO1] = &extAttr->hasSMATX; - UIOAvailable[DRX_UIO2] = &extAttr->hasSMARX; - UIOAvailable[DRX_UIO3] = &extAttr->hasGPIO; - UIOAvailable[DRX_UIO4] = &extAttr->hasIRQN; + UIOAvailable[DRX_UIO1] = &extAttr->hasSMATX; + UIOAvailable[DRX_UIO2] = &extAttr->hasSMARX; + UIOAvailable[DRX_UIO3] = &extAttr->hasGPIO; + UIOAvailable[DRX_UIO4] = &extAttr->hasIRQN; - if ( UIOCfg == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (UIOCfg == NULL) { + return DRX_STS_INVALID_ARG; + } - if ( ( UIOCfg->uio > DRX_UIO4 ) || - ( UIOCfg->uio < DRX_UIO1 ) ) - { - return DRX_STS_INVALID_ARG; - } + if ((UIOCfg->uio > DRX_UIO4) || (UIOCfg->uio < DRX_UIO1)) { + return DRX_STS_INVALID_ARG; + } - if( *UIOAvailable[UIOCfg->uio] == FALSE ) - { - return DRX_STS_ERROR; - } + if (*UIOAvailable[UIOCfg->uio] == FALSE) { + return DRX_STS_ERROR; + } - UIOCfg->mode = *UIOMode[ UIOCfg->uio ]; + UIOCfg->mode = *UIOMode[UIOCfg->uio]; - return DRX_STS_OK; + return DRX_STS_OK; } /** @@ -3741,155 +3531,144 @@ CtrlGetUIOCfg( pDRXDemodInstance_t demod, pDRXUIOCfg_t UIOCfg ) * \return DRXStatus_t. */ static DRXStatus_t -CtrlUIOWrite( pDRXDemodInstance_t demod, - pDRXUIOData_t UIOData) +CtrlUIOWrite(pDRXDemodInstance_t demod, pDRXUIOData_t UIOData) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - u16_t pinCfgValue = 0; - u16_t value = 0; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + u16_t pinCfgValue = 0; + u16_t value = 0; - if (( UIOData == NULL ) || ( demod == NULL )) - { - return DRX_STS_INVALID_ARG; - } + if ((UIOData == NULL) || (demod == NULL)) { + return DRX_STS_INVALID_ARG; + } - extAttr = (pDRXJData_t)demod -> myExtAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* Write magic word to enable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); - switch ( UIOData->uio ) { + /* Write magic word to enable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + switch (UIOData->uio) { /*====================================================================*/ - case DRX_UIO1: - /* DRX_UIO1: SMA_TX UIO-1 */ - if (extAttr->hasSMATX != TRUE) - return DRX_STS_ERROR; - if ( ( extAttr->uioSmaTxMode != DRX_UIO_MODE_READWRITE ) - && ( extAttr->uioSmaTxMode != DRX_UIO_MODE_FIRMWARE_SAW ) ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0113; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - output mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, pinCfgValue ); - - /* use corresponding bit in io data output registar */ - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, &value ); - if (UIOData->value == FALSE) - { - value &= 0x7FFF; /* write zero to 15th bit - 1st UIO */ - } else { - value |= 0x8000; /* write one to 15th bit - 1st UIO */ - } - /* write back to io data output register */ - WR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, value ); - break; + case DRX_UIO1: + /* DRX_UIO1: SMA_TX UIO-1 */ + if (extAttr->hasSMATX != TRUE) + return DRX_STS_ERROR; + if ((extAttr->uioSmaTxMode != DRX_UIO_MODE_READWRITE) + && (extAttr->uioSmaTxMode != DRX_UIO_MODE_FIRMWARE_SAW)) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0113; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - output mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, pinCfgValue); + + /* use corresponding bit in io data output registar */ + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, &value); + if (UIOData->value == FALSE) { + value &= 0x7FFF; /* write zero to 15th bit - 1st UIO */ + } else { + value |= 0x8000; /* write one to 15th bit - 1st UIO */ + } + /* write back to io data output register */ + WR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, value); + break; /*======================================================================*/ - case DRX_UIO2: - /* DRX_UIO2: SMA_RX UIO-2 */ - if (extAttr->hasSMARX != TRUE) - return DRX_STS_ERROR; - if ( extAttr->uioSmaRxMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0113; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - output mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_RX_CFG__A, pinCfgValue ); - - /* use corresponding bit in io data output registar */ - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, &value ); - if (UIOData->value == FALSE) - { - value &= 0xBFFF; /* write zero to 14th bit - 2nd UIO */ - } else { - value |= 0x4000; /* write one to 14th bit - 2nd UIO */ - } - /* write back to io data output register */ - WR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, value ); - break; + case DRX_UIO2: + /* DRX_UIO2: SMA_RX UIO-2 */ + if (extAttr->hasSMARX != TRUE) + return DRX_STS_ERROR; + if (extAttr->uioSmaRxMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0113; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - output mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_RX_CFG__A, pinCfgValue); + + /* use corresponding bit in io data output registar */ + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, &value); + if (UIOData->value == FALSE) { + value &= 0xBFFF; /* write zero to 14th bit - 2nd UIO */ + } else { + value |= 0x4000; /* write one to 14th bit - 2nd UIO */ + } + /* write back to io data output register */ + WR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, value); + break; /*====================================================================*/ - case DRX_UIO3: - /* DRX_UIO3: ASEL UIO-3 */ - if (extAttr->hasGPIO != TRUE) - return DRX_STS_ERROR; - if ( extAttr->uioGPIOMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0113; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - output mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_GPIO_CFG__A, pinCfgValue ); - - /* use corresponding bit in io data output registar */ - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_HI__A, &value ); - if (UIOData->value == FALSE) - { - value &= 0xFFFB; /* write zero to 2nd bit - 3rd UIO */ - } else { - value |= 0x0004; /* write one to 2nd bit - 3rd UIO */ - } - /* write back to io data output register */ - WR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_HI__A, value ); - break; + case DRX_UIO3: + /* DRX_UIO3: ASEL UIO-3 */ + if (extAttr->hasGPIO != TRUE) + return DRX_STS_ERROR; + if (extAttr->uioGPIOMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0113; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - output mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_GPIO_CFG__A, pinCfgValue); + + /* use corresponding bit in io data output registar */ + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_HI__A, &value); + if (UIOData->value == FALSE) { + value &= 0xFFFB; /* write zero to 2nd bit - 3rd UIO */ + } else { + value |= 0x0004; /* write one to 2nd bit - 3rd UIO */ + } + /* write back to io data output register */ + WR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_HI__A, value); + break; /*=====================================================================*/ - case DRX_UIO4: - /* DRX_UIO4: IRQN UIO-4 */ - if (extAttr->hasIRQN != TRUE) - return DRX_STS_ERROR; - - if ( extAttr->uioIRQNMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0113; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - output mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_IRQN_CFG__A, pinCfgValue ); - - /* use corresponding bit in io data output registar */ - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, &value ); - if (UIOData->value == FALSE) - { - value &= 0xEFFF; /* write zero to 12th bit - 4th UIO */ - } else { - value |= 0x1000; /* write one to 12th bit - 4th UIO */ - } - /* write back to io data output register */ - WR16( demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, value ); - break; + case DRX_UIO4: + /* DRX_UIO4: IRQN UIO-4 */ + if (extAttr->hasIRQN != TRUE) + return DRX_STS_ERROR; + + if (extAttr->uioIRQNMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0113; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - output mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_IRQN_CFG__A, pinCfgValue); + + /* use corresponding bit in io data output registar */ + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, &value); + if (UIOData->value == FALSE) { + value &= 0xEFFF; /* write zero to 12th bit - 4th UIO */ + } else { + value |= 0x1000; /* write one to 12th bit - 4th UIO */ + } + /* write back to io data output register */ + WR16(demod->myI2CDevAddr, SIO_PDR_UIO_OUT_LO__A, value); + break; /*=====================================================================*/ - default: - return DRX_STS_INVALID_ARG; - } /* switch ( UIOData->uio ) */ + default: + return DRX_STS_INVALID_ARG; + } /* switch ( UIOData->uio ) */ - /* Write magic word to disable pdr reg write */ - WR16 ( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); + /* Write magic word to disable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } - /** *\fn DRXStatus_t CtrlUIORead *\brief Read from a UIO. @@ -3897,147 +3676,137 @@ CtrlUIOWrite( pDRXDemodInstance_t demod, * \param UIOData Pointer to data container for a certain UIO. * \return DRXStatus_t. */ -static DRXStatus_t -CtrlUIORead( pDRXDemodInstance_t demod, - pDRXUIOData_t UIOData) +static DRXStatus_t CtrlUIORead(pDRXDemodInstance_t demod, pDRXUIOData_t UIOData) { - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - u16_t pinCfgValue = 0; - u16_t value = 0; + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + u16_t pinCfgValue = 0; + u16_t value = 0; - if (( UIOData == NULL ) || ( demod == NULL )) - { - return DRX_STS_INVALID_ARG; - } + if ((UIOData == NULL) || (demod == NULL)) { + return DRX_STS_INVALID_ARG; + } - extAttr = (pDRXJData_t)demod -> myExtAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* Write magic word to enable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); - switch ( UIOData->uio ) { + /* Write magic word to enable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + switch (UIOData->uio) { /*====================================================================*/ - case DRX_UIO1: - /* DRX_UIO1: SMA_TX UIO-1 */ - if (extAttr->hasSMATX != TRUE) - return DRX_STS_ERROR; - - if ( extAttr->uioSmaTxMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0110; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, pinCfgValue ); - - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_IN_LO__A, &value ); - if ( (value & 0x8000) != 0 ) /* check 15th bit - 1st UIO */ - { - UIOData->value = TRUE; - } else { - UIOData->value = FALSE; - } - break; + case DRX_UIO1: + /* DRX_UIO1: SMA_TX UIO-1 */ + if (extAttr->hasSMATX != TRUE) + return DRX_STS_ERROR; + + if (extAttr->uioSmaTxMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0110; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, pinCfgValue); + + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_IN_LO__A, &value); + if ((value & 0x8000) != 0) { /* check 15th bit - 1st UIO */ + UIOData->value = TRUE; + } else { + UIOData->value = FALSE; + } + break; /*======================================================================*/ - case DRX_UIO2: - /* DRX_UIO2: SMA_RX UIO-2 */ - if (extAttr->hasSMARX != TRUE) - return DRX_STS_ERROR; - - if ( extAttr->uioSmaRxMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0110; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_RX_CFG__A, pinCfgValue ); - - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_IN_LO__A, &value ); - - if ( (value & 0x4000) != 0 ) /* check 14th bit - 2nd UIO */ - { - UIOData->value = TRUE; - } else { - UIOData->value = FALSE; - } - break; + case DRX_UIO2: + /* DRX_UIO2: SMA_RX UIO-2 */ + if (extAttr->hasSMARX != TRUE) + return DRX_STS_ERROR; + + if (extAttr->uioSmaRxMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0110; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_RX_CFG__A, pinCfgValue); + + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_IN_LO__A, &value); + + if ((value & 0x4000) != 0) { /* check 14th bit - 2nd UIO */ + UIOData->value = TRUE; + } else { + UIOData->value = FALSE; + } + break; /*=====================================================================*/ - case DRX_UIO3: - /* DRX_UIO3: GPIO UIO-3 */ - if (extAttr->hasGPIO != TRUE) - return DRX_STS_ERROR; - - if ( extAttr->uioGPIOMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0110; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_GPIO_CFG__A, pinCfgValue ); - - /* read io input data registar */ - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_IN_HI__A, &value ); - if ( (value & 0x0004) != 0 ) /* check 2nd bit - 3rd UIO */ - { - UIOData->value = TRUE; - } else { - UIOData->value = FALSE; - } - break; + case DRX_UIO3: + /* DRX_UIO3: GPIO UIO-3 */ + if (extAttr->hasGPIO != TRUE) + return DRX_STS_ERROR; + + if (extAttr->uioGPIOMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0110; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_GPIO_CFG__A, pinCfgValue); + + /* read io input data registar */ + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_IN_HI__A, &value); + if ((value & 0x0004) != 0) { /* check 2nd bit - 3rd UIO */ + UIOData->value = TRUE; + } else { + UIOData->value = FALSE; + } + break; /*=====================================================================*/ - case DRX_UIO4: - /* DRX_UIO4: IRQN UIO-4 */ - if (extAttr->hasIRQN != TRUE) - return DRX_STS_ERROR; - - if ( extAttr->uioIRQNMode != DRX_UIO_MODE_READWRITE ) - { - return DRX_STS_ERROR; - } - pinCfgValue = 0; - /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ - pinCfgValue |= 0x0110; - /* io_pad_cfg_mode output mode is drive always */ - /* io_pad_cfg_drive is set to power 2 (23 mA) */ - - /* write to io pad configuration register - input mode */ - WR16( demod->myI2CDevAddr, SIO_PDR_IRQN_CFG__A, pinCfgValue ); - - /* read io input data registar */ - RR16( demod->myI2CDevAddr, SIO_PDR_UIO_IN_LO__A, &value ); - if ( (value & 0x1000) != 0 ) /* check 12th bit - 4th UIO */ - { - UIOData->value = TRUE; - } else { - UIOData->value = FALSE; - } - break; + case DRX_UIO4: + /* DRX_UIO4: IRQN UIO-4 */ + if (extAttr->hasIRQN != TRUE) + return DRX_STS_ERROR; + + if (extAttr->uioIRQNMode != DRX_UIO_MODE_READWRITE) { + return DRX_STS_ERROR; + } + pinCfgValue = 0; + /* io_pad_cfg register (8 bit reg.) MSB bit is 1 (default value) */ + pinCfgValue |= 0x0110; + /* io_pad_cfg_mode output mode is drive always */ + /* io_pad_cfg_drive is set to power 2 (23 mA) */ + + /* write to io pad configuration register - input mode */ + WR16(demod->myI2CDevAddr, SIO_PDR_IRQN_CFG__A, pinCfgValue); + + /* read io input data registar */ + RR16(demod->myI2CDevAddr, SIO_PDR_UIO_IN_LO__A, &value); + if ((value & 0x1000) != 0) { /* check 12th bit - 4th UIO */ + UIOData->value = TRUE; + } else { + UIOData->value = FALSE; + } + break; /*====================================================================*/ - default: - return DRX_STS_INVALID_ARG; - } /* switch ( UIOData->uio ) */ + default: + return DRX_STS_INVALID_ARG; + } /* switch ( UIOData->uio ) */ - /* Write magic word to disable pdr reg write */ - WR16 ( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); + /* Write magic word to disable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } + /*---------------------------------------------------------------------------*/ /* UIO Configuration Functions - end */ /*---------------------------------------------------------------------------*/ @@ -4054,31 +3823,27 @@ CtrlUIORead( pDRXDemodInstance_t demod, */ static DRXStatus_t -CtrlI2CBridge( pDRXDemodInstance_t demod, - pBool_t bridgeClosed ) +CtrlI2CBridge(pDRXDemodInstance_t demod, pBool_t bridgeClosed) { - DRXJHiCmd_t hiCmd; - u16_t result = 0; + DRXJHiCmd_t hiCmd; + u16_t result = 0; - /* check arguments */ - if (bridgeClosed == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if (bridgeClosed == NULL) { + return (DRX_STS_INVALID_ARG); + } - hiCmd.cmd = SIO_HI_RA_RAM_CMD_BRDCTRL; - hiCmd.param1 = SIO_HI_RA_RAM_PAR_1_PAR1_SEC_KEY; - if (*bridgeClosed == TRUE) - { - hiCmd.param2 = SIO_HI_RA_RAM_PAR_2_BRD_CFG_CLOSED; - } - else - { - hiCmd.param2 = SIO_HI_RA_RAM_PAR_2_BRD_CFG_OPEN; - } + hiCmd.cmd = SIO_HI_RA_RAM_CMD_BRDCTRL; + hiCmd.param1 = SIO_HI_RA_RAM_PAR_1_PAR1_SEC_KEY; + if (*bridgeClosed == TRUE) { + hiCmd.param2 = SIO_HI_RA_RAM_PAR_2_BRD_CFG_CLOSED; + } else { + hiCmd.param2 = SIO_HI_RA_RAM_PAR_2_BRD_CFG_OPEN; + } - return HICommand( demod -> myI2CDevAddr, &hiCmd, &result); + return HICommand(demod->myI2CDevAddr, &hiCmd, &result); } + /*----------------------------------------------------------------------------*/ /* I2C Bridge Functions - end */ /*----------------------------------------------------------------------------*/ @@ -4093,41 +3858,40 @@ CtrlI2CBridge( pDRXDemodInstance_t demod, * \return DRXStatus_t. * */ -static DRXStatus_t -SmartAntInit(pDRXDemodInstance_t demod) +static DRXStatus_t SmartAntInit(pDRXDemodInstance_t demod) { - u16_t data = 0; - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - DRXUIOCfg_t UIOCfg = {DRX_UIO1, DRX_UIO_MODE_FIRMWARE_SMA}; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; - - /* Write magic word to enable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); - /* init smart antenna */ - RR16( devAddr, SIO_SA_TX_COMMAND__A, &data ); - if (extAttr->smartAntInverted) - WR16( devAddr, SIO_SA_TX_COMMAND__A, - (data | SIO_SA_TX_COMMAND_TX_INVERT__M ) - | SIO_SA_TX_COMMAND_TX_ENABLE__M ); - else - WR16( devAddr, SIO_SA_TX_COMMAND__A, - (data & (~SIO_SA_TX_COMMAND_TX_INVERT__M)) - | SIO_SA_TX_COMMAND_TX_ENABLE__M ); - - /* config SMA_TX pin to smart antenna mode*/ - CHK_ERROR( CtrlSetUIOCfg( demod, &UIOCfg ) ); - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, 0x13 ); - WR16( demod->myI2CDevAddr, SIO_PDR_SMA_TX_GPIO_FNC__A, 0x03 ); - - /* Write magic word to disable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000 ); - - return ( DRX_STS_OK ); + u16_t data = 0; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + DRXUIOCfg_t UIOCfg = { DRX_UIO1, DRX_UIO_MODE_FIRMWARE_SMA }; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* Write magic word to enable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + /* init smart antenna */ + RR16(devAddr, SIO_SA_TX_COMMAND__A, &data); + if (extAttr->smartAntInverted) + WR16(devAddr, SIO_SA_TX_COMMAND__A, + (data | SIO_SA_TX_COMMAND_TX_INVERT__M) + | SIO_SA_TX_COMMAND_TX_ENABLE__M); + else + WR16(devAddr, SIO_SA_TX_COMMAND__A, + (data & (~SIO_SA_TX_COMMAND_TX_INVERT__M)) + | SIO_SA_TX_COMMAND_TX_ENABLE__M); + + /* config SMA_TX pin to smart antenna mode */ + CHK_ERROR(CtrlSetUIOCfg(demod, &UIOCfg)); + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_TX_CFG__A, 0x13); + WR16(demod->myI2CDevAddr, SIO_PDR_SMA_TX_GPIO_FNC__A, 0x03); + + /* Write magic word to disable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -4138,196 +3902,185 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgSmartAnt ( pDRXDemodInstance_t demod, pDRXJCfgSmartAnt_t smartAnt ) +CtrlSetCfgSmartAnt(pDRXDemodInstance_t demod, pDRXJCfgSmartAnt_t smartAnt) { - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - u16_t data = 0; - u32_t startTime = 0; - static Bool_t bitInverted = FALSE; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + u16_t data = 0; + u32_t startTime = 0; + static Bool_t bitInverted = FALSE; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* check arguments */ - if ( smartAnt == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if (smartAnt == NULL) { + return (DRX_STS_INVALID_ARG); + } - if ( bitInverted != extAttr->smartAntInverted - || extAttr->uioSmaTxMode != DRX_UIO_MODE_FIRMWARE_SMA) - { - CHK_ERROR(SmartAntInit(demod)); - bitInverted = extAttr->smartAntInverted; - } + if (bitInverted != extAttr->smartAntInverted + || extAttr->uioSmaTxMode != DRX_UIO_MODE_FIRMWARE_SMA) { + CHK_ERROR(SmartAntInit(demod)); + bitInverted = extAttr->smartAntInverted; + } - /* Write magic word to enable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); + /* Write magic word to enable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + + switch (smartAnt->io) { + case DRXJ_SMT_ANT_OUTPUT: + /* enable Tx if Mode B (input) is supported */ + /* + RR16( devAddr, SIO_SA_TX_COMMAND__A, &data ); + WR16( devAddr, SIO_SA_TX_COMMAND__A, data | SIO_SA_TX_COMMAND_TX_ENABLE__M ); + */ + startTime = DRXBSP_HST_Clock(); + do { + RR16(devAddr, SIO_SA_TX_STATUS__A, &data); + } while ((data & SIO_SA_TX_STATUS_BUSY__M) + && ((DRXBSP_HST_Clock() - startTime) < + DRXJ_MAX_WAITTIME)); + + if (data & SIO_SA_TX_STATUS_BUSY__M) { + return (DRX_STS_ERROR); + } + + /* write to smart antenna configuration register */ + WR16(devAddr, SIO_SA_TX_DATA0__A, 0x9200 + | ((smartAnt->ctrlData & 0x0001) << 8) + | ((smartAnt->ctrlData & 0x0002) << 10) + | ((smartAnt->ctrlData & 0x0004) << 12) + ); + WR16(devAddr, SIO_SA_TX_DATA1__A, 0x4924 + | ((smartAnt->ctrlData & 0x0008) >> 2) + | ((smartAnt->ctrlData & 0x0010)) + | ((smartAnt->ctrlData & 0x0020) << 2) + | ((smartAnt->ctrlData & 0x0040) << 4) + | ((smartAnt->ctrlData & 0x0080) << 6) + ); + WR16(devAddr, SIO_SA_TX_DATA2__A, 0x2492 + | ((smartAnt->ctrlData & 0x0100) >> 8) + | ((smartAnt->ctrlData & 0x0200) >> 6) + | ((smartAnt->ctrlData & 0x0400) >> 4) + | ((smartAnt->ctrlData & 0x0800) >> 2) + | ((smartAnt->ctrlData & 0x1000)) + | ((smartAnt->ctrlData & 0x2000) << 2) + ); + WR16(devAddr, SIO_SA_TX_DATA3__A, 0xff8d); + + /* trigger the sending */ + WR16(devAddr, SIO_SA_TX_LENGTH__A, 56); + + break; + case DRXJ_SMT_ANT_INPUT: + /* disable Tx if Mode B (input) is supported */ + /* + RR16( devAddr, SIO_SA_TX_COMMAND__A, &data ); + WR16( devAddr, SIO_SA_TX_COMMAND__A, data & (~SIO_SA_TX_COMMAND_TX_ENABLE__M) ); + */ + default: + return (DRX_STS_INVALID_ARG); + } + /* Write magic word to enable pdr reg write */ + WR16(demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000); - switch (smartAnt->io) - { - case DRXJ_SMT_ANT_OUTPUT: - /* enable Tx if Mode B (input) is supported */ - /* - RR16( devAddr, SIO_SA_TX_COMMAND__A, &data ); - WR16( devAddr, SIO_SA_TX_COMMAND__A, data | SIO_SA_TX_COMMAND_TX_ENABLE__M ); - */ - startTime = DRXBSP_HST_Clock(); - do{ - RR16( devAddr, SIO_SA_TX_STATUS__A, &data ); - } while ( (data & SIO_SA_TX_STATUS_BUSY__M) && ( (DRXBSP_HST_Clock() - startTime) < DRXJ_MAX_WAITTIME ) ); - - if ( data & SIO_SA_TX_STATUS_BUSY__M ) - { - return (DRX_STS_ERROR); - } - - /* write to smart antenna configuration register */ - WR16( devAddr, SIO_SA_TX_DATA0__A, 0x9200 - | ((smartAnt->ctrlData & 0x0001) << 8) - | ((smartAnt->ctrlData & 0x0002) << 10) - | ((smartAnt->ctrlData & 0x0004) << 12) - ); - WR16( devAddr, SIO_SA_TX_DATA1__A, 0x4924 - | ((smartAnt->ctrlData & 0x0008) >> 2) - | ((smartAnt->ctrlData & 0x0010) ) - | ((smartAnt->ctrlData & 0x0020) << 2) - | ((smartAnt->ctrlData & 0x0040) << 4) - | ((smartAnt->ctrlData & 0x0080) << 6) - ); - WR16( devAddr, SIO_SA_TX_DATA2__A, 0x2492 - | ((smartAnt->ctrlData & 0x0100) >> 8) - | ((smartAnt->ctrlData & 0x0200) >> 6) - | ((smartAnt->ctrlData & 0x0400) >> 4) - | ((smartAnt->ctrlData & 0x0800) >> 2) - | ((smartAnt->ctrlData & 0x1000) ) - | ((smartAnt->ctrlData & 0x2000) << 2) - ); - WR16( devAddr, SIO_SA_TX_DATA3__A, 0xff8d ); - - /* trigger the sending */ - WR16( devAddr, SIO_SA_TX_LENGTH__A, 56 ); - - break; - case DRXJ_SMT_ANT_INPUT: - /* disable Tx if Mode B (input) is supported */ - /* - RR16( devAddr, SIO_SA_TX_COMMAND__A, &data ); - WR16( devAddr, SIO_SA_TX_COMMAND__A, data & (~SIO_SA_TX_COMMAND_TX_ENABLE__M) ); - */ - default: - return (DRX_STS_INVALID_ARG); - } - /* Write magic word to enable pdr reg write */ - WR16( demod->myI2CDevAddr, SIO_TOP_COMM_KEY__A, 0x0000 ); - - return ( DRX_STS_OK ); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } -static DRXStatus_t -SCUCommand( pI2CDeviceAddr_t devAddr, pDRXJSCUCmd_t cmd ) +static DRXStatus_t SCUCommand(pI2CDeviceAddr_t devAddr, pDRXJSCUCmd_t cmd) { - u16_t curCmd = 0; - u32_t startTime = 0; + u16_t curCmd = 0; + u32_t startTime = 0; - /* Check param */ - if ( cmd == NULL ) - return (DRX_STS_INVALID_ARG); + /* Check param */ + if (cmd == NULL) + return (DRX_STS_INVALID_ARG); - /* Wait until SCU command interface is ready to receive command */ - RR16( devAddr, SCU_RAM_COMMAND__A, &curCmd ); - if ( curCmd != DRX_SCU_READY ) - { - return (DRX_STS_ERROR); - } + /* Wait until SCU command interface is ready to receive command */ + RR16(devAddr, SCU_RAM_COMMAND__A, &curCmd); + if (curCmd != DRX_SCU_READY) { + return (DRX_STS_ERROR); + } - switch ( cmd->parameterLen ) - { - case 5: - WR16( devAddr, SCU_RAM_PARAM_4__A , *(cmd->parameter + 4)); /* fallthrough */ - case 4: - WR16( devAddr, SCU_RAM_PARAM_3__A , *(cmd->parameter + 3)); /* fallthrough */ - case 3: - WR16( devAddr, SCU_RAM_PARAM_2__A , *(cmd->parameter + 2)); /* fallthrough */ - case 2: - WR16( devAddr, SCU_RAM_PARAM_1__A , *(cmd->parameter + 1)); /* fallthrough */ - case 1: - WR16( devAddr, SCU_RAM_PARAM_0__A , *(cmd->parameter + 0)); /* fallthrough */ - case 0: - /* do nothing */ - break; - default: - /* this number of parameters is not supported */ - return (DRX_STS_ERROR); - } - WR16( devAddr, SCU_RAM_COMMAND__A, cmd->command ); - - /* Wait until SCU has processed command */ - startTime = DRXBSP_HST_Clock(); - do{ - RR16( devAddr, SCU_RAM_COMMAND__A, &curCmd ); - } while ( ! ( curCmd == DRX_SCU_READY ) && ( (DRXBSP_HST_Clock() - startTime) < DRXJ_MAX_WAITTIME ) ); - - if ( curCmd != DRX_SCU_READY ) - { - return (DRX_STS_ERROR); - } + switch (cmd->parameterLen) { + case 5: + WR16(devAddr, SCU_RAM_PARAM_4__A, *(cmd->parameter + 4)); /* fallthrough */ + case 4: + WR16(devAddr, SCU_RAM_PARAM_3__A, *(cmd->parameter + 3)); /* fallthrough */ + case 3: + WR16(devAddr, SCU_RAM_PARAM_2__A, *(cmd->parameter + 2)); /* fallthrough */ + case 2: + WR16(devAddr, SCU_RAM_PARAM_1__A, *(cmd->parameter + 1)); /* fallthrough */ + case 1: + WR16(devAddr, SCU_RAM_PARAM_0__A, *(cmd->parameter + 0)); /* fallthrough */ + case 0: + /* do nothing */ + break; + default: + /* this number of parameters is not supported */ + return (DRX_STS_ERROR); + } + WR16(devAddr, SCU_RAM_COMMAND__A, cmd->command); - /* read results */ - if ( (cmd->resultLen > 0) && (cmd->result != NULL) ) - { - s16_t err; - - switch ( cmd->resultLen ) - { - case 4: - RR16( devAddr, SCU_RAM_PARAM_3__A , cmd->result + 3); /* fallthrough */ - case 3: - RR16( devAddr, SCU_RAM_PARAM_2__A , cmd->result + 2); /* fallthrough */ - case 2: - RR16( devAddr, SCU_RAM_PARAM_1__A , cmd->result + 1); /* fallthrough */ - case 1: - RR16( devAddr, SCU_RAM_PARAM_0__A , cmd->result + 0); /* fallthrough */ - case 0: - /* do nothing */ - break; - default: - /* this number of parameters is not supported */ - return (DRX_STS_ERROR); - } - - - /* Check if an error was reported by SCU */ - err = cmd->result[0]; - - /* check a few fixed error codes */ - if ( ( err == (s16_t)SCU_RAM_PARAM_0_RESULT_UNKSTD ) - || ( err == (s16_t)SCU_RAM_PARAM_0_RESULT_UNKCMD ) - || ( err == (s16_t)SCU_RAM_PARAM_0_RESULT_INVPAR ) - || ( err == (s16_t)SCU_RAM_PARAM_0_RESULT_SIZE ) - ) - { - return DRX_STS_INVALID_ARG; - } - /* here it is assumed that negative means error, and positive no error */ - else if ( err < 0 ) - { - return DRX_STS_ERROR; - } - else - { - return DRX_STS_OK; - } - } - - return (DRX_STS_OK); - - rw_error: - return (DRX_STS_ERROR); + /* Wait until SCU has processed command */ + startTime = DRXBSP_HST_Clock(); + do { + RR16(devAddr, SCU_RAM_COMMAND__A, &curCmd); + } while (!(curCmd == DRX_SCU_READY) + && ((DRXBSP_HST_Clock() - startTime) < DRXJ_MAX_WAITTIME)); + + if (curCmd != DRX_SCU_READY) { + return (DRX_STS_ERROR); + } + + /* read results */ + if ((cmd->resultLen > 0) && (cmd->result != NULL)) { + s16_t err; + + switch (cmd->resultLen) { + case 4: + RR16(devAddr, SCU_RAM_PARAM_3__A, cmd->result + 3); /* fallthrough */ + case 3: + RR16(devAddr, SCU_RAM_PARAM_2__A, cmd->result + 2); /* fallthrough */ + case 2: + RR16(devAddr, SCU_RAM_PARAM_1__A, cmd->result + 1); /* fallthrough */ + case 1: + RR16(devAddr, SCU_RAM_PARAM_0__A, cmd->result + 0); /* fallthrough */ + case 0: + /* do nothing */ + break; + default: + /* this number of parameters is not supported */ + return (DRX_STS_ERROR); + } + + /* Check if an error was reported by SCU */ + err = cmd->result[0]; + + /* check a few fixed error codes */ + if ((err == (s16_t) SCU_RAM_PARAM_0_RESULT_UNKSTD) + || (err == (s16_t) SCU_RAM_PARAM_0_RESULT_UNKCMD) + || (err == (s16_t) SCU_RAM_PARAM_0_RESULT_INVPAR) + || (err == (s16_t) SCU_RAM_PARAM_0_RESULT_SIZE) + ) { + return DRX_STS_INVALID_ARG; + } + /* here it is assumed that negative means error, and positive no error */ + else if (err < 0) { + return DRX_STS_ERROR; + } else { + return DRX_STS_OK; + } + } + + return (DRX_STS_OK); + +rw_error: + return (DRX_STS_ERROR); } + /** * \fn DRXStatus_t DRXJ_DAP_SCUAtomicReadWriteBlock() * \brief Basic access routine for SCU atomic read or write access @@ -4342,65 +4095,57 @@ SCUCommand( pI2CDeviceAddr_t devAddr, pDRXJSCUCmd_t cmd ) */ #define ADDR_AT_SCU_SPACE(x) ((x - 0x82E000) * 2) static -DRXStatus_t DRXJ_DAP_SCU_AtomicReadWriteBlock ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t datasize, /* max 30 bytes because the limit of SCU parameter */ - pu8_t data, - Bool_t readFlag) -{ - DRXJSCUCmd_t scuCmd; - u16_t setParamParameters[15]; - u16_t cmdResult[15]; - - /* Parameter check */ - if ( ( data == NULL ) || - ( devAddr == NULL ) || - ( (datasize%2)!= 0 ) || - ( (datasize/2) > 16 ) - ) - { - return (DRX_STS_INVALID_ARG); - } +DRXStatus_t DRXJ_DAP_SCU_AtomicReadWriteBlock(pI2CDeviceAddr_t devAddr, DRXaddr_t addr, u16_t datasize, /* max 30 bytes because the limit of SCU parameter */ + pu8_t data, Bool_t readFlag) +{ + DRXJSCUCmd_t scuCmd; + u16_t setParamParameters[15]; + u16_t cmdResult[15]; + + /* Parameter check */ + if ((data == NULL) || + (devAddr == NULL) || ((datasize % 2) != 0) || ((datasize / 2) > 16) + ) { + return (DRX_STS_INVALID_ARG); + } - setParamParameters[1] = (u16_t)ADDR_AT_SCU_SPACE (addr); - if (readFlag) /* read */ - { - setParamParameters[0] = ((~(0x0080)) & datasize); - scuCmd.parameterLen = 2; - scuCmd.resultLen = datasize/2 + 2; - } else { - int i = 0; - - setParamParameters[0] = 0x0080 | datasize; - for (i = 0; i < (datasize/2); i++) - { - setParamParameters[i+2] = (data[2*i] | (data[(2*i)+1]<<8)); - } - scuCmd.parameterLen = datasize / 2 + 2; - scuCmd.resultLen = 1; - } - - scuCmd.command = SCU_RAM_COMMAND_STANDARD_TOP | SCU_RAM_COMMAND_CMD_AUX_SCU_ATOMIC_ACCESS; - scuCmd.result = cmdResult; - scuCmd.parameter = setParamParameters; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); - - if ( readFlag==TRUE ) - { - int i = 0; - /* read data from buffer */ - for (i = 0; i < (datasize/2); i++) - { - data[2*i] = (u8_t) (scuCmd.result[i+2] & 0xFF); - data[(2*i) + 1] = (u8_t) (scuCmd.result[i+2] >> 8 ); - } - } + setParamParameters[1] = (u16_t) ADDR_AT_SCU_SPACE(addr); + if (readFlag) { /* read */ + setParamParameters[0] = ((~(0x0080)) & datasize); + scuCmd.parameterLen = 2; + scuCmd.resultLen = datasize / 2 + 2; + } else { + int i = 0; + + setParamParameters[0] = 0x0080 | datasize; + for (i = 0; i < (datasize / 2); i++) { + setParamParameters[i + 2] = + (data[2 * i] | (data[(2 * i) + 1] << 8)); + } + scuCmd.parameterLen = datasize / 2 + 2; + scuCmd.resultLen = 1; + } - return DRX_STS_OK; + scuCmd.command = + SCU_RAM_COMMAND_STANDARD_TOP | + SCU_RAM_COMMAND_CMD_AUX_SCU_ATOMIC_ACCESS; + scuCmd.result = cmdResult; + scuCmd.parameter = setParamParameters; + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); + + if (readFlag == TRUE) { + int i = 0; + /* read data from buffer */ + for (i = 0; i < (datasize / 2); i++) { + data[2 * i] = (u8_t) (scuCmd.result[i + 2] & 0xFF); + data[(2 * i) + 1] = (u8_t) (scuCmd.result[i + 2] >> 8); + } + } - rw_error: - return (DRX_STS_ERROR); + return DRX_STS_OK; + +rw_error: + return (DRX_STS_ERROR); } @@ -4411,76 +4156,68 @@ DRXStatus_t DRXJ_DAP_SCU_AtomicReadWriteBlock ( * \brief Atomic read of 16 bits words */ static -DRXStatus_t DRXJ_DAP_SCU_AtomicReadReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - pu16_t data, - DRXflags_t flags) +DRXStatus_t DRXJ_DAP_SCU_AtomicReadReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + pu16_t data, DRXflags_t flags) { - u8_t buf[2]; - DRXStatus_t rc = DRX_STS_ERROR; - u16_t word = 0; + u8_t buf[2]; + DRXStatus_t rc = DRX_STS_ERROR; + u16_t word = 0; - if (!data) - { - return DRX_STS_INVALID_ARG; - } + if (!data) { + return DRX_STS_INVALID_ARG; + } - rc = DRXJ_DAP_SCU_AtomicReadWriteBlock ( devAddr, addr, - 2, buf, TRUE); + rc = DRXJ_DAP_SCU_AtomicReadWriteBlock(devAddr, addr, 2, buf, TRUE); - word = (u16_t)(buf[0] + (buf[1] << 8)); + word = (u16_t) (buf[0] + (buf[1] << 8)); - *data = word; + *data = word; - return rc; + return rc; } + /*============================================================================*/ /** * \fn DRXStatus_t DRXJ_DAP_SCU_AtomicWriteReg16() * \brief Atomic read of 16 bits words */ static -DRXStatus_t DRXJ_DAP_SCU_AtomicWriteReg16 ( - pI2CDeviceAddr_t devAddr, - DRXaddr_t addr, - u16_t data, - DRXflags_t flags) +DRXStatus_t DRXJ_DAP_SCU_AtomicWriteReg16(pI2CDeviceAddr_t devAddr, + DRXaddr_t addr, + u16_t data, DRXflags_t flags) { - u8_t buf[2]; - DRXStatus_t rc = DRX_STS_ERROR; + u8_t buf[2]; + DRXStatus_t rc = DRX_STS_ERROR; - buf[0] = (u8_t) (data & 0xff); - buf[1] = (u8_t) ((data >> 8) & 0xff); + buf[0] = (u8_t) (data & 0xff); + buf[1] = (u8_t) ((data >> 8) & 0xff); - rc = DRXJ_DAP_SCU_AtomicReadWriteBlock ( devAddr, addr, - 2, buf, FALSE); + rc = DRXJ_DAP_SCU_AtomicReadWriteBlock(devAddr, addr, 2, buf, FALSE); - return rc; + return rc; } static DRXStatus_t -CtrlI2CWriteRead( pDRXDemodInstance_t demod, - pDRXI2CData_t i2cData ) +CtrlI2CWriteRead(pDRXDemodInstance_t demod, pDRXI2CData_t i2cData) { - return (DRX_STS_FUNC_NOT_AVAILABLE); + return (DRX_STS_FUNC_NOT_AVAILABLE); } DRXStatus_t -TunerI2CWriteRead( pTUNERInstance_t tuner, - pI2CDeviceAddr_t wDevAddr, - u16_t wCount, - pu8_t wData, - pI2CDeviceAddr_t rDevAddr, - u16_t rCount, - pu8_t rData) +TunerI2CWriteRead(pTUNERInstance_t tuner, + pI2CDeviceAddr_t wDevAddr, + u16_t wCount, + pu8_t wData, + pI2CDeviceAddr_t rDevAddr, u16_t rCount, pu8_t rData) { - pDRXDemodInstance_t demod; - DRXI2CData_t i2cData = { 2, wDevAddr, wCount, wData, rDevAddr, rCount, rData }; + pDRXDemodInstance_t demod; + DRXI2CData_t i2cData = + { 2, wDevAddr, wCount, wData, rDevAddr, rCount, rData }; - demod = (pDRXDemodInstance_t) (tuner->myCommonAttr->myUserData); + demod = (pDRXDemodInstance_t) (tuner->myCommonAttr->myUserData); - return ( CtrlI2CWriteRead( demod, &i2cData ) ); + return (CtrlI2CWriteRead(demod, &i2cData)); } /* -------------------------------------------------------------------------- */ @@ -4493,42 +4230,37 @@ TunerI2CWriteRead( pTUNERInstance_t tuner, * \retval DRX_STS_ERROR Failure: I2C error * */ -static DRXStatus_t -ADCSyncMeasurement( pDRXDemodInstance_t demod, - pu16_t count ) +static DRXStatus_t ADCSyncMeasurement(pDRXDemodInstance_t demod, pu16_t count) { - u16_t data = 0; - pI2CDeviceAddr_t devAddr = NULL; + u16_t data = 0; + pI2CDeviceAddr_t devAddr = NULL; - devAddr = demod -> myI2CDevAddr; + devAddr = demod->myI2CDevAddr; - /* Start measurement */ - WR16( devAddr, IQM_AF_COMM_EXEC__A, IQM_AF_COMM_EXEC_ACTIVE); - WR16( devAddr, IQM_AF_START_LOCK__A, 1); + /* Start measurement */ + WR16(devAddr, IQM_AF_COMM_EXEC__A, IQM_AF_COMM_EXEC_ACTIVE); + WR16(devAddr, IQM_AF_START_LOCK__A, 1); - /* Wait at least 3*128*(1/sysclk) <<< 1 millisec */ - CHK_ERROR( DRXBSP_HST_Sleep(1)); + /* Wait at least 3*128*(1/sysclk) <<< 1 millisec */ + CHK_ERROR(DRXBSP_HST_Sleep(1)); - *count = 0; - RR16( devAddr, IQM_AF_PHASE0__A, &data); - if ( data == 127 ) - { - *count = *count+1; - } - RR16( devAddr, IQM_AF_PHASE1__A, &data); - if ( data == 127 ) - { - *count = *count+1; - } - RR16( devAddr, IQM_AF_PHASE2__A, &data); - if ( data == 127 ) - { - *count = *count+1; - } + *count = 0; + RR16(devAddr, IQM_AF_PHASE0__A, &data); + if (data == 127) { + *count = *count + 1; + } + RR16(devAddr, IQM_AF_PHASE1__A, &data); + if (data == 127) { + *count = *count + 1; + } + RR16(devAddr, IQM_AF_PHASE2__A, &data); + if (data == 127) { + *count = *count + 1; + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -4543,38 +4275,35 @@ rw_error: * */ -static DRXStatus_t -ADCSynchronization( pDRXDemodInstance_t demod ) +static DRXStatus_t ADCSynchronization(pDRXDemodInstance_t demod) { - u16_t count = 0; - pI2CDeviceAddr_t devAddr = NULL; + u16_t count = 0; + pI2CDeviceAddr_t devAddr = NULL; - devAddr = demod -> myI2CDevAddr; + devAddr = demod->myI2CDevAddr; - CHK_ERROR( ADCSyncMeasurement( demod, &count )); + CHK_ERROR(ADCSyncMeasurement(demod, &count)); - if (count==1) - { - /* Try sampling on a diffrent edge */ - u16_t clkNeg = 0; + if (count == 1) { + /* Try sampling on a diffrent edge */ + u16_t clkNeg = 0; - RR16( devAddr, IQM_AF_CLKNEG__A, &clkNeg); + RR16(devAddr, IQM_AF_CLKNEG__A, &clkNeg); - clkNeg ^= IQM_AF_CLKNEG_CLKNEGDATA__M; - WR16( devAddr, IQM_AF_CLKNEG__A, clkNeg); + clkNeg ^= IQM_AF_CLKNEG_CLKNEGDATA__M; + WR16(devAddr, IQM_AF_CLKNEG__A, clkNeg); - CHK_ERROR( ADCSyncMeasurement( demod, &count )); - } + CHK_ERROR(ADCSyncMeasurement(demod, &count)); + } - if ( count < 2 ) - { - /* TODO: implement fallback scenarios */ - return (DRX_STS_ERROR); - } + if (count < 2) { + /* TODO: implement fallback scenarios */ + return (DRX_STS_ERROR); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -4583,46 +4312,42 @@ rw_error: * \param active * \return DRXStatus_t. */ -static DRXStatus_t -IQMSetAf ( pDRXDemodInstance_t demod, Bool_t active ) +static DRXStatus_t IQMSetAf(pDRXDemodInstance_t demod, Bool_t active) { - u16_t data = 0; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + u16_t data = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod -> myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; - /* Configure IQM */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - if( !active ) - { - data &= ((~IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_PD_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE) - ); - } else /* active */ - { - data |= (IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE - | IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE - | IQM_AF_STDBY_STDBY_PD_A2_ACTIVE - | IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE - | IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE - ); - } - WR16( devAddr, IQM_AF_STDBY__A , data ); - - return (DRX_STS_OK); + /* Configure IQM */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + if (!active) { + data &= ((~IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_PD_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE) + ); + } else { /* active */ + + data |= (IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE + | IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE + | IQM_AF_STDBY_STDBY_PD_A2_ACTIVE + | IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE + | IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE); + } + WR16(devAddr, IQM_AF_STDBY__A, data); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ static DRXStatus_t -CtrlSetCfgATVOutput( pDRXDemodInstance_t demod , - pDRXJCfgAtvOutput_t outputCfg ); +CtrlSetCfgATVOutput(pDRXDemodInstance_t demod, pDRXJCfgAtvOutput_t outputCfg); /** * \brief set configuration of pin-safe mode @@ -4631,115 +4356,121 @@ CtrlSetCfgATVOutput( pDRXDemodInstance_t demod , * \return DRXStatus_t. */ static DRXStatus_t -CtrlSetCfgPdrSafeMode ( pDRXDemodInstance_t demod, - pBool_t enable ) +CtrlSetCfgPdrSafeMode(pDRXDemodInstance_t demod, pBool_t enable) { - pDRXJData_t extAttr = (pDRXJData_t) NULL; - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) NULL; - - if ( enable == NULL) - { - return (DRX_STS_INVALID_ARG); - } + pDRXJData_t extAttr = (pDRXJData_t) NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) NULL; - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t) demod->myExtAttr; - commonAttr = demod->myCommonAttr; - - /* Write magic word to enable pdr reg write */ - WR16( devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); - - if ( *enable == TRUE ) - { - Bool_t bridgeEnabled = FALSE; - - /* MPEG pins to input */ - WR16 ( devAddr, SIO_PDR_MSTRT_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MERR_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MCLK_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MVAL_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD0_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD1_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD2_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD3_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD4_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD5_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD6_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_MD7_CFG__A, DRXJ_PIN_SAFE_MODE ); - - /* PD_I2C_SDA2 Bridge off, Port2 Inactive - PD_I2C_SCL2 Bridge off, Port2 Inactive */ - CHK_ERROR( CtrlI2CBridge( demod, &bridgeEnabled ) ); - WR16 ( devAddr, SIO_PDR_I2C_SDA2_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_I2C_SCL2_CFG__A, DRXJ_PIN_SAFE_MODE ); - - /* PD_GPIO Store and set to input - PD_VSYNC Store and set to input - PD_SMA_RX Store and set to input - PD_SMA_TX Store and set to input */ - RR16 ( devAddr, SIO_PDR_GPIO_CFG__A, &extAttr->pdrSafeRestoreValGpio ); - RR16 ( devAddr, SIO_PDR_VSYNC_CFG__A, &extAttr->pdrSafeRestoreValVSync ); - RR16 ( devAddr, SIO_PDR_SMA_RX_CFG__A, &extAttr->pdrSafeRestoreValSmaRx ); - RR16 ( devAddr, SIO_PDR_SMA_TX_CFG__A, &extAttr->pdrSafeRestoreValSmaTx ); - WR16 ( devAddr, SIO_PDR_GPIO_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_VSYNC_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_SMA_RX_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_SMA_TX_CFG__A, DRXJ_PIN_SAFE_MODE ); - - /* PD_RF_AGC Analog DAC outputs, cannot be set to input or tristate! - PD_IF_AGC Analog DAC outputs, cannot be set to input or tristate! */ - CHK_ERROR( IQMSetAf ( demod, FALSE ) ); - - /* PD_CVBS Analog DAC output, standby mode - PD_SIF Analog DAC output, standby mode */ - WR16 ( devAddr, ATV_TOP_STDBY__A, ( ATV_TOP_STDBY_SIF_STDBY_STANDBY & - (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) ) ); - - /* PD_I2S_CL Input - PD_I2S_DA Input - PD_I2S_WS Input */ - WR16 ( devAddr, SIO_PDR_I2S_CL_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_I2S_DA_CFG__A, DRXJ_PIN_SAFE_MODE ); - WR16 ( devAddr, SIO_PDR_I2S_WS_CFG__A, DRXJ_PIN_SAFE_MODE ); - } - else - { - /* No need to restore MPEG pins; - is done in SetStandard/SetChannel */ - - /* PD_I2C_SDA2 Port2 active - PD_I2C_SCL2 Port2 active */ - WR16 ( devAddr, SIO_PDR_I2C_SDA2_CFG__A, SIO_PDR_I2C_SDA2_CFG__PRE ); - WR16 ( devAddr, SIO_PDR_I2C_SCL2_CFG__A, SIO_PDR_I2C_SCL2_CFG__PRE ); - - /* PD_GPIO Restore - PD_VSYNC Restore - PD_SMA_RX Restore - PD_SMA_TX Restore */ - WR16 ( devAddr, SIO_PDR_GPIO_CFG__A, extAttr->pdrSafeRestoreValGpio ); - WR16 ( devAddr, SIO_PDR_VSYNC_CFG__A, extAttr->pdrSafeRestoreValVSync ); - WR16 ( devAddr, SIO_PDR_SMA_RX_CFG__A, extAttr->pdrSafeRestoreValSmaRx ); - WR16 ( devAddr, SIO_PDR_SMA_TX_CFG__A, extAttr->pdrSafeRestoreValSmaTx ); - - /* PD_RF_AGC, PD_IF_AGC - No need to restore; will be restored in SetStandard/SetChannel */ - - /* PD_CVBS, PD_SIF - No need to restore; will be restored in SetStandard/SetChannel */ + if (enable == NULL) { + return (DRX_STS_INVALID_ARG); + } - /* PD_I2S_CL, PD_I2S_DA, PD_I2S_WS - Should be restored via DRX_CTRL_SET_AUD */ - } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = demod->myCommonAttr; + + /* Write magic word to enable pdr reg write */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + + if (*enable == TRUE) { + Bool_t bridgeEnabled = FALSE; + + /* MPEG pins to input */ + WR16(devAddr, SIO_PDR_MSTRT_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MERR_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MCLK_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MVAL_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD0_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD1_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD2_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD3_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD4_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD5_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD6_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_MD7_CFG__A, DRXJ_PIN_SAFE_MODE); + + /* PD_I2C_SDA2 Bridge off, Port2 Inactive + PD_I2C_SCL2 Bridge off, Port2 Inactive */ + CHK_ERROR(CtrlI2CBridge(demod, &bridgeEnabled)); + WR16(devAddr, SIO_PDR_I2C_SDA2_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_I2C_SCL2_CFG__A, DRXJ_PIN_SAFE_MODE); + + /* PD_GPIO Store and set to input + PD_VSYNC Store and set to input + PD_SMA_RX Store and set to input + PD_SMA_TX Store and set to input */ + RR16(devAddr, SIO_PDR_GPIO_CFG__A, + &extAttr->pdrSafeRestoreValGpio); + RR16(devAddr, SIO_PDR_VSYNC_CFG__A, + &extAttr->pdrSafeRestoreValVSync); + RR16(devAddr, SIO_PDR_SMA_RX_CFG__A, + &extAttr->pdrSafeRestoreValSmaRx); + RR16(devAddr, SIO_PDR_SMA_TX_CFG__A, + &extAttr->pdrSafeRestoreValSmaTx); + WR16(devAddr, SIO_PDR_GPIO_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_VSYNC_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_SMA_RX_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_SMA_TX_CFG__A, DRXJ_PIN_SAFE_MODE); + + /* PD_RF_AGC Analog DAC outputs, cannot be set to input or tristate! + PD_IF_AGC Analog DAC outputs, cannot be set to input or tristate! */ + CHK_ERROR(IQMSetAf(demod, FALSE)); + + /* PD_CVBS Analog DAC output, standby mode + PD_SIF Analog DAC output, standby mode */ + WR16(devAddr, ATV_TOP_STDBY__A, + (ATV_TOP_STDBY_SIF_STDBY_STANDBY & + (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE))); + + /* PD_I2S_CL Input + PD_I2S_DA Input + PD_I2S_WS Input */ + WR16(devAddr, SIO_PDR_I2S_CL_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_I2S_DA_CFG__A, DRXJ_PIN_SAFE_MODE); + WR16(devAddr, SIO_PDR_I2S_WS_CFG__A, DRXJ_PIN_SAFE_MODE); + } else { + /* No need to restore MPEG pins; + is done in SetStandard/SetChannel */ + + /* PD_I2C_SDA2 Port2 active + PD_I2C_SCL2 Port2 active */ + WR16(devAddr, SIO_PDR_I2C_SDA2_CFG__A, + SIO_PDR_I2C_SDA2_CFG__PRE); + WR16(devAddr, SIO_PDR_I2C_SCL2_CFG__A, + SIO_PDR_I2C_SCL2_CFG__PRE); + + /* PD_GPIO Restore + PD_VSYNC Restore + PD_SMA_RX Restore + PD_SMA_TX Restore */ + WR16(devAddr, SIO_PDR_GPIO_CFG__A, + extAttr->pdrSafeRestoreValGpio); + WR16(devAddr, SIO_PDR_VSYNC_CFG__A, + extAttr->pdrSafeRestoreValVSync); + WR16(devAddr, SIO_PDR_SMA_RX_CFG__A, + extAttr->pdrSafeRestoreValSmaRx); + WR16(devAddr, SIO_PDR_SMA_TX_CFG__A, + extAttr->pdrSafeRestoreValSmaTx); + + /* PD_RF_AGC, PD_IF_AGC + No need to restore; will be restored in SetStandard/SetChannel */ + + /* PD_CVBS, PD_SIF + No need to restore; will be restored in SetStandard/SetChannel */ + + /* PD_I2S_CL, PD_I2S_DA, PD_I2S_WS + Should be restored via DRX_CTRL_SET_AUD */ + } - /* Write magic word to disable pdr reg write */ - WR16 ( devAddr, SIO_TOP_COMM_KEY__A, 0x0000 ); - extAttr->pdrSafeMode = *enable; + /* Write magic word to disable pdr reg write */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0x0000); + extAttr->pdrSafeMode = *enable; - return (DRX_STS_OK); + return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); +rw_error: + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -4751,20 +4482,18 @@ CtrlSetCfgPdrSafeMode ( pDRXDemodInstance_t demod, * \return DRXStatus_t. */ static DRXStatus_t -CtrlGetCfgPdrSafeMode ( pDRXDemodInstance_t demod, - pBool_t enabled ) +CtrlGetCfgPdrSafeMode(pDRXDemodInstance_t demod, pBool_t enabled) { - pDRXJData_t extAttr = (pDRXJData_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - if ( enabled == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + if (enabled == NULL) { + return (DRX_STS_INVALID_ARG); + } - extAttr = (pDRXJData_t) demod->myExtAttr; - *enabled = extAttr->pdrSafeMode; + extAttr = (pDRXJData_t) demod->myExtAttr; + *enabled = extAttr->pdrSafeMode; - return (DRX_STS_OK); + return (DRX_STS_OK); } /** @@ -4772,41 +4501,36 @@ CtrlGetCfgPdrSafeMode ( pDRXDemodInstance_t demod, * \param demod Demodulator instance. * \return DRXStatus_t. */ -static DRXStatus_t -CtrlValidateUCode (pDRXDemodInstance_t demod) +static DRXStatus_t CtrlValidateUCode(pDRXDemodInstance_t demod) { - u32_t mcDev, mcPatch; - u16_t verType; - - /* Check device. - * Disallow microcode if: - * - MC has version record AND - * - device ID in version record is not 0 AND - * - product ID in version record's device ID does not - * match DRXJ1 product IDs - 0x393 or 0x394 - */ - DRX_GET_MCVERTYPE (demod, verType); - DRX_GET_MCDEV (demod, mcDev); - DRX_GET_MCPATCH (demod, mcPatch); - - if (DRX_ISMCVERTYPE (verType)) - { - if ((mcDev != 0) && - (((mcDev >> 16) & 0xFFF) != 0x393) && - (((mcDev >> 16) & 0xFFF) != 0x394)) - { - /* Microcode is marked for another device - error */ - return DRX_STS_INVALID_ARG; - } - else if (mcPatch != 0) - { - /* Patch not allowed because there is no ROM */ - return DRX_STS_INVALID_ARG; - } - } - - /* Everything else: OK */ - return DRX_STS_OK; + u32_t mcDev, mcPatch; + u16_t verType; + + /* Check device. + * Disallow microcode if: + * - MC has version record AND + * - device ID in version record is not 0 AND + * - product ID in version record's device ID does not + * match DRXJ1 product IDs - 0x393 or 0x394 + */ + DRX_GET_MCVERTYPE(demod, verType); + DRX_GET_MCDEV(demod, mcDev); + DRX_GET_MCPATCH(demod, mcPatch); + + if (DRX_ISMCVERTYPE(verType)) { + if ((mcDev != 0) && + (((mcDev >> 16) & 0xFFF) != 0x393) && + (((mcDev >> 16) & 0xFFF) != 0x394)) { + /* Microcode is marked for another device - error */ + return DRX_STS_INVALID_ARG; + } else if (mcPatch != 0) { + /* Patch not allowed because there is no ROM */ + return DRX_STS_INVALID_ARG; + } + } + + /* Everything else: OK */ + return DRX_STS_OK; } /*============================================================================*/ @@ -4825,207 +4549,203 @@ CtrlValidateUCode (pDRXDemodInstance_t demod) * \param channel pointer to channel data. * \return DRXStatus_t. */ -static DRXStatus_t -InitAGC ( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = NULL; - pDRXCommonAttr_t commonAttr = NULL; - pDRXJData_t extAttr = NULL; - pDRXJCfgAgc_t pAgcRfSettings = NULL; - pDRXJCfgAgc_t pAgcIfSettings = NULL; - u16_t IngainTgtMax = 0; - u16_t clpDirTo = 0; - u16_t snsSumMax = 0; - u16_t clpSumMax = 0; - u16_t snsDirTo = 0; - u16_t kiInnergainMin = 0; - u16_t agcKi = 0; - u16_t kiMax = 0; - u16_t ifIaccuHiTgtMin = 0; - u16_t data = 0; - u16_t agcKiDgain = 0; - u16_t kiMin = 0; - u16_t clpCtrlMode = 0; - u16_t agcRf = 0; - u16_t agcIf = 0; - devAddr = demod->myI2CDevAddr; - commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - switch (extAttr->standard) - { - case DRX_STANDARD_8VSB : - clpSumMax = 1023; - clpDirTo = (u16_t)(-9); - snsSumMax = 1023; - snsDirTo = (u16_t)(-9); - kiInnergainMin = (u16_t)(-32768); - kiMax = 0x032C; - agcKiDgain = 0xC; - ifIaccuHiTgtMin = 2047; - kiMin = 0x0117; - IngainTgtMax = 16383; - clpCtrlMode = 0; - WR16( devAddr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff ); - WR16( devAddr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_SUM__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_CYCCNT__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_DIR_WD__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_DIR_STP__A, 1 ); - WR16( devAddr, SCU_RAM_AGC_SNS_SUM__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_SNS_CYCCNT__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_SNS_DIR_WD__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_SNS_DIR_STP__A, 1 ); - WR16( devAddr, SCU_RAM_AGC_INGAIN__A, 1024 ); - WR16( devAddr, SCU_RAM_VSB_AGC_POW_TGT__A, 22600 ); - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT__A, 13200 ); - pAgcIfSettings = &(extAttr->vsbIfAgcCfg); - pAgcRfSettings = &(extAttr->vsbRfAgcCfg); - break; +static DRXStatus_t InitAGC(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = NULL; + pDRXCommonAttr_t commonAttr = NULL; + pDRXJData_t extAttr = NULL; + pDRXJCfgAgc_t pAgcRfSettings = NULL; + pDRXJCfgAgc_t pAgcIfSettings = NULL; + u16_t IngainTgtMax = 0; + u16_t clpDirTo = 0; + u16_t snsSumMax = 0; + u16_t clpSumMax = 0; + u16_t snsDirTo = 0; + u16_t kiInnergainMin = 0; + u16_t agcKi = 0; + u16_t kiMax = 0; + u16_t ifIaccuHiTgtMin = 0; + u16_t data = 0; + u16_t agcKiDgain = 0; + u16_t kiMin = 0; + u16_t clpCtrlMode = 0; + u16_t agcRf = 0; + u16_t agcIf = 0; + devAddr = demod->myI2CDevAddr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + clpSumMax = 1023; + clpDirTo = (u16_t) (-9); + snsSumMax = 1023; + snsDirTo = (u16_t) (-9); + kiInnergainMin = (u16_t) (-32768); + kiMax = 0x032C; + agcKiDgain = 0xC; + ifIaccuHiTgtMin = 2047; + kiMin = 0x0117; + IngainTgtMax = 16383; + clpCtrlMode = 0; + WR16(devAddr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff); + WR16(devAddr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0); + WR16(devAddr, SCU_RAM_AGC_CLP_SUM__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_CYCCNT__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_DIR_WD__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_DIR_STP__A, 1); + WR16(devAddr, SCU_RAM_AGC_SNS_SUM__A, 0); + WR16(devAddr, SCU_RAM_AGC_SNS_CYCCNT__A, 0); + WR16(devAddr, SCU_RAM_AGC_SNS_DIR_WD__A, 0); + WR16(devAddr, SCU_RAM_AGC_SNS_DIR_STP__A, 1); + WR16(devAddr, SCU_RAM_AGC_INGAIN__A, 1024); + WR16(devAddr, SCU_RAM_VSB_AGC_POW_TGT__A, 22600); + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT__A, 13200); + pAgcIfSettings = &(extAttr->vsbIfAgcCfg); + pAgcRfSettings = &(extAttr->vsbRfAgcCfg); + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_C: - case DRX_STANDARD_ITU_B: - IngainTgtMax = 5119; - clpSumMax = 1023; - clpDirTo = (u16_t)(-5); - snsSumMax = 127; - snsDirTo = (u16_t)(-3); - kiInnergainMin = 0; - kiMax = 0x0657; - ifIaccuHiTgtMin = 2047; - agcKiDgain = 0x7; - kiMin = 0x0117; - clpCtrlMode = 0; - WR16( devAddr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff ); - WR16( devAddr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_SUM__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_CYCCNT__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_DIR_WD__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_DIR_STP__A, 1 ); - WR16( devAddr, SCU_RAM_AGC_SNS_SUM__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_SNS_CYCCNT__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_SNS_DIR_WD__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_SNS_DIR_STP__A, 1 ); - pAgcIfSettings = &(extAttr->qamIfAgcCfg); - pAgcRfSettings = &(extAttr->qamRfAgcCfg); - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top ); - - RR16( devAddr, SCU_RAM_AGC_KI__A, &agcKi ); - agcKi &= 0xf000; - WR16( devAddr, SCU_RAM_AGC_KI__A, agcKi ); - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_B: + IngainTgtMax = 5119; + clpSumMax = 1023; + clpDirTo = (u16_t) (-5); + snsSumMax = 127; + snsDirTo = (u16_t) (-3); + kiInnergainMin = 0; + kiMax = 0x0657; + ifIaccuHiTgtMin = 2047; + agcKiDgain = 0x7; + kiMin = 0x0117; + clpCtrlMode = 0; + WR16(devAddr, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff); + WR16(devAddr, SCU_RAM_AGC_KI_MAXGAIN__A, 0x0); + WR16(devAddr, SCU_RAM_AGC_CLP_SUM__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_CYCCNT__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_DIR_WD__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_DIR_STP__A, 1); + WR16(devAddr, SCU_RAM_AGC_SNS_SUM__A, 0); + WR16(devAddr, SCU_RAM_AGC_SNS_CYCCNT__A, 0); + WR16(devAddr, SCU_RAM_AGC_SNS_DIR_WD__A, 0); + WR16(devAddr, SCU_RAM_AGC_SNS_DIR_STP__A, 1); + pAgcIfSettings = &(extAttr->qamIfAgcCfg); + pAgcRfSettings = &(extAttr->qamRfAgcCfg); + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top); + + RR16(devAddr, SCU_RAM_AGC_KI__A, &agcKi); + agcKi &= 0xf000; + WR16(devAddr, SCU_RAM_AGC_KI__A, agcKi); + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_FM: - clpSumMax = 1023; - snsSumMax = 1023; - kiInnergainMin = (u16_t)(-32768); - ifIaccuHiTgtMin = 2047; - agcKiDgain = 0x7; - kiMin = 0x0225; - kiMax = 0x0547; - clpDirTo = (u16_t)(-9); - snsDirTo = (u16_t)(-9); - IngainTgtMax = 9000; - clpCtrlMode = 1; - pAgcIfSettings = &(extAttr->atvIfAgcCfg); - pAgcRfSettings = &(extAttr->atvRfAgcCfg); - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top ); - break; - case DRX_STANDARD_NTSC: - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I : - clpSumMax = 1023; - snsSumMax = 1023; - kiInnergainMin = (u16_t)(-32768); - ifIaccuHiTgtMin = 2047; - agcKiDgain = 0x7; - kiMin = 0x0225; - kiMax = 0x0547; - clpDirTo = (u16_t)(-9); - IngainTgtMax = 9000; - pAgcIfSettings = &(extAttr->atvIfAgcCfg); - pAgcRfSettings = &(extAttr->atvRfAgcCfg); - snsDirTo = (u16_t)(-9); - clpCtrlMode = 1; - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top ); - break; - case DRX_STANDARD_PAL_SECAM_L : - case DRX_STANDARD_PAL_SECAM_LP: - clpSumMax = 1023; - snsSumMax = 1023; - kiInnergainMin = (u16_t)(-32768); - ifIaccuHiTgtMin = 2047; - agcKiDgain = 0x7; - kiMin = 0x0225; - kiMax = 0x0547; - clpDirTo = (u16_t)(-9); - snsDirTo = (u16_t)(-9); - IngainTgtMax = 9000; - clpCtrlMode = 1; - pAgcIfSettings = &(extAttr->atvIfAgcCfg); - pAgcRfSettings = &(extAttr->atvRfAgcCfg); - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top ); - break; + case DRX_STANDARD_FM: + clpSumMax = 1023; + snsSumMax = 1023; + kiInnergainMin = (u16_t) (-32768); + ifIaccuHiTgtMin = 2047; + agcKiDgain = 0x7; + kiMin = 0x0225; + kiMax = 0x0547; + clpDirTo = (u16_t) (-9); + snsDirTo = (u16_t) (-9); + IngainTgtMax = 9000; + clpCtrlMode = 1; + pAgcIfSettings = &(extAttr->atvIfAgcCfg); + pAgcRfSettings = &(extAttr->atvRfAgcCfg); + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top); + break; + case DRX_STANDARD_NTSC: + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + clpSumMax = 1023; + snsSumMax = 1023; + kiInnergainMin = (u16_t) (-32768); + ifIaccuHiTgtMin = 2047; + agcKiDgain = 0x7; + kiMin = 0x0225; + kiMax = 0x0547; + clpDirTo = (u16_t) (-9); + IngainTgtMax = 9000; + pAgcIfSettings = &(extAttr->atvIfAgcCfg); + pAgcRfSettings = &(extAttr->atvRfAgcCfg); + snsDirTo = (u16_t) (-9); + clpCtrlMode = 1; + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top); + break; + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + clpSumMax = 1023; + snsSumMax = 1023; + kiInnergainMin = (u16_t) (-32768); + ifIaccuHiTgtMin = 2047; + agcKiDgain = 0x7; + kiMin = 0x0225; + kiMax = 0x0547; + clpDirTo = (u16_t) (-9); + snsDirTo = (u16_t) (-9); + IngainTgtMax = 9000; + clpCtrlMode = 1; + pAgcIfSettings = &(extAttr->atvIfAgcCfg); + pAgcRfSettings = &(extAttr->atvRfAgcCfg); + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT__A, pAgcIfSettings->top); + break; #endif - default: - return ( DRX_STS_INVALID_ARG ); - } - - /* for new AGC interface */ - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT_MIN__A, pAgcIfSettings->top ); - WR16( devAddr, SCU_RAM_AGC_INGAIN__A, pAgcIfSettings->top ); /* Gain fed from inner to outer AGC */ - WR16( devAddr, SCU_RAM_AGC_INGAIN_TGT_MAX__A, IngainTgtMax ); - WR16( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MIN__A, ifIaccuHiTgtMin ); - WR16( devAddr, SCU_RAM_AGC_IF_IACCU_HI__A, 0 ); /* set to pAgcSettings->top before */ - WR16( devAddr, SCU_RAM_AGC_IF_IACCU_LO__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_RF_IACCU_HI__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_RF_IACCU_LO__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_RF_MAX__A, 32767 ); - WR16( devAddr, SCU_RAM_AGC_CLP_SUM_MAX__A, clpSumMax ); - WR16( devAddr, SCU_RAM_AGC_SNS_SUM_MAX__A, snsSumMax ); - WR16( devAddr, SCU_RAM_AGC_KI_INNERGAIN_MIN__A, kiInnergainMin ); - WR16( devAddr, SCU_RAM_AGC_FAST_SNS_CTRL_DELAY__A, 50 ); - WR16( devAddr, SCU_RAM_AGC_KI_CYCLEN__A, 500 ); - WR16( devAddr, SCU_RAM_AGC_SNS_CYCLEN__A, 500 ); - WR16( devAddr, SCU_RAM_AGC_KI_MAXMINGAIN_TH__A, 20 ); - WR16( devAddr, SCU_RAM_AGC_KI_MIN__A, kiMin ); - WR16( devAddr, SCU_RAM_AGC_KI_MAX__A, kiMax ); - WR16( devAddr, SCU_RAM_AGC_KI_RED__A, 0 ); - WR16( devAddr, SCU_RAM_AGC_CLP_SUM_MIN__A, 8 ); - WR16( devAddr, SCU_RAM_AGC_CLP_CYCLEN__A, 500 ); - WR16( devAddr, SCU_RAM_AGC_CLP_DIR_TO__A, clpDirTo ); - WR16( devAddr, SCU_RAM_AGC_SNS_SUM_MIN__A, 8 ); - WR16( devAddr, SCU_RAM_AGC_SNS_DIR_TO__A, snsDirTo ); - WR16( devAddr, SCU_RAM_AGC_FAST_CLP_CTRL_DELAY__A, 50 ); - WR16( devAddr, SCU_RAM_AGC_CLP_CTRL_MODE__A, clpCtrlMode ); - - agcRf = 0x800 + pAgcRfSettings->cutOffCurrent; - if ( commonAttr->tunerRfAgcPol == TRUE ) - { - agcRf = 0x87ff - agcRf; - } + default: + return (DRX_STS_INVALID_ARG); + } - agcIf = 0x800; - if ( commonAttr->tunerIfAgcPol == TRUE ) - { - agcRf = 0x87ff - agcRf; - } + /* for new AGC interface */ + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT_MIN__A, pAgcIfSettings->top); + WR16(devAddr, SCU_RAM_AGC_INGAIN__A, pAgcIfSettings->top); /* Gain fed from inner to outer AGC */ + WR16(devAddr, SCU_RAM_AGC_INGAIN_TGT_MAX__A, IngainTgtMax); + WR16(devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MIN__A, ifIaccuHiTgtMin); + WR16(devAddr, SCU_RAM_AGC_IF_IACCU_HI__A, 0); /* set to pAgcSettings->top before */ + WR16(devAddr, SCU_RAM_AGC_IF_IACCU_LO__A, 0); + WR16(devAddr, SCU_RAM_AGC_RF_IACCU_HI__A, 0); + WR16(devAddr, SCU_RAM_AGC_RF_IACCU_LO__A, 0); + WR16(devAddr, SCU_RAM_AGC_RF_MAX__A, 32767); + WR16(devAddr, SCU_RAM_AGC_CLP_SUM_MAX__A, clpSumMax); + WR16(devAddr, SCU_RAM_AGC_SNS_SUM_MAX__A, snsSumMax); + WR16(devAddr, SCU_RAM_AGC_KI_INNERGAIN_MIN__A, kiInnergainMin); + WR16(devAddr, SCU_RAM_AGC_FAST_SNS_CTRL_DELAY__A, 50); + WR16(devAddr, SCU_RAM_AGC_KI_CYCLEN__A, 500); + WR16(devAddr, SCU_RAM_AGC_SNS_CYCLEN__A, 500); + WR16(devAddr, SCU_RAM_AGC_KI_MAXMINGAIN_TH__A, 20); + WR16(devAddr, SCU_RAM_AGC_KI_MIN__A, kiMin); + WR16(devAddr, SCU_RAM_AGC_KI_MAX__A, kiMax); + WR16(devAddr, SCU_RAM_AGC_KI_RED__A, 0); + WR16(devAddr, SCU_RAM_AGC_CLP_SUM_MIN__A, 8); + WR16(devAddr, SCU_RAM_AGC_CLP_CYCLEN__A, 500); + WR16(devAddr, SCU_RAM_AGC_CLP_DIR_TO__A, clpDirTo); + WR16(devAddr, SCU_RAM_AGC_SNS_SUM_MIN__A, 8); + WR16(devAddr, SCU_RAM_AGC_SNS_DIR_TO__A, snsDirTo); + WR16(devAddr, SCU_RAM_AGC_FAST_CLP_CTRL_DELAY__A, 50); + WR16(devAddr, SCU_RAM_AGC_CLP_CTRL_MODE__A, clpCtrlMode); + + agcRf = 0x800 + pAgcRfSettings->cutOffCurrent; + if (commonAttr->tunerRfAgcPol == TRUE) { + agcRf = 0x87ff - agcRf; + } + + agcIf = 0x800; + if (commonAttr->tunerIfAgcPol == TRUE) { + agcRf = 0x87ff - agcRf; + } - WR16( devAddr, IQM_AF_AGC_RF__A, agcRf ); - WR16( devAddr, IQM_AF_AGC_IF__A, agcIf ); + WR16(devAddr, IQM_AF_AGC_RF__A, agcRf); + WR16(devAddr, IQM_AF_AGC_IF__A, agcIf); - /* Set/restore Ki DGAIN factor */ - RR16( devAddr, SCU_RAM_AGC_KI__A, &data ); - data &= ~SCU_RAM_AGC_KI_DGAIN__M; - data |= ( agcKiDgain << SCU_RAM_AGC_KI_DGAIN__B ); - WR16( devAddr, SCU_RAM_AGC_KI__A, data ); + /* Set/restore Ki DGAIN factor */ + RR16(devAddr, SCU_RAM_AGC_KI__A, &data); + data &= ~SCU_RAM_AGC_KI_DGAIN__M; + data |= (agcKiDgain << SCU_RAM_AGC_KI_DGAIN__B); + WR16(devAddr, SCU_RAM_AGC_KI__A, data); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5037,99 +4757,97 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -SetFrequency ( pDRXDemodInstance_t demod, - pDRXChannel_t channel, - DRXFrequency_t tunerFreqOffset - ) -{ - pI2CDeviceAddr_t devAddr = NULL; - pDRXCommonAttr_t commonAttr = NULL; - DRXFrequency_t samplingFrequency = 0; - DRXFrequency_t frequencyShift = 0; - DRXFrequency_t ifFreqActual = 0; - DRXFrequency_t rfFreqResidual = 0; - DRXFrequency_t adcFreq = 0; - DRXFrequency_t intermediateFreq = 0; - u32_t iqmFsRateOfs = 0; - pDRXJData_t extAttr = NULL; - Bool_t adcFlip = TRUE; - Bool_t selectPosImage = FALSE; - Bool_t rfMirror = FALSE; - Bool_t tunerMirror = TRUE; - Bool_t imageToSelect = TRUE; - DRXFrequency_t fmFrequencyShift = 0; - - devAddr = demod -> myI2CDevAddr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - extAttr = (pDRXJData_t)demod->myExtAttr; - rfFreqResidual = -1 * tunerFreqOffset; - rfMirror = (extAttr->mirror == DRX_MIRROR_YES)?TRUE:FALSE; - tunerMirror = demod->myCommonAttr->mirrorFreqSpect?FALSE:TRUE; - /* - Program frequency shifter - No need to account for mirroring on RF - */ - switch (extAttr->standard) - { - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_C: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ - case DRX_STANDARD_8VSB: - selectPosImage = TRUE; - break; - case DRX_STANDARD_FM: - /* After IQM FS sound carrier must appear at 4 Mhz in spect. - Sound carrier is already 3Mhz above centre frequency due - to tuner setting so now add an extra shift of 1MHz... */ - fmFrequencyShift = 1000; - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L: - selectPosImage = FALSE; - break; - default: - return ( DRX_STS_INVALID_ARG ); - } - intermediateFreq = demod->myCommonAttr->intermediateFreq; - samplingFrequency = demod->myCommonAttr->sysClockFreq/3; - if ( tunerMirror == TRUE ) - { - /* tuner doesn't mirror */ - ifFreqActual = intermediateFreq + rfFreqResidual + fmFrequencyShift; - } else { - /* tuner mirrors */ - ifFreqActual = intermediateFreq - rfFreqResidual - fmFrequencyShift; - } - if ( ifFreqActual > samplingFrequency / 2) - { - /* adc mirrors */ - adcFreq = samplingFrequency - ifFreqActual; - adcFlip = TRUE; - } else { - /* adc doesn't mirror */ - adcFreq = ifFreqActual; - adcFlip = FALSE; - } - - frequencyShift = adcFreq; - imageToSelect = (Bool_t)(rfMirror ^ tunerMirror ^ adcFlip ^ selectPosImage); - iqmFsRateOfs = Frac28(frequencyShift,samplingFrequency); - - if (imageToSelect) - iqmFsRateOfs = ~iqmFsRateOfs + 1; - - /* Program frequency shifter with tuner offset compensation */ - /* frequencyShift += tunerFreqOffset; TODO */ - WR32( devAddr, IQM_FS_RATE_OFS_LO__A , iqmFsRateOfs ); - extAttr->iqmFsRateOfs = iqmFsRateOfs; - extAttr->posImage = (Bool_t)(rfMirror ^ tunerMirror ^ selectPosImage); - - return (DRX_STS_OK); +SetFrequency(pDRXDemodInstance_t demod, + pDRXChannel_t channel, DRXFrequency_t tunerFreqOffset) +{ + pI2CDeviceAddr_t devAddr = NULL; + pDRXCommonAttr_t commonAttr = NULL; + DRXFrequency_t samplingFrequency = 0; + DRXFrequency_t frequencyShift = 0; + DRXFrequency_t ifFreqActual = 0; + DRXFrequency_t rfFreqResidual = 0; + DRXFrequency_t adcFreq = 0; + DRXFrequency_t intermediateFreq = 0; + u32_t iqmFsRateOfs = 0; + pDRXJData_t extAttr = NULL; + Bool_t adcFlip = TRUE; + Bool_t selectPosImage = FALSE; + Bool_t rfMirror = FALSE; + Bool_t tunerMirror = TRUE; + Bool_t imageToSelect = TRUE; + DRXFrequency_t fmFrequencyShift = 0; + + devAddr = demod->myI2CDevAddr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; + rfFreqResidual = -1 * tunerFreqOffset; + rfMirror = (extAttr->mirror == DRX_MIRROR_YES) ? TRUE : FALSE; + tunerMirror = demod->myCommonAttr->mirrorFreqSpect ? FALSE : TRUE; + /* + Program frequency shifter + No need to account for mirroring on RF + */ + switch (extAttr->standard) { + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_C: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_8VSB: + selectPosImage = TRUE; + break; + case DRX_STANDARD_FM: + /* After IQM FS sound carrier must appear at 4 Mhz in spect. + Sound carrier is already 3Mhz above centre frequency due + to tuner setting so now add an extra shift of 1MHz... */ + fmFrequencyShift = 1000; + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: + selectPosImage = FALSE; + break; + default: + return (DRX_STS_INVALID_ARG); + } + intermediateFreq = demod->myCommonAttr->intermediateFreq; + samplingFrequency = demod->myCommonAttr->sysClockFreq / 3; + if (tunerMirror == TRUE) { + /* tuner doesn't mirror */ + ifFreqActual = + intermediateFreq + rfFreqResidual + fmFrequencyShift; + } else { + /* tuner mirrors */ + ifFreqActual = + intermediateFreq - rfFreqResidual - fmFrequencyShift; + } + if (ifFreqActual > samplingFrequency / 2) { + /* adc mirrors */ + adcFreq = samplingFrequency - ifFreqActual; + adcFlip = TRUE; + } else { + /* adc doesn't mirror */ + adcFreq = ifFreqActual; + adcFlip = FALSE; + } + + frequencyShift = adcFreq; + imageToSelect = + (Bool_t) (rfMirror ^ tunerMirror ^ adcFlip ^ selectPosImage); + iqmFsRateOfs = Frac28(frequencyShift, samplingFrequency); + + if (imageToSelect) + iqmFsRateOfs = ~iqmFsRateOfs + 1; + + /* Program frequency shifter with tuner offset compensation */ + /* frequencyShift += tunerFreqOffset; TODO */ + WR32(devAddr, IQM_FS_RATE_OFS_LO__A, iqmFsRateOfs); + extAttr->iqmFsRateOfs = iqmFsRateOfs; + extAttr->posImage = (Bool_t) (rfMirror ^ tunerMirror ^ selectPosImage); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5147,58 +4865,52 @@ rw_error: #define DRXJ_RFAGC_MAX 0x3fff #define DRXJ_RFAGC_MIN 0x800 -static DRXStatus_t -GetSigStrength( pDRXDemodInstance_t demod, - pu16_t sigStrength ) -{ - u16_t rfGain = 0; - u16_t ifGain = 0; - u16_t ifAgcSns = 0; - u16_t ifAgcTop = 0; - u16_t rfAgcMax = 0; - u16_t rfAgcMin = 0; - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod -> myI2CDevAddr; - - RR16( devAddr, IQM_AF_AGC_IF__A, &ifGain ); - ifGain &= IQM_AF_AGC_IF__M; - RR16( devAddr, IQM_AF_AGC_RF__A, &rfGain ); - rfGain &= IQM_AF_AGC_RF__M; - - ifAgcSns = DRXJ_AGC_SNS; - ifAgcTop = DRXJ_AGC_TOP; - rfAgcMax = DRXJ_RFAGC_MAX; - rfAgcMin = DRXJ_RFAGC_MIN; - - if (ifGain > ifAgcTop) - { - if (rfGain > rfAgcMax) - *sigStrength = 100; - else if (rfGain > rfAgcMin) - { - CHK_ZERO (rfAgcMax - rfAgcMin); - *sigStrength = 75 + 25 * (rfGain - rfAgcMin) / (rfAgcMax - rfAgcMin); - } - else - *sigStrength = 75; - } - else if (ifGain > ifAgcSns) - { - CHK_ZERO(ifAgcTop - ifAgcSns); - *sigStrength = 20 + 55* (ifGain - ifAgcSns)/ (ifAgcTop - ifAgcSns); - } - else - { - CHK_ZERO (ifAgcSns); - *sigStrength = (20 * ifGain / ifAgcSns); - } +static DRXStatus_t GetSigStrength(pDRXDemodInstance_t demod, pu16_t sigStrength) +{ + u16_t rfGain = 0; + u16_t ifGain = 0; + u16_t ifAgcSns = 0; + u16_t ifAgcTop = 0; + u16_t rfAgcMax = 0; + u16_t rfAgcMin = 0; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + + RR16(devAddr, IQM_AF_AGC_IF__A, &ifGain); + ifGain &= IQM_AF_AGC_IF__M; + RR16(devAddr, IQM_AF_AGC_RF__A, &rfGain); + rfGain &= IQM_AF_AGC_RF__M; + + ifAgcSns = DRXJ_AGC_SNS; + ifAgcTop = DRXJ_AGC_TOP; + rfAgcMax = DRXJ_RFAGC_MAX; + rfAgcMin = DRXJ_RFAGC_MIN; + + if (ifGain > ifAgcTop) { + if (rfGain > rfAgcMax) + *sigStrength = 100; + else if (rfGain > rfAgcMin) { + CHK_ZERO(rfAgcMax - rfAgcMin); + *sigStrength = + 75 + 25 * (rfGain - rfAgcMin) / (rfAgcMax - + rfAgcMin); + } else + *sigStrength = 75; + } else if (ifGain > ifAgcSns) { + CHK_ZERO(ifAgcTop - ifAgcSns); + *sigStrength = + 20 + 55 * (ifGain - ifAgcSns) / (ifAgcTop - ifAgcSns); + } else { + CHK_ZERO(ifAgcSns); + *sigStrength = (20 * ifGain / ifAgcSns); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5212,42 +4924,36 @@ rw_error: * \retval DRX_STS_ERROR Erroneous data, sigStrength contains invalid data. */ #ifdef DRXJ_SIGNAL_ACCUM_ERR -static DRXStatus_t -GetAccPktErr( pDRXDemodInstance_t demod, - pu16_t packetErr ) -{ - static u16_t pktErr = 0; - static u16_t lastPktErr = 0; - u16_t data = 0; - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod -> myI2CDevAddr; - - RR16( devAddr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, &data ); - if ( extAttr->resetPktErrAcc == TRUE ) - { - lastPktErr = data; - pktErr = 0; - extAttr->resetPktErrAcc = FALSE; - } +static DRXStatus_t GetAccPktErr(pDRXDemodInstance_t demod, pu16_t packetErr) +{ + static u16_t pktErr = 0; + static u16_t lastPktErr = 0; + u16_t data = 0; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + + RR16(devAddr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, &data); + if (extAttr->resetPktErrAcc == TRUE) { + lastPktErr = data; + pktErr = 0; + extAttr->resetPktErrAcc = FALSE; + } - if (data < lastPktErr) - { - pktErr += 0xffff - lastPktErr; - pktErr += data; - } - else - { - pktErr += (data - lastPktErr); - } - *packetErr = pktErr; - lastPktErr = data; + if (data < lastPktErr) { + pktErr += 0xffff - lastPktErr; + pktErr += data; + } else { + pktErr += (data - lastPktErr); + } + *packetErr = pktErr; + lastPktErr = data; - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif @@ -5259,22 +4965,21 @@ rw_error: * \retval DRX_STS_OK. * \retval DRX_STS_ERROR Erroneous data. */ -static DRXStatus_t -CtrlSetCfgResetPktErr( pDRXDemodInstance_t demod ) +static DRXStatus_t CtrlSetCfgResetPktErr(pDRXDemodInstance_t demod) { #ifdef DRXJ_SIGNAL_ACCUM_ERR - pDRXJData_t extAttr = NULL; - u16_t packetError = 0; + pDRXJData_t extAttr = NULL; + u16_t packetError = 0; - extAttr = (pDRXJData_t)demod->myExtAttr; - extAttr->resetPktErrAcc = TRUE; - /* call to reset counter */ - CHK_ERROR (GetAccPktErr (demod, &packetError)); + extAttr = (pDRXJData_t) demod->myExtAttr; + extAttr->resetPktErrAcc = TRUE; + /* call to reset counter */ + CHK_ERROR(GetAccPktErr(demod, &packetError)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: #endif - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5282,33 +4987,37 @@ rw_error: * \brief Get symbol rate offset in QAM & 8VSB mode * \return Error code */ -static DRXStatus_t -GetSTRFreqOffset( pDRXDemodInstance_t demod, - s32_t *STRFreq - ) +static DRXStatus_t GetSTRFreqOffset(pDRXDemodInstance_t demod, s32_t * STRFreq) { - u32_t symbolFrequencyRatio = 0; - u32_t symbolNomFrequencyRatio = 0; + u32_t symbolFrequencyRatio = 0; + u32_t symbolNomFrequencyRatio = 0; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - standard = extAttr->standard; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; - ARR32( devAddr, IQM_RC_RATE_LO__A, &symbolFrequencyRatio ); - symbolNomFrequencyRatio = extAttr->iqmRcRateOfs; + ARR32(devAddr, IQM_RC_RATE_LO__A, &symbolFrequencyRatio); + symbolNomFrequencyRatio = extAttr->iqmRcRateOfs; - if ( symbolFrequencyRatio > symbolNomFrequencyRatio ) - *STRFreq = -1 * FracTimes1e6( ( symbolFrequencyRatio - symbolNomFrequencyRatio ), (symbolFrequencyRatio + (1 << 23)) ); - else - *STRFreq = FracTimes1e6( ( symbolNomFrequencyRatio - symbolFrequencyRatio ), (symbolFrequencyRatio + (1 << 23)) ); + if (symbolFrequencyRatio > symbolNomFrequencyRatio) + *STRFreq = + -1 * + FracTimes1e6((symbolFrequencyRatio - + symbolNomFrequencyRatio), + (symbolFrequencyRatio + (1 << 23))); + else + *STRFreq = + FracTimes1e6((symbolNomFrequencyRatio - + symbolFrequencyRatio), + (symbolFrequencyRatio + (1 << 23))); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5316,55 +5025,51 @@ rw_error: * \brief Get the value of CTLFreq in QAM & ATSC mode * \return Error code */ -static DRXStatus_t -GetCTLFreqOffset ( pDRXDemodInstance_t demod, - s32_t *CTLFreq - ) -{ - DRXFrequency_t samplingFrequency = 0; - s32_t currentFrequency = 0; - s32_t nominalFrequency = 0; - s32_t carrierFrequencyShift = 0; - s32_t sign = 1; - u32_t data64Hi = 0; - u32_t data64Lo = 0; - pDRXJData_t extAttr = NULL; - pDRXCommonAttr_t commonAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - - samplingFrequency = commonAttr->sysClockFreq/3; - - /* both registers are sign extended */ - nominalFrequency = extAttr->iqmFsRateOfs; - ARR32( devAddr, IQM_FS_RATE_LO__A, (pu32_t) ¤tFrequency ); - - if ( extAttr->posImage == TRUE ) - { - /* negative image */ - carrierFrequencyShift = nominalFrequency - currentFrequency; - } else { - /* positive image */ - carrierFrequencyShift = currentFrequency - nominalFrequency; - } - - /* carrier Frequency Shift In Hz */ - if (carrierFrequencyShift < 0) - { - sign = -1; - carrierFrequencyShift *= sign; - } +static DRXStatus_t GetCTLFreqOffset(pDRXDemodInstance_t demod, s32_t * CTLFreq) +{ + DRXFrequency_t samplingFrequency = 0; + s32_t currentFrequency = 0; + s32_t nominalFrequency = 0; + s32_t carrierFrequencyShift = 0; + s32_t sign = 1; + u32_t data64Hi = 0; + u32_t data64Lo = 0; + pDRXJData_t extAttr = NULL; + pDRXCommonAttr_t commonAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + samplingFrequency = commonAttr->sysClockFreq / 3; + + /* both registers are sign extended */ + nominalFrequency = extAttr->iqmFsRateOfs; + ARR32(devAddr, IQM_FS_RATE_LO__A, (pu32_t) & currentFrequency); + + if (extAttr->posImage == TRUE) { + /* negative image */ + carrierFrequencyShift = nominalFrequency - currentFrequency; + } else { + /* positive image */ + carrierFrequencyShift = currentFrequency - nominalFrequency; + } + + /* carrier Frequency Shift In Hz */ + if (carrierFrequencyShift < 0) { + sign = -1; + carrierFrequencyShift *= sign; + } - /* *CTLFreq = carrierFrequencyShift * 50.625e6 / (1 << 28); */ - Mult32 ( carrierFrequencyShift, samplingFrequency, &data64Hi, &data64Lo ); - *CTLFreq = (s32_t)((((data64Lo >> 28) & 0xf) | (data64Hi << 4)) * sign); + /* *CTLFreq = carrierFrequencyShift * 50.625e6 / (1 << 28); */ + Mult32(carrierFrequencyShift, samplingFrequency, &data64Hi, &data64Lo); + *CTLFreq = + (s32_t) ((((data64Lo >> 28) & 0xf) | (data64Hi << 4)) * sign); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -5377,174 +5082,174 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -SetAgcRf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings, Bool_t atomic ) +SetAgcRf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings, Bool_t atomic) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - pDRXJCfgAgc_t pAgcSettings = NULL; - pDRXCommonAttr_t commonAttr = NULL; - DRXWriteReg16Func_t ScuWr16 = NULL; - DRXReadReg16Func_t ScuRr16 = NULL; - - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - if (atomic) - { - ScuRr16 = DRXJ_DAP_SCU_AtomicReadReg16; - ScuWr16 = DRXJ_DAP_SCU_AtomicWriteReg16; - } - else - { - ScuRr16 = DRXJ_DAP.readReg16Func; - ScuWr16 = DRXJ_DAP.writeReg16Func; - } - - /* Configure AGC only if standard is currently active*/ - if ( ( extAttr->standard == agcSettings->standard ) || - ( DRXJ_ISQAMSTD( extAttr->standard ) && - DRXJ_ISQAMSTD( agcSettings->standard ) ) || - ( DRXJ_ISATVSTD( extAttr->standard ) && - DRXJ_ISATVSTD( agcSettings->standard ) ) ) - { - u16_t data = 0; - - switch ( agcSettings->ctrlMode ) - { - case DRX_AGC_CTRL_AUTO: - - /* Enable RF AGC DAC */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - data |= IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE; - WR16( devAddr, IQM_AF_STDBY__A, data ); - - /* Enable SCU RF AGC loop */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI__A, &data, 0 )); - data &= ~SCU_RAM_AGC_KI_RF__M; - if ( extAttr->standard == DRX_STANDARD_8VSB ) - { - data |= ( 2 << SCU_RAM_AGC_KI_RF__B ); - } - else if (DRXJ_ISQAMSTD( extAttr->standard )) - { - data |= ( 5 << SCU_RAM_AGC_KI_RF__B ); - } - else - { - data |= ( 4 << SCU_RAM_AGC_KI_RF__B ); - } - - if (commonAttr->tunerRfAgcPol) - { - data |= SCU_RAM_AGC_KI_INV_RF_POL__M; - } - else - { - data &= ~SCU_RAM_AGC_KI_INV_RF_POL__M; - } - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI__A, data, 0 )); - - /* Set speed ( using complementary reduction value ) */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI_RED__A , &data, 0 )); - data &= ~SCU_RAM_AGC_KI_RED_RAGC_RED__M; - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI_RED__A , - (~(agcSettings->speed << SCU_RAM_AGC_KI_RED_RAGC_RED__B) - & SCU_RAM_AGC_KI_RED_RAGC_RED__M ) - | data, 0 )); - - if (agcSettings->standard == DRX_STANDARD_8VSB) - pAgcSettings = &(extAttr->vsbIfAgcCfg); - else if (DRXJ_ISQAMSTD( agcSettings->standard )) - pAgcSettings = &(extAttr->qamIfAgcCfg); - else if (DRXJ_ISATVSTD( agcSettings->standard )) - pAgcSettings = &(extAttr->atvIfAgcCfg); - else - return (DRX_STS_INVALID_ARG); - - /* Set TOP, only if IF-AGC is in AUTO mode */ - if ( pAgcSettings->ctrlMode == DRX_AGC_CTRL_AUTO) - { - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, - agcSettings->top, 0 )); - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT__A, - agcSettings->top, 0 )); - } - - /* Cut-Off current */ - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_RF_IACCU_HI_CO__A, - agcSettings->cutOffCurrent, 0 )); - break; - case DRX_AGC_CTRL_USER: - - /* Enable RF AGC DAC */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - data |= IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE; - WR16( devAddr, IQM_AF_STDBY__A , data ); - - /* Disable SCU RF AGC loop */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI__A, &data, 0 )); - data &= ~SCU_RAM_AGC_KI_RF__M; - if (commonAttr->tunerRfAgcPol) - { - data |= SCU_RAM_AGC_KI_INV_RF_POL__M; - } - else - { - data &= ~SCU_RAM_AGC_KI_INV_RF_POL__M; - } - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI__A, data, 0 )); - - /* Write value to output pin */ - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_RF_IACCU_HI__A, agcSettings->outputLevel, 0 )); - break; - case DRX_AGC_CTRL_OFF: - - /* Disable RF AGC DAC */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - data &= (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE); - WR16( devAddr, IQM_AF_STDBY__A , data ); - - /* Disable SCU RF AGC loop */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI__A, &data, 0 )); - data &= ~SCU_RAM_AGC_KI_RF__M; - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI__A, data, 0 )); - break; - default: - return (DRX_STS_INVALID_ARG); - } /* switch ( agcsettings->ctrlMode ) */ - } - - /* Store rf agc settings */ - switch ( agcSettings->standard){ - case DRX_STANDARD_8VSB: - extAttr->vsbRfAgcCfg = *agcSettings; - break; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + pDRXJCfgAgc_t pAgcSettings = NULL; + pDRXCommonAttr_t commonAttr = NULL; + DRXWriteReg16Func_t ScuWr16 = NULL; + DRXReadReg16Func_t ScuRr16 = NULL; + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + if (atomic) { + ScuRr16 = DRXJ_DAP_SCU_AtomicReadReg16; + ScuWr16 = DRXJ_DAP_SCU_AtomicWriteReg16; + } else { + ScuRr16 = DRXJ_DAP.readReg16Func; + ScuWr16 = DRXJ_DAP.writeReg16Func; + } + + /* Configure AGC only if standard is currently active */ + if ((extAttr->standard == agcSettings->standard) || + (DRXJ_ISQAMSTD(extAttr->standard) && + DRXJ_ISQAMSTD(agcSettings->standard)) || + (DRXJ_ISATVSTD(extAttr->standard) && + DRXJ_ISATVSTD(agcSettings->standard))) { + u16_t data = 0; + + switch (agcSettings->ctrlMode) { + case DRX_AGC_CTRL_AUTO: + + /* Enable RF AGC DAC */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + data |= IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE; + WR16(devAddr, IQM_AF_STDBY__A, data); + + /* Enable SCU RF AGC loop */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_RF__M; + if (extAttr->standard == DRX_STANDARD_8VSB) { + data |= (2 << SCU_RAM_AGC_KI_RF__B); + } else if (DRXJ_ISQAMSTD(extAttr->standard)) { + data |= (5 << SCU_RAM_AGC_KI_RF__B); + } else { + data |= (4 << SCU_RAM_AGC_KI_RF__B); + } + + if (commonAttr->tunerRfAgcPol) { + data |= SCU_RAM_AGC_KI_INV_RF_POL__M; + } else { + data &= ~SCU_RAM_AGC_KI_INV_RF_POL__M; + } + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_KI__A, data, 0)); + + /* Set speed ( using complementary reduction value ) */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI_RED__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_RED_RAGC_RED__M; + CHK_ERROR((*ScuWr16) (devAddr, SCU_RAM_AGC_KI_RED__A, + (~ + (agcSettings-> + speed << + SCU_RAM_AGC_KI_RED_RAGC_RED__B) +& SCU_RAM_AGC_KI_RED_RAGC_RED__M) + | data, 0)); + + if (agcSettings->standard == DRX_STANDARD_8VSB) + pAgcSettings = &(extAttr->vsbIfAgcCfg); + else if (DRXJ_ISQAMSTD(agcSettings->standard)) + pAgcSettings = &(extAttr->qamIfAgcCfg); + else if (DRXJ_ISATVSTD(agcSettings->standard)) + pAgcSettings = &(extAttr->atvIfAgcCfg); + else + return (DRX_STS_INVALID_ARG); + + /* Set TOP, only if IF-AGC is in AUTO mode */ + if (pAgcSettings->ctrlMode == DRX_AGC_CTRL_AUTO) { + CHK_ERROR((*ScuWr16) + (devAddr, + SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, + agcSettings->top, 0)); + CHK_ERROR((*ScuWr16) + (devAddr, + SCU_RAM_AGC_IF_IACCU_HI_TGT__A, + agcSettings->top, 0)); + } + + /* Cut-Off current */ + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_RF_IACCU_HI_CO__A, + agcSettings->cutOffCurrent, 0)); + break; + case DRX_AGC_CTRL_USER: + + /* Enable RF AGC DAC */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + data |= IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE; + WR16(devAddr, IQM_AF_STDBY__A, data); + + /* Disable SCU RF AGC loop */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_RF__M; + if (commonAttr->tunerRfAgcPol) { + data |= SCU_RAM_AGC_KI_INV_RF_POL__M; + } else { + data &= ~SCU_RAM_AGC_KI_INV_RF_POL__M; + } + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_KI__A, data, 0)); + + /* Write value to output pin */ + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_RF_IACCU_HI__A, + agcSettings->outputLevel, 0)); + break; + case DRX_AGC_CTRL_OFF: + + /* Disable RF AGC DAC */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + data &= (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE); + WR16(devAddr, IQM_AF_STDBY__A, data); + + /* Disable SCU RF AGC loop */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_RF__M; + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_KI__A, data, 0)); + break; + default: + return (DRX_STS_INVALID_ARG); + } /* switch ( agcsettings->ctrlMode ) */ + } + + /* Store rf agc settings */ + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: + extAttr->vsbRfAgcCfg = *agcSettings; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - extAttr->qamRfAgcCfg = *agcSettings; - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + extAttr->qamRfAgcCfg = *agcSettings; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - case DRX_STANDARD_NTSC: - case DRX_STANDARD_FM: - extAttr->atvRfAgcCfg = *agcSettings; - break; + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_NTSC: + case DRX_STANDARD_FM: + extAttr->atvRfAgcCfg = *agcSettings; + break; #endif - default: - return (DRX_STS_ERROR); - } + default: + return (DRX_STS_ERROR); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5555,58 +5260,57 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -GetAgcRf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) +GetAgcRf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* Return stored AGC settings */ - standard = agcSettings->standard; - switch ( agcSettings->standard){ - case DRX_STANDARD_8VSB: - *agcSettings = extAttr->vsbRfAgcCfg; - break; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* Return stored AGC settings */ + standard = agcSettings->standard; + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: + *agcSettings = extAttr->vsbRfAgcCfg; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - *agcSettings = extAttr->qamRfAgcCfg; - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + *agcSettings = extAttr->qamRfAgcCfg; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - case DRX_STANDARD_NTSC: - case DRX_STANDARD_FM: - *agcSettings = extAttr->atvRfAgcCfg; - break; + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_NTSC: + case DRX_STANDARD_FM: + *agcSettings = extAttr->atvRfAgcCfg; + break; #endif - default: - return (DRX_STS_ERROR); - } - agcSettings->standard = standard; - - /* Get AGC output only if standard is currently active. */ - if ( ( extAttr->standard == agcSettings->standard ) || - ( DRXJ_ISQAMSTD( extAttr->standard ) && - DRXJ_ISQAMSTD( agcSettings->standard ) ) || - ( DRXJ_ISATVSTD( extAttr->standard ) && - DRXJ_ISATVSTD( agcSettings->standard ) ) ) - { - SARR16( devAddr, SCU_RAM_AGC_RF_IACCU_HI__A, - &(agcSettings->outputLevel)); - } + default: + return (DRX_STS_ERROR); + } + agcSettings->standard = standard; + + /* Get AGC output only if standard is currently active. */ + if ((extAttr->standard == agcSettings->standard) || + (DRXJ_ISQAMSTD(extAttr->standard) && + DRXJ_ISQAMSTD(agcSettings->standard)) || + (DRXJ_ISATVSTD(extAttr->standard) && + DRXJ_ISATVSTD(agcSettings->standard))) { + SARR16(devAddr, SCU_RAM_AGC_RF_IACCU_HI__A, + &(agcSettings->outputLevel)); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5617,186 +5321,187 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -SetAgcIf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings, Bool_t atomic ) +SetAgcIf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings, Bool_t atomic) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - pDRXJCfgAgc_t pAgcSettings = NULL; - pDRXCommonAttr_t commonAttr = NULL; - DRXWriteReg16Func_t ScuWr16 = NULL; - DRXReadReg16Func_t ScuRr16 = NULL; - - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - if (atomic) - { - ScuRr16 = DRXJ_DAP_SCU_AtomicReadReg16; - ScuWr16 = DRXJ_DAP_SCU_AtomicWriteReg16; - } - else - { - ScuRr16 = DRXJ_DAP.readReg16Func; - ScuWr16 = DRXJ_DAP.writeReg16Func; - } - - /* Configure AGC only if standard is currently active*/ - if ( ( extAttr->standard == agcSettings->standard ) || - ( DRXJ_ISQAMSTD( extAttr->standard ) && - DRXJ_ISQAMSTD( agcSettings->standard ) ) || - ( DRXJ_ISATVSTD( extAttr->standard ) && - DRXJ_ISATVSTD( agcSettings->standard ) ) ) - { - u16_t data = 0; - - switch ( agcSettings->ctrlMode ) - { - case DRX_AGC_CTRL_AUTO: - /* Enable IF AGC DAC */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - data |= IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE; - WR16( devAddr, IQM_AF_STDBY__A , data ); - - /* Enable SCU IF AGC loop */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI__A, &data, 0 )); - data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; - data &= ~SCU_RAM_AGC_KI_IF__M; - if ( extAttr->standard == DRX_STANDARD_8VSB ) - { - data |= (3 << SCU_RAM_AGC_KI_IF__B ); - } - else if (DRXJ_ISQAMSTD( extAttr->standard )) - { - data |= (6 << SCU_RAM_AGC_KI_IF__B ); - } - else - { - data |= ( 5 << SCU_RAM_AGC_KI_IF__B ); - } - - if (commonAttr->tunerIfAgcPol) - { - data |= SCU_RAM_AGC_KI_INV_IF_POL__M; - } - else - { - data &= ~SCU_RAM_AGC_KI_INV_IF_POL__M; - } - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI__A, data, 0 )); - - /* Set speed (using complementary reduction value) */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI_RED__A , &data, 0 )); - data &= ~SCU_RAM_AGC_KI_RED_IAGC_RED__M; - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI_RED__A , - (~(agcSettings->speed << SCU_RAM_AGC_KI_RED_IAGC_RED__B) - & SCU_RAM_AGC_KI_RED_IAGC_RED__M ) - | data, 0 )); - - if (agcSettings->standard == DRX_STANDARD_8VSB) - pAgcSettings = &(extAttr->vsbRfAgcCfg); - else if (DRXJ_ISQAMSTD( agcSettings->standard )) - pAgcSettings = &(extAttr->qamRfAgcCfg); - else if (DRXJ_ISATVSTD( agcSettings->standard )) - pAgcSettings = &(extAttr->atvRfAgcCfg); - else - return (DRX_STS_INVALID_ARG); - - /* Restore TOP */ - if ( pAgcSettings->ctrlMode == DRX_AGC_CTRL_AUTO) - { - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, - pAgcSettings->top, 0 )); - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT__A, - pAgcSettings->top, 0 )); - } - else - { - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, 0, 0 )); - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT__A, 0, 0 )); - } - break; - - case DRX_AGC_CTRL_USER: - - /* Enable IF AGC DAC */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - data |= IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE; - WR16( devAddr, IQM_AF_STDBY__A , data ); - - /* Disable SCU IF AGC loop */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI__A, &data, 0 )); - data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; - data |= SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; - if (commonAttr->tunerIfAgcPol) - { - data |= SCU_RAM_AGC_KI_INV_IF_POL__M; - } - else - { - data &= ~SCU_RAM_AGC_KI_INV_IF_POL__M; - } - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI__A, data, 0 )); - - /* Write value to output pin */ - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, - agcSettings->outputLevel, 0 )); - break; - - case DRX_AGC_CTRL_OFF: - - /* Disable If AGC DAC */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - data &= (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE); - WR16( devAddr, IQM_AF_STDBY__A , data ); - - /* Disable SCU IF AGC loop */ - CHK_ERROR((*ScuRr16)( devAddr, SCU_RAM_AGC_KI__A, &data, 0 )); - data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; - data |= SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; - CHK_ERROR((*ScuWr16)( devAddr, SCU_RAM_AGC_KI__A, data, 0 )); - break; - default: - return (DRX_STS_INVALID_ARG); - } /* switch ( agcsettings->ctrlMode ) */ - - /* always set the top to support configurations without if-loop */ - CHK_ERROR((*ScuWr16)( devAddr, - SCU_RAM_AGC_INGAIN_TGT_MIN__A, - agcSettings->top, - 0 ) ); - } - - /* Store if agc settings */ - switch ( agcSettings->standard){ - case DRX_STANDARD_8VSB: - extAttr->vsbIfAgcCfg = *agcSettings; - break; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + pDRXJCfgAgc_t pAgcSettings = NULL; + pDRXCommonAttr_t commonAttr = NULL; + DRXWriteReg16Func_t ScuWr16 = NULL; + DRXReadReg16Func_t ScuRr16 = NULL; + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + if (atomic) { + ScuRr16 = DRXJ_DAP_SCU_AtomicReadReg16; + ScuWr16 = DRXJ_DAP_SCU_AtomicWriteReg16; + } else { + ScuRr16 = DRXJ_DAP.readReg16Func; + ScuWr16 = DRXJ_DAP.writeReg16Func; + } + + /* Configure AGC only if standard is currently active */ + if ((extAttr->standard == agcSettings->standard) || + (DRXJ_ISQAMSTD(extAttr->standard) && + DRXJ_ISQAMSTD(agcSettings->standard)) || + (DRXJ_ISATVSTD(extAttr->standard) && + DRXJ_ISATVSTD(agcSettings->standard))) { + u16_t data = 0; + + switch (agcSettings->ctrlMode) { + case DRX_AGC_CTRL_AUTO: + /* Enable IF AGC DAC */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + data |= IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE; + WR16(devAddr, IQM_AF_STDBY__A, data); + + /* Enable SCU IF AGC loop */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; + data &= ~SCU_RAM_AGC_KI_IF__M; + if (extAttr->standard == DRX_STANDARD_8VSB) { + data |= (3 << SCU_RAM_AGC_KI_IF__B); + } else if (DRXJ_ISQAMSTD(extAttr->standard)) { + data |= (6 << SCU_RAM_AGC_KI_IF__B); + } else { + data |= (5 << SCU_RAM_AGC_KI_IF__B); + } + + if (commonAttr->tunerIfAgcPol) { + data |= SCU_RAM_AGC_KI_INV_IF_POL__M; + } else { + data &= ~SCU_RAM_AGC_KI_INV_IF_POL__M; + } + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_KI__A, data, 0)); + + /* Set speed (using complementary reduction value) */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI_RED__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_RED_IAGC_RED__M; + CHK_ERROR((*ScuWr16) (devAddr, SCU_RAM_AGC_KI_RED__A, + (~ + (agcSettings-> + speed << + SCU_RAM_AGC_KI_RED_IAGC_RED__B) +& SCU_RAM_AGC_KI_RED_IAGC_RED__M) + | data, 0)); + + if (agcSettings->standard == DRX_STANDARD_8VSB) + pAgcSettings = &(extAttr->vsbRfAgcCfg); + else if (DRXJ_ISQAMSTD(agcSettings->standard)) + pAgcSettings = &(extAttr->qamRfAgcCfg); + else if (DRXJ_ISATVSTD(agcSettings->standard)) + pAgcSettings = &(extAttr->atvRfAgcCfg); + else + return (DRX_STS_INVALID_ARG); + + /* Restore TOP */ + if (pAgcSettings->ctrlMode == DRX_AGC_CTRL_AUTO) { + CHK_ERROR((*ScuWr16) + (devAddr, + SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, + pAgcSettings->top, 0)); + CHK_ERROR((*ScuWr16) + (devAddr, + SCU_RAM_AGC_IF_IACCU_HI_TGT__A, + pAgcSettings->top, 0)); + } else { + CHK_ERROR((*ScuWr16) + (devAddr, + SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, + 0, 0)); + CHK_ERROR((*ScuWr16) + (devAddr, + SCU_RAM_AGC_IF_IACCU_HI_TGT__A, 0, + 0)); + } + break; + + case DRX_AGC_CTRL_USER: + + /* Enable IF AGC DAC */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + data |= IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE; + WR16(devAddr, IQM_AF_STDBY__A, data); + + /* Disable SCU IF AGC loop */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; + data |= SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; + if (commonAttr->tunerIfAgcPol) { + data |= SCU_RAM_AGC_KI_INV_IF_POL__M; + } else { + data &= ~SCU_RAM_AGC_KI_INV_IF_POL__M; + } + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_KI__A, data, 0)); + + /* Write value to output pin */ + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, + agcSettings->outputLevel, 0)); + break; + + case DRX_AGC_CTRL_OFF: + + /* Disable If AGC DAC */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + data &= (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE); + WR16(devAddr, IQM_AF_STDBY__A, data); + + /* Disable SCU IF AGC loop */ + CHK_ERROR((*ScuRr16) + (devAddr, SCU_RAM_AGC_KI__A, &data, 0)); + data &= ~SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; + data |= SCU_RAM_AGC_KI_IF_AGC_DISABLE__M; + CHK_ERROR((*ScuWr16) + (devAddr, SCU_RAM_AGC_KI__A, data, 0)); + break; + default: + return (DRX_STS_INVALID_ARG); + } /* switch ( agcsettings->ctrlMode ) */ + + /* always set the top to support configurations without if-loop */ + CHK_ERROR((*ScuWr16) (devAddr, + SCU_RAM_AGC_INGAIN_TGT_MIN__A, + agcSettings->top, 0)); + } + + /* Store if agc settings */ + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: + extAttr->vsbIfAgcCfg = *agcSettings; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - extAttr->qamIfAgcCfg = *agcSettings; - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + extAttr->qamIfAgcCfg = *agcSettings; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - case DRX_STANDARD_NTSC: - case DRX_STANDARD_FM: - extAttr->atvIfAgcCfg = *agcSettings; - break; + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_NTSC: + case DRX_STANDARD_FM: + extAttr->atvIfAgcCfg = *agcSettings; + break; #endif - default: - return (DRX_STS_ERROR); - } + default: + return (DRX_STS_ERROR); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5807,59 +5512,58 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -GetAgcIf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) +GetAgcIf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* Return stored ATV AGC settings */ - standard = agcSettings->standard; - switch ( agcSettings->standard){ - case DRX_STANDARD_8VSB: - *agcSettings = extAttr->vsbIfAgcCfg; - break; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* Return stored ATV AGC settings */ + standard = agcSettings->standard; + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: + *agcSettings = extAttr->vsbIfAgcCfg; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - *agcSettings = extAttr->qamIfAgcCfg; - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + *agcSettings = extAttr->qamIfAgcCfg; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - case DRX_STANDARD_NTSC: - case DRX_STANDARD_FM: - *agcSettings = extAttr->atvIfAgcCfg; - break; + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_NTSC: + case DRX_STANDARD_FM: + *agcSettings = extAttr->atvIfAgcCfg; + break; #endif - default: - return (DRX_STS_ERROR); - } - agcSettings->standard = standard; - - /* Get AGC output only if standard is currently active */ - if ( ( extAttr->standard == agcSettings->standard ) || - ( DRXJ_ISQAMSTD( extAttr->standard ) && - DRXJ_ISQAMSTD( agcSettings->standard ) ) || - ( DRXJ_ISATVSTD( extAttr->standard ) && - DRXJ_ISATVSTD( agcSettings->standard ) ) ) - { - /* read output level */ - SARR16( devAddr, SCU_RAM_AGC_IF_IACCU_HI__A, - &(agcSettings->outputLevel) ); - } + default: + return (DRX_STS_ERROR); + } + agcSettings->standard = standard; + + /* Get AGC output only if standard is currently active */ + if ((extAttr->standard == agcSettings->standard) || + (DRXJ_ISQAMSTD(extAttr->standard) && + DRXJ_ISQAMSTD(agcSettings->standard)) || + (DRXJ_ISATVSTD(extAttr->standard) && + DRXJ_ISATVSTD(agcSettings->standard))) { + /* read output level */ + SARR16(devAddr, SCU_RAM_AGC_IF_IACCU_HI__A, + &(agcSettings->outputLevel)); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -5869,39 +5573,35 @@ rw_error: * \param active * \return DRXStatus_t. */ -static DRXStatus_t -SetIqmAf ( pDRXDemodInstance_t demod, Bool_t active ) +static DRXStatus_t SetIqmAf(pDRXDemodInstance_t demod, Bool_t active) { - u16_t data = 0; - pI2CDeviceAddr_t devAddr = NULL; + u16_t data = 0; + pI2CDeviceAddr_t devAddr = NULL; - devAddr = demod -> myI2CDevAddr; + devAddr = demod->myI2CDevAddr; - /* Configure IQM */ - RR16( devAddr, IQM_AF_STDBY__A , &data ); - if( !active ) - { - data &= ((~IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_PD_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE) - & (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE) - ); - } - else /* active */ - { - data |= (IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE - | IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE - | IQM_AF_STDBY_STDBY_PD_A2_ACTIVE - | IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE - | IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE - ); - } - WR16( devAddr, IQM_AF_STDBY__A , data ); - - return (DRX_STS_OK); + /* Configure IQM */ + RR16(devAddr, IQM_AF_STDBY__A, &data); + if (!active) { + data &= ((~IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_PD_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE) + & (~IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE) + ); + } else { /* active */ + + data |= (IQM_AF_STDBY_STDBY_ADC_A2_ACTIVE + | IQM_AF_STDBY_STDBY_AMP_A2_ACTIVE + | IQM_AF_STDBY_STDBY_PD_A2_ACTIVE + | IQM_AF_STDBY_STDBY_TAGC_IF_A2_ACTIVE + | IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE); + } + WR16(devAddr, IQM_AF_STDBY__A, data); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -5914,7 +5614,6 @@ rw_error: /*============================================================================*/ /*============================================================================*/ - /** * \fn DRXStatus_t PowerDownVSB () * \brief Powr down QAM related blocks. @@ -5922,265 +5621,262 @@ rw_error: * \param channel pointer to channel data. * \return DRXStatus_t. */ -static DRXStatus_t -PowerDownVSB( pDRXDemodInstance_t demod, Bool_t primary ) -{ - pI2CDeviceAddr_t devAddr = NULL; - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* *parameter */ NULL, - /* *result */ NULL }; - u16_t cmdResult = 0; - pDRXJData_t extAttr = NULL; - DRXCfgMPEGOutput_t cfgMPEGOutput; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod->myExtAttr; - /* - STOP demodulator - reset of FEC and VSB HW - */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB | - SCU_RAM_COMMAND_CMD_DEMOD_STOP; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - /* stop all comm_exec */ - WR16( devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP ); - WR16( devAddr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP ); - if (primary == TRUE) - { - WR16( devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP ); - CHK_ERROR( SetIqmAf( demod, FALSE ) ); - } - else - { - WR16( devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP ); - WR16( devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP ); - } +static DRXStatus_t PowerDownVSB(pDRXDemodInstance_t demod, Bool_t primary) +{ + pI2CDeviceAddr_t devAddr = NULL; + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* *parameter */ NULL, + /* *result */ NULL + }; + u16_t cmdResult = 0; + pDRXJData_t extAttr = NULL; + DRXCfgMPEGOutput_t cfgMPEGOutput; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + /* + STOP demodulator + reset of FEC and VSB HW + */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB | + SCU_RAM_COMMAND_CMD_DEMOD_STOP; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + /* stop all comm_exec */ + WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP); + WR16(devAddr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP); + if (primary == TRUE) { + WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP); + CHK_ERROR(SetIqmAf(demod, FALSE)); + } else { + WR16(devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP); + WR16(devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP); + WR16(devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP); + WR16(devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP); + WR16(devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP); + } - cfgMPEGOutput.enableMPEGOutput = FALSE; - CHK_ERROR( CtrlSetCfgMPEGOutput( demod, &cfgMPEGOutput) ); + cfgMPEGOutput.enableMPEGOutput = FALSE; + CHK_ERROR(CtrlSetCfgMPEGOutput(demod, &cfgMPEGOutput)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /** * \fn DRXStatus_t SetVSBLeakNGain () * \brief Set ATSC demod. * \param demod instance of demodulator. * \return DRXStatus_t. */ -static DRXStatus_t -SetVSBLeakNGain ( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = NULL; - - const u8_t vsb_ffe_leak_gain_ram0[]= { - DRXJ_16TO8( 0x8 ), /* FFETRAINLKRATIO1 */ - DRXJ_16TO8( 0x8 ), /* FFETRAINLKRATIO2 */ - DRXJ_16TO8( 0x8 ), /* FFETRAINLKRATIO3 */ - DRXJ_16TO8( 0xf ), /* FFETRAINLKRATIO4 */ - DRXJ_16TO8( 0xf ), /* FFETRAINLKRATIO5 */ - DRXJ_16TO8( 0xf ), /* FFETRAINLKRATIO6 */ - DRXJ_16TO8( 0xf ), /* FFETRAINLKRATIO7 */ - DRXJ_16TO8( 0xf ), /* FFETRAINLKRATIO8 */ - DRXJ_16TO8( 0xf ), /* FFETRAINLKRATIO9 */ - DRXJ_16TO8( 0x8 ), /* FFETRAINLKRATIO10 */ - DRXJ_16TO8( 0x8 ), /* FFETRAINLKRATIO11 */ - DRXJ_16TO8( 0x8 ), /* FFETRAINLKRATIO12 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1TRAINLKRATIO1 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1TRAINLKRATIO2 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1TRAINLKRATIO3 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1TRAINLKRATIO4 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1TRAINLKRATIO5 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1TRAINLKRATIO6 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1TRAINLKRATIO7 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1TRAINLKRATIO8 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1TRAINLKRATIO9 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1TRAINLKRATIO10 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1TRAINLKRATIO11 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1TRAINLKRATIO12 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1DATALKRATIO1 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1DATALKRATIO2 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1DATALKRATIO3 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1DATALKRATIO4 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1DATALKRATIO5 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1DATALKRATIO6 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1DATALKRATIO7 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1DATALKRATIO8 */ - DRXJ_16TO8( 0x20 ), /* FFERCA1DATALKRATIO9 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1DATALKRATIO10 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1DATALKRATIO11 */ - DRXJ_16TO8( 0x10 ), /* FFERCA1DATALKRATIO12 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2TRAINLKRATIO1 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2TRAINLKRATIO2 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2TRAINLKRATIO3 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2TRAINLKRATIO4 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2TRAINLKRATIO5 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2TRAINLKRATIO6 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2TRAINLKRATIO7 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2TRAINLKRATIO8 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2TRAINLKRATIO9 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2TRAINLKRATIO10 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2TRAINLKRATIO11 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2TRAINLKRATIO12 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2DATALKRATIO1 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2DATALKRATIO2 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2DATALKRATIO3 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2DATALKRATIO4 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2DATALKRATIO5 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2DATALKRATIO6 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2DATALKRATIO7 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2DATALKRATIO8 */ - DRXJ_16TO8( 0x20 ), /* FFERCA2DATALKRATIO9 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2DATALKRATIO10 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2DATALKRATIO11 */ - DRXJ_16TO8( 0x10 ), /* FFERCA2DATALKRATIO12 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1TRAINLKRATIO1 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1TRAINLKRATIO2 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1TRAINLKRATIO3 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1TRAINLKRATIO4 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1TRAINLKRATIO5 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1TRAINLKRATIO6 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1TRAINLKRATIO7 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1TRAINLKRATIO8 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1TRAINLKRATIO9 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1TRAINLKRATIO10 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1TRAINLKRATIO11 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1TRAINLKRATIO12 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1DATALKRATIO1 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1DATALKRATIO2 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1DATALKRATIO3 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1DATALKRATIO4 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1DATALKRATIO5 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1DATALKRATIO6 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1DATALKRATIO7 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1DATALKRATIO8 */ - DRXJ_16TO8( 0x0e ), /* FFEDDM1DATALKRATIO9 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1DATALKRATIO10 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1DATALKRATIO11 */ - DRXJ_16TO8( 0x07 ), /* FFEDDM1DATALKRATIO12 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2TRAINLKRATIO1 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2TRAINLKRATIO2 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2TRAINLKRATIO3 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2TRAINLKRATIO4 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2TRAINLKRATIO5 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2TRAINLKRATIO6 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2TRAINLKRATIO7 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2TRAINLKRATIO8 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2TRAINLKRATIO9 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2TRAINLKRATIO10 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2TRAINLKRATIO11 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2TRAINLKRATIO12 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2DATALKRATIO1 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2DATALKRATIO2 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2DATALKRATIO3 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2DATALKRATIO4 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2DATALKRATIO5 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2DATALKRATIO6 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2DATALKRATIO7 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2DATALKRATIO8 */ - DRXJ_16TO8( 0x0c ), /* FFEDDM2DATALKRATIO9 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2DATALKRATIO10 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2DATALKRATIO11 */ - DRXJ_16TO8( 0x06 ), /* FFEDDM2DATALKRATIO12 */ - DRXJ_16TO8( 0x2020 ), /* FIRTRAINGAIN1 */ - DRXJ_16TO8( 0x2020 ), /* FIRTRAINGAIN2 */ - DRXJ_16TO8( 0x2020 ), /* FIRTRAINGAIN3 */ - DRXJ_16TO8( 0x4040 ), /* FIRTRAINGAIN4 */ - DRXJ_16TO8( 0x4040 ), /* FIRTRAINGAIN5 */ - DRXJ_16TO8( 0x4040 ), /* FIRTRAINGAIN6 */ - DRXJ_16TO8( 0x4040 ), /* FIRTRAINGAIN7 */ - DRXJ_16TO8( 0x4040 ), /* FIRTRAINGAIN8 */ - DRXJ_16TO8( 0x4040 ), /* FIRTRAINGAIN9 */ - DRXJ_16TO8( 0x2020 ), /* FIRTRAINGAIN10 */ - DRXJ_16TO8( 0x2020 ), /* FIRTRAINGAIN11 */ - DRXJ_16TO8( 0x2020 ), /* FIRTRAINGAIN12 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA1GAIN1 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA1GAIN2 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA1GAIN3 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA1GAIN4 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA1GAIN5 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA1GAIN6 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA1GAIN7 */ - DRXJ_16TO8( 0x1010 ) /* FIRRCA1GAIN8 */ - }; - - const u8_t vsb_ffe_leak_gain_ram1[]= { - DRXJ_16TO8( 0x1010 ), /* FIRRCA1GAIN9 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA1GAIN10 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA1GAIN11 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA1GAIN12 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA2GAIN1 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA2GAIN2 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA2GAIN3 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA2GAIN4 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA2GAIN5 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA2GAIN6 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA2GAIN7 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA2GAIN8 */ - DRXJ_16TO8( 0x1010 ), /* FIRRCA2GAIN9 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA2GAIN10 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA2GAIN11 */ - DRXJ_16TO8( 0x0808 ), /* FIRRCA2GAIN12 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM1GAIN1 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM1GAIN2 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM1GAIN3 */ - DRXJ_16TO8( 0x0606 ), /* FIRDDM1GAIN4 */ - DRXJ_16TO8( 0x0606 ), /* FIRDDM1GAIN5 */ - DRXJ_16TO8( 0x0606 ), /* FIRDDM1GAIN6 */ - DRXJ_16TO8( 0x0606 ), /* FIRDDM1GAIN7 */ - DRXJ_16TO8( 0x0606 ), /* FIRDDM1GAIN8 */ - DRXJ_16TO8( 0x0606 ), /* FIRDDM1GAIN9 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM1GAIN10 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM1GAIN11 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM1GAIN12 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM2GAIN1 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM2GAIN2 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM2GAIN3 */ - DRXJ_16TO8( 0x0505 ), /* FIRDDM2GAIN4 */ - DRXJ_16TO8( 0x0505 ), /* FIRDDM2GAIN5 */ - DRXJ_16TO8( 0x0505 ), /* FIRDDM2GAIN6 */ - DRXJ_16TO8( 0x0505 ), /* FIRDDM2GAIN7 */ - DRXJ_16TO8( 0x0505 ), /* FIRDDM2GAIN8 */ - DRXJ_16TO8( 0x0505 ), /* FIRDDM2GAIN9 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM2GAIN10 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM2GAIN11 */ - DRXJ_16TO8( 0x0303 ), /* FIRDDM2GAIN12 */ - DRXJ_16TO8( 0x001f ), /* DFETRAINLKRATIO */ - DRXJ_16TO8( 0x01ff ), /* DFERCA1TRAINLKRATIO */ - DRXJ_16TO8( 0x01ff ), /* DFERCA1DATALKRATIO */ - DRXJ_16TO8( 0x004f ), /* DFERCA2TRAINLKRATIO */ - DRXJ_16TO8( 0x004f ), /* DFERCA2DATALKRATIO */ - DRXJ_16TO8( 0x01ff ), /* DFEDDM1TRAINLKRATIO */ - DRXJ_16TO8( 0x01ff ), /* DFEDDM1DATALKRATIO */ - DRXJ_16TO8( 0x0352 ), /* DFEDDM2TRAINLKRATIO */ - DRXJ_16TO8( 0x0352 ), /* DFEDDM2DATALKRATIO */ - DRXJ_16TO8( 0x0000 ), /* DFETRAINGAIN */ - DRXJ_16TO8( 0x2020 ), /* DFERCA1GAIN */ - DRXJ_16TO8( 0x1010 ), /* DFERCA2GAIN */ - DRXJ_16TO8( 0x1818 ), /* DFEDDM1GAIN */ - DRXJ_16TO8( 0x1212 ) /* DFEDDM2GAIN */ - }; - - devAddr = demod -> myI2CDevAddr; - WRB ( devAddr, VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__A, - sizeof(vsb_ffe_leak_gain_ram0), ((pu8_t)vsb_ffe_leak_gain_ram0) ); - WRB ( devAddr, VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__A, - sizeof(vsb_ffe_leak_gain_ram1), ((pu8_t)vsb_ffe_leak_gain_ram1) ); - - return (DRX_STS_OK); +static DRXStatus_t SetVSBLeakNGain(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = NULL; + + const u8_t vsb_ffe_leak_gain_ram0[] = { + DRXJ_16TO8(0x8), /* FFETRAINLKRATIO1 */ + DRXJ_16TO8(0x8), /* FFETRAINLKRATIO2 */ + DRXJ_16TO8(0x8), /* FFETRAINLKRATIO3 */ + DRXJ_16TO8(0xf), /* FFETRAINLKRATIO4 */ + DRXJ_16TO8(0xf), /* FFETRAINLKRATIO5 */ + DRXJ_16TO8(0xf), /* FFETRAINLKRATIO6 */ + DRXJ_16TO8(0xf), /* FFETRAINLKRATIO7 */ + DRXJ_16TO8(0xf), /* FFETRAINLKRATIO8 */ + DRXJ_16TO8(0xf), /* FFETRAINLKRATIO9 */ + DRXJ_16TO8(0x8), /* FFETRAINLKRATIO10 */ + DRXJ_16TO8(0x8), /* FFETRAINLKRATIO11 */ + DRXJ_16TO8(0x8), /* FFETRAINLKRATIO12 */ + DRXJ_16TO8(0x10), /* FFERCA1TRAINLKRATIO1 */ + DRXJ_16TO8(0x10), /* FFERCA1TRAINLKRATIO2 */ + DRXJ_16TO8(0x10), /* FFERCA1TRAINLKRATIO3 */ + DRXJ_16TO8(0x20), /* FFERCA1TRAINLKRATIO4 */ + DRXJ_16TO8(0x20), /* FFERCA1TRAINLKRATIO5 */ + DRXJ_16TO8(0x20), /* FFERCA1TRAINLKRATIO6 */ + DRXJ_16TO8(0x20), /* FFERCA1TRAINLKRATIO7 */ + DRXJ_16TO8(0x20), /* FFERCA1TRAINLKRATIO8 */ + DRXJ_16TO8(0x20), /* FFERCA1TRAINLKRATIO9 */ + DRXJ_16TO8(0x10), /* FFERCA1TRAINLKRATIO10 */ + DRXJ_16TO8(0x10), /* FFERCA1TRAINLKRATIO11 */ + DRXJ_16TO8(0x10), /* FFERCA1TRAINLKRATIO12 */ + DRXJ_16TO8(0x10), /* FFERCA1DATALKRATIO1 */ + DRXJ_16TO8(0x10), /* FFERCA1DATALKRATIO2 */ + DRXJ_16TO8(0x10), /* FFERCA1DATALKRATIO3 */ + DRXJ_16TO8(0x20), /* FFERCA1DATALKRATIO4 */ + DRXJ_16TO8(0x20), /* FFERCA1DATALKRATIO5 */ + DRXJ_16TO8(0x20), /* FFERCA1DATALKRATIO6 */ + DRXJ_16TO8(0x20), /* FFERCA1DATALKRATIO7 */ + DRXJ_16TO8(0x20), /* FFERCA1DATALKRATIO8 */ + DRXJ_16TO8(0x20), /* FFERCA1DATALKRATIO9 */ + DRXJ_16TO8(0x10), /* FFERCA1DATALKRATIO10 */ + DRXJ_16TO8(0x10), /* FFERCA1DATALKRATIO11 */ + DRXJ_16TO8(0x10), /* FFERCA1DATALKRATIO12 */ + DRXJ_16TO8(0x10), /* FFERCA2TRAINLKRATIO1 */ + DRXJ_16TO8(0x10), /* FFERCA2TRAINLKRATIO2 */ + DRXJ_16TO8(0x10), /* FFERCA2TRAINLKRATIO3 */ + DRXJ_16TO8(0x20), /* FFERCA2TRAINLKRATIO4 */ + DRXJ_16TO8(0x20), /* FFERCA2TRAINLKRATIO5 */ + DRXJ_16TO8(0x20), /* FFERCA2TRAINLKRATIO6 */ + DRXJ_16TO8(0x20), /* FFERCA2TRAINLKRATIO7 */ + DRXJ_16TO8(0x20), /* FFERCA2TRAINLKRATIO8 */ + DRXJ_16TO8(0x20), /* FFERCA2TRAINLKRATIO9 */ + DRXJ_16TO8(0x10), /* FFERCA2TRAINLKRATIO10 */ + DRXJ_16TO8(0x10), /* FFERCA2TRAINLKRATIO11 */ + DRXJ_16TO8(0x10), /* FFERCA2TRAINLKRATIO12 */ + DRXJ_16TO8(0x10), /* FFERCA2DATALKRATIO1 */ + DRXJ_16TO8(0x10), /* FFERCA2DATALKRATIO2 */ + DRXJ_16TO8(0x10), /* FFERCA2DATALKRATIO3 */ + DRXJ_16TO8(0x20), /* FFERCA2DATALKRATIO4 */ + DRXJ_16TO8(0x20), /* FFERCA2DATALKRATIO5 */ + DRXJ_16TO8(0x20), /* FFERCA2DATALKRATIO6 */ + DRXJ_16TO8(0x20), /* FFERCA2DATALKRATIO7 */ + DRXJ_16TO8(0x20), /* FFERCA2DATALKRATIO8 */ + DRXJ_16TO8(0x20), /* FFERCA2DATALKRATIO9 */ + DRXJ_16TO8(0x10), /* FFERCA2DATALKRATIO10 */ + DRXJ_16TO8(0x10), /* FFERCA2DATALKRATIO11 */ + DRXJ_16TO8(0x10), /* FFERCA2DATALKRATIO12 */ + DRXJ_16TO8(0x07), /* FFEDDM1TRAINLKRATIO1 */ + DRXJ_16TO8(0x07), /* FFEDDM1TRAINLKRATIO2 */ + DRXJ_16TO8(0x07), /* FFEDDM1TRAINLKRATIO3 */ + DRXJ_16TO8(0x0e), /* FFEDDM1TRAINLKRATIO4 */ + DRXJ_16TO8(0x0e), /* FFEDDM1TRAINLKRATIO5 */ + DRXJ_16TO8(0x0e), /* FFEDDM1TRAINLKRATIO6 */ + DRXJ_16TO8(0x0e), /* FFEDDM1TRAINLKRATIO7 */ + DRXJ_16TO8(0x0e), /* FFEDDM1TRAINLKRATIO8 */ + DRXJ_16TO8(0x0e), /* FFEDDM1TRAINLKRATIO9 */ + DRXJ_16TO8(0x07), /* FFEDDM1TRAINLKRATIO10 */ + DRXJ_16TO8(0x07), /* FFEDDM1TRAINLKRATIO11 */ + DRXJ_16TO8(0x07), /* FFEDDM1TRAINLKRATIO12 */ + DRXJ_16TO8(0x07), /* FFEDDM1DATALKRATIO1 */ + DRXJ_16TO8(0x07), /* FFEDDM1DATALKRATIO2 */ + DRXJ_16TO8(0x07), /* FFEDDM1DATALKRATIO3 */ + DRXJ_16TO8(0x0e), /* FFEDDM1DATALKRATIO4 */ + DRXJ_16TO8(0x0e), /* FFEDDM1DATALKRATIO5 */ + DRXJ_16TO8(0x0e), /* FFEDDM1DATALKRATIO6 */ + DRXJ_16TO8(0x0e), /* FFEDDM1DATALKRATIO7 */ + DRXJ_16TO8(0x0e), /* FFEDDM1DATALKRATIO8 */ + DRXJ_16TO8(0x0e), /* FFEDDM1DATALKRATIO9 */ + DRXJ_16TO8(0x07), /* FFEDDM1DATALKRATIO10 */ + DRXJ_16TO8(0x07), /* FFEDDM1DATALKRATIO11 */ + DRXJ_16TO8(0x07), /* FFEDDM1DATALKRATIO12 */ + DRXJ_16TO8(0x06), /* FFEDDM2TRAINLKRATIO1 */ + DRXJ_16TO8(0x06), /* FFEDDM2TRAINLKRATIO2 */ + DRXJ_16TO8(0x06), /* FFEDDM2TRAINLKRATIO3 */ + DRXJ_16TO8(0x0c), /* FFEDDM2TRAINLKRATIO4 */ + DRXJ_16TO8(0x0c), /* FFEDDM2TRAINLKRATIO5 */ + DRXJ_16TO8(0x0c), /* FFEDDM2TRAINLKRATIO6 */ + DRXJ_16TO8(0x0c), /* FFEDDM2TRAINLKRATIO7 */ + DRXJ_16TO8(0x0c), /* FFEDDM2TRAINLKRATIO8 */ + DRXJ_16TO8(0x0c), /* FFEDDM2TRAINLKRATIO9 */ + DRXJ_16TO8(0x06), /* FFEDDM2TRAINLKRATIO10 */ + DRXJ_16TO8(0x06), /* FFEDDM2TRAINLKRATIO11 */ + DRXJ_16TO8(0x06), /* FFEDDM2TRAINLKRATIO12 */ + DRXJ_16TO8(0x06), /* FFEDDM2DATALKRATIO1 */ + DRXJ_16TO8(0x06), /* FFEDDM2DATALKRATIO2 */ + DRXJ_16TO8(0x06), /* FFEDDM2DATALKRATIO3 */ + DRXJ_16TO8(0x0c), /* FFEDDM2DATALKRATIO4 */ + DRXJ_16TO8(0x0c), /* FFEDDM2DATALKRATIO5 */ + DRXJ_16TO8(0x0c), /* FFEDDM2DATALKRATIO6 */ + DRXJ_16TO8(0x0c), /* FFEDDM2DATALKRATIO7 */ + DRXJ_16TO8(0x0c), /* FFEDDM2DATALKRATIO8 */ + DRXJ_16TO8(0x0c), /* FFEDDM2DATALKRATIO9 */ + DRXJ_16TO8(0x06), /* FFEDDM2DATALKRATIO10 */ + DRXJ_16TO8(0x06), /* FFEDDM2DATALKRATIO11 */ + DRXJ_16TO8(0x06), /* FFEDDM2DATALKRATIO12 */ + DRXJ_16TO8(0x2020), /* FIRTRAINGAIN1 */ + DRXJ_16TO8(0x2020), /* FIRTRAINGAIN2 */ + DRXJ_16TO8(0x2020), /* FIRTRAINGAIN3 */ + DRXJ_16TO8(0x4040), /* FIRTRAINGAIN4 */ + DRXJ_16TO8(0x4040), /* FIRTRAINGAIN5 */ + DRXJ_16TO8(0x4040), /* FIRTRAINGAIN6 */ + DRXJ_16TO8(0x4040), /* FIRTRAINGAIN7 */ + DRXJ_16TO8(0x4040), /* FIRTRAINGAIN8 */ + DRXJ_16TO8(0x4040), /* FIRTRAINGAIN9 */ + DRXJ_16TO8(0x2020), /* FIRTRAINGAIN10 */ + DRXJ_16TO8(0x2020), /* FIRTRAINGAIN11 */ + DRXJ_16TO8(0x2020), /* FIRTRAINGAIN12 */ + DRXJ_16TO8(0x0808), /* FIRRCA1GAIN1 */ + DRXJ_16TO8(0x0808), /* FIRRCA1GAIN2 */ + DRXJ_16TO8(0x0808), /* FIRRCA1GAIN3 */ + DRXJ_16TO8(0x1010), /* FIRRCA1GAIN4 */ + DRXJ_16TO8(0x1010), /* FIRRCA1GAIN5 */ + DRXJ_16TO8(0x1010), /* FIRRCA1GAIN6 */ + DRXJ_16TO8(0x1010), /* FIRRCA1GAIN7 */ + DRXJ_16TO8(0x1010) /* FIRRCA1GAIN8 */ + }; + + const u8_t vsb_ffe_leak_gain_ram1[] = { + DRXJ_16TO8(0x1010), /* FIRRCA1GAIN9 */ + DRXJ_16TO8(0x0808), /* FIRRCA1GAIN10 */ + DRXJ_16TO8(0x0808), /* FIRRCA1GAIN11 */ + DRXJ_16TO8(0x0808), /* FIRRCA1GAIN12 */ + DRXJ_16TO8(0x0808), /* FIRRCA2GAIN1 */ + DRXJ_16TO8(0x0808), /* FIRRCA2GAIN2 */ + DRXJ_16TO8(0x0808), /* FIRRCA2GAIN3 */ + DRXJ_16TO8(0x1010), /* FIRRCA2GAIN4 */ + DRXJ_16TO8(0x1010), /* FIRRCA2GAIN5 */ + DRXJ_16TO8(0x1010), /* FIRRCA2GAIN6 */ + DRXJ_16TO8(0x1010), /* FIRRCA2GAIN7 */ + DRXJ_16TO8(0x1010), /* FIRRCA2GAIN8 */ + DRXJ_16TO8(0x1010), /* FIRRCA2GAIN9 */ + DRXJ_16TO8(0x0808), /* FIRRCA2GAIN10 */ + DRXJ_16TO8(0x0808), /* FIRRCA2GAIN11 */ + DRXJ_16TO8(0x0808), /* FIRRCA2GAIN12 */ + DRXJ_16TO8(0x0303), /* FIRDDM1GAIN1 */ + DRXJ_16TO8(0x0303), /* FIRDDM1GAIN2 */ + DRXJ_16TO8(0x0303), /* FIRDDM1GAIN3 */ + DRXJ_16TO8(0x0606), /* FIRDDM1GAIN4 */ + DRXJ_16TO8(0x0606), /* FIRDDM1GAIN5 */ + DRXJ_16TO8(0x0606), /* FIRDDM1GAIN6 */ + DRXJ_16TO8(0x0606), /* FIRDDM1GAIN7 */ + DRXJ_16TO8(0x0606), /* FIRDDM1GAIN8 */ + DRXJ_16TO8(0x0606), /* FIRDDM1GAIN9 */ + DRXJ_16TO8(0x0303), /* FIRDDM1GAIN10 */ + DRXJ_16TO8(0x0303), /* FIRDDM1GAIN11 */ + DRXJ_16TO8(0x0303), /* FIRDDM1GAIN12 */ + DRXJ_16TO8(0x0303), /* FIRDDM2GAIN1 */ + DRXJ_16TO8(0x0303), /* FIRDDM2GAIN2 */ + DRXJ_16TO8(0x0303), /* FIRDDM2GAIN3 */ + DRXJ_16TO8(0x0505), /* FIRDDM2GAIN4 */ + DRXJ_16TO8(0x0505), /* FIRDDM2GAIN5 */ + DRXJ_16TO8(0x0505), /* FIRDDM2GAIN6 */ + DRXJ_16TO8(0x0505), /* FIRDDM2GAIN7 */ + DRXJ_16TO8(0x0505), /* FIRDDM2GAIN8 */ + DRXJ_16TO8(0x0505), /* FIRDDM2GAIN9 */ + DRXJ_16TO8(0x0303), /* FIRDDM2GAIN10 */ + DRXJ_16TO8(0x0303), /* FIRDDM2GAIN11 */ + DRXJ_16TO8(0x0303), /* FIRDDM2GAIN12 */ + DRXJ_16TO8(0x001f), /* DFETRAINLKRATIO */ + DRXJ_16TO8(0x01ff), /* DFERCA1TRAINLKRATIO */ + DRXJ_16TO8(0x01ff), /* DFERCA1DATALKRATIO */ + DRXJ_16TO8(0x004f), /* DFERCA2TRAINLKRATIO */ + DRXJ_16TO8(0x004f), /* DFERCA2DATALKRATIO */ + DRXJ_16TO8(0x01ff), /* DFEDDM1TRAINLKRATIO */ + DRXJ_16TO8(0x01ff), /* DFEDDM1DATALKRATIO */ + DRXJ_16TO8(0x0352), /* DFEDDM2TRAINLKRATIO */ + DRXJ_16TO8(0x0352), /* DFEDDM2DATALKRATIO */ + DRXJ_16TO8(0x0000), /* DFETRAINGAIN */ + DRXJ_16TO8(0x2020), /* DFERCA1GAIN */ + DRXJ_16TO8(0x1010), /* DFERCA2GAIN */ + DRXJ_16TO8(0x1818), /* DFEDDM1GAIN */ + DRXJ_16TO8(0x1212) /* DFEDDM2GAIN */ + }; + + devAddr = demod->myI2CDevAddr; + WRB(devAddr, VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__A, + sizeof(vsb_ffe_leak_gain_ram0), ((pu8_t) vsb_ffe_leak_gain_ram0)); + WRB(devAddr, VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__A, + sizeof(vsb_ffe_leak_gain_ram1), ((pu8_t) vsb_ffe_leak_gain_ram1)); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -6190,215 +5886,218 @@ rw_error: * \return DRXStatus_t. * */ -static DRXStatus_t -SetVSB ( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = NULL; - u16_t cmdResult = 0; - u16_t cmdParam = 0; - pDRXCommonAttr_t commonAttr = NULL; - DRXJSCUCmd_t cmdSCU; - pDRXJData_t extAttr = NULL; - const u8_t vsb_taps_re[]= { - DRXJ_16TO8( -2 ), /* re0 */ - DRXJ_16TO8( 4 ), /* re1 */ - DRXJ_16TO8( 1 ), /* re2 */ - DRXJ_16TO8( -4 ), /* re3 */ - DRXJ_16TO8( 1 ), /* re4 */ - DRXJ_16TO8( 4 ), /* re5 */ - DRXJ_16TO8( -3 ), /* re6 */ - DRXJ_16TO8( -3 ), /* re7 */ - DRXJ_16TO8( 6 ), /* re8 */ - DRXJ_16TO8( 1 ), /* re9 */ - DRXJ_16TO8( -9 ), /* re10 */ - DRXJ_16TO8( 3 ), /* re11 */ - DRXJ_16TO8( 12 ), /* re12 */ - DRXJ_16TO8( -9 ), /* re13 */ - DRXJ_16TO8( -15 ), /* re14 */ - DRXJ_16TO8( 17 ), /* re15 */ - DRXJ_16TO8( 19 ), /* re16 */ - DRXJ_16TO8( -29 ), /* re17 */ - DRXJ_16TO8( -22 ), /* re18 */ - DRXJ_16TO8( 45 ), /* re19 */ - DRXJ_16TO8( 25 ), /* re20 */ - DRXJ_16TO8( -70 ), /* re21 */ - DRXJ_16TO8( -28 ), /* re22 */ - DRXJ_16TO8( 111 ), /* re23 */ - DRXJ_16TO8( 30 ), /* re24 */ - DRXJ_16TO8( -201 ), /* re25 */ - DRXJ_16TO8( -31 ), /* re26 */ - DRXJ_16TO8( 629 ) /* re27 */ - }; - - devAddr = demod -> myI2CDevAddr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* stop all comm_exec */ - WR16( devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP ); - WR16( devAddr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP ); - WR16( devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP ); - - /* reset demodulator */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB - | SCU_RAM_COMMAND_CMD_DEMOD_RESET; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - WR16( devAddr, IQM_AF_DCF_BYPASS__A, 1 ); - WR16( devAddr, IQM_FS_ADJ_SEL__A, IQM_FS_ADJ_SEL_B_VSB ); - WR16( devAddr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_VSB ); - extAttr->iqmRcRateOfs = 0x00AD0D79; - WR32( devAddr, IQM_RC_RATE_OFS_LO__A, extAttr->iqmRcRateOfs ); - WR16( devAddr, VSB_TOP_CFAGC_GAINSHIFT__A, 4); - WR16( devAddr, VSB_TOP_CYGN1TRK__A, 1); - - WR16( devAddr, IQM_RC_CROUT_ENA__A, 1 ); - WR16( devAddr, IQM_RC_STRETCH__A, 28 ); - WR16( devAddr, IQM_RT_ACTIVE__A, 0 ); - WR16( devAddr, IQM_CF_SYMMETRIC__A, 0 ); - WR16( devAddr, IQM_CF_MIDTAP__A, 3 ); - WR16( devAddr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_VSB__M ); - WR16( devAddr, IQM_CF_SCALE__A, 1393 ); - WR16( devAddr, IQM_CF_SCALE_SH__A, 0 ); - WR16( devAddr, IQM_CF_POW_MEAS_LEN__A, 1); - - WRB ( devAddr, IQM_CF_TAP_RE0__A, sizeof(vsb_taps_re), ((pu8_t)vsb_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A, sizeof(vsb_taps_re), ((pu8_t)vsb_taps_re) ); - - WR16( devAddr, VSB_TOP_BNTHRESH__A, 330 ); /* set higher threshold */ - WR16( devAddr, VSB_TOP_CLPLASTNUM__A, 90 ); /* burst detection on */ - WR16( devAddr, VSB_TOP_SNRTH_RCA1__A, 0x0042 ); /* drop thresholds by 1 dB */ - WR16( devAddr, VSB_TOP_SNRTH_RCA2__A, 0x0053 ); /* drop thresholds by 2 dB */ - WR16( devAddr, VSB_TOP_EQCTRL__A, 0x1 ); /* cma on */ - WR16( devAddr, SCU_RAM_GPIO__A, 0 ); /* GPIO */ - - /* Initialize the FEC Subsystem */ - WR16( devAddr, FEC_TOP_ANNEX__A, FEC_TOP_ANNEX_D ); - { - u16_t fecOcSncMode = 0; - RR16( devAddr, FEC_OC_SNC_MODE__A, &fecOcSncMode ); - /* output data even when not locked */ - WR16( devAddr, FEC_OC_SNC_MODE__A, fecOcSncMode | FEC_OC_SNC_MODE_UNLOCK_ENABLE__M ); - } - - /* set clip */ - WR16( devAddr, IQM_AF_CLP_LEN__A, 0); - WR16( devAddr, IQM_AF_CLP_TH__A, 470); - WR16( devAddr, IQM_AF_SNS_LEN__A, 0); - WR16( devAddr, VSB_TOP_SNRTH_PT__A, 0xD4 ); - /* no transparent, no A&C framing; parity is set in mpegoutput*/ - { - u16_t fecOcRegMode = 0; - RR16 ( devAddr, FEC_OC_MODE__A , &fecOcRegMode ); - WR16( devAddr, FEC_OC_MODE__A, fecOcRegMode & - (~(FEC_OC_MODE_TRANSPARENT__M - | FEC_OC_MODE_CLEAR__M - | FEC_OC_MODE_RETAIN_FRAMING__M) - ) ); - } - - WR16( devAddr, FEC_DI_TIMEOUT_LO__A, 0 ); /* timeout counter for restarting */ - WR16( devAddr, FEC_DI_TIMEOUT_HI__A, 3 ); - WR16( devAddr, FEC_RS_MODE__A, 0 ); /* bypass disabled */ - /* initialize RS packet error measurement parameters */ - WR16( devAddr, FEC_RS_MEASUREMENT_PERIOD__A, FEC_RS_MEASUREMENT_PERIOD ); - WR16( devAddr, FEC_RS_MEASUREMENT_PRESCALE__A, FEC_RS_MEASUREMENT_PRESCALE ); - - /* init measurement period of MER/SER */ - WR16( devAddr, VSB_TOP_MEASUREMENT_PERIOD__A, VSB_TOP_MEASUREMENT_PERIOD ); - WR32( devAddr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0 ); - WR16( devAddr, SCU_RAM_FEC_MEAS_COUNT__A, 0 ); - WR16( devAddr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0 ); - - WR16( devAddr, VSB_TOP_CKGN1TRK__A, 128 ); - /* B-Input to ADC, PGA+filter in standby */ - if ( extAttr->hasLNA == FALSE ) - { - WR16( devAddr, IQM_AF_AMUX__A, 0x02); - }; +static DRXStatus_t SetVSB(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = NULL; + u16_t cmdResult = 0; + u16_t cmdParam = 0; + pDRXCommonAttr_t commonAttr = NULL; + DRXJSCUCmd_t cmdSCU; + pDRXJData_t extAttr = NULL; + const u8_t vsb_taps_re[] = { + DRXJ_16TO8(-2), /* re0 */ + DRXJ_16TO8(4), /* re1 */ + DRXJ_16TO8(1), /* re2 */ + DRXJ_16TO8(-4), /* re3 */ + DRXJ_16TO8(1), /* re4 */ + DRXJ_16TO8(4), /* re5 */ + DRXJ_16TO8(-3), /* re6 */ + DRXJ_16TO8(-3), /* re7 */ + DRXJ_16TO8(6), /* re8 */ + DRXJ_16TO8(1), /* re9 */ + DRXJ_16TO8(-9), /* re10 */ + DRXJ_16TO8(3), /* re11 */ + DRXJ_16TO8(12), /* re12 */ + DRXJ_16TO8(-9), /* re13 */ + DRXJ_16TO8(-15), /* re14 */ + DRXJ_16TO8(17), /* re15 */ + DRXJ_16TO8(19), /* re16 */ + DRXJ_16TO8(-29), /* re17 */ + DRXJ_16TO8(-22), /* re18 */ + DRXJ_16TO8(45), /* re19 */ + DRXJ_16TO8(25), /* re20 */ + DRXJ_16TO8(-70), /* re21 */ + DRXJ_16TO8(-28), /* re22 */ + DRXJ_16TO8(111), /* re23 */ + DRXJ_16TO8(30), /* re24 */ + DRXJ_16TO8(-201), /* re25 */ + DRXJ_16TO8(-31), /* re26 */ + DRXJ_16TO8(629) /* re27 */ + }; + + devAddr = demod->myI2CDevAddr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* stop all comm_exec */ + WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP); + WR16(devAddr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_STOP); + WR16(devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP); + WR16(devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP); + WR16(devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP); + WR16(devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP); + WR16(devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP); + + /* reset demodulator */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB + | SCU_RAM_COMMAND_CMD_DEMOD_RESET; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + WR16(devAddr, IQM_AF_DCF_BYPASS__A, 1); + WR16(devAddr, IQM_FS_ADJ_SEL__A, IQM_FS_ADJ_SEL_B_VSB); + WR16(devAddr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_VSB); + extAttr->iqmRcRateOfs = 0x00AD0D79; + WR32(devAddr, IQM_RC_RATE_OFS_LO__A, extAttr->iqmRcRateOfs); + WR16(devAddr, VSB_TOP_CFAGC_GAINSHIFT__A, 4); + WR16(devAddr, VSB_TOP_CYGN1TRK__A, 1); + + WR16(devAddr, IQM_RC_CROUT_ENA__A, 1); + WR16(devAddr, IQM_RC_STRETCH__A, 28); + WR16(devAddr, IQM_RT_ACTIVE__A, 0); + WR16(devAddr, IQM_CF_SYMMETRIC__A, 0); + WR16(devAddr, IQM_CF_MIDTAP__A, 3); + WR16(devAddr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_VSB__M); + WR16(devAddr, IQM_CF_SCALE__A, 1393); + WR16(devAddr, IQM_CF_SCALE_SH__A, 0); + WR16(devAddr, IQM_CF_POW_MEAS_LEN__A, 1); + + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(vsb_taps_re), + ((pu8_t) vsb_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(vsb_taps_re), + ((pu8_t) vsb_taps_re)); + + WR16(devAddr, VSB_TOP_BNTHRESH__A, 330); /* set higher threshold */ + WR16(devAddr, VSB_TOP_CLPLASTNUM__A, 90); /* burst detection on */ + WR16(devAddr, VSB_TOP_SNRTH_RCA1__A, 0x0042); /* drop thresholds by 1 dB */ + WR16(devAddr, VSB_TOP_SNRTH_RCA2__A, 0x0053); /* drop thresholds by 2 dB */ + WR16(devAddr, VSB_TOP_EQCTRL__A, 0x1); /* cma on */ + WR16(devAddr, SCU_RAM_GPIO__A, 0); /* GPIO */ + + /* Initialize the FEC Subsystem */ + WR16(devAddr, FEC_TOP_ANNEX__A, FEC_TOP_ANNEX_D); + { + u16_t fecOcSncMode = 0; + RR16(devAddr, FEC_OC_SNC_MODE__A, &fecOcSncMode); + /* output data even when not locked */ + WR16(devAddr, FEC_OC_SNC_MODE__A, + fecOcSncMode | FEC_OC_SNC_MODE_UNLOCK_ENABLE__M); + } - /* turn on IQMAF. It has to be in front of setAgc**() */ - CHK_ERROR( SetIqmAf( demod, TRUE ) ); - CHK_ERROR(ADCSynchronization (demod)); + /* set clip */ + WR16(devAddr, IQM_AF_CLP_LEN__A, 0); + WR16(devAddr, IQM_AF_CLP_TH__A, 470); + WR16(devAddr, IQM_AF_SNS_LEN__A, 0); + WR16(devAddr, VSB_TOP_SNRTH_PT__A, 0xD4); + /* no transparent, no A&C framing; parity is set in mpegoutput */ + { + u16_t fecOcRegMode = 0; + RR16(devAddr, FEC_OC_MODE__A, &fecOcRegMode); + WR16(devAddr, FEC_OC_MODE__A, fecOcRegMode & + (~(FEC_OC_MODE_TRANSPARENT__M + | FEC_OC_MODE_CLEAR__M | FEC_OC_MODE_RETAIN_FRAMING__M) + )); + } - CHK_ERROR( InitAGC( demod ) ); - CHK_ERROR( SetAgcIf( demod, &(extAttr->vsbIfAgcCfg), FALSE ) ); - CHK_ERROR( SetAgcRf( demod, &(extAttr->vsbRfAgcCfg), FALSE ) ); - { - /* TODO fix this, store a DRXJCfgAfeGain_t structure in DRXJData_t instead - of only the gain */ - DRXJCfgAfeGain_t vsbPgaCfg = { DRX_STANDARD_8VSB, 0 }; - - vsbPgaCfg.gain = extAttr->vsbPgaCfg; - CHK_ERROR( CtrlSetCfgAfeGain( demod, &vsbPgaCfg ) ); - } - CHK_ERROR( CtrlSetCfgPreSaw( demod, &(extAttr->vsbPreSawCfg)) ); - - /* Mpeg output has to be in front of FEC active */ - CHK_ERROR ( SetMPEGTEIHandling ( demod )); - CHK_ERROR ( BitReverseMPEGOutput( demod ) ); - CHK_ERROR ( SetMPEGStartWidth ( demod ) ); - { - /* TODO: move to setStandard after hardware reset value problem is solved */ - /* Configure initial MPEG output */ - DRXCfgMPEGOutput_t cfgMPEGOutput; - cfgMPEGOutput.enableMPEGOutput = TRUE; - cfgMPEGOutput.insertRSByte = commonAttr->mpegCfg.insertRSByte; - cfgMPEGOutput.enableParallel = commonAttr->mpegCfg.enableParallel; - cfgMPEGOutput.invertDATA = commonAttr->mpegCfg.invertDATA; - cfgMPEGOutput.invertERR = commonAttr->mpegCfg.invertERR; - cfgMPEGOutput.invertSTR = commonAttr->mpegCfg.invertSTR; - cfgMPEGOutput.invertVAL = commonAttr->mpegCfg.invertVAL; - cfgMPEGOutput.invertCLK = commonAttr->mpegCfg.invertCLK; - cfgMPEGOutput.staticCLK = commonAttr->mpegCfg.staticCLK; - cfgMPEGOutput.bitrate = commonAttr->mpegCfg.bitrate; - CHK_ERROR( CtrlSetCfgMPEGOutput( demod, &cfgMPEGOutput) ); - } - - /* TBD: what parameters should be set */ - cmdParam = 0x00; /* Default mode AGC on, etc */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB - | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM; - cmdSCU.parameterLen = 1; - cmdSCU.resultLen = 1; - cmdSCU.parameter = &cmdParam; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - WR16(devAddr, VSB_TOP_BEAGC_GAINSHIFT__A, 0x0004 ); - WR16(devAddr, VSB_TOP_SNRTH_PT__A, 0x00D2 ); - WR16(devAddr, VSB_TOP_SYSSMTRNCTRL__A, VSB_TOP_SYSSMTRNCTRL__PRE - |VSB_TOP_SYSSMTRNCTRL_NCOTIMEOUTCNTEN__M ); - WR16(devAddr, VSB_TOP_BEDETCTRL__A, 0x142 ); - WR16(devAddr, VSB_TOP_LBAGCREFLVL__A, 640 ); - WR16(devAddr, VSB_TOP_CYGN1ACQ__A, 4 ); - WR16(devAddr, VSB_TOP_CYGN1TRK__A, 2 ); - WR16(devAddr, VSB_TOP_CYGN2TRK__A, 3 ); - - /* start demodulator */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB - | SCU_RAM_COMMAND_CMD_DEMOD_START; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE ); - WR16(devAddr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_ACTIVE ); - WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE ); - - return (DRX_STS_OK); + WR16(devAddr, FEC_DI_TIMEOUT_LO__A, 0); /* timeout counter for restarting */ + WR16(devAddr, FEC_DI_TIMEOUT_HI__A, 3); + WR16(devAddr, FEC_RS_MODE__A, 0); /* bypass disabled */ + /* initialize RS packet error measurement parameters */ + WR16(devAddr, FEC_RS_MEASUREMENT_PERIOD__A, FEC_RS_MEASUREMENT_PERIOD); + WR16(devAddr, FEC_RS_MEASUREMENT_PRESCALE__A, + FEC_RS_MEASUREMENT_PRESCALE); + + /* init measurement period of MER/SER */ + WR16(devAddr, VSB_TOP_MEASUREMENT_PERIOD__A, + VSB_TOP_MEASUREMENT_PERIOD); + WR32(devAddr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0); + WR16(devAddr, SCU_RAM_FEC_MEAS_COUNT__A, 0); + WR16(devAddr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0); + + WR16(devAddr, VSB_TOP_CKGN1TRK__A, 128); + /* B-Input to ADC, PGA+filter in standby */ + if (extAttr->hasLNA == FALSE) { + WR16(devAddr, IQM_AF_AMUX__A, 0x02); + }; + + /* turn on IQMAF. It has to be in front of setAgc**() */ + CHK_ERROR(SetIqmAf(demod, TRUE)); + CHK_ERROR(ADCSynchronization(demod)); + + CHK_ERROR(InitAGC(demod)); + CHK_ERROR(SetAgcIf(demod, &(extAttr->vsbIfAgcCfg), FALSE)); + CHK_ERROR(SetAgcRf(demod, &(extAttr->vsbRfAgcCfg), FALSE)); + { + /* TODO fix this, store a DRXJCfgAfeGain_t structure in DRXJData_t instead + of only the gain */ + DRXJCfgAfeGain_t vsbPgaCfg = { DRX_STANDARD_8VSB, 0 }; + + vsbPgaCfg.gain = extAttr->vsbPgaCfg; + CHK_ERROR(CtrlSetCfgAfeGain(demod, &vsbPgaCfg)); + } + CHK_ERROR(CtrlSetCfgPreSaw(demod, &(extAttr->vsbPreSawCfg))); + + /* Mpeg output has to be in front of FEC active */ + CHK_ERROR(SetMPEGTEIHandling(demod)); + CHK_ERROR(BitReverseMPEGOutput(demod)); + CHK_ERROR(SetMPEGStartWidth(demod)); + { + /* TODO: move to setStandard after hardware reset value problem is solved */ + /* Configure initial MPEG output */ + DRXCfgMPEGOutput_t cfgMPEGOutput; + cfgMPEGOutput.enableMPEGOutput = TRUE; + cfgMPEGOutput.insertRSByte = commonAttr->mpegCfg.insertRSByte; + cfgMPEGOutput.enableParallel = + commonAttr->mpegCfg.enableParallel; + cfgMPEGOutput.invertDATA = commonAttr->mpegCfg.invertDATA; + cfgMPEGOutput.invertERR = commonAttr->mpegCfg.invertERR; + cfgMPEGOutput.invertSTR = commonAttr->mpegCfg.invertSTR; + cfgMPEGOutput.invertVAL = commonAttr->mpegCfg.invertVAL; + cfgMPEGOutput.invertCLK = commonAttr->mpegCfg.invertCLK; + cfgMPEGOutput.staticCLK = commonAttr->mpegCfg.staticCLK; + cfgMPEGOutput.bitrate = commonAttr->mpegCfg.bitrate; + CHK_ERROR(CtrlSetCfgMPEGOutput(demod, &cfgMPEGOutput)); + } + + /* TBD: what parameters should be set */ + cmdParam = 0x00; /* Default mode AGC on, etc */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB + | SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM; + cmdSCU.parameterLen = 1; + cmdSCU.resultLen = 1; + cmdSCU.parameter = &cmdParam; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + WR16(devAddr, VSB_TOP_BEAGC_GAINSHIFT__A, 0x0004); + WR16(devAddr, VSB_TOP_SNRTH_PT__A, 0x00D2); + WR16(devAddr, VSB_TOP_SYSSMTRNCTRL__A, VSB_TOP_SYSSMTRNCTRL__PRE + | VSB_TOP_SYSSMTRNCTRL_NCOTIMEOUTCNTEN__M); + WR16(devAddr, VSB_TOP_BEDETCTRL__A, 0x142); + WR16(devAddr, VSB_TOP_LBAGCREFLVL__A, 640); + WR16(devAddr, VSB_TOP_CYGN1ACQ__A, 4); + WR16(devAddr, VSB_TOP_CYGN1TRK__A, 2); + WR16(devAddr, VSB_TOP_CYGN2TRK__A, 3); + + /* start demodulator */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB + | SCU_RAM_COMMAND_CMD_DEMOD_START; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE); + WR16(devAddr, VSB_COMM_EXEC__A, VSB_COMM_EXEC_ACTIVE); + WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -6406,30 +6105,30 @@ rw_error: * \brief Get the values of packet error in 8VSB mode * \return Error code */ -static DRXStatus_t -GetVSBPostRSPckErr(pI2CDeviceAddr_t devAddr, pu16_t pckErrs) -{ - u16_t data = 0; - u16_t period = 0; - u16_t prescale = 0; - u16_t packetErrorsMant = 0; - u16_t packetErrorsExp = 0; - - RR16(devAddr, FEC_RS_NR_FAILURES__A, &data ); - packetErrorsMant = data & FEC_RS_NR_FAILURES_FIXED_MANT__M; - packetErrorsExp = (data & FEC_RS_NR_FAILURES_EXP__M) - >> FEC_RS_NR_FAILURES_EXP__B; - period = FEC_RS_MEASUREMENT_PERIOD; - prescale = FEC_RS_MEASUREMENT_PRESCALE; - /* packet error rate = (error packet number) per second */ - /* 77.3 us is time for per packet */ - CHK_ZERO (period * prescale); - *pckErrs = (u16_t)FracTimes1e6(packetErrorsMant * (1 << packetErrorsExp), - (period * prescale * 77)); - - return (DRX_STS_OK); +static DRXStatus_t GetVSBPostRSPckErr(pI2CDeviceAddr_t devAddr, pu16_t pckErrs) +{ + u16_t data = 0; + u16_t period = 0; + u16_t prescale = 0; + u16_t packetErrorsMant = 0; + u16_t packetErrorsExp = 0; + + RR16(devAddr, FEC_RS_NR_FAILURES__A, &data); + packetErrorsMant = data & FEC_RS_NR_FAILURES_FIXED_MANT__M; + packetErrorsExp = (data & FEC_RS_NR_FAILURES_EXP__M) + >> FEC_RS_NR_FAILURES_EXP__B; + period = FEC_RS_MEASUREMENT_PERIOD; + prescale = FEC_RS_MEASUREMENT_PRESCALE; + /* packet error rate = (error packet number) per second */ + /* 77.3 us is time for per packet */ + CHK_ZERO(period * prescale); + *pckErrs = + (u16_t) FracTimes1e6(packetErrorsMant * (1 << packetErrorsExp), + (period * prescale * 77)); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -6437,35 +6136,37 @@ rw_error: * \brief Get the values of ber in VSB mode * \return Error code */ -static DRXStatus_t -GetVSBpostViterbiBer(pI2CDeviceAddr_t devAddr, pu32_t ber) -{ - u16_t data = 0; - u16_t period = 0; - u16_t prescale = 0; - u16_t bitErrorsMant = 0; - u16_t bitErrorsExp = 0; - - RR16 ( devAddr, FEC_RS_NR_BIT_ERRORS__A, &data ); - period = FEC_RS_MEASUREMENT_PERIOD; - prescale = FEC_RS_MEASUREMENT_PRESCALE; - - bitErrorsMant = data & FEC_RS_NR_BIT_ERRORS_FIXED_MANT__M; - bitErrorsExp = (data & FEC_RS_NR_BIT_ERRORS_EXP__M) - >> FEC_RS_NR_BIT_ERRORS_EXP__B; - - if ( ((bitErrorsMant << bitErrorsExp) >> 3) > 68700) - *ber = 26570; - else - { - CHK_ZERO (period * prescale); - *ber = FracTimes1e6(bitErrorsMant << ((bitErrorsExp > 2)? (bitErrorsExp - 3):bitErrorsExp), - period * prescale * 207 * ((bitErrorsExp > 2)?1:8) ); - } +static DRXStatus_t GetVSBpostViterbiBer(pI2CDeviceAddr_t devAddr, pu32_t ber) +{ + u16_t data = 0; + u16_t period = 0; + u16_t prescale = 0; + u16_t bitErrorsMant = 0; + u16_t bitErrorsExp = 0; + + RR16(devAddr, FEC_RS_NR_BIT_ERRORS__A, &data); + period = FEC_RS_MEASUREMENT_PERIOD; + prescale = FEC_RS_MEASUREMENT_PRESCALE; + + bitErrorsMant = data & FEC_RS_NR_BIT_ERRORS_FIXED_MANT__M; + bitErrorsExp = (data & FEC_RS_NR_BIT_ERRORS_EXP__M) + >> FEC_RS_NR_BIT_ERRORS_EXP__B; + + if (((bitErrorsMant << bitErrorsExp) >> 3) > 68700) + *ber = 26570; + else { + CHK_ZERO(period * prescale); + *ber = + FracTimes1e6(bitErrorsMant << + ((bitErrorsExp > + 2) ? (bitErrorsExp - 3) : bitErrorsExp), + period * prescale * 207 * + ((bitErrorsExp > 2) ? 1 : 8)); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -6473,17 +6174,18 @@ rw_error: * \brief Get the values of ber in VSB mode * \return Error code */ -static DRXStatus_t -GetVSBpreViterbiBer(pI2CDeviceAddr_t devAddr, pu32_t ber) +static DRXStatus_t GetVSBpreViterbiBer(pI2CDeviceAddr_t devAddr, pu32_t ber) { - u16_t data = 0; + u16_t data = 0; - RR16 ( devAddr, VSB_TOP_NR_SYM_ERRS__A, &data ); - *ber = FracTimes1e6( data, VSB_TOP_MEASUREMENT_PERIOD * SYMBOLS_PER_SEGMENT ); + RR16(devAddr, VSB_TOP_NR_SYM_ERRS__A, &data); + *ber = + FracTimes1e6(data, + VSB_TOP_MEASUREMENT_PERIOD * SYMBOLS_PER_SEGMENT); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -6491,30 +6193,29 @@ rw_error: * \brief Get the values of ber in VSB mode * \return Error code */ -static DRXStatus_t -GetVSBSymbErr(pI2CDeviceAddr_t devAddr, pu32_t ser) +static DRXStatus_t GetVSBSymbErr(pI2CDeviceAddr_t devAddr, pu32_t ser) { - u16_t data = 0; - u16_t period = 0; - u16_t prescale = 0; - u16_t symbErrorsMant = 0; - u16_t symbErrorsExp = 0; + u16_t data = 0; + u16_t period = 0; + u16_t prescale = 0; + u16_t symbErrorsMant = 0; + u16_t symbErrorsExp = 0; - RR16 ( devAddr, FEC_RS_NR_SYMBOL_ERRORS__A, &data ); - period = FEC_RS_MEASUREMENT_PERIOD; - prescale = FEC_RS_MEASUREMENT_PRESCALE; + RR16(devAddr, FEC_RS_NR_SYMBOL_ERRORS__A, &data); + period = FEC_RS_MEASUREMENT_PERIOD; + prescale = FEC_RS_MEASUREMENT_PRESCALE; - symbErrorsMant = data & FEC_RS_NR_SYMBOL_ERRORS_FIXED_MANT__M; - symbErrorsExp = (data & FEC_RS_NR_SYMBOL_ERRORS_EXP__M) - >> FEC_RS_NR_SYMBOL_ERRORS_EXP__B; + symbErrorsMant = data & FEC_RS_NR_SYMBOL_ERRORS_FIXED_MANT__M; + symbErrorsExp = (data & FEC_RS_NR_SYMBOL_ERRORS_EXP__M) + >> FEC_RS_NR_SYMBOL_ERRORS_EXP__B; - CHK_ZERO (period * prescale); - *ser = (u32_t)FracTimes1e6((symbErrorsMant << symbErrorsExp) * 1000, - (period * prescale * 77318)); + CHK_ZERO(period * prescale); + *ser = (u32_t) FracTimes1e6((symbErrorsMant << symbErrorsExp) * 1000, + (period * prescale * 77318)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -6522,17 +6223,17 @@ rw_error: * \brief Get the values of MER * \return Error code */ -static DRXStatus_t -GetVSBMER (pI2CDeviceAddr_t devAddr, pu16_t mer) +static DRXStatus_t GetVSBMER(pI2CDeviceAddr_t devAddr, pu16_t mer) { - u16_t dataHi = 0; + u16_t dataHi = 0; - RR16( devAddr, VSB_TOP_ERR_ENERGY_H__A, &dataHi ); - *mer = (u16_t)(Log10Times100( 21504 ) - Log10Times100( (dataHi << 6) / 52 )); + RR16(devAddr, VSB_TOP_ERR_ENERGY_H__A, &dataHi); + *mer = + (u16_t) (Log10Times100(21504) - Log10Times100((dataHi << 6) / 52)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -6545,53 +6246,53 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -CtrlGetVSBConstel( pDRXDemodInstance_t demod, - pDRXComplex_t complexNr ) +CtrlGetVSBConstel(pDRXDemodInstance_t demod, pDRXComplex_t complexNr) { - pI2CDeviceAddr_t devAddr = NULL; /**< device address */ - u16_t vsbTopCommMb = 0; /**< VSB SL MB configuration */ - u16_t vsbTopCommMbInit = 0; /**< VSB SL MB intial configuration */ - u16_t re = 0; /**< constellation Re part */ - u32_t data = 0; - - /* read device info */ - devAddr = demod -> myI2CDevAddr; - - /* TODO: */ - /* Monitor bus grabbing is an open external interface issue */ - /* Needs to be checked when external interface PG is updated */ - - /* Configure MB (Monitor bus) */ - RR16( devAddr, VSB_TOP_COMM_MB__A, &vsbTopCommMbInit ); - /* set observe flag & MB mux */ - vsbTopCommMb = (vsbTopCommMbInit | - VSB_TOP_COMM_MB_OBS_OBS_ON | - VSB_TOP_COMM_MB_MUX_OBS_VSB_TCMEQ_2 ); - WR16( devAddr, VSB_TOP_COMM_MB__A, vsbTopCommMb ); - - /* Enable MB grabber in the FEC OC */ - WR16( devAddr, FEC_OC_OCR_MODE__A, FEC_OC_OCR_MODE_GRAB_ENABLE__M ); - - /* Disable MB grabber in the FEC OC */ - WR16( devAddr, FEC_OC_OCR_MODE__A, 0x0 ); - - /* read data */ - RR32( devAddr, FEC_OC_OCR_GRAB_RD1__A, &data ); - re = (u16_t)(((data >> 10) & 0x300 ) | ((data >> 2) & 0xff)); - if (re & 0x0200) - { - re |= 0xfc00; - } - complexNr->re = re; - complexNr->im = 0; + pI2CDeviceAddr_t devAddr = NULL; + /**< device address */ + u16_t vsbTopCommMb = 0; /**< VSB SL MB configuration */ + u16_t vsbTopCommMbInit = 0; /**< VSB SL MB intial configuration */ + u16_t re = 0; /**< constellation Re part */ + u32_t data = 0; + + /* read device info */ + devAddr = demod->myI2CDevAddr; + + /* TODO: */ + /* Monitor bus grabbing is an open external interface issue */ + /* Needs to be checked when external interface PG is updated */ + + /* Configure MB (Monitor bus) */ + RR16(devAddr, VSB_TOP_COMM_MB__A, &vsbTopCommMbInit); + /* set observe flag & MB mux */ + vsbTopCommMb = (vsbTopCommMbInit | + VSB_TOP_COMM_MB_OBS_OBS_ON | + VSB_TOP_COMM_MB_MUX_OBS_VSB_TCMEQ_2); + WR16(devAddr, VSB_TOP_COMM_MB__A, vsbTopCommMb); + + /* Enable MB grabber in the FEC OC */ + WR16(devAddr, FEC_OC_OCR_MODE__A, FEC_OC_OCR_MODE_GRAB_ENABLE__M); + + /* Disable MB grabber in the FEC OC */ + WR16(devAddr, FEC_OC_OCR_MODE__A, 0x0); - /* Restore MB (Monitor bus) */ - WR16( devAddr, VSB_TOP_COMM_MB__A, vsbTopCommMbInit ); + /* read data */ + RR32(devAddr, FEC_OC_OCR_GRAB_RD1__A, &data); + re = (u16_t) (((data >> 10) & 0x300) | ((data >> 2) & 0xff)); + if (re & 0x0200) { + re |= 0xfc00; + } + complexNr->re = re; + complexNr->im = 0; + + /* Restore MB (Monitor bus) */ + WR16(devAddr, VSB_TOP_COMM_MB__A, vsbTopCommMbInit); - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } + /*============================================================================*/ /*== END 8VSB DATAPATH FUNCTIONS ==*/ /*============================================================================*/ @@ -6609,58 +6310,55 @@ CtrlGetVSBConstel( pDRXDemodInstance_t demod, * \param channel pointer to channel data. * \return DRXStatus_t. */ -static DRXStatus_t -PowerDownQAM( pDRXDemodInstance_t demod, Bool_t primary ) +static DRXStatus_t PowerDownQAM(pDRXDemodInstance_t demod, Bool_t primary) { - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* *parameter */ NULL, - /* *result */ NULL }; - u16_t cmdResult = 0; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXCfgMPEGOutput_t cfgMPEGOutput; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* - STOP demodulator - resets IQM, QAM and FEC HW blocks - */ - /* stop all comm_exec */ - WR16( devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP); - WR16( devAddr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP); - - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_STOP; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - if (primary == TRUE) - { - WR16( devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP ); - CHK_ERROR( SetIqmAf( demod, FALSE ) ); - } - else - { - WR16( devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP ); - WR16( devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP ); - } + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* *parameter */ NULL, + /* *result */ NULL + }; + u16_t cmdResult = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXCfgMPEGOutput_t cfgMPEGOutput; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* + STOP demodulator + resets IQM, QAM and FEC HW blocks + */ + /* stop all comm_exec */ + WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP); + WR16(devAddr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP); + + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_STOP; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + if (primary == TRUE) { + WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP); + CHK_ERROR(SetIqmAf(demod, FALSE)); + } else { + WR16(devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP); + WR16(devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP); + WR16(devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP); + WR16(devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP); + WR16(devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP); + } - cfgMPEGOutput.enableMPEGOutput = FALSE; - CHK_ERROR( CtrlSetCfgMPEGOutput( demod, &cfgMPEGOutput) ); + cfgMPEGOutput.enableMPEGOutput = FALSE; + CHK_ERROR(CtrlSetCfgMPEGOutput(demod, &cfgMPEGOutput)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -6683,159 +6381,158 @@ rw_error: */ #ifndef DRXJ_VSB_ONLY static DRXStatus_t -SetQAMMeasurement ( pDRXDemodInstance_t demod, - DRXConstellation_t constellation, - u32_t symbolRate ) -{ - pI2CDeviceAddr_t devAddr = NULL; /* device address for I2C writes */ - pDRXJData_t extAttr = NULL; /* Global data container for DRXJ specif data */ - u32_t fecBitsDesired = 0; /* BER accounting period */ - u16_t fecRsPlen = 0; /* defines RS BER measurement period */ - u16_t fecRsPrescale = 0; /* ReedSolomon Measurement Prescale */ - u32_t fecRsPeriod = 0; /* Value for corresponding I2C register */ - u32_t fecRsBitCnt = 0; /* Actual precise amount of bits */ - u32_t fecOcSncFailPeriod = 0; /* Value for corresponding I2C register */ - u32_t qamVdPeriod = 0; /* Value for corresponding I2C register */ - u32_t qamVdBitCnt = 0; /* Actual precise amount of bits */ - u16_t fecVdPlen = 0; /* no of trellis symbols: VD SER measur period */ - u16_t qamVdPrescale = 0; /* Viterbi Measurement Prescale */ - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - fecBitsDesired = extAttr->fecBitsDesired; - fecRsPrescale = extAttr->fecRsPrescale; - - switch ( constellation ) { - case DRX_CONSTELLATION_QAM16: - fecBitsDesired = 4 * symbolRate; - break; - case DRX_CONSTELLATION_QAM32: - fecBitsDesired = 5 * symbolRate; - break; - case DRX_CONSTELLATION_QAM64: - fecBitsDesired = 6 * symbolRate; - break; - case DRX_CONSTELLATION_QAM128: - fecBitsDesired = 7 * symbolRate; - break; - case DRX_CONSTELLATION_QAM256: - fecBitsDesired = 8 * symbolRate; - break; - default: - return (DRX_STS_INVALID_ARG); - } - - /* Parameters for Reed-Solomon Decoder */ - /* fecrs_period = (int)ceil(FEC_BITS_DESIRED/(fecrs_prescale*plen)) */ - /* rs_bit_cnt = fecrs_period*fecrs_prescale*plen */ - /* result is within 32 bit arithmetic -> */ - /* no need for mult or frac functions */ - - /* TODO: use constant instead of calculation and remove the fecRsPlen in extAttr */ - switch ( extAttr->standard ) - { - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_C: - fecRsPlen = 204 * 8; - break; - case DRX_STANDARD_ITU_B: - fecRsPlen = 128 * 7; - break; - default: - return (DRX_STS_INVALID_ARG); - } - - extAttr->fecRsPlen = fecRsPlen; /* for getSigQual */ - fecRsBitCnt = fecRsPrescale * fecRsPlen; /* temp storage */ - CHK_ZERO (fecRsBitCnt); - fecRsPeriod = fecBitsDesired / fecRsBitCnt + 1; /* ceil */ - if (extAttr->standard != DRX_STANDARD_ITU_B) - fecOcSncFailPeriod = fecRsPeriod; - - /* limit to max 16 bit value (I2C register width) if needed */ - if ( fecRsPeriod > 0xFFFF ) - fecRsPeriod = 0xFFFF; - - /* write corresponding registers */ - switch ( extAttr->standard ) - { - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_C: - break; - case DRX_STANDARD_ITU_B: - switch ( constellation ) { - case DRX_CONSTELLATION_QAM64: - fecRsPeriod = 31581; - fecOcSncFailPeriod = 17932; - break; - case DRX_CONSTELLATION_QAM256: - fecRsPeriod = 45446; - fecOcSncFailPeriod = 25805; - break; - default: - return (DRX_STS_INVALID_ARG); - } - break; - default: - return (DRX_STS_INVALID_ARG); - } - - WR16 ( devAddr, FEC_OC_SNC_FAIL_PERIOD__A , ( u16_t ) fecOcSncFailPeriod ); - WR16 ( devAddr, FEC_RS_MEASUREMENT_PERIOD__A , ( u16_t ) fecRsPeriod ); - WR16 ( devAddr, FEC_RS_MEASUREMENT_PRESCALE__A , fecRsPrescale ); - extAttr->fecRsPeriod = (u16_t) fecRsPeriod; - extAttr->fecRsPrescale = fecRsPrescale; - WR32( devAddr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0 ); - WR16( devAddr, SCU_RAM_FEC_MEAS_COUNT__A, 0 ); - WR16( devAddr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0 ); - - if (extAttr->standard == DRX_STANDARD_ITU_B) - { - /* Parameters for Viterbi Decoder */ - /* qamvd_period = (int)ceil(FEC_BITS_DESIRED/ */ - /* (qamvd_prescale*plen*(qam_constellation+1))) */ - /* vd_bit_cnt = qamvd_period*qamvd_prescale*plen */ - /* result is within 32 bit arithmetic -> */ - /* no need for mult or frac functions */ - - /* a(8 bit) * b(8 bit) = 16 bit result => Mult32 not needed */ - fecVdPlen = extAttr->fecVdPlen; - qamVdPrescale = extAttr->qamVdPrescale; - qamVdBitCnt = qamVdPrescale * fecVdPlen; /* temp storage */ - - switch ( constellation ) { - case DRX_CONSTELLATION_QAM64: - /* a(16 bit) * b(4 bit) = 20 bit result => Mult32 not needed */ - qamVdPeriod = qamVdBitCnt * ( QAM_TOP_CONSTELLATION_QAM64 + 1 ) - * ( QAM_TOP_CONSTELLATION_QAM64 + 1 ); - break; - case DRX_CONSTELLATION_QAM256: - /* a(16 bit) * b(5 bit) = 21 bit result => Mult32 not needed */ - qamVdPeriod = qamVdBitCnt * ( QAM_TOP_CONSTELLATION_QAM256 + 1 ) - * ( QAM_TOP_CONSTELLATION_QAM256 + 1 ); - break; - default: - return (DRX_STS_INVALID_ARG); - } - CHK_ZERO (qamVdPeriod); - qamVdPeriod = fecBitsDesired / qamVdPeriod; - /* limit to max 16 bit value (I2C register width) if needed */ - if ( qamVdPeriod > 0xFFFF ) - qamVdPeriod = 0xFFFF; - - /* a(16 bit) * b(16 bit) = 32 bit result => Mult32 not needed */ - qamVdBitCnt *= qamVdPeriod; - - WR16 ( devAddr, QAM_VD_MEASUREMENT_PERIOD__A , ( u16_t ) qamVdPeriod ); - WR16 ( devAddr, QAM_VD_MEASUREMENT_PRESCALE__A , qamVdPrescale ); - extAttr->qamVdPeriod = (u16_t) qamVdPeriod; - extAttr->qamVdPrescale = qamVdPrescale; - } - - return (DRX_STS_OK); +SetQAMMeasurement(pDRXDemodInstance_t demod, + DRXConstellation_t constellation, u32_t symbolRate) +{ + pI2CDeviceAddr_t devAddr = NULL; /* device address for I2C writes */ + pDRXJData_t extAttr = NULL; /* Global data container for DRXJ specif data */ + u32_t fecBitsDesired = 0; /* BER accounting period */ + u16_t fecRsPlen = 0; /* defines RS BER measurement period */ + u16_t fecRsPrescale = 0; /* ReedSolomon Measurement Prescale */ + u32_t fecRsPeriod = 0; /* Value for corresponding I2C register */ + u32_t fecRsBitCnt = 0; /* Actual precise amount of bits */ + u32_t fecOcSncFailPeriod = 0; /* Value for corresponding I2C register */ + u32_t qamVdPeriod = 0; /* Value for corresponding I2C register */ + u32_t qamVdBitCnt = 0; /* Actual precise amount of bits */ + u16_t fecVdPlen = 0; /* no of trellis symbols: VD SER measur period */ + u16_t qamVdPrescale = 0; /* Viterbi Measurement Prescale */ + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + fecBitsDesired = extAttr->fecBitsDesired; + fecRsPrescale = extAttr->fecRsPrescale; + + switch (constellation) { + case DRX_CONSTELLATION_QAM16: + fecBitsDesired = 4 * symbolRate; + break; + case DRX_CONSTELLATION_QAM32: + fecBitsDesired = 5 * symbolRate; + break; + case DRX_CONSTELLATION_QAM64: + fecBitsDesired = 6 * symbolRate; + break; + case DRX_CONSTELLATION_QAM128: + fecBitsDesired = 7 * symbolRate; + break; + case DRX_CONSTELLATION_QAM256: + fecBitsDesired = 8 * symbolRate; + break; + default: + return (DRX_STS_INVALID_ARG); + } + + /* Parameters for Reed-Solomon Decoder */ + /* fecrs_period = (int)ceil(FEC_BITS_DESIRED/(fecrs_prescale*plen)) */ + /* rs_bit_cnt = fecrs_period*fecrs_prescale*plen */ + /* result is within 32 bit arithmetic -> */ + /* no need for mult or frac functions */ + + /* TODO: use constant instead of calculation and remove the fecRsPlen in extAttr */ + switch (extAttr->standard) { + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_C: + fecRsPlen = 204 * 8; + break; + case DRX_STANDARD_ITU_B: + fecRsPlen = 128 * 7; + break; + default: + return (DRX_STS_INVALID_ARG); + } + + extAttr->fecRsPlen = fecRsPlen; /* for getSigQual */ + fecRsBitCnt = fecRsPrescale * fecRsPlen; /* temp storage */ + CHK_ZERO(fecRsBitCnt); + fecRsPeriod = fecBitsDesired / fecRsBitCnt + 1; /* ceil */ + if (extAttr->standard != DRX_STANDARD_ITU_B) + fecOcSncFailPeriod = fecRsPeriod; + + /* limit to max 16 bit value (I2C register width) if needed */ + if (fecRsPeriod > 0xFFFF) + fecRsPeriod = 0xFFFF; + + /* write corresponding registers */ + switch (extAttr->standard) { + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_C: + break; + case DRX_STANDARD_ITU_B: + switch (constellation) { + case DRX_CONSTELLATION_QAM64: + fecRsPeriod = 31581; + fecOcSncFailPeriod = 17932; + break; + case DRX_CONSTELLATION_QAM256: + fecRsPeriod = 45446; + fecOcSncFailPeriod = 25805; + break; + default: + return (DRX_STS_INVALID_ARG); + } + break; + default: + return (DRX_STS_INVALID_ARG); + } + + WR16(devAddr, FEC_OC_SNC_FAIL_PERIOD__A, (u16_t) fecOcSncFailPeriod); + WR16(devAddr, FEC_RS_MEASUREMENT_PERIOD__A, (u16_t) fecRsPeriod); + WR16(devAddr, FEC_RS_MEASUREMENT_PRESCALE__A, fecRsPrescale); + extAttr->fecRsPeriod = (u16_t) fecRsPeriod; + extAttr->fecRsPrescale = fecRsPrescale; + WR32(devAddr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, 0); + WR16(devAddr, SCU_RAM_FEC_MEAS_COUNT__A, 0); + WR16(devAddr, SCU_RAM_FEC_ACCUM_PKT_FAILURES__A, 0); + + if (extAttr->standard == DRX_STANDARD_ITU_B) { + /* Parameters for Viterbi Decoder */ + /* qamvd_period = (int)ceil(FEC_BITS_DESIRED/ */ + /* (qamvd_prescale*plen*(qam_constellation+1))) */ + /* vd_bit_cnt = qamvd_period*qamvd_prescale*plen */ + /* result is within 32 bit arithmetic -> */ + /* no need for mult or frac functions */ + + /* a(8 bit) * b(8 bit) = 16 bit result => Mult32 not needed */ + fecVdPlen = extAttr->fecVdPlen; + qamVdPrescale = extAttr->qamVdPrescale; + qamVdBitCnt = qamVdPrescale * fecVdPlen; /* temp storage */ + + switch (constellation) { + case DRX_CONSTELLATION_QAM64: + /* a(16 bit) * b(4 bit) = 20 bit result => Mult32 not needed */ + qamVdPeriod = + qamVdBitCnt * (QAM_TOP_CONSTELLATION_QAM64 + 1) + * (QAM_TOP_CONSTELLATION_QAM64 + 1); + break; + case DRX_CONSTELLATION_QAM256: + /* a(16 bit) * b(5 bit) = 21 bit result => Mult32 not needed */ + qamVdPeriod = + qamVdBitCnt * (QAM_TOP_CONSTELLATION_QAM256 + 1) + * (QAM_TOP_CONSTELLATION_QAM256 + 1); + break; + default: + return (DRX_STS_INVALID_ARG); + } + CHK_ZERO(qamVdPeriod); + qamVdPeriod = fecBitsDesired / qamVdPeriod; + /* limit to max 16 bit value (I2C register width) if needed */ + if (qamVdPeriod > 0xFFFF) + qamVdPeriod = 0xFFFF; + + /* a(16 bit) * b(16 bit) = 32 bit result => Mult32 not needed */ + qamVdBitCnt *= qamVdPeriod; + + WR16(devAddr, QAM_VD_MEASUREMENT_PERIOD__A, + (u16_t) qamVdPeriod); + WR16(devAddr, QAM_VD_MEASUREMENT_PRESCALE__A, qamVdPrescale); + extAttr->qamVdPeriod = (u16_t) qamVdPeriod; + extAttr->qamVdPrescale = qamVdPrescale; + } + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -6846,75 +6543,76 @@ rw_error: * \param demod instance of demod. * \return DRXStatus_t. */ -static DRXStatus_t -SetQAM16 ( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = demod -> myI2CDevAddr; - const u8_t qamDqQualFun[]= { - DRXJ_16TO8( 2 ), /* fun0 */ - DRXJ_16TO8( 2 ), /* fun1 */ - DRXJ_16TO8( 2 ), /* fun2 */ - DRXJ_16TO8( 2 ), /* fun3 */ - DRXJ_16TO8( 3 ), /* fun4 */ - DRXJ_16TO8( 3 ), /* fun5 */ - }; - const u8_t qamEqCmaRad[]= { - DRXJ_16TO8( 13517 ), /* RAD0 */ - DRXJ_16TO8( 13517 ), /* RAD1 */ - DRXJ_16TO8( 13517 ), /* RAD2 */ - DRXJ_16TO8( 13517 ), /* RAD3 */ - DRXJ_16TO8( 13517 ), /* RAD4 */ - DRXJ_16TO8( 13517 ), /* RAD5 */ - }; - - WRB ( devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), ((pu8_t)qamDqQualFun) ); - WRB ( devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), ((pu8_t)qamEqCmaRad) ); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RTH__A, 140); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FTH__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_FSM_PTH__A, 120); - WR16 ( devAddr, SCU_RAM_QAM_FSM_QTH__A, 230); - WR16 ( devAddr, SCU_RAM_QAM_FSM_CTH__A, 95); - WR16 ( devAddr, SCU_RAM_QAM_FSM_MTH__A, 105); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56); - WR16 ( devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 16 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 220); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 25 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 6 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t)(-24) ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16_t)(-65)); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t)(-127)); - - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 240); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32); - - WR16 ( devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 40960); - - return (DRX_STS_OK); +static DRXStatus_t SetQAM16(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = demod->myI2CDevAddr; + const u8_t qamDqQualFun[] = { + DRXJ_16TO8(2), /* fun0 */ + DRXJ_16TO8(2), /* fun1 */ + DRXJ_16TO8(2), /* fun2 */ + DRXJ_16TO8(2), /* fun3 */ + DRXJ_16TO8(3), /* fun4 */ + DRXJ_16TO8(3), /* fun5 */ + }; + const u8_t qamEqCmaRad[] = { + DRXJ_16TO8(13517), /* RAD0 */ + DRXJ_16TO8(13517), /* RAD1 */ + DRXJ_16TO8(13517), /* RAD2 */ + DRXJ_16TO8(13517), /* RAD3 */ + DRXJ_16TO8(13517), /* RAD4 */ + DRXJ_16TO8(13517), /* RAD5 */ + }; + + WRB(devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), + ((pu8_t) qamDqQualFun)); + WRB(devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), + ((pu8_t) qamEqCmaRad)); + + WR16(devAddr, SCU_RAM_QAM_FSM_RTH__A, 140); + WR16(devAddr, SCU_RAM_QAM_FSM_FTH__A, 50); + WR16(devAddr, SCU_RAM_QAM_FSM_PTH__A, 120); + WR16(devAddr, SCU_RAM_QAM_FSM_QTH__A, 230); + WR16(devAddr, SCU_RAM_QAM_FSM_CTH__A, 95); + WR16(devAddr, SCU_RAM_QAM_FSM_MTH__A, 105); + + WR16(devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); + WR16(devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56); + WR16(devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); + + WR16(devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 16); + WR16(devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 220); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 25); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 6); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t) (-24)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16_t) (-65)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t) (-127)); + + WR16(devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); + WR16(devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20); + WR16(devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); + WR16(devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10); + WR16(devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 50); + WR16(devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32); + WR16(devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 240); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32); + + WR16(devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 40960); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -6925,75 +6623,76 @@ rw_error: * \param demod instance of demod. * \return DRXStatus_t. */ -static DRXStatus_t -SetQAM32 ( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = demod -> myI2CDevAddr; - const u8_t qamDqQualFun[]= { - DRXJ_16TO8( 3 ), /* fun0 */ - DRXJ_16TO8( 3 ), /* fun1 */ - DRXJ_16TO8( 3 ), /* fun2 */ - DRXJ_16TO8( 3 ), /* fun3 */ - DRXJ_16TO8( 4 ), /* fun4 */ - DRXJ_16TO8( 4 ), /* fun5 */ - }; - const u8_t qamEqCmaRad[]= { - DRXJ_16TO8( 6707 ), /* RAD0 */ - DRXJ_16TO8( 6707 ), /* RAD1 */ - DRXJ_16TO8( 6707 ), /* RAD2 */ - DRXJ_16TO8( 6707 ), /* RAD3 */ - DRXJ_16TO8( 6707 ), /* RAD4 */ - DRXJ_16TO8( 6707 ), /* RAD5 */ - }; - - WRB ( devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), ((pu8_t)qamDqQualFun) ); - WRB ( devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), ((pu8_t)qamEqCmaRad) ); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RTH__A, 90); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FTH__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); - WR16 ( devAddr, SCU_RAM_QAM_FSM_QTH__A, 170); - WR16 ( devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_FSM_MTH__A, 100); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56); - WR16 ( devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 140); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, (u16_t)(-8) ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, (u16_t)(-16) ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t)(-26) ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16_t)(-56)); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t)(-86)); - - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 176); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 8); - - WR16 ( devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 20480); - - return (DRX_STS_OK); +static DRXStatus_t SetQAM32(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = demod->myI2CDevAddr; + const u8_t qamDqQualFun[] = { + DRXJ_16TO8(3), /* fun0 */ + DRXJ_16TO8(3), /* fun1 */ + DRXJ_16TO8(3), /* fun2 */ + DRXJ_16TO8(3), /* fun3 */ + DRXJ_16TO8(4), /* fun4 */ + DRXJ_16TO8(4), /* fun5 */ + }; + const u8_t qamEqCmaRad[] = { + DRXJ_16TO8(6707), /* RAD0 */ + DRXJ_16TO8(6707), /* RAD1 */ + DRXJ_16TO8(6707), /* RAD2 */ + DRXJ_16TO8(6707), /* RAD3 */ + DRXJ_16TO8(6707), /* RAD4 */ + DRXJ_16TO8(6707), /* RAD5 */ + }; + + WRB(devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), + ((pu8_t) qamDqQualFun)); + WRB(devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), + ((pu8_t) qamEqCmaRad)); + + WR16(devAddr, SCU_RAM_QAM_FSM_RTH__A, 90); + WR16(devAddr, SCU_RAM_QAM_FSM_FTH__A, 50); + WR16(devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); + WR16(devAddr, SCU_RAM_QAM_FSM_QTH__A, 170); + WR16(devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); + WR16(devAddr, SCU_RAM_QAM_FSM_MTH__A, 100); + + WR16(devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); + WR16(devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 56); + WR16(devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); + + WR16(devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12); + WR16(devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 140); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, (u16_t) (-8)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, (u16_t) (-16)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t) (-26)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16_t) (-56)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t) (-86)); + + WR16(devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); + WR16(devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 20); + WR16(devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); + WR16(devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 10); + WR16(devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 50); + WR16(devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32); + WR16(devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 176); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 8); + + WR16(devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 20480); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -7004,75 +6703,76 @@ rw_error: * \param demod instance of demod. * \return DRXStatus_t. */ -static DRXStatus_t -SetQAM64 ( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = demod -> myI2CDevAddr; - const u8_t qamDqQualFun[]= { /* this is hw reset value. no necessary to re-write */ - DRXJ_16TO8( 4 ), /* fun0 */ - DRXJ_16TO8( 4 ), /* fun1 */ - DRXJ_16TO8( 4 ), /* fun2 */ - DRXJ_16TO8( 4 ), /* fun3 */ - DRXJ_16TO8( 6 ), /* fun4 */ - DRXJ_16TO8( 6 ), /* fun5 */ - }; - const u8_t qamEqCmaRad[]= { - DRXJ_16TO8( 13336 ), /* RAD0 */ - DRXJ_16TO8( 12618 ), /* RAD1 */ - DRXJ_16TO8( 11988 ), /* RAD2 */ - DRXJ_16TO8( 13809 ), /* RAD3 */ - DRXJ_16TO8( 13809 ), /* RAD4 */ - DRXJ_16TO8( 15609 ), /* RAD5 */ - }; - - WRB ( devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), ((pu8_t)qamDqQualFun) ); - WRB ( devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), ((pu8_t)qamEqCmaRad) ); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RTH__A, 105); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FTH__A, 60); - WR16 ( devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); - WR16 ( devAddr, SCU_RAM_QAM_FSM_QTH__A, 195); - WR16 ( devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_FSM_MTH__A, 84); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32); - WR16 ( devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 141); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 7 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 0 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t)(-15)); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16_t)(-45)); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t)(-80)); - - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 30); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 160); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32); - - WR16 ( devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 43008); - - return (DRX_STS_OK); +static DRXStatus_t SetQAM64(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = demod->myI2CDevAddr; + const u8_t qamDqQualFun[] = { /* this is hw reset value. no necessary to re-write */ + DRXJ_16TO8(4), /* fun0 */ + DRXJ_16TO8(4), /* fun1 */ + DRXJ_16TO8(4), /* fun2 */ + DRXJ_16TO8(4), /* fun3 */ + DRXJ_16TO8(6), /* fun4 */ + DRXJ_16TO8(6), /* fun5 */ + }; + const u8_t qamEqCmaRad[] = { + DRXJ_16TO8(13336), /* RAD0 */ + DRXJ_16TO8(12618), /* RAD1 */ + DRXJ_16TO8(11988), /* RAD2 */ + DRXJ_16TO8(13809), /* RAD3 */ + DRXJ_16TO8(13809), /* RAD4 */ + DRXJ_16TO8(15609), /* RAD5 */ + }; + + WRB(devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), + ((pu8_t) qamDqQualFun)); + WRB(devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), + ((pu8_t) qamEqCmaRad)); + + WR16(devAddr, SCU_RAM_QAM_FSM_RTH__A, 105); + WR16(devAddr, SCU_RAM_QAM_FSM_FTH__A, 60); + WR16(devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); + WR16(devAddr, SCU_RAM_QAM_FSM_QTH__A, 195); + WR16(devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); + WR16(devAddr, SCU_RAM_QAM_FSM_MTH__A, 84); + + WR16(devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); + WR16(devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32); + WR16(devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); + + WR16(devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 12); + WR16(devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 141); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 7); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 0); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t) (-15)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, (u16_t) (-45)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t) (-80)); + + WR16(devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); + WR16(devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 30); + WR16(devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); + WR16(devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 80); + WR16(devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48); + WR16(devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 160); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 32); + + WR16(devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 43008); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -7083,75 +6783,76 @@ rw_error: * \param demod: instance of demod. * \return DRXStatus_t. */ -static DRXStatus_t -SetQAM128( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = demod -> myI2CDevAddr; - const u8_t qamDqQualFun[]= { - DRXJ_16TO8( 6 ), /* fun0 */ - DRXJ_16TO8( 6 ), /* fun1 */ - DRXJ_16TO8( 6 ), /* fun2 */ - DRXJ_16TO8( 6 ), /* fun3 */ - DRXJ_16TO8( 9 ), /* fun4 */ - DRXJ_16TO8( 9 ), /* fun5 */ - }; - const u8_t qamEqCmaRad[]= { - DRXJ_16TO8( 6164 ), /* RAD0 */ - DRXJ_16TO8( 6598 ), /* RAD1 */ - DRXJ_16TO8( 6394 ), /* RAD2 */ - DRXJ_16TO8( 6409 ), /* RAD3 */ - DRXJ_16TO8( 6656 ), /* RAD4 */ - DRXJ_16TO8( 7238 ), /* RAD5 */ - }; - - WRB ( devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), ((pu8_t)qamDqQualFun) ); - WRB ( devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), ((pu8_t)qamEqCmaRad) ); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RTH__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FTH__A, 60); - WR16 ( devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); - WR16 ( devAddr, SCU_RAM_QAM_FSM_QTH__A, 140); - WR16 ( devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_FSM_MTH__A, 100); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32); - WR16 ( devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 65 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 5 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 3 ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t)(-1) ); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t)(-23)); - - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 20); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 144); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16); - - WR16 ( devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 20992); - - return (DRX_STS_OK); +static DRXStatus_t SetQAM128(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = demod->myI2CDevAddr; + const u8_t qamDqQualFun[] = { + DRXJ_16TO8(6), /* fun0 */ + DRXJ_16TO8(6), /* fun1 */ + DRXJ_16TO8(6), /* fun2 */ + DRXJ_16TO8(6), /* fun3 */ + DRXJ_16TO8(9), /* fun4 */ + DRXJ_16TO8(9), /* fun5 */ + }; + const u8_t qamEqCmaRad[] = { + DRXJ_16TO8(6164), /* RAD0 */ + DRXJ_16TO8(6598), /* RAD1 */ + DRXJ_16TO8(6394), /* RAD2 */ + DRXJ_16TO8(6409), /* RAD3 */ + DRXJ_16TO8(6656), /* RAD4 */ + DRXJ_16TO8(7238), /* RAD5 */ + }; + + WRB(devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), + ((pu8_t) qamDqQualFun)); + WRB(devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), + ((pu8_t) qamEqCmaRad)); + + WR16(devAddr, SCU_RAM_QAM_FSM_RTH__A, 50); + WR16(devAddr, SCU_RAM_QAM_FSM_FTH__A, 60); + WR16(devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); + WR16(devAddr, SCU_RAM_QAM_FSM_QTH__A, 140); + WR16(devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); + WR16(devAddr, SCU_RAM_QAM_FSM_MTH__A, 100); + + WR16(devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); + WR16(devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 32); + WR16(devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); + + WR16(devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8); + WR16(devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 65); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 5); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 3); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, (u16_t) (-1)); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 12); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t) (-23)); + + WR16(devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); + WR16(devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 40); + WR16(devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); + WR16(devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 20); + WR16(devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 80); + WR16(devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 32); + WR16(devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 144); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16); + + WR16(devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 20992); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -7162,75 +6863,76 @@ rw_error: * \param demod: instance of demod. * \return DRXStatus_t. */ -static DRXStatus_t -SetQAM256( pDRXDemodInstance_t demod ) -{ - pI2CDeviceAddr_t devAddr = demod -> myI2CDevAddr; - const u8_t qamDqQualFun[]= { - DRXJ_16TO8( 8 ), /* fun0 */ - DRXJ_16TO8( 8 ), /* fun1 */ - DRXJ_16TO8( 8 ), /* fun2 */ - DRXJ_16TO8( 8 ), /* fun3 */ - DRXJ_16TO8( 12 ), /* fun4 */ - DRXJ_16TO8( 12 ), /* fun5 */ - }; - const u8_t qamEqCmaRad[]= { - DRXJ_16TO8( 12345 ), /* RAD0 */ - DRXJ_16TO8( 12345 ), /* RAD1 */ - DRXJ_16TO8( 13626 ), /* RAD2 */ - DRXJ_16TO8( 12931 ), /* RAD3 */ - DRXJ_16TO8( 14719 ), /* RAD4 */ - DRXJ_16TO8( 15356 ), /* RAD5 */ - }; - - WRB ( devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), ((pu8_t)qamDqQualFun) ); - WRB ( devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), ((pu8_t)qamEqCmaRad) ); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RTH__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FTH__A, 60); - WR16 ( devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); - WR16 ( devAddr, SCU_RAM_QAM_FSM_QTH__A, 150); - WR16 ( devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_FSM_MTH__A, 110); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); - - WR16 ( devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8); - WR16 ( devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 74); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 18); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 13); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, 7); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 0); - WR16 ( devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t)(-8)); - - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 50); - WR16 ( devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 25); - WR16 ( devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 80); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); - WR16 ( devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16); - - WR16 ( devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 43520); - - return (DRX_STS_OK); +static DRXStatus_t SetQAM256(pDRXDemodInstance_t demod) +{ + pI2CDeviceAddr_t devAddr = demod->myI2CDevAddr; + const u8_t qamDqQualFun[] = { + DRXJ_16TO8(8), /* fun0 */ + DRXJ_16TO8(8), /* fun1 */ + DRXJ_16TO8(8), /* fun2 */ + DRXJ_16TO8(8), /* fun3 */ + DRXJ_16TO8(12), /* fun4 */ + DRXJ_16TO8(12), /* fun5 */ + }; + const u8_t qamEqCmaRad[] = { + DRXJ_16TO8(12345), /* RAD0 */ + DRXJ_16TO8(12345), /* RAD1 */ + DRXJ_16TO8(13626), /* RAD2 */ + DRXJ_16TO8(12931), /* RAD3 */ + DRXJ_16TO8(14719), /* RAD4 */ + DRXJ_16TO8(15356), /* RAD5 */ + }; + + WRB(devAddr, QAM_DQ_QUAL_FUN0__A, sizeof(qamDqQualFun), + ((pu8_t) qamDqQualFun)); + WRB(devAddr, SCU_RAM_QAM_EQ_CMA_RAD0__A, sizeof(qamEqCmaRad), + ((pu8_t) qamEqCmaRad)); + + WR16(devAddr, SCU_RAM_QAM_FSM_RTH__A, 50); + WR16(devAddr, SCU_RAM_QAM_FSM_FTH__A, 60); + WR16(devAddr, SCU_RAM_QAM_FSM_PTH__A, 100); + WR16(devAddr, SCU_RAM_QAM_FSM_QTH__A, 150); + WR16(devAddr, SCU_RAM_QAM_FSM_CTH__A, 80); + WR16(devAddr, SCU_RAM_QAM_FSM_MTH__A, 110); + + WR16(devAddr, SCU_RAM_QAM_FSM_RATE_LIM__A, 40); + WR16(devAddr, SCU_RAM_QAM_FSM_FREQ_LIM__A, 16); + WR16(devAddr, SCU_RAM_QAM_FSM_COUNT_LIM__A, 3); + + WR16(devAddr, SCU_RAM_QAM_FSM_MEDIAN_AV_MULT__A, 8); + WR16(devAddr, SCU_RAM_QAM_FSM_RADIUS_AV_LIMIT__A, 74); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET1__A, 18); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET2__A, 13); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET3__A, 7); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET4__A, 0); + WR16(devAddr, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16_t) (-8)); + + WR16(devAddr, SCU_RAM_QAM_LC_CA_FINE__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CA_COARSE__A, 40); + WR16(devAddr, SCU_RAM_QAM_LC_CP_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CP_MEDIUM__A, 50); + WR16(devAddr, SCU_RAM_QAM_LC_CP_COARSE__A, 255); + WR16(devAddr, SCU_RAM_QAM_LC_CI_FINE__A, 2); + WR16(devAddr, SCU_RAM_QAM_LC_CI_MEDIUM__A, 25); + WR16(devAddr, SCU_RAM_QAM_LC_CI_COARSE__A, 80); + WR16(devAddr, SCU_RAM_QAM_LC_EP_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EP_MEDIUM__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EP_COARSE__A, 24); + WR16(devAddr, SCU_RAM_QAM_LC_EI_FINE__A, 12); + WR16(devAddr, SCU_RAM_QAM_LC_EI_MEDIUM__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_EI_COARSE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_FINE__A, 16); + WR16(devAddr, SCU_RAM_QAM_LC_CF_MEDIUM__A, 48); + WR16(devAddr, SCU_RAM_QAM_LC_CF_COARSE__A, 80); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_FINE__A, 5); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_MEDIUM__A, 15); + WR16(devAddr, SCU_RAM_QAM_LC_CF1_COARSE__A, 16); + + WR16(devAddr, SCU_RAM_QAM_SL_SIG_POWER__A, 43520); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -7246,566 +6948,550 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -SetQAM( pDRXDemodInstance_t demod, - pDRXChannel_t channel, - DRXFrequency_t tunerFreqOffset, - u32_t op - ) -{ - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - pDRXCommonAttr_t commonAttr = NULL; - u16_t cmdResult = 0; - u32_t adcFrequency = 0; - u32_t iqmRcRate = 0; - u16_t lcSymbolFreq = 0; - u16_t iqmRcStretch = 0; - u16_t setEnvParameters = 0; - u16_t setParamParameters[2] = {0}; - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* parameter */ NULL, - /* result */ NULL }; - const u8_t qamA_taps[]= { - DRXJ_16TO8( -1 ), /* re0 */ - DRXJ_16TO8( 1 ), /* re1 */ - DRXJ_16TO8( 1 ), /* re2 */ - DRXJ_16TO8( -1 ), /* re3 */ - DRXJ_16TO8( -1 ), /* re4 */ - DRXJ_16TO8( 2 ), /* re5 */ - DRXJ_16TO8( 1 ), /* re6 */ - DRXJ_16TO8( -2 ), /* re7 */ - DRXJ_16TO8( 0 ), /* re8 */ - DRXJ_16TO8( 3 ), /* re9 */ - DRXJ_16TO8( -1 ), /* re10 */ - DRXJ_16TO8( -3 ), /* re11 */ - DRXJ_16TO8( 4 ), /* re12 */ - DRXJ_16TO8( 1 ), /* re13 */ - DRXJ_16TO8( -8 ), /* re14 */ - DRXJ_16TO8( 4 ), /* re15 */ - DRXJ_16TO8( 13 ), /* re16 */ - DRXJ_16TO8( -13 ), /* re17 */ - DRXJ_16TO8( -19 ), /* re18 */ - DRXJ_16TO8( 28 ), /* re19 */ - DRXJ_16TO8( 25 ), /* re20 */ - DRXJ_16TO8( -53 ), /* re21 */ - DRXJ_16TO8( -31 ), /* re22 */ - DRXJ_16TO8( 96 ), /* re23 */ - DRXJ_16TO8( 37 ), /* re24 */ - DRXJ_16TO8( -190 ), /* re25 */ - DRXJ_16TO8( -40 ), /* re26 */ - DRXJ_16TO8( 619 ) /* re27 */ - }; - const u8_t qamB64_taps[]= { - DRXJ_16TO8( 0 ), /* re0 */ - DRXJ_16TO8( -2 ), /* re1 */ - DRXJ_16TO8( 1 ), /* re2 */ - DRXJ_16TO8( 2 ), /* re3 */ - DRXJ_16TO8( -2 ), /* re4 */ - DRXJ_16TO8( 0 ), /* re5 */ - DRXJ_16TO8( 4 ), /* re6 */ - DRXJ_16TO8( -2 ), /* re7 */ - DRXJ_16TO8( -4 ), /* re8 */ - DRXJ_16TO8( 4 ), /* re9 */ - DRXJ_16TO8( 3 ), /* re10 */ - DRXJ_16TO8( -6 ), /* re11 */ - DRXJ_16TO8( 0 ), /* re12 */ - DRXJ_16TO8( 6 ), /* re13 */ - DRXJ_16TO8( -5 ), /* re14 */ - DRXJ_16TO8( -3 ), /* re15 */ - DRXJ_16TO8( 11 ), /* re16 */ - DRXJ_16TO8( -4 ), /* re17 */ - DRXJ_16TO8( -19 ), /* re18 */ - DRXJ_16TO8( 19 ), /* re19 */ - DRXJ_16TO8( 28 ), /* re20 */ - DRXJ_16TO8( -45 ), /* re21 */ - DRXJ_16TO8( -36 ), /* re22 */ - DRXJ_16TO8( 90 ), /* re23 */ - DRXJ_16TO8( 42 ), /* re24 */ - DRXJ_16TO8( -185 ), /* re25 */ - DRXJ_16TO8( -46 ), /* re26 */ - DRXJ_16TO8( 614 ) /* re27 */ - }; - const u8_t qamB256_taps[]= { - DRXJ_16TO8( -2 ), /* re0 */ - DRXJ_16TO8( 4 ), /* re1 */ - DRXJ_16TO8( 1 ), /* re2 */ - DRXJ_16TO8( -4 ), /* re3 */ - DRXJ_16TO8( 0 ), /* re4 */ - DRXJ_16TO8( 4 ), /* re5 */ - DRXJ_16TO8( -2 ), /* re6 */ - DRXJ_16TO8( -4 ), /* re7 */ - DRXJ_16TO8( 5 ), /* re8 */ - DRXJ_16TO8( 2 ), /* re9 */ - DRXJ_16TO8( -8 ), /* re10 */ - DRXJ_16TO8( 2 ), /* re11 */ - DRXJ_16TO8( 11 ), /* re12 */ - DRXJ_16TO8( -8 ), /* re13 */ - DRXJ_16TO8( -15 ), /* re14 */ - DRXJ_16TO8( 16 ), /* re15 */ - DRXJ_16TO8( 19 ), /* re16 */ - DRXJ_16TO8( -27 ), /* re17 */ - DRXJ_16TO8( -22 ), /* re18 */ - DRXJ_16TO8( 44 ), /* re19 */ - DRXJ_16TO8( 26 ), /* re20 */ - DRXJ_16TO8( -69 ), /* re21 */ - DRXJ_16TO8( -28 ), /* re22 */ - DRXJ_16TO8( 110 ), /* re23 */ - DRXJ_16TO8( 31 ), /* re24 */ - DRXJ_16TO8( -201 ), /* re25 */ - DRXJ_16TO8( -32 ), /* re26 */ - DRXJ_16TO8( 628 ) /* re27 */ - }; - const u8_t qamC_taps[]= { - DRXJ_16TO8( -3 ), /* re0 */ - DRXJ_16TO8( 3 ), /* re1 */ - DRXJ_16TO8( 2 ), /* re2 */ - DRXJ_16TO8( -4 ), /* re3 */ - DRXJ_16TO8( 0 ), /* re4 */ - DRXJ_16TO8( 4 ), /* re5 */ - DRXJ_16TO8( -1 ), /* re6 */ - DRXJ_16TO8( -4 ), /* re7 */ - DRXJ_16TO8( 3 ), /* re8 */ - DRXJ_16TO8( 3 ), /* re9 */ - DRXJ_16TO8( -5 ), /* re10 */ - DRXJ_16TO8( 0 ), /* re11 */ - DRXJ_16TO8( 9 ), /* re12 */ - DRXJ_16TO8( -4 ), /* re13 */ - DRXJ_16TO8( -12 ), /* re14 */ - DRXJ_16TO8( 10 ), /* re15 */ - DRXJ_16TO8( 16 ), /* re16 */ - DRXJ_16TO8( -21 ), /* re17 */ - DRXJ_16TO8( -20 ), /* re18 */ - DRXJ_16TO8( 37 ), /* re19 */ - DRXJ_16TO8( 25 ), /* re20 */ - DRXJ_16TO8( -62 ), /* re21 */ - DRXJ_16TO8( -28 ), /* re22 */ - DRXJ_16TO8( 105 ), /* re23 */ - DRXJ_16TO8( 31 ), /* re24 */ - DRXJ_16TO8( -197 ), /* re25 */ - DRXJ_16TO8( -33 ), /* re26 */ - DRXJ_16TO8( 626 ) /* re27 */ - }; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod -> myExtAttr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - - if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION )) - { - if ( extAttr->standard == DRX_STANDARD_ITU_B ) - { - switch ( channel->constellation ) - { - case DRX_CONSTELLATION_QAM256 : - iqmRcRate = 0x00AE3562; - lcSymbolFreq = QAM_LC_SYMBOL_FREQ_FREQ_QAM_B_256; - channel->symbolrate = 5360537; - iqmRcStretch = IQM_RC_STRETCH_QAM_B_256; - break; - case DRX_CONSTELLATION_QAM64 : - iqmRcRate = 0x00C05A0E; - lcSymbolFreq = 409; - channel->symbolrate = 5056941; - iqmRcStretch = IQM_RC_STRETCH_QAM_B_64; - break; - default : - return (DRX_STS_INVALID_ARG); - } - } - else - { - adcFrequency = ( commonAttr->sysClockFreq * 1000 ) / 3; - CHK_ZERO (channel->symbolrate); - iqmRcRate = ( adcFrequency / channel->symbolrate ) * ( 1 << 21 ) + - ( Frac28 ( ( adcFrequency % channel->symbolrate ), channel->symbolrate ) >> 7 ) - ( 1 << 23 ); - lcSymbolFreq = (u16_t)( Frac28 ( channel->symbolrate + (adcFrequency >> 13), adcFrequency ) >> 16 ); - if (lcSymbolFreq > 511) - lcSymbolFreq = 511; - - iqmRcStretch = 21; - } - - if( extAttr->standard == DRX_STANDARD_ITU_A ) - { - setEnvParameters = QAM_TOP_ANNEX_A; /* annex */ - setParamParameters[0] = channel->constellation; /* constellation */ - setParamParameters[1] = DRX_INTERLEAVEMODE_I12_J17; /* interleave mode */ - } - else if( extAttr->standard == DRX_STANDARD_ITU_B ) - { - setEnvParameters = QAM_TOP_ANNEX_B; /* annex */ - setParamParameters[0] = channel->constellation; /* constellation */ - setParamParameters[1] = channel->interleavemode; /* interleave mode */ - } - else if( extAttr->standard == DRX_STANDARD_ITU_C ) - { - setEnvParameters = QAM_TOP_ANNEX_C; /* annex */ - setParamParameters[0] = channel->constellation; /* constellation */ - setParamParameters[1] = DRX_INTERLEAVEMODE_I12_J17; /* interleave mode */ - } - else - { - return (DRX_STS_INVALID_ARG); - } - } - - if (op & QAM_SET_OP_ALL) - { - /* - STEP 1: reset demodulator - resets IQM, QAM and FEC HW blocks - resets SCU variables - */ - /* stop all comm_exec */ - WR16( devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP ); - WR16( devAddr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP ); - WR16( devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP ); - - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_RESET; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - } - - if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION )) - { - /* - STEP 2: configure demodulator - -set env - -set params (resets IQM,QAM,FEC HW; initializes some SCU variables ) - */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV; - cmdSCU.parameterLen = 1; - cmdSCU.resultLen = 1; - cmdSCU.parameter = &setEnvParameters; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM; - cmdSCU.parameterLen = 2; - cmdSCU.resultLen = 1; - cmdSCU.parameter = setParamParameters; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - /* set symbol rate */ - WR32( devAddr, IQM_RC_RATE_OFS_LO__A, iqmRcRate ); - extAttr->iqmRcRateOfs = iqmRcRate; - CHK_ERROR( SetQAMMeasurement ( demod, channel->constellation, channel->symbolrate)); - } - /* STEP 3: enable the system in a mode where the ADC provides valid signal - setup constellation independent registers */ - /* from qam_cmd.py script (qam_driver_b)*/ - /* TODO: remove re-writes of HW reset values */ - if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_SPECTRUM )) - { - CHK_ERROR ( SetFrequency ( demod, channel, tunerFreqOffset ) ); - } +SetQAM(pDRXDemodInstance_t demod, + pDRXChannel_t channel, DRXFrequency_t tunerFreqOffset, u32_t op) +{ + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + pDRXCommonAttr_t commonAttr = NULL; + u16_t cmdResult = 0; + u32_t adcFrequency = 0; + u32_t iqmRcRate = 0; + u16_t lcSymbolFreq = 0; + u16_t iqmRcStretch = 0; + u16_t setEnvParameters = 0; + u16_t setParamParameters[2] = { 0 }; + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* parameter */ NULL, + /* result */ NULL + }; + const u8_t qamA_taps[] = { + DRXJ_16TO8(-1), /* re0 */ + DRXJ_16TO8(1), /* re1 */ + DRXJ_16TO8(1), /* re2 */ + DRXJ_16TO8(-1), /* re3 */ + DRXJ_16TO8(-1), /* re4 */ + DRXJ_16TO8(2), /* re5 */ + DRXJ_16TO8(1), /* re6 */ + DRXJ_16TO8(-2), /* re7 */ + DRXJ_16TO8(0), /* re8 */ + DRXJ_16TO8(3), /* re9 */ + DRXJ_16TO8(-1), /* re10 */ + DRXJ_16TO8(-3), /* re11 */ + DRXJ_16TO8(4), /* re12 */ + DRXJ_16TO8(1), /* re13 */ + DRXJ_16TO8(-8), /* re14 */ + DRXJ_16TO8(4), /* re15 */ + DRXJ_16TO8(13), /* re16 */ + DRXJ_16TO8(-13), /* re17 */ + DRXJ_16TO8(-19), /* re18 */ + DRXJ_16TO8(28), /* re19 */ + DRXJ_16TO8(25), /* re20 */ + DRXJ_16TO8(-53), /* re21 */ + DRXJ_16TO8(-31), /* re22 */ + DRXJ_16TO8(96), /* re23 */ + DRXJ_16TO8(37), /* re24 */ + DRXJ_16TO8(-190), /* re25 */ + DRXJ_16TO8(-40), /* re26 */ + DRXJ_16TO8(619) /* re27 */ + }; + const u8_t qamB64_taps[] = { + DRXJ_16TO8(0), /* re0 */ + DRXJ_16TO8(-2), /* re1 */ + DRXJ_16TO8(1), /* re2 */ + DRXJ_16TO8(2), /* re3 */ + DRXJ_16TO8(-2), /* re4 */ + DRXJ_16TO8(0), /* re5 */ + DRXJ_16TO8(4), /* re6 */ + DRXJ_16TO8(-2), /* re7 */ + DRXJ_16TO8(-4), /* re8 */ + DRXJ_16TO8(4), /* re9 */ + DRXJ_16TO8(3), /* re10 */ + DRXJ_16TO8(-6), /* re11 */ + DRXJ_16TO8(0), /* re12 */ + DRXJ_16TO8(6), /* re13 */ + DRXJ_16TO8(-5), /* re14 */ + DRXJ_16TO8(-3), /* re15 */ + DRXJ_16TO8(11), /* re16 */ + DRXJ_16TO8(-4), /* re17 */ + DRXJ_16TO8(-19), /* re18 */ + DRXJ_16TO8(19), /* re19 */ + DRXJ_16TO8(28), /* re20 */ + DRXJ_16TO8(-45), /* re21 */ + DRXJ_16TO8(-36), /* re22 */ + DRXJ_16TO8(90), /* re23 */ + DRXJ_16TO8(42), /* re24 */ + DRXJ_16TO8(-185), /* re25 */ + DRXJ_16TO8(-46), /* re26 */ + DRXJ_16TO8(614) /* re27 */ + }; + const u8_t qamB256_taps[] = { + DRXJ_16TO8(-2), /* re0 */ + DRXJ_16TO8(4), /* re1 */ + DRXJ_16TO8(1), /* re2 */ + DRXJ_16TO8(-4), /* re3 */ + DRXJ_16TO8(0), /* re4 */ + DRXJ_16TO8(4), /* re5 */ + DRXJ_16TO8(-2), /* re6 */ + DRXJ_16TO8(-4), /* re7 */ + DRXJ_16TO8(5), /* re8 */ + DRXJ_16TO8(2), /* re9 */ + DRXJ_16TO8(-8), /* re10 */ + DRXJ_16TO8(2), /* re11 */ + DRXJ_16TO8(11), /* re12 */ + DRXJ_16TO8(-8), /* re13 */ + DRXJ_16TO8(-15), /* re14 */ + DRXJ_16TO8(16), /* re15 */ + DRXJ_16TO8(19), /* re16 */ + DRXJ_16TO8(-27), /* re17 */ + DRXJ_16TO8(-22), /* re18 */ + DRXJ_16TO8(44), /* re19 */ + DRXJ_16TO8(26), /* re20 */ + DRXJ_16TO8(-69), /* re21 */ + DRXJ_16TO8(-28), /* re22 */ + DRXJ_16TO8(110), /* re23 */ + DRXJ_16TO8(31), /* re24 */ + DRXJ_16TO8(-201), /* re25 */ + DRXJ_16TO8(-32), /* re26 */ + DRXJ_16TO8(628) /* re27 */ + }; + const u8_t qamC_taps[] = { + DRXJ_16TO8(-3), /* re0 */ + DRXJ_16TO8(3), /* re1 */ + DRXJ_16TO8(2), /* re2 */ + DRXJ_16TO8(-4), /* re3 */ + DRXJ_16TO8(0), /* re4 */ + DRXJ_16TO8(4), /* re5 */ + DRXJ_16TO8(-1), /* re6 */ + DRXJ_16TO8(-4), /* re7 */ + DRXJ_16TO8(3), /* re8 */ + DRXJ_16TO8(3), /* re9 */ + DRXJ_16TO8(-5), /* re10 */ + DRXJ_16TO8(0), /* re11 */ + DRXJ_16TO8(9), /* re12 */ + DRXJ_16TO8(-4), /* re13 */ + DRXJ_16TO8(-12), /* re14 */ + DRXJ_16TO8(10), /* re15 */ + DRXJ_16TO8(16), /* re16 */ + DRXJ_16TO8(-21), /* re17 */ + DRXJ_16TO8(-20), /* re18 */ + DRXJ_16TO8(37), /* re19 */ + DRXJ_16TO8(25), /* re20 */ + DRXJ_16TO8(-62), /* re21 */ + DRXJ_16TO8(-28), /* re22 */ + DRXJ_16TO8(105), /* re23 */ + DRXJ_16TO8(31), /* re24 */ + DRXJ_16TO8(-197), /* re25 */ + DRXJ_16TO8(-33), /* re26 */ + DRXJ_16TO8(626) /* re27 */ + }; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) { + if (extAttr->standard == DRX_STANDARD_ITU_B) { + switch (channel->constellation) { + case DRX_CONSTELLATION_QAM256: + iqmRcRate = 0x00AE3562; + lcSymbolFreq = + QAM_LC_SYMBOL_FREQ_FREQ_QAM_B_256; + channel->symbolrate = 5360537; + iqmRcStretch = IQM_RC_STRETCH_QAM_B_256; + break; + case DRX_CONSTELLATION_QAM64: + iqmRcRate = 0x00C05A0E; + lcSymbolFreq = 409; + channel->symbolrate = 5056941; + iqmRcStretch = IQM_RC_STRETCH_QAM_B_64; + break; + default: + return (DRX_STS_INVALID_ARG); + } + } else { + adcFrequency = (commonAttr->sysClockFreq * 1000) / 3; + CHK_ZERO(channel->symbolrate); + iqmRcRate = + (adcFrequency / channel->symbolrate) * (1 << 21) + + (Frac28 + ((adcFrequency % channel->symbolrate), + channel->symbolrate) >> 7) - (1 << 23); + lcSymbolFreq = + (u16_t) (Frac28 + (channel->symbolrate + + (adcFrequency >> 13), + adcFrequency) >> 16); + if (lcSymbolFreq > 511) + lcSymbolFreq = 511; + + iqmRcStretch = 21; + } + + if (extAttr->standard == DRX_STANDARD_ITU_A) { + setEnvParameters = QAM_TOP_ANNEX_A; /* annex */ + setParamParameters[0] = channel->constellation; /* constellation */ + setParamParameters[1] = DRX_INTERLEAVEMODE_I12_J17; /* interleave mode */ + } else if (extAttr->standard == DRX_STANDARD_ITU_B) { + setEnvParameters = QAM_TOP_ANNEX_B; /* annex */ + setParamParameters[0] = channel->constellation; /* constellation */ + setParamParameters[1] = channel->interleavemode; /* interleave mode */ + } else if (extAttr->standard == DRX_STANDARD_ITU_C) { + setEnvParameters = QAM_TOP_ANNEX_C; /* annex */ + setParamParameters[0] = channel->constellation; /* constellation */ + setParamParameters[1] = DRX_INTERLEAVEMODE_I12_J17; /* interleave mode */ + } else { + return (DRX_STS_INVALID_ARG); + } + } - if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION )) - { + if (op & QAM_SET_OP_ALL) { + /* + STEP 1: reset demodulator + resets IQM, QAM and FEC HW blocks + resets SCU variables + */ + /* stop all comm_exec */ + WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_STOP); + WR16(devAddr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP); + WR16(devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP); + WR16(devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP); + WR16(devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP); + WR16(devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP); + WR16(devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP); + + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_RESET; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + } - WR16( devAddr, QAM_LC_SYMBOL_FREQ__A, lcSymbolFreq); - WR16( devAddr, IQM_RC_STRETCH__A, iqmRcStretch ); - } + if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) { + /* + STEP 2: configure demodulator + -set env + -set params (resets IQM,QAM,FEC HW; initializes some SCU variables ) + */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV; + cmdSCU.parameterLen = 1; + cmdSCU.resultLen = 1; + cmdSCU.parameter = &setEnvParameters; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_SET_PARAM; + cmdSCU.parameterLen = 2; + cmdSCU.resultLen = 1; + cmdSCU.parameter = setParamParameters; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + /* set symbol rate */ + WR32(devAddr, IQM_RC_RATE_OFS_LO__A, iqmRcRate); + extAttr->iqmRcRateOfs = iqmRcRate; + CHK_ERROR(SetQAMMeasurement + (demod, channel->constellation, channel->symbolrate)); + } + /* STEP 3: enable the system in a mode where the ADC provides valid signal + setup constellation independent registers */ + /* from qam_cmd.py script (qam_driver_b) */ + /* TODO: remove re-writes of HW reset values */ + if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_SPECTRUM)) { + CHK_ERROR(SetFrequency(demod, channel, tunerFreqOffset)); + } - if (op & QAM_SET_OP_ALL) - { - if (extAttr->hasLNA==FALSE) - { - WR16( devAddr, IQM_AF_AMUX__A, 0x02); - } - WR16( devAddr, IQM_CF_SYMMETRIC__A, 0 ); - WR16( devAddr, IQM_CF_MIDTAP__A, 3 ); - WR16( devAddr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_QAM__M ); - - WR16( devAddr, SCU_RAM_QAM_WR_RSV_0__A, 0x5f); /* scu temporary shut down agc */ - - WR16( devAddr, IQM_AF_SYNC_SEL__A, 3); - WR16( devAddr, IQM_AF_CLP_LEN__A, 0); - WR16( devAddr, IQM_AF_CLP_TH__A, 448); - WR16( devAddr, IQM_AF_SNS_LEN__A, 0); - WR16( devAddr, IQM_AF_PDREF__A, 4); - WR16( devAddr, IQM_AF_STDBY__A, 0x10); - WR16( devAddr, IQM_AF_PGA_GAIN__A, 11); - - WR16( devAddr, IQM_CF_POW_MEAS_LEN__A, 1); - WR16( devAddr, IQM_CF_SCALE_SH__A, IQM_CF_SCALE_SH__PRE); /*! reset default val ! */ - - WR16( devAddr, QAM_SY_TIMEOUT__A, QAM_SY_TIMEOUT__PRE); /*! reset default val ! */ - if( extAttr->standard == DRX_STANDARD_ITU_B ) - { - WR16( devAddr, QAM_SY_SYNC_LWM__A, QAM_SY_SYNC_LWM__PRE); /*! reset default val ! */ - WR16( devAddr, QAM_SY_SYNC_AWM__A, QAM_SY_SYNC_AWM__PRE); /*! reset default val ! */ - WR16( devAddr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE); /*! reset default val ! */ - } - else - { - switch ( channel->constellation ) { - case DRX_CONSTELLATION_QAM16: - case DRX_CONSTELLATION_QAM64: - case DRX_CONSTELLATION_QAM256: - WR16( devAddr, QAM_SY_SYNC_LWM__A, 0x03); - WR16( devAddr, QAM_SY_SYNC_AWM__A, 0x04); - WR16( devAddr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE); /*! reset default val ! */ - break; - case DRX_CONSTELLATION_QAM32: - case DRX_CONSTELLATION_QAM128: - WR16( devAddr, QAM_SY_SYNC_LWM__A, 0x03); - WR16( devAddr, QAM_SY_SYNC_AWM__A, 0x05); - WR16( devAddr, QAM_SY_SYNC_HWM__A, 0x06); - break; - default: - return (DRX_STS_ERROR); - } /* switch */ - } - - WR16( devAddr, QAM_LC_MODE__A, QAM_LC_MODE__PRE); /*! reset default val ! */ - WR16( devAddr, QAM_LC_RATE_LIMIT__A, 3); - WR16( devAddr, QAM_LC_LPF_FACTORP__A, 4); - WR16( devAddr, QAM_LC_LPF_FACTORI__A, 4); - WR16( devAddr, QAM_LC_MODE__A, 7); - WR16( devAddr, QAM_LC_QUAL_TAB0__A, 1); - WR16( devAddr, QAM_LC_QUAL_TAB1__A, 1); - WR16( devAddr, QAM_LC_QUAL_TAB2__A, 1); - WR16( devAddr, QAM_LC_QUAL_TAB3__A, 1); - WR16( devAddr, QAM_LC_QUAL_TAB4__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB5__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB6__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB8__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB9__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB10__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB12__A, 2); - WR16( devAddr, QAM_LC_QUAL_TAB15__A, 3); - WR16( devAddr, QAM_LC_QUAL_TAB16__A, 3); - WR16( devAddr, QAM_LC_QUAL_TAB20__A, 4); - WR16( devAddr, QAM_LC_QUAL_TAB25__A, 4); - - WR16( devAddr, IQM_FS_ADJ_SEL__A, 1); - WR16( devAddr, IQM_RC_ADJ_SEL__A, 1); - WR16( devAddr, IQM_CF_ADJ_SEL__A, 1); - WR16( devAddr, IQM_CF_POW_MEAS_LEN__A, 0); - WR16( devAddr, SCU_RAM_GPIO__A, 0 ); - - /* No more resets of the IQM, current standard correctly set => - now AGCs can be configured. */ - /* turn on IQMAF. It has to be in front of setAgc**() */ - CHK_ERROR( SetIqmAf( demod, TRUE ) ); - CHK_ERROR(ADCSynchronization (demod)); - - CHK_ERROR( InitAGC( demod ) ); - CHK_ERROR( SetAgcIf( demod, &(extAttr->qamIfAgcCfg), FALSE ) ); - CHK_ERROR( SetAgcRf( demod, &(extAttr->qamRfAgcCfg), FALSE ) ); - { - /* TODO fix this, store a DRXJCfgAfeGain_t structure in DRXJData_t instead - of only the gain */ - DRXJCfgAfeGain_t qamPgaCfg = { DRX_STANDARD_ITU_B, 0 }; - - qamPgaCfg.gain = extAttr->qamPgaCfg; - CHK_ERROR( CtrlSetCfgAfeGain( demod, &qamPgaCfg ) ); - } - CHK_ERROR( CtrlSetCfgPreSaw( demod, &(extAttr->qamPreSawCfg)) ); - } - - if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION )) - { - if( extAttr->standard == DRX_STANDARD_ITU_A ) - { - WRB ( devAddr, IQM_CF_TAP_RE0__A, sizeof(qamA_taps), ((pu8_t)qamA_taps) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A, sizeof(qamA_taps), ((pu8_t)qamA_taps) ); - } - else if ( extAttr->standard == DRX_STANDARD_ITU_B ) - { - switch ( channel->constellation ) { - case DRX_CONSTELLATION_QAM64: - WRB ( devAddr, IQM_CF_TAP_RE0__A, sizeof(qamB64_taps), ((pu8_t)qamB64_taps) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A, sizeof(qamB64_taps), ((pu8_t)qamB64_taps) ); - break; - case DRX_CONSTELLATION_QAM256: - WRB ( devAddr, IQM_CF_TAP_RE0__A, sizeof(qamB256_taps), ((pu8_t)qamB256_taps) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A, sizeof(qamB256_taps), ((pu8_t)qamB256_taps) ); - break; - default: - return (DRX_STS_ERROR); - } - } - else if ( extAttr->standard == DRX_STANDARD_ITU_C ) - { - WRB ( devAddr, IQM_CF_TAP_RE0__A, sizeof(qamC_taps), ((pu8_t)qamC_taps) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A, sizeof(qamC_taps), ((pu8_t)qamC_taps) ); - } - - /* SETP 4: constellation specific setup */ - switch ( channel->constellation ) { - case DRX_CONSTELLATION_QAM16: - CHK_ERROR(SetQAM16( demod )); - break; - case DRX_CONSTELLATION_QAM32: - CHK_ERROR(SetQAM32( demod )); - break; - case DRX_CONSTELLATION_QAM64: - CHK_ERROR(SetQAM64( demod )); - break; - case DRX_CONSTELLATION_QAM128: - CHK_ERROR(SetQAM128( demod )); - break; - case DRX_CONSTELLATION_QAM256: - CHK_ERROR(SetQAM256( demod )); - break; - default: - return (DRX_STS_ERROR); - } /* switch */ - } - - if ((op & QAM_SET_OP_ALL)) - { - WR16(devAddr, IQM_CF_SCALE_SH__A, 0 ); - - /* Mpeg output has to be in front of FEC active */ - CHK_ERROR ( SetMPEGTEIHandling( demod )); - CHK_ERROR ( BitReverseMPEGOutput( demod ) ); - CHK_ERROR ( SetMPEGStartWidth ( demod ) ); - { - /* TODO: move to setStandard after hardware reset value problem is solved */ - /* Configure initial MPEG output */ - DRXCfgMPEGOutput_t cfgMPEGOutput; - - cfgMPEGOutput.enableMPEGOutput = TRUE; - cfgMPEGOutput.insertRSByte = commonAttr->mpegCfg.insertRSByte; - cfgMPEGOutput.enableParallel = commonAttr->mpegCfg.enableParallel; - cfgMPEGOutput.invertDATA = commonAttr->mpegCfg.invertDATA; - cfgMPEGOutput.invertERR = commonAttr->mpegCfg.invertERR; - cfgMPEGOutput.invertSTR = commonAttr->mpegCfg.invertSTR; - cfgMPEGOutput.invertVAL = commonAttr->mpegCfg.invertVAL; - cfgMPEGOutput.invertCLK = commonAttr->mpegCfg.invertCLK; - cfgMPEGOutput.staticCLK = commonAttr->mpegCfg.staticCLK; - cfgMPEGOutput.bitrate = commonAttr->mpegCfg.bitrate; - CHK_ERROR( CtrlSetCfgMPEGOutput( demod, &cfgMPEGOutput) ); - } - } - - if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION )) - { + if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) { - /* STEP 5: start QAM demodulator (starts FEC, QAM and IQM HW) */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_START; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - } - - WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE ); - WR16(devAddr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_ACTIVE ); - WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE ); - - return (DRX_STS_OK); -rw_error: - return (DRX_STS_ERROR); -} + WR16(devAddr, QAM_LC_SYMBOL_FREQ__A, lcSymbolFreq); + WR16(devAddr, IQM_RC_STRETCH__A, iqmRcStretch); + } -/*============================================================================*/ -static DRXStatus_t -CtrlGetQAMSigQuality( pDRXDemodInstance_t demod, - pDRXSigQuality_t sigQuality ); -static DRXStatus_t -qamFlipSpec ( pDRXDemodInstance_t demod, - pDRXChannel_t channel) -{ - u32_t iqmFsRateOfs = 0; - u32_t iqmFsRateLo = 0; - u16_t qamCtlEna = 0; - u16_t data = 0; - u16_t equMode = 0; - u16_t fsmState = 0; - int i = 0; - int ofsofs = 0; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* Silence the controlling of lc, equ, and the acquisition state machine */ - RR16( devAddr, SCU_RAM_QAM_CTL_ENA__A, &qamCtlEna ); - WR16( devAddr, SCU_RAM_QAM_CTL_ENA__A, qamCtlEna - & ~ ( SCU_RAM_QAM_CTL_ENA_ACQ__M - | SCU_RAM_QAM_CTL_ENA_EQU__M - | SCU_RAM_QAM_CTL_ENA_LC__M) ); - - /* freeze the frequency control loop */ - WR16( devAddr, QAM_LC_CF__A, 0); - WR16( devAddr, QAM_LC_CF1__A, 0); - - ARR32( devAddr, IQM_FS_RATE_OFS_LO__A , &iqmFsRateOfs ); - ARR32( devAddr, IQM_FS_RATE_LO__A, &iqmFsRateLo ); - ofsofs = iqmFsRateLo - iqmFsRateOfs; - iqmFsRateOfs = ~iqmFsRateOfs + 1; - iqmFsRateOfs -= 2 * ofsofs; - - /* freeze dq/fq updating */ - RR16( devAddr, QAM_DQ_MODE__A, &data); - data = (data & 0xfff9); - WR16( devAddr, QAM_DQ_MODE__A, data ); - WR16( devAddr, QAM_FQ_MODE__A, data ); - - /* lc_cp / _ci / _ca */ - WR16( devAddr, QAM_LC_CI__A, 0 ); - WR16( devAddr, QAM_LC_EP__A, 0 ); - WR16( devAddr, QAM_FQ_LA_FACTOR__A, 0 ); - - /* flip the spec */ - WR32( devAddr, IQM_FS_RATE_OFS_LO__A , iqmFsRateOfs ); - extAttr->iqmFsRateOfs = iqmFsRateOfs; - extAttr->posImage = (extAttr->posImage)?FALSE:TRUE; - - /* freeze dq/fq updating */ - RR16( devAddr, QAM_DQ_MODE__A, &data); - equMode = data; - data = (data & 0xfff9); - WR16( devAddr, QAM_DQ_MODE__A, data ); - WR16( devAddr, QAM_FQ_MODE__A, data ); - - for ( i = 0; i < 28; i++) - { - RR16( devAddr, QAM_DQ_TAP_IM_EL0__A + (2 * i), &data); - WR16( devAddr, QAM_DQ_TAP_IM_EL0__A + (2 * i), -data); - } + if (op & QAM_SET_OP_ALL) { + if (extAttr->hasLNA == FALSE) { + WR16(devAddr, IQM_AF_AMUX__A, 0x02); + } + WR16(devAddr, IQM_CF_SYMMETRIC__A, 0); + WR16(devAddr, IQM_CF_MIDTAP__A, 3); + WR16(devAddr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_QAM__M); + + WR16(devAddr, SCU_RAM_QAM_WR_RSV_0__A, 0x5f); /* scu temporary shut down agc */ + + WR16(devAddr, IQM_AF_SYNC_SEL__A, 3); + WR16(devAddr, IQM_AF_CLP_LEN__A, 0); + WR16(devAddr, IQM_AF_CLP_TH__A, 448); + WR16(devAddr, IQM_AF_SNS_LEN__A, 0); + WR16(devAddr, IQM_AF_PDREF__A, 4); + WR16(devAddr, IQM_AF_STDBY__A, 0x10); + WR16(devAddr, IQM_AF_PGA_GAIN__A, 11); + + WR16(devAddr, IQM_CF_POW_MEAS_LEN__A, 1); + WR16(devAddr, IQM_CF_SCALE_SH__A, IQM_CF_SCALE_SH__PRE); /*! reset default val ! */ + + WR16(devAddr, QAM_SY_TIMEOUT__A, QAM_SY_TIMEOUT__PRE); /*! reset default val ! */ + if (extAttr->standard == DRX_STANDARD_ITU_B) { + WR16(devAddr, QAM_SY_SYNC_LWM__A, QAM_SY_SYNC_LWM__PRE); /*! reset default val ! */ + WR16(devAddr, QAM_SY_SYNC_AWM__A, QAM_SY_SYNC_AWM__PRE); /*! reset default val ! */ + WR16(devAddr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE); /*! reset default val ! */ + } else { + switch (channel->constellation) { + case DRX_CONSTELLATION_QAM16: + case DRX_CONSTELLATION_QAM64: + case DRX_CONSTELLATION_QAM256: + WR16(devAddr, QAM_SY_SYNC_LWM__A, 0x03); + WR16(devAddr, QAM_SY_SYNC_AWM__A, 0x04); + WR16(devAddr, QAM_SY_SYNC_HWM__A, QAM_SY_SYNC_HWM__PRE); /*! reset default val ! */ + break; + case DRX_CONSTELLATION_QAM32: + case DRX_CONSTELLATION_QAM128: + WR16(devAddr, QAM_SY_SYNC_LWM__A, 0x03); + WR16(devAddr, QAM_SY_SYNC_AWM__A, 0x05); + WR16(devAddr, QAM_SY_SYNC_HWM__A, 0x06); + break; + default: + return (DRX_STS_ERROR); + } /* switch */ + } + + WR16(devAddr, QAM_LC_MODE__A, QAM_LC_MODE__PRE); /*! reset default val ! */ + WR16(devAddr, QAM_LC_RATE_LIMIT__A, 3); + WR16(devAddr, QAM_LC_LPF_FACTORP__A, 4); + WR16(devAddr, QAM_LC_LPF_FACTORI__A, 4); + WR16(devAddr, QAM_LC_MODE__A, 7); + WR16(devAddr, QAM_LC_QUAL_TAB0__A, 1); + WR16(devAddr, QAM_LC_QUAL_TAB1__A, 1); + WR16(devAddr, QAM_LC_QUAL_TAB2__A, 1); + WR16(devAddr, QAM_LC_QUAL_TAB3__A, 1); + WR16(devAddr, QAM_LC_QUAL_TAB4__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB5__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB6__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB8__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB9__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB10__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB12__A, 2); + WR16(devAddr, QAM_LC_QUAL_TAB15__A, 3); + WR16(devAddr, QAM_LC_QUAL_TAB16__A, 3); + WR16(devAddr, QAM_LC_QUAL_TAB20__A, 4); + WR16(devAddr, QAM_LC_QUAL_TAB25__A, 4); + + WR16(devAddr, IQM_FS_ADJ_SEL__A, 1); + WR16(devAddr, IQM_RC_ADJ_SEL__A, 1); + WR16(devAddr, IQM_CF_ADJ_SEL__A, 1); + WR16(devAddr, IQM_CF_POW_MEAS_LEN__A, 0); + WR16(devAddr, SCU_RAM_GPIO__A, 0); + + /* No more resets of the IQM, current standard correctly set => + now AGCs can be configured. */ + /* turn on IQMAF. It has to be in front of setAgc**() */ + CHK_ERROR(SetIqmAf(demod, TRUE)); + CHK_ERROR(ADCSynchronization(demod)); + + CHK_ERROR(InitAGC(demod)); + CHK_ERROR(SetAgcIf(demod, &(extAttr->qamIfAgcCfg), FALSE)); + CHK_ERROR(SetAgcRf(demod, &(extAttr->qamRfAgcCfg), FALSE)); + { + /* TODO fix this, store a DRXJCfgAfeGain_t structure in DRXJData_t instead + of only the gain */ + DRXJCfgAfeGain_t qamPgaCfg = { DRX_STANDARD_ITU_B, 0 }; + + qamPgaCfg.gain = extAttr->qamPgaCfg; + CHK_ERROR(CtrlSetCfgAfeGain(demod, &qamPgaCfg)); + } + CHK_ERROR(CtrlSetCfgPreSaw(demod, &(extAttr->qamPreSawCfg))); + } - for ( i = 0; i < 24; i++) - { - RR16( devAddr, QAM_FQ_TAP_IM_EL0__A + (2 * i), &data); - WR16( devAddr, QAM_FQ_TAP_IM_EL0__A + (2 * i), -data); - } + if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) { + if (extAttr->standard == DRX_STANDARD_ITU_A) { + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(qamA_taps), + ((pu8_t) qamA_taps)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(qamA_taps), + ((pu8_t) qamA_taps)); + } else if (extAttr->standard == DRX_STANDARD_ITU_B) { + switch (channel->constellation) { + case DRX_CONSTELLATION_QAM64: + WRB(devAddr, IQM_CF_TAP_RE0__A, + sizeof(qamB64_taps), ((pu8_t) qamB64_taps)); + WRB(devAddr, IQM_CF_TAP_IM0__A, + sizeof(qamB64_taps), ((pu8_t) qamB64_taps)); + break; + case DRX_CONSTELLATION_QAM256: + WRB(devAddr, IQM_CF_TAP_RE0__A, + sizeof(qamB256_taps), + ((pu8_t) qamB256_taps)); + WRB(devAddr, IQM_CF_TAP_IM0__A, + sizeof(qamB256_taps), + ((pu8_t) qamB256_taps)); + break; + default: + return (DRX_STS_ERROR); + } + } else if (extAttr->standard == DRX_STANDARD_ITU_C) { + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(qamC_taps), + ((pu8_t) qamC_taps)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(qamC_taps), + ((pu8_t) qamC_taps)); + } + + /* SETP 4: constellation specific setup */ + switch (channel->constellation) { + case DRX_CONSTELLATION_QAM16: + CHK_ERROR(SetQAM16(demod)); + break; + case DRX_CONSTELLATION_QAM32: + CHK_ERROR(SetQAM32(demod)); + break; + case DRX_CONSTELLATION_QAM64: + CHK_ERROR(SetQAM64(demod)); + break; + case DRX_CONSTELLATION_QAM128: + CHK_ERROR(SetQAM128(demod)); + break; + case DRX_CONSTELLATION_QAM256: + CHK_ERROR(SetQAM256(demod)); + break; + default: + return (DRX_STS_ERROR); + } /* switch */ + } - data = equMode; - WR16( devAddr, QAM_DQ_MODE__A, data ); - WR16( devAddr, QAM_FQ_MODE__A, data ); + if ((op & QAM_SET_OP_ALL)) { + WR16(devAddr, IQM_CF_SCALE_SH__A, 0); + + /* Mpeg output has to be in front of FEC active */ + CHK_ERROR(SetMPEGTEIHandling(demod)); + CHK_ERROR(BitReverseMPEGOutput(demod)); + CHK_ERROR(SetMPEGStartWidth(demod)); + { + /* TODO: move to setStandard after hardware reset value problem is solved */ + /* Configure initial MPEG output */ + DRXCfgMPEGOutput_t cfgMPEGOutput; + + cfgMPEGOutput.enableMPEGOutput = TRUE; + cfgMPEGOutput.insertRSByte = + commonAttr->mpegCfg.insertRSByte; + cfgMPEGOutput.enableParallel = + commonAttr->mpegCfg.enableParallel; + cfgMPEGOutput.invertDATA = + commonAttr->mpegCfg.invertDATA; + cfgMPEGOutput.invertERR = commonAttr->mpegCfg.invertERR; + cfgMPEGOutput.invertSTR = commonAttr->mpegCfg.invertSTR; + cfgMPEGOutput.invertVAL = commonAttr->mpegCfg.invertVAL; + cfgMPEGOutput.invertCLK = commonAttr->mpegCfg.invertCLK; + cfgMPEGOutput.staticCLK = commonAttr->mpegCfg.staticCLK; + cfgMPEGOutput.bitrate = commonAttr->mpegCfg.bitrate; + CHK_ERROR(CtrlSetCfgMPEGOutput(demod, &cfgMPEGOutput)); + } + } - WR16( devAddr, SCU_RAM_QAM_FSM_STATE_TGT__A, 4 ); + if ((op & QAM_SET_OP_ALL) || (op & QAM_SET_OP_CONSTELLATION)) { - i = 0; - while ( (fsmState != 4) && (i++ < 100) ) - { - RR16( devAddr, SCU_RAM_QAM_FSM_STATE__A, &fsmState ); - } - WR16( devAddr, SCU_RAM_QAM_CTL_ENA__A, (qamCtlEna | 0x0016) ); + /* STEP 5: start QAM demodulator (starts FEC, QAM and IQM HW) */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_START; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + } + + WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE); + WR16(devAddr, QAM_COMM_EXEC__A, QAM_COMM_EXEC_ACTIVE); + WR16(devAddr, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE); + + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); +} + +/*============================================================================*/ +static DRXStatus_t +CtrlGetQAMSigQuality(pDRXDemodInstance_t demod, pDRXSigQuality_t sigQuality); +static DRXStatus_t qamFlipSpec(pDRXDemodInstance_t demod, pDRXChannel_t channel) +{ + u32_t iqmFsRateOfs = 0; + u32_t iqmFsRateLo = 0; + u16_t qamCtlEna = 0; + u16_t data = 0; + u16_t equMode = 0; + u16_t fsmState = 0; + int i = 0; + int ofsofs = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* Silence the controlling of lc, equ, and the acquisition state machine */ + RR16(devAddr, SCU_RAM_QAM_CTL_ENA__A, &qamCtlEna); + WR16(devAddr, SCU_RAM_QAM_CTL_ENA__A, qamCtlEna + & ~(SCU_RAM_QAM_CTL_ENA_ACQ__M + | SCU_RAM_QAM_CTL_ENA_EQU__M | SCU_RAM_QAM_CTL_ENA_LC__M)); + + /* freeze the frequency control loop */ + WR16(devAddr, QAM_LC_CF__A, 0); + WR16(devAddr, QAM_LC_CF1__A, 0); + + ARR32(devAddr, IQM_FS_RATE_OFS_LO__A, &iqmFsRateOfs); + ARR32(devAddr, IQM_FS_RATE_LO__A, &iqmFsRateLo); + ofsofs = iqmFsRateLo - iqmFsRateOfs; + iqmFsRateOfs = ~iqmFsRateOfs + 1; + iqmFsRateOfs -= 2 * ofsofs; + + /* freeze dq/fq updating */ + RR16(devAddr, QAM_DQ_MODE__A, &data); + data = (data & 0xfff9); + WR16(devAddr, QAM_DQ_MODE__A, data); + WR16(devAddr, QAM_FQ_MODE__A, data); + + /* lc_cp / _ci / _ca */ + WR16(devAddr, QAM_LC_CI__A, 0); + WR16(devAddr, QAM_LC_EP__A, 0); + WR16(devAddr, QAM_FQ_LA_FACTOR__A, 0); + + /* flip the spec */ + WR32(devAddr, IQM_FS_RATE_OFS_LO__A, iqmFsRateOfs); + extAttr->iqmFsRateOfs = iqmFsRateOfs; + extAttr->posImage = (extAttr->posImage) ? FALSE : TRUE; + + /* freeze dq/fq updating */ + RR16(devAddr, QAM_DQ_MODE__A, &data); + equMode = data; + data = (data & 0xfff9); + WR16(devAddr, QAM_DQ_MODE__A, data); + WR16(devAddr, QAM_FQ_MODE__A, data); + + for (i = 0; i < 28; i++) { + RR16(devAddr, QAM_DQ_TAP_IM_EL0__A + (2 * i), &data); + WR16(devAddr, QAM_DQ_TAP_IM_EL0__A + (2 * i), -data); + } + + for (i = 0; i < 24; i++) { + RR16(devAddr, QAM_FQ_TAP_IM_EL0__A + (2 * i), &data); + WR16(devAddr, QAM_FQ_TAP_IM_EL0__A + (2 * i), -data); + } - return (DRX_STS_OK); + data = equMode; + WR16(devAddr, QAM_DQ_MODE__A, data); + WR16(devAddr, QAM_FQ_MODE__A, data); + + WR16(devAddr, SCU_RAM_QAM_FSM_STATE_TGT__A, 4); + + i = 0; + while ((fsmState != 4) && (i++ < 100)) { + RR16(devAddr, SCU_RAM_QAM_FSM_STATE__A, &fsmState); + } + WR16(devAddr, SCU_RAM_QAM_CTL_ENA__A, (qamCtlEna | 0x0016)); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } @@ -7823,104 +7509,108 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -QAM64Auto( pDRXDemodInstance_t demod, - pDRXChannel_t channel, - DRXFrequency_t tunerFreqOffset, - pDRXLockStatus_t lockStatus - ) -{ - DRXSigQuality_t sigQuality; - u16_t data = 0; - u32_t state = NO_LOCK; - u32_t startTime = 0; - u32_t dLockedTime= 0; - pDRXJData_t extAttr = NULL; - u32_t timeoutOfs = 0; - - /* external attributes for storing aquired channel constellation */ - extAttr = (pDRXJData_t)demod -> myExtAttr; - *lockStatus = DRX_NOT_LOCKED; - startTime = DRXBSP_HST_Clock(); - state = NO_LOCK; - do - { - CHK_ERROR( CtrlLockStatus(demod, lockStatus) ); - - switch (state) - { - case NO_LOCK: - if ( *lockStatus == DRXJ_DEMOD_LOCK ) - { - CHK_ERROR ( CtrlGetQAMSigQuality ( demod, &sigQuality ) ); - if (sigQuality.MER > 208) - { - state = DEMOD_LOCKED; - /* some delay to see if fec_lock possible TODO find the right value */ - timeoutOfs += DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME; /* see something, waiting longer */ - dLockedTime = DRXBSP_HST_Clock(); - } - } - break; - case DEMOD_LOCKED: - if ((*lockStatus == DRXJ_DEMOD_LOCK) && /* still demod_lock in 150ms*/ - ((DRXBSP_HST_Clock() - dLockedTime) > DRXJ_QAM_FEC_LOCK_WAITTIME)) - { - RR16( demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, &data ); - WR16( demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, data | 0x1 ); - state = SYNC_FLIPPED; - DRXBSP_HST_Sleep(10); - } - break; - case SYNC_FLIPPED: - if (*lockStatus == DRXJ_DEMOD_LOCK) - { - if (channel->mirror == DRX_MIRROR_AUTO) - { - /* flip sync pattern back */ - RR16( demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, &data ); - WR16( demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, data & 0xFFFE ); - /* flip spectrum */ - extAttr->mirror = DRX_MIRROR_YES; - CHK_ERROR ( qamFlipSpec ( demod, channel ) ); - state = SPEC_MIRRORED; - /* reset timer TODO: still need 500ms? */ - startTime = dLockedTime = DRXBSP_HST_Clock(); - timeoutOfs = 0; - } - else /* no need to wait lock */ - { - startTime = DRXBSP_HST_Clock() - DRXJ_QAM_MAX_WAITTIME - timeoutOfs; - } - } - break; - case SPEC_MIRRORED: - if ((*lockStatus == DRXJ_DEMOD_LOCK) && /* still demod_lock in 150ms*/ - ((DRXBSP_HST_Clock() - dLockedTime) > DRXJ_QAM_FEC_LOCK_WAITTIME)) - { - CHK_ERROR ( CtrlGetQAMSigQuality ( demod, &sigQuality ) ); - if (sigQuality.MER > 208) - { - RR16( demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, &data ); - WR16( demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, data | 0x1 ); - /* no need to wait lock */ - startTime = DRXBSP_HST_Clock() - DRXJ_QAM_MAX_WAITTIME - timeoutOfs; - } - } - break; - default: - break; - } - DRXBSP_HST_Sleep(10); - } while - ( ( *lockStatus != DRX_LOCKED ) && - ( *lockStatus != DRX_NEVER_LOCK ) && - ( (DRXBSP_HST_Clock() - startTime) < (DRXJ_QAM_MAX_WAITTIME + timeoutOfs)) - ); - /* Returning control to apllication ... */ - - return (DRX_STS_OK); +QAM64Auto(pDRXDemodInstance_t demod, + pDRXChannel_t channel, + DRXFrequency_t tunerFreqOffset, pDRXLockStatus_t lockStatus) +{ + DRXSigQuality_t sigQuality; + u16_t data = 0; + u32_t state = NO_LOCK; + u32_t startTime = 0; + u32_t dLockedTime = 0; + pDRXJData_t extAttr = NULL; + u32_t timeoutOfs = 0; + + /* external attributes for storing aquired channel constellation */ + extAttr = (pDRXJData_t) demod->myExtAttr; + *lockStatus = DRX_NOT_LOCKED; + startTime = DRXBSP_HST_Clock(); + state = NO_LOCK; + do { + CHK_ERROR(CtrlLockStatus(demod, lockStatus)); + + switch (state) { + case NO_LOCK: + if (*lockStatus == DRXJ_DEMOD_LOCK) { + CHK_ERROR(CtrlGetQAMSigQuality + (demod, &sigQuality)); + if (sigQuality.MER > 208) { + state = DEMOD_LOCKED; + /* some delay to see if fec_lock possible TODO find the right value */ + timeoutOfs += DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME; /* see something, waiting longer */ + dLockedTime = DRXBSP_HST_Clock(); + } + } + break; + case DEMOD_LOCKED: + if ((*lockStatus == DRXJ_DEMOD_LOCK) && /* still demod_lock in 150ms */ + ((DRXBSP_HST_Clock() - dLockedTime) > + DRXJ_QAM_FEC_LOCK_WAITTIME)) { + RR16(demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, + &data); + WR16(demod->myI2CDevAddr, QAM_SY_TIMEOUT__A, + data | 0x1); + state = SYNC_FLIPPED; + DRXBSP_HST_Sleep(10); + } + break; + case SYNC_FLIPPED: + if (*lockStatus == DRXJ_DEMOD_LOCK) { + if (channel->mirror == DRX_MIRROR_AUTO) { + /* flip sync pattern back */ + RR16(demod->myI2CDevAddr, + QAM_SY_TIMEOUT__A, &data); + WR16(demod->myI2CDevAddr, + QAM_SY_TIMEOUT__A, data & 0xFFFE); + /* flip spectrum */ + extAttr->mirror = DRX_MIRROR_YES; + CHK_ERROR(qamFlipSpec(demod, channel)); + state = SPEC_MIRRORED; + /* reset timer TODO: still need 500ms? */ + startTime = dLockedTime = + DRXBSP_HST_Clock(); + timeoutOfs = 0; + } else { /* no need to wait lock */ + + startTime = + DRXBSP_HST_Clock() - + DRXJ_QAM_MAX_WAITTIME - timeoutOfs; + } + } + break; + case SPEC_MIRRORED: + if ((*lockStatus == DRXJ_DEMOD_LOCK) && /* still demod_lock in 150ms */ + ((DRXBSP_HST_Clock() - dLockedTime) > + DRXJ_QAM_FEC_LOCK_WAITTIME)) { + CHK_ERROR(CtrlGetQAMSigQuality + (demod, &sigQuality)); + if (sigQuality.MER > 208) { + RR16(demod->myI2CDevAddr, + QAM_SY_TIMEOUT__A, &data); + WR16(demod->myI2CDevAddr, + QAM_SY_TIMEOUT__A, data | 0x1); + /* no need to wait lock */ + startTime = + DRXBSP_HST_Clock() - + DRXJ_QAM_MAX_WAITTIME - timeoutOfs; + } + } + break; + default: + break; + } + DRXBSP_HST_Sleep(10); + } while + ((*lockStatus != DRX_LOCKED) && + (*lockStatus != DRX_NEVER_LOCK) && + ((DRXBSP_HST_Clock() - startTime) < + (DRXJ_QAM_MAX_WAITTIME + timeoutOfs)) + ); + /* Returning control to apllication ... */ + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -7933,70 +7623,65 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -QAM256Auto( pDRXDemodInstance_t demod, - pDRXChannel_t channel, - DRXFrequency_t tunerFreqOffset, - pDRXLockStatus_t lockStatus - ) -{ - DRXSigQuality_t sigQuality; - u32_t state = NO_LOCK; - u32_t startTime = 0; - u32_t dLockedTime= 0; - pDRXJData_t extAttr = NULL; - u32_t timeoutOfs = DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME; - - /* external attributes for storing aquired channel constellation */ - extAttr = (pDRXJData_t)demod -> myExtAttr; - *lockStatus = DRX_NOT_LOCKED; - startTime = DRXBSP_HST_Clock(); - state = NO_LOCK; - do - { - CHK_ERROR( CtrlLockStatus( demod, lockStatus) ); - switch (state) - { - case NO_LOCK: - if ( *lockStatus == DRXJ_DEMOD_LOCK ) - { - CHK_ERROR ( CtrlGetQAMSigQuality ( demod, &sigQuality ) ); - if (sigQuality.MER > 268) - { - state = DEMOD_LOCKED; - timeoutOfs += DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME; /* see something, wait longer */ - dLockedTime = DRXBSP_HST_Clock(); - } - } - break; - case DEMOD_LOCKED: - if ( *lockStatus == DRXJ_DEMOD_LOCK ) - { - if ((channel->mirror == DRX_MIRROR_AUTO) && - ((DRXBSP_HST_Clock() - dLockedTime) > DRXJ_QAM_FEC_LOCK_WAITTIME)) - { - extAttr->mirror = DRX_MIRROR_YES; - CHK_ERROR ( qamFlipSpec ( demod, channel ) ); - state = SPEC_MIRRORED; - /* reset timer TODO: still need 300ms? */ - startTime = DRXBSP_HST_Clock(); - timeoutOfs = - DRXJ_QAM_MAX_WAITTIME / 2; - } - } - break; - case SPEC_MIRRORED: - break; - default: - break; - } - DRXBSP_HST_Sleep(10); - } while - ( ( *lockStatus < DRX_LOCKED ) && - ( *lockStatus != DRX_NEVER_LOCK ) && - ( (DRXBSP_HST_Clock() - startTime) < (DRXJ_QAM_MAX_WAITTIME + timeoutOfs)) ); - - return (DRX_STS_OK); +QAM256Auto(pDRXDemodInstance_t demod, + pDRXChannel_t channel, + DRXFrequency_t tunerFreqOffset, pDRXLockStatus_t lockStatus) +{ + DRXSigQuality_t sigQuality; + u32_t state = NO_LOCK; + u32_t startTime = 0; + u32_t dLockedTime = 0; + pDRXJData_t extAttr = NULL; + u32_t timeoutOfs = DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME; + + /* external attributes for storing aquired channel constellation */ + extAttr = (pDRXJData_t) demod->myExtAttr; + *lockStatus = DRX_NOT_LOCKED; + startTime = DRXBSP_HST_Clock(); + state = NO_LOCK; + do { + CHK_ERROR(CtrlLockStatus(demod, lockStatus)); + switch (state) { + case NO_LOCK: + if (*lockStatus == DRXJ_DEMOD_LOCK) { + CHK_ERROR(CtrlGetQAMSigQuality + (demod, &sigQuality)); + if (sigQuality.MER > 268) { + state = DEMOD_LOCKED; + timeoutOfs += DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME; /* see something, wait longer */ + dLockedTime = DRXBSP_HST_Clock(); + } + } + break; + case DEMOD_LOCKED: + if (*lockStatus == DRXJ_DEMOD_LOCK) { + if ((channel->mirror == DRX_MIRROR_AUTO) && + ((DRXBSP_HST_Clock() - dLockedTime) > + DRXJ_QAM_FEC_LOCK_WAITTIME)) { + extAttr->mirror = DRX_MIRROR_YES; + CHK_ERROR(qamFlipSpec(demod, channel)); + state = SPEC_MIRRORED; + /* reset timer TODO: still need 300ms? */ + startTime = DRXBSP_HST_Clock(); + timeoutOfs = -DRXJ_QAM_MAX_WAITTIME / 2; + } + } + break; + case SPEC_MIRRORED: + break; + default: + break; + } + DRXBSP_HST_Sleep(10); + } while + ((*lockStatus < DRX_LOCKED) && + (*lockStatus != DRX_NEVER_LOCK) && + ((DRXBSP_HST_Clock() - startTime) < + (DRXJ_QAM_MAX_WAITTIME + timeoutOfs))); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -8007,135 +7692,143 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -SetQAMChannel( pDRXDemodInstance_t demod, - pDRXChannel_t channel, - DRXFrequency_t tunerFreqOffset - ) -{ - DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; - pDRXJData_t extAttr = NULL; - Bool_t autoFlag = FALSE; - - /* external attributes for storing aquired channel constellation */ - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* set QAM channel constellation */ - switch ( channel->constellation ) { - case DRX_CONSTELLATION_QAM16 : - case DRX_CONSTELLATION_QAM32 : - case DRX_CONSTELLATION_QAM64 : - case DRX_CONSTELLATION_QAM128 : - case DRX_CONSTELLATION_QAM256 : - extAttr->constellation = channel->constellation; - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } - CHK_ERROR ( SetQAM( demod, channel, tunerFreqOffset, QAM_SET_OP_ALL) ); - - if ( (extAttr->standard == DRX_STANDARD_ITU_B) && - (channel->constellation == DRX_CONSTELLATION_QAM64) ) - { - CHK_ERROR ( QAM64Auto( demod, channel, tunerFreqOffset, &lockStatus)); - } +SetQAMChannel(pDRXDemodInstance_t demod, + pDRXChannel_t channel, DRXFrequency_t tunerFreqOffset) +{ + DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; + pDRXJData_t extAttr = NULL; + Bool_t autoFlag = FALSE; + + /* external attributes for storing aquired channel constellation */ + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* set QAM channel constellation */ + switch (channel->constellation) { + case DRX_CONSTELLATION_QAM16: + case DRX_CONSTELLATION_QAM32: + case DRX_CONSTELLATION_QAM64: + case DRX_CONSTELLATION_QAM128: + case DRX_CONSTELLATION_QAM256: + extAttr->constellation = channel->constellation; + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } + CHK_ERROR(SetQAM + (demod, channel, tunerFreqOffset, QAM_SET_OP_ALL)); + + if ((extAttr->standard == DRX_STANDARD_ITU_B) && + (channel->constellation == DRX_CONSTELLATION_QAM64)) { + CHK_ERROR(QAM64Auto + (demod, channel, tunerFreqOffset, + &lockStatus)); + } + + if ((extAttr->standard == DRX_STANDARD_ITU_B) && + (channel->mirror == DRX_MIRROR_AUTO) && + (channel->constellation == DRX_CONSTELLATION_QAM256)) { + CHK_ERROR(QAM256Auto + (demod, channel, tunerFreqOffset, + &lockStatus)); + } + break; + case DRX_CONSTELLATION_AUTO: /* for channel scan */ + if (extAttr->standard == DRX_STANDARD_ITU_B) { + autoFlag = TRUE; + /* try to lock default QAM constellation: QAM64 */ + channel->constellation = DRX_CONSTELLATION_QAM256; + extAttr->constellation = DRX_CONSTELLATION_QAM256; + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } + CHK_ERROR(SetQAM + (demod, channel, tunerFreqOffset, + QAM_SET_OP_ALL)); + CHK_ERROR(QAM256Auto + (demod, channel, tunerFreqOffset, + &lockStatus)); + + if (lockStatus < DRX_LOCKED) { + /* QAM254 not locked -> try to lock QAM64 constellation */ + channel->constellation = + DRX_CONSTELLATION_QAM64; + extAttr->constellation = + DRX_CONSTELLATION_QAM64; + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } + { + u16_t qamCtlEna = 0; + RR16(demod->myI2CDevAddr, + SCU_RAM_QAM_CTL_ENA__A, + &qamCtlEna); + WR16(demod->myI2CDevAddr, + SCU_RAM_QAM_CTL_ENA__A, + qamCtlEna & + ~SCU_RAM_QAM_CTL_ENA_ACQ__M); + WR16(demod->myI2CDevAddr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2); /* force to rate hunting */ + + CHK_ERROR(SetQAM + (demod, channel, + tunerFreqOffset, + QAM_SET_OP_CONSTELLATION)); + WR16(demod->myI2CDevAddr, + SCU_RAM_QAM_CTL_ENA__A, qamCtlEna); + } + CHK_ERROR(QAM64Auto + (demod, channel, tunerFreqOffset, + &lockStatus)); + } + channel->constellation = DRX_CONSTELLATION_AUTO; + } else if (extAttr->standard == DRX_STANDARD_ITU_C) { + channel->constellation = DRX_CONSTELLATION_QAM64; + extAttr->constellation = DRX_CONSTELLATION_QAM64; + autoFlag = TRUE; + + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } + { + u16_t qamCtlEna = 0; + RR16(demod->myI2CDevAddr, + SCU_RAM_QAM_CTL_ENA__A, &qamCtlEna); + WR16(demod->myI2CDevAddr, + SCU_RAM_QAM_CTL_ENA__A, + qamCtlEna & ~SCU_RAM_QAM_CTL_ENA_ACQ__M); + WR16(demod->myI2CDevAddr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2); /* force to rate hunting */ + + CHK_ERROR(SetQAM + (demod, channel, tunerFreqOffset, + QAM_SET_OP_CONSTELLATION)); + WR16(demod->myI2CDevAddr, + SCU_RAM_QAM_CTL_ENA__A, qamCtlEna); + } + CHK_ERROR(QAM64Auto + (demod, channel, tunerFreqOffset, + &lockStatus)); + channel->constellation = DRX_CONSTELLATION_AUTO; + } else { + channel->constellation = DRX_CONSTELLATION_AUTO; + return (DRX_STS_INVALID_ARG); + } + break; + default: + return (DRX_STS_INVALID_ARG); + } - if ( (extAttr->standard == DRX_STANDARD_ITU_B) && - (channel->mirror == DRX_MIRROR_AUTO) && - (channel->constellation == DRX_CONSTELLATION_QAM256) ) - { - CHK_ERROR ( QAM256Auto( demod, channel, tunerFreqOffset, &lockStatus)); - } - break; - case DRX_CONSTELLATION_AUTO: /* for channel scan */ - if ( extAttr->standard == DRX_STANDARD_ITU_B ) - { - autoFlag = TRUE; - /* try to lock default QAM constellation: QAM64 */ - channel->constellation = DRX_CONSTELLATION_QAM256; - extAttr->constellation = DRX_CONSTELLATION_QAM256; - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } - CHK_ERROR ( SetQAM( demod, channel, tunerFreqOffset, QAM_SET_OP_ALL ) ); - CHK_ERROR ( QAM256Auto( demod, channel, tunerFreqOffset, &lockStatus )); - - if ( lockStatus < DRX_LOCKED ) - { - /* QAM254 not locked -> try to lock QAM64 constellation */ - channel->constellation = DRX_CONSTELLATION_QAM64; - extAttr->constellation = DRX_CONSTELLATION_QAM64; - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } - { - u16_t qamCtlEna = 0; - RR16( demod->myI2CDevAddr, SCU_RAM_QAM_CTL_ENA__A, &qamCtlEna ); - WR16( demod->myI2CDevAddr, SCU_RAM_QAM_CTL_ENA__A, qamCtlEna & ~SCU_RAM_QAM_CTL_ENA_ACQ__M ); - WR16( demod->myI2CDevAddr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2 ); /* force to rate hunting */ - - CHK_ERROR ( SetQAM( demod, channel, tunerFreqOffset, QAM_SET_OP_CONSTELLATION) ); - WR16( demod->myI2CDevAddr, SCU_RAM_QAM_CTL_ENA__A, qamCtlEna ); - } - CHK_ERROR ( QAM64Auto( demod, channel, tunerFreqOffset, &lockStatus )); - } - channel->constellation = DRX_CONSTELLATION_AUTO; - } - else if ( extAttr->standard == DRX_STANDARD_ITU_C ) - { - channel->constellation = DRX_CONSTELLATION_QAM64; - extAttr->constellation = DRX_CONSTELLATION_QAM64; - autoFlag = TRUE; - - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } - { - u16_t qamCtlEna = 0; - RR16( demod->myI2CDevAddr, SCU_RAM_QAM_CTL_ENA__A, &qamCtlEna ); - WR16( demod->myI2CDevAddr, SCU_RAM_QAM_CTL_ENA__A, qamCtlEna & ~SCU_RAM_QAM_CTL_ENA_ACQ__M ); - WR16( demod->myI2CDevAddr, SCU_RAM_QAM_FSM_STATE_TGT__A, 0x2 ); /* force to rate hunting */ - - CHK_ERROR ( SetQAM( demod, channel, tunerFreqOffset, QAM_SET_OP_CONSTELLATION) ); - WR16( demod->myI2CDevAddr, SCU_RAM_QAM_CTL_ENA__A, qamCtlEna ); - } - CHK_ERROR ( QAM64Auto( demod, channel, tunerFreqOffset, &lockStatus )); - channel->constellation = DRX_CONSTELLATION_AUTO; - } - else - { - channel->constellation = DRX_CONSTELLATION_AUTO; - return (DRX_STS_INVALID_ARG); - } - break; - default: - return (DRX_STS_INVALID_ARG); - } - - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - /* restore starting value */ - if (autoFlag) - channel->constellation = DRX_CONSTELLATION_AUTO; - return (DRX_STS_ERROR); + /* restore starting value */ + if (autoFlag) + channel->constellation = DRX_CONSTELLATION_AUTO; + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -8149,45 +7842,43 @@ rw_error: * */ static DRXStatus_t -GetQAMRSErrCount(pI2CDeviceAddr_t devAddr, pDRXJRSErrors_t RSErrors) +GetQAMRSErrCount(pI2CDeviceAddr_t devAddr, pDRXJRSErrors_t RSErrors) { - u16_t nrBitErrors = 0, - nrSymbolErrors = 0, - nrPacketErrors = 0, - nrFailures = 0, - nrSncParFailCount = 0; - - /* check arguments */ - if ( devAddr == NULL ) - { - return (DRX_STS_INVALID_ARG); - } - - /* all reported errors are received in the */ - /* most recently finished measurment period */ - /* no of pre RS bit errors */ - RR16( devAddr, FEC_RS_NR_BIT_ERRORS__A, &nrBitErrors ); - /* no of symbol errors */ - RR16( devAddr, FEC_RS_NR_SYMBOL_ERRORS__A, &nrSymbolErrors ); - /* no of packet errors */ - RR16( devAddr, FEC_RS_NR_PACKET_ERRORS__A, &nrPacketErrors ); - /* no of failures to decode */ - RR16( devAddr, FEC_RS_NR_FAILURES__A, &nrFailures ); - /* no of post RS bit erros */ - RR16( devAddr, FEC_OC_SNC_FAIL_COUNT__A, &nrSncParFailCount ); - /* TODO: NOTE */ - /* These register values are fetched in non-atomic fashion */ - /* It is possible that the read values contain unrelated information */ - - RSErrors->nrBitErrors = nrBitErrors & FEC_RS_NR_BIT_ERRORS__M; - RSErrors->nrSymbolErrors = nrSymbolErrors & FEC_RS_NR_SYMBOL_ERRORS__M; - RSErrors->nrPacketErrors = nrPacketErrors & FEC_RS_NR_PACKET_ERRORS__M; - RSErrors->nrFailures = nrFailures & FEC_RS_NR_FAILURES__M; - RSErrors->nrSncParFailCount = nrSncParFailCount & FEC_OC_SNC_FAIL_COUNT__M; - - return (DRX_STS_OK); + u16_t nrBitErrors = 0, + nrSymbolErrors = 0, + nrPacketErrors = 0, nrFailures = 0, nrSncParFailCount = 0; + + /* check arguments */ + if (devAddr == NULL) { + return (DRX_STS_INVALID_ARG); + } + + /* all reported errors are received in the */ + /* most recently finished measurment period */ + /* no of pre RS bit errors */ + RR16(devAddr, FEC_RS_NR_BIT_ERRORS__A, &nrBitErrors); + /* no of symbol errors */ + RR16(devAddr, FEC_RS_NR_SYMBOL_ERRORS__A, &nrSymbolErrors); + /* no of packet errors */ + RR16(devAddr, FEC_RS_NR_PACKET_ERRORS__A, &nrPacketErrors); + /* no of failures to decode */ + RR16(devAddr, FEC_RS_NR_FAILURES__A, &nrFailures); + /* no of post RS bit erros */ + RR16(devAddr, FEC_OC_SNC_FAIL_COUNT__A, &nrSncParFailCount); + /* TODO: NOTE */ + /* These register values are fetched in non-atomic fashion */ + /* It is possible that the read values contain unrelated information */ + + RSErrors->nrBitErrors = nrBitErrors & FEC_RS_NR_BIT_ERRORS__M; + RSErrors->nrSymbolErrors = nrSymbolErrors & FEC_RS_NR_SYMBOL_ERRORS__M; + RSErrors->nrPacketErrors = nrPacketErrors & FEC_RS_NR_PACKET_ERRORS__M; + RSErrors->nrFailures = nrFailures & FEC_RS_NR_FAILURES__M; + RSErrors->nrSncParFailCount = + nrSncParFailCount & FEC_OC_SNC_FAIL_COUNT__M; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -8205,185 +7896,177 @@ rw_error: * Pre-condition: Device must be started and in lock. */ static DRXStatus_t -CtrlGetQAMSigQuality( pDRXDemodInstance_t demod, - pDRXSigQuality_t sigQuality ) -{ - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXConstellation_t constellation = DRX_CONSTELLATION_UNKNOWN; - DRXJRSErrors_t measuredRSErrors = { 0, 0, 0, 0, 0 }; - - u32_t preBitErrRS = 0; /* pre RedSolomon Bit Error Rate */ - u32_t postBitErrRS = 0; /* post RedSolomon Bit Error Rate */ - u32_t pktErrs = 0; /* no of packet errors in RS */ - u16_t qamSlErrPower = 0; /* accumulated error between raw and sliced symbols */ - u16_t qsymErrVD = 0; /* quadrature symbol errors in QAM_VD */ - u16_t fecOcPeriod = 0; /* SNC sync failure measurement period */ - u16_t fecRsPrescale = 0; /* ReedSolomon Measurement Prescale */ - u16_t fecRsPeriod = 0; /* Value for corresponding I2C register */ - /* calculation constants */ - u32_t rsBitCnt = 0; /* RedSolomon Bit Count */ - u32_t qamSlSigPower = 0; /* used for MER, depends of QAM constellation */ - /* intermediate results */ - u32_t e = 0; /* exponent value used for QAM BER/SER */ - u32_t m = 0; /* mantisa value used for QAM BER/SER */ - u32_t berCnt = 0; /* BER count */ - /* signal quality info */ - u32_t qamSlMer = 0; /* QAM MER */ - u32_t qamPreRSBer = 0; /* Pre RedSolomon BER */ - u32_t qamPostRSBer = 0; /* Post RedSolomon BER */ - u32_t qamVDSer = 0; /* ViterbiDecoder SER */ - u16_t qamVdPrescale = 0; /* Viterbi Measurement Prescale */ - u16_t qamVdPeriod = 0; /* Viterbi Measurement period */ - u32_t vdBitCnt = 0; /* ViterbiDecoder Bit Count */ - - /* get device basic information */ - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - constellation = extAttr->constellation; - - /* read the physical registers */ - /* Get the RS error data */ - CHK_ERROR ( GetQAMRSErrCount ( devAddr, &measuredRSErrors ) ); - /* get the register value needed for MER */ - RR16( devAddr, QAM_SL_ERR_POWER__A, &qamSlErrPower ); - /* get the register value needed for post RS BER */ - RR16 ( devAddr, FEC_OC_SNC_FAIL_PERIOD__A, &fecOcPeriod ); - - /* get constants needed for signal quality calculation */ - fecRsPeriod = extAttr->fecRsPeriod; - fecRsPrescale = extAttr->fecRsPrescale; - rsBitCnt = fecRsPeriod * fecRsPrescale * extAttr->fecRsPlen; - qamVdPeriod = extAttr->qamVdPeriod; - qamVdPrescale = extAttr->qamVdPrescale; - vdBitCnt = qamVdPeriod * qamVdPrescale * extAttr->fecVdPlen; - - /* DRXJ_QAM_SL_SIG_POWER_QAMxxx * 4 */ - switch ( constellation ) - { - case DRX_CONSTELLATION_QAM16: - qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM16 << 2; - break; - case DRX_CONSTELLATION_QAM32: - qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM32 << 2; - break; - case DRX_CONSTELLATION_QAM64: - qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM64 << 2; - break; - case DRX_CONSTELLATION_QAM128: - qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM128 << 2; - break; - case DRX_CONSTELLATION_QAM256: - qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM256 << 2; - break; - default: - return (DRX_STS_ERROR); - } - - /* ------------------------------ */ - /* MER Calculation */ - /* ------------------------------ */ - /* MER is good if it is above 27.5 for QAM256 or 21.5 for QAM64 */ - - /* 10.0*log10(qam_sl_sig_power * 4.0 / qam_sl_err_power); */ - if ( qamSlErrPower == 0 ) - qamSlMer = 0; - else - qamSlMer = Log10Times100( qamSlSigPower ) - Log10Times100( ( u32_t ) qamSlErrPower ); - - - /* ----------------------------------------- */ - /* Pre Viterbi Symbol Error Rate Calculation */ - /* ----------------------------------------- */ - /* pre viterbi SER is good if it is bellow 0.025 */ - - /* get the register value */ - /* no of quadrature symbol errors */ - RR16( devAddr, QAM_VD_NR_QSYM_ERRORS__A , &qsymErrVD ); - /* Extract the Exponent and the Mantisa */ - /* of number of quadrature symbol errors */ - e = ( qsymErrVD & QAM_VD_NR_QSYM_ERRORS_EXP__M ) >> - QAM_VD_NR_QSYM_ERRORS_EXP__B; - m = ( qsymErrVD & QAM_VD_NR_SYMBOL_ERRORS_FIXED_MANT__M ) >> - QAM_VD_NR_SYMBOL_ERRORS_FIXED_MANT__B; - - if ( (m << e) >> 3 > 549752 ) /* the max of FracTimes1e6 */ - { - qamVDSer = 500000; /* clip BER 0.5 */ - } - else - { - qamVDSer = FracTimes1e6(m << ((e > 2)? (e - 3):e), vdBitCnt * ((e > 2)?1:8) / 8 ); - } - - /* --------------------------------------- */ - /* pre and post RedSolomon BER Calculation */ - /* --------------------------------------- */ - /* pre RS BER is good if it is below 3.5e-4 */ +CtrlGetQAMSigQuality(pDRXDemodInstance_t demod, pDRXSigQuality_t sigQuality) +{ + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXConstellation_t constellation = DRX_CONSTELLATION_UNKNOWN; + DRXJRSErrors_t measuredRSErrors = { 0, 0, 0, 0, 0 }; + + u32_t preBitErrRS = 0; /* pre RedSolomon Bit Error Rate */ + u32_t postBitErrRS = 0; /* post RedSolomon Bit Error Rate */ + u32_t pktErrs = 0; /* no of packet errors in RS */ + u16_t qamSlErrPower = 0; /* accumulated error between raw and sliced symbols */ + u16_t qsymErrVD = 0; /* quadrature symbol errors in QAM_VD */ + u16_t fecOcPeriod = 0; /* SNC sync failure measurement period */ + u16_t fecRsPrescale = 0; /* ReedSolomon Measurement Prescale */ + u16_t fecRsPeriod = 0; /* Value for corresponding I2C register */ + /* calculation constants */ + u32_t rsBitCnt = 0; /* RedSolomon Bit Count */ + u32_t qamSlSigPower = 0; /* used for MER, depends of QAM constellation */ + /* intermediate results */ + u32_t e = 0; /* exponent value used for QAM BER/SER */ + u32_t m = 0; /* mantisa value used for QAM BER/SER */ + u32_t berCnt = 0; /* BER count */ + /* signal quality info */ + u32_t qamSlMer = 0; /* QAM MER */ + u32_t qamPreRSBer = 0; /* Pre RedSolomon BER */ + u32_t qamPostRSBer = 0; /* Post RedSolomon BER */ + u32_t qamVDSer = 0; /* ViterbiDecoder SER */ + u16_t qamVdPrescale = 0; /* Viterbi Measurement Prescale */ + u16_t qamVdPeriod = 0; /* Viterbi Measurement period */ + u32_t vdBitCnt = 0; /* ViterbiDecoder Bit Count */ + + /* get device basic information */ + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + constellation = extAttr->constellation; + + /* read the physical registers */ + /* Get the RS error data */ + CHK_ERROR(GetQAMRSErrCount(devAddr, &measuredRSErrors)); + /* get the register value needed for MER */ + RR16(devAddr, QAM_SL_ERR_POWER__A, &qamSlErrPower); + /* get the register value needed for post RS BER */ + RR16(devAddr, FEC_OC_SNC_FAIL_PERIOD__A, &fecOcPeriod); + + /* get constants needed for signal quality calculation */ + fecRsPeriod = extAttr->fecRsPeriod; + fecRsPrescale = extAttr->fecRsPrescale; + rsBitCnt = fecRsPeriod * fecRsPrescale * extAttr->fecRsPlen; + qamVdPeriod = extAttr->qamVdPeriod; + qamVdPrescale = extAttr->qamVdPrescale; + vdBitCnt = qamVdPeriod * qamVdPrescale * extAttr->fecVdPlen; + + /* DRXJ_QAM_SL_SIG_POWER_QAMxxx * 4 */ + switch (constellation) { + case DRX_CONSTELLATION_QAM16: + qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM16 << 2; + break; + case DRX_CONSTELLATION_QAM32: + qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM32 << 2; + break; + case DRX_CONSTELLATION_QAM64: + qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM64 << 2; + break; + case DRX_CONSTELLATION_QAM128: + qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM128 << 2; + break; + case DRX_CONSTELLATION_QAM256: + qamSlSigPower = DRXJ_QAM_SL_SIG_POWER_QAM256 << 2; + break; + default: + return (DRX_STS_ERROR); + } - /* get the register values */ - preBitErrRS = ( u32_t ) measuredRSErrors.nrBitErrors; - pktErrs = postBitErrRS = ( u32_t ) measuredRSErrors.nrSncParFailCount; + /* ------------------------------ */ + /* MER Calculation */ + /* ------------------------------ */ + /* MER is good if it is above 27.5 for QAM256 or 21.5 for QAM64 */ + + /* 10.0*log10(qam_sl_sig_power * 4.0 / qam_sl_err_power); */ + if (qamSlErrPower == 0) + qamSlMer = 0; + else + qamSlMer = + Log10Times100(qamSlSigPower) - + Log10Times100((u32_t) qamSlErrPower); + + /* ----------------------------------------- */ + /* Pre Viterbi Symbol Error Rate Calculation */ + /* ----------------------------------------- */ + /* pre viterbi SER is good if it is bellow 0.025 */ + + /* get the register value */ + /* no of quadrature symbol errors */ + RR16(devAddr, QAM_VD_NR_QSYM_ERRORS__A, &qsymErrVD); + /* Extract the Exponent and the Mantisa */ + /* of number of quadrature symbol errors */ + e = (qsymErrVD & QAM_VD_NR_QSYM_ERRORS_EXP__M) >> + QAM_VD_NR_QSYM_ERRORS_EXP__B; + m = (qsymErrVD & QAM_VD_NR_SYMBOL_ERRORS_FIXED_MANT__M) >> + QAM_VD_NR_SYMBOL_ERRORS_FIXED_MANT__B; + + if ((m << e) >> 3 > 549752) { /* the max of FracTimes1e6 */ + qamVDSer = 500000; /* clip BER 0.5 */ + } else { + qamVDSer = + FracTimes1e6(m << ((e > 2) ? (e - 3) : e), + vdBitCnt * ((e > 2) ? 1 : 8) / 8); + } - /* Extract the Exponent and the Mantisa of the */ - /* pre Reed-Solomon bit error count */ - e = ( preBitErrRS & FEC_RS_NR_BIT_ERRORS_EXP__M ) >> - FEC_RS_NR_BIT_ERRORS_EXP__B; - m = ( preBitErrRS & FEC_RS_NR_BIT_ERRORS_FIXED_MANT__M ) >> - FEC_RS_NR_BIT_ERRORS_FIXED_MANT__B; + /* --------------------------------------- */ + /* pre and post RedSolomon BER Calculation */ + /* --------------------------------------- */ + /* pre RS BER is good if it is below 3.5e-4 */ + + /* get the register values */ + preBitErrRS = (u32_t) measuredRSErrors.nrBitErrors; + pktErrs = postBitErrRS = (u32_t) measuredRSErrors.nrSncParFailCount; + + /* Extract the Exponent and the Mantisa of the */ + /* pre Reed-Solomon bit error count */ + e = (preBitErrRS & FEC_RS_NR_BIT_ERRORS_EXP__M) >> + FEC_RS_NR_BIT_ERRORS_EXP__B; + m = (preBitErrRS & FEC_RS_NR_BIT_ERRORS_FIXED_MANT__M) >> + FEC_RS_NR_BIT_ERRORS_FIXED_MANT__B; + + berCnt = m << e; + + /*qamPreRSBer = FracTimes1e6( berCnt, rsBitCnt ); */ + if (m > (rsBitCnt >> (e + 1)) || (rsBitCnt >> e) == 0) { + qamPreRSBer = 500000; /* clip BER 0.5 */ + } else { + qamPreRSBer = FracTimes1e6(m, rsBitCnt >> e); + } - berCnt = m << e; + /* post RS BER = 1000000* (11.17 * FEC_OC_SNC_FAIL_COUNT__A) / */ + /* (1504.0 * FEC_OC_SNC_FAIL_PERIOD__A) */ + /* + => c = (1000000*100*11.17)/1504 = + post RS BER = (( c* FEC_OC_SNC_FAIL_COUNT__A) / + (100 * FEC_OC_SNC_FAIL_PERIOD__A) + *100 and /100 is for more precision. + => (20 bits * 12 bits) /(16 bits * 7 bits) => safe in 32 bits computation - /*qamPreRSBer = FracTimes1e6( berCnt, rsBitCnt ); */ - if ( m > (rsBitCnt >> (e + 1)) || (rsBitCnt >> e) == 0 ) - { - qamPreRSBer = 500000; /* clip BER 0.5 */ - } - else - { - qamPreRSBer = FracTimes1e6(m, rsBitCnt >> e ); - } - - /* post RS BER = 1000000* (11.17 * FEC_OC_SNC_FAIL_COUNT__A) / */ - /* (1504.0 * FEC_OC_SNC_FAIL_PERIOD__A) */ - /* - => c = (1000000*100*11.17)/1504 = - post RS BER = (( c* FEC_OC_SNC_FAIL_COUNT__A) / - (100 * FEC_OC_SNC_FAIL_PERIOD__A) - *100 and /100 is for more precision. - => (20 bits * 12 bits) /(16 bits * 7 bits) => safe in 32 bits computation - - Precision errors still possible. - */ - e = postBitErrRS * 742686; - m = fecOcPeriod * 100; - if ( fecOcPeriod == 0 ) - qamPostRSBer = 0xFFFFFFFF; - else - qamPostRSBer = e/m; - - /* fill signal quality data structure */ - sigQuality->MER = ( ( u16_t ) qamSlMer ); - if (extAttr->standard == DRX_STANDARD_ITU_B) - { - sigQuality->preViterbiBER = qamVDSer; - } - else - { - sigQuality->preViterbiBER = qamPreRSBer; - } - sigQuality->postViterbiBER = qamPreRSBer; - sigQuality->postReedSolomonBER = qamPostRSBer; - sigQuality->scaleFactorBER = ( ( u32_t ) 1000000 ); + Precision errors still possible. + */ + e = postBitErrRS * 742686; + m = fecOcPeriod * 100; + if (fecOcPeriod == 0) + qamPostRSBer = 0xFFFFFFFF; + else + qamPostRSBer = e / m; + + /* fill signal quality data structure */ + sigQuality->MER = ((u16_t) qamSlMer); + if (extAttr->standard == DRX_STANDARD_ITU_B) { + sigQuality->preViterbiBER = qamVDSer; + } else { + sigQuality->preViterbiBER = qamPreRSBer; + } + sigQuality->postViterbiBER = qamPreRSBer; + sigQuality->postReedSolomonBER = qamPostRSBer; + sigQuality->scaleFactorBER = ((u32_t) 1000000); #ifdef DRXJ_SIGNAL_ACCUM_ERR - CHK_ERROR (GetAccPktErr (demod, &sigQuality->packetError)); + CHK_ERROR(GetAccPktErr(demod, &sigQuality->packetError)); #else - sigQuality->packetError = ( ( u16_t ) pktErrs ); + sigQuality->packetError = ((u16_t) pktErrs); #endif - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } /** @@ -8395,77 +8078,77 @@ CtrlGetQAMSigQuality( pDRXDemodInstance_t demod, * \return DRXStatus_t. */ static DRXStatus_t -CtrlGetQAMConstel( pDRXDemodInstance_t demod, - pDRXComplex_t complexNr ) -{ - u16_t fecOcOcrMode = 0; /**< FEC OCR grabber configuration */ - u16_t qamSlCommMb = 0; /**< QAM SL MB configuration */ - u16_t qamSlCommMbInit = 0; /**< QAM SL MB intial configuration */ - u16_t im = 0; /**< constellation Im part */ - u16_t re = 0; /**< constellation Re part */ - u32_t data = 0; - pI2CDeviceAddr_t devAddr = NULL; /**< device address */ - - /* read device info */ - devAddr = demod -> myI2CDevAddr; - - /* TODO: */ - /* Monitor bus grabbing is an open external interface issue */ - /* Needs to be checked when external interface PG is updated */ - - /* Configure MB (Monitor bus) */ - RR16( devAddr, QAM_SL_COMM_MB__A, &qamSlCommMbInit ); - /* set observe flag & MB mux */ - qamSlCommMb = qamSlCommMbInit & (~ ( QAM_SL_COMM_MB_OBS__M + - QAM_SL_COMM_MB_MUX_OBS__M ) ); - qamSlCommMb |= ( QAM_SL_COMM_MB_OBS_ON + - QAM_SL_COMM_MB_MUX_OBS_CONST_CORR ); - WR16( devAddr, QAM_SL_COMM_MB__A, qamSlCommMb ); - - /* Enable MB grabber in the FEC OC */ - fecOcOcrMode = ( /* output select: observe bus */ - ( FEC_OC_OCR_MODE_MB_SELECT__M & - ( 0x0 << FEC_OC_OCR_MODE_MB_SELECT__B ) ) | - /* grabber enable: on */ - ( FEC_OC_OCR_MODE_GRAB_ENABLE__M & - ( 0x1 << FEC_OC_OCR_MODE_GRAB_ENABLE__B ) ) | - /* grabber select: observe bus */ - ( FEC_OC_OCR_MODE_GRAB_SELECT__M & - ( 0x0 << FEC_OC_OCR_MODE_GRAB_SELECT__B ) ) | - /* grabber mode: continuous */ - ( FEC_OC_OCR_MODE_GRAB_COUNTED__M & - ( 0x0 << FEC_OC_OCR_MODE_GRAB_COUNTED__B ) ) ); - WR16( devAddr, FEC_OC_OCR_MODE__A, fecOcOcrMode ); - - /* Disable MB grabber in the FEC OC */ - WR16( devAddr, FEC_OC_OCR_MODE__A, 0x00 ); - - /* read data */ - RR32( devAddr, FEC_OC_OCR_GRAB_RD0__A, &data ); - re = (u16_t)(data & FEC_OC_OCR_GRAB_RD0__M); - im = (u16_t)((data >> 16) & FEC_OC_OCR_GRAB_RD1__M); - - /* TODO: */ - /* interpret data (re & im) according to the Monitor bus mapping ?? */ - - /* sign extension, 10th bit is sign bit */ - if ( (re & 0x0200) == 0x0200 ) - { - re |= 0xFC00; - } - if ( (im & 0x0200) == 0x0200 ) - { - im |= 0xFC00; - } - complexNr->re = ( ( s16_t ) re ) ; - complexNr->im = ( ( s16_t ) im ) ; +CtrlGetQAMConstel(pDRXDemodInstance_t demod, pDRXComplex_t complexNr) +{ + u16_t fecOcOcrMode = 0; + /**< FEC OCR grabber configuration */ + u16_t qamSlCommMb = 0;/**< QAM SL MB configuration */ + u16_t qamSlCommMbInit = 0; + /**< QAM SL MB intial configuration */ + u16_t im = 0; /**< constellation Im part */ + u16_t re = 0; /**< constellation Re part */ + u32_t data = 0; + pI2CDeviceAddr_t devAddr = NULL; + /**< device address */ + + /* read device info */ + devAddr = demod->myI2CDevAddr; + + /* TODO: */ + /* Monitor bus grabbing is an open external interface issue */ + /* Needs to be checked when external interface PG is updated */ + + /* Configure MB (Monitor bus) */ + RR16(devAddr, QAM_SL_COMM_MB__A, &qamSlCommMbInit); + /* set observe flag & MB mux */ + qamSlCommMb = qamSlCommMbInit & (~(QAM_SL_COMM_MB_OBS__M + + QAM_SL_COMM_MB_MUX_OBS__M)); + qamSlCommMb |= (QAM_SL_COMM_MB_OBS_ON + + QAM_SL_COMM_MB_MUX_OBS_CONST_CORR); + WR16(devAddr, QAM_SL_COMM_MB__A, qamSlCommMb); + + /* Enable MB grabber in the FEC OC */ + fecOcOcrMode = ( /* output select: observe bus */ + (FEC_OC_OCR_MODE_MB_SELECT__M & + (0x0 << FEC_OC_OCR_MODE_MB_SELECT__B)) | + /* grabber enable: on */ + (FEC_OC_OCR_MODE_GRAB_ENABLE__M & + (0x1 << FEC_OC_OCR_MODE_GRAB_ENABLE__B)) | + /* grabber select: observe bus */ + (FEC_OC_OCR_MODE_GRAB_SELECT__M & + (0x0 << FEC_OC_OCR_MODE_GRAB_SELECT__B)) | + /* grabber mode: continuous */ + (FEC_OC_OCR_MODE_GRAB_COUNTED__M & + (0x0 << FEC_OC_OCR_MODE_GRAB_COUNTED__B))); + WR16(devAddr, FEC_OC_OCR_MODE__A, fecOcOcrMode); + + /* Disable MB grabber in the FEC OC */ + WR16(devAddr, FEC_OC_OCR_MODE__A, 0x00); + + /* read data */ + RR32(devAddr, FEC_OC_OCR_GRAB_RD0__A, &data); + re = (u16_t) (data & FEC_OC_OCR_GRAB_RD0__M); + im = (u16_t) ((data >> 16) & FEC_OC_OCR_GRAB_RD1__M); + + /* TODO: */ + /* interpret data (re & im) according to the Monitor bus mapping ?? */ + + /* sign extension, 10th bit is sign bit */ + if ((re & 0x0200) == 0x0200) { + re |= 0xFC00; + } + if ((im & 0x0200) == 0x0200) { + im |= 0xFC00; + } + complexNr->re = ((s16_t) re); + complexNr->im = ((s16_t) im); - /* Restore MB (Monitor bus) */ - WR16( devAddr, QAM_SL_COMM_MB__A, qamSlCommMbInit ); + /* Restore MB (Monitor bus) */ + WR16(devAddr, QAM_SL_COMM_MB__A, qamSlCommMbInit); - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } #endif /* #ifndef DRXJ_VSB_ONLY */ @@ -8542,39 +8225,37 @@ CtrlGetQAMConstel( pDRXDemodInstance_t demod, * \return DRXStatus_t. * */ -static DRXStatus_t -AtvEquCoefIndex( DRXStandard_t standard, int *index) -{ - switch(standard) - { - case DRX_STANDARD_PAL_SECAM_BG: - *index=(int)DRXJ_COEF_IDX_BG; - break; - case DRX_STANDARD_PAL_SECAM_DK: - *index=(int)DRXJ_COEF_IDX_DK; - break; - case DRX_STANDARD_PAL_SECAM_I: - *index=(int)DRXJ_COEF_IDX_I; - break; - case DRX_STANDARD_PAL_SECAM_L: - *index=(int)DRXJ_COEF_IDX_L; - break; - case DRX_STANDARD_PAL_SECAM_LP: - *index=(int)DRXJ_COEF_IDX_LP; - break; - case DRX_STANDARD_NTSC: - *index=(int)DRXJ_COEF_IDX_MN; - break; - case DRX_STANDARD_FM: - *index=(int)DRXJ_COEF_IDX_FM; - break; - default: - *index=(int)DRXJ_COEF_IDX_MN; /* still return a valid index */ - return DRX_STS_ERROR; - break; - } - - return DRX_STS_OK; +static DRXStatus_t AtvEquCoefIndex(DRXStandard_t standard, int *index) +{ + switch (standard) { + case DRX_STANDARD_PAL_SECAM_BG: + *index = (int)DRXJ_COEF_IDX_BG; + break; + case DRX_STANDARD_PAL_SECAM_DK: + *index = (int)DRXJ_COEF_IDX_DK; + break; + case DRX_STANDARD_PAL_SECAM_I: + *index = (int)DRXJ_COEF_IDX_I; + break; + case DRX_STANDARD_PAL_SECAM_L: + *index = (int)DRXJ_COEF_IDX_L; + break; + case DRX_STANDARD_PAL_SECAM_LP: + *index = (int)DRXJ_COEF_IDX_LP; + break; + case DRX_STANDARD_NTSC: + *index = (int)DRXJ_COEF_IDX_MN; + break; + case DRX_STANDARD_FM: + *index = (int)DRXJ_COEF_IDX_FM; + break; + default: + *index = (int)DRXJ_COEF_IDX_MN; /* still return a valid index */ + return DRX_STS_ERROR; + break; + } + + return DRX_STS_OK; } /* -------------------------------------------------------------------------- */ @@ -8587,112 +8268,102 @@ AtvEquCoefIndex( DRXStandard_t standard, int *index) * */ static DRXStatus_t -AtvUpdateConfig( pDRXDemodInstance_t demod, - Bool_t forceUpdate ) +AtvUpdateConfig(pDRXDemodInstance_t demod, Bool_t forceUpdate) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* equalizer coefficients */ - if ( forceUpdate || - ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_COEF) != 0) ) - { - int index=0; + /* equalizer coefficients */ + if (forceUpdate || + ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_COEF) != 0)) { + int index = 0; - CHK_ERROR(AtvEquCoefIndex( extAttr->standard, &index )); - WR16( devAddr, ATV_TOP_EQU0__A, extAttr->atvTopEqu0[index] ); - WR16( devAddr, ATV_TOP_EQU1__A, extAttr->atvTopEqu1[index] ); - WR16( devAddr, ATV_TOP_EQU2__A, extAttr->atvTopEqu2[index] ); - WR16( devAddr, ATV_TOP_EQU3__A, extAttr->atvTopEqu3[index] ); - } + CHK_ERROR(AtvEquCoefIndex(extAttr->standard, &index)); + WR16(devAddr, ATV_TOP_EQU0__A, extAttr->atvTopEqu0[index]); + WR16(devAddr, ATV_TOP_EQU1__A, extAttr->atvTopEqu1[index]); + WR16(devAddr, ATV_TOP_EQU2__A, extAttr->atvTopEqu2[index]); + WR16(devAddr, ATV_TOP_EQU3__A, extAttr->atvTopEqu3[index]); + } - /* bypass fast carrier recovery */ - if ( forceUpdate ) - { - u16_t data=0; - - RR16( devAddr, IQM_RT_ROT_BP__A, &data ); - data &= (~((u16_t)IQM_RT_ROT_BP_ROT_OFF__M)); - if (extAttr->phaseCorrectionBypass) - { - data |= IQM_RT_ROT_BP_ROT_OFF_OFF; - } else { - data |= IQM_RT_ROT_BP_ROT_OFF_ACTIVE; - } - WR16( devAddr, IQM_RT_ROT_BP__A, data ); - } - - /* peak filter setting */ - if ( forceUpdate || - ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_PEAK_FLT) != 0) ) - { - WR16( devAddr, ATV_TOP_VID_PEAK__A, extAttr->atvTopVidPeak ); - } + /* bypass fast carrier recovery */ + if (forceUpdate) { + u16_t data = 0; + + RR16(devAddr, IQM_RT_ROT_BP__A, &data); + data &= (~((u16_t) IQM_RT_ROT_BP_ROT_OFF__M)); + if (extAttr->phaseCorrectionBypass) { + data |= IQM_RT_ROT_BP_ROT_OFF_OFF; + } else { + data |= IQM_RT_ROT_BP_ROT_OFF_ACTIVE; + } + WR16(devAddr, IQM_RT_ROT_BP__A, data); + } - /* noise filter setting */ - if ( forceUpdate || - ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_NOISE_FLT) != 0) ) - { - WR16( devAddr, ATV_TOP_NOISE_TH__A, extAttr->atvTopNoiseTh ); - } + /* peak filter setting */ + if (forceUpdate || + ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_PEAK_FLT) != 0)) { + WR16(devAddr, ATV_TOP_VID_PEAK__A, extAttr->atvTopVidPeak); + } - /* SIF attenuation */ - if ( forceUpdate || - ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_SIF_ATT) != 0) ) - { - u16_t attenuation=0; - - switch( extAttr->sifAttenuation ){ - case DRXJ_SIF_ATTENUATION_0DB: - attenuation = ATV_TOP_AF_SIF_ATT_0DB; - break; - case DRXJ_SIF_ATTENUATION_3DB: - attenuation = ATV_TOP_AF_SIF_ATT_M3DB; - break; - case DRXJ_SIF_ATTENUATION_6DB: - attenuation = ATV_TOP_AF_SIF_ATT_M6DB; - break; - case DRXJ_SIF_ATTENUATION_9DB: - attenuation = ATV_TOP_AF_SIF_ATT_M9DB; - break; - default: - return DRX_STS_ERROR; - break; - } - WR16( devAddr, ATV_TOP_AF_SIF_ATT__A, attenuation ); - } - - /* SIF & CVBS enable */ - if ( forceUpdate || - ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_OUTPUT) != 0) ) - { - u16_t data = 0; - - RR16( devAddr, ATV_TOP_STDBY__A, &data ); - if ( extAttr->enableCVBSOutput ) - { - data |=ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE; - } else { - data &= (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE); - } - - if ( extAttr->enableSIFOutput ) - { - data &= (~ATV_TOP_STDBY_SIF_STDBY_STANDBY); - } else { - data |= ATV_TOP_STDBY_SIF_STDBY_STANDBY; - } - WR16( devAddr, ATV_TOP_STDBY__A, data ); - } - - extAttr->atvCfgChangedFlags = 0; - - return (DRX_STS_OK); + /* noise filter setting */ + if (forceUpdate || + ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_NOISE_FLT) != 0)) { + WR16(devAddr, ATV_TOP_NOISE_TH__A, extAttr->atvTopNoiseTh); + } + + /* SIF attenuation */ + if (forceUpdate || + ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_SIF_ATT) != 0)) { + u16_t attenuation = 0; + + switch (extAttr->sifAttenuation) { + case DRXJ_SIF_ATTENUATION_0DB: + attenuation = ATV_TOP_AF_SIF_ATT_0DB; + break; + case DRXJ_SIF_ATTENUATION_3DB: + attenuation = ATV_TOP_AF_SIF_ATT_M3DB; + break; + case DRXJ_SIF_ATTENUATION_6DB: + attenuation = ATV_TOP_AF_SIF_ATT_M6DB; + break; + case DRXJ_SIF_ATTENUATION_9DB: + attenuation = ATV_TOP_AF_SIF_ATT_M9DB; + break; + default: + return DRX_STS_ERROR; + break; + } + WR16(devAddr, ATV_TOP_AF_SIF_ATT__A, attenuation); + } + + /* SIF & CVBS enable */ + if (forceUpdate || + ((extAttr->atvCfgChangedFlags & DRXJ_ATV_CHANGED_OUTPUT) != 0)) { + u16_t data = 0; + + RR16(devAddr, ATV_TOP_STDBY__A, &data); + if (extAttr->enableCVBSOutput) { + data |= ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE; + } else { + data &= (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE); + } + + if (extAttr->enableSIFOutput) { + data &= (~ATV_TOP_STDBY_SIF_STDBY_STANDBY); + } else { + data |= ATV_TOP_STDBY_SIF_STDBY_STANDBY; + } + WR16(devAddr, ATV_TOP_STDBY__A, data); + } + + extAttr->atvCfgChangedFlags = 0; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -8705,56 +8376,50 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgATVOutput( pDRXDemodInstance_t demod, - pDRXJCfgAtvOutput_t outputCfg ) +CtrlSetCfgATVOutput(pDRXDemodInstance_t demod, pDRXJCfgAtvOutput_t outputCfg) { - pDRXJData_t extAttr = NULL; + pDRXJData_t extAttr = NULL; - /* Check arguments */ - if ( outputCfg == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* Check arguments */ + if (outputCfg == NULL) { + return (DRX_STS_INVALID_ARG); + } - extAttr = (pDRXJData_t)demod->myExtAttr; - if ( outputCfg->enableSIFOutput ) - { - switch( outputCfg->sifAttenuation ){ - case DRXJ_SIF_ATTENUATION_0DB: /* fallthrough */ - case DRXJ_SIF_ATTENUATION_3DB: /* fallthrough */ - case DRXJ_SIF_ATTENUATION_6DB: /* fallthrough */ - case DRXJ_SIF_ATTENUATION_9DB: - /* Do nothing */ - break; - default: - return DRX_STS_INVALID_ARG; - break; - } - - if(extAttr->sifAttenuation != outputCfg->sifAttenuation ) - { - extAttr->sifAttenuation = outputCfg->sifAttenuation; - extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_SIF_ATT; - } - } - - if ( extAttr->enableCVBSOutput != outputCfg->enableCVBSOutput ) - { - extAttr->enableCVBSOutput = outputCfg->enableCVBSOutput; - extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_OUTPUT; - } + extAttr = (pDRXJData_t) demod->myExtAttr; + if (outputCfg->enableSIFOutput) { + switch (outputCfg->sifAttenuation) { + case DRXJ_SIF_ATTENUATION_0DB: /* fallthrough */ + case DRXJ_SIF_ATTENUATION_3DB: /* fallthrough */ + case DRXJ_SIF_ATTENUATION_6DB: /* fallthrough */ + case DRXJ_SIF_ATTENUATION_9DB: + /* Do nothing */ + break; + default: + return DRX_STS_INVALID_ARG; + break; + } + + if (extAttr->sifAttenuation != outputCfg->sifAttenuation) { + extAttr->sifAttenuation = outputCfg->sifAttenuation; + extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_SIF_ATT; + } + } - if ( extAttr->enableSIFOutput != outputCfg->enableSIFOutput ) - { - extAttr->enableSIFOutput = outputCfg->enableSIFOutput; - extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_OUTPUT; - } + if (extAttr->enableCVBSOutput != outputCfg->enableCVBSOutput) { + extAttr->enableCVBSOutput = outputCfg->enableCVBSOutput; + extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_OUTPUT; + } + + if (extAttr->enableSIFOutput != outputCfg->enableSIFOutput) { + extAttr->enableSIFOutput = outputCfg->enableSIFOutput; + extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_OUTPUT; + } - CHK_ERROR( AtvUpdateConfig(demod, FALSE) ); + CHK_ERROR(AtvUpdateConfig(demod, FALSE)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -8768,46 +8433,43 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgAtvEquCoef( pDRXDemodInstance_t demod , - pDRXJCfgAtvEquCoef_t coef) +CtrlSetCfgAtvEquCoef(pDRXDemodInstance_t demod, pDRXJCfgAtvEquCoef_t coef) { - pDRXJData_t extAttr = NULL; - int index; + pDRXJData_t extAttr = NULL; + int index; - extAttr = (pDRXJData_t)demod->myExtAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* current standard needs to be an ATV standard */ - if (!DRXJ_ISATVSTD(extAttr->standard )) - { - return DRX_STS_ERROR; - } - - /* Check arguments */ - if ( ( coef == NULL ) || - ( coef->coef0 > (ATV_TOP_EQU0_EQU_C0__M / 2) ) || - ( coef->coef1 > (ATV_TOP_EQU1_EQU_C1__M / 2) ) || - ( coef->coef2 > (ATV_TOP_EQU2_EQU_C2__M / 2) ) || - ( coef->coef3 > (ATV_TOP_EQU3_EQU_C3__M / 2) ) || - ( coef->coef0 < ((s16_t)~(ATV_TOP_EQU0_EQU_C0__M >> 1)) ) || - ( coef->coef1 < ((s16_t)~(ATV_TOP_EQU1_EQU_C1__M >> 1)) ) || - ( coef->coef2 < ((s16_t)~(ATV_TOP_EQU2_EQU_C2__M >> 1)) ) || - ( coef->coef3 < ((s16_t)~(ATV_TOP_EQU3_EQU_C3__M >> 1)) ) ) - { - return (DRX_STS_INVALID_ARG); - } + /* current standard needs to be an ATV standard */ + if (!DRXJ_ISATVSTD(extAttr->standard)) { + return DRX_STS_ERROR; + } + + /* Check arguments */ + if ((coef == NULL) || + (coef->coef0 > (ATV_TOP_EQU0_EQU_C0__M / 2)) || + (coef->coef1 > (ATV_TOP_EQU1_EQU_C1__M / 2)) || + (coef->coef2 > (ATV_TOP_EQU2_EQU_C2__M / 2)) || + (coef->coef3 > (ATV_TOP_EQU3_EQU_C3__M / 2)) || + (coef->coef0 < ((s16_t) ~ (ATV_TOP_EQU0_EQU_C0__M >> 1))) || + (coef->coef1 < ((s16_t) ~ (ATV_TOP_EQU1_EQU_C1__M >> 1))) || + (coef->coef2 < ((s16_t) ~ (ATV_TOP_EQU2_EQU_C2__M >> 1))) || + (coef->coef3 < ((s16_t) ~ (ATV_TOP_EQU3_EQU_C3__M >> 1)))) { + return (DRX_STS_INVALID_ARG); + } - CHK_ERROR(AtvEquCoefIndex( extAttr->standard, &index )); - extAttr->atvTopEqu0[index] = coef->coef0; - extAttr->atvTopEqu1[index] = coef->coef1; - extAttr->atvTopEqu2[index] = coef->coef2; - extAttr->atvTopEqu3[index] = coef->coef3; - extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_COEF; + CHK_ERROR(AtvEquCoefIndex(extAttr->standard, &index)); + extAttr->atvTopEqu0[index] = coef->coef0; + extAttr->atvTopEqu1[index] = coef->coef1; + extAttr->atvTopEqu2[index] = coef->coef2; + extAttr->atvTopEqu3[index] = coef->coef3; + extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_COEF; - CHK_ERROR( AtvUpdateConfig(demod, FALSE) ); + CHK_ERROR(AtvUpdateConfig(demod, FALSE)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -8825,35 +8487,32 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgAtvEquCoef( pDRXDemodInstance_t demod , - pDRXJCfgAtvEquCoef_t coef) +CtrlGetCfgAtvEquCoef(pDRXDemodInstance_t demod, pDRXJCfgAtvEquCoef_t coef) { - pDRXJData_t extAttr = NULL; - int index=0; + pDRXJData_t extAttr = NULL; + int index = 0; - extAttr = (pDRXJData_t)demod->myExtAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* current standard needs to be an ATV standard */ - if (!DRXJ_ISATVSTD(extAttr->standard )) - { - return DRX_STS_ERROR; - } + /* current standard needs to be an ATV standard */ + if (!DRXJ_ISATVSTD(extAttr->standard)) { + return DRX_STS_ERROR; + } - /* Check arguments */ - if ( coef == NULL ) - { - return DRX_STS_INVALID_ARG; - } + /* Check arguments */ + if (coef == NULL) { + return DRX_STS_INVALID_ARG; + } - CHK_ERROR(AtvEquCoefIndex( extAttr->standard, &index )); - coef->coef0 = extAttr->atvTopEqu0[index]; - coef->coef1 = extAttr->atvTopEqu1[index]; - coef->coef2 = extAttr->atvTopEqu2[index]; - coef->coef3 = extAttr->atvTopEqu3[index]; + CHK_ERROR(AtvEquCoefIndex(extAttr->standard, &index)); + coef->coef0 = extAttr->atvTopEqu0[index]; + coef->coef1 = extAttr->atvTopEqu1[index]; + coef->coef2 = extAttr->atvTopEqu2[index]; + coef->coef3 = extAttr->atvTopEqu3[index]; - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -8866,39 +8525,35 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgAtvMisc( pDRXDemodInstance_t demod , - pDRXJCfgAtvMisc_t settings ) +CtrlSetCfgAtvMisc(pDRXDemodInstance_t demod, pDRXJCfgAtvMisc_t settings) { - pDRXJData_t extAttr = NULL; - - /* Check arguments */ - if ( ( settings == NULL ) || - ((settings->peakFilter) < (s16_t)(-8) ) || - ((settings->peakFilter) > (s16_t)(15) ) || - ((settings->noiseFilter) > 15 ) ) - { - return (DRX_STS_INVALID_ARG); - } /* if */ + pDRXJData_t extAttr = NULL; - extAttr = (pDRXJData_t)demod->myExtAttr; + /* Check arguments */ + if ((settings == NULL) || + ((settings->peakFilter) < (s16_t) (-8)) || + ((settings->peakFilter) > (s16_t) (15)) || + ((settings->noiseFilter) > 15)) { + return (DRX_STS_INVALID_ARG); + } + /* if */ + extAttr = (pDRXJData_t) demod->myExtAttr; - if ( settings->peakFilter != extAttr->atvTopVidPeak ) - { - extAttr->atvTopVidPeak = settings->peakFilter; - extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_PEAK_FLT; - } + if (settings->peakFilter != extAttr->atvTopVidPeak) { + extAttr->atvTopVidPeak = settings->peakFilter; + extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_PEAK_FLT; + } - if ( settings->noiseFilter != extAttr->atvTopNoiseTh ) - { - extAttr->atvTopNoiseTh = settings->noiseFilter; - extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_NOISE_FLT; - } + if (settings->noiseFilter != extAttr->atvTopNoiseTh) { + extAttr->atvTopNoiseTh = settings->noiseFilter; + extAttr->atvCfgChangedFlags |= DRXJ_ATV_CHANGED_NOISE_FLT; + } - CHK_ERROR( AtvUpdateConfig(demod, FALSE) ); + CHK_ERROR(AtvUpdateConfig(demod, FALSE)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -8915,23 +8570,21 @@ rw_error: * regitsers. */ static DRXStatus_t -CtrlGetCfgAtvMisc( pDRXDemodInstance_t demod , - pDRXJCfgAtvMisc_t settings ) +CtrlGetCfgAtvMisc(pDRXDemodInstance_t demod, pDRXJCfgAtvMisc_t settings) { - pDRXJData_t extAttr = NULL; + pDRXJData_t extAttr = NULL; - /* Check arguments */ - if ( settings == NULL ) - { - return DRX_STS_INVALID_ARG; - } + /* Check arguments */ + if (settings == NULL) { + return DRX_STS_INVALID_ARG; + } - extAttr = (pDRXJData_t)demod->myExtAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; - settings->peakFilter = extAttr->atvTopVidPeak ; - settings->noiseFilter = extAttr->atvTopNoiseTh ; + settings->peakFilter = extAttr->atvTopVidPeak; + settings->noiseFilter = extAttr->atvTopNoiseTh; - return (DRX_STS_OK); + return (DRX_STS_OK); } /* -------------------------------------------------------------------------- */ @@ -8946,37 +8599,33 @@ CtrlGetCfgAtvMisc( pDRXDemodInstance_t demod , * */ static DRXStatus_t -CtrlGetCfgAtvOutput( pDRXDemodInstance_t demod , - pDRXJCfgAtvOutput_t outputCfg ) +CtrlGetCfgAtvOutput(pDRXDemodInstance_t demod, pDRXJCfgAtvOutput_t outputCfg) { - u16_t data = 0; + u16_t data = 0; - /* Check arguments */ - if ( outputCfg == NULL ) - { - return DRX_STS_INVALID_ARG; - } + /* Check arguments */ + if (outputCfg == NULL) { + return DRX_STS_INVALID_ARG; + } - RR16( demod->myI2CDevAddr, ATV_TOP_STDBY__A, &data ); - if ( data & ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE ) - { - outputCfg->enableCVBSOutput = TRUE; - } else { - outputCfg->enableCVBSOutput = FALSE; - } + RR16(demod->myI2CDevAddr, ATV_TOP_STDBY__A, &data); + if (data & ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) { + outputCfg->enableCVBSOutput = TRUE; + } else { + outputCfg->enableCVBSOutput = FALSE; + } - if ( data & ATV_TOP_STDBY_SIF_STDBY_STANDBY ) - { - outputCfg->enableSIFOutput = FALSE; - } else { - outputCfg->enableSIFOutput = TRUE; - RR16( demod->myI2CDevAddr, ATV_TOP_AF_SIF_ATT__A, &data ); - outputCfg->sifAttenuation = (DRXJSIFAttenuation_t) data; - } - - return (DRX_STS_OK); + if (data & ATV_TOP_STDBY_SIF_STDBY_STANDBY) { + outputCfg->enableSIFOutput = FALSE; + } else { + outputCfg->enableSIFOutput = TRUE; + RR16(demod->myI2CDevAddr, ATV_TOP_AF_SIF_ATT__A, &data); + outputCfg->sifAttenuation = (DRXJSIFAttenuation_t) data; + } + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -8989,101 +8638,96 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgAtvAgcStatus( pDRXDemodInstance_t demod , - pDRXJCfgAtvAgcStatus_t agcStatus ) +CtrlGetCfgAtvAgcStatus(pDRXDemodInstance_t demod, + pDRXJCfgAtvAgcStatus_t agcStatus) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - u16_t data = 0; - u32_t tmp = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + u16_t data = 0; + u32_t tmp = 0; - /* Check arguments */ - if ( agcStatus == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* - RFgain = (IQM_AF_AGC_RF__A * 26.75)/1000 (uA) - = ((IQM_AF_AGC_RF__A * 27) - (0.25*IQM_AF_AGC_RF__A))/1000 - - IQM_AF_AGC_RF__A * 27 is 20 bits worst case. - */ - RR16( devAddr, IQM_AF_AGC_RF__A, &data ); - tmp = ((u32_t)data) * 27 - ((u32_t)(data>>2)); /* nA */ - agcStatus->rfAgcGain = (u16_t)(tmp/1000) ; /* uA */ - /* rounding */ - if ( tmp%1000 >= 500 ) - { - (agcStatus->rfAgcGain)++; - } - - /* - IFgain = (IQM_AF_AGC_IF__A * 26.75)/1000 (uA) - = ((IQM_AF_AGC_IF__A * 27) - (0.25*IQM_AF_AGC_IF__A))/1000 - - IQM_AF_AGC_IF__A * 27 is 20 bits worst case. - */ - RR16( devAddr, IQM_AF_AGC_IF__A, &data ); - tmp = ((u32_t)data) * 27 - ((u32_t)(data>>2)); /* nA */ - agcStatus->ifAgcGain = (u16_t)(tmp/1000) ; /* uA */ - /* rounding */ - if ( tmp%1000 >= 500 ) - { - (agcStatus->ifAgcGain)++; - } - - /* - videoGain = (ATV_TOP_SFR_VID_GAIN__A/16 -150)* 0.05 (dB) - = (ATV_TOP_SFR_VID_GAIN__A/16 -150)/20 (dB) - = 10*(ATV_TOP_SFR_VID_GAIN__A/16 -150)/20 (in 0.1 dB) - = (ATV_TOP_SFR_VID_GAIN__A/16 -150)/2 (in 0.1 dB) - = (ATV_TOP_SFR_VID_GAIN__A/32) - 75 (in 0.1 dB) - */ - - SARR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A , &data ); - /* dividing by 32 inclusive rounding */ - data >>=4; - if ((data & 1) !=0 ) - { - data++; - } - data >>= 1; - agcStatus->videoAgcGain = ((s16_t)data)-75; /* 0.1 dB */ - - /* - audioGain = (SCU_RAM_ATV_SIF_GAIN__A -8)* 0.05 (dB) - = (SCU_RAM_ATV_SIF_GAIN__A -8)/20 (dB) - = 10*(SCU_RAM_ATV_SIF_GAIN__A -8)/20 (in 0.1 dB) - = (SCU_RAM_ATV_SIF_GAIN__A -8)/2 (in 0.1 dB) - = (SCU_RAM_ATV_SIF_GAIN__A/2) - 4 (in 0.1 dB) - */ - - SARR16( devAddr, SCU_RAM_ATV_SIF_GAIN__A, &data ); - data &= SCU_RAM_ATV_SIF_GAIN__M; - /* dividing by 2 inclusive rounding */ - if ((data & 1) !=0 ) - { - data++; - } - data >>= 1; - agcStatus->audioAgcGain = ((s16_t)data)-4; /* 0.1 dB */ - - /* Loop gain's */ - SARR16( devAddr, SCU_RAM_AGC_KI__A, &data ); - agcStatus->videoAgcLoopGain = - ( (data & SCU_RAM_AGC_KI_DGAIN__M)>>SCU_RAM_AGC_KI_DGAIN__B) ; - agcStatus->rfAgcLoopGain = - ( (data & SCU_RAM_AGC_KI_RF__M)>>SCU_RAM_AGC_KI_RF__B) ; - agcStatus->ifAgcLoopGain = - ( (data & SCU_RAM_AGC_KI_IF__M)>>SCU_RAM_AGC_KI_IF__B) ; - - return (DRX_STS_OK); + /* Check arguments */ + if (agcStatus == NULL) { + return DRX_STS_INVALID_ARG; + } + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* + RFgain = (IQM_AF_AGC_RF__A * 26.75)/1000 (uA) + = ((IQM_AF_AGC_RF__A * 27) - (0.25*IQM_AF_AGC_RF__A))/1000 + + IQM_AF_AGC_RF__A * 27 is 20 bits worst case. + */ + RR16(devAddr, IQM_AF_AGC_RF__A, &data); + tmp = ((u32_t) data) * 27 - ((u32_t) (data >> 2)); /* nA */ + agcStatus->rfAgcGain = (u16_t) (tmp / 1000); /* uA */ + /* rounding */ + if (tmp % 1000 >= 500) { + (agcStatus->rfAgcGain)++; + } + + /* + IFgain = (IQM_AF_AGC_IF__A * 26.75)/1000 (uA) + = ((IQM_AF_AGC_IF__A * 27) - (0.25*IQM_AF_AGC_IF__A))/1000 + + IQM_AF_AGC_IF__A * 27 is 20 bits worst case. + */ + RR16(devAddr, IQM_AF_AGC_IF__A, &data); + tmp = ((u32_t) data) * 27 - ((u32_t) (data >> 2)); /* nA */ + agcStatus->ifAgcGain = (u16_t) (tmp / 1000); /* uA */ + /* rounding */ + if (tmp % 1000 >= 500) { + (agcStatus->ifAgcGain)++; + } + + /* + videoGain = (ATV_TOP_SFR_VID_GAIN__A/16 -150)* 0.05 (dB) + = (ATV_TOP_SFR_VID_GAIN__A/16 -150)/20 (dB) + = 10*(ATV_TOP_SFR_VID_GAIN__A/16 -150)/20 (in 0.1 dB) + = (ATV_TOP_SFR_VID_GAIN__A/16 -150)/2 (in 0.1 dB) + = (ATV_TOP_SFR_VID_GAIN__A/32) - 75 (in 0.1 dB) + */ + + SARR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, &data); + /* dividing by 32 inclusive rounding */ + data >>= 4; + if ((data & 1) != 0) { + data++; + } + data >>= 1; + agcStatus->videoAgcGain = ((s16_t) data) - 75; /* 0.1 dB */ + + /* + audioGain = (SCU_RAM_ATV_SIF_GAIN__A -8)* 0.05 (dB) + = (SCU_RAM_ATV_SIF_GAIN__A -8)/20 (dB) + = 10*(SCU_RAM_ATV_SIF_GAIN__A -8)/20 (in 0.1 dB) + = (SCU_RAM_ATV_SIF_GAIN__A -8)/2 (in 0.1 dB) + = (SCU_RAM_ATV_SIF_GAIN__A/2) - 4 (in 0.1 dB) + */ + + SARR16(devAddr, SCU_RAM_ATV_SIF_GAIN__A, &data); + data &= SCU_RAM_ATV_SIF_GAIN__M; + /* dividing by 2 inclusive rounding */ + if ((data & 1) != 0) { + data++; + } + data >>= 1; + agcStatus->audioAgcGain = ((s16_t) data) - 4; /* 0.1 dB */ + + /* Loop gain's */ + SARR16(devAddr, SCU_RAM_AGC_KI__A, &data); + agcStatus->videoAgcLoopGain = + ((data & SCU_RAM_AGC_KI_DGAIN__M) >> SCU_RAM_AGC_KI_DGAIN__B); + agcStatus->rfAgcLoopGain = + ((data & SCU_RAM_AGC_KI_RF__M) >> SCU_RAM_AGC_KI_RF__B); + agcStatus->ifAgcLoopGain = + ((data & SCU_RAM_AGC_KI_IF__M) >> SCU_RAM_AGC_KI_IF__B); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -9098,31 +8742,29 @@ rw_error: * * Starts ATV and IQM * * AUdio already started during standard init for ATV. */ -static DRXStatus_t -PowerUpATV( pDRXDemodInstance_t demod , DRXStandard_t standard ) +static DRXStatus_t PowerUpATV(pDRXDemodInstance_t demod, DRXStandard_t standard) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* ATV NTSC */ - WR16( devAddr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_ACTIVE ); - /* turn on IQM_AF */ - CHK_ERROR( SetIqmAf( demod, TRUE ) ); - CHK_ERROR(ADCSynchronization (demod)); + /* ATV NTSC */ + WR16(devAddr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_ACTIVE); + /* turn on IQM_AF */ + CHK_ERROR(SetIqmAf(demod, TRUE)); + CHK_ERROR(ADCSynchronization(demod)); - WR16( devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE ); + WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_ACTIVE); - /* Audio, already done during set standard */ + /* Audio, already done during set standard */ - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } -#endif /* #ifndef DRXJ_DIGITAL_ONLY */ +#endif /* #ifndef DRXJ_DIGITAL_ONLY */ /* -------------------------------------------------------------------------- */ @@ -9138,52 +8780,50 @@ rw_error: * Calls audio power down */ static DRXStatus_t -PowerDownATV( pDRXDemodInstance_t demod , DRXStandard_t standard, Bool_t primary ) -{ - pI2CDeviceAddr_t devAddr = NULL; - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* *parameter */ NULL, - /* *result */ NULL }; - u16_t cmdResult = 0; - pDRXJData_t extAttr = NULL; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod->myExtAttr; - /* ATV NTSC */ - - /* Stop ATV SCU (will reset ATV and IQM hardware */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | - SCU_RAM_COMMAND_CMD_DEMOD_STOP; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - /* Disable ATV outputs (ATV reset enables CVBS, undo this) */ - WR16 ( devAddr, ATV_TOP_STDBY__A, ( ATV_TOP_STDBY_SIF_STDBY_STANDBY & - (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) ) ); - - WR16( devAddr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP); - if (primary == TRUE) - { - WR16( devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP ); - CHK_ERROR( SetIqmAf( demod, FALSE ) ); - } - else - { - WR16( devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP ); - WR16( devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP ); - } - CHK_ERROR( PowerDownAud(demod) ); - - return (DRX_STS_OK); +PowerDownATV(pDRXDemodInstance_t demod, DRXStandard_t standard, Bool_t primary) +{ + pI2CDeviceAddr_t devAddr = NULL; + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* *parameter */ NULL, + /* *result */ NULL + }; + u16_t cmdResult = 0; + pDRXJData_t extAttr = NULL; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + /* ATV NTSC */ + + /* Stop ATV SCU (will reset ATV and IQM hardware */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | + SCU_RAM_COMMAND_CMD_DEMOD_STOP; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + /* Disable ATV outputs (ATV reset enables CVBS, undo this) */ + WR16(devAddr, ATV_TOP_STDBY__A, (ATV_TOP_STDBY_SIF_STDBY_STANDBY & + (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE))); + + WR16(devAddr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP); + if (primary == TRUE) { + WR16(devAddr, IQM_COMM_EXEC__A, IQM_COMM_EXEC_STOP); + CHK_ERROR(SetIqmAf(demod, FALSE)); + } else { + WR16(devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP); + WR16(devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP); + WR16(devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP); + WR16(devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP); + WR16(devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP); + } + CHK_ERROR(PowerDownAud(demod)); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -9199,9 +8839,9 @@ rw_error: * */ #ifndef DRXJ_DIGITAL_ONLY -#define SCU_RAM_ATV_ENABLE_IIR_WA__A 0x831F6D /* TODO remove after done with reg import */ +#define SCU_RAM_ATV_ENABLE_IIR_WA__A 0x831F6D /* TODO remove after done with reg import */ static DRXStatus_t -SetATVStandard( pDRXDemodInstance_t demod , pDRXStandard_t standard ) +SetATVStandard(pDRXDemodInstance_t demod, pDRXStandard_t standard) { /* TODO: enable alternative for tap settings via external file @@ -9219,594 +8859,584 @@ switch DRXJ_ATV_COEF_FILE="customer_coefs.c.inc". Still to check if this will work; DRXJ_16TO8 macro may cause trouble ? */ - const u8_t ntsc_taps_re[]= { - DRXJ_16TO8(-12 ), /* re0 */ - DRXJ_16TO8(-9 ), /* re1 */ - DRXJ_16TO8( 9 ), /* re2 */ - DRXJ_16TO8( 19 ), /* re3 */ - DRXJ_16TO8(-4 ), /* re4 */ - DRXJ_16TO8(-24 ), /* re5 */ - DRXJ_16TO8(-6 ), /* re6 */ - DRXJ_16TO8( 16 ), /* re7 */ - DRXJ_16TO8( 6 ), /* re8 */ - DRXJ_16TO8(-16 ), /* re9 */ - DRXJ_16TO8(-5 ), /* re10 */ - DRXJ_16TO8( 13 ), /* re11 */ - DRXJ_16TO8(-2 ), /* re12 */ - DRXJ_16TO8(-20 ), /* re13 */ - DRXJ_16TO8( 4 ), /* re14 */ - DRXJ_16TO8( 25 ), /* re15 */ - DRXJ_16TO8(-6 ), /* re16 */ - DRXJ_16TO8(-36 ), /* re17 */ - DRXJ_16TO8( 2 ), /* re18 */ - DRXJ_16TO8( 38 ), /* re19 */ - DRXJ_16TO8(-10 ), /* re20 */ - DRXJ_16TO8(-48 ), /* re21 */ - DRXJ_16TO8( 35 ), /* re22 */ - DRXJ_16TO8( 94 ), /* re23 */ - DRXJ_16TO8(-59 ), /* re24 */ - DRXJ_16TO8(-217 ), /* re25 */ - DRXJ_16TO8( 50 ), /* re26 */ - DRXJ_16TO8( 679 ) /* re27 */ - }; - const u8_t ntsc_taps_im[]= { - DRXJ_16TO8( 11 ), /* im0 */ - DRXJ_16TO8( 1 ), /* im1 */ - DRXJ_16TO8(-10 ), /* im2 */ - DRXJ_16TO8( 2 ), /* im3 */ - DRXJ_16TO8( 24 ), /* im4 */ - DRXJ_16TO8( 21 ), /* im5 */ - DRXJ_16TO8( 1 ), /* im6 */ - DRXJ_16TO8(-4 ), /* im7 */ - DRXJ_16TO8( 7 ), /* im8 */ - DRXJ_16TO8( 14 ), /* im9 */ - DRXJ_16TO8( 27 ), /* im10 */ - DRXJ_16TO8( 42 ), /* im11 */ - DRXJ_16TO8( 22 ), /* im12 */ - DRXJ_16TO8(-20 ), /* im13 */ - DRXJ_16TO8( 2 ), /* im14 */ - DRXJ_16TO8( 98 ), /* im15 */ - DRXJ_16TO8( 122 ), /* im16 */ - DRXJ_16TO8( 0 ), /* im17 */ - DRXJ_16TO8(-85 ), /* im18 */ - DRXJ_16TO8( 51 ), /* im19 */ - DRXJ_16TO8( 247 ), /* im20 */ - DRXJ_16TO8( 192 ), /* im21 */ - DRXJ_16TO8(-55 ), /* im22 */ - DRXJ_16TO8(-95 ), /* im23 */ - DRXJ_16TO8( 217 ), /* im24 */ - DRXJ_16TO8( 544 ), /* im25 */ - DRXJ_16TO8( 553 ), /* im26 */ - DRXJ_16TO8( 302 ) /* im27 */ - }; - const u8_t bg_taps_re[]= { - DRXJ_16TO8(-18 ), /* re0 */ - DRXJ_16TO8( 18 ), /* re1 */ - DRXJ_16TO8( 19 ), /* re2 */ - DRXJ_16TO8(-26 ), /* re3 */ - DRXJ_16TO8(-20 ), /* re4 */ - DRXJ_16TO8( 36 ), /* re5 */ - DRXJ_16TO8( 5 ), /* re6 */ - DRXJ_16TO8(-51 ), /* re7 */ - DRXJ_16TO8( 15 ), /* re8 */ - DRXJ_16TO8( 45 ), /* re9 */ - DRXJ_16TO8(-46 ), /* re10 */ - DRXJ_16TO8(-24 ), /* re11 */ - DRXJ_16TO8( 71 ), /* re12 */ - DRXJ_16TO8(-17 ), /* re13 */ - DRXJ_16TO8(-83 ), /* re14 */ - DRXJ_16TO8( 74 ), /* re15 */ - DRXJ_16TO8( 75 ), /* re16 */ - DRXJ_16TO8(-134 ), /* re17 */ - DRXJ_16TO8(-40 ), /* re18 */ - DRXJ_16TO8( 191 ), /* re19 */ - DRXJ_16TO8(-11 ), /* re20 */ - DRXJ_16TO8(-233 ), /* re21 */ - DRXJ_16TO8( 74 ), /* re22 */ - DRXJ_16TO8( 271 ), /* re23 */ - DRXJ_16TO8(-132 ), /* re24 */ - DRXJ_16TO8(-341 ), /* re25 */ - DRXJ_16TO8( 172 ), /* re26 */ - DRXJ_16TO8( 801 ) /* re27 */ - }; - const u8_t bg_taps_im[]= { - DRXJ_16TO8(-24 ), /* im0 */ - DRXJ_16TO8(-10 ), /* im1 */ - DRXJ_16TO8( 9 ), /* im2 */ - DRXJ_16TO8(-5 ), /* im3 */ - DRXJ_16TO8(-51 ), /* im4 */ - DRXJ_16TO8(-17 ), /* im5 */ - DRXJ_16TO8( 31 ), /* im6 */ - DRXJ_16TO8(-48 ), /* im7 */ - DRXJ_16TO8(-95 ), /* im8 */ - DRXJ_16TO8( 25 ), /* im9 */ - DRXJ_16TO8( 37 ), /* im10 */ - DRXJ_16TO8(-123 ), /* im11 */ - DRXJ_16TO8(-77 ), /* im12 */ - DRXJ_16TO8( 94 ), /* im13 */ - DRXJ_16TO8(-10 ), /* im14 */ - DRXJ_16TO8(-149 ), /* im15 */ - DRXJ_16TO8( 10 ), /* im16 */ - DRXJ_16TO8( 108 ), /* im17 */ - DRXJ_16TO8(-49 ), /* im18 */ - DRXJ_16TO8(-59 ), /* im19 */ - DRXJ_16TO8( 90 ), /* im20 */ - DRXJ_16TO8( 73 ), /* im21 */ - DRXJ_16TO8( 55 ), /* im22 */ - DRXJ_16TO8( 148 ), /* im23 */ - DRXJ_16TO8( 86 ), /* im24 */ - DRXJ_16TO8( 146 ), /* im25 */ - DRXJ_16TO8( 687 ), /* im26 */ - DRXJ_16TO8( 877 ) /* im27 */ - }; - const u8_t dk_i_l_lp_taps_re[]= { - DRXJ_16TO8(-23 ), /* re0 */ - DRXJ_16TO8( 9 ), /* re1 */ - DRXJ_16TO8( 16 ), /* re2 */ - DRXJ_16TO8(-26 ), /* re3 */ - DRXJ_16TO8(-3 ), /* re4 */ - DRXJ_16TO8( 13 ), /* re5 */ - DRXJ_16TO8(-19 ), /* re6 */ - DRXJ_16TO8(-3 ), /* re7 */ - DRXJ_16TO8( 13 ), /* re8 */ - DRXJ_16TO8(-26 ), /* re9 */ - DRXJ_16TO8(-4 ), /* re10 */ - DRXJ_16TO8( 28 ), /* re11 */ - DRXJ_16TO8(-15 ), /* re12 */ - DRXJ_16TO8(-14 ), /* re13 */ - DRXJ_16TO8( 10 ), /* re14 */ - DRXJ_16TO8( 1 ), /* re15 */ - DRXJ_16TO8( 39 ), /* re16 */ - DRXJ_16TO8(-18 ), /* re17 */ - DRXJ_16TO8(-90 ), /* re18 */ - DRXJ_16TO8( 109 ), /* re19 */ - DRXJ_16TO8( 113 ), /* re20 */ - DRXJ_16TO8(-235 ), /* re21 */ - DRXJ_16TO8(-49 ), /* re22 */ - DRXJ_16TO8( 359 ), /* re23 */ - DRXJ_16TO8(-79 ), /* re24 */ - DRXJ_16TO8(-459 ), /* re25 */ - DRXJ_16TO8( 206 ), /* re26 */ - DRXJ_16TO8( 894 ) /* re27 */ - }; - const u8_t dk_i_l_lp_taps_im[]= { - DRXJ_16TO8(-8 ), /* im0 */ - DRXJ_16TO8(-20 ), /* im1 */ - DRXJ_16TO8( 17 ), /* im2 */ - DRXJ_16TO8(-14 ), /* im3 */ - DRXJ_16TO8(-52 ), /* im4 */ - DRXJ_16TO8( 4 ), /* im5 */ - DRXJ_16TO8( 9 ), /* im6 */ - DRXJ_16TO8(-62 ), /* im7 */ - DRXJ_16TO8(-47 ), /* im8 */ - DRXJ_16TO8( 0 ), /* im9 */ - DRXJ_16TO8(-20 ), /* im10 */ - DRXJ_16TO8(-48 ), /* im11 */ - DRXJ_16TO8(-65 ), /* im12 */ - DRXJ_16TO8(-23 ), /* im13 */ - DRXJ_16TO8( 44 ), /* im14 */ - DRXJ_16TO8(-60 ), /* im15 */ - DRXJ_16TO8(-113 ), /* im16 */ - DRXJ_16TO8( 92 ), /* im17 */ - DRXJ_16TO8( 81 ), /* im18 */ - DRXJ_16TO8(-125 ), /* im19 */ - DRXJ_16TO8( 28 ), /* im20 */ - DRXJ_16TO8( 182 ), /* im21 */ - DRXJ_16TO8( 35 ), /* im22 */ - DRXJ_16TO8( 94 ), /* im23 */ - DRXJ_16TO8( 180 ), /* im24 */ - DRXJ_16TO8( 134 ), /* im25 */ - DRXJ_16TO8( 657 ), /* im26 */ - DRXJ_16TO8( 1023 ) /* im27 */ - }; - const u8_t fm_taps_re[]= { - DRXJ_16TO8( 0 ), /* re0 */ - DRXJ_16TO8( 0 ), /* re1 */ - DRXJ_16TO8( 0 ), /* re2 */ - DRXJ_16TO8( 0 ), /* re3 */ - DRXJ_16TO8( 0 ), /* re4 */ - DRXJ_16TO8( 0 ), /* re5 */ - DRXJ_16TO8( 0 ), /* re6 */ - DRXJ_16TO8( 0 ), /* re7 */ - DRXJ_16TO8( 0 ), /* re8 */ - DRXJ_16TO8( 0 ), /* re9 */ - DRXJ_16TO8( 0 ), /* re10 */ - DRXJ_16TO8( 0 ), /* re11 */ - DRXJ_16TO8( 0 ), /* re12 */ - DRXJ_16TO8( 0 ), /* re13 */ - DRXJ_16TO8( 0 ), /* re14 */ - DRXJ_16TO8( 0 ), /* re15 */ - DRXJ_16TO8( 0 ), /* re16 */ - DRXJ_16TO8( 0 ), /* re17 */ - DRXJ_16TO8( 0 ), /* re18 */ - DRXJ_16TO8( 0 ), /* re19 */ - DRXJ_16TO8( 0 ), /* re20 */ - DRXJ_16TO8( 0 ), /* re21 */ - DRXJ_16TO8( 0 ), /* re22 */ - DRXJ_16TO8( 0 ), /* re23 */ - DRXJ_16TO8( 0 ), /* re24 */ - DRXJ_16TO8( 0 ), /* re25 */ - DRXJ_16TO8( 0 ), /* re26 */ - DRXJ_16TO8( 0 ) /* re27 */ - }; - const u8_t fm_taps_im[]= { - DRXJ_16TO8(-6 ), /* im0 */ - DRXJ_16TO8( 2 ), /* im1 */ - DRXJ_16TO8( 14 ), /* im2 */ - DRXJ_16TO8(-38 ), /* im3 */ - DRXJ_16TO8( 58 ), /* im4 */ - DRXJ_16TO8(-62 ), /* im5 */ - DRXJ_16TO8( 42 ), /* im6 */ - DRXJ_16TO8( 0 ), /* im7 */ - DRXJ_16TO8(-45 ), /* im8 */ - DRXJ_16TO8( 73 ), /* im9 */ - DRXJ_16TO8(-65 ), /* im10 */ - DRXJ_16TO8( 23 ), /* im11 */ - DRXJ_16TO8( 34 ), /* im12 */ - DRXJ_16TO8(-77 ), /* im13 */ - DRXJ_16TO8( 80 ), /* im14 */ - DRXJ_16TO8(-39 ), /* im15 */ - DRXJ_16TO8(-25 ), /* im16 */ - DRXJ_16TO8( 78 ), /* im17 */ - DRXJ_16TO8(-90 ), /* im18 */ - DRXJ_16TO8( 52 ), /* im19 */ - DRXJ_16TO8( 16 ), /* im20 */ - DRXJ_16TO8(-77 ), /* im21 */ - DRXJ_16TO8( 97 ), /* im22 */ - DRXJ_16TO8(-62 ), /* im23 */ - DRXJ_16TO8(-8 ), /* im24 */ - DRXJ_16TO8( 75 ), /* im25 */ - DRXJ_16TO8(-100 ), /* im26 */ - DRXJ_16TO8( 70 ) /* im27 */ - }; - - pI2CDeviceAddr_t devAddr = NULL; - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* *parameter */ NULL, - /* *result */ NULL }; - u16_t cmdResult = 0; - u16_t cmdParam = 0; + const u8_t ntsc_taps_re[] = { + DRXJ_16TO8(-12), /* re0 */ + DRXJ_16TO8(-9), /* re1 */ + DRXJ_16TO8(9), /* re2 */ + DRXJ_16TO8(19), /* re3 */ + DRXJ_16TO8(-4), /* re4 */ + DRXJ_16TO8(-24), /* re5 */ + DRXJ_16TO8(-6), /* re6 */ + DRXJ_16TO8(16), /* re7 */ + DRXJ_16TO8(6), /* re8 */ + DRXJ_16TO8(-16), /* re9 */ + DRXJ_16TO8(-5), /* re10 */ + DRXJ_16TO8(13), /* re11 */ + DRXJ_16TO8(-2), /* re12 */ + DRXJ_16TO8(-20), /* re13 */ + DRXJ_16TO8(4), /* re14 */ + DRXJ_16TO8(25), /* re15 */ + DRXJ_16TO8(-6), /* re16 */ + DRXJ_16TO8(-36), /* re17 */ + DRXJ_16TO8(2), /* re18 */ + DRXJ_16TO8(38), /* re19 */ + DRXJ_16TO8(-10), /* re20 */ + DRXJ_16TO8(-48), /* re21 */ + DRXJ_16TO8(35), /* re22 */ + DRXJ_16TO8(94), /* re23 */ + DRXJ_16TO8(-59), /* re24 */ + DRXJ_16TO8(-217), /* re25 */ + DRXJ_16TO8(50), /* re26 */ + DRXJ_16TO8(679) /* re27 */ + }; + const u8_t ntsc_taps_im[] = { + DRXJ_16TO8(11), /* im0 */ + DRXJ_16TO8(1), /* im1 */ + DRXJ_16TO8(-10), /* im2 */ + DRXJ_16TO8(2), /* im3 */ + DRXJ_16TO8(24), /* im4 */ + DRXJ_16TO8(21), /* im5 */ + DRXJ_16TO8(1), /* im6 */ + DRXJ_16TO8(-4), /* im7 */ + DRXJ_16TO8(7), /* im8 */ + DRXJ_16TO8(14), /* im9 */ + DRXJ_16TO8(27), /* im10 */ + DRXJ_16TO8(42), /* im11 */ + DRXJ_16TO8(22), /* im12 */ + DRXJ_16TO8(-20), /* im13 */ + DRXJ_16TO8(2), /* im14 */ + DRXJ_16TO8(98), /* im15 */ + DRXJ_16TO8(122), /* im16 */ + DRXJ_16TO8(0), /* im17 */ + DRXJ_16TO8(-85), /* im18 */ + DRXJ_16TO8(51), /* im19 */ + DRXJ_16TO8(247), /* im20 */ + DRXJ_16TO8(192), /* im21 */ + DRXJ_16TO8(-55), /* im22 */ + DRXJ_16TO8(-95), /* im23 */ + DRXJ_16TO8(217), /* im24 */ + DRXJ_16TO8(544), /* im25 */ + DRXJ_16TO8(553), /* im26 */ + DRXJ_16TO8(302) /* im27 */ + }; + const u8_t bg_taps_re[] = { + DRXJ_16TO8(-18), /* re0 */ + DRXJ_16TO8(18), /* re1 */ + DRXJ_16TO8(19), /* re2 */ + DRXJ_16TO8(-26), /* re3 */ + DRXJ_16TO8(-20), /* re4 */ + DRXJ_16TO8(36), /* re5 */ + DRXJ_16TO8(5), /* re6 */ + DRXJ_16TO8(-51), /* re7 */ + DRXJ_16TO8(15), /* re8 */ + DRXJ_16TO8(45), /* re9 */ + DRXJ_16TO8(-46), /* re10 */ + DRXJ_16TO8(-24), /* re11 */ + DRXJ_16TO8(71), /* re12 */ + DRXJ_16TO8(-17), /* re13 */ + DRXJ_16TO8(-83), /* re14 */ + DRXJ_16TO8(74), /* re15 */ + DRXJ_16TO8(75), /* re16 */ + DRXJ_16TO8(-134), /* re17 */ + DRXJ_16TO8(-40), /* re18 */ + DRXJ_16TO8(191), /* re19 */ + DRXJ_16TO8(-11), /* re20 */ + DRXJ_16TO8(-233), /* re21 */ + DRXJ_16TO8(74), /* re22 */ + DRXJ_16TO8(271), /* re23 */ + DRXJ_16TO8(-132), /* re24 */ + DRXJ_16TO8(-341), /* re25 */ + DRXJ_16TO8(172), /* re26 */ + DRXJ_16TO8(801) /* re27 */ + }; + const u8_t bg_taps_im[] = { + DRXJ_16TO8(-24), /* im0 */ + DRXJ_16TO8(-10), /* im1 */ + DRXJ_16TO8(9), /* im2 */ + DRXJ_16TO8(-5), /* im3 */ + DRXJ_16TO8(-51), /* im4 */ + DRXJ_16TO8(-17), /* im5 */ + DRXJ_16TO8(31), /* im6 */ + DRXJ_16TO8(-48), /* im7 */ + DRXJ_16TO8(-95), /* im8 */ + DRXJ_16TO8(25), /* im9 */ + DRXJ_16TO8(37), /* im10 */ + DRXJ_16TO8(-123), /* im11 */ + DRXJ_16TO8(-77), /* im12 */ + DRXJ_16TO8(94), /* im13 */ + DRXJ_16TO8(-10), /* im14 */ + DRXJ_16TO8(-149), /* im15 */ + DRXJ_16TO8(10), /* im16 */ + DRXJ_16TO8(108), /* im17 */ + DRXJ_16TO8(-49), /* im18 */ + DRXJ_16TO8(-59), /* im19 */ + DRXJ_16TO8(90), /* im20 */ + DRXJ_16TO8(73), /* im21 */ + DRXJ_16TO8(55), /* im22 */ + DRXJ_16TO8(148), /* im23 */ + DRXJ_16TO8(86), /* im24 */ + DRXJ_16TO8(146), /* im25 */ + DRXJ_16TO8(687), /* im26 */ + DRXJ_16TO8(877) /* im27 */ + }; + const u8_t dk_i_l_lp_taps_re[] = { + DRXJ_16TO8(-23), /* re0 */ + DRXJ_16TO8(9), /* re1 */ + DRXJ_16TO8(16), /* re2 */ + DRXJ_16TO8(-26), /* re3 */ + DRXJ_16TO8(-3), /* re4 */ + DRXJ_16TO8(13), /* re5 */ + DRXJ_16TO8(-19), /* re6 */ + DRXJ_16TO8(-3), /* re7 */ + DRXJ_16TO8(13), /* re8 */ + DRXJ_16TO8(-26), /* re9 */ + DRXJ_16TO8(-4), /* re10 */ + DRXJ_16TO8(28), /* re11 */ + DRXJ_16TO8(-15), /* re12 */ + DRXJ_16TO8(-14), /* re13 */ + DRXJ_16TO8(10), /* re14 */ + DRXJ_16TO8(1), /* re15 */ + DRXJ_16TO8(39), /* re16 */ + DRXJ_16TO8(-18), /* re17 */ + DRXJ_16TO8(-90), /* re18 */ + DRXJ_16TO8(109), /* re19 */ + DRXJ_16TO8(113), /* re20 */ + DRXJ_16TO8(-235), /* re21 */ + DRXJ_16TO8(-49), /* re22 */ + DRXJ_16TO8(359), /* re23 */ + DRXJ_16TO8(-79), /* re24 */ + DRXJ_16TO8(-459), /* re25 */ + DRXJ_16TO8(206), /* re26 */ + DRXJ_16TO8(894) /* re27 */ + }; + const u8_t dk_i_l_lp_taps_im[] = { + DRXJ_16TO8(-8), /* im0 */ + DRXJ_16TO8(-20), /* im1 */ + DRXJ_16TO8(17), /* im2 */ + DRXJ_16TO8(-14), /* im3 */ + DRXJ_16TO8(-52), /* im4 */ + DRXJ_16TO8(4), /* im5 */ + DRXJ_16TO8(9), /* im6 */ + DRXJ_16TO8(-62), /* im7 */ + DRXJ_16TO8(-47), /* im8 */ + DRXJ_16TO8(0), /* im9 */ + DRXJ_16TO8(-20), /* im10 */ + DRXJ_16TO8(-48), /* im11 */ + DRXJ_16TO8(-65), /* im12 */ + DRXJ_16TO8(-23), /* im13 */ + DRXJ_16TO8(44), /* im14 */ + DRXJ_16TO8(-60), /* im15 */ + DRXJ_16TO8(-113), /* im16 */ + DRXJ_16TO8(92), /* im17 */ + DRXJ_16TO8(81), /* im18 */ + DRXJ_16TO8(-125), /* im19 */ + DRXJ_16TO8(28), /* im20 */ + DRXJ_16TO8(182), /* im21 */ + DRXJ_16TO8(35), /* im22 */ + DRXJ_16TO8(94), /* im23 */ + DRXJ_16TO8(180), /* im24 */ + DRXJ_16TO8(134), /* im25 */ + DRXJ_16TO8(657), /* im26 */ + DRXJ_16TO8(1023) /* im27 */ + }; + const u8_t fm_taps_re[] = { + DRXJ_16TO8(0), /* re0 */ + DRXJ_16TO8(0), /* re1 */ + DRXJ_16TO8(0), /* re2 */ + DRXJ_16TO8(0), /* re3 */ + DRXJ_16TO8(0), /* re4 */ + DRXJ_16TO8(0), /* re5 */ + DRXJ_16TO8(0), /* re6 */ + DRXJ_16TO8(0), /* re7 */ + DRXJ_16TO8(0), /* re8 */ + DRXJ_16TO8(0), /* re9 */ + DRXJ_16TO8(0), /* re10 */ + DRXJ_16TO8(0), /* re11 */ + DRXJ_16TO8(0), /* re12 */ + DRXJ_16TO8(0), /* re13 */ + DRXJ_16TO8(0), /* re14 */ + DRXJ_16TO8(0), /* re15 */ + DRXJ_16TO8(0), /* re16 */ + DRXJ_16TO8(0), /* re17 */ + DRXJ_16TO8(0), /* re18 */ + DRXJ_16TO8(0), /* re19 */ + DRXJ_16TO8(0), /* re20 */ + DRXJ_16TO8(0), /* re21 */ + DRXJ_16TO8(0), /* re22 */ + DRXJ_16TO8(0), /* re23 */ + DRXJ_16TO8(0), /* re24 */ + DRXJ_16TO8(0), /* re25 */ + DRXJ_16TO8(0), /* re26 */ + DRXJ_16TO8(0) /* re27 */ + }; + const u8_t fm_taps_im[] = { + DRXJ_16TO8(-6), /* im0 */ + DRXJ_16TO8(2), /* im1 */ + DRXJ_16TO8(14), /* im2 */ + DRXJ_16TO8(-38), /* im3 */ + DRXJ_16TO8(58), /* im4 */ + DRXJ_16TO8(-62), /* im5 */ + DRXJ_16TO8(42), /* im6 */ + DRXJ_16TO8(0), /* im7 */ + DRXJ_16TO8(-45), /* im8 */ + DRXJ_16TO8(73), /* im9 */ + DRXJ_16TO8(-65), /* im10 */ + DRXJ_16TO8(23), /* im11 */ + DRXJ_16TO8(34), /* im12 */ + DRXJ_16TO8(-77), /* im13 */ + DRXJ_16TO8(80), /* im14 */ + DRXJ_16TO8(-39), /* im15 */ + DRXJ_16TO8(-25), /* im16 */ + DRXJ_16TO8(78), /* im17 */ + DRXJ_16TO8(-90), /* im18 */ + DRXJ_16TO8(52), /* im19 */ + DRXJ_16TO8(16), /* im20 */ + DRXJ_16TO8(-77), /* im21 */ + DRXJ_16TO8(97), /* im22 */ + DRXJ_16TO8(-62), /* im23 */ + DRXJ_16TO8(-8), /* im24 */ + DRXJ_16TO8(75), /* im25 */ + DRXJ_16TO8(-100), /* im26 */ + DRXJ_16TO8(70) /* im27 */ + }; + + pI2CDeviceAddr_t devAddr = NULL; + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* *parameter */ NULL, + /* *result */ NULL + }; + u16_t cmdResult = 0; + u16_t cmdParam = 0; #ifdef DRXJ_SPLIT_UCODE_UPLOAD - DRXUCodeInfo_t ucodeInfo; - pDRXCommonAttr_t commonAttr = NULL; + DRXUCodeInfo_t ucodeInfo; + pDRXCommonAttr_t commonAttr = NULL; #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ - pDRXJData_t extAttr = NULL; + pDRXJData_t extAttr = NULL; - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod -> myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; #ifdef DRXJ_SPLIT_UCODE_UPLOAD - commonAttr = demod -> myCommonAttr; + commonAttr = demod->myCommonAttr; - /* Check if audio microcode is already uploaded */ - if ( !( extAttr->flagAudMcUploaded ) ) - { - ucodeInfo.mcData = commonAttr->microcode; - ucodeInfo.mcSize = commonAttr->microcodeSize; + /* Check if audio microcode is already uploaded */ + if (!(extAttr->flagAudMcUploaded)) { + ucodeInfo.mcData = commonAttr->microcode; + ucodeInfo.mcSize = commonAttr->microcodeSize; - /* Upload only audio microcode */ - CHK_ERROR ( CtrlUCodeUpload( demod, &ucodeInfo, UCODE_UPLOAD, TRUE ) ); + /* Upload only audio microcode */ + CHK_ERROR(CtrlUCodeUpload + (demod, &ucodeInfo, UCODE_UPLOAD, TRUE)); - if ( commonAttr->verifyMicrocode == TRUE ) - { - CHK_ERROR( CtrlUCodeUpload( demod, &ucodeInfo, UCODE_VERIFY, TRUE ) ); - } + if (commonAttr->verifyMicrocode == TRUE) { + CHK_ERROR(CtrlUCodeUpload + (demod, &ucodeInfo, UCODE_VERIFY, TRUE)); + } - /* Prevent uploading audio microcode again */ - extAttr->flagAudMcUploaded = TRUE; - } + /* Prevent uploading audio microcode again */ + extAttr->flagAudMcUploaded = TRUE; + } #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ - WR16( devAddr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP ); - WR16( devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP ); - WR16( devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP ); - WR16( devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP ); - /* Reset ATV SCU */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | - SCU_RAM_COMMAND_CMD_DEMOD_RESET; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - WR16( devAddr, ATV_TOP_MOD_CONTROL__A, ATV_TOP_MOD_CONTROL__PRE ); - - /* TODO remove AUTO/OFF patches after ucode fix. */ - switch ( *standard ) - { - case DRX_STANDARD_NTSC: - /* NTSC */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_MN; - - WR16( devAddr, IQM_RT_LO_INCR__A , IQM_RT_LO_INCR_MN ); - WR16( devAddr, IQM_CF_MIDTAP__A , IQM_CF_MIDTAP_RE__M ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(ntsc_taps_re) , - ((pu8_t)ntsc_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(ntsc_taps_im) , - ((pu8_t)ntsc_taps_im) ); - - WR16( devAddr, ATV_TOP_CR_AMP_TH__A , ATV_TOP_CR_AMP_TH_MN ); - WR16( devAddr, ATV_TOP_CR_CONT__A , - ( ATV_TOP_CR_CONT_CR_P_MN | - ATV_TOP_CR_CONT_CR_D_MN | - ATV_TOP_CR_CONT_CR_I_MN ) ); - WR16( devAddr, ATV_TOP_CR_OVM_TH__A , ATV_TOP_CR_OVM_TH_MN ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_MN | - ATV_TOP_STD_VID_POL_MN ) ); - WR16( devAddr, ATV_TOP_VID_AMP__A , ATV_TOP_VID_AMP_MN ); - - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A, - ( SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | - SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE ) ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000 ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, - SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN); - extAttr->phaseCorrectionBypass = FALSE; - extAttr->enableCVBSOutput = TRUE; - break; - case DRX_STANDARD_FM: - /* FM */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_FM; - - WR16( devAddr, IQM_RT_LO_INCR__A , 2994 ); - WR16( devAddr, IQM_CF_MIDTAP__A , 0 ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(fm_taps_re) , - ((pu8_t)fm_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(fm_taps_im) , - ((pu8_t)fm_taps_im) ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_FM | - ATV_TOP_STD_VID_POL_FM ) ); - WR16( devAddr, ATV_TOP_MOD_CONTROL__A, 0 ); - WR16( devAddr, ATV_TOP_CR_CONT__A , 0 ); - - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A , - ( SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW | - SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM )); - WR16( devAddr, IQM_RT_ROT_BP__A, IQM_RT_ROT_BP_ROT_OFF_OFF ); - extAttr->phaseCorrectionBypass = TRUE; - extAttr->enableCVBSOutput = FALSE; - break; - case DRX_STANDARD_PAL_SECAM_BG: - /* PAL/SECAM B/G */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_B; - - WR16( devAddr, IQM_RT_LO_INCR__A , 1820 );/* TODO check with IS */ - WR16( devAddr, IQM_CF_MIDTAP__A , IQM_CF_MIDTAP_RE__M ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(bg_taps_re) , - ((pu8_t)bg_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(bg_taps_im) , - ((pu8_t)bg_taps_im) ); - WR16( devAddr, ATV_TOP_VID_AMP__A , ATV_TOP_VID_AMP_BG ); - WR16( devAddr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_BG ); - WR16( devAddr, ATV_TOP_CR_CONT__A , - ( ATV_TOP_CR_CONT_CR_P_BG | - ATV_TOP_CR_CONT_CR_D_BG | - ATV_TOP_CR_CONT_CR_I_BG ) ); - WR16( devAddr, ATV_TOP_CR_OVM_TH__A , ATV_TOP_CR_OVM_TH_BG ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_BG | - ATV_TOP_STD_VID_POL_BG ) ); - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A , - ( SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | - SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE ) ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000 ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, - SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN); - extAttr->phaseCorrectionBypass = FALSE; - extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->enableCVBSOutput = TRUE; - break; - case DRX_STANDARD_PAL_SECAM_DK: - /* PAL/SECAM D/K */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_DK; - - WR16( devAddr, IQM_RT_LO_INCR__A , 2225 );/* TODO check with IS */ - WR16( devAddr, IQM_CF_MIDTAP__A , IQM_CF_MIDTAP_RE__M ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(dk_i_l_lp_taps_re) , - ((pu8_t)dk_i_l_lp_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(dk_i_l_lp_taps_im) , - ((pu8_t)dk_i_l_lp_taps_im) ); - WR16( devAddr, ATV_TOP_CR_AMP_TH__A , ATV_TOP_CR_AMP_TH_DK ); - WR16( devAddr, ATV_TOP_VID_AMP__A , ATV_TOP_VID_AMP_DK ); - WR16( devAddr, ATV_TOP_CR_CONT__A , - ( ATV_TOP_CR_CONT_CR_P_DK | - ATV_TOP_CR_CONT_CR_D_DK | - ATV_TOP_CR_CONT_CR_I_DK ) ); - WR16( devAddr, ATV_TOP_CR_OVM_TH__A , ATV_TOP_CR_OVM_TH_DK ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_DK | - ATV_TOP_STD_VID_POL_DK ) ); - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A , - ( SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | - SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE ) ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000 ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, - SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_DK); - extAttr->phaseCorrectionBypass = FALSE; - extAttr->atvIfAgcCfg.ctrlMode =DRX_AGC_CTRL_AUTO; - extAttr->enableCVBSOutput = TRUE; - break; - case DRX_STANDARD_PAL_SECAM_I: - /* PAL/SECAM I */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_I; - - WR16( devAddr, IQM_RT_LO_INCR__A , 2225 );/* TODO check with IS */ - WR16( devAddr, IQM_CF_MIDTAP__A , IQM_CF_MIDTAP_RE__M ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(dk_i_l_lp_taps_re) , - ((pu8_t)dk_i_l_lp_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(dk_i_l_lp_taps_im) , - ((pu8_t)dk_i_l_lp_taps_im) ); - WR16( devAddr, ATV_TOP_CR_AMP_TH__A , ATV_TOP_CR_AMP_TH_I ); - WR16( devAddr, ATV_TOP_VID_AMP__A , ATV_TOP_VID_AMP_I ); - WR16( devAddr, ATV_TOP_CR_CONT__A , - ( ATV_TOP_CR_CONT_CR_P_I | - ATV_TOP_CR_CONT_CR_D_I | - ATV_TOP_CR_CONT_CR_I_I ) ); - WR16( devAddr, ATV_TOP_CR_OVM_TH__A , ATV_TOP_CR_OVM_TH_I ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_I | - ATV_TOP_STD_VID_POL_I ) ); - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A , - ( SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | - SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE ) ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000 ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, - SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_I); - extAttr->phaseCorrectionBypass = FALSE; - extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->enableCVBSOutput = TRUE; - break; - case DRX_STANDARD_PAL_SECAM_L: - /* PAL/SECAM L with negative modulation */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_L; - - WR16( devAddr, IQM_RT_LO_INCR__A , 2225 ); /* TODO check with IS */ - WR16( devAddr, ATV_TOP_VID_AMP__A , ATV_TOP_VID_AMP_L ); - WR16( devAddr, IQM_CF_MIDTAP__A , IQM_CF_MIDTAP_RE__M ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(dk_i_l_lp_taps_re) , - ((pu8_t)dk_i_l_lp_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(dk_i_l_lp_taps_im) , - ((pu8_t)dk_i_l_lp_taps_im) ); - WR16( devAddr, ATV_TOP_CR_AMP_TH__A , 0x2 ); /* TODO check with IS */ - WR16( devAddr, ATV_TOP_CR_CONT__A , - ( ATV_TOP_CR_CONT_CR_P_L | - ATV_TOP_CR_CONT_CR_D_L | - ATV_TOP_CR_CONT_CR_I_L ) ); - WR16( devAddr, ATV_TOP_CR_OVM_TH__A , ATV_TOP_CR_OVM_TH_L ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_L | - ATV_TOP_STD_VID_POL_L ) ); - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A , - ( SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM | - SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE | - SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW ) ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000 ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, - SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP); - extAttr->phaseCorrectionBypass = FALSE; - extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_USER; - extAttr->atvIfAgcCfg.outputLevel = extAttr->atvRfAgcCfg.top; - extAttr->enableCVBSOutput = TRUE; - break; - case DRX_STANDARD_PAL_SECAM_LP: - /* PAL/SECAM L with positive modulation */ - cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_LP; - - WR16( devAddr, ATV_TOP_VID_AMP__A , ATV_TOP_VID_AMP_LP ); - WR16( devAddr, IQM_RT_LO_INCR__A , 2225 ); /* TODO check with IS */ - WR16( devAddr, IQM_CF_MIDTAP__A , IQM_CF_MIDTAP_RE__M ); - WRB ( devAddr, IQM_CF_TAP_RE0__A , sizeof(dk_i_l_lp_taps_re) , - ((pu8_t)dk_i_l_lp_taps_re) ); - WRB ( devAddr, IQM_CF_TAP_IM0__A , sizeof(dk_i_l_lp_taps_im) , - ((pu8_t)dk_i_l_lp_taps_im) ); - WR16( devAddr, ATV_TOP_CR_AMP_TH__A , 0x2 ); /* TODO check with IS */ - WR16( devAddr, ATV_TOP_CR_CONT__A , - ( ATV_TOP_CR_CONT_CR_P_LP | - ATV_TOP_CR_CONT_CR_D_LP | - ATV_TOP_CR_CONT_CR_I_LP ) ); - WR16( devAddr, ATV_TOP_CR_OVM_TH__A , ATV_TOP_CR_OVM_TH_LP ); - WR16( devAddr, ATV_TOP_STD__A , (ATV_TOP_STD_MODE_LP | - ATV_TOP_STD_VID_POL_LP ) ); - WR16( devAddr, SCU_RAM_ATV_AGC_MODE__A , - ( SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM | - SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE | - SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW ) ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000 ); - WR16( devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, - SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP); - extAttr->phaseCorrectionBypass = FALSE; - extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_USER; - extAttr->atvIfAgcCfg.outputLevel = extAttr->atvRfAgcCfg.top; - extAttr->enableCVBSOutput = TRUE; - break; - default: - return ( DRX_STS_ERROR ); - } - - /* Common initializations FM & NTSC & B/G & D/K & I & L & LP */ - if (extAttr->hasLNA == FALSE) - { - WR16( devAddr, IQM_AF_AMUX__A, 0x01); - } - - WR16( devAddr, SCU_RAM_ATV_STANDARD__A , 0x002 ); - WR16( devAddr, IQM_AF_CLP_LEN__A , IQM_AF_CLP_LEN_ATV ); - WR16( devAddr, IQM_AF_CLP_TH__A , IQM_AF_CLP_TH_ATV ); - WR16( devAddr, IQM_AF_SNS_LEN__A , IQM_AF_SNS_LEN_ATV ); - CHK_ERROR( CtrlSetCfgPreSaw( demod, &(extAttr->atvPreSawCfg)) ); - WR16( devAddr, IQM_AF_AGC_IF__A , 10248 ); - - extAttr->iqmRcRateOfs = 0x00200000L; - WR32( devAddr, IQM_RC_RATE_OFS_LO__A , extAttr->iqmRcRateOfs ); - WR16( devAddr, IQM_RC_ADJ_SEL__A , IQM_RC_ADJ_SEL_B_OFF ); - WR16( devAddr, IQM_RC_STRETCH__A , IQM_RC_STRETCH_ATV ); - - WR16( devAddr, IQM_RT_ACTIVE__A , IQM_RT_ACTIVE_ACTIVE_RT_ATV_FCR_ON | - IQM_RT_ACTIVE_ACTIVE_CR_ATV_CR_ON ); - - WR16( devAddr, IQM_CF_OUT_ENA__A , IQM_CF_OUT_ENA_ATV__M ); - WR16( devAddr, IQM_CF_SYMMETRIC__A , IQM_CF_SYMMETRIC_IM__M ); - /* default: SIF in standby */ - WR16( devAddr, ATV_TOP_SYNC_SLICE__A , ATV_TOP_SYNC_SLICE_MN ); - WR16( devAddr, ATV_TOP_MOD_ACCU__A , ATV_TOP_MOD_ACCU__PRE ); - - WR16( devAddr, SCU_RAM_ATV_SIF_GAIN__A , 0x080 ); - WR16( devAddr, SCU_RAM_ATV_FAGC_TH_RED__A , 10 ); - WR16( devAddr, SCU_RAM_ATV_AAGC_CNT__A , 7 ); - WR16( devAddr, SCU_RAM_ATV_NAGC_KI_MIN__A , 0x0225 ); - WR16( devAddr, SCU_RAM_ATV_NAGC_KI_MAX__A , 0x0547 ); - WR16( devAddr, SCU_RAM_ATV_KI_CHANGE_TH__A , 20 ); - WR16( devAddr, SCU_RAM_ATV_LOCK__A , 0 ); - - WR16( devAddr, IQM_RT_DELAY__A , IQM_RT_DELAY__PRE ); - WR16( devAddr, SCU_RAM_ATV_BPC_KI_MIN__A , 531 ); - WR16( devAddr, SCU_RAM_ATV_PAGC_KI_MIN__A, 1061 ); - WR16( devAddr, SCU_RAM_ATV_BP_REF_MIN__A , 100 ); - WR16( devAddr, SCU_RAM_ATV_BP_REF_MAX__A , 260 ); - WR16( devAddr, SCU_RAM_ATV_BP_LVL__A , 0 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MAX__A , 0 ); - WR16( devAddr, SCU_RAM_ATV_AMS_MIN__A , 2047 ); - WR16( devAddr, SCU_RAM_GPIO__A , 0 ); - - /* Override reset values with current shadow settings */ - CHK_ERROR( AtvUpdateConfig( demod, TRUE) ); - - /* Configure/restore AGC settings */ - CHK_ERROR( InitAGC( demod ) ); - CHK_ERROR( SetAgcIf( demod, &(extAttr->atvIfAgcCfg), FALSE ) ); - CHK_ERROR( SetAgcRf( demod, &(extAttr->atvRfAgcCfg), FALSE ) ); - CHK_ERROR( CtrlSetCfgPreSaw( demod, &(extAttr->atvPreSawCfg)) ); - - /* Set SCU ATV substandard,assuming this doesn't require running ATV block */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | - SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV; - cmdSCU.parameterLen = 1; - cmdSCU.resultLen = 1; - cmdSCU.parameter = &cmdParam; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - /* turn the analog work around on/off (must after set_env b/c it is set in mc)*/ - if ( extAttr->mfx == 0x03 ) - { - WR16( devAddr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 0 ); - } - else - { - WR16( devAddr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 1 ); - WR16( devAddr, SCU_RAM_ATV_IIR_CRIT__A , 225 ); - } + WR16(devAddr, ATV_COMM_EXEC__A, ATV_COMM_EXEC_STOP); + WR16(devAddr, IQM_FS_COMM_EXEC__A, IQM_FS_COMM_EXEC_STOP); + WR16(devAddr, IQM_FD_COMM_EXEC__A, IQM_FD_COMM_EXEC_STOP); + WR16(devAddr, IQM_RC_COMM_EXEC__A, IQM_RC_COMM_EXEC_STOP); + WR16(devAddr, IQM_RT_COMM_EXEC__A, IQM_RT_COMM_EXEC_STOP); + WR16(devAddr, IQM_CF_COMM_EXEC__A, IQM_CF_COMM_EXEC_STOP); + /* Reset ATV SCU */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | + SCU_RAM_COMMAND_CMD_DEMOD_RESET; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + WR16(devAddr, ATV_TOP_MOD_CONTROL__A, ATV_TOP_MOD_CONTROL__PRE); + + /* TODO remove AUTO/OFF patches after ucode fix. */ + switch (*standard) { + case DRX_STANDARD_NTSC: + /* NTSC */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_MN; + + WR16(devAddr, IQM_RT_LO_INCR__A, IQM_RT_LO_INCR_MN); + WR16(devAddr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(ntsc_taps_re), + ((pu8_t) ntsc_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(ntsc_taps_im), + ((pu8_t) ntsc_taps_im)); + + WR16(devAddr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_MN); + WR16(devAddr, ATV_TOP_CR_CONT__A, + (ATV_TOP_CR_CONT_CR_P_MN | + ATV_TOP_CR_CONT_CR_D_MN | ATV_TOP_CR_CONT_CR_I_MN)); + WR16(devAddr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_MN); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_MN | + ATV_TOP_STD_VID_POL_MN)); + WR16(devAddr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_MN); + + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | + SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE)); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, + SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN); + extAttr->phaseCorrectionBypass = FALSE; + extAttr->enableCVBSOutput = TRUE; + break; + case DRX_STANDARD_FM: + /* FM */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_FM; + + WR16(devAddr, IQM_RT_LO_INCR__A, 2994); + WR16(devAddr, IQM_CF_MIDTAP__A, 0); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(fm_taps_re), + ((pu8_t) fm_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(fm_taps_im), + ((pu8_t) fm_taps_im)); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_FM | + ATV_TOP_STD_VID_POL_FM)); + WR16(devAddr, ATV_TOP_MOD_CONTROL__A, 0); + WR16(devAddr, ATV_TOP_CR_CONT__A, 0); + + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW | + SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM)); + WR16(devAddr, IQM_RT_ROT_BP__A, IQM_RT_ROT_BP_ROT_OFF_OFF); + extAttr->phaseCorrectionBypass = TRUE; + extAttr->enableCVBSOutput = FALSE; + break; + case DRX_STANDARD_PAL_SECAM_BG: + /* PAL/SECAM B/G */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_B; + + WR16(devAddr, IQM_RT_LO_INCR__A, 1820); /* TODO check with IS */ + WR16(devAddr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(bg_taps_re), + ((pu8_t) bg_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(bg_taps_im), + ((pu8_t) bg_taps_im)); + WR16(devAddr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_BG); + WR16(devAddr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_BG); + WR16(devAddr, ATV_TOP_CR_CONT__A, + (ATV_TOP_CR_CONT_CR_P_BG | + ATV_TOP_CR_CONT_CR_D_BG | ATV_TOP_CR_CONT_CR_I_BG)); + WR16(devAddr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_BG); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_BG | + ATV_TOP_STD_VID_POL_BG)); + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | + SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE)); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, + SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_BG_MN); + extAttr->phaseCorrectionBypass = FALSE; + extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->enableCVBSOutput = TRUE; + break; + case DRX_STANDARD_PAL_SECAM_DK: + /* PAL/SECAM D/K */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_DK; + + WR16(devAddr, IQM_RT_LO_INCR__A, 2225); /* TODO check with IS */ + WR16(devAddr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), + ((pu8_t) dk_i_l_lp_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), + ((pu8_t) dk_i_l_lp_taps_im)); + WR16(devAddr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_DK); + WR16(devAddr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_DK); + WR16(devAddr, ATV_TOP_CR_CONT__A, + (ATV_TOP_CR_CONT_CR_P_DK | + ATV_TOP_CR_CONT_CR_D_DK | ATV_TOP_CR_CONT_CR_I_DK)); + WR16(devAddr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_DK); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_DK | + ATV_TOP_STD_VID_POL_DK)); + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | + SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE)); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, + SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_DK); + extAttr->phaseCorrectionBypass = FALSE; + extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->enableCVBSOutput = TRUE; + break; + case DRX_STANDARD_PAL_SECAM_I: + /* PAL/SECAM I */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_I; + + WR16(devAddr, IQM_RT_LO_INCR__A, 2225); /* TODO check with IS */ + WR16(devAddr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), + ((pu8_t) dk_i_l_lp_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), + ((pu8_t) dk_i_l_lp_taps_im)); + WR16(devAddr, ATV_TOP_CR_AMP_TH__A, ATV_TOP_CR_AMP_TH_I); + WR16(devAddr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_I); + WR16(devAddr, ATV_TOP_CR_CONT__A, + (ATV_TOP_CR_CONT_CR_P_I | + ATV_TOP_CR_CONT_CR_D_I | ATV_TOP_CR_CONT_CR_I_I)); + WR16(devAddr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_I); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_I | + ATV_TOP_STD_VID_POL_I)); + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_FM | + SCU_RAM_ATV_AGC_MODE_FAST_VAGC_EN_FAGC_ENABLE)); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, + SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_I); + extAttr->phaseCorrectionBypass = FALSE; + extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->enableCVBSOutput = TRUE; + break; + case DRX_STANDARD_PAL_SECAM_L: + /* PAL/SECAM L with negative modulation */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_L; + + WR16(devAddr, IQM_RT_LO_INCR__A, 2225); /* TODO check with IS */ + WR16(devAddr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_L); + WR16(devAddr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), + ((pu8_t) dk_i_l_lp_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), + ((pu8_t) dk_i_l_lp_taps_im)); + WR16(devAddr, ATV_TOP_CR_AMP_TH__A, 0x2); /* TODO check with IS */ + WR16(devAddr, ATV_TOP_CR_CONT__A, + (ATV_TOP_CR_CONT_CR_P_L | + ATV_TOP_CR_CONT_CR_D_L | ATV_TOP_CR_CONT_CR_I_L)); + WR16(devAddr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_L); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_L | + ATV_TOP_STD_VID_POL_L)); + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM | + SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE | + SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW)); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, + SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP); + extAttr->phaseCorrectionBypass = FALSE; + extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_USER; + extAttr->atvIfAgcCfg.outputLevel = extAttr->atvRfAgcCfg.top; + extAttr->enableCVBSOutput = TRUE; + break; + case DRX_STANDARD_PAL_SECAM_LP: + /* PAL/SECAM L with positive modulation */ + cmdParam = SCU_RAM_ATV_STANDARD_STANDARD_LP; + + WR16(devAddr, ATV_TOP_VID_AMP__A, ATV_TOP_VID_AMP_LP); + WR16(devAddr, IQM_RT_LO_INCR__A, 2225); /* TODO check with IS */ + WR16(devAddr, IQM_CF_MIDTAP__A, IQM_CF_MIDTAP_RE__M); + WRB(devAddr, IQM_CF_TAP_RE0__A, sizeof(dk_i_l_lp_taps_re), + ((pu8_t) dk_i_l_lp_taps_re)); + WRB(devAddr, IQM_CF_TAP_IM0__A, sizeof(dk_i_l_lp_taps_im), + ((pu8_t) dk_i_l_lp_taps_im)); + WR16(devAddr, ATV_TOP_CR_AMP_TH__A, 0x2); /* TODO check with IS */ + WR16(devAddr, ATV_TOP_CR_CONT__A, + (ATV_TOP_CR_CONT_CR_P_LP | + ATV_TOP_CR_CONT_CR_D_LP | ATV_TOP_CR_CONT_CR_I_LP)); + WR16(devAddr, ATV_TOP_CR_OVM_TH__A, ATV_TOP_CR_OVM_TH_LP); + WR16(devAddr, ATV_TOP_STD__A, (ATV_TOP_STD_MODE_LP | + ATV_TOP_STD_VID_POL_LP)); + WR16(devAddr, SCU_RAM_ATV_AGC_MODE__A, + (SCU_RAM_ATV_AGC_MODE_SIF_STD_SIF_AGC_AM | + SCU_RAM_ATV_AGC_MODE_BP_EN_BPC_ENABLE | + SCU_RAM_ATV_AGC_MODE_VAGC_VEL_AGC_SLOW)); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, 0x1000); + WR16(devAddr, SCU_RAM_ATV_VID_GAIN_LO__A, 0x0000); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX_REF__A, + SCU_RAM_ATV_AMS_MAX_REF_AMS_MAX_REF_LLP); + extAttr->phaseCorrectionBypass = FALSE; + extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_USER; + extAttr->atvIfAgcCfg.outputLevel = extAttr->atvRfAgcCfg.top; + extAttr->enableCVBSOutput = TRUE; + break; + default: + return (DRX_STS_ERROR); + } + + /* Common initializations FM & NTSC & B/G & D/K & I & L & LP */ + if (extAttr->hasLNA == FALSE) { + WR16(devAddr, IQM_AF_AMUX__A, 0x01); + } - return (DRX_STS_OK); + WR16(devAddr, SCU_RAM_ATV_STANDARD__A, 0x002); + WR16(devAddr, IQM_AF_CLP_LEN__A, IQM_AF_CLP_LEN_ATV); + WR16(devAddr, IQM_AF_CLP_TH__A, IQM_AF_CLP_TH_ATV); + WR16(devAddr, IQM_AF_SNS_LEN__A, IQM_AF_SNS_LEN_ATV); + CHK_ERROR(CtrlSetCfgPreSaw(demod, &(extAttr->atvPreSawCfg))); + WR16(devAddr, IQM_AF_AGC_IF__A, 10248); + + extAttr->iqmRcRateOfs = 0x00200000L; + WR32(devAddr, IQM_RC_RATE_OFS_LO__A, extAttr->iqmRcRateOfs); + WR16(devAddr, IQM_RC_ADJ_SEL__A, IQM_RC_ADJ_SEL_B_OFF); + WR16(devAddr, IQM_RC_STRETCH__A, IQM_RC_STRETCH_ATV); + + WR16(devAddr, IQM_RT_ACTIVE__A, IQM_RT_ACTIVE_ACTIVE_RT_ATV_FCR_ON | + IQM_RT_ACTIVE_ACTIVE_CR_ATV_CR_ON); + + WR16(devAddr, IQM_CF_OUT_ENA__A, IQM_CF_OUT_ENA_ATV__M); + WR16(devAddr, IQM_CF_SYMMETRIC__A, IQM_CF_SYMMETRIC_IM__M); + /* default: SIF in standby */ + WR16(devAddr, ATV_TOP_SYNC_SLICE__A, ATV_TOP_SYNC_SLICE_MN); + WR16(devAddr, ATV_TOP_MOD_ACCU__A, ATV_TOP_MOD_ACCU__PRE); + + WR16(devAddr, SCU_RAM_ATV_SIF_GAIN__A, 0x080); + WR16(devAddr, SCU_RAM_ATV_FAGC_TH_RED__A, 10); + WR16(devAddr, SCU_RAM_ATV_AAGC_CNT__A, 7); + WR16(devAddr, SCU_RAM_ATV_NAGC_KI_MIN__A, 0x0225); + WR16(devAddr, SCU_RAM_ATV_NAGC_KI_MAX__A, 0x0547); + WR16(devAddr, SCU_RAM_ATV_KI_CHANGE_TH__A, 20); + WR16(devAddr, SCU_RAM_ATV_LOCK__A, 0); + + WR16(devAddr, IQM_RT_DELAY__A, IQM_RT_DELAY__PRE); + WR16(devAddr, SCU_RAM_ATV_BPC_KI_MIN__A, 531); + WR16(devAddr, SCU_RAM_ATV_PAGC_KI_MIN__A, 1061); + WR16(devAddr, SCU_RAM_ATV_BP_REF_MIN__A, 100); + WR16(devAddr, SCU_RAM_ATV_BP_REF_MAX__A, 260); + WR16(devAddr, SCU_RAM_ATV_BP_LVL__A, 0); + WR16(devAddr, SCU_RAM_ATV_AMS_MAX__A, 0); + WR16(devAddr, SCU_RAM_ATV_AMS_MIN__A, 2047); + WR16(devAddr, SCU_RAM_GPIO__A, 0); + + /* Override reset values with current shadow settings */ + CHK_ERROR(AtvUpdateConfig(demod, TRUE)); + + /* Configure/restore AGC settings */ + CHK_ERROR(InitAGC(demod)); + CHK_ERROR(SetAgcIf(demod, &(extAttr->atvIfAgcCfg), FALSE)); + CHK_ERROR(SetAgcRf(demod, &(extAttr->atvRfAgcCfg), FALSE)); + CHK_ERROR(CtrlSetCfgPreSaw(demod, &(extAttr->atvPreSawCfg))); + + /* Set SCU ATV substandard,assuming this doesn't require running ATV block */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | + SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV; + cmdSCU.parameterLen = 1; + cmdSCU.resultLen = 1; + cmdSCU.parameter = &cmdParam; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + /* turn the analog work around on/off (must after set_env b/c it is set in mc) */ + if (extAttr->mfx == 0x03) { + WR16(devAddr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 0); + } else { + WR16(devAddr, SCU_RAM_ATV_ENABLE_IIR_WA__A, 1); + WR16(devAddr, SCU_RAM_ATV_IIR_CRIT__A, 225); + } + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif @@ -9826,56 +9456,53 @@ rw_error: * */ static DRXStatus_t -SetATVChannel( pDRXDemodInstance_t demod, - DRXFrequency_t tunerFreqOffset, - pDRXChannel_t channel, - DRXStandard_t standard ) +SetATVChannel(pDRXDemodInstance_t demod, + DRXFrequency_t tunerFreqOffset, + pDRXChannel_t channel, DRXStandard_t standard) { - DRXJSCUCmd_t cmdSCU = {/* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* parameter */ NULL, - /* result */ NULL }; - u16_t cmdResult = 0; - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* - Program frequency shifter - No need to account for mirroring on RF - */ - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* parameter */ NULL, + /* result */ NULL + }; + u16_t cmdResult = 0; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* + Program frequency shifter + No need to account for mirroring on RF + */ + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } - CHK_ERROR ( SetFrequency ( demod, channel, tunerFreqOffset ) ); - WR16(devAddr, ATV_TOP_CR_FREQ__A, ATV_TOP_CR_FREQ__PRE); + CHK_ERROR(SetFrequency(demod, channel, tunerFreqOffset)); + WR16(devAddr, ATV_TOP_CR_FREQ__A, ATV_TOP_CR_FREQ__PRE); - /* Start ATV SCU */ - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | - SCU_RAM_COMMAND_CMD_DEMOD_START; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 1; - cmdSCU.parameter = NULL; - cmdSCU.result = &cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); + /* Start ATV SCU */ + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | + SCU_RAM_COMMAND_CMD_DEMOD_START; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 1; + cmdSCU.parameter = NULL; + cmdSCU.result = &cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); /* if ( (extAttr->standard == DRX_STANDARD_FM) && (extAttr->flagSetAUDdone == TRUE) ) { extAttr->detectedRDS = (Bool_t)FALSE; }*/ - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif @@ -9896,72 +9523,70 @@ rw_error: */ #ifndef DRXJ_DIGITAL_ONLY static DRXStatus_t -GetATVChannel( pDRXDemodInstance_t demod, - pDRXChannel_t channel, - DRXStandard_t standard ) -{ - DRXFrequency_t offset = 0; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* Bandwidth */ - channel->bandwidth = ((pDRXJData_t)demod -> myExtAttr)->currBandwidth; - - switch ( standard ) - { - case DRX_STANDARD_NTSC: - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - { - u16_t measuredOffset=0; - - /* get measured frequency offset */ - RR16(devAddr, ATV_TOP_CR_FREQ__A, &measuredOffset); - /* Signed 8 bit register => sign extension needed */ - if ( (measuredOffset & 0x0080) != 0) - { - /* sign extension */ - measuredOffset |= 0xFF80; - } - offset+= (DRXFrequency_t)( ((s16_t)measuredOffset)*10); - break; - } - case DRX_STANDARD_PAL_SECAM_LP: - { - u16_t measuredOffset=0; - - /* get measured frequency offset */ - RR16(devAddr, ATV_TOP_CR_FREQ__A, &measuredOffset); - /* Signed 8 bit register => sign extension needed */ - if ( (measuredOffset & 0x0080) != 0) - { - /* sign extension */ - measuredOffset |= 0xFF80; - } - offset-= (DRXFrequency_t)( ((s16_t)measuredOffset)*10); - } - break; - case DRX_STANDARD_FM: - /* TODO: compute offset using AUD_DSP_RD_FM_DC_LEVEL_A__A and - AUD_DSP_RD_FM_DC_LEVEL_B__A. For now leave frequency as is. - */ - /* No bandwidth know for FM */ - channel->bandwidth = DRX_BANDWIDTH_UNKNOWN; - break; - default: - return ( DRX_STS_ERROR ); - } +GetATVChannel(pDRXDemodInstance_t demod, + pDRXChannel_t channel, DRXStandard_t standard) +{ + DRXFrequency_t offset = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + /* Bandwidth */ + channel->bandwidth = ((pDRXJData_t) demod->myExtAttr)->currBandwidth; + + switch (standard) { + case DRX_STANDARD_NTSC: + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + { + u16_t measuredOffset = 0; + + /* get measured frequency offset */ + RR16(devAddr, ATV_TOP_CR_FREQ__A, &measuredOffset); + /* Signed 8 bit register => sign extension needed */ + if ((measuredOffset & 0x0080) != 0) { + /* sign extension */ + measuredOffset |= 0xFF80; + } + offset += + (DRXFrequency_t) (((s16_t) measuredOffset) * 10); + break; + } + case DRX_STANDARD_PAL_SECAM_LP: + { + u16_t measuredOffset = 0; + + /* get measured frequency offset */ + RR16(devAddr, ATV_TOP_CR_FREQ__A, &measuredOffset); + /* Signed 8 bit register => sign extension needed */ + if ((measuredOffset & 0x0080) != 0) { + /* sign extension */ + measuredOffset |= 0xFF80; + } + offset -= + (DRXFrequency_t) (((s16_t) measuredOffset) * 10); + } + break; + case DRX_STANDARD_FM: + /* TODO: compute offset using AUD_DSP_RD_FM_DC_LEVEL_A__A and + AUD_DSP_RD_FM_DC_LEVEL_B__A. For now leave frequency as is. + */ + /* No bandwidth know for FM */ + channel->bandwidth = DRX_BANDWIDTH_UNKNOWN; + break; + default: + return (DRX_STS_ERROR); + } - channel->frequency -= offset; + channel->frequency -= offset; - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -9985,97 +9610,100 @@ rw_error: * is not used ? */ static DRXStatus_t -GetAtvSigStrength( pDRXDemodInstance_t demod, - pu16_t sigStrength ) -{ - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - - /* All weights must add up to 100 (%) - TODO: change weights when IF ctrl is available */ - u32_t digitalWeight = 50; /* 0 .. 100 */ - u32_t rfWeight = 50; /* 0 .. 100 */ - u32_t ifWeight = 0; /* 0 .. 100 */ - - u16_t digitalCurrGain = 0; - u32_t digitalMaxGain = 0; - u32_t digitalMinGain = 0; - u16_t rfCurrGain = 0; - u32_t rfMaxGain = 0x800; /* taken from ucode */ - u32_t rfMinGain = 0x7fff; - u16_t ifCurrGain = 0; - u32_t ifMaxGain = 0x800; /* taken from ucode */ - u32_t ifMinGain = 0x7fff; - - u32_t digitalStrength = 0; /* 0.. 100 */ - u32_t rfStrength = 0; /* 0.. 100 */ - u32_t ifStrength = 0; /* 0.. 100 */ - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - *sigStrength = 0; - - switch( extAttr->standard ) - { - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: - SARR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, &digitalCurrGain); - digitalMaxGain = 22512; /* taken from ucode */ - digitalMinGain = 2400; /* taken from ucode */ - break; - case DRX_STANDARD_FM: - SARR16(devAddr, SCU_RAM_ATV_SIF_GAIN__A, &digitalCurrGain); - digitalMaxGain = 0x4ff; /* taken from ucode */ - digitalMinGain = 0; /* taken from ucode */ - break; - default: - return (DRX_STS_ERROR); - break; - } - RR16(devAddr, IQM_AF_AGC_RF__A, &rfCurrGain); - RR16(devAddr, IQM_AF_AGC_IF__A, &ifCurrGain); - - /* clipping */ - if ( digitalCurrGain >= digitalMaxGain ) digitalCurrGain = (u16_t)digitalMaxGain; - if ( digitalCurrGain <= digitalMinGain ) digitalCurrGain = (u16_t)digitalMinGain; - if ( ifCurrGain <= ifMaxGain ) ifCurrGain = (u16_t)ifMaxGain; - if ( ifCurrGain >= ifMinGain ) ifCurrGain = (u16_t)ifMinGain; - if ( rfCurrGain <= rfMaxGain ) rfCurrGain = (u16_t)rfMaxGain; - if ( rfCurrGain >= rfMinGain ) rfCurrGain = (u16_t)rfMinGain; - - /* TODO: use SCU_RAM_ATV_RAGC_HR__A to shift max and min in case - of clipping at ADC */ - - /* Compute signal strength (in %) per "gain domain" */ - - /* Digital gain */ - /* TODO: ADC clipping not handled */ - digitalStrength = ( 100 *(digitalMaxGain-(u32_t)digitalCurrGain) )/ - (digitalMaxGain -digitalMinGain); - - /* TODO: IF gain not implemented yet in microcode, check after impl. */ - ifStrength = ( 100 *((u32_t)ifCurrGain-ifMaxGain) )/ - ( ifMinGain - ifMaxGain ); - - /* Rf gain */ - /* TODO: ADC clipping not handled */ - rfStrength = ( 100 *((u32_t)rfCurrGain-rfMaxGain) )/ - ( rfMinGain - rfMaxGain ); - - /* Compute a weighted signal strength (in %) */ - *sigStrength = (u16_t) (digitalWeight*digitalStrength + - rfWeight*rfStrength + - ifWeight*ifStrength); - *sigStrength /= 100; - - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); +GetAtvSigStrength(pDRXDemodInstance_t demod, pu16_t sigStrength) +{ + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + + /* All weights must add up to 100 (%) + TODO: change weights when IF ctrl is available */ + u32_t digitalWeight = 50; /* 0 .. 100 */ + u32_t rfWeight = 50; /* 0 .. 100 */ + u32_t ifWeight = 0; /* 0 .. 100 */ + + u16_t digitalCurrGain = 0; + u32_t digitalMaxGain = 0; + u32_t digitalMinGain = 0; + u16_t rfCurrGain = 0; + u32_t rfMaxGain = 0x800; /* taken from ucode */ + u32_t rfMinGain = 0x7fff; + u16_t ifCurrGain = 0; + u32_t ifMaxGain = 0x800; /* taken from ucode */ + u32_t ifMinGain = 0x7fff; + + u32_t digitalStrength = 0; /* 0.. 100 */ + u32_t rfStrength = 0; /* 0.. 100 */ + u32_t ifStrength = 0; /* 0.. 100 */ + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + *sigStrength = 0; + + switch (extAttr->standard) { + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: + SARR16(devAddr, SCU_RAM_ATV_VID_GAIN_HI__A, &digitalCurrGain); + digitalMaxGain = 22512; /* taken from ucode */ + digitalMinGain = 2400; /* taken from ucode */ + break; + case DRX_STANDARD_FM: + SARR16(devAddr, SCU_RAM_ATV_SIF_GAIN__A, &digitalCurrGain); + digitalMaxGain = 0x4ff; /* taken from ucode */ + digitalMinGain = 0; /* taken from ucode */ + break; + default: + return (DRX_STS_ERROR); + break; + } + RR16(devAddr, IQM_AF_AGC_RF__A, &rfCurrGain); + RR16(devAddr, IQM_AF_AGC_IF__A, &ifCurrGain); + + /* clipping */ + if (digitalCurrGain >= digitalMaxGain) + digitalCurrGain = (u16_t) digitalMaxGain; + if (digitalCurrGain <= digitalMinGain) + digitalCurrGain = (u16_t) digitalMinGain; + if (ifCurrGain <= ifMaxGain) + ifCurrGain = (u16_t) ifMaxGain; + if (ifCurrGain >= ifMinGain) + ifCurrGain = (u16_t) ifMinGain; + if (rfCurrGain <= rfMaxGain) + rfCurrGain = (u16_t) rfMaxGain; + if (rfCurrGain >= rfMinGain) + rfCurrGain = (u16_t) rfMinGain; + + /* TODO: use SCU_RAM_ATV_RAGC_HR__A to shift max and min in case + of clipping at ADC */ + + /* Compute signal strength (in %) per "gain domain" */ + + /* Digital gain */ + /* TODO: ADC clipping not handled */ + digitalStrength = (100 * (digitalMaxGain - (u32_t) digitalCurrGain)) / + (digitalMaxGain - digitalMinGain); + + /* TODO: IF gain not implemented yet in microcode, check after impl. */ + ifStrength = (100 * ((u32_t) ifCurrGain - ifMaxGain)) / + (ifMinGain - ifMaxGain); + + /* Rf gain */ + /* TODO: ADC clipping not handled */ + rfStrength = (100 * ((u32_t) rfCurrGain - rfMaxGain)) / + (rfMinGain - rfMaxGain); + + /* Compute a weighted signal strength (in %) */ + *sigStrength = (u16_t) (digitalWeight * digitalStrength + + rfWeight * rfStrength + ifWeight * ifStrength); + *sigStrength /= 100; + + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } /* -------------------------------------------------------------------------- */ @@ -10091,46 +9719,44 @@ GetAtvSigStrength( pDRXDemodInstance_t demod, * */ static DRXStatus_t -AtvSigQuality( pDRXDemodInstance_t demod, - pDRXSigQuality_t sigQuality ) +AtvSigQuality(pDRXDemodInstance_t demod, pDRXSigQuality_t sigQuality) { - pI2CDeviceAddr_t devAddr = NULL; - u16_t qualityIndicator = 0; - - devAddr = demod -> myI2CDevAddr; - - /* defined values for fields not used */ - sigQuality->MER = 0; - sigQuality->preViterbiBER = 0; - sigQuality->postViterbiBER = 0; - sigQuality->scaleFactorBER = 1; - sigQuality->packetError = 0; - sigQuality->postReedSolomonBER = 0; - - /* - Mapping: - 0x000..0x080: strong signal => 80% .. 100% - 0x080..0x700: weak signal => 30% .. 80% - 0x700..0x7ff: no signal => 0% .. 30% - */ - - SARR16( devAddr, SCU_RAM_ATV_CR_LOCK__A, &qualityIndicator ); - qualityIndicator &= SCU_RAM_ATV_CR_LOCK_CR_LOCK__M; - if ( qualityIndicator <= 0x80 ) - { - sigQuality->indicator = 80 + ( (20*(0x80-qualityIndicator))/0x80); - } else if ( qualityIndicator <= 0x700 ) - { - sigQuality->indicator = 30 + - ( (50*(0x700-qualityIndicator))/(0x700-0x81)); - } else { - sigQuality->indicator = - (30*(0x7FF-qualityIndicator))/(0x7FF-0x701); - } - - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + pI2CDeviceAddr_t devAddr = NULL; + u16_t qualityIndicator = 0; + + devAddr = demod->myI2CDevAddr; + + /* defined values for fields not used */ + sigQuality->MER = 0; + sigQuality->preViterbiBER = 0; + sigQuality->postViterbiBER = 0; + sigQuality->scaleFactorBER = 1; + sigQuality->packetError = 0; + sigQuality->postReedSolomonBER = 0; + + /* + Mapping: + 0x000..0x080: strong signal => 80% .. 100% + 0x080..0x700: weak signal => 30% .. 80% + 0x700..0x7ff: no signal => 0% .. 30% + */ + + SARR16(devAddr, SCU_RAM_ATV_CR_LOCK__A, &qualityIndicator); + qualityIndicator &= SCU_RAM_ATV_CR_LOCK_CR_LOCK__M; + if (qualityIndicator <= 0x80) { + sigQuality->indicator = + 80 + ((20 * (0x80 - qualityIndicator)) / 0x80); + } else if (qualityIndicator <= 0x700) { + sigQuality->indicator = 30 + + ((50 * (0x700 - qualityIndicator)) / (0x700 - 0x81)); + } else { + sigQuality->indicator = + (30 * (0x7FF - qualityIndicator)) / (0x7FF - 0x701); + } + + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } #endif /* DRXJ_DIGITAL_ONLY */ @@ -10151,28 +9777,25 @@ AtvSigQuality( pDRXDemodInstance_t demod, * \return DRXStatus_t. * */ -static DRXStatus_t -PowerUpAud( pDRXDemodInstance_t demod, - Bool_t setStandard) +static DRXStatus_t PowerUpAud(pDRXDemodInstance_t demod, Bool_t setStandard) { - DRXAudStandard_t audStandard = DRX_AUD_STANDARD_AUTO; - pI2CDeviceAddr_t devAddr = NULL; + DRXAudStandard_t audStandard = DRX_AUD_STANDARD_AUTO; + pI2CDeviceAddr_t devAddr = NULL; - devAddr = demod->myI2CDevAddr; + devAddr = demod->myI2CDevAddr; - WR16( devAddr, AUD_TOP_COMM_EXEC__A, AUD_TOP_COMM_EXEC_ACTIVE); - /* setup TR interface: R/W mode, fifosize=8 */ - WR16( devAddr, AUD_TOP_TR_MDE__A, 8); - WR16( devAddr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_ACTIVE); + WR16(devAddr, AUD_TOP_COMM_EXEC__A, AUD_TOP_COMM_EXEC_ACTIVE); + /* setup TR interface: R/W mode, fifosize=8 */ + WR16(devAddr, AUD_TOP_TR_MDE__A, 8); + WR16(devAddr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_ACTIVE); - if ( setStandard == TRUE ) - { - CHK_ERROR( AUDCtrlSetStandard ( demod, &audStandard ) ); - } + if (setStandard == TRUE) { + CHK_ERROR(AUDCtrlSetStandard(demod, &audStandard)); + } - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -10183,23 +9806,23 @@ rw_error: * \return DRXStatus_t. * */ -static DRXStatus_t -PowerDownAud( pDRXDemodInstance_t demod ) +static DRXStatus_t PowerDownAud(pDRXDemodInstance_t demod) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - WR16( devAddr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_STOP ); + WR16(devAddr, AUD_COMM_EXEC__A, AUD_COMM_EXEC_STOP); - extAttr->audData.audioIsActive = FALSE; + extAttr->audData.audioIsActive = FALSE; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } + /*============================================================================*/ /** * \brief Get Modus data from audio RAM @@ -10208,44 +9831,40 @@ rw_error: * \return DRXStatus_t. * */ -static DRXStatus_t -AUDGetModus ( pDRXDemodInstance_t demod, - pu16_t modus ) +static DRXStatus_t AUDGetModus(pDRXDemodInstance_t demod, pu16_t modus) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - u16_t rModus = 0; - u16_t rModusHi = 0; - u16_t rModusLo = 0; + u16_t rModus = 0; + u16_t rModusHi = 0; + u16_t rModusLo = 0; - if ( modus == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (modus == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* Modus register is combined in to RAM location */ - RR16( devAddr, AUD_DEM_RAM_MODUS_HI__A, &rModusHi ); - RR16( devAddr, AUD_DEM_RAM_MODUS_LO__A, &rModusLo ); + /* Modus register is combined in to RAM location */ + RR16(devAddr, AUD_DEM_RAM_MODUS_HI__A, &rModusHi); + RR16(devAddr, AUD_DEM_RAM_MODUS_LO__A, &rModusLo); - rModus = ( (rModusHi << 12 ) & AUD_DEM_RAM_MODUS_HI__M) - | ((( rModusLo & AUD_DEM_RAM_MODUS_LO__M) )); + rModus = ((rModusHi << 12) & AUD_DEM_RAM_MODUS_HI__M) + | (((rModusLo & AUD_DEM_RAM_MODUS_LO__M))); - *modus = rModus; + *modus = rModus; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } @@ -10258,75 +9877,65 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgRDS ( pDRXDemodInstance_t demod, - pDRXCfgAudRDS_t status ) +AUDCtrlGetCfgRDS(pDRXDemodInstance_t demod, pDRXCfgAudRDS_t status) { - pI2CDeviceAddr_t addr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t addr = NULL; + pDRXJData_t extAttr = NULL; - u16_t rRDSArrayCntInit = 0; - u16_t rRDSArrayCntCheck = 0; - u16_t rRDSData = 0; - u16_t RDSDataCnt = 0; + u16_t rRDSArrayCntInit = 0; + u16_t rRDSArrayCntCheck = 0; + u16_t rRDSData = 0; + u16_t RDSDataCnt = 0; - addr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + addr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + if (status == NULL) { + return DRX_STS_INVALID_ARG; + } - if ( status == NULL ) - { - return DRX_STS_INVALID_ARG; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + status->valid = FALSE; - status->valid = FALSE; + RR16(addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &rRDSArrayCntInit); - RR16( addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &rRDSArrayCntInit); + if (rRDSArrayCntInit == + AUD_DEM_RD_RDS_ARRAY_CNT_RDS_ARRAY_CT_RDS_DATA_NOT_VALID) { + /* invalid data */ + return DRX_STS_OK; + } - if ( rRDSArrayCntInit == - AUD_DEM_RD_RDS_ARRAY_CNT_RDS_ARRAY_CT_RDS_DATA_NOT_VALID ) - { - /* invalid data */ - return DRX_STS_OK; - } + if (extAttr->audData.rdsDataCounter == rRDSArrayCntInit) { + /* no new data */ + return DRX_STS_OK; + } - if ( extAttr->audData.rdsDataCounter == rRDSArrayCntInit) - { - /* no new data */ - return DRX_STS_OK; - } - - /* RDS is detected, as long as FM radio is selected assume - RDS will be available */ - extAttr->audData.rdsDataPresent = TRUE; - - /* new data */ - /* read the data */ - for ( RDSDataCnt = 0; - RDSDataCnt < AUD_RDS_ARRAY_SIZE; - RDSDataCnt++) - { - RR16 ( addr, AUD_DEM_RD_RDS_DATA__A, &rRDSData ); - status->data[RDSDataCnt] = rRDSData; - } + /* RDS is detected, as long as FM radio is selected assume + RDS will be available */ + extAttr->audData.rdsDataPresent = TRUE; - RR16( addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &rRDSArrayCntCheck); + /* new data */ + /* read the data */ + for (RDSDataCnt = 0; RDSDataCnt < AUD_RDS_ARRAY_SIZE; RDSDataCnt++) { + RR16(addr, AUD_DEM_RD_RDS_DATA__A, &rRDSData); + status->data[RDSDataCnt] = rRDSData; + } - if ( rRDSArrayCntCheck == rRDSArrayCntInit ) - { - status->valid = TRUE; - extAttr->audData.rdsDataCounter = rRDSArrayCntCheck; - } + RR16(addr, AUD_DEM_RD_RDS_ARRAY_CNT__A, &rRDSArrayCntCheck); + + if (rRDSArrayCntCheck == rRDSArrayCntInit) { + status->valid = TRUE; + extAttr->audData.rdsDataCounter = rRDSArrayCntCheck; + } - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -10338,87 +9947,75 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCarrierDetectStatus ( pDRXDemodInstance_t demod, - pDRXAudStatus_t status ) +AUDCtrlGetCarrierDetectStatus(pDRXDemodInstance_t demod, pDRXAudStatus_t status) { - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; - u16_t rData = 0; + u16_t rData = 0; - if ( status == NULL) - { - return DRX_STS_INVALID_ARG; - } + if (status == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - /* initialize the variables */ - status->carrierA = FALSE; - status->carrierB = FALSE; - status->nicamStatus = DRX_AUD_NICAM_NOT_DETECTED; - status->sap = FALSE; - status->stereo = FALSE; - - /* read stereo sound mode indication */ - RR16( devAddr, AUD_DEM_RD_STATUS__A, &rData ); - - /* carrier a detected */ - if ( (rData & AUD_DEM_RD_STATUS_STAT_CARR_A__M ) == - AUD_DEM_RD_STATUS_STAT_CARR_A_DETECTED ) - { - status->carrierA = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* carrier b detected */ - if ( (rData & AUD_DEM_RD_STATUS_STAT_CARR_B__M ) == - AUD_DEM_RD_STATUS_STAT_CARR_B_DETECTED ) - { - status->carrierB = TRUE; - } - /* nicam detected */ - if ( (rData & AUD_DEM_RD_STATUS_STAT_NICAM__M) == - AUD_DEM_RD_STATUS_STAT_NICAM_NICAM_DETECTED) - { - if ((rData & AUD_DEM_RD_STATUS_BAD_NICAM__M) == - AUD_DEM_RD_STATUS_BAD_NICAM_OK) - { - status->nicamStatus = DRX_AUD_NICAM_DETECTED; - } - else - { - status->nicamStatus = DRX_AUD_NICAM_BAD; - } - } - - /* audio mode bilingual or SAP detected */ - if ( (rData & AUD_DEM_RD_STATUS_STAT_BIL_OR_SAP__M) == - AUD_DEM_RD_STATUS_STAT_BIL_OR_SAP_SAP) - { - status->sap = TRUE; - } + /* initialize the variables */ + status->carrierA = FALSE; + status->carrierB = FALSE; + status->nicamStatus = DRX_AUD_NICAM_NOT_DETECTED; + status->sap = FALSE; + status->stereo = FALSE; - /* stereo detected */ - if ( (rData & AUD_DEM_RD_STATUS_STAT_STEREO__M) == - AUD_DEM_RD_STATUS_STAT_STEREO_STEREO) - { - status->stereo = TRUE; - } + /* read stereo sound mode indication */ + RR16(devAddr, AUD_DEM_RD_STATUS__A, &rData); + + /* carrier a detected */ + if ((rData & AUD_DEM_RD_STATUS_STAT_CARR_A__M) == + AUD_DEM_RD_STATUS_STAT_CARR_A_DETECTED) { + status->carrierA = TRUE; + } - return DRX_STS_OK; + /* carrier b detected */ + if ((rData & AUD_DEM_RD_STATUS_STAT_CARR_B__M) == + AUD_DEM_RD_STATUS_STAT_CARR_B_DETECTED) { + status->carrierB = TRUE; + } + /* nicam detected */ + if ((rData & AUD_DEM_RD_STATUS_STAT_NICAM__M) == + AUD_DEM_RD_STATUS_STAT_NICAM_NICAM_DETECTED) { + if ((rData & AUD_DEM_RD_STATUS_BAD_NICAM__M) == + AUD_DEM_RD_STATUS_BAD_NICAM_OK) { + status->nicamStatus = DRX_AUD_NICAM_DETECTED; + } else { + status->nicamStatus = DRX_AUD_NICAM_BAD; + } + } + + /* audio mode bilingual or SAP detected */ + if ((rData & AUD_DEM_RD_STATUS_STAT_BIL_OR_SAP__M) == + AUD_DEM_RD_STATUS_STAT_BIL_OR_SAP_SAP) { + status->sap = TRUE; + } + + /* stereo detected */ + if ((rData & AUD_DEM_RD_STATUS_STAT_STEREO__M) == + AUD_DEM_RD_STATUS_STAT_STEREO_STEREO) { + status->stereo = TRUE; + } + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } - /*============================================================================*/ /** * \brief Get the current audio status parameters @@ -10428,38 +10025,36 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetStatus ( pDRXDemodInstance_t demod, - pDRXAudStatus_t status ) +AUDCtrlGetStatus(pDRXDemodInstance_t demod, pDRXAudStatus_t status) { - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - DRXCfgAudRDS_t rds = { FALSE, {0} }; - u16_t rData = 0; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + DRXCfgAudRDS_t rds = { FALSE, {0} }; + u16_t rData = 0; - if ( status == NULL) - { - return DRX_STS_INVALID_ARG; - } + if (status == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* carrier detection */ - CHK_ERROR ( AUDCtrlGetCarrierDetectStatus ( demod, status ) ); + /* carrier detection */ + CHK_ERROR(AUDCtrlGetCarrierDetectStatus(demod, status)); - /* rds data */ - status->rds = FALSE; - CHK_ERROR ( AUDCtrlGetCfgRDS ( demod, &rds ) ); - status->rds = extAttr->audData.rdsDataPresent; + /* rds data */ + status->rds = FALSE; + CHK_ERROR(AUDCtrlGetCfgRDS(demod, &rds)); + status->rds = extAttr->audData.rdsDataPresent; - /* fmIdent */ - RR16( devAddr, AUD_DSP_RD_FM_IDENT_VALUE__A, &rData); - rData >>= AUD_DSP_RD_FM_IDENT_VALUE_FM_IDENT__B; - status->fmIdent = (s8_t)rData; + /* fmIdent */ + RR16(devAddr, AUD_DSP_RD_FM_IDENT_VALUE__A, &rData); + rData >>= AUD_DSP_RD_FM_IDENT_VALUE_FM_IDENT__B; + status->fmIdent = (s8_t) rData; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -10471,147 +10066,131 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgVolume ( pDRXDemodInstance_t demod, - pDRXCfgAudVolume_t volume ) +AUDCtrlGetCfgVolume(pDRXDemodInstance_t demod, pDRXCfgAudVolume_t volume) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - u16_t rVolume = 0; - u16_t rAVC = 0; - u16_t rStrengthLeft = 0; - u16_t rStrengthRight = 0; + u16_t rVolume = 0; + u16_t rAVC = 0; + u16_t rStrengthLeft = 0; + u16_t rStrengthRight = 0; - if ( volume == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (volume == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - /* volume */ - volume->mute = extAttr->audData.volume.mute; - RR16( devAddr, AUD_DSP_WR_VOLUME__A, &rVolume ); - if ( rVolume == 0 ) - { - volume->mute = TRUE; - volume->volume = extAttr->audData.volume.volume; - } - else - { - volume->mute = FALSE; - volume->volume = ( ( rVolume & AUD_DSP_WR_VOLUME_VOL_MAIN__M ) >> - AUD_DSP_WR_VOLUME_VOL_MAIN__B ) - - AUD_VOLUME_ZERO_DB; - if ( volume->volume < AUD_VOLUME_DB_MIN ) - { - volume->volume = AUD_VOLUME_DB_MIN; - } - if ( volume->volume > AUD_VOLUME_DB_MAX ) - { - volume->volume = AUD_VOLUME_DB_MAX; - } - } - - /* automatic volume control */ - RR16( devAddr, AUD_DSP_WR_AVC__A, &rAVC ); - - if( ( rAVC & AUD_DSP_WR_AVC_AVC_ON__M) == - AUD_DSP_WR_AVC_AVC_ON_OFF ) + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - { - volume->avcMode = DRX_AUD_AVC_OFF; - } - else - { - switch ( rAVC & AUD_DSP_WR_AVC_AVC_DECAY__M ) - { - case AUD_DSP_WR_AVC_AVC_DECAY_20_MSEC: - volume->avcMode = DRX_AUD_AVC_DECAYTIME_20MS; - break; - case AUD_DSP_WR_AVC_AVC_DECAY_8_SEC: - volume->avcMode = DRX_AUD_AVC_DECAYTIME_8S; - break; - case AUD_DSP_WR_AVC_AVC_DECAY_4_SEC: - volume->avcMode = DRX_AUD_AVC_DECAYTIME_4S; - break; - case AUD_DSP_WR_AVC_AVC_DECAY_2_SEC: - volume->avcMode = DRX_AUD_AVC_DECAYTIME_2S; - break; - default: - return DRX_STS_ERROR; - break; - } - } - - /* max attenuation */ - switch ( rAVC & AUD_DSP_WR_AVC_AVC_MAX_ATT__M ) - { - case AUD_DSP_WR_AVC_AVC_MAX_ATT_12DB: - volume->avcMaxAtten = DRX_AUD_AVC_MAX_ATTEN_12DB; - break; - case AUD_DSP_WR_AVC_AVC_MAX_ATT_18DB: - volume->avcMaxAtten = DRX_AUD_AVC_MAX_ATTEN_18DB; - break; - case AUD_DSP_WR_AVC_AVC_MAX_ATT_24DB: - volume->avcMaxAtten = DRX_AUD_AVC_MAX_ATTEN_24DB; - break; - default: - return DRX_STS_ERROR; - break; - } - - /* max gain */ - switch ( rAVC & AUD_DSP_WR_AVC_AVC_MAX_GAIN__M ) - { - case AUD_DSP_WR_AVC_AVC_MAX_GAIN_0DB: - volume->avcMaxGain = DRX_AUD_AVC_MAX_GAIN_0DB; - break; - case AUD_DSP_WR_AVC_AVC_MAX_GAIN_6DB: - volume->avcMaxGain = DRX_AUD_AVC_MAX_GAIN_6DB; - break; - case AUD_DSP_WR_AVC_AVC_MAX_GAIN_12DB: - volume->avcMaxGain = DRX_AUD_AVC_MAX_GAIN_12DB; - break; - default: - return DRX_STS_ERROR; - break; - } - - /* reference level */ - volume->avcRefLevel = (u16_t)( ( rAVC & AUD_DSP_WR_AVC_AVC_REF_LEV__M) >> - AUD_DSP_WR_AVC_AVC_REF_LEV__B ); - - /* read qpeak registers and calculate strength of left and right carrier */ - /* quasi peaks formula: QP(dB) = 20 * log( AUD_DSP_RD_QPEAKx / Q(0dB) */ - /* Q(0dB) represents QP value of 0dB (hex value 0x4000) */ - /* left carrier */ - - /* QP vaues */ - /* left carrier */ - RR16 (devAddr, AUD_DSP_RD_QPEAK_L__A, &rStrengthLeft); - volume->strengthLeft = ( ( (s16_t) Log10Times100 ( rStrengthLeft ) ) - - AUD_CARRIER_STRENGTH_QP_0DB_LOG10T100 ) / 5; - - /* right carrier */ - RR16 (devAddr, AUD_DSP_RD_QPEAK_R__A, &rStrengthRight); - volume->strengthRight = ( ( (s16_t) Log10Times100 ( rStrengthRight ) ) - - AUD_CARRIER_STRENGTH_QP_0DB_LOG10T100 ) / 5; - - return DRX_STS_OK; + /* volume */ + volume->mute = extAttr->audData.volume.mute; + RR16(devAddr, AUD_DSP_WR_VOLUME__A, &rVolume); + if (rVolume == 0) { + volume->mute = TRUE; + volume->volume = extAttr->audData.volume.volume; + } else { + volume->mute = FALSE; + volume->volume = ((rVolume & AUD_DSP_WR_VOLUME_VOL_MAIN__M) >> + AUD_DSP_WR_VOLUME_VOL_MAIN__B) - + AUD_VOLUME_ZERO_DB; + if (volume->volume < AUD_VOLUME_DB_MIN) { + volume->volume = AUD_VOLUME_DB_MIN; + } + if (volume->volume > AUD_VOLUME_DB_MAX) { + volume->volume = AUD_VOLUME_DB_MAX; + } + } + + /* automatic volume control */ + RR16(devAddr, AUD_DSP_WR_AVC__A, &rAVC); + + if ((rAVC & AUD_DSP_WR_AVC_AVC_ON__M) == AUD_DSP_WR_AVC_AVC_ON_OFF) + { + volume->avcMode = DRX_AUD_AVC_OFF; + } else { + switch (rAVC & AUD_DSP_WR_AVC_AVC_DECAY__M) { + case AUD_DSP_WR_AVC_AVC_DECAY_20_MSEC: + volume->avcMode = DRX_AUD_AVC_DECAYTIME_20MS; + break; + case AUD_DSP_WR_AVC_AVC_DECAY_8_SEC: + volume->avcMode = DRX_AUD_AVC_DECAYTIME_8S; + break; + case AUD_DSP_WR_AVC_AVC_DECAY_4_SEC: + volume->avcMode = DRX_AUD_AVC_DECAYTIME_4S; + break; + case AUD_DSP_WR_AVC_AVC_DECAY_2_SEC: + volume->avcMode = DRX_AUD_AVC_DECAYTIME_2S; + break; + default: + return DRX_STS_ERROR; + break; + } + } + + /* max attenuation */ + switch (rAVC & AUD_DSP_WR_AVC_AVC_MAX_ATT__M) { + case AUD_DSP_WR_AVC_AVC_MAX_ATT_12DB: + volume->avcMaxAtten = DRX_AUD_AVC_MAX_ATTEN_12DB; + break; + case AUD_DSP_WR_AVC_AVC_MAX_ATT_18DB: + volume->avcMaxAtten = DRX_AUD_AVC_MAX_ATTEN_18DB; + break; + case AUD_DSP_WR_AVC_AVC_MAX_ATT_24DB: + volume->avcMaxAtten = DRX_AUD_AVC_MAX_ATTEN_24DB; + break; + default: + return DRX_STS_ERROR; + break; + } + + /* max gain */ + switch (rAVC & AUD_DSP_WR_AVC_AVC_MAX_GAIN__M) { + case AUD_DSP_WR_AVC_AVC_MAX_GAIN_0DB: + volume->avcMaxGain = DRX_AUD_AVC_MAX_GAIN_0DB; + break; + case AUD_DSP_WR_AVC_AVC_MAX_GAIN_6DB: + volume->avcMaxGain = DRX_AUD_AVC_MAX_GAIN_6DB; + break; + case AUD_DSP_WR_AVC_AVC_MAX_GAIN_12DB: + volume->avcMaxGain = DRX_AUD_AVC_MAX_GAIN_12DB; + break; + default: + return DRX_STS_ERROR; + break; + } + + /* reference level */ + volume->avcRefLevel = (u16_t) ((rAVC & AUD_DSP_WR_AVC_AVC_REF_LEV__M) >> + AUD_DSP_WR_AVC_AVC_REF_LEV__B); + + /* read qpeak registers and calculate strength of left and right carrier */ + /* quasi peaks formula: QP(dB) = 20 * log( AUD_DSP_RD_QPEAKx / Q(0dB) */ + /* Q(0dB) represents QP value of 0dB (hex value 0x4000) */ + /* left carrier */ + + /* QP vaues */ + /* left carrier */ + RR16(devAddr, AUD_DSP_RD_QPEAK_L__A, &rStrengthLeft); + volume->strengthLeft = (((s16_t) Log10Times100(rStrengthLeft)) - + AUD_CARRIER_STRENGTH_QP_0DB_LOG10T100) / 5; + + /* right carrier */ + RR16(devAddr, AUD_DSP_RD_QPEAK_R__A, &rStrengthRight); + volume->strengthRight = (((s16_t) Log10Times100(rStrengthRight)) - + AUD_CARRIER_STRENGTH_QP_0DB_LOG10T100) / 5; + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } - /*============================================================================*/ /** * \brief Set the current volume settings @@ -10621,148 +10200,132 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgVolume ( pDRXDemodInstance_t demod, - pDRXCfgAudVolume_t volume ) +AUDCtrlSetCfgVolume(pDRXDemodInstance_t demod, pDRXCfgAudVolume_t volume) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - - u16_t wVolume = 0; - u16_t wAVC = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + u16_t wVolume = 0; + u16_t wAVC = 0; - if ( volume == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (volume == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - /* volume */ - /* volume range from -60 to 12 (expressed in dB) */ - if ( ( volume->volume < AUD_VOLUME_DB_MIN ) || - ( volume->volume > AUD_VOLUME_DB_MAX ) ) - { - return DRX_STS_INVALID_ARG; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - RR16( devAddr, AUD_DSP_WR_VOLUME__A, &wVolume ); + /* volume */ + /* volume range from -60 to 12 (expressed in dB) */ + if ((volume->volume < AUD_VOLUME_DB_MIN) || + (volume->volume > AUD_VOLUME_DB_MAX)) { + return DRX_STS_INVALID_ARG; + } - /* clear the volume mask */ - wVolume &= (u16_t)~AUD_DSP_WR_VOLUME_VOL_MAIN__M; - if ( volume->mute == TRUE ) - { - /* mute */ - /* mute overrules volume */ - wVolume |= (u16_t) ( 0 ); + RR16(devAddr, AUD_DSP_WR_VOLUME__A, &wVolume); - } - else - { - wVolume |= (u16_t) ( ( volume->volume + AUD_VOLUME_ZERO_DB ) << - AUD_DSP_WR_VOLUME_VOL_MAIN__B ); - } + /* clear the volume mask */ + wVolume &= (u16_t) ~ AUD_DSP_WR_VOLUME_VOL_MAIN__M; + if (volume->mute == TRUE) { + /* mute */ + /* mute overrules volume */ + wVolume |= (u16_t) (0); - WR16( devAddr, AUD_DSP_WR_VOLUME__A, wVolume ); + } else { + wVolume |= (u16_t) ((volume->volume + AUD_VOLUME_ZERO_DB) << + AUD_DSP_WR_VOLUME_VOL_MAIN__B); + } - /* automatic volume control */ - RR16( devAddr, AUD_DSP_WR_AVC__A, &wAVC ); + WR16(devAddr, AUD_DSP_WR_VOLUME__A, wVolume); + + /* automatic volume control */ + RR16(devAddr, AUD_DSP_WR_AVC__A, &wAVC); + + /* clear masks that require writing */ + wAVC &= (u16_t) ~ AUD_DSP_WR_AVC_AVC_ON__M; + wAVC &= (u16_t) ~ AUD_DSP_WR_AVC_AVC_DECAY__M; + + if (volume->avcMode == DRX_AUD_AVC_OFF) { + wAVC |= (AUD_DSP_WR_AVC_AVC_ON_OFF); + } else { + + wAVC |= (AUD_DSP_WR_AVC_AVC_ON_ON); + + /* avc decay */ + switch (volume->avcMode) { + case DRX_AUD_AVC_DECAYTIME_20MS: + wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_20_MSEC; + break; + case DRX_AUD_AVC_DECAYTIME_8S: + wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_8_SEC; + break; + case DRX_AUD_AVC_DECAYTIME_4S: + wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_4_SEC; + break; + case DRX_AUD_AVC_DECAYTIME_2S: + wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_2_SEC; + break; + default: + return DRX_STS_INVALID_ARG; + } + } - /* clear masks that require writing */ - wAVC &= (u16_t) ~AUD_DSP_WR_AVC_AVC_ON__M; - wAVC &= (u16_t) ~AUD_DSP_WR_AVC_AVC_DECAY__M; + /* max attenuation */ + wAVC &= (u16_t) ~ AUD_DSP_WR_AVC_AVC_MAX_ATT__M; + switch (volume->avcMaxAtten) { + case DRX_AUD_AVC_MAX_ATTEN_12DB: + wAVC |= AUD_DSP_WR_AVC_AVC_MAX_ATT_12DB; + break; + case DRX_AUD_AVC_MAX_ATTEN_18DB: + wAVC |= AUD_DSP_WR_AVC_AVC_MAX_ATT_18DB; + break; + case DRX_AUD_AVC_MAX_ATTEN_24DB: + wAVC |= AUD_DSP_WR_AVC_AVC_MAX_ATT_24DB; + break; + default: + return DRX_STS_INVALID_ARG; + } - if ( volume->avcMode == DRX_AUD_AVC_OFF ) - { - wAVC |= ( AUD_DSP_WR_AVC_AVC_ON_OFF ); - } - else - { + /* max gain */ + wAVC &= (u16_t) ~ AUD_DSP_WR_AVC_AVC_MAX_GAIN__M; + switch (volume->avcMaxGain) { + case DRX_AUD_AVC_MAX_GAIN_0DB: + wAVC |= AUD_DSP_WR_AVC_AVC_MAX_GAIN_0DB; + break; + case DRX_AUD_AVC_MAX_GAIN_6DB: + wAVC |= AUD_DSP_WR_AVC_AVC_MAX_GAIN_6DB; + break; + case DRX_AUD_AVC_MAX_GAIN_12DB: + wAVC |= AUD_DSP_WR_AVC_AVC_MAX_GAIN_12DB; + break; + default: + return DRX_STS_INVALID_ARG; + } - wAVC |= ( AUD_DSP_WR_AVC_AVC_ON_ON ); - - /* avc decay */ - switch ( volume->avcMode ) - { - case DRX_AUD_AVC_DECAYTIME_20MS: - wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_20_MSEC; - break; - case DRX_AUD_AVC_DECAYTIME_8S: - wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_8_SEC; - break; - case DRX_AUD_AVC_DECAYTIME_4S: - wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_4_SEC; - break; - case DRX_AUD_AVC_DECAYTIME_2S: - wAVC |= AUD_DSP_WR_AVC_AVC_DECAY_2_SEC; - break; - default: - return DRX_STS_INVALID_ARG; - } - } - - /* max attenuation */ - wAVC &= (u16_t) ~AUD_DSP_WR_AVC_AVC_MAX_ATT__M; - switch ( volume->avcMaxAtten ) - { - case DRX_AUD_AVC_MAX_ATTEN_12DB: - wAVC |= AUD_DSP_WR_AVC_AVC_MAX_ATT_12DB; - break; - case DRX_AUD_AVC_MAX_ATTEN_18DB: - wAVC |= AUD_DSP_WR_AVC_AVC_MAX_ATT_18DB; - break; - case DRX_AUD_AVC_MAX_ATTEN_24DB: - wAVC |= AUD_DSP_WR_AVC_AVC_MAX_ATT_24DB; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* max gain */ - wAVC &= (u16_t) ~AUD_DSP_WR_AVC_AVC_MAX_GAIN__M; - switch ( volume->avcMaxGain ) - { - case DRX_AUD_AVC_MAX_GAIN_0DB: - wAVC |= AUD_DSP_WR_AVC_AVC_MAX_GAIN_0DB; - break; - case DRX_AUD_AVC_MAX_GAIN_6DB: - wAVC |= AUD_DSP_WR_AVC_AVC_MAX_GAIN_6DB; - break; - case DRX_AUD_AVC_MAX_GAIN_12DB: - wAVC |= AUD_DSP_WR_AVC_AVC_MAX_GAIN_12DB; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* avc reference level */ - if ( volume->avcRefLevel > AUD_MAX_AVC_REF_LEVEL ) - { - return DRX_STS_INVALID_ARG; - } + /* avc reference level */ + if (volume->avcRefLevel > AUD_MAX_AVC_REF_LEVEL) { + return DRX_STS_INVALID_ARG; + } - wAVC &= (u16_t)~AUD_DSP_WR_AVC_AVC_REF_LEV__M; - wAVC |= (u16_t)( volume->avcRefLevel << AUD_DSP_WR_AVC_AVC_REF_LEV__B ); + wAVC &= (u16_t) ~ AUD_DSP_WR_AVC_AVC_REF_LEV__M; + wAVC |= (u16_t) (volume->avcRefLevel << AUD_DSP_WR_AVC_AVC_REF_LEV__B); - WR16( devAddr, AUD_DSP_WR_AVC__A, wAVC ); + WR16(devAddr, AUD_DSP_WR_AVC__A, wAVC); - /* all done, store config in data structure */ - extAttr->audData.volume = *volume; + /* all done, store config in data structure */ + extAttr->audData.volume = *volume; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } - /*============================================================================*/ /** * \brief Get the I2S settings @@ -10772,112 +10335,98 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgOutputI2S ( pDRXDemodInstance_t demod, - pDRXCfgI2SOutput_t output ) +AUDCtrlGetCfgOutputI2S(pDRXDemodInstance_t demod, pDRXCfgI2SOutput_t output) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - u16_t wI2SConfig = 0; - u16_t rI2SFreq = 0; + u16_t wI2SConfig = 0; + u16_t rI2SFreq = 0; - if ( output == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (output == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - RR16( devAddr, AUD_DEM_RAM_I2S_CONFIG2__A, &wI2SConfig ); - RR16( devAddr, AUD_DSP_WR_I2S_OUT_FS__A, &rI2SFreq ); + RR16(devAddr, AUD_DEM_RAM_I2S_CONFIG2__A, &wI2SConfig); + RR16(devAddr, AUD_DSP_WR_I2S_OUT_FS__A, &rI2SFreq); + + /* I2S mode */ + switch (wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST__M) { + case AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_MASTER: + output->mode = DRX_I2S_MODE_MASTER; + break; + case AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_SLAVE: + output->mode = DRX_I2S_MODE_SLAVE; + break; + default: + return DRX_STS_ERROR; + } - /* I2S mode */ - switch ( wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST__M ) - { - case AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_MASTER: - output->mode = DRX_I2S_MODE_MASTER; - break; - case AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_SLAVE: - output->mode = DRX_I2S_MODE_SLAVE; - break; - default: - return DRX_STS_ERROR; - } - - /* I2S format */ - switch ( wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE__M ) - { - case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_DELAY: - output->format = DRX_I2S_FORMAT_WS_ADVANCED; - break; - case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_NO_DELAY: - output->format = DRX_I2S_FORMAT_WS_WITH_DATA; - break; - default: - return DRX_STS_ERROR; - } - - /* I2S word length */ - switch ( wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN__M ) - { - case AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_16: - output->wordLength = DRX_I2S_WORDLENGTH_16; - break; - case AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_32: - output->wordLength = DRX_I2S_WORDLENGTH_32; - break; - default: - return DRX_STS_ERROR; - } - - /* I2S polarity */ - switch ( wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL__M ) - { - case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_HIGH: - output->polarity = DRX_I2S_POLARITY_LEFT; - break; - case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_LOW: - output->polarity = DRX_I2S_POLARITY_RIGHT; - break; - default: - return DRX_STS_ERROR; - } - - /* I2S output enabled */ - if ( ( wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE__M ) - == AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE_ENABLE ) - { - output->outputEnable = TRUE; - } - else - { - output->outputEnable = FALSE; - } + /* I2S format */ + switch (wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE__M) { + case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_DELAY: + output->format = DRX_I2S_FORMAT_WS_ADVANCED; + break; + case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_NO_DELAY: + output->format = DRX_I2S_FORMAT_WS_WITH_DATA; + break; + default: + return DRX_STS_ERROR; + } - if ( rI2SFreq > 0 ) - { - output->frequency = 6144UL * 48000 / rI2SFreq; - if ( output->wordLength == DRX_I2S_WORDLENGTH_16 ) - { - output->frequency *= 2; - } - } - else - { - output->frequency = AUD_I2S_FREQUENCY_MAX; - } + /* I2S word length */ + switch (wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN__M) { + case AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_16: + output->wordLength = DRX_I2S_WORDLENGTH_16; + break; + case AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_32: + output->wordLength = DRX_I2S_WORDLENGTH_32; + break; + default: + return DRX_STS_ERROR; + } + + /* I2S polarity */ + switch (wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL__M) { + case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_HIGH: + output->polarity = DRX_I2S_POLARITY_LEFT; + break; + case AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_LOW: + output->polarity = DRX_I2S_POLARITY_RIGHT; + break; + default: + return DRX_STS_ERROR; + } - return DRX_STS_OK; + /* I2S output enabled */ + if ((wI2SConfig & AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE__M) + == AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE_ENABLE) { + output->outputEnable = TRUE; + } else { + output->outputEnable = FALSE; + } + + if (rI2SFreq > 0) { + output->frequency = 6144UL * 48000 / rI2SFreq; + if (output->wordLength == DRX_I2S_WORDLENGTH_16) { + output->frequency *= 2; + } + } else { + output->frequency = AUD_I2S_FREQUENCY_MAX; + } + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -10889,165 +10438,149 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgOutputI2S ( pDRXDemodInstance_t demod, - pDRXCfgI2SOutput_t output ) +AUDCtrlSetCfgOutputI2S(pDRXDemodInstance_t demod, pDRXCfgI2SOutput_t output) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - u16_t wI2SConfig = 0; - u16_t wI2SPadsDataDa = 0; - u16_t wI2SPadsDataCl = 0; - u16_t wI2SPadsDataWs = 0; - u32_t wI2SFreq = 0; + u16_t wI2SConfig = 0; + u16_t wI2SPadsDataDa = 0; + u16_t wI2SPadsDataCl = 0; + u16_t wI2SPadsDataWs = 0; + u32_t wI2SFreq = 0; - if ( output == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (output == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - RR16( devAddr, AUD_DEM_RAM_I2S_CONFIG2__A, &wI2SConfig ); + RR16(devAddr, AUD_DEM_RAM_I2S_CONFIG2__A, &wI2SConfig); - /* I2S mode */ - wI2SConfig &= (u16_t)~AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST__M; + /* I2S mode */ + wI2SConfig &= (u16_t) ~ AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST__M; - switch ( output->mode ) - { - case DRX_I2S_MODE_MASTER: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_MASTER; - break; - case DRX_I2S_MODE_SLAVE: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_SLAVE; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* I2S format */ - wI2SConfig &= (u16_t)~AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE__M; - - switch ( output->format ) - { - case DRX_I2S_FORMAT_WS_ADVANCED: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_DELAY; - break; - case DRX_I2S_FORMAT_WS_WITH_DATA: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_NO_DELAY; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* I2S word length */ - wI2SConfig &= (u16_t)~AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN__M; - - switch ( output->wordLength ) - { - case DRX_I2S_WORDLENGTH_16: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_16; - break; - case DRX_I2S_WORDLENGTH_32: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_32; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* I2S polarity */ - wI2SConfig &= (u16_t)~AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL__M; - switch ( output->polarity ) - { - case DRX_I2S_POLARITY_LEFT: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_HIGH; - break; - case DRX_I2S_POLARITY_RIGHT: - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_LOW; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* I2S output enabled */ - wI2SConfig &= (u16_t)~AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE__M; - if ( output->outputEnable == TRUE ) - { - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE_ENABLE; - } - else - { - wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE_DISABLE; - } + switch (output->mode) { + case DRX_I2S_MODE_MASTER: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_MASTER; + break; + case DRX_I2S_MODE_SLAVE: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_SLV_MST_SLAVE; + break; + default: + return DRX_STS_INVALID_ARG; + } + + /* I2S format */ + wI2SConfig &= (u16_t) ~ AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE__M; + + switch (output->format) { + case DRX_I2S_FORMAT_WS_ADVANCED: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_DELAY; + break; + case DRX_I2S_FORMAT_WS_WITH_DATA: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_MODE_NO_DELAY; + break; + default: + return DRX_STS_INVALID_ARG; + } - /* - I2S frequency + /* I2S word length */ + wI2SConfig &= (u16_t) ~ AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN__M; + + switch (output->wordLength) { + case DRX_I2S_WORDLENGTH_16: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_16; + break; + case DRX_I2S_WORDLENGTH_32: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_32; + break; + default: + return DRX_STS_INVALID_ARG; + } - wI2SFreq = 6144 * 48000 * nrbits / ( 32 * frequency ) + /* I2S polarity */ + wI2SConfig &= (u16_t) ~ AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL__M; + switch (output->polarity) { + case DRX_I2S_POLARITY_LEFT: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_HIGH; + break; + case DRX_I2S_POLARITY_RIGHT: + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_WS_POL_LEFT_LOW; + break; + default: + return DRX_STS_INVALID_ARG; + } - 16bit: 6144 * 48000 / ( 2 * freq ) = ( 6144 * 48000 / freq ) / 2 - 32bit: 6144 * 48000 / freq = ( 6144 * 48000 / freq ) - */ - if ( ( output->frequency > AUD_I2S_FREQUENCY_MAX ) || - output->frequency < AUD_I2S_FREQUENCY_MIN ) - { - return DRX_STS_INVALID_ARG; - } + /* I2S output enabled */ + wI2SConfig &= (u16_t) ~ AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE__M; + if (output->outputEnable == TRUE) { + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE_ENABLE; + } else { + wI2SConfig |= AUD_DEM_WR_I2S_CONFIG2_I2S_ENABLE_DISABLE; + } - wI2SFreq = (6144UL * 48000UL) + (output->frequency >> 1); - wI2SFreq /= output->frequency; + /* + I2S frequency - if ( output->wordLength == DRX_I2S_WORDLENGTH_16 ) - { - wI2SFreq *= 2; - } + wI2SFreq = 6144 * 48000 * nrbits / ( 32 * frequency ) - WR16( devAddr, AUD_DEM_WR_I2S_CONFIG2__A, wI2SConfig ); - WR16( devAddr, AUD_DSP_WR_I2S_OUT_FS__A, (u16_t) wI2SFreq ); + 16bit: 6144 * 48000 / ( 2 * freq ) = ( 6144 * 48000 / freq ) / 2 + 32bit: 6144 * 48000 / freq = ( 6144 * 48000 / freq ) + */ + if ((output->frequency > AUD_I2S_FREQUENCY_MAX) || + output->frequency < AUD_I2S_FREQUENCY_MIN) { + return DRX_STS_INVALID_ARG; + } - /* configure I2S output pads for master or slave mode */ - WR16( devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY ); + wI2SFreq = (6144UL * 48000UL) + (output->frequency >> 1); + wI2SFreq /= output->frequency; - if (output->mode == DRX_I2S_MODE_MASTER) - { - wI2SPadsDataDa = SIO_PDR_I2S_DA_CFG_MODE__MASTER | - SIO_PDR_I2S_DA_CFG_DRIVE__MASTER; - wI2SPadsDataCl = SIO_PDR_I2S_CL_CFG_MODE__MASTER | - SIO_PDR_I2S_CL_CFG_DRIVE__MASTER; - wI2SPadsDataWs = SIO_PDR_I2S_WS_CFG_MODE__MASTER | - SIO_PDR_I2S_WS_CFG_DRIVE__MASTER; - } - else - { - wI2SPadsDataDa = SIO_PDR_I2S_DA_CFG_MODE__SLAVE | - SIO_PDR_I2S_DA_CFG_DRIVE__SLAVE; - wI2SPadsDataCl = SIO_PDR_I2S_CL_CFG_MODE__SLAVE | - SIO_PDR_I2S_CL_CFG_DRIVE__SLAVE; - wI2SPadsDataWs = SIO_PDR_I2S_WS_CFG_MODE__SLAVE | - SIO_PDR_I2S_WS_CFG_DRIVE__SLAVE; - } + if (output->wordLength == DRX_I2S_WORDLENGTH_16) { + wI2SFreq *= 2; + } - WR16( devAddr, SIO_PDR_I2S_DA_CFG__A, wI2SPadsDataDa ); - WR16( devAddr, SIO_PDR_I2S_CL_CFG__A, wI2SPadsDataCl ); - WR16( devAddr, SIO_PDR_I2S_WS_CFG__A, wI2SPadsDataWs ); + WR16(devAddr, AUD_DEM_WR_I2S_CONFIG2__A, wI2SConfig); + WR16(devAddr, AUD_DSP_WR_I2S_OUT_FS__A, (u16_t) wI2SFreq); + + /* configure I2S output pads for master or slave mode */ + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY_KEY); + + if (output->mode == DRX_I2S_MODE_MASTER) { + wI2SPadsDataDa = SIO_PDR_I2S_DA_CFG_MODE__MASTER | + SIO_PDR_I2S_DA_CFG_DRIVE__MASTER; + wI2SPadsDataCl = SIO_PDR_I2S_CL_CFG_MODE__MASTER | + SIO_PDR_I2S_CL_CFG_DRIVE__MASTER; + wI2SPadsDataWs = SIO_PDR_I2S_WS_CFG_MODE__MASTER | + SIO_PDR_I2S_WS_CFG_DRIVE__MASTER; + } else { + wI2SPadsDataDa = SIO_PDR_I2S_DA_CFG_MODE__SLAVE | + SIO_PDR_I2S_DA_CFG_DRIVE__SLAVE; + wI2SPadsDataCl = SIO_PDR_I2S_CL_CFG_MODE__SLAVE | + SIO_PDR_I2S_CL_CFG_DRIVE__SLAVE; + wI2SPadsDataWs = SIO_PDR_I2S_WS_CFG_MODE__SLAVE | + SIO_PDR_I2S_WS_CFG_DRIVE__SLAVE; + } - WR16( devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE ); + WR16(devAddr, SIO_PDR_I2S_DA_CFG__A, wI2SPadsDataDa); + WR16(devAddr, SIO_PDR_I2S_CL_CFG__A, wI2SPadsDataCl); + WR16(devAddr, SIO_PDR_I2S_WS_CFG__A, wI2SPadsDataWs); + WR16(devAddr, SIO_TOP_COMM_KEY__A, SIO_TOP_COMM_KEY__PRE); - /* all done, store config in data structure */ - extAttr->audData.i2sdata = *output; + /* all done, store config in data structure */ + extAttr->audData.i2sdata = *output; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11060,57 +10593,53 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgAutoSound ( pDRXDemodInstance_t demod, - pDRXCfgAudAutoSound_t autoSound ) +AUDCtrlGetCfgAutoSound(pDRXDemodInstance_t demod, + pDRXCfgAudAutoSound_t autoSound) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t rModus = 0; + u16_t rModus = 0; - if ( autoSound == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (autoSound == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - CHK_ERROR ( AUDGetModus ( demod, &rModus )); + CHK_ERROR(AUDGetModus(demod, &rModus)); + + switch (rModus & (AUD_DEM_WR_MODUS_MOD_ASS__M | + AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG__M)) { + case AUD_DEM_WR_MODUS_MOD_ASS_OFF | AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED: + case AUD_DEM_WR_MODUS_MOD_ASS_OFF | AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_ENABLED: + *autoSound = + DRX_AUD_AUTO_SOUND_OFF; + break; + case AUD_DEM_WR_MODUS_MOD_ASS_ON | AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_ENABLED: + *autoSound = + DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON; + break; + case AUD_DEM_WR_MODUS_MOD_ASS_ON | AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED: + *autoSound = + DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_OFF; + break; + default: + return DRX_STS_ERROR; + } - switch ( rModus & ( AUD_DEM_WR_MODUS_MOD_ASS__M | - AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG__M ) ) - { - case AUD_DEM_WR_MODUS_MOD_ASS_OFF | - AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED: - case AUD_DEM_WR_MODUS_MOD_ASS_OFF | - AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_ENABLED: - *autoSound = DRX_AUD_AUTO_SOUND_OFF; - break; - case AUD_DEM_WR_MODUS_MOD_ASS_ON | - AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_ENABLED: - *autoSound = DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON; - break; - case AUD_DEM_WR_MODUS_MOD_ASS_ON | - AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED: - *autoSound = DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_OFF; - break; - default: - return DRX_STS_ERROR; - } - - - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } + /*============================================================================*/ /** * \brief Set the Automatic Standard Select (ASS) @@ -11121,66 +10650,61 @@ rw_error: * */ static DRXStatus_t -AUDCtrSetlCfgAutoSound ( pDRXDemodInstance_t demod, - pDRXCfgAudAutoSound_t autoSound ) +AUDCtrSetlCfgAutoSound(pDRXDemodInstance_t demod, + pDRXCfgAudAutoSound_t autoSound) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; - - u16_t rModus = 0; - u16_t wModus = 0; - - if ( autoSound == NULL ) - { - return DRX_STS_INVALID_ARG; - } + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + u16_t rModus = 0; + u16_t wModus = 0; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + if (autoSound == NULL) { + return DRX_STS_INVALID_ARG; + } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - CHK_ERROR ( AUDGetModus ( demod, &rModus )); + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - wModus = rModus; - /* clear ASS & ASC bits */ - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_ASS__M; - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG__M; + CHK_ERROR(AUDGetModus(demod, &rModus)); + + wModus = rModus; + /* clear ASS & ASC bits */ + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_ASS__M; + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG__M; + + switch (*autoSound) { + case DRX_AUD_AUTO_SOUND_OFF: + wModus |= AUD_DEM_WR_MODUS_MOD_ASS_OFF; + wModus |= AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED; + break; + case DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON: + wModus |= AUD_DEM_WR_MODUS_MOD_ASS_ON; + wModus |= AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_ENABLED; + break; + case DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_OFF: + wModus |= AUD_DEM_WR_MODUS_MOD_ASS_ON; + wModus |= AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED; + break; + default: + return DRX_STS_INVALID_ARG; + } - switch ( *autoSound ) - { - case DRX_AUD_AUTO_SOUND_OFF: - wModus |= AUD_DEM_WR_MODUS_MOD_ASS_OFF; - wModus |= AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED; - break; - case DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_ON: - wModus |= AUD_DEM_WR_MODUS_MOD_ASS_ON; - wModus |= AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_ENABLED; - break; - case DRX_AUD_AUTO_SOUND_SELECT_ON_CHANGE_OFF: - wModus |= AUD_DEM_WR_MODUS_MOD_ASS_ON; - wModus |= AUD_DEM_WR_MODUS_MOD_DIS_STD_CHG_DISABLED; - break; - default: - return DRX_STS_INVALID_ARG; - } - - if ( wModus != rModus ) - { - WR16( devAddr, AUD_DEM_WR_MODUS__A, wModus ); - } - /* copy to data structure */ - extAttr->audData.autoSound = *autoSound; + if (wModus != rModus) { + WR16(devAddr, AUD_DEM_WR_MODUS__A, wModus); + } + /* copy to data structure */ + extAttr->audData.autoSound = *autoSound; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11192,43 +10716,39 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgASSThres ( pDRXDemodInstance_t demod, - pDRXCfgAudASSThres_t thres ) +AUDCtrlGetCfgASSThres(pDRXDemodInstance_t demod, pDRXCfgAudASSThres_t thres) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; - - u16_t thresA2 = 0; - u16_t thresBtsc = 0; - u16_t thresNicam = 0; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - if ( thres == NULL ) - { - return DRX_STS_INVALID_ARG; - } + u16_t thresA2 = 0; + u16_t thresBtsc = 0; + u16_t thresNicam = 0; - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + if (thres == NULL) { + return DRX_STS_INVALID_ARG; + } - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - RR16( devAddr , AUD_DEM_RAM_A2_THRSHLD__A, &thresA2 ); - RR16( devAddr , AUD_DEM_RAM_BTSC_THRSHLD__A, &thresBtsc ); - RR16( devAddr , AUD_DEM_RAM_NICAM_THRSHLD__A, &thresNicam ); + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - thres->a2 = thresA2; - thres->btsc = thresBtsc; - thres->nicam = thresNicam; + RR16(devAddr, AUD_DEM_RAM_A2_THRSHLD__A, &thresA2); + RR16(devAddr, AUD_DEM_RAM_BTSC_THRSHLD__A, &thresBtsc); + RR16(devAddr, AUD_DEM_RAM_NICAM_THRSHLD__A, &thresNicam); + thres->a2 = thresA2; + thres->btsc = thresBtsc; + thres->nicam = thresNicam; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11240,37 +10760,34 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgASSThres ( pDRXDemodInstance_t demod, - pDRXCfgAudASSThres_t thres ) +AUDCtrlSetCfgASSThres(pDRXDemodInstance_t demod, pDRXCfgAudASSThres_t thres) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - if ( thres == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (thres == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - WR16( devAddr , AUD_DEM_WR_A2_THRSHLD__A, thres->a2 ); - WR16( devAddr , AUD_DEM_WR_BTSC_THRSHLD__A, thres->btsc ); - WR16( devAddr , AUD_DEM_WR_NICAM_THRSHLD__A, thres->nicam ); + WR16(devAddr, AUD_DEM_WR_A2_THRSHLD__A, thres->a2); + WR16(devAddr, AUD_DEM_WR_BTSC_THRSHLD__A, thres->btsc); + WR16(devAddr, AUD_DEM_WR_NICAM_THRSHLD__A, thres->nicam); - /* update DRXK data structure with hardware values */ - extAttr->audData.assThresholds = *thres; + /* update DRXK data structure with hardware values */ + extAttr->audData.assThresholds = *thres; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11282,105 +10799,100 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgCarrier ( pDRXDemodInstance_t demod, - pDRXCfgAudCarriers_t carriers ) +AUDCtrlGetCfgCarrier(pDRXDemodInstance_t demod, pDRXCfgAudCarriers_t carriers) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t wModus = 0; + u16_t wModus = 0; - u16_t dcoAHi = 0; - u16_t dcoALo = 0; - u16_t dcoBHi = 0; - u16_t dcoBLo = 0; + u16_t dcoAHi = 0; + u16_t dcoALo = 0; + u16_t dcoBHi = 0; + u16_t dcoBLo = 0; - u32_t valA = 0; - u32_t valB = 0; + u32_t valA = 0; + u32_t valB = 0; - u16_t dcLvlA = 0; - u16_t dcLvlB = 0; + u16_t dcLvlA = 0; + u16_t dcLvlB = 0; - u16_t cmThesA = 0; - u16_t cmThesB = 0; + u16_t cmThesA = 0; + u16_t cmThesB = 0; - if ( carriers == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (carriers == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - CHK_ERROR ( AUDGetModus ( demod, &wModus )); + CHK_ERROR(AUDGetModus(demod, &wModus)); + + /* Behaviour of primary audio channel */ + switch (wModus & (AUD_DEM_WR_MODUS_MOD_CM_A__M)) { + case AUD_DEM_WR_MODUS_MOD_CM_A_MUTE: + carriers->a.opt = DRX_NO_CARRIER_MUTE; + break; + case AUD_DEM_WR_MODUS_MOD_CM_A_NOISE: + carriers->a.opt = DRX_NO_CARRIER_NOISE; + break; + default: + return DRX_STS_ERROR; + break; + } - /* Behaviour of primary audio channel */ - switch ( wModus & ( AUD_DEM_WR_MODUS_MOD_CM_A__M) ) - { - case AUD_DEM_WR_MODUS_MOD_CM_A_MUTE: - carriers->a.opt = DRX_NO_CARRIER_MUTE; - break; - case AUD_DEM_WR_MODUS_MOD_CM_A_NOISE: - carriers->a.opt = DRX_NO_CARRIER_NOISE; - break; - default: - return DRX_STS_ERROR; - break; - } - - /* Behaviour of secondary audio channel */ - switch ( wModus & ( AUD_DEM_WR_MODUS_MOD_CM_B__M) ) - { - case AUD_DEM_WR_MODUS_MOD_CM_B_MUTE: - carriers->b.opt = DRX_NO_CARRIER_MUTE; - break; - case AUD_DEM_WR_MODUS_MOD_CM_B_NOISE: - carriers->b.opt = DRX_NO_CARRIER_NOISE; - break; - default: - return DRX_STS_ERROR; - break; - } - - /* frequency adjustment for primary & secondary audio channel */ - RR16( devAddr, AUD_DEM_RAM_DCO_A_HI__A, &dcoAHi ); - RR16( devAddr, AUD_DEM_RAM_DCO_A_LO__A, &dcoALo ); - RR16( devAddr, AUD_DEM_RAM_DCO_B_HI__A, &dcoBHi ); - RR16( devAddr, AUD_DEM_RAM_DCO_B_LO__A, &dcoBLo ); - - valA = ( ( (u32_t) dcoAHi) << 12 ) | ( (u32_t) dcoALo & 0xFFF ); - valB = ( ( (u32_t) dcoBHi) << 12 ) | ( (u32_t) dcoBLo & 0xFFF ); - - /* Multiply by 20250 * 1>>24 ~= 2 / 1657 */ - carriers->a.dco = DRX_S24TODRXFREQ( valA ) * 2L / 1657L; - carriers->b.dco = DRX_S24TODRXFREQ( valB ) * 2L / 1657L; - - /* DC level of the incoming FM signal on the primary - & seconday sound channel */ - RR16( devAddr, AUD_DSP_RD_FM_DC_LEVEL_A__A, &dcLvlA ); - RR16( devAddr, AUD_DSP_RD_FM_DC_LEVEL_B__A, &dcLvlB ); - - /* offset (kHz) = (dcLvl / 322) */ - carriers->a.shift = ( DRX_U16TODRXFREQ( dcLvlA ) / 322L ); - carriers->b.shift = ( DRX_U16TODRXFREQ( dcLvlB ) / 322L ); - - /* Carrier detetcion threshold for primary & secondary channel */ - RR16( devAddr, AUD_DEM_RAM_CM_A_THRSHLD__A, &cmThesA); - RR16( devAddr, AUD_DEM_RAM_CM_B_THRSHLD__A, &cmThesB); - - carriers->a.thres = cmThesA; - carriers->b.thres = cmThesB; - - return DRX_STS_OK; + /* Behaviour of secondary audio channel */ + switch (wModus & (AUD_DEM_WR_MODUS_MOD_CM_B__M)) { + case AUD_DEM_WR_MODUS_MOD_CM_B_MUTE: + carriers->b.opt = DRX_NO_CARRIER_MUTE; + break; + case AUD_DEM_WR_MODUS_MOD_CM_B_NOISE: + carriers->b.opt = DRX_NO_CARRIER_NOISE; + break; + default: + return DRX_STS_ERROR; + break; + } + + /* frequency adjustment for primary & secondary audio channel */ + RR16(devAddr, AUD_DEM_RAM_DCO_A_HI__A, &dcoAHi); + RR16(devAddr, AUD_DEM_RAM_DCO_A_LO__A, &dcoALo); + RR16(devAddr, AUD_DEM_RAM_DCO_B_HI__A, &dcoBHi); + RR16(devAddr, AUD_DEM_RAM_DCO_B_LO__A, &dcoBLo); + + valA = (((u32_t) dcoAHi) << 12) | ((u32_t) dcoALo & 0xFFF); + valB = (((u32_t) dcoBHi) << 12) | ((u32_t) dcoBLo & 0xFFF); + + /* Multiply by 20250 * 1>>24 ~= 2 / 1657 */ + carriers->a.dco = DRX_S24TODRXFREQ(valA) * 2L / 1657L; + carriers->b.dco = DRX_S24TODRXFREQ(valB) * 2L / 1657L; + + /* DC level of the incoming FM signal on the primary + & seconday sound channel */ + RR16(devAddr, AUD_DSP_RD_FM_DC_LEVEL_A__A, &dcLvlA); + RR16(devAddr, AUD_DSP_RD_FM_DC_LEVEL_B__A, &dcLvlB); + + /* offset (kHz) = (dcLvl / 322) */ + carriers->a.shift = (DRX_U16TODRXFREQ(dcLvlA) / 322L); + carriers->b.shift = (DRX_U16TODRXFREQ(dcLvlB) / 322L); + + /* Carrier detetcion threshold for primary & secondary channel */ + RR16(devAddr, AUD_DEM_RAM_CM_A_THRSHLD__A, &cmThesA); + RR16(devAddr, AUD_DEM_RAM_CM_B_THRSHLD__A, &cmThesB); + + carriers->a.thres = cmThesA; + carriers->b.thres = cmThesB; + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11392,103 +10904,95 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgCarrier ( pDRXDemodInstance_t demod, - pDRXCfgAudCarriers_t carriers ) +AUDCtrlSetCfgCarrier(pDRXDemodInstance_t demod, pDRXCfgAudCarriers_t carriers) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; - - u16_t wModus = 0; - u16_t rModus = 0; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t dcoAHi = 0; - u16_t dcoALo = 0; - u16_t dcoBHi = 0; - u16_t dcoBLo = 0; + u16_t wModus = 0; + u16_t rModus = 0; - s32_t valA = 0; - s32_t valB = 0; + u16_t dcoAHi = 0; + u16_t dcoALo = 0; + u16_t dcoBHi = 0; + u16_t dcoBLo = 0; - if ( carriers == NULL ) - { - return DRX_STS_INVALID_ARG; - } + s32_t valA = 0; + s32_t valB = 0; - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + if (carriers == NULL) { + return DRX_STS_INVALID_ARG; + } - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - CHK_ERROR ( AUDGetModus ( demod, &rModus )); + CHK_ERROR(AUDGetModus(demod, &rModus)); + + wModus = rModus; + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_CM_A__M; + /* Behaviour of primary audio channel */ + switch (carriers->a.opt) { + case DRX_NO_CARRIER_MUTE: + wModus |= AUD_DEM_WR_MODUS_MOD_CM_A_MUTE; + break; + case DRX_NO_CARRIER_NOISE: + wModus |= AUD_DEM_WR_MODUS_MOD_CM_A_NOISE; + break; + default: + return DRX_STS_INVALID_ARG; + break; + } + /* Behaviour of secondary audio channel */ + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_CM_B__M; + switch (carriers->b.opt) { + case DRX_NO_CARRIER_MUTE: + wModus |= AUD_DEM_WR_MODUS_MOD_CM_B_MUTE; + break; + case DRX_NO_CARRIER_NOISE: + wModus |= AUD_DEM_WR_MODUS_MOD_CM_B_NOISE; + break; + default: + return DRX_STS_INVALID_ARG; + break; + } - wModus = rModus; - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_CM_A__M; - /* Behaviour of primary audio channel */ - switch ( carriers->a.opt ) - { - case DRX_NO_CARRIER_MUTE: - wModus |= AUD_DEM_WR_MODUS_MOD_CM_A_MUTE; - break; - case DRX_NO_CARRIER_NOISE: - wModus |= AUD_DEM_WR_MODUS_MOD_CM_A_NOISE; - break; - default: - return DRX_STS_INVALID_ARG; - break; - } - - /* Behaviour of secondary audio channel */ - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_CM_B__M; - switch ( carriers->b.opt ) - { - case DRX_NO_CARRIER_MUTE: - wModus |= AUD_DEM_WR_MODUS_MOD_CM_B_MUTE; - break; - case DRX_NO_CARRIER_NOISE: - wModus |= AUD_DEM_WR_MODUS_MOD_CM_B_NOISE; - break; - default: - return DRX_STS_INVALID_ARG; - break; - } - - /* now update the modus register */ - if ( wModus != rModus) - { - WR16( devAddr, AUD_DEM_WR_MODUS__A, wModus ); - } + /* now update the modus register */ + if (wModus != rModus) { + WR16(devAddr, AUD_DEM_WR_MODUS__A, wModus); + } - /* frequency adjustment for primary & secondary audio channel */ - valA = (s32_t) ( ( carriers->a.dco ) * 1657L / 2); - valB = (s32_t) ( ( carriers->b.dco ) * 1657L / 2); + /* frequency adjustment for primary & secondary audio channel */ + valA = (s32_t) ((carriers->a.dco) * 1657L / 2); + valB = (s32_t) ((carriers->b.dco) * 1657L / 2); - dcoAHi = (u16_t) ( ( valA >> 12 ) & 0xFFF ); - dcoALo = (u16_t) ( valA & 0xFFF ); - dcoBHi = (u16_t) ( ( valB >> 12 ) & 0xFFF ); - dcoBLo = (u16_t) ( valB & 0xFFF ); + dcoAHi = (u16_t) ((valA >> 12) & 0xFFF); + dcoALo = (u16_t) (valA & 0xFFF); + dcoBHi = (u16_t) ((valB >> 12) & 0xFFF); + dcoBLo = (u16_t) (valB & 0xFFF); - WR16( devAddr, AUD_DEM_WR_DCO_A_HI__A, dcoAHi ); - WR16( devAddr, AUD_DEM_WR_DCO_A_LO__A, dcoALo ); - WR16( devAddr, AUD_DEM_WR_DCO_B_HI__A, dcoBHi ); - WR16( devAddr, AUD_DEM_WR_DCO_B_LO__A, dcoBLo ); + WR16(devAddr, AUD_DEM_WR_DCO_A_HI__A, dcoAHi); + WR16(devAddr, AUD_DEM_WR_DCO_A_LO__A, dcoALo); + WR16(devAddr, AUD_DEM_WR_DCO_B_HI__A, dcoBHi); + WR16(devAddr, AUD_DEM_WR_DCO_B_LO__A, dcoBLo); - /* Carrier detetcion threshold for primary & secondary channel */ - WR16( devAddr, AUD_DEM_WR_CM_A_THRSHLD__A, carriers->a.thres); - WR16( devAddr, AUD_DEM_WR_CM_B_THRSHLD__A, carriers->b.thres); + /* Carrier detetcion threshold for primary & secondary channel */ + WR16(devAddr, AUD_DEM_WR_CM_A_THRSHLD__A, carriers->a.thres); + WR16(devAddr, AUD_DEM_WR_CM_B_THRSHLD__A, carriers->b.thres); - /* update DRXK data structure */ - extAttr->audData.carriers = *carriers; + /* update DRXK data structure */ + extAttr->audData.carriers = *carriers; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11500,96 +11004,90 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgMixer ( pDRXDemodInstance_t demod, - pDRXCfgAudMixer_t mixer ) +AUDCtrlGetCfgMixer(pDRXDemodInstance_t demod, pDRXCfgAudMixer_t mixer) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t srcI2SMatr = 0; - u16_t fmMatr = 0; + u16_t srcI2SMatr = 0; + u16_t fmMatr = 0; - if ( mixer == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (mixer == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* Source Selctor */ - RR16( devAddr, AUD_DSP_WR_SRC_I2S_MATR__A, &srcI2SMatr); + /* Source Selctor */ + RR16(devAddr, AUD_DSP_WR_SRC_I2S_MATR__A, &srcI2SMatr); + + switch (srcI2SMatr & AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S__M) { + case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_MONO: + mixer->sourceI2S = DRX_AUD_SRC_MONO; + break; + case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_AB: + mixer->sourceI2S = DRX_AUD_SRC_STEREO_OR_AB; + break; + case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_A: + mixer->sourceI2S = DRX_AUD_SRC_STEREO_OR_A; + break; + case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_B: + mixer->sourceI2S = DRX_AUD_SRC_STEREO_OR_B; + break; + default: + return DRX_STS_ERROR; + } - switch ( srcI2SMatr & AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S__M ) - { - case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_MONO: - mixer->sourceI2S = DRX_AUD_SRC_MONO; - break; - case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_AB: - mixer->sourceI2S = DRX_AUD_SRC_STEREO_OR_AB; - break; - case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_A: - mixer->sourceI2S = DRX_AUD_SRC_STEREO_OR_A; - break; - case AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_B: - mixer->sourceI2S = DRX_AUD_SRC_STEREO_OR_B; - break; - default: - return DRX_STS_ERROR; - } - - /* Matrix */ - switch ( srcI2SMatr & AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S__M ) - { - case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_MONO: - mixer->matrixI2S = DRX_AUD_I2S_MATRIX_MONO; - break; - case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_STEREO: - mixer->matrixI2S = DRX_AUD_I2S_MATRIX_STEREO; - break; - case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_A: - mixer->matrixI2S = DRX_AUD_I2S_MATRIX_A_MONO; - break; - case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_B: - mixer->matrixI2S = DRX_AUD_I2S_MATRIX_B_MONO; - break; - default: - return DRX_STS_ERROR; - } - - /* FM Matrix */ - RR16( devAddr, AUD_DEM_WR_FM_MATRIX__A, &fmMatr ); - switch ( fmMatr & AUD_DEM_WR_FM_MATRIX__M ) - { - case AUD_DEM_WR_FM_MATRIX_NO_MATRIX: - mixer->matrixFm = DRX_AUD_FM_MATRIX_NO_MATRIX; - break; - case AUD_DEM_WR_FM_MATRIX_GERMAN_MATRIX: - mixer->matrixFm = DRX_AUD_FM_MATRIX_GERMAN; - break; - case AUD_DEM_WR_FM_MATRIX_KOREAN_MATRIX: - mixer->matrixFm = DRX_AUD_FM_MATRIX_KOREAN; - break; - case AUD_DEM_WR_FM_MATRIX_SOUND_A: - mixer->matrixFm = DRX_AUD_FM_MATRIX_SOUND_A; - break; - case AUD_DEM_WR_FM_MATRIX_SOUND_B: - mixer->matrixFm = DRX_AUD_FM_MATRIX_SOUND_B; - break; - default: - return DRX_STS_ERROR; - } - - return DRX_STS_OK; + /* Matrix */ + switch (srcI2SMatr & AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S__M) { + case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_MONO: + mixer->matrixI2S = DRX_AUD_I2S_MATRIX_MONO; + break; + case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_STEREO: + mixer->matrixI2S = DRX_AUD_I2S_MATRIX_STEREO; + break; + case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_A: + mixer->matrixI2S = DRX_AUD_I2S_MATRIX_A_MONO; + break; + case AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_B: + mixer->matrixI2S = DRX_AUD_I2S_MATRIX_B_MONO; + break; + default: + return DRX_STS_ERROR; + } + + /* FM Matrix */ + RR16(devAddr, AUD_DEM_WR_FM_MATRIX__A, &fmMatr); + switch (fmMatr & AUD_DEM_WR_FM_MATRIX__M) { + case AUD_DEM_WR_FM_MATRIX_NO_MATRIX: + mixer->matrixFm = DRX_AUD_FM_MATRIX_NO_MATRIX; + break; + case AUD_DEM_WR_FM_MATRIX_GERMAN_MATRIX: + mixer->matrixFm = DRX_AUD_FM_MATRIX_GERMAN; + break; + case AUD_DEM_WR_FM_MATRIX_KOREAN_MATRIX: + mixer->matrixFm = DRX_AUD_FM_MATRIX_KOREAN; + break; + case AUD_DEM_WR_FM_MATRIX_SOUND_A: + mixer->matrixFm = DRX_AUD_FM_MATRIX_SOUND_A; + break; + case AUD_DEM_WR_FM_MATRIX_SOUND_B: + mixer->matrixFm = DRX_AUD_FM_MATRIX_SOUND_B; + break; + default: + return DRX_STS_ERROR; + } + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11601,110 +11099,103 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgMixer ( pDRXDemodInstance_t demod, - pDRXCfgAudMixer_t mixer ) - { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; +AUDCtrlSetCfgMixer(pDRXDemodInstance_t demod, pDRXCfgAudMixer_t mixer) +{ + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t srcI2SMatr = 0; - u16_t fmMatr = 0; + u16_t srcI2SMatr = 0; + u16_t fmMatr = 0; - if ( mixer == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (mixer == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* Source Selctor */ - RR16( devAddr, AUD_DSP_WR_SRC_I2S_MATR__A, &srcI2SMatr); - srcI2SMatr &= (u16_t)~AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S__M; + /* Source Selctor */ + RR16(devAddr, AUD_DSP_WR_SRC_I2S_MATR__A, &srcI2SMatr); + srcI2SMatr &= (u16_t) ~ AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S__M; + + switch (mixer->sourceI2S) { + case DRX_AUD_SRC_MONO: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_MONO; + break; + case DRX_AUD_SRC_STEREO_OR_AB: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_AB; + break; + case DRX_AUD_SRC_STEREO_OR_A: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_A; + break; + case DRX_AUD_SRC_STEREO_OR_B: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_B; + break; + default: + return DRX_STS_INVALID_ARG; + } - switch (mixer->sourceI2S) - { - case DRX_AUD_SRC_MONO: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_MONO; - break; - case DRX_AUD_SRC_STEREO_OR_AB: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_AB; - break; - case DRX_AUD_SRC_STEREO_OR_A: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_A; - break; - case DRX_AUD_SRC_STEREO_OR_B: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_SRC_I2S_STEREO_B; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* Matrix */ - srcI2SMatr &= (u16_t)~AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S__M; - switch (mixer->matrixI2S) - { - case DRX_AUD_I2S_MATRIX_MONO: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_MONO; - break; - case DRX_AUD_I2S_MATRIX_STEREO: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_STEREO ; - break; - case DRX_AUD_I2S_MATRIX_A_MONO: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_A; - break; - case DRX_AUD_I2S_MATRIX_B_MONO: - srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_B; - break; - default: - return DRX_STS_INVALID_ARG; - } - /* write the result */ - WR16( devAddr, AUD_DSP_WR_SRC_I2S_MATR__A, srcI2SMatr); - - /* FM Matrix */ - RR16( devAddr, AUD_DEM_WR_FM_MATRIX__A, &fmMatr ); - fmMatr &= (u16_t)~AUD_DEM_WR_FM_MATRIX__M; - switch (mixer->matrixFm) - { - case DRX_AUD_FM_MATRIX_NO_MATRIX: - fmMatr |= AUD_DEM_WR_FM_MATRIX_NO_MATRIX; - break; - case DRX_AUD_FM_MATRIX_GERMAN: - fmMatr |= AUD_DEM_WR_FM_MATRIX_GERMAN_MATRIX; - break; - case DRX_AUD_FM_MATRIX_KOREAN: - fmMatr |= AUD_DEM_WR_FM_MATRIX_KOREAN_MATRIX; - break; - case DRX_AUD_FM_MATRIX_SOUND_A: - fmMatr |= AUD_DEM_WR_FM_MATRIX_SOUND_A; - break; - case DRX_AUD_FM_MATRIX_SOUND_B: - fmMatr |= AUD_DEM_WR_FM_MATRIX_SOUND_B; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* Only write if ASS is off */ - if ( extAttr->audData.autoSound == DRX_AUD_AUTO_SOUND_OFF ) - { - WR16( devAddr, AUD_DEM_WR_FM_MATRIX__A, fmMatr ); - } + /* Matrix */ + srcI2SMatr &= (u16_t) ~ AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S__M; + switch (mixer->matrixI2S) { + case DRX_AUD_I2S_MATRIX_MONO: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_MONO; + break; + case DRX_AUD_I2S_MATRIX_STEREO: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_STEREO; + break; + case DRX_AUD_I2S_MATRIX_A_MONO: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_A; + break; + case DRX_AUD_I2S_MATRIX_B_MONO: + srcI2SMatr |= AUD_DSP_WR_SRC_I2S_MATR_MAT_I2S_SOUND_B; + break; + default: + return DRX_STS_INVALID_ARG; + } + /* write the result */ + WR16(devAddr, AUD_DSP_WR_SRC_I2S_MATR__A, srcI2SMatr); + + /* FM Matrix */ + RR16(devAddr, AUD_DEM_WR_FM_MATRIX__A, &fmMatr); + fmMatr &= (u16_t) ~ AUD_DEM_WR_FM_MATRIX__M; + switch (mixer->matrixFm) { + case DRX_AUD_FM_MATRIX_NO_MATRIX: + fmMatr |= AUD_DEM_WR_FM_MATRIX_NO_MATRIX; + break; + case DRX_AUD_FM_MATRIX_GERMAN: + fmMatr |= AUD_DEM_WR_FM_MATRIX_GERMAN_MATRIX; + break; + case DRX_AUD_FM_MATRIX_KOREAN: + fmMatr |= AUD_DEM_WR_FM_MATRIX_KOREAN_MATRIX; + break; + case DRX_AUD_FM_MATRIX_SOUND_A: + fmMatr |= AUD_DEM_WR_FM_MATRIX_SOUND_A; + break; + case DRX_AUD_FM_MATRIX_SOUND_B: + fmMatr |= AUD_DEM_WR_FM_MATRIX_SOUND_B; + break; + default: + return DRX_STS_INVALID_ARG; + } + + /* Only write if ASS is off */ + if (extAttr->audData.autoSound == DRX_AUD_AUTO_SOUND_OFF) { + WR16(devAddr, AUD_DEM_WR_FM_MATRIX__A, fmMatr); + } - /* update the data structure with hardware state */ - extAttr->audData.mixer = *mixer; + /* update the data structure with hardware state */ + extAttr->audData.mixer = *mixer; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11716,67 +11207,60 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgAVSync ( pDRXDemodInstance_t demod, - pDRXCfgAudAVSync_t avSync ) +AUDCtrlSetCfgAVSync(pDRXDemodInstance_t demod, pDRXCfgAudAVSync_t avSync) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t wAudVidSync = 0; + u16_t wAudVidSync = 0; - if ( avSync == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (avSync == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* audio/video synchronisation */ - RR16( devAddr, AUD_DSP_WR_AV_SYNC__A, &wAudVidSync ); + /* audio/video synchronisation */ + RR16(devAddr, AUD_DSP_WR_AV_SYNC__A, &wAudVidSync); - wAudVidSync &= (u16_t)~AUD_DSP_WR_AV_SYNC_AV_ON__M; + wAudVidSync &= (u16_t) ~ AUD_DSP_WR_AV_SYNC_AV_ON__M; - if ( *avSync == DRX_AUD_AVSYNC_OFF ) - { - wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_ON_DISABLE; - } - else - { - wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_ON_ENABLE; - } + if (*avSync == DRX_AUD_AVSYNC_OFF) { + wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_ON_DISABLE; + } else { + wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_ON_ENABLE; + } - wAudVidSync &= (u16_t)~AUD_DSP_WR_AV_SYNC_AV_STD_SEL__M; + wAudVidSync &= (u16_t) ~ AUD_DSP_WR_AV_SYNC_AV_STD_SEL__M; + + switch (*avSync) { + case DRX_AUD_AVSYNC_NTSC: + wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_STD_SEL_NTSC; + break; + case DRX_AUD_AVSYNC_MONOCHROME: + wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_STD_SEL_MONOCHROME; + break; + case DRX_AUD_AVSYNC_PAL_SECAM: + wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_STD_SEL_PAL_SECAM; + break; + case DRX_AUD_AVSYNC_OFF: + /* OK */ + break; + default: + return DRX_STS_INVALID_ARG; + } - switch ( *avSync ) - { - case DRX_AUD_AVSYNC_NTSC: - wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_STD_SEL_NTSC; - break; - case DRX_AUD_AVSYNC_MONOCHROME: - wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_STD_SEL_MONOCHROME; - break; - case DRX_AUD_AVSYNC_PAL_SECAM: - wAudVidSync |= AUD_DSP_WR_AV_SYNC_AV_STD_SEL_PAL_SECAM; - break; - case DRX_AUD_AVSYNC_OFF: - /* OK */ - break; - default: - return DRX_STS_INVALID_ARG; - } - - WR16( devAddr, AUD_DSP_WR_AV_SYNC__A, wAudVidSync ); - return DRX_STS_OK; + WR16(devAddr, AUD_DSP_WR_AV_SYNC__A, wAudVidSync); + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11788,57 +11272,52 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgAVSync ( pDRXDemodInstance_t demod, - pDRXCfgAudAVSync_t avSync ) +AUDCtrlGetCfgAVSync(pDRXDemodInstance_t demod, pDRXCfgAudAVSync_t avSync) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t wAudVidSync = 0; + u16_t wAudVidSync = 0; - if ( avSync == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (avSync == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* audio/video synchronisation */ - RR16( devAddr, AUD_DSP_WR_AV_SYNC__A, &wAudVidSync ); + /* audio/video synchronisation */ + RR16(devAddr, AUD_DSP_WR_AV_SYNC__A, &wAudVidSync); - if ( ( wAudVidSync & AUD_DSP_WR_AV_SYNC_AV_ON__M ) == - AUD_DSP_WR_AV_SYNC_AV_ON_DISABLE ) - { - *avSync = DRX_AUD_AVSYNC_OFF; - return DRX_STS_OK; - } + if ((wAudVidSync & AUD_DSP_WR_AV_SYNC_AV_ON__M) == + AUD_DSP_WR_AV_SYNC_AV_ON_DISABLE) { + *avSync = DRX_AUD_AVSYNC_OFF; + return DRX_STS_OK; + } - switch ( wAudVidSync & AUD_DSP_WR_AV_SYNC_AV_STD_SEL__M ) - { - case AUD_DSP_WR_AV_SYNC_AV_STD_SEL_NTSC: - *avSync = DRX_AUD_AVSYNC_NTSC; - break; - case AUD_DSP_WR_AV_SYNC_AV_STD_SEL_MONOCHROME: - *avSync = DRX_AUD_AVSYNC_MONOCHROME; - break; - case AUD_DSP_WR_AV_SYNC_AV_STD_SEL_PAL_SECAM: - *avSync = DRX_AUD_AVSYNC_PAL_SECAM; - break; - default: - return DRX_STS_ERROR; - } - - return DRX_STS_OK; + switch (wAudVidSync & AUD_DSP_WR_AV_SYNC_AV_STD_SEL__M) { + case AUD_DSP_WR_AV_SYNC_AV_STD_SEL_NTSC: + *avSync = DRX_AUD_AVSYNC_NTSC; + break; + case AUD_DSP_WR_AV_SYNC_AV_STD_SEL_MONOCHROME: + *avSync = DRX_AUD_AVSYNC_MONOCHROME; + break; + case AUD_DSP_WR_AV_SYNC_AV_STD_SEL_PAL_SECAM: + *avSync = DRX_AUD_AVSYNC_PAL_SECAM; + break; + default: + return DRX_STS_ERROR; + } + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11850,40 +11329,36 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgDev ( pDRXDemodInstance_t demod, - pDRXCfgAudDeviation_t dev ) +AUDCtrlGetCfgDev(pDRXDemodInstance_t demod, pDRXCfgAudDeviation_t dev) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t rModus = 0; + u16_t rModus = 0; + if (dev == NULL) { + return DRX_STS_INVALID_ARG; + } - if ( dev == NULL ) - { - return DRX_STS_INVALID_ARG; - } + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod->myI2CDevAddr; + CHK_ERROR(AUDGetModus(demod, &rModus)); - CHK_ERROR ( AUDGetModus ( demod, &rModus )); + switch (rModus & AUD_DEM_WR_MODUS_MOD_HDEV_A__M) { + case AUD_DEM_WR_MODUS_MOD_HDEV_A_NORMAL: + *dev = DRX_AUD_DEVIATION_NORMAL; + break; + case AUD_DEM_WR_MODUS_MOD_HDEV_A_HIGH_DEVIATION: + *dev = DRX_AUD_DEVIATION_HIGH; + break; + default: + return DRX_STS_ERROR; + } - switch ( rModus & AUD_DEM_WR_MODUS_MOD_HDEV_A__M) - { - case AUD_DEM_WR_MODUS_MOD_HDEV_A_NORMAL: - *dev = DRX_AUD_DEVIATION_NORMAL; - break; - case AUD_DEM_WR_MODUS_MOD_HDEV_A_HIGH_DEVIATION: - *dev = DRX_AUD_DEVIATION_HIGH; - break; - default: - return DRX_STS_ERROR; - } - - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -11895,55 +11370,50 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgDev ( pDRXDemodInstance_t demod, - pDRXCfgAudDeviation_t dev ) +AUDCtrlSetCfgDev(pDRXDemodInstance_t demod, pDRXCfgAudDeviation_t dev) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t wModus = 0; - u16_t rModus = 0; + u16_t wModus = 0; + u16_t rModus = 0; - if ( dev == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (dev == NULL) { + return DRX_STS_INVALID_ARG; + } - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; - CHK_ERROR ( AUDGetModus ( demod, &rModus )); + CHK_ERROR(AUDGetModus(demod, &rModus)); - wModus = rModus; + wModus = rModus; - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_HDEV_A__M; + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_HDEV_A__M; - switch ( *dev ) - { - case DRX_AUD_DEVIATION_NORMAL: - wModus |= AUD_DEM_WR_MODUS_MOD_HDEV_A_NORMAL; - break; - case DRX_AUD_DEVIATION_HIGH: - wModus |= AUD_DEM_WR_MODUS_MOD_HDEV_A_HIGH_DEVIATION; - break; - default: - return DRX_STS_INVALID_ARG; - } - - /* now update the modus register */ - if ( wModus != rModus) - { - WR16( devAddr, AUD_DEM_WR_MODUS__A, wModus ); - } - /* store in drxk data struct */ - extAttr->audData.deviation = *dev; + switch (*dev) { + case DRX_AUD_DEVIATION_NORMAL: + wModus |= AUD_DEM_WR_MODUS_MOD_HDEV_A_NORMAL; + break; + case DRX_AUD_DEVIATION_HIGH: + wModus |= AUD_DEM_WR_MODUS_MOD_HDEV_A_HIGH_DEVIATION; + break; + default: + return DRX_STS_INVALID_ARG; + } - return DRX_STS_OK; + /* now update the modus register */ + if (wModus != rModus) { + WR16(devAddr, AUD_DEM_WR_MODUS__A, wModus); + } + /* store in drxk data struct */ + extAttr->audData.deviation = *dev; + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } - /*============================================================================*/ /** * \brief Get Prescaler settings @@ -11953,84 +11423,72 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetCfgPrescale( pDRXDemodInstance_t demod, - pDRXCfgAudPrescale_t presc ) +AUDCtrlGetCfgPrescale(pDRXDemodInstance_t demod, pDRXCfgAudPrescale_t presc) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t rMaxFMDeviation = 0; - u16_t rNicamPrescaler = 0; + u16_t rMaxFMDeviation = 0; + u16_t rNicamPrescaler = 0; - if ( presc == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - /* read register data */ - RR16( devAddr, AUD_DSP_WR_NICAM_PRESC__A, &rNicamPrescaler ); - RR16( devAddr, AUD_DSP_WR_FM_PRESC__A, &rMaxFMDeviation ); - - /* calculate max FM deviation */ - rMaxFMDeviation >>= AUD_DSP_WR_FM_PRESC_FM_AM_PRESC__B; - if ( rMaxFMDeviation > 0 ) - { - presc->fmDeviation = 3600UL + (rMaxFMDeviation >> 1); - presc->fmDeviation /= rMaxFMDeviation; - } - else - { - presc->fmDeviation = 380; /* kHz */ - } + if (presc == NULL) { + return DRX_STS_INVALID_ARG; + } - /* calculate NICAM gain from pre-scaler */ - /* - nicamGain = 20 * ( log10( preScaler / 16) ) - = ( 100log10( preScaler ) - 100log10( 16 ) ) / 5 + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - because Log10Times100() cannot return negative numbers - = ( 100log10( 10 * preScaler ) - 100log10( 10 * 16) ) / 5 + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } + /* read register data */ + RR16(devAddr, AUD_DSP_WR_NICAM_PRESC__A, &rNicamPrescaler); + RR16(devAddr, AUD_DSP_WR_FM_PRESC__A, &rMaxFMDeviation); + + /* calculate max FM deviation */ + rMaxFMDeviation >>= AUD_DSP_WR_FM_PRESC_FM_AM_PRESC__B; + if (rMaxFMDeviation > 0) { + presc->fmDeviation = 3600UL + (rMaxFMDeviation >> 1); + presc->fmDeviation /= rMaxFMDeviation; + } else { + presc->fmDeviation = 380; /* kHz */ + } - for 0.1dB resolution: + /* calculate NICAM gain from pre-scaler */ + /* + nicamGain = 20 * ( log10( preScaler / 16) ) + = ( 100log10( preScaler ) - 100log10( 16 ) ) / 5 - nicamGain = 200 * ( log10( preScaler / 16) ) - = 2 * ( 100log10( 10 * preScaler ) - 100log10( 10 * 16) ) - = ( 100log10( 10 * preScaler^2 ) - 100log10( 10 * 16^2 ) ) + because Log10Times100() cannot return negative numbers + = ( 100log10( 10 * preScaler ) - 100log10( 10 * 16) ) / 5 + for 0.1dB resolution: - */ - rNicamPrescaler >>= 8; - if ( rNicamPrescaler <= 1 ) - { - presc->nicamGain = -241; - } - else - { + nicamGain = 200 * ( log10( preScaler / 16) ) + = 2 * ( 100log10( 10 * preScaler ) - 100log10( 10 * 16) ) + = ( 100log10( 10 * preScaler^2 ) - 100log10( 10 * 16^2 ) ) - presc->nicamGain = (s16_t)( ( (s32_t) - ( Log10Times100( 10 * rNicamPrescaler * - rNicamPrescaler ) ) - - (s32_t) - ( Log10Times100( 10 * 16 * 16 ) ) ) ); - } + */ + rNicamPrescaler >>= 8; + if (rNicamPrescaler <= 1) { + presc->nicamGain = -241; + } else { + + presc->nicamGain = (s16_t) (((s32_t) + (Log10Times100 + (10 * rNicamPrescaler * + rNicamPrescaler)) - (s32_t) + (Log10Times100(10 * 16 * 16)))); + } - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } - /*============================================================================*/ /** * \brief Set Prescaler settings @@ -12040,50 +11498,47 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetCfgPrescale( pDRXDemodInstance_t demod, - pDRXCfgAudPrescale_t presc ) +AUDCtrlSetCfgPrescale(pDRXDemodInstance_t demod, pDRXCfgAudPrescale_t presc) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; - u16_t wMaxFMDeviation = 0; - u16_t nicamPrescaler; + u16_t wMaxFMDeviation = 0; + u16_t nicamPrescaler; - if ( presc == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (presc == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - /* setting of max FM deviation */ - wMaxFMDeviation = (u16_t)(Frac (3600UL, presc->fmDeviation, 0)); - wMaxFMDeviation <<= AUD_DSP_WR_FM_PRESC_FM_AM_PRESC__B; - if ( wMaxFMDeviation >= AUD_DSP_WR_FM_PRESC_FM_AM_PRESC_28_KHZ_FM_DEVIATION ) - { - wMaxFMDeviation = AUD_DSP_WR_FM_PRESC_FM_AM_PRESC_28_KHZ_FM_DEVIATION; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - /* NICAM Prescaler */ - if( ( presc->nicamGain >= -241) && ( presc->nicamGain <= 180) ) - { - /* calculation + /* setting of max FM deviation */ + wMaxFMDeviation = (u16_t) (Frac(3600UL, presc->fmDeviation, 0)); + wMaxFMDeviation <<= AUD_DSP_WR_FM_PRESC_FM_AM_PRESC__B; + if (wMaxFMDeviation >= + AUD_DSP_WR_FM_PRESC_FM_AM_PRESC_28_KHZ_FM_DEVIATION) { + wMaxFMDeviation = + AUD_DSP_WR_FM_PRESC_FM_AM_PRESC_28_KHZ_FM_DEVIATION; + } + + /* NICAM Prescaler */ + if ((presc->nicamGain >= -241) && (presc->nicamGain <= 180)) { + /* calculation - prescaler = 16 * 10^( GdB / 20 ) + prescaler = 16 * 10^( GdB / 20 ) - minval of GdB = -20*log( 16 ) = -24.1dB + minval of GdB = -20*log( 16 ) = -24.1dB - negative numbers not allowed for dB2LinTimes100, so + negative numbers not allowed for dB2LinTimes100, so - prescaler = 16 * 10^( GdB / 20 ) + prescaler = 16 * 10^( GdB / 20 ) = 10^( (GdB / 20) + log10(16) ) = 10^( (GdB + 20log10(16)) / 20 ) @@ -12091,33 +11546,30 @@ AUDCtrlSetCfgPrescale( pDRXDemodInstance_t demod, = 10^( G0.1dB + 200log10(16)) / 200 ) - */ - nicamPrescaler = (u16_t) - ( ( dB2LinTimes100( presc->nicamGain + 241UL ) + 50UL ) / 100UL ); + */ + nicamPrescaler = (u16_t) + ((dB2LinTimes100(presc->nicamGain + 241UL) + 50UL) / 100UL); - /* clip result */ - if ( nicamPrescaler > 127 ) - { - nicamPrescaler = 127; - } + /* clip result */ + if (nicamPrescaler > 127) { + nicamPrescaler = 127; + } - /* shift before writing to register */ - nicamPrescaler <<= 8; - } - else - { - return(DRX_STS_INVALID_ARG); - } - /* end of setting NICAM Prescaler */ + /* shift before writing to register */ + nicamPrescaler <<= 8; + } else { + return (DRX_STS_INVALID_ARG); + } + /* end of setting NICAM Prescaler */ - WR16( devAddr, AUD_DSP_WR_NICAM_PRESC__A, nicamPrescaler ); - WR16( devAddr, AUD_DSP_WR_FM_PRESC__A, wMaxFMDeviation ); + WR16(devAddr, AUD_DSP_WR_NICAM_PRESC__A, nicamPrescaler); + WR16(devAddr, AUD_DSP_WR_FM_PRESC__A, wMaxFMDeviation); - extAttr->audData.prescale = *presc; + extAttr->audData.prescale = *presc; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -12128,64 +11580,54 @@ rw_error: * \return DRXStatus_t. * */ -static DRXStatus_t -AUDCtrlBeep ( pDRXDemodInstance_t demod, - pDRXAudBeep_t beep ) +static DRXStatus_t AUDCtrlBeep(pDRXDemodInstance_t demod, pDRXAudBeep_t beep) { - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; - - u16_t theBeep = 0; - u16_t volume = 0; - u32_t frequency = 0; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; + u16_t theBeep = 0; + u16_t volume = 0; + u32_t frequency = 0; - if ( beep == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (beep == NULL) { + return DRX_STS_INVALID_ARG; + } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - if (( beep->volume > 0 ) || ( beep->volume < -127 )) - { - return DRX_STS_INVALID_ARG; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - if ( beep->frequency > 3000 ) - { - return DRX_STS_INVALID_ARG; - } + if ((beep->volume > 0) || (beep->volume < -127)) { + return DRX_STS_INVALID_ARG; + } - volume = (u16_t)beep->volume + 127; - theBeep |= volume << AUD_DSP_WR_BEEPER_BEEP_VOLUME__B; + if (beep->frequency > 3000) { + return DRX_STS_INVALID_ARG; + } + volume = (u16_t) beep->volume + 127; + theBeep |= volume << AUD_DSP_WR_BEEPER_BEEP_VOLUME__B; - frequency = ( (u32_t) beep->frequency ) * 23 / 500 ; - if ( frequency > AUD_DSP_WR_BEEPER_BEEP_FREQUENCY__M ) - { - frequency = AUD_DSP_WR_BEEPER_BEEP_FREQUENCY__M; - } - theBeep |= (u16_t) frequency; + frequency = ((u32_t) beep->frequency) * 23 / 500; + if (frequency > AUD_DSP_WR_BEEPER_BEEP_FREQUENCY__M) { + frequency = AUD_DSP_WR_BEEPER_BEEP_FREQUENCY__M; + } + theBeep |= (u16_t) frequency; - if ( beep->mute == TRUE ) - { - theBeep = 0; - } + if (beep->mute == TRUE) { + theBeep = 0; + } - WR16( devAddr, AUD_DSP_WR_BEEPER__A, theBeep); + WR16(devAddr, AUD_DSP_WR_BEEPER__A, theBeep); - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -12197,202 +11639,173 @@ rw_error: * */ static DRXStatus_t -AUDCtrlSetStandard ( pDRXDemodInstance_t demod, - pDRXAudStandard_t standard ) +AUDCtrlSetStandard(pDRXDemodInstance_t demod, pDRXAudStandard_t standard) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXStandard_t currentStandard = DRX_STANDARD_UNKNOWN; - - u16_t wStandard = 0; - u16_t wModus = 0; - u16_t rModus = 0; - - Bool_t muteBuffer = FALSE; - s16_t volumeBuffer = 0; - u16_t wVolume = 0; - - if ( standard == NULL ) - { - return DRX_STS_INVALID_ARG; - } - - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , FALSE ) ); - extAttr->audData.audioIsActive = TRUE; - } - - - /* reset RDS data availability flag */ - extAttr->audData.rdsDataPresent = FALSE; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXStandard_t currentStandard = DRX_STANDARD_UNKNOWN; + u16_t wStandard = 0; + u16_t wModus = 0; + u16_t rModus = 0; - /* we need to mute from here to avoid noise during standard switching */ - muteBuffer = extAttr->audData.volume.mute; - volumeBuffer = extAttr->audData.volume.volume; + Bool_t muteBuffer = FALSE; + s16_t volumeBuffer = 0; + u16_t wVolume = 0; - extAttr->audData.volume.mute = TRUE; - /* restore data structure from DRX ExtAttr, call volume first to mute */ - CHK_ERROR ( AUDCtrlSetCfgVolume - ( demod, &extAttr->audData.volume ) ); - CHK_ERROR ( AUDCtrlSetCfgCarrier - ( demod, &extAttr->audData.carriers ) ); - CHK_ERROR ( AUDCtrlSetCfgASSThres - ( demod, &extAttr->audData.assThresholds ) ); - CHK_ERROR ( AUDCtrSetlCfgAutoSound - ( demod, &extAttr->audData.autoSound ) ); - CHK_ERROR ( AUDCtrlSetCfgMixer - ( demod, &extAttr->audData.mixer ) ); - CHK_ERROR ( AUDCtrlSetCfgAVSync - ( demod, &extAttr->audData.avSync ) ); - CHK_ERROR ( AUDCtrlSetCfgOutputI2S - ( demod, &extAttr->audData.i2sdata ) ); + if (standard == NULL) { + return DRX_STS_INVALID_ARG; + } - /* get prescaler from presets */ - CHK_ERROR ( AUDCtrlSetCfgPrescale - ( demod, &extAttr->audData.prescale) ); + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - CHK_ERROR ( AUDGetModus ( demod, &rModus )); + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, FALSE)); + extAttr->audData.audioIsActive = TRUE; + } - wModus = rModus; + /* reset RDS data availability flag */ + extAttr->audData.rdsDataPresent = FALSE; + + /* we need to mute from here to avoid noise during standard switching */ + muteBuffer = extAttr->audData.volume.mute; + volumeBuffer = extAttr->audData.volume.volume; + + extAttr->audData.volume.mute = TRUE; + /* restore data structure from DRX ExtAttr, call volume first to mute */ + CHK_ERROR(AUDCtrlSetCfgVolume(demod, &extAttr->audData.volume)); + CHK_ERROR(AUDCtrlSetCfgCarrier(demod, &extAttr->audData.carriers)); + CHK_ERROR(AUDCtrlSetCfgASSThres + (demod, &extAttr->audData.assThresholds)); + CHK_ERROR(AUDCtrSetlCfgAutoSound(demod, &extAttr->audData.autoSound)); + CHK_ERROR(AUDCtrlSetCfgMixer(demod, &extAttr->audData.mixer)); + CHK_ERROR(AUDCtrlSetCfgAVSync(demod, &extAttr->audData.avSync)); + CHK_ERROR(AUDCtrlSetCfgOutputI2S(demod, &extAttr->audData.i2sdata)); + + /* get prescaler from presets */ + CHK_ERROR(AUDCtrlSetCfgPrescale(demod, &extAttr->audData.prescale)); + + CHK_ERROR(AUDGetModus(demod, &rModus)); + + wModus = rModus; + + switch (*standard) { + case DRX_AUD_STANDARD_AUTO: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_AUTO; + break; + case DRX_AUD_STANDARD_BTSC: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BTSC_STEREO; + if (extAttr->audData.btscDetect == DRX_BTSC_MONO_AND_SAP) { + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BTSC_SAP; + } + break; + case DRX_AUD_STANDARD_A2: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_M_KOREA; + break; + case DRX_AUD_STANDARD_EIAJ: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_EIA_J; + break; + case DRX_AUD_STANDARD_FM_STEREO: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_FM_RADIO; + break; + case DRX_AUD_STANDARD_BG_FM: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BG_FM; + break; + case DRX_AUD_STANDARD_D_K1: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K1; + break; + case DRX_AUD_STANDARD_D_K2: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K2; + break; + case DRX_AUD_STANDARD_D_K3: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K3; + break; + case DRX_AUD_STANDARD_BG_NICAM_FM: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BG_NICAM_FM; + break; + case DRX_AUD_STANDARD_L_NICAM_AM: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_L_NICAM_AM; + break; + case DRX_AUD_STANDARD_I_NICAM_FM: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_I_NICAM_FM; + break; + case DRX_AUD_STANDARD_D_K_NICAM_FM: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K_NICAM_FM; + break; + case DRX_AUD_STANDARD_UNKNOWN: + wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_AUTO; + break; + default: + return DRX_STS_ERROR; + } - switch ( *standard ) - { - case DRX_AUD_STANDARD_AUTO: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_AUTO; - break; - case DRX_AUD_STANDARD_BTSC: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BTSC_STEREO; - if (extAttr->audData.btscDetect == DRX_BTSC_MONO_AND_SAP) - { - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BTSC_SAP; - } - break; - case DRX_AUD_STANDARD_A2: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_M_KOREA; - break; - case DRX_AUD_STANDARD_EIAJ: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_EIA_J; - break; - case DRX_AUD_STANDARD_FM_STEREO: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_FM_RADIO; - break; - case DRX_AUD_STANDARD_BG_FM: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BG_FM; - break; - case DRX_AUD_STANDARD_D_K1: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K1; - break; - case DRX_AUD_STANDARD_D_K2: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K2; - break; - case DRX_AUD_STANDARD_D_K3: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K3; - break; - case DRX_AUD_STANDARD_BG_NICAM_FM: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_BG_NICAM_FM; - break; - case DRX_AUD_STANDARD_L_NICAM_AM: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_L_NICAM_AM; - break; - case DRX_AUD_STANDARD_I_NICAM_FM: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_I_NICAM_FM; - break; - case DRX_AUD_STANDARD_D_K_NICAM_FM: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_D_K_NICAM_FM; - break; - case DRX_AUD_STANDARD_UNKNOWN: - wStandard = AUD_DEM_WR_STANDARD_SEL_STD_SEL_AUTO; - break; - default: - return DRX_STS_ERROR; - } - - if ( *standard == DRX_AUD_STANDARD_AUTO ) - { - /* we need the current standard here */ - currentStandard = extAttr->standard; + if (*standard == DRX_AUD_STANDARD_AUTO) { + /* we need the current standard here */ + currentStandard = extAttr->standard; + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_6_5MHZ__M; - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_6_5MHZ__M; + if ((currentStandard == DRX_STANDARD_PAL_SECAM_L) || + (currentStandard == DRX_STANDARD_PAL_SECAM_LP)) { + wModus |= (AUD_DEM_WR_MODUS_MOD_6_5MHZ_SECAM); + } else { + wModus |= (AUD_DEM_WR_MODUS_MOD_6_5MHZ_D_K); + } - if ( ( currentStandard == DRX_STANDARD_PAL_SECAM_L ) || - ( currentStandard == DRX_STANDARD_PAL_SECAM_LP ) ) - { - wModus |= (AUD_DEM_WR_MODUS_MOD_6_5MHZ_SECAM); - } - else - { - wModus |= (AUD_DEM_WR_MODUS_MOD_6_5MHZ_D_K); - } + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_4_5MHZ__M; + if (currentStandard == DRX_STANDARD_NTSC) { + wModus |= (AUD_DEM_WR_MODUS_MOD_4_5MHZ_M_BTSC); - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_4_5MHZ__M; - if ( currentStandard == DRX_STANDARD_NTSC ) - { - wModus |= ( AUD_DEM_WR_MODUS_MOD_4_5MHZ_M_BTSC); + } else { /* non USA, ignore standard M to save time */ - } - else /* non USA, ignore standard M to save time */ - { - wModus |= ( AUD_DEM_WR_MODUS_MOD_4_5MHZ_CHROMA); - } + wModus |= (AUD_DEM_WR_MODUS_MOD_4_5MHZ_CHROMA); + } + } - } + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_FMRADIO__M; - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_FMRADIO__M; + /* just get hardcoded deemphasis and activate here */ + if (extAttr->audData.deemph == DRX_AUD_FM_DEEMPH_50US) { + wModus |= (AUD_DEM_WR_MODUS_MOD_FMRADIO_EU_50U); + } else { + wModus |= (AUD_DEM_WR_MODUS_MOD_FMRADIO_US_75U); + } - /* just get hardcoded deemphasis and activate here */ - if ( extAttr->audData.deemph == DRX_AUD_FM_DEEMPH_50US ) - { - wModus |= ( AUD_DEM_WR_MODUS_MOD_FMRADIO_EU_50U); - } - else - { - wModus |= ( AUD_DEM_WR_MODUS_MOD_FMRADIO_US_75U); - } + wModus &= (u16_t) ~ AUD_DEM_WR_MODUS_MOD_BTSC__M; + if (extAttr->audData.btscDetect == DRX_BTSC_STEREO) { + wModus |= (AUD_DEM_WR_MODUS_MOD_BTSC_BTSC_STEREO); + } else { /* DRX_BTSC_MONO_AND_SAP */ - wModus &= (u16_t)~AUD_DEM_WR_MODUS_MOD_BTSC__M; - if( extAttr->audData.btscDetect == DRX_BTSC_STEREO ) - { - wModus |= ( AUD_DEM_WR_MODUS_MOD_BTSC_BTSC_STEREO); - } - else /* DRX_BTSC_MONO_AND_SAP */ - { - wModus |= ( AUD_DEM_WR_MODUS_MOD_BTSC_BTSC_SAP); - } + wModus |= (AUD_DEM_WR_MODUS_MOD_BTSC_BTSC_SAP); + } - if ( wModus != rModus) - { - WR16( devAddr, AUD_DEM_WR_MODUS__A, wModus ); - } + if (wModus != rModus) { + WR16(devAddr, AUD_DEM_WR_MODUS__A, wModus); + } - WR16( devAddr, AUD_DEM_WR_STANDARD_SEL__A, wStandard ); + WR16(devAddr, AUD_DEM_WR_STANDARD_SEL__A, wStandard); /**************************************************************************/ - /* NOT calling AUDCtrlSetCfgVolume to avoid interfering standard */ - /* detection, need to keep things very minimal here, but keep audio */ - /* buffers intact */ + /* NOT calling AUDCtrlSetCfgVolume to avoid interfering standard */ + /* detection, need to keep things very minimal here, but keep audio */ + /* buffers intact */ /**************************************************************************/ - extAttr->audData.volume.mute = muteBuffer; - if ( extAttr->audData.volume.mute == FALSE ) - { - wVolume |= (u16_t) ( ( volumeBuffer + AUD_VOLUME_ZERO_DB ) << - AUD_DSP_WR_VOLUME_VOL_MAIN__B ); - WR16( devAddr, AUD_DSP_WR_VOLUME__A, wVolume ); - } + extAttr->audData.volume.mute = muteBuffer; + if (extAttr->audData.volume.mute == FALSE) { + wVolume |= (u16_t) ((volumeBuffer + AUD_VOLUME_ZERO_DB) << + AUD_DSP_WR_VOLUME_VOL_MAIN__B); + WR16(devAddr, AUD_DSP_WR_VOLUME__A, wVolume); + } - /* write standard selected */ - extAttr->audData.audioStandard = *standard; + /* write standard selected */ + extAttr->audData.audioStandard = *standard; - return DRX_STS_OK; + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } /*============================================================================*/ @@ -12404,111 +11817,104 @@ rw_error: * */ static DRXStatus_t -AUDCtrlGetStandard ( pDRXDemodInstance_t demod, - pDRXAudStandard_t standard ) +AUDCtrlGetStandard(pDRXDemodInstance_t demod, pDRXAudStandard_t standard) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - u16_t rData = 0; + u16_t rData = 0; - if ( standard == NULL ) - { - return DRX_STS_INVALID_ARG; - } + if (standard == NULL) { + return DRX_STS_INVALID_ARG; + } - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = (pI2CDeviceAddr_t)demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = (pI2CDeviceAddr_t) demod->myI2CDevAddr; - /* power up */ - if ( extAttr->audData.audioIsActive == FALSE ) - { - CHK_ERROR ( PowerUpAud( demod , TRUE ) ); - extAttr->audData.audioIsActive = TRUE; - } + /* power up */ + if (extAttr->audData.audioIsActive == FALSE) { + CHK_ERROR(PowerUpAud(demod, TRUE)); + extAttr->audData.audioIsActive = TRUE; + } - *standard = DRX_AUD_STANDARD_UNKNOWN; + *standard = DRX_AUD_STANDARD_UNKNOWN; - RR16( devAddr, AUD_DEM_RD_STANDARD_RES__A, &rData ); + RR16(devAddr, AUD_DEM_RD_STANDARD_RES__A, &rData); - /* return OK if the detection is not ready yet */ - if ( rData >= - AUD_DEM_RD_STANDARD_RES_STD_RESULT_DETECTION_STILL_ACTIVE ) - { - *standard = DRX_AUD_STANDARD_NOT_READY; - return DRX_STS_OK; - } + /* return OK if the detection is not ready yet */ + if (rData >= AUD_DEM_RD_STANDARD_RES_STD_RESULT_DETECTION_STILL_ACTIVE) { + *standard = DRX_AUD_STANDARD_NOT_READY; + return DRX_STS_OK; + } - /* detection done, return correct standard */ - switch ( rData ) - { - /* no standard detected */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_NO_SOUND_STANDARD: - *standard = DRX_AUD_STANDARD_UNKNOWN; - break; - /* standard is KOREA(A2) */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_NTSC_M_DUAL_CARRIER_FM: - *standard = DRX_AUD_STANDARD_A2; - break; - /* standard is EIA-J (Japan) */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_NTSC_EIA_J: - *standard = DRX_AUD_STANDARD_EIAJ; - break; - /* standard is BTSC-stereo */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_BTSC_STEREO: - *standard = DRX_AUD_STANDARD_BTSC; - break; - /* standard is BTSC-mono (SAP) */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_BTSC_MONO_SAP: - *standard = DRX_AUD_STANDARD_BTSC; - break; - /* standard is FM radio */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_FM_RADIO: - *standard = DRX_AUD_STANDARD_FM_STEREO; - break; - /* standard is BG FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_B_G_DUAL_CARRIER_FM: - *standard = DRX_AUD_STANDARD_BG_FM; - break; - /* standard is DK-1 FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K1_DUAL_CARRIER_FM: - *standard = DRX_AUD_STANDARD_D_K1; - break; - /* standard is DK-2 FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K2_DUAL_CARRIER_FM: - *standard = DRX_AUD_STANDARD_D_K2; - break; - /* standard is DK-3 FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K3_DUAL_CARRIER_FM: - *standard = DRX_AUD_STANDARD_D_K3; - break; - /* standard is BG-NICAM FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_B_G_NICAM_FM: - *standard = DRX_AUD_STANDARD_BG_NICAM_FM; - break; - /* standard is L-NICAM AM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_L_NICAM_AM: - *standard = DRX_AUD_STANDARD_L_NICAM_AM; - break; - /* standard is I-NICAM FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_I_NICAM_FM: - *standard = DRX_AUD_STANDARD_I_NICAM_FM; - break; - /* standard is DK-NICAM FM */ - case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K_NICAM_FM: - *standard = DRX_AUD_STANDARD_D_K_NICAM_FM; - break; - default: - *standard = DRX_AUD_STANDARD_UNKNOWN; - } - - return DRX_STS_OK; + /* detection done, return correct standard */ + switch (rData) { + /* no standard detected */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_NO_SOUND_STANDARD: + *standard = DRX_AUD_STANDARD_UNKNOWN; + break; + /* standard is KOREA(A2) */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_NTSC_M_DUAL_CARRIER_FM: + *standard = DRX_AUD_STANDARD_A2; + break; + /* standard is EIA-J (Japan) */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_NTSC_EIA_J: + *standard = DRX_AUD_STANDARD_EIAJ; + break; + /* standard is BTSC-stereo */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_BTSC_STEREO: + *standard = DRX_AUD_STANDARD_BTSC; + break; + /* standard is BTSC-mono (SAP) */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_BTSC_MONO_SAP: + *standard = DRX_AUD_STANDARD_BTSC; + break; + /* standard is FM radio */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_FM_RADIO: + *standard = DRX_AUD_STANDARD_FM_STEREO; + break; + /* standard is BG FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_B_G_DUAL_CARRIER_FM: + *standard = DRX_AUD_STANDARD_BG_FM; + break; + /* standard is DK-1 FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K1_DUAL_CARRIER_FM: + *standard = DRX_AUD_STANDARD_D_K1; + break; + /* standard is DK-2 FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K2_DUAL_CARRIER_FM: + *standard = DRX_AUD_STANDARD_D_K2; + break; + /* standard is DK-3 FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K3_DUAL_CARRIER_FM: + *standard = DRX_AUD_STANDARD_D_K3; + break; + /* standard is BG-NICAM FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_B_G_NICAM_FM: + *standard = DRX_AUD_STANDARD_BG_NICAM_FM; + break; + /* standard is L-NICAM AM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_L_NICAM_AM: + *standard = DRX_AUD_STANDARD_L_NICAM_AM; + break; + /* standard is I-NICAM FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_I_NICAM_FM: + *standard = DRX_AUD_STANDARD_I_NICAM_FM; + break; + /* standard is DK-NICAM FM */ + case AUD_DEM_RD_STANDARD_RES_STD_RESULT_D_K_NICAM_FM: + *standard = DRX_AUD_STANDARD_D_K_NICAM_FM; + break; + default: + *standard = DRX_AUD_STANDARD_UNKNOWN; + } + + return DRX_STS_OK; rw_error: - return DRX_STS_ERROR; + return DRX_STS_ERROR; } - /*============================================================================*/ /** * \brief Retreive lock status in case of FM standard @@ -12518,27 +11924,24 @@ rw_error: * */ static DRXStatus_t -FmLockStatus( pDRXDemodInstance_t demod, - pDRXLockStatus_t lockStat ) +FmLockStatus(pDRXDemodInstance_t demod, pDRXLockStatus_t lockStat) { - DRXAudStatus_t status; + DRXAudStatus_t status; - /* Check detection of audio carriers */ - CHK_ERROR( AUDCtrlGetCarrierDetectStatus ( demod, &status ) ); + /* Check detection of audio carriers */ + CHK_ERROR(AUDCtrlGetCarrierDetectStatus(demod, &status)); - /* locked if either primary or secondary carrier is detected */ - if ( ( status.carrierA == TRUE ) || - ( status.carrierB == TRUE ) ) - { - *lockStat = DRX_LOCKED; - } else { - *lockStat = DRX_NOT_LOCKED; - } + /* locked if either primary or secondary carrier is detected */ + if ((status.carrierA == TRUE) || (status.carrierB == TRUE)) { + *lockStat = DRX_LOCKED; + } else { + *lockStat = DRX_NOT_LOCKED; + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -12553,28 +11956,25 @@ rw_error: * */ static DRXStatus_t -FmSigQuality( pDRXDemodInstance_t demod, - pDRXSigQuality_t sigQuality ) +FmSigQuality(pDRXDemodInstance_t demod, pDRXSigQuality_t sigQuality) { - DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; + DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; - CHK_ERROR( FmLockStatus( demod, &lockStatus ) ); - if ( lockStatus == DRX_LOCKED ) - { - sigQuality->indicator = 100; - } else { - sigQuality->indicator = 0; - } + CHK_ERROR(FmLockStatus(demod, &lockStatus)); + if (lockStatus == DRX_LOCKED) { + sigQuality->indicator = 100; + } else { + sigQuality->indicator = 0; + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif - /*===========================================================================*/ /*== END AUDIO DATAPATH FUNCTIONS ==*/ /*===========================================================================*/ @@ -12596,59 +11996,48 @@ rw_error: * */ static DRXStatus_t -GetOOBLockStatus( pDRXDemodInstance_t demod, - pI2CDeviceAddr_t devAddr, - pDRXLockStatus_t oobLock ) +GetOOBLockStatus(pDRXDemodInstance_t demod, + pI2CDeviceAddr_t devAddr, pDRXLockStatus_t oobLock) { - DRXJSCUCmd_t scuCmd; - u16_t cmdResult[2]; - u16_t OOBLockState; + DRXJSCUCmd_t scuCmd; + u16_t cmdResult[2]; + u16_t OOBLockState; - *oobLock = DRX_NOT_LOCKED; + *oobLock = DRX_NOT_LOCKED; - scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB | - SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; - scuCmd.resultLen = 2; - scuCmd.result = cmdResult; - scuCmd.parameterLen = 0; + scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB | + SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; + scuCmd.resultLen = 2; + scuCmd.result = cmdResult; + scuCmd.parameterLen = 0; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); - if ( scuCmd.result[1] < 0x4000 ) - { - /* 0x00 NOT LOCKED */ - *oobLock = DRX_NOT_LOCKED; - } - else if ( scuCmd.result[1] < 0x8000 ) - { - /* 0x40 DEMOD LOCKED */ - *oobLock = DRXJ_OOB_SYNC_LOCK; - } - else if ( scuCmd.result[1] < 0xC000 ) - { - /* 0x80 DEMOD + OOB LOCKED (system lock) */ - OOBLockState = scuCmd.result[1] & 0x00FF; - - if(OOBLockState & 0x0008) - { - *oobLock = DRXJ_OOB_SYNC_LOCK; - } - else if ((OOBLockState & 0x0002) && (OOBLockState & 0x0001)) - { - *oobLock = DRXJ_OOB_AGC_LOCK; - } - } - else - { - /* 0xC0 NEVER LOCKED (system will never be able to lock to the signal) */ - *oobLock = DRX_NEVER_LOCK; - } + if (scuCmd.result[1] < 0x4000) { + /* 0x00 NOT LOCKED */ + *oobLock = DRX_NOT_LOCKED; + } else if (scuCmd.result[1] < 0x8000) { + /* 0x40 DEMOD LOCKED */ + *oobLock = DRXJ_OOB_SYNC_LOCK; + } else if (scuCmd.result[1] < 0xC000) { + /* 0x80 DEMOD + OOB LOCKED (system lock) */ + OOBLockState = scuCmd.result[1] & 0x00FF; + + if (OOBLockState & 0x0008) { + *oobLock = DRXJ_OOB_SYNC_LOCK; + } else if ((OOBLockState & 0x0002) && (OOBLockState & 0x0001)) { + *oobLock = DRXJ_OOB_AGC_LOCK; + } + } else { + /* 0xC0 NEVER LOCKED (system will never be able to lock to the signal) */ + *oobLock = DRX_NEVER_LOCK; + } - /* *oobLock = scuCmd.result[1]; */ + /* *oobLock = scuCmd.result[1]; */ - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -12662,7 +12051,7 @@ rw_error: * */ static DRXStatus_t -GetOOBSymbolRateOffset( pI2CDeviceAddr_t devAddr, ps32_t SymbolRateOffset ) +GetOOBSymbolRateOffset(pI2CDeviceAddr_t devAddr, ps32_t SymbolRateOffset) { /* offset = -{(timingOffset/2^19)*(symbolRate/12,656250MHz)}*10^6 [ppm] */ /* offset = -{(timingOffset/2^19)*(symbolRate/12656250)}*10^6 [ppm] */ @@ -12675,63 +12064,61 @@ GetOOBSymbolRateOffset( pI2CDeviceAddr_t devAddr, ps32_t SymbolRateOffset ) /* trim 12656250/15625 = 810 */ /* offset = -{(timingOffset*(symbolRate * 2^-5))/(2^8*810)} [ppm] */ /* offset = -[(symbolRate * 2^-5)*(timingOffset)/(2^8)]/810 [ppm] */ - s32_t timingOffset = 0; - u32_t unsignedTimingOffset = 0; - s32_t divisionFactor = 810; - u16_t data = 0; - u32_t symbolRate = 0; - Bool_t negative = FALSE; - - *SymbolRateOffset = 0; - /* read data rate */ - SARR16( devAddr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &data ); - switch(data & SCU_RAM_ORX_RF_RX_DATA_RATE__M) - { - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC_ALT: - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC_ALT: - symbolRate = 1024000;/* bps */ - break; - case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_REGSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_INVSPEC: - symbolRate = 772000;/* bps */ - break; - case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC: - symbolRate = 1544000;/* bps */ - break; - default: - return (DRX_STS_ERROR); - } - - RR16( devAddr, ORX_CON_CTI_DTI_R__A, &data ); - /* convert data to positive and keep information about sign */ - if((data & 0x8000) == 0x8000){ - if(data == 0x8000) - unsignedTimingOffset = 32768; - else - unsignedTimingOffset = 0x00007FFF & (u32_t)(-data); - negative = TRUE; - } - else - unsignedTimingOffset = (u32_t)data; - - symbolRate = symbolRate >> 5; - unsignedTimingOffset = ( unsignedTimingOffset * symbolRate ); - unsignedTimingOffset = Frac( unsignedTimingOffset, 256, FRAC_ROUND ); - unsignedTimingOffset = Frac( unsignedTimingOffset, - divisionFactor, FRAC_ROUND ); - if(negative) - timingOffset = (s32_t)unsignedTimingOffset; - else - timingOffset = -(s32_t)unsignedTimingOffset; - - *SymbolRateOffset = timingOffset; - - return (DRX_STS_OK); + s32_t timingOffset = 0; + u32_t unsignedTimingOffset = 0; + s32_t divisionFactor = 810; + u16_t data = 0; + u32_t symbolRate = 0; + Bool_t negative = FALSE; + + *SymbolRateOffset = 0; + /* read data rate */ + SARR16(devAddr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &data); + switch (data & SCU_RAM_ORX_RF_RX_DATA_RATE__M) { + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC_ALT: + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC_ALT: + symbolRate = 1024000; /* bps */ + break; + case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_REGSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_INVSPEC: + symbolRate = 772000; /* bps */ + break; + case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC: + symbolRate = 1544000; /* bps */ + break; + default: + return (DRX_STS_ERROR); + } + + RR16(devAddr, ORX_CON_CTI_DTI_R__A, &data); + /* convert data to positive and keep information about sign */ + if ((data & 0x8000) == 0x8000) { + if (data == 0x8000) + unsignedTimingOffset = 32768; + else + unsignedTimingOffset = 0x00007FFF & (u32_t) (-data); + negative = TRUE; + } else + unsignedTimingOffset = (u32_t) data; + + symbolRate = symbolRate >> 5; + unsignedTimingOffset = (unsignedTimingOffset * symbolRate); + unsignedTimingOffset = Frac(unsignedTimingOffset, 256, FRAC_ROUND); + unsignedTimingOffset = Frac(unsignedTimingOffset, + divisionFactor, FRAC_ROUND); + if (negative) + timingOffset = (s32_t) unsignedTimingOffset; + else + timingOffset = -(s32_t) unsignedTimingOffset; + + *SymbolRateOffset = timingOffset; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -12745,99 +12132,96 @@ rw_error: * */ static DRXStatus_t -GetOOBFreqOffset( pDRXDemodInstance_t demod, pDRXFrequency_t freqOffset ) +GetOOBFreqOffset(pDRXDemodInstance_t demod, pDRXFrequency_t freqOffset) { - u16_t data = 0; - u16_t rot = 0; - u16_t symbolRateReg = 0; - u32_t symbolRate = 0; - s32_t coarseFreqOffset = 0; - s32_t fineFreqOffset = 0; - s32_t fineSign = 1; - s32_t coarseSign = 1; - u32_t data64Hi = 0; - u32_t data64Lo = 0; - u32_t tempFreqOffset = 0; - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - pI2CDeviceAddr_t devAddr = NULL; - - /* check arguments */ - if ( ( demod == NULL ) || - ( freqOffset == NULL ) ) - { - return DRX_STS_INVALID_ARG; - } + u16_t data = 0; + u16_t rot = 0; + u16_t symbolRateReg = 0; + u32_t symbolRate = 0; + s32_t coarseFreqOffset = 0; + s32_t fineFreqOffset = 0; + s32_t fineSign = 1; + s32_t coarseSign = 1; + u32_t data64Hi = 0; + u32_t data64Lo = 0; + u32_t tempFreqOffset = 0; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + pI2CDeviceAddr_t devAddr = NULL; - devAddr = demod -> myI2CDevAddr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; + /* check arguments */ + if ((demod == NULL) || (freqOffset == NULL)) { + return DRX_STS_INVALID_ARG; + } - *freqOffset = 0; + devAddr = demod->myI2CDevAddr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; - /* read sign (spectrum inversion) */ - RR16( devAddr, ORX_FWP_IQM_FRQ_W__A, &rot ); + *freqOffset = 0; - /* read frequency offset */ - SARR16( devAddr, SCU_RAM_ORX_FRQ_OFFSET__A, &data ); - /* find COARSE frequency offset */ - /* coarseFreqOffset = ( 25312500Hz*FRQ_OFFSET >> 21 ); */ - if (data & 0x8000) - { - data = (0xffff - data + 1); - coarseSign = -1; - } - Mult32 ( data, (commonAttr->sysClockFreq * 1000)/6, &data64Hi, &data64Lo ); - tempFreqOffset = (((data64Lo >> 21) & 0x7ff) | (data64Hi << 11)); - - /* get value in KHz */ - coarseFreqOffset = coarseSign * Frac( tempFreqOffset, 1000, FRAC_ROUND ); /* KHz */ - /* read data rate */ - SARR16( devAddr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &symbolRateReg ); - switch(symbolRateReg & SCU_RAM_ORX_RF_RX_DATA_RATE__M) - { - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC_ALT: - case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC_ALT: - symbolRate = 1024000; - break; - case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_REGSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_INVSPEC: - symbolRate = 772000; - break; - case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC: - case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC: - symbolRate = 1544000; - break; - default: - return (DRX_STS_ERROR); - } - - /* find FINE frequency offset */ - /* fineFreqOffset = ( (CORRECTION_VALUE*symbolRate) >> 18 ); */ - RR16( devAddr, ORX_CON_CPH_FRQ_R__A, &data ); - /* at least 5 MSB are 0 so first divide with 2^5 without information loss*/ - fineFreqOffset = ( symbolRate >> 5 ); - if (data & 0x8000) - { - fineFreqOffset *= 0xffff - data + 1; /* Hz */ - fineSign = -1; - } else { - fineFreqOffset *= data; /* Hz */ - } - /* Left to divide with 8192 (2^13) */ - fineFreqOffset = Frac( fineFreqOffset, 8192, FRAC_ROUND ); - /* and to divide with 1000 to get KHz*/ - fineFreqOffset = fineSign * Frac( fineFreqOffset, 1000, FRAC_ROUND ); /* KHz */ - - if ( (rot & 0x8000) == 0x8000 ) - *freqOffset = -(coarseFreqOffset + fineFreqOffset); - else - *freqOffset = (coarseFreqOffset + fineFreqOffset); - - return (DRX_STS_OK); + /* read sign (spectrum inversion) */ + RR16(devAddr, ORX_FWP_IQM_FRQ_W__A, &rot); + + /* read frequency offset */ + SARR16(devAddr, SCU_RAM_ORX_FRQ_OFFSET__A, &data); + /* find COARSE frequency offset */ + /* coarseFreqOffset = ( 25312500Hz*FRQ_OFFSET >> 21 ); */ + if (data & 0x8000) { + data = (0xffff - data + 1); + coarseSign = -1; + } + Mult32(data, (commonAttr->sysClockFreq * 1000) / 6, &data64Hi, + &data64Lo); + tempFreqOffset = (((data64Lo >> 21) & 0x7ff) | (data64Hi << 11)); + + /* get value in KHz */ + coarseFreqOffset = coarseSign * Frac(tempFreqOffset, 1000, FRAC_ROUND); /* KHz */ + /* read data rate */ + SARR16(devAddr, SCU_RAM_ORX_RF_RX_DATA_RATE__A, &symbolRateReg); + switch (symbolRateReg & SCU_RAM_ORX_RF_RX_DATA_RATE__M) { + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC_ALT: + case SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC_ALT: + symbolRate = 1024000; + break; + case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_REGSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_INVSPEC: + symbolRate = 772000; + break; + case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC: + case SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC: + symbolRate = 1544000; + break; + default: + return (DRX_STS_ERROR); + } + + /* find FINE frequency offset */ + /* fineFreqOffset = ( (CORRECTION_VALUE*symbolRate) >> 18 ); */ + RR16(devAddr, ORX_CON_CPH_FRQ_R__A, &data); + /* at least 5 MSB are 0 so first divide with 2^5 without information loss */ + fineFreqOffset = (symbolRate >> 5); + if (data & 0x8000) { + fineFreqOffset *= 0xffff - data + 1; /* Hz */ + fineSign = -1; + } else { + fineFreqOffset *= data; /* Hz */ + } + /* Left to divide with 8192 (2^13) */ + fineFreqOffset = Frac(fineFreqOffset, 8192, FRAC_ROUND); + /* and to divide with 1000 to get KHz */ + fineFreqOffset = fineSign * Frac(fineFreqOffset, 1000, FRAC_ROUND); /* KHz */ + + if ((rot & 0x8000) == 0x8000) + *freqOffset = -(coarseFreqOffset + fineFreqOffset); + else + *freqOffset = (coarseFreqOffset + fineFreqOffset); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /** * \fn DRXStatus_t GetOOBFrequency () * \brief Get OOB frequency (Unit:KHz). @@ -12849,29 +12233,30 @@ rw_error: * */ static DRXStatus_t -GetOOBFrequency( pDRXDemodInstance_t demod, pDRXFrequency_t frequency ) +GetOOBFrequency(pDRXDemodInstance_t demod, pDRXFrequency_t frequency) { - u16_t data = 0; - DRXFrequency_t freqOffset = 0; - DRXFrequency_t freq = 0; - pI2CDeviceAddr_t devAddr = NULL; + u16_t data = 0; + DRXFrequency_t freqOffset = 0; + DRXFrequency_t freq = 0; + pI2CDeviceAddr_t devAddr = NULL; - devAddr = demod -> myI2CDevAddr; + devAddr = demod->myI2CDevAddr; - *frequency = 0;/* KHz */ + *frequency = 0; /* KHz */ - SARR16( devAddr, SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__A, &data ); + SARR16(devAddr, SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__A, &data); - freq = (DRXFrequency_t)((DRXFrequency_t)data * 50 + 50000L); + freq = (DRXFrequency_t) ((DRXFrequency_t) data * 50 + 50000L); - CHK_ERROR ( GetOOBFreqOffset ( demod, &freqOffset ) ); + CHK_ERROR(GetOOBFreqOffset(demod, &freqOffset)); - *frequency = freq + freqOffset; + *frequency = freq + freqOffset; - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /** * \fn DRXStatus_t GetOOBMER () * \brief Get OOB MER. @@ -12882,139 +12267,137 @@ rw_error: * Gets OOB MER. Table for MER is in Programming guide. * */ -static DRXStatus_t -GetOOBMER( pI2CDeviceAddr_t devAddr, pu32_t mer ) +static DRXStatus_t GetOOBMER(pI2CDeviceAddr_t devAddr, pu32_t mer) { - u16_t data = 0; + u16_t data = 0; - *mer = 0; - /* READ MER */ - RR16( devAddr, ORX_EQU_MER_MER_R__A, &data ); - switch (data) - { - case 0:/* fall through */ - case 1: - *mer = 39; - break; - case 2: - *mer = 33; - break; - case 3: - *mer = 29; - break; - case 4: - *mer = 27; - break; - case 5: - *mer = 25; - break; - case 6: - *mer = 23; - break; - case 7: - *mer = 22; - break; - case 8: - *mer = 21; - break; - case 9: - *mer = 20; - break; - case 10: - *mer = 19; - break; - case 11: - *mer = 18; - break; - case 12: - *mer = 17; - break; - case 13:/* fall through */ - case 14: - *mer = 16; - break; - case 15:/* fall through */ - case 16: - *mer = 15; - break; - case 17:/* fall through */ - case 18: - *mer = 14; - break; - case 19:/* fall through */ - case 20: - *mer = 13; - break; - case 21:/* fall through */ - case 22: - *mer = 12; - break; - case 23:/* fall through */ - case 24:/* fall through */ - case 25: - *mer = 11; - break; - case 26:/* fall through */ - case 27:/* fall through */ - case 28: - *mer = 10; - break; - case 29:/* fall through */ - case 30:/* fall through */ - case 31:/* fall through */ - case 32: - *mer = 9; - break; - case 33:/* fall through */ - case 34:/* fall through */ - case 35:/* fall through */ - case 36: - *mer = 8; - break; - case 37:/* fall through */ - case 38:/* fall through */ - case 39:/* fall through */ - case 40: - *mer = 7; - break; - case 41:/* fall through */ - case 42:/* fall through */ - case 43:/* fall through */ - case 44:/* fall through */ - case 45: - *mer = 6; - break; - case 46:/* fall through */ - case 47:/* fall through */ - case 48:/* fall through */ - case 49:/* fall through */ - case 50:/* fall through */ - *mer = 5; - break; - case 51:/* fall through */ - case 52:/* fall through */ - case 53:/* fall through */ - case 54:/* fall through */ - case 55:/* fall through */ - case 56:/* fall through */ - case 57: - *mer = 4; - break; - case 58:/* fall through */ - case 59:/* fall through */ - case 60:/* fall through */ - case 61:/* fall through */ - case 62:/* fall through */ - case 63: - *mer = 0; - break; - default: - *mer = 0; - break; - } - return (DRX_STS_OK); + *mer = 0; + /* READ MER */ + RR16(devAddr, ORX_EQU_MER_MER_R__A, &data); + switch (data) { + case 0: /* fall through */ + case 1: + *mer = 39; + break; + case 2: + *mer = 33; + break; + case 3: + *mer = 29; + break; + case 4: + *mer = 27; + break; + case 5: + *mer = 25; + break; + case 6: + *mer = 23; + break; + case 7: + *mer = 22; + break; + case 8: + *mer = 21; + break; + case 9: + *mer = 20; + break; + case 10: + *mer = 19; + break; + case 11: + *mer = 18; + break; + case 12: + *mer = 17; + break; + case 13: /* fall through */ + case 14: + *mer = 16; + break; + case 15: /* fall through */ + case 16: + *mer = 15; + break; + case 17: /* fall through */ + case 18: + *mer = 14; + break; + case 19: /* fall through */ + case 20: + *mer = 13; + break; + case 21: /* fall through */ + case 22: + *mer = 12; + break; + case 23: /* fall through */ + case 24: /* fall through */ + case 25: + *mer = 11; + break; + case 26: /* fall through */ + case 27: /* fall through */ + case 28: + *mer = 10; + break; + case 29: /* fall through */ + case 30: /* fall through */ + case 31: /* fall through */ + case 32: + *mer = 9; + break; + case 33: /* fall through */ + case 34: /* fall through */ + case 35: /* fall through */ + case 36: + *mer = 8; + break; + case 37: /* fall through */ + case 38: /* fall through */ + case 39: /* fall through */ + case 40: + *mer = 7; + break; + case 41: /* fall through */ + case 42: /* fall through */ + case 43: /* fall through */ + case 44: /* fall through */ + case 45: + *mer = 6; + break; + case 46: /* fall through */ + case 47: /* fall through */ + case 48: /* fall through */ + case 49: /* fall through */ + case 50: /* fall through */ + *mer = 5; + break; + case 51: /* fall through */ + case 52: /* fall through */ + case 53: /* fall through */ + case 54: /* fall through */ + case 55: /* fall through */ + case 56: /* fall through */ + case 57: + *mer = 4; + break; + case 58: /* fall through */ + case 59: /* fall through */ + case 60: /* fall through */ + case 61: /* fall through */ + case 62: /* fall through */ + case 63: + *mer = 0; + break; + default: + *mer = 0; + break; + } + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif /*#ifndef DRXJ_DIGITAL_ONLY */ @@ -13025,47 +12408,43 @@ rw_error: * \param active * \return DRXStatus_t. */ -static DRXStatus_t -SetOrxNsuAox ( pDRXDemodInstance_t demod, Bool_t active ) -{ - u16_t data = 0; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod -> myI2CDevAddr; +static DRXStatus_t SetOrxNsuAox(pDRXDemodInstance_t demod, Bool_t active) +{ + u16_t data = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + + /* Configure NSU_AOX */ + RR16(devAddr, ORX_NSU_AOX_STDBY_W__A, &data); + if (!active) { + data &= ((~ORX_NSU_AOX_STDBY_W_STDBYADC_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYAMP_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYBIAS_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYPLL_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYPD_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYTAGC_IF_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYTAGC_RF_A2_ON) + & (~ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_ON) + ); + } else { /* active */ + + data |= (ORX_NSU_AOX_STDBY_W_STDBYADC_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYAMP_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYBIAS_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYPLL_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYPD_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYTAGC_IF_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYTAGC_RF_A2_ON + | ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_ON); + } + WR16(devAddr, ORX_NSU_AOX_STDBY_W__A, data); - /* Configure NSU_AOX */ - RR16( devAddr, ORX_NSU_AOX_STDBY_W__A , &data ); - if( !active ) - { - data &= ((~ORX_NSU_AOX_STDBY_W_STDBYADC_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYAMP_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYBIAS_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYPLL_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYPD_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYTAGC_IF_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYTAGC_RF_A2_ON) - & (~ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_ON) - ); - } - else /* active */ - { - data |= (ORX_NSU_AOX_STDBY_W_STDBYADC_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYAMP_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYBIAS_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYPLL_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYPD_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYTAGC_IF_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYTAGC_RF_A2_ON - | ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_ON - ); - } - WR16( devAddr, ORX_NSU_AOX_STDBY_W__A , data ); - - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -13085,274 +12464,281 @@ rw_error: */ /* Nyquist filter impulse response */ -#define IMPULSE_COSINE_ALPHA_0_3 {-3,-4,-1, 6,10, 7,-5,-20,-25,-10,29,79,123,140} /*sqrt raised-cosine filter with alpha=0.3 */ -#define IMPULSE_COSINE_ALPHA_0_5 { 2, 0,-2,-2, 2, 5, 2,-10,-20,-14,20,74,125,145} /*sqrt raised-cosine filter with alpha=0.5 */ -#define IMPULSE_COSINE_ALPHA_RO_0_5 { 0, 0, 1, 2, 3, 0,-7,-15,-16, 0,34,77,114,128} /*full raised-cosine filter with alpha=0.5 (receiver only) */ +#define IMPULSE_COSINE_ALPHA_0_3 {-3,-4,-1, 6,10, 7,-5,-20,-25,-10,29,79,123,140} /*sqrt raised-cosine filter with alpha=0.3 */ +#define IMPULSE_COSINE_ALPHA_0_5 { 2, 0,-2,-2, 2, 5, 2,-10,-20,-14,20,74,125,145} /*sqrt raised-cosine filter with alpha=0.5 */ +#define IMPULSE_COSINE_ALPHA_RO_0_5 { 0, 0, 1, 2, 3, 0,-7,-15,-16, 0,34,77,114,128} /*full raised-cosine filter with alpha=0.5 (receiver only) */ /* Coefficients for the nyquist fitler (total: 27 taps) */ #define NYQFILTERLEN 27 -static DRXStatus_t -CtrlSetOOB( pDRXDemodInstance_t demod, pDRXOOB_t oobParam ) +static DRXStatus_t CtrlSetOOB(pDRXDemodInstance_t demod, pDRXOOB_t oobParam) { #ifndef DRXJ_DIGITAL_ONLY - DRXOOBDownstreamStandard_t standard = DRX_OOB_MODE_A; - DRXFrequency_t freq = 0; /* KHz */ - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - u16_t i = 0; - Bool_t mirrorFreqSpectOOB = FALSE; - u16_t trkFilterValue = 0; - DRXJSCUCmd_t scuCmd; - u16_t setParamParameters[3]; - u16_t cmdResult[2] = {0, 0}; - s16_t NyquistCoeffs[4][(NYQFILTERLEN+1)/2] = - { - IMPULSE_COSINE_ALPHA_0_3, /* Target Mode 0 */ - IMPULSE_COSINE_ALPHA_0_3, /* Target Mode 1 */ - IMPULSE_COSINE_ALPHA_0_5, /* Target Mode 2 */ - IMPULSE_COSINE_ALPHA_RO_0_5 /* Target Mode 3 */ - }; - u8_t mode_val[4] = {2, 2, 0, 1}; - u8_t PFICoeffs[4][6] = - { - {DRXJ_16TO8(-92), DRXJ_16TO8(-108), DRXJ_16TO8(100) }, /* TARGET_MODE = 0: PFI_A = -23/32; PFI_B = -54/32; PFI_C = 25/32; fg = 0.5 MHz (Att=26dB) */ - {DRXJ_16TO8(-64), DRXJ_16TO8(-80), DRXJ_16TO8(80) }, /* TARGET_MODE = 1: PFI_A = -16/32; PFI_B = -40/32; PFI_C = 20/32; fg = 1.0 MHz (Att=28dB) */ - {DRXJ_16TO8(-80), DRXJ_16TO8(-98), DRXJ_16TO8(92) }, /* TARGET_MODE = 2, 3: PFI_A = -20/32; PFI_B = -49/32; PFI_C = 23/32; fg = 0.8 MHz (Att=25dB) */ - {DRXJ_16TO8(-80), DRXJ_16TO8(-98), DRXJ_16TO8(92) } /* TARGET_MODE = 2, 3: PFI_A = -20/32; PFI_B = -49/32; PFI_C = 23/32; fg = 0.8 MHz (Att=25dB) */ - }; - u16_t mode_index; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod -> myExtAttr; - mirrorFreqSpectOOB = extAttr->mirrorFreqSpectOOB; - - /* Check parameters */ - if (oobParam == NULL) - { - /* power off oob module */ - scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB - | SCU_RAM_COMMAND_CMD_DEMOD_STOP; - scuCmd.parameterLen = 0; - scuCmd.resultLen = 1; - scuCmd.result = cmdResult; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); - CHK_ERROR( SetOrxNsuAox( demod, FALSE ) ); - WR16 ( devAddr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP); - - extAttr->oobPowerOn = FALSE; - return (DRX_STS_OK); - } - - standard = oobParam->standard; - - freq = oobParam->frequency; - if ((freq < 70000) || (freq > 130000)) - return (DRX_STS_ERROR); - freq = (freq - 50000) / 50; + DRXOOBDownstreamStandard_t standard = DRX_OOB_MODE_A; + DRXFrequency_t freq = 0; /* KHz */ + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + u16_t i = 0; + Bool_t mirrorFreqSpectOOB = FALSE; + u16_t trkFilterValue = 0; + DRXJSCUCmd_t scuCmd; + u16_t setParamParameters[3]; + u16_t cmdResult[2] = { 0, 0 }; + s16_t NyquistCoeffs[4][(NYQFILTERLEN + 1) / 2] = { + IMPULSE_COSINE_ALPHA_0_3, /* Target Mode 0 */ + IMPULSE_COSINE_ALPHA_0_3, /* Target Mode 1 */ + IMPULSE_COSINE_ALPHA_0_5, /* Target Mode 2 */ + IMPULSE_COSINE_ALPHA_RO_0_5 /* Target Mode 3 */ + }; + u8_t mode_val[4] = { 2, 2, 0, 1 }; + u8_t PFICoeffs[4][6] = { + {DRXJ_16TO8(-92), DRXJ_16TO8(-108), DRXJ_16TO8(100)}, /* TARGET_MODE = 0: PFI_A = -23/32; PFI_B = -54/32; PFI_C = 25/32; fg = 0.5 MHz (Att=26dB) */ + {DRXJ_16TO8(-64), DRXJ_16TO8(-80), DRXJ_16TO8(80)}, /* TARGET_MODE = 1: PFI_A = -16/32; PFI_B = -40/32; PFI_C = 20/32; fg = 1.0 MHz (Att=28dB) */ + {DRXJ_16TO8(-80), DRXJ_16TO8(-98), DRXJ_16TO8(92)}, /* TARGET_MODE = 2, 3: PFI_A = -20/32; PFI_B = -49/32; PFI_C = 23/32; fg = 0.8 MHz (Att=25dB) */ + {DRXJ_16TO8(-80), DRXJ_16TO8(-98), DRXJ_16TO8(92)} /* TARGET_MODE = 2, 3: PFI_A = -20/32; PFI_B = -49/32; PFI_C = 23/32; fg = 0.8 MHz (Att=25dB) */ + }; + u16_t mode_index; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + mirrorFreqSpectOOB = extAttr->mirrorFreqSpectOOB; + + /* Check parameters */ + if (oobParam == NULL) { + /* power off oob module */ + scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB + | SCU_RAM_COMMAND_CMD_DEMOD_STOP; + scuCmd.parameterLen = 0; + scuCmd.resultLen = 1; + scuCmd.result = cmdResult; + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); + CHK_ERROR(SetOrxNsuAox(demod, FALSE)); + WR16(devAddr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP); + + extAttr->oobPowerOn = FALSE; + return (DRX_STS_OK); + } - { - u16_t index = 0; - u16_t remainder = 0; - pu16_t trkFiltercfg = extAttr->oobTrkFilterCfg; + standard = oobParam->standard; - index = (u16_t)((freq - 400) / 200); - remainder = (u16_t)((freq - 400) % 200); - trkFilterValue = trkFiltercfg[index] - (trkFiltercfg[index] - trkFiltercfg[index + 1])/10 - * remainder / 20; - } + freq = oobParam->frequency; + if ((freq < 70000) || (freq > 130000)) + return (DRX_STS_ERROR); + freq = (freq - 50000) / 50; + { + u16_t index = 0; + u16_t remainder = 0; + pu16_t trkFiltercfg = extAttr->oobTrkFilterCfg; + + index = (u16_t) ((freq - 400) / 200); + remainder = (u16_t) ((freq - 400) % 200); + trkFilterValue = + trkFiltercfg[index] - (trkFiltercfg[index] - + trkFiltercfg[index + + 1]) / 10 * remainder / + 20; + } /*********/ - /* Stop */ + /* Stop */ /*********/ - WR16 ( devAddr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP); - scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB - | SCU_RAM_COMMAND_CMD_DEMOD_STOP; - scuCmd.parameterLen = 0; - scuCmd.resultLen = 1; - scuCmd.result = cmdResult; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); + WR16(devAddr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP); + scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB + | SCU_RAM_COMMAND_CMD_DEMOD_STOP; + scuCmd.parameterLen = 0; + scuCmd.resultLen = 1; + scuCmd.result = cmdResult; + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); /*********/ - /* Reset */ + /* Reset */ /*********/ - scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB - | SCU_RAM_COMMAND_CMD_DEMOD_RESET; - scuCmd.parameterLen = 0; - scuCmd.resultLen = 1; - scuCmd.result = cmdResult; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); + scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB + | SCU_RAM_COMMAND_CMD_DEMOD_RESET; + scuCmd.parameterLen = 0; + scuCmd.resultLen = 1; + scuCmd.result = cmdResult; + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); /***********/ - /* SET_ENV */ + /* SET_ENV */ /***********/ - /* set frequency, spectrum inversion and data rate */ - scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB - | SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV; - scuCmd.parameterLen = 3; - /* 1-data rate;2-frequency */ - switch ( oobParam->standard ) - { - case DRX_OOB_MODE_A: - if( - /* signal is transmitted inverted */ - ( (oobParam->spectrumInverted == TRUE) & - /* and tuner is not mirroring the signal */ - (mirrorFreqSpectOOB == FALSE) ) | - /* or */ - /* signal is transmitted noninverted */ - ( (oobParam->spectrumInverted == FALSE) & - /* and tuner is mirroring the signal */ - (mirrorFreqSpectOOB == TRUE) ) - ) - setParamParameters[0] = SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC; - else - setParamParameters[0] = SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC; - break; - case DRX_OOB_MODE_B_GRADE_A: - if( - /* signal is transmitted inverted */ - ( (oobParam->spectrumInverted == TRUE) & - /* and tuner is not mirroring the signal */ - (mirrorFreqSpectOOB == FALSE) ) | - /* or */ - /* signal is transmitted noninverted */ - ( (oobParam->spectrumInverted == FALSE) & - /* and tuner is mirroring the signal */ - (mirrorFreqSpectOOB == TRUE) ) - ) - setParamParameters[0] = SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_INVSPEC; - else - setParamParameters[0] = SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_REGSPEC; - break; - case DRX_OOB_MODE_B_GRADE_B: - default: - if( - /* signal is transmitted inverted */ - ( (oobParam->spectrumInverted == TRUE) & - /* and tuner is not mirroring the signal */ - (mirrorFreqSpectOOB == FALSE) ) | - /* or */ - /* signal is transmitted noninverted */ - ( (oobParam->spectrumInverted == FALSE) & - /* and tuner is mirroring the signal */ - (mirrorFreqSpectOOB == TRUE) ) - ) - setParamParameters[0] = SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC; - else - setParamParameters[0] = SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC; - break; - } - setParamParameters[1] = ( u16_t )( freq & 0xFFFF ); - setParamParameters[2] = trkFilterValue; - scuCmd.parameter = setParamParameters; - scuCmd.resultLen = 1; - scuCmd.result = cmdResult; - mode_index = mode_val[(setParamParameters[0] & 0xC0) >> 6]; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); - - WR16 ( devAddr, SIO_TOP_COMM_KEY__A, 0xFABA); /* Write magic word to enable pdr reg write */ - WR16 ( devAddr, SIO_PDR_OOB_CRX_CFG__A, - OOB_CRX_DRIVE_STRENGTH << SIO_PDR_OOB_CRX_CFG_DRIVE__B - | 0x03 << SIO_PDR_OOB_CRX_CFG_MODE__B ); - WR16 ( devAddr, SIO_PDR_OOB_DRX_CFG__A, - OOB_DRX_DRIVE_STRENGTH << SIO_PDR_OOB_DRX_CFG_DRIVE__B - | 0x03 << SIO_PDR_OOB_DRX_CFG_MODE__B ); - WR16 ( devAddr, SIO_TOP_COMM_KEY__A, 0x0000); /* Write magic word to disable pdr reg write */ - - WR16 ( devAddr, ORX_TOP_COMM_KEY__A, 0); - WR16 ( devAddr, ORX_FWP_AAG_LEN_W__A, 16000); - WR16 ( devAddr, ORX_FWP_AAG_THR_W__A, 40); - - /* ddc */ - WR16( devAddr, ORX_DDC_OFO_SET_W__A, ORX_DDC_OFO_SET_W__PRE); - - /* nsu */ - WR16( devAddr, ORX_NSU_AOX_LOPOW_W__A, extAttr->oobLoPow); - - /* initialization for target mode */ - WR16( devAddr, SCU_RAM_ORX_TARGET_MODE__A, SCU_RAM_ORX_TARGET_MODE_2048KBPS_SQRT); - WR16( devAddr, SCU_RAM_ORX_FREQ_GAIN_CORR__A, SCU_RAM_ORX_FREQ_GAIN_CORR_2048KBPS); - - /* Reset bits for timing and freq. recovery */ - WR16( devAddr, SCU_RAM_ORX_RST_CPH__A, 0x0001); - WR16( devAddr, SCU_RAM_ORX_RST_CTI__A, 0x0002); - WR16( devAddr, SCU_RAM_ORX_RST_KRN__A, 0x0004); - WR16( devAddr, SCU_RAM_ORX_RST_KRP__A, 0x0008); - - /* AGN_LOCK = {2048>>3, -2048, 8, -8, 0, 1}; */ - WR16( devAddr, SCU_RAM_ORX_AGN_LOCK_TH__A, 2048>>3); - WR16( devAddr, SCU_RAM_ORX_AGN_LOCK_TOTH__A, (u16_t) (-2048)); - WR16( devAddr, SCU_RAM_ORX_AGN_ONLOCK_TTH__A, 8); - WR16( devAddr, SCU_RAM_ORX_AGN_UNLOCK_TTH__A, (u16_t)(-8)); - WR16( devAddr, SCU_RAM_ORX_AGN_LOCK_MASK__A, 1); - - /* DGN_LOCK = {10, -2048, 8, -8, 0, 1<<1}; */ - WR16( devAddr, SCU_RAM_ORX_DGN_LOCK_TH__A, 10); - WR16( devAddr, SCU_RAM_ORX_DGN_LOCK_TOTH__A, (u16_t)(-2048)); - WR16( devAddr, SCU_RAM_ORX_DGN_ONLOCK_TTH__A, 8); - WR16( devAddr, SCU_RAM_ORX_DGN_UNLOCK_TTH__A, (u16_t)(-8)); - WR16( devAddr, SCU_RAM_ORX_DGN_LOCK_MASK__A, 1<<1); - - /* FRQ_LOCK = {15,-2048, 8, -8, 0, 1<<2}; */ - WR16( devAddr, SCU_RAM_ORX_FRQ_LOCK_TH__A, 17); - WR16( devAddr, SCU_RAM_ORX_FRQ_LOCK_TOTH__A, (u16_t)(-2048)); - WR16( devAddr, SCU_RAM_ORX_FRQ_ONLOCK_TTH__A, 8); - WR16( devAddr, SCU_RAM_ORX_FRQ_UNLOCK_TTH__A, (u16_t)(-8)); - WR16( devAddr, SCU_RAM_ORX_FRQ_LOCK_MASK__A, 1<<2); - - /* PHA_LOCK = {5000, -2048, 8, -8, 0, 1<<3}; */ - WR16( devAddr, SCU_RAM_ORX_PHA_LOCK_TH__A, 3000); - WR16( devAddr, SCU_RAM_ORX_PHA_LOCK_TOTH__A, (u16_t)(-2048)); - WR16( devAddr, SCU_RAM_ORX_PHA_ONLOCK_TTH__A, 8); - WR16( devAddr, SCU_RAM_ORX_PHA_UNLOCK_TTH__A, (u16_t)(-8)); - WR16( devAddr, SCU_RAM_ORX_PHA_LOCK_MASK__A, 1<<3); - - /* TIM_LOCK = {300, -2048, 8, -8, 0, 1<<4}; */ - WR16( devAddr, SCU_RAM_ORX_TIM_LOCK_TH__A, 400); - WR16( devAddr, SCU_RAM_ORX_TIM_LOCK_TOTH__A, (u16_t)(-2048)); - WR16( devAddr, SCU_RAM_ORX_TIM_ONLOCK_TTH__A, 8); - WR16( devAddr, SCU_RAM_ORX_TIM_UNLOCK_TTH__A, (u16_t)(-8)); - WR16( devAddr, SCU_RAM_ORX_TIM_LOCK_MASK__A, 1<<4); - - /* EQU_LOCK = {20, -2048, 8, -8, 0, 1<<5}; */ - WR16( devAddr, SCU_RAM_ORX_EQU_LOCK_TH__A, 20); - WR16( devAddr, SCU_RAM_ORX_EQU_LOCK_TOTH__A, (u16_t)(-2048)); - WR16( devAddr, SCU_RAM_ORX_EQU_ONLOCK_TTH__A, 4); - WR16( devAddr, SCU_RAM_ORX_EQU_UNLOCK_TTH__A, (u16_t)(-4)); - WR16( devAddr, SCU_RAM_ORX_EQU_LOCK_MASK__A, 1<<5); - - /* PRE-Filter coefficients (PFI) */ - WRB( devAddr, ORX_FWP_PFI_A_W__A, sizeof(PFICoeffs[mode_index]), ((pu8_t)PFICoeffs[mode_index])); - WR16( devAddr, ORX_TOP_MDE_W__A, mode_index); - - /* NYQUIST-Filter coefficients (NYQ) */ - for (i = 0; i < (NYQFILTERLEN + 1) / 2; i++) - { - WR16( devAddr, ORX_FWP_NYQ_ADR_W__A, i); - WR16( devAddr, ORX_FWP_NYQ_COF_RW__A, NyquistCoeffs[mode_index][i]); - } - WR16( devAddr, ORX_FWP_NYQ_ADR_W__A, 31); - WR16 ( devAddr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_ACTIVE); + /* set frequency, spectrum inversion and data rate */ + scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB + | SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV; + scuCmd.parameterLen = 3; + /* 1-data rate;2-frequency */ + switch (oobParam->standard) { + case DRX_OOB_MODE_A: + if ( + /* signal is transmitted inverted */ + ((oobParam->spectrumInverted == TRUE) & + /* and tuner is not mirroring the signal */ + (mirrorFreqSpectOOB == FALSE)) | + /* or */ + /* signal is transmitted noninverted */ + ((oobParam->spectrumInverted == FALSE) & + /* and tuner is mirroring the signal */ + (mirrorFreqSpectOOB == TRUE)) + ) + setParamParameters[0] = + SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_INVSPEC; + else + setParamParameters[0] = + SCU_RAM_ORX_RF_RX_DATA_RATE_2048KBPS_REGSPEC; + break; + case DRX_OOB_MODE_B_GRADE_A: + if ( + /* signal is transmitted inverted */ + ((oobParam->spectrumInverted == TRUE) & + /* and tuner is not mirroring the signal */ + (mirrorFreqSpectOOB == FALSE)) | + /* or */ + /* signal is transmitted noninverted */ + ((oobParam->spectrumInverted == FALSE) & + /* and tuner is mirroring the signal */ + (mirrorFreqSpectOOB == TRUE)) + ) + setParamParameters[0] = + SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_INVSPEC; + else + setParamParameters[0] = + SCU_RAM_ORX_RF_RX_DATA_RATE_1544KBPS_REGSPEC; + break; + case DRX_OOB_MODE_B_GRADE_B: + default: + if ( + /* signal is transmitted inverted */ + ((oobParam->spectrumInverted == TRUE) & + /* and tuner is not mirroring the signal */ + (mirrorFreqSpectOOB == FALSE)) | + /* or */ + /* signal is transmitted noninverted */ + ((oobParam->spectrumInverted == FALSE) & + /* and tuner is mirroring the signal */ + (mirrorFreqSpectOOB == TRUE)) + ) + setParamParameters[0] = + SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC; + else + setParamParameters[0] = + SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC; + break; + } + setParamParameters[1] = (u16_t) (freq & 0xFFFF); + setParamParameters[2] = trkFilterValue; + scuCmd.parameter = setParamParameters; + scuCmd.resultLen = 1; + scuCmd.result = cmdResult; + mode_index = mode_val[(setParamParameters[0] & 0xC0) >> 6]; + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); + + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0xFABA); /* Write magic word to enable pdr reg write */ + WR16(devAddr, SIO_PDR_OOB_CRX_CFG__A, + OOB_CRX_DRIVE_STRENGTH << SIO_PDR_OOB_CRX_CFG_DRIVE__B + | 0x03 << SIO_PDR_OOB_CRX_CFG_MODE__B); + WR16(devAddr, SIO_PDR_OOB_DRX_CFG__A, + OOB_DRX_DRIVE_STRENGTH << SIO_PDR_OOB_DRX_CFG_DRIVE__B + | 0x03 << SIO_PDR_OOB_DRX_CFG_MODE__B); + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0x0000); /* Write magic word to disable pdr reg write */ + + WR16(devAddr, ORX_TOP_COMM_KEY__A, 0); + WR16(devAddr, ORX_FWP_AAG_LEN_W__A, 16000); + WR16(devAddr, ORX_FWP_AAG_THR_W__A, 40); + + /* ddc */ + WR16(devAddr, ORX_DDC_OFO_SET_W__A, ORX_DDC_OFO_SET_W__PRE); + + /* nsu */ + WR16(devAddr, ORX_NSU_AOX_LOPOW_W__A, extAttr->oobLoPow); + + /* initialization for target mode */ + WR16(devAddr, SCU_RAM_ORX_TARGET_MODE__A, + SCU_RAM_ORX_TARGET_MODE_2048KBPS_SQRT); + WR16(devAddr, SCU_RAM_ORX_FREQ_GAIN_CORR__A, + SCU_RAM_ORX_FREQ_GAIN_CORR_2048KBPS); + + /* Reset bits for timing and freq. recovery */ + WR16(devAddr, SCU_RAM_ORX_RST_CPH__A, 0x0001); + WR16(devAddr, SCU_RAM_ORX_RST_CTI__A, 0x0002); + WR16(devAddr, SCU_RAM_ORX_RST_KRN__A, 0x0004); + WR16(devAddr, SCU_RAM_ORX_RST_KRP__A, 0x0008); + + /* AGN_LOCK = {2048>>3, -2048, 8, -8, 0, 1}; */ + WR16(devAddr, SCU_RAM_ORX_AGN_LOCK_TH__A, 2048 >> 3); + WR16(devAddr, SCU_RAM_ORX_AGN_LOCK_TOTH__A, (u16_t) (-2048)); + WR16(devAddr, SCU_RAM_ORX_AGN_ONLOCK_TTH__A, 8); + WR16(devAddr, SCU_RAM_ORX_AGN_UNLOCK_TTH__A, (u16_t) (-8)); + WR16(devAddr, SCU_RAM_ORX_AGN_LOCK_MASK__A, 1); + + /* DGN_LOCK = {10, -2048, 8, -8, 0, 1<<1}; */ + WR16(devAddr, SCU_RAM_ORX_DGN_LOCK_TH__A, 10); + WR16(devAddr, SCU_RAM_ORX_DGN_LOCK_TOTH__A, (u16_t) (-2048)); + WR16(devAddr, SCU_RAM_ORX_DGN_ONLOCK_TTH__A, 8); + WR16(devAddr, SCU_RAM_ORX_DGN_UNLOCK_TTH__A, (u16_t) (-8)); + WR16(devAddr, SCU_RAM_ORX_DGN_LOCK_MASK__A, 1 << 1); + + /* FRQ_LOCK = {15,-2048, 8, -8, 0, 1<<2}; */ + WR16(devAddr, SCU_RAM_ORX_FRQ_LOCK_TH__A, 17); + WR16(devAddr, SCU_RAM_ORX_FRQ_LOCK_TOTH__A, (u16_t) (-2048)); + WR16(devAddr, SCU_RAM_ORX_FRQ_ONLOCK_TTH__A, 8); + WR16(devAddr, SCU_RAM_ORX_FRQ_UNLOCK_TTH__A, (u16_t) (-8)); + WR16(devAddr, SCU_RAM_ORX_FRQ_LOCK_MASK__A, 1 << 2); + + /* PHA_LOCK = {5000, -2048, 8, -8, 0, 1<<3}; */ + WR16(devAddr, SCU_RAM_ORX_PHA_LOCK_TH__A, 3000); + WR16(devAddr, SCU_RAM_ORX_PHA_LOCK_TOTH__A, (u16_t) (-2048)); + WR16(devAddr, SCU_RAM_ORX_PHA_ONLOCK_TTH__A, 8); + WR16(devAddr, SCU_RAM_ORX_PHA_UNLOCK_TTH__A, (u16_t) (-8)); + WR16(devAddr, SCU_RAM_ORX_PHA_LOCK_MASK__A, 1 << 3); + + /* TIM_LOCK = {300, -2048, 8, -8, 0, 1<<4}; */ + WR16(devAddr, SCU_RAM_ORX_TIM_LOCK_TH__A, 400); + WR16(devAddr, SCU_RAM_ORX_TIM_LOCK_TOTH__A, (u16_t) (-2048)); + WR16(devAddr, SCU_RAM_ORX_TIM_ONLOCK_TTH__A, 8); + WR16(devAddr, SCU_RAM_ORX_TIM_UNLOCK_TTH__A, (u16_t) (-8)); + WR16(devAddr, SCU_RAM_ORX_TIM_LOCK_MASK__A, 1 << 4); + + /* EQU_LOCK = {20, -2048, 8, -8, 0, 1<<5}; */ + WR16(devAddr, SCU_RAM_ORX_EQU_LOCK_TH__A, 20); + WR16(devAddr, SCU_RAM_ORX_EQU_LOCK_TOTH__A, (u16_t) (-2048)); + WR16(devAddr, SCU_RAM_ORX_EQU_ONLOCK_TTH__A, 4); + WR16(devAddr, SCU_RAM_ORX_EQU_UNLOCK_TTH__A, (u16_t) (-4)); + WR16(devAddr, SCU_RAM_ORX_EQU_LOCK_MASK__A, 1 << 5); + + /* PRE-Filter coefficients (PFI) */ + WRB(devAddr, ORX_FWP_PFI_A_W__A, sizeof(PFICoeffs[mode_index]), + ((pu8_t) PFICoeffs[mode_index])); + WR16(devAddr, ORX_TOP_MDE_W__A, mode_index); + + /* NYQUIST-Filter coefficients (NYQ) */ + for (i = 0; i < (NYQFILTERLEN + 1) / 2; i++) { + WR16(devAddr, ORX_FWP_NYQ_ADR_W__A, i); + WR16(devAddr, ORX_FWP_NYQ_COF_RW__A, + NyquistCoeffs[mode_index][i]); + } + WR16(devAddr, ORX_FWP_NYQ_ADR_W__A, 31); + WR16(devAddr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_ACTIVE); /*********/ - /* Start */ + /* Start */ /*********/ - scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB - | SCU_RAM_COMMAND_CMD_DEMOD_START; - scuCmd.parameterLen = 0; - scuCmd.resultLen = 1; - scuCmd.result = cmdResult; - CHK_ERROR( SCUCommand( devAddr, &scuCmd ) ); + scuCmd.command = SCU_RAM_COMMAND_STANDARD_OOB + | SCU_RAM_COMMAND_CMD_DEMOD_START; + scuCmd.parameterLen = 0; + scuCmd.resultLen = 1; + scuCmd.result = cmdResult; + CHK_ERROR(SCUCommand(devAddr, &scuCmd)); - CHK_ERROR( SetOrxNsuAox( demod, TRUE ) ); - WR16( devAddr, ORX_NSU_AOX_STHR_W__A, extAttr->oobPreSaw ); + CHK_ERROR(SetOrxNsuAox(demod, TRUE)); + WR16(devAddr, ORX_NSU_AOX_STHR_W__A, extAttr->oobPreSaw); - extAttr->oobPowerOn = TRUE; + extAttr->oobPowerOn = TRUE; - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: #endif - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /** * \fn DRXStatus_t CtrlGetOOB() * \brief Set modulation standard to be used. @@ -13361,40 +12747,40 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -CtrlGetOOB( pDRXDemodInstance_t demod, pDRXOOBStatus_t oobStatus ) +CtrlGetOOB(pDRXDemodInstance_t demod, pDRXOOBStatus_t oobStatus) { #ifndef DRXJ_DIGITAL_ONLY - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - u16_t data = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + u16_t data = 0; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* check arguments */ - if ( oobStatus == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if (oobStatus == NULL) { + return (DRX_STS_INVALID_ARG); + } - if ( extAttr->oobPowerOn == FALSE) - return (DRX_STS_ERROR); + if (extAttr->oobPowerOn == FALSE) + return (DRX_STS_ERROR); - RR16 ( devAddr, ORX_DDC_OFO_SET_W__A, &data); - RR16 ( devAddr, ORX_NSU_TUN_RFGAIN_W__A, &data); - RR16 ( devAddr, ORX_FWP_AAG_THR_W__A, &data); - SARR16 ( devAddr, SCU_RAM_ORX_DGN_KI__A, &data); - RR16 ( devAddr, ORX_FWP_SRC_DGN_W__A, &data); + RR16(devAddr, ORX_DDC_OFO_SET_W__A, &data); + RR16(devAddr, ORX_NSU_TUN_RFGAIN_W__A, &data); + RR16(devAddr, ORX_FWP_AAG_THR_W__A, &data); + SARR16(devAddr, SCU_RAM_ORX_DGN_KI__A, &data); + RR16(devAddr, ORX_FWP_SRC_DGN_W__A, &data); - CHK_ERROR ( GetOOBLockStatus ( demod, devAddr, &oobStatus->lock )); - CHK_ERROR ( GetOOBFrequency ( demod, &oobStatus->frequency )); - CHK_ERROR ( GetOOBMER ( devAddr, &oobStatus->mer )); - CHK_ERROR ( GetOOBSymbolRateOffset ( devAddr, &oobStatus->symbolRateOffset )); + CHK_ERROR(GetOOBLockStatus(demod, devAddr, &oobStatus->lock)); + CHK_ERROR(GetOOBFrequency(demod, &oobStatus->frequency)); + CHK_ERROR(GetOOBMER(devAddr, &oobStatus->mer)); + CHK_ERROR(GetOOBSymbolRateOffset + (devAddr, &oobStatus->symbolRateOffset)); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: #endif - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -13405,23 +12791,22 @@ rw_error: */ #ifndef DRXJ_DIGITAL_ONLY static DRXStatus_t -CtrlSetCfgOOBPreSAW( pDRXDemodInstance_t demod, pu16_t cfgData ) +CtrlSetCfgOOBPreSAW(pDRXDemodInstance_t demod, pu16_t cfgData) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - WR16( devAddr, ORX_NSU_AOX_STHR_W__A, *cfgData ); - extAttr->oobPreSaw = *cfgData; - return (DRX_STS_OK); + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + WR16(devAddr, ORX_NSU_AOX_STHR_W__A, *cfgData); + extAttr->oobPreSaw = *cfgData; + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif @@ -13433,19 +12818,18 @@ rw_error: */ #ifndef DRXJ_DIGITAL_ONLY static DRXStatus_t -CtrlGetCfgOOBPreSAW( pDRXDemodInstance_t demod, pu16_t cfgData ) +CtrlGetCfgOOBPreSAW(pDRXDemodInstance_t demod, pu16_t cfgData) { - pDRXJData_t extAttr = NULL; + pDRXJData_t extAttr = NULL; - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } - extAttr = (pDRXJData_t)demod->myExtAttr; + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + extAttr = (pDRXJData_t) demod->myExtAttr; - *cfgData = extAttr->oobPreSaw; + *cfgData = extAttr->oobPreSaw; - return (DRX_STS_OK); + return (DRX_STS_OK); } #endif @@ -13457,23 +12841,22 @@ CtrlGetCfgOOBPreSAW( pDRXDemodInstance_t demod, pu16_t cfgData ) */ #ifndef DRXJ_DIGITAL_ONLY static DRXStatus_t -CtrlSetCfgOOBLoPower( pDRXDemodInstance_t demod, pDRXJCfgOobLoPower_t cfgData ) +CtrlSetCfgOOBLoPower(pDRXDemodInstance_t demod, pDRXJCfgOobLoPower_t cfgData) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } - devAddr = demod->myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - - WR16( devAddr, ORX_NSU_AOX_LOPOW_W__A, *cfgData ); - extAttr->oobLoPow = *cfgData; - return (DRX_STS_OK); + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + WR16(devAddr, ORX_NSU_AOX_LOPOW_W__A, *cfgData); + extAttr->oobLoPow = *cfgData; + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif @@ -13485,19 +12868,18 @@ rw_error: */ #ifndef DRXJ_DIGITAL_ONLY static DRXStatus_t -CtrlGetCfgOOBLoPower( pDRXDemodInstance_t demod, pDRXJCfgOobLoPower_t cfgData ) +CtrlGetCfgOOBLoPower(pDRXDemodInstance_t demod, pDRXJCfgOobLoPower_t cfgData) { - pDRXJData_t extAttr = NULL; + pDRXJData_t extAttr = NULL; - if(cfgData == NULL) - { - return (DRX_STS_INVALID_ARG); - } - extAttr = (pDRXJData_t)demod->myExtAttr; + if (cfgData == NULL) { + return (DRX_STS_INVALID_ARG); + } + extAttr = (pDRXJData_t) demod->myExtAttr; - *cfgData = extAttr->oobLoPow; + *cfgData = extAttr->oobLoPow; - return (DRX_STS_OK); + return (DRX_STS_OK); } #endif /*============================================================================*/ @@ -13523,412 +12905,375 @@ CtrlGetCfgOOBLoPower( pDRXDemodInstance_t demod, pDRXJCfgOobLoPower_t cfgData ) * */ static DRXStatus_t -CtrlSetChannel( pDRXDemodInstance_t demod, - pDRXChannel_t channel ) +CtrlSetChannel(pDRXDemodInstance_t demod, pDRXChannel_t channel) { - DRXFrequency_t tunerSetFreq = 0; - DRXFrequency_t tunerGetFreq = 0; - DRXFrequency_t tunerFreqOffset = 0; - DRXFrequency_t intermediateFreq = 0; - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - TUNERMode_t tunerMode = 0; - pDRXCommonAttr_t commonAttr = NULL; - Bool_t bridgeClosed = FALSE; + DRXFrequency_t tunerSetFreq = 0; + DRXFrequency_t tunerGetFreq = 0; + DRXFrequency_t tunerFreqOffset = 0; + DRXFrequency_t intermediateFreq = 0; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + TUNERMode_t tunerMode = 0; + pDRXCommonAttr_t commonAttr = NULL; + Bool_t bridgeClosed = FALSE; #ifndef DRXJ_VSB_ONLY - u32_t minSymbolRate = 0; - u32_t maxSymbolRate = 0; - int bandwidthTemp = 0; - int bandwidth = 0; + u32_t minSymbolRate = 0; + u32_t maxSymbolRate = 0; + int bandwidthTemp = 0; + int bandwidth = 0; #endif /*== check arguments ======================================================*/ - if ( ( demod == NULL ) || - ( channel == NULL ) ) - { - return DRX_STS_INVALID_ARG; - } + if ((demod == NULL) || (channel == NULL)) { + return DRX_STS_INVALID_ARG; + } - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod -> myExtAttr; - standard = extAttr->standard; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; - /* check valid standards */ - switch ( standard ) - { - case DRX_STANDARD_8VSB: + /* check valid standards */ + switch (standard) { + case DRX_STANDARD_8VSB: #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: #endif /* DRXJ_VSB_ONLY */ #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: - case DRX_STANDARD_FM: - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_NTSC: + case DRX_STANDARD_FM: + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: #endif /* DRXJ_DIGITAL_ONLY */ - break; - case DRX_STANDARD_UNKNOWN: - default: - return (DRX_STS_INVALID_ARG); - } - - /* check bandwidth QAM annex B, NTSC and 8VSB */ - if ( ( standard == DRX_STANDARD_ITU_B ) || - ( standard == DRX_STANDARD_8VSB ) || - ( standard == DRX_STANDARD_NTSC ) ) - { - switch ( channel->bandwidth ) { - case DRX_BANDWIDTH_6MHZ : - case DRX_BANDWIDTH_UNKNOWN : /* fall through */ - channel->bandwidth = DRX_BANDWIDTH_6MHZ; - break; - case DRX_BANDWIDTH_8MHZ : /* fall through */ - case DRX_BANDWIDTH_7MHZ : /* fall through */ - default : - return (DRX_STS_INVALID_ARG); - } - } + break; + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } + /* check bandwidth QAM annex B, NTSC and 8VSB */ + if ((standard == DRX_STANDARD_ITU_B) || + (standard == DRX_STANDARD_8VSB) || + (standard == DRX_STANDARD_NTSC)) { + switch (channel->bandwidth) { + case DRX_BANDWIDTH_6MHZ: + case DRX_BANDWIDTH_UNKNOWN: /* fall through */ + channel->bandwidth = DRX_BANDWIDTH_6MHZ; + break; + case DRX_BANDWIDTH_8MHZ: /* fall through */ + case DRX_BANDWIDTH_7MHZ: /* fall through */ + default: + return (DRX_STS_INVALID_ARG); + } + } #ifndef DRXJ_DIGITAL_ONLY - if ( standard == DRX_STANDARD_PAL_SECAM_BG ) - { - switch ( channel->bandwidth ) - { - case DRX_BANDWIDTH_7MHZ : /* fall through */ - case DRX_BANDWIDTH_8MHZ : - /* ok */ - break; - case DRX_BANDWIDTH_6MHZ : /* fall through */ - case DRX_BANDWIDTH_UNKNOWN : /* fall through */ - default : - return (DRX_STS_INVALID_ARG); - } - } - /* check bandwidth PAL/SECAM */ - if ( ( standard == DRX_STANDARD_PAL_SECAM_BG ) || - ( standard == DRX_STANDARD_PAL_SECAM_DK ) || - ( standard == DRX_STANDARD_PAL_SECAM_I ) || - ( standard == DRX_STANDARD_PAL_SECAM_L ) || - ( standard == DRX_STANDARD_PAL_SECAM_LP ) ) - { - switch ( channel->bandwidth ) - { - case DRX_BANDWIDTH_8MHZ : - case DRX_BANDWIDTH_UNKNOWN : /* fall through */ - channel->bandwidth = DRX_BANDWIDTH_8MHZ; - break; - case DRX_BANDWIDTH_6MHZ : /* fall through */ - case DRX_BANDWIDTH_7MHZ : /* fall through */ - default : - return (DRX_STS_INVALID_ARG); - } - } + if (standard == DRX_STANDARD_PAL_SECAM_BG) { + switch (channel->bandwidth) { + case DRX_BANDWIDTH_7MHZ: /* fall through */ + case DRX_BANDWIDTH_8MHZ: + /* ok */ + break; + case DRX_BANDWIDTH_6MHZ: /* fall through */ + case DRX_BANDWIDTH_UNKNOWN: /* fall through */ + default: + return (DRX_STS_INVALID_ARG); + } + } + /* check bandwidth PAL/SECAM */ + if ((standard == DRX_STANDARD_PAL_SECAM_BG) || + (standard == DRX_STANDARD_PAL_SECAM_DK) || + (standard == DRX_STANDARD_PAL_SECAM_I) || + (standard == DRX_STANDARD_PAL_SECAM_L) || + (standard == DRX_STANDARD_PAL_SECAM_LP)) { + switch (channel->bandwidth) { + case DRX_BANDWIDTH_8MHZ: + case DRX_BANDWIDTH_UNKNOWN: /* fall through */ + channel->bandwidth = DRX_BANDWIDTH_8MHZ; + break; + case DRX_BANDWIDTH_6MHZ: /* fall through */ + case DRX_BANDWIDTH_7MHZ: /* fall through */ + default: + return (DRX_STS_INVALID_ARG); + } + } #endif - /* For QAM annex A and annex C: - -check symbolrate and constellation - -derive bandwidth from symbolrate (input bandwidth is ignored) - */ + /* For QAM annex A and annex C: + -check symbolrate and constellation + -derive bandwidth from symbolrate (input bandwidth is ignored) + */ #ifndef DRXJ_VSB_ONLY - if( ( standard == DRX_STANDARD_ITU_A ) || - ( standard == DRX_STANDARD_ITU_C ) ) - { - DRXUIOCfg_t UIOCfg = {DRX_UIO1, DRX_UIO_MODE_FIRMWARE_SAW}; - int bwRolloffFactor = 0; - - bwRolloffFactor = (standard == DRX_STANDARD_ITU_A)?115:113; - minSymbolRate = DRXJ_QAM_SYMBOLRATE_MIN; - maxSymbolRate = DRXJ_QAM_SYMBOLRATE_MAX; - /* config SMA_TX pin to SAW switch mode*/ - CHK_ERROR( CtrlSetUIOCfg( demod, &UIOCfg ) ); - - if ( channel->symbolrate < minSymbolRate || - channel->symbolrate > maxSymbolRate ) - { - return ( DRX_STS_INVALID_ARG ); - } - - switch ( channel->constellation ) { - case DRX_CONSTELLATION_QAM16 : /* fall through */ - case DRX_CONSTELLATION_QAM32 : /* fall through */ - case DRX_CONSTELLATION_QAM64 : /* fall through */ - case DRX_CONSTELLATION_QAM128 : /* fall through */ - case DRX_CONSTELLATION_QAM256 : - bandwidthTemp = channel->symbolrate * bwRolloffFactor; - bandwidth = bandwidthTemp / 100; - - if( ( bandwidthTemp % 100 ) >= 50 ) - { - bandwidth++; - } - - if( bandwidth <= 6100000 ) - { - channel->bandwidth = DRX_BANDWIDTH_6MHZ; - } - else if( ( bandwidth > 6100000 ) && ( bandwidth <= 7100000 ) ) - { - channel->bandwidth = DRX_BANDWIDTH_7MHZ; - } - else if( bandwidth > 7100000 ) - { - channel->bandwidth = DRX_BANDWIDTH_8MHZ; - } - break; - default: - return (DRX_STS_INVALID_ARG); - } - } - - /* For QAM annex B: - -check constellation - */ - if ( standard == DRX_STANDARD_ITU_B ) - { - switch ( channel->constellation ) { - case DRX_CONSTELLATION_AUTO : - case DRX_CONSTELLATION_QAM256 : - case DRX_CONSTELLATION_QAM64 : - break; - default : - return (DRX_STS_INVALID_ARG); - } - - switch (channel->interleavemode) - { - case DRX_INTERLEAVEMODE_I128_J1: - case DRX_INTERLEAVEMODE_I128_J1_V2: - case DRX_INTERLEAVEMODE_I128_J2: - case DRX_INTERLEAVEMODE_I64_J2: - case DRX_INTERLEAVEMODE_I128_J3: - case DRX_INTERLEAVEMODE_I32_J4: - case DRX_INTERLEAVEMODE_I128_J4: - case DRX_INTERLEAVEMODE_I16_J8: - case DRX_INTERLEAVEMODE_I128_J5: - case DRX_INTERLEAVEMODE_I8_J16: - case DRX_INTERLEAVEMODE_I128_J6: - case DRX_INTERLEAVEMODE_I128_J7: - case DRX_INTERLEAVEMODE_I128_J8: - case DRX_INTERLEAVEMODE_I12_J17: - case DRX_INTERLEAVEMODE_I5_J4: - case DRX_INTERLEAVEMODE_B52_M240: - case DRX_INTERLEAVEMODE_B52_M720: - case DRX_INTERLEAVEMODE_UNKNOWN: - case DRX_INTERLEAVEMODE_AUTO: - break; - default: - return (DRX_STS_INVALID_ARG); - } - } - - if ( (extAttr->uioSmaTxMode) == DRX_UIO_MODE_FIRMWARE_SAW ) - { - /* SAW SW, user UIO is used for switchable SAW */ - DRXUIOData_t uio1 = { DRX_UIO1, FALSE }; - - switch ( channel->bandwidth ) - { - case DRX_BANDWIDTH_8MHZ: - uio1.value = TRUE; - break; - case DRX_BANDWIDTH_7MHZ: - uio1.value = FALSE; - break; - case DRX_BANDWIDTH_6MHZ: - uio1.value = FALSE; - break; - case DRX_BANDWIDTH_UNKNOWN: - default: - return (DRX_STS_INVALID_ARG); - } - - CHK_ERROR( CtrlUIOWrite( demod, &uio1 ) ); - } + if ((standard == DRX_STANDARD_ITU_A) || + (standard == DRX_STANDARD_ITU_C)) { + DRXUIOCfg_t UIOCfg = { DRX_UIO1, DRX_UIO_MODE_FIRMWARE_SAW }; + int bwRolloffFactor = 0; + + bwRolloffFactor = (standard == DRX_STANDARD_ITU_A) ? 115 : 113; + minSymbolRate = DRXJ_QAM_SYMBOLRATE_MIN; + maxSymbolRate = DRXJ_QAM_SYMBOLRATE_MAX; + /* config SMA_TX pin to SAW switch mode */ + CHK_ERROR(CtrlSetUIOCfg(demod, &UIOCfg)); + + if (channel->symbolrate < minSymbolRate || + channel->symbolrate > maxSymbolRate) { + return (DRX_STS_INVALID_ARG); + } + + switch (channel->constellation) { + case DRX_CONSTELLATION_QAM16: /* fall through */ + case DRX_CONSTELLATION_QAM32: /* fall through */ + case DRX_CONSTELLATION_QAM64: /* fall through */ + case DRX_CONSTELLATION_QAM128: /* fall through */ + case DRX_CONSTELLATION_QAM256: + bandwidthTemp = channel->symbolrate * bwRolloffFactor; + bandwidth = bandwidthTemp / 100; + + if ((bandwidthTemp % 100) >= 50) { + bandwidth++; + } + + if (bandwidth <= 6100000) { + channel->bandwidth = DRX_BANDWIDTH_6MHZ; + } else if ((bandwidth > 6100000) + && (bandwidth <= 7100000)) { + channel->bandwidth = DRX_BANDWIDTH_7MHZ; + } else if (bandwidth > 7100000) { + channel->bandwidth = DRX_BANDWIDTH_8MHZ; + } + break; + default: + return (DRX_STS_INVALID_ARG); + } + } + + /* For QAM annex B: + -check constellation + */ + if (standard == DRX_STANDARD_ITU_B) { + switch (channel->constellation) { + case DRX_CONSTELLATION_AUTO: + case DRX_CONSTELLATION_QAM256: + case DRX_CONSTELLATION_QAM64: + break; + default: + return (DRX_STS_INVALID_ARG); + } + + switch (channel->interleavemode) { + case DRX_INTERLEAVEMODE_I128_J1: + case DRX_INTERLEAVEMODE_I128_J1_V2: + case DRX_INTERLEAVEMODE_I128_J2: + case DRX_INTERLEAVEMODE_I64_J2: + case DRX_INTERLEAVEMODE_I128_J3: + case DRX_INTERLEAVEMODE_I32_J4: + case DRX_INTERLEAVEMODE_I128_J4: + case DRX_INTERLEAVEMODE_I16_J8: + case DRX_INTERLEAVEMODE_I128_J5: + case DRX_INTERLEAVEMODE_I8_J16: + case DRX_INTERLEAVEMODE_I128_J6: + case DRX_INTERLEAVEMODE_I128_J7: + case DRX_INTERLEAVEMODE_I128_J8: + case DRX_INTERLEAVEMODE_I12_J17: + case DRX_INTERLEAVEMODE_I5_J4: + case DRX_INTERLEAVEMODE_B52_M240: + case DRX_INTERLEAVEMODE_B52_M720: + case DRX_INTERLEAVEMODE_UNKNOWN: + case DRX_INTERLEAVEMODE_AUTO: + break; + default: + return (DRX_STS_INVALID_ARG); + } + } + + if ((extAttr->uioSmaTxMode) == DRX_UIO_MODE_FIRMWARE_SAW) { + /* SAW SW, user UIO is used for switchable SAW */ + DRXUIOData_t uio1 = { DRX_UIO1, FALSE }; + + switch (channel->bandwidth) { + case DRX_BANDWIDTH_8MHZ: + uio1.value = TRUE; + break; + case DRX_BANDWIDTH_7MHZ: + uio1.value = FALSE; + break; + case DRX_BANDWIDTH_6MHZ: + uio1.value = FALSE; + break; + case DRX_BANDWIDTH_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } + + CHK_ERROR(CtrlUIOWrite(demod, &uio1)); + } #endif /* DRXJ_VSB_ONLY */ - WR16( devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); + WR16(devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); /*== Tune, fast mode ======================================================*/ - if ( demod->myTuner != NULL ) - { - /* Determine tuner mode and freq to tune to ... */ - switch ( standard ) { + if (demod->myTuner != NULL) { + /* Determine tuner mode and freq to tune to ... */ + switch (standard) { #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP: - /* expecting center frequency, not picture carrier so no - conversion .... */ - tunerMode |= TUNER_MODE_ANALOG; - tunerSetFreq = channel->frequency; - break; - case DRX_STANDARD_FM: - /* center frequency (equals sound carrier) as input, - tune to edge of SAW */ - tunerMode |= TUNER_MODE_ANALOG; - tunerSetFreq = channel->frequency + DRXJ_FM_CARRIER_FREQ_OFFSET; - break; + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: + /* expecting center frequency, not picture carrier so no + conversion .... */ + tunerMode |= TUNER_MODE_ANALOG; + tunerSetFreq = channel->frequency; + break; + case DRX_STANDARD_FM: + /* center frequency (equals sound carrier) as input, + tune to edge of SAW */ + tunerMode |= TUNER_MODE_ANALOG; + tunerSetFreq = + channel->frequency + DRXJ_FM_CARRIER_FREQ_OFFSET; + break; #endif - case DRX_STANDARD_8VSB: /* fallthrough */ + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif - tunerMode |= TUNER_MODE_DIGITAL; - tunerSetFreq = channel->frequency; - break; - case DRX_STANDARD_UNKNOWN: - default: - return (DRX_STS_ERROR); - } /* switch(standard) */ - - tunerMode |= TUNER_MODE_SWITCH; - switch ( channel->bandwidth ) { - case DRX_BANDWIDTH_8MHZ : - tunerMode |= TUNER_MODE_8MHZ; - break; - case DRX_BANDWIDTH_7MHZ : - tunerMode |= TUNER_MODE_7MHZ; - break; - case DRX_BANDWIDTH_6MHZ : - tunerMode |= TUNER_MODE_6MHZ; - break; - default: - /* TODO: for FM which bandwidth to use ? - also check offset from centre frequency ? - For now using 6MHz. - */ - tunerMode |= TUNER_MODE_6MHZ; - break; - /* return (DRX_STS_INVALID_ARG); */ - } - - /* store bandwidth for GetChannel() */ - extAttr->currBandwidth = channel->bandwidth; - extAttr->currSymbolRate = channel->symbolrate; - extAttr->frequency = tunerSetFreq; - if ( commonAttr->tunerPortNr == 1 ) - { - /* close tuner bridge */ - bridgeClosed = TRUE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - /* set tuner frequency */ - } - - CHK_ERROR( DRXBSP_TUNER_SetFrequency( demod->myTuner, - tunerMode, - tunerSetFreq ) ); - if ( commonAttr->tunerPortNr == 1 ) - { - /* open tuner bridge */ - bridgeClosed = FALSE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - - /* Get actual frequency set by tuner and compute offset */ - CHK_ERROR( DRXBSP_TUNER_GetFrequency( demod->myTuner, - 0, - &tunerGetFreq, - &intermediateFreq ) ); - tunerFreqOffset = tunerGetFreq - tunerSetFreq; - commonAttr->intermediateFreq = intermediateFreq; - } - else - { - /* no tuner instance defined, use fixed intermediate frequency */ - tunerFreqOffset = 0; - intermediateFreq = demod->myCommonAttr->intermediateFreq; - } /* if ( demod->myTuner != NULL ) */ + tunerMode |= TUNER_MODE_DIGITAL; + tunerSetFreq = channel->frequency; + break; + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_ERROR); + } /* switch(standard) */ + + tunerMode |= TUNER_MODE_SWITCH; + switch (channel->bandwidth) { + case DRX_BANDWIDTH_8MHZ: + tunerMode |= TUNER_MODE_8MHZ; + break; + case DRX_BANDWIDTH_7MHZ: + tunerMode |= TUNER_MODE_7MHZ; + break; + case DRX_BANDWIDTH_6MHZ: + tunerMode |= TUNER_MODE_6MHZ; + break; + default: + /* TODO: for FM which bandwidth to use ? + also check offset from centre frequency ? + For now using 6MHz. + */ + tunerMode |= TUNER_MODE_6MHZ; + break; + /* return (DRX_STS_INVALID_ARG); */ + } + + /* store bandwidth for GetChannel() */ + extAttr->currBandwidth = channel->bandwidth; + extAttr->currSymbolRate = channel->symbolrate; + extAttr->frequency = tunerSetFreq; + if (commonAttr->tunerPortNr == 1) { + /* close tuner bridge */ + bridgeClosed = TRUE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + /* set tuner frequency */ + } + + CHK_ERROR(DRXBSP_TUNER_SetFrequency(demod->myTuner, + tunerMode, tunerSetFreq)); + if (commonAttr->tunerPortNr == 1) { + /* open tuner bridge */ + bridgeClosed = FALSE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + + /* Get actual frequency set by tuner and compute offset */ + CHK_ERROR(DRXBSP_TUNER_GetFrequency(demod->myTuner, + 0, + &tunerGetFreq, + &intermediateFreq)); + tunerFreqOffset = tunerGetFreq - tunerSetFreq; + commonAttr->intermediateFreq = intermediateFreq; + } else { + /* no tuner instance defined, use fixed intermediate frequency */ + tunerFreqOffset = 0; + intermediateFreq = demod->myCommonAttr->intermediateFreq; + } /* if ( demod->myTuner != NULL ) */ /*== Setup demod for specific standard ====================================*/ - switch ( standard ) { - case DRX_STANDARD_8VSB: - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } - CHK_ERROR ( SetVSB(demod) ); - CHK_ERROR ( SetFrequency ( demod, channel, tunerFreqOffset ) ); - break; + switch (standard) { + case DRX_STANDARD_8VSB: + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } + CHK_ERROR(SetVSB(demod)); + CHK_ERROR(SetFrequency(demod, channel, tunerFreqOffset)); + break; #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP: - if (channel->mirror == DRX_MIRROR_AUTO) - { - extAttr->mirror = DRX_MIRROR_NO; - } - else - { - extAttr->mirror = channel->mirror; - } - CHK_ERROR ( SetATVChannel( demod, - tunerFreqOffset, - channel, - standard ) ); - break; + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: + if (channel->mirror == DRX_MIRROR_AUTO) { + extAttr->mirror = DRX_MIRROR_NO; + } else { + extAttr->mirror = channel->mirror; + } + CHK_ERROR(SetATVChannel(demod, + tunerFreqOffset, channel, standard)); + break; #endif #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - CHK_ERROR ( SetQAMChannel( demod, channel, tunerFreqOffset ) ); - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + CHK_ERROR(SetQAMChannel(demod, channel, tunerFreqOffset)); + break; #endif - case DRX_STANDARD_UNKNOWN: - default: - return (DRX_STS_ERROR); - } + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_ERROR); + } /*== Re-tune, slow mode ===================================================*/ - if ( demod->myTuner != NULL ) - { - /* tune to slow mode */ - tunerMode &= ~TUNER_MODE_SWITCH; - tunerMode |= TUNER_MODE_LOCK; - - if ( commonAttr->tunerPortNr == 1 ) - { - /* close tuner bridge */ - bridgeClosed = TRUE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - - /* set tuner frequency*/ - CHK_ERROR( DRXBSP_TUNER_SetFrequency( demod->myTuner, - tunerMode, - tunerSetFreq ) ); - if ( commonAttr->tunerPortNr == 1 ) - { - /* open tuner bridge */ - bridgeClosed = FALSE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - } /* if ( demod->myTuner !=NULL ) */ - - /* flag the packet error counter reset */ - extAttr->resetPktErrAcc = TRUE; - - return (DRX_STS_OK); + if (demod->myTuner != NULL) { + /* tune to slow mode */ + tunerMode &= ~TUNER_MODE_SWITCH; + tunerMode |= TUNER_MODE_LOCK; + + if (commonAttr->tunerPortNr == 1) { + /* close tuner bridge */ + bridgeClosed = TRUE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + + /* set tuner frequency */ + CHK_ERROR(DRXBSP_TUNER_SetFrequency(demod->myTuner, + tunerMode, tunerSetFreq)); + if (commonAttr->tunerPortNr == 1) { + /* open tuner bridge */ + bridgeClosed = FALSE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + } + + /* if ( demod->myTuner !=NULL ) */ + /* flag the packet error counter reset */ + extAttr->resetPktErrAcc = TRUE; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================= @@ -13942,216 +13287,212 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -CtrlGetChannel( pDRXDemodInstance_t demod, - pDRXChannel_t channel ) +CtrlGetChannel(pDRXDemodInstance_t demod, pDRXChannel_t channel) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - pDRXCommonAttr_t commonAttr = NULL; - DRXFrequency_t intermediateFreq = 0; - s32_t CTLFreqOffset = 0; - u32_t iqmRcRateLo = 0; - u32_t adcFrequency = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + pDRXCommonAttr_t commonAttr = NULL; + DRXFrequency_t intermediateFreq = 0; + s32_t CTLFreqOffset = 0; + u32_t iqmRcRateLo = 0; + u32_t adcFrequency = 0; #ifndef DRXJ_VSB_ONLY - int bandwidthTemp = 0; - int bandwidth = 0; + int bandwidthTemp = 0; + int bandwidth = 0; #endif - /* check arguments */ - if ( ( demod == NULL ) || - ( channel == NULL ) ) - { - return DRX_STS_INVALID_ARG; - } - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod -> myExtAttr; - standard = extAttr->standard; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - - /* initialize channel fields */ - channel->mirror = DRX_MIRROR_UNKNOWN; - channel->hierarchy = DRX_HIERARCHY_UNKNOWN; - channel->priority = DRX_PRIORITY_UNKNOWN; - channel->coderate = DRX_CODERATE_UNKNOWN; - channel->guard = DRX_GUARD_UNKNOWN; - channel->fftmode = DRX_FFTMODE_UNKNOWN; - channel->classification = DRX_CLASSIFICATION_UNKNOWN; - channel->bandwidth = DRX_BANDWIDTH_UNKNOWN; - channel->constellation = DRX_CONSTELLATION_UNKNOWN; - channel->symbolrate = 0; - channel->interleavemode = DRX_INTERLEAVEMODE_UNKNOWN; - channel->carrier = DRX_CARRIER_UNKNOWN; - channel->framemode = DRX_FRAMEMODE_UNKNOWN; -/* channel->interleaver = DRX_INTERLEAVER_UNKNOWN;*/ - channel->ldpc = DRX_LDPC_UNKNOWN; + /* check arguments */ + if ((demod == NULL) || (channel == NULL)) { + return DRX_STS_INVALID_ARG; + } - if ( demod->myTuner != NULL ) - { - DRXFrequency_t tunerFreqOffset = 0; - Bool_t tunerMirror = commonAttr->mirrorFreqSpect?FALSE:TRUE; - - /* Get frequency from tuner */ - CHK_ERROR( DRXBSP_TUNER_GetFrequency( demod->myTuner, - 0, - &(channel->frequency), - &intermediateFreq ) ); - tunerFreqOffset = channel->frequency - extAttr->frequency; - if ( tunerMirror == TRUE ) - { - /* positive image */ - channel->frequency += tunerFreqOffset; - } else { - /* negative image */ - channel->frequency -= tunerFreqOffset; - } - - /* Handle sound carrier offset in RF domain */ - if ( standard == DRX_STANDARD_FM ) - { - channel->frequency -= DRXJ_FM_CARRIER_FREQ_OFFSET; - } - } - else - { - intermediateFreq = commonAttr->intermediateFreq; - } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + /* initialize channel fields */ + channel->mirror = DRX_MIRROR_UNKNOWN; + channel->hierarchy = DRX_HIERARCHY_UNKNOWN; + channel->priority = DRX_PRIORITY_UNKNOWN; + channel->coderate = DRX_CODERATE_UNKNOWN; + channel->guard = DRX_GUARD_UNKNOWN; + channel->fftmode = DRX_FFTMODE_UNKNOWN; + channel->classification = DRX_CLASSIFICATION_UNKNOWN; + channel->bandwidth = DRX_BANDWIDTH_UNKNOWN; + channel->constellation = DRX_CONSTELLATION_UNKNOWN; + channel->symbolrate = 0; + channel->interleavemode = DRX_INTERLEAVEMODE_UNKNOWN; + channel->carrier = DRX_CARRIER_UNKNOWN; + channel->framemode = DRX_FRAMEMODE_UNKNOWN; +/* channel->interleaver = DRX_INTERLEAVER_UNKNOWN;*/ + channel->ldpc = DRX_LDPC_UNKNOWN; + + if (demod->myTuner != NULL) { + DRXFrequency_t tunerFreqOffset = 0; + Bool_t tunerMirror = commonAttr->mirrorFreqSpect ? FALSE : TRUE; + + /* Get frequency from tuner */ + CHK_ERROR(DRXBSP_TUNER_GetFrequency(demod->myTuner, + 0, + &(channel->frequency), + &intermediateFreq)); + tunerFreqOffset = channel->frequency - extAttr->frequency; + if (tunerMirror == TRUE) { + /* positive image */ + channel->frequency += tunerFreqOffset; + } else { + /* negative image */ + channel->frequency -= tunerFreqOffset; + } + + /* Handle sound carrier offset in RF domain */ + if (standard == DRX_STANDARD_FM) { + channel->frequency -= DRXJ_FM_CARRIER_FREQ_OFFSET; + } + } else { + intermediateFreq = commonAttr->intermediateFreq; + } - /* check lock status */ - CHK_ERROR( CtrlLockStatus( demod, &lockStatus) ); - if ( (lockStatus == DRX_LOCKED) || (lockStatus == DRXJ_DEMOD_LOCK) ) - { - ARR32( devAddr, IQM_RC_RATE_LO__A, &iqmRcRateLo ); - adcFrequency = ( commonAttr->sysClockFreq * 1000 ) / 3; - - channel->symbolrate = Frac28(adcFrequency, (iqmRcRateLo + (1<<23))) >> 7; - - switch ( standard ) - { - case DRX_STANDARD_8VSB: - channel->bandwidth = DRX_BANDWIDTH_6MHZ; - /* get the channel frequency */ - CHK_ERROR( GetCTLFreqOffset ( demod, &CTLFreqOffset ) ); - channel->frequency -= CTLFreqOffset; - /* get the channel constellation */ - channel->constellation = DRX_CONSTELLATION_AUTO; - break; + /* check lock status */ + CHK_ERROR(CtrlLockStatus(demod, &lockStatus)); + if ((lockStatus == DRX_LOCKED) || (lockStatus == DRXJ_DEMOD_LOCK)) { + ARR32(devAddr, IQM_RC_RATE_LO__A, &iqmRcRateLo); + adcFrequency = (commonAttr->sysClockFreq * 1000) / 3; + + channel->symbolrate = + Frac28(adcFrequency, (iqmRcRateLo + (1 << 23))) >> 7; + + switch (standard) { + case DRX_STANDARD_8VSB: + channel->bandwidth = DRX_BANDWIDTH_6MHZ; + /* get the channel frequency */ + CHK_ERROR(GetCTLFreqOffset(demod, &CTLFreqOffset)); + channel->frequency -= CTLFreqOffset; + /* get the channel constellation */ + channel->constellation = DRX_CONSTELLATION_AUTO; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - { - /* get the channel frequency */ - CHK_ERROR( GetCTLFreqOffset ( demod, &CTLFreqOffset ) ); - channel->frequency -= CTLFreqOffset; - - if (standard == DRX_STANDARD_ITU_B) - { - channel->bandwidth = DRX_BANDWIDTH_6MHZ; - } - else - { - /* annex A & C */ - - u32_t rollOff=113; /* default annex C */ - - if ( standard==DRX_STANDARD_ITU_A) - { - rollOff=115; - } - - bandwidthTemp = channel->symbolrate * rollOff; - bandwidth = bandwidthTemp / 100; - - if( ( bandwidthTemp % 100 ) >= 50 ) - { - bandwidth++; - } - - if( bandwidth <= 6000000 ) - { - channel->bandwidth = DRX_BANDWIDTH_6MHZ; - } - else if( ( bandwidth > 6000000 ) && ( bandwidth <= 7000000 ) ) - { - channel->bandwidth = DRX_BANDWIDTH_7MHZ; - } - else if( bandwidth > 7000000 ) - { - channel->bandwidth = DRX_BANDWIDTH_8MHZ; - } - } /* if (standard == DRX_STANDARD_ITU_B) */ - - { - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* parameter */ NULL, - /* result */ NULL }; - u16_t cmdResult[3] = { 0, 0, 0 }; - - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_GET_PARAM; - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 3; - cmdSCU.parameter = NULL; - cmdSCU.result = cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - channel->interleavemode = (DRXInterleaveModes_t)(cmdSCU.result[2]); - } - - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - channel->constellation = DRX_CONSTELLATION_QAM256; - break; - case DRX_CONSTELLATION_QAM128: - channel->constellation = DRX_CONSTELLATION_QAM128; - break; - case DRX_CONSTELLATION_QAM64: - channel->constellation = DRX_CONSTELLATION_QAM64; - break; - case DRX_CONSTELLATION_QAM32: - channel->constellation = DRX_CONSTELLATION_QAM32; - break; - case DRX_CONSTELLATION_QAM16: - channel->constellation = DRX_CONSTELLATION_QAM16; - break; - default: - channel->constellation = DRX_CONSTELLATION_UNKNOWN; - return (DRX_STS_ERROR); - } - } - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + { + /* get the channel frequency */ + CHK_ERROR(GetCTLFreqOffset + (demod, &CTLFreqOffset)); + channel->frequency -= CTLFreqOffset; + + if (standard == DRX_STANDARD_ITU_B) { + channel->bandwidth = DRX_BANDWIDTH_6MHZ; + } else { + /* annex A & C */ + + u32_t rollOff = 113; /* default annex C */ + + if (standard == DRX_STANDARD_ITU_A) { + rollOff = 115; + } + + bandwidthTemp = + channel->symbolrate * rollOff; + bandwidth = bandwidthTemp / 100; + + if ((bandwidthTemp % 100) >= 50) { + bandwidth++; + } + + if (bandwidth <= 6000000) { + channel->bandwidth = + DRX_BANDWIDTH_6MHZ; + } else if ((bandwidth > 6000000) + && (bandwidth <= 7000000)) { + channel->bandwidth = + DRX_BANDWIDTH_7MHZ; + } else if (bandwidth > 7000000) { + channel->bandwidth = + DRX_BANDWIDTH_8MHZ; + } + } /* if (standard == DRX_STANDARD_ITU_B) */ + + { + DRXJSCUCmd_t cmdSCU = + { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* parameter */ NULL, + /* result */ NULL + }; + u16_t cmdResult[3] = { 0, 0, 0 }; + + cmdSCU.command = + SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_GET_PARAM; + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 3; + cmdSCU.parameter = NULL; + cmdSCU.result = cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + channel->interleavemode = + (DRXInterleaveModes_t) (cmdSCU. + result[2]); + } + + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + channel->constellation = + DRX_CONSTELLATION_QAM256; + break; + case DRX_CONSTELLATION_QAM128: + channel->constellation = + DRX_CONSTELLATION_QAM128; + break; + case DRX_CONSTELLATION_QAM64: + channel->constellation = + DRX_CONSTELLATION_QAM64; + break; + case DRX_CONSTELLATION_QAM32: + channel->constellation = + DRX_CONSTELLATION_QAM32; + break; + case DRX_CONSTELLATION_QAM16: + channel->constellation = + DRX_CONSTELLATION_QAM16; + break; + default: + channel->constellation = + DRX_CONSTELLATION_UNKNOWN; + return (DRX_STS_ERROR); + } + } + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: /* fall trough */ - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - case DRX_STANDARD_FM: - CHK_ERROR( GetATVChannel(demod, channel, standard)); - break; + case DRX_STANDARD_NTSC: /* fall trough */ + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_FM: + CHK_ERROR(GetATVChannel(demod, channel, standard)); + break; #endif - case DRX_STANDARD_UNKNOWN: /* fall trough */ - default: - return (DRX_STS_ERROR); - } /* switch ( standard ) */ - - if (lockStatus == DRX_LOCKED) - { - channel->mirror = extAttr->mirror; - } - } /* if ( lockStatus == DRX_LOCKED ) */ - - return (DRX_STS_OK); + case DRX_STANDARD_UNKNOWN: /* fall trough */ + default: + return (DRX_STS_ERROR); + } /* switch ( standard ) */ + + if (lockStatus == DRX_LOCKED) { + channel->mirror = extAttr->mirror; + } + } + /* if ( lockStatus == DRX_LOCKED ) */ + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================= @@ -14159,43 +13500,32 @@ rw_error: ===========================================================================*/ static u16_t -mer2indicator ( - u16_t mer, - u16_t minMer, - u16_t thresholdMer, - u16_t maxMer) -{ - u16_t indicator = 0; - - if ( mer < minMer ) - { - indicator = 0; - } - else if ( mer < thresholdMer ) - { - if ((thresholdMer - minMer) != 0) - { - indicator = 25 * (mer - minMer) / (thresholdMer - minMer); - } - } - else if ( mer < maxMer ) - { - if ((maxMer - thresholdMer) != 0) - { - indicator = 25 + 75 * (mer - thresholdMer) / (maxMer - thresholdMer); - } - else - { - indicator = 25; - } - } - else - { - indicator = 100; - } +mer2indicator(u16_t mer, u16_t minMer, u16_t thresholdMer, u16_t maxMer) +{ + u16_t indicator = 0; + + if (mer < minMer) { + indicator = 0; + } else if (mer < thresholdMer) { + if ((thresholdMer - minMer) != 0) { + indicator = + 25 * (mer - minMer) / (thresholdMer - minMer); + } + } else if (mer < maxMer) { + if ((maxMer - thresholdMer) != 0) { + indicator = + 25 + 75 * (mer - thresholdMer) / (maxMer - + thresholdMer); + } else { + indicator = 25; + } + } else { + indicator = 100; + } - return indicator; + return indicator; } + /** * \fn DRXStatus_t CtrlSigQuality() * \brief Retreive signal quality form device. @@ -14208,127 +13538,127 @@ mer2indicator ( */ static DRXStatus_t -CtrlSigQuality( pDRXDemodInstance_t demod, - pDRXSigQuality_t sigQuality ) +CtrlSigQuality(pDRXDemodInstance_t demod, pDRXSigQuality_t sigQuality) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; - u16_t minMer = 0; - u16_t maxMer = 0; - u16_t thresholdMer = 0; - - /* Check arguments */ - if (( sigQuality == NULL ) || - ( demod == NULL )) - { - return (DRX_STS_INVALID_ARG); - } + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; + u16_t minMer = 0; + u16_t maxMer = 0; + u16_t thresholdMer = 0; - extAttr = (pDRXJData_t)demod->myExtAttr; - standard = extAttr->standard; + /* Check arguments */ + if ((sigQuality == NULL) || (demod == NULL)) { + return (DRX_STS_INVALID_ARG); + } + + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; - /* get basic information */ - devAddr = demod -> myI2CDevAddr; - CHK_ERROR( CtrlLockStatus( demod, &lockStatus) ); - switch ( standard ) { - case DRX_STANDARD_8VSB: + /* get basic information */ + devAddr = demod->myI2CDevAddr; + CHK_ERROR(CtrlLockStatus(demod, &lockStatus)); + switch (standard) { + case DRX_STANDARD_8VSB: #ifdef DRXJ_SIGNAL_ACCUM_ERR - CHK_ERROR (GetAccPktErr (demod, &sigQuality->packetError)); + CHK_ERROR(GetAccPktErr(demod, &sigQuality->packetError)); #else - CHK_ERROR (GetVSBPostRSPckErr (devAddr, &sigQuality->packetError)); + CHK_ERROR(GetVSBPostRSPckErr + (devAddr, &sigQuality->packetError)); #endif - if ( lockStatus != DRXJ_DEMOD_LOCK && lockStatus != DRX_LOCKED ) - { - sigQuality->postViterbiBER = 500000; - sigQuality->MER = 20; - sigQuality->preViterbiBER = 0; - } else { - /* PostViterbi is compute in steps of 10^(-6) */ - CHK_ERROR (GetVSBpreViterbiBer (devAddr, &sigQuality->preViterbiBER)); - CHK_ERROR (GetVSBpostViterbiBer (devAddr, &sigQuality->postViterbiBER)); - CHK_ERROR (GetVSBMER (devAddr, &sigQuality->MER)); - } - minMer = 20; - maxMer = 360; - thresholdMer = 145; - sigQuality->postReedSolomonBER = 0; - sigQuality->scaleFactorBER = 1000000; - sigQuality->indicator = mer2indicator (sigQuality->MER, minMer, thresholdMer, maxMer); - break; + if (lockStatus != DRXJ_DEMOD_LOCK && lockStatus != DRX_LOCKED) { + sigQuality->postViterbiBER = 500000; + sigQuality->MER = 20; + sigQuality->preViterbiBER = 0; + } else { + /* PostViterbi is compute in steps of 10^(-6) */ + CHK_ERROR(GetVSBpreViterbiBer + (devAddr, &sigQuality->preViterbiBER)); + CHK_ERROR(GetVSBpostViterbiBer + (devAddr, &sigQuality->postViterbiBER)); + CHK_ERROR(GetVSBMER(devAddr, &sigQuality->MER)); + } + minMer = 20; + maxMer = 360; + thresholdMer = 145; + sigQuality->postReedSolomonBER = 0; + sigQuality->scaleFactorBER = 1000000; + sigQuality->indicator = + mer2indicator(sigQuality->MER, minMer, thresholdMer, + maxMer); + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - CHK_ERROR ( CtrlGetQAMSigQuality ( demod, sigQuality ) ); - if ( lockStatus != DRXJ_DEMOD_LOCK && lockStatus != DRX_LOCKED ) - { - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - sigQuality->MER = 210; - break; - case DRX_CONSTELLATION_QAM128: - sigQuality->MER = 180; - break; - case DRX_CONSTELLATION_QAM64: - sigQuality->MER = 150; - break; - case DRX_CONSTELLATION_QAM32: - sigQuality->MER = 120; - break; - case DRX_CONSTELLATION_QAM16: - sigQuality->MER = 90; - break; - default: - sigQuality->MER = 0; - return (DRX_STS_ERROR); - } - } - - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - minMer = 210; - thresholdMer = 270; - maxMer = 380; - break; - case DRX_CONSTELLATION_QAM64: - minMer = 150; - thresholdMer = 210; - maxMer = 380; - break; - case DRX_CONSTELLATION_QAM128: - case DRX_CONSTELLATION_QAM32: - case DRX_CONSTELLATION_QAM16: - break; - default: - return (DRX_STS_ERROR); - } - sigQuality->indicator = mer2indicator (sigQuality->MER, minMer, thresholdMer, maxMer); - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + CHK_ERROR(CtrlGetQAMSigQuality(demod, sigQuality)); + if (lockStatus != DRXJ_DEMOD_LOCK && lockStatus != DRX_LOCKED) { + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + sigQuality->MER = 210; + break; + case DRX_CONSTELLATION_QAM128: + sigQuality->MER = 180; + break; + case DRX_CONSTELLATION_QAM64: + sigQuality->MER = 150; + break; + case DRX_CONSTELLATION_QAM32: + sigQuality->MER = 120; + break; + case DRX_CONSTELLATION_QAM16: + sigQuality->MER = 90; + break; + default: + sigQuality->MER = 0; + return (DRX_STS_ERROR); + } + } + + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + minMer = 210; + thresholdMer = 270; + maxMer = 380; + break; + case DRX_CONSTELLATION_QAM64: + minMer = 150; + thresholdMer = 210; + maxMer = 380; + break; + case DRX_CONSTELLATION_QAM128: + case DRX_CONSTELLATION_QAM32: + case DRX_CONSTELLATION_QAM16: + break; + default: + return (DRX_STS_ERROR); + } + sigQuality->indicator = + mer2indicator(sigQuality->MER, minMer, thresholdMer, + maxMer); + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - case DRX_STANDARD_NTSC: - CHK_ERROR ( AtvSigQuality ( demod, sigQuality ) ); - break; - case DRX_STANDARD_FM: - CHK_ERROR ( FmSigQuality ( demod, sigQuality ) ); - break; + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + case DRX_STANDARD_NTSC: + CHK_ERROR(AtvSigQuality(demod, sigQuality)); + break; + case DRX_STANDARD_FM: + CHK_ERROR(FmSigQuality(demod, sigQuality)); + break; #endif - default: - return (DRX_STS_ERROR); - } + default: + return (DRX_STS_ERROR); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -14342,98 +13672,90 @@ rw_error: * */ static DRXStatus_t -CtrlLockStatus( pDRXDemodInstance_t demod, - pDRXLockStatus_t lockStat ) +CtrlLockStatus(pDRXDemodInstance_t demod, pDRXLockStatus_t lockStat) { - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - pDRXJData_t extAttr = NULL; - pI2CDeviceAddr_t devAddr = NULL; - DRXJSCUCmd_t cmdSCU = { /* command */ 0, - /* parameterLen */ 0, - /* resultLen */ 0, - /* *parameter */ NULL, - /* *result */ NULL }; - u16_t cmdResult[2] = { 0, 0 }; - u16_t demodLock = SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_DEMOD_LOCKED; - - /* check arguments */ - if ( ( demod == NULL ) || - ( lockStat == NULL ) ) - { - return (DRX_STS_INVALID_ARG); - } - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - standard = extAttr->standard; - - *lockStat = DRX_NOT_LOCKED; - - /* define the SCU command code */ - switch ( standard ) { - case DRX_STANDARD_8VSB: - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB | - SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; - demodLock |= 0x6; - break; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + DRXJSCUCmd_t cmdSCU = { /* command */ 0, + /* parameterLen */ 0, + /* resultLen */ 0, + /* *parameter */ NULL, + /* *result */ NULL + }; + u16_t cmdResult[2] = { 0, 0 }; + u16_t demodLock = SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_DEMOD_LOCKED; + + /* check arguments */ + if ((demod == NULL) || (lockStat == NULL)) { + return (DRX_STS_INVALID_ARG); + } + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; + + *lockStat = DRX_NOT_LOCKED; + + /* define the SCU command code */ + switch (standard) { + case DRX_STANDARD_8VSB: + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_VSB | + SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; + demodLock |= 0x6; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | - SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_QAM | + SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: - case DRX_STANDARD_PAL_SECAM_BG: - case DRX_STANDARD_PAL_SECAM_DK: - case DRX_STANDARD_PAL_SECAM_I: - case DRX_STANDARD_PAL_SECAM_L: - case DRX_STANDARD_PAL_SECAM_LP: - cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | - SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; - break; - case DRX_STANDARD_FM: - return FmLockStatus( demod, lockStat); + case DRX_STANDARD_NTSC: + case DRX_STANDARD_PAL_SECAM_BG: + case DRX_STANDARD_PAL_SECAM_DK: + case DRX_STANDARD_PAL_SECAM_I: + case DRX_STANDARD_PAL_SECAM_L: + case DRX_STANDARD_PAL_SECAM_LP: + cmdSCU.command = SCU_RAM_COMMAND_STANDARD_ATV | + SCU_RAM_COMMAND_CMD_DEMOD_GET_LOCK; + break; + case DRX_STANDARD_FM: + return FmLockStatus(demod, lockStat); #endif - case DRX_STANDARD_UNKNOWN: /* fallthrough */ - default: - return (DRX_STS_ERROR); - } - - /* define the SCU command paramters and execute the command */ - cmdSCU.parameterLen = 0; - cmdSCU.resultLen = 2; - cmdSCU.parameter = NULL; - cmdSCU.result = cmdResult; - CHK_ERROR( SCUCommand( devAddr, &cmdSCU ) ); - - /* set the lock status */ - if ( cmdSCU.result[1] < demodLock ) - { - /* 0x0000 NOT LOCKED */ - *lockStat = DRX_NOT_LOCKED; - } - else if ( cmdSCU.result[1] < SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_LOCKED ) - { - *lockStat = DRXJ_DEMOD_LOCK; - } - else if ( cmdSCU.result[1] < SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_NEVER_LOCK ) - { - /* 0x8000 DEMOD + FEC LOCKED (system lock) */ - *lockStat = DRX_LOCKED; - } - else - { - /* 0xC000 NEVER LOCKED */ - /* (system will never be able to lock to the signal) */ - *lockStat = DRX_NEVER_LOCK; - } + case DRX_STANDARD_UNKNOWN: /* fallthrough */ + default: + return (DRX_STS_ERROR); + } + + /* define the SCU command paramters and execute the command */ + cmdSCU.parameterLen = 0; + cmdSCU.resultLen = 2; + cmdSCU.parameter = NULL; + cmdSCU.result = cmdResult; + CHK_ERROR(SCUCommand(devAddr, &cmdSCU)); + + /* set the lock status */ + if (cmdSCU.result[1] < demodLock) { + /* 0x0000 NOT LOCKED */ + *lockStat = DRX_NOT_LOCKED; + } else if (cmdSCU.result[1] < SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_LOCKED) { + *lockStat = DRXJ_DEMOD_LOCK; + } else if (cmdSCU.result[1] < + SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_NEVER_LOCK) { + /* 0x8000 DEMOD + FEC LOCKED (system lock) */ + *lockStat = DRX_LOCKED; + } else { + /* 0xC000 NEVER LOCKED */ + /* (system will never be able to lock to the signal) */ + *lockStat = DRX_NEVER_LOCK; + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -14447,41 +13769,39 @@ rw_error: * \return DRXStatus_t. */ static DRXStatus_t -CtrlConstel( pDRXDemodInstance_t demod, - pDRXComplex_t complexNr ) +CtrlConstel(pDRXDemodInstance_t demod, pDRXComplex_t complexNr) { - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; /**< active standard */ + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + /**< active standard */ - /* check arguments */ - if ( ( demod == NULL ) || - ( complexNr == NULL ) ) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if ((demod == NULL) || (complexNr == NULL)) { + return (DRX_STS_INVALID_ARG); + } - /* read device info */ - standard = ((pDRXJData_t)demod->myExtAttr)->standard; + /* read device info */ + standard = ((pDRXJData_t) demod->myExtAttr)->standard; - /* Read constellation point */ - switch ( standard ) { - case DRX_STANDARD_8VSB: - CHK_ERROR( CtrlGetVSBConstel( demod, complexNr ) ); - break; + /* Read constellation point */ + switch (standard) { + case DRX_STANDARD_8VSB: + CHK_ERROR(CtrlGetVSBConstel(demod, complexNr)); + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - CHK_ERROR( CtrlGetQAMConstel( demod, complexNr ) ); - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + CHK_ERROR(CtrlGetQAMConstel(demod, complexNr)); + break; #endif - case DRX_STANDARD_UNKNOWN: - default: - return (DRX_STS_ERROR); - } - - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_ERROR); + } + + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -14497,96 +13817,92 @@ CtrlConstel( pDRXDemodInstance_t demod, * */ static DRXStatus_t -CtrlSetStandard( pDRXDemodInstance_t demod, pDRXStandard_t standard ) +CtrlSetStandard(pDRXDemodInstance_t demod, pDRXStandard_t standard) { - pDRXJData_t extAttr = NULL; - DRXStandard_t prevStandard; + pDRXJData_t extAttr = NULL; + DRXStandard_t prevStandard; - /* check arguments */ - if (( standard == NULL ) || - ( demod == NULL )) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if ((standard == NULL) || (demod == NULL)) { + return (DRX_STS_INVALID_ARG); + } - extAttr = (pDRXJData_t)demod->myExtAttr; - prevStandard=extAttr->standard; + extAttr = (pDRXJData_t) demod->myExtAttr; + prevStandard = extAttr->standard; - /* - Stop and power down previous standard - */ - switch ( prevStandard ) - { + /* + Stop and power down previous standard + */ + switch (prevStandard) { #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - CHK_ERROR( PowerDownQAM(demod, FALSE) ); - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + CHK_ERROR(PowerDownQAM(demod, FALSE)); + break; #endif - case DRX_STANDARD_8VSB: - CHK_ERROR( PowerDownVSB(demod, FALSE) ); - break; + case DRX_STANDARD_8VSB: + CHK_ERROR(PowerDownVSB(demod, FALSE)); + break; #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP: - CHK_ERROR( PowerDownATV( demod, prevStandard, FALSE )); - break; + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: + CHK_ERROR(PowerDownATV(demod, prevStandard, FALSE)); + break; #endif - case DRX_STANDARD_UNKNOWN: - /* Do nothing */ - break; - case DRX_STANDARD_AUTO: /* fallthrough */ - default: - return ( DRX_STS_INVALID_ARG ); - } - - /* - Initialize channel independent registers - Power up new standard - */ - extAttr->standard=*standard; - - switch ( *standard ) - { + case DRX_STANDARD_UNKNOWN: + /* Do nothing */ + break; + case DRX_STANDARD_AUTO: /* fallthrough */ + default: + return (DRX_STS_INVALID_ARG); + } + + /* + Initialize channel independent registers + Power up new standard + */ + extAttr->standard = *standard; + + switch (*standard) { #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - DUMMY_READ(); - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + DUMMY_READ(); + break; #endif - case DRX_STANDARD_8VSB: - CHK_ERROR(SetVSBLeakNGain(demod)); - break; + case DRX_STANDARD_8VSB: + CHK_ERROR(SetVSBLeakNGain(demod)); + break; #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP: - CHK_ERROR( SetATVStandard( demod, standard )); - CHK_ERROR( PowerUpATV( demod, *standard )); - break; + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: + CHK_ERROR(SetATVStandard(demod, standard)); + CHK_ERROR(PowerUpATV(demod, *standard)); + break; #endif - default: - extAttr->standard=DRX_STANDARD_UNKNOWN; - return ( DRX_STS_INVALID_ARG ); - break; - } + default: + extAttr->standard = DRX_STANDARD_UNKNOWN; + return (DRX_STS_INVALID_ARG); + break; + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - /* Don't know what the standard is now ... try again */ - extAttr->standard=DRX_STANDARD_UNKNOWN; - return (DRX_STS_ERROR); + /* Don't know what the standard is now ... try again */ + extAttr->standard = DRX_STANDARD_UNKNOWN; + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -14601,22 +13917,21 @@ rw_error: * */ static DRXStatus_t -CtrlGetStandard( pDRXDemodInstance_t demod, pDRXStandard_t standard ) +CtrlGetStandard(pDRXDemodInstance_t demod, pDRXStandard_t standard) { - pDRXJData_t extAttr = NULL; - extAttr = (pDRXJData_t)demod->myExtAttr; + pDRXJData_t extAttr = NULL; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* check arguments */ - if ( standard == NULL ) - { - return (DRX_STS_INVALID_ARG); - } - (*standard) = extAttr->standard; - DUMMY_READ(); + /* check arguments */ + if (standard == NULL) { + return (DRX_STS_INVALID_ARG); + } + (*standard) = extAttr->standard; + DUMMY_READ(); - return ( DRX_STS_OK ); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -14629,42 +13944,41 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgSymbolClockOffset ( pDRXDemodInstance_t demod, - ps32_t rateOffset ) +CtrlGetCfgSymbolClockOffset(pDRXDemodInstance_t demod, ps32_t rateOffset) { - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - /* check arguments */ - if ( rateOffset == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if (rateOffset == NULL) { + return (DRX_STS_INVALID_ARG); + } - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; - standard = extAttr->standard; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; - switch ( standard ) { - case DRX_STANDARD_8VSB: /* fallthrough */ + switch (standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif - CHK_ERROR ( GetSTRFreqOffset ( demod, rateOffset )); - break; - case DRX_STANDARD_NTSC: - case DRX_STANDARD_UNKNOWN: - default: - return (DRX_STS_INVALID_ARG); - } - - return ( DRX_STS_OK ); + CHK_ERROR(GetSTRFreqOffset(demod, rateOffset)); + break; + case DRX_STANDARD_NTSC: + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /*============================================================================*/ /** @@ -14680,118 +13994,109 @@ rw_error: * */ static DRXStatus_t -CtrlPowerMode( pDRXDemodInstance_t demod, - pDRXPowerMode_t mode ) +CtrlPowerMode(pDRXDemodInstance_t demod, pDRXPowerMode_t mode) { - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)NULL; - pDRXJData_t extAttr = (pDRXJData_t)NULL; - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)NULL; - u16_t sioCcPwdMode = 0; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) NULL; + pDRXJData_t extAttr = (pDRXJData_t) NULL; + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) NULL; + u16_t sioCcPwdMode = 0; - commonAttr = (pDRXCommonAttr_t)demod -> myCommonAttr; - extAttr = (pDRXJData_t)demod->myExtAttr; - devAddr = demod -> myI2CDevAddr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + extAttr = (pDRXJData_t) demod->myExtAttr; + devAddr = demod->myI2CDevAddr; - /* Check arguments */ - if ( mode == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* Check arguments */ + if (mode == NULL) { + return (DRX_STS_INVALID_ARG); + } - /* If already in requested power mode, do nothing */ - if ( commonAttr->currentPowerMode == *mode ) - { - return (DRX_STS_OK); - } + /* If already in requested power mode, do nothing */ + if (commonAttr->currentPowerMode == *mode) { + return (DRX_STS_OK); + } - switch ( *mode ) - { - case DRX_POWER_UP: - case DRXJ_POWER_DOWN_MAIN_PATH: - sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_NONE; - break; - case DRXJ_POWER_DOWN_CORE: - sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_CLOCK; - break; - case DRXJ_POWER_DOWN_PLL: - sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_PLL; - break; - case DRX_POWER_DOWN: - sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_OSC; - break; - default: - /* Unknow sleep mode */ - return (DRX_STS_INVALID_ARG); - break; - } - - - /* Check if device needs to be powered up */ - if ( ( commonAttr->currentPowerMode != DRX_POWER_UP ) ) - { - CHK_ERROR(PowerUpDevice(demod)); - } + switch (*mode) { + case DRX_POWER_UP: + case DRXJ_POWER_DOWN_MAIN_PATH: + sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_NONE; + break; + case DRXJ_POWER_DOWN_CORE: + sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_CLOCK; + break; + case DRXJ_POWER_DOWN_PLL: + sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_PLL; + break; + case DRX_POWER_DOWN: + sioCcPwdMode = SIO_CC_PWD_MODE_LEVEL_OSC; + break; + default: + /* Unknow sleep mode */ + return (DRX_STS_INVALID_ARG); + break; + } - if ( ( *mode == DRX_POWER_UP ) ) - { - /* Restore analog & pin configuartion */ - } else { - /* Power down to requested mode */ - /* Backup some register settings */ - /* Set pins with possible pull-ups connected to them in input mode */ - /* Analog power down */ - /* ADC power down */ - /* Power down device */ - /* stop all comm_exec */ - /* - Stop and power down previous standard - */ - - switch ( extAttr->standard ) - { - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - CHK_ERROR( PowerDownQAM(demod, TRUE) ); - break; - case DRX_STANDARD_8VSB: - CHK_ERROR( PowerDownVSB(demod, TRUE) ); - break; - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: - CHK_ERROR( PowerDownATV( demod, extAttr->standard, TRUE )); - break; - case DRX_STANDARD_UNKNOWN: - /* Do nothing */ - break; - case DRX_STANDARD_AUTO: /* fallthrough */ - default: - return ( DRX_STS_ERROR ); - } - - if (*mode != DRXJ_POWER_DOWN_MAIN_PATH) - { - WR16( devAddr, SIO_CC_PWD_MODE__A, sioCcPwdMode); - WR16( devAddr, SIO_CC_UPDATE__A , SIO_CC_UPDATE_KEY); - - /* Initialize HI, wakeup key especially before put IC to sleep */ - CHK_ERROR(InitHI(demod) ); - - extAttr -> HICfgCtrl |= SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ; - CHK_ERROR( HICfgCommand( demod ) ); - } - } - - commonAttr->currentPowerMode = *mode; - - return ( DRX_STS_OK ); + /* Check if device needs to be powered up */ + if ((commonAttr->currentPowerMode != DRX_POWER_UP)) { + CHK_ERROR(PowerUpDevice(demod)); + } + + if ((*mode == DRX_POWER_UP)) { + /* Restore analog & pin configuartion */ + } else { + /* Power down to requested mode */ + /* Backup some register settings */ + /* Set pins with possible pull-ups connected to them in input mode */ + /* Analog power down */ + /* ADC power down */ + /* Power down device */ + /* stop all comm_exec */ + /* + Stop and power down previous standard + */ + + switch (extAttr->standard) { + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + CHK_ERROR(PowerDownQAM(demod, TRUE)); + break; + case DRX_STANDARD_8VSB: + CHK_ERROR(PowerDownVSB(demod, TRUE)); + break; + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: + CHK_ERROR(PowerDownATV(demod, extAttr->standard, TRUE)); + break; + case DRX_STANDARD_UNKNOWN: + /* Do nothing */ + break; + case DRX_STANDARD_AUTO: /* fallthrough */ + default: + return (DRX_STS_ERROR); + } + + if (*mode != DRXJ_POWER_DOWN_MAIN_PATH) { + WR16(devAddr, SIO_CC_PWD_MODE__A, sioCcPwdMode); + WR16(devAddr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY); + + /* Initialize HI, wakeup key especially before put IC to sleep */ + CHK_ERROR(InitHI(demod)); + + extAttr->HICfgCtrl |= SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ; + CHK_ERROR(HICfgCommand(demod)); + } + } + + commonAttr->currentPowerMode = *mode; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -14817,150 +14122,139 @@ rw_error: * */ static DRXStatus_t -CtrlVersion( pDRXDemodInstance_t demod, - pDRXVersionList_t *versionList ) -{ - pDRXJData_t extAttr = (pDRXJData_t) (NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - u16_t ucodeMajorMinor = 0; /* BCD Ma:Ma:Ma:Mi */ - u16_t ucodePatch = 0; /* BCD Pa:Pa:Pa:Pa */ - u16_t major = 0; - u16_t minor = 0; - u16_t patch = 0; - u16_t idx = 0; - u32_t jtag = 0; - u16_t subtype = 0; - u16_t mfx = 0; - u16_t bid = 0; - u16_t key = 0; - - static char ucodeName[] = "Microcode"; - static char deviceName[] = "Device"; - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod -> myExtAttr; - commonAttr = (pDRXCommonAttr_t)demod->myCommonAttr; - - /* Microcode version ****************************************/ - - extAttr->vVersion[0].moduleType = DRX_MODULE_MICROCODE; - extAttr->vVersion[0].moduleName = ucodeName; - extAttr->vVersion[0].vString = extAttr->vText[0]; - - if ( commonAttr->isOpened == TRUE ) - { - SARR16( devAddr, SCU_RAM_VERSION_HI__A, &ucodeMajorMinor ); - SARR16( devAddr, SCU_RAM_VERSION_LO__A, &ucodePatch ); - - /* Translate BCD to numbers and string */ - /* TODO: The most significant Ma and Pa will be ignored, check with spec */ - minor = (ucodeMajorMinor & 0xF); - ucodeMajorMinor >>= 4; - major = (ucodeMajorMinor & 0xF); - ucodeMajorMinor >>= 4; - major += (10* (ucodeMajorMinor & 0xF)); - patch = (ucodePatch & 0xF); - ucodePatch >>= 4; - patch += (10*(ucodePatch & 0xF)); - ucodePatch >>= 4; - patch += (100*(ucodePatch & 0xF)); - } - else - { - /* No microcode uploaded, No Rom existed, set version to 0.0.0 */ - patch = 0; - minor = 0; - major = 0; - } - extAttr->vVersion[0].vMajor = major; - extAttr->vVersion[0].vMinor = minor; - extAttr->vVersion[0].vPatch = patch; - - if ( major/10 != 0 ) - { - extAttr->vVersion[0].vString[idx++] = ((char)(major/10))+'0'; - major %= 10; - } - extAttr->vVersion[0].vString[idx++] = ((char)major)+'0'; - extAttr->vVersion[0].vString[idx++] = '.'; - extAttr->vVersion[0].vString[idx++] = ((char)minor)+'0'; - extAttr->vVersion[0].vString[idx++] = '.'; - if ( patch/100 != 0 ) - { - extAttr->vVersion[0].vString[idx++] = ((char)(patch/100))+'0'; - patch %= 100; - } - if ( patch/10 != 0 ) - { - extAttr->vVersion[0].vString[idx++] = ((char)(patch/10))+'0'; - patch %= 10; - } - extAttr->vVersion[0].vString[idx++] = ((char)patch)+'0'; - extAttr->vVersion[0].vString[idx] = '\0'; - - extAttr->vListElements[0].version = &(extAttr->vVersion[0]); - extAttr->vListElements[0].next = &(extAttr->vListElements[1]); - - - /* Device version ****************************************/ - /* Check device id */ - RR16( devAddr, SIO_TOP_COMM_KEY__A , &key); - WR16( devAddr, SIO_TOP_COMM_KEY__A , 0xFABA); - RR32( devAddr, SIO_TOP_JTAGID_LO__A , &jtag ); - RR16( devAddr, SIO_PDR_UIO_IN_HI__A , &bid); - WR16( devAddr, SIO_TOP_COMM_KEY__A , key); - - extAttr->vVersion[1].moduleType = DRX_MODULE_DEVICE; - extAttr->vVersion[1].moduleName = deviceName; - extAttr->vVersion[1].vString = extAttr->vText[1]; - extAttr->vVersion[1].vString[0] = 'D'; - extAttr->vVersion[1].vString[1] = 'R'; - extAttr->vVersion[1].vString[2] = 'X'; - extAttr->vVersion[1].vString[3] = '3'; - extAttr->vVersion[1].vString[4] = '9'; - extAttr->vVersion[1].vString[7] = 'J'; - extAttr->vVersion[1].vString[8] = ':'; - extAttr->vVersion[1].vString[11] = '\0'; - - /* DRX39xxJ type Ax */ - /* TODO semantics of mfx and spin are unclear */ - subtype = (u16_t)((jtag>>12)&0xFF); - mfx = (u16_t)(jtag>>29); - extAttr->vVersion[1].vMinor = 1; - if (mfx == 0x03) - { - extAttr->vVersion[1].vPatch = mfx+2; - } - else - { - extAttr->vVersion[1].vPatch = mfx+1; - } - extAttr->vVersion[1].vString[6] = ((char)(subtype&0xF))+'0'; - extAttr->vVersion[1].vMajor = (subtype & 0x0F); - subtype>>=4; - extAttr->vVersion[1].vString[5] = ((char)(subtype&0xF))+'0'; - extAttr->vVersion[1].vMajor += 10*subtype; - extAttr->vVersion[1].vString[9] = 'A'; - if (mfx == 0x03) - { - extAttr->vVersion[1].vString[10] = ((char)(mfx&0xF)) + '2' ; - } - else - { - extAttr->vVersion[1].vString[10] = ((char)(mfx&0xF)) + '1' ; - } +CtrlVersion(pDRXDemodInstance_t demod, pDRXVersionList_t * versionList) +{ + pDRXJData_t extAttr = (pDRXJData_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + u16_t ucodeMajorMinor = 0; /* BCD Ma:Ma:Ma:Mi */ + u16_t ucodePatch = 0; /* BCD Pa:Pa:Pa:Pa */ + u16_t major = 0; + u16_t minor = 0; + u16_t patch = 0; + u16_t idx = 0; + u32_t jtag = 0; + u16_t subtype = 0; + u16_t mfx = 0; + u16_t bid = 0; + u16_t key = 0; + + static char ucodeName[] = "Microcode"; + static char deviceName[] = "Device"; + + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + /* Microcode version *************************************** */ + + extAttr->vVersion[0].moduleType = DRX_MODULE_MICROCODE; + extAttr->vVersion[0].moduleName = ucodeName; + extAttr->vVersion[0].vString = extAttr->vText[0]; + + if (commonAttr->isOpened == TRUE) { + SARR16(devAddr, SCU_RAM_VERSION_HI__A, &ucodeMajorMinor); + SARR16(devAddr, SCU_RAM_VERSION_LO__A, &ucodePatch); + + /* Translate BCD to numbers and string */ + /* TODO: The most significant Ma and Pa will be ignored, check with spec */ + minor = (ucodeMajorMinor & 0xF); + ucodeMajorMinor >>= 4; + major = (ucodeMajorMinor & 0xF); + ucodeMajorMinor >>= 4; + major += (10 * (ucodeMajorMinor & 0xF)); + patch = (ucodePatch & 0xF); + ucodePatch >>= 4; + patch += (10 * (ucodePatch & 0xF)); + ucodePatch >>= 4; + patch += (100 * (ucodePatch & 0xF)); + } else { + /* No microcode uploaded, No Rom existed, set version to 0.0.0 */ + patch = 0; + minor = 0; + major = 0; + } + extAttr->vVersion[0].vMajor = major; + extAttr->vVersion[0].vMinor = minor; + extAttr->vVersion[0].vPatch = patch; + + if (major / 10 != 0) { + extAttr->vVersion[0].vString[idx++] = + ((char)(major / 10)) + '0'; + major %= 10; + } + extAttr->vVersion[0].vString[idx++] = ((char)major) + '0'; + extAttr->vVersion[0].vString[idx++] = '.'; + extAttr->vVersion[0].vString[idx++] = ((char)minor) + '0'; + extAttr->vVersion[0].vString[idx++] = '.'; + if (patch / 100 != 0) { + extAttr->vVersion[0].vString[idx++] = + ((char)(patch / 100)) + '0'; + patch %= 100; + } + if (patch / 10 != 0) { + extAttr->vVersion[0].vString[idx++] = + ((char)(patch / 10)) + '0'; + patch %= 10; + } + extAttr->vVersion[0].vString[idx++] = ((char)patch) + '0'; + extAttr->vVersion[0].vString[idx] = '\0'; + + extAttr->vListElements[0].version = &(extAttr->vVersion[0]); + extAttr->vListElements[0].next = &(extAttr->vListElements[1]); + + /* Device version *************************************** */ + /* Check device id */ + RR16(devAddr, SIO_TOP_COMM_KEY__A, &key); + WR16(devAddr, SIO_TOP_COMM_KEY__A, 0xFABA); + RR32(devAddr, SIO_TOP_JTAGID_LO__A, &jtag); + RR16(devAddr, SIO_PDR_UIO_IN_HI__A, &bid); + WR16(devAddr, SIO_TOP_COMM_KEY__A, key); + + extAttr->vVersion[1].moduleType = DRX_MODULE_DEVICE; + extAttr->vVersion[1].moduleName = deviceName; + extAttr->vVersion[1].vString = extAttr->vText[1]; + extAttr->vVersion[1].vString[0] = 'D'; + extAttr->vVersion[1].vString[1] = 'R'; + extAttr->vVersion[1].vString[2] = 'X'; + extAttr->vVersion[1].vString[3] = '3'; + extAttr->vVersion[1].vString[4] = '9'; + extAttr->vVersion[1].vString[7] = 'J'; + extAttr->vVersion[1].vString[8] = ':'; + extAttr->vVersion[1].vString[11] = '\0'; + + /* DRX39xxJ type Ax */ + /* TODO semantics of mfx and spin are unclear */ + subtype = (u16_t) ((jtag >> 12) & 0xFF); + mfx = (u16_t) (jtag >> 29); + extAttr->vVersion[1].vMinor = 1; + if (mfx == 0x03) { + extAttr->vVersion[1].vPatch = mfx + 2; + } else { + extAttr->vVersion[1].vPatch = mfx + 1; + } + extAttr->vVersion[1].vString[6] = ((char)(subtype & 0xF)) + '0'; + extAttr->vVersion[1].vMajor = (subtype & 0x0F); + subtype >>= 4; + extAttr->vVersion[1].vString[5] = ((char)(subtype & 0xF)) + '0'; + extAttr->vVersion[1].vMajor += 10 * subtype; + extAttr->vVersion[1].vString[9] = 'A'; + if (mfx == 0x03) { + extAttr->vVersion[1].vString[10] = ((char)(mfx & 0xF)) + '2'; + } else { + extAttr->vVersion[1].vString[10] = ((char)(mfx & 0xF)) + '1'; + } - extAttr->vListElements[1].version = &(extAttr->vVersion[1]); - extAttr->vListElements[1].next = (pDRXVersionList_t)(NULL); + extAttr->vListElements[1].version = &(extAttr->vVersion[1]); + extAttr->vListElements[1].next = (pDRXVersionList_t) (NULL); - *versionList = &(extAttr->vListElements[0]); + *versionList = &(extAttr->vListElements[0]); - return ( DRX_STS_OK ); + return (DRX_STS_OK); - rw_error: - *versionList = (pDRXVersionList_t)(NULL); - return (DRX_STS_ERROR); +rw_error: + *versionList = (pDRXVersionList_t) (NULL); + return (DRX_STS_ERROR); } @@ -14978,77 +14272,70 @@ CtrlVersion( pDRXDemodInstance_t demod, * */ -static DRXStatus_t -CtrlProbeDevice( pDRXDemodInstance_t demod ) -{ - DRXPowerMode_t orgPowerMode = DRX_POWER_UP; - DRXStatus_t retStatus = DRX_STS_OK; - pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t)(NULL); - - commonAttr = (pDRXCommonAttr_t)demod -> myCommonAttr; - - if ( commonAttr->isOpened == FALSE || commonAttr->currentPowerMode != DRX_POWER_UP) - { - pI2CDeviceAddr_t devAddr = NULL; - DRXPowerMode_t powerMode = DRX_POWER_UP; - u32_t jtag = 0; - - devAddr = demod -> myI2CDevAddr; - - /* Remeber original power mode */ - orgPowerMode = commonAttr->currentPowerMode; - - if(demod->myCommonAttr->isOpened == FALSE) - { - CHK_ERROR(PowerUpDevice(demod)); - commonAttr->currentPowerMode = DRX_POWER_UP; - } - else - { - /* Wake-up device, feedback from device */ - CHK_ERROR( CtrlPowerMode( demod, &powerMode )); - } - /* Initialize HI, wakeup key especially */ - CHK_ERROR(InitHI(demod) ); - - /* Check device id */ - RR32( devAddr, SIO_TOP_JTAGID_LO__A , &jtag); - jtag = (jtag>>12) & 0xFFFF; - switch ( jtag ) - { - case 0x3931: /* fallthrough */ - case 0x3932: /* fallthrough */ - case 0x3933: /* fallthrough */ - case 0x3934: /* fallthrough */ - case 0x3941: /* fallthrough */ - case 0x3942: /* fallthrough */ - case 0x3943: /* fallthrough */ - case 0x3944: /* fallthrough */ - case 0x3945: /* fallthrough */ - case 0x3946: - /* ok , do nothing */ - break; - default: - retStatus = DRX_STS_ERROR; - break; - } - - /* Device was not opened, return to orginal powermode, - feedback from device */ - CHK_ERROR( CtrlPowerMode( demod, &orgPowerMode )); - } - else - { - /* dummy read to make this function fail in case device - suddenly disappears after a succesful DRX_Open */ - DUMMY_READ(); - } +static DRXStatus_t CtrlProbeDevice(pDRXDemodInstance_t demod) +{ + DRXPowerMode_t orgPowerMode = DRX_POWER_UP; + DRXStatus_t retStatus = DRX_STS_OK; + pDRXCommonAttr_t commonAttr = (pDRXCommonAttr_t) (NULL); + + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + + if (commonAttr->isOpened == FALSE + || commonAttr->currentPowerMode != DRX_POWER_UP) { + pI2CDeviceAddr_t devAddr = NULL; + DRXPowerMode_t powerMode = DRX_POWER_UP; + u32_t jtag = 0; + + devAddr = demod->myI2CDevAddr; + + /* Remeber original power mode */ + orgPowerMode = commonAttr->currentPowerMode; + + if (demod->myCommonAttr->isOpened == FALSE) { + CHK_ERROR(PowerUpDevice(demod)); + commonAttr->currentPowerMode = DRX_POWER_UP; + } else { + /* Wake-up device, feedback from device */ + CHK_ERROR(CtrlPowerMode(demod, &powerMode)); + } + /* Initialize HI, wakeup key especially */ + CHK_ERROR(InitHI(demod)); + + /* Check device id */ + RR32(devAddr, SIO_TOP_JTAGID_LO__A, &jtag); + jtag = (jtag >> 12) & 0xFFFF; + switch (jtag) { + case 0x3931: /* fallthrough */ + case 0x3932: /* fallthrough */ + case 0x3933: /* fallthrough */ + case 0x3934: /* fallthrough */ + case 0x3941: /* fallthrough */ + case 0x3942: /* fallthrough */ + case 0x3943: /* fallthrough */ + case 0x3944: /* fallthrough */ + case 0x3945: /* fallthrough */ + case 0x3946: + /* ok , do nothing */ + break; + default: + retStatus = DRX_STS_ERROR; + break; + } + + /* Device was not opened, return to orginal powermode, + feedback from device */ + CHK_ERROR(CtrlPowerMode(demod, &orgPowerMode)); + } else { + /* dummy read to make this function fail in case device + suddenly disappears after a succesful DRX_Open */ + DUMMY_READ(); + } - return ( retStatus ); + return (retStatus); - rw_error: - commonAttr->currentPowerMode=orgPowerMode; - return (DRX_STS_ERROR); +rw_error: + commonAttr->currentPowerMode = orgPowerMode; + return (DRX_STS_ERROR); } #ifdef DRXJ_SPLIT_UCODE_UPLOAD @@ -15062,14 +14349,12 @@ CtrlProbeDevice( pDRXDemodInstance_t demod ) FALSE if MC block not Audio * \return Bool_t. */ -Bool_t IsMCBlockAudio( u32_t addr ) +Bool_t IsMCBlockAudio(u32_t addr) { - if ( ( addr == AUD_XFP_PRAM_4K__A ) || - ( addr == AUD_XDFP_PRAM_4K__A ) ) - { - return ( TRUE ); - } - return ( FALSE ); + if ((addr == AUD_XFP_PRAM_4K__A) || (addr == AUD_XDFP_PRAM_4K__A)) { + return (TRUE); + } + return (FALSE); } /*============================================================================*/ @@ -15085,165 +14370,167 @@ Bool_t IsMCBlockAudio( u32_t addr ) * \return DRXStatus_t. */ static DRXStatus_t -CtrlUCodeUpload( pDRXDemodInstance_t demod, - pDRXUCodeInfo_t mcInfo, - DRXUCodeAction_t action, - Bool_t uploadAudioMC ) +CtrlUCodeUpload(pDRXDemodInstance_t demod, + pDRXUCodeInfo_t mcInfo, + DRXUCodeAction_t action, Bool_t uploadAudioMC) { - u16_t i = 0; - u16_t mcNrOfBlks = 0; - u16_t mcMagicWord = 0; - pu8_t mcData = (pu8_t)(NULL); - pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t)(NULL); - pDRXJData_t extAttr = (pDRXJData_t)(NULL); - - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod -> myExtAttr; - - /* Check arguments */ - if ( ( mcInfo == NULL ) || - ( mcInfo->mcData == NULL ) || - ( mcInfo->mcSize == 0 ) ) - { - return DRX_STS_INVALID_ARG; - } - - mcData = mcInfo->mcData; + u16_t i = 0; + u16_t mcNrOfBlks = 0; + u16_t mcMagicWord = 0; + pu8_t mcData = (pu8_t) (NULL); + pI2CDeviceAddr_t devAddr = (pI2CDeviceAddr_t) (NULL); + pDRXJData_t extAttr = (pDRXJData_t) (NULL); - /* Check data */ - mcMagicWord = UCodeRead16( mcData ); - mcData += sizeof( u16_t ); - mcNrOfBlks = UCodeRead16( mcData ); - mcData += sizeof( u16_t ); + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - if ( ( mcMagicWord != DRXJ_UCODE_MAGIC_WORD ) || - ( mcNrOfBlks == 0 ) ) - { - /* wrong endianess or wrong data ? */ - return DRX_STS_INVALID_ARG; - } + /* Check arguments */ + if ((mcInfo == NULL) || + (mcInfo->mcData == NULL) || (mcInfo->mcSize == 0)) { + return DRX_STS_INVALID_ARG; + } - /* Process microcode blocks */ - for( i = 0 ; i<mcNrOfBlks ; i++ ) - { - DRXUCodeBlockHdr_t blockHdr; - u16_t mcBlockNrBytes = 0; - - /* Process block header */ - blockHdr.addr = UCodeRead32( mcData ); - mcData += sizeof(u32_t); - blockHdr.size = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - blockHdr.flags = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - blockHdr.CRC = UCodeRead16( mcData ); - mcData += sizeof(u16_t); - - /* Check block header on: - - no data - - data larger then 64Kb - - if CRC enabled check CRC - */ - if ( ( blockHdr.size == 0 ) || - ( blockHdr.size > 0x7FFF ) || - ( (( blockHdr.flags & DRXJ_UCODE_CRC_FLAG ) != 0) && - ( blockHdr.CRC != UCodeComputeCRC( mcData, blockHdr.size)) ) - ) - { - /* Wrong data ! */ - return DRX_STS_INVALID_ARG; - } - - mcBlockNrBytes = blockHdr.size * sizeof(u16_t); - - /* Perform the desired action */ - /* Check which part of MC need to be uploaded - Audio or not Audio */ - if( IsMCBlockAudio( blockHdr.addr ) == uploadAudioMC ) - { - switch ( action ) { - /*===================================================================*/ - case UCODE_UPLOAD : - { - /* Upload microcode */ - if ( demod->myAccessFunct->writeBlockFunc( - devAddr, - (DRXaddr_t) blockHdr.addr, - mcBlockNrBytes, - mcData, - 0x0000) != DRX_STS_OK) - { - return (DRX_STS_ERROR); - } - }; - break; + mcData = mcInfo->mcData; - /*===================================================================*/ - case UCODE_VERIFY : - { - int result = 0; - u8_t mcDataBuffer[DRXJ_UCODE_MAX_BUF_SIZE]; - u32_t bytesToCompare=0; - u32_t bytesLeftToCompare=0; - DRXaddr_t currAddr = (DRXaddr_t)0; - pu8_t currPtr =NULL; - - bytesLeftToCompare = mcBlockNrBytes; - currAddr = blockHdr.addr; - currPtr = mcData; - - while( bytesLeftToCompare != 0 ) - { - if (bytesLeftToCompare > ((u32_t)DRXJ_UCODE_MAX_BUF_SIZE) ) - { - bytesToCompare = ((u32_t)DRXJ_UCODE_MAX_BUF_SIZE); - } else { - bytesToCompare = bytesLeftToCompare; - } - - if ( demod->myAccessFunct->readBlockFunc( - devAddr, - currAddr, - (u16_t)bytesToCompare, - (pu8_t)mcDataBuffer, - 0x0000) != DRX_STS_OK) - { - return (DRX_STS_ERROR); - } + /* Check data */ + mcMagicWord = UCodeRead16(mcData); + mcData += sizeof(u16_t); + mcNrOfBlks = UCodeRead16(mcData); + mcData += sizeof(u16_t); - result = DRXBSP_HST_Memcmp( currPtr, - mcDataBuffer, - bytesToCompare); + if ((mcMagicWord != DRXJ_UCODE_MAGIC_WORD) || (mcNrOfBlks == 0)) { + /* wrong endianess or wrong data ? */ + return DRX_STS_INVALID_ARG; + } - if ( result != 0 ) - { - return (DRX_STS_ERROR); - }; + /* Process microcode blocks */ + for (i = 0; i < mcNrOfBlks; i++) { + DRXUCodeBlockHdr_t blockHdr; + u16_t mcBlockNrBytes = 0; + + /* Process block header */ + blockHdr.addr = UCodeRead32(mcData); + mcData += sizeof(u32_t); + blockHdr.size = UCodeRead16(mcData); + mcData += sizeof(u16_t); + blockHdr.flags = UCodeRead16(mcData); + mcData += sizeof(u16_t); + blockHdr.CRC = UCodeRead16(mcData); + mcData += sizeof(u16_t); + + /* Check block header on: + - no data + - data larger then 64Kb + - if CRC enabled check CRC + */ + if ((blockHdr.size == 0) || + (blockHdr.size > 0x7FFF) || + (((blockHdr.flags & DRXJ_UCODE_CRC_FLAG) != 0) && + (blockHdr.CRC != UCodeComputeCRC(mcData, blockHdr.size))) + ) { + /* Wrong data ! */ + return DRX_STS_INVALID_ARG; + } + + mcBlockNrBytes = blockHdr.size * sizeof(u16_t); + + /* Perform the desired action */ + /* Check which part of MC need to be uploaded - Audio or not Audio */ + if (IsMCBlockAudio(blockHdr.addr) == uploadAudioMC) { + switch (action) { + /*===================================================================*/ + case UCODE_UPLOAD: + { + /* Upload microcode */ + if (demod->myAccessFunct-> + writeBlockFunc(devAddr, + (DRXaddr_t) blockHdr. + addr, mcBlockNrBytes, + mcData, + 0x0000) != + DRX_STS_OK) { + return (DRX_STS_ERROR); + } + }; + break; - currAddr += ((DRXaddr_t)(bytesToCompare/2)); - currPtr = &(currPtr[bytesToCompare]); - bytesLeftToCompare -= ((u32_t)bytesToCompare); - } /* while( bytesToCompare > DRXJ_UCODE_MAX_BUF_SIZE ) */ - }; - break; + /*===================================================================*/ + case UCODE_VERIFY: + { + int result = 0; + u8_t mcDataBuffer + [DRXJ_UCODE_MAX_BUF_SIZE]; + u32_t bytesToCompare = 0; + u32_t bytesLeftToCompare = 0; + DRXaddr_t currAddr = (DRXaddr_t) 0; + pu8_t currPtr = NULL; + + bytesLeftToCompare = mcBlockNrBytes; + currAddr = blockHdr.addr; + currPtr = mcData; + + while (bytesLeftToCompare != 0) { + if (bytesLeftToCompare > + ((u32_t) + DRXJ_UCODE_MAX_BUF_SIZE)) { + bytesToCompare = + ((u32_t) + DRXJ_UCODE_MAX_BUF_SIZE); + } else { + bytesToCompare = + bytesLeftToCompare; + } + + if (demod->myAccessFunct-> + readBlockFunc(devAddr, + currAddr, + (u16_t) + bytesToCompare, + (pu8_t) + mcDataBuffer, + 0x0000) != + DRX_STS_OK) { + return (DRX_STS_ERROR); + } + + result = + DRXBSP_HST_Memcmp(currPtr, + mcDataBuffer, + bytesToCompare); + + if (result != 0) { + return (DRX_STS_ERROR); + }; + + currAddr += + ((DRXaddr_t) + (bytesToCompare / 2)); + currPtr = + &(currPtr[bytesToCompare]); + bytesLeftToCompare -= + ((u32_t) bytesToCompare); + } /* while( bytesToCompare > DRXJ_UCODE_MAX_BUF_SIZE ) */ + }; + break; /*===================================================================*/ - default: - return DRX_STS_INVALID_ARG; - break; + default: + return DRX_STS_INVALID_ARG; + break; - } /* switch ( action ) */ - } /* if( IsMCBlockAudio( blockHdr.addr ) == uploadAudioMC ) */ + } /* switch ( action ) */ + } - /* Next block */ - mcData += mcBlockNrBytes; - } /* for( i = 0 ; i<mcNrOfBlks ; i++ ) */ + /* if( IsMCBlockAudio( blockHdr.addr ) == uploadAudioMC ) */ + /* Next block */ + mcData += mcBlockNrBytes; + } /* for( i = 0 ; i<mcNrOfBlks ; i++ ) */ - if ( uploadAudioMC == FALSE ) - { - extAttr->flagAudMcUploaded = FALSE; - } + if (uploadAudioMC == FALSE) { + extAttr->flagAudMcUploaded = FALSE; + } - return (DRX_STS_OK); + return (DRX_STS_OK); } #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ @@ -15264,54 +14551,51 @@ CtrlUCodeUpload( pDRXDemodInstance_t demod, */ static DRXStatus_t -CtrlSigStrength( pDRXDemodInstance_t demod, - pu16_t sigStrength ) +CtrlSigStrength(pDRXDemodInstance_t demod, pu16_t sigStrength) { - pDRXJData_t extAttr = NULL; - DRXStandard_t standard = DRX_STANDARD_UNKNOWN; + pDRXJData_t extAttr = NULL; + DRXStandard_t standard = DRX_STANDARD_UNKNOWN; - /* Check arguments */ - if ( ( sigStrength == NULL ) || - ( demod == NULL ) ) - { - return (DRX_STS_INVALID_ARG); - } + /* Check arguments */ + if ((sigStrength == NULL) || (demod == NULL)) { + return (DRX_STS_INVALID_ARG); + } - extAttr = (pDRXJData_t)demod->myExtAttr; - standard = extAttr->standard; - *sigStrength = 0; + extAttr = (pDRXJData_t) demod->myExtAttr; + standard = extAttr->standard; + *sigStrength = 0; - /* Signal strength indication for each standard */ - switch ( standard ) { - case DRX_STANDARD_8VSB: /* fallthrough */ + /* Signal strength indication for each standard */ + switch (standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif - CHK_ERROR( GetSigStrength( demod, sigStrength ) ); - break; + CHK_ERROR(GetSigStrength(demod, sigStrength)); + break; #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: - CHK_ERROR( GetAtvSigStrength( demod, sigStrength ) ); - break; + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: + CHK_ERROR(GetAtvSigStrength(demod, sigStrength)); + break; #endif - case DRX_STANDARD_UNKNOWN: /* fallthrough */ - default: - return (DRX_STS_INVALID_ARG); - } - - /* TODO */ - /* find out if signal strength is calculated in the same way for all standards */ - return (DRX_STS_OK); - rw_error: - return (DRX_STS_ERROR); + case DRX_STANDARD_UNKNOWN: /* fallthrough */ + default: + return (DRX_STS_INVALID_ARG); + } + + /* TODO */ + /* find out if signal strength is calculated in the same way for all standards */ + return (DRX_STS_OK); +rw_error: + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -15324,48 +14608,47 @@ CtrlSigStrength( pDRXDemodInstance_t demod, */ #ifndef DRXJ_DIGITAL_ONLY static DRXStatus_t -CtrlGetCfgOOBMisc ( pDRXDemodInstance_t demod, pDRXJCfgOOBMisc_t misc ) +CtrlGetCfgOOBMisc(pDRXDemodInstance_t demod, pDRXJCfgOOBMisc_t misc) { - pI2CDeviceAddr_t devAddr = NULL; - u16_t lock = 0U; - u16_t state = 0U; - u16_t data = 0U; - u16_t digitalAGCMant = 0U; - u16_t digitalAGCExp = 0U; - - /* check arguments */ - if ( misc == NULL ) - { - return (DRX_STS_INVALID_ARG); - } - devAddr = demod -> myI2CDevAddr; - - /* TODO */ - /* check if the same registers are used for all standards (QAM/VSB/ATV) */ - RR16( devAddr, ORX_NSU_TUN_IFGAIN_W__A, &misc->agc.IFAGC ); - RR16( devAddr, ORX_NSU_TUN_RFGAIN_W__A, &misc->agc.RFAGC ); - RR16( devAddr, ORX_FWP_SRC_DGN_W__A, &data ); - - digitalAGCMant = data & ORX_FWP_SRC_DGN_W_MANT__M; - digitalAGCExp = (data & ORX_FWP_SRC_DGN_W_EXP__M) - >> ORX_FWP_SRC_DGN_W_EXP__B; - misc->agc.DigitalAGC = digitalAGCMant << digitalAGCExp; - - SARR16( devAddr, SCU_RAM_ORX_SCU_LOCK__A, &lock ); - - misc->anaGainLock = ((lock & 0x0001)?TRUE:FALSE); - misc->digGainLock = ((lock & 0x0002)?TRUE:FALSE); - misc->freqLock = ((lock & 0x0004)?TRUE:FALSE); - misc->phaseLock = ((lock & 0x0008)?TRUE:FALSE); - misc->symTimingLock = ((lock & 0x0010)?TRUE:FALSE); - misc->eqLock = ((lock & 0x0020)?TRUE:FALSE); - - SARR16( devAddr, SCU_RAM_ORX_SCU_STATE__A, &state ); - misc->state = (state>>8) & 0xff; - - return ( DRX_STS_OK ); + pI2CDeviceAddr_t devAddr = NULL; + u16_t lock = 0U; + u16_t state = 0U; + u16_t data = 0U; + u16_t digitalAGCMant = 0U; + u16_t digitalAGCExp = 0U; + + /* check arguments */ + if (misc == NULL) { + return (DRX_STS_INVALID_ARG); + } + devAddr = demod->myI2CDevAddr; + + /* TODO */ + /* check if the same registers are used for all standards (QAM/VSB/ATV) */ + RR16(devAddr, ORX_NSU_TUN_IFGAIN_W__A, &misc->agc.IFAGC); + RR16(devAddr, ORX_NSU_TUN_RFGAIN_W__A, &misc->agc.RFAGC); + RR16(devAddr, ORX_FWP_SRC_DGN_W__A, &data); + + digitalAGCMant = data & ORX_FWP_SRC_DGN_W_MANT__M; + digitalAGCExp = (data & ORX_FWP_SRC_DGN_W_EXP__M) + >> ORX_FWP_SRC_DGN_W_EXP__B; + misc->agc.DigitalAGC = digitalAGCMant << digitalAGCExp; + + SARR16(devAddr, SCU_RAM_ORX_SCU_LOCK__A, &lock); + + misc->anaGainLock = ((lock & 0x0001) ? TRUE : FALSE); + misc->digGainLock = ((lock & 0x0002) ? TRUE : FALSE); + misc->freqLock = ((lock & 0x0004) ? TRUE : FALSE); + misc->phaseLock = ((lock & 0x0008) ? TRUE : FALSE); + misc->symTimingLock = ((lock & 0x0010) ? TRUE : FALSE); + misc->eqLock = ((lock & 0x0020) ? TRUE : FALSE); + + SARR16(devAddr, SCU_RAM_ORX_SCU_STATE__A, &state); + misc->state = (state >> 8) & 0xff; + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } #endif @@ -15377,23 +14660,23 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgVSBMisc ( pDRXDemodInstance_t demod, pDRXJCfgVSBMisc_t misc ) +CtrlGetCfgVSBMisc(pDRXDemodInstance_t demod, pDRXJCfgVSBMisc_t misc) { - pI2CDeviceAddr_t devAddr = NULL; + pI2CDeviceAddr_t devAddr = NULL; - /* check arguments */ - if ( misc == NULL ) - { - return (DRX_STS_INVALID_ARG); - } - devAddr = demod -> myI2CDevAddr; + /* check arguments */ + if (misc == NULL) { + return (DRX_STS_INVALID_ARG); + } + devAddr = demod->myI2CDevAddr; - CHK_ERROR(GetVSBSymbErr(devAddr, &misc->symbError)); + CHK_ERROR(GetVSBSymbErr(devAddr, &misc->symbError)); - return ( DRX_STS_OK ); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /*============================================================================*/ /** @@ -15408,47 +14691,46 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgAgcIf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) +CtrlSetCfgAgcIf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings) { - /* check arguments */ - if ( agcSettings == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } - - switch ( agcSettings->ctrlMode ) { - case DRX_AGC_CTRL_AUTO: /* fallthrough */ - case DRX_AGC_CTRL_USER: /* fallthrough */ - case DRX_AGC_CTRL_OFF: /* fallthrough */ - break; - default: - return ( DRX_STS_INVALID_ARG ); - } - - /* Distpatch */ - switch ( agcSettings->standard ) { - case DRX_STANDARD_8VSB: /* fallthrough */ + /* check arguments */ + if (agcSettings == NULL) { + return (DRX_STS_INVALID_ARG); + } + + switch (agcSettings->ctrlMode) { + case DRX_AGC_CTRL_AUTO: /* fallthrough */ + case DRX_AGC_CTRL_USER: /* fallthrough */ + case DRX_AGC_CTRL_OFF: /* fallthrough */ + break; + default: + return (DRX_STS_INVALID_ARG); + } + + /* Distpatch */ + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: #endif - return SetAgcIf ( demod, agcSettings, TRUE); - case DRX_STANDARD_UNKNOWN: - default: - return ( DRX_STS_INVALID_ARG ); - } + return SetAgcIf(demod, agcSettings, TRUE); + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); } /*============================================================================*/ @@ -15465,38 +14747,37 @@ CtrlSetCfgAgcIf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) * */ static DRXStatus_t -CtrlGetCfgAgcIf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) +CtrlGetCfgAgcIf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings) { - /* check arguments */ - if ( agcSettings == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } + /* check arguments */ + if (agcSettings == NULL) { + return (DRX_STS_INVALID_ARG); + } - /* Distpatch */ - switch ( agcSettings->standard ) { - case DRX_STANDARD_8VSB: /* fallthrough */ + /* Distpatch */ + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: #endif - return GetAgcIf ( demod, agcSettings); - case DRX_STANDARD_UNKNOWN: - default: - return ( DRX_STS_INVALID_ARG ); - } + return GetAgcIf(demod, agcSettings); + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); } /*============================================================================*/ @@ -15513,47 +14794,46 @@ CtrlGetCfgAgcIf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) * */ static DRXStatus_t -CtrlSetCfgAgcRf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) +CtrlSetCfgAgcRf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings) { - /* check arguments */ - if ( agcSettings == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } - - switch ( agcSettings->ctrlMode ) { - case DRX_AGC_CTRL_AUTO: /* fallthrough */ - case DRX_AGC_CTRL_USER: /* fallthrough */ - case DRX_AGC_CTRL_OFF: - break; - default: - return ( DRX_STS_INVALID_ARG ); - } - - /* Distpatch */ - switch ( agcSettings->standard ) { - case DRX_STANDARD_8VSB: /* fallthrough */ + /* check arguments */ + if (agcSettings == NULL) { + return (DRX_STS_INVALID_ARG); + } + + switch (agcSettings->ctrlMode) { + case DRX_AGC_CTRL_AUTO: /* fallthrough */ + case DRX_AGC_CTRL_USER: /* fallthrough */ + case DRX_AGC_CTRL_OFF: + break; + default: + return (DRX_STS_INVALID_ARG); + } + + /* Distpatch */ + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: #endif - return SetAgcRf ( demod, agcSettings, TRUE); - case DRX_STANDARD_UNKNOWN: - default: - return ( DRX_STS_INVALID_ARG ); - } + return SetAgcRf(demod, agcSettings, TRUE); + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); } /*============================================================================*/ @@ -15570,41 +14850,39 @@ CtrlSetCfgAgcRf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) * */ static DRXStatus_t -CtrlGetCfgAgcRf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) +CtrlGetCfgAgcRf(pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings) { - /* check arguments */ - if ( agcSettings == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } + /* check arguments */ + if (agcSettings == NULL) { + return (DRX_STS_INVALID_ARG); + } - /* Distpatch */ - switch ( agcSettings->standard ) { - case DRX_STANDARD_8VSB: /* fallthrough */ + /* Distpatch */ + switch (agcSettings->standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: #endif - return GetAgcRf ( demod, agcSettings); - case DRX_STANDARD_UNKNOWN: - default: - return ( DRX_STS_INVALID_ARG ); - } + return GetAgcRf(demod, agcSettings); + case DRX_STANDARD_UNKNOWN: + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); } - /*============================================================================*/ /** @@ -15619,78 +14897,73 @@ CtrlGetCfgAgcRf ( pDRXDemodInstance_t demod, pDRXJCfgAgc_t agcSettings ) * */ static DRXStatus_t -CtrlGetCfgAgcInternal ( pDRXDemodInstance_t demod, pu16_t agcInternal ) +CtrlGetCfgAgcInternal(pDRXDemodInstance_t demod, pu16_t agcInternal) { - pI2CDeviceAddr_t devAddr = NULL; - DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; - pDRXJData_t extAttr = NULL; - u16_t iqmCfScaleSh = 0; - u16_t iqmCfPower = 0; - u16_t iqmCfAmp = 0; - u16_t iqmCfGain = 0; - - /* check arguments */ - if ( agcInternal == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + pI2CDeviceAddr_t devAddr = NULL; + DRXLockStatus_t lockStatus = DRX_NOT_LOCKED; + pDRXJData_t extAttr = NULL; + u16_t iqmCfScaleSh = 0; + u16_t iqmCfPower = 0; + u16_t iqmCfAmp = 0; + u16_t iqmCfGain = 0; - CHK_ERROR( CtrlLockStatus( demod, &lockStatus) ); - if ( lockStatus != DRXJ_DEMOD_LOCK && lockStatus != DRX_LOCKED ) - { - *agcInternal = 0; - return DRX_STS_OK; - } - - /* Distpatch */ - switch ( extAttr->standard ) { - case DRX_STANDARD_8VSB: - iqmCfGain = 57; - break; + /* check arguments */ + if (agcInternal == NULL) { + return (DRX_STS_INVALID_ARG); + } + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + + CHK_ERROR(CtrlLockStatus(demod, &lockStatus)); + if (lockStatus != DRXJ_DEMOD_LOCK && lockStatus != DRX_LOCKED) { + *agcInternal = 0; + return DRX_STS_OK; + } + + /* Distpatch */ + switch (extAttr->standard) { + case DRX_STANDARD_8VSB: + iqmCfGain = 57; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: - case DRX_STANDARD_ITU_B: - case DRX_STANDARD_ITU_C: - switch ( extAttr->constellation ) - { - case DRX_CONSTELLATION_QAM256: - case DRX_CONSTELLATION_QAM128: - case DRX_CONSTELLATION_QAM32: - case DRX_CONSTELLATION_QAM16: - iqmCfGain = 57; - break; - case DRX_CONSTELLATION_QAM64: - iqmCfGain = 56; - break; - default: - return (DRX_STS_ERROR); - } - break; + case DRX_STANDARD_ITU_A: + case DRX_STANDARD_ITU_B: + case DRX_STANDARD_ITU_C: + switch (extAttr->constellation) { + case DRX_CONSTELLATION_QAM256: + case DRX_CONSTELLATION_QAM128: + case DRX_CONSTELLATION_QAM32: + case DRX_CONSTELLATION_QAM16: + iqmCfGain = 57; + break; + case DRX_CONSTELLATION_QAM64: + iqmCfGain = 56; + break; + default: + return (DRX_STS_ERROR); + } + break; #endif - default: - return ( DRX_STS_INVALID_ARG ); - } - - RR16( devAddr, IQM_CF_POW__A, &iqmCfPower); - RR16( devAddr, IQM_CF_SCALE_SH__A, &iqmCfScaleSh); - RR16( devAddr, IQM_CF_AMP__A, &iqmCfAmp); - /* IQM_CF_PWR_CORRECTION_dB = 3; - P5dB =10*log10(IQM_CF_POW)+12-6*9-IQM_CF_PWR_CORRECTION_dB; */ - /* P4dB = P5dB -20*log10(IQM_CF_AMP)-6*10 - -IQM_CF_Gain_dB-18+6*(27-IQM_CF_SCALE_SH*2-10) - +6*7+10*log10(1+0.115/4); */ - /* PadcdB = P4dB +3 -6 +60; dBmV */ - *agcInternal = (u16_t) ( Log10Times100 (iqmCfPower) - - 2 * Log10Times100 (iqmCfAmp) - - iqmCfGain - - 120 * iqmCfScaleSh - + 781 ); - - return ( DRX_STS_OK ); + default: + return (DRX_STS_INVALID_ARG); + } + + RR16(devAddr, IQM_CF_POW__A, &iqmCfPower); + RR16(devAddr, IQM_CF_SCALE_SH__A, &iqmCfScaleSh); + RR16(devAddr, IQM_CF_AMP__A, &iqmCfAmp); + /* IQM_CF_PWR_CORRECTION_dB = 3; + P5dB =10*log10(IQM_CF_POW)+12-6*9-IQM_CF_PWR_CORRECTION_dB; */ + /* P4dB = P5dB -20*log10(IQM_CF_AMP)-6*10 + -IQM_CF_Gain_dB-18+6*(27-IQM_CF_SCALE_SH*2-10) + +6*7+10*log10(1+0.115/4); */ + /* PadcdB = P4dB +3 -6 +60; dBmV */ + *agcInternal = (u16_t) (Log10Times100(iqmCfPower) + - 2 * Log10Times100(iqmCfAmp) + - iqmCfGain - 120 * iqmCfScaleSh + 781); + + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -15707,62 +14980,59 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgPreSaw ( pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw ) +CtrlSetCfgPreSaw(pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* check arguments */ - if ( ( preSaw == NULL ) || - ( preSaw->reference > IQM_AF_PDREF__M ) - ) - { - return ( DRX_STS_INVALID_ARG ); - } - - /* Only if standard is currently active*/ - if ( ( extAttr->standard == preSaw->standard ) || - ( DRXJ_ISQAMSTD( extAttr->standard ) && - DRXJ_ISQAMSTD( preSaw->standard ) ) || - ( DRXJ_ISATVSTD( extAttr->standard ) && - DRXJ_ISATVSTD( preSaw->standard ) ) ) - { - WR16( devAddr, IQM_AF_PDREF__A , preSaw->reference); - } - - /* Store pre-saw settings */ - switch ( preSaw->standard){ - case DRX_STANDARD_8VSB: - extAttr->vsbPreSawCfg = *preSaw; - break; + /* check arguments */ + if ((preSaw == NULL) || (preSaw->reference > IQM_AF_PDREF__M) + ) { + return (DRX_STS_INVALID_ARG); + } + + /* Only if standard is currently active */ + if ((extAttr->standard == preSaw->standard) || + (DRXJ_ISQAMSTD(extAttr->standard) && + DRXJ_ISQAMSTD(preSaw->standard)) || + (DRXJ_ISATVSTD(extAttr->standard) && + DRXJ_ISATVSTD(preSaw->standard))) { + WR16(devAddr, IQM_AF_PDREF__A, preSaw->reference); + } + + /* Store pre-saw settings */ + switch (preSaw->standard) { + case DRX_STANDARD_8VSB: + extAttr->vsbPreSawCfg = *preSaw; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - extAttr->qamPreSawCfg = *preSaw; - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + extAttr->qamPreSawCfg = *preSaw; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: /* fallthrough */ - case DRX_STANDARD_FM: - extAttr->atvPreSawCfg = *preSaw; - break; + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: /* fallthrough */ + case DRX_STANDARD_FM: + extAttr->atvPreSawCfg = *preSaw; + break; #endif - default: - return (DRX_STS_INVALID_ARG); - } + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -15779,67 +15049,66 @@ rw_error: * */ static DRXStatus_t -CtrlSetCfgAfeGain ( pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain ) +CtrlSetCfgAfeGain(pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - u8_t gain = 0; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + u8_t gain = 0; - /* check arguments */ - if ( afeGain == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + /* check arguments */ + if (afeGain == NULL) { + return (DRX_STS_INVALID_ARG); + } - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - switch ( afeGain->standard){ - case DRX_STANDARD_8VSB: /* fallthrough */ + switch (afeGain->standard) { + case DRX_STANDARD_8VSB: /* fallthrough */ #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: #endif - /* Do nothing */ - break; - default: - return (DRX_STS_INVALID_ARG); - } + /* Do nothing */ + break; + default: + return (DRX_STS_INVALID_ARG); + } - /* TODO PGA gain is also written by microcode (at least by QAM and VSB) + /* TODO PGA gain is also written by microcode (at least by QAM and VSB) So I (PJ) think interface requires choice between auto, user mode */ - if (afeGain->gain >= 329) - gain = 15; - else if (afeGain->gain <= 147) - gain = 0; - else - gain = (afeGain->gain - 140 + 6) / 13; - - /* Only if standard is currently active*/ - if( extAttr->standard == afeGain->standard ) - WR16( devAddr, IQM_AF_PGA_GAIN__A, gain); - - /* Store AFE Gain settings */ - switch ( afeGain->standard){ - case DRX_STANDARD_8VSB: - extAttr->vsbPgaCfg = gain * 13 + 140; - break; + if (afeGain->gain >= 329) + gain = 15; + else if (afeGain->gain <= 147) + gain = 0; + else + gain = (afeGain->gain - 140 + 6) / 13; + + /* Only if standard is currently active */ + if (extAttr->standard == afeGain->standard) + WR16(devAddr, IQM_AF_PGA_GAIN__A, gain); + + /* Store AFE Gain settings */ + switch (afeGain->standard) { + case DRX_STANDARD_8VSB: + extAttr->vsbPgaCfg = gain * 13 + 140; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - extAttr->qamPgaCfg = gain * 13 + 140; - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + extAttr->qamPgaCfg = gain * 13 + 140; + break; #endif - default: - return (DRX_STS_ERROR); - } + default: + return (DRX_STS_ERROR); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -15856,51 +15125,50 @@ rw_error: * */ static DRXStatus_t -CtrlGetCfgPreSaw ( pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw ) +CtrlGetCfgPreSaw(pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - /* check arguments */ - if ( preSaw == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } + /* check arguments */ + if (preSaw == NULL) { + return (DRX_STS_INVALID_ARG); + } - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - switch ( preSaw->standard ){ - case DRX_STANDARD_8VSB: - *preSaw = extAttr->vsbPreSawCfg; - break; + switch (preSaw->standard) { + case DRX_STANDARD_8VSB: + *preSaw = extAttr->vsbPreSawCfg; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - *preSaw = extAttr->qamPreSawCfg; - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + *preSaw = extAttr->qamPreSawCfg; + break; #endif #ifndef DRXJ_DIGITAL_ONLY - case DRX_STANDARD_PAL_SECAM_BG : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_DK : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_I : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_L : /* fallthrough */ - case DRX_STANDARD_PAL_SECAM_LP : /* fallthrough */ - case DRX_STANDARD_NTSC: - extAttr->atvPreSawCfg.standard = DRX_STANDARD_NTSC; - *preSaw = extAttr->atvPreSawCfg; - break; - case DRX_STANDARD_FM: - extAttr->atvPreSawCfg.standard = DRX_STANDARD_FM; - *preSaw = extAttr->atvPreSawCfg; - break; + case DRX_STANDARD_PAL_SECAM_BG: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_DK: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_I: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_L: /* fallthrough */ + case DRX_STANDARD_PAL_SECAM_LP: /* fallthrough */ + case DRX_STANDARD_NTSC: + extAttr->atvPreSawCfg.standard = DRX_STANDARD_NTSC; + *preSaw = extAttr->atvPreSawCfg; + break; + case DRX_STANDARD_FM: + extAttr->atvPreSawCfg.standard = DRX_STANDARD_FM; + *preSaw = extAttr->atvPreSawCfg; + break; #endif - default: - return (DRX_STS_INVALID_ARG); - } + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); } /*============================================================================*/ @@ -15917,36 +15185,35 @@ CtrlGetCfgPreSaw ( pDRXDemodInstance_t demod, pDRXJCfgPreSaw_t preSaw ) * */ static DRXStatus_t -CtrlGetCfgAfeGain ( pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain ) +CtrlGetCfgAfeGain(pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; - /* check arguments */ - if ( afeGain == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } + /* check arguments */ + if (afeGain == NULL) { + return (DRX_STS_INVALID_ARG); + } - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t)demod->myExtAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - switch ( afeGain->standard){ - case DRX_STANDARD_8VSB: - afeGain->gain = extAttr->vsbPgaCfg; - break; + switch (afeGain->standard) { + case DRX_STANDARD_8VSB: + afeGain->gain = extAttr->vsbPgaCfg; + break; #ifndef DRXJ_VSB_ONLY - case DRX_STANDARD_ITU_A: /* fallthrough */ - case DRX_STANDARD_ITU_B: /* fallthrough */ - case DRX_STANDARD_ITU_C: - afeGain->gain = extAttr->qamPgaCfg; - break; + case DRX_STANDARD_ITU_A: /* fallthrough */ + case DRX_STANDARD_ITU_B: /* fallthrough */ + case DRX_STANDARD_ITU_C: + afeGain->gain = extAttr->qamPgaCfg; + break; #endif - default: - return (DRX_STS_INVALID_ARG); - } + default: + return (DRX_STS_INVALID_ARG); + } - return ( DRX_STS_OK ); + return (DRX_STS_OK); } /*============================================================================*/ @@ -15963,20 +15230,20 @@ CtrlGetCfgAfeGain ( pDRXDemodInstance_t demod, pDRXJCfgAfeGain_t afeGain ) * */ static DRXStatus_t -CtrlGetFecMeasSeqCount ( pDRXDemodInstance_t demod, pu16_t fecMeasSeqCount) +CtrlGetFecMeasSeqCount(pDRXDemodInstance_t demod, pu16_t fecMeasSeqCount) { - /* check arguments */ - if ( fecMeasSeqCount == NULL ) - { - return ( DRX_STS_INVALID_ARG ); - } + /* check arguments */ + if (fecMeasSeqCount == NULL) { + return (DRX_STS_INVALID_ARG); + } - RR16 ( demod->myI2CDevAddr, SCU_RAM_FEC_MEAS_COUNT__A, fecMeasSeqCount ); + RR16(demod->myI2CDevAddr, SCU_RAM_FEC_MEAS_COUNT__A, fecMeasSeqCount); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } + /*============================================================================*/ /** @@ -15991,18 +15258,18 @@ rw_error: * */ static DRXStatus_t -CtrlGetAccumCrRSCwErr ( pDRXDemodInstance_t demod, pu32_t accumCrRsCWErr) +CtrlGetAccumCrRSCwErr(pDRXDemodInstance_t demod, pu32_t accumCrRsCWErr) { - if(accumCrRsCWErr == NULL) - { - return (DRX_STS_INVALID_ARG); - } + if (accumCrRsCWErr == NULL) { + return (DRX_STS_INVALID_ARG); + } - RR32 ( demod->myI2CDevAddr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, accumCrRsCWErr ); + RR32(demod->myI2CDevAddr, SCU_RAM_FEC_ACCUM_CW_CORRECTED_LO__A, + accumCrRsCWErr); - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /** @@ -16013,90 +15280,102 @@ rw_error: * \return DRXStatus_t. */ -static DRXStatus_t -CtrlSetCfg( pDRXDemodInstance_t demod, - pDRXCfg_t config ) +static DRXStatus_t CtrlSetCfg(pDRXDemodInstance_t demod, pDRXCfg_t config) { - if ( config == NULL ) - { - return (DRX_STS_INVALID_ARG); - } + if (config == NULL) { + return (DRX_STS_INVALID_ARG); + } - DUMMY_READ(); - switch ( config->cfgType ) - { - case DRX_CFG_MPEG_OUTPUT: - return CtrlSetCfgMPEGOutput( demod, (pDRXCfgMPEGOutput_t) config->cfgData ); - case DRX_CFG_PINS_SAFE_MODE: - return CtrlSetCfgPdrSafeMode( demod, (pBool_t) config->cfgData ); - case DRXJ_CFG_AGC_RF: - return CtrlSetCfgAgcRf ( demod, (pDRXJCfgAgc_t) config->cfgData ); - case DRXJ_CFG_AGC_IF: - return CtrlSetCfgAgcIf ( demod, (pDRXJCfgAgc_t) config->cfgData ); - case DRXJ_CFG_PRE_SAW: - return CtrlSetCfgPreSaw ( demod, (pDRXJCfgPreSaw_t) config->cfgData ); - case DRXJ_CFG_AFE_GAIN: - return CtrlSetCfgAfeGain ( demod, (pDRXJCfgAfeGain_t) config->cfgData ); - case DRXJ_CFG_SMART_ANT: - return CtrlSetCfgSmartAnt ( demod, (pDRXJCfgSmartAnt_t)(config->cfgData) ); - case DRXJ_CFG_RESET_PACKET_ERR: - return CtrlSetCfgResetPktErr ( demod ); + DUMMY_READ(); + switch (config->cfgType) { + case DRX_CFG_MPEG_OUTPUT: + return CtrlSetCfgMPEGOutput(demod, + (pDRXCfgMPEGOutput_t) config-> + cfgData); + case DRX_CFG_PINS_SAFE_MODE: + return CtrlSetCfgPdrSafeMode(demod, (pBool_t) config->cfgData); + case DRXJ_CFG_AGC_RF: + return CtrlSetCfgAgcRf(demod, (pDRXJCfgAgc_t) config->cfgData); + case DRXJ_CFG_AGC_IF: + return CtrlSetCfgAgcIf(demod, (pDRXJCfgAgc_t) config->cfgData); + case DRXJ_CFG_PRE_SAW: + return CtrlSetCfgPreSaw(demod, + (pDRXJCfgPreSaw_t) config->cfgData); + case DRXJ_CFG_AFE_GAIN: + return CtrlSetCfgAfeGain(demod, + (pDRXJCfgAfeGain_t) config->cfgData); + case DRXJ_CFG_SMART_ANT: + return CtrlSetCfgSmartAnt(demod, + (pDRXJCfgSmartAnt_t) (config-> + cfgData)); + case DRXJ_CFG_RESET_PACKET_ERR: + return CtrlSetCfgResetPktErr(demod); #ifndef DRXJ_DIGITAL_ONLY - case DRXJ_CFG_OOB_PRE_SAW: - return CtrlSetCfgOOBPreSAW ( demod, (pu16_t)(config->cfgData) ); - case DRXJ_CFG_OOB_LO_POW: - return CtrlSetCfgOOBLoPower ( demod, (pDRXJCfgOobLoPower_t)(config->cfgData) ); - case DRXJ_CFG_ATV_MISC: - return CtrlSetCfgAtvMisc( demod, (pDRXJCfgAtvMisc_t) config->cfgData ); - case DRXJ_CFG_ATV_EQU_COEF: - return CtrlSetCfgAtvEquCoef( demod, - (pDRXJCfgAtvEquCoef_t) config->cfgData ); - case DRXJ_CFG_ATV_OUTPUT: - return CtrlSetCfgATVOutput( demod, - (pDRXJCfgAtvOutput_t) config->cfgData ); + case DRXJ_CFG_OOB_PRE_SAW: + return CtrlSetCfgOOBPreSAW(demod, (pu16_t) (config->cfgData)); + case DRXJ_CFG_OOB_LO_POW: + return CtrlSetCfgOOBLoPower(demod, + (pDRXJCfgOobLoPower_t) (config-> + cfgData)); + case DRXJ_CFG_ATV_MISC: + return CtrlSetCfgAtvMisc(demod, + (pDRXJCfgAtvMisc_t) config->cfgData); + case DRXJ_CFG_ATV_EQU_COEF: + return CtrlSetCfgAtvEquCoef(demod, + (pDRXJCfgAtvEquCoef_t) config-> + cfgData); + case DRXJ_CFG_ATV_OUTPUT: + return CtrlSetCfgATVOutput(demod, + (pDRXJCfgAtvOutput_t) config-> + cfgData); #endif - case DRXJ_CFG_MPEG_OUTPUT_MISC: - return CtrlSetCfgMpegOutputMisc( demod, - (pDRXJCfgMpegOutputMisc_t) config->cfgData ); + case DRXJ_CFG_MPEG_OUTPUT_MISC: + return CtrlSetCfgMpegOutputMisc(demod, + (pDRXJCfgMpegOutputMisc_t) + config->cfgData); #ifndef DRXJ_EXCLUDE_AUDIO - case DRX_CFG_AUD_VOLUME: - return AUDCtrlSetCfgVolume( demod, - (pDRXCfgAudVolume_t)config->cfgData ); - case DRX_CFG_I2S_OUTPUT: - return AUDCtrlSetCfgOutputI2S( demod, - (pDRXCfgI2SOutput_t)config->cfgData ); - case DRX_CFG_AUD_AUTOSOUND: - return AUDCtrSetlCfgAutoSound( demod, - (pDRXCfgAudAutoSound_t) - config->cfgData); - case DRX_CFG_AUD_ASS_THRES: - return AUDCtrlSetCfgASSThres( demod, - (pDRXCfgAudASSThres_t) + case DRX_CFG_AUD_VOLUME: + return AUDCtrlSetCfgVolume(demod, + (pDRXCfgAudVolume_t) config-> + cfgData); + case DRX_CFG_I2S_OUTPUT: + return AUDCtrlSetCfgOutputI2S(demod, + (pDRXCfgI2SOutput_t) config-> + cfgData); + case DRX_CFG_AUD_AUTOSOUND: + return AUDCtrSetlCfgAutoSound(demod, (pDRXCfgAudAutoSound_t) + config->cfgData); + case DRX_CFG_AUD_ASS_THRES: + return AUDCtrlSetCfgASSThres(demod, (pDRXCfgAudASSThres_t) config->cfgData); - case DRX_CFG_AUD_CARRIER: - return AUDCtrlSetCfgCarrier( demod, - (pDRXCfgAudCarriers_t)config->cfgData); - case DRX_CFG_AUD_DEVIATION: - return AUDCtrlSetCfgDev( demod, - (pDRXCfgAudDeviation_t)config->cfgData); - case DRX_CFG_AUD_PRESCALE: - return AUDCtrlSetCfgPrescale( demod, - (pDRXCfgAudPrescale_t)config->cfgData); - case DRX_CFG_AUD_MIXER: - return AUDCtrlSetCfgMixer( demod, - (pDRXCfgAudMixer_t)config->cfgData); - case DRX_CFG_AUD_AVSYNC: - return AUDCtrlSetCfgAVSync( demod, - (pDRXCfgAudAVSync_t)config->cfgData); + case DRX_CFG_AUD_CARRIER: + return AUDCtrlSetCfgCarrier(demod, + (pDRXCfgAudCarriers_t) config-> + cfgData); + case DRX_CFG_AUD_DEVIATION: + return AUDCtrlSetCfgDev(demod, + (pDRXCfgAudDeviation_t) config-> + cfgData); + case DRX_CFG_AUD_PRESCALE: + return AUDCtrlSetCfgPrescale(demod, + (pDRXCfgAudPrescale_t) config-> + cfgData); + case DRX_CFG_AUD_MIXER: + return AUDCtrlSetCfgMixer(demod, + (pDRXCfgAudMixer_t) config->cfgData); + case DRX_CFG_AUD_AVSYNC: + return AUDCtrlSetCfgAVSync(demod, + (pDRXCfgAudAVSync_t) config-> + cfgData); #endif - default: - return (DRX_STS_INVALID_ARG); - } + default: + return (DRX_STS_INVALID_ARG); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -16109,108 +15388,125 @@ rw_error: * \return DRXStatus_t. */ -static DRXStatus_t -CtrlGetCfg( pDRXDemodInstance_t demod, - pDRXCfg_t config ) +static DRXStatus_t CtrlGetCfg(pDRXDemodInstance_t demod, pDRXCfg_t config) { - if ( config == NULL ) - { - return (DRX_STS_INVALID_ARG); - } - - DUMMY_READ(); + if (config == NULL) { + return (DRX_STS_INVALID_ARG); + } - switch ( config->cfgType ) - { - case DRX_CFG_MPEG_OUTPUT: - return CtrlGetCfgMPEGOutput( demod, - (pDRXCfgMPEGOutput_t) config->cfgData ); - case DRX_CFG_PINS_SAFE_MODE: - return CtrlGetCfgPdrSafeMode( demod, (pBool_t) config->cfgData ); - case DRXJ_CFG_AGC_RF: - return CtrlGetCfgAgcRf ( demod, (pDRXJCfgAgc_t) config->cfgData ); - case DRXJ_CFG_AGC_IF: - return CtrlGetCfgAgcIf ( demod, (pDRXJCfgAgc_t) config->cfgData ); - case DRXJ_CFG_AGC_INTERNAL: - return CtrlGetCfgAgcInternal ( demod, (pu16_t) config->cfgData ); - case DRXJ_CFG_PRE_SAW: - return CtrlGetCfgPreSaw ( demod, (pDRXJCfgPreSaw_t) config->cfgData ); - case DRXJ_CFG_AFE_GAIN: - return CtrlGetCfgAfeGain ( demod, (pDRXJCfgAfeGain_t) config->cfgData ); - case DRXJ_CFG_ACCUM_CR_RS_CW_ERR: - return CtrlGetAccumCrRSCwErr ( demod, (pu32_t) config->cfgData ); - case DRXJ_CFG_FEC_MERS_SEQ_COUNT: - return CtrlGetFecMeasSeqCount ( demod, (pu16_t) config->cfgData ); - case DRXJ_CFG_VSB_MISC: - return CtrlGetCfgVSBMisc ( demod, (pDRXJCfgVSBMisc_t) config->cfgData ); - case DRXJ_CFG_SYMBOL_CLK_OFFSET: - return CtrlGetCfgSymbolClockOffset ( demod, (ps32_t) config->cfgData ); + DUMMY_READ(); + + switch (config->cfgType) { + case DRX_CFG_MPEG_OUTPUT: + return CtrlGetCfgMPEGOutput(demod, + (pDRXCfgMPEGOutput_t) config-> + cfgData); + case DRX_CFG_PINS_SAFE_MODE: + return CtrlGetCfgPdrSafeMode(demod, (pBool_t) config->cfgData); + case DRXJ_CFG_AGC_RF: + return CtrlGetCfgAgcRf(demod, (pDRXJCfgAgc_t) config->cfgData); + case DRXJ_CFG_AGC_IF: + return CtrlGetCfgAgcIf(demod, (pDRXJCfgAgc_t) config->cfgData); + case DRXJ_CFG_AGC_INTERNAL: + return CtrlGetCfgAgcInternal(demod, (pu16_t) config->cfgData); + case DRXJ_CFG_PRE_SAW: + return CtrlGetCfgPreSaw(demod, + (pDRXJCfgPreSaw_t) config->cfgData); + case DRXJ_CFG_AFE_GAIN: + return CtrlGetCfgAfeGain(demod, + (pDRXJCfgAfeGain_t) config->cfgData); + case DRXJ_CFG_ACCUM_CR_RS_CW_ERR: + return CtrlGetAccumCrRSCwErr(demod, (pu32_t) config->cfgData); + case DRXJ_CFG_FEC_MERS_SEQ_COUNT: + return CtrlGetFecMeasSeqCount(demod, (pu16_t) config->cfgData); + case DRXJ_CFG_VSB_MISC: + return CtrlGetCfgVSBMisc(demod, + (pDRXJCfgVSBMisc_t) config->cfgData); + case DRXJ_CFG_SYMBOL_CLK_OFFSET: + return CtrlGetCfgSymbolClockOffset(demod, + (ps32_t) config->cfgData); #ifndef DRXJ_DIGITAL_ONLY - case DRXJ_CFG_OOB_MISC: - return CtrlGetCfgOOBMisc ( demod, (pDRXJCfgOOBMisc_t) config->cfgData ); - case DRXJ_CFG_OOB_PRE_SAW: - return CtrlGetCfgOOBPreSAW ( demod, (pu16_t)(config->cfgData) ); - case DRXJ_CFG_OOB_LO_POW: - return CtrlGetCfgOOBLoPower ( demod, (pDRXJCfgOobLoPower_t)(config->cfgData) ); - case DRXJ_CFG_ATV_EQU_COEF: - return CtrlGetCfgAtvEquCoef( demod, - (pDRXJCfgAtvEquCoef_t) config->cfgData ); - case DRXJ_CFG_ATV_MISC: - return CtrlGetCfgAtvMisc( demod, (pDRXJCfgAtvMisc_t) config->cfgData ); - case DRXJ_CFG_ATV_OUTPUT: - return CtrlGetCfgAtvOutput( demod, - (pDRXJCfgAtvOutput_t) config->cfgData ); - case DRXJ_CFG_ATV_AGC_STATUS: - return CtrlGetCfgAtvAgcStatus( demod, - (pDRXJCfgAtvAgcStatus_t) config->cfgData ); + case DRXJ_CFG_OOB_MISC: + return CtrlGetCfgOOBMisc(demod, + (pDRXJCfgOOBMisc_t) config->cfgData); + case DRXJ_CFG_OOB_PRE_SAW: + return CtrlGetCfgOOBPreSAW(demod, (pu16_t) (config->cfgData)); + case DRXJ_CFG_OOB_LO_POW: + return CtrlGetCfgOOBLoPower(demod, + (pDRXJCfgOobLoPower_t) (config-> + cfgData)); + case DRXJ_CFG_ATV_EQU_COEF: + return CtrlGetCfgAtvEquCoef(demod, + (pDRXJCfgAtvEquCoef_t) config-> + cfgData); + case DRXJ_CFG_ATV_MISC: + return CtrlGetCfgAtvMisc(demod, + (pDRXJCfgAtvMisc_t) config->cfgData); + case DRXJ_CFG_ATV_OUTPUT: + return CtrlGetCfgAtvOutput(demod, + (pDRXJCfgAtvOutput_t) config-> + cfgData); + case DRXJ_CFG_ATV_AGC_STATUS: + return CtrlGetCfgAtvAgcStatus(demod, + (pDRXJCfgAtvAgcStatus_t) config-> + cfgData); #endif - case DRXJ_CFG_MPEG_OUTPUT_MISC: - return CtrlGetCfgMpegOutputMisc( demod, - (pDRXJCfgMpegOutputMisc_t) config->cfgData ); - case DRXJ_CFG_HW_CFG: - return CtrlGetCfgHwCfg( demod, - (pDRXJCfgHwCfg_t) config->cfgData ); + case DRXJ_CFG_MPEG_OUTPUT_MISC: + return CtrlGetCfgMpegOutputMisc(demod, + (pDRXJCfgMpegOutputMisc_t) + config->cfgData); + case DRXJ_CFG_HW_CFG: + return CtrlGetCfgHwCfg(demod, + (pDRXJCfgHwCfg_t) config->cfgData); #ifndef DRXJ_EXCLUDE_AUDIO - case DRX_CFG_AUD_VOLUME: - return AUDCtrlGetCfgVolume ( demod, - (pDRXCfgAudVolume_t)config->cfgData ); - case DRX_CFG_I2S_OUTPUT: - return AUDCtrlGetCfgOutputI2S ( demod, - (pDRXCfgI2SOutput_t)config->cfgData ); - - case DRX_CFG_AUD_RDS: - return AUDCtrlGetCfgRDS ( demod, - (pDRXCfgAudRDS_t)config->cfgData ); - case DRX_CFG_AUD_AUTOSOUND: - return AUDCtrlGetCfgAutoSound ( demod, - (pDRXCfgAudAutoSound_t)config->cfgData); - case DRX_CFG_AUD_ASS_THRES: - return AUDCtrlGetCfgASSThres ( demod, - (pDRXCfgAudASSThres_t)config->cfgData); - case DRX_CFG_AUD_CARRIER: - return AUDCtrlGetCfgCarrier ( demod, - (pDRXCfgAudCarriers_t)config->cfgData); - case DRX_CFG_AUD_DEVIATION: - return AUDCtrlGetCfgDev ( demod, - (pDRXCfgAudDeviation_t)config->cfgData); - case DRX_CFG_AUD_PRESCALE: - return AUDCtrlGetCfgPrescale ( demod, - (pDRXCfgAudPrescale_t)config->cfgData); - case DRX_CFG_AUD_MIXER: - return AUDCtrlGetCfgMixer ( demod, - (pDRXCfgAudMixer_t)config->cfgData); - case DRX_CFG_AUD_AVSYNC: - return AUDCtrlGetCfgAVSync ( demod, - (pDRXCfgAudAVSync_t)config->cfgData); + case DRX_CFG_AUD_VOLUME: + return AUDCtrlGetCfgVolume(demod, + (pDRXCfgAudVolume_t) config-> + cfgData); + case DRX_CFG_I2S_OUTPUT: + return AUDCtrlGetCfgOutputI2S(demod, + (pDRXCfgI2SOutput_t) config-> + cfgData); + + case DRX_CFG_AUD_RDS: + return AUDCtrlGetCfgRDS(demod, + (pDRXCfgAudRDS_t) config->cfgData); + case DRX_CFG_AUD_AUTOSOUND: + return AUDCtrlGetCfgAutoSound(demod, + (pDRXCfgAudAutoSound_t) config-> + cfgData); + case DRX_CFG_AUD_ASS_THRES: + return AUDCtrlGetCfgASSThres(demod, + (pDRXCfgAudASSThres_t) config-> + cfgData); + case DRX_CFG_AUD_CARRIER: + return AUDCtrlGetCfgCarrier(demod, + (pDRXCfgAudCarriers_t) config-> + cfgData); + case DRX_CFG_AUD_DEVIATION: + return AUDCtrlGetCfgDev(demod, + (pDRXCfgAudDeviation_t) config-> + cfgData); + case DRX_CFG_AUD_PRESCALE: + return AUDCtrlGetCfgPrescale(demod, + (pDRXCfgAudPrescale_t) config-> + cfgData); + case DRX_CFG_AUD_MIXER: + return AUDCtrlGetCfgMixer(demod, + (pDRXCfgAudMixer_t) config->cfgData); + case DRX_CFG_AUD_AVSYNC: + return AUDCtrlGetCfgAVSync(demod, + (pDRXCfgAudAVSync_t) config-> + cfgData); #endif - default: - return (DRX_STS_INVALID_ARG); - } + default: + return (DRX_STS_INVALID_ARG); + } - return (DRX_STS_OK); + return (DRX_STS_OK); rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================= @@ -16225,216 +15521,214 @@ rw_error: * rely on SCU or AUD ucode to be present. * */ -DRXStatus_t -DRXJ_Open(pDRXDemodInstance_t demod) +DRXStatus_t DRXJ_Open(pDRXDemodInstance_t demod) { - pI2CDeviceAddr_t devAddr = NULL; - pDRXJData_t extAttr = NULL; - pDRXCommonAttr_t commonAttr = NULL; - u32_t driverVersion = 0; - DRXUCodeInfo_t ucodeInfo; - DRXCfgMPEGOutput_t cfgMPEGOutput; - - /* Check arguments */ - if (demod -> myExtAttr == NULL ) - { - return ( DRX_STS_INVALID_ARG); - } + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + pDRXCommonAttr_t commonAttr = NULL; + u32_t driverVersion = 0; + DRXUCodeInfo_t ucodeInfo; + DRXCfgMPEGOutput_t cfgMPEGOutput; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; + /* Check arguments */ + if (demod->myExtAttr == NULL) { + return (DRX_STS_INVALID_ARG); + } - CHK_ERROR(PowerUpDevice(demod)); - commonAttr->currentPowerMode = DRX_POWER_UP; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; - /* has to be in front of setIqmAf and setOrxNsuAox */ - CHK_ERROR(GetDeviceCapabilities(demod)); + CHK_ERROR(PowerUpDevice(demod)); + commonAttr->currentPowerMode = DRX_POWER_UP; - /* Soft reset of sys- and osc-clockdomain */ - WR16( devAddr, SIO_CC_SOFT_RST__A, ( SIO_CC_SOFT_RST_SYS__M | - SIO_CC_SOFT_RST_OSC__M ) ); - WR16( devAddr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY); - CHK_ERROR( DRXBSP_HST_Sleep(1) ); + /* has to be in front of setIqmAf and setOrxNsuAox */ + CHK_ERROR(GetDeviceCapabilities(demod)); - /* TODO first make sure that everything keeps working before enabling this */ - /* PowerDownAnalogBlocks() */ - WR16( devAddr, ATV_TOP_STDBY__A, (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) - |ATV_TOP_STDBY_SIF_STDBY_STANDBY ); + /* Soft reset of sys- and osc-clockdomain */ + WR16(devAddr, SIO_CC_SOFT_RST__A, (SIO_CC_SOFT_RST_SYS__M | + SIO_CC_SOFT_RST_OSC__M)); + WR16(devAddr, SIO_CC_UPDATE__A, SIO_CC_UPDATE_KEY); + CHK_ERROR(DRXBSP_HST_Sleep(1)); - CHK_ERROR( SetIqmAf( demod, FALSE ) ); - CHK_ERROR( SetOrxNsuAox( demod, FALSE ) ); + /* TODO first make sure that everything keeps working before enabling this */ + /* PowerDownAnalogBlocks() */ + WR16(devAddr, ATV_TOP_STDBY__A, (~ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE) + | ATV_TOP_STDBY_SIF_STDBY_STANDBY); - CHK_ERROR(InitHI(demod) ); + CHK_ERROR(SetIqmAf(demod, FALSE)); + CHK_ERROR(SetOrxNsuAox(demod, FALSE)); - /* disable mpegoutput pins */ - cfgMPEGOutput.enableMPEGOutput = FALSE; - CHK_ERROR( CtrlSetCfgMPEGOutput( demod, &cfgMPEGOutput) ); - /* Stop AUD Inform SetAudio it will need to do all setting */ - CHK_ERROR( PowerDownAud(demod) ); - /* Stop SCU */ - WR16( devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_STOP); + CHK_ERROR(InitHI(demod)); - /* Upload microcode */ - if ( commonAttr->microcode != NULL ) - { - /* Dirty trick to use common ucode upload & verify, - pretend device is already open */ - commonAttr->isOpened = TRUE; - ucodeInfo.mcData = commonAttr->microcode; - ucodeInfo.mcSize = commonAttr->microcodeSize; + /* disable mpegoutput pins */ + cfgMPEGOutput.enableMPEGOutput = FALSE; + CHK_ERROR(CtrlSetCfgMPEGOutput(demod, &cfgMPEGOutput)); + /* Stop AUD Inform SetAudio it will need to do all setting */ + CHK_ERROR(PowerDownAud(demod)); + /* Stop SCU */ + WR16(devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_STOP); + + /* Upload microcode */ + if (commonAttr->microcode != NULL) { + /* Dirty trick to use common ucode upload & verify, + pretend device is already open */ + commonAttr->isOpened = TRUE; + ucodeInfo.mcData = commonAttr->microcode; + ucodeInfo.mcSize = commonAttr->microcodeSize; #ifdef DRXJ_SPLIT_UCODE_UPLOAD - /* Upload microcode without audio part */ - CHK_ERROR( CtrlUCodeUpload( demod, &ucodeInfo, UCODE_UPLOAD, FALSE ) ); + /* Upload microcode without audio part */ + CHK_ERROR(CtrlUCodeUpload + (demod, &ucodeInfo, UCODE_UPLOAD, FALSE)); #else - CHK_ERROR( DRX_Ctrl( demod, DRX_CTRL_LOAD_UCODE, &ucodeInfo) ); + CHK_ERROR(DRX_Ctrl(demod, DRX_CTRL_LOAD_UCODE, &ucodeInfo)); #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ - if ( commonAttr->verifyMicrocode == TRUE ) - { + if (commonAttr->verifyMicrocode == TRUE) { #ifdef DRXJ_SPLIT_UCODE_UPLOAD - CHK_ERROR( CtrlUCodeUpload( demod, &ucodeInfo, UCODE_VERIFY, FALSE ) ); + CHK_ERROR(CtrlUCodeUpload + (demod, &ucodeInfo, UCODE_VERIFY, FALSE)); #else - CHK_ERROR( DRX_Ctrl ( demod, DRX_CTRL_VERIFY_UCODE, &ucodeInfo) ); + CHK_ERROR(DRX_Ctrl + (demod, DRX_CTRL_VERIFY_UCODE, &ucodeInfo)); #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ - } - commonAttr->isOpened = FALSE; - } + } + commonAttr->isOpened = FALSE; + } - /* Run SCU for a little while to initialize microcode version numbers */ - WR16( devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); + /* Run SCU for a little while to initialize microcode version numbers */ + WR16(devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); - /* Open tuner instance */ - if ( demod->myTuner != NULL ) - { - demod->myTuner->myCommonAttr->myUserData = (void *)demod; - - if ( commonAttr->tunerPortNr == 1 ) - { - Bool_t bridgeClosed = TRUE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - - CHK_ERROR( DRXBSP_TUNER_Open( demod -> myTuner ) ); - - if ( commonAttr->tunerPortNr == 1 ) - { - Bool_t bridgeClosed = FALSE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - commonAttr->tunerMinFreqRF = ((demod->myTuner)->myCommonAttr->minFreqRF); - commonAttr->tunerMaxFreqRF = ((demod->myTuner)->myCommonAttr->maxFreqRF); - } - - /* Initialize scan timeout */ - commonAttr -> scanDemodLockTimeout = DRXJ_SCAN_TIMEOUT; - commonAttr -> scanDesiredLock = DRX_LOCKED; - - /* Initialize default AFE configuartion for QAM */ - if (extAttr->hasLNA) - { - /* IF AGC off, PGA active */ + /* Open tuner instance */ + if (demod->myTuner != NULL) { + demod->myTuner->myCommonAttr->myUserData = (void *)demod; + + if (commonAttr->tunerPortNr == 1) { + Bool_t bridgeClosed = TRUE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + + CHK_ERROR(DRXBSP_TUNER_Open(demod->myTuner)); + + if (commonAttr->tunerPortNr == 1) { + Bool_t bridgeClosed = FALSE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + commonAttr->tunerMinFreqRF = + ((demod->myTuner)->myCommonAttr->minFreqRF); + commonAttr->tunerMaxFreqRF = + ((demod->myTuner)->myCommonAttr->maxFreqRF); + } + + /* Initialize scan timeout */ + commonAttr->scanDemodLockTimeout = DRXJ_SCAN_TIMEOUT; + commonAttr->scanDesiredLock = DRX_LOCKED; + + /* Initialize default AFE configuartion for QAM */ + if (extAttr->hasLNA) { + /* IF AGC off, PGA active */ #ifndef DRXJ_VSB_ONLY - extAttr->qamIfAgcCfg.standard = DRX_STANDARD_ITU_B; - extAttr->qamIfAgcCfg.ctrlMode = DRX_AGC_CTRL_OFF; - extAttr->qamPgaCfg = 140+(11*13); + extAttr->qamIfAgcCfg.standard = DRX_STANDARD_ITU_B; + extAttr->qamIfAgcCfg.ctrlMode = DRX_AGC_CTRL_OFF; + extAttr->qamPgaCfg = 140 + (11 * 13); #endif - extAttr->vsbIfAgcCfg.standard = DRX_STANDARD_8VSB; - extAttr->vsbIfAgcCfg.ctrlMode = DRX_AGC_CTRL_OFF; - extAttr->vsbPgaCfg = 140+(11*13); - } else { - /* IF AGC on, PGA not active */ + extAttr->vsbIfAgcCfg.standard = DRX_STANDARD_8VSB; + extAttr->vsbIfAgcCfg.ctrlMode = DRX_AGC_CTRL_OFF; + extAttr->vsbPgaCfg = 140 + (11 * 13); + } else { + /* IF AGC on, PGA not active */ #ifndef DRXJ_VSB_ONLY - extAttr->qamIfAgcCfg.standard = DRX_STANDARD_ITU_B; - extAttr->qamIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->qamIfAgcCfg.minOutputLevel = 0; - extAttr->qamIfAgcCfg.maxOutputLevel = 0x7FFF; - extAttr->qamIfAgcCfg.speed = 3; - extAttr->qamIfAgcCfg.top = 1297; - extAttr->qamPgaCfg = 140; + extAttr->qamIfAgcCfg.standard = DRX_STANDARD_ITU_B; + extAttr->qamIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->qamIfAgcCfg.minOutputLevel = 0; + extAttr->qamIfAgcCfg.maxOutputLevel = 0x7FFF; + extAttr->qamIfAgcCfg.speed = 3; + extAttr->qamIfAgcCfg.top = 1297; + extAttr->qamPgaCfg = 140; #endif - extAttr->vsbIfAgcCfg.standard = DRX_STANDARD_8VSB; - extAttr->vsbIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->vsbIfAgcCfg.minOutputLevel = 0; - extAttr->vsbIfAgcCfg.maxOutputLevel = 0x7FFF; - extAttr->vsbIfAgcCfg.speed = 3; - extAttr->vsbIfAgcCfg.top = 1024; - extAttr->vsbPgaCfg = 140; - } - /* TODO: remove minOutputLevel and maxOutputLevel for both QAM and VSB after */ - /* mc has not used them */ + extAttr->vsbIfAgcCfg.standard = DRX_STANDARD_8VSB; + extAttr->vsbIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->vsbIfAgcCfg.minOutputLevel = 0; + extAttr->vsbIfAgcCfg.maxOutputLevel = 0x7FFF; + extAttr->vsbIfAgcCfg.speed = 3; + extAttr->vsbIfAgcCfg.top = 1024; + extAttr->vsbPgaCfg = 140; + } + /* TODO: remove minOutputLevel and maxOutputLevel for both QAM and VSB after */ + /* mc has not used them */ #ifndef DRXJ_VSB_ONLY - extAttr->qamRfAgcCfg.standard = DRX_STANDARD_ITU_B; - extAttr->qamRfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->qamRfAgcCfg.minOutputLevel = 0; - extAttr->qamRfAgcCfg.maxOutputLevel = 0x7FFF; - extAttr->qamRfAgcCfg.speed = 3; - extAttr->qamRfAgcCfg.top = 9500; - extAttr->qamRfAgcCfg.cutOffCurrent = 4000; - extAttr->qamPreSawCfg.standard = DRX_STANDARD_ITU_B; - extAttr->qamPreSawCfg.reference = 0x07; - extAttr->qamPreSawCfg.usePreSaw = TRUE; + extAttr->qamRfAgcCfg.standard = DRX_STANDARD_ITU_B; + extAttr->qamRfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->qamRfAgcCfg.minOutputLevel = 0; + extAttr->qamRfAgcCfg.maxOutputLevel = 0x7FFF; + extAttr->qamRfAgcCfg.speed = 3; + extAttr->qamRfAgcCfg.top = 9500; + extAttr->qamRfAgcCfg.cutOffCurrent = 4000; + extAttr->qamPreSawCfg.standard = DRX_STANDARD_ITU_B; + extAttr->qamPreSawCfg.reference = 0x07; + extAttr->qamPreSawCfg.usePreSaw = TRUE; #endif - /* Initialize default AFE configuartion for VSB */ - extAttr->vsbRfAgcCfg.standard = DRX_STANDARD_8VSB; - extAttr->vsbRfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->vsbRfAgcCfg.minOutputLevel = 0; - extAttr->vsbRfAgcCfg.maxOutputLevel = 0x7FFF; - extAttr->vsbRfAgcCfg.speed = 3; - extAttr->vsbRfAgcCfg.top = 9500; - extAttr->vsbRfAgcCfg.cutOffCurrent = 4000; - extAttr->vsbPreSawCfg.standard = DRX_STANDARD_8VSB; - extAttr->vsbPreSawCfg.reference = 0x07; - extAttr->vsbPreSawCfg.usePreSaw = TRUE; + /* Initialize default AFE configuartion for VSB */ + extAttr->vsbRfAgcCfg.standard = DRX_STANDARD_8VSB; + extAttr->vsbRfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->vsbRfAgcCfg.minOutputLevel = 0; + extAttr->vsbRfAgcCfg.maxOutputLevel = 0x7FFF; + extAttr->vsbRfAgcCfg.speed = 3; + extAttr->vsbRfAgcCfg.top = 9500; + extAttr->vsbRfAgcCfg.cutOffCurrent = 4000; + extAttr->vsbPreSawCfg.standard = DRX_STANDARD_8VSB; + extAttr->vsbPreSawCfg.reference = 0x07; + extAttr->vsbPreSawCfg.usePreSaw = TRUE; #ifndef DRXJ_DIGITAL_ONLY - /* Initialize default AFE configuartion for ATV */ - extAttr->atvRfAgcCfg.standard = DRX_STANDARD_NTSC; - extAttr->atvRfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->atvRfAgcCfg.top = 9500; - extAttr->atvRfAgcCfg.cutOffCurrent = 4000; - extAttr->atvRfAgcCfg.speed = 3; - extAttr->atvIfAgcCfg.standard = DRX_STANDARD_NTSC; - extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; - extAttr->atvIfAgcCfg.speed = 3; - extAttr->atvIfAgcCfg.top = 2400; - extAttr->atvPreSawCfg.reference = 0x0007; - extAttr->atvPreSawCfg.usePreSaw = TRUE; - extAttr->atvPreSawCfg.standard = DRX_STANDARD_NTSC; + /* Initialize default AFE configuartion for ATV */ + extAttr->atvRfAgcCfg.standard = DRX_STANDARD_NTSC; + extAttr->atvRfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->atvRfAgcCfg.top = 9500; + extAttr->atvRfAgcCfg.cutOffCurrent = 4000; + extAttr->atvRfAgcCfg.speed = 3; + extAttr->atvIfAgcCfg.standard = DRX_STANDARD_NTSC; + extAttr->atvIfAgcCfg.ctrlMode = DRX_AGC_CTRL_AUTO; + extAttr->atvIfAgcCfg.speed = 3; + extAttr->atvIfAgcCfg.top = 2400; + extAttr->atvPreSawCfg.reference = 0x0007; + extAttr->atvPreSawCfg.usePreSaw = TRUE; + extAttr->atvPreSawCfg.standard = DRX_STANDARD_NTSC; #endif - extAttr->standard=DRX_STANDARD_UNKNOWN; - - CHK_ERROR(SmartAntInit(demod)); - - /* Stamp driver version number in SCU data RAM in BCD code - Done to enable field application engineers to retreive drxdriver version - via I2C from SCU RAM - */ - driverVersion = (VERSION_MAJOR/100) % 10; - driverVersion <<= 4; - driverVersion += (VERSION_MAJOR/10) % 10; - driverVersion <<= 4; - driverVersion += (VERSION_MAJOR%10); - driverVersion <<= 4; - driverVersion += (VERSION_MINOR%10); - driverVersion <<= 4; - driverVersion += (VERSION_PATCH/1000) % 10; - driverVersion <<= 4; - driverVersion += (VERSION_PATCH/100) % 10; - driverVersion <<= 4; - driverVersion += (VERSION_PATCH/10) % 10; - driverVersion <<= 4; - driverVersion += (VERSION_PATCH%10); - WR16(devAddr, SCU_RAM_DRIVER_VER_HI__A, (u16_t)(driverVersion>>16) ); - WR16(devAddr, SCU_RAM_DRIVER_VER_LO__A, (u16_t)(driverVersion&0xFFFF) ); - - /* refresh the audio data structure with default */ - extAttr->audData = DRXJDefaultAudData_g; - - return ( DRX_STS_OK ); + extAttr->standard = DRX_STANDARD_UNKNOWN; + + CHK_ERROR(SmartAntInit(demod)); + + /* Stamp driver version number in SCU data RAM in BCD code + Done to enable field application engineers to retreive drxdriver version + via I2C from SCU RAM + */ + driverVersion = (VERSION_MAJOR / 100) % 10; + driverVersion <<= 4; + driverVersion += (VERSION_MAJOR / 10) % 10; + driverVersion <<= 4; + driverVersion += (VERSION_MAJOR % 10); + driverVersion <<= 4; + driverVersion += (VERSION_MINOR % 10); + driverVersion <<= 4; + driverVersion += (VERSION_PATCH / 1000) % 10; + driverVersion <<= 4; + driverVersion += (VERSION_PATCH / 100) % 10; + driverVersion <<= 4; + driverVersion += (VERSION_PATCH / 10) % 10; + driverVersion <<= 4; + driverVersion += (VERSION_PATCH % 10); + WR16(devAddr, SCU_RAM_DRIVER_VER_HI__A, (u16_t) (driverVersion >> 16)); + WR16(devAddr, SCU_RAM_DRIVER_VER_LO__A, + (u16_t) (driverVersion & 0xFFFF)); + + /* refresh the audio data structure with default */ + extAttr->audData = DRXJDefaultAudData_g; + + return (DRX_STS_OK); rw_error: - commonAttr->isOpened = FALSE; - return (DRX_STS_ERROR); + commonAttr->isOpened = FALSE; + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -16444,44 +15738,40 @@ rw_error: * \return Status_t Return status. * */ -DRXStatus_t -DRXJ_Close(pDRXDemodInstance_t demod) +DRXStatus_t DRXJ_Close(pDRXDemodInstance_t demod) { - pI2CDeviceAddr_t devAddr =NULL; - pDRXJData_t extAttr =NULL; - pDRXCommonAttr_t commonAttr =NULL; - DRXPowerMode_t powerMode =DRX_POWER_UP; + pI2CDeviceAddr_t devAddr = NULL; + pDRXJData_t extAttr = NULL; + pDRXCommonAttr_t commonAttr = NULL; + DRXPowerMode_t powerMode = DRX_POWER_UP; - commonAttr = (pDRXCommonAttr_t) demod -> myCommonAttr; - devAddr = demod -> myI2CDevAddr; - extAttr = (pDRXJData_t) demod -> myExtAttr; + commonAttr = (pDRXCommonAttr_t) demod->myCommonAttr; + devAddr = demod->myI2CDevAddr; + extAttr = (pDRXJData_t) demod->myExtAttr; - /* power up */ - CHK_ERROR( CtrlPowerMode( demod, &powerMode )); + /* power up */ + CHK_ERROR(CtrlPowerMode(demod, &powerMode)); - if ( demod->myTuner != NULL ) - { - /* Check if bridge is used */ - if ( commonAttr->tunerPortNr == 1 ) - { - Bool_t bridgeClosed = TRUE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - CHK_ERROR( DRXBSP_TUNER_Close( demod -> myTuner ) ); - if ( commonAttr->tunerPortNr == 1 ) - { - Bool_t bridgeClosed = FALSE; - CHK_ERROR( CtrlI2CBridge( demod, &bridgeClosed ) ); - } - }; - - WR16( devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); - powerMode =DRX_POWER_DOWN; - CHK_ERROR( CtrlPowerMode( demod, &powerMode )); - - return DRX_STS_OK; + if (demod->myTuner != NULL) { + /* Check if bridge is used */ + if (commonAttr->tunerPortNr == 1) { + Bool_t bridgeClosed = TRUE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + CHK_ERROR(DRXBSP_TUNER_Close(demod->myTuner)); + if (commonAttr->tunerPortNr == 1) { + Bool_t bridgeClosed = FALSE; + CHK_ERROR(CtrlI2CBridge(demod, &bridgeClosed)); + } + }; + + WR16(devAddr, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); + powerMode = DRX_POWER_DOWN; + CHK_ERROR(CtrlPowerMode(demod, &powerMode)); + + return DRX_STS_OK; rw_error: - return (DRX_STS_ERROR); + return (DRX_STS_ERROR); } /*============================================================================*/ @@ -16491,187 +15781,194 @@ rw_error: * \return Status_t Return status. */ DRXStatus_t -DRXJ_Ctrl(pDRXDemodInstance_t demod, DRXCtrlIndex_t ctrl, - void *ctrlData) +DRXJ_Ctrl(pDRXDemodInstance_t demod, DRXCtrlIndex_t ctrl, void *ctrlData) { - switch ( ctrl ) { + switch (ctrl) { /*======================================================================*/ - case DRX_CTRL_SET_CHANNEL: - { - return CtrlSetChannel ( demod, - (pDRXChannel_t) ctrlData ); - } - break; + case DRX_CTRL_SET_CHANNEL: + { + return CtrlSetChannel(demod, (pDRXChannel_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_GET_CHANNEL: - { - return CtrlGetChannel ( demod, - (pDRXChannel_t) ctrlData ); - } - break; + case DRX_CTRL_GET_CHANNEL: + { + return CtrlGetChannel(demod, (pDRXChannel_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_SIG_QUALITY: - { - return CtrlSigQuality ( demod, - (pDRXSigQuality_t) ctrlData); - } - break; + case DRX_CTRL_SIG_QUALITY: + { + return CtrlSigQuality(demod, + (pDRXSigQuality_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_SIG_STRENGTH: - { - return CtrlSigStrength ( demod, - (pu16_t) ctrlData); - } - break; + case DRX_CTRL_SIG_STRENGTH: + { + return CtrlSigStrength(demod, (pu16_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_CONSTEL: - { - return CtrlConstel ( demod, - (pDRXComplex_t) ctrlData); - } - break; + case DRX_CTRL_CONSTEL: + { + return CtrlConstel(demod, (pDRXComplex_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_SET_CFG: - { - return CtrlSetCfg ( demod, - (pDRXCfg_t) ctrlData); - } - break; + case DRX_CTRL_SET_CFG: + { + return CtrlSetCfg(demod, (pDRXCfg_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_GET_CFG: - { - return CtrlGetCfg ( demod, (pDRXCfg_t) ctrlData); - } - break; + case DRX_CTRL_GET_CFG: + { + return CtrlGetCfg(demod, (pDRXCfg_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_I2C_BRIDGE: - { - return CtrlI2CBridge( demod, (pBool_t) ctrlData ); - } - break; + case DRX_CTRL_I2C_BRIDGE: + { + return CtrlI2CBridge(demod, (pBool_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_LOCK_STATUS: - { - return CtrlLockStatus( demod, (pDRXLockStatus_t) ctrlData ); - } - break; + case DRX_CTRL_LOCK_STATUS: + { + return CtrlLockStatus(demod, + (pDRXLockStatus_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_SET_STANDARD: - { - return CtrlSetStandard( demod, (pDRXStandard_t) ctrlData ); - } - break; + case DRX_CTRL_SET_STANDARD: + { + return CtrlSetStandard(demod, + (pDRXStandard_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_GET_STANDARD: - { - return CtrlGetStandard( demod, (pDRXStandard_t) ctrlData ); - } - break; + case DRX_CTRL_GET_STANDARD: + { + return CtrlGetStandard(demod, + (pDRXStandard_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_POWER_MODE: - { - return CtrlPowerMode( demod, (pDRXPowerMode_t) ctrlData ); - } - break; + case DRX_CTRL_POWER_MODE: + { + return CtrlPowerMode(demod, (pDRXPowerMode_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_VERSION: - { - return CtrlVersion( demod, (pDRXVersionList_t *) ctrlData ); - } - break; + case DRX_CTRL_VERSION: + { + return CtrlVersion(demod, + (pDRXVersionList_t *) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_PROBE_DEVICE: - { - return CtrlProbeDevice( demod ); - } - break; + case DRX_CTRL_PROBE_DEVICE: + { + return CtrlProbeDevice(demod); + } + break; /*======================================================================*/ - case DRX_CTRL_SET_OOB: - { - return CtrlSetOOB( demod, (pDRXOOB_t) ctrlData ); - } - break; + case DRX_CTRL_SET_OOB: + { + return CtrlSetOOB(demod, (pDRXOOB_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_GET_OOB: - { - return CtrlGetOOB( demod, (pDRXOOBStatus_t) ctrlData ); - } - break; + case DRX_CTRL_GET_OOB: + { + return CtrlGetOOB(demod, (pDRXOOBStatus_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_SET_UIO_CFG: - { - return CtrlSetUIOCfg( demod, (pDRXUIOCfg_t) ctrlData ); - } - break; + case DRX_CTRL_SET_UIO_CFG: + { + return CtrlSetUIOCfg(demod, (pDRXUIOCfg_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_GET_UIO_CFG: - { - return CtrlGetUIOCfg( demod, (pDRXUIOCfg_t) ctrlData ); - } - break; + case DRX_CTRL_GET_UIO_CFG: + { + return CtrlGetUIOCfg(demod, (pDRXUIOCfg_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_UIO_READ: - { - return CtrlUIORead( demod, (pDRXUIOData_t) ctrlData ); - } - break; + case DRX_CTRL_UIO_READ: + { + return CtrlUIORead(demod, (pDRXUIOData_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_UIO_WRITE: - { - return CtrlUIOWrite( demod, (pDRXUIOData_t) ctrlData ); - } - break; + case DRX_CTRL_UIO_WRITE: + { + return CtrlUIOWrite(demod, (pDRXUIOData_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_AUD_SET_STANDARD: - { - return AUDCtrlSetStandard( demod, (pDRXAudStandard_t) ctrlData ); - } - break; + case DRX_CTRL_AUD_SET_STANDARD: + { + return AUDCtrlSetStandard(demod, + (pDRXAudStandard_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_AUD_GET_STANDARD: - { - return AUDCtrlGetStandard( demod, (pDRXAudStandard_t) ctrlData ); - } - break; + case DRX_CTRL_AUD_GET_STANDARD: + { + return AUDCtrlGetStandard(demod, + (pDRXAudStandard_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_AUD_GET_STATUS: - { - return AUDCtrlGetStatus( demod, (pDRXAudStatus_t) ctrlData ); - } - break; + case DRX_CTRL_AUD_GET_STATUS: + { + return AUDCtrlGetStatus(demod, + (pDRXAudStatus_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_AUD_BEEP: - { - return AUDCtrlBeep( demod, (pDRXAudBeep_t) ctrlData ); - } - break; + case DRX_CTRL_AUD_BEEP: + { + return AUDCtrlBeep(demod, (pDRXAudBeep_t) ctrlData); + } + break; /*======================================================================*/ - case DRX_CTRL_I2C_READWRITE: - { - return CtrlI2CWriteRead( demod, (pDRXI2CData_t) ctrlData ); - } - break; + case DRX_CTRL_I2C_READWRITE: + { + return CtrlI2CWriteRead(demod, + (pDRXI2CData_t) ctrlData); + } + break; #ifdef DRXJ_SPLIT_UCODE_UPLOAD - case DRX_CTRL_LOAD_UCODE: - { - return CtrlUCodeUpload( demod, (pDRXUCodeInfo_t) ctrlData, UCODE_UPLOAD, FALSE ); - } - break; - case DRX_CTRL_VERIFY_UCODE: - { - return CtrlUCodeUpload( demod, (pDRXUCodeInfo_t) ctrlData, UCODE_VERIFY, FALSE ); - } - break; + case DRX_CTRL_LOAD_UCODE: + { + return CtrlUCodeUpload(demod, + (pDRXUCodeInfo_t) ctrlData, + UCODE_UPLOAD, FALSE); + } + break; + case DRX_CTRL_VERIFY_UCODE: + { + return CtrlUCodeUpload(demod, + (pDRXUCodeInfo_t) ctrlData, + UCODE_VERIFY, FALSE); + } + break; #endif /* DRXJ_SPLIT_UCODE_UPLOAD */ - case DRX_CTRL_VALIDATE_UCODE: - { - return CtrlValidateUCode (demod); - } - break; - default: - return (DRX_STS_FUNC_NOT_AVAILABLE); - } - return (DRX_STS_OK); + case DRX_CTRL_VALIDATE_UCODE: + { + return CtrlValidateUCode(demod); + } + break; + default: + return (DRX_STS_FUNC_NOT_AVAILABLE); + } + return (DRX_STS_OK); } + /* END OF FILE */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.h b/drivers/media/dvb-frontends/drx39xyj/drxj.h index cb6cc3f4309e..b9e51b44c221 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj.h +++ b/drivers/media/dvb-frontends/drx39xyj/drxj.h @@ -55,8 +55,8 @@ extern "C" { cannot be done with short addr only in multi master mode. */ #if ((DRXDAP_SINGLE_MASTER==0)&&(DRXDAPFASI_LONG_ADDR_ALLOWED==0)) #error "Multi master mode and short addressing only is an illegal combination" -*; /* Generate a fatal compiler error to make sure it stops here, - this is necesarry because not all compilers stop after a #error. */ + *; /* Generate a fatal compiler error to make sure it stops here, + this is necesarry because not all compilers stop after a #error. */ #endif /*------------------------------------------------------------------------- @@ -74,14 +74,18 @@ TYPEDEFS /*============================================================================*/ /*============================================================================*/ -typedef struct { - u16_t command; /**< Command number */ - u16_t parameterLen; /**< Data length in byte */ - u16_t resultLen; /**< result length in byte */ - u16_t *parameter; /**< General purpous param */ - u16_t *result; /**< General purpous param */ -} DRXJSCUCmd_t, *pDRXJSCUCmd_t; - + typedef struct { + u16_t command; + /**< Command number */ + u16_t parameterLen; + /**< Data length in byte */ + u16_t resultLen; + /**< result length in byte */ + u16_t *parameter; + /**< General purpous param */ + u16_t *result; + /**< General purpous param */ + } DRXJSCUCmd_t, *pDRXJSCUCmd_t; /*============================================================================*/ /*============================================================================*/ @@ -93,8 +97,8 @@ typedef struct { #define DRXJ_DEMOD_LOCK (DRX_LOCK_STATE_1) /* OOB lock states */ -#define DRXJ_OOB_AGC_LOCK (DRX_LOCK_STATE_1) /* analog gain control lock */ -#define DRXJ_OOB_SYNC_LOCK (DRX_LOCK_STATE_2) /* digital gain control lock */ +#define DRXJ_OOB_AGC_LOCK (DRX_LOCK_STATE_1) /* analog gain control lock */ +#define DRXJ_OOB_SYNC_LOCK (DRX_LOCK_STATE_2) /* digital gain control lock */ /* Intermediate powermodes for DRXJ */ #define DRXJ_POWER_DOWN_MAIN_PATH DRX_POWER_MODE_8 @@ -107,62 +111,61 @@ typedef struct { /*#define DRX_CTRL_BASE (0x0000)*/ #define DRXJ_CTRL_CFG_BASE (0x1000) -typedef enum { - DRXJ_CFG_AGC_RF = DRXJ_CTRL_CFG_BASE, - DRXJ_CFG_AGC_IF, - DRXJ_CFG_AGC_INTERNAL, - DRXJ_CFG_PRE_SAW, - DRXJ_CFG_AFE_GAIN, - DRXJ_CFG_SYMBOL_CLK_OFFSET, - DRXJ_CFG_ACCUM_CR_RS_CW_ERR, - DRXJ_CFG_FEC_MERS_SEQ_COUNT, - DRXJ_CFG_OOB_MISC, - DRXJ_CFG_SMART_ANT, - DRXJ_CFG_OOB_PRE_SAW, - DRXJ_CFG_VSB_MISC, - DRXJ_CFG_RESET_PACKET_ERR, - - /* ATV (FM) */ - DRXJ_CFG_ATV_OUTPUT, /* also for FM (SIF control) but not likely */ - DRXJ_CFG_ATV_MISC, - DRXJ_CFG_ATV_EQU_COEF, - DRXJ_CFG_ATV_AGC_STATUS, /* also for FM ( IF,RF, audioAGC ) */ - - DRXJ_CFG_MPEG_OUTPUT_MISC, - DRXJ_CFG_HW_CFG, - DRXJ_CFG_OOB_LO_POW, - - DRXJ_CFG_MAX /* dummy, never to be used */ - -} DRXJCfgType_t, *pDRXJCfgType_t; + typedef enum { + DRXJ_CFG_AGC_RF = DRXJ_CTRL_CFG_BASE, + DRXJ_CFG_AGC_IF, + DRXJ_CFG_AGC_INTERNAL, + DRXJ_CFG_PRE_SAW, + DRXJ_CFG_AFE_GAIN, + DRXJ_CFG_SYMBOL_CLK_OFFSET, + DRXJ_CFG_ACCUM_CR_RS_CW_ERR, + DRXJ_CFG_FEC_MERS_SEQ_COUNT, + DRXJ_CFG_OOB_MISC, + DRXJ_CFG_SMART_ANT, + DRXJ_CFG_OOB_PRE_SAW, + DRXJ_CFG_VSB_MISC, + DRXJ_CFG_RESET_PACKET_ERR, + + /* ATV (FM) */ + DRXJ_CFG_ATV_OUTPUT, /* also for FM (SIF control) but not likely */ + DRXJ_CFG_ATV_MISC, + DRXJ_CFG_ATV_EQU_COEF, + DRXJ_CFG_ATV_AGC_STATUS, /* also for FM ( IF,RF, audioAGC ) */ + + DRXJ_CFG_MPEG_OUTPUT_MISC, + DRXJ_CFG_HW_CFG, + DRXJ_CFG_OOB_LO_POW, + + DRXJ_CFG_MAX /* dummy, never to be used */ + } DRXJCfgType_t, *pDRXJCfgType_t; /** * /struct DRXJCfgSmartAntIO_t * smart antenna i/o. */ -typedef enum DRXJCfgSmartAntIO_t { - DRXJ_SMT_ANT_OUTPUT = 0, - DRXJ_SMT_ANT_INPUT -} DRXJCfgSmartAntIO_t, *pDRXJCfgSmartAntIO_t; + typedef enum DRXJCfgSmartAntIO_t { + DRXJ_SMT_ANT_OUTPUT = 0, + DRXJ_SMT_ANT_INPUT + } DRXJCfgSmartAntIO_t, *pDRXJCfgSmartAntIO_t; /** * /struct DRXJCfgSmartAnt_t * Set smart antenna. */ -typedef struct { - DRXJCfgSmartAntIO_t io; - u16_t ctrlData; -} DRXJCfgSmartAnt_t, *pDRXJCfgSmartAnt_t; + typedef struct { + DRXJCfgSmartAntIO_t io; + u16_t ctrlData; + } DRXJCfgSmartAnt_t, *pDRXJCfgSmartAnt_t; /** * /struct DRXJAGCSTATUS_t * AGC status information from the DRXJ-IQM-AF. */ -typedef struct { - u16_t IFAGC; - u16_t RFAGC; - u16_t DigitalAGC; -}DRXJAgcStatus_t, *pDRXJAgcStatus_t; + typedef struct { + u16_t IFAGC; + u16_t RFAGC; + u16_t DigitalAGC; + } DRXJAgcStatus_t, *pDRXJAgcStatus_t; /* DRXJ_CFG_AGC_RF, DRXJ_CFG_AGC_IF */ @@ -170,27 +173,27 @@ typedef struct { * /struct DRXJAgcCtrlMode_t * Available AGCs modes in the DRXJ. */ -typedef enum { - DRX_AGC_CTRL_AUTO = 0, - DRX_AGC_CTRL_USER, - DRX_AGC_CTRL_OFF -} DRXJAgcCtrlMode_t, *pDRXJAgcCtrlMode_t; + typedef enum { + DRX_AGC_CTRL_AUTO = 0, + DRX_AGC_CTRL_USER, + DRX_AGC_CTRL_OFF + } DRXJAgcCtrlMode_t, *pDRXJAgcCtrlMode_t; /** * /struct DRXJCfgAgc_t * Generic interface for all AGCs present on the DRXJ. */ -typedef struct { - DRXStandard_t standard; /* standard for which these settings apply */ - DRXJAgcCtrlMode_t ctrlMode; /* off, user, auto */ - u16_t outputLevel; /* range dependent on AGC */ - u16_t minOutputLevel; /* range dependent on AGC */ - u16_t maxOutputLevel; /* range dependent on AGC */ - u16_t speed; /* range dependent on AGC */ - u16_t top; /* rf-agc take over point */ - u16_t cutOffCurrent; /* rf-agc is accelerated if output current - is below cut-off current */ -}DRXJCfgAgc_t, *pDRXJCfgAgc_t; + typedef struct { + DRXStandard_t standard; /* standard for which these settings apply */ + DRXJAgcCtrlMode_t ctrlMode; /* off, user, auto */ + u16_t outputLevel; /* range dependent on AGC */ + u16_t minOutputLevel; /* range dependent on AGC */ + u16_t maxOutputLevel; /* range dependent on AGC */ + u16_t speed; /* range dependent on AGC */ + u16_t top; /* rf-agc take over point */ + u16_t cutOffCurrent; /* rf-agc is accelerated if output current + is below cut-off current */ + } DRXJCfgAgc_t, *pDRXJCfgAgc_t; /* DRXJ_CFG_PRE_SAW */ @@ -198,11 +201,11 @@ typedef struct { * /struct DRXJCfgPreSaw_t * Interface to configure pre SAW sense. */ -typedef struct { - DRXStandard_t standard; /* standard to which these settings apply */ - u16_t reference; /* pre SAW reference value, range 0 .. 31 */ - Bool_t usePreSaw; /* TRUE algorithms must use pre SAW sense */ -} DRXJCfgPreSaw_t, *pDRXJCfgPreSaw_t; + typedef struct { + DRXStandard_t standard; /* standard to which these settings apply */ + u16_t reference; /* pre SAW reference value, range 0 .. 31 */ + Bool_t usePreSaw; /* TRUE algorithms must use pre SAW sense */ + } DRXJCfgPreSaw_t, *pDRXJCfgPreSaw_t; /* DRXJ_CFG_AFE_GAIN */ @@ -210,10 +213,10 @@ typedef struct { * /struct DRXJCfgAfeGain_t * Interface to configure gain of AFE (LNA + PGA). */ -typedef struct { - DRXStandard_t standard; /* standard to which these settings apply */ - u16_t gain; /* gain in 0.1 dB steps, DRXJ range 140 .. 335 */ -} DRXJCfgAfeGain_t, *pDRXJCfgAfeGain_t; + typedef struct { + DRXStandard_t standard; /* standard to which these settings apply */ + u16_t gain; /* gain in 0.1 dB steps, DRXJ range 140 .. 335 */ + } DRXJCfgAfeGain_t, *pDRXJCfgAfeGain_t; /** * /struct DRXJRSErrors_t @@ -222,46 +225,52 @@ typedef struct { * Container for errors that are received in the most recently finished measurment period * */ -typedef struct { - u16_t nrBitErrors; /**< no of pre RS bit errors */ - u16_t nrSymbolErrors; /**< no of pre RS symbol errors */ - u16_t nrPacketErrors; /**< no of pre RS packet errors */ - u16_t nrFailures; /**< no of post RS failures to decode */ - u16_t nrSncParFailCount; /**< no of post RS bit erros */ -} DRXJRSErrors_t, *pDRXJRSErrors_t; + typedef struct { + u16_t nrBitErrors; + /**< no of pre RS bit errors */ + u16_t nrSymbolErrors; + /**< no of pre RS symbol errors */ + u16_t nrPacketErrors; + /**< no of pre RS packet errors */ + u16_t nrFailures; + /**< no of post RS failures to decode */ + u16_t nrSncParFailCount; + /**< no of post RS bit erros */ + } DRXJRSErrors_t, *pDRXJRSErrors_t; /** * /struct DRXJCfgVSBMisc_t * symbol error rate */ -typedef struct{ - u32_t symbError; /**< symbol error rate sps */ -}DRXJCfgVSBMisc_t, *pDRXJCfgVSBMisc_t; + typedef struct { + u32_t symbError; + /**< symbol error rate sps */ + } DRXJCfgVSBMisc_t, *pDRXJCfgVSBMisc_t; /** * /enum DRXJMpegOutputClockRate_t * Mpeg output clock rate. * */ -typedef enum { - DRXJ_MPEG_START_WIDTH_1CLKCYC, - DRXJ_MPEG_START_WIDTH_8CLKCYC -} DRXJMpegStartWidth_t, *pDRXJMpegStartWidth_t; + typedef enum { + DRXJ_MPEG_START_WIDTH_1CLKCYC, + DRXJ_MPEG_START_WIDTH_8CLKCYC + } DRXJMpegStartWidth_t, *pDRXJMpegStartWidth_t; /** * /enum DRXJMpegOutputClockRate_t * Mpeg output clock rate. * */ -typedef enum { - DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO, - DRXJ_MPEGOUTPUT_CLOCK_RATE_75973K, - DRXJ_MPEGOUTPUT_CLOCK_RATE_50625K, - DRXJ_MPEGOUTPUT_CLOCK_RATE_37968K, - DRXJ_MPEGOUTPUT_CLOCK_RATE_30375K, - DRXJ_MPEGOUTPUT_CLOCK_RATE_25313K, - DRXJ_MPEGOUTPUT_CLOCK_RATE_21696K -} DRXJMpegOutputClockRate_t, *pDRXJMpegOutputClockRate_t; + typedef enum { + DRXJ_MPEGOUTPUT_CLOCK_RATE_AUTO, + DRXJ_MPEGOUTPUT_CLOCK_RATE_75973K, + DRXJ_MPEGOUTPUT_CLOCK_RATE_50625K, + DRXJ_MPEGOUTPUT_CLOCK_RATE_37968K, + DRXJ_MPEGOUTPUT_CLOCK_RATE_30375K, + DRXJ_MPEGOUTPUT_CLOCK_RATE_25313K, + DRXJ_MPEGOUTPUT_CLOCK_RATE_21696K + } DRXJMpegOutputClockRate_t, *pDRXJMpegOutputClockRate_t; /** * /struct DRXJCfgMisc_t @@ -269,49 +278,52 @@ typedef enum { * reverse MPEG output bit order * set MPEG output clock rate */ -typedef struct{ - Bool_t disableTEIHandling; /**< if TRUE pass (not change) TEI bit */ - Bool_t bitReverseMpegOutout; /**< if TRUE, parallel: msb on MD0; serial: lsb out first */ - DRXJMpegOutputClockRate_t mpegOutputClockRate; /**< set MPEG output clock rate that overwirtes the derived one from symbol rate */ - DRXJMpegStartWidth_t mpegStartWidth; /**< set MPEG output start width */ -}DRXJCfgMpegOutputMisc_t, *pDRXJCfgMpegOutputMisc_t; + typedef struct { + Bool_t disableTEIHandling; /**< if TRUE pass (not change) TEI bit */ + Bool_t bitReverseMpegOutout; /**< if TRUE, parallel: msb on MD0; serial: lsb out first */ + DRXJMpegOutputClockRate_t mpegOutputClockRate; + /**< set MPEG output clock rate that overwirtes the derived one from symbol rate */ + DRXJMpegStartWidth_t mpegStartWidth; /**< set MPEG output start width */ + } DRXJCfgMpegOutputMisc_t, *pDRXJCfgMpegOutputMisc_t; /** * /enum DRXJXtalFreq_t * Supported external crystal reference frequency. */ -typedef enum{ - DRXJ_XTAL_FREQ_RSVD, - DRXJ_XTAL_FREQ_27MHZ, - DRXJ_XTAL_FREQ_20P25MHZ, - DRXJ_XTAL_FREQ_4MHZ -}DRXJXtalFreq_t, *pDRXJXtalFreq_t; + typedef enum { + DRXJ_XTAL_FREQ_RSVD, + DRXJ_XTAL_FREQ_27MHZ, + DRXJ_XTAL_FREQ_20P25MHZ, + DRXJ_XTAL_FREQ_4MHZ + } DRXJXtalFreq_t, *pDRXJXtalFreq_t; /** * /enum DRXJXtalFreq_t * Supported external crystal reference frequency. */ -typedef enum{ - DRXJ_I2C_SPEED_400KBPS, - DRXJ_I2C_SPEED_100KBPS -}DRXJI2CSpeed_t, *pDRXJI2CSpeed_t; + typedef enum { + DRXJ_I2C_SPEED_400KBPS, + DRXJ_I2C_SPEED_100KBPS + } DRXJI2CSpeed_t, *pDRXJI2CSpeed_t; /** * /struct DRXJCfgHwCfg_t * Get hw configuration, such as crystal reference frequency, I2C speed, etc... */ -typedef struct{ - DRXJXtalFreq_t xtalFreq; /**< crystal reference frequency */ - DRXJI2CSpeed_t i2cSpeed; /**< 100 or 400 kbps */ -}DRXJCfgHwCfg_t, *pDRXJCfgHwCfg_t; + typedef struct { + DRXJXtalFreq_t xtalFreq; + /**< crystal reference frequency */ + DRXJI2CSpeed_t i2cSpeed; + /**< 100 or 400 kbps */ + } DRXJCfgHwCfg_t, *pDRXJCfgHwCfg_t; /* * DRXJ_CFG_ATV_MISC */ -typedef struct{ - s16_t peakFilter; /* -8 .. 15 */ - u16_t noiseFilter; /* 0 .. 15 */ -}DRXJCfgAtvMisc_t, *pDRXJCfgAtvMisc_t; + typedef struct { + s16_t peakFilter; /* -8 .. 15 */ + u16_t noiseFilter; /* 0 .. 15 */ + } DRXJCfgAtvMisc_t, *pDRXJCfgAtvMisc_t; /* * DRXJCfgOOBMisc_t @@ -327,51 +339,51 @@ typedef struct{ #define DRXJ_OOB_STATE_EQT_HUNT 0x30 #define DRXJ_OOB_STATE_SYNC 0x40 -typedef struct{ - DRXJAgcStatus_t agc; - Bool_t eqLock; - Bool_t symTimingLock; - Bool_t phaseLock; - Bool_t freqLock; - Bool_t digGainLock; - Bool_t anaGainLock; - u8_t state; -}DRXJCfgOOBMisc_t, *pDRXJCfgOOBMisc_t; + typedef struct { + DRXJAgcStatus_t agc; + Bool_t eqLock; + Bool_t symTimingLock; + Bool_t phaseLock; + Bool_t freqLock; + Bool_t digGainLock; + Bool_t anaGainLock; + u8_t state; + } DRXJCfgOOBMisc_t, *pDRXJCfgOOBMisc_t; /* * Index of in array of coef */ -typedef enum { - DRXJ_OOB_LO_POW_MINUS0DB = 0, - DRXJ_OOB_LO_POW_MINUS5DB, - DRXJ_OOB_LO_POW_MINUS10DB, - DRXJ_OOB_LO_POW_MINUS15DB, - DRXJ_OOB_LO_POW_MAX -} DRXJCfgOobLoPower_t, *pDRXJCfgOobLoPower_t; + typedef enum { + DRXJ_OOB_LO_POW_MINUS0DB = 0, + DRXJ_OOB_LO_POW_MINUS5DB, + DRXJ_OOB_LO_POW_MINUS10DB, + DRXJ_OOB_LO_POW_MINUS15DB, + DRXJ_OOB_LO_POW_MAX + } DRXJCfgOobLoPower_t, *pDRXJCfgOobLoPower_t; /* * DRXJ_CFG_ATV_EQU_COEF */ -typedef struct { - s16_t coef0; /* -256 .. 255 */ - s16_t coef1; /* -256 .. 255 */ - s16_t coef2; /* -256 .. 255 */ - s16_t coef3; /* -256 .. 255 */ -} DRXJCfgAtvEquCoef_t, *pDRXJCfgAtvEquCoef_t; + typedef struct { + s16_t coef0; /* -256 .. 255 */ + s16_t coef1; /* -256 .. 255 */ + s16_t coef2; /* -256 .. 255 */ + s16_t coef3; /* -256 .. 255 */ + } DRXJCfgAtvEquCoef_t, *pDRXJCfgAtvEquCoef_t; /* * Index of in array of coef */ -typedef enum { - DRXJ_COEF_IDX_MN = 0, - DRXJ_COEF_IDX_FM , - DRXJ_COEF_IDX_L , - DRXJ_COEF_IDX_LP , - DRXJ_COEF_IDX_BG , - DRXJ_COEF_IDX_DK , - DRXJ_COEF_IDX_I , - DRXJ_COEF_IDX_MAX -} DRXJCoefArrayIndex_t, *pDRXJCoefArrayIndex_t; + typedef enum { + DRXJ_COEF_IDX_MN = 0, + DRXJ_COEF_IDX_FM, + DRXJ_COEF_IDX_L, + DRXJ_COEF_IDX_LP, + DRXJ_COEF_IDX_BG, + DRXJ_COEF_IDX_DK, + DRXJ_COEF_IDX_I, + DRXJ_COEF_IDX_MAX + } DRXJCoefArrayIndex_t, *pDRXJCoefArrayIndex_t; /* * DRXJ_CFG_ATV_OUTPUT @@ -382,37 +394,37 @@ typedef enum { * Attenuation setting for SIF AGC. * */ -typedef enum { - DRXJ_SIF_ATTENUATION_0DB, - DRXJ_SIF_ATTENUATION_3DB, - DRXJ_SIF_ATTENUATION_6DB, - DRXJ_SIF_ATTENUATION_9DB -} DRXJSIFAttenuation_t, *pDRXJSIFAttenuation_t; + typedef enum { + DRXJ_SIF_ATTENUATION_0DB, + DRXJ_SIF_ATTENUATION_3DB, + DRXJ_SIF_ATTENUATION_6DB, + DRXJ_SIF_ATTENUATION_9DB + } DRXJSIFAttenuation_t, *pDRXJSIFAttenuation_t; /** * /struct DRXJCfgAtvOutput_t * SIF attenuation setting. * */ -typedef struct { - Bool_t enableCVBSOutput; /* TRUE= enabled */ - Bool_t enableSIFOutput; /* TRUE= enabled */ - DRXJSIFAttenuation_t sifAttenuation; -} DRXJCfgAtvOutput_t, *pDRXJCfgAtvOutput_t; + typedef struct { + Bool_t enableCVBSOutput; /* TRUE= enabled */ + Bool_t enableSIFOutput; /* TRUE= enabled */ + DRXJSIFAttenuation_t sifAttenuation; + } DRXJCfgAtvOutput_t, *pDRXJCfgAtvOutput_t; /* DRXJ_CFG_ATV_AGC_STATUS (get only) */ /* TODO : AFE interface not yet finished, subject to change */ -typedef struct { - u16_t rfAgcGain ; /* 0 .. 877 uA */ - u16_t ifAgcGain ; /* 0 .. 877 uA */ - s16_t videoAgcGain ; /* -75 .. 1972 in 0.1 dB steps */ - s16_t audioAgcGain ; /* -4 .. 1020 in 0.1 dB steps */ - u16_t rfAgcLoopGain ; /* 0 .. 7 */ - u16_t ifAgcLoopGain ; /* 0 .. 7 */ - u16_t videoAgcLoopGain; /* 0 .. 7 */ -} DRXJCfgAtvAgcStatus_t, *pDRXJCfgAtvAgcStatus_t; + typedef struct { + u16_t rfAgcGain; /* 0 .. 877 uA */ + u16_t ifAgcGain; /* 0 .. 877 uA */ + s16_t videoAgcGain; /* -75 .. 1972 in 0.1 dB steps */ + s16_t audioAgcGain; /* -4 .. 1020 in 0.1 dB steps */ + u16_t rfAgcLoopGain; /* 0 .. 7 */ + u16_t ifAgcLoopGain; /* 0 .. 7 */ + u16_t videoAgcLoopGain; /* 0 .. 7 */ + } DRXJCfgAtvAgcStatus_t, *pDRXJCfgAtvAgcStatus_t; /*============================================================================*/ /*============================================================================*/ @@ -433,129 +445,136 @@ typedef struct { * Global data container for DRXJ specific data. * */ -typedef struct { - /* device capabilties (determined during DRX_Open()) */ - Bool_t hasLNA; /**< TRUE if LNA (aka PGA) present */ - Bool_t hasOOB; /**< TRUE if OOB supported */ - Bool_t hasNTSC; /**< TRUE if NTSC supported */ - Bool_t hasBTSC; /**< TRUE if BTSC supported */ - Bool_t hasSMATX; /**< TRUE if mat_tx is available */ - Bool_t hasSMARX; /**< TRUE if mat_rx is available */ - Bool_t hasGPIO; /**< TRUE if GPIO is available */ - Bool_t hasIRQN; /**< TRUE if IRQN is available */ - /* A1/A2/A... */ - u8_t mfx; /**< metal fix */ - - /* tuner settings */ - Bool_t mirrorFreqSpectOOB; /**< tuner inversion (TRUE = tuner mirrors the signal */ - - /* standard/channel settings */ - DRXStandard_t standard; /**< current standard information */ - DRXConstellation_t constellation; /**< current constellation */ - DRXFrequency_t frequency; /**< center signal frequency in KHz */ - DRXBandwidth_t currBandwidth; /**< current channel bandwidth */ - DRXMirror_t mirror; /**< current channel mirror */ - - /* signal quality information */ - u32_t fecBitsDesired; /**< BER accounting period */ - u16_t fecVdPlen; /**< no of trellis symbols: VD SER measurement period */ - u16_t qamVdPrescale; /**< Viterbi Measurement Prescale */ - u16_t qamVdPeriod; /**< Viterbi Measurement period */ - u16_t fecRsPlen; /**< defines RS BER measurement period */ - u16_t fecRsPrescale; /**< ReedSolomon Measurement Prescale */ - u16_t fecRsPeriod; /**< ReedSolomon Measurement period */ - Bool_t resetPktErrAcc; /**< Set a flag to reset accumulated packet error */ - u16_t pktErrAccStart; /**< Set a flag to reset accumulated packet error */ - - /* HI configuration */ - u16_t HICfgTimingDiv; /**< HI Configure() parameter 2 */ - u16_t HICfgBridgeDelay; /**< HI Configure() parameter 3 */ - u16_t HICfgWakeUpKey; /**< HI Configure() parameter 4 */ - u16_t HICfgCtrl; /**< HI Configure() parameter 5 */ - u16_t HICfgTransmit; /**< HI Configure() parameter 6 */ - - /* UIO configuartion */ - DRXUIOMode_t uioSmaRxMode; /**< current mode of SmaRx pin */ - DRXUIOMode_t uioSmaTxMode; /**< current mode of SmaTx pin */ - DRXUIOMode_t uioGPIOMode; /**< current mode of ASEL pin */ - DRXUIOMode_t uioIRQNMode; /**< current mode of IRQN pin */ - - /* IQM fs frequecy shift and inversion */ - u32_t iqmFsRateOfs; /**< frequency shifter setting after setchannel */ - Bool_t posImage; /**< Ture: positive image */ - /* IQM RC frequecy shift */ - u32_t iqmRcRateOfs; /**< frequency shifter setting after setchannel */ - - /* ATV configuartion */ - u32_t atvCfgChangedFlags; /**< flag: flags cfg changes */ - s16_t atvTopEqu0[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU0__A */ - s16_t atvTopEqu1[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU1__A */ - s16_t atvTopEqu2[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU2__A */ - s16_t atvTopEqu3[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU3__A */ - Bool_t phaseCorrectionBypass; /**< flag: TRUE=bypass */ - s16_t atvTopVidPeak; /**< shadow of ATV_TOP_VID_PEAK__A */ - u16_t atvTopNoiseTh; /**< shadow of ATV_TOP_NOISE_TH__A */ - Bool_t enableCVBSOutput; /**< flag CVBS ouput enable */ - Bool_t enableSIFOutput; /**< flag SIF ouput enable */ - DRXJSIFAttenuation_t - sifAttenuation; /**< current SIF att setting */ - /* Agc configuration for QAM and VSB */ - DRXJCfgAgc_t qamRfAgcCfg; /**< qam RF AGC config */ - DRXJCfgAgc_t qamIfAgcCfg; /**< qam IF AGC config */ - DRXJCfgAgc_t vsbRfAgcCfg; /**< vsb RF AGC config */ - DRXJCfgAgc_t vsbIfAgcCfg; /**< vsb IF AGC config */ - - /* PGA gain configuration for QAM and VSB */ - u16_t qamPgaCfg; /**< qam PGA config */ - u16_t vsbPgaCfg; /**< vsb PGA config */ - - /* Pre SAW configuration for QAM and VSB */ - DRXJCfgPreSaw_t qamPreSawCfg; /**< qam pre SAW config */ - DRXJCfgPreSaw_t vsbPreSawCfg; /**< qam pre SAW config */ - - /* Version information */ - char vText[2][12]; /**< allocated text versions */ - DRXVersion_t vVersion[2]; /**< allocated versions structs */ - DRXVersionList_t vListElements[2]; /**< allocated version list */ - - /* smart antenna configuration */ - Bool_t smartAntInverted; - - /* Tracking filter setting for OOB */ - u16_t oobTrkFilterCfg[8]; - Bool_t oobPowerOn; - - /* MPEG static bitrate setting */ - u32_t mpegTsStaticBitrate; /**< bitrate static MPEG output */ - Bool_t disableTEIhandling; /**< MPEG TS TEI handling */ - Bool_t bitReverseMpegOutout; /**< MPEG output bit order */ - DRXJMpegOutputClockRate_t - mpegOutputClockRate; /**< MPEG output clock rate */ - DRXJMpegStartWidth_t - mpegStartWidth; /**< MPEG Start width */ - - /* Pre SAW & Agc configuration for ATV */ - DRXJCfgPreSaw_t atvPreSawCfg; /**< atv pre SAW config */ - DRXJCfgAgc_t atvRfAgcCfg; /**< atv RF AGC config */ - DRXJCfgAgc_t atvIfAgcCfg; /**< atv IF AGC config */ - u16_t atvPgaCfg; /**< atv pga config */ - - u32_t currSymbolRate; - - /* pin-safe mode */ - Bool_t pdrSafeMode; /**< PDR safe mode activated */ - u16_t pdrSafeRestoreValGpio; - u16_t pdrSafeRestoreValVSync; - u16_t pdrSafeRestoreValSmaRx; - u16_t pdrSafeRestoreValSmaTx; - - /* OOB pre-saw value */ - u16_t oobPreSaw; - DRXJCfgOobLoPower_t oobLoPow; - - DRXAudData_t audData; /**< audio storage */ - -} DRXJData_t, *pDRXJData_t; + typedef struct { + /* device capabilties (determined during DRX_Open()) */ + Bool_t hasLNA; /**< TRUE if LNA (aka PGA) present */ + Bool_t hasOOB; /**< TRUE if OOB supported */ + Bool_t hasNTSC; /**< TRUE if NTSC supported */ + Bool_t hasBTSC; /**< TRUE if BTSC supported */ + Bool_t hasSMATX; /**< TRUE if mat_tx is available */ + Bool_t hasSMARX; /**< TRUE if mat_rx is available */ + Bool_t hasGPIO; /**< TRUE if GPIO is available */ + Bool_t hasIRQN; /**< TRUE if IRQN is available */ + /* A1/A2/A... */ + u8_t mfx; /**< metal fix */ + + /* tuner settings */ + Bool_t mirrorFreqSpectOOB;/**< tuner inversion (TRUE = tuner mirrors the signal */ + + /* standard/channel settings */ + DRXStandard_t standard; /**< current standard information */ + DRXConstellation_t constellation; + /**< current constellation */ + DRXFrequency_t frequency; /**< center signal frequency in KHz */ + DRXBandwidth_t currBandwidth; + /**< current channel bandwidth */ + DRXMirror_t mirror; /**< current channel mirror */ + + /* signal quality information */ + u32_t fecBitsDesired; /**< BER accounting period */ + u16_t fecVdPlen; /**< no of trellis symbols: VD SER measurement period */ + u16_t qamVdPrescale; /**< Viterbi Measurement Prescale */ + u16_t qamVdPeriod; /**< Viterbi Measurement period */ + u16_t fecRsPlen; /**< defines RS BER measurement period */ + u16_t fecRsPrescale; /**< ReedSolomon Measurement Prescale */ + u16_t fecRsPeriod; /**< ReedSolomon Measurement period */ + Bool_t resetPktErrAcc; /**< Set a flag to reset accumulated packet error */ + u16_t pktErrAccStart; /**< Set a flag to reset accumulated packet error */ + + /* HI configuration */ + u16_t HICfgTimingDiv; /**< HI Configure() parameter 2 */ + u16_t HICfgBridgeDelay; /**< HI Configure() parameter 3 */ + u16_t HICfgWakeUpKey; /**< HI Configure() parameter 4 */ + u16_t HICfgCtrl; /**< HI Configure() parameter 5 */ + u16_t HICfgTransmit; /**< HI Configure() parameter 6 */ + + /* UIO configuartion */ + DRXUIOMode_t uioSmaRxMode;/**< current mode of SmaRx pin */ + DRXUIOMode_t uioSmaTxMode;/**< current mode of SmaTx pin */ + DRXUIOMode_t uioGPIOMode; /**< current mode of ASEL pin */ + DRXUIOMode_t uioIRQNMode; /**< current mode of IRQN pin */ + + /* IQM fs frequecy shift and inversion */ + u32_t iqmFsRateOfs; /**< frequency shifter setting after setchannel */ + Bool_t posImage; /**< Ture: positive image */ + /* IQM RC frequecy shift */ + u32_t iqmRcRateOfs; /**< frequency shifter setting after setchannel */ + + /* ATV configuartion */ + u32_t atvCfgChangedFlags; /**< flag: flags cfg changes */ + s16_t atvTopEqu0[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU0__A */ + s16_t atvTopEqu1[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU1__A */ + s16_t atvTopEqu2[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU2__A */ + s16_t atvTopEqu3[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU3__A */ + Bool_t phaseCorrectionBypass;/**< flag: TRUE=bypass */ + s16_t atvTopVidPeak; /**< shadow of ATV_TOP_VID_PEAK__A */ + u16_t atvTopNoiseTh; /**< shadow of ATV_TOP_NOISE_TH__A */ + Bool_t enableCVBSOutput; /**< flag CVBS ouput enable */ + Bool_t enableSIFOutput; /**< flag SIF ouput enable */ + DRXJSIFAttenuation_t sifAttenuation; + /**< current SIF att setting */ + /* Agc configuration for QAM and VSB */ + DRXJCfgAgc_t qamRfAgcCfg; /**< qam RF AGC config */ + DRXJCfgAgc_t qamIfAgcCfg; /**< qam IF AGC config */ + DRXJCfgAgc_t vsbRfAgcCfg; /**< vsb RF AGC config */ + DRXJCfgAgc_t vsbIfAgcCfg; /**< vsb IF AGC config */ + + /* PGA gain configuration for QAM and VSB */ + u16_t qamPgaCfg; /**< qam PGA config */ + u16_t vsbPgaCfg; /**< vsb PGA config */ + + /* Pre SAW configuration for QAM and VSB */ + DRXJCfgPreSaw_t qamPreSawCfg; + /**< qam pre SAW config */ + DRXJCfgPreSaw_t vsbPreSawCfg; + /**< qam pre SAW config */ + + /* Version information */ + char vText[2][12]; /**< allocated text versions */ + DRXVersion_t vVersion[2]; /**< allocated versions structs */ + DRXVersionList_t vListElements[2]; + /**< allocated version list */ + + /* smart antenna configuration */ + Bool_t smartAntInverted; + + /* Tracking filter setting for OOB */ + u16_t oobTrkFilterCfg[8]; + Bool_t oobPowerOn; + + /* MPEG static bitrate setting */ + u32_t mpegTsStaticBitrate; /**< bitrate static MPEG output */ + Bool_t disableTEIhandling; /**< MPEG TS TEI handling */ + Bool_t bitReverseMpegOutout;/**< MPEG output bit order */ + DRXJMpegOutputClockRate_t mpegOutputClockRate; + /**< MPEG output clock rate */ + DRXJMpegStartWidth_t mpegStartWidth; + /**< MPEG Start width */ + + /* Pre SAW & Agc configuration for ATV */ + DRXJCfgPreSaw_t atvPreSawCfg; + /**< atv pre SAW config */ + DRXJCfgAgc_t atvRfAgcCfg; /**< atv RF AGC config */ + DRXJCfgAgc_t atvIfAgcCfg; /**< atv IF AGC config */ + u16_t atvPgaCfg; /**< atv pga config */ + + u32_t currSymbolRate; + + /* pin-safe mode */ + Bool_t pdrSafeMode; /**< PDR safe mode activated */ + u16_t pdrSafeRestoreValGpio; + u16_t pdrSafeRestoreValVSync; + u16_t pdrSafeRestoreValSmaRx; + u16_t pdrSafeRestoreValSmaTx; + + /* OOB pre-saw value */ + u16_t oobPreSaw; + DRXJCfgOobLoPower_t oobLoPow; + + DRXAudData_t audData; + /**< audio storage */ + + } DRXJData_t, *pDRXJData_t; /*------------------------------------------------------------------------- Access MACROS @@ -595,7 +614,6 @@ Access MACROS DRXJ_ATTR_BTSC_DETECT( d ) = (x); \ } while(0) - /*------------------------------------------------------------------------- DEFINES -------------------------------------------------------------------------*/ @@ -705,21 +723,20 @@ STRUCTS Exported FUNCTIONS -------------------------------------------------------------------------*/ -extern DRXStatus_t DRXJ_Open(pDRXDemodInstance_t demod); -extern DRXStatus_t DRXJ_Close(pDRXDemodInstance_t demod); -extern DRXStatus_t DRXJ_Ctrl(pDRXDemodInstance_t demod, - DRXCtrlIndex_t ctrl, - void *ctrlData); + extern DRXStatus_t DRXJ_Open(pDRXDemodInstance_t demod); + extern DRXStatus_t DRXJ_Close(pDRXDemodInstance_t demod); + extern DRXStatus_t DRXJ_Ctrl(pDRXDemodInstance_t demod, + DRXCtrlIndex_t ctrl, void *ctrlData); /*------------------------------------------------------------------------- Exported GLOBAL VARIABLES -------------------------------------------------------------------------*/ -extern DRXAccessFunc_t drxDapDRXJFunct_g; -extern DRXDemodFunc_t DRXJFunctions_g; -extern DRXJData_t DRXJData_g; -extern I2CDeviceAddr_t DRXJDefaultAddr_g; -extern DRXCommonAttr_t DRXJDefaultCommAttr_g; -extern DRXDemodInstance_t DRXJDefaultDemod_g; + extern DRXAccessFunc_t drxDapDRXJFunct_g; + extern DRXDemodFunc_t DRXJFunctions_g; + extern DRXJData_t DRXJData_g; + extern I2CDeviceAddr_t DRXJDefaultAddr_g; + extern DRXCommonAttr_t DRXJDefaultCommAttr_g; + extern DRXDemodInstance_t DRXJDefaultDemod_g; /*------------------------------------------------------------------------- THE END @@ -727,4 +744,4 @@ THE END #ifdef __cplusplus } #endif -#endif /* __DRXJ_H__ */ +#endif /* __DRXJ_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj_map.h b/drivers/media/dvb-frontends/drx39xyj/drxj_map.h index 35ecaae298e4..8fad1e519efb 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj_map.h +++ b/drivers/media/dvb-frontends/drx39xyj/drxj_map.h @@ -53,15 +53,10 @@ extern "C" { #ifdef _REGISTERTABLE_ #include <registertable.h> -extern RegisterTable_t drxj_map[]; -extern RegisterTableInfo_t drxj_map_info[]; + extern RegisterTable_t drxj_map[]; + extern RegisterTableInfo_t drxj_map_info[]; #endif - - - - - #define ATV_COMM_EXEC__A 0xC00000 #define ATV_COMM_EXEC__W 2 #define ATV_COMM_EXEC__M 0x3 @@ -108,8 +103,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_COMM_KEY_MIN 0x0 #define ATV_COMM_KEY_MAX 0xFFFF - - #define ATV_TOP_COMM_EXEC__A 0xC10000 #define ATV_TOP_COMM_EXEC__W 2 #define ATV_TOP_COMM_EXEC__M 0x3 @@ -168,7 +161,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_COMM_MB_MUX_OBS_SIF2025_O 0x1C0 #define ATV_TOP_COMM_MB_MUX_OBS_POST_S 0x200 - #define ATV_TOP_COMM_INT_REQ__A 0xC10003 #define ATV_TOP_COMM_INT_REQ__W 16 #define ATV_TOP_COMM_INT_REQ__M 0xFFFF @@ -246,7 +238,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_COMM_KEY_KEY_MIN 0x0 #define ATV_TOP_COMM_KEY_KEY_MAX 0xFFFF - #define ATV_TOP_CR_AMP_TH__A 0xC10010 #define ATV_TOP_CR_AMP_TH__W 8 #define ATV_TOP_CR_AMP_TH__M 0xFF @@ -279,7 +270,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_CR_CONT_CR_I_MN 0x80 #define ATV_TOP_CR_CONT_CR_I_FM 0x0 - #define ATV_TOP_CR_OVM_TH__A 0xC10012 #define ATV_TOP_CR_OVM_TH__W 8 #define ATV_TOP_CR_OVM_TH__M 0xFF @@ -287,7 +277,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_CR_OVM_TH_MN 0xA0 #define ATV_TOP_CR_OVM_TH_FM 0x0 - #define ATV_TOP_NOISE_TH__A 0xC10013 #define ATV_TOP_NOISE_TH__W 4 #define ATV_TOP_NOISE_TH__M 0xF @@ -338,7 +327,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_EQU3_EQU_C3__PRE 0x160 #define ATV_TOP_EQU3_EQU_C3_MN 0x60 - #define ATV_TOP_ROT_MODE__A 0xC10018 #define ATV_TOP_ROT_MODE__W 1 #define ATV_TOP_ROT_MODE__M 0x1 @@ -398,7 +386,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_STD_VID_POL_NEG 0x0 #define ATV_TOP_STD_VID_POL_POS 0x2 - #define ATV_TOP_VID_AMP__A 0xC1001B #define ATV_TOP_VID_AMP__W 12 #define ATV_TOP_VID_AMP__M 0xFFF @@ -406,7 +393,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_VID_AMP_MN 0x380 #define ATV_TOP_VID_AMP_FM 0x0 - #define ATV_TOP_VID_PEAK__A 0xC1001C #define ATV_TOP_VID_PEAK__W 5 #define ATV_TOP_VID_PEAK__M 0x1F @@ -418,14 +404,12 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_FAGC_TH__PRE 0x2B2 #define ATV_TOP_FAGC_TH_MN 0x2B2 - #define ATV_TOP_SYNC_SLICE__A 0xC1001E #define ATV_TOP_SYNC_SLICE__W 11 #define ATV_TOP_SYNC_SLICE__M 0x7FF #define ATV_TOP_SYNC_SLICE__PRE 0x243 #define ATV_TOP_SYNC_SLICE_MN 0x243 - #define ATV_TOP_SIF_GAIN__A 0xC1001F #define ATV_TOP_SIF_GAIN__W 11 #define ATV_TOP_SIF_GAIN__M 0x7FF @@ -481,7 +465,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_STDBY_CVBS_STDBY_A2_ACTIVE 0x2 #define ATV_TOP_STDBY_CVBS_STDBY_A2_STANDBY 0x0 - #define ATV_TOP_OVERRIDE_SFR__A 0xC10026 #define ATV_TOP_OVERRIDE_SFR__W 1 #define ATV_TOP_OVERRIDE_SFR__M 0x1 @@ -489,7 +472,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_OVERRIDE_SFR_ACTIVE 0x0 #define ATV_TOP_OVERRIDE_SFR_OVERRIDE 0x1 - #define ATV_TOP_SFR_VID_GAIN__A 0xC10027 #define ATV_TOP_SFR_VID_GAIN__W 16 #define ATV_TOP_SFR_VID_GAIN__M 0xFFFF @@ -544,8 +526,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_TOP_OUT_CONF_SIF_DAC_BR_NORMAL 0x0 #define ATV_TOP_OUT_CONF_SIF_DAC_BR_BITREVERSED 0x10 - - #define ATV_AFT_COMM_EXEC__A 0xFF0000 #define ATV_AFT_COMM_EXEC__W 2 #define ATV_AFT_COMM_EXEC__M 0x3 @@ -554,16 +534,11 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ATV_AFT_COMM_EXEC_ACTIVE 0x1 #define ATV_AFT_COMM_EXEC_HOLD 0x2 - #define ATV_AFT_TST__A 0xFF0010 #define ATV_AFT_TST__W 4 #define ATV_AFT_TST__M 0xF #define ATV_AFT_TST__PRE 0x0 - - - - #define AUD_COMM_EXEC__A 0x1000000 #define AUD_COMM_EXEC__W 2 #define AUD_COMM_EXEC__M 0x3 @@ -576,8 +551,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_COMM_MB__M 0xFFFF #define AUD_COMM_MB__PRE 0x0 - - #define AUD_TOP_COMM_EXEC__A 0x1010000 #define AUD_TOP_COMM_EXEC__W 2 #define AUD_TOP_COMM_EXEC__M 0x3 @@ -694,14 +667,11 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_TOP_TR_TIMER_CYCLES__M 0xFFFF #define AUD_TOP_TR_TIMER_CYCLES__PRE 0x0 - #define AUD_TOP_DEMOD_TBO_SEL__A 0x1010014 #define AUD_TOP_DEMOD_TBO_SEL__W 5 #define AUD_TOP_DEMOD_TBO_SEL__M 0x1F #define AUD_TOP_DEMOD_TBO_SEL__PRE 0x0 - - #define AUD_DEM_WR_MODUS__A 0x1030030 #define AUD_DEM_WR_MODUS__W 16 #define AUD_DEM_WR_MODUS__M 0xFFFF @@ -803,8 +773,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_WR_STANDARD_SEL_STD_SEL_EIA_J 0x30 #define AUD_DEM_WR_STANDARD_SEL_STD_SEL_FM_RADIO 0x40 - - #define AUD_DEM_RD_STANDARD_RES__A 0x102007E #define AUD_DEM_RD_STANDARD_RES__W 16 #define AUD_DEM_RD_STANDARD_RES__M 0xFFFF @@ -902,14 +870,11 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_RD_RDS_ARRAY_CNT_RDS_ARRAY_CT__PRE 0x0 #define AUD_DEM_RD_RDS_ARRAY_CNT_RDS_ARRAY_CT_RDS_DATA_NOT_VALID 0xFFF - #define AUD_DEM_RD_RDS_DATA__A 0x1020210 #define AUD_DEM_RD_RDS_DATA__W 12 #define AUD_DEM_RD_RDS_DATA__M 0xFFF #define AUD_DEM_RD_RDS_DATA__PRE 0x0 - - #define AUD_DSP_WR_FM_PRESC__A 0x105000E #define AUD_DSP_WR_FM_PRESC__W 16 #define AUD_DSP_WR_FM_PRESC__M 0xFFFF @@ -927,7 +892,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_WR_FM_PRESC_FM_AM_PRESC_180_KHZ_FM_DEVIATION 0x1300 #define AUD_DSP_WR_FM_PRESC_FM_AM_PRESC_380_KHZ_FM_DEVIATION 0x900 - #define AUD_DSP_WR_NICAM_PRESC__A 0x1050010 #define AUD_DSP_WR_NICAM_PRESC__W 16 #define AUD_DSP_WR_NICAM_PRESC__M 0xFFFF @@ -1030,9 +994,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_WR_QPEAK_MAT_QP_STEREO 0x20 #define AUD_DSP_WR_QPEAK_MAT_QP_MONO 0x30 - - - #define AUD_DSP_RD_QPEAK_L__A 0x1040019 #define AUD_DSP_RD_QPEAK_L__W 16 #define AUD_DSP_RD_QPEAK_L__M 0xFFFF @@ -1043,8 +1004,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_RD_QPEAK_R__M 0xFFFF #define AUD_DSP_RD_QPEAK_R__PRE 0x0 - - #define AUD_DSP_WR_BEEPER__A 0x1050014 #define AUD_DSP_WR_BEEPER__W 16 #define AUD_DSP_WR_BEEPER__M 0xFFFF @@ -1060,8 +1019,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_WR_BEEPER_BEEP_FREQUENCY__M 0x7F #define AUD_DSP_WR_BEEPER_BEEP_FREQUENCY__PRE 0x0 - - #define AUD_DEM_WR_I2S_CONFIG2__A 0x1030050 #define AUD_DEM_WR_I2S_CONFIG2__W 16 #define AUD_DEM_WR_I2S_CONFIG2__M 0xFFFF @@ -1109,8 +1066,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_32 0x0 #define AUD_DEM_WR_I2S_CONFIG2_I2S_WORD_LEN_BIT_16 0x1 - - #define AUD_DSP_WR_I2S_OUT_FS__A 0x105002A #define AUD_DSP_WR_I2S_OUT_FS__W 16 #define AUD_DSP_WR_I2S_OUT_FS__M 0xFFFF @@ -1149,8 +1104,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_WR_AV_SYNC_AV_STD_SEL_NTSC 0x2 #define AUD_DSP_WR_AV_SYNC_AV_STD_SEL_MONOCHROME 0x3 - - #define AUD_DSP_RD_STATUS2__A 0x104007B #define AUD_DSP_RD_STATUS2__W 16 #define AUD_DSP_RD_STATUS2__M 0xFFFF @@ -1183,9 +1136,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_RD_XFP_FW_FP_FW_REV__M 0xFFFF #define AUD_DSP_RD_XFP_FW_FP_FW_REV__PRE 0x42 - - - #define AUD_DEM_WR_DCO_B_HI__A 0x103009B #define AUD_DEM_WR_DCO_B_HI__W 16 #define AUD_DEM_WR_DCO_B_HI__M 0xFFFF @@ -1255,8 +1205,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_WR_CM_B_THRSHLD_CM_B_THLD__M 0xFFF #define AUD_DEM_WR_CM_B_THRSHLD_CM_B_THLD__PRE 0x2A - - #define AUD_DEM_RD_NIC_C_AD_BITS__A 0x1020023 #define AUD_DEM_RD_NIC_C_AD_BITS__W 16 #define AUD_DEM_RD_NIC_C_AD_BITS__M 0xFFFF @@ -1314,9 +1262,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_RD_NIC_ERROR_RATE_ERROR_RATE__M 0xFFF #define AUD_DEM_RD_NIC_ERROR_RATE_ERROR_RATE__PRE 0x0 - - - #define AUD_DEM_WR_FM_DEEMPH__A 0x103000F #define AUD_DEM_WR_FM_DEEMPH__W 16 #define AUD_DEM_WR_FM_DEEMPH__M 0xFFFF @@ -1325,7 +1270,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_WR_FM_DEEMPH_75US 0x1 #define AUD_DEM_WR_FM_DEEMPH_OFF 0x3F - #define AUD_DEM_WR_FM_MATRIX__A 0x103006F #define AUD_DEM_WR_FM_MATRIX__W 16 #define AUD_DEM_WR_FM_MATRIX__M 0xFFFF @@ -1336,8 +1280,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_WR_FM_MATRIX_SOUND_A 0x3 #define AUD_DEM_WR_FM_MATRIX_SOUND_B 0x4 - - #define AUD_DSP_RD_FM_IDENT_VALUE__A 0x1040018 #define AUD_DSP_RD_FM_IDENT_VALUE__W 16 #define AUD_DSP_RD_FM_IDENT_VALUE__M 0xFFFF @@ -1368,8 +1310,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_RD_FM_DC_LEVEL_B_FM_DC_LEV_B__M 0xFFFF #define AUD_DSP_RD_FM_DC_LEVEL_B_FM_DC_LEV_B__PRE 0x0 - - #define AUD_DEM_WR_FM_DC_NOTCH_SW__A 0x1030017 #define AUD_DEM_WR_FM_DC_NOTCH_SW__W 16 #define AUD_DEM_WR_FM_DC_NOTCH_SW__M 0xFFFF @@ -1382,9 +1322,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DEM_WR_FM_DC_NOTCH_SW_FM_DC_NO_SW_ON 0x0 #define AUD_DEM_WR_FM_DC_NOTCH_SW_FM_DC_NO_SW_OFF 0x3F - - - #define AUD_DSP_WR_SYNC_OUT__A 0x1050026 #define AUD_DSP_WR_SYNC_OUT__W 16 #define AUD_DSP_WR_SYNC_OUT__M 0xFFFF @@ -1392,8 +1329,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_DSP_WR_SYNC_OUT_OFF 0x0 #define AUD_DSP_WR_SYNC_OUT_SYNCHRONOUS 0x1 - - #define AUD_XFP_DRAM_1K__A 0x1060000 #define AUD_XFP_DRAM_1K__W 16 #define AUD_XFP_DRAM_1K__M 0xFFFF @@ -1403,8 +1338,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_XFP_DRAM_1K_D__M 0xFFFF #define AUD_XFP_DRAM_1K_D__PRE 0x0 - - #define AUD_XFP_PRAM_4K__A 0x1070000 #define AUD_XFP_PRAM_4K__W 16 #define AUD_XFP_PRAM_4K__M 0xFFFF @@ -1414,8 +1347,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_XFP_PRAM_4K_D__M 0xFFFF #define AUD_XFP_PRAM_4K_D__PRE 0x0 - - #define AUD_XDFP_DRAM_1K__A 0x1080000 #define AUD_XDFP_DRAM_1K__W 16 #define AUD_XDFP_DRAM_1K__M 0xFFFF @@ -1425,8 +1356,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_XDFP_DRAM_1K_D__M 0xFFFF #define AUD_XDFP_DRAM_1K_D__PRE 0x0 - - #define AUD_XDFP_PRAM_4K__A 0x1090000 #define AUD_XDFP_PRAM_4K__W 16 #define AUD_XDFP_PRAM_4K__M 0xFFFF @@ -1436,10 +1365,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define AUD_XDFP_PRAM_4K_D__M 0xFFFF #define AUD_XDFP_PRAM_4K_D__PRE 0x0 - - - - #define FEC_COMM_EXEC__A 0x2400000 #define FEC_COMM_EXEC__W 2 #define FEC_COMM_EXEC__M 0x3 @@ -1482,8 +1407,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_COMM_INT_STM__M 0xFFFF #define FEC_COMM_INT_STM__PRE 0x0 - - #define FEC_TOP_COMM_EXEC__A 0x2410000 #define FEC_TOP_COMM_EXEC__W 2 #define FEC_TOP_COMM_EXEC__M 0x3 @@ -1492,7 +1415,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_TOP_COMM_EXEC_ACTIVE 0x1 #define FEC_TOP_COMM_EXEC_HOLD 0x2 - #define FEC_TOP_ANNEX__A 0x2410010 #define FEC_TOP_ANNEX__W 2 #define FEC_TOP_ANNEX__M 0x3 @@ -1502,8 +1424,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_TOP_ANNEX_C 0x2 #define FEC_TOP_ANNEX_D 0x3 - - #define FEC_DI_COMM_EXEC__A 0x2420000 #define FEC_DI_COMM_EXEC__W 2 #define FEC_DI_COMM_EXEC__M 0x3 @@ -1574,7 +1494,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_DI_COMM_INT_STM_TIMEOUT_INT__M 0x2 #define FEC_DI_COMM_INT_STM_TIMEOUT_INT__PRE 0x0 - #define FEC_DI_STATUS__A 0x2420010 #define FEC_DI_STATUS__W 1 #define FEC_DI_STATUS__M 0x1 @@ -1599,7 +1518,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_DI_MODE_IGNORE_TIMEOUT__M 0x4 #define FEC_DI_MODE_IGNORE_TIMEOUT__PRE 0x0 - #define FEC_DI_CONTROL_WORD__A 0x2420012 #define FEC_DI_CONTROL_WORD__W 4 #define FEC_DI_CONTROL_WORD__M 0xF @@ -1620,8 +1538,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_DI_TIMEOUT_HI__M 0xFF #define FEC_DI_TIMEOUT_HI__PRE 0xA - - #define FEC_RS_COMM_EXEC__A 0x2430000 #define FEC_RS_COMM_EXEC__W 2 #define FEC_RS_COMM_EXEC__M 0x3 @@ -1786,8 +1702,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_RS_NR_FAILURES_EXP__M 0xF000 #define FEC_RS_NR_FAILURES_EXP__PRE 0x0 - - #define FEC_OC_COMM_EXEC__A 0x2440000 #define FEC_OC_COMM_EXEC__W 2 #define FEC_OC_COMM_EXEC__M 0x3 @@ -2001,7 +1915,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_OC_DPR_MODE_NOSYNC_ENABLE__M 0x2 #define FEC_OC_DPR_MODE_NOSYNC_ENABLE__PRE 0x0 - #define FEC_OC_DPR_UNLOCK__A 0x2440013 #define FEC_OC_DPR_UNLOCK__W 1 #define FEC_OC_DPR_UNLOCK__M 0x1 @@ -2026,7 +1939,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_OC_DTO_MODE_OFFSET_ENABLE__M 0x4 #define FEC_OC_DTO_MODE_OFFSET_ENABLE__PRE 0x0 - #define FEC_OC_DTO_PERIOD__A 0x2440015 #define FEC_OC_DTO_PERIOD__W 8 #define FEC_OC_DTO_PERIOD__M 0xFF @@ -2701,22 +2613,12 @@ extern RegisterTableInfo_t drxj_map_info[]; #define FEC_OC_OCR_GRAB_RD5_DATA__M 0x3FF #define FEC_OC_OCR_GRAB_RD5_DATA__PRE 0x0 - - #define FEC_DI_RAM__A 0x2450000 - - #define FEC_RS_RAM__A 0x2460000 - - #define FEC_OC_RAM__A 0x2470000 - - - - #define IQM_COMM_EXEC__A 0x1800000 #define IQM_COMM_EXEC__W 2 #define IQM_COMM_EXEC__M 0x3 @@ -2757,8 +2659,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_COMM_INT_STM__M 0xFFFF #define IQM_COMM_INT_STM__PRE 0x0 - - #define IQM_FS_COMM_EXEC__A 0x1820000 #define IQM_FS_COMM_EXEC__W 2 #define IQM_FS_COMM_EXEC__M 0x3 @@ -2809,8 +2709,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_FS_ADJ_SEL_QAM 0x1 #define IQM_FS_ADJ_SEL_VSB 0x2 - - #define IQM_FD_COMM_EXEC__A 0x1830000 #define IQM_FD_COMM_EXEC__W 2 #define IQM_FD_COMM_EXEC__M 0x3 @@ -2836,8 +2734,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_FD_COMM_MB_OBS_OBS_OFF 0x0 #define IQM_FD_COMM_MB_OBS_OBS_ON 0x2 - - #define IQM_RC_COMM_EXEC__A 0x1840000 #define IQM_RC_COMM_EXEC__W 2 #define IQM_RC_COMM_EXEC__M 0x3 @@ -2898,7 +2794,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_RC_CROUT_ENA_ENA__M 0x1 #define IQM_RC_CROUT_ENA_ENA__PRE 0x0 - #define IQM_RC_STRETCH__A 0x1840016 #define IQM_RC_STRETCH__W 5 #define IQM_RC_STRETCH__M 0x1F @@ -2907,8 +2802,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_RC_STRETCH_QAM_B_256 0x1C #define IQM_RC_STRETCH_ATV 0xF - - #define IQM_RT_COMM_EXEC__A 0x1850000 #define IQM_RT_COMM_EXEC__W 2 #define IQM_RT_COMM_EXEC__M 0x3 @@ -2953,7 +2846,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_RT_ACTIVE_ACTIVE_CR_ATV_CR_OFF 0x0 #define IQM_RT_ACTIVE_ACTIVE_CR_ATV_CR_ON 0x2 - #define IQM_RT_LO_INCR__A 0x1850011 #define IQM_RT_LO_INCR__W 12 #define IQM_RT_LO_INCR__M 0xFFF @@ -2978,7 +2870,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_RT_ROT_BP_ROT_BPF__M 0x2 #define IQM_RT_ROT_BP_ROT_BPF__PRE 0x0 - #define IQM_RT_LP_BP__A 0x1850013 #define IQM_RT_LP_BP__W 1 #define IQM_RT_LP_BP__M 0x1 @@ -2989,8 +2880,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_RT_DELAY__M 0x7F #define IQM_RT_DELAY__PRE 0x45 - - #define IQM_CF_COMM_EXEC__A 0x1860000 #define IQM_CF_COMM_EXEC__W 2 #define IQM_CF_COMM_EXEC__M 0x3 @@ -3097,7 +2986,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_CF_OUT_ENA_VSB__M 0x4 #define IQM_CF_OUT_ENA_VSB__PRE 0x0 - #define IQM_CF_ADJ_SEL__A 0x1860013 #define IQM_CF_ADJ_SEL__W 2 #define IQM_CF_ADJ_SEL__M 0x3 @@ -3353,8 +3241,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_CF_TAP_IM27__M 0x7FF #define IQM_CF_TAP_IM27__PRE 0x2 - - #define IQM_AF_COMM_EXEC__A 0x1870000 #define IQM_AF_COMM_EXEC__W 2 #define IQM_AF_COMM_EXEC__M 0x3 @@ -3441,7 +3327,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_COMM_INT_STM_SNS_INT_STA__M 0x2 #define IQM_AF_COMM_INT_STM_SNS_INT_STA__PRE 0x0 - #define IQM_AF_FDB_SEL__A 0x1870010 #define IQM_AF_FDB_SEL__W 1 #define IQM_AF_FDB_SEL__M 0x1 @@ -3470,7 +3355,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_CLKNEG_CLKNEGDATA_CLK_ADC_DATA_POS 0x0 #define IQM_AF_CLKNEG_CLKNEGDATA_CLK_ADC_DATA_NEG 0x2 - #define IQM_AF_MON_IN_MUX__A 0x1870013 #define IQM_AF_MON_IN_MUX__W 2 #define IQM_AF_MON_IN_MUX__M 0x3 @@ -3573,7 +3457,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_ADC_CONF_BITREVERSE_NSSR_RFAGC_DAC_NORMAL 0x0 #define IQM_AF_ADC_CONF_BITREVERSE_NSSR_RFAGC_DAC_BITREVERSED 0x8 - #define IQM_AF_CLP_CLIP__A 0x1870022 #define IQM_AF_CLP_CLIP__W 16 #define IQM_AF_CLP_CLIP__M 0xFFFF @@ -3587,7 +3470,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_CLP_LEN_QAM_B_256 0x400 #define IQM_AF_CLP_LEN_ATV 0x0 - #define IQM_AF_CLP_TH__A 0x1870024 #define IQM_AF_CLP_TH__W 9 #define IQM_AF_CLP_TH__M 0x1FF @@ -3596,7 +3478,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_CLP_TH_QAM_B_256 0x80 #define IQM_AF_CLP_TH_ATV 0x1C0 - #define IQM_AF_DCF_BYPASS__A 0x1870025 #define IQM_AF_DCF_BYPASS__W 1 #define IQM_AF_DCF_BYPASS__M 0x1 @@ -3604,7 +3485,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_DCF_BYPASS_ACTIVE 0x0 #define IQM_AF_DCF_BYPASS_BYPASS 0x1 - #define IQM_AF_SNS_LEN__A 0x1870026 #define IQM_AF_SNS_LEN__W 16 #define IQM_AF_SNS_LEN__M 0xFFFF @@ -3613,7 +3493,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_SNS_LEN_QAM_B_256 0x400 #define IQM_AF_SNS_LEN_ATV 0x0 - #define IQM_AF_SNS_SENSE__A 0x1870027 #define IQM_AF_SNS_SENSE__W 16 #define IQM_AF_SNS_SENSE__M 0xFFFF @@ -3699,7 +3578,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_STDBY_STDBY_TAGC_RF_A2_ACTIVE 0x20 #define IQM_AF_STDBY_STDBY_TAGC_RF_A2_STANDBY 0x0 - #define IQM_AF_AMUX__A 0x187002D #define IQM_AF_AMUX__W 2 #define IQM_AF_AMUX__M 0x3 @@ -3710,8 +3588,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_AF_TST_AFEMAIN__M 0xFF #define IQM_AF_TST_AFEMAIN__PRE 0x0 - - #define IQM_RT_RAM__A 0x1880000 #define IQM_RT_RAM_DLY__B 0 @@ -3719,10 +3595,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define IQM_RT_RAM_DLY__M 0x1FFF #define IQM_RT_RAM_DLY__PRE 0x0 - - - - #define ORX_COMM_EXEC__A 0x2000000 #define ORX_COMM_EXEC__W 2 #define ORX_COMM_EXEC__M 0x3 @@ -3764,7 +3636,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_COMM_INT_REQ_NSU_REQ__M 0x10 #define ORX_COMM_INT_REQ_NSU_REQ__PRE 0x0 - #define ORX_COMM_INT_STA__A 0x2000005 #define ORX_COMM_INT_STA__W 16 #define ORX_COMM_INT_STA__M 0xFFFF @@ -3778,8 +3649,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_COMM_INT_STM__M 0xFFFF #define ORX_COMM_INT_STM__PRE 0x0 - - #define ORX_TOP_COMM_EXEC__A 0x2010000 #define ORX_TOP_COMM_EXEC__W 2 #define ORX_TOP_COMM_EXEC__M 0x3 @@ -3788,7 +3657,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_TOP_COMM_EXEC_ACTIVE 0x1 #define ORX_TOP_COMM_EXEC_HOLD 0x2 - #define ORX_TOP_COMM_KEY__A 0x201000F #define ORX_TOP_COMM_KEY__W 16 #define ORX_TOP_COMM_KEY__M 0xFFFF @@ -3827,8 +3695,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_TOP_AIF_CTRL_W_INV_MSB_NO_MSB_INVERSION_ADC 0x0 #define ORX_TOP_AIF_CTRL_W_INV_MSB_MSB_INVERSION_ADC 0x4 - - #define ORX_FWP_COMM_EXEC__A 0x2020000 #define ORX_FWP_COMM_EXEC__W 2 #define ORX_FWP_COMM_EXEC__M 0x3 @@ -3864,7 +3730,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_FWP_COMM_MB_OBS_MUX__M 0xE0 #define ORX_FWP_COMM_MB_OBS_MUX__PRE 0x0 - #define ORX_FWP_AAG_LEN_W__A 0x2020010 #define ORX_FWP_AAG_LEN_W__W 16 #define ORX_FWP_AAG_LEN_W__M 0xFFFF @@ -3893,7 +3758,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_FWP_PFI_A_W_RATE_1544KBPS 0xA4 #define ORX_FWP_PFI_A_W_RATE_3088KBPS 0xC0 - #define ORX_FWP_PFI_B_W__A 0x2020015 #define ORX_FWP_PFI_B_W__W 8 #define ORX_FWP_PFI_B_W__M 0xFF @@ -3902,7 +3766,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_FWP_PFI_B_W_RATE_1544KBPS 0x94 #define ORX_FWP_PFI_B_W_RATE_3088KBPS 0xB0 - #define ORX_FWP_PFI_C_W__A 0x2020016 #define ORX_FWP_PFI_C_W__W 8 #define ORX_FWP_PFI_C_W__M 0xFF @@ -3911,7 +3774,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_FWP_PFI_C_W_RATE_1544KBPS 0x64 #define ORX_FWP_PFI_C_W_RATE_3088KBPS 0x50 - #define ORX_FWP_KR1_AMP_R__A 0x2020017 #define ORX_FWP_KR1_AMP_R__W 9 #define ORX_FWP_KR1_AMP_R__M 0x1FF @@ -3936,7 +3798,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_FWP_SRC_DGN_W_EXP__M 0xF000 #define ORX_FWP_SRC_DGN_W_EXP__PRE 0x0 - #define ORX_FWP_NYQ_ADR_W__A 0x202001A #define ORX_FWP_NYQ_ADR_W__W 5 #define ORX_FWP_NYQ_ADR_W__M 0x1F @@ -3952,8 +3813,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_FWP_IQM_FRQ_W__M 0xFFFF #define ORX_FWP_IQM_FRQ_W__PRE 0x4301 - - #define ORX_EQU_COMM_EXEC__A 0x2030000 #define ORX_EQU_COMM_EXEC__W 2 #define ORX_EQU_COMM_EXEC__M 0x3 @@ -4034,7 +3893,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_COMM_INT_STM_FBF_READ__M 0x2 #define ORX_EQU_COMM_INT_STM_FBF_READ__PRE 0x0 - #define ORX_EQU_FFF_SCL_W__A 0x2030010 #define ORX_EQU_FFF_SCL_W__W 1 #define ORX_EQU_FFF_SCL_W__M 0x1 @@ -4042,7 +3900,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_FFF_SCL_W_SCALE_GAIN_1 0x0 #define ORX_EQU_FFF_SCL_W_SCALE_GAIN_2 0x1 - #define ORX_EQU_FFF_UPD_W__A 0x2030011 #define ORX_EQU_FFF_UPD_W__W 1 #define ORX_EQU_FFF_UPD_W__M 0x1 @@ -4050,7 +3907,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_FFF_UPD_W_NO_UPDATE 0x0 #define ORX_EQU_FFF_UPD_W_LMS_UPDATE 0x1 - #define ORX_EQU_FFF_STP_W__A 0x2030012 #define ORX_EQU_FFF_STP_W__W 3 #define ORX_EQU_FFF_STP_W__M 0x7 @@ -4183,7 +4039,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_MXB_SEL_W_UNDECIDED_SYMBOLS 0x0 #define ORX_EQU_MXB_SEL_W_DECIDED_SYMBOLS 0x1 - #define ORX_EQU_FBF_UPD_W__A 0x203002C #define ORX_EQU_FBF_UPD_W__W 1 #define ORX_EQU_FBF_UPD_W__M 0x1 @@ -4191,7 +4046,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_FBF_UPD_W_NO_UPDATE 0x0 #define ORX_EQU_FBF_UPD_W_LMS_UPDATE 0x1 - #define ORX_EQU_FBF_STP_W__A 0x203002D #define ORX_EQU_FBF_STP_W__W 3 #define ORX_EQU_FBF_STP_W__M 0x7 @@ -4274,7 +4128,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_ERR_SEL_W_CMA_ERROR 0x0 #define ORX_EQU_ERR_SEL_W_DDA_ERROR 0x1 - #define ORX_EQU_ERR_TIS_W__A 0x203003D #define ORX_EQU_ERR_TIS_W__W 1 #define ORX_EQU_ERR_TIS_W__M 0x1 @@ -4282,7 +4135,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_ERR_TIS_W_CMA_SIGNALS 0x0 #define ORX_EQU_ERR_TIS_W_DDA_SIGNALS 0x1 - #define ORX_EQU_ERR_EDI_R__A 0x203003E #define ORX_EQU_ERR_EDI_R__W 5 #define ORX_EQU_ERR_EDI_R__M 0x1F @@ -4318,8 +4170,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_EQU_SYN_LEN_W__M 0xFFFF #define ORX_EQU_SYN_LEN_W__PRE 0x0 - - #define ORX_DDC_COMM_EXEC__A 0x2040000 #define ORX_DDC_COMM_EXEC__W 2 #define ORX_DDC_COMM_EXEC__M 0x3 @@ -4435,8 +4285,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_DDC_OFO_SET_W_DISABLE__M 0x8000 #define ORX_DDC_OFO_SET_W_DISABLE__PRE 0x0 - - #define ORX_CON_COMM_EXEC__A 0x2050000 #define ORX_CON_COMM_EXEC__W 2 #define ORX_CON_COMM_EXEC__M 0x3 @@ -4480,7 +4328,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_CON_RST_W_KRP__M 0x8 #define ORX_CON_RST_W_KRP__PRE 0x0 - #define ORX_CON_CPH_PHI_R__A 0x2050012 #define ORX_CON_CPH_PHI_R__W 16 #define ORX_CON_CPH_PHI_R__M 0xFFFF @@ -4540,7 +4387,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_CON_CPH_WLC_W_WLIM__M 0xF0 #define ORX_CON_CPH_WLC_W_WLIM__PRE 0x80 - #define ORX_CON_CPH_DLY_W__A 0x205001A #define ORX_CON_CPH_DLY_W__W 3 #define ORX_CON_CPH_DLY_W__M 0x7 @@ -4586,8 +4432,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_CON_CTI_TAT_W__M 0xF #define ORX_CON_CTI_TAT_W__PRE 0x3 - - #define ORX_NSU_COMM_EXEC__A 0x2060000 #define ORX_NSU_COMM_EXEC__W 2 #define ORX_NSU_COMM_EXEC__M 0x3 @@ -4673,7 +4517,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_OFF 0x0 #define ORX_NSU_AOX_STDBY_W_STDBYFLT_A2_ON 0x80 - #define ORX_NSU_AOX_LOFRQ_W__A 0x2060011 #define ORX_NSU_AOX_LOFRQ_W__W 16 #define ORX_NSU_AOX_LOFRQ_W__M 0xFFFF @@ -4698,7 +4541,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_NSU_AOX_LOMDE_W_PLL_DIV__M 0xC000 #define ORX_NSU_AOX_LOMDE_W_PLL_DIV__PRE 0x0 - #define ORX_NSU_AOX_LOPOW_W__A 0x2060013 #define ORX_NSU_AOX_LOPOW_W__W 2 #define ORX_NSU_AOX_LOPOW_W__M 0x3 @@ -4708,7 +4550,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_NSU_AOX_LOPOW_W_POWER_MINUS10DB 0x2 #define ORX_NSU_AOX_LOPOW_W_POWER_MINUS15DB 0x3 - #define ORX_NSU_AOX_STHR_W__A 0x2060014 #define ORX_NSU_AOX_STHR_W__W 5 #define ORX_NSU_AOX_STHR_W__M 0x1F @@ -4748,8 +4589,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_NSU_NSS_BITSWAP_W_BITSWAP_NS2_BP__M 0x4 #define ORX_NSU_NSS_BITSWAP_W_BITSWAP_NS2_BP__PRE 0x0 - - #define ORX_TST_COMM_EXEC__A 0x23F0000 #define ORX_TST_COMM_EXEC__W 2 #define ORX_TST_COMM_EXEC__M 0x3 @@ -4758,16 +4597,11 @@ extern RegisterTableInfo_t drxj_map_info[]; #define ORX_TST_COMM_EXEC_ACTIVE 0x1 #define ORX_TST_COMM_EXEC_HOLD 0x2 - #define ORX_TST_AOX_TST_W__A 0x23F0010 #define ORX_TST_AOX_TST_W__W 8 #define ORX_TST_AOX_TST_W__M 0xFF #define ORX_TST_AOX_TST_W__PRE 0x0 - - - - #define QAM_COMM_EXEC__A 0x1400000 #define QAM_COMM_EXEC__W 2 #define QAM_COMM_EXEC__M 0x3 @@ -4818,8 +4652,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_COMM_INT_STM__M 0xFFFF #define QAM_COMM_INT_STM__PRE 0x0 - - #define QAM_TOP_COMM_EXEC__A 0x1410000 #define QAM_TOP_COMM_EXEC__W 2 #define QAM_TOP_COMM_EXEC__M 0x3 @@ -4828,7 +4660,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_TOP_COMM_EXEC_ACTIVE 0x1 #define QAM_TOP_COMM_EXEC_HOLD 0x2 - #define QAM_TOP_ANNEX__A 0x1410010 #define QAM_TOP_ANNEX__W 2 #define QAM_TOP_ANNEX__M 0x3 @@ -4838,7 +4669,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_TOP_ANNEX_C 0x2 #define QAM_TOP_ANNEX_D 0x3 - #define QAM_TOP_CONSTELLATION__A 0x1410011 #define QAM_TOP_CONSTELLATION__W 3 #define QAM_TOP_CONSTELLATION__M 0x7 @@ -4852,8 +4682,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_TOP_CONSTELLATION_QAM128 0x6 #define QAM_TOP_CONSTELLATION_QAM256 0x7 - - #define QAM_FQ_COMM_EXEC__A 0x1420000 #define QAM_FQ_COMM_EXEC__W 2 #define QAM_FQ_COMM_EXEC__M 0x3 @@ -4885,7 +4713,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_FQ_MODE_TAPDRAIN__PRE 0x0 #define QAM_FQ_MODE_TAPDRAIN_DRAIN 0x4 - #define QAM_FQ_MU_FACTOR__A 0x1420011 #define QAM_FQ_MU_FACTOR__W 3 #define QAM_FQ_MU_FACTOR__M 0x7 @@ -5395,8 +5222,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_FQ_TAP_IM_EL23_TAP__M 0xFFF #define QAM_FQ_TAP_IM_EL23_TAP__PRE 0x2 - - #define QAM_SL_COMM_EXEC__A 0x1430000 #define QAM_SL_COMM_EXEC__W 2 #define QAM_SL_COMM_EXEC__M 0x3 @@ -5529,7 +5354,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_SL_MODE_TILT_COMP__M 0x400 #define QAM_SL_MODE_TILT_COMP__PRE 0x0 - #define QAM_SL_K_FACTOR__A 0x1430011 #define QAM_SL_K_FACTOR__W 4 #define QAM_SL_K_FACTOR__M 0xF @@ -5559,7 +5383,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_SL_MEDIAN_FAST__M 0x2000 #define QAM_SL_MEDIAN_FAST__PRE 0x0 - #define QAM_SL_ALPHA__A 0x1430013 #define QAM_SL_ALPHA__W 3 #define QAM_SL_ALPHA__M 0x7 @@ -5589,14 +5412,11 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_SL_MEDIAN_ERROR_MEDIAN_ERR__M 0x3FF #define QAM_SL_MEDIAN_ERROR_MEDIAN_ERR__PRE 0x0 - #define QAM_SL_ERR_POWER__A 0x1430017 #define QAM_SL_ERR_POWER__W 16 #define QAM_SL_ERR_POWER__M 0xFFFF #define QAM_SL_ERR_POWER__PRE 0x0 - - #define QAM_DQ_COMM_EXEC__A 0x1440000 #define QAM_DQ_COMM_EXEC__W 2 #define QAM_DQ_COMM_EXEC__M 0x3 @@ -5637,7 +5457,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_DQ_MODE_FB_DFB 0x10 #define QAM_DQ_MODE_FB_TRELLIS 0x18 - #define QAM_DQ_MU_FACTOR__A 0x1440011 #define QAM_DQ_MU_FACTOR__W 3 #define QAM_DQ_MU_FACTOR__M 0x7 @@ -6311,8 +6130,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_DQ_TAP_IM_EL27_TAP__M 0xFFF #define QAM_DQ_TAP_IM_EL27_TAP__PRE 0x2 - - #define QAM_LC_COMM_EXEC__A 0x1450000 #define QAM_LC_COMM_EXEC__W 2 #define QAM_LC_COMM_EXEC__M 0x3 @@ -6768,8 +6585,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_LC_PHASE_ERROR_SIZE__M 0x3FF #define QAM_LC_PHASE_ERROR_SIZE__PRE 0x0 - - #define QAM_VD_COMM_EXEC__A 0x1460000 #define QAM_VD_COMM_EXEC__W 2 #define QAM_VD_COMM_EXEC__M 0x3 @@ -6890,7 +6705,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_VD_TRACEBACK_DEPTH_LENGTH__M 0x1F #define QAM_VD_TRACEBACK_DEPTH_LENGTH__PRE 0x10 - #define QAM_VD_UNLOCK__A 0x1460015 #define QAM_VD_UNLOCK__W 1 #define QAM_VD_UNLOCK__M 0x1 @@ -6970,8 +6784,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_VD_RELOCK_COUNT_COUNT__M 0xFF #define QAM_VD_RELOCK_COUNT_COUNT__PRE 0x0 - - #define QAM_SY_COMM_EXEC__A 0x1470000 #define QAM_SY_COMM_EXEC__W 2 #define QAM_SY_COMM_EXEC__M 0x3 @@ -7078,7 +6890,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_SY_STATUS_SYNC_STATE__M 0x3 #define QAM_SY_STATUS_SYNC_STATE__PRE 0x0 - #define QAM_SY_TIMEOUT__A 0x1470011 #define QAM_SY_TIMEOUT__W 16 #define QAM_SY_TIMEOUT__M 0xFFFF @@ -7113,22 +6924,12 @@ extern RegisterTableInfo_t drxj_map_info[]; #define QAM_SY_CONTROL_WORD_CTRL_WORD__M 0xF #define QAM_SY_CONTROL_WORD_CTRL_WORD__PRE 0x0 - - #define QAM_VD_ISS_RAM__A 0x1480000 - - #define QAM_VD_QSS_RAM__A 0x1490000 - - #define QAM_VD_SYM_RAM__A 0x14A0000 - - - - #define SCU_COMM_EXEC__A 0x800000 #define SCU_COMM_EXEC__W 2 #define SCU_COMM_EXEC__M 0x3 @@ -7147,8 +6948,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_COMM_STATE_COMM_STATE__M 0xFFFF #define SCU_COMM_STATE_COMM_STATE__PRE 0x0 - - #define SCU_TOP_COMM_EXEC__A 0x810000 #define SCU_TOP_COMM_EXEC__W 2 #define SCU_TOP_COMM_EXEC__M 0x3 @@ -7157,7 +6956,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_TOP_COMM_EXEC_ACTIVE 0x1 #define SCU_TOP_COMM_EXEC_HOLD 0x2 - #define SCU_TOP_COMM_STATE__A 0x810001 #define SCU_TOP_COMM_STATE__W 16 #define SCU_TOP_COMM_STATE__M 0xFFFF @@ -7181,8 +6979,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_TOP_MWAIT_CTR_READY_DIS_NMI_ON 0x0 #define SCU_TOP_MWAIT_CTR_READY_DIS_NMI_OFF 0x2 - - #define SCU_LOW_RAM__A 0x820000 #define SCU_LOW_RAM_LOW__B 0 @@ -7190,8 +6986,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_LOW_RAM_LOW__M 0xFFFF #define SCU_LOW_RAM_LOW__PRE 0x0 - - #define SCU_HIGH_RAM__A 0x830000 #define SCU_HIGH_RAM_HIGH__B 0 @@ -7199,11 +6993,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_HIGH_RAM_HIGH__M 0xFFFF #define SCU_HIGH_RAM_HIGH__PRE 0x0 - - - - - #define SCU_RAM_AGC_RF_MAX__A 0x831E96 #define SCU_RAM_AGC_RF_MAX__W 15 #define SCU_RAM_AGC_RF_MAX__M 0x7FFF @@ -7293,7 +7082,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_AGC_KI_RED_IAGC_RED__M 0x30 #define SCU_RAM_AGC_KI_RED_IAGC_RED__PRE 0x0 - #define SCU_RAM_AGC_KI_INNERGAIN_MIN__A 0x831E9F #define SCU_RAM_AGC_KI_INNERGAIN_MIN__W 16 #define SCU_RAM_AGC_KI_INNERGAIN_MIN__M 0xFFFF @@ -7353,7 +7141,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_AGC_KI_MAX_IF__M 0xF00 #define SCU_RAM_AGC_KI_MAX_IF__PRE 0x0 - #define SCU_RAM_AGC_CLP_SUM__A 0x831EA5 #define SCU_RAM_AGC_CLP_SUM__W 16 #define SCU_RAM_AGC_CLP_SUM__M 0xFFFF @@ -7561,7 +7348,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_AGC_CLP_CTRL_MODE_FAST_CLP_DEC_DEC_DISABLE 0x0 #define SCU_RAM_AGC_CLP_CTRL_MODE_FAST_CLP_DEC_DEC_ENABLE 0x4 - #define SCU_RAM_AGC_KI_MIN_RFGAIN__A 0x831EC9 #define SCU_RAM_AGC_KI_MIN_RFGAIN__W 16 #define SCU_RAM_AGC_KI_MIN_RFGAIN__M 0xFFFF @@ -7918,7 +7704,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ATV_BPC_KI_MIN_BPC_KI_MIN__M 0xFFF #define SCU_RAM_ATV_BPC_KI_MIN_BPC_KI_MIN__PRE 0x0 - #define SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__A 0x831F01 #define SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__W 16 #define SCU_RAM_ORX_RF_RX_FREQUENCY_VALUE__M 0xFFFF @@ -7937,7 +7722,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_REGSPEC 0xC0 #define SCU_RAM_ORX_RF_RX_DATA_RATE_3088KBPS_INVSPEC 0xC1 - #define SCU_RAM_ORX_SCU_STATE__A 0x831F03 #define SCU_RAM_ORX_SCU_STATE__W 8 #define SCU_RAM_ORX_SCU_STATE__M 0xFF @@ -7953,7 +7737,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ORX_SCU_STATE_EQT_HUNT 0x30 #define SCU_RAM_ORX_SCU_STATE_SYNC 0x40 - #define SCU_RAM_ORX_SCU_LOCK__A 0x831F04 #define SCU_RAM_ORX_SCU_LOCK__W 16 #define SCU_RAM_ORX_SCU_LOCK__M 0xFFFF @@ -7968,7 +7751,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ORX_TARGET_MODE_2048KBPS_SQRT 0x2 #define SCU_RAM_ORX_TARGET_MODE_2048KBPS_RO 0x3 - #define SCU_RAM_ORX_MER_MIN_DB__A 0x831F06 #define SCU_RAM_ORX_MER_MIN_DB__W 8 #define SCU_RAM_ORX_MER_MIN_DB__M 0xFF @@ -8117,7 +7899,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ORX_FREQ_GAIN_CORR_2048KBPS 0x80 #define SCU_RAM_ORX_FREQ_GAIN_CORR_3088KBPS 0xC0 - #define SCU_RAM_ORX_FRQ_OFFSET__A 0x831F23 #define SCU_RAM_ORX_FRQ_OFFSET__W 16 #define SCU_RAM_ORX_FRQ_OFFSET__M 0xFFFF @@ -8432,7 +8213,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ATV_AGC_MODE_MOD_WA_BP_MWA_ENABLE 0x0 #define SCU_RAM_ATV_AGC_MODE_MOD_WA_BP_MWA_DISABLE 0x80 - #define SCU_RAM_ATV_RSV_01__A 0x831F4E #define SCU_RAM_ATV_RSV_01__W 16 #define SCU_RAM_ATV_RSV_01__M 0xFFFF @@ -8496,7 +8276,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ATV_ACT_AMI_ACT_AMI__M 0x7FF #define SCU_RAM_ATV_ACT_AMI_ACT_AMI__PRE 0x0 - #define SCU_RAM_ATV_RSV_05__A 0x831F56 #define SCU_RAM_ATV_RSV_05__W 16 #define SCU_RAM_ATV_RSV_05__M 0xFFFF @@ -8556,7 +8335,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ATV_VID_GAIN_LO_VID_GAIN_LO__M 0xFF #define SCU_RAM_ATV_VID_GAIN_LO_VID_GAIN_LO__PRE 0x0 - #define SCU_RAM_ATV_RSV_13__A 0x831F60 #define SCU_RAM_ATV_RSV_13__W 16 #define SCU_RAM_ATV_RSV_13__M 0xFFFF @@ -8596,7 +8374,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_ATV_SIF_GAIN_SIF_GAIN__M 0x7FF #define SCU_RAM_ATV_SIF_GAIN_SIF_GAIN__PRE 0x0 - #define SCU_RAM_ATV_RSV_17__A 0x831F66 #define SCU_RAM_ATV_RSV_17__W 16 #define SCU_RAM_ATV_RSV_17__M 0xFFFF @@ -10086,7 +9863,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_VSB_CTL_MODE_VSB_CTL_MODE_MON_OFF 0x0 #define SCU_RAM_VSB_CTL_MODE_VSB_CTL_MODE_MON_ON 0x2 - #define SCU_RAM_VSB_NOTCH_THRESHOLD__A 0x831FD8 #define SCU_RAM_VSB_NOTCH_THRESHOLD__W 16 #define SCU_RAM_VSB_NOTCH_THRESHOLD__M 0xFFFF @@ -10271,7 +10047,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_LOCKED 0x8000 #define SCU_RAM_PARAM_1_RES_DEMOD_GET_LOCK_NEVER_LOCK 0xC000 - #define SCU_RAM_PARAM_0__A 0x831FFC #define SCU_RAM_PARAM_0__W 16 #define SCU_RAM_PARAM_0__M 0xFFFF @@ -10294,7 +10069,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_PARAM_0_RESULT_INVPAR 0xFFFD #define SCU_RAM_PARAM_0_RESULT_SIZE 0xFFFC - #define SCU_RAM_COMMAND__A 0x831FFD #define SCU_RAM_COMMAND__W 16 #define SCU_RAM_COMMAND__M 0xFFFF @@ -10385,10 +10159,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SCU_RAM_VERSION_LO_VER_PATCH_N1__M 0xF #define SCU_RAM_VERSION_LO_VER_PATCH_N1__PRE 0x0 - - - - #define SIO_COMM_EXEC__A 0x400000 #define SIO_COMM_EXEC__W 2 #define SIO_COMM_EXEC__M 0x3 @@ -10433,8 +10203,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_COMM_INT_STM__M 0xFFFF #define SIO_COMM_INT_STM__PRE 0x0 - - #define SIO_TOP_COMM_EXEC__A 0x410000 #define SIO_TOP_COMM_EXEC__W 2 #define SIO_TOP_COMM_EXEC__M 0x3 @@ -10443,14 +10211,12 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_TOP_COMM_EXEC_ACTIVE 0x1 #define SIO_TOP_COMM_EXEC_HOLD 0x2 - #define SIO_TOP_COMM_KEY__A 0x41000F #define SIO_TOP_COMM_KEY__W 16 #define SIO_TOP_COMM_KEY__M 0xFFFF #define SIO_TOP_COMM_KEY__PRE 0x0 #define SIO_TOP_COMM_KEY_KEY 0xFABA - #define SIO_TOP_JTAGID_LO__A 0x410012 #define SIO_TOP_JTAGID_LO__W 16 #define SIO_TOP_JTAGID_LO__M 0xFFFF @@ -10461,9 +10227,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_TOP_JTAGID_HI__M 0xFFFF #define SIO_TOP_JTAGID_HI__PRE 0x0 - - - #define SIO_HI_RA_RAM_S0_FLG_SMM__A 0x420010 #define SIO_HI_RA_RAM_S0_FLG_SMM__W 1 #define SIO_HI_RA_RAM_S0_FLG_SMM__M 0x1 @@ -10533,7 +10296,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_S0_ADDR_S0_SLV_ADDR__M 0xFFFF #define SIO_HI_RA_RAM_S0_ADDR_S0_SLV_ADDR__PRE 0x0 - #define SIO_HI_RA_RAM_S0_CRC__A 0x420017 #define SIO_HI_RA_RAM_S0_CRC__W 16 #define SIO_HI_RA_RAM_S0_CRC__M 0xFFFF @@ -10638,7 +10400,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_S1_ADDR_S1_SLV_ADDR__M 0xFFFF #define SIO_HI_RA_RAM_S1_ADDR_S1_SLV_ADDR__PRE 0x0 - #define SIO_HI_RA_RAM_S1_CRC__A 0x420027 #define SIO_HI_RA_RAM_S1_CRC__W 16 #define SIO_HI_RA_RAM_S1_CRC__M 0xFFFF @@ -10924,7 +10685,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_PAR_6_CFG_WDD__M 0xFF00 #define SIO_HI_RA_RAM_PAR_6_CFG_WDD__PRE 0x9500 - #define SIO_HI_RA_RAM_AB_TEMP__A 0x42006E #define SIO_HI_RA_RAM_AB_TEMP__W 16 #define SIO_HI_RA_RAM_AB_TEMP__M 0xFFFF @@ -10970,7 +10730,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET0_HI_MAP_OFF0__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET0_HI_MAP_OFF0__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY1__A 0x420072 #define SIO_HI_RA_RAM_VB_ENTRY1__W 16 #define SIO_HI_RA_RAM_VB_ENTRY1__M 0xFFFF @@ -10985,7 +10744,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET1_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET1_HI_MAP_OFF__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY2__A 0x420074 #define SIO_HI_RA_RAM_VB_ENTRY2__W 16 #define SIO_HI_RA_RAM_VB_ENTRY2__M 0xFFFF @@ -11000,7 +10758,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET2_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET2_HI_MAP_OFF__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY3__A 0x420076 #define SIO_HI_RA_RAM_VB_ENTRY3__W 16 #define SIO_HI_RA_RAM_VB_ENTRY3__M 0xFFFF @@ -11015,7 +10772,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET3_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET3_HI_MAP_OFF__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY4__A 0x420078 #define SIO_HI_RA_RAM_VB_ENTRY4__W 16 #define SIO_HI_RA_RAM_VB_ENTRY4__M 0xFFFF @@ -11030,7 +10786,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET4_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET4_HI_MAP_OFF__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY5__A 0x42007A #define SIO_HI_RA_RAM_VB_ENTRY5__W 16 #define SIO_HI_RA_RAM_VB_ENTRY5__M 0xFFFF @@ -11045,7 +10800,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET5_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET5_HI_MAP_OFF__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY6__A 0x42007C #define SIO_HI_RA_RAM_VB_ENTRY6__W 16 #define SIO_HI_RA_RAM_VB_ENTRY6__M 0xFFFF @@ -11060,7 +10814,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET6_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET6_HI_MAP_OFF__PRE 0x0 - #define SIO_HI_RA_RAM_VB_ENTRY7__A 0x42007E #define SIO_HI_RA_RAM_VB_ENTRY7__W 16 #define SIO_HI_RA_RAM_VB_ENTRY7__M 0xFFFF @@ -11075,8 +10828,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_RA_RAM_VB_OFFSET7_HI_MAP_OFF__M 0xFFFF #define SIO_HI_RA_RAM_VB_OFFSET7_HI_MAP_OFF__PRE 0x0 - - #define SIO_HI_IF_RAM_TRP_BPT_0__A 0x430000 #define SIO_HI_IF_RAM_TRP_BPT_0__W 12 #define SIO_HI_IF_RAM_TRP_BPT_0__M 0xFFF @@ -11098,8 +10849,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_IF_RAM_FUN_BASE__M 0xFFF #define SIO_HI_IF_RAM_FUN_BASE__PRE 0x0 - - #define SIO_HI_IF_COMM_EXEC__A 0x440000 #define SIO_HI_IF_COMM_EXEC__W 2 #define SIO_HI_IF_COMM_EXEC__M 0x3 @@ -11109,7 +10858,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_IF_COMM_EXEC_HOLD 0x2 #define SIO_HI_IF_COMM_EXEC_STEP 0x3 - #define SIO_HI_IF_COMM_STATE__A 0x440001 #define SIO_HI_IF_COMM_STATE__W 10 #define SIO_HI_IF_COMM_STATE__M 0x3FF @@ -11203,8 +10951,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_HI_IF_BPT_ADDR__M 0x3FF #define SIO_HI_IF_BPT_ADDR__PRE 0x2 - - #define SIO_CC_COMM_EXEC__A 0x450000 #define SIO_CC_COMM_EXEC__W 2 #define SIO_CC_COMM_EXEC__M 0x3 @@ -11240,7 +10986,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_CC_PLL_MODE_BYPASS_OFF 0x10 #define SIO_CC_PLL_MODE_BYPASS_ON 0x20 - #define SIO_CC_PLL_TEST__A 0x450011 #define SIO_CC_PLL_TEST__W 8 #define SIO_CC_PLL_TEST__M 0xFF @@ -11299,15 +11044,12 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_CC_SOFT_RST_OSC__M 0x2 #define SIO_CC_SOFT_RST_OSC__PRE 0x0 - #define SIO_CC_UPDATE__A 0x450017 #define SIO_CC_UPDATE__W 16 #define SIO_CC_UPDATE__M 0xFFFF #define SIO_CC_UPDATE__PRE 0x0 #define SIO_CC_UPDATE_KEY 0xFABA - - #define SIO_SA_COMM_EXEC__A 0x460000 #define SIO_SA_COMM_EXEC__W 2 #define SIO_SA_COMM_EXEC__M 0x3 @@ -11486,8 +11228,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_SA_RX_STATUS_BUFF_FULL__M 0x2 #define SIO_SA_RX_STATUS_BUFF_FULL__PRE 0x0 - - #define SIO_PDR_COMM_EXEC__A 0x7F0000 #define SIO_PDR_COMM_EXEC__W 2 #define SIO_PDR_COMM_EXEC__M 0x3 @@ -12308,11 +12048,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define SIO_PDR_SMA_TX_GPIO_FNC_SEL__M 0x3 #define SIO_PDR_SMA_TX_GPIO_FNC_SEL__PRE 0x0 - - - - - #define VSB_COMM_EXEC__A 0x1C00000 #define VSB_COMM_EXEC__W 2 #define VSB_COMM_EXEC__M 0x3 @@ -12321,7 +12056,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_COMM_EXEC_ACTIVE 0x1 #define VSB_COMM_EXEC_HOLD 0x2 - #define VSB_COMM_MB__A 0x1C00002 #define VSB_COMM_MB__W 16 #define VSB_COMM_MB__M 0xFFFF @@ -12336,7 +12070,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_COMM_INT_REQ_TOP_INT_REQ__M 0x1 #define VSB_COMM_INT_REQ_TOP_INT_REQ__PRE 0x0 - #define VSB_COMM_INT_STA__A 0x1C00005 #define VSB_COMM_INT_STA__W 16 #define VSB_COMM_INT_STA__M 0xFFFF @@ -12352,9 +12085,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_COMM_INT_STM__M 0xFFFF #define VSB_COMM_INT_STM__PRE 0x0 - - - #define VSB_TOP_COMM_EXEC__A 0x1C10000 #define VSB_TOP_COMM_EXEC__W 2 #define VSB_TOP_COMM_EXEC__M 0x3 @@ -12401,7 +12131,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_COMM_MB_MUX_OBS_VSB_DFE_1 0x1C0 #define VSB_TOP_COMM_MB_MUX_OBS_VSB_DFE_2 0x200 - #define VSB_TOP_COMM_INT_REQ__A 0x1C10003 #define VSB_TOP_COMM_INT_REQ__W 1 #define VSB_TOP_COMM_INT_REQ__M 0x1 @@ -12511,7 +12240,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_COMM_INT_STM_MERSER_STM__M 0x20 #define VSB_TOP_COMM_INT_STM_MERSER_STM__PRE 0x0 - #define VSB_TOP_CKGN1ACQ__A 0x1C10010 #define VSB_TOP_CKGN1ACQ__W 8 #define VSB_TOP_CKGN1ACQ__M 0xFF @@ -12591,7 +12319,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_SYNCCTRLWORD_AGCIGNOREFS__M 0x10 #define VSB_TOP_SYNCCTRLWORD_AGCIGNOREFS__PRE 0x0 - #define VSB_TOP_MAINSMUP__A 0x1C1001B #define VSB_TOP_MAINSMUP__W 8 #define VSB_TOP_MAINSMUP__M 0xFF @@ -12776,7 +12503,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_SMALL_NOTCH_CONTROL_SOFT_RESET__M 0x80 #define VSB_TOP_SMALL_NOTCH_CONTROL_SOFT_RESET__PRE 0x0 - #define VSB_TOP_TAPREADCYC__A 0x1C10025 #define VSB_TOP_TAPREADCYC__W 9 #define VSB_TOP_TAPREADCYC__M 0x1FF @@ -12826,7 +12552,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_LOCKSTATUS_DDMON__M 0x40 #define VSB_TOP_LOCKSTATUS_DDMON__PRE 0x0 - #define VSB_TOP_CTST__A 0x1C1002B #define VSB_TOP_CTST__W 4 #define VSB_TOP_CTST__M 0xF @@ -13481,7 +13206,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_PREEQAGCCTRL_PREEQAGCFRZ__M 0x10 #define VSB_TOP_PREEQAGCCTRL_PREEQAGCFRZ__PRE 0x10 - #define VSB_TOP_PREEQAGCPWRREFLVLHI__A 0x1C1003A #define VSB_TOP_PREEQAGCPWRREFLVLHI__W 8 #define VSB_TOP_PREEQAGCPWRREFLVLHI__M 0xFF @@ -13536,7 +13260,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_BEDETCTRL_BYPASS_DMP__M 0x100 #define VSB_TOP_BEDETCTRL_BYPASS_DMP__PRE 0x100 - #define VSB_TOP_LBAGCREFLVL__A 0x1C1003E #define VSB_TOP_LBAGCREFLVL__W 12 #define VSB_TOP_LBAGCREFLVL__M 0xFFF @@ -13621,7 +13344,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_AGC_TRUNCCTRL_TRUNC_EN__M 0x8 #define VSB_TOP_AGC_TRUNCCTRL_TRUNC_EN__PRE 0x8 - #define VSB_TOP_BEAGC_DEADZONEINIT__A 0x1C1004C #define VSB_TOP_BEAGC_DEADZONEINIT__W 8 #define VSB_TOP_BEAGC_DEADZONEINIT__M 0xFF @@ -13647,7 +13369,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_BEAGC_REGINIT_BEAGC_RST__M 0x4000 #define VSB_TOP_BEAGC_REGINIT_BEAGC_RST__PRE 0x0 - #define VSB_TOP_BEAGC_SCALE__A 0x1C10050 #define VSB_TOP_BEAGC_SCALE__W 14 #define VSB_TOP_BEAGC_SCALE__M 0x3FFF @@ -13678,7 +13399,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_CFAGC_REGINIT_CFAGC_RST__M 0x4000 #define VSB_TOP_CFAGC_REGINIT_CFAGC_RST__PRE 0x0 - #define VSB_TOP_CFAGC_SCALE__A 0x1C10055 #define VSB_TOP_CFAGC_SCALE__W 14 #define VSB_TOP_CFAGC_SCALE__M 0x3FFF @@ -13768,7 +13488,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_PARAOWCTRL_PARAOWEN__M 0x40 #define VSB_TOP_PARAOWCTRL_PARAOWEN__PRE 0x0 - #define VSB_TOP_CURRENTSEGLOCAT__A 0x1C10065 #define VSB_TOP_CURRENTSEGLOCAT__W 10 #define VSB_TOP_CURRENTSEGLOCAT__M 0x3FF @@ -13863,7 +13582,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_PHASELOCKCTRL_IQSWITCH__M 0x40 #define VSB_TOP_PHASELOCKCTRL_IQSWITCH__PRE 0x0 - #define VSB_TOP_DLOCKACCUM__A 0x1C10071 #define VSB_TOP_DLOCKACCUM__W 16 #define VSB_TOP_DLOCKACCUM__M 0xFFFF @@ -13889,9 +13607,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TOP_DCRMVACUMQ__M 0x3FF #define VSB_TOP_DCRMVACUMQ__PRE 0x0 - - - #define VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__A 0x1C20000 #define VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__W 12 #define VSB_SYSCTRL_RAM0_FFETRAINLKRATIO1__M 0xFFF @@ -14611,8 +14326,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_SYSCTRL_RAM0_FIRRCA1GAIN8_FIRRCA1DATAGAIN8__M 0x7F00 #define VSB_SYSCTRL_RAM0_FIRRCA1GAIN8_FIRRCA1DATAGAIN8__PRE 0x0 - - #define VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__A 0x1C30000 #define VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__W 15 #define VSB_SYSCTRL_RAM1_FIRRCA1GAIN9__M 0x7FFF @@ -15213,7 +14926,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_SYSCTRL_RAM1_FIRDDM2GAIN12_FIRDDM2DATAGAIN12__M 0x7F00 #define VSB_SYSCTRL_RAM1_FIRDDM2GAIN12_FIRDDM2DATAGAIN12__PRE 0x0 - #define VSB_SYSCTRL_RAM1_DFETRAINLKRATIO__A 0x1C30028 #define VSB_SYSCTRL_RAM1_DFETRAINLKRATIO__W 12 #define VSB_SYSCTRL_RAM1_DFETRAINLKRATIO__M 0xFFF @@ -15323,8 +15035,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_SYSCTRL_RAM1_DFEDDM2GAIN_DFEDDM2DATAGAIN__M 0x7F00 #define VSB_SYSCTRL_RAM1_DFEDDM2GAIN_DFEDDM2DATAGAIN__PRE 0x0 - - #define VSB_TCMEQ_RAM__A 0x1C40000 #define VSB_TCMEQ_RAM_TCMEQ_RAM__B 0 @@ -15332,8 +15042,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_TCMEQ_RAM_TCMEQ_RAM__M 0xFFFF #define VSB_TCMEQ_RAM_TCMEQ_RAM__PRE 0x0 - - #define VSB_FCPRE_RAM__A 0x1C50000 #define VSB_FCPRE_RAM_FCPRE_RAM__B 0 @@ -15341,8 +15049,6 @@ extern RegisterTableInfo_t drxj_map_info[]; #define VSB_FCPRE_RAM_FCPRE_RAM__M 0xFFFF #define VSB_FCPRE_RAM_FCPRE_RAM__PRE 0x0 - - #define VSB_EQTAP_RAM__A 0x1C60000 #define VSB_EQTAP_RAM_EQTAP_RAM__B 0 @@ -15353,5 +15059,4 @@ extern RegisterTableInfo_t drxj_map_info[]; #ifdef __cplusplus } #endif - #endif diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj_mc.h b/drivers/media/dvb-frontends/drx39xyj/drxj_mc.h index cecc31df2ba4..52a3cc3ff781 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj_mc.h +++ b/drivers/media/dvb-frontends/drx39xyj/drxj_mc.h @@ -44,3896 +44,7786 @@ #define DRXJ_MC_MAIN ((pu8_t) drxj_mc_main_g) const u8_t drxj_mc_main_g[] = { -0x48, 0x4c, 0x00, 0x06, 0x00, 0x00, 0xf3, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, -0x00, 0x00, 0x1f, 0xf0, 0x00, 0x01, 0xdd, 0x81, 0x00, 0x40, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x03, 0x00, 0x2c, 0x16, 0xa4, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xef, 0xff, 0xc8, 0x00, 0x00, 0x00, -0x03, 0x00, 0x0c, 0xa6, 0x27, 0x00, 0x00, 0x00, 0x51, 0x90, 0x08, 0x05, 0xff, 0x00, 0x00, 0x00, -0xa4, 0x81, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x9f, 0x3d, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x9d, 0x35, 0xeb, 0x99, 0xb3, 0x00, 0x00, 0x00, 0x9b, 0x2d, 0xcb, 0x19, 0xb3, 0x00, 0x00, 0x00, -0x99, 0x25, 0xab, 0x99, 0xb2, 0x00, 0x00, 0x00, 0x97, 0x1d, 0x8b, 0x19, 0xb2, 0x00, 0x00, 0x00, -0x91, 0x41, 0x2a, 0x99, 0xb0, 0x00, 0x00, 0x00, 0xa5, 0x20, 0x6d, 0x22, 0xd2, 0x00, 0x00, 0x00, -0x33, 0x18, 0x4d, 0xbb, 0xd1, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0f, 0x24, 0xd0, 0x00, 0x00, 0x00, -0xc4, 0x2b, 0x3d, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xad, 0x02, 0xcd, 0x2a, 0xd0, 0x00, 0x00, 0x00, -0x64, 0x00, 0x3d, 0x0c, 0xd0, 0x00, 0x00, 0x00, 0x8c, 0x80, 0x3e, 0x0b, 0xf0, 0x00, 0x00, 0x00, -0x08, 0x19, 0x9d, 0x20, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x5c, 0x80, 0x3c, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x83, 0x80, 0x0c, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x20, 0x25, 0x1a, 0x51, 0x00, 0x00, 0x00, 0x92, 0x12, 0x06, 0x20, 0x61, 0x00, 0x00, 0x00, -0x21, 0x83, 0x18, 0xc5, 0x32, 0x00, 0x00, 0x00, 0xc6, 0x80, 0x0c, 0x12, 0xa4, 0x00, 0x00, 0x00, -0x07, 0x81, 0x1c, 0x24, 0xe4, 0x00, 0x00, 0x00, 0xd3, 0x40, 0x3a, 0x34, 0xc8, 0x00, 0x00, 0x00, -0x55, 0x41, 0x4a, 0x11, 0xa4, 0x00, 0x00, 0x00, 0x35, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xa0, 0x41, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xdb, 0x87, 0xed, 0x22, 0xd0, 0x00, 0x00, 0x00, -0x9d, 0x40, 0xca, 0x19, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x08, 0x1a, 0x26, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x40, 0x11, 0x00, 0x00, 0x00, -0x00, 0x08, 0x0a, 0x40, 0x21, 0x00, 0x00, 0x00, 0x20, 0x80, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x30, 0x81, 0x3c, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x68, 0x05, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x60, 0x13, 0x4d, 0xd0, 0x00, 0x00, 0x00, 0x4b, 0x02, 0x7d, 0x06, 0x81, 0x00, 0x00, 0x00, -0x20, 0x00, 0xaf, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x9d, 0x24, 0xd0, 0x00, 0x00, 0x00, -0x25, 0x00, 0x6d, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x1f, 0xff, 0xd7, 0x00, 0x00, 0x00, -0x37, 0x69, 0x53, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xa1, 0x41, 0x0a, 0x3a, 0x84, 0x00, 0x00, 0x00, -0x00, 0x46, 0x71, 0x08, 0xed, 0x00, 0x00, 0x00, 0x00, 0x48, 0x28, 0x8b, 0x51, 0x00, 0x00, 0x00, -0x00, 0x42, 0x09, 0x60, 0x12, 0x00, 0x00, 0x00, 0x92, 0x40, 0x0a, 0x52, 0x22, 0x00, 0x00, 0x00, -0x17, 0x81, 0x36, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0x0b, 0x68, 0x00, 0x00, 0x00, -0x00, 0xc4, 0x06, 0x40, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x80, 0x6f, 0x00, 0x00, 0x00, -0x00, 0x40, 0x01, 0xe0, 0x14, 0x00, 0x00, 0x00, 0xb7, 0xda, 0x66, 0xb1, 0x6d, 0x00, 0x00, 0x00, -0x00, 0xa4, 0x06, 0xa0, 0x6d, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x40, 0x6c, 0x00, 0x00, 0x00, -0x00, 0x4e, 0x01, 0x40, 0x14, 0x00, 0x00, 0x00, 0x17, 0x6d, 0x06, 0xa0, 0x14, 0x00, 0x00, 0x00, -0x93, 0x00, 0x1f, 0x92, 0xb4, 0x00, 0x00, 0x00, 0x7e, 0xff, 0x5c, 0x08, 0xea, 0x00, 0x00, 0x00, -0x00, 0x40, 0x4a, 0x67, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0a, 0xa0, 0x51, 0x00, 0x00, 0x00, -0xbe, 0x85, 0x1c, 0x6e, 0xc8, 0x00, 0x00, 0x00, 0xf0, 0x09, 0x08, 0x20, 0x54, 0x00, 0x00, 0x00, -0x00, 0x8a, 0x08, 0x60, 0x32, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0xa0, 0x51, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x18, 0xd2, 0x32, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x05, 0x80, 0x11, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x54, 0x40, 0x3a, 0x0b, 0xa4, 0x00, 0x00, 0x00, -0x03, 0x12, 0x2e, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x01, 0x32, 0x2e, 0x20, 0xe2, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x86, 0x80, 0x1e, 0x9d, 0xd0, 0x00, 0x00, 0x00, -0x5b, 0x00, 0xaf, 0x5f, 0x22, 0x00, 0x00, 0x00, 0x7d, 0xc2, 0xd9, 0x13, 0x7b, 0x00, 0x00, 0x00, -0x00, 0x80, 0x07, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x20, 0x20, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0xa1, 0x03, 0x01, 0x00, 0x68, 0x00, 0x00, 0x00, -0x7b, 0xc7, 0xd8, 0x81, 0x30, 0x00, 0x00, 0x00, 0xa3, 0xd2, 0x08, 0x00, 0x36, 0x00, 0x00, 0x00, -0xa9, 0x08, 0x12, 0x0a, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, -0x00, 0x20, 0x72, 0xe4, 0xcf, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x08, 0x20, 0x32, 0x00, 0x00, 0x00, -0x7c, 0xbe, 0x0c, 0xe8, 0xcf, 0x00, 0x00, 0x00, 0x84, 0xc2, 0x2c, 0x5a, 0x15, 0x00, 0x00, 0x00, -0x00, 0xc4, 0x08, 0xa0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x05, 0x20, 0x5d, 0x00, 0x00, 0x00, -0x88, 0x90, 0x4e, 0xae, 0x32, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x05, 0x60, 0x88, 0x00, 0x00, 0x00, -0x00, 0x76, 0x01, 0xc0, 0x57, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0xa0, 0xb2, 0xc7, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe0, 0x2f, 0x9c, 0x00, 0x00, 0x00, -0x5b, 0x17, 0x02, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x92, 0x06, 0x20, 0x69, 0x00, 0x00, 0x00, -0x00, 0x92, 0x06, 0x20, 0x69, 0x00, 0x00, 0x00, 0x5e, 0x18, 0x13, 0x7a, 0x11, 0x00, 0x00, 0x00, -0x00, 0x62, 0xc3, 0x63, 0x8c, 0x00, 0x00, 0x00, 0xa1, 0x10, 0x3a, 0x2a, 0x8d, 0x00, 0x00, 0x00, -0x00, 0x12, 0x96, 0x8a, 0x21, 0x00, 0x00, 0x00, 0x47, 0xff, 0x0c, 0x20, 0x61, 0x00, 0x00, 0x00, -0x00, 0x2a, 0x03, 0x20, 0x22, 0x00, 0x00, 0x00, 0x80, 0xfe, 0x0c, 0x20, 0x8c, 0x00, 0x00, 0x00, -0xa4, 0x05, 0xc1, 0xe7, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x10, 0x43, 0x28, 0xcc, 0x00, 0x00, 0x00, -0x00, 0x82, 0x05, 0x40, 0x8c, 0x00, 0x00, 0x00, 0xe2, 0x20, 0x03, 0xc0, 0x57, 0x00, 0x00, 0x00, -0x00, 0x84, 0x05, 0x60, 0x88, 0x00, 0x00, 0x00, 0x00, 0x76, 0x01, 0xc0, 0x57, 0x00, 0x00, 0x00, -0x1c, 0x40, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x34, 0x40, 0x9a, 0xf7, 0xcf, 0x00, 0x00, 0x00, -0xf3, 0x0a, 0x05, 0x48, 0xc8, 0x00, 0x00, 0x00, 0xbf, 0x0f, 0x31, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0xfb, 0xfe, 0x2c, 0x72, 0x52, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 0x87, 0x80, 0x00, 0x00, 0x00, -0x00, 0x06, 0x05, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x90, 0x1c, 0x92, 0x10, 0x00, 0x00, 0x00, -0xda, 0x23, 0xd5, 0xf7, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x65, 0x8b, 0x80, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x09, 0x80, 0x65, 0x00, 0x00, 0x00, 0x00, 0x24, 0x06, 0x60, 0x50, 0x00, 0x00, 0x00, -0x00, 0xd0, 0x09, 0x17, 0xc8, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x76, 0x45, 0x76, 0x50, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x01, 0xa0, 0x10, 0x00, 0x00, 0x00, -0xda, 0x41, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x1f, 0x12, 0xc8, 0x00, 0x00, 0x00, -0x40, 0x83, 0x9c, 0xa7, 0x36, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x6f, 0x6b, 0x81, 0x00, 0x00, 0x00, -0x60, 0x81, 0x0c, 0x80, 0x36, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x13, 0x53, 0x80, 0x00, 0x00, 0x00, -0x88, 0x81, 0x0c, 0xa0, 0x86, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xa5, 0x16, 0xc8, 0x00, 0x00, 0x00, -0x4a, 0x81, 0x0c, 0x20, 0x80, 0x00, 0x00, 0x00, 0x24, 0x2b, 0x33, 0x09, 0xf0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0xff, 0xb7, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x76, 0x05, 0x0b, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x2a, 0x03, 0x80, 0x17, 0x00, 0x00, 0x00, 0xda, 0x09, 0x08, 0x0a, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x08, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09, 0x20, 0x61, 0x00, 0x00, 0x00, -0x00, 0x08, 0x01, 0x60, 0x50, 0x00, 0x00, 0x00, 0x80, 0xa0, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x93, 0x00, 0x1f, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x73, 0x22, 0x05, 0x50, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x42, 0x05, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, 0x84, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3c, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4a, 0xa1, 0xa0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xbf, 0x83, 0x1c, 0x55, 0xd1, 0x00, 0x00, 0x00, -0x93, 0x00, 0x7f, 0x97, 0x24, 0x00, 0x00, 0x00, 0x62, 0x58, 0xa3, 0xcf, 0x55, 0x00, 0x00, 0x00, -0x00, 0x40, 0xfc, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x61, 0x81, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xb3, 0x7b, 0x03, 0x48, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x05, 0x23, 0x81, 0x00, 0x00, 0x00, -0xd5, 0x00, 0x0c, 0xe0, 0x84, 0x00, 0x00, 0x00, 0x73, 0x41, 0x0a, 0x1b, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x6a, 0x05, 0x02, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x36, 0x00, 0x00, 0x00, -0x7f, 0xf4, 0x0c, 0x60, 0x51, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x60, 0x80, 0x00, 0x00, 0x00, -0x10, 0x08, 0x0a, 0x20, 0x50, 0x00, 0x00, 0x00, 0x80, 0x82, 0x3c, 0x1a, 0xf0, 0x00, 0x00, 0x00, -0x72, 0x20, 0x35, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x4c, 0xab, 0x80, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x08, 0x40, 0x31, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x60, 0x50, 0x00, 0x00, 0x00, -0xc0, 0x82, 0x3c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x40, 0x31, 0x00, 0x00, 0x00, -0x93, 0x00, 0x0f, 0x60, 0x10, 0x00, 0x00, 0x00, 0x84, 0x80, 0xfc, 0x67, 0xcf, 0x00, 0x00, 0x00, -0x00, 0x02, 0x05, 0x8c, 0xc8, 0x00, 0x00, 0x00, 0xa1, 0x42, 0x08, 0x00, 0x52, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0x60, 0x10, 0x00, 0x00, 0x00, 0x71, 0x40, 0x0a, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x22, 0x25, 0x17, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, -0xa0, 0x87, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x33, 0x09, 0xf0, 0x00, 0x00, 0x00, -0xcd, 0x00, 0xfc, 0x5f, 0x88, 0x00, 0x00, 0x00, 0xc0, 0x82, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0xa8, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x46, 0x08, 0x7a, 0x37, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x80, 0x2c, 0xb9, 0xa0, 0x00, 0x00, 0x00, -0x92, 0x51, 0x48, 0x12, 0x52, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x20, 0x54, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x01, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x08, 0x2a, 0x0c, 0xc8, 0x00, 0x00, 0x00, 0x80, 0x88, 0x0c, 0x60, 0x37, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x40, 0x80, 0x00, 0x00, 0x00, 0x51, 0x01, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x02, 0x18, 0x12, 0x52, 0x00, 0x00, 0x00, 0x19, 0x05, 0x0a, 0x80, 0x24, 0x00, 0x00, 0x00, -0x80, 0x88, 0x0c, 0x24, 0xc8, 0x00, 0x00, 0x00, 0x23, 0x11, 0x15, 0x16, 0xc8, 0x00, 0x00, 0x00, -0x22, 0x41, 0x0a, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x46, 0x08, 0xa0, 0x37, 0x00, 0x00, 0x00, -0x00, 0x02, 0x08, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x0f, 0x12, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5a, 0xb1, 0xa0, 0x00, 0x00, 0x00, -0x21, 0x01, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, 0x3f, 0x02, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x8b, 0x81, 0xbd, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfa, 0xd9, 0xd0, 0x00, 0x00, 0x00, -0xb3, 0x00, 0x3f, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xb8, 0x40, 0x0a, 0xe3, 0x27, 0x00, 0x00, 0x00, -0x9f, 0xe1, 0xfc, 0xf7, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, -0xf5, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xd2, 0x50, 0x00, 0x00, 0x00, -0x5f, 0xe9, 0xfc, 0x39, 0xce, 0x00, 0x00, 0x00, 0x00, 0x86, 0x08, 0x20, 0x37, 0x00, 0x00, 0x00, -0xec, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x80, 0x82, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x20, 0x05, 0xc0, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0xe0, 0x80, 0x00, 0x00, 0x00, -0xff, 0xfc, 0x9c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x18, 0x52, 0x31, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3a, 0x72, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xc0, 0x82, 0x8c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x82, 0x38, 0x52, 0x31, 0x00, 0x00, 0x00, -0x00, 0x40, 0x1a, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x05, 0x88, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x10, 0x08, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xff, 0xf6, 0x9c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x1f, 0x03, 0x40, 0x27, 0x00, 0x00, 0x00, -0x23, 0x07, 0x05, 0x20, 0x88, 0x00, 0x00, 0x00, 0xc0, 0x88, 0x8c, 0x0b, 0xa4, 0x00, 0x00, 0x00, -0x23, 0x1f, 0x03, 0x40, 0x27, 0x00, 0x00, 0x00, 0x20, 0x07, 0x01, 0x20, 0x8c, 0x00, 0x00, 0x00, -0x93, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x40, 0x1a, 0x07, 0xa4, 0x00, 0x00, 0x00, -0xa3, 0x86, 0x09, 0x21, 0x65, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xa1, 0x44, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x01, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, -0xa2, 0x44, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0a, 0x20, 0x80, 0x00, 0x00, 0x00, -0xb0, 0x80, 0x0c, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x34, 0x03, 0x40, 0x80, 0x00, 0x00, 0x00, -0x22, 0x41, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x5a, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0xa9, 0xbe, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x2a, 0x03, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0xd0, 0x08, 0x40, 0x30, 0x00, 0x00, 0x00, -0x18, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x7f, 0x0b, 0xc8, 0x00, 0x00, 0x00, -0x37, 0x04, 0x03, 0x17, 0xc8, 0x00, 0x00, 0x00, 0x9f, 0xf1, 0x6c, 0x13, 0xa4, 0x00, 0x00, 0x00, -0x20, 0x07, 0x48, 0x4a, 0x51, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xa5, 0x34, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xe5, 0x26, 0x2a, 0x31, 0x84, 0x00, 0x00, 0x00, -0x00, 0x44, 0x78, 0x4a, 0x33, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xba, 0x0c, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x42, 0x38, 0x4a, 0x33, 0x00, 0x00, 0x00, 0xa2, 0x34, 0x43, 0x8e, 0xa1, 0x00, 0x00, 0x00, -0xc8, 0x80, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x34, 0x03, 0x00, 0xa1, 0x00, 0x00, 0x00, -0x00, 0x44, 0x08, 0x0b, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x0f, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x42, 0x08, 0x40, 0x33, 0x00, 0x00, 0x00, 0x51, 0x01, 0x0c, 0x0e, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x40, 0x8c, 0x00, 0x00, 0x00, -0x00, 0x80, 0x36, 0xb2, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, -0x00, 0x82, 0x0c, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x33, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x01, 0x0c, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x09, 0x01, 0x3c, 0xb2, 0xa0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x4f, 0xca, 0x50, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x61, 0xa0, 0x00, 0x00, 0x00, -0x93, 0x00, 0x0f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x40, 0x3a, 0x1f, 0xa4, 0x00, 0x00, 0x00, -0x0f, 0x81, 0xfc, 0x09, 0xce, 0x00, 0x00, 0x00, 0xb0, 0x1e, 0x06, 0x4e, 0x50, 0x00, 0x00, 0x00, -0x46, 0x01, 0x0c, 0xe0, 0x98, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x71, 0x40, 0xfa, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x52, 0x86, 0x1c, 0xc8, 0x00, 0x00, 0x00, -0x56, 0x00, 0x0f, 0x1e, 0xc8, 0x00, 0x00, 0x00, 0xc0, 0x91, 0x0c, 0xe0, 0x10, 0x00, 0x00, 0x00, -0xb4, 0x41, 0x1a, 0x17, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x74, 0x35, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x5c, 0x03, 0x8e, 0x84, 0x00, 0x00, 0x00, 0x40, 0x01, 0x0c, 0x00, 0x89, 0x00, 0x00, 0x00, -0x00, 0xec, 0x06, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x08, 0xa0, 0x36, 0x00, 0x00, 0x00, -0x40, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe0, 0x19, 0x05, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xe1, 0x44, 0x08, 0x60, 0x31, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0a, 0x68, 0xc8, 0x00, 0x00, 0x00, -0xe2, 0x44, 0x08, 0x60, 0x31, 0x00, 0x00, 0x00, 0x00, 0x28, 0x0a, 0x48, 0xc8, 0x00, 0x00, 0x00, -0xc8, 0x80, 0x0c, 0x60, 0x31, 0x00, 0x00, 0x00, 0x80, 0x8c, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, -0x00, 0x16, 0x03, 0xe0, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x44, 0x98, 0x0c, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x14, 0x0a, 0x28, 0xc8, 0x00, 0x00, 0x00, 0xca, 0x80, 0x0c, 0x60, 0x31, 0x00, 0x00, 0x00, -0xa0, 0x0c, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x44, 0x08, 0x60, 0x31, 0x00, 0x00, 0x00, -0x00, 0x04, 0x0a, 0x88, 0xc8, 0x00, 0x00, 0x00, 0xc8, 0x81, 0x0c, 0x08, 0xc9, 0x00, 0x00, 0x00, -0x10, 0x40, 0x0a, 0x40, 0x10, 0x00, 0x00, 0x00, 0x35, 0x02, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x4e, 0x02, 0xad, 0x17, 0xa4, 0x00, 0x00, 0x00, 0xd9, 0x41, 0xba, 0x7e, 0xd8, 0x00, 0x00, 0x00, -0xdc, 0x41, 0xda, 0x15, 0xa4, 0x00, 0x00, 0x00, 0x42, 0x01, 0x0c, 0x40, 0x98, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x32, 0x41, 0xea, 0x36, 0xc8, 0x00, 0x00, 0x00, -0x24, 0x59, 0x33, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9c, 0x5d, 0x88, 0x00, 0x00, 0x00, -0x00, 0x18, 0x05, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x40, 0x80, 0x00, 0x00, 0x00, -0x00, 0x3e, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x42, 0xb8, 0x08, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x34, 0x33, 0x6e, 0xa0, 0x00, 0x00, 0x00, 0xe7, 0x40, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0xbf, 0x0f, 0xd3, 0x00, 0x00, 0x00, -0x00, 0x00, 0x2f, 0x0d, 0xa4, 0x00, 0x00, 0x00, 0x82, 0x24, 0x8d, 0x8d, 0xb4, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x77, 0x41, 0x1a, 0x26, 0xd0, 0x00, 0x00, 0x00, -0x93, 0x00, 0x7f, 0x0a, 0xa4, 0x00, 0x00, 0x00, 0xff, 0x2b, 0x15, 0x47, 0x5b, 0x00, 0x00, 0x00, -0x30, 0x26, 0x03, 0x40, 0x81, 0x00, 0x00, 0x00, 0x72, 0x01, 0x0c, 0xc0, 0x84, 0x00, 0x00, 0x00, -0xb9, 0xff, 0x6c, 0x14, 0xc8, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0xac, 0x2f, 0xa0, 0x00, 0x00, 0x00, 0x30, 0x12, 0x06, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x0f, 0x92, 0x98, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x3f, 0x83, 0x9c, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x05, 0x0d, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x06, 0x08, 0x60, 0x34, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x61, 0x81, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xb3, 0x7b, 0x03, 0x48, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x2c, 0x95, 0xb7, 0x81, 0x00, 0x00, 0x00, 0x80, 0x88, 0x0c, 0x60, 0x85, 0x00, 0x00, 0x00, -0x5c, 0x21, 0x05, 0x18, 0xc8, 0x00, 0x00, 0x00, 0x35, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x81, 0x81, 0x0c, 0x20, 0x80, 0x00, 0x00, 0x00, 0xeb, 0x87, 0xed, 0x6e, 0xd1, 0x00, 0x00, 0x00, -0x9d, 0x41, 0xaa, 0x19, 0xa4, 0x00, 0x00, 0x00, 0x35, 0x02, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x4e, 0x02, 0x5d, 0xfb, 0x27, 0x00, 0x00, 0x00, 0xdc, 0x41, 0xba, 0x6f, 0xd8, 0x00, 0x00, 0x00, -0x00, 0x40, 0xda, 0x39, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x83, 0x0c, 0xc0, 0x50, 0x00, 0x00, 0x00, -0x00, 0x06, 0x01, 0xa0, 0x53, 0x00, 0x00, 0x00, 0xb0, 0x81, 0x0c, 0xe0, 0x36, 0x00, 0x00, 0x00, -0x24, 0x45, 0xb8, 0xf3, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, 0x50, 0x00, 0x00, 0x00, -0xe2, 0x08, 0x78, 0xd2, 0x37, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x09, 0x20, 0x62, 0x00, 0x00, 0x00, -0x00, 0x8c, 0x08, 0xe0, 0x34, 0x00, 0x00, 0x00, 0x80, 0x8b, 0xbc, 0xf7, 0xcf, 0x00, 0x00, 0x00, -0x00, 0x60, 0x45, 0xb6, 0x50, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x20, 0x84, 0x00, 0x00, 0x00, -0x6f, 0xff, 0x4c, 0x33, 0x53, 0x00, 0x00, 0x00, 0x71, 0x4a, 0x05, 0xa1, 0x80, 0x00, 0x00, 0x00, -0x00, 0x10, 0x03, 0x15, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x01, 0x20, 0x80, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x14, 0x09, 0x3a, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x80, 0x80, 0xbe, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xa0, 0x87, 0x09, 0x07, 0x62, 0x00, 0x00, 0x00, -0x8b, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x61, 0x1d, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x0d, 0x22, 0x0e, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x0b, 0x35, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xc0, 0x90, 0xfc, 0xf7, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x5e, 0x55, 0x00, 0x00, 0x00, -0x00, 0xd0, 0x0f, 0x80, 0x9c, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x93, 0x00, 0x0f, 0xa3, 0xa0, 0x00, 0x00, 0x00, 0x2f, 0xff, 0x0c, 0x60, 0x32, 0x00, 0x00, 0x00, -0x74, 0x51, 0x08, 0x0d, 0xc9, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x3e, 0xff, 0x0c, 0x83, 0x55, 0x00, 0x00, 0x00, 0x54, 0x41, 0x35, 0x20, 0xe5, 0x00, 0x00, 0x00, -0x10, 0x41, 0x1a, 0x11, 0xa4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x60, 0x32, 0x00, 0x00, 0x00, -0x61, 0x59, 0xf8, 0x0c, 0xc9, 0x00, 0x00, 0x00, 0xc0, 0x86, 0xec, 0x13, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x38, 0x21, 0x19, 0xc8, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0xa0, 0x14, 0x00, 0x00, 0x00, -0x00, 0x4c, 0x03, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x30, 0x82, 0x08, 0x01, 0xf0, 0x00, 0x00, 0x00, -0x1e, 0x41, 0x0a, 0x80, 0x24, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x60, 0x32, 0x00, 0x00, 0x00, -0x00, 0x46, 0xd8, 0x0d, 0xc9, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x26, 0xd3, 0xa3, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x48, 0xc8, 0x0d, 0xc9, 0x00, 0x00, 0x00, -0xb8, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5a, 0x08, 0xe8, 0x00, 0x00, 0x00, -0xe0, 0x90, 0x0c, 0x60, 0x32, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, -0x00, 0x08, 0x7a, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x0f, 0x60, 0x32, 0x00, 0x00, 0x00, -0x00, 0x42, 0x18, 0x0e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x26, 0x33, 0x63, 0xa3, 0x00, 0x00, 0x00, -0x00, 0x42, 0x38, 0x0e, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x26, 0x43, 0xe3, 0xa2, 0x00, 0x00, 0x00, -0xf8, 0x80, 0x0c, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x33, 0x24, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, -0x33, 0x00, 0x0f, 0x60, 0x32, 0x00, 0x00, 0x00, 0x00, 0x42, 0xe8, 0x0f, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x26, 0x53, 0xa3, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x42, 0x78, 0x2d, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x26, 0xb3, 0x23, 0xa1, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x6c, 0x05, 0xf0, 0x00, 0x00, 0x00, -0x31, 0x08, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x0f, 0x60, 0x32, 0x00, 0x00, 0x00, -0x32, 0x40, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x72, 0x0e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, 0xa0, 0x00, 0x00, 0x00, -0x80, 0x80, 0xbe, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xa0, 0x8d, 0x09, 0x13, 0x62, 0x00, 0x00, 0x00, -0xca, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1a, 0x08, 0xe9, 0x00, 0x00, 0x00, -0x00, 0x04, 0x1a, 0x08, 0xeb, 0x00, 0x00, 0x00, 0x22, 0x4d, 0xf3, 0xff, 0xc9, 0x00, 0x00, 0x00, -0x00, 0x50, 0x0b, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x81, 0x90, 0x0e, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x81, 0xb0, 0x0e, 0x40, 0x37, 0x00, 0x00, 0x00, -0x20, 0x41, 0x0a, 0x80, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x0e, 0x32, 0xee, 0x20, 0xe1, 0x00, 0x00, 0x00, -0x10, 0x05, 0xda, 0x20, 0xe2, 0x00, 0x00, 0x00, 0xb0, 0x81, 0xfc, 0xf7, 0xc9, 0x00, 0x00, 0x00, -0x00, 0x80, 0x07, 0x40, 0x55, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x0f, 0x80, 0x9c, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0xa5, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x48, 0x08, 0x1a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x51, 0x08, 0x0a, 0x0d, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x81, 0x1c, 0xd6, 0x32, 0x00, 0x00, 0x00, -0x00, 0x1a, 0x03, 0xe0, 0x85, 0x00, 0x00, 0x00, 0x42, 0x03, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0b, 0x00, 0xf0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x2f, 0x48, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x58, 0x40, 0x3a, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x52, 0x04, 0xba, 0x0f, 0xd3, 0x00, 0x00, 0x00, -0xa5, 0x81, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x80, 0x84, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xc3, 0xa5, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x46, 0x28, 0x1a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x2c, 0xd3, 0xa5, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x18, 0x1a, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x22, 0x36, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x82, 0x45, 0x62, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x93, 0xa5, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x46, 0x38, 0x1a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6c, 0x05, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x2c, 0x43, 0xa5, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x38, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x94, 0x08, 0x3a, 0x25, 0x62, 0x00, 0x00, 0x00, -0x90, 0x83, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x80, 0x84, 0x00, 0x00, 0x00, -0x40, 0x12, 0x3e, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xe3, 0x65, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x48, 0x38, 0x59, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x5f, 0x08, 0x2a, 0x24, 0xe1, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x0f, 0xc0, 0x32, 0x00, 0x00, 0x00, -0x00, 0x48, 0xb8, 0x59, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x57, 0x08, 0x4a, 0x20, 0xe1, 0x00, 0x00, 0x00, 0xa3, 0x85, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, 0x56, 0x08, 0x5a, 0x20, 0xe1, 0x00, 0x00, 0x00, -0xab, 0x85, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, -0x59, 0x08, 0x6a, 0x20, 0xe1, 0x00, 0x00, 0x00, 0x9d, 0x81, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, 0x58, 0x08, 0x7a, 0x20, 0xe1, 0x00, 0x00, 0x00, -0xbe, 0x9f, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, -0x00, 0x08, 0xfa, 0x20, 0xe1, 0x00, 0x00, 0x00, 0xbf, 0x9f, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, -0xa1, 0x07, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x90, 0x0b, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x21, 0x40, 0xba, 0x06, 0xf0, 0x00, 0x00, 0x00, -0xb1, 0x41, 0x0a, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x33, 0x41, 0x2a, 0x17, 0xa4, 0x00, 0x00, 0x00, -0xb5, 0x00, 0x46, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x08, 0x72, 0x6e, 0x07, 0x9d, 0x00, 0x00, 0x00, -0x08, 0x52, 0x8e, 0x20, 0xe6, 0x00, 0x00, 0x00, 0x08, 0x32, 0x8e, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x08, 0x12, 0x8e, 0x20, 0xe2, 0x00, 0x00, 0x00, 0x09, 0x72, 0x0e, 0xe0, 0xa0, 0x00, 0x00, 0x00, -0x09, 0x52, 0x9e, 0x20, 0xe6, 0x00, 0x00, 0x00, 0x09, 0x32, 0x9e, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x09, 0x12, 0x9e, 0x20, 0xe2, 0x00, 0x00, 0x00, 0x38, 0x41, 0x7a, 0x17, 0x38, 0x00, 0x00, 0x00, -0xba, 0x00, 0x96, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x08, 0x52, 0xbe, 0xc7, 0x9c, 0x00, 0x00, 0x00, -0x08, 0x32, 0x8e, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x08, 0x12, 0x8e, 0x20, 0xe2, 0x00, 0x00, 0x00, -0x09, 0x52, 0x0e, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x09, 0x32, 0x9e, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x09, 0x12, 0x9e, 0x20, 0xe2, 0x00, 0x00, 0x00, 0x0b, 0x02, 0x0c, 0x60, 0x9c, 0x00, 0x00, 0x00, -0x00, 0x08, 0x7a, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x21, 0x41, 0xba, 0x05, 0xf0, 0x00, 0x00, 0x00, -0x30, 0x40, 0xfa, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x22, 0x09, 0x03, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0xe0, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2a, 0x08, 0xe9, 0x00, 0x00, 0x00, -0x00, 0x12, 0x2e, 0x08, 0xea, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x20, 0xe2, 0x00, 0x00, 0x00, -0x00, 0x46, 0x38, 0x92, 0x30, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x08, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x82, 0xb0, 0x0e, 0xa0, 0x85, 0x00, 0x00, 0x00, -0x82, 0xc0, 0x0e, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x16, 0x07, 0x80, 0x62, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x12, 0x07, 0x40, 0x62, 0x00, 0x00, 0x00, -0x00, 0x12, 0x07, 0x40, 0x62, 0x00, 0x00, 0x00, 0x00, 0x12, 0x07, 0x40, 0x62, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x5b, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x2f, 0x35, 0xd2, 0x00, 0x00, 0x00, -0xfe, 0x49, 0x0b, 0x9b, 0x24, 0x00, 0x00, 0x00, 0x62, 0x51, 0xd8, 0xc3, 0x34, 0x00, 0x00, 0x00, -0xbb, 0xf0, 0xcb, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x42, 0x02, 0xbd, 0x05, 0xf0, 0x00, 0x00, 0x00, -0x0e, 0x02, 0x0e, 0x95, 0xb0, 0x00, 0x00, 0x00, 0x0d, 0x22, 0xee, 0x20, 0xe1, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x5b, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x2f, 0x3f, 0xd2, 0x00, 0x00, 0x00, -0x00, 0x48, 0x0b, 0x9b, 0x24, 0x00, 0x00, 0x00, 0x63, 0x4f, 0xb8, 0xcb, 0x34, 0x00, 0x00, 0x00, -0x0d, 0x22, 0x0e, 0x80, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x42, 0x02, 0xbd, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x75, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x70, 0x09, 0x2b, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x78, 0x5a, 0x36, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x86, 0x81, 0xfc, 0xab, 0x65, 0x00, 0x00, 0x00, 0x20, 0x81, 0x0c, 0x43, 0x31, 0x00, 0x00, 0x00, -0x00, 0x0c, 0x25, 0x2e, 0x80, 0x00, 0x00, 0x00, 0x21, 0x81, 0x0c, 0x81, 0x31, 0x00, 0x00, 0x00, -0x00, 0x48, 0x38, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x60, 0x55, 0x00, 0x00, 0x00, -0x58, 0x40, 0x0a, 0x80, 0x59, 0x00, 0x00, 0x00, 0x20, 0x81, 0x0c, 0x80, 0x31, 0x00, 0x00, 0x00, -0xc1, 0x97, 0x9c, 0x8f, 0x84, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x09, 0x60, 0x63, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0x80, 0x59, 0x00, 0x00, 0x00, 0xd5, 0x97, 0x0c, 0x13, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xc4, 0x97, 0x0c, 0x30, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0x60, 0x80, 0x00, 0x00, 0x00, 0x22, 0x47, 0xa8, 0x7c, 0xc9, 0x00, 0x00, 0x00, -0xae, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x40, 0x02, 0xed, 0x3f, 0xc9, 0x00, 0x00, 0x00, 0x23, 0x19, 0xe3, 0x24, 0xd0, 0x00, 0x00, 0x00, -0x24, 0x19, 0x03, 0xa0, 0x81, 0x00, 0x00, 0x00, 0x00, 0x14, 0x38, 0x5c, 0xc9, 0x00, 0x00, 0x00, -0xc5, 0x95, 0x5c, 0x92, 0x31, 0x00, 0x00, 0x00, 0x27, 0x19, 0x03, 0xe0, 0x80, 0x00, 0x00, 0x00, -0x00, 0x08, 0x78, 0x5c, 0xc9, 0x00, 0x00, 0x00, 0x08, 0x81, 0x0c, 0x80, 0x31, 0x00, 0x00, 0x00, -0x00, 0x46, 0x88, 0x5c, 0xc9, 0x00, 0x00, 0x00, 0x73, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xdd, 0x95, 0x9c, 0x10, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0x60, 0x81, 0x00, 0x00, 0x00, 0xdf, 0x95, 0xac, 0x10, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xe4, 0x95, 0xbc, 0x10, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x18, 0x03, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x46, 0x78, 0x5e, 0xc9, 0x00, 0x00, 0x00, -0x91, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x24, 0x00, 0x0c, 0xaa, 0xa0, 0x00, 0x00, 0x00, -0x42, 0x02, 0x0d, 0x80, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, 0xa0, 0x00, 0x00, 0x00, -0x51, 0x99, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x89, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x23, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x2f, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x4c, 0x02, 0x3d, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x96, 0xea, 0x15, 0x53, 0x22, 0x00, 0x00, 0x00, 0x92, 0xf0, 0x0b, 0x80, 0xc8, 0x00, 0x00, 0x00, -0xc8, 0x80, 0xbc, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x47, 0x7b, 0x6d, 0x89, 0xd4, 0x00, 0x00, 0x00, -0xf9, 0xc3, 0x8d, 0x22, 0xd5, 0x00, 0x00, 0x00, 0xe7, 0x92, 0x6d, 0xbb, 0xd3, 0x00, 0x00, 0x00, -0xe9, 0x38, 0x8d, 0x8e, 0xd3, 0x00, 0x00, 0x00, 0xc8, 0x88, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x18, 0x00, 0x7d, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x14, 0x8a, 0x99, 0xc9, 0x00, 0x00, 0x00, -0x69, 0x7e, 0x8d, 0x58, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xe0, 0xa0, 0x00, 0x00, 0x00, -0x17, 0xc7, 0x6d, 0xf1, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, 0xa0, 0x00, 0x00, 0x00, -0xc7, 0xc0, 0x6d, 0x53, 0xd5, 0x00, 0x00, 0x00, 0x22, 0x09, 0x35, 0x0b, 0xf0, 0x00, 0x00, 0x00, -0x93, 0x00, 0x1f, 0x9f, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0xfd, 0x99, 0xc9, 0x00, 0x00, 0x00, -0x00, 0x78, 0x75, 0x0d, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0xa0, 0x80, 0x00, 0x00, 0x00, -0x16, 0x00, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x3d, 0x03, 0xd0, 0x00, 0x00, 0x00, -0xe2, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x74, 0x99, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x1d, 0x99, 0xc9, 0x00, 0x00, 0x00, -0xf8, 0x03, 0x7d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x9d, 0x08, 0xd0, 0x00, 0x00, 0x00, -0x02, 0x00, 0x3d, 0x24, 0xd0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x31, 0x25, 0xc2, 0xa0, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x88, 0x6c, 0x01, 0xd0, 0x00, 0x00, 0x00, -0x92, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xc8, 0x80, 0xbc, 0x05, 0xf0, 0x00, 0x00, 0x00, -0xf7, 0x49, 0x6d, 0x9f, 0xd4, 0x00, 0x00, 0x00, 0xf9, 0xc3, 0x8d, 0x22, 0xd5, 0x00, 0x00, 0x00, -0x69, 0x7e, 0x8d, 0x58, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x20, 0xa2, 0x00, 0x00, 0x00, -0xc9, 0xc9, 0x8d, 0x24, 0xd5, 0x00, 0x00, 0x00, 0xa6, 0x99, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x36, 0x00, 0x2d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x3d, 0x0b, 0xf0, 0x00, 0x00, 0x00, -0x21, 0x1b, 0x1a, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x97, 0x48, 0x6d, 0x2d, 0xd5, 0x00, 0x00, 0x00, -0x29, 0xa1, 0x8d, 0xbd, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0xba, 0x97, 0xc9, 0x00, 0x00, 0x00, -0x21, 0x09, 0x35, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x1f, 0x9f, 0x80, 0x00, 0x00, 0x00, -0x82, 0x00, 0xfd, 0x99, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x0d, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x02, 0x08, 0x80, 0x57, 0x00, 0x00, 0x00, 0xe2, 0x02, 0xcc, 0x24, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x24, 0x41, 0x3a, 0x0b, 0xf0, 0x00, 0x00, 0x00, -0x93, 0x00, 0x1f, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x98, 0x99, 0xdc, 0x96, 0xc9, 0x00, 0x00, 0x00, -0xff, 0x46, 0x65, 0x08, 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0d, 0x20, 0x84, 0x00, 0x00, 0x00, -0xf8, 0x03, 0x7d, 0x10, 0xd1, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x9d, 0x09, 0xd0, 0x00, 0x00, 0x00, -0xa3, 0x00, 0x3f, 0x90, 0xdc, 0x00, 0x00, 0x00, 0x78, 0x40, 0x2a, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x06, 0x00, 0x1d, 0x53, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0xc8, 0x00, 0x00, 0x00, -0x4c, 0x02, 0x2d, 0x69, 0x31, 0x00, 0x00, 0x00, 0xa0, 0x08, 0x08, 0x49, 0xd6, 0x00, 0x00, 0x00, -0xa3, 0x01, 0x0f, 0x3f, 0xd6, 0x00, 0x00, 0x00, 0x92, 0x24, 0xe4, 0x24, 0xd0, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xc8, 0x88, 0xbc, 0x05, 0xf0, 0x00, 0x00, 0x00, -0xa7, 0xe9, 0x6d, 0x0f, 0xd0, 0x00, 0x00, 0x00, 0xe9, 0x38, 0x8d, 0x8e, 0xd3, 0x00, 0x00, 0x00, -0xd5, 0x02, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x9d, 0x0b, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x04, 0x3a, 0x50, 0xdc, 0x00, 0x00, 0x00, 0x93, 0x00, 0x6f, 0x06, 0xd0, 0x00, 0x00, 0x00, -0x06, 0x00, 0x7d, 0xd7, 0xd5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x7d, 0x08, 0xd1, 0x00, 0x00, 0x00, -0x00, 0x00, 0x8f, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x40, 0x02, 0x3d, 0x50, 0xd6, 0x00, 0x00, 0x00, -0x00, 0x2c, 0xea, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x37, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x06, 0x00, 0xbd, 0x97, 0xc9, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x79, 0x00, 0xd1, 0x00, 0x00, 0x00, -0xc8, 0x80, 0x7c, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x9f, 0x0a, 0xd0, 0x00, 0x00, 0x00, -0x46, 0x11, 0x3d, 0xb2, 0xde, 0x00, 0x00, 0x00, 0x48, 0x61, 0x7d, 0x52, 0xdb, 0x00, 0x00, 0x00, -0x00, 0x00, 0x9f, 0xa8, 0xdc, 0x00, 0x00, 0x00, 0x7c, 0x5b, 0x0d, 0x40, 0x62, 0x00, 0x00, 0x00, -0x00, 0xc4, 0x09, 0x46, 0xd6, 0x00, 0x00, 0x00, 0x4e, 0x02, 0x0d, 0x3d, 0xd6, 0x00, 0x00, 0x00, -0x22, 0x09, 0x35, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x1f, 0xbf, 0x80, 0x00, 0x00, 0x00, -0x82, 0x00, 0xfd, 0x99, 0xc9, 0x00, 0x00, 0x00, 0xd7, 0x40, 0x6a, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x3f, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0xe3, 0x17, 0x28, 0x93, 0x57, 0x00, 0x00, 0x00, -0x00, 0x4e, 0x03, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x4c, 0x02, 0x0d, 0x20, 0x84, 0x00, 0x00, 0x00, -0x4e, 0x02, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x8f, 0x3f, 0xd0, 0x00, 0x00, 0x00, -0x16, 0x00, 0x3d, 0x1a, 0xf0, 0x00, 0x00, 0x00, 0xe2, 0x02, 0x2c, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xbb, 0x06, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x08, 0x4a, 0x7e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7b, 0x07, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x08, 0x6a, 0x7e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x57, 0xb5, 0x00, 0x00, 0x00, 0xe3, 0x50, 0xf8, 0xa5, 0x54, 0x00, 0x00, 0x00, -0x35, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xde, 0x2e, 0xcd, 0x00, 0xd0, 0x00, 0x00, 0x00, -0xdd, 0x40, 0xba, 0x6f, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5a, 0x2d, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x48, 0x0b, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x52, 0x23, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x7f, 0x40, 0x0a, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0x77, 0x62, 0x73, 0xeb, 0xcf, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xfb, 0x80, 0xed, 0xf5, 0xd2, 0x00, 0x00, 0x00, -0x00, 0x14, 0x65, 0x3b, 0x84, 0x00, 0x00, 0x00, 0x9c, 0x41, 0xda, 0x05, 0xa4, 0x00, 0x00, 0x00, -0x35, 0x02, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x9e, 0x2f, 0xfd, 0x07, 0xc8, 0x00, 0x00, 0x00, -0x0c, 0x00, 0xbd, 0x15, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x40, 0xda, 0x25, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x48, 0x0b, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x2f, 0x35, 0xd2, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x7a, 0x40, 0x9a, 0x0b, 0xa4, 0x00, 0x00, 0x00, -0xeb, 0x87, 0xed, 0xff, 0xd2, 0x00, 0x00, 0x00, 0x5d, 0x40, 0xca, 0x09, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0xba, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x77, 0x40, 0x6a, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x93, 0x00, 0x8f, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x05, 0x02, 0x9e, 0x0f, 0xa4, 0x00, 0x00, 0x00, -0x07, 0x22, 0x4e, 0x20, 0xe1, 0x00, 0x00, 0x00, 0x33, 0x41, 0x6a, 0x20, 0xe3, 0x00, 0x00, 0x00, -0x02, 0x42, 0x2e, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x35, 0x02, 0x1c, 0x20, 0xe7, 0x00, 0x00, 0x00, -0xb6, 0x40, 0x7a, 0x07, 0xa4, 0x00, 0x00, 0x00, 0xfb, 0x80, 0xed, 0x0a, 0xd3, 0x00, 0x00, 0x00, -0x9c, 0x40, 0xda, 0x05, 0xa4, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3f, 0x08, 0xf0, 0x00, 0x00, 0x00, -0x35, 0x02, 0xbc, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x5b, 0x81, 0x8d, 0x17, 0xa4, 0x00, 0x00, 0x00, -0x5d, 0x41, 0xca, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xea, 0x2d, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x21, 0x04, 0x0d, 0x48, 0xd0, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x2d, 0x30, 0xd0, 0x00, 0x00, 0x00, -0x35, 0x00, 0x4d, 0x12, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x81, 0xf9, 0x0d, 0x82, 0xdf, 0x00, 0x00, 0x00, -0xe3, 0xfd, 0x2d, 0xbb, 0xdf, 0x00, 0x00, 0x00, 0x25, 0x00, 0x4d, 0xf5, 0xdf, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, -0xe1, 0x05, 0x0d, 0x7e, 0xd0, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x2d, 0x31, 0xd0, 0x00, 0x00, 0x00, -0xb5, 0xff, 0x4d, 0xfc, 0xdf, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x31, 0xfa, 0x0d, 0x80, 0xdf, 0x00, 0x00, 0x00, -0xa3, 0xff, 0x2d, 0xd3, 0xdf, 0x00, 0x00, 0x00, 0x95, 0x00, 0x4d, 0x0a, 0xd0, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, -0xc1, 0x06, 0x0d, 0x6f, 0xd0, 0x00, 0x00, 0x00, 0x53, 0x05, 0x2d, 0x64, 0xd0, 0x00, 0x00, 0x00, -0x95, 0x02, 0x4d, 0x40, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x87, 0x00, 0x6d, 0x15, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x02, 0xd0, 0x00, 0x00, 0x00, -0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0d, 0x58, 0xd0, 0x00, 0x00, 0x00, -0x13, 0xff, 0x2d, 0x03, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x4d, 0xf5, 0xdf, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x21, 0x02, 0x0d, 0x67, 0xd0, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x2d, 0xf5, 0xdf, 0x00, 0x00, 0x00, -0xd5, 0xff, 0x4d, 0x04, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x48, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x4a, 0x80, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0xbf, 0x46, 0xd3, 0x00, 0x00, 0x00, -0x58, 0x40, 0x2a, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xb9, 0xfe, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, -0x26, 0x41, 0x4a, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x40, 0x53, 0x00, 0x00, 0x00, -0x95, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x83, 0x00, 0x4f, 0x0d, 0x20, 0x00, 0x00, 0x00, -0xdb, 0x34, 0x3d, 0x20, 0xe3, 0x00, 0x00, 0x00, 0x1e, 0x40, 0x4a, 0x03, 0xdd, 0x00, 0x00, 0x00, -0x83, 0x00, 0x0f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x4a, 0x80, 0x3c, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x19, 0xc7, 0x09, 0x00, 0x60, 0x00, 0x00, 0x00, 0x91, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x48, 0x02, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x80, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, -0x5b, 0x35, 0x3d, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8a, 0x25, 0xa0, 0x00, 0x00, 0x00, -0xb9, 0xfe, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x26, 0x41, 0x4a, 0x0f, 0xa4, 0x00, 0x00, 0x00, -0x95, 0x03, 0x0c, 0x40, 0x53, 0x00, 0x00, 0x00, 0xd4, 0x40, 0x0a, 0x80, 0x13, 0x00, 0x00, 0x00, -0x03, 0x32, 0x3e, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x34, 0xd0, 0xbd, 0x5b, 0xd3, 0x00, 0x00, 0x00, -0x95, 0x03, 0x7c, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xbf, 0xe0, 0x2c, 0x82, 0xca, 0x00, 0x00, 0x00, -0x06, 0x22, 0x7e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0xbd, 0x5f, 0xd3, 0x00, 0x00, 0x00, -0x83, 0x00, 0x0f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0x3d, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x16, 0xdb, 0x79, 0x0b, 0x60, 0x00, 0x00, 0x00, 0x48, 0x80, 0x1c, 0x82, 0x32, 0x00, 0x00, 0x00, -0x00, 0x0e, 0x1a, 0x2e, 0x88, 0x00, 0x00, 0x00, 0x83, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x6b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x4a, 0x50, 0x00, 0x00, 0x00, -0x91, 0x03, 0x0c, 0x40, 0x11, 0x00, 0x00, 0x00, 0x82, 0x80, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x95, 0x03, 0xec, 0xc0, 0xc9, 0x00, 0x00, 0x00, 0x8e, 0x9c, 0x2c, 0x20, 0xe2, 0x00, 0x00, 0x00, -0x06, 0x22, 0x7e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0xbd, 0x6d, 0xd3, 0x00, 0x00, 0x00, -0x83, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xc6, 0x80, 0x0c, 0xdf, 0x26, 0x00, 0x00, 0x00, -0xa8, 0xe4, 0x4c, 0x01, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x76, 0x83, 0x71, 0x57, 0x00, 0x00, 0x00, -0x95, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x98, 0x41, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, -0x06, 0x22, 0x7e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0xbd, 0x75, 0xd3, 0x00, 0x00, 0x00, -0x1a, 0x41, 0x7a, 0xe3, 0x27, 0x00, 0x00, 0x00, 0x63, 0xc4, 0x68, 0x8b, 0x30, 0x00, 0x00, 0x00, -0x40, 0x82, 0x0c, 0x80, 0x58, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x88, 0x53, 0x30, 0x00, 0x00, 0x00, -0x49, 0x80, 0x0c, 0x40, 0x58, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x98, 0x8b, 0x30, 0x00, 0x00, 0x00, -0xe1, 0x04, 0x23, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x84, 0x05, 0x40, 0x8c, 0x00, 0x00, 0x00, -0x15, 0x50, 0xa6, 0x04, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xa0, 0x60, 0x00, 0x00, 0x00, -0x00, 0x2a, 0x03, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, 0x76, 0x81, 0x2b, 0x88, 0x00, 0x00, 0x00, -0xb6, 0x82, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x03, 0x60, 0x17, 0x00, 0x00, 0x00, -0x00, 0x76, 0x71, 0x2b, 0x88, 0x00, 0x00, 0x00, 0xba, 0x82, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, -0x00, 0x2a, 0x03, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0x76, 0x01, 0x20, 0x88, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x08, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x09, 0x81, 0x0c, 0x26, 0xa2, 0x00, 0x00, 0x00, -0x83, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x22, 0x47, 0x08, 0x8b, 0x31, 0x00, 0x00, 0x00, -0x00, 0x14, 0x08, 0x40, 0x53, 0x00, 0x00, 0x00, 0xe6, 0x18, 0x43, 0x26, 0xa1, 0x00, 0x00, 0x00, -0x22, 0x35, 0x05, 0xe0, 0x84, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0xa0, 0x80, 0x00, 0x00, 0x00, -0x00, 0x04, 0x08, 0x06, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x07, 0xc8, 0x00, 0x00, 0x00, -0xd6, 0x01, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05, 0xa4, 0x00, 0x00, 0x00, -0x42, 0x02, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfa, 0x25, 0xa0, 0x00, 0x00, 0x00, -0x87, 0xc0, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x83, 0x00, 0x1f, 0x26, 0xd0, 0x00, 0x00, 0x00, -0x7e, 0x48, 0x26, 0x95, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x48, 0x46, 0x83, 0x64, 0x00, 0x00, 0x00, -0xe1, 0x52, 0x06, 0x20, 0x61, 0x00, 0x00, 0x00, 0x60, 0x1b, 0x01, 0xa0, 0x67, 0x00, 0x00, 0x00, -0x00, 0x42, 0x01, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x07, 0xb9, 0x6b, 0x10, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x4b, 0xa1, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x40, 0xea, 0xb5, 0xa0, 0x00, 0x00, 0x00, 0x9f, 0x80, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x4b, 0x02, 0xcd, 0xbc, 0xd3, 0x00, 0x00, 0x00, 0x10, 0x00, 0xaf, 0x24, 0xd0, 0x00, 0x00, 0x00, -0x0b, 0x00, 0x9d, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0xf6, 0x0f, 0x5d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xe8, 0x04, 0x1d, 0x04, 0xf0, 0x00, 0x00, 0x00, -0x11, 0x00, 0x0d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x2d, 0x01, 0xd0, 0x00, 0x00, 0x00, -0x15, 0x00, 0x4d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x00, 0x6f, 0x01, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x7d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x6f, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x9d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x04, 0x00, 0x3d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x5d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x07, 0x00, 0x6d, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xf1, 0x7f, 0x0d, 0x5b, 0xd0, 0x00, 0x00, 0x00, -0x03, 0x00, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x4b, 0xc7, 0xb2, 0x00, 0x00, 0x00, -0x54, 0x28, 0x0b, 0x40, 0x51, 0x00, 0x00, 0x00, 0x03, 0x12, 0x0e, 0x02, 0xf0, 0x00, 0x00, 0x00, -0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8c, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x01, 0x00, 0x9d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x20, 0x00, 0x5d, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x08, 0xe9, 0x00, 0x00, 0x00, -0x30, 0x40, 0x1a, 0xbe, 0x25, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2a, 0x1b, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x1a, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x01, 0xe0, 0x15, 0x00, 0x00, 0x00, -0xf8, 0x80, 0x63, 0x2b, 0x79, 0x00, 0x00, 0x00, 0x27, 0x27, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, -0x00, 0x16, 0x78, 0x6d, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x86, 0x08, 0xa0, 0x34, 0x00, 0x00, 0x00, -0xc0, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x08, 0xc0, 0x33, 0x00, 0x00, 0x00, 0x10, 0x40, 0x0a, 0x1a, 0xa4, 0x00, 0x00, 0x00, -0x93, 0x4b, 0x23, 0x39, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xd5, 0x88, 0x00, 0x00, 0x00, -0xd5, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x10, 0x00, 0xcf, 0xd2, 0xd3, 0x00, 0x00, 0x00, -0x00, 0x3c, 0x03, 0x60, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xa0, 0x41, 0x0a, 0x21, 0x8c, 0x00, 0x00, 0x00, 0x92, 0x41, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0xca, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x08, 0xe9, 0x00, 0x00, 0x00, -0xb2, 0x41, 0x1a, 0xbe, 0x25, 0x00, 0x00, 0x00, 0x54, 0x40, 0x0a, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x6e, 0x31, 0xf3, 0x15, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0x2b, 0x79, 0x00, 0x00, 0x00, -0x00, 0x46, 0x08, 0x80, 0x36, 0x00, 0x00, 0x00, 0xe3, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xd8, 0x97, 0x8c, 0xaf, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb3, 0xeb, 0x14, 0x00, 0x00, 0x00, -0x00, 0x4e, 0x12, 0x3e, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x78, 0x92, 0x36, 0x00, 0x00, 0x00, -0x17, 0x97, 0x0c, 0xa0, 0x34, 0x00, 0x00, 0x00, 0xd5, 0x03, 0x0c, 0x40, 0x88, 0x00, 0x00, 0x00, -0x00, 0x4c, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xa0, 0x41, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x92, 0x05, 0x0a, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x27, 0x27, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0xdd, 0x03, 0x0c, 0x4e, 0x84, 0x00, 0x00, 0x00, -0xf5, 0x03, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x40, 0xb6, 0x69, 0x23, 0x00, 0x00, 0x00, 0x00, 0x74, 0x93, 0x73, 0x3b, 0x00, 0x00, 0x00, -0xf5, 0x46, 0x93, 0xcd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x98, 0x10, 0xc8, 0x00, 0x00, 0x00, -0xd5, 0x28, 0x03, 0xe0, 0x13, 0x00, 0x00, 0x00, 0xdd, 0x03, 0x7c, 0x52, 0x80, 0x00, 0x00, 0x00, -0x00, 0x3e, 0x73, 0xb2, 0xa0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0xae, 0x85, 0x00, 0x00, 0x00, -0x7a, 0x41, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x4b, 0xd3, 0x00, 0xd0, 0x00, 0x00, 0x00, -0xfd, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xbc, 0x05, 0xcd, 0x3d, 0x88, 0x00, 0x00, 0x00, -0x74, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xba, 0x43, 0xcd, 0xfc, 0xd3, 0x00, 0x00, 0x00, -0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xdb, 0x4a, 0xc3, 0xbc, 0xd3, 0x00, 0x00, 0x00, -0xd5, 0x86, 0x78, 0x71, 0xc9, 0x00, 0x00, 0x00, 0xbf, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x10, 0xc2, 0x08, 0xc0, 0x34, 0x00, 0x00, 0x00, -0x92, 0x05, 0x0a, 0x1a, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x41, 0x4a, 0x08, 0xe9, 0x00, 0x00, 0x00, -0x90, 0x81, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x68, 0xcb, 0x2d, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x00, 0xa7, 0x37, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x21, 0x79, 0x00, 0x00, 0x00, -0x12, 0x92, 0x07, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x13, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, -0x14, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x15, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, -0x16, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x17, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, -0x18, 0xe0, 0xcf, 0x0b, 0x70, 0x00, 0x00, 0x00, 0x30, 0x2f, 0x01, 0x01, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x0c, 0xc8, 0x49, 0x33, 0x00, 0x00, 0x00, 0x14, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xd0, 0xa1, 0xfc, 0x88, 0xd0, 0x00, 0x00, 0x00, 0x7f, 0x04, 0xda, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xad, 0x21, 0xd4, 0x00, 0x00, 0x00, -0x00, 0x40, 0xca, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x48, 0x06, 0x80, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0x06, 0x80, 0x64, 0x00, 0x00, 0x00, -0x00, 0x40, 0xea, 0x31, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfa, 0x0b, 0x51, 0x00, 0x00, 0x00, -0x7f, 0x20, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0xfa, 0x0b, 0x51, 0x00, 0x00, 0x00, 0x7f, 0x20, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfa, 0x0b, 0x51, 0x00, 0x00, 0x00, -0x7f, 0x20, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xfb, 0x0b, 0x51, 0x00, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x48, 0xd4, 0x01, 0x4c, 0x00, 0x00, 0x00, -0x20, 0x00, 0x0f, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x8c, 0x80, 0xec, 0x23, 0x21, 0x00, 0x00, 0x00, -0x75, 0x13, 0x24, 0x3f, 0xc8, 0x00, 0x00, 0x00, 0xe1, 0x45, 0x08, 0x00, 0x37, 0x00, 0x00, 0x00, -0x00, 0x40, 0x1a, 0x06, 0xa4, 0x00, 0x00, 0x00, 0x70, 0x46, 0x38, 0x2f, 0x15, 0x00, 0x00, 0x00, -0xa0, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x23, 0x2a, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0xd4, 0x05, 0x32, 0x8c, 0x00, 0x00, 0x00, 0x55, 0xf9, 0x09, 0x60, 0x63, 0x00, 0x00, 0x00, -0x50, 0xc2, 0x78, 0xfa, 0x21, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0f, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x01, 0x18, 0x2d, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0x17, 0x93, 0x28, 0x80, 0xd1, 0x00, 0x00, 0x00, -0x00, 0x1e, 0x03, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x14, 0x0d, 0x00, 0x81, 0x00, 0x00, 0x00, -0x00, 0x0a, 0x2a, 0x40, 0xd1, 0x00, 0x00, 0x00, 0x02, 0x10, 0x1d, 0x00, 0xd1, 0x00, 0x00, 0x00, -0x01, 0x1c, 0x0d, 0x40, 0xa0, 0x00, 0x00, 0x00, 0xba, 0x02, 0x2d, 0xc0, 0xd1, 0x00, 0x00, 0x00, -0xe6, 0x03, 0x68, 0x71, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1e, 0xa4, 0x00, 0x00, 0x00, -0x49, 0x00, 0x9f, 0x5d, 0xb6, 0x00, 0x00, 0x00, 0xdc, 0x41, 0x9a, 0x8d, 0xd4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xaa, 0x3b, 0xd4, 0x00, 0x00, 0x00, -0xa1, 0x40, 0x0a, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x47, 0xb6, 0x00, 0x00, 0x00, -0x3e, 0xe4, 0x25, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0xf9, 0x20, 0xb5, 0x17, 0xa4, 0x00, 0x00, 0x00, -0x8f, 0x81, 0x0c, 0xd2, 0x15, 0x00, 0x00, 0x00, 0x27, 0x5f, 0x98, 0x89, 0x31, 0x00, 0x00, 0x00, -0x2d, 0x81, 0x0c, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x13, 0x9a, 0x88, 0x00, 0x00, 0x00, -0x62, 0x04, 0xbc, 0xd5, 0x8a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x5a, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x4f, 0xf7, 0x27, 0x00, 0x00, 0x00, -0x94, 0x5b, 0x12, 0x15, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x05, 0x20, 0xa0, 0x00, 0x00, 0x00, -0x5a, 0x04, 0xfc, 0x5a, 0x80, 0x00, 0x00, 0x00, 0x60, 0x34, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x00, 0x62, 0x40, 0x2e, 0x88, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x08, 0xc0, 0x17, 0x00, 0x00, 0x00, -0x00, 0x3e, 0x03, 0xe0, 0x27, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x0c, 0x40, 0x8c, 0x00, 0x00, 0x00, -0x20, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x76, 0x40, 0x9a, 0x18, 0xc8, 0x00, 0x00, 0x00, -0xe2, 0x1c, 0x13, 0x8a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x26, 0x71, 0x27, 0x88, 0x00, 0x00, 0x00, -0x78, 0x82, 0x48, 0xce, 0x31, 0x00, 0x00, 0x00, 0x16, 0x1d, 0x03, 0x60, 0x12, 0x00, 0x00, 0x00, -0x79, 0x82, 0x88, 0x0c, 0xc8, 0x00, 0x00, 0x00, 0x17, 0x1d, 0x03, 0x60, 0x12, 0x00, 0x00, 0x00, -0x18, 0x83, 0x08, 0x0d, 0xc8, 0x00, 0x00, 0x00, 0x19, 0x41, 0x0a, 0x60, 0x12, 0x00, 0x00, 0x00, -0x00, 0x40, 0x1a, 0x09, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0f, 0x01, 0xf0, 0x00, 0x00, 0x00, -0xf6, 0x10, 0xb6, 0x95, 0x24, 0x00, 0x00, 0x00, 0xb7, 0xb9, 0x21, 0x3d, 0x61, 0x00, 0x00, 0x00, -0xd6, 0xe8, 0x81, 0x3f, 0x61, 0x00, 0x00, 0x00, 0x97, 0xf9, 0x91, 0x2f, 0x61, 0x00, 0x00, 0x00, -0xd8, 0x13, 0x06, 0x7a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x15, 0x8b, 0x1b, 0x00, 0x00, 0x00, -0x93, 0x40, 0x9a, 0x0d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x08, 0xaa, 0x64, 0xd4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0f, 0x01, 0xf0, 0x00, 0x00, 0x00, -0xf4, 0x40, 0xea, 0x23, 0x21, 0x00, 0x00, 0x00, 0x00, 0x32, 0x03, 0x1f, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x3f, 0xaa, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x08, 0xaa, 0x24, 0xd0, 0x00, 0x00, 0x00, 0xa2, 0x74, 0x33, 0x03, 0xf0, 0x00, 0x00, 0x00, -0x15, 0x0e, 0x08, 0x80, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x14, 0x1d, 0x4a, 0x37, 0x00, 0x00, 0x00, -0x00, 0x74, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0xd1, 0x00, 0x00, 0x00, -0x53, 0x64, 0x0b, 0xc0, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4c, 0x05, 0xa4, 0x00, 0x00, 0x00, -0x58, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xaa, 0x73, 0xd4, 0x00, 0x00, 0x00, -0x33, 0x00, 0x0f, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x64, 0xeb, 0x03, 0xa4, 0x00, 0x00, 0x00, -0xf4, 0x40, 0x3a, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x40, 0x11, 0x00, 0x00, 0x00, -0x00, 0x90, 0x0f, 0x15, 0xc8, 0x00, 0x00, 0x00, 0x30, 0x3b, 0x01, 0xa0, 0x11, 0x00, 0x00, 0x00, -0xb8, 0x49, 0x47, 0x17, 0x70, 0x00, 0x00, 0x00, 0x10, 0x5b, 0xc7, 0x1f, 0x70, 0x00, 0x00, 0x00, -0x54, 0x6d, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x98, 0x01, 0x07, 0x15, 0xc8, 0x00, 0x00, 0x00, -0xdc, 0x91, 0x0f, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x30, 0x3b, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xb8, 0x49, 0x47, 0x17, 0x70, 0x00, 0x00, 0x00, 0x10, 0x5b, 0xc7, 0x1f, 0x70, 0x00, 0x00, 0x00, -0x54, 0x6d, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x31, 0x81, 0x8c, 0x19, 0x70, 0x00, 0x00, 0x00, -0xdc, 0x39, 0x13, 0xe6, 0x77, 0x00, 0x00, 0x00, 0x00, 0x96, 0x38, 0x03, 0xf0, 0x00, 0x00, 0x00, -0x4b, 0x81, 0x8c, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x64, 0x4b, 0x03, 0x2e, 0x14, 0x00, 0x00, 0x00, -0x20, 0x23, 0x81, 0xd1, 0x88, 0x00, 0x00, 0x00, 0x18, 0x87, 0x08, 0xae, 0x32, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xac, 0x21, 0xd4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3a, 0x03, 0xf0, 0x00, 0x00, 0x00, 0xd4, 0x04, 0x3a, 0x09, 0xa4, 0x00, 0x00, 0x00, -0xe3, 0x40, 0x3a, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x76, 0x76, 0x46, 0x1b, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x1e, 0x71, 0x6b, 0x7c, 0x00, 0x00, 0x00, 0x7a, 0xe9, 0x28, 0x23, 0x33, 0x00, 0x00, 0x00, -0x00, 0x28, 0x13, 0xe6, 0x12, 0x00, 0x00, 0x00, 0xa7, 0x04, 0x7c, 0xc9, 0x88, 0x00, 0x00, 0x00, -0x31, 0x5e, 0x61, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0xe5, 0x0d, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xf9, 0x27, 0x13, 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x44, 0xa8, 0x09, 0xc8, 0x00, 0x00, 0x00, -0xa2, 0x40, 0x9a, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0x21, 0x85, 0x08, 0x80, 0x37, 0x00, 0x00, 0x00, -0x00, 0x02, 0x0a, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0x40, 0x20, 0x00, 0x00, 0x00, -0xa1, 0x40, 0x3a, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6a, 0x05, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x88, 0x08, 0x40, 0x27, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x39, 0x09, 0xda, 0x59, 0xca, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x5a, 0x09, 0x2a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0xa0, 0xfe, 0x0c, 0x00, 0xf8, 0x00, 0x00, 0x00, -0x00, 0xe0, 0x0b, 0x07, 0xfd, 0x00, 0x00, 0x00, 0x60, 0x22, 0x05, 0x2f, 0x41, 0x00, 0x00, 0x00, -0xa1, 0xb2, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0f, 0x8d, 0x10, 0x00, 0x00, 0x00, -0x00, 0x88, 0x08, 0x40, 0x27, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x21, 0x09, 0x7a, 0x5a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x33, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x12, 0x54, 0x91, 0xae, 0xd4, 0x00, 0x00, 0x00, -0x00, 0x40, 0xaa, 0x35, 0xa0, 0x00, 0x00, 0x00, 0xe5, 0x13, 0x32, 0x03, 0xf0, 0x00, 0x00, 0x00, -0x7a, 0xa5, 0x23, 0x43, 0x22, 0x00, 0x00, 0x00, 0x00, 0x88, 0x08, 0x40, 0x27, 0x00, 0x00, 0x00, -0xa2, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x21, 0x09, 0x0a, 0x5b, 0xca, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x04, 0x9a, 0xb6, 0xd4, 0x00, 0x00, 0x00, 0xa2, 0x5b, 0xb2, 0x02, 0xf0, 0x00, 0x00, 0x00, -0x20, 0x37, 0x62, 0x43, 0x22, 0x00, 0x00, 0x00, 0x77, 0x80, 0x67, 0xd5, 0x00, 0x00, 0x00, 0x00, -0x30, 0x1c, 0x70, 0x55, 0x3a, 0x00, 0x00, 0x00, 0x50, 0xa5, 0x43, 0x3a, 0x79, 0x00, 0x00, 0x00, -0x2b, 0x00, 0x3f, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x24, 0xb6, 0xe9, 0x27, 0x00, 0x00, 0x00, -0x00, 0x24, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe0, 0x77, 0x00, 0x00, 0x00, -0x51, 0xb7, 0x13, 0x07, 0x78, 0x00, 0x00, 0x00, 0x32, 0x92, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, -0x00, 0x0c, 0x20, 0x75, 0x3b, 0x00, 0x00, 0x00, 0x53, 0xb7, 0x33, 0x07, 0x78, 0x00, 0x00, 0x00, -0x34, 0x92, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x95, 0x3c, 0x00, 0x00, 0x00, -0x55, 0xc9, 0x53, 0x07, 0x78, 0x00, 0x00, 0x00, 0x00, 0x92, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, -0x00, 0x28, 0x06, 0x80, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x24, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, -0x00, 0x24, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x20, 0x7e, 0x37, 0x03, 0xf0, 0x00, 0x00, 0x00, -0x62, 0x7f, 0x17, 0x67, 0x62, 0x00, 0x00, 0x00, 0xdc, 0x7e, 0x27, 0x45, 0x62, 0x00, 0x00, 0x00, -0x17, 0x7e, 0xd7, 0x51, 0x62, 0x00, 0x00, 0x00, 0x24, 0x16, 0xa3, 0xbd, 0x59, 0x00, 0x00, 0x00, -0x23, 0x06, 0x13, 0x36, 0x8d, 0x00, 0x00, 0x00, 0x25, 0x06, 0x13, 0xf6, 0x80, 0x00, 0x00, 0x00, -0x26, 0x06, 0x23, 0xb6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x33, 0x76, 0x80, 0x00, 0x00, 0x00, -0x67, 0x41, 0x5a, 0x36, 0x80, 0x00, 0x00, 0x00, 0xe1, 0xd3, 0x48, 0x82, 0x31, 0x00, 0x00, 0x00, -0xe1, 0x0f, 0x38, 0x82, 0x30, 0x00, 0x00, 0x00, 0xe2, 0x0b, 0x58, 0x82, 0x30, 0x00, 0x00, 0x00, -0xe3, 0x07, 0x68, 0x82, 0x30, 0x00, 0x00, 0x00, 0xe5, 0x03, 0x08, 0x80, 0x30, 0x00, 0x00, 0x00, -0x20, 0x00, 0x7f, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0xf0, 0x1c, 0x01, 0x20, 0x66, 0x00, 0x00, 0x00, -0x00, 0x32, 0x13, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x53, 0x41, 0x2a, 0x5a, 0x84, 0x00, 0x00, 0x00, -0xa1, 0x3d, 0x73, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x52, 0x41, 0x0a, 0x40, 0x84, 0x00, 0x00, 0x00, -0x00, 0x3c, 0x63, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x41, 0x0a, 0x5a, 0x84, 0x00, 0x00, 0x00, -0x00, 0x3c, 0x53, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x50, 0x41, 0x0a, 0x40, 0x84, 0x00, 0x00, 0x00, -0x00, 0x00, 0x4f, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x08, 0x9a, 0xe6, 0xd4, 0x00, 0x00, 0x00, 0x66, 0x40, 0x3a, 0x03, 0xf0, 0x00, 0x00, 0x00, -0x7a, 0x63, 0x96, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x32, 0x14, 0x18, 0x5e, 0x31, 0x00, 0x00, 0x00, -0xe6, 0xa2, 0x08, 0xe0, 0x26, 0x00, 0x00, 0x00, 0x13, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x80, 0x9f, 0x04, 0xc8, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x0c, 0x20, 0x10, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x27, 0xa0, 0x00, 0x00, 0x00, 0xe6, 0x8e, 0x08, 0xe0, 0x26, 0x00, 0x00, 0x00, -0x0e, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2f, 0x05, 0xc8, 0x00, 0x00, 0x00, -0x00, 0xc1, 0x0c, 0x20, 0x10, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0f, 0x27, 0xa0, 0x00, 0x00, 0x00, -0x77, 0xda, 0x47, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0xb9, 0x1e, 0xa1, 0x11, 0xc8, 0x00, 0x00, 0x00, -0x57, 0x50, 0x38, 0x6e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xc0, 0xc1, 0x1c, 0x43, 0x22, 0x00, 0x00, 0x00, 0x71, 0x7a, 0x65, 0xc9, 0x10, 0x00, 0x00, 0x00, -0x52, 0x40, 0x7a, 0x09, 0xf8, 0x00, 0x00, 0x00, 0xe6, 0x44, 0xa8, 0x75, 0x31, 0x00, 0x00, 0x00, -0x22, 0x41, 0x9a, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x44, 0x08, 0x60, 0x32, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xc0, 0x20, 0x00, 0x00, 0x00, -0x12, 0x40, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x7e, 0xff, 0x2c, 0xa3, 0x5e, 0x00, 0x00, 0x00, -0xb4, 0x0a, 0x35, 0xe7, 0x48, 0x00, 0x00, 0x00, 0xf5, 0x1a, 0x25, 0xe1, 0x49, 0x00, 0x00, 0x00, -0x36, 0x2b, 0x35, 0xe5, 0x4a, 0x00, 0x00, 0x00, 0x94, 0x3a, 0x75, 0xe3, 0x4b, 0x00, 0x00, 0x00, -0x78, 0xec, 0x57, 0xed, 0x4c, 0x00, 0x00, 0x00, 0x16, 0x8d, 0x04, 0xa0, 0x54, 0x00, 0x00, 0x00, -0x00, 0x9c, 0x94, 0xab, 0x50, 0x00, 0x00, 0x00, 0xfa, 0xac, 0x74, 0xa1, 0x51, 0x00, 0x00, 0x00, -0x3b, 0xbd, 0x84, 0xa5, 0x52, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xda, 0xcc, 0x94, 0xa9, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa0, 0x54, 0x00, 0x00, 0x00, -0x89, 0x51, 0xbd, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x6c, 0xab, 0x54, 0x00, 0x00, 0x00, -0xee, 0x04, 0xcc, 0x8f, 0x49, 0x00, 0x00, 0x00, 0x50, 0xa8, 0x04, 0xe0, 0x51, 0x00, 0x00, 0x00, -0x96, 0xb8, 0x04, 0xe0, 0x52, 0x00, 0x00, 0x00, 0xdc, 0x40, 0x1a, 0xfe, 0x53, 0x00, 0x00, 0x00, -0xfe, 0xff, 0x3c, 0xab, 0x54, 0x00, 0x00, 0x00, 0xe9, 0x04, 0x6c, 0x8f, 0x49, 0x00, 0x00, 0x00, -0x50, 0xa8, 0x04, 0xe0, 0x51, 0x00, 0x00, 0x00, 0x93, 0xb8, 0x04, 0xe0, 0x52, 0x00, 0x00, 0x00, -0xd6, 0x40, 0x1a, 0xfe, 0x53, 0x00, 0x00, 0x00, 0x1f, 0x81, 0x3c, 0x03, 0xf0, 0x00, 0x00, 0x00, -0xa6, 0x41, 0x7a, 0x03, 0xa4, 0x00, 0x00, 0x00, 0xbc, 0x40, 0x23, 0x0e, 0xa4, 0x00, 0x00, 0x00, -0xbd, 0x40, 0x9a, 0x37, 0x8c, 0x00, 0x00, 0x00, 0xa2, 0x03, 0x18, 0xd2, 0x35, 0x00, 0x00, 0x00, -0x32, 0x44, 0x03, 0x60, 0x63, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x1a, 0x1e, 0x8a, 0x00, 0x00, 0x00, -0x00, 0x40, 0x6a, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x90, 0x08, 0xe0, 0x22, 0x00, 0x00, 0x00, -0x3d, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, -0xff, 0xc7, 0x0c, 0x07, 0xa4, 0x00, 0x00, 0x00, 0xc0, 0xb9, 0x0c, 0x36, 0x7c, 0x00, 0x00, 0x00, -0x34, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x65, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xb6, 0x41, 0x2a, 0x6a, 0x85, 0x00, 0x00, 0x00, 0x00, 0xac, 0x08, 0xe0, 0x22, 0x00, 0x00, 0x00, -0x46, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, -0x60, 0xff, 0x0c, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x14, 0x3e, 0x7c, 0x00, 0x00, 0x00, -0x60, 0xff, 0x6c, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x94, 0x08, 0xe0, 0x22, 0x00, 0x00, 0x00, -0x00, 0x06, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x2e, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09, 0xa0, 0x51, 0x00, 0x00, 0x00, -0x00, 0x6e, 0x01, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x80, 0x82, 0x3c, 0x03, 0xf0, 0x00, 0x00, 0x00, -0x77, 0x44, 0x26, 0x0e, 0xa4, 0x00, 0x00, 0x00, 0x79, 0x17, 0xf1, 0x1f, 0xc8, 0x00, 0x00, 0x00, -0x96, 0x47, 0x68, 0x92, 0x31, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, 0x80, 0x35, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x41, 0x31, 0x00, 0x00, 0x00, -0x56, 0x00, 0x7f, 0x65, 0x84, 0x00, 0x00, 0x00, 0x92, 0x41, 0x9a, 0x4a, 0xd5, 0x00, 0x00, 0x00, -0xee, 0x1f, 0x01, 0xe0, 0x51, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x80, 0x7c, 0x00, 0x00, 0x00, -0x00, 0xfa, 0x01, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x80, 0x7c, 0x00, 0x00, 0x00, -0xff, 0xc7, 0x0c, 0xf6, 0xcf, 0x00, 0x00, 0x00, 0x20, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x1e, 0x05, 0x20, 0x8c, 0x00, 0x00, 0x00, 0xe1, 0x85, 0x09, 0x25, 0x55, 0x00, 0x00, 0x00, -0x00, 0x6e, 0x01, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x28, 0x05, 0x0c, 0x80, 0x7c, 0x00, 0x00, 0x00, -0x00, 0x04, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09, 0x20, 0x55, 0x00, 0x00, 0x00, -0x00, 0x6e, 0x01, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x36, 0x84, 0x6c, 0x05, 0xf0, 0x00, 0x00, 0x00, -0xb2, 0x48, 0x34, 0x87, 0x24, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0xef, 0x27, 0x00, 0x00, 0x00, -0x7f, 0xbe, 0x0c, 0x20, 0x94, 0x00, 0x00, 0x00, 0x53, 0x30, 0x13, 0x93, 0x23, 0x00, 0x00, 0x00, -0xd0, 0x49, 0x06, 0x8d, 0x88, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x31, 0x3d, 0x65, 0x00, 0x00, 0x00, -0x49, 0x00, 0x1f, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xb1, 0x41, 0x0a, 0x60, 0x23, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0f, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x49, 0x02, 0x0d, 0x60, 0x30, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x9a, 0x5a, 0xd5, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3a, 0x08, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x1a, 0x79, 0xa0, 0x00, 0x00, 0x00, 0x4b, 0x82, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, -0x49, 0x00, 0xcf, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x20, 0x32, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0d, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0x6c, 0x05, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x00, 0xbf, 0x63, 0xd5, 0x00, 0x00, 0x00, -0x49, 0x00, 0x1f, 0x16, 0xc8, 0x00, 0x00, 0x00, 0xe6, 0x1a, 0x03, 0x1f, 0xa4, 0x00, 0x00, 0x00, -0x62, 0x6c, 0x02, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x49, 0x00, 0x3f, 0xd7, 0x46, 0x00, 0x00, 0x00, -0x71, 0x41, 0x0a, 0xbf, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x40, 0x1a, 0x02, 0xc8, 0x00, 0x00, 0x00, -0xf4, 0x40, 0x8a, 0x53, 0x80, 0x00, 0x00, 0x00, 0x74, 0x5c, 0x52, 0x13, 0xa4, 0x00, 0x00, 0x00, -0x0b, 0x12, 0x5e, 0x0b, 0x35, 0x00, 0x00, 0x00, 0x0c, 0x32, 0xbe, 0x20, 0xe2, 0x00, 0x00, 0x00, -0xe6, 0x40, 0xca, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x32, 0x24, 0xc2, 0x33, 0x8d, 0x00, 0x00, 0x00, -0x89, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa2, 0x03, 0x38, 0x67, 0x34, 0x00, 0x00, 0x00, -0xba, 0x0c, 0x01, 0x40, 0x06, 0x00, 0x00, 0x00, 0x53, 0x40, 0x2a, 0xc1, 0x11, 0x00, 0x00, 0x00, -0x8b, 0x82, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x81, 0x83, 0xcc, 0x07, 0xa4, 0x00, 0x00, 0x00, -0x00, 0xce, 0x08, 0x40, 0x31, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9c, 0x04, 0xf0, 0x00, 0x00, 0x00, -0x15, 0x00, 0x4d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x61, 0x46, 0x03, 0x20, 0xa0, 0x00, 0x00, 0x00, 0x33, 0x00, 0x3f, 0xea, 0x84, 0x00, 0x00, 0x00, -0x31, 0x40, 0x0a, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, 0xfe, 0x00, 0x00, 0x00, -0xf4, 0x28, 0x0a, 0x0b, 0x11, 0x00, 0x00, 0x00, 0xa2, 0x75, 0x13, 0x04, 0xf0, 0x00, 0x00, 0x00, -0xb3, 0x40, 0x0a, 0xe0, 0xc8, 0x00, 0x00, 0x00, 0xf4, 0x1c, 0x08, 0x86, 0xc8, 0x00, 0x00, 0x00, -0x20, 0x8e, 0x1c, 0xda, 0x37, 0x00, 0x00, 0x00, 0x40, 0x8c, 0x7c, 0x0b, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x7c, 0x23, 0x2f, 0x81, 0x00, 0x00, 0x00, 0xb1, 0x40, 0x0a, 0xa0, 0xc8, 0x00, 0x00, 0x00, -0xf6, 0x08, 0x08, 0xc6, 0xc8, 0x00, 0x00, 0x00, 0xb5, 0x40, 0x0a, 0xa2, 0xc8, 0x00, 0x00, 0x00, -0xf0, 0x40, 0x0a, 0x84, 0xc8, 0x00, 0x00, 0x00, 0x61, 0x41, 0x9a, 0x04, 0xf0, 0x00, 0x00, 0x00, -0x53, 0x40, 0x2a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0xdb, 0x40, 0xaa, 0x09, 0xa4, 0x00, 0x00, 0x00, -0x76, 0x40, 0x0a, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xa0, 0x81, 0x0c, 0x03, 0xa4, 0x00, 0x00, 0x00, -0xe6, 0xed, 0x09, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0xc0, 0x35, 0x00, 0x00, 0x00, -0x00, 0x02, 0x28, 0xe3, 0x34, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x16, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x98, 0x09, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x78, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x16, 0x0a, 0xde, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0a, 0x3e, 0x58, 0x00, 0x00, 0x00, -0xe0, 0xa1, 0x0a, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, -0x49, 0x00, 0x0f, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x14, 0x40, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x16, 0x40, 0x5a, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x41, 0x3a, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0xba, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x79, 0x40, 0x0a, 0x00, 0xf8, 0x00, 0x00, 0x00, -0xa0, 0x81, 0x0c, 0x03, 0xa4, 0x00, 0x00, 0x00, 0xe6, 0xed, 0x09, 0x00, 0x67, 0x00, 0x00, 0x00, -0x00, 0x24, 0x08, 0xc0, 0x35, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0xe3, 0x34, 0x00, 0x00, 0x00, -0x00, 0xe2, 0x16, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x98, 0x09, 0x00, 0x67, 0x00, 0x00, 0x00, -0x00, 0xa0, 0x0a, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0a, 0xde, 0x10, 0x00, 0x00, 0x00, -0x00, 0x12, 0x0a, 0x3e, 0x58, 0x00, 0x00, 0x00, 0xe0, 0xa1, 0x0a, 0x00, 0x78, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, -0x00, 0x80, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x0b, 0xe0, 0x77, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9a, 0x04, 0xf0, 0x00, 0x00, 0x00, -0xd8, 0x41, 0x7a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9a, 0x21, 0xa0, 0x00, 0x00, 0x00, -0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0xcd, 0xc4, 0xd5, 0x00, 0x00, 0x00, -0x54, 0x00, 0x3d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xdd, 0xff, 0xdf, 0x00, 0x00, 0x00, -0x06, 0x00, 0x5d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x7d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x0c, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x16, 0xfe, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4c, 0x0b, 0xa4, 0x00, 0x00, 0x00, -0xf0, 0x20, 0xe5, 0xe7, 0xcf, 0x00, 0x00, 0x00, 0x94, 0x32, 0x05, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xd0, 0x40, 0x3a, 0x20, 0xe2, 0x00, 0x00, 0x00, 0xa1, 0x40, 0x0a, 0x01, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x2c, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x14, 0xa1, 0x00, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x00, 0x2f, 0x25, 0x30, 0x00, 0x00, 0x00, 0x9c, 0x5c, 0x0d, 0x20, 0x8c, 0x00, 0x00, 0x00, -0x10, 0x00, 0xaf, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xf3, 0x7e, 0xb2, 0x08, 0xe9, 0x00, 0x00, 0x00, -0xa1, 0xd0, 0x57, 0x18, 0xc8, 0x00, 0x00, 0x00, 0x10, 0xc2, 0x09, 0x94, 0xc8, 0x00, 0x00, 0x00, -0x51, 0x0a, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x17, 0x32, 0x8e, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x69, 0x36, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x03, 0xe0, 0x01, 0x00, 0x00, 0x00, -0x93, 0x00, 0x0f, 0x60, 0x8d, 0x00, 0x00, 0x00, 0xf4, 0x67, 0x03, 0x80, 0x13, 0x00, 0x00, 0x00, -0x00, 0xd2, 0x88, 0x14, 0xc8, 0x00, 0x00, 0x00, 0xd4, 0x41, 0x0a, 0xa0, 0x17, 0x00, 0x00, 0x00, -0x03, 0x72, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0xca, 0xdb, 0xd5, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x08, 0x40, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x60, 0x23, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3a, 0xad, 0xa0, 0x00, 0x00, 0x00, -0x8a, 0x80, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x21, 0x71, 0xcb, 0xec, 0xd5, 0x00, 0x00, 0x00, -0x8b, 0x90, 0x0e, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x85, 0x81, 0x3c, 0xef, 0x27, 0x00, 0x00, 0x00, -0x5a, 0x95, 0x1c, 0x0a, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x21, 0x9c, 0x00, 0x00, 0x00, -0x00, 0x8c, 0x18, 0x05, 0x35, 0x00, 0x00, 0x00, 0x40, 0x89, 0x0c, 0x20, 0x7d, 0x00, 0x00, 0x00, -0x00, 0x1e, 0x00, 0x20, 0x9c, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x08, 0x20, 0x35, 0x00, 0x00, 0x00, -0x00, 0xd0, 0x08, 0x40, 0x23, 0x00, 0x00, 0x00, 0xb7, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x08, 0x0a, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x66, 0x03, 0x80, 0x13, 0x00, 0x00, 0x00, -0x00, 0xbc, 0x05, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3a, 0xad, 0xa0, 0x00, 0x00, 0x00, 0x21, 0x37, 0x02, 0x01, 0xf0, 0x00, 0x00, 0x00, -0x48, 0x81, 0x4c, 0x08, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2a, 0x42, 0x22, 0x00, 0x00, 0x00, -0x00, 0x8a, 0x08, 0x80, 0x25, 0x00, 0x00, 0x00, 0xef, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0xa6, 0x41, 0x3a, 0x79, 0x00, 0x00, 0x00, 0xf4, 0x2d, 0x03, 0x60, 0xa0, 0x00, 0x00, 0x00, -0x5f, 0xff, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x42, 0xcf, 0x80, 0x00, 0x00, 0x00, -0x00, 0xd0, 0x08, 0x02, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x51, 0xbe, 0x53, 0x00, 0x00, 0x00, -0x32, 0x80, 0x4c, 0xad, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x80, 0x17, 0x00, 0x00, 0x00, -0x00, 0xf0, 0x05, 0x20, 0x8c, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x06, 0xa0, 0x53, 0x00, 0x00, 0x00, -0x00, 0x88, 0x08, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0b, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x0c, 0xca, 0x04, 0xd6, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x30, 0xcb, 0xdb, 0xd5, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xdd, 0xff, 0xdf, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x32, 0x0e, 0x01, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x4a, 0x7d, 0xa0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x08, 0xe8, 0x00, 0x00, 0x00, -0xa3, 0x7f, 0x32, 0x08, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x2a, 0x79, 0x00, 0x00, 0x00, -0x61, 0x81, 0x27, 0x4e, 0x3a, 0x00, 0x00, 0x00, 0xe1, 0x26, 0x13, 0x52, 0x3a, 0x00, 0x00, 0x00, -0xf6, 0x26, 0x13, 0x76, 0x81, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x36, 0x81, 0x00, 0x00, 0x00, -0xd6, 0x86, 0x09, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, -0x00, 0x2a, 0x13, 0x96, 0xa0, 0x00, 0x00, 0x00, 0x61, 0x03, 0x0a, 0x40, 0x80, 0x00, 0x00, 0x00, -0xa1, 0x5a, 0x06, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x64, 0x02, 0xe0, 0x3f, 0x00, 0x00, 0x00, -0x06, 0x06, 0x0c, 0x40, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, -0xac, 0x61, 0x0d, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x64, 0x41, 0x5a, 0x13, 0xb7, 0x00, 0x00, 0x00, -0xf6, 0x4a, 0x31, 0x4a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x57, 0x34, 0x00, 0x00, 0x00, -0xe0, 0x56, 0x81, 0x5d, 0x88, 0x00, 0x00, 0x00, 0xd6, 0x40, 0x0a, 0xb2, 0x65, 0x00, 0x00, 0x00, -0x15, 0x41, 0x7a, 0x15, 0xa4, 0x00, 0x00, 0x00, 0x21, 0x40, 0x0a, 0x01, 0xf0, 0x00, 0x00, 0x00, -0xf8, 0x41, 0x9a, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xec, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, -0x7a, 0xec, 0x07, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0xd9, 0x6b, 0xb1, 0xeb, 0x65, 0x00, 0x00, 0x00, -0x00, 0x92, 0x07, 0xe0, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x92, 0x07, 0x20, 0x79, 0x00, 0x00, 0x00, -0x7c, 0x1d, 0x01, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x0f, 0xc8, 0x00, 0x00, 0x00, -0xa2, 0x3a, 0xb1, 0x89, 0x8d, 0x00, 0x00, 0x00, 0x9b, 0xb0, 0x2f, 0x11, 0xc8, 0x00, 0x00, 0x00, -0x10, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x00, 0x00, 0x60, 0x8a, 0x08, 0x85, 0x35, 0x00, 0x00, 0x00, -0x00, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xec, 0x62, 0xad, 0x05, 0xb7, 0x00, 0x00, 0x00, -0x5c, 0x41, 0x0a, 0x80, 0xa0, 0x00, 0x00, 0x00, 0x5a, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0xca, 0xdb, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x92, 0x80, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, -0xe1, 0x41, 0xda, 0xa7, 0x25, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0c, 0x0f, 0xc8, 0x00, 0x00, 0x00, -0x00, 0xc2, 0xe8, 0xf5, 0x11, 0x00, 0x00, 0x00, 0x5d, 0x40, 0x0a, 0x20, 0x21, 0x00, 0x00, 0x00, -0x00, 0x8e, 0x08, 0xe0, 0x22, 0x00, 0x00, 0x00, 0x33, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0xc0, 0x0f, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x01, 0xe3, 0x13, 0x00, 0x00, 0x00, -0xbe, 0xfe, 0x0c, 0x21, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, -0x7d, 0x01, 0xcc, 0xdb, 0xd5, 0x00, 0x00, 0x00, 0x71, 0x40, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, -0xe2, 0x40, 0x0a, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x40, 0x50, 0x00, 0x00, 0x00, -0xa3, 0x01, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x46, 0xd6, 0x00, 0x00, 0x00, -0xa3, 0x01, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x40, 0x0a, 0x49, 0xd6, 0x00, 0x00, 0x00, -0x14, 0x40, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xdc, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x1c, 0x40, 0xba, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x14, 0x40, 0x3a, 0x01, 0xa4, 0x00, 0x00, 0x00, -0x19, 0x40, 0x7a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x6f, 0xb8, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2a, 0x8e, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x98, 0xd0, 0x00, 0x00, 0x00, -0x00, 0x01, 0x2f, 0xee, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x51, 0xd6, 0x00, 0x00, 0x00, -0x00, 0x40, 0x1c, 0x18, 0xf0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x4d, 0x00, 0xd0, 0x00, 0x00, 0x00, -0x13, 0xf3, 0x2d, 0xff, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1d, 0x01, 0xd1, 0x00, 0x00, 0x00, -0xeb, 0xb3, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xee, 0x66, 0xdd, 0x18, 0xf0, 0x00, 0x00, 0x00, -0x31, 0x6e, 0x0d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xf7, 0x0f, 0x2d, 0x0f, 0xd0, 0x00, 0x00, 0x00, -0x81, 0x01, 0x8f, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x33, 0x40, 0x9a, 0x80, 0xd1, 0x00, 0x00, 0x00, -0x00, 0xc0, 0x27, 0x07, 0xa4, 0x00, 0x00, 0x00, 0xf0, 0xc4, 0x08, 0x2a, 0x3d, 0x00, 0x00, 0x00, -0x00, 0xd4, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x31, 0xdb, 0x13, 0x9a, 0x7c, 0x00, 0x00, 0x00, -0x00, 0xc6, 0x08, 0xc0, 0x23, 0x00, 0x00, 0x00, 0x81, 0x01, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, -0xd0, 0x3c, 0x05, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x80, 0x84, 0x00, 0x00, 0x00, -0x50, 0x4d, 0x11, 0x18, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x92, 0x16, 0x11, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x92, 0x36, 0x0b, 0x70, 0x00, 0x00, 0x00, 0xf7, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x92, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x70, 0x00, 0x00, 0x00, -0x66, 0x06, 0x0c, 0x60, 0x19, 0x00, 0x00, 0x00, 0x95, 0x96, 0x50, 0x53, 0x00, 0x00, 0x00, 0x00, -0xf3, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0xd4, 0x96, 0x42, 0x57, 0x20, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x13, 0x9a, 0x02, 0x80, 0x20, 0x00, 0x00, 0x00, -0x00, 0x40, 0x2a, 0x65, 0xa0, 0x00, 0x00, 0x00, 0x89, 0xe0, 0x1e, 0x18, 0xf0, 0x00, 0x00, 0x00, -0x37, 0x41, 0x6a, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x38, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x39, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x3a, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x3b, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x8d, 0x01, 0xaf, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x73, 0x40, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x55, 0x40, 0x6a, 0x19, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x40, 0x6a, 0x1a, 0xa4, 0x00, 0x00, 0x00, 0x73, 0x40, 0x4a, 0x03, 0xa4, 0x00, 0x00, 0x00, -0x00, 0xb2, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xd0, 0xb6, 0x13, 0x52, 0x7a, 0x00, 0x00, 0x00, -0x00, 0x12, 0x86, 0x37, 0x61, 0x00, 0x00, 0x00, 0x37, 0xc2, 0x09, 0x62, 0x7a, 0x00, 0x00, 0x00, -0xb2, 0x10, 0xf5, 0x12, 0x01, 0x00, 0x00, 0x00, 0xfb, 0x43, 0x11, 0xa3, 0x11, 0x00, 0x00, 0x00, -0x34, 0x91, 0xcf, 0x4b, 0x53, 0x00, 0x00, 0x00, 0x70, 0x30, 0x31, 0x03, 0xfc, 0x00, 0x00, 0x00, -0x61, 0xf1, 0x01, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xdb, 0x18, 0xf0, 0x00, 0x00, 0x00, -0x86, 0x06, 0x3c, 0x25, 0x20, 0x00, 0x00, 0x00, 0x33, 0xa3, 0x46, 0x11, 0x69, 0x00, 0x00, 0x00, -0xcd, 0x8d, 0x3c, 0x5d, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x20, 0x68, 0x00, 0x00, 0x00, -0x00, 0x7c, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x70, 0x05, 0x08, 0xa0, 0x26, 0x00, 0x00, 0x00, -0x78, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x75, 0xc2, 0x09, 0xaa, 0x79, 0x00, 0x00, 0x00, -0x7d, 0xf1, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0xda, 0x18, 0xf0, 0x00, 0x00, 0x00, -0xb6, 0x33, 0x06, 0xa0, 0x11, 0x00, 0x00, 0x00, 0x20, 0x36, 0x56, 0x65, 0x63, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x89, 0x37, 0x7a, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, -0x00, 0x30, 0x70, 0x27, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x56, 0x01, 0x20, 0x53, 0x00, 0x00, 0x00, -0xda, 0xd0, 0x0f, 0x3c, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x40, 0x3a, 0x1a, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x1e, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x05, 0x40, 0x9c, 0x00, 0x00, 0x00, -0x00, 0x12, 0x06, 0xc0, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x92, 0x06, 0x20, 0x69, 0x00, 0x00, 0x00, -0x00, 0x92, 0x06, 0x20, 0x69, 0x00, 0x00, 0x00, 0x60, 0xc2, 0x46, 0x2a, 0x69, 0x00, 0x00, 0x00, -0x9b, 0x06, 0x0c, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x19, 0x8e, 0x64, 0x00, 0x00, 0x00, -0x00, 0x92, 0x06, 0xc0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, -0x34, 0x41, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, 0xb8, 0x40, 0x5a, 0x5e, 0xcb, 0x00, 0x00, 0x00, -0xf5, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x6f, 0x54, 0x00, 0x00, 0x00, -0x00, 0x04, 0x72, 0x5f, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, 0x29, 0x00, 0x00, 0x00, -0xf7, 0x06, 0xac, 0x4b, 0x10, 0x00, 0x00, 0x00, 0x18, 0x04, 0x92, 0x6f, 0x19, 0x00, 0x00, 0x00, -0x00, 0x92, 0x76, 0x65, 0x29, 0x00, 0x00, 0x00, 0xa9, 0x06, 0x0c, 0x16, 0x70, 0x00, 0x00, 0x00, -0xf4, 0x96, 0x51, 0x4b, 0x18, 0x00, 0x00, 0x00, 0x6f, 0x41, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, -0x1a, 0x00, 0x97, 0x25, 0x69, 0x00, 0x00, 0x00, 0xa1, 0xb3, 0x31, 0x13, 0x1a, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x58, 0xa9, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x68, 0xf2, 0x12, 0xa4, 0x00, 0x00, 0x00, -0x21, 0x41, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x13, 0x01, 0x47, 0x2d, 0x69, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3a, 0x69, 0x00, 0x00, 0x00, -0xc9, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x98, 0x61, 0x6f, 0x10, 0x00, 0x00, 0x00, -0x11, 0x40, 0x0a, 0x60, 0x11, 0x00, 0x00, 0x00, 0x50, 0x40, 0xda, 0x18, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, -0xf9, 0x96, 0xa1, 0x4b, 0x10, 0x00, 0x00, 0x00, 0x57, 0x96, 0x82, 0x41, 0x20, 0x00, 0x00, 0x00, -0x20, 0x93, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x2f, 0x41, 0x0a, 0x20, 0x9c, 0x00, 0x00, 0x00, -0x00, 0x92, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x80, 0x3c, 0x00, 0x00, 0x00, -0x60, 0x99, 0x03, 0x20, 0x38, 0x00, 0x00, 0x00, 0xf4, 0x96, 0x51, 0x4b, 0x10, 0x00, 0x00, 0x00, -0x59, 0x92, 0xa3, 0x01, 0x78, 0x00, 0x00, 0x00, 0x6f, 0x41, 0x0a, 0x20, 0x9c, 0x00, 0x00, 0x00, -0x00, 0xfa, 0x35, 0x13, 0x78, 0x00, 0x00, 0x00, 0x00, 0xda, 0x03, 0x20, 0x39, 0x00, 0x00, 0x00, -0xb3, 0x06, 0x0c, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xba, 0x01, 0x20, 0x1a, 0x00, 0x00, 0x00, -0x00, 0x80, 0x57, 0xe9, 0x1c, 0x00, 0x00, 0x00, 0x13, 0x9b, 0x43, 0x2d, 0x38, 0x00, 0x00, 0x00, -0x79, 0x40, 0xaa, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x5c, 0x17, 0xa4, 0x00, 0x00, 0x00, -0xe1, 0x4a, 0x65, 0x0b, 0x21, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x0f, 0x1a, 0xf9, 0x00, 0x00, 0x00, -0x00, 0x2c, 0x00, 0x23, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x07, 0x52, 0x6a, 0x00, 0x00, 0x00, -0x00, 0xc2, 0x09, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, 0x40, 0x13, 0x00, 0x00, 0x00, -0xd2, 0x06, 0x0c, 0xc0, 0x76, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x09, 0x00, 0x78, 0x00, 0x00, 0x00, -0x00, 0xb4, 0x01, 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x07, 0x40, 0x6a, 0x00, 0x00, 0x00, -0x70, 0xc4, 0x09, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x01, 0xc0, 0x14, 0x00, 0x00, 0x00, -0xe0, 0xc3, 0x18, 0x23, 0x23, 0x00, 0x00, 0x00, 0x33, 0x07, 0xf1, 0xff, 0xcf, 0x00, 0x00, 0x00, -0x11, 0x08, 0x22, 0xf7, 0x19, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x08, 0xa5, 0x29, 0x00, 0x00, 0x00, -0xb0, 0xc0, 0xf1, 0x26, 0x68, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x3f, 0x31, 0x1d, 0x00, 0x00, 0x00, -0x73, 0x40, 0x2a, 0x15, 0xa4, 0x00, 0x00, 0x00, 0xf4, 0x40, 0x3a, 0x1a, 0xf0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x20, 0x32, 0x00, 0x00, 0x00, -0x00, 0x26, 0x43, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0d, 0x20, 0x8c, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x06, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, 0x59, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x40, 0x59, 0x00, 0x00, 0x00, 0x00, 0x92, 0x06, 0x40, 0x11, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x90, 0x06, 0x40, 0x10, 0x00, 0x00, 0x00, -0x00, 0x92, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x90, 0x05, 0x60, 0x20, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x90, 0x05, 0x60, 0x10, 0x00, 0x00, 0x00, -0x00, 0x90, 0x05, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, -0x00, 0x14, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, -0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x80, 0x0e, 0x10, 0xf0, 0x00, 0x00, 0x00, -0x84, 0xa0, 0xbe, 0x08, 0xe9, 0x00, 0x00, 0x00, 0x86, 0xc0, 0x3e, 0x08, 0xeb, 0x00, 0x00, 0x00, -0x85, 0xe0, 0x8e, 0x08, 0xed, 0x00, 0x00, 0x00, 0x10, 0x40, 0x7a, 0x08, 0xef, 0x00, 0x00, 0x00, -0x51, 0x40, 0x9a, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xd3, 0x40, 0x2a, 0x09, 0xa4, 0x00, 0x00, 0x00, -0x55, 0x41, 0x4a, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xd7, 0x41, 0x6a, 0x19, 0xa4, 0x00, 0x00, 0x00, -0x7b, 0x40, 0x8a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0xf9, 0x40, 0xca, 0x0b, 0xa4, 0x00, 0x00, 0x00, -0x0d, 0x01, 0xaf, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x22, 0xbe, 0x20, 0xe1, 0x00, 0x00, 0x00, -0x0c, 0x42, 0xce, 0x20, 0xe3, 0x00, 0x00, 0x00, 0x31, 0x41, 0x0a, 0x13, 0xa4, 0x00, 0x00, 0x00, -0x32, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x33, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x34, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x35, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x00, 0x40, 0xac, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x08, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x80, 0x1c, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x42, 0x81, 0x5c, 0xa1, 0xca, 0x00, 0x00, 0x00, -0xa5, 0x07, 0xac, 0x12, 0x79, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xef, 0xff, 0xc8, 0x00, 0x00, 0x00, -0xa5, 0x07, 0x0c, 0xa0, 0x27, 0x00, 0x00, 0x00, 0x51, 0x90, 0x08, 0x01, 0xff, 0x00, 0x00, 0x00, -0xfe, 0x8f, 0x0c, 0x40, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x48, 0xeb, 0x1f, 0xf0, 0x00, 0x00, 0x00, -0xf1, 0x84, 0x08, 0xbb, 0x27, 0x00, 0x00, 0x00, 0xa9, 0x07, 0x0c, 0x00, 0xff, 0x00, 0x00, 0x00, -0x00, 0x44, 0x08, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x60, 0x31, 0x00, 0x00, 0x00, -0x9e, 0x81, 0x7c, 0xb3, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x88, 0x08, 0x20, 0x30, 0x00, 0x00, 0x00, -0xa2, 0x07, 0xac, 0x42, 0xcd, 0x00, 0x00, 0x00, 0xa7, 0xe1, 0x0a, 0x00, 0x61, 0x00, 0x00, 0x00, -0xfd, 0xbf, 0x0c, 0x19, 0xc8, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, 0xfe, 0x00, 0x00, 0x00, -0x10, 0x25, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, -0x00, 0xba, 0x06, 0xa0, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x24, 0x16, 0x76, 0x44, 0x00, 0x00, 0x00, -0x56, 0x81, 0x0c, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x03, 0x40, 0x73, 0x00, 0x00, 0x00, -0xb2, 0x07, 0x0c, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, -0x00, 0x42, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xe0, 0x0b, 0x00, 0x00, 0x00, -0x00, 0x4c, 0x2b, 0xe0, 0xcb, 0x00, 0x00, 0x00, 0xe1, 0x80, 0xab, 0x46, 0xcd, 0x00, 0x00, 0x00, -0xd3, 0x07, 0x7c, 0x8b, 0xca, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe1, 0xdf, 0xcb, 0x00, 0x00, 0x00, -0x00, 0x54, 0x0b, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x20, 0x5d, 0x00, 0x00, 0x00, -0x00, 0x54, 0x02, 0x20, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x40, 0x5d, 0x00, 0x00, 0x00, -0x00, 0xda, 0x04, 0x20, 0x5d, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x04, 0x20, 0x5d, 0x00, 0x00, 0x00, -0x00, 0x5a, 0x07, 0x40, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x52, 0x07, 0xa0, 0x25, 0x00, 0x00, 0x00, -0x00, 0x5a, 0x06, 0x20, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xb5, 0x71, 0xcb, 0x00, 0x00, 0x00, -0x00, 0x48, 0x45, 0x96, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x05, 0x10, 0xc8, 0x00, 0x00, 0x00, -0x00, 0x48, 0xf5, 0xf7, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xa5, 0x52, 0xcd, 0x00, 0x00, 0x00, -0x00, 0x48, 0x05, 0x14, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x15, 0x52, 0x72, 0x00, 0x00, 0x00, -0x00, 0x48, 0x05, 0x40, 0x72, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x16, 0xfe, 0xcb, 0x00, 0x00, 0x00, -0xaf, 0xc2, 0xf9, 0x0e, 0xfe, 0x00, 0x00, 0x00, 0x6f, 0x82, 0xe9, 0xeb, 0xcf, 0x00, 0x00, 0x00, -0xda, 0x42, 0xd9, 0xe7, 0xcf, 0x00, 0x00, 0x00, 0xdb, 0x02, 0xa9, 0xfb, 0xdf, 0x00, 0x00, 0x00, -0xdc, 0xc2, 0xb8, 0xf7, 0xdf, 0x00, 0x00, 0x00, 0xdd, 0x82, 0xc8, 0xef, 0xdf, 0x00, 0x00, 0x00, -0xde, 0x42, 0xd8, 0xdf, 0xdf, 0x00, 0x00, 0x00, 0xdf, 0x02, 0xe8, 0xbf, 0xdf, 0x00, 0x00, 0x00, -0xba, 0x34, 0xf5, 0x7f, 0xdf, 0x00, 0x00, 0x00, 0xbc, 0x34, 0xb5, 0x27, 0x53, 0x00, 0x00, 0x00, -0x00, 0xf0, 0xdb, 0x27, 0x53, 0x00, 0x00, 0x00, 0x7f, 0x32, 0xe5, 0x4b, 0x53, 0x00, 0x00, 0x00, -0x00, 0x32, 0x15, 0x4a, 0x53, 0x00, 0x00, 0x00, 0xd0, 0x58, 0x0b, 0x40, 0x16, 0x00, 0x00, 0x00, -0x0f, 0x61, 0x0b, 0xd4, 0xb5, 0x00, 0x00, 0x00, 0x80, 0x69, 0xfb, 0x5c, 0xb6, 0x00, 0x00, 0x00, -0x21, 0x71, 0x0b, 0xc0, 0xb6, 0x00, 0x00, 0x00, 0x21, 0x78, 0x0b, 0x40, 0xb7, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0xc0, 0xb7, 0x00, 0x00, 0x00, 0x40, 0x83, 0x0c, 0x80, 0x20, 0x00, 0x00, 0x00, -0x68, 0x81, 0x0c, 0x20, 0x88, 0x00, 0x00, 0x00, 0xd0, 0x81, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, -0xb0, 0x79, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x60, 0x7e, 0x0d, 0x00, 0xa4, 0x00, 0x00, 0x00, -0xe9, 0x07, 0x0c, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, 0xfd, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0a, 0x99, 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, 0xff, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0xf3, 0xd7, 0x00, 0x00, 0x00, 0x1f, 0x40, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x64, 0x80, 0x0c, 0xc0, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x2b, 0x14, 0xc8, 0x00, 0x00, 0x00, -0xf5, 0x07, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xef, 0x1c, 0xc8, 0x00, 0x00, 0x00, -0xf5, 0x07, 0x0c, 0xa0, 0x27, 0x00, 0x00, 0x00, 0x51, 0x90, 0x08, 0x05, 0xff, 0x00, 0x00, 0x00, -0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xb4, 0x1b, 0x6d, 0x22, 0xd2, 0x00, 0x00, 0x00, -0x00, 0x40, 0x3a, 0x83, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, -0xa4, 0xc5, 0x31, 0x02, 0xec, 0x00, 0x0f, 0x01, 0xe8, 0x00, 0x00, 0x02, 0xed, 0x00, 0x01, 0xf3, -0x0b, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x01, 0x40, 0xe8, 0x00, 0x7f, 0x81, 0xe4, 0x00, 0x01, 0xa2, -0xec, 0x00, 0x01, 0xf3, 0x0b, 0x00, 0x3f, 0x01, 0xeb, 0x00, 0x0d, 0x03, 0x76, 0x00, 0x11, 0x53, -0xc5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0xa3, 0x0a, 0x00, 0x15, 0xc3, 0xd8, 0x00, 0x00, 0x00, -0xec, 0x00, 0x0b, 0x83, 0xb7, 0x00, 0x19, 0x01, 0xe8, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x31, 0xa0, -0xec, 0x00, 0x0b, 0x83, 0xb7, 0x00, 0x19, 0x01, 0xe8, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x31, 0xc0, -0xec, 0x00, 0x7f, 0x82, 0xe1, 0x00, 0x1d, 0x20, 0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x01, 0x42, -0xb2, 0x00, 0x7f, 0x40, 0xe1, 0x00, 0x59, 0x01, 0xe8, 0x00, 0x7f, 0x02, 0xe1, 0x00, 0x01, 0xc2, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x4f, 0x60, 0xeb, 0x00, 0x01, 0xc0, -0xf6, 0x00, 0x01, 0xe2, 0xf7, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x67, 0x60, 0xeb, 0x00, 0x1f, 0x00, -0x00, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x0b, 0x83, 0xb7, 0x00, 0x0d, 0x83, -0xb4, 0x00, 0x3f, 0x01, 0xeb, 0x00, 0x0f, 0x01, 0xb1, 0x00, 0x0f, 0x82, 0xb1, 0x00, 0x8d, 0x23, -0xeb, 0x00, 0xc9, 0x00, 0xb4, 0x00, 0x0d, 0x21, 0xb5, 0x00, 0x0f, 0x00, 0xb0, 0x00, 0x03, 0xc0, -0xf5, 0x00, 0x35, 0x62, 0xe8, 0x00, 0xff, 0x00, 0xe0, 0x00, 0x0f, 0x83, 0xb0, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x7e, 0x00, 0xe1, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, 0xed, 0x00, 0x1e, 0x80, -0xa8, 0x00, 0x9e, 0x80, 0xad, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x7e, 0x00, 0xe1, 0x00, 0x00, 0xa2, 0xec, 0x00, 0x7e, 0x20, 0xb9, 0x00, 0xf8, 0x00, -0xe8, 0x00, 0x16, 0x80, 0xa8, 0x00, 0x96, 0x80, 0xad, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, 0xed, 0x00, 0x80, 0x80, -0xa9, 0x00, 0xc0, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, 0xed, 0x00, 0x88, 0x80, -0xa9, 0x00, 0xc8, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, 0xed, 0x00, 0x90, 0x80, -0xa9, 0x00, 0xd0, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x7e, 0x81, 0xe1, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0xa2, 0xec, 0x00, 0x7e, 0xa1, -0xb9, 0x00, 0x3e, 0x20, 0xbd, 0x00, 0x40, 0x02, 0xed, 0x00, 0x98, 0x80, 0xa9, 0x00, 0xd8, 0x00, -0xaa, 0x00, 0x7e, 0x80, 0xe3, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0xc0, 0xbb, 0x00, 0x00, 0x02, -0xed, 0x00, 0x00, 0x40, 0xac, 0x00, 0x20, 0xc0, 0xac, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x09, -0xa8, 0x00, 0xfc, 0x0b, 0xe3, 0x00, 0x7e, 0x01, 0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0x49, -0xbf, 0x00, 0x80, 0x02, 0xed, 0x00, 0x00, 0x09, 0xa8, 0x00, 0x20, 0x89, 0xaf, 0x00, 0x0d, 0x03, -0x76, 0x00, 0x11, 0x53, 0xc5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0xa3, 0x4a, 0x00, 0x15, 0xc3, -0xd8, 0x00, 0xe1, 0xa0, 0xaa, 0x00, 0x7f, 0x01, 0xe0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x45, -0xab, 0x00, 0x3f, 0x01, 0xeb, 0x00, 0x01, 0x15, 0xab, 0x00, 0x27, 0xcb, 0xa9, 0x00, 0xde, 0xc3, -0x9c, 0x00, 0xfc, 0xc3, 0x9c, 0x00, 0xfc, 0x03, 0x84, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0x2a, 0xc3, -0x9c, 0x00, 0x1e, 0xc3, 0x9c, 0x00, 0xd5, 0x80, 0xa4, 0x00, 0xd9, 0x80, 0xa3, 0x00, 0xcb, 0x80, -0xa4, 0x00, 0x33, 0x03, 0xe8, 0x00, 0xd3, 0x80, 0xa3, 0x00, 0xdb, 0x80, 0xa3, 0x00, 0x0f, 0x00, -0xb0, 0x00, 0xff, 0x00, 0xe0, 0x00, 0x01, 0xa2, 0xec, 0x00, 0x39, 0x20, 0xb8, 0x00, 0x21, 0x1a, -0xf8, 0x00, 0x51, 0x00, 0xf8, 0x00, 0x09, 0x02, 0xf8, 0x00, 0x8b, 0x20, 0xb8, 0x00, 0x01, 0x00, -0xfa, 0x00, 0x01, 0x00, 0xfc, 0x00, 0x01, 0x02, 0xee, 0x00, 0x2b, 0x20, 0xb8, 0x00, 0x19, 0x00, -0xf8, 0x00, 0xe1, 0x03, 0xa9, 0x00, 0x01, 0x82, 0xbd, 0x00, 0x18, 0x70, 0x0d, 0x00, 0x1a, 0x70, -0x7b, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0x10, 0x53, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x1c, 0x30, 0x65, 0x00, 0x18, 0x00, 0xa2, 0x00, 0x20, 0xc0, 0x08, 0x00, 0x22, 0xc0, -0x7e, 0x00, 0x22, 0x50, 0x5d, 0x00, 0x24, 0x50, 0x6e, 0x00, 0x1a, 0x80, 0xa4, 0x00, 0x28, 0xc0, -0x9c, 0x00, 0x26, 0x40, 0x40, 0x00, 0x20, 0x00, 0xa2, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x22, 0x80, -0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x24, 0xc0, 0x9c, 0x00, 0x1c, 0xc0, 0xdc, 0x00, 0x1a, 0xd0, -0x48, 0x00, 0x27, 0x80, 0xa4, 0x00, 0x25, 0x00, 0xa6, 0x00, 0xff, 0x23, 0xe7, 0x00, 0x6b, 0x80, -0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x22, 0x60, 0x42, 0x00, 0x26, 0x0c, 0x70, 0x00, 0x2a, 0x30, -0x1c, 0x00, 0x2c, 0x80, 0x4e, 0x00, 0x2e, 0x30, 0x77, 0x00, 0x2e, 0x00, 0x60, 0x00, 0x30, 0xb0, -0x6c, 0x00, 0x28, 0x80, 0xa4, 0x00, 0x28, 0x80, 0x4e, 0x00, 0x2e, 0xc0, 0xdc, 0x00, 0x32, 0xb0, -0x75, 0x00, 0x32, 0x50, 0x1c, 0x00, 0x32, 0xc0, 0xdc, 0x00, 0x34, 0xc0, 0xdc, 0x00, 0x2c, 0x80, -0xa4, 0x00, 0x3a, 0xe0, 0x69, 0x00, 0x30, 0x80, 0xa4, 0x00, 0xef, 0x83, 0xe6, 0x00, 0x3a, 0x00, -0x60, 0x00, 0x3d, 0x60, 0x62, 0x00, 0x31, 0xc0, 0xdc, 0x00, 0xf1, 0x2e, 0xe8, 0x00, 0x36, 0x90, -0x7f, 0x00, 0x38, 0xc0, 0x7f, 0x00, 0xdf, 0x83, 0xe6, 0x00, 0x49, 0xc0, 0x9c, 0x00, 0x89, 0xa3, -0xe5, 0x00, 0x6f, 0x10, 0x12, 0x00, 0x2d, 0x2e, 0xe8, 0x00, 0x39, 0x80, 0xa4, 0x00, 0x35, 0x00, -0xa6, 0x00, 0xdf, 0x09, 0xe8, 0x00, 0x61, 0x80, 0xa4, 0x00, 0x83, 0xa3, 0xe5, 0x00, 0x4b, 0x30, -0x4f, 0x00, 0xeb, 0x01, 0xe8, 0x00, 0x4b, 0x68, 0x0b, 0x00, 0x6f, 0x98, 0x55, 0x00, 0x4b, 0xf0, -0x3c, 0x00, 0xff, 0xa3, 0xe5, 0x00, 0x4d, 0xd0, 0x45, 0x00, 0x6f, 0x80, 0x5d, 0x00, 0x4b, 0xc8, -0x9c, 0x00, 0x4b, 0xe8, 0x42, 0x00, 0x1c, 0x43, 0xf0, 0x00, 0x6e, 0xc0, 0x90, 0x00, 0x00, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x5d, 0x01, 0xea, 0x00, 0x6d, 0x80, -0xa4, 0x00, 0x6f, 0x80, 0xa2, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x7f, 0x82, 0xe5, 0x00, 0x01, 0x02, -0xec, 0x00, 0x55, 0x0a, 0xe8, 0x00, 0xb9, 0xf2, 0x02, 0x00, 0xbb, 0x92, 0x44, 0x00, 0xbd, 0xd2, -0x43, 0x00, 0xbf, 0x83, 0xe2, 0x00, 0xbf, 0xc2, 0x40, 0x00, 0xb1, 0xa3, 0xe2, 0x00, 0x21, 0x0a, -0xe8, 0x00, 0xc1, 0x72, 0x7e, 0x00, 0xc3, 0x02, 0x7b, 0x00, 0xbe, 0x52, 0x01, 0x00, 0xbc, 0xc2, -0x45, 0x00, 0xba, 0x02, 0x42, 0x00, 0xb9, 0x82, 0x7f, 0x00, 0xc3, 0xa2, 0x7c, 0x00, 0xc0, 0xb2, -0x75, 0x00, 0xbc, 0x6e, 0x11, 0x00, 0xbc, 0xc2, 0x9c, 0x00, 0x3d, 0xc2, 0x9c, 0x00, 0xff, 0x83, -0xe2, 0x00, 0xef, 0x02, 0x10, 0x00, 0x7f, 0x01, 0xe7, 0x00, 0xbf, 0x82, 0xa2, 0x00, 0xbf, 0x8e, -0xa4, 0x00, 0x3f, 0x82, 0xa4, 0x00, 0xdf, 0x03, 0xe5, 0x00, 0x99, 0x23, 0xe5, 0x00, 0x6f, 0x02, -0x10, 0x00, 0xef, 0x0e, 0x10, 0x00, 0x21, 0x01, 0xa2, 0x00, 0xef, 0x02, 0x50, 0x00, 0xef, 0xc2, -0xd8, 0x00, 0x6f, 0x02, 0x50, 0x00, 0xef, 0x03, 0xe5, 0x00, 0x01, 0x01, 0xa2, 0x00, 0x21, 0x09, -0xa2, 0x00, 0x01, 0x0d, 0xa2, 0x00, 0x21, 0x0d, 0xa2, 0x00, 0xf7, 0x03, 0xe5, 0x00, 0x02, 0x41, -0xbf, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x0d, 0xa2, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0xa1, 0xa3, -0xe6, 0x00, 0xe1, 0x53, 0x0c, 0x00, 0x13, 0x01, 0x50, 0x00, 0x85, 0x0a, 0xe8, 0x00, 0x18, 0x51, -0x20, 0x00, 0x16, 0xf1, 0x52, 0x00, 0x12, 0xa1, 0x40, 0x00, 0x12, 0x01, 0xa2, 0x00, 0xc4, 0x83, -0xa5, 0x00, 0x16, 0xc1, 0xdc, 0x00, 0x12, 0xa1, 0x40, 0x00, 0x18, 0xc1, 0xd8, 0x00, 0x16, 0xc1, -0x9c, 0x00, 0x14, 0xc1, 0x9c, 0x00, 0xc4, 0xc3, 0xdc, 0x00, 0x1a, 0xf1, 0x1f, 0x00, 0x16, 0x81, -0xa4, 0x00, 0xc2, 0x03, 0xa3, 0x00, 0x18, 0x81, 0xa4, 0x00, 0x1a, 0x01, 0xcf, 0x00, 0x14, 0x81, -0xa4, 0x00, 0xc3, 0x43, 0xf0, 0x00, 0xc3, 0xc3, 0xd0, 0x00, 0x1f, 0x20, 0xe4, 0x00, 0x01, 0x02, -0xec, 0x00, 0x21, 0x20, 0xe4, 0x00, 0x01, 0x0e, 0xef, 0x00, 0x01, 0x40, 0xbc, 0x00, 0x1b, 0x81, -0xa4, 0x00, 0x53, 0x0f, 0xe8, 0x00, 0x81, 0x83, 0xe4, 0x00, 0xfb, 0x83, 0xe4, 0x00, 0x03, 0x02, -0xec, 0x00, 0x33, 0x0f, 0xe8, 0x00, 0x01, 0x40, 0xb4, 0x00, 0x14, 0xc1, 0x9c, 0x00, 0x38, 0xc1, -0xd8, 0x00, 0xcc, 0xb3, 0x7f, 0x00, 0xcd, 0xa3, 0x40, 0x00, 0xcd, 0x63, 0x3f, 0x00, 0xb5, 0x0a, -0xe8, 0x00, 0x38, 0x81, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x14, 0x01, 0xa4, 0x00, 0xc2, 0xc3, -0xa4, 0x00, 0x14, 0x89, 0xa4, 0x00, 0xfb, 0x83, 0xe4, 0x00, 0x1d, 0xf1, 0x1d, 0x00, 0x1d, 0xc1, -0xc7, 0x00, 0x1d, 0x8d, 0x20, 0x00, 0x1d, 0xcd, 0xc7, 0x00, 0xfd, 0x83, 0xe4, 0x00, 0x1f, 0x2d, -0x40, 0x00, 0x15, 0x5d, 0x40, 0x00, 0x1c, 0xbd, 0x1c, 0x00, 0x1c, 0x6d, 0xc9, 0x00, 0x1e, 0x01, -0x70, 0x00, 0x1e, 0x01, 0xc4, 0x00, 0x14, 0x01, 0xc8, 0x00, 0x1e, 0x01, 0x70, 0x00, 0x1c, 0xc1, -0x9c, 0x00, 0xcc, 0x03, 0x36, 0x00, 0x1a, 0x01, 0x6c, 0x00, 0x28, 0x81, 0x15, 0x00, 0x1c, 0x01, -0xa2, 0x00, 0xc6, 0x83, 0xa5, 0x00, 0x1f, 0x81, 0xa4, 0x00, 0x29, 0x01, 0xc5, 0x00, 0xc3, 0x03, -0xa4, 0x00, 0xfb, 0x83, 0xe4, 0x00, 0x29, 0x6d, 0x15, 0x00, 0x29, 0xfd, 0xc1, 0x00, 0x28, 0xfd, -0x21, 0x00, 0x28, 0xbd, 0xc3, 0x00, 0x2a, 0x2d, 0x40, 0x00, 0x14, 0x5d, 0x40, 0x00, 0x2a, 0x01, -0x70, 0x00, 0x2a, 0x01, 0xc4, 0x00, 0x14, 0x01, 0xc8, 0x00, 0x2a, 0x01, 0x70, 0x00, 0x28, 0xc1, -0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x43, 0xf0, 0x00, 0xc6, 0xc3, 0x90, 0x00, 0x28, 0x01, -0xa2, 0x00, 0xc8, 0x83, 0xa5, 0x00, 0x2a, 0x81, 0xa4, 0x00, 0xc8, 0xc3, 0xd4, 0x00, 0x3a, 0x81, -0x5f, 0x00, 0x3a, 0x4d, 0x40, 0x00, 0x00, 0x02, 0xec, 0x00, 0x30, 0xf3, 0x1f, 0x00, 0x30, 0x03, -0xc8, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x03, 0x44, 0x00, 0x3a, 0x81, 0xa4, 0x00, 0xc4, 0x83, -0xa5, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc4, 0x03, 0x30, 0x00, 0x30, 0x83, -0xa4, 0x00, 0xc2, 0x83, 0xa5, 0x00, 0xc2, 0x03, 0x50, 0x00, 0x3a, 0xc1, 0x9c, 0x00, 0x15, 0x81, -0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0xc3, 0xcf, -0xa4, 0x00, 0x31, 0x8b, 0xa4, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x80, 0x83, 0xe4, 0x00, 0x7e, 0x81, -0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x3b, 0x8d, -0xa4, 0x00, 0x39, 0x8d, 0xa4, 0x00, 0x15, 0x8d, 0xa4, 0x00, 0x1d, 0x8d, 0xa4, 0x00, 0x1f, 0x8d, -0xa4, 0x00, 0x29, 0x8d, 0xa4, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x61, 0x40, 0xe8, 0x00, 0x2b, 0x8d, -0xa4, 0x00, 0x31, 0x8f, 0xa4, 0x00, 0x52, 0xc3, 0x9c, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0xca, 0x23, -0x80, 0x00, 0x0e, 0xc1, 0x9c, 0x00, 0x09, 0xc1, 0xd8, 0x00, 0x09, 0xc1, 0x9c, 0x00, 0x7d, 0xc3, -0xa4, 0x00, 0x0b, 0x28, 0xe8, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0x0a, 0x41, 0x40, 0x00, 0xc2, 0xc3, -0xa4, 0x00, 0xc4, 0xcf, 0x7f, 0x00, 0xc4, 0x4b, 0x40, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7c, 0x23, -0x00, 0x00, 0x0c, 0xc1, 0x98, 0x00, 0x08, 0xa1, 0x49, 0x00, 0x08, 0x01, 0x50, 0x00, 0x08, 0x81, -0xa5, 0x00, 0x0a, 0x01, 0xa6, 0x00, 0xde, 0x81, 0xa3, 0x00, 0x3e, 0xc1, 0x9c, 0x00, 0xc2, 0xc3, -0xa4, 0x00, 0xca, 0x03, 0xc6, 0x00, 0xcc, 0x0f, 0xc2, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xcc, 0xcf, -0x9c, 0x00, 0x08, 0xc1, 0x9c, 0x00, 0x0c, 0xc1, 0xd8, 0x00, 0x0c, 0xc1, 0x9c, 0x00, 0xca, 0x23, -0x00, 0x00, 0x0c, 0xc1, 0xd8, 0x00, 0x3e, 0x81, 0xa4, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc6, 0xc3, -0xa4, 0x00, 0xc5, 0x8f, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xd3, 0x0b, -0xe8, 0x00, 0xef, 0x83, 0xe7, 0x00, 0x0d, 0x01, 0x81, 0x00, 0x09, 0x01, 0xcf, 0x00, 0xfb, 0x83, -0xe7, 0x00, 0x0d, 0x8d, 0x80, 0x00, 0x09, 0x8d, 0xcf, 0x00, 0x3f, 0x61, 0xf2, 0x00, 0x0d, 0x0d, -0x82, 0x00, 0x09, 0x0d, 0xce, 0x00, 0xc7, 0x63, 0xf2, 0x00, 0x0d, 0x2d, 0x80, 0x00, 0x09, 0xed, -0xcf, 0x00, 0xfd, 0x83, 0xe7, 0x00, 0x0d, 0x0d, 0x84, 0x00, 0x09, 0x0d, 0xcc, 0x00, 0x0d, 0xcd, -0x9c, 0x00, 0x09, 0xf9, 0x5f, 0x00, 0x0b, 0x49, 0x40, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x08, 0x81, -0xa4, 0x00, 0x0a, 0x01, 0xa6, 0x00, 0x3c, 0x41, 0xf0, 0x00, 0x0e, 0xa1, 0x07, 0x00, 0xc4, 0xc3, -0xd4, 0x00, 0x3c, 0xc1, 0x9c, 0x00, 0x3c, 0x01, 0xc8, 0x00, 0xca, 0x23, 0xc0, 0x00, 0x0e, 0x61, -0x08, 0x00, 0xc4, 0xc3, 0xd4, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x3c, 0x01, 0x1f, 0x00, 0x00, 0x02, -0xec, 0x00, 0x3c, 0x89, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x00, 0x02, -0xec, 0x00, 0x3c, 0x8d, 0xa4, 0x00, 0x3c, 0xc1, 0x9c, 0x00, 0x40, 0xc1, 0xd8, 0x00, 0x40, 0xc1, -0x9c, 0x00, 0x10, 0xc1, 0x9c, 0x00, 0x3c, 0xc1, 0xd8, 0x00, 0x10, 0xc1, 0x9c, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x3d, 0x8d, 0xa4, 0x00, 0x01, 0x02, 0xef, 0x00, 0xc3, 0xc3, -0xa4, 0x00, 0x3d, 0x8d, 0xa4, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0xcc, 0x03, 0x38, 0x00, 0x0e, 0xc1, -0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x3f, 0x01, 0xa4, 0x00, 0x01, 0x02, -0xef, 0x00, 0x3d, 0x81, 0xa4, 0x00, 0x09, 0x81, 0xa4, 0x00, 0x8a, 0x03, 0xb0, 0x00, 0x7e, 0x40, -0xe5, 0x00, 0x7e, 0xc2, 0xe7, 0x00, 0x7e, 0x41, 0xe0, 0x00, 0x92, 0x80, 0x04, 0x00, 0x84, 0xc0, -0xdc, 0x00, 0x86, 0x80, 0x7b, 0x00, 0x9a, 0xd0, 0x12, 0x00, 0x8c, 0xc0, 0xdc, 0x00, 0x8e, 0x30, -0x6d, 0x00, 0x82, 0x80, 0x04, 0x00, 0x92, 0xc0, 0xdc, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x83, -0x7b, 0x00, 0x8a, 0xd0, 0x12, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0x9a, 0xc0, 0xdc, 0x00, 0xc4, 0x33, -0x6d, 0x00, 0xc2, 0xa3, 0x06, 0x00, 0x84, 0x80, 0xa4, 0x00, 0xc4, 0xa3, 0x46, 0x00, 0x94, 0x70, -0x7b, 0x00, 0x94, 0x10, 0x53, 0x00, 0x8c, 0x80, 0xa4, 0x00, 0x96, 0x30, 0x65, 0x00, 0x84, 0x50, -0x04, 0x00, 0x8c, 0x50, 0x44, 0x00, 0x92, 0x00, 0xa2, 0x00, 0x9c, 0xc0, 0x7e, 0x00, 0x9c, 0x50, -0x5d, 0x00, 0x94, 0x80, 0xa4, 0x00, 0x9e, 0x50, 0x6e, 0x00, 0xa2, 0xc0, 0x9c, 0x00, 0xa0, 0x40, -0x40, 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xa6, 0x10, 0x40, 0x00, 0xfe, 0x23, 0xe4, 0x00, 0x9c, 0x80, -0xa4, 0x00, 0x9c, 0x60, 0x02, 0x00, 0x94, 0xd0, 0x48, 0x00, 0x96, 0xc0, 0xdc, 0x00, 0x9e, 0xc0, -0xdc, 0x00, 0xa0, 0x80, 0xa4, 0x00, 0x9e, 0x00, 0xa6, 0x00, 0xa4, 0x0c, 0x70, 0x00, 0xa6, 0x40, -0x7f, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x07, 0xc2, 0x9c, 0x00, 0x21, 0x43, 0xf0, 0x00, 0x9b, 0x2c, -0xe8, 0x00, 0x1a, 0x4f, 0xf0, 0x00, 0xa4, 0x80, 0xa4, 0x00, 0x02, 0x50, 0x3d, 0x00, 0x00, 0x80, -0xa4, 0x00, 0x00, 0xa0, 0x44, 0x00, 0x04, 0x10, 0x5e, 0x00, 0x04, 0xc0, 0x90, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0x43, 0xf0, 0x00, 0x02, 0x80, -0xa4, 0x00, 0x06, 0x02, 0xa2, 0x00, 0xa6, 0xc0, 0x90, 0x00, 0x06, 0xc2, 0x9c, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x04, 0x01, -0xa2, 0x00, 0x01, 0x81, 0xa4, 0x00, 0x03, 0x81, 0xa4, 0x00, 0x25, 0x20, 0xea, 0x00, 0x07, 0x81, -0xa4, 0x00, 0x09, 0x81, 0xa4, 0x00, 0xa0, 0xc0, 0x9c, 0x00, 0xe0, 0xc0, 0x9c, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x5e, 0x83, -0xa4, 0x00, 0x5c, 0x83, 0xa4, 0x00, 0x03, 0xc1, 0x9c, 0x00, 0x23, 0xc1, 0x9c, 0x00, 0xfd, 0x03, -0xe6, 0x00, 0x70, 0x03, 0x02, 0x00, 0xcb, 0x03, 0x4e, 0x00, 0xff, 0xe3, 0xf2, 0x00, 0x29, 0x8d, -0xa4, 0x00, 0x07, 0x8d, 0xa4, 0x00, 0x7f, 0x81, 0xe7, 0x00, 0xfe, 0x03, 0xa3, 0x00, 0xe2, 0x01, -0xa1, 0x00, 0xff, 0x43, 0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0x73, 0x03, 0x02, 0x00, 0xcb, 0x03, -0x4e, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, 0x10, 0x00, 0xe7, 0x20, 0xe8, 0x00, 0xfe, 0x03, -0xa3, 0x00, 0xe2, 0x01, 0xa1, 0x00, 0xff, 0x43, 0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0xc3, 0x83, -0xa4, 0x00, 0xc5, 0x83, 0xa4, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, 0x10, 0x00, 0xf9, 0x20, -0xe8, 0x00, 0x18, 0x03, 0x02, 0x00, 0xca, 0x03, 0x4e, 0x00, 0x0e, 0x00, 0xb0, 0x00, 0x7e, 0x02, -0xe0, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xfe, 0x03, 0xa3, 0x00, 0xe2, 0x01, -0xa1, 0x00, 0xff, 0x43, 0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0x11, 0x02, 0x02, 0x00, 0xcb, 0x03, -0x4e, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, 0x10, 0x00, 0x17, 0x21, 0xe8, 0x00, 0xfe, 0x03, -0xa3, 0x00, 0xe2, 0x01, 0xa1, 0x00, 0x00, 0x20, 0xe2, 0x00, 0x03, 0x22, 0xb8, 0x00, 0x01, 0x00, -0xa2, 0x00, 0x09, 0x2d, 0xe8, 0x00, 0x81, 0x00, 0xa2, 0x00, 0x17, 0x40, 0xba, 0x00, 0x8c, 0x03, -0x02, 0x00, 0xca, 0x03, 0x4e, 0x00, 0xfe, 0xe3, 0xf2, 0x00, 0x12, 0x00, 0xba, 0x00, 0x74, 0x43, -0xf0, 0x00, 0x78, 0xc1, 0x9c, 0x00, 0xfe, 0x03, 0xa3, 0x00, 0xe2, 0x01, 0xa1, 0x00, 0xff, 0x43, -0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, 0x10, 0x00, 0x41, 0x21, -0xe8, 0x00, 0xe0, 0x81, 0xa4, 0x00, 0x7e, 0x02, 0xe0, 0x00, 0x7e, 0x40, 0xe2, 0x00, 0x00, 0x02, -0xec, 0x00, 0xd0, 0x03, 0xa2, 0x00, 0xd2, 0x03, 0xa2, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0x76, 0x43, -0xf0, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0x74, 0x43, 0xf0, 0x00, 0xc4, 0xc3, -0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x4e, 0x43, 0xf0, 0x00, 0x9e, 0x01, 0xa2, 0x00, 0xd0, 0xc3, -0x90, 0x00, 0xd0, 0xc3, 0xd2, 0x00, 0xe6, 0xc3, 0xd0, 0x00, 0xbe, 0x01, 0xa2, 0x00, 0xd2, 0xc3, -0x90, 0x00, 0xd2, 0xc3, 0xd2, 0x00, 0xe6, 0xc3, 0xd0, 0x00, 0x3c, 0x81, 0x00, 0x00, 0xe2, 0x83, -0x5f, 0x00, 0x40, 0x82, 0xa2, 0x00, 0x80, 0x83, 0xe1, 0x00, 0xe2, 0x43, 0xf0, 0x00, 0x00, 0x82, -0xa2, 0x00, 0x7e, 0xc2, 0xe2, 0x00, 0xe2, 0x83, 0xa4, 0x00, 0x16, 0x00, 0x10, 0x00, 0x00, 0x02, -0xec, 0x00, 0x9e, 0xcd, 0x9c, 0x00, 0x96, 0x00, 0x10, 0x00, 0xbe, 0xcd, 0x9c, 0x00, 0x00, 0xcd, -0xf0, 0x00, 0x16, 0xc0, 0x90, 0x00, 0x16, 0xc0, 0xd2, 0x00, 0x3e, 0x82, 0xa5, 0x00, 0xe6, 0xc3, -0xdc, 0x00, 0xbe, 0x82, 0xa5, 0x00, 0x96, 0xc0, 0x90, 0x00, 0x96, 0xc0, 0xd2, 0x00, 0xe6, 0xc3, -0xdc, 0x00, 0xe2, 0x43, 0xf0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xc9, 0xf0, 0x00, 0x9e, 0xc1, -0x90, 0x00, 0x9e, 0xc1, 0xd2, 0x00, 0xbe, 0xc1, 0x90, 0x00, 0xbe, 0xc1, 0xd2, 0x00, 0x00, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x31, 0xc2, 0xec, 0x00, 0x9f, 0x81, 0xa2, 0x00, 0x7f, 0xc1, -0xe7, 0x00, 0xbf, 0x81, 0xa2, 0x00, 0x6e, 0xc0, 0x9c, 0x00, 0x2c, 0x00, 0x04, 0x00, 0xe6, 0x03, -0x50, 0x00, 0x00, 0x41, 0xf0, 0x00, 0x16, 0xc0, 0x90, 0x00, 0x16, 0xc0, 0xd2, 0x00, 0x6e, 0x80, -0xa5, 0x00, 0x70, 0x00, 0x30, 0x00, 0x2c, 0x80, 0xa2, 0x00, 0x6e, 0x00, 0x50, 0x00, 0x02, 0x41, -0xf0, 0x00, 0x16, 0x80, 0xa2, 0x00, 0x2c, 0xc0, 0x90, 0x00, 0x2c, 0xc0, 0xd2, 0x00, 0x70, 0xf0, -0x1f, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x6e, 0xc8, 0x40, 0x00, 0xbe, 0x43, 0xf0, 0x00, 0x42, 0xc0, -0x90, 0x00, 0x2c, 0x80, 0xa2, 0x00, 0x42, 0xc0, 0xd2, 0x00, 0x9c, 0x43, 0xf0, 0x00, 0x6e, 0x80, -0xa4, 0x00, 0x3f, 0xc2, 0x9c, 0x00, 0xbf, 0xc2, 0xd8, 0x00, 0xb3, 0x21, 0xea, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0x78, 0xc1, -0x9c, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xbe, 0x22, 0x00, 0x00, 0x3e, 0x2e, 0x00, 0x00, 0x0c, 0xf1, -0x5f, 0x00, 0x28, 0xc3, 0x9c, 0x00, 0xe2, 0x81, 0xa4, 0x00, 0xe8, 0xe3, 0x9c, 0x00, 0xea, 0xc3, -0xdc, 0x00, 0x7e, 0x82, 0xba, 0x00, 0x0c, 0x81, 0xa4, 0x00, 0x78, 0x83, 0xa4, 0x00, 0x78, 0x03, -0x04, 0x00, 0x78, 0x0f, 0x3c, 0x00, 0x4c, 0x63, 0xf2, 0x00, 0xe9, 0x03, 0xa1, 0x00, 0x7f, 0xc2, -0xe0, 0x00, 0x01, 0x02, 0xec, 0x00, 0xd7, 0x4b, 0xe8, 0x00, 0x3f, 0xa2, 0xb8, 0x00, 0xe7, 0x03, -0xa2, 0x00, 0x7f, 0x02, 0xe0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x23, 0x63, 0xe8, 0x00, 0x41, 0x42, -0xac, 0x00, 0x01, 0xc2, 0xac, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xeb, 0x01, -0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xeb, 0x05, 0xe8, 0x00, 0x4b, 0x60, -0x0b, 0x00, 0x6f, 0x90, 0x55, 0x00, 0x1e, 0x63, 0xf2, 0x00, 0x4a, 0x30, 0x38, 0x00, 0x4a, 0xc0, -0xd8, 0x00, 0x4c, 0xe0, 0x47, 0x00, 0x4c, 0xc0, 0xdc, 0x00, 0x4e, 0xb0, 0x72, 0x00, 0x52, 0x90, -0x46, 0x00, 0x54, 0xf0, 0x7c, 0x00, 0x56, 0xc0, 0x40, 0x00, 0x59, 0x10, 0x40, 0x00, 0x49, 0x40, -0x4d, 0x00, 0x48, 0xc0, 0x9c, 0x00, 0x48, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x5a, 0x10, -0x60, 0x00, 0x5c, 0xc0, 0x5f, 0x00, 0x50, 0x80, 0xa2, 0x00, 0x50, 0x40, 0xf0, 0x00, 0xdc, 0xc0, -0x90, 0x00, 0x58, 0x80, 0xa4, 0x00, 0xdc, 0xe0, 0xd2, 0x00, 0x5a, 0x80, 0xa4, 0x00, 0xce, 0xf0, -0x1f, 0x00, 0xce, 0xd0, 0xc5, 0x00, 0xd0, 0x40, 0x40, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, -0xa2, 0x00, 0xc2, 0xc3, 0xd0, 0x00, 0x5a, 0xc0, 0xd3, 0x00, 0xdc, 0x0c, 0xa4, 0x00, 0x5a, 0xc0, -0x90, 0x00, 0xd2, 0xc0, 0xd3, 0x00, 0xcc, 0x03, 0x20, 0x00, 0xd2, 0xc0, 0xdc, 0x00, 0xcc, 0x80, -0xa5, 0x00, 0xce, 0x00, 0xa6, 0x00, 0xcc, 0xc0, 0xd4, 0x00, 0xc6, 0x03, 0xa2, 0x00, 0xdc, 0xc0, -0xd7, 0x00, 0xca, 0xc3, 0x3f, 0x00, 0xcc, 0xc0, 0xd0, 0x00, 0x86, 0xc3, 0xd3, 0x00, 0xd2, 0xb0, -0x0a, 0x00, 0xd4, 0xa0, 0x4a, 0x00, 0xd0, 0x00, 0xa3, 0x00, 0xcc, 0x03, 0x58, 0x00, 0xd0, 0xb0, -0x4a, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xda, 0xf0, -0x1f, 0x00, 0xda, 0x50, 0xc9, 0x00, 0x88, 0x83, 0xa2, 0x00, 0xc6, 0x43, 0x40, 0x00, 0xd8, 0x40, -0x40, 0x00, 0xc2, 0xc3, 0xa2, 0x00, 0x86, 0xc3, 0xd4, 0x00, 0xc2, 0xc3, 0xd7, 0x00, 0x86, 0xc3, -0xdc, 0x00, 0xca, 0x13, 0x80, 0x00, 0xd8, 0x80, 0xa4, 0x00, 0xd6, 0x00, 0xa6, 0x00, 0xdc, 0x10, -0x45, 0x00, 0xdc, 0xcc, 0xd4, 0x00, 0x86, 0x83, 0xa5, 0x00, 0xdc, 0xcc, 0xd4, 0x00, 0x48, 0x80, -0x21, 0x00, 0x4a, 0x20, 0x4f, 0x00, 0x4c, 0x20, 0x52, 0x00, 0x4e, 0xe0, 0x79, 0x00, 0x62, 0xe0, -0x4c, 0x00, 0xda, 0x80, 0xa2, 0x00, 0x88, 0x43, 0xf0, 0x00, 0x64, 0x30, 0x7b, 0x00, 0x66, 0xb0, -0x79, 0x00, 0x48, 0xc0, 0x5e, 0x00, 0x4a, 0x40, 0x71, 0x00, 0x4c, 0xb0, 0x6d, 0x00, 0x4e, 0x30, -0x46, 0x00, 0x62, 0xb0, 0x55, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc6, 0xc3, 0xd8, 0x00, 0xc6, 0xc3, -0xd0, 0x00, 0x86, 0xe3, 0xd3, 0x00, 0x64, 0xb0, 0x57, 0x00, 0x66, 0xa0, 0x70, 0x00, 0x5e, 0x80, -0x40, 0x00, 0x60, 0xc0, 0x7f, 0x00, 0x00, 0x02, 0xec, 0x00, 0x63, 0xc0, 0x90, 0x00, 0x63, 0xc0, -0xd2, 0x00, 0x6f, 0xc0, 0x52, 0x00, 0xeb, 0x01, 0xe8, 0x00, 0x61, 0x80, 0xa4, 0x00, 0x5d, 0x00, -0xa6, 0x00, 0xbf, 0x83, 0xe2, 0x00, 0x1a, 0xd0, 0x08, 0x00, 0x1c, 0xc0, 0xdc, 0x00, 0x22, 0xa0, -0x7d, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x38, 0x80, 0xa4, 0x00, 0x34, 0x00, 0xa6, 0x00, 0x4c, 0xc0, -0x9c, 0x00, 0x4e, 0x80, 0x4c, 0x00, 0x50, 0x50, 0x62, 0x00, 0x53, 0x30, 0x71, 0x00, 0x4b, 0x80, -0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x65, 0x3b, 0xe8, 0x00, 0x0f, 0x3f, 0xe8, 0x00, 0x48, 0xc0, -0x9c, 0x00, 0x58, 0x40, 0xf0, 0x00, 0x48, 0xc0, 0xd4, 0x00, 0xc8, 0x83, 0xa5, 0x00, 0x54, 0xc0, -0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, 0xa5, 0x00, 0xc8, 0xc3, 0x9c, 0x00, 0xc8, 0xc3, -0xdc, 0x00, 0x5a, 0x00, 0x60, 0x00, 0xcc, 0x6f, 0x46, 0x00, 0x52, 0x80, 0xa4, 0x00, 0xc6, 0x83, -0xa5, 0x00, 0xc6, 0xc3, 0x98, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc2, 0x8b, 0x5b, 0x00, 0xcc, 0x8b, -0x3f, 0x00, 0xcc, 0x0f, 0x3c, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x56, 0xcc, 0x9c, 0x00, 0xcc, 0x13, -0x40, 0x00, 0xc2, 0x83, 0xa6, 0x00, 0x58, 0xc0, 0x9c, 0x00, 0xc2, 0xe3, 0x7f, 0x00, 0x5a, 0xe0, -0x1f, 0x00, 0x5c, 0x40, 0x40, 0x00, 0x54, 0xc0, 0xa4, 0x00, 0xc8, 0xef, 0x40, 0x00, 0xca, 0x13, -0xc0, 0x00, 0x56, 0x00, 0xa4, 0x00, 0x5a, 0x28, 0x40, 0x00, 0x68, 0x40, 0xf0, 0x00, 0x60, 0xc0, -0x9c, 0x00, 0xcc, 0xab, 0x79, 0x00, 0xcc, 0x6f, 0x46, 0x00, 0x48, 0xc0, 0x9c, 0x00, 0x59, 0x80, -0xa4, 0x00, 0x5b, 0x00, 0xa6, 0x00, 0x6b, 0x3f, 0xe8, 0x00, 0x49, 0xc0, 0xd4, 0x00, 0x5e, 0x00, -0xa4, 0x00, 0x63, 0xc0, 0xd0, 0x00, 0x62, 0x14, 0xa6, 0x00, 0x00, 0x02, 0xec, 0x00, 0x56, 0x40, -0xf0, 0x00, 0x5e, 0xc0, 0x90, 0x00, 0x89, 0xa3, 0xe5, 0x00, 0x6f, 0x10, 0x12, 0x00, 0x61, 0x80, -0xa4, 0x00, 0x7f, 0x2b, 0xe8, 0x00, 0x83, 0xa3, 0xe5, 0x00, 0x67, 0x80, 0xa4, 0x00, 0x63, 0x30, -0x4f, 0x00, 0xeb, 0x01, 0xe8, 0x00, 0x63, 0x68, 0x0b, 0x00, 0x6f, 0x98, 0x55, 0x00, 0x63, 0xf0, -0x3c, 0x00, 0xff, 0xa3, 0xe5, 0x00, 0x65, 0xd0, 0x45, 0x00, 0x6f, 0x80, 0x5d, 0x00, 0xeb, 0x01, -0xe8, 0x00, 0x63, 0xc8, 0x9c, 0x00, 0x63, 0xe8, 0x42, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x8d, 0x23, -0xb0, 0x00, 0xe1, 0xc0, 0x9c, 0x00, 0x0b, 0x21, 0xb0, 0x00, 0x8b, 0x22, 0xb6, 0x00, 0x5b, 0xa2, -0xb6, 0x00, 0x01, 0x02, 0xec, 0x00, 0xcd, 0x03, 0x3a, 0x00, 0x79, 0x80, 0xa4, 0x00, 0xcd, 0x63, -0x39, 0x00, 0x4b, 0x22, 0xb7, 0x00, 0x4b, 0xa3, 0xb3, 0x00, 0x5b, 0x23, 0xb3, 0x00, 0x55, 0x83, -0xa4, 0x00, 0x01, 0x02, 0xee, 0x00, 0x57, 0x80, 0xa4, 0x00, 0x55, 0x43, 0xad, 0x00, 0x18, 0xe0, -0x9c, 0x00, 0x7e, 0x02, 0xe6, 0x00, 0xc6, 0x43, 0xf2, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xfe, 0x22, -0xb8, 0x00, 0x00, 0x82, 0xec, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x26, 0x00, 0xa6, 0x00, 0xc8, 0x03, -0x08, 0x00, 0xcc, 0xe3, 0x7e, 0x00, 0xc8, 0x53, 0x05, 0x00, 0xcc, 0x13, 0x7b, 0x00, 0xc8, 0x03, -0x38, 0x00, 0xcc, 0x23, 0x71, 0x00, 0xc8, 0x23, 0x30, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xcc, 0xd3, -0x6e, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0xc6, 0x03, 0xa2, 0x00, 0xc4, 0xc3, -0xd2, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc4, 0xc3, 0x94, 0x00, 0xc4, 0xc3, -0xd6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc2, 0x83, 0xa3, 0x00, 0xc8, 0xc3, -0xd2, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc8, 0xc3, 0x94, 0x00, 0xc4, 0x83, 0xa3, 0x00, 0x1a, 0xc2, -0xd7, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0x00, 0xc2, -0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x1c, 0xc2, 0xd3, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc6, 0xc3, -0xd0, 0x00, 0x1e, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0x3a, 0xc2, 0xd3, 0x00, 0xc2, 0xc3, -0x90, 0x00, 0x20, 0xc2, 0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x3c, 0xc2, 0xd3, 0x00, 0xc6, 0xc3, -0xd0, 0x00, 0x26, 0x14, 0xa2, 0x00, 0x3e, 0xc2, 0xd3, 0x00, 0x7e, 0x02, 0xe6, 0x00, 0xc8, 0xc3, -0xd0, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0x0e, 0x23, 0xe6, 0x00, 0xc9, 0xc0, 0x9c, 0x00, 0xcb, 0x23, -0xc0, 0x00, 0x01, 0x0e, 0xef, 0x00, 0x01, 0x42, 0xbe, 0x00, 0x07, 0x14, 0xa2, 0x00, 0xcc, 0x03, -0x00, 0x00, 0xf4, 0x03, 0xe2, 0x00, 0x01, 0x42, 0xb6, 0x00, 0xc9, 0x80, 0xa4, 0x00, 0x03, 0xcc, -0xf5, 0x00, 0x01, 0x4c, 0xe8, 0x00, 0xfb, 0x03, 0xe2, 0x00, 0xc9, 0x8c, 0xa4, 0x00, 0x01, 0x02, -0xec, 0x00, 0xf7, 0x0b, 0xe2, 0x00, 0x03, 0xcc, 0xf5, 0x00, 0xd7, 0x4c, 0xe8, 0x00, 0xfd, 0x48, -0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x01, -0xe0, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0x1e, 0x61, 0xf2, 0x00, 0x1b, 0xc1, 0x9c, 0x00, 0xcd, 0x83, -0xcc, 0x00, 0x01, 0x0e, 0xef, 0x00, 0xcb, 0x03, 0xcc, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc3, 0xe3, 0xa4, 0x00, 0x01, 0x62, 0xec, 0x00, 0xc3, 0xcf, 0xa4, 0x00, 0x1f, 0x49, -0xe8, 0x00, 0x0e, 0x09, 0xa6, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x1b, 0xc1, 0x9c, 0x00, 0xf7, 0x8f, -0xe3, 0x00, 0x89, 0xab, 0xe3, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1f, 0x4d, -0xe8, 0x00, 0x0e, 0x8d, 0xa4, 0x00, 0x1a, 0xc1, 0x9c, 0x00, 0x0e, 0xc1, 0xd8, 0x00, 0x0e, 0xc1, -0xdc, 0x00, 0x1c, 0xc1, 0xd8, 0x00, 0x10, 0x01, 0x48, 0x00, 0x1a, 0x01, 0xa6, 0x00, 0x0e, 0x81, -0xa4, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x10, 0x81, -0xa2, 0x00, 0xca, 0x4f, 0xc0, 0x00, 0xcc, 0xa3, 0xc0, 0x00, 0x10, 0xc1, 0x9c, 0x00, 0x10, 0xc1, -0xdc, 0x00, 0x00, 0xc1, 0xf0, 0x00, 0x18, 0xc1, 0x9c, 0x00, 0xcb, 0xc3, 0xdc, 0x00, 0xc5, 0x43, -0xa3, 0x00, 0x1f, 0x49, 0xe8, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, -0xdc, 0x00, 0xc6, 0xc3, 0xa4, 0x00, 0x12, 0xc1, 0x9c, 0x00, 0x14, 0x41, 0x40, 0x00, 0xc2, 0x0f, -0xc1, 0x00, 0xc2, 0x0b, 0x42, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x8f, 0x40, 0x00, 0xc2, 0xcb, -0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x12, 0x01, 0xa1, 0x00, 0x14, 0x01, -0xa6, 0x00, 0x10, 0xc8, 0xf0, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x04, 0x01, 0xa1, 0x00, 0x06, 0x01, -0xa6, 0x00, 0xc2, 0x0f, 0x20, 0x00, 0xc2, 0xcb, 0x9c, 0x00, 0xc2, 0xcf, 0x94, 0x00, 0xc2, 0xcb, -0x90, 0x00, 0x16, 0xc1, 0xdc, 0x00, 0x16, 0xc1, 0xd4, 0x00, 0x18, 0x61, 0xf2, 0x00, 0xc6, 0x83, -0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x23, 0x40, 0x00, 0xca, 0x0f, 0x20, 0x00, 0xca, 0xcb, -0x9c, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x03, 0xc4, 0x00, 0xc2, 0x43, -0xa1, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0x18, 0x89, 0xa4, 0x00, 0xc6, 0xc3, 0x9c, 0x00, 0xca, 0xa3, -0x7f, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc2, 0x43, 0xa1, 0x00, 0x18, 0x8d, 0xa4, 0x00, 0x1c, 0x01, -0xa6, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x19, 0x09, 0xa6, 0x00, 0x01, 0x02, -0xef, 0x00, 0x07, 0x08, 0xa6, 0x00, 0x27, 0x08, 0xa6, 0x00, 0xfb, 0x80, 0x00, 0x00, 0x7f, 0x02, -0xe7, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x01, 0x42, 0xb7, 0x00, 0x7e, 0x82, 0xe6, 0x00, 0x1c, 0xc1, -0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc1, 0x9c, 0x00, 0xc2, 0x03, -0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x00, 0xc2, 0xb6, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1d, 0x81, -0xa4, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1b, 0x81, 0xa4, 0x00, 0x0f, 0xc1, -0x9c, 0x00, 0xcd, 0x83, 0xc6, 0x00, 0xca, 0x83, 0x80, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x03, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xce, 0x88, -0xa4, 0x00, 0xce, 0x0c, 0xa6, 0x00, 0x18, 0x81, 0xa4, 0x00, 0xc7, 0xc3, 0x9c, 0x00, 0xc7, 0xcf, -0xdc, 0x00, 0x7f, 0x00, 0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0x11, 0x80, 0xbe, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0xe3, 0xa2, 0x00, 0xc6, 0xc3, 0x9c, 0x00, 0xc6, 0xc3, -0xdc, 0x00, 0x12, 0x01, 0xa6, 0x00, 0x14, 0x01, 0xa6, 0x00, 0x10, 0x01, 0xa6, 0x00, 0xca, 0x33, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0xc3, 0x9c, 0x00, 0x00, 0x02, -0xa6, 0x00, 0x02, 0x02, 0xa6, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x04, 0x02, 0xa6, 0x00, 0x06, 0x02, -0xa6, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0x53, 0x15, 0x00, 0x08, 0x02, 0xa6, 0x00, 0x0a, 0x02, -0xa6, 0x00, 0x0c, 0x02, 0xa6, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x0e, 0x02, 0xa6, 0x00, 0x00, 0x02, -0xec, 0x00, 0x04, 0x81, 0xa1, 0x00, 0xca, 0x03, 0x06, 0x00, 0x12, 0x81, 0xa1, 0x00, 0x1b, 0x01, -0xa6, 0x00, 0x1d, 0x01, 0xa6, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x0b, 0x01, -0xa1, 0x00, 0x0f, 0xc1, 0x9c, 0x00, 0xcd, 0x83, 0xc6, 0x00, 0xca, 0x83, 0x80, 0x00, 0x00, 0x02, -0xec, 0x00, 0xca, 0x03, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc2, 0xc3, -0xa4, 0x00, 0xce, 0x88, 0xa4, 0x00, 0xce, 0x0c, 0xa6, 0x00, 0x18, 0x81, 0xa4, 0x00, 0xc7, 0xc3, -0x9c, 0x00, 0xc7, 0xcf, 0xdc, 0x00, 0x7f, 0x00, 0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0x11, 0x80, -0xbe, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0xe3, 0xa2, 0x00, 0xc6, 0xc3, -0x9c, 0x00, 0xc6, 0xc3, 0xdc, 0x00, 0x12, 0x01, 0xa6, 0x00, 0x14, 0x01, 0xa6, 0x00, 0x10, 0x01, -0xa6, 0x00, 0xca, 0x33, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0xc3, -0x9c, 0x00, 0x00, 0x02, 0xa6, 0x00, 0x02, 0x02, 0xa6, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x04, 0x02, -0xa6, 0x00, 0x06, 0x02, 0xa6, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0x53, 0x15, 0x00, 0x08, 0x02, -0xa6, 0x00, 0x0a, 0x02, 0xa6, 0x00, 0x0c, 0x02, 0xa6, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x0e, 0x02, -0xa6, 0x00, 0x00, 0x02, 0xec, 0x00, 0x04, 0x81, 0xa1, 0x00, 0xca, 0x03, 0x06, 0x00, 0x12, 0x81, -0xa1, 0x00, 0x1b, 0x01, 0xa6, 0x00, 0x1d, 0x01, 0xa6, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, -0xec, 0x00, 0x0b, 0x01, 0xa1, 0x00, 0x00, 0xc0, 0xdc, 0x00, 0x02, 0x40, 0x40, 0x00, 0x00, 0x82, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0xc3, -0xdc, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x60, 0xf2, 0x00, 0x7c, 0x03, 0xa1, 0x00, 0x7c, 0xc3, -0x9c, 0x00, 0xcc, 0x03, 0x44, 0x00, 0x02, 0x00, 0xa6, 0x00, 0x02, 0x40, 0x40, 0x00, 0x00, 0x0c, -0xa1, 0x00, 0x00, 0x40, 0x80, 0x00, 0xcc, 0x03, 0xc1, 0x00, 0x00, 0x82, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc8, 0x83, 0xa2, 0x00, 0xc8, 0x43, 0xf0, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc8, 0xc3, -0xd2, 0x00, 0xc7, 0x03, 0xa5, 0x00, 0x01, 0xc0, 0xf1, 0x00, 0xcb, 0x7f, 0xf2, 0x00, 0x2d, 0x7b, -0xe8, 0x00, 0x00, 0xc2, 0xec, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0x18, 0xe0, 0x9c, 0x00, 0x7e, 0x02, -0xe6, 0x00, 0xc6, 0x43, 0xf2, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xfe, 0x22, 0xb8, 0x00, 0x00, 0x82, -0xec, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x26, 0x00, 0xa6, 0x00, 0xc8, 0x03, 0x08, 0x00, 0xcc, 0xe3, -0x7e, 0x00, 0xc8, 0x53, 0x05, 0x00, 0xcc, 0x13, 0x7b, 0x00, 0xc8, 0x03, 0x38, 0x00, 0xcc, 0x23, -0x71, 0x00, 0xc8, 0x23, 0x30, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xcc, 0xd3, 0x6e, 0x00, 0xc4, 0x83, -0xa2, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0xc6, 0x03, 0xa2, 0x00, 0xc4, 0xc3, 0xd2, 0x00, 0xc2, 0xc3, -0xdc, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc4, 0xc3, 0x94, 0x00, 0xc4, 0xc3, 0xd6, 0x00, 0xc2, 0xc3, -0xdc, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc2, 0x83, 0xa3, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0xc6, 0x03, -0x50, 0x00, 0xc8, 0xc3, 0x94, 0x00, 0xc4, 0x83, 0xa3, 0x00, 0x1a, 0xc2, 0xd7, 0x00, 0xc6, 0x03, -0x50, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0x00, 0xc2, 0xd3, 0x00, 0xc4, 0xc3, -0xd0, 0x00, 0x1c, 0xc2, 0xd3, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0x1e, 0xc2, -0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0x3a, 0xc2, 0xd3, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0x20, 0xc2, -0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x3c, 0xc2, 0xd3, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0x06, 0x14, -0xa2, 0x00, 0x3e, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x26, 0x14, 0xa2, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0xc7, 0x4e, 0xe8, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x01, 0xe0, 0x00, 0xfb, 0x80, -0x00, 0x00, 0x7f, 0x02, 0xe7, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x01, 0x42, 0xb7, 0x00, 0x7e, 0x82, -0xe6, 0x00, 0x1c, 0xc1, 0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc1, -0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xcc, 0x03, 0xc4, 0x00, 0x00, 0xc2, -0xb6, 0x00, 0x1c, 0x81, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0x81, -0xa4, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x01, 0xca, 0xec, 0x00, 0xf5, 0x4a, 0xe8, 0x00, 0x7f, 0x02, -0xe6, 0x00, 0x0f, 0x23, 0xe6, 0x00, 0xc9, 0xc0, 0x9c, 0x00, 0xcb, 0x23, 0xc0, 0x00, 0x01, 0x0e, -0xef, 0x00, 0x01, 0x42, 0xbe, 0x00, 0xcd, 0x03, 0x00, 0x00, 0xf4, 0x03, 0xe2, 0x00, 0x01, 0x42, -0xb6, 0x00, 0xc9, 0x80, 0xa4, 0x00, 0x03, 0xcc, 0xf5, 0x00, 0x01, 0x4c, 0xe8, 0x00, 0xfb, 0x03, -0xe2, 0x00, 0xc9, 0x8c, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0xf7, 0x0b, 0xe2, 0x00, 0x03, 0xcc, -0xf5, 0x00, 0xd7, 0x4c, 0xe8, 0x00, 0xb1, 0x4b, 0xe8, 0x00, 0xf7, 0x03, 0xe3, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x0a, 0xef, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x01, -0xe0, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x1f, 0x61, 0xf2, 0x00, 0x1b, 0xc1, 0x9c, 0x00, 0xcd, 0x83, -0xcc, 0x00, 0x01, 0x0e, 0xef, 0x00, 0xcb, 0x03, 0xcc, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc3, 0xe3, 0xa4, 0x00, 0x01, 0x62, 0xec, 0x00, 0xc3, 0xcf, 0xa4, 0x00, 0x81, 0x49, -0xe8, 0x00, 0x0e, 0x09, 0xa6, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x1b, 0xc1, 0x9c, 0x00, 0xf7, 0x8f, -0xe3, 0x00, 0x89, 0xab, 0xe3, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x81, 0x4d, -0xe8, 0x00, 0x0e, 0x8d, 0xa4, 0x00, 0x1a, 0xc1, 0x9c, 0x00, 0x0e, 0xc1, 0xd8, 0x00, 0x0e, 0xc1, -0xdc, 0x00, 0x1c, 0xc1, 0xd8, 0x00, 0x10, 0x01, 0x48, 0x00, 0x1a, 0x01, 0xa6, 0x00, 0x0e, 0x81, -0xa4, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x10, 0x81, -0xa2, 0x00, 0xca, 0x4f, 0xc0, 0x00, 0xcc, 0xa3, 0xc0, 0x00, 0x10, 0xc1, 0x9c, 0x00, 0x10, 0xc1, -0xdc, 0x00, 0x00, 0xc1, 0xf0, 0x00, 0x18, 0xc1, 0x9c, 0x00, 0xcb, 0xc3, 0xdc, 0x00, 0xc5, 0x43, -0xa3, 0x00, 0x81, 0x49, 0xe8, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, -0xdc, 0x00, 0xc6, 0xc3, 0xa4, 0x00, 0x12, 0xc1, 0x9c, 0x00, 0x14, 0x41, 0x40, 0x00, 0xc2, 0x0f, -0xc1, 0x00, 0xc2, 0x0b, 0x42, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x8f, 0x40, 0x00, 0xc2, 0xcb, -0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x12, 0x01, 0xa1, 0x00, 0x14, 0x01, -0xa6, 0x00, 0x10, 0xc8, 0xf0, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x04, 0x01, 0xa1, 0x00, 0x06, 0x01, -0xa6, 0x00, 0xc2, 0x0f, 0x20, 0x00, 0xc2, 0xcb, 0x9c, 0x00, 0xc2, 0xcf, 0x94, 0x00, 0xc2, 0xcb, -0x90, 0x00, 0x16, 0xc1, 0xdc, 0x00, 0x16, 0xc1, 0xd4, 0x00, 0x18, 0x61, 0xf2, 0x00, 0xc6, 0x83, -0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x23, 0x40, 0x00, 0xca, 0x0f, 0x20, 0x00, 0xca, 0xcb, -0x9c, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x03, 0xc4, 0x00, 0xc2, 0x43, -0xa1, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0x18, 0x89, 0xa4, 0x00, 0xc6, 0xc3, 0x9c, 0x00, 0xca, 0xa3, -0x7f, 0x00, 0xca, 0x03, 0x00, 0x00, 0xc2, 0x43, 0xa1, 0x00, 0x18, 0x8d, 0xa4, 0x00, 0x1c, 0x01, -0xa6, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x19, 0x89, 0xa4, 0x00, 0xf7, 0x03, -0xe3, 0x00, 0x07, 0x08, 0xa6, 0x00, 0x27, 0x08, 0xa6, 0x00, 0xc7, 0x4a, 0xe8, 0x00, 0x01, 0x0e, -0xef, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x01, 0xe0, 0x00, 0xfb, 0x80, 0x00, 0x00, 0x7f, 0x02, -0xe7, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x01, 0x42, 0xb7, 0x00, 0x7e, 0x82, 0xe6, 0x00, 0x1c, 0xc1, -0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc1, 0x9c, 0x00, 0xc2, 0x03, -0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x00, 0xc2, 0xb6, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1d, 0x81, -0xa4, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1b, 0x81, 0xa4, 0x00, 0xc2, 0x03, -0xad, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0x68, 0xc1, 0x9c, 0x00, 0xca, 0x23, 0xc0, 0x00, 0xe2, 0xc1, -0x9c, 0x00, 0x68, 0xc1, 0x9c, 0x00, 0xcc, 0x43, 0xc1, 0x00, 0xde, 0x81, 0xa1, 0x00, 0xc0, 0xa3, -0xe7, 0x00, 0x69, 0x81, 0xa4, 0x00, 0x79, 0x81, 0xa4, 0x00, 0x27, 0x6c, 0xe8, 0x00, 0x91, 0x23, -0xe0, 0x00, 0xef, 0x03, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc3, 0xc3, -0xa4, 0x00, 0x27, 0x6c, 0xe8, 0x00, 0x91, 0x23, 0xe0, 0x00, 0xef, 0x03, 0xe0, 0x00, 0xee, 0x81, -0x00, 0x00, 0xc4, 0xc1, 0x9c, 0x00, 0xcc, 0xc3, 0xdc, 0x00, 0x98, 0x23, 0xe1, 0x00, 0x56, 0x41, -0xad, 0x00, 0x6a, 0xc1, 0x9c, 0x00, 0xc4, 0x03, 0xa6, 0x00, 0xc4, 0x03, 0x50, 0x00, 0xc4, 0x81, -0xa4, 0x00, 0x68, 0xc1, 0x9c, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc4, 0x03, 0x30, 0x00, 0x00, 0x02, -0xec, 0x00, 0x6c, 0x81, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x72, 0x81, 0xa4, 0x00, 0x69, 0x81, -0xa4, 0x00, 0x6b, 0x81, 0xa4, 0x00, 0x91, 0x23, 0xe0, 0x00, 0xef, 0x03, 0xe0, 0x00, 0xc1, 0xe1, -0x9c, 0x00, 0x3d, 0x6d, 0xe8, 0x00, 0xbd, 0x6c, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x21, 0x6f, -0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0xc1, 0x01, 0xa5, 0x00, 0x36, 0xe0, 0xf3, 0x00, 0x02, 0xc2, -0x00, 0x00, 0x06, 0x02, 0x4c, 0x00, 0x0a, 0x02, 0x50, 0x00, 0x0c, 0x02, 0x68, 0x00, 0x10, 0x82, -0x7e, 0x00, 0x04, 0x82, 0x04, 0x00, 0x08, 0x02, 0x50, 0x00, 0x0e, 0x02, 0x77, 0x00, 0x7a, 0xe1, -0x9c, 0x00, 0x0c, 0x02, 0x12, 0x00, 0x08, 0x82, 0xa4, 0x00, 0x0e, 0x02, 0x52, 0x00, 0x12, 0xf2, -0x7d, 0x00, 0x0a, 0x82, 0xa4, 0x00, 0x7a, 0x05, 0xa5, 0x00, 0x16, 0xc2, 0x9c, 0x00, 0x18, 0x42, -0x76, 0x00, 0x00, 0x02, 0xec, 0x00, 0x0e, 0x02, 0xa2, 0x00, 0x0e, 0xc2, 0x49, 0x00, 0x16, 0xc2, -0x9c, 0x00, 0x20, 0x02, 0x67, 0x00, 0x0e, 0x02, 0x59, 0x00, 0x18, 0xc2, 0x9c, 0x00, 0x1e, 0x42, -0x76, 0x00, 0x10, 0x82, 0xa4, 0x00, 0x10, 0xc2, 0x49, 0x00, 0x20, 0xc2, 0x9c, 0x00, 0x18, 0x82, -0xa4, 0x00, 0x26, 0x02, 0x67, 0x00, 0x18, 0x02, 0x59, 0x00, 0x26, 0x02, 0x0c, 0x00, 0x16, 0x82, -0xa4, 0x00, 0x28, 0x42, 0x76, 0x00, 0x16, 0x02, 0x44, 0x00, 0x26, 0x02, 0x04, 0x00, 0x1e, 0x82, -0xa4, 0x00, 0x2e, 0x02, 0x67, 0x00, 0x16, 0x02, 0x4c, 0x00, 0x28, 0xc2, 0x9c, 0x00, 0x20, 0x82, -0xa4, 0x00, 0x20, 0xc2, 0x49, 0x00, 0x32, 0xc2, 0xdc, 0x00, 0x2a, 0x02, 0x59, 0x00, 0x26, 0x82, -0xa4, 0x00, 0x35, 0xc2, 0x9c, 0x00, 0x2d, 0x82, 0x41, 0x00, 0x01, 0x8c, 0xea, 0x00, 0x31, 0x02, -0x58, 0x00, 0x29, 0x82, 0xa4, 0x00, 0x21, 0x6f, 0xe8, 0x00, 0x3b, 0x02, 0x68, 0x00, 0x3f, 0x82, -0x7e, 0x00, 0x30, 0xc2, 0x9c, 0x00, 0x2c, 0x02, 0x49, 0x00, 0x38, 0x02, 0x77, 0x00, 0x30, 0xc2, -0x9c, 0x00, 0x2c, 0x02, 0x58, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x28, 0x82, 0x41, 0x00, 0x36, 0x02, -0x68, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x3b, 0x82, 0x7e, 0x00, 0x2d, 0xc2, 0x9c, 0x00, 0xbf, 0x61, -0xe8, 0x00, 0x28, 0x02, 0x49, 0x00, 0x34, 0x02, 0x77, 0x00, 0xbe, 0xe0, 0xf3, 0x00, 0x02, 0x02, -0x12, 0x00, 0x04, 0xf2, 0x7d, 0x00, 0x0a, 0xc2, 0x9c, 0x00, 0x0e, 0x42, 0x76, 0x00, 0x06, 0xc2, -0x49, 0x00, 0x0a, 0xc2, 0x9c, 0x00, 0x16, 0x02, 0x67, 0x00, 0x02, 0x02, 0xa2, 0x00, 0x06, 0x02, -0x59, 0x00, 0x0e, 0xc2, 0x9c, 0x00, 0x0a, 0x82, 0xa4, 0x00, 0x12, 0x42, 0x76, 0x00, 0x0a, 0xc2, -0x49, 0x00, 0x16, 0xc2, 0x9c, 0x00, 0x12, 0x82, 0xa4, 0x00, 0x1a, 0x02, 0x67, 0x00, 0x12, 0x02, -0x59, 0x00, 0x1a, 0x02, 0x0c, 0x00, 0x0e, 0x82, 0xa4, 0x00, 0x1e, 0x42, 0x76, 0x00, 0x0e, 0x02, -0x44, 0x00, 0x1a, 0x02, 0x04, 0x00, 0x16, 0x82, 0xa4, 0x00, 0x22, 0x02, 0x67, 0x00, 0x0e, 0x02, -0x4c, 0x00, 0x7a, 0xe1, 0x9c, 0x00, 0x1a, 0x82, 0xa4, 0x00, 0x1e, 0xc2, 0x9c, 0x00, 0x1a, 0xc2, -0x49, 0x00, 0x24, 0xc2, 0xdc, 0x00, 0x1e, 0x82, 0xa4, 0x00, 0x7a, 0x05, 0xa5, 0x00, 0x20, 0x02, -0x59, 0x00, 0x34, 0xc2, 0x9c, 0x00, 0x37, 0xc2, 0x9c, 0x00, 0x39, 0xc2, 0x9c, 0x00, 0x01, 0x8c, -0xea, 0x00, 0x3a, 0xca, 0x9c, 0x00, 0x26, 0x82, 0xa4, 0x00, 0x38, 0x8a, 0xa4, 0x00, 0x3b, 0x8a, -0xa4, 0x00, 0x3d, 0x8a, 0xa4, 0x00, 0x21, 0x6f, 0xe8, 0x00, 0x3f, 0x8a, 0xa4, 0x00, 0x2d, 0xca, -0x9c, 0x00, 0x28, 0x8a, 0x41, 0x00, 0x2a, 0x02, 0x58, 0x00, 0x3a, 0x02, 0x68, 0x00, 0x3e, 0x82, -0x7e, 0x00, 0x2a, 0xc2, 0x9c, 0x00, 0x28, 0x02, 0x49, 0x00, 0x38, 0x02, 0x77, 0x00, 0x2a, 0xc2, -0x9c, 0x00, 0x28, 0x02, 0x58, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x26, 0x82, 0x41, 0x00, 0x36, 0x02, -0x68, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x3b, 0x82, 0x7e, 0x00, 0x29, 0xc2, 0x9c, 0x00, 0xbf, 0x61, -0xe8, 0x00, 0x26, 0x02, 0x49, 0x00, 0x34, 0x02, 0x77, 0x00, 0x3e, 0xe1, 0xf3, 0x00, 0x02, 0xa2, -0x10, 0x00, 0x04, 0xb2, 0x43, 0x00, 0x06, 0xb2, 0x7b, 0x00, 0x08, 0xc2, 0x9c, 0x00, 0x0a, 0x42, -0x76, 0x00, 0x06, 0xc2, 0x49, 0x00, 0x08, 0xc2, 0x9c, 0x00, 0x0e, 0x02, 0x67, 0x00, 0x04, 0x02, -0xa2, 0x00, 0x06, 0x02, 0x59, 0x00, 0x0a, 0xc2, 0x9c, 0x00, 0x08, 0x82, 0xa4, 0x00, 0x0c, 0x42, -0x76, 0x00, 0x08, 0xc2, 0x49, 0x00, 0x0e, 0xc2, 0x9c, 0x00, 0x0c, 0x82, 0xa4, 0x00, 0x10, 0x02, -0x67, 0x00, 0x0c, 0x02, 0x59, 0x00, 0x10, 0x02, 0x18, 0x00, 0x0a, 0x82, 0xa4, 0x00, 0x12, 0x42, -0x76, 0x00, 0x0a, 0x02, 0x48, 0x00, 0x10, 0x02, 0x04, 0x00, 0x0e, 0x82, 0xa4, 0x00, 0x14, 0x02, -0x67, 0x00, 0x0a, 0x02, 0x4c, 0x00, 0x12, 0xc2, 0x9c, 0x00, 0x10, 0x82, 0xa4, 0x00, 0x10, 0xc2, -0x49, 0x00, 0x00, 0x02, 0xec, 0x00, 0x14, 0xc2, 0x9c, 0x00, 0x12, 0x82, 0xa4, 0x00, 0x12, 0x02, -0x59, 0x00, 0x1a, 0xc2, 0x9c, 0x00, 0x1a, 0x82, 0xa4, 0x00, 0x32, 0xc2, 0x9c, 0x00, 0x34, 0xc2, -0x9c, 0x00, 0x36, 0xc2, 0x9c, 0x00, 0x18, 0x02, 0xa2, 0x00, 0x38, 0xc2, 0x9c, 0x00, 0xc4, 0x83, -0xa4, 0x00, 0x38, 0x82, 0xa4, 0x00, 0x3a, 0x82, 0xa4, 0x00, 0x3c, 0x82, 0xa4, 0x00, 0x1c, 0xc2, -0x9c, 0x00, 0x3e, 0x82, 0xa4, 0x00, 0x1a, 0x82, 0x41, 0x00, 0xc4, 0x03, 0x58, 0x00, 0x3a, 0x02, -0x68, 0x00, 0x3e, 0x82, 0x7e, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0x1a, 0x02, 0x49, 0x00, 0x38, 0x02, -0x77, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0x1a, 0x02, 0x58, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x18, 0x82, -0x41, 0x00, 0x36, 0x02, 0x68, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x3a, 0x82, 0x7e, 0x00, 0x00, 0x02, -0xec, 0x00, 0x1a, 0xc2, 0x9c, 0x00, 0x18, 0x02, 0x49, 0x00, 0x34, 0x02, 0x77, 0x00, 0x0a, 0x23, -0xb0, 0x00, 0x33, 0x82, 0xa4, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0x01, 0x80, 0xea, 0x00, 0xcc, 0x63, -0x0d, 0x00, 0x31, 0x82, 0xa4, 0x00, 0x04, 0xc0, 0xdc, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0x02, 0xe0, -0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x82, 0xec, 0x00, 0xc2, 0x03, -0xa1, 0x00, 0xc3, 0x63, 0xf2, 0x00, 0x03, 0x14, 0xa1, 0x00, 0xf7, 0x61, 0xe8, 0x00, 0x21, 0x7b, -0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x0b, 0x23, 0xb0, 0x00, 0x7e, 0x00, 0xe0, 0x00, 0xcc, 0xc3, -0x9c, 0x00, 0x02, 0xe0, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x21, 0x6f, 0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x03, 0x0c, 0xa1, 0x00, 0x01, 0xc0, -0x9c, 0x00, 0x02, 0x40, 0x40, 0x00, 0x04, 0xc0, 0xdc, 0x00, 0x06, 0x40, 0x40, 0x00, 0x00, 0xa2, -0xec, 0x00, 0xcc, 0xc3, 0xdc, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x7c, 0x03, 0xa1, 0x00, 0x7c, 0xc3, -0x9c, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x60, 0xf2, 0x00, 0x02, 0x40, 0x40, 0x00, 0x02, 0x00, -0xa6, 0x00, 0x00, 0x0c, 0xa1, 0x00, 0xcc, 0x03, 0x44, 0x00, 0xc2, 0x43, 0x80, 0x00, 0xcc, 0xc3, -0xc1, 0x00, 0x00, 0x82, 0xec, 0x00, 0x02, 0xc0, 0x9c, 0x00, 0xcc, 0xc3, 0xdc, 0x00, 0xc8, 0x83, -0xa2, 0x00, 0xc8, 0x43, 0xf0, 0x00, 0xc6, 0x03, 0xa5, 0x00, 0x04, 0x64, 0xf2, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0x02, 0x0c, 0xa1, 0x00, 0x00, 0xce, -0xec, 0x00, 0x7e, 0x82, 0xe0, 0x00, 0xc6, 0x43, 0xf2, 0x00, 0xcc, 0xe3, 0x3e, 0x00, 0xfe, 0x22, -0xb8, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc8, 0x03, 0x48, 0x00, 0xc8, 0x53, 0x05, 0x00, 0xcc, 0x13, -0x7b, 0x00, 0xc8, 0x03, 0x38, 0x00, 0xcc, 0x23, 0x71, 0x00, 0xc8, 0x23, 0x30, 0x00, 0xc2, 0x83, -0xa2, 0x00, 0xcc, 0xd3, 0x6e, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0xc6, 0x03, -0xa2, 0x00, 0xc4, 0xc3, 0xd2, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc4, 0xc3, -0x94, 0x00, 0xc4, 0xc3, 0xd6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc2, 0x83, -0xa3, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc8, 0xc3, 0x94, 0x00, 0xc4, 0x83, -0xa3, 0x00, 0x40, 0xc2, 0xd7, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0xc6, 0x83, -0xa4, 0x00, 0x46, 0xc2, 0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x42, 0xc2, 0xd3, 0x00, 0xc8, 0x83, -0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0x44, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0x00, 0xc2, -0xd3, 0x00, 0x8e, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0x06, 0xc2, 0xd3, 0x00, 0xc4, 0xc3, -0xd0, 0x00, 0x02, 0xc2, 0xd3, 0x00, 0x8e, 0x03, 0xa2, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc6, 0xc3, -0xd0, 0x00, 0x04, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0xff, 0x03, -0xe0, 0x00, 0x7d, 0xc1, 0x9c, 0x00, 0x8f, 0xc3, 0x9c, 0x00, 0xdb, 0xc3, 0x9c, 0x00, 0x05, 0x6f, -0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0xdb, 0x03, 0xa2, 0x00, 0x7d, 0x41, 0xa5, 0x00, 0x21, 0x6f, -0xe8, 0x00, 0xc5, 0x83, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x28, 0x23, 0xb0, 0x00, 0x8e, 0xc3, -0x9c, 0x00, 0x7e, 0x40, 0xe0, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0x00, 0x82, 0xec, 0x00, 0x00, 0xc2, -0xec, 0x00, 0x00, 0xc0, 0x9c, 0x00, 0x02, 0x40, 0x76, 0x00, 0x00, 0x80, 0xa4, 0x00, 0x00, 0xc0, -0x49, 0x00, 0x08, 0xc0, 0x9c, 0x00, 0x08, 0x80, 0xa4, 0x00, 0x08, 0x00, 0x59, 0x00, 0x0a, 0x00, -0x67, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x80, 0xa4, 0x00, 0x0a, 0x00, 0x42, 0x00, 0x0c, 0x00, -0x67, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0a, 0x80, 0xa4, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x04, 0x40, -0x76, 0x00, 0x0c, 0xc0, 0x9c, 0x00, 0x0c, 0x80, 0xa4, 0x00, 0x0c, 0x00, 0x59, 0x00, 0x0e, 0x00, -0x67, 0x00, 0x04, 0xc0, 0x9c, 0x00, 0x04, 0x80, 0xa4, 0x00, 0x04, 0xc0, 0x49, 0x00, 0x06, 0x40, -0x76, 0x00, 0x0e, 0xc0, 0x9c, 0x00, 0x0e, 0x80, 0xa4, 0x00, 0x06, 0xc0, 0xdc, 0x00, 0x0e, 0x00, -0x59, 0x00, 0x00, 0x02, 0xec, 0x00, 0x06, 0x80, 0xa4, 0x00, 0x06, 0xc0, 0x49, 0x00, 0x00, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xdb, 0xc3, 0x9c, 0x00, 0xb9, 0x62, 0xea, 0x00, 0xc4, 0xc3, -0x9c, 0x00, 0xda, 0x03, 0xa2, 0x00, 0x00, 0x82, 0xec, 0x00, 0xda, 0xc3, 0x9c, 0x00, 0x8e, 0x83, -0xa4, 0x00, 0x0a, 0x23, 0xb0, 0x00, 0x7e, 0x00, 0xe0, 0x00, 0x8e, 0xc3, 0x9c, 0x00, 0x7e, 0x02, -0xe3, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x21, 0x82, 0xa4, 0x00, 0x03, 0x42, 0xbb, 0x00, 0x19, 0x60, -0xf2, 0x00, 0x01, 0x82, 0xa4, 0x00, 0xe3, 0x65, 0xe8, 0x00, 0x01, 0x8a, 0xa4, 0x00, 0x21, 0x8a, -0xa4, 0x00, 0xe3, 0x65, 0xe8, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0xe3, 0x41, -0xe8, 0x00, 0x04, 0xe0, 0x9c, 0x00, 0x06, 0x40, 0x40, 0x00, 0x00, 0x82, 0xec, 0x00, 0x88, 0xa3, -0xe3, 0x00, 0x7e, 0x41, 0xe6, 0x00, 0x7f, 0xc2, 0xe6, 0x00, 0x19, 0x01, 0xbe, 0x00, 0x01, 0x02, -0xec, 0x00, 0x00, 0x82, 0xec, 0x00, 0x02, 0xc2, 0xbe, 0x00, 0x18, 0xc1, 0x9c, 0x00, 0x2c, 0x85, -0xa4, 0x00, 0x00, 0x62, 0x10, 0x00, 0x00, 0x11, 0x7e, 0x00, 0x00, 0x02, 0xec, 0x00, 0x2a, 0x85, -0xa4, 0x00, 0x00, 0xc1, 0x9c, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x02, 0x41, 0x76, 0x00, 0x18, 0x81, -0xa4, 0x00, 0x18, 0xc1, 0x49, 0x00, 0x00, 0xc1, 0x9c, 0x00, 0x04, 0x01, 0x67, 0x00, 0x18, 0x01, -0x59, 0x00, 0x02, 0xc1, 0x9c, 0x00, 0x06, 0x41, 0x76, 0x00, 0x1a, 0x81, 0xa4, 0x00, 0x1a, 0xc1, -0x49, 0x00, 0x04, 0xc1, 0x9c, 0x00, 0x1c, 0x81, 0xa4, 0x00, 0x08, 0x01, 0x67, 0x00, 0x1c, 0x01, -0x59, 0x00, 0x08, 0x01, 0x18, 0x00, 0x1e, 0x81, 0xa4, 0x00, 0x0a, 0x41, 0x76, 0x00, 0x1e, 0x01, -0x48, 0x00, 0x08, 0x01, 0x04, 0x00, 0x00, 0x81, 0xa4, 0x00, 0x0c, 0x01, 0x67, 0x00, 0x1e, 0x01, -0x4c, 0x00, 0x0a, 0xc1, 0x9c, 0x00, 0x02, 0x81, 0xa4, 0x00, 0x02, 0xc1, 0x49, 0x00, 0x00, 0x02, -0xec, 0x00, 0x0c, 0xc1, 0x9c, 0x00, 0x04, 0x81, 0xa4, 0x00, 0x04, 0x01, 0x59, 0x00, 0x10, 0xc1, -0x9c, 0x00, 0x08, 0x81, 0xa4, 0x00, 0x08, 0x81, 0x41, 0x00, 0x0e, 0x01, 0x58, 0x00, 0x14, 0x01, -0x68, 0x00, 0x06, 0x01, 0xa2, 0x00, 0xc2, 0x83, 0x7e, 0x00, 0x0e, 0xc1, 0x9c, 0x00, 0x08, 0x01, -0x49, 0x00, 0x12, 0x01, 0x77, 0x00, 0x0e, 0xc1, 0x9c, 0x00, 0x08, 0x01, 0x58, 0x00, 0x10, 0x81, -0xa4, 0x00, 0x10, 0x01, 0x68, 0x00, 0x06, 0x81, 0x41, 0x00, 0x0e, 0x81, 0xa4, 0x00, 0x15, 0x81, -0x7e, 0x00, 0x09, 0xc1, 0x9c, 0x00, 0x3d, 0x63, 0xea, 0x00, 0x06, 0x01, 0x49, 0x00, 0x0e, 0x01, -0x77, 0x00, 0x00, 0x02, 0xec, 0x00, 0x2d, 0x81, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1d, 0x4a, -0xe8, 0x00, 0x2d, 0x6f, 0xe8, 0x00, 0x2a, 0x81, 0xa4, 0x00, 0x00, 0x22, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0xc0, 0x9c, 0x00, 0x21, 0xc0, -0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0xc0, 0x9c, 0x00, 0x01, 0x00, 0x50, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x00, 0x50, 0x00, 0x21, 0xc0, 0xd8, 0x00, 0x21, 0xc0, 0x9c, 0x00, 0x01, 0xc0, -0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0xc0, 0x98, 0x00, 0x01, 0xc0, 0x98, 0x00, 0x21, 0xc0, -0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x21, 0xc0, -0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xa0, 0x16, 0x00, 0x01, 0xa0, -0x16, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x01, 0xa0, 0x16, 0x00, 0x01, 0x60, -0x29, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0x30, 0x14, 0x00, 0x01, 0xc0, 0x98, 0x00, 0x21, 0xc0, -0x98, 0x00, 0x0a, 0x23, 0xb0, 0x00, 0x7f, 0x81, 0xe7, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0xed, 0x81, -0x00, 0x00, 0x7f, 0x02, 0xe3, 0x00, 0xef, 0x81, 0x00, 0x00, 0x01, 0x42, 0xb3, 0x00, 0x7f, 0x82, -0xe3, 0x00, 0x1f, 0x60, 0xf2, 0x00, 0xc5, 0x03, 0xa6, 0x00, 0x01, 0xc2, 0xb3, 0x00, 0xc2, 0x03, -0xa6, 0x00, 0xc3, 0x03, 0x10, 0x00, 0x6b, 0xc1, 0xdc, 0x00, 0x01, 0xcc, 0xf5, 0x00, 0x01, 0x0e, -0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc3, 0xc3, 0x9c, 0x00, 0xc3, 0xc3, 0xdc, 0x00, 0x6a, 0x81, -0xa4, 0x00, 0xc2, 0x03, 0x30, 0x00, 0x0e, 0xc0, 0xd8, 0x00, 0x0e, 0xc0, 0xdc, 0x00, 0xc4, 0x03, -0x50, 0x00, 0x10, 0x00, 0x48, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0x1a, 0x80, 0xa4, 0x00, 0xc4, 0xc3, -0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xca, 0x2f, 0xc0, 0x00, 0xcc, 0x33, -0xc0, 0x00, 0x10, 0x80, 0xa2, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0x11, 0xc0, -0x9c, 0x00, 0x11, 0xc0, 0xdc, 0x00, 0xc5, 0xc3, 0xa4, 0x00, 0x69, 0x49, 0xe8, 0x00, 0xf7, 0x03, -0xe0, 0x00, 0xef, 0x03, 0xe0, 0x00, 0xe7, 0x03, 0xe0, 0x00, 0xc7, 0x8f, 0xa4, 0x00, 0xc7, 0x0f, -0xa2, 0x00, 0x1a, 0xc0, 0x9c, 0x00, 0xc6, 0x8f, 0xa2, 0x00, 0x08, 0x40, 0xf0, 0x00, 0x18, 0xc0, -0x9c, 0x00, 0xcc, 0xd3, 0x6c, 0x00, 0x12, 0xc0, 0x9c, 0x00, 0x14, 0x40, 0x40, 0x00, 0xc4, 0xe3, -0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0xc7, 0xc3, 0xd0, 0x00, 0xc5, 0x83, 0xa4, 0x00, 0x69, 0x4d, -0xe8, 0x00, 0xc4, 0x63, 0xf2, 0x00, 0xc7, 0xc3, 0x9c, 0x00, 0xc7, 0xc3, 0xdc, 0x00, 0xa7, 0x48, -0xe8, 0x00, 0x12, 0xa0, 0xa4, 0x00, 0x14, 0x00, 0xa6, 0x00, 0xc6, 0x03, 0x10, 0x00, 0x00, 0x02, -0xec, 0x00, 0x1c, 0xc0, 0x9c, 0x00, 0x12, 0x00, 0xc2, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0x14, 0x00, -0xc0, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0xc3, -0x9c, 0x00, 0xc4, 0xc3, 0xdc, 0x00, 0xca, 0x03, 0x00, 0x00, 0x1c, 0x0c, 0xa1, 0x00, 0x04, 0x00, -0xa1, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x01, 0x02, 0xec, 0x00, 0x0d, 0x80, 0xa2, 0x00, 0x01, 0xc0, -0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0x8c, 0xa4, 0x00, 0x15, 0x0c, 0xa6, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0xc3, 0x9c, 0x00, 0xc6, 0xc3, -0xdc, 0x00, 0x1c, 0xc0, 0x9c, 0x00, 0x12, 0xc0, 0xdc, 0x00, 0x12, 0xc0, 0xdc, 0x00, 0x14, 0x40, -0x40, 0x00, 0x14, 0x40, 0x40, 0x00, 0x0c, 0x80, 0xa2, 0x00, 0x0c, 0xc0, 0xd0, 0x00, 0x0c, 0xc0, -0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x03, 0x00, 0x00, 0x1c, 0x0c, -0xa1, 0x00, 0x00, 0x02, 0xec, 0x00, 0x05, 0x00, 0xa1, 0x00, 0x07, 0x00, 0xa6, 0x00, 0x01, 0xc0, -0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0x8c, 0xa4, 0x00, 0x15, 0x0c, 0xa6, 0x00, 0x0a, 0x23, -0xb0, 0x00, 0x7e, 0x00, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x10, 0x60, 0xf2, 0x00, 0x08, 0x40, -0xf0, 0x00, 0x10, 0x00, 0x20, 0x00, 0x10, 0xc8, 0x9c, 0x00, 0x18, 0xc0, 0x9c, 0x00, 0xcc, 0xc3, -0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x03, 0x82, 0x00, 0xc4, 0x83, -0xa4, 0x00, 0xc4, 0xc3, 0xd8, 0x00, 0xc2, 0x63, 0xa1, 0x00, 0xca, 0x03, 0x20, 0x00, 0x1c, 0xc0, -0x9c, 0x00, 0x13, 0x00, 0xc2, 0x00, 0x15, 0x00, 0xc0, 0x00, 0xc3, 0x4f, 0xa1, 0x00, 0x0d, 0xc0, -0xd4, 0x00, 0x19, 0x8c, 0xa4, 0x00, 0x0c, 0xc0, 0xd4, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xc4, 0xc3, 0xdc, 0x00, 0x16, 0xc0, 0x9c, 0x00, 0x1c, 0x0c, -0xa1, 0x00, 0x12, 0x8c, 0xa4, 0x00, 0x14, 0x0c, 0xa6, 0x00, 0x16, 0x80, 0x7f, 0x00, 0xc2, 0x83, -0xa2, 0x00, 0xc2, 0x03, 0x50, 0x00, 0xc4, 0xc3, 0x98, 0x00, 0xca, 0x83, 0xc2, 0x00, 0xca, 0x03, -0x00, 0x00, 0xca, 0x03, 0x02, 0x00, 0x18, 0xc0, 0x98, 0x00, 0x16, 0x80, 0xa4, 0x00, 0xcc, 0xc3, -0xdc, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x18, 0x0c, 0xa6, 0x00, 0x16, 0x8c, 0xa4, 0x00, 0x16, 0xc0, -0x9c, 0x00, 0xcc, 0x13, 0x40, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x10, 0xc0, 0x9c, 0x00, 0x1c, 0xc0, -0x9c, 0x00, 0x13, 0xc0, 0xdc, 0x00, 0x13, 0xc0, 0xdc, 0x00, 0xc3, 0x4f, 0xa1, 0x00, 0x15, 0x40, -0x40, 0x00, 0xc3, 0xef, 0xa4, 0x00, 0x14, 0x40, 0x40, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0xca, 0x03, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x16, 0xc0, 0x9c, 0x00, 0xcc, 0x83, 0x40, 0x00, 0x1c, 0x0c, -0xa1, 0x00, 0x18, 0x8c, 0xa4, 0x00, 0x12, 0x0c, 0xa6, 0x00, 0x14, 0x0c, 0xa6, 0x00, 0x18, 0x60, -0xf2, 0x00, 0xcd, 0x03, 0x10, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x62, 0xec, 0x00, 0xc3, 0x4f, -0xa1, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x19, 0x8c, 0xa4, 0x00, 0x01, 0x02, -0xec, 0x00, 0xcb, 0x03, 0x00, 0x00, 0x01, 0x02, 0xec, 0x00, 0x7f, 0x02, 0xe3, 0x00, 0x01, 0x02, -0xec, 0x00, 0x11, 0xc2, 0xb3, 0x00, 0x01, 0x42, 0xb3, 0x00, 0x18, 0x80, 0xa4, 0x00, 0x10, 0x80, -0xa4, 0x00, 0x12, 0x00, 0xa6, 0x00, 0x14, 0x80, 0xa4, 0x00, 0x06, 0x80, 0xa4, 0x00, 0x00, 0x82, -0xa4, 0x00, 0x1e, 0x82, 0xa4, 0x00, 0x1c, 0x82, 0xa4, 0x00, 0x1a, 0x82, 0xa4, 0x00, 0x18, 0x82, -0xa4, 0x00, 0x16, 0x82, 0xa4, 0x00, 0x14, 0x82, 0xa4, 0x00, 0x12, 0x82, 0xa4, 0x00, 0x20, 0x82, -0xa4, 0x00, 0x3e, 0x82, 0xa4, 0x00, 0x3c, 0x82, 0xa4, 0x00, 0x3a, 0x82, 0xa4, 0x00, 0x38, 0x82, -0xa4, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x32, 0x82, 0xa4, 0x00, 0xc2, 0xc3, -0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0xc0, 0x98, 0x00, 0xcc, 0x33, -0xc2, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x83, 0xc1, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xca, 0x73, -0xc1, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc8, 0xc3, 0xa4, 0x00, 0x00, 0x4c, 0xb8, 0x00, 0xc8, 0xc3, -0xa4, 0x00, 0x00, 0x4c, 0xb8, 0x00, 0xc8, 0xc3, 0xa4, 0x00, 0x00, 0x4c, 0xb8, 0x00, 0xc2, 0xc3, -0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc0, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x0e, 0x80, -0xa4, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc3, 0xc3, 0xdc, 0x00, 0xc3, 0xc3, 0xdc, 0x00, 0x7d, 0x03, -0xe0, 0x00, 0x7b, 0x03, 0xe0, 0x00, 0xc3, 0xc3, 0xdc, 0x00, 0xc3, 0x8f, 0xa1, 0x00, 0xc3, 0x8f, -0xa1, 0x00, 0x06, 0x23, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x8b, -0xa1, 0x00, 0xc2, 0x43, 0xf0, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xcc, 0x23, 0x2e, 0x00, 0xcc, 0x23, 0x6e, 0x00, 0xc2, 0xe3, 0x6e, 0x00, 0xc4, 0x83, -0xa4, 0x00, 0xc2, 0xe3, 0x6e, 0x00, 0xc2, 0xe3, 0x6e, 0x00, 0xc2, 0xe3, 0x6e, 0x00, 0xc4, 0x43, -0x55, 0x00, 0xc4, 0x43, 0x55, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x03, 0xa1, 0x00, 0xc4, 0x43, -0xf0, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0x1c, 0x80, 0xa1, 0x00, 0x04, 0x80, 0xa1, 0x00, 0xca, 0x03, -0x02, 0x00, 0xe0, 0x01, 0x01, 0x00, 0x07, 0x00, 0xa6, 0x00, 0x09, 0x00, 0xa2, 0x00, 0x01, 0xc0, -0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x17, 0x80, 0xa4, 0x00, 0xc1, 0x01, 0xa6, 0x00, 0x54, 0x63, -0xf2, 0x00, 0x6c, 0xc1, 0x9c, 0x00, 0x6e, 0xc1, 0xdc, 0x00, 0x72, 0xc1, 0x9c, 0x00, 0x74, 0xc1, -0xdc, 0x00, 0x54, 0xc3, 0x9c, 0x00, 0x58, 0xc1, 0xd8, 0x00, 0x6e, 0x81, 0xa4, 0x00, 0x70, 0x81, -0xa4, 0x00, 0x74, 0x81, 0xa4, 0x00, 0x76, 0x81, 0xa4, 0x00, 0x58, 0x81, 0xa4, 0x00, 0xcc, 0x03, -0x00, 0x00, 0xc5, 0x0d, 0xa6, 0x00, 0xf7, 0x0f, 0xa6, 0x00, 0x01, 0xcc, 0xf5, 0x00, 0x01, 0x0e, -0xef, 0x00, 0xc3, 0xe3, 0xa4, 0x00, 0xc5, 0x89, 0xa4, 0x00, 0x01, 0xc8, 0xf5, 0x00, 0x01, 0x0a, -0xef, 0x00, 0xff, 0x03, 0xe1, 0x00, 0xf7, 0x03, 0xe1, 0x00, 0xef, 0x03, 0xe1, 0x00, 0x67, 0x4e, -0xe8, 0x00, 0xc7, 0x4e, 0xe8, 0x00, 0xd5, 0x4e, 0xe8, 0x00, 0xe7, 0x03, 0xe1, 0x00, 0xdf, 0x03, -0xe1, 0x00, 0x01, 0x02, 0xec, 0x00, 0x31, 0x6c, 0xe8, 0x00, 0x59, 0x6c, 0xe8, 0x00, 0xcc, 0x03, -0x00, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xcc, 0x53, 0x4e, 0x00, 0xcc, 0x83, 0xc9, 0x00, 0xca, 0x03, -0x81, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xc2, 0x81, 0xa4, 0x00, 0xcc, 0x23, 0x47, 0x00, 0xcc, 0xa3, -0xcc, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0xca, 0x03, 0x81, 0x00, 0x56, 0xc1, -0x9c, 0x00, 0xcc, 0x23, 0x4d, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xcc, 0x03, 0xcf, 0x00, 0xca, 0x03, -0x82, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xcc, 0x93, 0x46, 0x00, 0xcc, 0x83, -0xc7, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0xca, 0x03, 0x82, 0x00, 0x56, 0xc1, -0x9c, 0x00, 0xcc, 0xc3, 0x53, 0x00, 0xcc, 0x83, 0xc6, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xca, 0x83, -0x80, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xcc, 0xe3, 0x49, 0x00, 0xcc, 0x43, -0xc3, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xca, 0x83, 0x80, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0xcc, 0x03, -0x00, 0x00, 0xca, 0x83, 0x80, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x8d, -0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xf7, 0x83, 0xa4, 0x00, 0xff, 0x83, 0xe0, 0x00, 0x01, 0xc0, -0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0xc5, 0x89, 0xa4, 0x00, 0xc5, 0x0d, 0xa6, 0x00, 0xca, 0x03, -0x81, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, -0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc5, 0x81, 0xa4, 0x00, 0x56, 0xc3, 0x9c, 0x00, 0xca, 0x83, -0x81, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xdf, 0x81, 0xa4, 0x00, 0xc5, 0x81, 0xa4, 0x00, 0xf7, 0x83, 0xe7, 0x00, 0xef, 0x83, -0xe7, 0x00, 0xdf, 0x83, 0xe7, 0x00, 0x2b, 0x4f, 0xe8, 0x00, 0x4d, 0x4f, 0xe8, 0x00, 0x8b, 0x4f, -0xe8, 0x00, 0x76, 0xc1, 0x9c, 0x00, 0xcc, 0x73, 0x40, 0x00, 0xcc, 0x03, 0xc8, 0x00, 0x76, 0xc1, -0x9c, 0x00, 0xcc, 0x63, 0x40, 0x00, 0xcc, 0x13, 0xc4, 0x00, 0x56, 0xc3, 0x9c, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc2, 0x83, 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xcc, 0x03, 0xc6, 0x00, 0xc2, 0x83, -0xa5, 0x00, 0xc4, 0x83, 0xa1, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xcc, 0x03, 0xc6, 0x00, 0xcd, 0x03, -0x00, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x2b, 0x4f, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xc5, 0x89, 0xa4, 0x00, 0x01, 0xc8, 0xf5, 0x00, 0x01, 0x0a, -0xef, 0x00, 0xc5, 0x63, 0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x4d, 0x4f, -0xe8, 0x00, 0x8b, 0x4b, 0xe8, 0x00, 0xcd, 0xb3, 0x3f, 0x00, 0xcb, 0xd3, 0x00, 0x00, 0xca, 0x83, -0xcc, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xcb, 0xf3, 0x00, 0x00, 0xef, 0x83, 0xe0, 0x00, 0x65, 0x8d, -0xa4, 0x00, 0xca, 0x03, 0xc0, 0x00, 0x64, 0x8d, 0xa4, 0x00, 0xde, 0x83, 0xe0, 0x00, 0x64, 0xc1, -0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0x67, 0x8d, -0xa4, 0x00, 0xc1, 0x43, 0xe8, 0x00, 0x66, 0x89, 0xa4, 0x00, 0xca, 0xd3, 0x07, 0x00, 0xca, 0x03, -0xc2, 0x00, 0xca, 0xd3, 0x07, 0x00, 0xca, 0x63, 0xc9, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xcb, 0xe3, -0x03, 0x00, 0xef, 0x83, 0xe0, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0xca, 0x03, 0xc9, 0x00, 0x64, 0x8d, -0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xde, 0x83, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0x65, 0x6d, 0x06, 0x00, 0x65, 0x6d, -0xc6, 0x00, 0x65, 0x2d, 0x02, 0x00, 0x65, 0xed, 0xc4, 0x00, 0xee, 0x83, 0xe0, 0x00, 0xca, 0xb3, -0x00, 0x00, 0xca, 0xf3, 0xc7, 0x00, 0xc2, 0xc1, 0x9c, 0x00, 0xcc, 0xc3, 0xdc, 0x00, 0x66, 0x81, -0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x67, 0x8d, 0xa4, 0x00, 0xc1, 0x43, -0xe8, 0x00, 0xc2, 0x81, 0xa4, 0x00, 0xca, 0x93, 0x01, 0x00, 0xca, 0x03, 0xc0, 0x00, 0xca, 0xb3, -0x00, 0x00, 0xca, 0xc3, 0xc7, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xcb, 0xc3, 0x00, 0x00, 0xef, 0x83, -0xe0, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0xca, 0x03, 0xc8, 0x00, 0x64, 0x8d, 0xa4, 0x00, 0x00, 0x02, -0xec, 0x00, 0xde, 0x83, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x65, 0x8d, -0xa4, 0x00, 0x64, 0xa1, 0x0a, 0x00, 0x64, 0xb1, 0xca, 0x00, 0x64, 0xc1, 0x9c, 0x00, 0xf6, 0x83, -0xe0, 0x00, 0xc2, 0xc1, 0x9c, 0x00, 0xca, 0xc3, 0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x66, 0x81, -0xa4, 0x00, 0x66, 0x89, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x81, -0xa4, 0x00, 0x56, 0xc3, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, 0xa1, 0x00, 0xc2, 0xc3, -0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, 0xa1, 0x00, 0x54, 0x93, 0x11, 0x00, 0x54, 0x03, -0xc4, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xf5, 0x4b, -0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x51, 0x01, 0xa2, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, -0xef, 0x00, 0x57, 0x01, 0xa2, 0x00, 0x57, 0x41, 0xad, 0x00, 0x66, 0xc1, 0x9c, 0x00, 0x70, 0xc1, -0xd8, 0x00, 0x66, 0xc1, 0xdc, 0x00, 0x70, 0xc1, 0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, -0xa2, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xf6, 0x83, 0xe0, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x54, 0x93, 0x11, 0x00, 0x54, 0x03, 0xc4, 0x00, 0xc2, 0x03, -0xa2, 0x00, 0xc2, 0x5b, 0x78, 0x00, 0xc2, 0x6f, 0x70, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x51, 0x01, -0xa2, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x57, 0x01, 0xa2, 0x00, 0x57, 0x41, -0xad, 0x00, 0xca, 0x43, 0x81, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x5a, 0x81, 0xa4, 0x00, 0x52, 0x01, -0xa6, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x81, 0xa4, 0x00, 0x5c, 0x81, 0xa4, 0x00, 0x62, 0x81, -0xa4, 0x00, 0x54, 0x81, 0xa4, 0x00, 0xca, 0x03, 0x82, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc5, 0x81, -0xa4, 0x00, 0x70, 0xc1, 0x9c, 0x00, 0xca, 0x03, 0x82, 0x00, 0xc2, 0xe1, 0x9c, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x93, 0x6c, 0xe8, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc4, 0x81, -0xa4, 0x00, 0x76, 0xc1, 0x9c, 0x00, 0xcc, 0x63, 0x40, 0x00, 0xcc, 0x03, 0xce, 0x00, 0x00, 0x02, -0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x33, 0x00, 0x00, 0xca, 0x03, -0xc2, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc2, 0xc3, 0xd8, 0x00, 0xc4, 0x8d, 0xa4, 0x00, 0xcc, 0x03, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, 0x10, 0x00, 0xcd, 0x03, 0x00, 0x00, 0xc3, 0xc3, -0xa4, 0x00, 0xdf, 0x03, 0xe1, 0x00, 0xc5, 0x8d, 0xa4, 0x00, 0x39, 0x61, 0xe8, 0x00, 0xf6, 0x83, -0xa4, 0x00, 0xf6, 0x8b, 0xa4, 0x00, 0xc2, 0x83, 0xa1, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xf5, 0x6c, 0xe8, 0x00, 0x76, 0xc1, 0x9c, 0x00, 0xcc, 0x63, -0x40, 0x00, 0xcc, 0x03, 0xce, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x70, 0xc1, 0x9c, 0x00, 0x70, 0xc1, -0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc4, 0x89, -0xa4, 0x00, 0xc2, 0xc3, 0x98, 0x00, 0xca, 0x33, 0x40, 0x00, 0xca, 0x03, 0xc2, 0x00, 0xc6, 0x83, -0xa2, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xcc, 0x03, 0x10, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0xc7, 0xc3, -0x9c, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xdf, 0x03, 0xe1, 0x00, 0xc5, 0x8d, 0xa4, 0x00, 0xf6, 0x83, -0xa4, 0x00, 0xf6, 0x8b, 0xa4, 0x00, 0xc6, 0xc3, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc7, 0x83, -0xa2, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xdf, 0x83, 0xe0, 0x00, 0xef, 0x83, 0xe0, 0x00, 0xc7, 0x8f, -0x07, 0x00, 0xc7, 0x8f, 0x02, 0x00, 0xc6, 0xcf, 0x9c, 0x00, 0xc6, 0x0f, 0x52, 0x00, 0xcc, 0xc3, -0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x39, 0x61, -0xe8, 0x00, 0xc4, 0x23, 0xa1, 0x00, 0xc4, 0x0f, 0xa1, 0x00, 0x76, 0xc1, 0x9c, 0x00, 0xcc, 0x63, -0x40, 0x00, 0xcc, 0x03, 0xce, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc4, 0x89, -0xa4, 0x00, 0xc2, 0xc3, 0x98, 0x00, 0xca, 0x33, 0x40, 0x00, 0xca, 0x03, 0xc2, 0x00, 0x00, 0x02, -0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xcc, 0x03, 0x10, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0x01, 0x02, -0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xdf, 0x03, 0xe1, 0x00, 0xc5, 0x8d, 0xa4, 0x00, 0xf6, 0x83, -0xa4, 0x00, 0xf6, 0x8b, 0xa4, 0x00, 0xf6, 0x83, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x70, 0xc1, -0x9c, 0x00, 0x70, 0xcd, 0xdc, 0x00, 0x70, 0xcd, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x83, -0xa4, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0x64, 0xc1, 0xd8, 0x00, 0x62, 0xc1, 0xdc, 0x00, 0x20, 0xc0, -0xf0, 0x00, 0xc2, 0xe1, 0x9c, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x83, 0x69, -0xe8, 0x00, 0x62, 0x81, 0xa4, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc2, 0x83, 0xa1, 0x00, 0xc2, 0x63, -0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x6f, 0x6d, 0xe8, 0x00, 0xf7, 0x83, -0xe0, 0x00, 0xef, 0x83, 0xe0, 0x00, 0xdf, 0x83, 0xe0, 0x00, 0x63, 0xbd, 0x02, 0x00, 0x63, 0x5d, -0x00, 0x00, 0x63, 0x6d, 0x06, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x83, 0x61, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xf6, 0x83, -0xe0, 0x00, 0x62, 0xc1, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x63, 0xbd, 0x0a, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc4, 0x63, 0xf2, 0x00, 0x5a, 0xc1, 0x9c, 0x00, 0x52, 0x41, -0x40, 0x00, 0x5a, 0xc1, 0xd4, 0x00, 0x52, 0xc1, 0xd6, 0x00, 0xc4, 0xcb, 0xd0, 0x00, 0xc4, 0xcf, -0xd4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xcc, 0x13, 0xc0, 0x00, 0x5c, 0xc1, -0x9c, 0x00, 0xcc, 0x43, 0x80, 0x00, 0x5a, 0x81, 0xa4, 0x00, 0x52, 0x01, 0xa6, 0x00, 0x5b, 0xc1, -0xdc, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xc3, 0xef, 0xa4, 0x00, 0x55, 0xc1, 0x9c, 0x00, 0x5f, 0xc1, -0xdc, 0x00, 0xcd, 0xc3, 0x9c, 0x00, 0xc3, 0xcf, 0xa4, 0x00, 0xbf, 0x69, 0xe8, 0x00, 0xcc, 0x03, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x54, 0x81, 0xa4, 0x00, 0x5c, 0x81, 0xa4, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x81, 0xa4, 0x00, 0x5a, 0xc1, -0x98, 0x00, 0xca, 0x03, 0x40, 0x00, 0xca, 0x43, 0xc6, 0x00, 0x5c, 0x61, 0xf2, 0x00, 0x54, 0xc1, -0x9c, 0x00, 0x5e, 0x41, 0x40, 0x00, 0x60, 0x81, 0xc0, 0x00, 0xc5, 0x03, 0x41, 0x00, 0xc3, 0xcf, -0xa4, 0x00, 0xe7, 0x69, 0xe8, 0x00, 0xc4, 0x03, 0x70, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x54, 0x81, -0xa4, 0x00, 0x5c, 0x81, 0xa4, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x81, 0xa4, 0x00, 0x5c, 0x61, -0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x11, 0x6e, 0xe8, 0x00, 0x5e, 0xc1, -0x9c, 0x00, 0x60, 0x41, 0x40, 0x00, 0xc4, 0x43, 0x40, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x03, -0x10, 0x00, 0x50, 0xc1, 0xdc, 0x00, 0x54, 0xc1, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x5e, 0x81, -0xa4, 0x00, 0x60, 0x01, 0xa6, 0x00, 0x5e, 0xc1, 0xdc, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x57, 0x01, -0xa1, 0x00, 0x5e, 0xc1, 0x9c, 0x00, 0x60, 0x41, 0x40, 0x00, 0xc4, 0x43, 0x40, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc4, 0x03, 0x01, 0x00, 0x50, 0xc1, 0xdc, 0x00, 0x54, 0xc1, 0xdc, 0x00, 0x00, 0x02, -0xec, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x01, 0xa6, 0x00, 0x5e, 0x41, 0x40, 0x00, 0x60, 0x81, -0xc0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, -0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x57, 0x81, 0xa4, 0x00, 0x1b, 0x20, 0xb8, 0x00, 0x01, 0x00, -0xfa, 0x00, 0x03, 0x20, 0xb8, 0x00, 0x01, 0x00, 0xfa, 0x00, 0x0f, 0xa0, 0xb2, 0x00, 0xcb, 0x43, -0x00, 0x00, 0xcb, 0x03, 0xc8, 0x00, 0x51, 0x20, 0xb8, 0x00, 0x01, 0x11, 0xf8, 0x00, 0x01, 0x00, -0xfa, 0x00, 0xcb, 0xc3, 0x03, 0x00, 0xcb, 0x03, 0xc8, 0x00, 0x19, 0x03, 0xa2, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x0b, 0x20, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x8d, 0x03, -0xa2, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x01, 0xc1, 0xbc, 0x00, 0x7d, 0x83, 0xe4, 0x00, 0x7b, 0x83, 0xe4, 0x00, 0x79, 0x83, -0xe4, 0x00, 0x5f, 0x4c, 0xe8, 0x00, 0x7d, 0x4c, 0xe8, 0x00, 0x77, 0x83, 0xe4, 0x00, 0x75, 0x83, -0xe4, 0x00, 0xb3, 0x4c, 0xe8, 0x00, 0xb1, 0x4c, 0xe8, 0x00, 0x73, 0x83, 0xe4, 0x00, 0x01, 0x02, -0xec, 0x00, 0x97, 0x4d, 0xe8, 0x00, 0xe9, 0x4d, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x05, 0x0e, -0xec, 0x00, 0x0d, 0x83, 0xb4, 0x00, 0x7e, 0x02, 0xe2, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0x70, 0xc2, -0x9c, 0x00, 0xf0, 0xc2, 0x9c, 0x00, 0x0e, 0xc3, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x28, 0xc3, -0x9c, 0x00, 0x28, 0xc3, 0xdc, 0x00, 0x32, 0x83, 0xa4, 0x00, 0x34, 0x83, 0xa4, 0x00, 0xde, 0x80, -0xa1, 0x00, 0xee, 0x83, 0xe7, 0x00, 0x0f, 0xc3, 0x9c, 0x00, 0x7f, 0x83, 0xa1, 0x00, 0x61, 0x4e, -0xeb, 0x00, 0x0e, 0xcf, 0x9c, 0x00, 0xcc, 0x0f, 0x48, 0x00, 0xbe, 0x03, 0x1e, 0x00, 0xc2, 0x03, -0xa3, 0x00, 0xc2, 0xf3, 0x41, 0x00, 0x7e, 0x23, 0x1d, 0x00, 0x7e, 0x23, 0x5d, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xbf, 0x83, 0xa4, 0x00, 0x01, 0xc0, -0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0xeb, 0x83, 0xa2, 0x00, 0x03, 0x02, 0xec, 0x00, 0x02, 0x02, -0xec, 0x00, 0x70, 0x23, 0x00, 0x00, 0xfc, 0x63, 0xf2, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xca, 0x83, -0x80, 0x00, 0x00, 0x82, 0xec, 0x00, 0x00, 0xe2, 0xec, 0x00, 0xc2, 0xe3, 0xa3, 0x00, 0xcd, 0x03, -0x80, 0x00, 0x01, 0x02, 0xec, 0x00, 0xcd, 0x80, 0xa4, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, -0xef, 0x00, 0x01, 0x62, 0xec, 0x00, 0xcd, 0x9c, 0xa4, 0x00, 0x54, 0x93, 0x11, 0x00, 0x54, 0x03, -0xc4, 0x00, 0x02, 0x02, 0xec, 0x00, 0x56, 0x63, 0xf2, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0xcc, 0x03, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x57, 0x09, 0xa2, 0x00, 0x57, 0x49, 0xad, 0x00, 0x55, 0x93, -0x11, 0x00, 0x55, 0x03, 0xc4, 0x00, 0x01, 0xc8, 0xf5, 0x00, 0x01, 0x0a, 0xef, 0x00, 0xc5, 0x89, -0xa4, 0x00, 0xf7, 0x8b, 0xa4, 0x00, 0x91, 0x23, 0xe1, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc5, 0x61, -0xf2, 0x00, 0x57, 0x0d, 0xa2, 0x00, 0x57, 0x4d, 0xad, 0x00, 0x03, 0xcc, 0xf5, 0x00, 0x27, 0x4e, -0xe8, 0x00, 0x01, 0xc8, 0xf5, 0x00, 0x01, 0x0a, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x00, 0xc2, 0xec, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0x7e, 0xc1, 0xe7, 0x00, 0x08, 0x00, -0xb0, 0x00, 0x7e, 0x42, 0xe0, 0x00, 0x01, 0xc3, 0x9c, 0x00, 0xcd, 0x03, 0x48, 0x00, 0x61, 0x42, -0xeb, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x4e, 0x03, 0x1e, 0x00, 0x4e, 0x03, -0xa3, 0x00, 0x4e, 0x03, 0x42, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x63, 0xf2, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x4e, 0x83, 0xa4, 0x00, 0x4e, 0x8f, -0xa4, 0x00, 0x66, 0x03, 0x38, 0x00, 0x08, 0x07, 0x38, 0x00, 0x00, 0xc7, 0xd8, 0x00, 0x0c, 0xd7, -0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x43, 0x40, 0x00, 0xcc, 0x03, 0x43, 0x00, 0xcc, 0x83, -0x67, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x83, 0x3f, 0x00, 0xcc, 0x03, 0xc4, 0x00, 0xc6, 0x83, -0xa4, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xcc, 0x8f, 0x58, 0x00, 0xc4, 0xcf, -0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0xc3, 0x98, 0x00, 0x01, 0x02, 0xec, 0x00, 0xcd, 0x83, -0x40, 0x00, 0x61, 0x42, 0xeb, 0x00, 0x79, 0x83, 0xa4, 0x00, 0x79, 0xc3, 0xd8, 0x00, 0x2e, 0x63, -0xf2, 0x00, 0xc8, 0x03, 0xa3, 0x00, 0x78, 0xc3, 0x9c, 0x00, 0xcc, 0xcf, 0xdc, 0x00, 0x00, 0xe7, -0x9c, 0x00, 0x0c, 0xf7, 0x9c, 0x00, 0xcd, 0x43, 0x40, 0x00, 0x01, 0x02, 0xec, 0x00, 0x21, 0x4d, -0xe8, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc3, 0x47, 0xaa, 0x00, 0xc3, 0xd7, -0xaa, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc8, 0x4f, 0xa4, 0x00, 0x02, 0xe7, -0x9c, 0x00, 0x60, 0xf7, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcd, 0x43, 0x28, 0x00, 0x03, 0xc7, -0xd8, 0x00, 0x4d, 0x4d, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0xdf, 0x80, 0xa1, 0x00, 0x60, 0xd7, -0xd8, 0x00, 0x60, 0xf3, 0x37, 0x00, 0x02, 0xf7, 0x37, 0x00, 0xcc, 0x03, 0x78, 0x00, 0xee, 0x83, -0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x69, 0x41, -0xe8, 0x00, 0xc6, 0x03, 0xa0, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0xcd, 0x43, 0x28, 0x00, 0x01, 0x02, -0xec, 0x00, 0x02, 0xc7, 0xdc, 0x00, 0x60, 0xd7, 0xdc, 0x00, 0x60, 0x13, 0x08, 0x00, 0x02, 0x17, -0x08, 0x00, 0xcc, 0x03, 0x78, 0x00, 0xee, 0x83, 0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x69, 0x41, 0xe8, 0x00, 0xc4, 0x03, 0xa0, 0x00, 0xc6, 0x83, -0xa2, 0x00, 0xc4, 0x43, 0xf0, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc6, 0x43, 0xf0, 0x00, 0xc8, 0xc3, -0x90, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1e, 0x00, 0xc4, 0x83, -0xa4, 0x00, 0xc4, 0xf3, 0x41, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x20, 0x04, -0x1e, 0x00, 0xc6, 0xf3, 0x41, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0x94, 0xa4, 0x00, 0x00, 0x84, -0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x23, 0x94, 0xa4, 0x00, 0x01, 0xc0, -0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x03, 0x02, 0xec, 0x00, 0x21, 0x84, 0xa4, 0x00, 0x7e, 0x80, -0xe7, 0x00, 0x7e, 0x82, 0xe5, 0x00, 0x2e, 0xc3, 0x9c, 0x00, 0x2e, 0x23, 0x00, 0x00, 0x52, 0x23, -0x80, 0x00, 0x26, 0x92, 0x11, 0x00, 0xa6, 0x92, 0x11, 0x00, 0x00, 0x02, 0xec, 0x00, 0xdc, 0x80, -0xa3, 0x00, 0xd0, 0x80, 0xa3, 0x00, 0xc6, 0x80, 0xa4, 0x00, 0x36, 0x83, 0xa2, 0x00, 0x38, 0x83, -0xa2, 0x00, 0x1e, 0x13, 0x00, 0x00, 0xde, 0xc3, 0x9c, 0x00, 0x2a, 0xc3, 0x9c, 0x00, 0x1e, 0xc3, -0x9c, 0x00, 0xfc, 0xc3, 0x9c, 0x00, 0x80, 0xc3, 0x9c, 0x00, 0xd6, 0x00, 0xa3, 0x00, 0xd4, 0x80, -0xa4, 0x00, 0xd2, 0x80, 0xa3, 0x00, 0xda, 0x80, 0xa3, 0x00, 0xd8, 0x80, 0xa3, 0x00, 0xde, 0x80, -0xa1, 0x00, 0xee, 0x83, 0xe7, 0x00, 0x81, 0xc3, 0x9c, 0x00, 0x01, 0x02, 0xec, 0x00, 0x61, 0x4e, -0xeb, 0x00, 0x80, 0xcf, 0x9c, 0x00, 0xcc, 0x0f, 0x48, 0x00, 0x9c, 0x03, 0x1e, 0x00, 0xc2, 0x03, -0xa3, 0x00, 0xc2, 0xf3, 0x41, 0x00, 0xfd, 0x03, 0x84, 0x00, 0x01, 0x02, 0xec, 0x00, 0x03, 0x02, -0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x9d, 0x83, 0xa4, 0x00, 0xcb, 0x80, -0xa4, 0x00, 0x53, 0xc3, 0x9c, 0x00, 0x53, 0xc3, 0xdc, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0x52, 0x83, -0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x43, 0x2f, 0x00, 0xde, 0x81, -0xa1, 0x00, 0x7e, 0x83, 0xa1, 0x00, 0xc8, 0x03, 0xa6, 0x00, 0x7f, 0xc3, 0xdc, 0x00, 0x7f, 0xc3, -0xdc, 0x00, 0x61, 0x42, 0xeb, 0x00, 0x7f, 0xc3, 0xdc, 0x00, 0x7f, 0xc3, 0xdc, 0x00, 0x0f, 0x01, -0xa3, 0x00, 0xcd, 0x03, 0x30, 0x00, 0xcd, 0x03, 0x38, 0x00, 0xcd, 0xc3, 0x98, 0x00, 0xc9, 0x03, -0x01, 0x00, 0x9f, 0x83, 0xe7, 0x00, 0xdf, 0x83, 0xe7, 0x00, 0x11, 0x81, 0xa4, 0x00, 0x11, 0x8d, -0xa4, 0x00, 0x11, 0x8d, 0xa4, 0x00, 0xcd, 0x83, 0x3f, 0x00, 0xcd, 0x03, 0x3f, 0x00, 0xcd, 0x03, -0x3e, 0x00, 0xdf, 0x01, 0xa1, 0x00, 0xfd, 0x83, 0xe7, 0x00, 0xfb, 0x83, 0xe7, 0x00, 0x41, 0x81, -0xa4, 0x00, 0x41, 0x8d, 0xa4, 0x00, 0x41, 0x8d, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x00, 0xc7, 0xdc, 0x00, 0x0c, 0xd7, 0xdc, 0x00, 0xcc, 0xc3, 0x5f, 0x00, 0x00, 0xc7, -0xd8, 0x00, 0x0d, 0xd7, 0xd8, 0x00, 0xcd, 0x43, 0x60, 0x00, 0xef, 0x83, 0xe7, 0x00, 0xdf, 0x83, -0xe7, 0x00, 0xc3, 0x03, 0xa4, 0x00, 0xc3, 0xcf, 0xd8, 0x00, 0xc3, 0x0f, 0x70, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0xc5, 0x83, 0xa2, 0x00, 0x01, 0x02, 0xee, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x01, 0x02, -0xec, 0x00, 0xcc, 0x03, 0x4c, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, 0x2a, 0x00, 0xcc, 0x53, -0x3f, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x03, 0xa4, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc4, 0x8b, -0xa4, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xcc, 0x03, 0x46, 0x00, 0xc6, 0x8f, -0xa0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x03, 0x02, 0x00, 0xc4, 0x83, -0xa2, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc4, 0x8b, 0xa2, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xcc, 0x03, -0x4c, 0x00, 0xc6, 0x0f, 0xa4, 0x00, 0xc6, 0x03, 0x08, 0x00, 0xcc, 0x33, 0xc0, 0x00, 0x00, 0x02, -0xec, 0x00, 0xc4, 0x83, 0xa1, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc4, 0x0b, 0xa2, 0x00, 0xc4, 0xc3, -0x9c, 0x00, 0xcc, 0x03, 0x4c, 0x00, 0xc6, 0x0f, 0xa4, 0x00, 0xc4, 0x43, 0xf0, 0x00, 0xc6, 0xc3, -0x90, 0x00, 0xc6, 0x03, 0x74, 0x00, 0xc4, 0x83, 0xa1, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc4, 0x0b, -0xa2, 0x00, 0xc4, 0x43, 0xf0, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x0b, 0xa2, 0x00, 0xc6, 0x33, -0x1a, 0x00, 0xc6, 0x3b, 0x5a, 0x00, 0xc2, 0xe3, 0x56, 0x00, 0xc2, 0xe3, 0x56, 0x00, 0xc2, 0xc3, -0xd0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x67, 0x60, 0xeb, 0x00, 0x01, 0x83, 0xaa, 0x00, 0x01, 0xc3, -0x9c, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x0b, 0x83, 0xb7, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x4f, 0x60, 0xeb, 0x00, 0x01, 0xc1, 0xf7, 0x00, 0x01, 0xc0, -0xf7, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0xe2, 0xf7, 0x00, 0x01, 0xe2, 0xf7, 0x00, 0xff, 0xc3, -0xf4, 0x00, 0x01, 0xa2, 0xec, 0x00, 0xef, 0x83, 0xb7, 0x00, 0x01, 0xa0, 0xe7, 0x00, 0x7f, 0x81, -0xe7, 0x00, 0x7f, 0x82, 0xe7, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x80, 0xf3, 0x00, 0x01, 0xe3, -0xf2, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0xc0, 0xf1, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, -0xec, 0x00, 0x3d, 0xc0, 0xf1, 0x00, 0x0f, 0x00, 0xb7, 0x00, 0x9f, 0x20, 0xe7, 0x00, 0x6f, 0x60, -0xe9, 0x00, 0x03, 0x00, 0xa1, 0x00, 0x03, 0x80, 0xa1, 0x00, 0x3d, 0xc0, 0xf1, 0x00, 0x6d, 0x6c, -0xe8, 0x00, 0x01, 0x0a, 0xee, 0x00, 0x81, 0x60, 0xbf, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0xec, 0x83, 0xb7, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xc8, 0x62, 0xeb, 0x00, 0x46, 0x1d, -0xf8, 0x00, 0x00, 0x22, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, -0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x08, 0x00, 0xb0, 0x00, 0x00, 0xa2, 0xed, 0x00, 0x00, 0x20, -0xe0, 0x00, 0x00, 0x21, 0xe0, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x05, 0xa0, 0xa4, 0x00, 0x05, 0x20, 0xa2, 0x00, 0x05, 0xa0, 0xa2, 0x00, 0x05, 0x20, -0xa3, 0x00, 0x05, 0xa0, 0xa3, 0x00, 0x05, 0xa0, 0xa0, 0x00, 0x05, 0x20, 0xa6, 0x00, 0x05, 0xa0, -0xa5, 0x00, 0x05, 0x20, 0xa5, 0x00, 0x05, 0x20, 0xa4, 0x00, 0x05, 0x20, 0xa0, 0x00, 0x05, 0xa0, -0xa6, 0x00, 0x05, 0x20, 0xa7, 0x00, 0x05, 0xa0, 0xa7, 0x00, 0x05, 0xc0, 0xa4, 0x00, 0x05, 0x40, -0xa2, 0x00, 0x05, 0xc0, 0xa2, 0x00, 0x05, 0x40, 0xa3, 0x00, 0x05, 0xc0, 0xa3, 0x00, 0x05, 0xc0, -0xa0, 0x00, 0x05, 0xe0, 0xa4, 0x00, 0x05, 0x60, 0xa2, 0x00, 0x05, 0xe0, 0xa2, 0x00, 0x05, 0x60, -0xa3, 0x00, 0x05, 0xe0, 0xa3, 0x00, 0x05, 0xe0, 0xa0, 0x00, 0x05, 0x60, 0xa6, 0x00, 0x05, 0xe0, -0xa5, 0x00, 0x05, 0x60, 0xa5, 0x00, 0x05, 0x60, 0xa4, 0x00, 0x05, 0x60, 0xa0, 0x00, 0x05, 0xe0, -0xa6, 0x00, 0x05, 0x60, 0xa7, 0x00, 0x05, 0xe0, 0xa7, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0xa2, -0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x01, 0x82, 0xec, 0x00, 0x01, 0xe2, 0xec, 0x00, 0x01, 0x62, -0xec, 0x00, 0x01, 0x42, 0xec, 0x00, 0x01, 0x22, 0xec, 0x00, 0x01, 0xa2, 0xe0, 0x00, 0x7f, 0xa2, -0xe0, 0x00, 0x01, 0xa3, 0xe0, 0x00, 0x7f, 0xa3, 0xe0, 0x00, 0x19, 0xa3, 0xe0, 0x00, 0x67, 0x83, -0xe0, 0x00, 0x63, 0x83, 0xe0, 0x00, 0x01, 0xe2, 0xec, 0x00, 0x07, 0xe0, 0x9c, 0x00, 0x07, 0x60, -0xf0, 0x00, 0x07, 0x60, 0xf2, 0x00, 0x07, 0xe0, 0x90, 0x00, 0x81, 0x23, 0xe0, 0x00, 0xff, 0x23, -0xe0, 0x00, 0x2b, 0xa2, 0xe1, 0x00, 0x55, 0xa2, 0xe1, 0x00, 0x7f, 0x83, 0xe1, 0x00, 0x01, 0x83, -0xe1, 0x00, 0xd5, 0x03, 0xe0, 0x00, 0xab, 0x03, 0xe0, 0x00, 0x01, 0x02, 0xee, 0x00, 0x40, 0xc0, -0xf6, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x7e, 0x02, 0xe7, 0x00, 0x40, 0x02, 0xed, 0x00, 0x00, 0x02, -0xab, 0x00, 0x01, 0x42, 0xf3, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x00, -0xaa, 0x00, 0x00, 0x80, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x80, 0xaf, 0x00, 0x00, 0x02, -0xef, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, 0xef, 0x00, 0x00, 0x80, -0xab, 0x00, 0x00, 0x80, 0xaf, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, 0xef, 0x00, 0x00, 0x00, -0xa8, 0x00, 0x00, 0x80, 0xaf, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, 0xef, 0x00, 0x00, 0x80, -0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x00, -0xa9, 0x00, 0x00, 0x02, 0xef, 0x00, 0x00, 0x80, 0xa8, 0x00, 0x00, 0x80, 0xad, 0x00, 0x00, 0x00, -0xec, 0x00, 0x8d, 0x23, 0xb0, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x80, -0xaa, 0x00, 0x0f, 0xc0, 0xf1, 0x00, 0x49, 0x63, 0xeb, 0x00, 0x9b, 0x02, 0xf8, 0x00, 0x01, 0x02, -0xec, 0x00, 0xeb, 0x61, 0xe9, 0x00, 0x01, 0x40, 0xa9, 0x00, 0x03, 0x00, 0xa5, 0x00, 0x01, 0x40, -0xa8, 0x00, 0x03, 0xc0, 0xa8, 0x00, 0x01, 0x02, 0xef, 0x00, 0x02, 0x40, 0xac, 0x00, 0x01, 0xc0, -0xac, 0x00, 0xef, 0x83, 0xb7, 0x00, 0x09, 0x00, 0xb7, 0x00, 0x7f, 0x01, 0xe7, 0x00, 0x7f, 0x80, -0xe7, 0x00, 0x05, 0xc0, 0xf1, 0x00, 0x1d, 0x40, 0xf6, 0x00, 0x01, 0x03, 0xe7, 0x00, 0x01, 0xa2, -0xec, 0x00, 0xff, 0x03, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x19, 0x62, 0xe8, 0x00, 0x01, 0x02, -0xec, 0x00, 0x13, 0x66, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x0b, 0x6a, -0xe8, 0x00, 0x01, 0x41, 0xbf, 0x00, 0xff, 0x01, 0xec, 0x00, 0x0b, 0x62, 0xe9, 0x00, 0x03, 0x21, -0xbf, 0x00, 0xff, 0xc1, 0xf6, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0xef, 0x83, 0xb7, 0x00, 0x09, 0x00, 0xb7, 0x00, 0x7f, 0x01, 0xe7, 0x00, 0x7f, 0x80, -0xe7, 0x00, 0x05, 0xc0, 0xf1, 0x00, 0x1d, 0x40, 0xf7, 0x00, 0x01, 0x03, 0xe7, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x53, 0x62, -0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x45, 0x62, 0xe8, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xed, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x3b, 0x6a, 0xe8, 0x00, 0x01, 0x41, 0xbf, 0x00, 0x01, 0x02, 0xec, 0x00, 0x3b, 0x62, -0xe9, 0x00, 0x03, 0x21, 0xbf, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x00, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0xed, 0x83, 0xb7, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc9, 0x62, -0xeb, 0x00, 0x01, 0x1d, 0xf8, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x01, 0x1d, 0xf8, 0x00, 0xc9, 0x62, -0xeb, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x60, 0x00, 0xc9, 0x62, 0xeb, 0x00, 0x01, 0x1d, -0xf8, 0x00, 0x1f, 0x00, 0x10, 0x00, 0x03, 0x00, 0xf8, 0x00, 0xc9, 0x62, 0xeb, 0x00, 0x03, 0x00, -0x10, 0x00, 0x01, 0x1d, 0xf8, 0x00, 0xc9, 0x62, 0xeb, 0x00, 0x47, 0x1d, 0xf8, 0x00, 0x01, 0x22, -0xec, 0x00, 0x7d, 0xc0, 0xf1, 0x00, 0x49, 0x63, 0xeb, 0x00, 0x9b, 0x02, 0xf8, 0x00, 0x00, 0x02, -0xec, 0x00, 0x07, 0x80, 0xa4, 0x00, 0x21, 0x00, 0xa5, 0x00, 0xc9, 0x62, 0xeb, 0x00, 0x63, 0x1d, -0xf8, 0x00, 0x07, 0x40, 0xf2, 0x00, 0x9b, 0x62, 0xe9, 0x00, 0xff, 0xc3, 0x9c, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0xdf, 0x62, 0xe8, 0x00, 0xb7, 0xe2, 0xf3, 0x00, 0xff, 0xff, -0xff, 0x00, 0xb3, 0x62, 0xea, 0x00, 0xdf, 0x66, 0xe8, 0x00, 0xbf, 0xe2, 0xf3, 0x00, 0x01, 0x00, -0xf8, 0x00, 0xbb, 0x62, 0xea, 0x00, 0x01, 0x06, 0xef, 0x00, 0x55, 0x55, 0xfd, 0x00, 0xab, 0xaa, -0xfa, 0x00, 0x7e, 0x81, 0xe0, 0x00, 0x03, 0x40, 0xf3, 0x00, 0x01, 0xc1, 0xb8, 0x00, 0x01, 0x80, -0xe8, 0x00, 0xd5, 0x62, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0xdf, 0x62, 0xe8, 0x00, 0xcb, 0xe2, 0xf3, 0x00, 0x01, 0x02, 0xec, 0x00, 0xe3, 0x6a, -0xe8, 0x00, 0xe5, 0x6e, 0xe8, 0x00, 0xe7, 0x66, 0xe8, 0x00, 0xe9, 0x76, 0xe8, 0x00, 0xeb, 0x72, -0xe8, 0x00, 0xed, 0x7a, 0xe8, 0x00, 0xef, 0x7e, 0xe8, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x7d, 0xc0, 0xf1, 0x00, 0x8d, 0x23, 0xb0, 0x00, 0x0f, 0x00, -0xb7, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0xff, 0x01, 0xe7, 0x00, 0x01, 0x80, 0xaa, 0x00, 0x49, 0x63, -0xeb, 0x00, 0x03, 0xc1, 0x9c, 0x00, 0x9b, 0x02, 0xf8, 0x00, 0x07, 0x63, 0xe9, 0x00, 0x01, 0x95, -0xa4, 0x00, 0x01, 0x05, 0xa5, 0x00, 0x1f, 0x23, 0xe7, 0x00, 0x81, 0x61, 0xbf, 0x00, 0x7d, 0xc0, -0xf1, 0x00, 0x07, 0x6f, 0xe8, 0x00, 0xfb, 0x6a, 0xea, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x00, 0xc2, 0xf7, 0x00, 0x0f, 0x01, 0xb7, 0x00, 0xff, 0x00, 0xe7, 0x00, 0xff, 0xe3, -0xf1, 0x00, 0x03, 0x40, 0xf2, 0x00, 0x03, 0x40, 0xf0, 0x00, 0x03, 0xc0, 0x90, 0x00, 0x03, 0xc0, -0xd3, 0x00, 0xff, 0xc3, 0xd4, 0x00, 0x03, 0xc0, 0xd6, 0x00, 0xff, 0x00, 0xbf, 0x00, 0x01, 0x03, -0xa6, 0x00, 0x01, 0x03, 0xa1, 0x00, 0x29, 0x63, 0xe9, 0x00, 0x01, 0x03, 0xa6, 0x00, 0x01, 0x83, -0xa1, 0x00, 0x23, 0x63, 0xea, 0x00, 0x01, 0x06, 0xef, 0x00, 0x01, 0xe0, 0xf7, 0x00, 0x01, 0xc0, -0xf7, 0x00, 0x00, 0xc0, 0x9c, 0x00, 0x00, 0xc0, 0xdc, 0x00, 0x00, 0x00, 0x50, 0x00, 0x02, 0x00, -0x50, 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x05, 0xc0, 0x9c, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, -0xec, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0x80, 0xa1, 0x00, 0x05, 0x80, 0xa1, 0x00, 0x00, 0x00, -0xec, 0x00, 0x01, 0x83, 0xaa, 0x00, 0x01, 0x43, 0xf3, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x01, 0x80, -0xeb, 0x00, 0x6b, 0x63, 0xe8, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, -0xec, 0x00, 0x0e, 0x00, 0xb0, 0x00, 0x80, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0xf7, 0x00, 0x00, 0x00, -0xf8, 0x00, 0xae, 0xa5, 0xfb, 0x00, 0x80, 0x71, 0xf8, 0x00, 0x30, 0x67, 0xfc, 0x00, 0x00, 0x00, -0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0xc0, 0x9c, 0x00, 0x54, 0xe1, 0xf0, 0x00, 0x02, 0xc0, -0xd0, 0x00, 0x04, 0x40, 0xf0, 0x00, 0x06, 0xc0, 0x90, 0x00, 0x09, 0xc0, 0x92, 0x00, 0x07, 0xc0, -0x90, 0x00, 0x79, 0x63, 0xea, 0x00, 0x01, 0xe0, 0xf7, 0x00, 0x01, 0x00, 0xb9, 0x00, 0x01, 0x02, -0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x83, 0xaa, 0x00, 0x01, 0x43, 0xad, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, -0xec, 0x00, 0x00, 0x82, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x36, 0x0a, 0x00, 0x02, 0x74, 0x36, -0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x02, 0x22, 0x4d, 0x19, 0x6f, 0x12, 0x90, 0xb6, 0xf6, 0x7f, -0xf0, 0xe4, 0xef, 0xa3, 0x53, 0xf0, 0xe7, 0xa9, 0xab, 0x53, 0x7f, 0xf7, 0x12, 0x04, 0x03, 0x1b, -0x00, 0x12, 0x12, 0x56, 0xad, 0x72, 0x02, 0x22, 0xc6, 0x00, 0x6f, 0x12, 0x22, 0x38, 0x02, 0x22, -0xdb, 0x3e, 0x7f, 0x78, 0xf6, 0xe4, 0xfd, 0xd8, 0x81, 0x75, 0x02, 0x43, 0x40, 0x1a, 0x02, 0x22, -0xf4, 0x37, 0x6f, 0x12, 0x22, 0x38, 0x02, 0x22, 0x45, 0x0e, 0x6f, 0x12, 0x22, 0x38, 0x02, 0x22, -0x1f, 0x69, 0x90, 0xe4, 0xae, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, 0xb0, 0x7f, 0x10, 0x74, 0xa3, 0xf0, -0xf0, 0xe4, 0x7f, 0x90, 0xf0, 0xd2, 0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xd4, 0xf0, 0xa3, 0x02, 0x22, -0xa2, 0x5e, 0x6f, 0x12, 0x22, 0x38, 0x02, 0x22, 0xeb, 0x62, 0x7e, 0x90, 0xe0, 0xeb, 0x7a, 0x90, -0xf0, 0xa8, 0x7e, 0x90, 0xe0, 0xe9, 0x7a, 0x90, 0xf0, 0xa9, 0xb4, 0xe0, 0x11, 0x01, 0x7a, 0x90, -0xe0, 0xa8, 0x05, 0xb4, 0x12, 0x05, 0xe2, 0x72, 0x08, 0x80, 0x72, 0x12, 0x80, 0xe5, 0x12, 0x03, -0x4a, 0x00, 0x48, 0x02, 0x00, 0x50, 0x02, 0x00, 0x60, 0x69, 0x40, 0x30, 0xc2, 0xfd, 0x8e, 0x40, -0x8f, 0xd3, 0xed, 0xd2, 0xff, 0x24, 0xec, 0xff, 0xff, 0x34, 0xda, 0xf5, 0xd9, 0x8f, 0x02, 0x22, -0xe9, 0x6b, 0xaf, 0xc2, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, -0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, -0xaf, 0x07, 0x75, 0xcd, 0x00, 0x0e, 0x0f, 0x8f, 0x0f, 0xe5, 0xad, 0xfe, 0x7c, 0xcc, 0xe4, 0x00, -0xf5, 0x2d, 0xec, 0x0f, 0xf5, 0x3e, 0xc2, 0x0e, 0x53, 0xd1, 0xfe, 0xa9, 0xad, 0xc2, 0xcf, 0xc2, -0x24, 0xe5, 0x29, 0x60, 0x70, 0x14, 0x02, 0x03, 0x1b, 0x03, 0x70, 0x14, 0x02, 0x03, 0xe0, 0x05, -0x0f, 0x80, 0x24, 0x75, 0x80, 0x01, 0x75, 0x0a, 0x02, 0x24, 0x05, 0x80, 0x01, 0xc2, 0x24, 0x75, -0xc2, 0x00, 0x43, 0xaf, 0x01, 0xa9, 0xad, 0xd2, 0xd1, 0xd2, 0x07, 0x02, 0xc0, 0xcb, 0x12, 0xd0, -0xf3, 0x60, 0x1a, 0x7d, 0x31, 0x7c, 0x71, 0x12, 0x85, 0xc3, 0x12, 0xef, 0xee, 0x85, 0x90, 0x13, -0xa6, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0xc3, 0xce, 0xce, 0x13, 0xd8, 0x13, 0x25, 0xf9, -0xf5, 0x13, 0xe5, 0x17, 0x3e, 0x12, 0x16, 0xf5, 0x7e, 0x90, 0xe5, 0xaa, 0xf0, 0x12, 0xe5, 0xa3, -0xf0, 0x13, 0xc1, 0xd2, 0x90, 0xd3, 0xa9, 0x7e, 0x95, 0xe0, 0x90, 0x17, 0xa8, 0x7e, 0x95, 0xe0, -0x90, 0x16, 0xa0, 0x7d, 0x09, 0x40, 0x16, 0xe5, 0xa3, 0xf0, 0x17, 0xe5, 0x80, 0xf0, 0xe4, 0x04, -0xa3, 0xf0, 0xc2, 0xf0, 0x90, 0xc1, 0xa0, 0x7d, 0xf5, 0xe0, 0xa3, 0x21, 0xf5, 0xe0, 0x30, 0x22, -0xfd, 0x40, 0x7d, 0x90, 0xe0, 0xa2, 0xe0, 0xa3, 0x03, 0x54, 0x90, 0xff, 0x9b, 0x7e, 0x54, 0xe0, -0x4f, 0xfc, 0x25, 0xf5, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, 0x1e, 0x7d, 0x31, 0x7c, -0x6f, 0x12, 0xa2, 0x57, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x50, 0x7d, 0x61, 0x12, 0x90, 0x2b, -0x34, 0x7d, 0x61, 0x12, 0x90, 0x2b, 0x32, 0x7d, 0x61, 0x12, 0x90, 0x2b, 0x4c, 0x7d, 0xf0, 0xe4, -0x74, 0xa3, 0xf0, 0x08, 0x7d, 0x90, 0xe4, 0x5c, 0xa3, 0xf0, 0x08, 0x74, 0x90, 0xf0, 0x55, 0x7d, -0xf7, 0x74, 0x90, 0xf0, 0x63, 0x7d, 0x90, 0xf0, 0x36, 0x7d, 0x03, 0x74, 0xa3, 0xf0, 0xff, 0x74, -0x90, 0xf0, 0x38, 0x7d, 0xfc, 0x74, 0xa3, 0xf0, 0x01, 0x74, 0x90, 0xf0, 0xe2, 0x7e, 0xff, 0xe0, -0xe0, 0xa3, 0x7d, 0x90, 0xcf, 0x48, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, 0xe0, 0xe4, 0xa3, 0xff, -0x90, 0xe0, 0x46, 0x7d, 0xf0, 0xcf, 0x12, 0xef, 0x09, 0x61, 0x7e, 0x90, 0xe0, 0x90, 0x04, 0x70, -0xe0, 0xa3, 0x40, 0x64, 0x4b, 0x70, 0x7d, 0x90, 0xf0, 0x50, 0x74, 0xa3, 0xf0, 0xc8, 0x7d, 0x90, -0xe4, 0x34, 0xa3, 0xf0, 0xc8, 0x74, 0x90, 0xf0, 0x32, 0x7d, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0xc8, -0x7d, 0x90, 0xe4, 0x4c, 0xa3, 0xf0, 0x10, 0x74, 0x90, 0xf0, 0x5c, 0x7d, 0xf0, 0xe4, 0x74, 0xa3, -0xf0, 0x10, 0x7d, 0x90, 0x74, 0x55, 0xf0, 0xf0, 0x7d, 0x90, 0xf0, 0x63, 0x7d, 0x90, 0x74, 0x48, -0xf0, 0x07, 0x74, 0xa3, 0xf0, 0x77, 0x7d, 0x90, 0x74, 0x46, 0xf0, 0x07, 0x77, 0x74, 0x61, 0x12, -0x12, 0x09, 0xf3, 0x07, 0xd0, 0xc0, 0x60, 0x12, 0x7d, 0xf3, 0x7c, 0x23, 0x12, 0x31, 0xc3, 0x71, -0x7e, 0x90, 0xe0, 0x98, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x40, 0x30, 0x90, 0xfd, 0xa2, 0x7d, -0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0xe7, 0xa2, 0xf5, 0x13, 0xef, 0x10, 0xf5, 0x13, 0xa2, 0x11, -0x92, 0xd1, 0xd0, 0xaf, 0xc3, 0xd0, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x0e, 0x50, 0xe4, 0xc3, -0x11, 0x95, 0xe4, 0xff, 0x10, 0x95, 0x1c, 0xf5, 0x1d, 0x8f, 0x06, 0x80, 0x10, 0x85, 0x85, 0x1c, -0x1d, 0x11, 0x13, 0xe5, 0x12, 0xae, 0x05, 0x78, 0xc3, 0xce, 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf9, -0xe5, 0xc3, 0x9f, 0x13, 0xe5, 0xff, 0x9e, 0x12, 0xef, 0xfe, 0x1d, 0x25, 0x1d, 0xf5, 0x35, 0xee, -0xf5, 0x1c, 0xd3, 0x1c, 0x1d, 0xe5, 0xff, 0x94, 0x1c, 0xe5, 0x07, 0x94, 0x06, 0x40, 0x1c, 0x75, -0x75, 0x07, 0xff, 0x1d, 0x7e, 0x90, 0xe5, 0x98, 0xf0, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0x94, 0xc3, -0xe5, 0xff, 0x94, 0x1c, 0x90, 0x03, 0x97, 0x7e, 0x50, 0xe0, 0x44, 0x06, 0xf0, 0x01, 0x01, 0x02, -0x54, 0x16, 0xf0, 0xfe, 0x01, 0x02, 0x90, 0x16, 0xbc, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0xe7, 0x8e, -0xe6, 0xf5, 0x7e, 0x90, 0xe0, 0xa5, 0xc3, 0xff, 0x7e, 0x90, 0xe0, 0xa7, 0xff, 0x9f, 0x7e, 0x90, -0xe0, 0xa6, 0x00, 0x94, 0x7d, 0xfe, 0x7c, 0x1d, 0x12, 0x31, 0x57, 0x6f, 0x2e, 0x30, 0xc2, 0x04, -0x80, 0xc3, 0xd2, 0x02, 0x90, 0xc3, 0x90, 0x7e, 0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x60, 0x40, -0x20, 0x6b, 0x68, 0x2f, 0xd0, 0xc0, 0x60, 0x12, 0x7d, 0xf3, 0x7c, 0x19, 0x12, 0x31, 0xc3, 0x71, -0x40, 0x30, 0x90, 0xfd, 0xa2, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x60, 0xe0, 0x90, 0x0f, 0xa2, 0x7d, -0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0xdc, 0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, -0xd0, 0xd0, 0x02, 0x20, 0x90, 0x0c, 0x7a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x80, 0x1e, -0x90, 0x0a, 0x70, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x7d, 0x12, 0x7c, 0x19, 0xff, 0x31, -0x12, 0xfe, 0x57, 0x6f, 0x21, 0x7d, 0x31, 0x7c, 0xff, 0xe4, 0x80, 0xfe, 0x90, 0x0c, 0xdc, 0x7e, -0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x19, 0x12, 0x31, 0x57, 0x6f, 0x7e, 0x90, 0xe0, 0xdb, -0x03, 0x70, 0x05, 0x02, 0x90, 0x34, 0xc9, 0x7e, 0xf5, 0xe0, 0x64, 0x19, 0x60, 0x07, 0x02, 0x03, -0x34, 0x05, 0x90, 0xd3, 0xd9, 0x7e, 0x94, 0xe0, 0x90, 0xb0, 0xd8, 0x7e, 0x94, 0xe0, 0x50, 0x04, -0x02, 0x03, 0x34, 0x05, 0xe0, 0xa3, 0xb8, 0x94, 0x7e, 0x90, 0xe0, 0xd8, 0x0b, 0x94, 0x03, 0x40, -0x05, 0x02, 0x7f, 0x34, 0x7e, 0x22, 0x12, 0x31, 0xf0, 0x6e, 0x7d, 0x90, 0xee, 0xa2, 0xa3, 0xf0, -0xf0, 0xef, 0x7d, 0x90, 0xe0, 0xa2, 0xe0, 0xa3, 0x18, 0xf5, 0x7e, 0x90, 0xe0, 0xd2, 0x0f, 0x54, -0xa3, 0xfe, 0x78, 0xe0, 0xce, 0x03, 0x13, 0xc3, 0x13, 0xce, 0xf9, 0xd8, 0x15, 0xf5, 0x14, 0x8e, -0x18, 0xe5, 0x33, 0xfd, 0xe0, 0x95, 0xe5, 0xfc, 0x12, 0x15, 0x33, 0x61, 0xa3, 0xfa, 0xfb, 0xe0, -0xef, 0xc3, 0xf5, 0x9b, 0xee, 0x11, 0xf5, 0x9a, 0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x0d, 0x50, -0xe4, 0xc3, 0x11, 0x95, 0x1d, 0xf5, 0x95, 0xe4, 0xf5, 0x10, 0x80, 0x1c, 0x85, 0x06, 0x1c, 0x10, -0x11, 0x85, 0x90, 0x1d, 0xd8, 0x7e, 0x54, 0xe0, 0xfe, 0x0f, 0xe0, 0xa3, 0x03, 0x78, 0xc3, 0xce, -0xce, 0x13, 0xd8, 0x13, 0xf5, 0xf9, 0x8e, 0x15, 0x12, 0x14, 0x33, 0x61, 0xa3, 0xfc, 0xfd, 0xe0, -0xef, 0xc3, 0xf5, 0x9d, 0xee, 0x13, 0xf5, 0x9c, 0xc3, 0x12, 0x80, 0x64, 0x80, 0x94, 0x0d, 0x50, -0xe4, 0xc3, 0x13, 0x95, 0x17, 0xf5, 0x95, 0xe4, 0xf5, 0x12, 0x80, 0x16, 0x85, 0x06, 0x16, 0x12, -0x13, 0x85, 0xc3, 0x17, 0x1d, 0xe5, 0x1e, 0x94, 0x1c, 0xe5, 0x00, 0x94, 0x34, 0x50, 0xe5, 0xc3, -0x94, 0x17, 0xe5, 0x1e, 0x94, 0x16, 0x50, 0x00, 0xe5, 0x29, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, -0x94, 0x80, 0x90, 0x80, 0xd0, 0x7e, 0x09, 0x40, 0x60, 0x12, 0xe4, 0xfe, 0xf0, 0x75, 0x80, 0x0a, -0x74, 0x0c, 0xf5, 0xff, 0x12, 0xf0, 0x02, 0x61, 0xff, 0x74, 0xf0, 0x75, 0x12, 0xf6, 0x8c, 0x24, -0x4e, 0x80, 0xe5, 0xd3, 0x94, 0x1d, 0xe5, 0x21, 0x94, 0x1c, 0x50, 0x00, 0xe5, 0x0a, 0x94, 0x17, -0xe5, 0x21, 0x94, 0x16, 0x40, 0x00, 0x12, 0x49, 0x19, 0x61, 0x7e, 0x90, 0xe0, 0xd0, 0x70, 0x6e, -0xa3, 0x03, 0x6f, 0xe0, 0x3a, 0x60, 0x61, 0x12, 0xd3, 0x19, 0x61, 0x12, 0x40, 0x3e, 0x74, 0x0e, -0xf5, 0xff, 0x12, 0xf0, 0x02, 0x61, 0xff, 0x74, 0xf0, 0x75, 0x80, 0xf6, 0x12, 0x10, 0x19, 0x61, -0x12, 0xc3, 0x3e, 0x61, 0x0a, 0x50, 0x60, 0x12, 0xe4, 0xfe, 0xf0, 0x75, 0x12, 0x0a, 0x8c, 0x24, -0x7e, 0x90, 0x7c, 0xd0, 0x12, 0x62, 0xe8, 0x07, 0x7e, 0x90, 0x7c, 0xd2, 0x12, 0x65, 0xe8, 0x07, -0x7e, 0x90, 0xe0, 0xc9, 0x18, 0xf5, 0x07, 0xb4, 0xe4, 0x05, 0x02, 0xf0, 0x1b, 0x01, 0x18, 0x05, -0x7e, 0x90, 0xe5, 0xc9, 0xf0, 0x18, 0x7e, 0x90, 0xe0, 0xca, 0x1e, 0xf5, 0xe0, 0xa3, 0x1f, 0xf5, -0x2d, 0xa2, 0x2c, 0x72, 0x6e, 0x50, 0xd0, 0xc0, 0x60, 0x12, 0x7d, 0xf3, 0x7c, 0x20, 0x12, 0x31, -0xc3, 0x71, 0x40, 0x30, 0x90, 0xfd, 0xa2, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0xa2, 0x1b, -0x92, 0xd1, 0xd0, 0xaf, 0xe5, 0xd0, 0x30, 0x1b, 0x0d, 0xe5, 0x61, 0x12, 0x40, 0x49, 0xe5, 0x08, -0x15, 0x1f, 0x70, 0x1f, 0x15, 0x02, 0x30, 0x1e, 0x02, 0x2c, 0x41, 0xd2, 0x41, 0x30, 0xd3, 0x35, -0x1b, 0xe5, 0x10, 0x94, 0x1a, 0xe5, 0x00, 0x94, 0x0d, 0x40, 0x61, 0x12, 0x40, 0x49, 0xe5, 0x08, -0x15, 0x1f, 0x70, 0x1f, 0x15, 0x02, 0xc3, 0x1e, 0x1b, 0xe5, 0x10, 0x94, 0x1a, 0xe5, 0x00, 0x94, -0x12, 0x50, 0x1f, 0xe5, 0xfe, 0x94, 0x1e, 0xe5, 0x04, 0x94, 0x08, 0x50, 0x1f, 0x05, 0x1f, 0xe5, -0x02, 0x70, 0x1e, 0x05, 0x1f, 0x7d, 0x31, 0x7c, 0x1f, 0xaf, 0x1e, 0xae, 0x6f, 0x12, 0x90, 0x57, -0xca, 0x7e, 0x1e, 0xe5, 0xa3, 0xf0, 0x1f, 0xe5, 0x02, 0xf0, 0x1b, 0x01, 0xc3, 0xd2, 0x23, 0x75, -0x30, 0x00, 0x03, 0x01, 0x07, 0x02, 0xd3, 0xc5, 0x0f, 0xe5, 0x7c, 0x94, 0x0e, 0xe5, 0xfc, 0x94, -0x03, 0x40, 0x07, 0x02, 0x90, 0xc5, 0xe9, 0x7d, 0x24, 0xe0, 0xf5, 0x01, 0x90, 0x17, 0xe8, 0x7d, -0x34, 0xe0, 0xf5, 0x00, 0xd3, 0x16, 0x17, 0xe5, 0x22, 0x94, 0x16, 0xe5, 0x01, 0x94, 0x06, 0x40, -0x16, 0x75, 0x75, 0x00, 0x00, 0x17, 0x7d, 0x90, 0xe5, 0xe8, 0xf0, 0x16, 0xe5, 0xa3, 0xf0, 0x17, -0xd8, 0xa2, 0x42, 0x92, 0xc2, 0xd2, 0x7e, 0x90, 0xe0, 0x97, 0x42, 0x30, 0x44, 0x05, 0xf0, 0x02, -0x03, 0x80, 0xfd, 0x54, 0xc2, 0xf0, 0x85, 0xc2, 0x12, 0xed, 0xec, 0x85, 0xd2, 0x13, 0xd2, 0xc0, -0x90, 0xc4, 0xa6, 0x7e, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, 0xa8, 0x7e, 0x12, 0xe5, -0xa3, 0xf0, 0x13, 0xe5, 0xc2, 0xf0, 0xc2, 0xc0, 0xc3, 0xc4, 0x15, 0xe5, 0x13, 0x95, 0x11, 0xf5, -0x14, 0xe5, 0x12, 0x95, 0x10, 0xf5, 0x7e, 0x90, 0xe0, 0x90, 0x04, 0x70, 0xe0, 0xa3, 0x40, 0x64, -0x10, 0x70, 0x7d, 0x90, 0xe0, 0xe8, 0x02, 0x70, 0xe0, 0xa3, 0x03, 0x70, 0x07, 0x02, 0x02, 0x9a, -0xc5, 0x07, 0x23, 0x75, 0x90, 0x00, 0x3a, 0x7d, 0xa3, 0xe0, 0x54, 0xe0, 0xf5, 0x0f, 0x70, 0x19, -0x02, 0x03, 0xc5, 0x07, 0x18, 0x75, 0xe5, 0x00, 0xae, 0x11, 0x78, 0x10, 0xc3, 0x02, 0xce, 0x33, -0xce, 0x33, 0xf9, 0xd8, 0x11, 0xf5, 0x10, 0x8e, 0x19, 0xe5, 0x94, 0xd3, 0x40, 0x07, 0x75, 0x03, -0x07, 0x19, 0x74, 0xc3, 0x95, 0x08, 0xf5, 0x19, 0x75, 0x19, 0x01, 0x16, 0x16, 0xe5, 0x95, 0xd3, -0x50, 0x19, 0x12, 0x0c, 0xe6, 0x60, 0x61, 0x12, 0xf5, 0x22, 0x05, 0x18, 0x80, 0x16, 0xe5, 0xed, -0xa2, 0x10, 0x13, 0xe7, 0x12, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x12, 0x13, 0x22, 0x61, 0x19, 0xf5, -0x1f, 0xc2, 0x18, 0x25, 0x18, 0xf5, 0x18, 0x92, 0x11, 0xe5, 0x13, 0x25, 0xe5, 0xff, 0x35, 0x10, -0xfe, 0x12, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x11, 0xf5, 0x3e, 0xc2, 0x10, 0x90, 0x18, -0x3d, 0x7d, 0x30, 0xe0, 0x08, 0xe0, 0x60, 0x12, 0x12, 0xe6, 0x22, 0x61, 0x18, 0xf5, 0x7d, 0x90, -0xe0, 0x3d, 0xe1, 0x30, 0x12, 0x14, 0xe6, 0x60, 0x1e, 0x92, 0x60, 0x12, 0x92, 0xe6, 0xe5, 0x1f, -0x13, 0x18, 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0x75, 0x18, 0x00, 0x23, 0x7e, 0x90, 0xe0, 0xbf, -0x18, 0x25, 0x92, 0xf0, 0x90, 0x18, 0xbc, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x11, 0x25, 0xe5, 0xff, -0x3e, 0x10, 0x7c, 0xfe, 0xef, 0x00, 0x23, 0x25, 0x11, 0xf5, 0x3e, 0xec, 0x10, 0xf5, 0x18, 0xc2, -0x12, 0xf5, 0x11, 0x85, 0xd3, 0x13, 0x11, 0xe5, 0xf0, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xd7, 0x94, -0x0c, 0x40, 0x10, 0x75, 0x75, 0x57, 0xf0, 0x11, 0x7e, 0x90, 0x74, 0xbf, 0xf0, 0xff, 0xe5, 0xc3, -0x94, 0x11, 0xe5, 0xe0, 0x64, 0x10, 0x94, 0x80, 0x50, 0x86, 0x75, 0x0b, 0x06, 0x10, 0x11, 0x75, -0x90, 0xe0, 0xbf, 0x7e, 0xf0, 0xe4, 0x10, 0x85, 0x85, 0xe7, 0xe6, 0x11, 0x7e, 0x90, 0xe5, 0xbc, -0xf0, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0x7e, 0x90, 0xe0, 0x90, 0x04, 0x70, 0xe0, 0xa3, 0x40, 0x64, -0x12, 0x70, 0x1f, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0x13, 0xf5, 0x1e, 0xe5, 0x54, 0xc4, -0x48, 0xf0, 0x12, 0xf5, 0x7d, 0x90, 0xe5, 0x68, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x21, 0x12, -0x75, 0x96, 0x00, 0x23, 0x01, 0x02, 0xd0, 0x20, 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, -0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, -0xd2, 0xe0, 0x32, 0xaf, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x12, 0x11, 0x57, 0x6f, 0x90, 0x22, -0x3b, 0x7d, 0x54, 0xe0, 0x70, 0xf0, 0xd3, 0x03, 0x01, 0x80, 0xb3, 0xc3, 0x05, 0x92, 0x7d, 0x90, -0xe0, 0x3a, 0xa2, 0xa3, 0xb3, 0xe4, 0x02, 0x92, 0x54, 0xe0, 0x70, 0x0f, 0xd3, 0x03, 0x01, 0x80, -0xb3, 0xc3, 0x06, 0x92, 0x7d, 0x90, 0xe0, 0x91, 0xe1, 0x30, 0x02, 0x03, 0x46, 0x09, 0x7d, 0x90, -0xe0, 0x5a, 0x02, 0x70, 0xe0, 0xa3, 0x2e, 0x70, 0x02, 0x30, 0x90, 0x2b, 0x78, 0x7d, 0x31, 0x12, -0x90, 0xec, 0x75, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x74, 0x50, 0x9e, 0x90, 0x19, 0x65, 0x7d, -0x64, 0xe0, 0x94, 0x80, 0x40, 0x7f, 0x74, 0x03, 0xf0, 0xff, 0x5b, 0x20, 0xd2, 0x09, 0xe4, 0x5b, -0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x4a, 0x02, 0x70, 0xe0, 0xa3, 0x03, 0x70, -0x02, 0x20, 0x90, 0x17, 0x4a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x33, 0x5a, 0x7d, -0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x20, 0x29, 0x26, 0x02, 0x7d, 0x90, 0xe0, 0x6c, 0xa3, 0xfe, -0x12, 0xd3, 0x88, 0x30, 0x1a, 0x40, 0x7d, 0x90, 0xe0, 0x57, 0x64, 0xd3, 0x94, 0x80, 0x40, 0x7f, -0x74, 0x03, 0xf0, 0xff, 0x07, 0x20, 0xd2, 0x09, 0xe4, 0x07, 0x7d, 0x90, 0xf0, 0x52, 0xf0, 0xa3, -0x22, 0x7f, 0x67, 0x7e, 0x6e, 0x12, 0x8e, 0xf0, 0x8f, 0x14, 0x7f, 0x15, 0x7e, 0x27, 0x12, 0x67, -0xf0, 0x6e, 0x16, 0x8e, 0x17, 0x8f, 0x7d, 0x90, 0xe0, 0x5e, 0xa3, 0xfe, 0x78, 0xe0, 0xc3, 0x03, -0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xd3, 0xff, 0x17, 0xe5, 0xe5, 0x9f, 0x9e, 0x16, 0x34, 0x40, -0x02, 0x20, 0x90, 0x0c, 0x57, 0x7d, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x81, 0x80, 0x10, 0x90, 0x0b, -0x65, 0x7d, 0xc3, 0xe0, 0x80, 0x64, 0x81, 0x94, 0x03, 0x50, 0x01, 0x74, 0x20, 0xf0, 0x14, 0x5b, -0x5b, 0xd2, 0x7d, 0x90, 0x12, 0x60, 0x7d, 0x30, 0x0a, 0x50, 0x7d, 0x90, 0xe0, 0x91, 0xe0, 0x30, -0x12, 0x03, 0x64, 0x31, 0x7d, 0x90, 0xe0, 0x4e, 0xa3, 0xfe, 0x78, 0xe0, 0xc3, 0x03, 0xce, 0x33, -0xce, 0x33, 0xf9, 0xd8, 0xd3, 0xff, 0x15, 0xe5, 0xe5, 0x9f, 0x9e, 0x14, 0x24, 0x40, 0x7d, 0x90, -0xe0, 0x57, 0x80, 0x64, 0x81, 0x94, 0x03, 0x50, 0x01, 0x74, 0x20, 0xf0, 0x14, 0x07, 0x07, 0xd2, -0x7d, 0x90, 0x12, 0x52, 0x7d, 0x30, 0x0a, 0x50, 0x7d, 0x90, 0xe0, 0x91, 0xe0, 0x30, 0x12, 0x03, -0x64, 0x31, 0x7d, 0x90, 0x12, 0x34, 0x2b, 0x30, 0x7d, 0x90, 0x12, 0x60, 0x1e, 0x31, 0x02, 0x70, -0x1c, 0x05, 0x7d, 0x90, 0x12, 0x60, 0x2a, 0x31, 0x5b, 0x30, 0x90, 0x28, 0x7e, 0x7d, 0x31, 0x12, -0x74, 0xec, 0x9f, 0xf8, 0x74, 0xff, 0x9e, 0x2a, 0xd3, 0xfe, 0x7d, 0x90, 0xe0, 0x7b, 0x90, 0x9f, -0x7a, 0x7d, 0x9e, 0xe0, 0x07, 0x50, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x06, 0x2e, 0x7d, -0x30, 0x12, 0x12, 0x2b, 0xce, 0x30, 0x03, 0x40, 0x80, 0xd3, 0xc3, 0x01, 0x04, 0x92, 0x7d, 0x90, -0x12, 0x50, 0x2b, 0x30, 0x7d, 0x90, 0x12, 0x52, 0x1e, 0x31, 0x02, 0x70, 0x1c, 0x05, 0x7d, 0x90, -0x12, 0x52, 0x2a, 0x31, 0x07, 0x30, 0x90, 0x06, 0x82, 0x7d, 0x30, 0x12, 0x20, 0x2b, 0x0b, 0x04, -0x30, 0x12, 0x40, 0xce, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x03, 0x03, 0x04, 0x0a, 0x02, -0xc0, 0x6c, 0x12, 0xd0, 0xe5, 0x30, 0x00, 0x12, 0x7b, 0xae, 0x12, 0x27, 0x3b, 0x0e, 0x40, 0x30, -0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, 0x7d, 0x90, 0x12, 0x5a, 0xf3, 0x31, 0xd0, 0xd0, -0x90, 0xe4, 0x60, 0x7d, 0xa3, 0xf0, 0xc2, 0xf0, 0x90, 0x5b, 0x63, 0x7d, 0xf5, 0xe0, 0x90, 0x18, -0x5a, 0x7d, 0x31, 0x12, 0x90, 0x32, 0x5c, 0x7d, 0x31, 0x12, 0x90, 0x0e, 0x5e, 0x7d, 0x30, 0x12, -0x90, 0x2b, 0x66, 0x7d, 0x31, 0x12, 0x90, 0x5c, 0x65, 0x7d, 0xf5, 0xe0, 0x90, 0x19, 0x74, 0x7d, -0x31, 0x12, 0x74, 0xec, 0x9f, 0xff, 0x1d, 0xf5, 0x7f, 0x74, 0xf5, 0x9e, 0x90, 0x1c, 0x6e, 0x7d, -0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x6a, 0x7d, 0xb5, 0xe0, 0x1a, 0x06, 0xe0, 0xa3, 0x07, 0xb5, -0xd3, 0x15, 0x7d, 0x90, 0xe0, 0x4b, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x4a, 0x12, 0x95, 0x06, 0x40, -0x58, 0x20, 0x12, 0x03, 0x32, 0x31, 0x90, 0xd3, 0x7b, 0x7d, 0x94, 0xe0, 0x90, 0xfe, 0x7a, 0x7d, -0x94, 0xe0, 0x40, 0x77, 0x12, 0x07, 0xfd, 0x31, 0x02, 0x40, 0x04, 0xc2, 0x02, 0x30, 0x20, 0x03, -0x02, 0x05, 0x04, 0xc2, 0x04, 0xa2, 0x5a, 0x92, 0x03, 0x30, 0xc0, 0x74, 0x12, 0xd0, 0xe5, 0x30, -0x00, 0x12, 0x7b, 0xae, 0x12, 0x22, 0x3b, 0x0e, 0x40, 0x30, 0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, -0xe0, 0xa3, 0x7d, 0x90, 0x12, 0x4a, 0xf3, 0x31, 0xd0, 0xd0, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, -0xc2, 0xf0, 0x90, 0x07, 0x55, 0x7d, 0xf5, 0xe0, 0x90, 0x18, 0x4a, 0x7d, 0x31, 0x12, 0x90, 0x32, -0x4c, 0x7d, 0x31, 0x12, 0x90, 0x0e, 0x4e, 0x7d, 0x30, 0x12, 0x90, 0x2b, 0x58, 0x7d, 0x31, 0x12, -0x90, 0x5c, 0x57, 0x7d, 0xf5, 0xe0, 0x90, 0x19, 0x6a, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, -0x20, 0x1d, 0x12, 0x02, 0x90, 0xd3, 0x5b, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x5a, 0x7d, 0x95, 0xe0, -0x40, 0x12, 0x12, 0x03, 0x32, 0x31, 0x06, 0x20, 0xc2, 0x02, 0xa2, 0x03, 0x92, 0x03, 0x20, 0x59, -0x0b, 0x05, 0x02, 0x20, 0xc2, 0x08, 0xc2, 0x03, 0xc2, 0x04, 0xc2, 0x59, 0x20, 0x5a, 0x06, 0x04, -0x03, 0x20, 0x02, 0x03, 0x35, 0x0c, 0xe5, 0xc3, 0x95, 0x13, 0xe5, 0x1b, 0x95, 0x12, 0x50, 0x1a, -0xe5, 0x3b, 0x64, 0x19, 0x94, 0x80, 0x50, 0x80, 0x15, 0x2e, 0xc3, 0x19, 0x31, 0x12, 0x50, 0xd6, -0x12, 0x06, 0xb7, 0x31, 0x19, 0x75, 0x12, 0xff, 0x4b, 0x31, 0xe5, 0xc3, 0x9f, 0x1d, 0x11, 0xf5, -0x1c, 0xe5, 0xf5, 0x9e, 0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, 0x4b, 0x80, 0x10, 0x85, -0x85, 0x1c, 0x1d, 0x11, 0x0b, 0x02, 0x75, 0x9e, 0xff, 0x19, 0x47, 0x80, 0x74, 0xc3, 0x95, 0x01, -0xa2, 0x18, 0x13, 0xe7, 0x18, 0xf5, 0x31, 0x12, 0x40, 0xfd, 0xe5, 0x3d, 0x64, 0x19, 0x94, 0x80, -0x40, 0x80, 0x05, 0x2d, 0xd3, 0x19, 0x31, 0x12, 0x40, 0xd6, 0x12, 0x06, 0xb7, 0x31, 0x19, 0x75, -0x12, 0x01, 0x4b, 0x31, 0x1d, 0xe5, 0xf5, 0x2f, 0xe5, 0x11, 0x3e, 0x1c, 0x10, 0xf5, 0xe5, 0xd3, -0x94, 0x11, 0xe5, 0xff, 0x94, 0x10, 0x40, 0x7f, 0x80, 0x02, 0x12, 0x08, 0x07, 0x32, 0x1a, 0x80, -0x19, 0x75, 0x12, 0x01, 0xde, 0x30, 0x12, 0x80, 0xf5, 0xe4, 0xf5, 0x19, 0x75, 0x14, 0x01, 0x15, -0x03, 0x30, 0xc2, 0x02, 0x30, 0x59, 0x02, 0x04, 0x5a, 0xc2, 0x03, 0x30, 0x90, 0x4b, 0x6e, 0x7d, -0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x6c, 0x7d, 0x30, 0x12, 0x12, 0x2b, 0xce, 0x30, -0x05, 0x50, 0x30, 0x12, 0xc2, 0xd8, 0x12, 0x59, 0x0e, 0x32, 0x08, 0x40, 0x32, 0x12, 0x12, 0x07, -0xde, 0x30, 0x59, 0xc2, 0x7d, 0x90, 0xe5, 0x57, 0xf0, 0x19, 0x7d, 0x90, 0x12, 0x58, 0xae, 0x30, -0x7d, 0x90, 0x12, 0x6a, 0x2a, 0x31, 0x02, 0x20, 0x90, 0x0f, 0x78, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, -0x7d, 0x90, 0xcf, 0x74, 0xa3, 0xf0, 0xf0, 0xef, 0x04, 0x30, 0x90, 0x46, 0x78, 0x7d, 0xf5, 0xe0, -0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x76, 0x7d, 0x30, 0x12, 0xc3, 0x2b, 0xff, 0x74, 0x1d, 0x95, -0x1d, 0xf5, 0x7f, 0x74, 0x1c, 0x95, 0x1c, 0xf5, 0x30, 0x12, 0x50, 0xce, 0x12, 0x05, 0xd8, 0x30, -0x5a, 0xc2, 0x32, 0x12, 0x40, 0x0e, 0x12, 0x08, 0x07, 0x32, 0x30, 0x12, 0xc2, 0xde, 0x90, 0x5a, -0x65, 0x7d, 0x19, 0xe5, 0x90, 0xf0, 0x66, 0x7d, 0x30, 0x12, 0x90, 0xae, 0x74, 0x7d, 0x31, 0x12, -0x90, 0x2a, 0x30, 0x7d, 0x31, 0x12, 0x70, 0x1e, 0x05, 0x02, 0x90, 0x1c, 0x30, 0x7d, 0x31, 0x12, -0x90, 0x2a, 0x44, 0x7d, 0x31, 0x12, 0x45, 0x0e, 0x70, 0x1a, 0x02, 0x03, 0x0a, 0x0e, 0x59, 0x20, -0x30, 0x03, 0x09, 0x5a, 0x7d, 0x90, 0x12, 0x48, 0x5c, 0x31, 0x0d, 0x02, 0xd3, 0xda, 0x7d, 0x90, -0xe0, 0x33, 0x1d, 0x95, 0x7d, 0x90, 0xe0, 0x32, 0x1c, 0x95, 0x03, 0x40, 0x0e, 0x02, 0x90, 0x3a, -0x40, 0x7d, 0x31, 0x12, 0x90, 0xc3, 0x42, 0x7d, 0x30, 0x12, 0xc3, 0xfa, 0x7d, 0x90, 0xe0, 0x3f, -0x13, 0x95, 0x12, 0xe5, 0x80, 0x64, 0x90, 0xf8, 0x3e, 0x7d, 0x64, 0xe0, 0x98, 0x80, 0x24, 0x40, -0x11, 0xe5, 0x13, 0xb5, 0xe5, 0x1f, 0xb5, 0x10, 0x1a, 0x12, 0x1b, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, -0x68, 0xc8, 0xe5, 0xff, 0xc4, 0x1a, 0xf0, 0x54, 0xfe, 0x48, 0x25, 0xef, 0xf5, 0x13, 0xee, 0x13, -0x12, 0x35, 0x12, 0xf5, 0xe5, 0xc3, 0x95, 0x13, 0xff, 0x11, 0x12, 0xe5, 0x10, 0x95, 0xf8, 0xc4, -0xf0, 0x54, 0x68, 0xc8, 0x1c, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, 0x90, 0x1d, 0x84, 0x7d, -0x31, 0x12, 0x90, 0xc3, 0x86, 0x7d, 0x30, 0x12, 0x40, 0x33, 0x85, 0x06, 0x1c, 0x14, 0x15, 0x85, -0x90, 0x1d, 0x92, 0x7d, 0x31, 0x12, 0x90, 0xc3, 0x94, 0x7d, 0x30, 0x12, 0x40, 0x33, 0x85, 0x06, -0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, 0x3a, 0x7d, 0x54, 0xe0, 0xf5, 0x0f, 0xa3, 0x14, 0xf5, 0xe0, -0x90, 0x15, 0x48, 0x7d, 0x30, 0x12, 0x90, 0x2b, 0x46, 0x7d, 0x31, 0x12, 0xc3, 0x32, 0x1d, 0xe5, -0x1b, 0x95, 0x1c, 0xe5, 0x1a, 0x95, 0x55, 0x50, 0x12, 0xe5, 0x31, 0x12, 0xe4, 0x9e, 0x11, 0x95, -0x95, 0xee, 0x40, 0x10, 0xe4, 0x06, 0x31, 0x12, 0x80, 0xe1, 0x12, 0x03, 0x74, 0x31, 0x10, 0x75, -0xe5, 0x00, 0x54, 0x13, 0xf5, 0xf0, 0xe5, 0x11, 0x54, 0x15, 0xd3, 0xf0, 0x11, 0x95, 0x95, 0xe4, -0x40, 0x10, 0x74, 0x07, 0x12, 0xf0, 0xe1, 0x31, 0x03, 0x80, 0x30, 0x12, 0x75, 0x9d, 0x00, 0x10, -0x13, 0xe5, 0x0f, 0x54, 0x11, 0xf5, 0x15, 0xe5, 0x0f, 0x54, 0x95, 0xd3, 0xe4, 0x11, 0x10, 0x95, -0x6d, 0x40, 0x15, 0xe5, 0x15, 0x15, 0x02, 0x70, 0x14, 0x15, 0x0d, 0x02, 0xe5, 0xda, 0x12, 0x16, -0x9e, 0x31, 0xe4, 0xc3, 0x11, 0x95, 0x95, 0xee, 0x50, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, -0x01, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x03, 0x80, 0x31, 0x12, 0x75, 0x74, 0x00, 0x10, 0x17, 0xe5, -0xf0, 0x54, 0x11, 0xf5, 0x15, 0xe5, 0xf0, 0x54, 0x95, 0xc3, 0xe4, 0x11, 0x10, 0x95, 0x0d, 0x50, -0x10, 0x74, 0x15, 0x25, 0x15, 0xf5, 0x35, 0xe4, 0xf5, 0x14, 0x80, 0x14, 0x12, 0x03, 0x9d, 0x30, -0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, 0xf5, 0x0f, 0xe5, 0x11, 0x54, 0x15, 0xc3, 0x0f, 0x11, 0x95, -0x95, 0xe4, 0x50, 0x10, 0x05, 0x0a, 0xe5, 0x15, 0x70, 0x15, 0x05, 0x02, 0x80, 0x14, 0xe5, 0x07, -0x54, 0x15, 0x12, 0xf0, 0xa1, 0x30, 0x7d, 0x90, 0x12, 0x3a, 0x2b, 0x30, 0xf0, 0x54, 0x03, 0x70, -0x15, 0x53, 0xe5, 0x0f, 0x54, 0x16, 0x70, 0x0f, 0x53, 0x03, 0xf0, 0x14, 0x17, 0xe5, 0x0f, 0x54, -0x03, 0x70, 0x15, 0x53, 0xe5, 0xf0, 0x54, 0x16, 0x45, 0xf0, 0xff, 0x14, 0x15, 0xe5, 0x7d, 0x90, -0xcf, 0x3a, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x30, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x42, 0x7d, -0x80, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7d, 0x90, 0x12, 0x40, 0x16, 0x31, 0x90, 0xe4, 0x86, 0x7d, -0xa3, 0xf0, 0x90, 0xf0, 0x84, 0x7d, 0x31, 0x12, 0xe4, 0x16, 0x7d, 0x90, 0xf0, 0x94, 0xf0, 0xa3, -0x7d, 0x90, 0x12, 0x92, 0x16, 0x31, 0x7a, 0x22, 0x7d, 0x00, 0x7f, 0x07, 0x12, 0x06, 0x48, 0x70, -0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, -0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0xc0, 0x07, 0x7f, -0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x32, 0x7c, 0xf0, 0xef, 0xff, 0xf4, 0x00, 0x7e, 0x05, 0x7d, -0x71, 0x7c, 0x6f, 0x12, 0x90, 0x57, 0x32, 0x7c, 0xff, 0xe0, 0x03, 0x70, 0x11, 0x02, 0xef, 0xec, -0xe4, 0x20, 0x02, 0x03, 0x99, 0x10, 0x12, 0x12, 0xf0, 0x8a, 0x7f, 0x90, 0x12, 0xd4, 0xfa, 0x6a, -0x90, 0xc3, 0xd5, 0x7f, 0x94, 0xe0, 0x90, 0x39, 0xd4, 0x7f, 0x94, 0xe0, 0x40, 0x01, 0xe4, 0x0a, -0xa3, 0xf0, 0x90, 0xf0, 0xd2, 0x7f, 0x6a, 0x12, 0x7f, 0xfb, 0x7e, 0x74, 0x12, 0x71, 0xf0, 0x6e, -0x7c, 0x90, 0x12, 0x48, 0xd6, 0x6a, 0x06, 0x50, 0x6b, 0x12, 0xfe, 0x01, 0x08, 0x80, 0x7c, 0x90, -0xe0, 0x48, 0xa3, 0xfe, 0xff, 0xe0, 0x7c, 0x90, 0xee, 0x48, 0xa3, 0xf0, 0xf0, 0xef, 0x75, 0x7f, -0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x4a, 0x7c, 0x6a, 0x12, 0x50, 0xd6, 0x12, 0x06, 0x01, 0x6b, -0x80, 0xfe, 0x90, 0x08, 0x4a, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x4a, 0x7c, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0x4a, 0x7c, 0x6a, 0x12, 0xaa, 0xef, 0xab, 0x06, 0x90, 0x07, 0x48, 0x7c, -0x6a, 0x12, 0xef, 0xef, 0xff, 0x2b, 0x3a, 0xee, 0x7c, 0x90, 0xf0, 0x4c, 0xef, 0xa3, 0x90, 0xf0, -0x33, 0x7c, 0x25, 0x12, 0x90, 0x72, 0x37, 0x7c, 0x25, 0x12, 0x7f, 0xaa, 0x7e, 0x12, 0x12, 0x62, -0xf0, 0x6e, 0xfc, 0xe4, 0x90, 0xfd, 0x33, 0x7c, 0x25, 0x12, 0x90, 0xaa, 0x37, 0x7c, 0x25, 0x12, -0xab, 0x72, 0xaa, 0x07, 0xa9, 0x06, 0xa8, 0x05, 0x90, 0x04, 0x33, 0x7c, 0x25, 0x12, 0x12, 0x72, -0xc5, 0x24, 0x7c, 0x90, 0x12, 0x44, 0xaa, 0x25, 0x00, 0x7f, 0x80, 0x7e, 0xff, 0x7d, 0xff, 0x7c, -0x6b, 0x12, 0xc3, 0x08, 0x25, 0x12, 0x50, 0x22, 0x90, 0x14, 0x44, 0x7c, 0x25, 0x12, 0xe4, 0x72, -0xff, 0x2f, 0x3e, 0xe4, 0xed, 0xfe, 0x01, 0x34, 0xe4, 0xfd, 0x80, 0x3c, 0xe4, 0x26, 0xff, 0x7f, -0x7f, 0x7e, 0xfc, 0xfd, 0x6b, 0x12, 0xd3, 0x08, 0x25, 0x12, 0x40, 0x22, 0x90, 0x1d, 0x44, 0x7c, -0x25, 0x12, 0xc3, 0x72, 0x94, 0xef, 0xff, 0x00, 0x94, 0xee, 0xfe, 0x00, 0x94, 0xed, 0xfd, 0x01, -0x94, 0xec, 0xfc, 0x00, 0x7c, 0x90, 0x12, 0x44, 0xaa, 0x25, 0x7f, 0xe4, 0xfe, 0x0f, 0xfc, 0xfd, -0x7c, 0x90, 0x12, 0x3b, 0x8e, 0x25, 0x24, 0x12, 0xe4, 0xd3, 0x10, 0x7b, 0xf9, 0xfa, 0x12, 0xf8, -0xdb, 0x68, 0x6b, 0x12, 0x12, 0x08, 0xb8, 0x24, 0x7c, 0x90, 0x12, 0x3b, 0xaa, 0x25, 0x7c, 0x90, -0xe0, 0x41, 0x54, 0xf9, 0x70, 0x03, 0x90, 0x5d, 0x3b, 0x7c, 0x25, 0x12, 0x78, 0x72, 0x12, 0x07, -0x4b, 0x25, 0x7c, 0x90, 0x12, 0x42, 0xd6, 0x6a, 0x12, 0x50, 0x7c, 0x90, 0xe0, 0x42, 0xa3, 0xfe, -0xff, 0xe0, 0x6b, 0x12, 0x90, 0x01, 0x42, 0x7c, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x42, -0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0x40, 0x7c, 0x9f, 0xe0, 0x7c, 0x90, 0xe0, 0x3f, 0x50, 0x9e, -0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0xe9, 0x80, 0x94, 0x18, 0x40, 0x7c, 0x90, 0xe0, 0x3f, -0xa3, 0xff, 0x90, 0xe0, 0x4e, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x3f, 0x7c, 0xf0, 0xe4, -0xf0, 0xa3, 0xf0, 0xa3, 0x7c, 0x90, 0xe0, 0x41, 0xf0, 0x04, 0x7c, 0x90, 0xe0, 0x89, 0x17, 0x64, -0x20, 0x70, 0x6c, 0x7d, 0x12, 0xff, 0x07, 0x12, 0x57, 0x7d, 0x12, 0x12, 0xc3, 0x38, 0x6a, 0x12, -0x40, 0xe2, 0x7d, 0x52, 0x7f, 0x3d, 0x12, 0x50, 0x76, 0x12, 0x70, 0x7d, 0x71, 0x7c, 0x08, 0x7f, -0x3e, 0x80, 0x7c, 0x90, 0xe0, 0x89, 0x74, 0xff, 0xc3, 0x17, 0x50, 0x9f, 0xef, 0x38, 0x57, 0x94, -0x33, 0x50, 0x7c, 0x90, 0xe0, 0x4f, 0x64, 0x94, 0x7c, 0x90, 0xe0, 0x4e, 0x00, 0x94, 0x06, 0x40, -0x12, 0xd3, 0xe2, 0x6a, 0x1f, 0x50, 0x16, 0x7d, 0x12, 0x12, 0x7d, 0x38, 0x12, 0x18, 0x24, 0x12, -0x70, 0x7d, 0x12, 0x12, 0x7d, 0x5c, 0x12, 0x57, 0x5c, 0x12, 0x6c, 0x7d, 0x71, 0x7c, 0x5a, 0x7f, -0x00, 0x7e, 0x6f, 0x12, 0x90, 0x57, 0x32, 0x7c, 0x20, 0xe0, 0x03, 0xe0, 0x11, 0x02, 0x90, 0xb4, -0xd2, 0x7f, 0x6a, 0x12, 0x90, 0xfa, 0xd4, 0x7f, 0xf0, 0xe4, 0x12, 0xa3, 0x65, 0x12, 0x94, 0xc3, -0xee, 0xff, 0x3f, 0x94, 0x51, 0x40, 0x7c, 0x90, 0xe0, 0x8c, 0x0a, 0x94, 0x41, 0x40, 0x1b, 0x7d, -0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x1d, 0x7d, 0x12, 0x12, 0x7f, 0x24, 0x12, 0x02, -0x2e, 0x12, 0x0c, 0x7f, 0x12, 0x12, 0x7f, 0x2e, 0x12, 0x08, 0x42, 0x12, 0x30, 0x7f, 0x12, 0x12, -0x7d, 0x42, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x20, 0x12, 0x00, 0x57, 0x6f, 0x1d, 0x7d, 0x71, 0x7c, -0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x1b, 0x7d, 0xff, 0x7f, 0x12, 0x12, 0x80, 0x76, 0x90, 0x08, -0x8c, 0x7c, 0x04, 0xe0, 0x80, 0xf0, 0x90, 0x05, 0x8c, 0x7c, 0xf0, 0xe4, 0x7f, 0x90, 0xe0, 0xaf, -0xe1, 0x20, 0x7f, 0x3c, 0x7e, 0x45, 0x12, 0x71, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x7f, 0xa3, 0xf0, -0xf0, 0xef, 0x46, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x81, 0x7c, 0xf0, 0xee, 0xef, 0xa3, -0x7f, 0xf0, 0x7e, 0x47, 0x12, 0x71, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x83, 0xa3, 0xf0, 0xf0, 0xef, -0x48, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x85, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, -0x12, 0x04, 0x8c, 0x1b, 0x7c, 0x90, 0xe0, 0x89, 0x94, 0xc3, 0x7d, 0x57, 0x7c, 0x22, 0x40, 0x71, -0x7f, 0x42, 0x7e, 0xd0, 0x12, 0x00, 0x57, 0x6f, 0x00, 0x7d, 0x92, 0x7c, 0x01, 0x7f, 0x12, 0x12, -0x7f, 0x96, 0x7e, 0x1f, 0x12, 0x00, 0x57, 0x6f, 0x6d, 0x7d, 0x71, 0x7c, 0xff, 0x7f, 0x7f, 0x7e, -0x6f, 0x12, 0x90, 0x57, 0x8d, 0x7c, 0xff, 0xe0, 0xe0, 0xa3, 0x7c, 0x90, 0xcf, 0x8f, 0xa3, 0xf0, -0xf0, 0xef, 0x6f, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x8d, 0x7c, 0xf0, 0xee, 0xef, 0xa3, -0x80, 0xf0, 0x7f, 0x0d, 0x12, 0xd2, 0x96, 0x12, 0x0f, 0x7f, 0x12, 0x12, 0x12, 0x4c, 0x7e, 0x12, -0x7c, 0x90, 0xe0, 0x32, 0xe2, 0x30, 0x12, 0x31, 0x8a, 0x12, 0x12, 0x12, 0x7d, 0x65, 0x7c, 0x22, -0x7f, 0x71, 0x12, 0xd2, 0x4c, 0x12, 0x2c, 0x7d, 0x94, 0x7c, 0x0f, 0x7f, 0x00, 0x7e, 0x6f, 0x12, -0x12, 0x57, 0x7e, 0x12, 0x7f, 0x90, 0xe4, 0xd2, 0xa3, 0xf0, 0x90, 0xf0, 0xd4, 0x7f, 0xa3, 0xf0, -0x7d, 0xf0, 0x7f, 0x57, 0x12, 0x01, 0x07, 0x12, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, -0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, -0xe0, 0xd0, 0x7c, 0x32, 0xfe, 0x71, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x16, 0x7f, 0x71, 0x7e, 0x04, -0x12, 0x00, 0x57, 0x6f, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, -0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x1d, 0x7d, 0x71, 0x7c, 0x00, 0x7e, -0x6f, 0x12, 0x22, 0x57, 0x71, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x1d, 0x7d, -0x71, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x00, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x00, -0xe4, 0x92, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, -0xf0, 0x22, 0x29, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x8a, 0x7c, 0xf0, 0xee, 0xef, 0xa3, -0x22, 0xf0, 0x71, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x6d, 0x7d, 0x71, 0x7c, 0xad, 0x7f, -0x01, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x23, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x89, 0x7c, -0x22, 0xef, 0x00, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x2c, 0x22, 0x94, 0x30, 0x30, 0x90, 0x10, -0x80, 0x7a, 0x01, 0x74, 0x7d, 0xf0, 0x7c, 0x2e, 0xe4, 0x55, 0xfe, 0xff, 0x6f, 0x12, 0x20, 0x57, -0x24, 0x11, 0x7b, 0x90, 0xe4, 0x49, 0xf0, 0x75, 0x12, 0x01, 0x8c, 0x24, 0x90, 0xc3, 0x4a, 0x7b, -0x94, 0xe0, 0x90, 0x9a, 0x49, 0x7b, 0x94, 0xe0, 0x40, 0x02, 0xe4, 0x12, 0xa3, 0xf0, 0x90, 0xf0, -0x80, 0x7a, 0xf0, 0x04, 0x07, 0x80, 0x90, 0xe4, 0x49, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x95, 0x7f, -0x54, 0xe0, 0xc3, 0x0f, 0x02, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0x80, 0xf0, 0x01, 0x7a, 0x90, -0xe0, 0x80, 0x27, 0x60, 0xf0, 0xe4, 0x7b, 0x90, 0x04, 0x2c, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x3a, -0x7b, 0x90, 0xf0, 0x3b, 0x11, 0xc2, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, 0x02, 0x03, 0xf5, 0x15, -0x7b, 0x90, 0x7d, 0x2c, 0x12, 0x10, 0xf6, 0x15, 0x71, 0x02, 0x90, 0x45, 0x66, 0x7f, 0xa3, 0xe0, -0xe1, 0x30, 0x12, 0x05, 0x14, 0x47, 0x03, 0x80, 0x71, 0x12, 0x12, 0x45, 0x6d, 0x57, 0x7b, 0x90, -0xe0, 0x3c, 0xf0, 0x04, 0xc3, 0xe0, 0x04, 0x94, 0x03, 0x50, 0x15, 0x02, 0xe4, 0xf5, 0x12, 0xf0, -0x89, 0x68, 0x86, 0x94, 0x08, 0x40, 0x7b, 0x90, 0xe0, 0x3a, 0xf0, 0x04, 0x05, 0x80, 0x90, 0xe4, -0x3a, 0x7b, 0xef, 0xf0, 0x94, 0xd3, 0x50, 0x6c, 0x90, 0x08, 0x3b, 0x7b, 0x04, 0xe0, 0x80, 0xf0, -0xe4, 0x05, 0x7b, 0x90, 0xf0, 0x3b, 0x7b, 0x90, 0xe0, 0x3a, 0x94, 0xc3, 0x40, 0x03, 0x74, 0x05, -0xf0, 0x03, 0x11, 0xd2, 0x7b, 0x90, 0xe0, 0x3b, 0x94, 0xc3, 0x40, 0x06, 0x74, 0x05, 0xf0, 0x06, -0x11, 0xc2, 0x7b, 0x90, 0xe0, 0x2c, 0x7c, 0x90, 0xf0, 0x14, 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xc3, -0x40, 0xac, 0x12, 0x0b, 0x70, 0x68, 0x07, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc6, 0x68, 0x12, -0x94, 0x89, 0x50, 0xac, 0x12, 0x0b, 0x70, 0x68, 0x09, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc6, -0xc3, 0xef, 0x89, 0x94, 0x12, 0x50, 0x68, 0x12, 0xe4, 0x90, 0x7a, 0x90, 0x12, 0xc6, 0x75, 0x68, -0x09, 0x74, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x31, 0x7a, 0x90, 0xe0, 0xa8, 0x90, 0xff, 0x59, 0x3b, -0xfe, 0x93, 0x7c, 0x90, 0xf0, 0x16, 0x7b, 0x90, 0xe0, 0x2e, 0x9e, 0xd3, 0x08, 0x40, 0x7c, 0x90, -0xe0, 0x16, 0x7b, 0x90, 0xf0, 0x2e, 0x11, 0x30, 0x02, 0x03, 0xc0, 0x14, 0x7b, 0x90, 0xe0, 0x44, -0x94, 0xc3, 0x50, 0x7b, 0x12, 0x21, 0x64, 0x68, 0x02, 0x74, 0x68, 0x12, 0xef, 0x53, 0x06, 0x94, -0x06, 0x50, 0x7b, 0x90, 0x74, 0x2d, 0xf0, 0x01, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, 0x50, 0x04, -0xe4, 0x05, 0x7b, 0x90, 0xf0, 0x2d, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, 0x50, 0x05, 0x02, 0x03, -0xc0, 0x14, 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xff, 0x50, 0x7b, 0x30, 0x29, 0x26, 0x14, 0x7a, 0x90, -0xe0, 0xcb, 0x20, 0x70, 0x68, 0x12, 0x74, 0x90, 0x12, 0x04, 0x4d, 0x68, 0xc3, 0xef, 0x6c, 0x94, -0x03, 0x40, 0x01, 0x74, 0x90, 0xf0, 0x44, 0x7b, 0xc3, 0xe0, 0x72, 0x94, 0x06, 0x40, 0x7b, 0x90, -0x74, 0x31, 0xf0, 0x03, 0x68, 0x12, 0x94, 0x89, 0x50, 0x69, 0x30, 0x11, 0x0e, 0x14, 0x7a, 0x90, -0xe0, 0xcb, 0x08, 0x70, 0x68, 0x12, 0x74, 0x90, 0x12, 0x05, 0x4d, 0x68, 0xc3, 0xef, 0x5f, 0x94, -0x0e, 0x50, 0x68, 0x12, 0x90, 0x64, 0x2d, 0x7b, 0x01, 0x74, 0x74, 0xf0, 0x12, 0x07, 0x59, 0x68, -0x7b, 0x90, 0xe0, 0x44, 0x94, 0xc3, 0x50, 0x4c, 0x12, 0x0c, 0x64, 0x68, 0x12, 0xe4, 0x78, 0x68, -0x06, 0x74, 0x68, 0x12, 0x12, 0x5c, 0x89, 0x68, 0x32, 0x94, 0x0c, 0x50, 0x68, 0x12, 0xe4, 0x64, -0x68, 0x12, 0x74, 0x78, 0x12, 0x04, 0x5c, 0x68, 0xc3, 0xef, 0x17, 0x94, 0x0e, 0x50, 0x68, 0x12, -0x74, 0x64, 0x12, 0x01, 0x78, 0x68, 0xf0, 0x04, 0x7a, 0x90, 0xf0, 0xc6, 0x7c, 0x90, 0x74, 0x17, -0xf0, 0x08, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, 0x40, 0x05, 0x90, 0x06, 0x17, 0x7c, 0x09, 0x74, -0x90, 0xf0, 0x2e, 0x7b, 0xff, 0xe0, 0x94, 0xc3, 0x50, 0x08, 0x90, 0x05, 0x17, 0x7c, 0xf0, 0xef, -0x7a, 0x90, 0x74, 0xc9, 0xf0, 0x01, 0x14, 0x20, 0x90, 0x09, 0x2c, 0x7b, 0xd3, 0xe0, 0x07, 0x94, -0x05, 0x40, 0x90, 0xe4, 0xc9, 0x7a, 0x90, 0xf0, 0x2c, 0x7b, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0x31, -0x12, 0xfd, 0x03, 0x68, 0x7b, 0x90, 0xee, 0x2f, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0x74, 0x15, -0xf0, 0x1f, 0x7b, 0x90, 0xe0, 0x2c, 0xc3, 0xff, 0x16, 0x94, 0x0c, 0x40, 0x7a, 0x90, 0xe0, 0xa8, -0x3b, 0x90, 0x93, 0x51, 0x7c, 0x90, 0xf0, 0x15, 0x64, 0xef, 0xff, 0x01, 0x7b, 0x90, 0xf0, 0x2c, -0x7f, 0x90, 0xe0, 0x69, 0x54, 0x5f, 0xfe, 0x07, 0x54, 0xef, 0x4e, 0x18, 0x7b, 0x90, 0xf0, 0x2c, -0x7f, 0x90, 0xe0, 0x69, 0x18, 0x54, 0x90, 0xff, 0x2c, 0x7b, 0xfe, 0xe0, 0x18, 0x54, 0x9f, 0xd3, -0x0f, 0x40, 0x54, 0xee, 0xff, 0x07, 0x7f, 0x90, 0xe0, 0x69, 0x18, 0x54, 0x90, 0x4f, 0x2c, 0x7b, -0x90, 0xf0, 0x2c, 0x7b, 0x64, 0xe0, 0xf0, 0x01, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, 0x02, 0x03, -0xf5, 0x15, 0x7a, 0x90, 0xe0, 0xc6, 0x0b, 0x60, 0x15, 0x7d, 0x56, 0x7c, 0x01, 0x7f, 0x00, 0x7e, -0x6f, 0x12, 0x12, 0x57, 0x27, 0x58, 0x7b, 0x90, 0xe0, 0x2c, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, -0x12, 0x52, 0x57, 0x6f, 0x7c, 0x90, 0x7c, 0x17, 0x12, 0x52, 0x0e, 0x16, 0x7b, 0x90, 0x7d, 0x2d, -0x12, 0x11, 0xf6, 0x15, 0x7b, 0x90, 0xe0, 0x2f, 0xa3, 0xfe, 0xff, 0xe0, 0x13, 0x7d, 0x54, 0x7c, -0x6f, 0x12, 0x90, 0x57, 0x31, 0x7b, 0x14, 0x7d, 0x16, 0x12, 0x90, 0x18, 0x2e, 0x7b, 0x54, 0x7c, -0x16, 0x12, 0x90, 0x0e, 0x2d, 0x7b, 0x11, 0x7d, 0x16, 0x12, 0x90, 0x18, 0xc6, 0x7a, 0x70, 0xe0, -0xfe, 0x04, 0x80, 0xff, 0x7e, 0x04, 0x7f, 0x00, 0x7d, 0x01, 0x7c, 0x15, 0x12, 0x54, 0x57, 0x6f, -0x7c, 0x90, 0xe0, 0x15, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x1e, 0x12, 0x54, 0x57, 0x6f, 0x6e, 0x12, -0x22, 0x05, 0xff, 0xe0, 0x00, 0x7e, 0x52, 0x7c, 0x6f, 0x12, 0x90, 0x57, 0x2c, 0x7b, 0xff, 0xe0, -0x00, 0x7e, 0x10, 0x7d, 0x54, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x12, 0x7d, -0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x54, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0x0d, 0xaf, -0x33, 0xef, 0xe0, 0x95, 0xef, 0xfe, 0xe0, 0x25, 0xee, 0xff, 0xfe, 0x33, 0xa4, 0x74, 0xf5, 0x2f, -0x74, 0x82, 0x3e, 0x7d, 0x83, 0xf5, 0xf0, 0xe4, 0xf0, 0xa3, 0x0d, 0x05, 0x0d, 0xe5, 0x90, 0x22, -0xbf, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xbf, 0x7b, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, -0xa3, 0xf0, 0xf0, 0xef, 0x90, 0x22, 0x48, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, -0xe4, 0xff, 0x22, 0x9e, 0x90, 0xff, 0xbc, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, 0xa2, 0xce, -0x13, 0xe7, 0x13, 0xce, 0x90, 0x22, 0xbc, 0x7b, 0xef, 0xf0, 0xf0, 0xa3, 0x7b, 0x90, 0xe0, 0xbf, -0xa3, 0xfe, 0x22, 0xe0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x90, 0x22, 0x48, 0x7e, 0xfe, 0xe0, -0xe0, 0xa3, 0xd3, 0xff, 0x7e, 0x90, 0xe0, 0x47, 0xee, 0x9f, 0x80, 0x64, 0x90, 0xf8, 0x46, 0x7e, -0x64, 0xe0, 0x98, 0x80, 0xf5, 0x22, 0xec, 0x83, 0xa3, 0xf0, 0xf0, 0xed, 0xeb, 0xc3, 0xff, 0x9f, -0x9e, 0xea, 0x90, 0xfe, 0xbf, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, -0x90, 0x22, 0xbc, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0xff, 0x22, 0x7b, 0x90, 0xe0, 0x63, 0xff, 0x2f, -0x7b, 0x90, 0xe0, 0x62, 0xfe, 0x3e, 0x95, 0x33, 0x90, 0xe0, 0xa0, 0x7d, 0xf0, 0xee, 0xa3, 0xef, -0x7e, 0xf0, 0x7f, 0x7d, 0x22, 0xa0, 0x90, 0xee, 0xbf, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0xfe, 0x22, -0x7b, 0x90, 0xe0, 0xb5, 0x00, 0x34, 0x7b, 0x90, 0xf0, 0xbf, 0xce, 0xa3, 0xf5, 0x22, 0xe0, 0x83, -0xa3, 0xff, 0x90, 0xe0, 0xc1, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xc1, 0x7b, 0xfc, 0xe0, -0xe0, 0xa3, 0x22, 0xfd, 0x80, 0x64, 0x90, 0x98, 0x30, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, 0xe0, 0x22, -0xa3, 0xfe, 0xe0, 0xd3, 0x90, 0xff, 0x1b, 0x7e, 0x9f, 0xe0, 0x7e, 0x90, 0xe0, 0x1a, 0x22, 0x9e, -0x0b, 0x24, 0x82, 0xf5, 0x3e, 0xe4, 0x83, 0xf5, 0x22, 0xe0, 0xc3, 0xff, 0x9f, 0xe4, 0xe4, 0xff, -0xfe, 0x9e, 0x7e, 0x90, 0xe0, 0x1d, 0x00, 0x7c, 0xff, 0x2f, 0x3e, 0xec, 0x90, 0xfe, 0x1f, 0x7e, -0xfd, 0xe0, 0x90, 0x22, 0x64, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0x22, 0xa0, 0x7d, 0xf0, 0xcf, -0xef, 0xa3, 0x7e, 0xf0, 0x7f, 0x7d, 0x22, 0xa0, 0x90, 0xd3, 0xc2, 0x7b, 0x94, 0xe0, 0x90, 0xff, -0xc1, 0x7b, 0x64, 0xe0, 0x22, 0x80, 0xc3, 0xff, 0x9f, 0xed, 0xec, 0xfd, 0xfc, 0x9e, 0x7b, 0x90, -0xe0, 0xbf, 0xa3, 0xfa, 0xfb, 0xe0, 0xfd, 0x2d, 0x3c, 0xea, 0xe9, 0xfc, 0xe0, 0x25, 0xd3, 0x22, -0x7b, 0x90, 0xe0, 0xc0, 0xff, 0x94, 0x7b, 0x90, 0xe0, 0xbf, 0x80, 0x64, 0xee, 0x22, 0x7b, 0x90, -0xf0, 0xc1, 0xef, 0xa3, 0x22, 0xf0, 0xac, 0xfd, 0x90, 0x06, 0x64, 0x7e, 0xa2, 0xe0, 0x13, 0xe7, -0xa3, 0xfe, 0x13, 0xe0, 0xff, 0x22, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, 0x7d, 0x90, 0x74, 0xb4, -0xf0, 0x04, 0xe4, 0xa3, 0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa4, 0xfc, 0x16, 0xa3, 0x22, 0x90, 0xf0, -0x05, 0x7e, 0x54, 0xe0, 0x22, 0xc0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0x90, 0xfe, -0xb3, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0x22, 0xfd, 0x0d, 0xaf, 0x33, 0xef, 0xe0, 0x95, 0xef, 0xfe, -0xe0, 0x25, 0xee, 0xff, 0xfe, 0x33, 0xff, 0x22, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0xff, 0x22, -0x90, 0xc3, 0x65, 0x7e, 0x9f, 0xe0, 0x90, 0xff, 0x64, 0x7e, 0x9e, 0xe0, 0x22, 0xfe, 0x7e, 0x90, -0xe0, 0x02, 0xa3, 0xff, 0x90, 0xe0, 0xb8, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0xff, 0x22, 0x90, 0xc3, -0xc0, 0x7b, 0x9f, 0xe0, 0x90, 0xff, 0xbf, 0x7b, 0x9e, 0xe0, 0xff, 0x22, 0x82, 0xf5, 0x83, 0x8e, -0xa3, 0xa3, 0xe0, 0x22, 0xed, 0xff, 0xee, 0x9f, 0x80, 0x64, 0xec, 0xf8, 0x90, 0x22, 0x2a, 0x7c, -0x25, 0x02, 0x12, 0x8e, 0xb8, 0x24, 0x7c, 0x90, 0x02, 0x2a, 0xaa, 0x25, 0xff, 0xe0, 0xe0, 0xa3, -0x7e, 0x90, 0xcf, 0x14, 0xa3, 0xf0, 0xf0, 0xef, 0xe0, 0x22, 0x54, 0xc4, 0xff, 0x0f, 0x01, 0x74, -0x00, 0x7e, 0x07, 0xa8, 0x22, 0x08, 0xee, 0xff, 0xa3, 0xf0, 0xf0, 0xef, 0x7d, 0x22, 0x7c, 0x2e, -0x7e, 0x83, 0x22, 0x00, 0x81, 0x7f, 0x19, 0x7d, 0x85, 0x7c, 0x00, 0x7e, 0xff, 0x22, 0x8f, 0xee, -0x02, 0xf0, 0x8c, 0x24, 0x7b, 0x90, 0xe0, 0xbc, 0xa3, 0xff, 0x22, 0xe0, 0xff, 0xf4, 0x7e, 0x90, -0xe4, 0x08, 0xa3, 0xf0, 0x5f, 0xe0, 0x22, 0xf0, 0x90, 0xff, 0x2f, 0x7c, 0x9f, 0xe0, 0x7c, 0x90, -0xe0, 0x2e, 0x22, 0x9e, 0xe0, 0xff, 0x01, 0x54, 0xa3, 0xfc, 0xfd, 0xe0, 0x24, 0x02, 0x90, 0x7a, -0x48, 0x7e, 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0x46, 0x90, 0x22, 0x89, 0x7e, 0xff, 0xe0, -0x00, 0x7e, 0x11, 0x7d, 0x85, 0x7c, 0x90, 0x22, 0xb7, 0x7b, 0x54, 0xe0, 0xff, 0x03, 0xe4, 0x22, -0x32, 0xf5, 0x7b, 0x90, 0xf0, 0xb7, 0x12, 0x22, 0x7a, 0x24, 0xa2, 0xee, 0x13, 0xe7, 0xef, 0xfe, -0x22, 0x13, 0x82, 0x8f, 0x83, 0x8e, 0xa3, 0xa3, 0xf0, 0xe4, 0xf0, 0xa3, 0x90, 0x22, 0x2d, 0x7e, -0x9f, 0xe0, 0x7e, 0x90, 0xe0, 0x2c, 0x22, 0x9e, 0x90, 0xe4, 0xb3, 0x7b, 0xa3, 0xf0, 0x22, 0xf0, -0xee, 0xff, 0xa3, 0xf0, 0xf0, 0xef, 0x1c, 0x7d, 0x82, 0x7c, 0x90, 0x22, 0x20, 0x7c, 0x25, 0x02, -0x7c, 0x72, 0x7f, 0x85, 0x7e, 0x0b, 0x22, 0x00, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xe4, 0x22, -0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0x24, 0x12, 0xee, 0x7a, 0x95, 0x33, 0xfd, 0xe0, 0x22, 0xfc, -0x7e, 0x90, 0xe0, 0x46, 0xa3, 0xfe, 0x78, 0xe0, 0x22, 0x05, 0x7e, 0x90, 0xe0, 0x05, 0x13, 0xc4, -0x54, 0x13, 0x22, 0x03, 0xaf, 0xc2, 0xfe, 0x80, 0xc0, 0x32, 0xe5, 0xe0, 0x54, 0xd0, 0x64, 0x18, -0x70, 0x08, 0xd0, 0x03, 0x32, 0xe0, 0xe0, 0xd0, 0x19, 0x12, 0x85, 0x4c, 0x0b, 0xd0, 0xd0, 0x75, -0xaa, 0x08, 0xc2, 0xe0, 0xe5, 0x8c, 0x24, 0x8a, 0xf5, 0xf7, 0xe5, 0x8a, 0x34, 0x8c, 0xf5, 0xd8, -0xd2, 0x8c, 0xec, 0x8c, 0x40, 0x24, 0xe6, 0xf8, 0x04, 0xbc, 0x74, 0x02, 0xc3, 0x7f, 0x81, 0x95, -0x01, 0xb4, 0x40, 0x00, 0x79, 0xbf, 0x78, 0x05, 0x16, 0x35, 0x08, 0xe6, 0x0b, 0x70, 0xaf, 0xc2, -0x30, 0xe6, 0x03, 0xe1, 0x18, 0x44, 0xd2, 0xf6, 0x08, 0xaf, 0xed, 0xd9, 0x8b, 0xea, 0xd2, 0xd0, -0x22, 0x68, 0x0c, 0xe5, 0x23, 0xff, 0x36, 0x24, 0x0f, 0xf8, 0x08, 0x08, 0xb5, 0xef, 0x06, 0x0c, -0x68, 0x10, 0x43, 0x03, 0x01, 0x87, 0x05, 0xbf, 0x7f, 0x04, 0x78, 0x00, 0xe6, 0x36, 0xe4, 0x30, -0x00, 0xe8, 0x0c, 0xe5, 0x9f, 0xc3, 0x20, 0x50, 0x0c, 0x05, 0x3f, 0x74, 0x0c, 0x25, 0xe6, 0xf8, -0xa6, 0xfd, 0x08, 0x81, 0xae, 0xe6, 0xbe, 0x0c, 0x02, 0x04, 0x7f, 0x74, 0xf8, 0xcd, 0x6d, 0xe8, -0xe0, 0x60, 0xe6, 0x08, 0xe0, 0xc0, 0xf6, 0x80, 0x0c, 0xe5, 0x9f, 0xd3, 0x27, 0x40, 0x0c, 0xe5, -0x40, 0x24, 0xe6, 0xf8, 0x0c, 0xae, 0x04, 0xbe, 0x74, 0x02, 0xfd, 0x7f, 0xe6, 0x18, 0xf8, 0xcd, -0x81, 0xe5, 0x60, 0x6d, 0xd0, 0x06, 0xf6, 0xe0, 0x80, 0x18, 0xe5, 0xf5, 0x24, 0x0c, 0xc8, 0x3f, -0x15, 0xf6, 0x80, 0x0c, 0xe5, 0xd3, 0x23, 0x0c, 0x36, 0x24, 0x7f, 0xf8, 0xc2, 0x04, 0xe6, 0xaf, -0xe0, 0x30, 0x10, 0x03, 0x0c, 0xe2, 0x00, 0x7f, 0xe1, 0x30, 0x30, 0x07, 0x04, 0xe3, 0x08, 0x7f, -0xf4, 0x54, 0x7c, 0x54, 0xd2, 0xc6, 0x54, 0xaf, 0x42, 0x80, 0x22, 0x07, 0x3f, 0x78, 0x81, 0xa6, -0x04, 0x74, 0x06, 0x60, 0x08, 0xff, 0x7f, 0x76, 0xfb, 0xdf, 0x05, 0x7f, 0x78, 0xe4, 0xf6, 0x35, -0xf6, 0x08, 0xdf, 0x08, 0x78, 0xfa, 0x76, 0x36, 0x90, 0x30, 0x7d, 0x72, 0x01, 0x74, 0xc0, 0x93, -0xe4, 0xe0, 0xc0, 0x93, 0x43, 0xe0, 0x01, 0x89, 0x8a, 0x75, 0x75, 0xf0, 0xd8, 0x8c, 0x8c, 0xd2, -0xaf, 0xd2, 0xa9, 0xd2, 0x04, 0x22, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, 0x74, 0x22, -0x2f, 0x36, 0xf8, 0x2f, 0x20, 0xe6, 0xf4, 0xe5, 0xaf, 0xc2, 0x44, 0xe6, 0xf6, 0x30, 0xaf, 0xd2, -0x0c, 0xae, 0xc3, 0xee, 0x50, 0x9f, 0x0e, 0x21, 0x3f, 0x74, 0xf8, 0x2e, 0xf9, 0xe6, 0xe6, 0x08, -0xbe, 0x18, 0x02, 0x04, 0x7f, 0x74, 0xed, 0xfd, 0x60, 0x69, 0x09, 0x09, 0x19, 0xe7, 0xf7, 0x19, -0x09, 0x09, 0xf3, 0x80, 0x16, 0x16, 0xda, 0x80, 0xd3, 0xee, 0x40, 0x9f, 0x05, 0x04, 0x05, 0x81, -0xee, 0x81, 0x9f, 0xd3, 0x22, 0x40, 0x3f, 0x74, 0xf8, 0x2e, 0xe6, 0x08, 0xee, 0xf9, 0x0c, 0xb5, -0xa9, 0x02, 0x18, 0x81, 0x06, 0x06, 0xfd, 0xe6, 0x69, 0xed, 0x09, 0x60, 0x19, 0x19, 0x09, 0xe7, -0xf7, 0x09, 0x80, 0x19, 0x1e, 0xf3, 0xd9, 0x80, 0x24, 0xef, 0xf8, 0x3f, 0x04, 0xe6, 0xef, 0xf8, -0x04, 0x2f, 0x72, 0x90, 0x93, 0x7d, 0x08, 0xf6, 0x2f, 0xef, 0xf6, 0x93, 0x00, 0x7f, 0xef, 0x22, -0x94, 0xd3, 0x40, 0x04, 0x7f, 0x03, 0x22, 0xff, 0x23, 0xef, 0x36, 0x24, 0xe6, 0xf8, 0xe5, 0x30, -0xc2, 0xf4, 0xe6, 0xaf, 0x8c, 0x54, 0xd2, 0xf6, 0xe5, 0xaf, 0xb5, 0x0c, 0x0a, 0x07, 0x3f, 0x74, -0xf8, 0x2f, 0xf5, 0xe6, 0x02, 0x81, 0xa6, 0x19, 0x2e, 0x50, 0x40, 0x74, 0xf8, 0x2f, 0xbf, 0xe6, -0x02, 0x04, 0x7f, 0x74, 0x18, 0xfd, 0xf9, 0xe6, 0x3f, 0x74, 0xf8, 0x2f, 0xe6, 0xfb, 0xe9, 0xfc, -0x60, 0x6c, 0xa8, 0x08, 0xe7, 0x05, 0x1d, 0xf6, 0x80, 0x19, 0xa8, 0xf4, 0xa6, 0x03, 0x1f, 0x05, -0x0c, 0xe5, 0x07, 0xb5, 0x7f, 0xe3, 0x22, 0x00, 0x40, 0x74, 0xf8, 0x2f, 0xfd, 0xe6, 0x86, 0x18, -0x0f, 0x01, 0x3f, 0x74, 0xf8, 0x2f, 0x01, 0xa6, 0x86, 0x08, 0xe5, 0x04, 0xb5, 0x0c, 0x02, 0x07, -0x81, 0xac, 0x6c, 0xed, 0x08, 0x60, 0x09, 0x0d, 0x05, 0xa8, 0xf7, 0xe6, 0xf4, 0x80, 0x0c, 0xe5, -0x07, 0xb5, 0x89, 0xde, 0x7f, 0x81, 0x22, 0x00, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, -0xef, 0x22, 0x24, 0x23, 0xf8, 0x36, 0xaf, 0xc2, 0x30, 0xe6, 0x05, 0xe5, 0xe0, 0x30, 0xd2, 0x02, -0xd2, 0xe4, 0xc6, 0xe2, 0xaf, 0xd2, 0x00, 0x7f, 0xe2, 0x30, 0x0f, 0x01, 0x19, 0x02, 0x8f, 0xa3, -0xe4, 0xf0, 0xfe, 0xff, 0x0c, 0xe5, 0x24, 0x23, 0xf8, 0x35, 0xa9, 0xc2, 0xf7, 0x30, 0x7f, 0x0d, -0xe6, 0x08, 0x0b, 0x60, 0xf6, 0x2d, 0x32, 0x60, 0x30, 0x50, 0x07, 0x80, 0xf1, 0x30, 0xed, 0x06, -0x60, 0xf6, 0x7e, 0x27, 0x08, 0x02, 0xf0, 0x30, 0xc2, 0x10, 0xe6, 0xaf, 0xe7, 0x10, 0x0e, 0x25, -0xe2, 0x30, 0xd2, 0x0c, 0x7f, 0xaf, 0x80, 0x04, 0xc2, 0x14, 0xe6, 0xaf, 0xe7, 0x10, 0x54, 0x15, -0x4e, 0xec, 0xd2, 0xf6, 0xd2, 0xaf, 0x02, 0xa9, 0xa6, 0x19, 0x08, 0x7f, 0xef, 0x08, 0x83, 0x44, -0xc2, 0xf4, 0x56, 0xaf, 0xd2, 0xc6, 0xd2, 0xaf, 0x54, 0xa9, 0x4f, 0x80, 0x22, 0xff, 0xf5, 0xe4, -0xd2, 0x2c, 0xc2, 0x40, 0x7b, 0x00, 0x7a, 0xff, 0x79, 0x61, 0x90, 0x53, 0x91, 0x7c, 0x25, 0x12, -0x7a, 0xf0, 0x79, 0x5c, 0x90, 0x06, 0x9a, 0x7c, 0x25, 0x12, 0x7a, 0xf0, 0x79, 0x62, 0x90, 0x88, -0x94, 0x7c, 0x25, 0x12, 0x7a, 0xf0, 0x79, 0x65, 0x90, 0x1f, 0x9d, 0x7c, 0x25, 0x12, 0x7b, 0xf0, -0x7a, 0x00, 0x79, 0x00, 0x90, 0x00, 0x97, 0x7c, 0x25, 0x12, 0x74, 0xf0, 0x90, 0xff, 0xfa, 0x7f, -0xa3, 0xf0, 0x90, 0xf0, 0x80, 0x7d, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0xff, 0xb8, 0x75, 0x75, 0x38, -0x01, 0xf8, 0xa8, 0x75, 0xe4, 0x82, 0xa9, 0xf5, 0xaa, 0xf5, 0xab, 0xf5, 0xff, 0x7b, 0x72, 0x7a, -0x9b, 0x79, 0x7c, 0x90, 0x12, 0xac, 0xf0, 0x25, 0x7c, 0x90, 0x12, 0xaf, 0xf0, 0x25, 0xd1, 0xd2, -0x72, 0x12, 0x90, 0xe8, 0xfa, 0x7f, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x02, 0x03, 0xcf, 0x1e, -0x7f, 0x90, 0xe0, 0xfa, 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x02, 0x60, 0xf4, 0x02, 0x03, 0xb0, 0x1e, -0xf4, 0xe0, 0x03, 0x70, 0x1e, 0x02, 0x90, 0xab, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0xfe, 0x12, 0x20, -0x98, 0x6f, 0x7f, 0x90, 0xe0, 0xfe, 0xa3, 0xff, 0x90, 0xe0, 0xf6, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, -0x90, 0xf0, 0xfc, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7f, 0x90, 0xcf, 0xf4, 0x1e, 0x02, 0x90, 0x77, -0xfb, 0x7f, 0x64, 0xe0, 0x70, 0xfd, 0xc0, 0x27, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x12, 0xaf, -0x98, 0x6f, 0x7f, 0x7e, 0xf6, 0x7f, 0x12, 0x7d, 0x11, 0x7c, 0x71, 0x12, 0x7e, 0xc3, 0x7f, 0x7f, -0x7d, 0xf4, 0x7c, 0x13, 0x12, 0x11, 0xc3, 0x71, 0x40, 0x30, 0x02, 0xfd, 0x9f, 0x1d, 0x7f, 0x90, -0xe0, 0xfb, 0xc0, 0x64, 0x03, 0x60, 0x1d, 0x02, 0xc0, 0xa8, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, -0x90, 0xaf, 0xf8, 0x7f, 0xa3, 0xe0, 0x54, 0xe0, 0x90, 0x7f, 0x08, 0x7c, 0xe0, 0xf0, 0xd3, 0xff, -0x1c, 0x94, 0x0d, 0x40, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, 0x74, 0xa3, 0xf0, 0xfc, 0x1d, 0x02, -0x90, 0x9f, 0xf9, 0x7f, 0x30, 0xe0, 0x1f, 0xe7, 0x7f, 0x7c, 0xf6, 0x7d, 0x74, 0xc3, 0x9f, 0xf6, -0x7c, 0x90, 0x12, 0x04, 0xac, 0x6f, 0x7f, 0x90, 0xe0, 0xf6, 0xa3, 0xff, 0x90, 0xe0, 0x06, 0x7c, -0xf0, 0xcf, 0xef, 0xa3, 0x80, 0xf0, 0x90, 0x20, 0xf6, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7c, 0x90, -0xcf, 0x04, 0xa3, 0xf0, 0xf0, 0xef, 0xf6, 0x7f, 0x7c, 0x90, 0xe0, 0x08, 0xc3, 0xfd, 0xf6, 0x74, -0x90, 0x9d, 0x06, 0x7c, 0x6f, 0x12, 0x90, 0xac, 0x08, 0x7c, 0xd3, 0xe0, 0x00, 0x94, 0x18, 0x40, -0x7c, 0x90, 0x12, 0x04, 0x9f, 0x6f, 0xff, 0xe0, 0x7c, 0x90, 0x12, 0x06, 0x9f, 0x6f, 0xf0, 0xef, -0x7c, 0x90, 0xe0, 0x08, 0xf0, 0x14, 0xdf, 0x80, 0x6f, 0x12, 0xa2, 0x97, 0x92, 0xd1, 0xd0, 0xaf, -0x02, 0xd0, 0xc8, 0x1e, 0x7f, 0x90, 0xe0, 0xfb, 0x80, 0x64, 0x58, 0x70, 0x6f, 0x12, 0xaf, 0x98, -0x90, 0xa8, 0xf6, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0xa9, 0xaf, 0x7f, 0x90, 0xe4, 0xf4, 0xa3, 0xf0, -0xf0, 0xef, 0xaa, 0xaf, 0x7f, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, 0xf0, 0xef, 0xab, 0xaf, 0x7f, 0x90, -0xe4, 0xf0, 0xa3, 0xf0, 0xf0, 0xef, 0xb8, 0xaf, 0x7f, 0x90, 0xe4, 0xee, 0xa3, 0xf0, 0xf0, 0xef, -0xf8, 0xaf, 0x7f, 0x90, 0xe4, 0xec, 0xa3, 0xf0, 0xf0, 0xef, 0xd0, 0xaf, 0x7f, 0x90, 0xe4, 0xea, -0xa3, 0xf0, 0xf0, 0xef, 0x40, 0xa2, 0xff, 0xe4, 0x90, 0x33, 0xe8, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, -0x02, 0xf0, 0xc8, 0x1e, 0x7f, 0x90, 0xe0, 0xfb, 0x88, 0x64, 0x49, 0x70, 0x7f, 0x90, 0xe0, 0xf6, -0xe0, 0xa3, 0xa8, 0xf5, 0x7f, 0x90, 0xe0, 0xf4, 0xe0, 0xa3, 0xa9, 0xf5, 0x7f, 0x90, 0xe0, 0xf2, -0xe0, 0xa3, 0xaa, 0xf5, 0x7f, 0x90, 0xe0, 0xf0, 0xe0, 0xa3, 0xab, 0xf5, 0x7f, 0x90, 0xe0, 0xee, -0xe0, 0xa3, 0xb8, 0xf5, 0x7f, 0x90, 0xe0, 0xec, 0xe0, 0xa3, 0xf8, 0xf5, 0x7f, 0x90, 0xe0, 0xea, -0xe0, 0xa3, 0xd0, 0xf5, 0x7f, 0x90, 0xe0, 0xe8, 0xa3, 0xfe, 0xff, 0xe0, 0x4f, 0xee, 0xff, 0x24, -0x40, 0x92, 0x80, 0xe4, 0x90, 0x52, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x89, 0x12, 0x06, 0x2f, 0x6e, -0x80, 0xe4, 0x90, 0x44, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x82, 0x12, 0x0e, 0x98, 0x6f, 0x81, 0xaf, -0x7f, 0x90, 0xf0, 0xf6, 0xef, 0xa3, 0x80, 0xf0, 0x90, 0x4b, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x83, -0x90, 0x0d, 0x80, 0x7d, 0xa3, 0xf0, 0x12, 0xf0, 0x98, 0x6f, 0x00, 0xd2, 0x36, 0x80, 0x7f, 0x90, -0xe0, 0xfb, 0x84, 0x64, 0x0f, 0x70, 0x7d, 0x90, 0xf0, 0x80, 0x74, 0xa3, 0xf0, 0xff, 0x6f, 0x12, -0xc2, 0x97, 0x80, 0x00, 0x74, 0x1f, 0x12, 0xff, 0x98, 0x6f, 0x18, 0x80, 0x7c, 0x90, 0x12, 0x91, -0xe7, 0x25, 0x4a, 0xe9, 0x05, 0x60, 0x26, 0x12, 0x80, 0x1f, 0x90, 0x09, 0xf8, 0x7f, 0xff, 0x74, -0xa3, 0xf0, 0xf0, 0x14, 0x90, 0xe4, 0xfa, 0x7f, 0xa3, 0xf0, 0x12, 0xf0, 0xa6, 0x19, 0x1c, 0x02, -0x7f, 0x87, 0x7e, 0x2e, 0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xb8, 0xa3, 0xf0, 0xf0, 0xef, -0x2f, 0x7f, 0x55, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xba, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, -0x7e, 0x31, 0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xaa, 0xa3, 0xf0, 0xf0, 0xef, 0x32, 0x7f, -0x55, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xac, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x33, -0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xae, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xb8, -0xa3, 0xfe, 0xff, 0xe0, 0x30, 0xee, 0x06, 0xe1, 0x7a, 0x90, 0x12, 0xb8, 0xb9, 0x51, 0x7a, 0x90, -0xe0, 0xba, 0xa3, 0xfe, 0xff, 0xe0, 0x30, 0xee, 0x06, 0xe1, 0x7a, 0x90, 0x12, 0xba, 0xb9, 0x51, -0x51, 0x12, 0xee, 0x9c, 0xe1, 0x30, 0x44, 0x09, 0x90, 0xfe, 0xac, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, -0x7a, 0x90, 0xe0, 0xae, 0x13, 0xc3, 0xa3, 0xf0, 0x13, 0xe0, 0x90, 0xf0, 0xb8, 0x7a, 0xfe, 0xe0, -0xe0, 0xa3, 0x7a, 0x90, 0x12, 0xf7, 0xb2, 0x51, 0x7a, 0x90, 0xe0, 0xfd, 0x54, 0x04, 0xf0, 0x0f, -0x03, 0x60, 0x20, 0x02, 0x90, 0x03, 0xf7, 0x7a, 0x51, 0x12, 0x90, 0xc0, 0xfc, 0x7a, 0x90, 0xe0, -0xfb, 0x7a, 0x51, 0x12, 0x50, 0x57, 0x90, 0x0d, 0xfb, 0x7a, 0x51, 0x12, 0x90, 0x87, 0xfb, 0x7a, -0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xfb, 0xa3, 0xfe, 0x78, 0xe0, 0x12, 0x02, 0xa5, 0x51, -0xfb, 0xd8, 0x7f, 0x90, 0x12, 0x9c, 0x71, 0x51, 0x7a, 0x90, 0xe0, 0xf9, 0xa3, 0xff, 0x90, 0xe0, -0xfb, 0x7a, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xf9, 0x7a, 0xf0, 0xec, 0xed, 0xa3, 0xe4, 0xf0, -0x7a, 0x90, 0xf0, 0xf7, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x2b, 0xc3, 0xff, 0x7f, 0x90, 0xe0, 0x9d, -0x74, 0x9f, 0xf8, 0x80, 0x7f, 0x90, 0xe0, 0x9c, 0x80, 0x64, 0x90, 0x98, 0x07, 0x7b, 0x50, 0xe0, -0x04, 0x04, 0x80, 0xf0, 0x14, 0x02, 0x90, 0xf0, 0x2d, 0x7f, 0x90, 0xe0, 0x07, 0x7b, 0x51, 0x12, -0x40, 0x1b, 0x90, 0x0c, 0x2d, 0x7f, 0x25, 0xe0, 0x25, 0xe0, 0x90, 0xe0, 0x07, 0x7b, 0x90, 0xf0, -0xba, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0x12, 0x00, 0xb2, 0x51, 0x7b, 0x90, 0xe0, 0x06, -0x54, 0x04, 0xf0, 0x0f, 0x03, 0x60, 0x20, 0x02, 0x90, 0xba, 0x00, 0x7b, 0x51, 0x12, 0x90, 0xc0, -0x05, 0x7b, 0x90, 0xe0, 0x04, 0x7b, 0x51, 0x12, 0x50, 0x57, 0x90, 0x0d, 0x04, 0x7b, 0x51, 0x12, -0x90, 0x87, 0x04, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x51, 0x12, 0x94, 0x4f, 0x50, 0x82, 0x7f, 0x04, -0x80, 0x02, 0x7f, 0x02, 0x90, 0x01, 0x04, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x07, 0xa8, 0x80, 0x08, -0x12, 0x03, 0xa5, 0x51, 0xfb, 0xd8, 0x90, 0xff, 0x9a, 0x7f, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, -0x02, 0x7b, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x04, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, -0xec, 0x02, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xe4, 0x00, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x29, 0x7f, -0xff, 0xe0, 0x90, 0xc3, 0x9b, 0x7f, 0x9f, 0xe0, 0x80, 0x74, 0x90, 0xf8, 0x9a, 0x7f, 0x64, 0xe0, -0x98, 0x80, 0x7b, 0x90, 0xe0, 0x08, 0x04, 0x50, 0xf0, 0x04, 0x02, 0x80, 0xf0, 0x14, 0x7f, 0x90, -0xe0, 0x2d, 0x7b, 0x90, 0x12, 0x08, 0x1b, 0x51, 0x0c, 0x40, 0x7f, 0x90, 0xe0, 0x2d, 0xe0, 0x25, -0xe0, 0x25, 0x7b, 0x90, 0xf0, 0x08, 0x7f, 0x90, 0xe0, 0x2d, 0x90, 0xff, 0x08, 0x7b, 0x51, 0x12, -0x40, 0x20, 0xd2, 0x02, 0xee, 0x19, 0x02, 0x70, 0x19, 0xc2, 0x7f, 0x90, 0xe0, 0x2d, 0x90, 0xff, -0x07, 0x7b, 0x51, 0x12, 0x40, 0x20, 0xd2, 0x02, 0xee, 0x1c, 0x02, 0x70, 0x1c, 0xc2, 0x7f, 0x90, -0xe0, 0x27, 0x90, 0xff, 0xae, 0x7a, 0x51, 0x12, 0x9f, 0xc0, 0x94, 0xec, 0x50, 0x00, 0xe4, 0x07, -0x7a, 0x90, 0xf0, 0xd7, 0x0f, 0x80, 0x7a, 0x90, 0xe0, 0xd7, 0xf0, 0x04, 0xd3, 0xe0, 0x06, 0x94, -0x03, 0x40, 0x06, 0x74, 0x90, 0xf0, 0xd7, 0x7a, 0xc3, 0xe0, 0x06, 0x94, 0x02, 0x50, 0x01, 0x80, -0x92, 0xc3, 0x12, 0x1d, 0x9c, 0x51, 0x51, 0x12, 0x50, 0x60, 0x12, 0x06, 0x8c, 0x51, 0x80, 0xfe, -0x12, 0x03, 0x9c, 0x51, 0x7f, 0x90, 0xe0, 0x1f, 0xc3, 0xfb, 0x9b, 0xef, 0x80, 0x74, 0x6e, 0xf8, -0x50, 0x98, 0x80, 0x02, 0xc3, 0x01, 0x1b, 0x92, 0x7f, 0x90, 0xe0, 0x1d, 0xc3, 0xff, 0x7a, 0x90, -0xe0, 0xab, 0x90, 0x9f, 0xaa, 0x7a, 0x94, 0xe0, 0x50, 0x00, 0xd2, 0x0a, 0x90, 0x1a, 0xa7, 0x7a, -0x18, 0x74, 0x80, 0xf0, 0x90, 0x10, 0xa7, 0x7a, 0x70, 0xe0, 0xc2, 0x04, 0x80, 0x1a, 0x90, 0x06, -0xa7, 0x7a, 0x14, 0xe0, 0x90, 0xf0, 0x21, 0x7f, 0xff, 0xe0, 0xed, 0xc3, 0xec, 0x9f, 0x00, 0x94, -0x0d, 0x50, 0x1e, 0x30, 0xd2, 0x0a, 0x90, 0x1f, 0xa6, 0x7a, 0x18, 0x74, 0x80, 0xf0, 0x90, 0x10, -0xa6, 0x7a, 0x70, 0xe0, 0xc2, 0x04, 0x80, 0x1f, 0x90, 0x06, 0xa6, 0x7a, 0x14, 0xe0, 0x02, 0xf0, -0xd7, 0x6d, 0xf5, 0xe4, 0x90, 0x23, 0x68, 0x7d, 0x30, 0x12, 0xc3, 0xfa, 0x7d, 0x90, 0xe0, 0x43, -0x7d, 0x90, 0x12, 0x42, 0x02, 0x31, 0x03, 0x50, 0x30, 0x12, 0xd3, 0x95, 0x7d, 0x90, 0xe0, 0x41, -0x7d, 0x90, 0x12, 0x40, 0x02, 0x31, 0x03, 0x40, 0x30, 0x12, 0x90, 0x95, 0x6a, 0x7d, 0x31, 0x12, -0xc3, 0x0e, 0x13, 0x95, 0x11, 0xf5, 0x1a, 0xe5, 0x12, 0x95, 0x10, 0xf5, 0x64, 0xc3, 0x94, 0x80, -0x50, 0x80, 0x12, 0x0a, 0x83, 0x31, 0x10, 0x50, 0x10, 0x75, 0x80, 0xe0, 0x12, 0x08, 0x3a, 0x31, -0x06, 0x40, 0x10, 0x75, 0x75, 0x20, 0x00, 0x11, 0x02, 0x20, 0x02, 0x03, 0xb3, 0x22, 0x58, 0x30, -0x02, 0x03, 0xb3, 0x22, 0x7d, 0x90, 0xe0, 0x3a, 0x0f, 0x54, 0x19, 0xf5, 0x09, 0x70, 0x7d, 0x90, -0x12, 0x70, 0xfa, 0x30, 0x22, 0x02, 0x74, 0x79, 0x25, 0x08, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, -0x00, 0x94, 0x05, 0x40, 0x30, 0x12, 0x80, 0x59, 0x12, 0xf4, 0xab, 0x31, 0xe4, 0x30, 0x12, 0x06, -0x07, 0x30, 0x31, 0x12, 0x90, 0xcb, 0x3d, 0x7d, 0x30, 0xe0, 0x06, 0xe5, 0x2f, 0x12, 0x12, 0xf9, -0x91, 0x31, 0xf5, 0xe4, 0x90, 0x23, 0x73, 0x7d, 0x30, 0x12, 0x20, 0x14, 0x0f, 0x18, 0x7d, 0x90, -0xe0, 0x71, 0x13, 0x25, 0x13, 0xf5, 0x7d, 0x90, 0xe0, 0x70, 0x30, 0x12, 0x30, 0x22, 0x09, 0x18, -0x12, 0x75, 0x75, 0x7f, 0xff, 0x13, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, -0x07, 0x50, 0xf5, 0xe4, 0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x73, 0x7d, 0x18, 0xe5, 0x90, 0xf0, -0x70, 0x7d, 0x30, 0x12, 0x90, 0x95, 0x74, 0x7d, 0x31, 0x12, 0xc3, 0x0e, 0x13, 0xe5, 0x1b, 0x95, -0x11, 0xf5, 0x12, 0xe5, 0x1a, 0x95, 0x10, 0xf5, 0x12, 0x85, 0x85, 0x14, 0x15, 0x13, 0x64, 0xc3, -0x94, 0x80, 0x50, 0x80, 0x12, 0x0a, 0x83, 0x31, 0x10, 0x50, 0x10, 0x75, 0x80, 0xe0, 0x12, 0x08, -0x3a, 0x31, 0x06, 0x40, 0x10, 0x75, 0x75, 0x20, 0x00, 0x11, 0xf5, 0xe4, 0x80, 0x23, 0x20, 0x14, -0x05, 0x02, 0x7d, 0x90, 0x80, 0x78, 0x90, 0x03, 0x74, 0x7d, 0x31, 0x12, 0x90, 0x5c, 0x70, 0x7d, -0x30, 0x12, 0xc3, 0xae, 0x7d, 0x90, 0xe0, 0x87, 0x15, 0x95, 0x7d, 0x90, 0xe0, 0x86, 0x14, 0x95, -0x03, 0x50, 0x30, 0x12, 0xd3, 0xae, 0x7d, 0x90, 0xe0, 0x85, 0x15, 0x95, 0x7d, 0x90, 0xe0, 0x84, -0x14, 0x95, 0x03, 0x40, 0x30, 0x12, 0xc0, 0xae, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, -0x15, 0x25, 0x15, 0xf5, 0x08, 0x74, 0x14, 0x35, 0x14, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x40, 0x30, -0x90, 0xfd, 0xa0, 0x7d, 0x18, 0x30, 0x12, 0x05, 0x16, 0x31, 0x03, 0x80, 0x30, 0x12, 0x90, 0xae, -0x3a, 0x7d, 0xa3, 0xe0, 0xe5, 0x30, 0x12, 0x03, 0xb6, 0x30, 0x7d, 0x7e, 0xa0, 0x7f, 0x28, 0x7d, -0x67, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x3b, 0x7d, 0xff, 0xe0, -0xc4, 0xe4, 0x54, 0xf8, 0xc8, 0xf0, 0xc4, 0xef, 0x0f, 0x54, 0x54, 0x48, 0xf5, 0x0f, 0x70, 0x19, -0x90, 0x09, 0x7a, 0x7d, 0x30, 0x12, 0x02, 0xfa, 0xd5, 0x23, 0x07, 0x74, 0x19, 0x25, 0x19, 0xf5, -0x19, 0xe5, 0x94, 0xd3, 0x40, 0x00, 0x12, 0x05, 0x59, 0x30, 0xf4, 0x80, 0x31, 0x12, 0x30, 0xab, -0x06, 0xe2, 0x30, 0x12, 0x12, 0x07, 0xcb, 0x31, 0x7d, 0x90, 0xe0, 0x3d, 0xe3, 0x30, 0x12, 0x06, -0xf9, 0x2f, 0x31, 0x12, 0xe4, 0x91, 0x23, 0xf5, 0x19, 0xc2, 0x7d, 0x90, 0x12, 0x7d, 0x14, 0x30, -0x18, 0x20, 0x90, 0x0f, 0x7b, 0x7d, 0x25, 0xe0, 0xf5, 0x13, 0x90, 0x13, 0x7a, 0x7d, 0x12, 0xe0, -0x22, 0x30, 0x18, 0x20, 0x90, 0x17, 0x2c, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0x13, 0xe5, -0xee, 0x9f, 0x80, 0x64, 0xe5, 0xf8, 0x64, 0x12, 0x98, 0x80, 0x09, 0x40, 0x7d, 0x90, 0x12, 0x2c, -0xfa, 0x30, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x07, 0x50, 0xf5, 0xe4, -0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x7d, 0x7d, 0x18, 0xe5, 0x90, 0xf0, 0x7a, 0x7d, 0x30, 0x12, -0xc3, 0x95, 0x7d, 0x90, 0xe0, 0x95, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x94, 0x12, 0x95, 0x03, 0x50, -0x30, 0x12, 0xd3, 0x95, 0x7d, 0x90, 0xe0, 0x93, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x92, 0x12, 0x95, -0x03, 0x40, 0x30, 0x12, 0xc0, 0x95, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x13, 0x25, -0x13, 0xf5, 0x08, 0x74, 0x30, 0x12, 0x20, 0x22, 0x0f, 0x18, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, -0x25, 0xe0, 0xf5, 0x13, 0xee, 0x13, 0x30, 0x12, 0x30, 0x22, 0xfd, 0x40, 0x7d, 0x90, 0x30, 0xa0, -0x05, 0x18, 0x31, 0x12, 0x80, 0x16, 0x12, 0x03, 0x95, 0x30, 0x7d, 0x90, 0xe0, 0x3a, 0x30, 0xa3, -0x03, 0xe6, 0x30, 0x12, 0x7e, 0xb6, 0x7f, 0x7d, 0x7d, 0xa0, 0x7c, 0x29, 0x12, 0x67, 0x15, 0x72, -0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x18, 0xc2, 0xbb, 0x22, 0x0c, 0x01, 0x82, 0xe5, 0xf5, 0x29, -0xe5, 0x82, 0x3a, 0x83, 0x83, 0xf5, 0x22, 0xe0, 0x06, 0x50, 0x25, 0xe9, 0xf8, 0x82, 0x22, 0xe6, -0xfe, 0xbb, 0xe9, 0x06, 0x82, 0x25, 0xe2, 0xf8, 0xe5, 0x22, 0x29, 0x82, 0x82, 0xf5, 0x83, 0xe5, -0xf5, 0x3a, 0xe4, 0x83, 0x22, 0x93, 0x8d, 0xef, 0xa4, 0xf0, 0xf0, 0xa8, 0x8c, 0xcf, 0xa4, 0xf0, -0xce, 0x28, 0xf0, 0x8d, 0x2e, 0xa4, 0x22, 0xfe, 0xf0, 0xc5, 0xa3, 0xf8, 0x28, 0xe0, 0xc5, 0xf0, -0xf8, 0xf0, 0x82, 0xe5, 0x82, 0x15, 0x02, 0x70, 0x83, 0x15, 0x38, 0xe0, 0x22, 0xf0, 0xf8, 0xa3, -0xc5, 0xe0, 0x25, 0xf0, 0xf0, 0xf0, 0x82, 0xe5, 0x82, 0x15, 0x02, 0x70, 0x83, 0x15, 0xc8, 0xe0, -0xf0, 0x38, 0x22, 0xe8, 0x2b, 0xef, 0xee, 0xff, 0xfe, 0x3a, 0x39, 0xed, 0xec, 0xfd, 0xfc, 0x38, -0xc3, 0x22, 0x9b, 0xef, 0xee, 0xff, 0xfe, 0x9a, 0x99, 0xed, 0xec, 0xfd, 0xfc, 0x98, 0xe8, 0x22, -0xf0, 0x8f, 0xcc, 0xa4, 0xf0, 0x8b, 0x2c, 0xa4, 0xe9, 0xfc, 0xf0, 0x8e, 0x2c, 0xa4, 0x8a, 0xfc, -0xed, 0xf0, 0x2c, 0xa4, 0xea, 0xfc, 0xf0, 0x8e, 0xcd, 0xa4, 0xf0, 0xa8, 0xf0, 0x8b, 0x2d, 0xa4, -0x38, 0xcc, 0xf0, 0x25, 0xe9, 0xfd, 0xf0, 0x8f, 0x2c, 0xa4, 0x35, 0xcd, 0xfc, 0xf0, 0x8e, 0xeb, -0xa4, 0xf0, 0xa9, 0xfe, 0xeb, 0xf0, 0xf0, 0x8f, 0xcf, 0xa4, 0xf0, 0xc5, 0xcd, 0x2e, 0xfe, 0x39, -0x3c, 0xe4, 0xea, 0xfc, 0x2d, 0xa4, 0x35, 0xce, 0xfd, 0xf0, 0x3c, 0xe4, 0x22, 0xfc, 0x9f, 0xeb, -0xf0, 0xf5, 0x9e, 0xea, 0xf0, 0x42, 0x9d, 0xe9, 0xf0, 0x42, 0x64, 0xec, 0xc8, 0x80, 0x80, 0x64, -0x45, 0x98, 0x22, 0xf0, 0x60, 0xe8, 0xec, 0x0f, 0x13, 0xc3, 0xed, 0xfc, 0xfd, 0x13, 0x13, 0xee, -0xef, 0xfe, 0xff, 0x13, 0xf1, 0xd8, 0xe8, 0x22, 0x10, 0x60, 0xa2, 0xec, 0x13, 0xe7, 0xed, 0xfc, -0xfd, 0x13, 0x13, 0xee, 0xef, 0xfe, 0xff, 0x13, 0xf0, 0xd8, 0xe8, 0x22, 0x0f, 0x60, 0xc3, 0xef, -0xff, 0x33, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xd8, 0xfc, 0x22, 0xf1, 0xfc, 0xe0, -0xe0, 0xa3, 0xa3, 0xfd, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x93, 0xe4, 0x74, 0xfc, 0x93, 0x01, -0x74, 0xfd, 0x93, 0x02, 0x74, 0xfe, 0x93, 0x03, 0x22, 0xff, 0xf8, 0xe0, 0xe0, 0xa3, 0xa3, 0xf9, -0xfa, 0xe0, 0xe0, 0xa3, 0x22, 0xfb, 0x93, 0xe4, 0x74, 0xf8, 0x93, 0x01, 0x74, 0xf9, 0x93, 0x02, -0x74, 0xfa, 0x93, 0x03, 0x22, 0xfb, 0xf0, 0xec, 0xed, 0xa3, 0xa3, 0xf0, 0xf0, 0xee, 0xef, 0xa3, -0x22, 0xf0, 0x82, 0xa8, 0x83, 0x85, 0xd0, 0xf0, 0xd0, 0x83, 0x12, 0x82, 0xcd, 0x25, 0x25, 0x12, -0x12, 0xcd, 0xcd, 0x25, 0x25, 0x12, 0xe4, 0xcd, 0xe4, 0x73, 0xa3, 0x93, 0x83, 0xc5, 0xf0, 0xc5, -0x83, 0xc5, 0xc5, 0xc8, 0xc8, 0x82, 0xa3, 0xf0, 0x83, 0xc5, 0xf0, 0xc5, 0x83, 0xc5, 0xc5, 0xc8, -0xc8, 0x82, 0xe0, 0x22, 0xa3, 0xfb, 0xfa, 0xe0, 0xe0, 0xa3, 0x22, 0xf9, 0xf0, 0xeb, 0xea, 0xa3, -0xa3, 0xf0, 0xf0, 0xe9, 0xd0, 0x22, 0xd0, 0x83, 0xf8, 0x82, 0x93, 0xe4, 0x12, 0x70, 0x01, 0x74, -0x70, 0x93, 0xa3, 0x0d, 0x93, 0xa3, 0x74, 0xf8, 0x93, 0x01, 0x82, 0xf5, 0x83, 0x88, 0x73, 0xe4, -0x02, 0x74, 0x68, 0x93, 0xef, 0x60, 0xa3, 0xa3, 0x80, 0xa3, 0x8a, 0xdf, 0x89, 0x83, 0xe4, 0x82, -0x75, 0x73, 0x08, 0xf0, 0x82, 0x75, 0xef, 0x00, 0xff, 0x2f, 0x33, 0xee, 0xcd, 0xfe, 0xcd, 0x33, -0x33, 0xcc, 0xc5, 0xcc, 0x33, 0x82, 0x82, 0xc5, 0xed, 0x9b, 0xec, 0x9a, 0xe5, 0x99, 0x98, 0x82, -0x0c, 0x40, 0x82, 0xf5, 0x9b, 0xee, 0xed, 0xfe, 0xfd, 0x9a, 0x99, 0xec, 0x0f, 0xfc, 0xf0, 0xd5, -0xe4, 0xd6, 0xfb, 0xce, 0xcd, 0xe4, 0xe4, 0xfa, 0xf9, 0xcc, 0x82, 0xa8, 0xb8, 0x22, 0xc1, 0x00, -0x00, 0xb9, 0xba, 0x59, 0x2d, 0x00, 0x8b, 0xec, 0x84, 0xf0, 0xce, 0xcf, 0xfc, 0xcd, 0xf0, 0xe5, -0xf9, 0xcb, 0x18, 0x78, 0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, 0xec, 0xfd, 0xfc, 0x33, -0x33, 0xeb, 0x10, 0xfb, 0x03, 0xd7, 0x40, 0x99, 0xeb, 0x04, 0xfb, 0x99, 0xd8, 0x0f, 0xe4, 0xe5, -0xfa, 0xf9, 0x78, 0x22, 0xef, 0x18, 0xff, 0x2f, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, -0xc9, 0xfc, 0xc9, 0x33, 0xd7, 0x10, 0x9b, 0x05, 0x9a, 0xe9, 0x07, 0x40, 0x9b, 0xec, 0xe9, 0xfc, -0xf9, 0x9a, 0xd8, 0x0f, 0xe4, 0xe0, 0xfa, 0xc9, 0xcc, 0xe4, 0x22, 0xfb, 0xf0, 0x75, 0xef, 0x10, -0xff, 0x2f, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xcc, 0xc8, 0xcc, 0xc8, 0x33, 0xd7, 0x10, -0x9b, 0x07, 0x9a, 0xec, 0x99, 0xe8, 0x0a, 0x40, 0x9b, 0xed, 0xec, 0xfd, 0xfc, 0x9a, 0x99, 0xe8, -0x0f, 0xf8, 0xf0, 0xd5, 0xe4, 0xda, 0xfb, 0xcd, 0xcc, 0xe4, 0xe4, 0xfa, 0xf9, 0xc8, 0x7f, 0x22, -0x7e, 0x12, 0x12, 0x85, 0xf0, 0x6e, 0x16, 0x12, 0x90, 0x69, 0x5a, 0x7e, 0x12, 0xee, 0xba, 0x16, -0x0d, 0x50, 0x16, 0x12, 0x12, 0xc5, 0xfb, 0x17, 0x7b, 0x90, 0xf0, 0xbc, 0xef, 0xa3, 0x12, 0xf0, -0xc5, 0x16, 0x7a, 0xff, 0x79, 0x7e, 0x7c, 0x5c, 0x7d, 0x7e, 0x12, 0x5c, 0xa1, 0x56, 0x44, 0xc2, -0x7e, 0x90, 0xe0, 0x67, 0x90, 0xff, 0x08, 0x7e, 0xe0, 0xa3, 0x60, 0x5f, 0x02, 0x03, 0xb2, 0x28, -0x17, 0x12, 0x78, 0x57, 0x12, 0x04, 0x72, 0x16, 0xfb, 0xd8, 0x16, 0x12, 0xfe, 0x60, 0x7b, 0x90, -0xe0, 0xb3, 0x06, 0xb5, 0xa3, 0x17, 0xb5, 0xe0, 0x12, 0x07, 0x29, 0x12, 0x24, 0x78, 0xff, 0xce, -0x34, 0xee, 0x90, 0xff, 0xbf, 0x7b, 0xa3, 0xf0, 0x02, 0xef, 0x7d, 0x28, 0x17, 0x12, 0x78, 0x57, -0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x16, 0x12, 0x12, 0x60, 0xe2, 0x17, 0x07, 0xb5, 0xec, 0x10, -0x06, 0xb5, 0x90, 0x0c, 0xb6, 0x7b, 0x24, 0xe0, 0x12, 0x4b, 0xf3, 0x16, 0x28, 0x02, 0x12, 0x7d, -0x57, 0x17, 0x02, 0x78, 0x16, 0x12, 0xd8, 0x72, 0x12, 0xfb, 0x60, 0x16, 0xed, 0xfe, 0x07, 0xb5, -0xec, 0x17, 0x06, 0xb5, 0x90, 0x13, 0xb6, 0x7b, 0x24, 0xe0, 0xfe, 0x74, 0x7b, 0x90, 0xe0, 0xb5, -0xff, 0x34, 0x16, 0x12, 0x02, 0xfa, 0x7d, 0x28, 0x17, 0x12, 0x78, 0x57, 0x12, 0x03, 0x72, 0x16, -0xfb, 0xd8, 0x17, 0x12, 0xc3, 0xaa, 0xff, 0x9d, 0x9c, 0xee, 0x12, 0xfe, 0x61, 0x16, 0x17, 0x12, -0xb5, 0xe2, 0x10, 0x07, 0xb5, 0xec, 0x0c, 0x06, 0x7b, 0x90, 0xe0, 0xb6, 0x96, 0x24, 0x16, 0x12, -0x02, 0xf3, 0x7d, 0x28, 0x17, 0x12, 0x12, 0xad, 0x60, 0x16, 0xed, 0xfe, 0x07, 0xb5, 0xec, 0x17, -0x06, 0xb5, 0x90, 0x13, 0xb6, 0x7b, 0x24, 0xe0, 0xfe, 0x1f, 0x7b, 0x90, 0xe0, 0xb5, 0xff, 0x34, -0x16, 0x12, 0x02, 0xfa, 0x7d, 0x28, 0x17, 0x12, 0x78, 0x57, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, -0x17, 0x12, 0x2d, 0xaa, 0xee, 0xff, 0xfe, 0x3c, 0x16, 0x12, 0x12, 0x61, 0xe2, 0x17, 0x07, 0xb5, -0xec, 0x10, 0x06, 0xb5, 0x90, 0x0c, 0xb6, 0x7b, 0x24, 0xe0, 0x12, 0xe1, 0xf3, 0x16, 0x28, 0x02, -0x12, 0x7d, 0x57, 0x17, 0x02, 0x78, 0x16, 0x12, 0xd8, 0x72, 0x12, 0xfb, 0x03, 0x18, 0x16, 0x12, -0xfe, 0x61, 0xb5, 0xed, 0x16, 0x07, 0xb5, 0xec, 0x12, 0x06, 0x7b, 0x90, 0xe0, 0xb6, 0xd4, 0x24, -0x90, 0xfe, 0xb5, 0x7b, 0x34, 0xe0, 0x12, 0xfe, 0xfa, 0x16, 0x2d, 0x80, 0x17, 0x12, 0x78, 0x57, -0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x18, 0x12, 0x12, 0x03, 0x61, 0x16, 0x90, 0xfe, 0xb3, 0x7b, -0xb5, 0xe0, 0x18, 0x06, 0xe0, 0xa3, 0x07, 0xb5, 0x90, 0x13, 0xb6, 0x7b, 0x24, 0xe0, 0xfe, 0x2c, -0x7b, 0x90, 0xe0, 0xb5, 0x01, 0x34, 0x16, 0x12, 0xf0, 0xfa, 0x44, 0xd2, 0x7e, 0x90, 0x12, 0x64, -0x5c, 0x16, 0xd3, 0xfe, 0x7b, 0x90, 0xe0, 0xb4, 0x90, 0x9f, 0xb3, 0x7b, 0x9e, 0xe0, 0x05, 0x40, -0x90, 0xe4, 0x07, 0x7e, 0x30, 0xf0, 0x13, 0x44, 0x18, 0x12, 0x12, 0xbf, 0x57, 0x6f, 0x53, 0x12, -0x7d, 0xe3, 0x7c, 0x11, 0xe4, 0x85, 0xfe, 0xff, 0x6f, 0x12, 0x02, 0x57, 0x11, 0x29, 0x13, 0x7f, -0x85, 0x7e, 0x6e, 0x12, 0x12, 0xf0, 0xa1, 0x17, 0x7b, 0x90, 0xe0, 0xb3, 0x04, 0x70, 0xe0, 0xa3, -0x08, 0x64, 0x3c, 0x70, 0x17, 0x12, 0x94, 0x6c, 0x40, 0x83, 0x12, 0x0d, 0x78, 0x29, 0x01, 0x24, -0xe4, 0xff, 0x12, 0x3e, 0xeb, 0x16, 0x44, 0xd2, 0x90, 0xc3, 0xc2, 0x7b, 0x94, 0xe0, 0x12, 0x01, -0x73, 0x17, 0x7c, 0x94, 0x1a, 0x50, 0x1c, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xb5, 0x7b, -0xf0, 0xee, 0xef, 0xa3, 0x24, 0xf0, 0xff, 0xff, 0x34, 0xee, 0x12, 0xff, 0xeb, 0x16, 0x44, 0xd2, -0x7b, 0x90, 0xe0, 0xb4, 0x07, 0x54, 0x05, 0x60, 0x18, 0x12, 0x80, 0xfc, 0x90, 0x0a, 0xb3, 0x7b, -0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x30, 0x8c, 0x59, 0x44, 0x7b, 0x90, 0xe0, 0x62, 0xa3, 0xfe, -0x12, 0xe0, 0x21, 0x18, 0xef, 0xfe, 0x05, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0x90, 0xf9, -0x46, 0x7e, 0x18, 0x12, 0x12, 0x6a, 0x8f, 0x16, 0x05, 0x40, 0x18, 0x12, 0x80, 0xb3, 0x12, 0x10, -0x59, 0x16, 0xc3, 0xfe, 0x16, 0x12, 0x50, 0x98, 0x12, 0x0a, 0x59, 0x16, 0x7e, 0x90, 0xf0, 0x46, -0xef, 0xa3, 0xc0, 0xf0, 0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, 0x12, 0xfd, 0x34, 0x19, 0x16, 0x12, -0xd8, 0x72, 0x12, 0xfb, 0xcd, 0x16, 0x1c, 0x7d, 0x82, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, -0xd0, 0xaf, 0x22, 0xd0, 0x1c, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xb5, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0x22, 0xf0, 0x90, 0xe4, 0xc5, 0x7a, 0x90, 0xf0, 0xc8, 0x7a, 0x90, 0xf0, 0xca, 0x7a, -0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x17, 0x40, 0x7a, 0x90, 0x74, 0xc5, -0xf0, 0x01, 0x90, 0xe4, 0xc6, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, 0xf0, -0xd2, 0x7a, 0x90, 0xf0, 0x95, 0x7f, 0x12, 0xe0, 0xf9, 0x25, 0xec, 0x29, 0x29, 0x00, 0x01, 0xec, -0x19, 0x2a, 0x2a, 0x02, 0x03, 0x38, 0x59, 0x2a, 0x2a, 0x04, 0x05, 0x82, 0x9f, 0x2a, 0x2a, 0x06, -0x07, 0xbc, 0xda, 0x2a, 0x2a, 0x08, 0x09, 0xef, 0x07, 0x2b, 0x29, 0x0a, 0xfc, 0xec, 0xec, 0x29, -0x29, 0xfd, 0xff, 0xec, 0x00, 0x00, 0x31, 0x2b, 0x7a, 0x90, 0x74, 0xc5, 0x12, 0x02, 0x67, 0x63, -0x0c, 0x74, 0x63, 0x12, 0xf0, 0x82, 0x7a, 0x90, 0x04, 0xd0, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, -0x90, 0xf0, 0xcb, 0x7a, 0x01, 0x74, 0xe4, 0xf0, 0x63, 0x12, 0xf0, 0x7a, 0x7a, 0x90, 0xf0, 0xc3, -0xf0, 0xa3, 0x2b, 0x02, 0x90, 0x31, 0xc5, 0x7a, 0x02, 0x74, 0x63, 0x12, 0x90, 0x67, 0xcd, 0x7a, -0x0c, 0x74, 0x12, 0xf0, 0x85, 0x63, 0x90, 0xf0, 0xd0, 0x7a, 0x12, 0x04, 0x6e, 0x63, 0x90, 0xf0, -0xc3, 0x7a, 0x42, 0x80, 0x7a, 0x90, 0x74, 0xc5, 0x12, 0x02, 0x67, 0x63, 0x0a, 0x74, 0x63, 0x12, -0x04, 0x82, 0x90, 0xf0, 0xd0, 0x7a, 0x74, 0xf0, 0x12, 0x50, 0x71, 0x63, 0x02, 0x74, 0x90, 0xf0, -0xc3, 0x7a, 0x80, 0xe4, 0x90, 0x21, 0xc5, 0x7a, 0x01, 0x74, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0xf0, -0xcd, 0x7a, 0x09, 0x74, 0x63, 0x12, 0x04, 0x85, 0x90, 0xf0, 0xd0, 0x7a, 0x63, 0x12, 0x74, 0x6e, -0xf0, 0x02, 0x7a, 0x90, 0xe4, 0xc3, 0xa3, 0xf0, 0x96, 0x74, 0x02, 0xf0, 0x31, 0x2b, 0x7a, 0x90, -0x74, 0xcd, 0xf0, 0x0a, 0x7a, 0x90, 0x74, 0xc7, 0xf0, 0x01, 0x7a, 0x90, 0x12, 0xc2, 0x90, 0x63, -0x1e, 0x74, 0x63, 0x12, 0x74, 0x57, 0xf0, 0x5a, 0x2b, 0x02, 0x74, 0x31, 0x12, 0x0a, 0x64, 0x63, -0x7a, 0x90, 0x04, 0xc2, 0x74, 0xf0, 0x12, 0x03, 0x92, 0x63, 0x7a, 0x90, 0x74, 0xd3, 0x12, 0x28, -0x5a, 0x63, 0x49, 0x74, 0x02, 0xf0, 0x31, 0x2b, 0x7a, 0x90, 0x74, 0xcd, 0x12, 0x0a, 0x67, 0x63, -0x7a, 0x90, 0x74, 0xc2, 0x12, 0x02, 0x90, 0x63, 0x7a, 0x90, 0x74, 0xd3, 0x12, 0x28, 0x5a, 0x63, -0x44, 0x74, 0x02, 0xf0, 0x31, 0x2b, 0x63, 0x12, 0x90, 0x62, 0xc2, 0x7a, 0x03, 0x74, 0x90, 0xf0, -0xd0, 0x7a, 0x63, 0x12, 0x74, 0x4f, 0xf0, 0x41, 0x2b, 0x02, 0x12, 0x31, 0x62, 0x63, 0x7a, 0x90, -0x74, 0xc2, 0xf0, 0x04, 0x7a, 0x90, 0x14, 0xd0, 0x74, 0xf0, 0x12, 0x05, 0x51, 0x63, 0x3a, 0x74, -0x80, 0xf0, 0x12, 0x2a, 0x62, 0x63, 0x7a, 0x90, 0x74, 0xd0, 0xf0, 0x03, 0x12, 0x04, 0x4c, 0x63, -0x3a, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0xd3, 0xe0, 0x05, 0x94, 0x08, 0x50, 0x05, 0x74, 0x63, 0x12, -0x74, 0x4c, 0xf0, 0x32, 0x46, 0x30, 0x12, 0x06, 0x5b, 0x63, 0x1e, 0x74, 0x90, 0xf0, 0xd3, 0x7a, -0x75, 0xe0, 0x40, 0xf0, 0xfd, 0xa4, 0x7a, 0x90, 0xe0, 0xd2, 0x33, 0xc4, 0xe0, 0x54, 0xe4, 0xfe, -0xfd, 0x2d, 0x35, 0xee, 0xfc, 0xf0, 0x7a, 0x90, 0xe0, 0xd1, 0xf0, 0x75, 0xa4, 0x04, 0xff, 0x2d, -0x35, 0xec, 0xfe, 0xf0, 0x7a, 0x90, 0xe0, 0xd0, 0x00, 0x7c, 0xff, 0x2f, 0x3e, 0xec, 0x7a, 0x90, -0xf0, 0xce, 0xef, 0xa3, 0x90, 0xf0, 0x67, 0x7f, 0x30, 0xe0, 0x37, 0xe3, 0x58, 0x12, 0x90, 0x27, -0xcd, 0x7a, 0x11, 0x7d, 0x2b, 0x12, 0x90, 0xa8, 0xce, 0x7a, 0x12, 0x7d, 0x63, 0x12, 0x12, 0x9b, -0x57, 0x6f, 0x7a, 0x90, 0x7d, 0xc2, 0x12, 0x13, 0xa8, 0x2b, 0x7a, 0x90, 0x7d, 0xc3, 0x12, 0x14, -0x9b, 0x63, 0x6f, 0x12, 0x90, 0x57, 0x81, 0x7a, 0xff, 0xe0, 0x00, 0x7e, 0x15, 0x7d, 0x53, 0x7c, -0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x53, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0x7e, 0x90, -0xe0, 0x07, 0x32, 0xf5, 0x7e, 0x90, 0xe0, 0x08, 0xe0, 0xa3, 0x29, 0xf5, 0x7e, 0x90, 0xe0, 0x08, -0x2a, 0xf5, 0x32, 0xe5, 0xfd, 0x24, 0x2f, 0x60, 0x60, 0x14, 0x24, 0x5a, 0x70, 0xfc, 0x02, 0x03, -0x03, 0x2d, 0xd8, 0x24, 0x03, 0x70, 0x2d, 0x02, 0x24, 0x22, 0x70, 0xf0, 0x02, 0x03, 0x5b, 0x2d, -0x40, 0x24, 0x03, 0x60, 0x2d, 0x02, 0x12, 0x8e, 0x74, 0x49, 0x11, 0x7d, 0x0d, 0x7f, 0x2d, 0x12, -0x75, 0xb6, 0x03, 0x32, 0x2d, 0x02, 0x30, 0x8e, 0x1f, 0x48, 0x49, 0x30, 0x12, 0x1c, 0xbf, 0x18, -0x2d, 0x12, 0x7d, 0x95, 0x12, 0x16, 0xc6, 0x2d, 0x17, 0x7d, 0x2d, 0x12, 0x12, 0xc6, 0xe3, 0x53, -0x7e, 0x90, 0x74, 0x4b, 0xf0, 0x05, 0x32, 0x75, 0x20, 0x04, 0x06, 0x50, 0x51, 0x20, 0x02, 0x03, -0x8e, 0x2d, 0x2d, 0x02, 0x20, 0x1d, 0x06, 0x48, 0x49, 0x20, 0x02, 0x03, 0xe2, 0x2c, 0x4a, 0x20, -0x90, 0x0f, 0xb3, 0x7b, 0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x60, 0x01, 0x02, 0x03, 0xe5, 0x2c, -0x90, 0xe4, 0x4b, 0x7e, 0x7d, 0xf0, 0xfe, 0x12, 0x2d, 0x12, 0x7d, 0xbe, 0x7c, 0x13, 0x7f, 0x83, -0x7e, 0x08, 0x12, 0x00, 0x57, 0x6f, 0x11, 0x7d, 0x2d, 0x12, 0x7d, 0xa3, 0x12, 0x2d, 0xa3, 0x2d, -0x08, 0x7f, 0x18, 0x12, 0x12, 0x71, 0x57, 0x6f, 0x2c, 0x7d, 0x00, 0x7e, 0x2d, 0x12, 0x7d, 0xbe, -0x12, 0x2b, 0xad, 0x2d, 0x3c, 0x7d, 0x2d, 0x12, 0x7d, 0xad, 0x7c, 0x3d, 0xe4, 0x83, 0xfe, 0xff, -0x6f, 0x12, 0x90, 0x57, 0xb3, 0x7b, 0x70, 0xe0, 0xa3, 0x02, 0x60, 0xe0, 0x90, 0x17, 0x05, 0x7e, -0x30, 0xe0, 0x10, 0xe0, 0x7b, 0x90, 0xe0, 0xba, 0xa3, 0xfe, 0x90, 0xe0, 0x62, 0x7b, 0x19, 0x12, -0x12, 0x04, 0x57, 0x6f, 0x18, 0x12, 0x7d, 0xfc, 0x7c, 0x11, 0xff, 0x85, 0x12, 0xfe, 0x95, 0x2d, -0x16, 0x7d, 0x05, 0x7f, 0x2d, 0x12, 0x7d, 0xb6, 0x7c, 0x17, 0x7f, 0x85, 0x7e, 0x07, 0x12, 0x00, -0x57, 0x6f, 0x18, 0x7d, 0x85, 0x7c, 0x04, 0x7f, 0x08, 0x7e, 0x6f, 0x12, 0x12, 0x57, 0x78, 0x18, -0x6f, 0x12, 0x90, 0x57, 0xb7, 0x7b, 0x04, 0xe0, 0x75, 0xf0, 0x08, 0x32, 0x03, 0x80, 0xf5, 0xe4, -0x20, 0x32, 0x09, 0x51, 0x50, 0x20, 0x20, 0x06, 0x03, 0x52, 0x2d, 0x02, 0xe4, 0x8e, 0x32, 0xf5, -0x52, 0x20, 0x02, 0x03, 0x8e, 0x2d, 0x7b, 0x90, 0xe0, 0xb7, 0xf0, 0x04, 0x2d, 0x02, 0x20, 0x8e, -0x03, 0x48, 0x49, 0x30, 0x30, 0x08, 0x08, 0x4b, 0x2d, 0x12, 0x80, 0xcf, 0xe4, 0x03, 0x32, 0xf5, -0x51, 0x20, 0x20, 0x06, 0x03, 0x50, 0x53, 0x30, 0xe4, 0x71, 0x32, 0xf5, 0x6c, 0x80, 0x4b, 0x30, -0x30, 0x25, 0x0e, 0x4c, 0x7e, 0x90, 0xe0, 0x0d, 0x94, 0xd3, 0x50, 0x0a, 0xe4, 0x05, 0x32, 0xf5, -0x17, 0x80, 0x48, 0x30, 0x30, 0x14, 0x11, 0x49, 0x4b, 0x30, 0x30, 0x0e, 0x0b, 0x4c, 0x4d, 0x30, -0x75, 0x08, 0x40, 0x32, 0x03, 0x80, 0x18, 0x12, 0x20, 0xd3, 0x3b, 0x51, 0x50, 0x20, 0x20, 0x38, -0x35, 0x54, 0x55, 0x30, 0x80, 0x35, 0x30, 0x30, 0x1e, 0x4b, 0x4c, 0xa2, 0x40, 0xb3, 0xa2, 0x05, -0xb3, 0x4d, 0x03, 0x50, 0x2d, 0x12, 0x30, 0xcf, 0x11, 0x4c, 0x7e, 0x90, 0xe0, 0x0d, 0x94, 0xd3, -0x50, 0x0a, 0xe4, 0x08, 0x32, 0xf5, 0x03, 0x80, 0x18, 0x12, 0x20, 0xd3, 0x09, 0x51, 0x50, 0x20, -0x20, 0x06, 0x03, 0x54, 0x55, 0x30, 0x12, 0x03, 0xd3, 0x18, 0x7e, 0x90, 0xe5, 0x07, 0xf0, 0x32, -0x12, 0x22, 0x57, 0x6f, 0x15, 0x7d, 0x85, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, -0x7f, 0x83, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, 0x6f, 0x12, -0x22, 0x57, 0x85, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, 0x01, 0x7f, 0x6f, 0x12, -0x22, 0x57, 0x85, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x12, 0x22, 0x68, 0x64, 0x6b, 0x12, -0x75, 0x0e, 0x30, 0x32, 0xc3, 0x22, 0x7a, 0x90, 0xe0, 0x89, 0x04, 0x94, 0x7a, 0x90, 0xe0, 0x88, -0x00, 0x94, 0x03, 0x50, 0x2f, 0x02, 0x90, 0xf8, 0x95, 0x7f, 0x12, 0xe0, 0xf9, 0x25, 0x1c, 0x2e, -0x2e, 0x00, 0x01, 0x24, 0x36, 0x2e, 0x2e, 0x02, 0x03, 0x50, 0x75, 0x2e, 0x2e, 0x04, 0x05, 0xec, -0xec, 0x2e, 0x2e, 0x06, 0x07, 0xec, 0xec, 0x2e, 0x2e, 0x08, 0x09, 0xec, 0xec, 0x2e, 0x00, 0x0a, -0x2e, 0x00, 0x12, 0x17, 0x7e, 0x00, 0x14, 0x80, 0x18, 0x20, 0x02, 0x03, 0xf8, 0x2f, 0x4a, 0x80, -0x19, 0x30, 0x12, 0x03, 0xc7, 0x51, 0x18, 0x30, 0x02, 0x03, 0xf8, 0x2f, 0x90, 0xe4, 0x97, 0x7f, -0x22, 0xf0, 0x1c, 0x30, 0x30, 0x0c, 0x09, 0x1b, 0x1d, 0x30, 0x90, 0x06, 0x97, 0x7f, 0x03, 0x74, -0x30, 0xf0, 0x06, 0x19, 0x18, 0x30, 0x02, 0x03, 0xf8, 0x2f, 0x1e, 0x80, 0x1e, 0x30, 0x90, 0x06, -0x97, 0x7f, 0x04, 0x74, 0x30, 0xf0, 0x06, 0x1c, 0x1b, 0x30, 0x20, 0x03, 0x03, 0x1d, 0x51, 0x12, -0x30, 0xc7, 0x06, 0x19, 0x18, 0x30, 0x02, 0x03, 0xf8, 0x2f, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x01, -0xc3, 0x22, 0x7a, 0x90, 0xe0, 0x89, 0x20, 0x94, 0x7a, 0x90, 0xe0, 0x88, 0x00, 0x94, 0x03, 0x50, -0x2f, 0x02, 0x30, 0xf8, 0x0c, 0x1d, 0x1a, 0x30, 0x30, 0x09, 0x06, 0x11, 0x7f, 0x90, 0x74, 0x97, -0xf0, 0x07, 0x10, 0x30, 0x30, 0x0c, 0x09, 0x1a, 0x11, 0x30, 0x90, 0x06, 0x97, 0x7f, 0x08, 0x74, -0x20, 0xf0, 0x06, 0x1e, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x03, 0x1c, 0x30, 0x20, 0x03, 0x03, 0x1b, -0x51, 0x12, 0x30, 0xc7, 0x03, 0x19, 0x18, 0x20, 0x90, 0x06, 0x97, 0x7f, 0x01, 0x74, 0x90, 0xf0, -0x97, 0x7f, 0x64, 0xe0, 0x60, 0x03, 0x02, 0x03, 0xf8, 0x2f, 0x7b, 0x90, 0xe0, 0x11, 0xf0, 0x04, -0xc3, 0xe0, 0x04, 0x94, 0x03, 0x50, 0x2f, 0x02, 0x30, 0xf8, 0x06, 0x11, 0x7f, 0x90, 0x74, 0x97, -0xf0, 0x05, 0x90, 0xe4, 0x11, 0x7b, 0x22, 0xf0, 0x1f, 0x30, 0x30, 0x09, 0x06, 0x1a, 0x11, 0x30, -0x20, 0x03, 0x07, 0x19, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x04, 0x90, 0x22, 0xa0, 0x7a, 0x70, 0xe0, -0x02, 0x03, 0xf8, 0x2f, 0x7f, 0x90, 0xe0, 0x0b, 0x12, 0xff, 0x38, 0x51, 0x74, 0x9f, 0xf8, 0x80, -0x64, 0xec, 0x98, 0x80, 0x08, 0x50, 0x7f, 0x90, 0x12, 0x0d, 0xfc, 0x50, 0x09, 0x40, 0x7f, 0x90, -0x74, 0x97, 0xf0, 0x0a, 0x2f, 0x02, 0x90, 0x85, 0x0f, 0x7f, 0x51, 0x12, 0x12, 0x2c, 0x11, 0x51, -0x09, 0x40, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x09, 0x2f, 0x02, 0x90, 0x85, 0x11, 0x7f, 0x50, 0x12, -0x40, 0xfc, 0x90, 0x08, 0x97, 0x7f, 0x08, 0x74, 0x80, 0xf0, 0x90, 0x36, 0x13, 0x7f, 0x51, 0x12, -0x12, 0x2c, 0x11, 0x51, 0x08, 0x40, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x07, 0x23, 0x80, 0x7f, 0x90, -0xe0, 0x15, 0x33, 0xff, 0xe0, 0x95, 0x90, 0xfe, 0xa4, 0x7a, 0x2f, 0xe0, 0x90, 0xff, 0xa3, 0x7a, -0x12, 0xe0, 0x0d, 0x51, 0x7f, 0x90, 0x40, 0x97, 0x74, 0x05, 0xf0, 0x06, 0x03, 0x80, 0x05, 0x74, -0x30, 0xf0, 0x1d, 0x46, 0x7f, 0x90, 0xe0, 0x95, 0x90, 0xff, 0x97, 0x7f, 0xd3, 0xe0, 0x50, 0x9f, -0xe0, 0x10, 0x64, 0xc3, 0x94, 0x80, 0x40, 0x88, 0x90, 0x08, 0x95, 0x7f, 0x90, 0xe0, 0x97, 0x7f, -0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x08, 0x94, 0x19, 0x40, 0x94, 0xe0, 0x50, 0x0a, 0x90, 0x14, -0xbe, 0x7a, 0xc3, 0xe0, 0x03, 0x94, 0x0b, 0x40, 0x7f, 0x90, 0xe0, 0x95, 0x90, 0x04, 0x97, 0x7f, -0xd2, 0xf0, 0x90, 0x46, 0x66, 0x7f, 0x30, 0xe0, 0x2a, 0xe0, 0x7b, 0x90, 0xe0, 0x0c, 0x0d, 0x60, -0x7a, 0x90, 0xe0, 0xf4, 0x90, 0xff, 0xf3, 0x7a, 0xc3, 0xe0, 0x50, 0x9f, 0x90, 0x08, 0xf3, 0x7a, -0x90, 0xe0, 0xf4, 0x7a, 0x90, 0xf0, 0xf4, 0x7a, 0xff, 0xe0, 0x7f, 0x90, 0xe0, 0x97, 0x9f, 0xd3, -0x02, 0x40, 0xf0, 0xef, 0xe5, 0x22, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, 0xf5, 0x13, -0x92, 0x13, 0xe5, 0x1e, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, 0xf5, 0x13, 0x22, 0x13, -0x25, 0xe0, 0xf5, 0x18, 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, -0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0xe0, 0x22, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0xe0, 0x22, -0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x95, 0xc3, 0xff, 0x11, 0x12, 0xe5, 0x10, 0x95, 0xf8, 0xc4, -0xf0, 0x54, 0x68, 0xc8, 0x14, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, 0xd3, 0x15, 0x1d, 0x95, -0x14, 0xe5, 0x1c, 0x95, 0xe5, 0x22, 0x25, 0x11, 0xf5, 0xe0, 0xe5, 0x11, 0x33, 0x10, 0x10, 0xf5, -0x18, 0x92, 0x13, 0xe5, 0xe0, 0x25, 0xe5, 0xff, 0x33, 0x12, 0x7c, 0xfe, 0xef, 0x00, 0x23, 0x25, -0x13, 0xf5, 0x3e, 0xec, 0x12, 0xf5, 0x19, 0x15, 0xe4, 0x22, 0xa3, 0xf0, 0x90, 0xf0, 0x68, 0x7d, -0xfe, 0xe0, 0xc3, 0xa3, 0xff, 0xe0, 0x7d, 0x90, 0xe0, 0x6b, 0x90, 0x9f, 0x6a, 0x7d, 0x9e, 0xe0, -0xe5, 0x22, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0xe5, 0x22, 0x54, 0x15, 0xff, 0x0f, 0x10, 0xe5, -0x14, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, 0x22, 0x15, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, -0x22, 0xf0, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x7d, 0x90, -0xf0, 0xa1, 0x87, 0x74, 0x90, 0x9e, 0xa0, 0x7d, 0x22, 0xf0, 0xe5, 0xc3, 0x95, 0x1d, 0xe5, 0x17, -0x95, 0x1c, 0x22, 0x16, 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, -0xa2, 0x22, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x7d, 0x90, 0xf0, 0xa4, 0xf0, 0xa3, 0x7d, 0x7e, -0xa4, 0x7f, 0x01, 0x7d, 0x22, 0xfc, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0x22, 0x13, 0x13, 0x95, -0x12, 0xe5, 0x80, 0x64, 0xe0, 0xf8, 0x80, 0x64, 0x22, 0x98, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, -0x22, 0x1b, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, -0x05, 0x1d, 0xe5, 0x1d, 0x22, 0x1d, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0xe5, 0x22, 0xf0, 0xf5, 0xe0, -0xa3, 0x12, 0xf5, 0xe0, 0x22, 0x13, 0xf5, 0xe4, 0xf5, 0x12, 0xd3, 0x13, 0x11, 0xe5, 0x00, 0x94, -0x10, 0xe5, 0x80, 0x64, 0xa0, 0x94, 0xe5, 0x22, 0xc4, 0x15, 0x54, 0xf8, 0xc8, 0x0f, 0xff, 0x68, -0x14, 0xe5, 0x54, 0xc4, 0x48, 0xf0, 0x22, 0xfe, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, 0x22, 0x15, -0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0x22, 0xf0, -0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x74, 0x22, -0xf5, 0xff, 0xf5, 0x12, 0xc3, 0x13, 0x10, 0xe5, 0x80, 0x64, 0x60, 0x94, 0x92, 0x22, 0xe5, 0x1f, -0x13, 0x18, 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0x22, 0x18, 0x0f, 0x54, 0x10, 0xf5, 0x11, 0x75, -0xe5, 0x00, 0x54, 0x14, 0xfe, 0x0f, 0xc2, 0x22, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, 0x7d, 0x90, -0xe0, 0x3d, 0xe5, 0x22, 0x25, 0x15, 0xf5, 0xe0, 0xe5, 0x15, 0x33, 0x14, 0x14, 0xf5, 0xe0, 0x22, -0x10, 0xf5, 0xe0, 0xa3, 0x11, 0xf5, 0x92, 0x22, 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, -0x22, 0x18, 0x18, 0xe5, 0x80, 0x64, 0xe5, 0xf8, 0x64, 0x19, 0x98, 0x80, 0x25, 0x22, 0xf5, 0x15, -0x74, 0x15, 0x35, 0xff, 0xf5, 0x14, 0x22, 0x14, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xcf, 0x22, -0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd3, 0x22, 0x13, 0xe5, 0x17, 0x95, 0x12, 0xe5, -0x16, 0x95, 0x85, 0x22, 0x1c, 0x10, 0x11, 0x85, 0x22, 0x1d, 0xe5, 0xd3, 0x95, 0x1d, 0xe5, 0x11, -0x95, 0x1c, 0x22, 0x10, 0x7f, 0x90, 0xe0, 0x67, 0xe5, 0x20, 0x02, 0x03, 0x1d, 0x34, 0x18, 0x7f, -0x66, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x09, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0xc3, 0xf0, 0x7c, 0x90, -0xe0, 0x09, 0x80, 0x64, 0x80, 0x94, 0x07, 0x50, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x90, 0xf0, -0xa8, 0x7a, 0x20, 0xe0, 0x1c, 0xe0, 0x7c, 0x90, 0xe0, 0x0a, 0xe0, 0x25, 0x90, 0xf0, 0x09, 0x7c, -0x33, 0xe0, 0xc3, 0xf0, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x80, 0x74, 0x07, 0xf0, 0x7f, 0x74, 0xa3, -0xf0, 0xff, 0x7c, 0x90, 0xe0, 0x0a, 0x14, 0x24, 0x90, 0xfe, 0x09, 0x7c, 0x34, 0xe0, 0x90, 0xf7, -0x92, 0x7f, 0xa3, 0xf0, 0xf0, 0xce, 0x7f, 0x90, 0xe0, 0x92, 0xa3, 0xff, 0x90, 0xe0, 0x0b, 0x7c, -0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x0b, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, 0x94, 0xd3, 0xee, 0x00, -0x80, 0x64, 0x80, 0x94, 0x02, 0x40, 0x11, 0x80, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, -0x07, 0x80, 0x90, 0xe4, 0x0b, 0x7c, 0xa3, 0xf0, 0xd3, 0xf0, 0x7c, 0x90, 0xe0, 0x0c, 0x6a, 0x94, -0x7c, 0x90, 0xe0, 0x0b, 0x80, 0x64, 0x8a, 0x94, 0x07, 0x40, 0x0a, 0x74, 0xa3, 0xf0, 0x6a, 0x74, -0xc3, 0xf0, 0x7c, 0x90, 0xe0, 0x0c, 0x96, 0x94, 0x7c, 0x90, 0xe0, 0x0b, 0x80, 0x64, 0x75, 0x94, -0x07, 0x50, 0xf5, 0x74, 0xa3, 0xf0, 0x96, 0x74, 0x90, 0xf0, 0x0b, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, -0xaa, 0xfb, 0xea, 0x06, 0x95, 0x33, 0xf9, 0xe0, 0x90, 0xf8, 0xa5, 0x7a, 0xff, 0xe0, 0xfc, 0xe4, -0xfe, 0xfd, 0x71, 0x12, 0xc0, 0x07, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x7f, 0xaf, 0x7e, 0x2d, -0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xd5, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0x12, 0x0d, -0x8e, 0x25, 0x7a, 0x90, 0xe0, 0xd5, 0xa3, 0xfe, 0xff, 0xe0, 0xfc, 0xe4, 0x12, 0xfd, 0x07, 0x71, -0x7c, 0x90, 0x12, 0x0d, 0x72, 0x25, 0x12, 0x78, 0x25, 0x12, 0x90, 0x4b, 0x0b, 0x7c, 0xf0, 0xee, -0xef, 0xa3, 0xc3, 0xf0, 0x7a, 0x90, 0xe0, 0xd6, 0xf0, 0x9f, 0x7a, 0x90, 0xe0, 0xd5, 0xf0, 0x9e, -0xa3, 0xd3, 0x94, 0xe0, 0x90, 0xff, 0xd5, 0x7a, 0x94, 0xe0, 0x40, 0x3f, 0x74, 0x07, 0xf0, 0x3f, -0x74, 0xa3, 0xf0, 0xff, 0x90, 0xc3, 0xd5, 0x7a, 0x94, 0xe0, 0x50, 0x02, 0x74, 0x06, 0xf0, 0x02, -0xe4, 0xa3, 0x90, 0xf0, 0xd5, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x2d, 0x12, 0x55, -0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7a, 0x90, 0xe0, 0xd8, 0x4f, 0x60, 0xf0, 0xe4, -0x7a, 0x90, 0xe0, 0xd9, 0xa3, 0xff, 0x90, 0xe0, 0xdb, 0x7a, 0xf0, 0xcf, 0xef, 0xa3, 0x7f, 0xf0, -0x7e, 0x12, 0x12, 0x62, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xd9, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, -0xe0, 0xdb, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0xda, 0x7a, 0x9f, 0xe0, 0x90, 0xff, 0xd9, 0x7a, -0x9e, 0xe0, 0x12, 0xfe, 0xff, 0x70, 0xee, 0xc3, 0x80, 0x94, 0x5d, 0x40, 0x7a, 0x90, 0xe0, 0xdd, -0xa3, 0xfe, 0xff, 0xe0, 0x9f, 0xe4, 0xe4, 0xff, 0x12, 0x9e, 0xff, 0x70, 0x90, 0x22, 0xd8, 0x7a, -0x01, 0x74, 0x90, 0xf0, 0xe1, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xdd, 0x7a, 0xfc, 0xe0, -0xe0, 0xa3, 0x9f, 0xc3, 0xec, 0xff, 0xfe, 0x9e, 0x7a, 0x90, 0xf0, 0xdf, 0xef, 0xa3, 0xd3, 0xf0, -0x00, 0x94, 0x64, 0xee, 0x94, 0x80, 0x40, 0x80, 0xe0, 0x20, 0x04, 0x24, 0x90, 0xff, 0xdf, 0x7a, -0x34, 0xe0, 0xfe, 0x00, 0x78, 0xef, 0xce, 0x03, 0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf8, -0x7a, 0x90, 0xee, 0xe1, 0xf0, 0x8f, 0x24, 0x12, 0x22, 0x8c, 0x19, 0x7d, 0x82, 0x7c, 0xff, 0x7f, -0x01, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x1c, 0x7f, 0x82, 0x7e, 0x01, 0x12, 0x43, 0x57, 0x6f, -0x03, 0x7d, 0x35, 0x12, 0x7d, 0x95, 0x12, 0x05, 0x9e, 0x35, 0x06, 0x7d, 0x35, 0x12, 0x7d, 0x9e, -0x12, 0x07, 0xa7, 0x35, 0x11, 0x7d, 0x35, 0x12, 0x7d, 0x95, 0x12, 0x12, 0x0e, 0x36, 0x13, 0x7d, -0x83, 0x7c, 0x35, 0x12, 0x7d, 0xe6, 0x12, 0x14, 0xa7, 0x35, 0x2c, 0x7d, 0x35, 0x12, 0x7d, 0xb0, -0x12, 0x2d, 0x0e, 0x36, 0x04, 0x7f, 0x18, 0x12, 0x12, 0x71, 0x57, 0x6f, 0x2f, 0x7d, 0x35, 0x12, -0x7d, 0xb0, 0x12, 0x2b, 0xcb, 0x35, 0x3c, 0x7d, 0x35, 0x12, 0x7d, 0xcb, 0x12, 0x3d, 0xfc, 0x35, -0x44, 0x7d, 0x35, 0x12, 0xc0, 0xfc, 0x12, 0xd0, 0x88, 0x16, 0xf5, 0xe4, 0x12, 0x0d, 0x22, 0x16, -0x0c, 0xb4, 0x7e, 0xfa, 0x7f, 0x7d, 0x7d, 0xa4, 0x7c, 0x0c, 0x12, 0x00, 0xae, 0x00, 0x30, 0x7b, -0x35, 0x12, 0xd0, 0xee, 0xc0, 0xd0, 0x12, 0xd0, 0x88, 0x16, 0xf5, 0xe4, 0x12, 0x0d, 0x22, 0x16, -0x16, 0xb4, 0x12, 0xfa, 0xc0, 0x17, 0x00, 0x12, 0x7b, 0xae, 0x12, 0x15, 0xee, 0x35, 0xd0, 0xd0, -0x03, 0x7d, 0x35, 0x12, 0x7d, 0xd4, 0x12, 0x05, 0xd4, 0x35, 0x06, 0x7d, 0x36, 0x12, 0x7d, 0x05, -0x12, 0x07, 0x05, 0x36, 0x11, 0x7d, 0x35, 0x12, 0x7d, 0xb9, 0x12, 0x15, 0xb9, 0x35, 0x85, 0x7c, -0x35, 0x12, 0x7d, 0xc2, 0x7c, 0x17, 0xe4, 0x85, 0xfe, 0xff, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x18, -0x7f, 0x85, 0x7e, 0x04, 0x12, 0x08, 0x57, 0x6f, 0x18, 0x12, 0x12, 0x78, 0x57, 0x6f, 0x1f, 0x7d, -0x85, 0x7c, 0x35, 0x12, 0x7d, 0xe6, 0x7c, 0x20, 0x7f, 0x85, 0x7e, 0x03, 0x12, 0x00, 0x57, 0x6f, -0x21, 0x7d, 0x19, 0x12, 0x12, 0x15, 0x57, 0x6f, 0x13, 0x7f, 0x11, 0x7e, 0x6e, 0x12, 0x90, 0xf0, -0xb8, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xb8, 0x7b, 0xc4, 0xe0, 0x54, 0x13, 0x7e, 0x07, -0x12, 0x00, 0xb9, 0x17, 0x10, 0x7d, 0x86, 0x7c, 0x03, 0x70, 0x80, 0xff, 0x7f, 0x04, 0x7e, 0xff, -0x12, 0x00, 0x57, 0x6f, 0x12, 0x7d, 0x35, 0x12, 0x7d, 0xdd, 0x12, 0x15, 0xdd, 0x35, 0x86, 0x7c, -0x35, 0x12, 0x90, 0xc2, 0x86, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x17, 0x12, 0x86, -0x57, 0x6f, 0x11, 0x7d, 0x86, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0xd0, 0xc0, 0x16, 0x12, -0xe4, 0x88, 0x7d, 0x90, 0xf0, 0xa0, 0x16, 0x12, 0x7d, 0xe3, 0xfc, 0x01, 0x00, 0x12, 0x7b, 0xae, -0x7a, 0x10, 0x7d, 0x00, 0x7f, 0x3f, 0x12, 0x08, 0x2c, 0x70, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, -0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, 0xff, 0xe4, 0x12, 0xfe, -0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, 0xff, 0xe4, -0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x85, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x16, 0x7d, -0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, -0x84, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x86, 0xfe, 0xff, 0x6f, 0x12, -0x22, 0x57, 0x04, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x00, 0x7a, 0x03, 0x7d, 0x08, 0x7f, -0x70, 0x12, 0xa2, 0x2c, 0x92, 0xd1, 0x22, 0xaf, 0x83, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, -0x7c, 0x22, 0xe4, 0x84, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, 0x02, 0x7f, 0x00, 0x7e, -0x6f, 0x12, 0x22, 0x57, 0x7f, 0x90, 0xe0, 0x95, 0x25, 0x12, 0x36, 0xf9, 0x00, 0x47, 0x78, 0x36, -0x36, 0x01, 0x02, 0x9c, 0xb4, 0x36, 0x36, 0x03, 0x04, 0xc1, 0xce, 0x36, 0x36, 0x05, 0x06, 0xe2, -0xf5, 0x36, 0x36, 0x07, 0x08, 0xf5, 0x47, 0x36, 0x36, 0xfc, 0xfd, 0x47, 0x47, 0x36, 0x00, 0xff, -0x37, 0x00, 0x90, 0x08, 0xa5, 0x7a, 0x30, 0x74, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, -0x7f, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0xa5, 0xf0, 0x10, 0x90, 0xe4, 0x15, 0x7c, 0xa3, 0xf0, -0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x3a, -0x02, 0xf7, 0x1d, 0x37, 0x90, 0xe4, 0x15, 0x7c, 0x90, 0xf0, 0x35, 0x7f, 0x90, 0xe0, 0x16, 0x7c, -0x90, 0xf0, 0x3b, 0x7f, 0x90, 0xe0, 0x17, 0x7c, 0xe4, 0xf0, 0xf0, 0xa3, 0xf0, 0xa3, 0x63, 0x12, -0x7a, 0xd2, 0x79, 0x3b, 0x02, 0x06, 0x1d, 0x37, 0x63, 0x12, 0x90, 0xe5, 0x4d, 0x7f, 0x90, 0xe0, -0x1a, 0x7c, 0x90, 0xf0, 0x53, 0x7f, 0x63, 0x12, 0x7a, 0xdd, 0x79, 0x3b, 0x02, 0x15, 0x1d, 0x37, -0x63, 0x12, 0x12, 0xe5, 0xd2, 0x63, 0x3b, 0x7a, 0x24, 0x79, 0x37, 0x02, 0x12, 0x1d, 0xac, 0x63, -0x63, 0x12, 0x7a, 0xd2, 0x79, 0x3b, 0x02, 0x33, 0x1d, 0x37, 0x63, 0x12, 0xa3, 0xac, 0xd0, 0x74, -0xa3, 0xf0, 0x40, 0x74, 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x3b, 0x02, 0x33, 0x1d, 0x37, 0x63, 0x12, -0xa3, 0xac, 0x90, 0x74, 0xa3, 0xf0, 0x30, 0x74, 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x3b, 0x80, 0x42, -0x12, 0x28, 0xac, 0x63, 0x74, 0xa3, 0xf0, 0x48, 0x74, 0xa3, 0xf0, 0x14, 0xff, 0x7b, 0x3b, 0x7a, -0x42, 0x79, 0x15, 0x80, 0x63, 0x12, 0x90, 0xac, 0x51, 0x7f, 0x90, 0xe0, 0x1a, 0x7c, 0x90, 0xf0, -0x57, 0x7f, 0x63, 0x12, 0x7a, 0xdd, 0x79, 0x3b, 0xa3, 0x42, 0x25, 0x12, 0x90, 0xf0, 0x95, 0x7f, -0xc3, 0xe0, 0x03, 0x94, 0x7a, 0x90, 0x50, 0xd4, 0x74, 0x05, 0xf0, 0x0f, 0x03, 0x80, 0x07, 0x74, -0x90, 0xf0, 0x67, 0x7f, 0x20, 0xe0, 0x03, 0xe4, 0x37, 0x02, 0x12, 0xd5, 0x05, 0x6e, 0x7f, 0x90, -0xe0, 0x66, 0x30, 0xa3, 0x0b, 0xe0, 0x7f, 0x90, 0xe0, 0x95, 0x64, 0xc3, 0x94, 0x80, 0x50, 0x85, -0x90, 0x10, 0x1a, 0x7c, 0x12, 0x7d, 0x37, 0x12, 0x90, 0xd6, 0x1b, 0x7c, 0x13, 0x7d, 0x37, 0x12, -0x90, 0xd6, 0x1a, 0x7c, 0x90, 0xe0, 0xf1, 0x7a, 0x90, 0xf0, 0x1b, 0x7c, 0x90, 0xe0, 0xf2, 0x7a, -0x90, 0xf0, 0x16, 0x7c, 0x14, 0x7d, 0x37, 0x12, 0x90, 0xe0, 0x17, 0x7c, 0x15, 0x7d, 0x37, 0x12, -0x90, 0xe0, 0x18, 0x7c, 0x16, 0x7d, 0x37, 0x12, 0x90, 0xea, 0x19, 0x7c, 0x17, 0x7d, 0x37, 0x12, -0x90, 0xea, 0xd4, 0x7a, 0xff, 0xe0, 0x00, 0x7e, 0x10, 0x7d, 0x55, 0x7c, 0x6f, 0x12, 0xe4, 0x57, -0x7c, 0x90, 0xf0, 0x14, 0x7c, 0x90, 0x12, 0x1c, 0xe7, 0x25, 0x7c, 0x90, 0xe0, 0x14, 0xf5, 0xfd, -0x75, 0x82, 0x00, 0x83, 0x24, 0x12, 0xff, 0x4d, 0x00, 0x7e, 0x24, 0xed, 0xfd, 0x18, 0x34, 0xe4, -0xfc, 0x55, 0x6f, 0x12, 0x90, 0x57, 0x14, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, 0x94, 0xc3, 0x40, 0x0f, -0x22, 0xd3, 0xff, 0xe0, 0x00, 0x7e, 0x55, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, -0x55, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x55, 0x7c, 0x6f, 0x12, 0x22, 0x57, -0xaf, 0xc2, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, -0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xe4, 0x07, -0x12, 0xff, 0x56, 0x6e, 0xaf, 0xd2, 0x03, 0x7f, 0x80, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xc3, 0x7b, -0xf0, 0xef, 0xe0, 0x20, 0x02, 0x03, 0x83, 0x39, 0x07, 0x7f, 0x83, 0x7e, 0x6e, 0x12, 0x12, 0xf0, -0x69, 0x16, 0xe0, 0x20, 0x02, 0x03, 0xda, 0x38, 0x7b, 0x90, 0xe0, 0x64, 0x16, 0x64, 0x59, 0x60, -0x24, 0xe0, 0xff, 0x17, 0x34, 0xe4, 0xfe, 0x83, 0x6e, 0x12, 0x12, 0xf0, 0xea, 0x16, 0x7b, 0x90, -0xe0, 0x64, 0x25, 0xf9, 0x24, 0xe0, 0xf5, 0x69, 0xe4, 0x82, 0x7b, 0x34, 0x17, 0x12, 0xae, 0x01, -0x78, 0x04, 0x12, 0x04, 0x72, 0x16, 0xfb, 0xd8, 0x17, 0x12, 0x24, 0x7a, 0xf5, 0x69, 0xe4, 0x82, -0x7b, 0x34, 0x16, 0x12, 0x50, 0xa9, 0x12, 0x03, 0x43, 0x16, 0x17, 0x12, 0x94, 0x93, 0x40, 0x83, -0x74, 0x07, 0xf0, 0x03, 0x74, 0xa3, 0xf0, 0xff, 0x16, 0x12, 0x90, 0x80, 0x65, 0x7b, 0x18, 0x12, -0x90, 0x81, 0x64, 0x7b, 0x04, 0xe0, 0x80, 0xf0, 0x90, 0x20, 0x65, 0x7b, 0xff, 0xe0, 0xe0, 0xa3, -0x7b, 0x90, 0xcf, 0x67, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0xe4, 0x65, 0xa3, 0xf0, 0x90, 0xf0, -0xb2, 0x7b, 0xf0, 0x04, 0x7b, 0x90, 0xe4, 0x64, 0xc0, 0xf0, 0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, -0x12, 0xfd, 0x88, 0x18, 0xfe, 0x54, 0x17, 0x12, 0x7d, 0x5f, 0x7c, 0x05, 0x12, 0x83, 0x15, 0x72, -0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x07, 0x7f, 0x83, 0x7e, 0x6e, 0x12, 0x12, 0xf0, 0x69, 0x16, -0xe1, 0x20, 0x02, 0x03, 0x83, 0x39, 0x7b, 0x90, 0xe0, 0x95, 0x0c, 0x64, 0x5a, 0x60, 0x24, 0xe0, -0xff, 0x32, 0x34, 0xe4, 0xfe, 0x83, 0x6e, 0x12, 0x12, 0xf0, 0xea, 0x16, 0x7b, 0x90, 0xe0, 0x95, -0x25, 0xf9, 0x24, 0xe0, 0xf5, 0x9a, 0xe4, 0x82, 0x7b, 0x34, 0x17, 0x12, 0xae, 0x01, 0x78, 0x04, -0x12, 0x04, 0x72, 0x16, 0xfb, 0xd8, 0x17, 0x12, 0x24, 0x7a, 0xf5, 0x9a, 0xe4, 0x82, 0x7b, 0x34, -0x16, 0x12, 0x50, 0xa9, 0x12, 0x03, 0x43, 0x16, 0x17, 0x12, 0x94, 0x93, 0x40, 0x83, 0x74, 0x07, -0xf0, 0x03, 0x74, 0xa3, 0xf0, 0xff, 0x16, 0x12, 0xff, 0x80, 0x7b, 0x90, 0x12, 0x96, 0x82, 0x18, -0x7b, 0x90, 0xe0, 0x95, 0xf0, 0x04, 0x1a, 0x80, 0x7b, 0x90, 0xe0, 0x96, 0xa3, 0xff, 0x90, 0xe0, -0x98, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x96, 0x7b, 0xf0, 0xe4, 0xf0, 0xa3, 0x7b, 0x90, -0xf0, 0x95, 0xd0, 0xc0, 0x16, 0x12, 0x30, 0x88, 0xfd, 0x40, 0x18, 0x12, 0x54, 0x88, 0x12, 0xfd, -0x5f, 0x17, 0x05, 0x7d, 0x83, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, -0xc3, 0x7b, 0x30, 0xe0, 0x1c, 0xe1, 0x07, 0x7f, 0x84, 0x7e, 0x6e, 0x12, 0x12, 0xf0, 0x69, 0x16, -0xe0, 0x30, 0xe0, 0x0f, 0xfe, 0x54, 0x12, 0xf0, 0xc5, 0x16, 0x7d, 0xff, 0x7c, 0x05, 0x12, 0x84, -0x57, 0x6f, 0xa9, 0x53, 0xc2, 0xfb, 0xe4, 0xaf, 0x12, 0xff, 0xd4, 0x6f, 0x07, 0xd0, 0x06, 0xd0, -0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, -0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, 0xaf, 0xd2, 0x00, 0x32, 0xff, 0x00, 0x00, 0xfe, 0x00, 0x01, -0xff, 0x02, 0x00, 0xfe, 0x00, 0x00, 0xff, 0x04, 0xff, 0xfe, 0x00, 0xfc, 0x00, 0x04, 0xff, 0x03, -0x00, 0xfa, 0x00, 0x00, 0xff, 0x06, 0xff, 0xfb, 0x00, 0xfd, 0xff, 0x0b, 0xff, 0xfc, 0x00, 0xed, -0x00, 0x13, 0xff, 0x1c, 0xff, 0xd3, 0x00, 0xdc, 0x00, 0x5a, 0xff, 0x2a, 0xff, 0x47, 0x02, 0xd2, -0xff, 0x66, 0x00, 0xfe, 0x00, 0x04, 0xff, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x04, 0xff, 0xfe, -0x00, 0xfc, 0x00, 0x05, 0xff, 0x02, 0x00, 0xf8, 0x00, 0x02, 0xff, 0x0b, 0xff, 0xf8, 0x00, 0xf1, -0x00, 0x10, 0xff, 0x13, 0xff, 0xe5, 0x00, 0xea, 0x00, 0x2c, 0xff, 0x1a, 0xff, 0xbb, 0x00, 0xe4, -0x00, 0x6e, 0xff, 0x1f, 0xff, 0x37, 0x02, 0xe0, 0xff, 0x74, 0x00, 0xff, 0x00, 0x01, 0xff, 0x01, -0xff, 0xff, 0x00, 0xff, 0x00, 0x02, 0xff, 0x01, 0x00, 0xfe, 0x00, 0x00, 0xff, 0x03, 0xff, 0xff, -0x00, 0xfd, 0x00, 0x04, 0xff, 0x01, 0x00, 0xf8, 0x00, 0x04, 0xff, 0x0d, 0xff, 0xf3, 0x00, 0xed, -0x00, 0x1c, 0xff, 0x19, 0xff, 0xcb, 0x00, 0xe1, 0x00, 0x60, 0xff, 0x25, 0xff, 0x42, 0x02, 0xd8, -0xff, 0x6b, 0x00, 0xfd, 0x00, 0x03, 0xff, 0x02, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x04, 0xff, 0xff, -0x00, 0xfc, 0x00, 0x03, 0xff, 0x03, 0x00, 0xfb, 0x00, 0x00, 0xff, 0x09, 0xff, 0xfc, 0x00, 0xf4, -0x00, 0x0a, 0xff, 0x10, 0xff, 0xeb, 0x00, 0xec, 0x00, 0x25, 0xff, 0x19, 0xff, 0xc2, 0x00, 0xe4, -0x00, 0x69, 0xff, 0x1f, 0xff, 0x3b, 0x02, 0xdf, 0x1c, 0x72, 0x16, 0x36, 0x15, 0xed, 0x18, 0x44, -0x14, 0x36, 0x18, 0x36, 0x14, 0x7f, 0x18, 0x5b, 0x5b, 0x90, 0x5b, 0x5b, 0x59, 0x5b, 0x0b, 0x49, -0x01, 0xf5, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x02, 0x40, 0x24, 0xb2, 0x18, 0x32, 0x10, 0x15, -0x07, 0x04, 0x05, 0xaa, 0x4a, 0x19, 0x31, 0xdd, 0x21, 0xd0, 0x16, 0x20, 0x0e, 0x07, 0x7f, 0xa6, -0x61, 0xff, 0x3c, 0x18, 0x26, 0xf0, 0x18, 0x3f, 0x7f, 0x01, 0x7f, 0xff, 0x6a, 0xff, 0x3a, 0x40, -0x20, 0x76, 0x01, 0x2b, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, -0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x04, 0x03, 0x08, 0x06, 0x0c, 0x0a, 0x10, 0x0e, -0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, 0x01, 0x04, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x10, 0x17, -0x0e, 0x13, 0x0d, 0x11, 0x04, 0x10, 0x05, 0x05, 0x07, 0x06, 0x08, 0x08, 0x34, 0x09, 0x34, 0xcd, -0x34, 0xcd, 0x34, 0xcd, 0x34, 0xcd, 0x34, 0xcd, 0x1a, 0xcd, 0x1a, 0x33, 0x1a, 0x33, 0x1a, 0x33, -0x1a, 0x33, 0x1a, 0x33, 0x34, 0x33, 0x31, 0x18, 0x2e, 0x4a, 0x35, 0xd4, 0x35, 0xf1, 0x3c, 0xf1, -0x18, 0xf9, 0x19, 0x14, 0x18, 0xc6, 0x19, 0xfa, 0x1a, 0x09, 0x1c, 0x00, 0x30, 0x46, 0x30, 0x39, -0x35, 0x39, 0x39, 0x3a, 0x39, 0x7f, 0x3b, 0x97, 0x20, 0xfc, 0x03, 0x61, 0x3c, 0x02, 0x7f, 0x37, -0x12, 0x01, 0xb3, 0x1b, 0x7a, 0x90, 0x12, 0x82, 0x72, 0x25, 0x24, 0xef, 0xff, 0x01, 0x3e, 0xe4, -0xe4, 0xfe, 0xfd, 0x3d, 0x3c, 0xe4, 0x90, 0xfc, 0x82, 0x7a, 0x25, 0x12, 0x90, 0xaa, 0x82, 0x7a, -0x25, 0x12, 0xec, 0x72, 0x4e, 0x4d, 0x70, 0x4f, 0x90, 0x0a, 0x82, 0x7a, 0x25, 0x12, 0xff, 0xb6, -0xff, 0xff, 0x12, 0xff, 0xe5, 0x6c, 0x3c, 0x30, 0x12, 0x03, 0xcd, 0x65, 0x3c, 0x30, 0x12, 0x03, -0x07, 0x60, 0x3e, 0x30, 0x12, 0x03, 0xd5, 0x1e, 0x3e, 0x30, 0x12, 0x03, 0xcd, 0x4d, 0x3e, 0x30, -0x12, 0x03, 0xd9, 0x2d, 0x3e, 0x30, 0x12, 0x03, 0x9b, 0x5d, 0x3e, 0x30, 0x12, 0x03, 0xce, 0x45, -0x24, 0x30, 0x12, 0x03, 0x18, 0x36, 0x30, 0x20, 0x20, 0x09, 0x06, 0x3d, 0x7a, 0x90, 0xe0, 0x80, -0x03, 0x60, 0x12, 0x12, 0x30, 0xa0, 0x03, 0x24, 0x29, 0x12, 0x30, 0x88, 0x03, 0x36, 0x5f, 0x12, -0x30, 0x92, 0x03, 0x3c, 0x5d, 0x12, 0x30, 0x17, 0x03, 0x29, 0x71, 0x12, 0x12, 0xd4, 0xda, 0x5a, -0x3b, 0x02, 0x7f, 0x9d, 0x12, 0x01, 0xb3, 0x1b, 0x7f, 0x90, 0xe0, 0xaf, 0xe1, 0x30, 0x02, 0x03, -0x9d, 0x3b, 0x7f, 0x90, 0xe0, 0xb0, 0xa3, 0xfe, 0xff, 0xe0, 0x7c, 0x90, 0xe0, 0x81, 0xa3, 0xfc, -0xfd, 0xe0, 0x9f, 0xd3, 0x9e, 0xec, 0x04, 0x40, 0x01, 0x7f, 0x02, 0x80, 0x00, 0x7f, 0x25, 0xef, -0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x2f, 0xe4, 0xee, 0xff, 0x40, 0x34, 0x90, 0xfe, 0x7f, 0x7c, -0xfa, 0xe0, 0xe0, 0xa3, 0x64, 0xfb, 0x4a, 0xb3, 0x0c, 0x60, 0x64, 0xeb, 0x4a, 0xb2, 0x06, 0x60, -0x64, 0xeb, 0x4a, 0xb4, 0x06, 0x70, 0x00, 0x7a, 0x01, 0x7b, 0x04, 0x80, 0x00, 0x7a, 0x00, 0x7b, -0x2b, 0xef, 0xee, 0xff, 0x90, 0x3a, 0xe2, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0xb0, -0xa3, 0xfe, 0xff, 0xe0, 0xed, 0xd3, 0xec, 0x9f, 0x40, 0x9e, 0x90, 0x5e, 0x88, 0x7c, 0x94, 0xe0, -0x90, 0x80, 0x87, 0x7c, 0x94, 0xe0, 0x50, 0x02, 0xe4, 0x06, 0xf0, 0x75, 0x80, 0x80, 0x90, 0x5d, -0x87, 0x7c, 0x02, 0x74, 0xa3, 0xf0, 0x80, 0x74, 0x90, 0xf0, 0x7f, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, -0x7d, 0xff, 0x7c, 0x40, 0x12, 0x71, 0x57, 0x6f, 0x03, 0x7f, 0x3d, 0x12, 0x90, 0x34, 0x7f, 0x7c, -0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xdc, 0x94, 0x64, 0xee, 0x94, 0x80, 0x40, 0x80, 0x02, 0x03, -0x9d, 0x3b, 0x24, 0xef, 0xff, 0x58, 0x34, 0xee, 0xfe, 0x03, 0x41, 0x7d, 0x71, 0x7c, 0x6f, 0x12, -0x7f, 0x57, 0x12, 0x07, 0x34, 0x3d, 0x3b, 0x02, 0xd3, 0x9d, 0x7c, 0x90, 0xe0, 0x88, 0x00, 0x94, -0x7c, 0x90, 0xe0, 0x87, 0x00, 0x94, 0x0a, 0x40, 0xff, 0x74, 0xf0, 0xf5, 0x24, 0x12, 0x02, 0x8c, -0x9d, 0x3b, 0x24, 0x7d, 0x71, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x02, 0x57, 0x9d, 0x3b, -0x24, 0x7d, 0x71, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x10, 0x7f, 0x82, 0x7e, 0x6e, 0x12, -0x12, 0xf0, 0x69, 0x16, 0x12, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x2e, 0x7c, 0xf0, 0xee, -0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x11, 0x12, 0x82, 0xf0, 0x6e, 0x17, 0x12, 0x4e, 0xa1, 0x03, 0x70, -0x3e, 0x02, 0x90, 0xab, 0x1a, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0xe4, 0xff, 0xfd, 0xfc, 0x18, 0x12, -0xd3, 0x4a, 0x7b, 0x90, 0xe0, 0xbd, 0x00, 0x94, 0x7b, 0x90, 0xe0, 0xbc, 0x80, 0x64, 0x80, 0x94, -0x78, 0x40, 0x13, 0x7f, 0x82, 0x7e, 0x3e, 0x12, 0x40, 0xce, 0x7f, 0x17, 0x7e, 0x14, 0x12, 0x86, -0xce, 0x3e, 0x0e, 0x40, 0x18, 0x12, 0xc0, 0x41, 0x12, 0x00, 0x80, 0x16, 0x17, 0x12, 0x02, 0x3e, -0xf6, 0x3d, 0x16, 0x12, 0x78, 0xc5, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x12, 0xc3, 0x9c, 0x18, -0x13, 0x40, 0x18, 0x12, 0xc0, 0x41, 0x12, 0x00, 0x80, 0x16, 0x17, 0x12, 0x12, 0x3e, 0x2a, 0x19, -0x00, 0xd0, 0x18, 0x12, 0x12, 0x47, 0xc5, 0x16, 0x04, 0x78, 0x16, 0x12, 0xd8, 0x72, 0xd3, 0xfb, -0x18, 0x12, 0x50, 0x9c, 0x12, 0x25, 0x41, 0x18, 0x00, 0xc0, 0x16, 0x12, 0x12, 0x80, 0xfb, 0x17, -0x90, 0xfe, 0x1d, 0x7e, 0xfd, 0xe0, 0xef, 0xc3, 0xff, 0x9d, 0x94, 0xee, 0x12, 0x00, 0x50, 0x17, -0x00, 0x7c, 0x19, 0x12, 0xd0, 0x2a, 0x12, 0x00, 0x47, 0x18, 0x7c, 0x90, 0x12, 0x2a, 0x72, 0x25, -0x33, 0xec, 0x09, 0x50, 0x90, 0xe4, 0x1a, 0x7e, 0xa3, 0xf0, 0x80, 0xf0, 0xe4, 0x26, 0xff, 0x7f, -0x7f, 0x7e, 0xfc, 0xfd, 0x18, 0x12, 0xd3, 0x41, 0x25, 0x12, 0x40, 0x22, 0x90, 0x08, 0x1a, 0x7e, -0x17, 0x12, 0x80, 0xda, 0x90, 0x0e, 0x2a, 0x7c, 0x25, 0x12, 0x90, 0x72, 0x1a, 0x7e, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0x10, 0x7e, 0x17, 0x12, 0x40, 0x23, 0x90, 0x05, 0x10, 0x7e, 0x14, 0x80, -0x7e, 0x90, 0xe0, 0x12, 0xa3, 0xfe, 0x12, 0xc3, 0x27, 0x17, 0x05, 0x50, 0x7e, 0x90, 0x80, 0x12, -0x90, 0x03, 0x1a, 0x7e, 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0x0e, 0xa3, 0xf0, 0xf0, 0xef, -0x7e, 0x90, 0x12, 0x16, 0x23, 0x17, 0x06, 0x40, 0x7e, 0x90, 0x12, 0x16, 0x50, 0x18, 0x7e, 0x90, -0x12, 0x18, 0x1c, 0x19, 0x17, 0x12, 0x50, 0x29, 0x90, 0x05, 0x18, 0x7e, 0x03, 0x80, 0x7e, 0x90, -0x12, 0x1a, 0x50, 0x18, 0xd0, 0xc0, 0x16, 0x12, 0x30, 0x88, 0xfd, 0x40, 0x7e, 0x7e, 0x0e, 0x7f, -0x15, 0x7d, 0x86, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, 0xd0, 0xaf, 0x7d, 0xd0, 0x7c, 0x16, -0xe4, 0x86, 0xfe, 0xff, 0x6f, 0x12, 0x12, 0x57, 0xc5, 0x16, 0x03, 0x78, 0x16, 0x12, 0xd8, 0x72, -0x90, 0xfb, 0x20, 0x7e, 0x17, 0x12, 0x90, 0xb9, 0x2e, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, 0x7a, 0xff, -0x79, 0x7e, 0x7c, 0x20, 0x7d, 0x7e, 0x02, 0x20, 0xa1, 0x56, 0x6e, 0x12, 0xd3, 0xf0, 0x94, 0xef, -0xee, 0x00, 0x80, 0x64, 0x80, 0x94, 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, -0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, -0x06, 0xc0, 0x07, 0xc0, 0xd1, 0xd2, 0xca, 0xc2, 0xcf, 0xc2, 0xcd, 0x75, 0x75, 0xf8, 0xf8, 0xcc, -0xca, 0xd2, 0x24, 0x75, 0x75, 0x00, 0x00, 0x23, 0x7d, 0x90, 0xe0, 0x3a, 0xe0, 0xa3, 0x0f, 0x54, -0x19, 0xf5, 0x03, 0x70, 0x40, 0x02, 0xc3, 0x3b, 0x7e, 0x90, 0xe0, 0xa7, 0xec, 0x95, 0x11, 0xf5, -0x7e, 0x90, 0xe0, 0xa6, 0xed, 0x95, 0x10, 0xf5, 0x18, 0x75, 0xe5, 0x00, 0xae, 0x11, 0x78, 0x10, -0xc3, 0x02, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x11, 0xf5, 0x10, 0x8e, 0x19, 0xe5, 0x94, 0xd3, -0x40, 0x07, 0x75, 0x03, 0x07, 0x19, 0x74, 0xc3, 0x95, 0x08, 0xf5, 0x19, 0x75, 0x19, 0x01, 0x16, -0x16, 0xe5, 0x95, 0xd3, 0x50, 0x19, 0x12, 0x0c, 0x2f, 0x71, 0x71, 0x12, 0xf5, 0x3c, 0x05, 0x18, -0x80, 0x16, 0xe5, 0xed, 0xa2, 0x10, 0x13, 0xe7, 0x12, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x12, 0x13, -0x3c, 0x71, 0x19, 0xf5, 0x1f, 0xc2, 0x18, 0x25, 0x18, 0xf5, 0x18, 0x92, 0x11, 0xe5, 0x13, 0x25, -0xe5, 0xff, 0x35, 0x10, 0xfe, 0x12, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x11, 0xf5, 0x3e, -0xc2, 0x10, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, 0x08, 0xe0, 0x71, 0x12, 0x12, 0x2f, 0x3c, 0x71, -0x18, 0xf5, 0x7d, 0x90, 0xe0, 0x3d, 0xe1, 0x30, 0x12, 0x14, 0x2f, 0x71, 0x1e, 0x92, 0x71, 0x12, -0x92, 0x2f, 0xe5, 0x1f, 0x13, 0x18, 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0x75, 0x18, 0x00, 0x23, -0x7e, 0x90, 0xe0, 0xbf, 0x18, 0x25, 0x92, 0xf0, 0x90, 0x18, 0xbc, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, -0x11, 0x25, 0xe5, 0xff, 0x3e, 0x10, 0x7c, 0xfe, 0xef, 0x00, 0x23, 0x25, 0x11, 0xf5, 0x3e, 0xec, -0x10, 0xf5, 0x18, 0xc2, 0x12, 0xf5, 0x11, 0x85, 0xd3, 0x13, 0x11, 0xe5, 0xf0, 0x94, 0x10, 0xe5, -0x80, 0x64, 0xd7, 0x94, 0x0c, 0x40, 0x10, 0x75, 0x75, 0x57, 0xf0, 0x11, 0x00, 0x83, 0x00, 0x00, -0x19, 0x76, 0x00, 0x01, 0x3a, 0x07, 0x7e, 0x90, 0x74, 0xbf, 0xf0, 0xff, 0xe5, 0xc3, 0x94, 0x11, -0xe5, 0xe0, 0x64, 0x10, 0x94, 0x80, 0x50, 0x86, 0x75, 0x0b, 0x06, 0x10, 0x11, 0x75, 0x90, 0xe0, -0xbf, 0x7e, 0xf0, 0xe4, 0x10, 0x85, 0x85, 0xe7, 0xe6, 0x11, 0x7e, 0x90, 0xe5, 0xbc, 0xf0, 0x10, -0xe5, 0xa3, 0xf0, 0x11, 0x7d, 0x90, 0xe5, 0x68, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x21, 0x12, -0xd2, 0x96, 0xd2, 0xc0, 0xd2, 0xc4, 0xd2, 0xc3, 0xc2, 0x01, 0xc2, 0xc0, 0xd0, 0xc4, 0xd0, 0x07, -0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, -0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0x7d, 0x90, 0xe0, 0x3a, 0xe0, 0xa3, 0x0f, 0x54, -0x19, 0xf5, 0x03, 0x70, 0x41, 0x02, 0x7f, 0xe6, 0x7e, 0x18, 0x12, 0x66, 0xf0, 0x6e, 0x1a, 0x8e, -0x1b, 0x8f, 0x1b, 0xe5, 0x1a, 0x45, 0x15, 0x60, 0x5a, 0x12, 0xef, 0x40, 0xe0, 0x25, 0xee, 0xff, -0xfe, 0x33, 0x24, 0xef, 0xff, 0xff, 0x34, 0xee, 0xf5, 0x47, 0x8f, 0x1a, 0xc3, 0x1b, 0x7f, 0x90, -0xe0, 0xcf, 0x1b, 0x95, 0x11, 0xf5, 0x7f, 0x90, 0xe0, 0xce, 0x1a, 0x95, 0x10, 0xf5, 0xf5, 0xe4, -0xc3, 0x18, 0x0f, 0x74, 0x19, 0x95, 0x19, 0xf5, 0xf5, 0xe4, 0x75, 0x23, 0x01, 0x16, 0x16, 0xe5, -0x95, 0xd3, 0x50, 0x19, 0x12, 0x0a, 0x17, 0x71, 0x71, 0x12, 0x05, 0x24, 0x80, 0x16, 0x90, 0xef, -0x3d, 0x7d, 0x30, 0xe0, 0x06, 0xe0, 0x71, 0x12, 0x12, 0x17, 0x24, 0x71, 0x7d, 0x90, 0xe0, 0x3d, -0xe1, 0x30, 0x12, 0x14, 0x17, 0x71, 0x1e, 0x92, 0x71, 0x12, 0x92, 0x17, 0xe5, 0x1f, 0x13, 0x18, -0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0xe4, 0x18, 0x23, 0xf5, 0x7c, 0x90, 0xe0, 0xb8, 0x18, 0x25, -0x92, 0xf0, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x11, 0xe4, 0x11, 0x10, 0x35, 0x10, 0xf5, 0x18, 0xc2, -0xe5, 0xd3, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, 0x94, 0x80, 0x40, 0x80, 0x90, 0x2b, 0xb7, 0x7c, -0x25, 0xe0, 0xf5, 0x11, 0x90, 0x13, 0xb6, 0x7c, 0x35, 0xe0, 0xf5, 0x10, 0xd3, 0x12, 0x13, 0xe5, -0xff, 0x94, 0x12, 0xe5, 0x7f, 0x94, 0x08, 0x40, 0x10, 0x75, 0x75, 0x7f, 0xff, 0x11, 0x18, 0x80, -0x12, 0x85, 0x85, 0x10, 0x11, 0x13, 0x10, 0x80, 0x7c, 0x90, 0xe0, 0xb6, 0xa3, 0xfe, 0x25, 0xe0, -0xf5, 0x11, 0xe5, 0x11, 0x3e, 0x10, 0x10, 0xf5, 0x7d, 0x90, 0xe5, 0x68, 0xf0, 0x10, 0xe5, 0xa3, -0xf0, 0x11, 0xe5, 0xc3, 0x64, 0x10, 0x94, 0x80, 0x50, 0x80, 0xe4, 0x05, 0x10, 0xf5, 0x11, 0xf5, -0x7c, 0x90, 0xe5, 0xb6, 0xf0, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xf5, 0xe4, 0xd3, 0x14, 0x11, 0xe5, -0xff, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xcf, 0x94, 0x15, 0x40, 0x14, 0xe5, 0x03, 0x94, 0x0f, 0x50, -0x25, 0xe4, 0xf5, 0x11, 0x74, 0x11, 0x35, 0xf0, 0xf5, 0x10, 0x05, 0x10, 0x80, 0x14, 0xe4, 0xde, -0x11, 0x25, 0xe5, 0xff, 0x34, 0x10, 0xa2, 0xd8, 0x13, 0xe7, 0xef, 0xfe, 0xff, 0x13, 0x5f, 0x12, -0x8e, 0x1d, 0x8f, 0x1a, 0xc0, 0x1b, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xa4, 0x7d, -0x1a, 0xe5, 0xa3, 0xf0, 0x1b, 0xe5, 0x90, 0xf0, 0xa6, 0x7d, 0xf0, 0xe4, 0xe5, 0xa3, 0xf0, 0x14, -0x7d, 0x7e, 0xa4, 0x7f, 0x02, 0x7d, 0x00, 0x7c, 0x00, 0x12, 0x7b, 0xae, 0x7a, 0x14, 0x7d, 0x00, -0x7f, 0x06, 0x12, 0x06, 0x2c, 0x70, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0x22, 0x26, 0x7b, -0x70, 0xe0, 0x7f, 0x24, 0x7e, 0x11, 0x12, 0x64, 0xf0, 0x6e, 0x7b, 0x90, 0xee, 0x18, 0xa3, 0xf0, -0xf0, 0xef, 0x10, 0x7f, 0x64, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x1a, 0x7b, 0xf0, 0xee, 0xef, 0xa3, -0x90, 0xf0, 0x26, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0x1c, 0x7b, 0x04, 0xe0, 0xe0, 0xf0, 0x03, 0xb4, -0xe4, 0x02, 0x90, 0xf0, 0x18, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x14, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0x1a, 0x7b, 0xfd, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcd, 0x16, 0xa3, 0xf0, -0xf0, 0xed, 0x90, 0xe4, 0x12, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x1c, 0x7b, 0x24, 0xe0, 0x60, 0xfe, -0x04, 0x3c, 0x71, 0x70, 0xef, 0xd3, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, 0x90, 0x0c, 0x12, 0x7b, -0xec, 0x74, 0xa3, 0xf0, 0x78, 0x74, 0x80, 0xf0, 0xd3, 0x5c, 0x7b, 0x90, 0xe0, 0x19, 0x64, 0x94, -0x7b, 0x90, 0xe0, 0x18, 0x00, 0x94, 0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, 0xf0, 0xee, 0x74, 0xa3, -0xf0, 0x08, 0x41, 0x80, 0xf2, 0x74, 0xa3, 0xf0, 0xea, 0x74, 0x80, 0xf0, 0x90, 0x38, 0x18, 0x7b, -0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, 0x90, 0x0c, 0x12, 0x7b, -0x13, 0x74, 0xa3, 0xf0, 0x88, 0x74, 0x80, 0xf0, 0xd3, 0x1c, 0x94, 0xef, 0xee, 0x64, 0x00, 0x94, -0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, 0xf0, 0x11, 0x74, 0xa3, 0xf0, 0xf8, 0x07, 0x80, 0x0d, 0x74, -0xa3, 0xf0, 0x16, 0x74, 0x90, 0xf0, 0x12, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, -0xe4, 0xfd, 0xfc, 0x9e, 0x90, 0xc3, 0x17, 0x7b, 0x9d, 0xe0, 0x7b, 0x90, 0xe0, 0x16, 0x50, 0x9c, -0x80, 0x02, 0xc3, 0x01, 0x47, 0x92, 0x51, 0x12, 0x50, 0x60, 0x30, 0x0c, 0x27, 0x47, 0x7b, 0x90, -0x74, 0x14, 0xf5, 0xff, 0x80, 0xf0, 0xd3, 0x1b, 0x7b, 0x90, 0xe0, 0x13, 0x00, 0x94, 0x7b, 0x90, -0xe0, 0x12, 0x80, 0x64, 0x80, 0x94, 0x0d, 0x40, 0x47, 0x20, 0x90, 0x0a, 0x14, 0x7b, 0x75, 0xe4, -0x01, 0xf0, 0x24, 0x12, 0x90, 0x8c, 0x12, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x16, 0x7b, -0x51, 0x12, 0x90, 0xb3, 0x14, 0x7b, 0x51, 0x12, 0x12, 0x45, 0x57, 0x6f, 0x7b, 0x90, 0x12, 0x16, -0xdf, 0x51, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x2f, 0xe4, 0x55, 0xfe, 0xff, 0x6f, 0x02, 0x7e, 0x57, -0x7f, 0x7a, 0x7c, 0x81, 0x7d, 0x7a, 0x12, 0x82, 0xb6, 0x70, 0x7e, 0x7e, 0xe9, 0x7f, 0x7f, 0x7c, -0x6d, 0x7d, 0x70, 0x12, 0x90, 0xb6, 0xe9, 0x7e, 0x01, 0x74, 0x90, 0xf0, 0xeb, 0x7e, 0x05, 0x74, -0x90, 0xf0, 0x66, 0x7f, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x7f, 0x7e, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, -0x13, 0x74, 0x90, 0xf0, 0x23, 0x7f, 0x64, 0x74, 0x90, 0xf0, 0x1d, 0x7f, 0x4e, 0x74, 0x90, 0xf0, -0x1f, 0x7f, 0x1e, 0x74, 0x90, 0xf0, 0x21, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x27, 0x7f, 0xc3, 0x74, -0x90, 0xf0, 0x25, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x29, 0x7f, 0x46, 0x74, 0x90, 0xf0, 0x2b, 0x7f, -0x28, 0x74, 0x90, 0xf0, 0x33, 0x7f, 0x05, 0x74, 0x90, 0xf0, 0x2f, 0x7f, 0x28, 0x74, 0x90, 0xf0, -0x39, 0x7f, 0x04, 0x74, 0x90, 0xf0, 0x37, 0x7f, 0x0f, 0x74, 0x90, 0xf0, 0x35, 0x7f, 0x78, 0x74, -0x90, 0xf0, 0x3f, 0x7f, 0x02, 0x74, 0x90, 0xf0, 0x3d, 0x7f, 0x0f, 0x74, 0x90, 0xf0, 0x3b, 0x7f, -0x46, 0x74, 0x90, 0xf0, 0x51, 0x7f, 0x29, 0x74, 0x90, 0xf0, 0x4f, 0x7f, 0x3c, 0x74, 0x90, 0xf0, -0x4d, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x57, 0x7f, 0x0a, 0x74, 0x90, 0xf0, 0x55, 0x7f, 0x14, 0x74, -0x90, 0xf0, 0x53, 0x7f, 0x1e, 0x74, 0x90, 0xf0, 0x58, 0x7f, 0xa8, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, -0x7f, 0x90, 0x74, 0x5a, 0xf0, 0x34, 0x74, 0xa3, 0xf0, 0x18, 0x7f, 0x90, 0x74, 0x5c, 0xf0, 0x31, -0x74, 0xa3, 0xf0, 0x4a, 0x7f, 0x90, 0x74, 0x5e, 0xf0, 0x2e, 0x74, 0xa3, 0xf0, 0xd4, 0x7f, 0x90, -0x74, 0x60, 0xf0, 0x35, 0x74, 0xa3, 0xf0, 0xf1, 0x7f, 0x90, 0x74, 0x62, 0xf0, 0x35, 0x74, 0xa3, -0xf0, 0xf1, 0x7f, 0x90, 0x74, 0x64, 0xf0, 0x3c, 0x74, 0xa3, 0xf0, 0xf9, 0x7f, 0x90, 0x74, 0x06, -0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x58, 0x7f, 0x90, 0x74, 0x09, 0xf0, 0x06, 0x7f, 0x90, 0x74, 0x0b, -0xf0, 0xb4, 0x7f, 0x90, 0x74, 0x0d, 0xf0, 0x34, 0x7f, 0x90, 0x74, 0x0f, 0xf0, 0x0c, 0x7f, 0x90, -0x74, 0x11, 0xf0, 0xfb, 0x7f, 0x90, 0x74, 0x13, 0xf0, 0xe7, 0x7f, 0x90, 0x74, 0x15, 0xf0, 0xce, -0x7f, 0x90, 0x74, 0x2d, 0xf0, 0x06, 0x7e, 0x90, 0xe4, 0xf4, 0xa3, 0xf0, 0x7f, 0x74, 0x90, 0xf0, -0x69, 0x7f, 0xff, 0x74, 0x90, 0xf0, 0x81, 0x7a, 0x02, 0x74, 0x22, 0xf0, 0x45, 0xc2, 0x7b, 0x90, -0x74, 0xbe, 0xf0, 0x03, 0x90, 0xe4, 0xc3, 0x7b, 0x90, 0xf0, 0xbf, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, -0x12, 0xfd, 0x80, 0x16, 0x12, 0xff, 0xdb, 0x18, 0x16, 0x12, 0x12, 0x68, 0x0f, 0x17, 0xae, 0xff, -0x12, 0x04, 0xdb, 0x18, 0xc3, 0xff, 0x7b, 0x90, 0xe0, 0xbd, 0xff, 0x9f, 0x7b, 0x90, 0xe0, 0xbc, -0xfe, 0x9e, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x4e, 0xff, 0x02, 0x12, 0x22, 0xc5, 0x16, 0x12, 0xff, -0xbe, 0x16, 0x08, 0x50, 0x7b, 0x90, 0x12, 0xbc, 0x4e, 0x16, 0x45, 0xd2, 0x16, 0x12, 0xff, 0xc5, -0xee, 0xc3, 0x80, 0x64, 0x84, 0x94, 0x15, 0x50, 0x78, 0xef, 0xc3, 0x02, 0xce, 0x33, 0xce, 0x33, -0xf9, 0xd8, 0x16, 0x12, 0x90, 0x68, 0xc3, 0x7b, 0x04, 0xe0, 0x80, 0xf0, 0x90, 0xdf, 0xbc, 0x7b, -0xfc, 0xe0, 0xe0, 0xa3, 0x24, 0xfd, 0xfe, 0xa9, 0x34, 0xec, 0x12, 0x2e, 0xfa, 0x16, 0xed, 0xf0, -0x57, 0x24, 0xec, 0xfe, 0xd1, 0x34, 0x7b, 0x90, 0xf0, 0xc1, 0xce, 0xa3, 0x75, 0xf0, 0x01, 0x0d, -0xfd, 0xe4, 0x7b, 0x90, 0xe0, 0xc1, 0xa3, 0xfe, 0xff, 0xe0, 0x16, 0x12, 0x40, 0xbe, 0xef, 0x2b, -0x0d, 0xa8, 0x80, 0x08, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x18, 0x12, 0x12, 0x21, 0x79, 0x16, -0x0d, 0xa8, 0x80, 0x08, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0xc3, 0xff, 0x7b, 0x90, 0xe0, 0xc2, -0xf0, 0x9f, 0x7b, 0x90, 0xe0, 0xc1, 0xf0, 0x9e, 0x30, 0x80, 0x7b, 0x90, 0xe0, 0xc1, 0xa3, 0xfe, -0xa8, 0xe0, 0x08, 0x0d, 0x03, 0x80, 0x16, 0x12, 0xd8, 0x72, 0xff, 0xfb, 0x7b, 0x90, 0xe0, 0xc0, -0xff, 0x2f, 0x7b, 0x90, 0xe0, 0xbf, 0x12, 0x3e, 0x79, 0x16, 0x0d, 0xa8, 0x80, 0x08, 0x12, 0x03, -0x72, 0x16, 0xfb, 0xd8, 0x7b, 0x90, 0x12, 0xc1, 0x81, 0x18, 0x18, 0x12, 0xcf, 0x88, 0x16, 0x12, -0x90, 0xeb, 0xbe, 0x7b, 0x60, 0xe0, 0x14, 0x04, 0x80, 0xf0, 0x90, 0x0f, 0xbe, 0x7b, 0x03, 0x74, -0x0d, 0xf0, 0x64, 0xed, 0x60, 0x02, 0x02, 0x03, 0x1c, 0x45, 0x0d, 0x05, 0x0d, 0xe5, 0x05, 0x64, -0x03, 0x60, 0x45, 0x02, 0x30, 0x1a, 0x03, 0x45, 0x16, 0x12, 0x90, 0x43, 0xc3, 0x7b, 0x24, 0xe0, -0xff, 0x07, 0x16, 0x12, 0xa8, 0x80, 0x08, 0x07, 0x03, 0x80, 0x16, 0x12, 0xd8, 0x72, 0xff, 0xfb, -0x16, 0x12, 0x22, 0xea, 0x7f, 0x90, 0xe0, 0x67, 0xe1, 0x20, 0x90, 0x0a, 0x17, 0x7f, 0x90, 0xe0, -0x97, 0x7f, 0x80, 0xf0, 0x90, 0x08, 0x97, 0x7f, 0x90, 0xe0, 0x17, 0x7f, 0x90, 0xf0, 0x97, 0x7f, -0xff, 0xe0, 0x7f, 0x90, 0xe0, 0x95, 0x60, 0x6f, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x24, -0x03, 0x24, 0x46, 0x02, 0x90, 0x9b, 0x97, 0x7f, 0x90, 0xe0, 0x95, 0x7f, 0xe0, 0xf0, 0x02, 0xb4, -0xe4, 0x23, 0x7b, 0x90, 0xf0, 0x07, 0x7a, 0x90, 0xf0, 0xb8, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xf7, -0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xf9, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xfb, 0xf0, 0xa3, 0x7a, 0x90, -0xf0, 0xfd, 0x1c, 0xc2, 0x12, 0xd3, 0x50, 0x51, 0x81, 0x94, 0x45, 0x50, 0x7a, 0x90, 0x74, 0x80, -0xf0, 0x01, 0x2f, 0x7d, 0x55, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x2e, 0x7d, 0x55, 0x7c, -0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x90, 0xe4, 0x08, 0x7b, 0x90, 0xf0, 0xba, 0x7a, 0xa3, 0xf0, -0x90, 0xf0, 0x00, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x02, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x04, 0x7b, -0xa3, 0xf0, 0x90, 0xf0, 0x06, 0x7b, 0xc2, 0xf0, 0x90, 0x19, 0xd7, 0x7a, 0x03, 0x74, 0xc2, 0xf0, -0xe4, 0x1d, 0x7a, 0x90, 0xf0, 0x88, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x95, 0x94, 0xd3, 0x40, 0x02, -0xe0, 0x07, 0x10, 0x94, 0x02, 0x50, 0x01, 0x80, 0x92, 0xc3, 0x90, 0x14, 0xbf, 0x7a, 0x02, 0x74, -0x12, 0xf0, 0x4f, 0x51, 0x88, 0x94, 0x02, 0x50, 0x46, 0xc2, 0x51, 0x12, 0x94, 0x4f, 0x50, 0x85, -0xe4, 0x11, 0x7b, 0x90, 0xf0, 0x0c, 0x7b, 0x90, 0xf0, 0x09, 0x7b, 0x90, 0xf0, 0x0a, 0xf0, 0xa3, -0x12, 0x80, 0x7b, 0x90, 0x12, 0x0d, 0x67, 0x51, 0x7b, 0x90, 0xe0, 0x0d, 0x02, 0x70, 0xe0, 0xa3, -0x08, 0x70, 0xff, 0x74, 0x7b, 0x90, 0xf0, 0x0d, 0xf0, 0xa3, 0x90, 0xc3, 0x89, 0x7a, 0x94, 0xe0, -0x90, 0xff, 0x88, 0x7a, 0x94, 0xe0, 0x50, 0xff, 0x12, 0x03, 0x67, 0x51, 0x14, 0x20, 0xd3, 0x23, -0x7a, 0x90, 0xe0, 0x8b, 0x28, 0x94, 0x7a, 0x90, 0xe0, 0x8a, 0x0a, 0x94, 0x0a, 0x40, 0x7f, 0x90, -0xe0, 0x67, 0xe1, 0x30, 0x02, 0x14, 0xf2, 0x6f, 0x7a, 0x90, 0xe4, 0x8a, 0xf0, 0x75, 0x02, 0x01, -0x8c, 0x24, 0x90, 0xe4, 0x8a, 0x7a, 0xa3, 0xf0, 0x22, 0xf0, 0x7b, 0x90, 0xe0, 0x4b, 0xf0, 0x04, -0xd3, 0xe0, 0x2f, 0x94, 0x58, 0x40, 0x7e, 0x90, 0xe0, 0xf3, 0xe0, 0x25, 0x90, 0xff, 0xf2, 0x7e, -0x33, 0xe0, 0xef, 0xfe, 0x01, 0x24, 0xe4, 0xff, 0xfe, 0x3e, 0x7b, 0x90, 0xe0, 0x58, 0x9f, 0xc3, -0xe4, 0xff, 0x90, 0x9e, 0x59, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x58, 0x7b, 0x90, 0xf0, -0x56, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x4b, 0x7b, 0x90, 0xf0, 0x67, 0x7f, 0x30, 0xe0, 0x0f, 0xe4, -0x7b, 0x90, 0xe0, 0x59, 0xa3, 0xfe, 0xff, 0xe0, 0x27, 0x7d, 0x55, 0x7c, 0x6f, 0x12, 0x90, 0x57, -0xf2, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x16, 0x12, 0x52, 0x57, 0x6f, 0x7b, 0x90, -0xe0, 0x4b, 0x20, 0x24, 0xe4, 0xff, 0x52, 0x34, 0x90, 0xfe, 0x4c, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, -0x6e, 0x12, 0x12, 0xf0, 0x80, 0x68, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, 0x15, 0x50, 0x7b, 0x90, -0xe0, 0x4e, 0xa3, 0xfe, 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x7b, 0x90, 0xf0, 0x4e, -0xef, 0xa3, 0x90, 0xf0, 0x4f, 0x7b, 0x24, 0xe0, 0xff, 0x04, 0x7b, 0x90, 0xe0, 0x4e, 0x00, 0x34, -0xef, 0xfe, 0x03, 0x78, 0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x12, 0xff, 0x80, 0x68, -0x7b, 0x90, 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x50, 0x7b, 0x90, 0xef, 0x51, 0x90, 0xf0, 0x4b, 0x7b, -0x30, 0xe0, 0x71, 0xe0, 0x7b, 0x90, 0xe0, 0x51, 0x90, 0xff, 0x50, 0x7b, 0xfe, 0xe0, 0x9f, 0xc3, -0x0c, 0x40, 0x7b, 0x90, 0xee, 0x52, 0x90, 0xf0, 0x53, 0x7b, 0xf0, 0xef, 0x0d, 0x80, 0x7b, 0x90, -0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x52, 0x7b, 0x90, 0xee, 0x53, 0x90, 0xf0, 0x53, 0x7b, 0xff, 0xe0, -0x00, 0x7e, 0x00, 0x7c, 0x6a, 0x7d, 0x24, 0x12, 0xac, 0x7a, 0xad, 0x06, 0x90, 0x07, 0x52, 0x7b, -0x7f, 0xe0, 0xfe, 0x00, 0x2d, 0xef, 0xec, 0xff, 0xfe, 0x3e, 0x7b, 0x90, 0xf0, 0x54, 0xef, 0xa3, -0xc3, 0xf0, 0x7b, 0x90, 0xe0, 0x57, 0x90, 0x9f, 0x56, 0x7b, 0x9e, 0xe0, 0x17, 0x50, 0x7b, 0x90, -0xe0, 0x54, 0xa3, 0xff, 0x90, 0xe0, 0x56, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x4b, 0x7b, -0x90, 0xe0, 0x58, 0x7b, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x98, 0x33, 0xa3, 0x17, 0x92, 0x17, 0x20, -0xe4, 0x05, 0x22, 0xf5, 0x23, 0xf5, 0x12, 0x7f, 0x11, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x90, 0x7a, -0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x90, 0x7a, 0xc4, 0xe0, 0x07, 0x54, 0x7a, 0x90, 0xf0, 0x92, -0x01, 0x64, 0x0a, 0x60, 0xff, 0xe0, 0x02, 0x64, 0x04, 0x60, 0xb4, 0xef, 0x04, 0x05, 0x01, 0x7f, -0x02, 0x80, 0x00, 0x7f, 0x7a, 0x90, 0xef, 0x92, 0x90, 0xf0, 0xa8, 0x7a, 0xff, 0xe0, 0x00, 0x7e, -0x11, 0x7d, 0x51, 0x7c, 0x6f, 0x12, 0x7c, 0x57, 0x12, 0x51, 0x54, 0x49, 0x7e, 0x90, 0xe4, 0xf2, -0xa3, 0xf0, 0x13, 0x74, 0x7c, 0xf0, 0x12, 0x52, 0x61, 0x49, 0x7e, 0x90, 0xe0, 0xf2, 0xa3, 0xfe, -0xff, 0xe0, 0x16, 0x7d, 0x52, 0x7c, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x17, 0x7f, 0x52, 0x7e, 0x00, -0x12, 0x06, 0x57, 0x6f, 0x54, 0x7c, 0x49, 0x12, 0x7d, 0x61, 0x7c, 0x10, 0x7f, 0x53, 0x7e, 0x40, -0x12, 0x00, 0x57, 0x6f, 0x2e, 0x7d, 0x49, 0x12, 0x7d, 0x6b, 0x12, 0x2f, 0x6b, 0x49, 0x27, 0x7d, -0x55, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7a, 0x90, 0xe0, 0xa8, 0x25, 0xff, 0x24, 0xe0, -0xf5, 0xad, 0xe4, 0x82, 0x3a, 0x34, 0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfd, 0x93, 0x01, 0x7b, 0x90, -0xcd, 0x47, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xef, 0xbd, 0x3a, 0x90, 0x93, 0x3f, 0x7b, 0x7c, 0xf0, -0x12, 0x91, 0x54, 0x49, 0x7f, 0x90, 0xe0, 0x71, 0xfe, 0x64, 0x0b, 0x60, 0xff, 0xe0, 0x00, 0x7e, -0x12, 0x7d, 0x92, 0x7c, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x15, 0x7f, 0x56, 0x7e, 0x01, 0x12, 0x00, -0x57, 0x6f, 0x15, 0x7d, 0x56, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x2a, 0x7d, 0x67, 0x7c, -0x0b, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0xc2, 0x57, 0x22, 0x58, 0x7a, 0x90, 0xe0, 0xa9, 0x7e, 0xff, -0x7d, 0x00, 0x12, 0x10, 0x57, 0x6f, 0x7d, 0x22, 0x7f, 0x10, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, -0x7c, 0x22, 0xe4, 0x55, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x52, 0x12, 0x12, 0xe8, 0x1e, 0x34, -0x06, 0x7d, 0x83, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x06, 0x7f, 0x84, -0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x7e, 0x90, 0xe0, 0x05, 0x7b, 0x90, 0xf0, 0x61, 0x7e, 0x90, -0xe0, 0x02, 0xa3, 0xff, 0x90, 0xe0, 0x5f, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x12, 0xf0, 0x3e, 0x19, -0x72, 0x90, 0x93, 0x45, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x44, 0x12, 0x83, 0x57, 0x6f, 0x19, 0x12, -0x90, 0x3e, 0x41, 0x72, 0x90, 0x93, 0xbe, 0x7b, 0xe0, 0xf0, 0x90, 0xff, 0x0b, 0x7e, 0xef, 0xf0, -0x72, 0x90, 0x93, 0x3d, 0x7e, 0x90, 0xf0, 0x45, 0x7e, 0x90, 0xe0, 0x05, 0xe0, 0x30, 0x90, 0x1e, -0x62, 0x7b, 0xbc, 0x74, 0x74, 0xf0, 0x12, 0xff, 0xd1, 0x17, 0x80, 0x64, 0x3c, 0x70, 0x18, 0x12, -0xbf, 0xcb, 0x02, 0x02, 0x29, 0x80, 0x64, 0xef, 0x70, 0x03, 0x80, 0x2f, 0x90, 0x15, 0x62, 0x7b, -0x43, 0x74, 0x74, 0xf0, 0x12, 0x01, 0xd1, 0x17, 0xbf, 0xff, 0x1e, 0x80, 0x18, 0x12, 0xbf, 0xcb, -0x0a, 0x02, 0x7b, 0x90, 0x74, 0x62, 0x75, 0xfa, 0xf1, 0xf0, 0x0b, 0x80, 0x03, 0xbf, 0x90, 0x0b, -0x62, 0x7b, 0x05, 0x74, 0xf0, 0x75, 0x12, 0x0f, 0x8c, 0x24, 0x7b, 0x90, 0xe0, 0x62, 0xa3, 0xfe, -0x90, 0xe0, 0xba, 0x7b, 0x19, 0x12, 0x12, 0x04, 0x57, 0x6f, 0x18, 0x12, 0x12, 0x12, 0xd2, 0x17, -0xbf, 0xff, 0x21, 0x80, 0x18, 0x12, 0xf0, 0x12, 0x18, 0x12, 0xbf, 0xcb, 0x09, 0x02, 0x7b, 0x90, -0xe4, 0xb8, 0xf0, 0x75, 0x80, 0x0a, 0xbf, 0x0b, 0x0b, 0x03, 0x7b, 0x90, 0x74, 0xb8, 0x75, 0xff, -0xf6, 0xf0, 0x24, 0x12, 0x90, 0x8c, 0xb8, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x12, 0xff, 0x92, 0x4a, -0x17, 0x12, 0xff, 0xd3, 0x80, 0xbf, 0x7d, 0x0a, 0x7c, 0x11, 0x7f, 0x84, 0x7e, 0x82, 0x80, 0x58, -0x90, 0x13, 0x05, 0x7e, 0x7d, 0xe0, 0x7c, 0x11, 0x7f, 0x84, 0x20, 0x82, 0x04, 0xe7, 0x52, 0x7e, -0x02, 0x80, 0x4c, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x33, 0x8e, 0x34, 0x8f, 0xfc, 0xe4, 0x7b, 0xfd, -0x7a, 0x43, 0x79, 0x17, 0xf8, 0x08, 0x24, 0x12, 0x78, 0xd3, 0x12, 0x05, 0x4b, 0x25, 0x24, 0xef, -0xff, 0x99, 0x34, 0xee, 0xfe, 0x56, 0x34, 0xed, 0xfd, 0xdb, 0x34, 0xec, 0xfc, 0x01, 0x7c, 0x90, -0x12, 0x20, 0xaa, 0x25, 0xe5, 0xd3, 0x94, 0x34, 0xe5, 0x82, 0x94, 0x33, 0x40, 0x05, 0x90, 0x0c, -0x24, 0x7c, 0x25, 0x12, 0x00, 0xb6, 0x00, 0x00, 0x80, 0x07, 0xd3, 0x35, 0x34, 0xe5, 0x88, 0x94, -0x33, 0xe5, 0x03, 0x94, 0x0c, 0x40, 0x7c, 0x90, 0x12, 0x24, 0xb6, 0x25, 0x00, 0x00, 0x06, 0x00, -0x1e, 0x80, 0xe5, 0xd3, 0x94, 0x34, 0xe5, 0x8e, 0x94, 0x33, 0x90, 0x01, 0x24, 0x7c, 0x09, 0x40, -0x25, 0x12, 0x00, 0xb6, 0x00, 0x00, 0x80, 0x05, 0x12, 0x07, 0xb6, 0x25, 0x00, 0x00, 0x04, 0x00, -0x19, 0x12, 0xc0, 0x0f, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0x90, 0x07, 0x24, 0x7c, 0x25, 0x12, -0x78, 0x72, 0x12, 0x17, 0x5f, 0x25, 0x07, 0xab, 0x06, 0xaa, 0x05, 0xa9, 0x04, 0xa8, 0x07, 0xd0, -0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x24, 0x12, 0x90, 0xc5, 0x20, 0x7c, 0x25, 0x12, 0xc0, 0xaa, -0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, 0x12, 0xfd, 0x0f, 0x19, 0x08, 0x78, 0x25, 0x12, 0x90, 0x38, -0xa0, 0x7d, 0xf0, 0xee, 0x12, 0xef, 0xe3, 0x16, 0x11, 0x7d, 0x86, 0x7c, 0x72, 0x12, 0xa2, 0x15, -0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x24, 0x7c, 0x25, 0x12, 0xef, 0x72, 0xfc, 0x24, 0xee, 0xff, -0xff, 0x34, 0x34, 0xed, 0xfd, 0xff, 0x34, 0xec, 0xfc, 0xff, 0x54, 0xef, 0xfe, 0x03, 0x90, 0xe4, -0x28, 0x7c, 0xa3, 0xf0, 0xf0, 0xce, 0xd0, 0xc0, 0x16, 0x12, 0x30, 0x88, 0xfd, 0x40, 0x19, 0x12, -0xad, 0x0f, 0x90, 0x07, 0x29, 0x7c, 0xc4, 0xe0, 0x33, 0x33, 0xc0, 0x54, 0xed, 0xff, 0x17, 0x12, -0x7d, 0x5f, 0x7c, 0x12, 0x12, 0x86, 0x15, 0x72, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xc2, 0x22, -0x90, 0x44, 0x4b, 0x7e, 0xd3, 0xe0, 0x00, 0x94, 0x03, 0x50, 0x4c, 0x02, 0x7f, 0xbc, 0x7e, 0x1c, -0x12, 0x85, 0xf0, 0x6e, 0x16, 0x12, 0x7f, 0xea, 0x7e, 0x1d, 0x12, 0x85, 0xf0, 0x6e, 0x17, 0x12, -0x12, 0xa1, 0x93, 0x17, 0x80, 0x94, 0x03, 0x40, 0x19, 0x12, 0x12, 0x23, 0x6c, 0x17, 0x80, 0x94, -0x03, 0x40, 0x19, 0x12, 0x12, 0x23, 0x80, 0x16, 0x12, 0xff, 0x0f, 0x17, 0x12, 0xd3, 0x3a, 0x18, -0x80, 0x64, 0x40, 0x98, 0x90, 0x15, 0xbc, 0x7b, 0xf0, 0xec, 0xed, 0xa3, 0x12, 0xf0, 0xa1, 0x17, -0x7b, 0x90, 0xec, 0xbf, 0xa3, 0xf0, 0xf0, 0xed, 0x44, 0xd2, 0x44, 0x12, 0x90, 0x86, 0x0b, 0x7e, -0x90, 0xe0, 0x3d, 0x72, 0xfe, 0x93, 0x8e, 0xef, 0xa4, 0xf0, 0x90, 0xff, 0xbc, 0x7b, 0xf0, 0xe5, -0xa3, 0xf0, 0xf0, 0xef, 0x44, 0x30, 0x12, 0x0d, 0xc5, 0x16, 0x17, 0x12, 0x90, 0xfb, 0xbc, 0x7b, -0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, 0xe0, 0x4b, 0x12, 0xff, 0xc5, 0x16, 0x07, 0xa8, 0x80, 0x08, -0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x16, 0x12, 0x90, 0x60, 0x46, 0x7e, 0xf0, 0x8f, 0x24, 0x12, -0x12, 0x8c, 0x8f, 0x16, 0x0d, 0x40, 0x7b, 0x90, 0xe4, 0xb3, 0xa3, 0xf0, 0xf0, 0x04, 0x18, 0x12, -0x80, 0xb3, 0x12, 0x18, 0x59, 0x16, 0xc3, 0xfe, 0x16, 0x12, 0x50, 0x98, 0x90, 0x12, 0xb3, 0x7b, -0xf0, 0xe4, 0x04, 0xa3, 0x12, 0xf0, 0x59, 0x16, 0x7e, 0x90, 0xf0, 0x46, 0xef, 0xa3, 0xc0, 0xf0, -0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, 0x12, 0xfd, 0x34, 0x19, 0x16, 0x12, 0xd8, 0x72, 0x12, 0xfb, -0xcd, 0x16, 0x1c, 0x7d, 0x82, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, 0xd0, 0xaf, 0x12, 0xd0, -0xc5, 0x16, 0x07, 0x78, 0x16, 0x12, 0xd8, 0x72, 0xff, 0xfb, 0x7e, 0x90, 0xee, 0x4c, 0x16, 0x12, -0x50, 0xba, 0x12, 0x04, 0xfc, 0x17, 0x7a, 0xfe, 0x79, 0x7e, 0x7c, 0x4e, 0x7d, 0x7e, 0x12, 0x4e, -0xa1, 0x56, 0x90, 0x22, 0x37, 0x7e, 0xff, 0xe0, 0x00, 0x7e, 0x7b, 0x90, 0xe0, 0xbf, 0xa3, 0xfc, -0xfd, 0xe0, 0x24, 0x12, 0xef, 0x7a, 0x08, 0x24, 0xe4, 0xff, 0xfe, 0x3e, 0x78, 0xef, 0x12, 0x04, -0x72, 0x16, 0xfb, 0xd8, 0x90, 0xff, 0x2c, 0x7e, 0x8f, 0xee, 0x12, 0xf0, 0x8c, 0x24, 0x7e, 0x90, -0x12, 0x2e, 0x5d, 0x18, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0x90, 0xf9, 0x2e, 0x7e, -0x18, 0x12, 0xc3, 0xa8, 0x18, 0x12, 0x50, 0xf1, 0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, -0x12, 0x30, 0x5d, 0x18, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0x90, 0xf9, 0x30, 0x7e, -0x18, 0x12, 0xd3, 0xa8, 0x18, 0x12, 0x40, 0xf1, 0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, -0xe0, 0x2c, 0xa3, 0xff, 0x90, 0xe0, 0xc1, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, 0x7b, 0x90, -0xf0, 0xbc, 0xf0, 0xa3, 0x17, 0x12, 0xc3, 0x0f, 0x64, 0xec, 0x94, 0x80, 0x40, 0x82, 0x90, 0x2c, -0x30, 0x7e, 0xc4, 0xe0, 0x0f, 0x54, 0x90, 0xff, 0xbd, 0x7b, 0x9f, 0xe0, 0x7b, 0x90, 0xe0, 0xbc, -0x00, 0x94, 0x17, 0x50, 0xa2, 0xec, 0x13, 0xe7, 0xed, 0xff, 0xcf, 0x13, 0x17, 0x12, 0x90, 0xa2, -0xbc, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x80, 0x8c, 0x12, 0xc9, 0x6c, 0x17, 0x81, 0x94, -0x07, 0x40, 0x01, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0xc0, 0xf0, 0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, -0x90, 0xfd, 0xbd, 0x7b, 0xc4, 0xe0, 0xf0, 0x54, 0x90, 0xfe, 0xc2, 0x7b, 0x24, 0xe0, 0xff, 0x00, -0x7b, 0x90, 0xe0, 0xc1, 0x90, 0x3e, 0xa0, 0x7d, 0x17, 0x12, 0x7d, 0x63, 0x7c, 0x19, 0x12, 0x82, -0x15, 0x72, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x16, 0x12, 0xff, 0x80, 0x16, 0x12, 0x50, 0xbe, -0x12, 0x03, 0x4b, 0x16, 0x16, 0x12, 0xff, 0x80, 0x7e, 0x7a, 0x38, 0x79, 0x7e, 0x7c, 0x38, 0x7d, -0x56, 0x02, 0x12, 0xa1, 0x4f, 0x51, 0x84, 0x94, 0x21, 0x50, 0x70, 0x12, 0xc0, 0x80, 0xa2, 0xd0, -0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x7a, 0x90, 0xf0, 0xe1, 0xf0, 0xa3, 0xd1, 0xa2, 0xaf, 0x92, -0xd0, 0xd0, 0x72, 0x12, 0xe4, 0x23, 0x7a, 0x90, 0xf0, 0xa0, 0x90, 0x22, 0x98, 0x7a, 0x25, 0x12, -0x12, 0x8e, 0x93, 0x51, 0xfc, 0xe4, 0x12, 0xfd, 0xb8, 0x24, 0x7a, 0x90, 0x12, 0x98, 0xaa, 0x25, -0x7a, 0x90, 0x12, 0x9c, 0x8e, 0x25, 0x7a, 0x90, 0xe0, 0xaa, 0xa3, 0xfe, 0xff, 0xe0, 0xfc, 0xe4, -0x12, 0xfd, 0xb8, 0x24, 0x7a, 0x90, 0x12, 0x9c, 0xaa, 0x25, 0x7a, 0x90, 0x12, 0x96, 0x67, 0x51, -0x7a, 0x90, 0xe0, 0x96, 0x01, 0x54, 0xe0, 0xf0, 0xa3, 0xfe, 0xff, 0xe0, 0x70, 0x4e, 0x7d, 0x04, -0x80, 0x01, 0x7d, 0x02, 0x90, 0x00, 0xa0, 0x7a, 0xf0, 0xed, 0x01, 0xbe, 0xbf, 0x06, 0x03, 0xfd, -0x51, 0x12, 0x90, 0xe9, 0x96, 0x7a, 0xb4, 0xe0, 0x08, 0x01, 0xe0, 0xa3, 0xfe, 0xb4, 0x12, 0x03, -0xd5, 0x54, 0x7a, 0x90, 0xe0, 0x96, 0x01, 0xb4, 0xa3, 0x08, 0xb4, 0xe0, 0x03, 0xff, 0x55, 0x12, -0x90, 0xbf, 0xa0, 0x7a, 0x60, 0xe0, 0x12, 0x66, 0x23, 0x72, 0x7a, 0x90, 0xe0, 0xbf, 0x0b, 0x60, -0x90, 0xe4, 0xbe, 0x7a, 0x90, 0xf0, 0xbf, 0x7a, 0x14, 0xe0, 0x90, 0xf0, 0x9c, 0x7a, 0x25, 0x12, -0x78, 0x72, 0x12, 0x08, 0x38, 0x25, 0x7a, 0x90, 0xe0, 0x94, 0xff, 0x2f, 0x7a, 0x90, 0xe0, 0x93, -0x90, 0x3e, 0xa1, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0x12, 0x98, 0x72, 0x25, 0x05, 0x78, -0x25, 0x12, 0x90, 0x38, 0xa3, 0x7a, 0xf0, 0xee, 0xa3, 0xfc, 0xf0, 0xef, 0x90, 0xfd, 0x09, 0x7f, -0xff, 0xe0, 0x00, 0x7e, 0x24, 0x12, 0xef, 0x7a, 0x06, 0x78, 0x51, 0x12, 0xd8, 0xa5, 0xff, 0xfb, -0x7a, 0x90, 0xee, 0xa3, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x12, 0xd2, 0x80, 0x22, 0x23, 0x03, 0x7f, -0x60, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x6c, 0x7c, 0xf0, 0xef, 0xe1, 0x20, 0x02, 0x03, 0xbe, 0x4f, -0x07, 0x7f, 0x66, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x6d, 0x7c, 0xf0, 0xef, 0xff, 0xf4, 0x00, 0x7e, -0x05, 0x7d, 0x66, 0x7c, 0x6f, 0x12, 0x90, 0x57, 0x6d, 0x7c, 0x20, 0xe0, 0x03, 0xe0, 0x4f, 0x02, -0x7f, 0xbe, 0x7e, 0x23, 0x12, 0x71, 0xf0, 0x6e, 0x7c, 0x90, 0xef, 0x89, 0xd3, 0xf0, 0x17, 0x94, -0x03, 0x40, 0x4f, 0x02, 0xc3, 0xae, 0x7c, 0x90, 0xe0, 0x71, 0x40, 0x94, 0x7a, 0x40, 0x70, 0x7d, -0x4f, 0x12, 0x7f, 0xd7, 0x7e, 0x3d, 0x12, 0x71, 0xf0, 0x6e, 0x01, 0xbe, 0xbf, 0x0b, 0x08, 0x42, -0x3d, 0x7d, 0x71, 0x7c, 0x52, 0x7f, 0x1d, 0x80, 0x3d, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0xbe, 0xf0, -0x0d, 0x01, 0x52, 0xbf, 0x7d, 0x0a, 0x7c, 0x3d, 0x7f, 0x71, 0x7e, 0x42, 0x80, 0x00, 0x7d, 0x08, -0x7c, 0x3d, 0x7f, 0x71, 0x7e, 0x42, 0x12, 0x01, 0x57, 0x6f, 0x1b, 0x7d, 0x4f, 0x12, 0x7f, 0xd7, -0x12, 0x03, 0xbf, 0x4f, 0x02, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x7f, 0x57, 0x12, 0x0c, 0xbf, 0x4f, -0x08, 0x7f, 0x4f, 0x12, 0x7f, 0xcd, 0x12, 0x30, 0xcd, 0x4f, 0x20, 0x7f, 0x00, 0x7e, 0x6f, 0x12, -0x7d, 0x57, 0x7c, 0x1d, 0xe4, 0x71, 0xfe, 0xff, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x1b, 0x7f, 0x71, -0x7e, 0xff, 0x12, 0x00, 0x57, 0x6f, 0x0c, 0x80, 0x7c, 0x90, 0xe4, 0x71, 0xf0, 0x75, 0x12, 0x01, -0x8c, 0x24, 0x07, 0x80, 0x90, 0xe4, 0x71, 0x7c, 0xa3, 0xf0, 0x12, 0xf0, 0xf3, 0x07, 0x40, 0x12, -0x12, 0x62, 0x96, 0x21, 0x7d, 0x22, 0x7c, 0x1d, 0x7e, 0x71, 0x12, 0x00, 0x57, 0x6f, 0x1d, 0x7d, -0x71, 0x7c, 0x7e, 0x22, 0x12, 0x00, 0x57, 0x6f, 0x1d, 0x7d, 0x71, 0x7c, 0x7c, 0x22, 0xe4, 0x71, -0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x0f, 0x7d, -0x81, 0x7c, 0xba, 0x7f, 0xbe, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x00, 0x7f, 0x80, 0x7e, 0x01, -0x12, 0x00, 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x34, 0x12, 0xe4, 0x1e, 0x7e, 0x90, -0xf0, 0x07, 0x7b, 0x90, 0xf0, 0xb7, 0x7b, 0x90, 0xe0, 0x61, 0x90, 0xff, 0x05, 0x7e, 0xb5, 0xe0, -0x14, 0x07, 0x7b, 0x90, 0xe0, 0x5f, 0xa3, 0xfe, 0xff, 0xe0, 0x7e, 0x90, 0xe0, 0x02, 0x70, 0x6e, -0xa3, 0x03, 0x6f, 0xe0, 0x0a, 0x60, 0x90, 0xe4, 0x07, 0x7e, 0x90, 0xf0, 0xb7, 0x7b, 0xf0, 0x04, -0x2b, 0x12, 0x7f, 0xb2, 0x12, 0x14, 0xd8, 0x50, 0x03, 0x64, 0x70, 0x4e, 0x7d, 0x0e, 0x7c, 0x14, -0xff, 0x83, 0x12, 0xfe, 0x57, 0x6f, 0x53, 0x12, 0x80, 0xe3, 0x90, 0x1a, 0xbc, 0x7b, 0x70, 0xe0, -0xa3, 0x02, 0x70, 0xe0, 0xfe, 0x05, 0x01, 0x7f, 0x04, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x14, 0x7d, -0x83, 0x7c, 0x6f, 0x12, 0x7f, 0x57, 0x12, 0x2f, 0xd8, 0x50, 0x70, 0x4e, 0xfe, 0x05, 0x01, 0x7f, -0x04, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x2f, 0x7d, 0x83, 0x7c, 0x6f, 0x12, 0xc0, 0x57, 0xa2, 0xd0, -0x92, 0xaf, 0xc2, 0xd1, 0x7f, 0xaf, 0x7e, 0x42, 0x12, 0x83, 0xf0, 0x6e, 0x7b, 0x90, 0xef, 0xbe, -0xd3, 0xf0, 0x39, 0x94, 0x03, 0x40, 0x80, 0xe4, 0x90, 0x08, 0xbe, 0x7b, 0x90, 0xe0, 0x9c, 0x6a, -0x90, 0x93, 0x0d, 0x7e, 0x90, 0xf0, 0x07, 0x7e, 0xd3, 0xe0, 0x08, 0x94, 0x0e, 0x40, 0x7b, 0x90, -0xe0, 0xbe, 0x94, 0xd3, 0x40, 0x20, 0xe4, 0x05, 0x7e, 0x90, 0xf0, 0x07, 0xd1, 0xa2, 0xaf, 0x92, -0xd0, 0xd0, 0xa9, 0x43, 0x43, 0x04, 0x04, 0xaa, 0x19, 0x12, 0x02, 0xa6, 0x10, 0x50, 0x83, 0x7e, -0x6e, 0x12, 0x90, 0xf0, 0xbc, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, 0x83, 0xf5, 0x93, 0xe4, -0x74, 0xfe, 0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, 0x7a, 0x90, 0x12, 0xe5, 0x8e, 0x25, 0x02, 0xd3, -0x22, 0x25, 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, 0xe0, 0xa3, 0xa3, 0xfa, 0xfb, 0xe0, -0xff, 0x2f, 0x3e, 0xea, 0xd3, 0xfe, 0x9f, 0xed, 0x64, 0xee, 0xf8, 0x80, 0x64, 0xec, 0x98, 0x80, -0x25, 0x22, 0x25, 0xe0, 0xff, 0xe0, 0xfe, 0xe0, 0xef, 0xc3, 0x80, 0x64, 0xee, 0xf8, 0x80, 0x64, -0x22, 0x98, 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x2f, 0xeb, 0xea, 0xff, 0xfe, 0x3e, 0x7a, 0x90, -0xe0, 0xa1, 0xa3, 0xfc, 0xfd, 0xe0, 0x22, 0xd3, 0x7b, 0x90, 0x7d, 0x18, 0xe0, 0x11, 0xa3, 0xfe, -0xff, 0xe0, 0x64, 0x7c, 0xc3, 0x22, 0x7f, 0x90, 0xe0, 0x95, 0x80, 0x64, 0x9d, 0x22, 0xe0, 0xff, -0xfe, 0x9c, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, 0xe4, 0x22, 0xf0, 0x75, -0x02, 0x01, 0x8c, 0x24, 0x7a, 0x90, 0xff, 0xee, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, 0x7a, 0x90, -0xe0, 0xe9, 0xa3, 0xfe, 0x22, 0xe0, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x25, 0xe0, 0x22, 0xa3, 0xfe, -0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x90, 0x22, 0xb0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, -0x22, 0xff, 0x7a, 0x90, 0xe0, 0xac, 0xa3, 0xfe, 0xff, 0xe0, 0xce, 0x22, 0xe7, 0xa2, 0xce, 0x13, -0x22, 0x13, 0x7a, 0x90, 0x02, 0xe5, 0xaa, 0x25, 0xee, 0xff, 0xf0, 0x8f, 0x24, 0x02, 0x44, 0x8c, -0xf0, 0xfe, 0xef, 0xa3, 0x22, 0xf0, 0xfc, 0xe0, 0xe0, 0xa3, 0xc3, 0xfd, 0x90, 0x22, 0x97, 0x7f, -0x02, 0x74, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x95, 0x64, 0xd3, 0x94, 0x80, 0x22, 0x85, 0x7a, 0x90, -0xe4, 0xee, 0xa3, 0xf0, 0xe0, 0x22, 0xa3, 0xfe, 0xff, 0xe0, 0x10, 0x7d, 0x64, 0x7c, 0xc0, 0x22, -0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xe1, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, -0xe3, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x78, 0xf0, 0xce, 0x02, 0x13, 0xc3, 0x13, 0xce, 0xf9, 0xd8, -0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xe2, 0xf0, 0x9f, 0x7a, 0x90, 0xe0, 0xe1, 0xf0, 0x9e, 0xd1, 0xa2, -0xaf, 0x92, 0xd0, 0xd0, 0x12, 0x7f, 0x55, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xeb, 0x7a, 0xf0, 0xef, -0x7a, 0x90, 0xe4, 0xe9, 0xa3, 0xf0, 0x19, 0x74, 0x12, 0xf0, 0xce, 0x51, 0x09, 0x50, 0x7a, 0x90, -0xe4, 0xe9, 0xa3, 0xf0, 0x37, 0x74, 0x12, 0xf0, 0x78, 0x51, 0x90, 0xff, 0xeb, 0x7a, 0xfd, 0xe0, -0x00, 0x7c, 0x24, 0x12, 0x90, 0x7a, 0xe9, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x12, 0xf0, 0x78, 0x51, -0x04, 0x78, 0x51, 0x12, 0xd8, 0xa5, 0xf0, 0xfb, 0x90, 0xee, 0xe9, 0x7a, 0x90, 0xf0, 0xe3, 0x7a, -0xfa, 0xe0, 0xe0, 0xa3, 0xff, 0xfb, 0x02, 0xae, 0xfc, 0xe4, 0x12, 0xfd, 0xac, 0x51, 0x51, 0x12, -0xff, 0x78, 0xeb, 0xd3, 0xea, 0x9f, 0x90, 0x9e, 0xe5, 0x7a, 0x1f, 0x40, 0x25, 0x12, 0xc0, 0x72, -0xc0, 0x06, 0x12, 0x07, 0x78, 0x51, 0xaa, 0xfb, 0xea, 0x06, 0x95, 0x33, 0xf9, 0xe0, 0xd0, 0xf8, -0xd0, 0x07, 0x12, 0x06, 0xc5, 0x24, 0x51, 0x12, 0x80, 0xac, 0x12, 0x07, 0xb6, 0x25, 0x00, 0x00, -0x00, 0x00, 0x7a, 0x90, 0xe0, 0xeb, 0x94, 0xc3, 0x50, 0x58, 0x90, 0x32, 0xe5, 0x7a, 0x25, 0x12, -0x90, 0x8e, 0xeb, 0x7a, 0xc3, 0xe0, 0x24, 0x13, 0xff, 0x2c, 0xfc, 0xe4, 0xfe, 0xfd, 0x24, 0x12, -0x12, 0xd3, 0xac, 0x51, 0x7a, 0x90, 0x12, 0xe5, 0x72, 0x25, 0x07, 0xc0, 0x7a, 0x90, 0xe0, 0xeb, -0xe4, 0xfb, 0xf9, 0xfa, 0xd0, 0xf8, 0x12, 0x07, 0xdb, 0x68, 0x51, 0x12, 0x22, 0xac, 0x7b, 0x90, -0x74, 0x62, 0xf0, 0x43, 0x74, 0xa3, 0xf0, 0x01, 0x90, 0xe4, 0x64, 0x7b, 0x90, 0xf0, 0x65, 0x7b, -0xa3, 0xf0, 0x90, 0xf0, 0x67, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0xb2, 0x7b, 0x12, 0xf0, 0xfd, 0x18, -0xd0, 0xc0, 0x16, 0x12, 0xf5, 0x88, 0x12, 0x0d, 0xec, 0x17, 0x69, 0x74, 0xf5, 0x2f, 0x74, 0x82, -0x12, 0x7b, 0x37, 0x16, 0x16, 0xb4, 0xe4, 0xf0, 0x0d, 0xf5, 0x17, 0x12, 0x74, 0xec, 0x2f, 0x9a, -0x82, 0xf5, 0x7b, 0x74, 0x16, 0x12, 0xb4, 0x37, 0xf0, 0x0c, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, -0x90, 0xe4, 0x95, 0x7b, 0x90, 0xf0, 0x96, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x98, 0x7b, 0xa3, 0xf0, -0x90, 0xf0, 0x07, 0x7e, 0x90, 0xf0, 0x08, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x0e, 0x7e, 0xa3, 0xf0, -0x90, 0xf0, 0x14, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x1a, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x1d, 0x7e, -0x0f, 0x74, 0x90, 0xf0, 0x1f, 0x7e, 0x02, 0x74, 0x90, 0xf0, 0x2c, 0x7e, 0xf0, 0x14, 0x74, 0xa3, -0xf0, 0xff, 0x90, 0xe4, 0x32, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x34, 0x7e, 0xa3, 0xf0, 0xa5, 0x74, -0x90, 0xf0, 0x37, 0x7e, 0x0f, 0x74, 0xe4, 0xf0, 0x7e, 0x90, 0xf0, 0x46, 0xf0, 0xa3, 0x7e, 0x90, -0x74, 0x4b, 0xf0, 0x05, 0x7e, 0x90, 0x12, 0x4c, 0xda, 0x17, 0x90, 0xe4, 0x68, 0x7e, 0xa3, 0xf0, -0x90, 0xf0, 0x6a, 0x7e, 0x17, 0x12, 0x90, 0xda, 0x5a, 0x7e, 0x17, 0x12, 0x90, 0xda, 0x78, 0x7e, -0xa3, 0xf0, 0xe4, 0xf0, 0x7e, 0x90, 0xf0, 0x22, 0xf0, 0xa3, 0x7e, 0x90, 0xf0, 0x3a, 0xf0, 0xa3, -0x7e, 0x90, 0xf0, 0x50, 0xf0, 0xa3, 0x7e, 0x90, 0xf0, 0x5e, 0xf0, 0xa3, 0x7e, 0x90, 0xf0, 0x6e, -0xf0, 0xa3, 0x7e, 0x90, 0xf0, 0x7c, 0xf0, 0xa3, 0xc0, 0x22, 0x12, 0xd0, 0x88, 0x16, 0xf5, 0xe4, -0x05, 0x0d, 0xe5, 0x0d, 0xb4, 0x0d, 0xf9, 0x19, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xd0, 0xc0, -0x16, 0x12, 0xe4, 0x88, 0x0d, 0xf5, 0x16, 0x12, 0xb4, 0x22, 0xfa, 0x16, 0x17, 0x12, 0x12, 0xc0, -0xae, 0x00, 0x15, 0x7b, 0x54, 0x12, 0xd0, 0xc7, 0xc0, 0xd0, 0x12, 0xd0, 0x88, 0x16, 0x14, 0x7f, -0x83, 0x7e, 0x6e, 0x12, 0x12, 0xf0, 0x69, 0x16, 0xfe, 0x54, 0x70, 0x4e, 0x7d, 0x09, 0x7c, 0x14, -0x7f, 0x83, 0xfe, 0x02, 0x19, 0x80, 0x7b, 0x90, 0xe0, 0xbc, 0x04, 0x70, 0xe0, 0xa3, 0x02, 0x64, -0x05, 0x70, 0x7f, 0xfe, 0x80, 0x01, 0x7e, 0x04, 0x7f, 0x00, 0x7d, 0x00, 0x7c, 0x14, 0x12, 0x83, -0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xd0, 0xc0, 0x16, 0x12, 0xe4, 0x88, 0x0d, 0xf5, -0x16, 0x12, 0xb4, 0x22, 0xfa, 0x0c, 0x7d, 0x7e, 0xa4, 0x7f, 0x0c, 0x7d, 0x00, 0x7c, 0x00, 0x12, -0x7b, 0xae, 0x12, 0x30, 0xc7, 0x54, 0xd0, 0xd0, 0xd0, 0xc0, 0x16, 0x12, 0x7f, 0x88, 0x7e, 0x2f, -0x12, 0x83, 0xf0, 0x6e, 0x16, 0x12, 0x54, 0x69, 0x4e, 0xfe, 0x09, 0x70, 0x2f, 0x7d, 0x83, 0x7c, -0x02, 0x7f, 0x80, 0xfe, 0x90, 0x19, 0xbc, 0x7b, 0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x70, 0x02, -0xfe, 0x05, 0x01, 0x7f, 0x04, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x2f, 0x7d, 0x83, 0x7c, 0x6f, 0x12, -0xa2, 0x57, 0x92, 0xd1, 0xd0, 0xaf, 0xc0, 0xd0, 0x12, 0xd0, 0x88, 0x16, 0xf5, 0xe4, 0x05, 0x0d, -0xe5, 0x0d, 0xb4, 0x0d, 0xf9, 0x19, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7a, 0x22, 0x7d, 0x00, -0x7f, 0x03, 0x12, 0x08, 0x2c, 0x70, 0xd1, 0xa2, 0xaf, 0x92, 0x90, 0x22, 0xf3, 0x7a, 0x0a, 0x74, -0x12, 0xf0, 0x80, 0x51, 0xbf, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0x12, 0x3a, 0xe6, 0x50, 0x06, 0x40, -0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x09, 0x51, 0x12, 0x24, 0x80, 0xf5, 0xc9, 0xe4, 0x82, 0x3a, 0x34, -0x50, 0x12, 0x40, 0xe6, 0x90, 0x06, 0xf3, 0x7a, 0x08, 0x74, 0x12, 0xf0, 0x80, 0x51, 0xd3, 0x24, -0x82, 0xf5, 0x34, 0xe4, 0x12, 0x3a, 0xe6, 0x50, 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x07, -0x51, 0x12, 0x24, 0x80, 0xf5, 0xdd, 0xe4, 0x82, 0x3a, 0x34, 0x50, 0x12, 0x40, 0xe6, 0x90, 0x06, -0xf3, 0x7a, 0x06, 0x74, 0x12, 0xf0, 0x80, 0x51, 0xe7, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0x12, 0x3a, -0xe6, 0x50, 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x05, 0x90, 0xc3, 0x0e, 0x7b, 0x94, 0xe0, -0x90, 0xb8, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x0b, 0x90, 0x6b, 0xf3, 0x7a, 0x94, 0xe0, 0x50, 0x0a, -0xe4, 0x1d, 0x7b, 0x90, 0xf0, 0x0a, 0xf0, 0xa3, 0x7b, 0x90, 0xe0, 0x09, 0xf0, 0x04, 0x94, 0xe0, -0x40, 0x06, 0x74, 0x3f, 0xf0, 0x06, 0x7b, 0x90, 0x74, 0x0c, 0xf0, 0x01, 0x34, 0x80, 0x90, 0xe4, -0x09, 0x7b, 0x90, 0xf0, 0x0a, 0x7b, 0x51, 0x12, 0x90, 0x68, 0x06, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, -0xd3, 0xff, 0x7b, 0x90, 0xe0, 0x0b, 0x90, 0x9f, 0x0a, 0x7b, 0x9e, 0xe0, 0x14, 0x40, 0x7f, 0x90, -0xe0, 0x06, 0xa3, 0xff, 0x90, 0xe0, 0x0a, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, 0x7b, 0x90, -0xf0, 0x0c, 0x7f, 0x90, 0xe0, 0x06, 0x02, 0x70, 0xe0, 0xa3, 0x08, 0x70, 0x7b, 0x90, 0xf0, 0x0c, -0x7b, 0x90, 0xf0, 0x09, 0x90, 0x22, 0xe5, 0x7a, 0x25, 0x12, 0xef, 0x72, 0x02, 0x78, 0xc3, 0xce, -0xce, 0x13, 0xd8, 0x13, 0x12, 0xf9, 0x6e, 0x51, 0x08, 0x24, 0xe4, 0xff, 0xfe, 0x3e, 0x54, 0xef, -0x12, 0xf0, 0x6e, 0x51, 0x94, 0xd3, 0xee, 0xff, 0x80, 0x64, 0x80, 0x94, 0x06, 0x40, 0x51, 0x12, -0x74, 0xd8, 0xf0, 0xff, 0x51, 0x12, 0x50, 0xce, 0x12, 0x06, 0xd8, 0x51, 0xff, 0x74, 0x12, 0xf0, -0x4f, 0x51, 0x89, 0x94, 0x06, 0x40, 0x51, 0x12, 0x74, 0xd8, 0xf0, 0x10, 0x7a, 0x90, 0xe0, 0xf0, -0x90, 0xff, 0xee, 0x7a, 0x51, 0x12, 0x9f, 0x3b, 0x80, 0x74, 0xec, 0xf8, 0x80, 0x64, 0x50, 0x98, -0x90, 0x06, 0x0c, 0x7b, 0x70, 0xe0, 0x90, 0x05, 0xf0, 0x7a, 0xf0, 0xed, 0x7a, 0x90, 0xe0, 0xf1, -0x90, 0xff, 0xf0, 0x7a, 0xd3, 0xe0, 0x50, 0x9f, 0x80, 0x02, 0xc3, 0x01, 0x43, 0x92, 0x43, 0x30, -0x90, 0x05, 0xf0, 0x7a, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xf0, 0x7a, 0x90, 0xf0, 0xeb, 0xff, 0xe0, -0x02, 0x24, 0x13, 0x13, 0x3f, 0x54, 0x7a, 0x90, 0xf0, 0xec, 0xd3, 0xef, 0x80, 0x94, 0x03, 0x40, -0x20, 0x74, 0x30, 0xf0, 0x08, 0x43, 0x7a, 0x90, 0xe0, 0xf2, 0x7a, 0x90, 0xf0, 0xec, 0x90, 0xc3, -0x0e, 0x7b, 0x94, 0xe0, 0x90, 0xf4, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x01, 0x90, 0x1f, 0x67, 0x7f, -0x30, 0xe0, 0x18, 0xe1, 0x7f, 0x90, 0xe0, 0x66, 0x30, 0xa3, 0x10, 0xe0, 0x7a, 0x90, 0x7d, 0xeb, -0x12, 0x12, 0x97, 0x56, 0x7a, 0x90, 0x7d, 0xec, 0x12, 0x13, 0x97, 0x56, 0xe0, 0x22, 0x7e, 0xff, -0x7c, 0x00, 0x12, 0x55, 0x57, 0x6f, 0x90, 0x22, 0x30, 0x7c, 0xf0, 0xec, 0xed, 0xa3, 0xf5, 0xf0, -0x8c, 0x82, 0xe0, 0x83, 0xa3, 0xfc, 0xd3, 0xe0, 0xec, 0x9f, 0x40, 0x9e, 0x12, 0x41, 0x1b, 0x17, -0x18, 0x12, 0xe0, 0x2f, 0xa3, 0xfc, 0xfd, 0xe0, 0x64, 0xec, 0x94, 0x80, 0x50, 0x80, 0x12, 0x04, -0xe6, 0x18, 0x12, 0x22, 0x1b, 0x17, 0x04, 0x24, 0x17, 0x12, 0xfe, 0x36, 0xc3, 0xa3, 0x18, 0x12, -0x12, 0x37, 0x18, 0x17, 0x0e, 0x40, 0x17, 0x12, 0xff, 0x34, 0x7e, 0x90, 0xe0, 0x08, 0xa3, 0xf0, -0x4f, 0xe0, 0x22, 0xf0, 0x18, 0x12, 0xe4, 0x30, 0xf0, 0x75, 0x02, 0x01, 0x69, 0x57, 0x17, 0x12, -0x12, 0x1b, 0x2f, 0x18, 0xfc, 0xe0, 0xe0, 0xa3, 0xd3, 0xfd, 0x00, 0x94, 0x64, 0xec, 0x94, 0x80, -0x40, 0x80, 0x12, 0x05, 0xe6, 0x18, 0x1c, 0x80, 0x17, 0x12, 0x24, 0x1b, 0x12, 0x06, 0x36, 0x17, -0xa3, 0xfe, 0x12, 0xd3, 0x37, 0x18, 0x80, 0x64, 0x50, 0x98, 0x12, 0x09, 0x1b, 0x17, 0x17, 0x12, -0x12, 0x34, 0x90, 0x18, 0x17, 0x12, 0xff, 0x1b, 0x08, 0x24, 0x17, 0x12, 0xfc, 0x36, 0xe0, 0xa3, -0x8f, 0xfd, 0x8e, 0x82, 0xa3, 0x83, 0xe0, 0xa3, 0xa3, 0xfe, 0xd3, 0xe0, 0xec, 0x9d, 0x80, 0x64, -0xee, 0xf8, 0x17, 0x12, 0x50, 0x18, 0x12, 0x11, 0x34, 0x17, 0x90, 0xff, 0x08, 0x7e, 0xf0, 0xe0, -0xe0, 0xa3, 0xef, 0xf0, 0x18, 0x12, 0x22, 0x90, 0x18, 0x12, 0x74, 0x30, 0xf5, 0xff, 0x12, 0xf0, -0x8c, 0x24, 0x7f, 0x22, 0x7e, 0x17, 0x12, 0x53, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xb2, 0xa3, 0xf0, -0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xb2, 0xa3, 0xfe, 0xff, 0xe0, 0x7c, 0x90, 0xee, 0x18, 0xa3, 0xf0, -0xf0, 0xef, 0xee, 0xc3, 0x40, 0x94, 0x0a, 0x40, 0x7c, 0x90, 0x74, 0x18, 0xf0, 0x3f, 0x74, 0xa3, -0xf0, 0xff, 0x7c, 0x90, 0xe0, 0x18, 0xa3, 0xfe, 0xff, 0xe0, 0x7b, 0x90, 0xee, 0x40, 0xf0, 0x8f, -0x24, 0x12, 0x90, 0x8c, 0x3c, 0x7b, 0xc3, 0xe0, 0x03, 0x94, 0x70, 0x40, 0xd0, 0xc0, 0xaf, 0xa2, -0xd1, 0x92, 0xaf, 0xc2, 0x7b, 0x90, 0xe0, 0x40, 0xa3, 0xfe, 0xff, 0xe0, 0x5a, 0x12, 0xc3, 0x40, -0x7b, 0x90, 0xe0, 0x48, 0xff, 0x9f, 0x7b, 0x90, 0xe0, 0x47, 0xfe, 0x9e, 0x78, 0xef, 0xce, 0x05, -0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf8, 0x7b, 0x90, 0xee, 0x45, 0xa3, 0xf0, 0xf0, 0xef, -0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7b, 0x90, 0xe0, 0x3f, 0x33, 0xff, 0xe0, 0x95, 0x90, 0xfe, -0x46, 0x7b, 0x2f, 0xe0, 0x90, 0xff, 0x45, 0x7b, 0x3e, 0xe0, 0x7b, 0x90, 0xf0, 0x5d, 0xef, 0xa3, -0x90, 0xf0, 0x5e, 0x7b, 0x90, 0xe0, 0x44, 0x7b, 0x90, 0xf0, 0x5d, 0x7b, 0x60, 0xe0, 0x90, 0x06, -0x44, 0x7b, 0xff, 0x74, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x40, 0xf0, 0xa3, 0x90, 0x22, 0x67, 0x7f, -0x20, 0xe0, 0x03, 0xe3, 0x58, 0x02, 0x90, 0xdc, 0xc0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, -0x18, 0x7c, 0xf0, 0xee, 0xa3, 0xfc, 0xf0, 0xef, 0x90, 0xfd, 0xc6, 0x7a, 0x7e, 0xe0, 0x54, 0x00, -0x78, 0x03, 0xc3, 0x02, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x90, 0xff, 0xc5, 0x7a, 0x54, 0xe0, -0xfb, 0x03, 0xfa, 0xee, 0x4f, 0xeb, 0x90, 0xfb, 0xc7, 0x7a, 0x54, 0xe0, 0xc4, 0x03, 0x54, 0xf8, -0xc8, 0x0f, 0xff, 0x68, 0xc4, 0xe4, 0xf0, 0x54, 0x4a, 0x48, 0xef, 0xfa, 0xfb, 0x4b, 0x7a, 0x90, -0xe0, 0xc8, 0x00, 0x7e, 0x01, 0x54, 0x06, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0x90, 0xf9, -0xc9, 0x7a, 0x63, 0x12, 0x7e, 0xa3, 0x54, 0x00, 0x78, 0x01, 0xc3, 0x07, 0xce, 0x33, 0xce, 0x33, -0xf9, 0xd8, 0x7a, 0x90, 0x12, 0xca, 0xa3, 0x63, 0x01, 0x54, 0xfa, 0x4a, 0x7a, 0x90, 0xe0, 0xcb, -0x01, 0x54, 0xe0, 0x25, 0xfa, 0x4a, 0x7a, 0x90, 0xe0, 0xcc, 0x01, 0x54, 0xe0, 0x25, 0xe0, 0x25, -0xfe, 0x4a, 0xff, 0xeb, 0x7a, 0x90, 0xee, 0xc0, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x6d, 0xee, 0x02, -0x60, 0x6c, 0x90, 0x0f, 0xc0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x10, 0x12, 0x53, -0x57, 0x6f, 0x90, 0x22, 0x88, 0x7d, 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x7f, 0x8c, 0x7e, 0x17, -0x12, 0x93, 0xf0, 0x6e, 0x6a, 0x12, 0x90, 0x54, 0x14, 0x7c, 0x6a, 0x12, 0x50, 0x22, 0x90, 0x1a, -0x14, 0x7c, 0x6a, 0x12, 0xa8, 0x49, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, -0xf0, 0xf9, 0x90, 0xee, 0x50, 0x7c, 0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, 0x50, 0x7c, 0xa3, 0xf0, -0x7f, 0xf0, 0x7e, 0x16, 0x12, 0x93, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x66, 0xa3, 0xf0, 0xf0, 0xef, -0x7c, 0x90, 0xe0, 0x66, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0x7c, 0x90, 0xee, 0x14, 0xa3, 0xf0, -0xf0, 0xef, 0x7c, 0x90, 0x12, 0x66, 0x30, 0x6a, 0x21, 0x50, 0x7c, 0x90, 0xa3, 0x14, 0xff, 0xe0, -0x7c, 0x90, 0xe0, 0x66, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, -0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, 0x66, 0x7c, 0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, 0x66, 0x7c, -0xa3, 0xf0, 0x12, 0xf0, 0x4c, 0x6a, 0xc3, 0xff, 0x7c, 0x90, 0xe0, 0x67, 0xff, 0x9f, 0x7c, 0x90, -0xe0, 0x66, 0x90, 0x9e, 0x8a, 0x7d, 0xf0, 0x8f, 0x24, 0x12, 0x30, 0x8c, 0x0a, 0xd7, 0x7d, 0x90, -0xe4, 0x8c, 0xf0, 0x75, 0x12, 0x01, 0x8c, 0x24, 0x12, 0x22, 0x18, 0x32, 0x7c, 0x90, 0xe0, 0x6e, -0xf0, 0x04, 0xfb, 0xe0, 0x94, 0xc3, 0x40, 0x03, 0xe4, 0x05, 0x02, 0xf0, 0x35, 0x5a, 0x7f, 0x90, -0xe0, 0x67, 0xe5, 0x20, 0x02, 0x03, 0x35, 0x5a, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, -0x1b, 0xaf, 0x1a, 0xae, 0x19, 0xad, 0x18, 0xac, 0x7c, 0x90, 0x12, 0x73, 0xaa, 0x25, 0x27, 0xaf, -0x26, 0xae, 0x25, 0xad, 0x24, 0xac, 0x7c, 0x90, 0x12, 0x77, 0xaa, 0x25, 0x22, 0xae, 0x23, 0xaf, -0xfc, 0xe4, 0x90, 0xfd, 0x7b, 0x7c, 0x25, 0x12, 0xeb, 0xaa, 0x01, 0xb4, 0x7f, 0x1f, 0x7e, 0x16, -0x12, 0x66, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x6f, 0xa3, 0xf0, 0xf0, 0xef, 0x5a, 0x12, 0x90, 0x40, -0x68, 0x7d, 0xf0, 0xee, 0xef, 0xa3, 0x12, 0xf0, 0x96, 0x21, 0x03, 0x80, 0x07, 0x12, 0x90, 0xf3, -0x73, 0x7c, 0x25, 0x12, 0x8f, 0x72, 0x8e, 0x1b, 0x8d, 0x1a, 0x8c, 0x19, 0x90, 0x18, 0x77, 0x7c, -0x25, 0x12, 0x8f, 0x72, 0x8e, 0x27, 0x8d, 0x26, 0x8c, 0x25, 0x90, 0x24, 0x7b, 0x7c, 0x25, 0x12, -0x8e, 0x72, 0x8f, 0x22, 0xa2, 0x23, 0x92, 0xd1, 0xd0, 0xaf, 0x7d, 0xd0, 0x7c, 0x05, 0x7f, 0x66, -0x7e, 0xfe, 0x02, 0xff, 0x57, 0x6f, 0x30, 0x8e, 0x31, 0x8f, 0x31, 0xe5, 0x30, 0x45, 0x05, 0x70, -0xff, 0x7e, 0xff, 0x7f, 0xc0, 0x22, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xaa, 0x7c, -0x06, 0x74, 0x7a, 0xf0, 0x12, 0x40, 0x58, 0x62, 0x13, 0x40, 0x31, 0xe5, 0xe0, 0x25, 0x31, 0xf5, -0x30, 0xe5, 0xf5, 0x33, 0x90, 0x30, 0xaa, 0x7c, 0x14, 0xe0, 0x80, 0xf0, 0x7a, 0xe6, 0x12, 0x80, -0x58, 0x62, 0x13, 0x50, 0x30, 0xe5, 0x13, 0xc3, 0x30, 0xf5, 0x31, 0xe5, 0xf5, 0x13, 0x90, 0x31, -0xaa, 0x7c, 0x04, 0xe0, 0x80, 0xf0, 0xae, 0xe6, 0xaf, 0x30, 0xe4, 0x31, 0xfd, 0xfc, 0x62, 0x12, -0x12, 0x42, 0x78, 0x62, 0x02, 0x78, 0x62, 0x12, 0x34, 0x6c, 0x12, 0xfe, 0x3d, 0x62, 0x7c, 0x90, -0x74, 0xa8, 0xf0, 0x70, 0xdb, 0x74, 0x62, 0x12, 0xff, 0x7e, 0x95, 0x33, 0xfe, 0xe0, 0xfc, 0xfd, -0x0f, 0x78, 0x25, 0x12, 0x90, 0x5f, 0xa4, 0x7c, 0x25, 0x12, 0x12, 0x8e, 0xb8, 0x24, 0x24, 0xef, -0xff, 0x10, 0x3e, 0xe4, 0x05, 0x78, 0x62, 0x12, 0xa2, 0x33, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, -0x2a, 0x30, 0x90, 0x43, 0xa9, 0x7a, 0xff, 0xe0, 0x03, 0x60, 0x02, 0xb4, 0x12, 0x14, 0xa1, 0x69, -0x7c, 0x90, 0xe0, 0x50, 0xa3, 0xff, 0x90, 0xe0, 0x28, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x80, 0xf0, -0x7f, 0x22, 0x7e, 0x17, 0x12, 0x93, 0xf0, 0x6e, 0x7b, 0x90, 0xee, 0x28, 0xa3, 0xf0, 0xf0, 0xef, -0xe0, 0xd3, 0xff, 0x94, 0x7b, 0x90, 0xe0, 0x28, 0x0f, 0x94, 0x07, 0x40, 0x0f, 0x74, 0xa3, 0xf0, -0xff, 0x74, 0x12, 0xf0, 0xdd, 0x58, 0x2e, 0x30, 0x7f, 0x4f, 0x7e, 0x45, 0x12, 0x94, 0xf0, 0x6e, -0x7b, 0x90, 0xee, 0x2a, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xc3, 0x29, 0x7b, 0x94, 0xe0, 0x90, 0x64, -0x28, 0x7b, 0x94, 0xe0, 0x50, 0x00, 0x90, 0x19, 0x2b, 0x7b, 0x94, 0xe0, 0x90, 0x2c, 0x2a, 0x7b, -0x94, 0xe0, 0x40, 0x01, 0x7d, 0x0b, 0x7c, 0x43, 0x7f, 0x94, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, -0x7a, 0x90, 0xe0, 0xa9, 0x01, 0xb4, 0x90, 0x11, 0x2a, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, -0x96, 0x7d, 0x8f, 0xee, 0x12, 0xf0, 0x8c, 0x24, 0x7f, 0x22, 0x7e, 0x03, 0x12, 0x90, 0xf0, 0x6e, -0x7c, 0x90, 0xee, 0x54, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x4e, 0x02, 0x03, 0x05, 0x5c, 0x7c, 0x90, -0xe0, 0x55, 0xe0, 0x30, 0x7f, 0x1a, 0x7e, 0x07, 0x12, 0x94, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x5a, -0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0x12, 0x56, 0x3d, 0x6a, 0x94, 0x7c, 0x6f, 0x12, 0x90, 0x57, -0x55, 0x7c, 0x30, 0xe0, 0x2f, 0xe1, 0x07, 0x7f, 0x93, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x5e, 0x7c, -0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x52, 0x7c, 0x6a, 0x12, 0x7c, 0x3d, 0x12, 0x93, 0x57, 0x6f, -0x7c, 0x90, 0xe0, 0x5e, 0xa3, 0xfe, 0xff, 0xe0, 0x60, 0x4e, 0xef, 0x0a, 0xe1, 0x30, 0x12, 0x06, -0xa1, 0x69, 0x58, 0x12, 0x90, 0xdd, 0x55, 0x7c, 0x30, 0xe0, 0x1f, 0xe2, 0x07, 0x7f, 0x92, 0x7e, -0x6e, 0x12, 0x90, 0xf0, 0x64, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, 0xee, 0xff, 0xfe, 0xf4, -0x7c, 0x90, 0x12, 0x60, 0x42, 0x6a, 0x92, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0x7f, 0x90, 0xe0, 0xfa, -0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x03, 0x02, 0x64, 0x68, 0x70, 0x12, 0xe0, 0xf9, 0x25, 0x49, 0x5c, -0x5c, 0x01, 0x02, 0x4c, 0x4f, 0x5c, 0x5c, 0x03, 0x04, 0x52, 0x55, 0x5c, 0x5c, 0x05, 0x06, 0x58, -0x5b, 0x5c, 0x5c, 0x07, 0x08, 0x5e, 0x61, 0x5c, 0x5c, 0x09, 0x80, 0x64, 0x67, 0x5c, 0x5c, 0x81, -0x82, 0x6a, 0x6d, 0x5c, 0x5c, 0x83, 0x84, 0x70, 0x73, 0x5c, 0x00, 0x85, 0x5c, 0x00, 0x02, 0x76, -0x13, 0x6f, 0x69, 0x02, 0x02, 0xe2, 0x0b, 0x64, 0x65, 0x02, 0x02, 0x76, 0x9c, 0x70, 0x70, 0x02, -0x02, 0x64, 0x49, 0x72, 0x72, 0x02, 0x02, 0x31, 0x77, 0x6d, 0x00, 0x02, 0x02, 0x2e, 0x46, 0x00, -0x00, 0x02, 0x02, 0x4e, 0x76, 0x00, 0x72, 0x02, 0x02, 0xc2, 0xc6, 0x72, 0xff, 0x74, 0x6f, 0x12, -0x22, 0x39, 0x7c, 0x90, 0x12, 0x94, 0xe7, 0x25, 0x4a, 0xe9, 0x03, 0x60, 0x26, 0x02, 0x12, 0x1f, -0x47, 0x6f, 0xf0, 0x14, 0xe4, 0x22, 0x7c, 0x90, 0xf0, 0x89, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, -0x7c, 0x90, 0xf0, 0x87, 0xf0, 0xa3, 0x81, 0x7f, 0x12, 0xfe, 0x0f, 0x5d, 0x01, 0x7f, 0x00, 0x7e, -0x5d, 0x12, 0xe4, 0x0f, 0x7c, 0x90, 0xf0, 0x8d, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0x12, 0x7f, -0x62, 0x7e, 0x6e, 0x12, 0xe4, 0xf0, 0xfd, 0xfc, 0x7c, 0x90, 0x12, 0x33, 0xaa, 0x25, 0x7c, 0x90, -0x12, 0x33, 0x72, 0x25, 0x7c, 0x90, 0x12, 0x37, 0xaa, 0x25, 0x7c, 0x90, 0x12, 0x3b, 0xb6, 0x25, -0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, 0x3f, 0x7c, 0xa3, 0xf0, 0x90, 0xf0, 0x41, 0x7c, 0x7d, 0xf0, -0x7c, 0x06, 0x7f, 0x71, 0xfe, 0x17, 0x6f, 0x12, 0xe4, 0x57, 0x7d, 0x90, 0xf0, 0x8f, 0x7d, 0x90, -0xe0, 0x6a, 0xa3, 0xff, 0x90, 0xe0, 0xb6, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, 0x7c, 0x90, -0xf0, 0xb8, 0x58, 0xc2, 0x7d, 0x22, 0x7c, 0x24, 0x12, 0x71, 0x57, 0x6f, 0x7f, 0x22, 0x7e, 0x10, -0x12, 0x56, 0xf0, 0x6e, 0x7a, 0x90, 0xef, 0x8c, 0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x57, 0xf0, 0x6e, -0x7a, 0x90, 0xef, 0x8d, 0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x92, 0xf0, 0x6e, 0x7a, 0x90, 0xef, 0x8e, -0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x94, 0xf0, 0x6e, 0x7a, 0x90, 0xef, 0x8f, 0x7f, 0xf0, 0x7e, 0x14, -0x12, 0x94, 0xf0, 0x6e, 0x7c, 0x90, 0xef, 0x14, 0xe0, 0xf0, 0xe0, 0x20, 0x90, 0x07, 0x8f, 0x7a, -0x54, 0xe0, 0xf0, 0xef, 0x13, 0xd2, 0x7a, 0x90, 0xe0, 0x8d, 0x02, 0x64, 0x02, 0x60, 0x13, 0xc2, -0x7a, 0x90, 0xe0, 0x8e, 0x01, 0x64, 0x02, 0x60, 0x13, 0xc2, 0x7a, 0x90, 0xe0, 0xa9, 0x01, 0xb4, -0x90, 0x15, 0x8c, 0x7a, 0x64, 0xe0, 0x60, 0x01, 0xc2, 0x02, 0x90, 0x13, 0x8f, 0x7a, 0x64, 0xe0, -0x60, 0x04, 0xc2, 0x0d, 0x22, 0x13, 0x7a, 0x90, 0xe0, 0x8f, 0x05, 0x64, 0x02, 0x60, 0x13, 0xc2, -0x90, 0x22, 0x66, 0x7f, 0x30, 0xe0, 0x62, 0xe2, 0x7f, 0x90, 0xe0, 0x95, 0x94, 0xc3, 0x40, 0x01, -0xe0, 0x0e, 0x94, 0xd3, 0x50, 0x03, 0x90, 0x08, 0x0f, 0x7b, 0x51, 0x12, 0x80, 0x67, 0xe4, 0x0f, -0x7b, 0x90, 0xf0, 0x0f, 0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x1c, 0x7b, 0x90, 0xf0, 0x1d, 0x7b, 0x90, -0xe0, 0x1c, 0x0f, 0x60, 0x90, 0xd3, 0x10, 0x7b, 0x94, 0xe0, 0x90, 0xc2, 0x0f, 0x7b, 0x94, 0xe0, -0x50, 0x01, 0xd3, 0x0f, 0x7b, 0x90, 0xe0, 0x10, 0x14, 0x94, 0x7b, 0x90, 0xe0, 0x0f, 0x05, 0x94, -0x32, 0x40, 0x90, 0xe4, 0x0f, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x97, 0x7f, 0x64, 0xe0, 0x70, 0x01, -0x12, 0x23, 0xe7, 0x41, 0x90, 0xe4, 0x08, 0x7b, 0x22, 0xf0, 0x7b, 0x90, 0xe0, 0x26, 0x14, 0x60, -0x51, 0x12, 0x12, 0x42, 0x57, 0x6f, 0x7b, 0x90, 0x12, 0x1a, 0xdf, 0x51, 0x6f, 0x12, 0xe4, 0x57, -0x7b, 0x90, 0xf0, 0x26, 0x7e, 0x22, 0x7f, 0x7e, 0x7c, 0x90, 0x7d, 0x7e, 0x12, 0xe8, 0xb6, 0x70, -0x7d, 0x7e, 0x3a, 0x7f, 0x7d, 0x7c, 0x80, 0x7d, 0x70, 0x12, 0xe4, 0xb6, 0x7d, 0x90, 0xf0, 0x91, -0xe7, 0x75, 0x75, 0x09, 0x60, 0xe6, 0xc0, 0x75, 0xc2, 0x1f, 0x90, 0x01, 0x58, 0x7d, 0xa3, 0xf0, -0xf0, 0x04, 0x7d, 0x90, 0xe4, 0x66, 0xa3, 0xf0, 0xf0, 0x04, 0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, -0xe4, 0xa3, 0x90, 0xf0, 0x40, 0x7d, 0x00, 0x12, 0x90, 0x03, 0xc9, 0x7e, 0x07, 0x74, 0xe4, 0xf0, -0x23, 0xf5, 0x7d, 0x90, 0xf0, 0xe8, 0xf0, 0xa3, 0xc0, 0x75, 0x90, 0x08, 0x86, 0x7d, 0xa3, 0xf0, -0x90, 0xf0, 0x84, 0x7d, 0x00, 0x12, 0xe4, 0x03, 0x7d, 0x90, 0xf0, 0x94, 0xf0, 0xa3, 0x7d, 0x90, -0x12, 0x92, 0x03, 0x00, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x60, 0x7d, 0xa3, 0xf0, -0x90, 0xf0, 0x30, 0x7d, 0xa3, 0xf0, 0x22, 0xf0, 0xaf, 0xc2, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, -0x82, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, -0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xe4, 0x07, 0x12, 0xff, 0x56, 0x6e, 0xaf, 0xd2, 0x7e, 0x90, -0xe0, 0x07, 0x94, 0xc3, 0x40, 0x03, 0x12, 0x03, 0x7a, 0x66, 0x7e, 0x90, 0xe0, 0x07, 0x04, 0xb4, -0x12, 0x03, 0xa9, 0x4b, 0x7e, 0x90, 0xe0, 0x07, 0x94, 0xc3, 0x40, 0x08, 0x12, 0x03, 0xf3, 0x26, -0x7e, 0x90, 0xe0, 0x07, 0x94, 0xc3, 0x40, 0x30, 0x12, 0x03, 0xf6, 0x71, 0xaa, 0x53, 0xc2, 0xfb, -0xe4, 0xaf, 0x12, 0xff, 0xd4, 0x6f, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, -0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, -0xaf, 0xd2, 0xc0, 0x32, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xee, 0xaf, 0x95, 0x33, 0xfd, 0xe0, -0x78, 0xfc, 0x12, 0x05, 0x5f, 0x25, 0x62, 0x12, 0x12, 0x42, 0x78, 0x62, 0x0f, 0x78, 0x25, 0x12, -0xef, 0x4b, 0x09, 0x24, 0x7c, 0x90, 0xf0, 0xaa, 0x62, 0x12, 0xee, 0x78, 0x7f, 0x54, 0xe4, 0xfe, -0xfc, 0xfd, 0x01, 0x78, 0x62, 0x12, 0x34, 0x6c, 0x12, 0xff, 0x3d, 0x62, 0x7c, 0x90, 0x74, 0xa8, -0xf0, 0x70, 0xcf, 0x74, 0x62, 0x12, 0xfb, 0x7e, 0x64, 0xc3, 0x94, 0x80, 0x90, 0x80, 0xa4, 0x7c, -0x0d, 0x50, 0x25, 0x12, 0xeb, 0x72, 0x04, 0xf4, 0xf8, 0xf9, 0x25, 0x12, 0x80, 0x4b, 0x12, 0x0c, -0x72, 0x25, 0x7c, 0x90, 0xe0, 0xaa, 0xf8, 0xf9, 0x25, 0x12, 0x12, 0x5f, 0x66, 0x62, 0x62, 0x12, -0xa2, 0x25, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0x7a, 0x90, 0xe0, 0xa9, 0x01, 0x64, 0x58, 0x70, -0x16, 0x7f, 0x57, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xb4, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, -0xb4, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xb6, 0x7a, 0x6e, 0xe0, 0x03, 0x70, 0xe0, 0xa3, -0x60, 0x6f, 0x90, 0x21, 0xbc, 0x7a, 0x70, 0xe0, 0x12, 0x03, 0xf3, 0x5f, 0x12, 0xc2, 0x7a, 0x90, -0x74, 0xbc, 0xf0, 0x01, 0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xff, 0x90, 0xe0, 0xb6, 0x7a, 0xf0, 0xcf, -0xef, 0xa3, 0x22, 0xf0, 0x7a, 0x90, 0xe0, 0xbc, 0xf0, 0x04, 0xc3, 0xe0, 0x04, 0x94, 0x08, 0x40, -0x12, 0xd2, 0x04, 0x74, 0x12, 0xf0, 0xf3, 0x5f, 0x90, 0x22, 0xb4, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, -0x90, 0xff, 0x71, 0x7f, 0x7d, 0xf0, 0x7c, 0x12, 0x12, 0x92, 0x57, 0x6f, 0x7f, 0x22, 0x7e, 0x16, -0x12, 0x53, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xb0, 0xa3, 0xf0, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x23, -0x7e, 0xff, 0x90, 0x00, 0xae, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0x12, 0xfd, 0x7a, 0x24, 0x7c, 0x90, -0xee, 0x14, 0xa3, 0xf0, 0xf0, 0xef, 0x51, 0x12, 0x7c, 0x93, 0x7d, 0x00, 0x12, 0x8c, 0x7a, 0x24, -0x7c, 0x90, 0xe0, 0x14, 0xa3, 0xfa, 0xfb, 0xe0, 0x9f, 0xc3, 0x9e, 0xea, 0x02, 0x50, 0x10, 0xc2, -0x51, 0x12, 0x7c, 0x93, 0x7d, 0x00, 0x12, 0xb4, 0x7a, 0x24, 0xeb, 0xd3, 0xea, 0x9f, 0x40, 0x9e, -0xd2, 0x02, 0x90, 0x10, 0x25, 0x7f, 0xff, 0xe0, 0x90, 0xc3, 0xb1, 0x7a, 0x9f, 0xe0, 0x7a, 0x90, -0xe0, 0xb0, 0x00, 0x94, 0x02, 0x50, 0x01, 0x80, 0x92, 0xc3, 0x02, 0x1e, 0xd7, 0x6d, 0xd0, 0xc0, -0x6c, 0x12, 0x12, 0x8d, 0x57, 0x6f, 0x60, 0x7c, 0x6c, 0x12, 0x12, 0x95, 0x57, 0x6f, 0xd1, 0xa2, -0xaf, 0x92, 0xd0, 0xd0, 0xa8, 0x43, 0x43, 0x20, 0x01, 0xa9, 0xca, 0xd2, 0x60, 0xd2, 0x6c, 0x12, -0x90, 0x85, 0xd6, 0x7e, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x7f, 0x22, 0x7e, 0x11, 0x12, 0x62, -0xf0, 0x6e, 0x54, 0xee, 0x90, 0x0f, 0xd6, 0x7e, 0xa3, 0xf0, 0xf0, 0xef, 0x11, 0x7f, 0x65, 0x7e, -0x6e, 0x12, 0xee, 0xf0, 0x0f, 0x54, 0x7e, 0x90, 0xf0, 0xd8, 0xef, 0xa3, 0x90, 0xf0, 0xd6, 0x7e, -0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0xd0, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, 0xe0, 0xd8, -0xa3, 0xff, 0x90, 0xe0, 0xd2, 0x7e, 0xf0, 0xcf, 0xef, 0xa3, 0x22, 0xf0, 0x10, 0xe5, 0xe7, 0xa2, -0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0xa2, 0x22, 0x92, 0xaf, 0xc2, 0xd1, 0x7e, 0xaf, -0x7f, 0x7d, 0x22, 0xa2, 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x90, 0x8c, 0xd2, 0x7e, 0xa3, 0x22, -0x90, 0xf0, 0xe7, 0x7e, 0xff, 0xe0, 0x7d, 0x90, 0xe4, 0x44, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0x22, -0xd6, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0xc3, 0x23, 0x45, -0x74, 0x22, 0xf0, 0x01, 0x74, 0xa3, 0xf0, 0xf4, 0x2d, 0x22, 0xe5, 0xff, 0x3c, 0x14, 0x90, 0xfe, -0xd4, 0x7e, 0x22, 0xe0, 0x7e, 0x90, 0xe0, 0xd1, 0x90, 0x9f, 0xd0, 0x7e, 0x9e, 0xe0, 0xd3, 0x22, -0x1f, 0xe5, 0x00, 0x94, 0x1e, 0xe5, 0x00, 0x94, 0x90, 0x22, 0xfa, 0x7f, 0xfe, 0xe0, 0xe4, 0xa3, -0x03, 0x70, 0x64, 0xee, 0x70, 0x03, 0xe0, 0x44, 0x25, 0x12, 0x61, 0xf9, 0x01, 0x84, 0x87, 0x61, -0x61, 0x02, 0x03, 0x8a, 0x8d, 0x61, 0x61, 0x04, 0x05, 0x90, 0x93, 0x61, 0x61, 0x06, 0x07, 0x96, -0x99, 0x61, 0x61, 0x08, 0x09, 0x9c, 0x00, 0x00, 0x9f, 0x61, 0x00, 0x02, 0x02, 0x0e, 0xca, 0x72, -0x71, 0x02, 0x02, 0x71, 0xa4, 0x6e, 0x6d, 0x02, 0x02, 0x16, 0xce, 0x72, 0x72, 0x02, 0x02, 0xd2, -0xd6, 0x72, 0x71, 0x02, 0x74, 0xe5, 0x12, 0xff, 0xae, 0x72, 0x90, 0x22, 0x9a, 0x7c, 0x25, 0x12, -0xe9, 0xe7, 0x60, 0x4a, 0x02, 0x03, 0x1f, 0x26, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, 0x14, 0xa3, -0x22, 0xf0, 0x06, 0x7d, 0x66, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0xe4, 0x57, 0x7d, 0x90, -0xf0, 0x4a, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x5a, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x52, 0xf0, 0xa3, -0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x57, 0x7d, 0x90, 0xf0, 0x65, 0x7d, 0x90, -0xf0, 0x58, 0x04, 0xa3, 0x90, 0xf0, 0x66, 0x7d, 0xf0, 0xe4, 0x04, 0xa3, 0x90, 0xf0, 0x42, 0x7d, -0x80, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7d, 0x90, 0x12, 0x40, 0xa4, 0x72, 0x7d, 0x90, 0xf0, 0x86, -0xf0, 0xa3, 0x7d, 0x90, 0x12, 0x84, 0xa4, 0x72, 0x7d, 0x90, 0xf0, 0x94, 0xf0, 0xa3, 0x7d, 0x90, -0x12, 0x92, 0xa4, 0x72, 0x7d, 0x90, 0xf0, 0x30, 0xf0, 0xa3, 0x90, 0x22, 0xa4, 0x7c, 0x25, 0x12, -0xe4, 0x72, 0xff, 0x2f, 0x34, 0xee, 0x78, 0x40, 0xfe, 0x0f, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, -0x25, 0x02, 0xfd, 0x4b, 0x34, 0xec, 0xfc, 0xff, 0x7c, 0x90, 0x02, 0xa0, 0xaa, 0x25, 0x7c, 0x90, -0xe4, 0xa8, 0xf0, 0x75, 0x12, 0x04, 0xa2, 0x24, 0xf0, 0x85, 0xf5, 0x82, 0x22, 0x83, 0x30, 0xae, -0x31, 0xaf, 0xfc, 0xe4, 0xfb, 0xfd, 0xf8, 0xf9, 0x02, 0xd3, 0x22, 0x25, 0x7c, 0x90, 0x02, 0xa4, -0xaa, 0x25, 0x25, 0x12, 0xe4, 0x5f, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x80, 0x22, 0xed, 0x7c, 0x90, -0x02, 0xa0, 0x72, 0x25, 0xf0, 0xa3, 0x6a, 0x12, 0x90, 0x61, 0xaa, 0x7c, 0x22, 0xe0, 0x7f, 0x90, -0xe0, 0xfa, 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x03, 0x80, 0x64, 0x3e, 0x70, 0x12, 0xe0, 0xf9, 0x25, -0xb6, 0x62, 0x62, 0x01, 0x02, 0xb9, 0xbc, 0x62, 0x62, 0x03, 0x04, 0xbf, 0xc2, 0x62, 0x62, 0x05, -0x07, 0xc5, 0xc8, 0x62, 0x62, 0x08, 0x09, 0xcb, 0x00, 0x00, 0xce, 0x62, 0x66, 0x02, 0x02, 0xcc, -0xa7, 0x6d, 0x72, 0x02, 0x02, 0xb5, 0x87, 0x72, 0x66, 0x02, 0x02, 0x24, 0xda, 0x72, 0x72, 0x02, -0x02, 0xde, 0x9c, 0x71, 0xff, 0x74, 0x72, 0x12, 0x22, 0x94, 0x7c, 0x90, 0x12, 0x9d, 0xe7, 0x25, -0x4a, 0xe9, 0x03, 0x60, 0x26, 0x02, 0x90, 0x1f, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x14, -0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, -0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0xc0, 0x04, 0x7d, -0x05, 0x7f, 0x53, 0x7e, 0x67, 0x12, 0x7d, 0xb8, 0x7f, 0x06, 0x7e, 0x05, 0x12, 0x55, 0xb8, 0x67, -0x09, 0x7d, 0x05, 0x7f, 0x56, 0x7e, 0x67, 0x12, 0x7d, 0xb8, 0x7f, 0x0b, 0x7e, 0x05, 0x12, 0x57, -0xb8, 0x67, 0x04, 0x7f, 0x1b, 0x12, 0xd0, 0x8c, 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, -0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, -0x32, 0xe0, 0x7a, 0x90, 0xf0, 0xc2, 0x90, 0x04, 0xd1, 0x7a, 0x74, 0xf0, 0x90, 0x32, 0xd3, 0x7a, -0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, 0x22, 0xa3, 0x09, 0x74, 0x7a, 0x90, 0xf0, 0xcd, 0x90, 0xe4, -0xc7, 0x7a, 0x22, 0xf0, 0x74, 0xf0, 0x90, 0x32, 0xd3, 0x7a, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xcb, -0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, 0x22, 0xc2, 0x7a, 0x90, 0xf0, 0xcd, 0x7a, 0x90, 0x74, 0xd2, -0xf0, 0x01, 0x7a, 0x90, 0x22, 0xd1, 0x04, 0xf0, 0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0x90, 0xf0, 0xd1, -0xe0, 0x22, 0xa3, 0xfe, 0xff, 0xe0, 0x53, 0x7c, 0xff, 0x22, 0x4a, 0xee, 0xef, 0xfa, 0xfb, 0x4b, -0x22, 0xe0, 0x90, 0xe4, 0x15, 0x7c, 0x90, 0xf0, 0x39, 0x7f, 0x90, 0xe0, 0x16, 0x7c, 0x90, 0xf0, -0x3f, 0x7f, 0x90, 0xe0, 0x17, 0x7c, 0x90, 0xf0, 0x45, 0x7f, 0x90, 0xe0, 0x18, 0x7c, 0x90, 0xf0, -0x4b, 0x7f, 0x90, 0xe0, 0x19, 0x7c, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x4f, 0x7c, 0x90, 0xf0, 0x1a, -0x7f, 0x90, 0xe0, 0x55, 0x7c, 0x90, 0xf0, 0x1b, 0xff, 0x7b, 0xe4, 0x22, 0x7c, 0x90, 0xf0, 0x15, -0x7f, 0x90, 0xe0, 0x37, 0x7c, 0x90, 0xf0, 0x16, 0x7f, 0x90, 0xe0, 0x3d, 0x7c, 0x90, 0xf0, 0x17, -0x7f, 0x90, 0xe0, 0x43, 0x7c, 0x90, 0xf0, 0x18, 0x7f, 0x90, 0xe0, 0x49, 0x7c, 0x90, 0xf0, 0x19, -0x90, 0x22, 0xf8, 0x7f, 0xa3, 0xe0, 0x90, 0xe0, 0xeb, 0x7e, 0x90, 0xf0, 0xf6, 0x7f, 0xa3, 0xe0, -0x90, 0xe0, 0xed, 0x7e, 0x6f, 0x12, 0x70, 0x4f, 0x90, 0x20, 0xed, 0x7e, 0xc3, 0xe0, 0xfe, 0x94, -0x0b, 0x50, 0xc3, 0xe0, 0x08, 0x94, 0x05, 0x40, 0x64, 0xe0, 0x70, 0x09, 0x90, 0x20, 0xeb, 0x7e, -0x64, 0xe0, 0x60, 0x05, 0xe0, 0x04, 0x07, 0xb4, 0x12, 0x14, 0x50, 0x6f, 0x16, 0x60, 0x7e, 0x90, -0xe0, 0xeb, 0x94, 0xc3, 0x40, 0x03, 0xe0, 0x06, 0x94, 0xd3, 0x40, 0x07, 0x12, 0x07, 0x47, 0x6f, -0xfd, 0x74, 0x22, 0xf0, 0x6d, 0x12, 0x12, 0x77, 0xb4, 0x6c, 0x6f, 0x12, 0x22, 0x38, 0x12, 0x7d, -0x64, 0x12, 0x7d, 0xa7, 0x7c, 0x13, 0x7f, 0x83, 0x7e, 0x06, 0x12, 0x00, 0x57, 0x6f, 0x11, 0x7d, -0x64, 0x12, 0x7d, 0xa7, 0x12, 0x2d, 0xb1, 0x64, 0x2e, 0x7d, 0x83, 0x7c, 0x04, 0x7f, 0x00, 0x7e, -0x6f, 0x12, 0x7d, 0x57, 0x12, 0x2c, 0xb1, 0x64, 0x2b, 0x7d, 0x64, 0x12, 0x7d, 0xbb, 0x12, 0x3c, -0xbb, 0x64, 0x3d, 0x7d, 0x83, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x02, 0x7c, 0x57, 0x7f, 0x83, -0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x7c, 0x22, 0x7f, 0x83, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, -0x7c, 0x22, 0x7f, 0x83, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x53, 0x22, 0xdf, 0xa8, 0xa9, 0x53, -0xc2, 0xfe, 0x75, 0xca, 0xf8, 0xcd, 0xcc, 0x75, 0xe4, 0xf8, 0x24, 0xf5, 0xd0, 0xc0, 0x6c, 0x12, -0xfd, 0xa6, 0x30, 0x7c, 0xfe, 0xff, 0x6f, 0x12, 0x7c, 0x57, 0x12, 0x62, 0x0d, 0x65, 0x63, 0x7c, -0x65, 0x12, 0x7c, 0x18, 0x12, 0x64, 0x0d, 0x65, 0x65, 0x7c, 0x65, 0x12, 0x7d, 0x18, 0x7c, 0x00, -0xe4, 0x66, 0xfe, 0xff, 0x6f, 0x12, 0xa2, 0x57, 0x92, 0xd1, 0xd0, 0xaf, 0xc2, 0xd0, 0x12, 0x60, -0x85, 0x6c, 0x7d, 0x22, 0xe4, 0x00, 0xfe, 0xff, 0x6f, 0x12, 0x7d, 0x57, 0x22, 0x00, 0xff, 0xe4, -0x12, 0xfe, 0x57, 0x6f, 0x90, 0x22, 0xfa, 0x7f, 0xfe, 0xe0, 0xe4, 0xa3, 0x03, 0x70, 0x64, 0xee, -0x70, 0x01, 0xe0, 0x38, 0x25, 0x12, 0x65, 0xf9, 0x01, 0x4a, 0x4d, 0x65, 0x65, 0x02, 0x04, 0x50, -0x53, 0x65, 0x65, 0x05, 0x07, 0x56, 0x59, 0x65, 0x65, 0x08, 0x09, 0x5c, 0x00, 0x00, 0x5f, 0x65, -0x71, 0x02, 0x02, 0x87, 0x47, 0x6d, 0x60, 0x02, 0x02, 0x78, 0xe7, 0x70, 0x6e, 0x02, 0x02, 0x7d, -0xcb, 0x6e, 0x64, 0x02, 0x74, 0xc5, 0x12, 0xff, 0x86, 0x6c, 0x90, 0x22, 0x97, 0x7c, 0x25, 0x12, -0xe9, 0xe7, 0x60, 0x4a, 0x02, 0x03, 0x1f, 0x26, 0x6c, 0x12, 0x22, 0x9c, 0xd0, 0xc0, 0x6f, 0x12, -0xd2, 0x40, 0x12, 0x61, 0x31, 0x72, 0x61, 0x12, 0x7f, 0xbc, 0x12, 0x04, 0x7a, 0x1a, 0xff, 0x7b, -0x59, 0x7a, 0x93, 0x79, 0x7c, 0x90, 0x12, 0xac, 0xf0, 0x25, 0x6f, 0x7a, 0x77, 0x79, 0x7c, 0x90, -0x12, 0xaf, 0xf0, 0x25, 0x06, 0x7d, 0x50, 0x7c, 0xff, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x7d, 0x57, -0x7c, 0x06, 0x7f, 0x90, 0x7e, 0x0f, 0x12, 0x00, 0x57, 0x6f, 0xa8, 0x53, 0x43, 0xfb, 0x10, 0xa9, -0xaa, 0x43, 0x43, 0x08, 0x08, 0xab, 0x6f, 0x12, 0x12, 0x38, 0x52, 0x00, 0xd1, 0xa2, 0xaf, 0x92, -0xd0, 0xd0, 0xc3, 0x22, 0x71, 0x12, 0x94, 0x10, 0x50, 0x80, 0xe0, 0x0e, 0xa3, 0xfe, 0xff, 0xe0, -0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x80, 0xfe, 0x90, 0x08, 0x92, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, -0xd3, 0xff, 0x94, 0xef, 0xee, 0x64, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, 0x18, 0xd2, 0x90, 0xd3, -0x93, 0x7f, 0x94, 0xe0, 0x12, 0xf8, 0x10, 0x71, 0x83, 0x94, 0x02, 0x40, 0x18, 0xc2, 0x90, 0xc3, -0x93, 0x7f, 0x94, 0xe0, 0x12, 0x54, 0x10, 0x71, 0x7d, 0x94, 0x02, 0x50, 0x18, 0xc2, 0x7f, 0x90, -0xe0, 0x67, 0xe0, 0x20, 0xd2, 0x02, 0x02, 0x18, 0xd7, 0x6d, 0x72, 0x12, 0x90, 0x93, 0x08, 0x7e, -0xff, 0xe0, 0xe0, 0xa3, 0x7f, 0x90, 0xcf, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, 0xe0, 0x08, -0x02, 0x70, 0xe0, 0xa3, 0x08, 0x70, 0x7f, 0x90, 0xe0, 0xf6, 0xc0, 0x44, 0x26, 0x80, 0x7e, 0x90, -0xe0, 0x09, 0x3b, 0x54, 0x3b, 0x64, 0x08, 0x70, 0x7f, 0x90, 0xe0, 0xf6, 0x80, 0x44, 0x14, 0x80, -0x7e, 0x90, 0xe0, 0x09, 0x3f, 0x54, 0x94, 0xc3, 0xe4, 0x08, 0x00, 0x94, 0x0b, 0x40, 0x7f, 0x90, -0xe0, 0xf6, 0x40, 0x44, 0xa3, 0xf0, 0xf0, 0xe0, 0x90, 0x22, 0x08, 0x7e, 0xa3, 0xe0, 0x22, 0xe0, -0x17, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x32, 0x7e, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, -0x32, 0x7e, 0x19, 0x12, 0x90, 0x1c, 0x35, 0x7e, 0x9f, 0xe0, 0x90, 0xff, 0x34, 0x7e, 0x9e, 0xe0, -0x7b, 0x90, 0xf0, 0xbf, 0x12, 0xef, 0x7e, 0x16, 0xd3, 0xff, 0xff, 0x94, 0x64, 0xee, 0x94, 0x80, -0x40, 0x80, 0x90, 0x08, 0xbf, 0x7b, 0x19, 0x12, 0x80, 0x23, 0xc3, 0x11, 0x64, 0xee, 0x94, 0x80, -0x50, 0x7f, 0x90, 0x09, 0xbf, 0x7b, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x3d, 0x12, 0x02, 0x3e, -0xbd, 0x4c, 0x71, 0x12, 0x90, 0x9c, 0x10, 0x7e, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, -0x7e, 0x90, 0xf0, 0x12, 0xf0, 0xa3, 0x7e, 0x90, 0x74, 0x16, 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, -0x90, 0xe4, 0x18, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x2e, 0x7e, 0xa3, 0xf0, 0x80, 0x74, 0x90, 0xf0, -0x30, 0x7e, 0x51, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x90, 0xf0, 0x48, 0x7e, 0x3f, 0x74, 0xa3, 0xf0, -0xe1, 0x74, 0xe4, 0xf0, 0x7e, 0x90, 0xf0, 0x05, 0x7e, 0x90, 0x04, 0x02, 0x74, 0xf0, 0x12, 0xf9, -0x91, 0x72, 0x7f, 0x22, 0x7e, 0x14, 0x12, 0x93, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0xb2, 0xa3, 0xf0, -0xf0, 0xef, 0x7c, 0x90, 0xe0, 0xb2, 0xa3, 0xfa, 0xfb, 0xe0, 0xc4, 0xea, 0x0f, 0x54, 0x7e, 0xff, -0x90, 0x00, 0xb4, 0x7c, 0x6a, 0x12, 0x50, 0x28, 0x90, 0x1f, 0xb4, 0x7c, 0xe0, 0xa3, 0xeb, 0xff, -0x02, 0xae, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x90, 0xff, -0xb2, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, 0xff, 0x74, 0x7c, 0x90, 0xf0, 0xb2, 0xf0, 0xa3, -0x7f, 0x22, 0x7e, 0x1e, 0x12, 0x85, 0xf0, 0x6e, 0x07, 0xad, 0x06, 0xac, 0x7e, 0x90, 0x12, 0x68, -0x1c, 0x19, 0x9f, 0xed, 0xec, 0xff, 0x90, 0x9e, 0x6a, 0x7e, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, -0xec, 0x68, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xc3, 0x6a, 0x7e, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x80, -0x12, 0x06, 0x5c, 0x16, 0x80, 0xfe, 0x90, 0x08, 0x6a, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0xac, 0xff, -0xad, 0x06, 0x7a, 0x07, 0x79, 0x7e, 0x7c, 0x6c, 0x7d, 0x7e, 0x02, 0x6c, 0xa1, 0x56, 0x7c, 0x90, -0xee, 0x11, 0xa3, 0xf0, 0xf0, 0xef, 0xed, 0xa3, 0xc0, 0xf0, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, -0x90, 0xaf, 0x12, 0x7c, 0x24, 0xe0, 0xff, 0x02, 0x7c, 0x90, 0xe0, 0x11, 0x00, 0x34, 0x12, 0xfe, -0xf0, 0x6e, 0x10, 0x8e, 0x11, 0x8f, 0x11, 0xe5, 0xff, 0xf4, 0x10, 0xe5, 0xfe, 0xf4, 0x7c, 0x90, -0xe0, 0x11, 0xa3, 0xfc, 0xfd, 0xe0, 0x6f, 0x12, 0x90, 0x57, 0x13, 0x7c, 0xf5, 0xe0, 0x12, 0x14, -0xb4, 0x6b, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7e, 0x22, 0xef, 0x06, 0x13, 0x13, 0x54, 0x13, -0xff, 0x03, 0x01, 0xbf, 0xae, 0x02, 0x1e, 0x05, 0xd3, 0xee, 0x05, 0x94, 0x02, 0x40, 0x05, 0x7e, -0x14, 0xee, 0x12, 0x60, 0x60, 0x14, 0x14, 0x14, 0x16, 0x60, 0x60, 0x14, 0x24, 0x18, 0x70, 0x04, -0x90, 0x19, 0x5a, 0x7f, 0x17, 0x80, 0x7f, 0x90, 0x80, 0x5c, 0x90, 0x12, 0x5e, 0x7f, 0x0d, 0x80, -0x7f, 0x90, 0x80, 0x60, 0x90, 0x08, 0x62, 0x7f, 0x03, 0x80, 0x7f, 0x90, 0xe0, 0x64, 0xa3, 0xfe, -0xff, 0xe0, 0x90, 0x22, 0x31, 0x7b, 0x74, 0xf0, 0x90, 0x01, 0x2d, 0x7b, 0x74, 0xf0, 0x90, 0x08, -0x2e, 0x7b, 0x90, 0xf0, 0xc6, 0x7a, 0x02, 0x74, 0x22, 0xf0, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x06, -0x7b, 0x90, 0x04, 0x31, 0x22, 0xf0, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x16, 0x02, 0x74, 0x7b, 0x90, -0xf0, 0x2d, 0x7b, 0x90, 0x22, 0x2e, 0x7b, 0x90, 0xee, 0x4e, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0x22, -0x44, 0x7b, 0xff, 0xe0, 0x22, 0xc3, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x0e, 0x7e, 0x22, 0x7f, 0x7a, -0x7c, 0x82, 0x7d, 0x7b, 0x12, 0x5d, 0xb6, 0x70, 0x7f, 0x7e, 0x6f, 0x7f, 0x7f, 0x7c, 0x74, 0x7d, -0x70, 0x12, 0x7e, 0xb6, 0x7f, 0x7f, 0x7c, 0x78, 0x7d, 0x7f, 0x12, 0xad, 0xb6, 0x70, 0x7f, 0x90, -0x74, 0x95, 0xf0, 0xff, 0xa5, 0x74, 0x7a, 0x90, 0xf0, 0xb6, 0xf0, 0xa3, 0x7a, 0x90, 0x74, 0xf3, -0xf0, 0x0a, 0xf0, 0xa3, 0x7b, 0x90, 0x74, 0x4b, 0xf0, 0x2f, 0x7b, 0x90, 0x74, 0x58, 0xf0, 0x27, -0xc2, 0x22, 0xe8, 0xd5, 0xe7, 0x30, 0xb2, 0x0f, 0xe4, 0xd5, 0x9b, 0xc3, 0xe4, 0xfb, 0xfa, 0x9a, -0x99, 0xe4, 0xe4, 0xf9, 0xf8, 0x98, 0x30, 0xec, 0x17, 0xe7, 0xd5, 0xb2, 0x69, 0x12, 0x12, 0x11, -0x61, 0x26, 0xc3, 0xe4, 0xfb, 0x9b, 0x9a, 0xe4, 0xe4, 0xfa, 0xf9, 0x99, 0x98, 0xe4, 0x80, 0xf8, -0x12, 0x03, 0x61, 0x26, 0xd5, 0x30, 0xe4, 0x0d, 0x9f, 0xc3, 0xe4, 0xff, 0xfe, 0x9e, 0x9d, 0xe4, -0xe4, 0xfd, 0xfc, 0x9c, 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, -0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, -0x07, 0xc0, 0x7c, 0x90, 0x12, 0xac, 0xe7, 0x25, 0x26, 0x12, 0xd0, 0x1f, 0xd0, 0x07, 0xd0, 0x06, -0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, -0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, -0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, -0xc0, 0x06, 0x90, 0x07, 0xaf, 0x7c, 0x25, 0x12, 0x12, 0xe7, 0x1f, 0x26, 0x07, 0xd0, 0x06, 0xd0, -0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, -0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, 0x7f, 0x32, 0x7e, 0x17, 0x12, 0x93, 0xf0, 0x6e, 0x6a, 0x12, -0x90, 0x54, 0x14, 0x7c, 0x6a, 0x12, 0x50, 0x22, 0x90, 0x1a, 0x14, 0x7c, 0x6a, 0x12, 0xa8, 0x49, -0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, 0x50, 0x7c, -0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, 0x50, 0x7c, 0xa3, 0xf0, 0x12, 0xf0, 0x4c, 0x6a, 0x90, 0xff, -0x96, 0x7d, 0x8f, 0xee, 0x02, 0xf0, 0x8c, 0x24, 0x7f, 0x90, 0xe0, 0xf8, 0xe0, 0xa3, 0x7e, 0x90, -0xf0, 0xe9, 0x90, 0xd3, 0xf9, 0x7f, 0x94, 0xe0, 0x90, 0x02, 0xf8, 0x7f, 0x94, 0xe0, 0x50, 0x00, -0x90, 0x19, 0xe9, 0x7e, 0xff, 0xe0, 0x01, 0x74, 0x00, 0x7e, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, -0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x07, 0x54, 0x07, 0x70, 0x6f, 0x12, 0x74, 0x47, 0xf0, 0xfd, -0x12, 0x22, 0x49, 0x72, 0x6f, 0x12, 0x22, 0x38, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0x50, 0x7c, 0xe0, 0xfd, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, -0x00, 0x94, 0xf4, 0x22, 0xee, 0xff, 0xfe, 0xf4, 0xa3, 0xf0, 0xf0, 0xef, 0x05, 0x7d, 0xa3, 0x22, -0xff, 0xe0, 0x7c, 0x90, 0xe0, 0x50, 0xa3, 0xfe, 0x22, 0xe0, 0x7c, 0x90, 0xee, 0x50, 0xa3, 0xf0, -0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x50, 0x12, 0x22, 0x48, 0x62, 0x25, 0x12, 0x12, 0x7e, 0x66, 0x62, -0x7c, 0x90, 0x74, 0xab, 0xf0, 0x01, 0x7c, 0x90, 0x12, 0xa4, 0x72, 0x25, 0x7c, 0x90, 0x12, 0xa0, -0x8e, 0x25, 0x24, 0x12, 0x12, 0xd3, 0x66, 0x62, 0x62, 0x12, 0x12, 0x25, 0x48, 0x62, 0x25, 0x12, -0x12, 0x9a, 0xb8, 0x24, 0x62, 0x12, 0x90, 0x66, 0xab, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, 0x03, 0xb4, -0x22, 0xd5, 0x27, 0x27, 0x1d, 0x21, 0x19, 0x1b, 0x16, 0x17, 0x14, 0x15, 0x12, 0x13, 0x10, 0x11, -0x0f, 0x10, 0x0e, 0x0f, 0x0d, 0x0e, 0x0c, 0x0d, 0x0b, 0x0c, 0x0b, 0x0b, 0x0a, 0x0a, 0x09, 0x0a, -0x09, 0x09, 0x08, 0x09, 0x08, 0x08, 0x07, 0x08, 0x07, 0x07, 0x06, 0x07, 0x06, 0x06, 0x06, 0x06, -0x05, 0x05, 0x05, 0x05, 0x04, 0x05, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04, 0xf0, 0xee, 0xef, 0xa3, -0xc3, 0xf0, 0x64, 0xee, 0x94, 0x80, 0x22, 0x80, 0x7c, 0x90, 0xe0, 0x4d, 0x78, 0x94, 0x7c, 0x90, -0xe0, 0x4c, 0x00, 0x94, 0xe0, 0x22, 0xa3, 0xfc, 0xfd, 0xe0, 0xae, 0xff, 0x02, 0x04, 0x7a, 0x24, -0x75, 0xe4, 0x01, 0xf0, 0x24, 0x02, 0xc3, 0x8c, 0x9f, 0xe4, 0xe4, 0xff, 0x22, 0x9e, 0x7c, 0x90, -0x02, 0x44, 0x8e, 0x25, 0x15, 0x7d, 0x09, 0x7f, 0x6b, 0x12, 0x7d, 0x3e, 0x7f, 0x16, 0x12, 0x06, -0x3e, 0x6b, 0x17, 0x7d, 0x19, 0x12, 0x12, 0x15, 0x57, 0x6f, 0x18, 0x7d, 0x85, 0x7c, 0x10, 0x74, -0xfe, 0xff, 0x6f, 0x12, 0x7f, 0x57, 0x12, 0x01, 0x7a, 0x18, 0x6f, 0x12, 0x90, 0x57, 0x37, 0x7e, -0x03, 0x74, 0x22, 0xf0, 0x85, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x7e, 0x90, 0xe0, 0x97, -0xe0, 0x30, 0x90, 0x0b, 0x09, 0x7c, 0x80, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x07, 0x80, 0x90, 0xe4, -0x09, 0x7c, 0xa3, 0xf0, 0x90, 0xf0, 0x90, 0x7e, 0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x70, 0x40, -0x90, 0x09, 0x09, 0x7c, 0xc0, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7c, 0x90, 0xe0, 0x09, 0xa3, 0xfe, -0xff, 0xe0, 0x90, 0x22, 0x98, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x68, 0x7b, 0x2f, 0xe0, -0x90, 0xff, 0x67, 0x7b, 0x3e, 0xe0, 0xef, 0xfe, 0x05, 0x78, 0xc3, 0xce, 0xce, 0x13, 0xd8, 0x13, -0x90, 0xf9, 0x78, 0x7e, 0x18, 0x12, 0x90, 0x6a, 0x78, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x7a, 0xff, -0x79, 0x7e, 0x7c, 0x7a, 0x7d, 0x7e, 0x02, 0x7a, 0xa1, 0x56, 0x14, 0xe5, 0x07, 0x54, 0xe5, 0xff, -0xae, 0x11, 0xa8, 0x10, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf5, 0xf9, -0x8e, 0x11, 0xe5, 0x10, 0x13, 0x14, 0x13, 0x13, 0x1f, 0x54, 0xc3, 0xff, 0x1a, 0x74, 0xf5, 0x9f, -0xf8, 0x14, 0x45, 0xe6, 0xf6, 0x10, 0x14, 0x05, 0x14, 0xa8, 0x45, 0xe6, 0xf6, 0x11, 0xd2, 0x22, -0x30, 0x40, 0x2e, 0x00, 0xe0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, -0xaf, 0x07, 0xc3, 0x81, 0x7d, 0x90, 0xe0, 0x81, 0x90, 0x9f, 0x80, 0x7d, 0x94, 0xe0, 0x50, 0x00, -0xaf, 0x07, 0xe4, 0x81, 0xa3, 0xf0, 0xf0, 0xef, 0x07, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, -0xe0, 0xd0, 0xe4, 0x32, 0x7f, 0x90, 0xf0, 0x74, 0xf0, 0xa3, 0x13, 0x30, 0x90, 0x07, 0x74, 0x7f, -0x80, 0x74, 0x16, 0x80, 0x7f, 0x90, 0xe0, 0x95, 0x94, 0xc3, 0x40, 0x05, 0xe0, 0x11, 0x10, 0x94, -0x0c, 0x50, 0x11, 0x30, 0x90, 0x09, 0x74, 0x7f, 0x40, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7f, 0x90, -0xe0, 0x74, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0x22, 0x89, 0x7c, 0xff, 0xe0, 0x94, 0xc3, 0x40, 0x57, -0x90, 0x07, 0x09, 0x7c, 0x80, 0x74, 0x0b, 0x80, 0xc3, 0xef, 0x06, 0x94, 0x0b, 0x40, 0x7c, 0x90, -0x74, 0x09, 0xf0, 0x40, 0xe4, 0xa3, 0x80, 0xf0, 0xe4, 0x07, 0x7c, 0x90, 0xf0, 0x09, 0xf0, 0xa3, -0x7c, 0x90, 0xe0, 0x09, 0xa3, 0xfe, 0xff, 0xe0, 0xa3, 0x22, 0xe4, 0xf0, 0x7f, 0x90, 0xf0, 0xf8, -0xf0, 0xa3, 0xa2, 0x22, 0x92, 0xaf, 0xc2, 0xd1, 0x7c, 0xaf, 0x7d, 0x30, 0x7f, 0x00, 0x7e, 0x01, -0x22, 0x00, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, 0x14, 0xa3, 0x22, 0xf0, 0xaf, 0xa2, 0xd1, 0x92, -0xaf, 0xc2, 0x7d, 0x22, 0x7f, 0x00, 0x7e, 0x02, 0x22, 0x00, 0x68, 0x12, 0x90, 0x97, 0xeb, 0x7e, -0x90, 0xe0, 0x6f, 0x7f, 0x90, 0xf0, 0xed, 0x7e, 0x90, 0xe0, 0x71, 0x7f, 0x6f, 0x12, 0x60, 0x4f, -0x90, 0x08, 0x71, 0x7f, 0x10, 0x74, 0x80, 0xf0, 0x90, 0x0f, 0xed, 0x7e, 0xc3, 0xe0, 0xfe, 0x94, -0x06, 0x40, 0x7f, 0x90, 0x74, 0x71, 0xf0, 0xfe, 0x00, 0x02, 0xc0, 0x7e, 0xa2, 0xd0, 0x92, 0xaf, -0xc2, 0xd1, 0x85, 0xaf, 0x27, 0x1b, 0x1a, 0x85, 0x85, 0x26, 0x25, 0x19, 0x18, 0x85, 0xe4, 0x24, -0x1b, 0xf5, 0x1a, 0xf5, 0x19, 0xf5, 0x18, 0xf5, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7f, 0x90, -0xaf, 0x7a, 0xae, 0x27, 0xad, 0x26, 0xac, 0x25, 0x02, 0x24, 0xaa, 0x25, 0x23, 0x7f, 0x71, 0x7e, -0x6e, 0x12, 0x90, 0xf0, 0x89, 0x7c, 0xf0, 0xef, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, -0x6c, 0x12, 0x90, 0x51, 0x89, 0x7c, 0xfd, 0xe0, 0x4d, 0xef, 0x90, 0xff, 0xf6, 0x7f, 0xf0, 0xee, -0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x12, 0xd0, 0xad, 0x72, 0x90, 0x22, 0xf8, 0x7f, -0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x60, 0x02, 0x90, 0x0c, 0xf8, 0x7f, 0x70, 0xe0, 0xa3, 0x04, -0x64, 0xe0, 0x70, 0x40, 0x90, 0x12, 0xf8, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0x90, -0xef, 0xf0, 0x6c, 0x12, 0x80, 0x83, 0x12, 0x03, 0x9c, 0x6c, 0x00, 0x02, 0xc0, 0x32, 0x12, 0xd0, -0x40, 0x6f, 0xa8, 0x53, 0x53, 0xfb, 0xef, 0xa9, 0xaa, 0x53, 0x53, 0xf7, 0xf7, 0xab, 0xd1, 0xa2, -0xaf, 0x92, 0xd0, 0xd0, 0x04, 0x7f, 0x1b, 0x12, 0x12, 0x03, 0x49, 0x72, 0x61, 0xc2, 0x13, 0xc2, -0x90, 0xe4, 0x95, 0x7f, 0x90, 0xf0, 0x8c, 0x7a, 0x12, 0xf0, 0x39, 0x6f, 0x90, 0x22, 0xf8, 0x7f, -0xa3, 0xe0, 0x90, 0xe0, 0x05, 0x7e, 0x90, 0xf0, 0xf6, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, -0xcf, 0x02, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0x74, 0xb7, 0xf0, 0x01, 0x7f, 0x90, 0xe0, 0xf4, -0xa3, 0xff, 0x90, 0xe0, 0x86, 0x7e, 0xf0, 0xcf, 0x12, 0xef, 0x91, 0x72, 0x90, 0x22, 0x98, 0x7f, -0x33, 0xe0, 0x17, 0x92, 0x7f, 0x90, 0xe0, 0x98, 0x22, 0x65, 0x04, 0x70, 0xe0, 0xa3, 0x23, 0x65, -0x18, 0x60, 0x7f, 0x90, 0x30, 0x98, 0x09, 0x17, 0xf5, 0xe0, 0xa3, 0x22, 0xf5, 0xe0, 0x80, 0x23, -0xe5, 0x07, 0xf0, 0x22, 0xe5, 0xa3, 0xf0, 0x23, 0x23, 0xd2, 0xe4, 0x22, 0x7c, 0x90, 0xf0, 0x1f, -0x7a, 0x90, 0x74, 0xa5, 0xf0, 0x30, 0x11, 0x30, 0x90, 0x0e, 0x33, 0x7f, 0x90, 0xe0, 0x1f, 0x7c, -0x90, 0xf0, 0xa5, 0x7a, 0x04, 0x74, 0x90, 0xf0, 0x1f, 0x7c, 0xff, 0xe0, 0x00, 0x7e, 0x11, 0x7d, -0x55, 0x7c, 0x6f, 0x02, 0xc0, 0x57, 0xc0, 0xa8, 0x75, 0xd0, 0x00, 0xd0, 0xaf, 0x92, 0xf0, 0xc0, -0xf0, 0x75, 0xc0, 0x05, 0x75, 0xe0, 0x4a, 0xe0, 0xe0, 0xc0, 0xe0, 0x75, 0xc0, 0x6e, 0x32, 0xe0, -0xf0, 0xd5, 0xd0, 0xf2, 0xd0, 0xe0, 0xd0, 0xf0, 0xd0, 0xd0, 0x22, 0xa8, 0x04, 0xef, 0x54, 0xc4, -0x14, 0xf0, 0xc4, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x7b, 0xd0, 0x83, 0xd0, 0x01, 0x7e, 0x07, -0xe5, 0x0f, 0x70, 0x82, 0x15, 0x02, 0x15, 0x83, 0xd0, 0x82, 0xf0, 0xe0, 0xf3, 0xde, 0x07, 0xc0, -0x01, 0xc0, 0xc0, 0x22, 0x12, 0xd0, 0xa6, 0x6c, 0x30, 0x7c, 0x6c, 0x12, 0x12, 0xad, 0x57, 0x6f, -0x60, 0x7c, 0x6c, 0x12, 0x12, 0xad, 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xa8, 0x53, -0x53, 0xdf, 0xfe, 0xa9, 0xca, 0xc2, 0x6c, 0x12, 0x22, 0x85, 0x62, 0xd2, 0x04, 0x7f, 0x1a, 0x12, -0x7b, 0x7a, 0x7a, 0xff, 0x79, 0x4e, 0x90, 0xd8, 0xac, 0x7c, 0x25, 0x12, 0x7a, 0xf0, 0x79, 0x5b, -0x90, 0x73, 0xaf, 0x7c, 0x25, 0x12, 0x43, 0xf0, 0x18, 0xa9, 0xab, 0x43, 0x12, 0x08, 0xad, 0x72, -0xc0, 0x22, 0x12, 0xd0, 0x8d, 0x6c, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x00, 0x7f, 0x60, 0x7e, 0x01, -0x12, 0x00, 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xa8, 0x43, 0x43, 0x20, 0x01, 0xa9, -0xca, 0xd2, 0x6c, 0x12, 0x22, 0x85, 0xa8, 0xc0, 0xaf, 0xc2, 0x40, 0x10, 0xd0, 0x04, 0x80, 0xa8, -0x75, 0xf5, 0x7d, 0xc2, 0xc1, 0x75, 0x8e, 0xa0, 0x8f, 0xc3, 0x30, 0xc5, 0xfd, 0x40, 0x7d, 0x90, -0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, 0xa8, 0xd0, 0xc0, 0x22, 0x12, 0xd0, 0x40, 0x6f, 0x6f, 0x12, -0x90, 0xb6, 0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0x12, 0xf0, 0x77, 0x6d, 0x68, 0x12, 0x12, 0x97, -0x39, 0x43, 0x6f, 0x12, 0xa2, 0x38, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0xf0, 0xa3, 0x90, 0xe4, -0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x90, 0x22, 0xf8, 0x7f, -0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x22, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, 0xc0, 0x22, 0xc2, 0xa8, -0x10, 0xaf, 0x04, 0x40, 0xa8, 0xd0, 0xf5, 0x80, 0x7d, 0x90, 0xee, 0xa0, 0xa3, 0xf0, 0xf0, 0xef, -0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, 0xc3, 0x8c, 0xc4, 0x8d, 0xa8, 0xd0, 0x7d, 0x22, 0x7f, 0x0f, -0x7e, 0x05, 0x12, 0x92, 0xb8, 0x67, 0x11, 0x7d, 0x05, 0x7f, 0x93, 0x7e, 0x67, 0x12, 0x7d, 0xb8, -0x7f, 0x13, 0x7e, 0x05, 0x12, 0x94, 0xb8, 0x67, 0x04, 0x7f, 0x1b, 0x02, 0xe4, 0x8c, 0x7f, 0x90, -0xf0, 0xf8, 0xf0, 0xa3, 0xe4, 0x22, 0xf0, 0x75, 0x12, 0x01, 0xa2, 0x24, 0xf0, 0x85, 0xf5, 0x82, -0x22, 0x83, 0x74, 0xfe, 0x94, 0x7f, 0xf0, 0x00, 0xce, 0xa3, 0x22, 0xf0, 0x62, 0x30, 0x12, 0x06, -0xe5, 0x71, 0x04, 0x7f, 0x30, 0x22, 0x06, 0x61, 0x6d, 0x12, 0x7f, 0x77, 0x22, 0x02, 0x60, 0x30, -0x12, 0x06, 0xc5, 0x64, 0x01, 0x7f, 0x7f, 0x22, 0x22, 0x00, 0xc4, 0xef, 0xf0, 0x54, 0xc4, 0x24, -0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x7b, 0xd0, 0x83, 0xd0, 0x01, 0x7e, 0x07, 0xe0, 0x0f, 0xe0, 0xc0, -0xde, 0xa3, 0xc0, 0xfa, 0xc0, 0x07, 0x22, 0x01, 0x17, 0x20, 0x90, 0x1a, 0x26, 0x7b, 0x60, 0xe0, -0x12, 0x11, 0x42, 0x51, 0x6f, 0x12, 0x90, 0x57, 0x1a, 0x7b, 0x10, 0x7d, 0x51, 0x12, 0x12, 0x47, -0x57, 0x6f, 0x6c, 0x12, 0x22, 0xb4, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, -0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x06, 0x7f, 0x02, 0x8f, 0x02, -0x22, 0xdb, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, -0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x05, 0x7f, 0x02, 0x8f, 0x01, 0x22, 0xdb, 0xf0, 0x8f, -0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, -0x7f, 0x04, 0x80, 0x07, 0x7f, 0x02, 0x8f, 0x03, 0x22, 0xdb, 0x7f, 0x90, 0xe0, 0x6f, 0x90, 0xff, -0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0x90, 0xf0, 0x71, 0x7f, 0xff, 0xe0, 0x7f, 0x90, 0xe4, 0xf4, -0xef, 0xf0, 0x6f, 0x12, 0x22, 0x36, 0x7a, 0x90, 0x12, 0x98, 0xb6, 0x25, 0x00, 0x00, 0x00, 0x00, -0x7a, 0x90, 0x12, 0x9c, 0xb6, 0x25, 0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, 0x96, 0x7a, 0xa3, 0xf0, -0x22, 0xf0, 0xd0, 0xc0, 0x6f, 0x12, 0x12, 0x40, 0x1d, 0x6c, 0x7f, 0x90, 0xee, 0xf6, 0xa3, 0xf0, -0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x6f, 0x12, 0x22, 0x38, 0x6d, 0xef, 0x02, 0x70, -0x6c, 0xee, 0x10, 0x60, 0xef, 0x0f, 0x06, 0xaa, 0x01, 0x70, 0x14, 0x0e, 0x82, 0xf5, 0x83, 0x8a, -0xf0, 0xe4, 0xe8, 0x80, 0x00, 0x22, 0x0a, 0x00, 0x00, 0xf4, 0x3f, 0x00, 0x00, 0xaf, 0xb5, 0x00, -0xff, 0x05, 0xf5, 0xff, 0x00, 0x4a, 0x3f, 0x00, 0xff, 0x5b, 0xca, 0xff, 0xc0, 0xe0, 0x12, 0xd0, -0xa6, 0x6c, 0x6b, 0x12, 0x90, 0x46, 0xf6, 0x7f, 0xf0, 0xee, 0x12, 0xef, 0x83, 0x6c, 0xd1, 0xa2, -0xaf, 0x92, 0xd0, 0xd0, 0x90, 0x22, 0xdd, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x12, 0x22, 0xd3, 0x24, -0x7c, 0x90, 0x02, 0x0d, 0xaa, 0x25, 0x7f, 0x90, 0xe0, 0x92, 0x80, 0x64, 0xe5, 0x22, 0xa2, 0x10, -0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x22, 0x11, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0xc3, -0x23, 0x45, 0x18, 0xf5, 0xe5, 0x22, 0xa2, 0x10, 0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, 0xf5, 0x13, -0x22, 0x11, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0xc3, 0x23, 0x45, 0x90, 0x22, 0x4b, 0x7b, 0x2f, 0x74, -0x90, 0xf0, 0xf2, 0x7e, 0xa3, 0xe0, 0x25, 0xe0, 0x04, 0xe0, 0x7b, 0x90, 0xf0, 0x58, 0x47, 0x02, -0x7d, 0x14, 0x7c, 0x16, 0x7f, 0x71, 0x7e, 0x04, 0x12, 0x00, 0x57, 0x6f, 0x18, 0x7d, 0x71, 0x7c, -0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x02, 0x90, 0x57, 0xf8, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7f, 0x90, -0xcf, 0xae, 0xa3, 0xf0, 0xf0, 0xef, 0x72, 0x12, 0x12, 0x06, 0xad, 0x72, 0x12, 0x22, 0xb6, 0x6f, -0x7f, 0x90, 0xe4, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, 0x5e, 0x12, 0x12, 0x1f, 0xb0, 0x71, 0x6c, 0x12, -0x22, 0x85, 0xa9, 0x53, 0x53, 0xfb, 0xfb, 0xaa, 0xab, 0x53, 0x7f, 0xfb, 0x12, 0x02, 0x03, 0x1b, -0x63, 0xc2, 0x72, 0x12, 0x22, 0x93, 0xc8, 0x75, 0x75, 0x00, 0xf8, 0xcb, 0xca, 0x75, 0x75, 0xf8, -0xf8, 0xcd, 0xcc, 0x75, 0xe4, 0xf8, 0x24, 0xf5, 0x30, 0x22, 0xfd, 0x40, 0x40, 0xc2, 0x54, 0xef, -0x8e, 0xfe, 0xf5, 0xc2, 0x8c, 0xc1, 0x8d, 0xc3, 0x22, 0xc5, 0x7a, 0x90, 0xe0, 0xbd, 0x90, 0x04, -0x14, 0x7c, 0x60, 0xf0, 0xe0, 0x05, 0x7a, 0x90, 0xf0, 0xbd, 0x53, 0x22, 0xe7, 0xa9, 0xab, 0x53, -0x7f, 0xf7, 0x12, 0x04, 0x03, 0x1b, 0x62, 0xc2, 0x72, 0x12, 0x22, 0xad, 0x67, 0x12, 0x90, 0x6b, -0xb2, 0x7b, 0xb4, 0xe0, 0x05, 0x01, 0xf0, 0xe4, 0x6b, 0x12, 0x22, 0x7d, 0x00, 0x12, 0x12, 0x7a, -0x5b, 0x71, 0x72, 0x12, 0x12, 0x54, 0xbc, 0x61, 0x5c, 0x02, 0xc2, 0x8f, 0xef, 0x40, 0xfe, 0x54, -0xc2, 0x8e, 0xc1, 0xf5, 0xc3, 0x8c, 0xc4, 0x8d, 0x90, 0x22, 0xbd, 0x7a, 0x90, 0xe0, 0xbe, 0x7a, -0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xbd, 0x90, 0x22, 0x66, 0x7f, 0x1f, 0x74, 0x74, 0xf0, 0x12, 0x7f, -0x36, 0x6f, 0x60, 0x22, 0x80, 0xc0, 0x02, 0x80, 0x00, 0x02, 0x6c, 0x01, 0x52, 0x6c, 0xe4, 0xa3, -0x7f, 0x90, 0xf0, 0x66, 0xf0, 0xa3, 0x6f, 0x12, 0x22, 0x39, 0x06, 0x7d, 0x90, 0x7c, 0x02, 0x7f, -0x00, 0x7e, 0x6f, 0x02, 0x8a, 0x57, 0x89, 0x83, 0xec, 0x82, 0xa3, 0xf0, 0xf0, 0xed, 0x8a, 0x22, -0x89, 0x83, 0xec, 0x82, 0xa3, 0xf0, 0xf0, 0xed, 0x8e, 0x22, 0x8f, 0x82, 0xa3, 0x83, 0x82, 0xae, -0x83, 0xaf, 0x1c, 0x22, 0x00, 0x12, 0x4f, 0x00, 0x00, 0xe0, 0x3b, 0x00, 0x12, 0x9d, 0x93, 0x72, -0x63, 0xd2, 0x02, 0x7f, 0x1a, 0x02, 0xa3, 0x7a, 0xe4, 0xf0, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, -0x74, 0x22, 0x90, 0xff, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, -0xe4, 0xf0, 0xe4, 0x22, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x12, 0x22, 0xa7, 0x6d, 0x72, 0x12, -0x22, 0x93, 0x48, 0x12, 0xc2, 0x50, 0x22, 0x58, 0x6f, 0x12, 0x22, 0x38, 0x6f, 0x12, 0x22, 0x38, -0x72, 0x12, 0x22, 0xad, 0x72, 0x12, 0x22, 0xad, 0x72, 0x12, 0x22, 0xad, 0x72, 0x12, 0x22, 0xad, -0x72, 0x12, 0x22, 0x93, 0x72, 0x12, 0x22, 0x93, 0x00, 0x02, 0x02, 0x42, 0x42, 0x00, 0x6f, 0x02, -0x00, 0x13, 0x00, 0x83, 0x1f, 0xfe, 0x00, 0x02, 0x00, 0x01, 0xe8, 0x03, 0x10, 0x00, 0x08, 0x00, -0x80, 0x00, 0x03, 0x94, 0x00, 0xd9, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 + 0x48, 0x4c, 0x00, 0x06, 0x00, 0x00, 0xf3, 0x10, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x01, 0x07, + 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x01, 0xdd, 0x81, 0x00, 0x40, 0x0a, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x2c, 0x16, 0xa4, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xef, 0xff, + 0xc8, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0xa6, 0x27, 0x00, 0x00, 0x00, 0x51, 0x90, 0x08, 0x05, + 0xff, 0x00, 0x00, 0x00, + 0xa4, 0x81, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x9f, 0x3d, 0x0b, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x9d, 0x35, 0xeb, 0x99, 0xb3, 0x00, 0x00, 0x00, 0x9b, 0x2d, 0xcb, 0x19, + 0xb3, 0x00, 0x00, 0x00, + 0x99, 0x25, 0xab, 0x99, 0xb2, 0x00, 0x00, 0x00, 0x97, 0x1d, 0x8b, 0x19, + 0xb2, 0x00, 0x00, 0x00, + 0x91, 0x41, 0x2a, 0x99, 0xb0, 0x00, 0x00, 0x00, 0xa5, 0x20, 0x6d, 0x22, + 0xd2, 0x00, 0x00, 0x00, + 0x33, 0x18, 0x4d, 0xbb, 0xd1, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0f, 0x24, + 0xd0, 0x00, 0x00, 0x00, + 0xc4, 0x2b, 0x3d, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xad, 0x02, 0xcd, 0x2a, + 0xd0, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x3d, 0x0c, 0xd0, 0x00, 0x00, 0x00, 0x8c, 0x80, 0x3e, 0x0b, + 0xf0, 0x00, 0x00, 0x00, + 0x08, 0x19, 0x9d, 0x20, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x5c, 0x80, 0x3c, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x83, 0x80, 0x0c, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x25, 0x1a, 0x51, 0x00, 0x00, 0x00, 0x92, 0x12, 0x06, 0x20, + 0x61, 0x00, 0x00, 0x00, + 0x21, 0x83, 0x18, 0xc5, 0x32, 0x00, 0x00, 0x00, 0xc6, 0x80, 0x0c, 0x12, + 0xa4, 0x00, 0x00, 0x00, + 0x07, 0x81, 0x1c, 0x24, 0xe4, 0x00, 0x00, 0x00, 0xd3, 0x40, 0x3a, 0x34, + 0xc8, 0x00, 0x00, 0x00, + 0x55, 0x41, 0x4a, 0x11, 0xa4, 0x00, 0x00, 0x00, 0x35, 0x02, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xa0, 0x41, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xdb, 0x87, 0xed, 0x22, + 0xd0, 0x00, 0x00, 0x00, + 0x9d, 0x40, 0xca, 0x19, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x1a, 0x26, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x40, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0a, 0x40, 0x21, 0x00, 0x00, 0x00, 0x20, 0x80, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x30, 0x81, 0x3c, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x68, 0x05, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x13, 0x4d, 0xd0, 0x00, 0x00, 0x00, 0x4b, 0x02, 0x7d, 0x06, + 0x81, 0x00, 0x00, 0x00, + 0x20, 0x00, 0xaf, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x9d, 0x24, + 0xd0, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x6d, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x1f, 0xff, + 0xd7, 0x00, 0x00, 0x00, + 0x37, 0x69, 0x53, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xa1, 0x41, 0x0a, 0x3a, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x71, 0x08, 0xed, 0x00, 0x00, 0x00, 0x00, 0x48, 0x28, 0x8b, + 0x51, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x09, 0x60, 0x12, 0x00, 0x00, 0x00, 0x92, 0x40, 0x0a, 0x52, + 0x22, 0x00, 0x00, 0x00, + 0x17, 0x81, 0x36, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0x0b, + 0x68, 0x00, 0x00, 0x00, + 0x00, 0xc4, 0x06, 0x40, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x80, + 0x6f, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x01, 0xe0, 0x14, 0x00, 0x00, 0x00, 0xb7, 0xda, 0x66, 0xb1, + 0x6d, 0x00, 0x00, 0x00, + 0x00, 0xa4, 0x06, 0xa0, 0x6d, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x40, + 0x6c, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x01, 0x40, 0x14, 0x00, 0x00, 0x00, 0x17, 0x6d, 0x06, 0xa0, + 0x14, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x1f, 0x92, 0xb4, 0x00, 0x00, 0x00, 0x7e, 0xff, 0x5c, 0x08, + 0xea, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x4a, 0x67, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0a, 0xa0, + 0x51, 0x00, 0x00, 0x00, + 0xbe, 0x85, 0x1c, 0x6e, 0xc8, 0x00, 0x00, 0x00, 0xf0, 0x09, 0x08, 0x20, + 0x54, 0x00, 0x00, 0x00, + 0x00, 0x8a, 0x08, 0x60, 0x32, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0xa0, + 0x51, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x18, 0xd2, 0x32, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x05, 0x80, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x54, 0x40, 0x3a, 0x0b, + 0xa4, 0x00, 0x00, 0x00, + 0x03, 0x12, 0x2e, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x01, 0x32, 0x2e, 0x20, + 0xe2, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x86, 0x80, 0x1e, 0x9d, + 0xd0, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0xaf, 0x5f, 0x22, 0x00, 0x00, 0x00, 0x7d, 0xc2, 0xd9, 0x13, + 0x7b, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x07, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x20, + 0x20, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0xa1, 0x03, 0x01, 0x00, + 0x68, 0x00, 0x00, 0x00, + 0x7b, 0xc7, 0xd8, 0x81, 0x30, 0x00, 0x00, 0x00, 0xa3, 0xd2, 0x08, 0x00, + 0x36, 0x00, 0x00, 0x00, + 0xa9, 0x08, 0x12, 0x0a, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x60, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x72, 0xe4, 0xcf, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x08, 0x20, + 0x32, 0x00, 0x00, 0x00, + 0x7c, 0xbe, 0x0c, 0xe8, 0xcf, 0x00, 0x00, 0x00, 0x84, 0xc2, 0x2c, 0x5a, + 0x15, 0x00, 0x00, 0x00, + 0x00, 0xc4, 0x08, 0xa0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x05, 0x20, + 0x5d, 0x00, 0x00, 0x00, + 0x88, 0x90, 0x4e, 0xae, 0x32, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x05, 0x60, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x76, 0x01, 0xc0, 0x57, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x3f, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0xa0, 0xb2, 0xc7, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x14, 0xe0, 0x2f, + 0x9c, 0x00, 0x00, 0x00, + 0x5b, 0x17, 0x02, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x92, 0x06, 0x20, + 0x69, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x06, 0x20, 0x69, 0x00, 0x00, 0x00, 0x5e, 0x18, 0x13, 0x7a, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x62, 0xc3, 0x63, 0x8c, 0x00, 0x00, 0x00, 0xa1, 0x10, 0x3a, 0x2a, + 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x96, 0x8a, 0x21, 0x00, 0x00, 0x00, 0x47, 0xff, 0x0c, 0x20, + 0x61, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0x03, 0x20, 0x22, 0x00, 0x00, 0x00, 0x80, 0xfe, 0x0c, 0x20, + 0x8c, 0x00, 0x00, 0x00, + 0xa4, 0x05, 0xc1, 0xe7, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x10, 0x43, 0x28, + 0xcc, 0x00, 0x00, 0x00, + 0x00, 0x82, 0x05, 0x40, 0x8c, 0x00, 0x00, 0x00, 0xe2, 0x20, 0x03, 0xc0, + 0x57, 0x00, 0x00, 0x00, + 0x00, 0x84, 0x05, 0x60, 0x88, 0x00, 0x00, 0x00, 0x00, 0x76, 0x01, 0xc0, + 0x57, 0x00, 0x00, 0x00, + 0x1c, 0x40, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x34, 0x40, 0x9a, 0xf7, + 0xcf, 0x00, 0x00, 0x00, + 0xf3, 0x0a, 0x05, 0x48, 0xc8, 0x00, 0x00, 0x00, 0xbf, 0x0f, 0x31, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0xfb, 0xfe, 0x2c, 0x72, 0x52, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 0x87, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x05, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x90, 0x1c, 0x92, + 0x10, 0x00, 0x00, 0x00, + 0xda, 0x23, 0xd5, 0xf7, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x65, 0x8b, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x09, 0x80, 0x65, 0x00, 0x00, 0x00, 0x00, 0x24, 0x06, 0x60, + 0x50, 0x00, 0x00, 0x00, + 0x00, 0xd0, 0x09, 0x17, 0xc8, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x76, 0x45, 0x76, 0x50, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x01, 0xa0, + 0x10, 0x00, 0x00, 0x00, + 0xda, 0x41, 0x3a, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x1f, 0x12, + 0xc8, 0x00, 0x00, 0x00, + 0x40, 0x83, 0x9c, 0xa7, 0x36, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x6f, 0x6b, + 0x81, 0x00, 0x00, 0x00, + 0x60, 0x81, 0x0c, 0x80, 0x36, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x13, 0x53, + 0x80, 0x00, 0x00, 0x00, + 0x88, 0x81, 0x0c, 0xa0, 0x86, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xa5, 0x16, + 0xc8, 0x00, 0x00, 0x00, + 0x4a, 0x81, 0x0c, 0x20, 0x80, 0x00, 0x00, 0x00, 0x24, 0x2b, 0x33, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0xff, 0xb7, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x76, 0x05, 0x0b, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0x03, 0x80, 0x17, 0x00, 0x00, 0x00, 0xda, 0x09, 0x08, 0x0a, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09, 0x20, + 0x61, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x01, 0x60, 0x50, 0x00, 0x00, 0x00, 0x80, 0xa0, 0x3c, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x1f, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x73, 0x22, 0x05, 0x50, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x05, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3c, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4a, 0xa1, + 0xa0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xbf, 0x83, 0x1c, 0x55, + 0xd1, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x7f, 0x97, 0x24, 0x00, 0x00, 0x00, 0x62, 0x58, 0xa3, 0xcf, + 0x55, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xfc, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x61, 0x81, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xb3, 0x7b, 0x03, 0x48, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x05, 0x23, + 0x81, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x0c, 0xe0, 0x84, 0x00, 0x00, 0x00, 0x73, 0x41, 0x0a, 0x1b, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x6a, 0x05, 0x02, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, + 0x36, 0x00, 0x00, 0x00, + 0x7f, 0xf4, 0x0c, 0x60, 0x51, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x60, + 0x80, 0x00, 0x00, 0x00, + 0x10, 0x08, 0x0a, 0x20, 0x50, 0x00, 0x00, 0x00, 0x80, 0x82, 0x3c, 0x1a, + 0xf0, 0x00, 0x00, 0x00, + 0x72, 0x20, 0x35, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x4c, 0xab, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x08, 0x40, 0x31, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x60, + 0x50, 0x00, 0x00, 0x00, + 0xc0, 0x82, 0x3c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x40, + 0x31, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x0f, 0x60, 0x10, 0x00, 0x00, 0x00, 0x84, 0x80, 0xfc, 0x67, + 0xcf, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x05, 0x8c, 0xc8, 0x00, 0x00, 0x00, 0xa1, 0x42, 0x08, 0x00, + 0x52, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0x60, 0x10, 0x00, 0x00, 0x00, 0x71, 0x40, 0x0a, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x25, 0x17, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x40, + 0x84, 0x00, 0x00, 0x00, + 0xa0, 0x87, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x33, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0xcd, 0x00, 0xfc, 0x5f, 0x88, 0x00, 0x00, 0x00, 0xc0, 0x82, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0xa8, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x46, 0x08, 0x7a, + 0x37, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x80, 0x2c, 0xb9, + 0xa0, 0x00, 0x00, 0x00, + 0x92, 0x51, 0x48, 0x12, 0x52, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x20, + 0x54, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x01, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x2a, 0x0c, 0xc8, 0x00, 0x00, 0x00, 0x80, 0x88, 0x0c, 0x60, + 0x37, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x40, 0x80, 0x00, 0x00, 0x00, 0x51, 0x01, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x18, 0x12, 0x52, 0x00, 0x00, 0x00, 0x19, 0x05, 0x0a, 0x80, + 0x24, 0x00, 0x00, 0x00, + 0x80, 0x88, 0x0c, 0x24, 0xc8, 0x00, 0x00, 0x00, 0x23, 0x11, 0x15, 0x16, + 0xc8, 0x00, 0x00, 0x00, + 0x22, 0x41, 0x0a, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x46, 0x08, 0xa0, + 0x37, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x08, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x0f, 0x12, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5a, 0xb1, + 0xa0, 0x00, 0x00, 0x00, + 0x21, 0x01, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, 0x3f, 0x02, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x8b, 0x81, 0xbd, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfa, 0xd9, + 0xd0, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x3f, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xb8, 0x40, 0x0a, 0xe3, + 0x27, 0x00, 0x00, 0x00, + 0x9f, 0xe1, 0xfc, 0xf7, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0xa0, + 0x32, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xd2, + 0x50, 0x00, 0x00, 0x00, + 0x5f, 0xe9, 0xfc, 0x39, 0xce, 0x00, 0x00, 0x00, 0x00, 0x86, 0x08, 0x20, + 0x37, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x80, 0x82, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x05, 0xc0, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0xe0, + 0x80, 0x00, 0x00, 0x00, + 0xff, 0xfc, 0x9c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x18, 0x52, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3a, 0x72, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xc0, 0x82, 0x8c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x82, 0x38, 0x52, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x1a, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x05, 0x88, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x08, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xff, 0xf6, 0x9c, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x1f, 0x03, 0x40, + 0x27, 0x00, 0x00, 0x00, + 0x23, 0x07, 0x05, 0x20, 0x88, 0x00, 0x00, 0x00, 0xc0, 0x88, 0x8c, 0x0b, + 0xa4, 0x00, 0x00, 0x00, + 0x23, 0x1f, 0x03, 0x40, 0x27, 0x00, 0x00, 0x00, 0x20, 0x07, 0x01, 0x20, + 0x8c, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x40, 0x1a, 0x07, + 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x86, 0x09, 0x21, 0x65, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xa1, 0x44, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x01, 0x0c, 0x40, + 0x84, 0x00, 0x00, 0x00, + 0xa2, 0x44, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0a, 0x20, + 0x80, 0x00, 0x00, 0x00, + 0xb0, 0x80, 0x0c, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x34, 0x03, 0x40, + 0x80, 0x00, 0x00, 0x00, + 0x22, 0x41, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x5a, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0xa9, 0xbe, 0x3c, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x2a, 0x03, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0xd0, 0x08, 0x40, + 0x30, 0x00, 0x00, 0x00, + 0x18, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x7f, 0x0b, + 0xc8, 0x00, 0x00, 0x00, + 0x37, 0x04, 0x03, 0x17, 0xc8, 0x00, 0x00, 0x00, 0x9f, 0xf1, 0x6c, 0x13, + 0xa4, 0x00, 0x00, 0x00, + 0x20, 0x07, 0x48, 0x4a, 0x51, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xa5, 0x34, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xe5, 0x26, 0x2a, 0x31, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x78, 0x4a, 0x33, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xba, 0x0c, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x38, 0x4a, 0x33, 0x00, 0x00, 0x00, 0xa2, 0x34, 0x43, 0x8e, + 0xa1, 0x00, 0x00, 0x00, + 0xc8, 0x80, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x34, 0x03, 0x00, + 0xa1, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x08, 0x0b, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x0f, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x08, 0x40, 0x33, 0x00, 0x00, 0x00, 0x51, 0x01, 0x0c, 0x0e, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x40, + 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x36, 0xb2, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x03, 0x00, + 0x68, 0x00, 0x00, 0x00, + 0x00, 0x82, 0x0c, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x33, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0c, 0x43, 0x8c, 0x00, 0x00, 0x00, 0x09, 0x01, 0x3c, 0xb2, + 0xa0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x4f, 0xca, 0x50, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x61, + 0xa0, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x0f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x40, 0x3a, 0x1f, + 0xa4, 0x00, 0x00, 0x00, + 0x0f, 0x81, 0xfc, 0x09, 0xce, 0x00, 0x00, 0x00, 0xb0, 0x1e, 0x06, 0x4e, + 0x50, 0x00, 0x00, 0x00, + 0x46, 0x01, 0x0c, 0xe0, 0x98, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x71, 0x40, 0xfa, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x52, 0x86, 0x1c, + 0xc8, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x0f, 0x1e, 0xc8, 0x00, 0x00, 0x00, 0xc0, 0x91, 0x0c, 0xe0, + 0x10, 0x00, 0x00, 0x00, + 0xb4, 0x41, 0x1a, 0x17, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x74, 0x35, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x5c, 0x03, 0x8e, 0x84, 0x00, 0x00, 0x00, 0x40, 0x01, 0x0c, 0x00, + 0x89, 0x00, 0x00, 0x00, + 0x00, 0xec, 0x06, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x08, 0xa0, + 0x36, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe0, 0x19, 0x05, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xe1, 0x44, 0x08, 0x60, 0x31, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0a, 0x68, + 0xc8, 0x00, 0x00, 0x00, + 0xe2, 0x44, 0x08, 0x60, 0x31, 0x00, 0x00, 0x00, 0x00, 0x28, 0x0a, 0x48, + 0xc8, 0x00, 0x00, 0x00, + 0xc8, 0x80, 0x0c, 0x60, 0x31, 0x00, 0x00, 0x00, 0x80, 0x8c, 0x0c, 0x40, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x16, 0x03, 0xe0, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x44, 0x98, 0x0c, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x0a, 0x28, 0xc8, 0x00, 0x00, 0x00, 0xca, 0x80, 0x0c, 0x60, + 0x31, 0x00, 0x00, 0x00, + 0xa0, 0x0c, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x44, 0x08, 0x60, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0a, 0x88, 0xc8, 0x00, 0x00, 0x00, 0xc8, 0x81, 0x0c, 0x08, + 0xc9, 0x00, 0x00, 0x00, + 0x10, 0x40, 0x0a, 0x40, 0x10, 0x00, 0x00, 0x00, 0x35, 0x02, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x4e, 0x02, 0xad, 0x17, 0xa4, 0x00, 0x00, 0x00, 0xd9, 0x41, 0xba, 0x7e, + 0xd8, 0x00, 0x00, 0x00, + 0xdc, 0x41, 0xda, 0x15, 0xa4, 0x00, 0x00, 0x00, 0x42, 0x01, 0x0c, 0x40, + 0x98, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x32, 0x41, 0xea, 0x36, + 0xc8, 0x00, 0x00, 0x00, + 0x24, 0x59, 0x33, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9c, 0x5d, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x05, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x40, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x42, 0xb8, 0x08, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x34, 0x33, 0x6e, 0xa0, 0x00, 0x00, 0x00, 0xe7, 0x40, 0x0a, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0xbf, 0x0f, + 0xd3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2f, 0x0d, 0xa4, 0x00, 0x00, 0x00, 0x82, 0x24, 0x8d, 0x8d, + 0xb4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x77, 0x41, 0x1a, 0x26, + 0xd0, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x7f, 0x0a, 0xa4, 0x00, 0x00, 0x00, 0xff, 0x2b, 0x15, 0x47, + 0x5b, 0x00, 0x00, 0x00, + 0x30, 0x26, 0x03, 0x40, 0x81, 0x00, 0x00, 0x00, 0x72, 0x01, 0x0c, 0xc0, + 0x84, 0x00, 0x00, 0x00, + 0xb9, 0xff, 0x6c, 0x14, 0xc8, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3f, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xac, 0x2f, 0xa0, 0x00, 0x00, 0x00, 0x30, 0x12, 0x06, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x0f, 0x92, 0x98, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x3f, 0x83, 0x9c, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x05, 0x0d, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x08, 0x60, 0x34, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x61, 0x81, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xb3, 0x7b, 0x03, 0x48, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0x95, 0xb7, 0x81, 0x00, 0x00, 0x00, 0x80, 0x88, 0x0c, 0x60, + 0x85, 0x00, 0x00, 0x00, + 0x5c, 0x21, 0x05, 0x18, 0xc8, 0x00, 0x00, 0x00, 0x35, 0x02, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x81, 0x81, 0x0c, 0x20, 0x80, 0x00, 0x00, 0x00, 0xeb, 0x87, 0xed, 0x6e, + 0xd1, 0x00, 0x00, 0x00, + 0x9d, 0x41, 0xaa, 0x19, 0xa4, 0x00, 0x00, 0x00, 0x35, 0x02, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x4e, 0x02, 0x5d, 0xfb, 0x27, 0x00, 0x00, 0x00, 0xdc, 0x41, 0xba, 0x6f, + 0xd8, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xda, 0x39, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x83, 0x0c, 0xc0, + 0x50, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x01, 0xa0, 0x53, 0x00, 0x00, 0x00, 0xb0, 0x81, 0x0c, 0xe0, + 0x36, 0x00, 0x00, 0x00, + 0x24, 0x45, 0xb8, 0xf3, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, + 0x50, 0x00, 0x00, 0x00, + 0xe2, 0x08, 0x78, 0xd2, 0x37, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x09, 0x20, + 0x62, 0x00, 0x00, 0x00, + 0x00, 0x8c, 0x08, 0xe0, 0x34, 0x00, 0x00, 0x00, 0x80, 0x8b, 0xbc, 0xf7, + 0xcf, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x45, 0xb6, 0x50, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0x6f, 0xff, 0x4c, 0x33, 0x53, 0x00, 0x00, 0x00, 0x71, 0x4a, 0x05, 0xa1, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x03, 0x15, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x01, 0x20, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x14, 0x09, 0x3a, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x80, 0x80, 0xbe, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xa0, 0x87, 0x09, 0x07, + 0x62, 0x00, 0x00, 0x00, + 0x8b, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x61, 0x1d, 0x03, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x0d, 0x22, 0x0e, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x0b, 0x35, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xc0, 0x90, 0xfc, 0xf7, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x5e, + 0x55, 0x00, 0x00, 0x00, + 0x00, 0xd0, 0x0f, 0x80, 0x9c, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x0f, 0xa3, 0xa0, 0x00, 0x00, 0x00, 0x2f, 0xff, 0x0c, 0x60, + 0x32, 0x00, 0x00, 0x00, + 0x74, 0x51, 0x08, 0x0d, 0xc9, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x3e, 0xff, 0x0c, 0x83, 0x55, 0x00, 0x00, 0x00, 0x54, 0x41, 0x35, 0x20, + 0xe5, 0x00, 0x00, 0x00, + 0x10, 0x41, 0x1a, 0x11, 0xa4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x60, + 0x32, 0x00, 0x00, 0x00, + 0x61, 0x59, 0xf8, 0x0c, 0xc9, 0x00, 0x00, 0x00, 0xc0, 0x86, 0xec, 0x13, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x21, 0x19, 0xc8, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0xa0, + 0x14, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x03, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x30, 0x82, 0x08, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0x1e, 0x41, 0x0a, 0x80, 0x24, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x60, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x46, 0xd8, 0x0d, 0xc9, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x26, 0xd3, 0xa3, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x48, 0xc8, 0x0d, + 0xc9, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5a, 0x08, + 0xe8, 0x00, 0x00, 0x00, + 0xe0, 0x90, 0x0c, 0x60, 0x32, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x0c, 0x60, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x7a, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x0f, 0x60, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x18, 0x0e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x26, 0x33, 0x63, + 0xa3, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x38, 0x0e, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x26, 0x43, 0xe3, + 0xa2, 0x00, 0x00, 0x00, + 0xf8, 0x80, 0x0c, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x33, 0x24, 0x0a, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x0f, 0x60, 0x32, 0x00, 0x00, 0x00, 0x00, 0x42, 0xe8, 0x0f, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x53, 0xa3, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x42, 0x78, 0x2d, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x26, 0xb3, 0x23, 0xa1, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x6c, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0x31, 0x08, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x0f, 0x60, + 0x32, 0x00, 0x00, 0x00, + 0x32, 0x40, 0x0a, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x72, 0x0e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, + 0xa0, 0x00, 0x00, 0x00, + 0x80, 0x80, 0xbe, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xa0, 0x8d, 0x09, 0x13, + 0x62, 0x00, 0x00, 0x00, + 0xca, 0x01, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1a, 0x08, + 0xe9, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x1a, 0x08, 0xeb, 0x00, 0x00, 0x00, 0x22, 0x4d, 0xf3, 0xff, + 0xc9, 0x00, 0x00, 0x00, + 0x00, 0x50, 0x0b, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x81, 0x90, 0x0e, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x81, 0xb0, 0x0e, 0x40, + 0x37, 0x00, 0x00, 0x00, + 0x20, 0x41, 0x0a, 0x80, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x0e, 0x32, 0xee, 0x20, + 0xe1, 0x00, 0x00, 0x00, + 0x10, 0x05, 0xda, 0x20, 0xe2, 0x00, 0x00, 0x00, 0xb0, 0x81, 0xfc, 0xf7, + 0xc9, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x07, 0x40, 0x55, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x0f, 0x80, + 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0xa5, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x08, 0x1a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x51, 0x08, 0x0a, 0x0d, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x81, 0x1c, 0xd6, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x03, 0xe0, 0x85, 0x00, 0x00, 0x00, 0x42, 0x03, 0x0c, 0x60, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0b, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x2f, 0x48, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x58, 0x40, 0x3a, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x52, 0x04, 0xba, 0x0f, + 0xd3, 0x00, 0x00, 0x00, + 0xa5, 0x81, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x80, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xc3, 0xa5, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x28, 0x1a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0xd3, 0xa5, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x18, 0x1a, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x36, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x82, 0x45, + 0x62, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x93, 0xa5, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x38, 0x1a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6c, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0x43, 0xa5, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x38, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3c, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x94, 0x08, 0x3a, 0x25, + 0x62, 0x00, 0x00, 0x00, + 0x90, 0x83, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x80, + 0x84, 0x00, 0x00, 0x00, + 0x40, 0x12, 0x3e, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xe3, 0x65, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x38, 0x59, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3c, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x5f, 0x08, 0x2a, 0x24, 0xe1, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x0f, 0xc0, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x48, 0xb8, 0x59, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x57, 0x08, 0x4a, 0x20, 0xe1, 0x00, 0x00, 0x00, 0xa3, 0x85, 0x0c, 0xc0, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, 0x56, 0x08, 0x5a, 0x20, + 0xe1, 0x00, 0x00, 0x00, + 0xab, 0x85, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x60, + 0x84, 0x00, 0x00, 0x00, + 0x59, 0x08, 0x6a, 0x20, 0xe1, 0x00, 0x00, 0x00, 0x9d, 0x81, 0x0c, 0xc0, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, 0x58, 0x08, 0x7a, 0x20, + 0xe1, 0x00, 0x00, 0x00, + 0xbe, 0x9f, 0x0c, 0xc0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x60, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x08, 0xfa, 0x20, 0xe1, 0x00, 0x00, 0x00, 0xbf, 0x9f, 0x0c, 0xc0, + 0x32, 0x00, 0x00, 0x00, + 0xa1, 0x07, 0x0c, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x03, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x90, 0x0b, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x21, 0x40, 0xba, 0x06, + 0xf0, 0x00, 0x00, 0x00, + 0xb1, 0x41, 0x0a, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x33, 0x41, 0x2a, 0x17, + 0xa4, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x46, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x08, 0x72, 0x6e, 0x07, + 0x9d, 0x00, 0x00, 0x00, + 0x08, 0x52, 0x8e, 0x20, 0xe6, 0x00, 0x00, 0x00, 0x08, 0x32, 0x8e, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x08, 0x12, 0x8e, 0x20, 0xe2, 0x00, 0x00, 0x00, 0x09, 0x72, 0x0e, 0xe0, + 0xa0, 0x00, 0x00, 0x00, + 0x09, 0x52, 0x9e, 0x20, 0xe6, 0x00, 0x00, 0x00, 0x09, 0x32, 0x9e, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x09, 0x12, 0x9e, 0x20, 0xe2, 0x00, 0x00, 0x00, 0x38, 0x41, 0x7a, 0x17, + 0x38, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x96, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x08, 0x52, 0xbe, 0xc7, + 0x9c, 0x00, 0x00, 0x00, + 0x08, 0x32, 0x8e, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x08, 0x12, 0x8e, 0x20, + 0xe2, 0x00, 0x00, 0x00, + 0x09, 0x52, 0x0e, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x09, 0x32, 0x9e, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x09, 0x12, 0x9e, 0x20, 0xe2, 0x00, 0x00, 0x00, 0x0b, 0x02, 0x0c, 0x60, + 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x7a, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x21, 0x41, 0xba, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0x30, 0x40, 0xfa, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x22, 0x09, 0x03, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0xe0, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2a, 0x08, + 0xe9, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x2e, 0x08, 0xea, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x20, + 0xe2, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x38, 0x92, 0x30, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x82, 0xb0, 0x0e, 0xa0, + 0x85, 0x00, 0x00, 0x00, + 0x82, 0xc0, 0x0e, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x16, 0x07, 0x80, + 0x62, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x12, 0x07, 0x40, + 0x62, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x07, 0x40, 0x62, 0x00, 0x00, 0x00, 0x00, 0x12, 0x07, 0x40, + 0x62, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x2f, 0x35, + 0xd2, 0x00, 0x00, 0x00, + 0xfe, 0x49, 0x0b, 0x9b, 0x24, 0x00, 0x00, 0x00, 0x62, 0x51, 0xd8, 0xc3, + 0x34, 0x00, 0x00, 0x00, + 0xbb, 0xf0, 0xcb, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x42, 0x02, 0xbd, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0x0e, 0x02, 0x0e, 0x95, 0xb0, 0x00, 0x00, 0x00, 0x0d, 0x22, 0xee, 0x20, + 0xe1, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x2f, 0x3f, + 0xd2, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x0b, 0x9b, 0x24, 0x00, 0x00, 0x00, 0x63, 0x4f, 0xb8, 0xcb, + 0x34, 0x00, 0x00, 0x00, + 0x0d, 0x22, 0x0e, 0x80, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x42, 0x02, 0xbd, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x75, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x70, 0x09, 0x2b, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x78, 0x5a, 0x36, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x86, 0x81, 0xfc, 0xab, 0x65, 0x00, 0x00, 0x00, 0x20, 0x81, 0x0c, 0x43, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x25, 0x2e, 0x80, 0x00, 0x00, 0x00, 0x21, 0x81, 0x0c, 0x81, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x38, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x60, + 0x55, 0x00, 0x00, 0x00, + 0x58, 0x40, 0x0a, 0x80, 0x59, 0x00, 0x00, 0x00, 0x20, 0x81, 0x0c, 0x80, + 0x31, 0x00, 0x00, 0x00, + 0xc1, 0x97, 0x9c, 0x8f, 0x84, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x09, 0x60, + 0x63, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0x80, 0x59, 0x00, 0x00, 0x00, 0xd5, 0x97, 0x0c, 0x13, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xc4, 0x97, 0x0c, 0x30, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0x60, 0x80, 0x00, 0x00, 0x00, 0x22, 0x47, 0xa8, 0x7c, + 0xc9, 0x00, 0x00, 0x00, + 0xae, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x40, 0x02, 0xed, 0x3f, 0xc9, 0x00, 0x00, 0x00, 0x23, 0x19, 0xe3, 0x24, + 0xd0, 0x00, 0x00, 0x00, + 0x24, 0x19, 0x03, 0xa0, 0x81, 0x00, 0x00, 0x00, 0x00, 0x14, 0x38, 0x5c, + 0xc9, 0x00, 0x00, 0x00, + 0xc5, 0x95, 0x5c, 0x92, 0x31, 0x00, 0x00, 0x00, 0x27, 0x19, 0x03, 0xe0, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x78, 0x5c, 0xc9, 0x00, 0x00, 0x00, 0x08, 0x81, 0x0c, 0x80, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x88, 0x5c, 0xc9, 0x00, 0x00, 0x00, 0x73, 0x02, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0xdd, 0x95, 0x9c, 0x10, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0x60, 0x81, 0x00, 0x00, 0x00, 0xdf, 0x95, 0xac, 0x10, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xe4, 0x95, 0xbc, 0x10, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x03, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x46, 0x78, 0x5e, + 0xc9, 0x00, 0x00, 0x00, + 0x91, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x24, 0x00, 0x0c, 0xaa, + 0xa0, 0x00, 0x00, 0x00, + 0x42, 0x02, 0x0d, 0x80, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, + 0xa0, 0x00, 0x00, 0x00, + 0x51, 0x99, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x23, 0x00, 0xad, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2f, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x4c, 0x02, 0x3d, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x96, 0xea, 0x15, 0x53, 0x22, 0x00, 0x00, 0x00, 0x92, 0xf0, 0x0b, 0x80, + 0xc8, 0x00, 0x00, 0x00, + 0xc8, 0x80, 0xbc, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x47, 0x7b, 0x6d, 0x89, + 0xd4, 0x00, 0x00, 0x00, + 0xf9, 0xc3, 0x8d, 0x22, 0xd5, 0x00, 0x00, 0x00, 0xe7, 0x92, 0x6d, 0xbb, + 0xd3, 0x00, 0x00, 0x00, + 0xe9, 0x38, 0x8d, 0x8e, 0xd3, 0x00, 0x00, 0x00, 0xc8, 0x88, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x7d, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x14, 0x8a, 0x99, + 0xc9, 0x00, 0x00, 0x00, + 0x69, 0x7e, 0x8d, 0x58, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xe0, + 0xa0, 0x00, 0x00, 0x00, + 0x17, 0xc7, 0x6d, 0xf1, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, + 0xa0, 0x00, 0x00, 0x00, + 0xc7, 0xc0, 0x6d, 0x53, 0xd5, 0x00, 0x00, 0x00, 0x22, 0x09, 0x35, 0x0b, + 0xf0, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x1f, 0x9f, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0xfd, 0x99, + 0xc9, 0x00, 0x00, 0x00, + 0x00, 0x78, 0x75, 0x0d, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0xa0, + 0x80, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x3d, 0x03, + 0xd0, 0x00, 0x00, 0x00, + 0xe2, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x74, 0x99, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x1d, 0x99, + 0xc9, 0x00, 0x00, 0x00, + 0xf8, 0x03, 0x7d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x9d, 0x08, + 0xd0, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x3d, 0x24, 0xd0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x31, 0x25, 0xc2, 0xa0, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x88, 0x6c, 0x01, + 0xd0, 0x00, 0x00, 0x00, + 0x92, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xc8, 0x80, 0xbc, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0xf7, 0x49, 0x6d, 0x9f, 0xd4, 0x00, 0x00, 0x00, 0xf9, 0xc3, 0x8d, 0x22, + 0xd5, 0x00, 0x00, 0x00, + 0x69, 0x7e, 0x8d, 0x58, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x20, + 0xa2, 0x00, 0x00, 0x00, + 0xc9, 0xc9, 0x8d, 0x24, 0xd5, 0x00, 0x00, 0x00, 0xa6, 0x99, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x2d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x3d, 0x0b, + 0xf0, 0x00, 0x00, 0x00, + 0x21, 0x1b, 0x1a, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x97, 0x48, 0x6d, 0x2d, + 0xd5, 0x00, 0x00, 0x00, + 0x29, 0xa1, 0x8d, 0xbd, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x40, 0xba, 0x97, + 0xc9, 0x00, 0x00, 0x00, + 0x21, 0x09, 0x35, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x1f, 0x9f, + 0x80, 0x00, 0x00, 0x00, + 0x82, 0x00, 0xfd, 0x99, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x0d, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x08, 0x80, 0x57, 0x00, 0x00, 0x00, 0xe2, 0x02, 0xcc, 0x24, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x24, 0x41, 0x3a, 0x0b, + 0xf0, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x1f, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x98, 0x99, 0xdc, 0x96, + 0xc9, 0x00, 0x00, 0x00, + 0xff, 0x46, 0x65, 0x08, 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0d, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0xf8, 0x03, 0x7d, 0x10, 0xd1, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x9d, 0x09, + 0xd0, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x3f, 0x90, 0xdc, 0x00, 0x00, 0x00, 0x78, 0x40, 0x2a, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x1d, 0x53, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, + 0xc8, 0x00, 0x00, 0x00, + 0x4c, 0x02, 0x2d, 0x69, 0x31, 0x00, 0x00, 0x00, 0xa0, 0x08, 0x08, 0x49, + 0xd6, 0x00, 0x00, 0x00, + 0xa3, 0x01, 0x0f, 0x3f, 0xd6, 0x00, 0x00, 0x00, 0x92, 0x24, 0xe4, 0x24, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xc8, 0x88, 0xbc, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0xa7, 0xe9, 0x6d, 0x0f, 0xd0, 0x00, 0x00, 0x00, 0xe9, 0x38, 0x8d, 0x8e, + 0xd3, 0x00, 0x00, 0x00, + 0xd5, 0x02, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x9d, 0x0b, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x3a, 0x50, 0xdc, 0x00, 0x00, 0x00, 0x93, 0x00, 0x6f, 0x06, + 0xd0, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x7d, 0xd7, 0xd5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x7d, 0x08, + 0xd1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8f, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x40, 0x02, 0x3d, 0x50, + 0xd6, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0xea, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x37, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x06, 0x00, 0xbd, 0x97, 0xc9, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x79, 0x00, + 0xd1, 0x00, 0x00, 0x00, + 0xc8, 0x80, 0x7c, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x9f, 0x0a, + 0xd0, 0x00, 0x00, 0x00, + 0x46, 0x11, 0x3d, 0xb2, 0xde, 0x00, 0x00, 0x00, 0x48, 0x61, 0x7d, 0x52, + 0xdb, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9f, 0xa8, 0xdc, 0x00, 0x00, 0x00, 0x7c, 0x5b, 0x0d, 0x40, + 0x62, 0x00, 0x00, 0x00, + 0x00, 0xc4, 0x09, 0x46, 0xd6, 0x00, 0x00, 0x00, 0x4e, 0x02, 0x0d, 0x3d, + 0xd6, 0x00, 0x00, 0x00, + 0x22, 0x09, 0x35, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x1f, 0xbf, + 0x80, 0x00, 0x00, 0x00, + 0x82, 0x00, 0xfd, 0x99, 0xc9, 0x00, 0x00, 0x00, 0xd7, 0x40, 0x6a, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0x0b, 0xf0, 0x00, 0x00, 0x00, 0xe3, 0x17, 0x28, 0x93, + 0x57, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x03, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x4c, 0x02, 0x0d, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0x4e, 0x02, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x8f, 0x3f, + 0xd0, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x3d, 0x1a, 0xf0, 0x00, 0x00, 0x00, 0xe2, 0x02, 0x2c, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xbb, 0x06, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x4a, 0x7e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7b, 0x07, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x6a, 0x7e, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x57, 0xb5, 0x00, 0x00, 0x00, 0xe3, 0x50, 0xf8, 0xa5, + 0x54, 0x00, 0x00, 0x00, + 0x35, 0x02, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xde, 0x2e, 0xcd, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0xdd, 0x40, 0xba, 0x6f, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5a, 0x2d, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x0b, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x52, 0x23, 0x3d, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x7f, 0x40, 0x0a, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0x77, 0x62, 0x73, 0xeb, + 0xcf, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xfb, 0x80, 0xed, 0xf5, + 0xd2, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x65, 0x3b, 0x84, 0x00, 0x00, 0x00, 0x9c, 0x41, 0xda, 0x05, + 0xa4, 0x00, 0x00, 0x00, + 0x35, 0x02, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x9e, 0x2f, 0xfd, 0x07, + 0xc8, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0xbd, 0x15, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x40, 0xda, 0x25, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x0b, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x93, 0x00, 0x2f, 0x35, + 0xd2, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x7a, 0x40, 0x9a, 0x0b, + 0xa4, 0x00, 0x00, 0x00, + 0xeb, 0x87, 0xed, 0xff, 0xd2, 0x00, 0x00, 0x00, 0x5d, 0x40, 0xca, 0x09, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xba, 0x05, 0xf0, 0x00, 0x00, 0x00, 0x77, 0x40, 0x6a, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x8f, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x05, 0x02, 0x9e, 0x0f, + 0xa4, 0x00, 0x00, 0x00, + 0x07, 0x22, 0x4e, 0x20, 0xe1, 0x00, 0x00, 0x00, 0x33, 0x41, 0x6a, 0x20, + 0xe3, 0x00, 0x00, 0x00, + 0x02, 0x42, 0x2e, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0x35, 0x02, 0x1c, 0x20, + 0xe7, 0x00, 0x00, 0x00, + 0xb6, 0x40, 0x7a, 0x07, 0xa4, 0x00, 0x00, 0x00, 0xfb, 0x80, 0xed, 0x0a, + 0xd3, 0x00, 0x00, 0x00, + 0x9c, 0x40, 0xda, 0x05, 0xa4, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3f, 0x08, + 0xf0, 0x00, 0x00, 0x00, + 0x35, 0x02, 0xbc, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x5b, 0x81, 0x8d, 0x17, + 0xa4, 0x00, 0x00, 0x00, + 0x5d, 0x41, 0xca, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xea, 0x2d, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x21, 0x04, 0x0d, 0x48, 0xd0, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x2d, 0x30, + 0xd0, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x4d, 0x12, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x81, 0xf9, 0x0d, 0x82, + 0xdf, 0x00, 0x00, 0x00, + 0xe3, 0xfd, 0x2d, 0xbb, 0xdf, 0x00, 0x00, 0x00, 0x25, 0x00, 0x4d, 0xf5, + 0xdf, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xad, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0xe1, 0x05, 0x0d, 0x7e, 0xd0, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x2d, 0x31, + 0xd0, 0x00, 0x00, 0x00, + 0xb5, 0xff, 0x4d, 0xfc, 0xdf, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x31, 0xfa, 0x0d, 0x80, + 0xdf, 0x00, 0x00, 0x00, + 0xa3, 0xff, 0x2d, 0xd3, 0xdf, 0x00, 0x00, 0x00, 0x95, 0x00, 0x4d, 0x0a, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xad, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0xc1, 0x06, 0x0d, 0x6f, 0xd0, 0x00, 0x00, 0x00, 0x53, 0x05, 0x2d, 0x64, + 0xd0, 0x00, 0x00, 0x00, + 0x95, 0x02, 0x4d, 0x40, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x6d, 0x15, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x02, + 0xd0, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0d, 0x58, + 0xd0, 0x00, 0x00, 0x00, + 0x13, 0xff, 0x2d, 0x03, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x4d, 0xf5, + 0xdf, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x0b, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x07, 0x00, 0x6d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x8d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xad, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x21, 0x02, 0x0d, 0x67, 0xd0, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x2d, 0xf5, + 0xdf, 0x00, 0x00, 0x00, + 0xd5, 0xff, 0x4d, 0x04, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x8d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x48, 0x02, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x4a, 0x80, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0xbf, 0x46, + 0xd3, 0x00, 0x00, 0x00, + 0x58, 0x40, 0x2a, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xb9, 0xfe, 0x3c, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0x26, 0x41, 0x4a, 0x0f, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x40, + 0x53, 0x00, 0x00, 0x00, + 0x95, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x83, 0x00, 0x4f, 0x0d, + 0x20, 0x00, 0x00, 0x00, + 0xdb, 0x34, 0x3d, 0x20, 0xe3, 0x00, 0x00, 0x00, 0x1e, 0x40, 0x4a, 0x03, + 0xdd, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x0f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x4a, 0x80, 0x3c, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x19, 0xc7, 0x09, 0x00, 0x60, 0x00, 0x00, 0x00, 0x91, 0x03, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x48, 0x02, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x80, 0x3c, 0x08, + 0xf0, 0x00, 0x00, 0x00, + 0x5b, 0x35, 0x3d, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8a, 0x25, + 0xa0, 0x00, 0x00, 0x00, + 0xb9, 0xfe, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x26, 0x41, 0x4a, 0x0f, + 0xa4, 0x00, 0x00, 0x00, + 0x95, 0x03, 0x0c, 0x40, 0x53, 0x00, 0x00, 0x00, 0xd4, 0x40, 0x0a, 0x80, + 0x13, 0x00, 0x00, 0x00, + 0x03, 0x32, 0x3e, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x34, 0xd0, 0xbd, 0x5b, + 0xd3, 0x00, 0x00, 0x00, + 0x95, 0x03, 0x7c, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xbf, 0xe0, 0x2c, 0x82, + 0xca, 0x00, 0x00, 0x00, + 0x06, 0x22, 0x7e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0xbd, 0x5f, + 0xd3, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x0f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0x3d, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x16, 0xdb, 0x79, 0x0b, 0x60, 0x00, 0x00, 0x00, 0x48, 0x80, 0x1c, 0x82, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x1a, 0x2e, 0x88, 0x00, 0x00, 0x00, 0x83, 0x00, 0x3f, 0x0a, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x6b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x4a, + 0x50, 0x00, 0x00, 0x00, + 0x91, 0x03, 0x0c, 0x40, 0x11, 0x00, 0x00, 0x00, 0x82, 0x80, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x95, 0x03, 0xec, 0xc0, 0xc9, 0x00, 0x00, 0x00, 0x8e, 0x9c, 0x2c, 0x20, + 0xe2, 0x00, 0x00, 0x00, + 0x06, 0x22, 0x7e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0xbd, 0x6d, + 0xd3, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0xc6, 0x80, 0x0c, 0xdf, + 0x26, 0x00, 0x00, 0x00, + 0xa8, 0xe4, 0x4c, 0x01, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x76, 0x83, 0x71, + 0x57, 0x00, 0x00, 0x00, + 0x95, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x98, 0x41, 0x0a, 0x20, + 0x84, 0x00, 0x00, 0x00, + 0x06, 0x22, 0x7e, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xd4, 0x5c, 0xbd, 0x75, + 0xd3, 0x00, 0x00, 0x00, + 0x1a, 0x41, 0x7a, 0xe3, 0x27, 0x00, 0x00, 0x00, 0x63, 0xc4, 0x68, 0x8b, + 0x30, 0x00, 0x00, 0x00, + 0x40, 0x82, 0x0c, 0x80, 0x58, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x88, 0x53, + 0x30, 0x00, 0x00, 0x00, + 0x49, 0x80, 0x0c, 0x40, 0x58, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x98, 0x8b, + 0x30, 0x00, 0x00, 0x00, + 0xe1, 0x04, 0x23, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x84, 0x05, 0x40, + 0x8c, 0x00, 0x00, 0x00, + 0x15, 0x50, 0xa6, 0x04, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xa0, + 0x60, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0x03, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, 0x76, 0x81, 0x2b, + 0x88, 0x00, 0x00, 0x00, + 0xb6, 0x82, 0x08, 0xa0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x03, 0x60, + 0x17, 0x00, 0x00, 0x00, + 0x00, 0x76, 0x71, 0x2b, 0x88, 0x00, 0x00, 0x00, 0xba, 0x82, 0x08, 0xa0, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0x03, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0x76, 0x01, 0x20, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x08, 0xe0, 0x33, 0x00, 0x00, 0x00, 0x09, 0x81, 0x0c, 0x26, + 0xa2, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x3f, 0x0a, 0xf0, 0x00, 0x00, 0x00, 0x22, 0x47, 0x08, 0x8b, + 0x31, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x08, 0x40, 0x53, 0x00, 0x00, 0x00, 0xe6, 0x18, 0x43, 0x26, + 0xa1, 0x00, 0x00, 0x00, + 0x22, 0x35, 0x05, 0xe0, 0x84, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0xa0, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x08, 0x06, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x07, + 0xc8, 0x00, 0x00, 0x00, + 0xd6, 0x01, 0x3c, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05, + 0xa4, 0x00, 0x00, 0x00, + 0x42, 0x02, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfa, 0x25, + 0xa0, 0x00, 0x00, 0x00, + 0x87, 0xc0, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x83, 0x00, 0x1f, 0x26, + 0xd0, 0x00, 0x00, 0x00, + 0x7e, 0x48, 0x26, 0x95, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x48, 0x46, 0x83, + 0x64, 0x00, 0x00, 0x00, + 0xe1, 0x52, 0x06, 0x20, 0x61, 0x00, 0x00, 0x00, 0x60, 0x1b, 0x01, 0xa0, + 0x67, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x01, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x07, 0xb9, 0x6b, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x4b, 0xa1, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xea, 0xb5, 0xa0, 0x00, 0x00, 0x00, 0x9f, 0x80, 0x0c, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x4b, 0x02, 0xcd, 0xbc, 0xd3, 0x00, 0x00, 0x00, 0x10, 0x00, 0xaf, 0x24, + 0xd0, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x9d, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0xf6, 0x0f, 0x5d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xe8, 0x04, 0x1d, 0x04, + 0xf0, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x0d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x13, 0x00, 0x2d, 0x01, + 0xd0, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x4d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x00, 0x6f, 0x01, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7d, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x6f, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x3d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x5d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x6d, 0x05, 0xf0, 0x00, 0x00, 0x00, 0xf1, 0x7f, 0x0d, 0x5b, + 0xd0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x3d, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x4b, 0xc7, + 0xb2, 0x00, 0x00, 0x00, + 0x54, 0x28, 0x0b, 0x40, 0x51, 0x00, 0x00, 0x00, 0x03, 0x12, 0x0e, 0x02, + 0xf0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x6d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8c, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x9d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x5d, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x08, + 0xe9, 0x00, 0x00, 0x00, + 0x30, 0x40, 0x1a, 0xbe, 0x25, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2a, 0x1b, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x1a, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x01, 0xe0, + 0x15, 0x00, 0x00, 0x00, + 0xf8, 0x80, 0x63, 0x2b, 0x79, 0x00, 0x00, 0x00, 0x27, 0x27, 0x03, 0x00, + 0x52, 0x00, 0x00, 0x00, + 0x00, 0x16, 0x78, 0x6d, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x86, 0x08, 0xa0, + 0x34, 0x00, 0x00, 0x00, + 0xc0, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x08, 0xc0, 0x33, 0x00, 0x00, 0x00, 0x10, 0x40, 0x0a, 0x1a, + 0xa4, 0x00, 0x00, 0x00, + 0x93, 0x4b, 0x23, 0x39, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xd5, + 0x88, 0x00, 0x00, 0x00, + 0xd5, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x10, 0x00, 0xcf, 0xd2, + 0xd3, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x03, 0x60, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xa0, 0x41, 0x0a, 0x21, 0x8c, 0x00, 0x00, 0x00, 0x92, 0x41, 0x0a, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xca, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x08, + 0xe9, 0x00, 0x00, 0x00, + 0xb2, 0x41, 0x1a, 0xbe, 0x25, 0x00, 0x00, 0x00, 0x54, 0x40, 0x0a, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x6e, 0x31, 0xf3, 0x15, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0x2b, + 0x79, 0x00, 0x00, 0x00, + 0x00, 0x46, 0x08, 0x80, 0x36, 0x00, 0x00, 0x00, 0xe3, 0x03, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xd8, 0x97, 0x8c, 0xaf, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb3, 0xeb, + 0x14, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x12, 0x3e, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x26, 0x78, 0x92, + 0x36, 0x00, 0x00, 0x00, + 0x17, 0x97, 0x0c, 0xa0, 0x34, 0x00, 0x00, 0x00, 0xd5, 0x03, 0x0c, 0x40, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x03, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xa0, 0x41, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x92, 0x05, 0x0a, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x27, 0x27, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0xdd, 0x03, 0x0c, 0x4e, + 0x84, 0x00, 0x00, 0x00, + 0xf5, 0x03, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xb6, 0x69, 0x23, 0x00, 0x00, 0x00, 0x00, 0x74, 0x93, 0x73, + 0x3b, 0x00, 0x00, 0x00, + 0xf5, 0x46, 0x93, 0xcd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x98, 0x10, + 0xc8, 0x00, 0x00, 0x00, + 0xd5, 0x28, 0x03, 0xe0, 0x13, 0x00, 0x00, 0x00, 0xdd, 0x03, 0x7c, 0x52, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x73, 0xb2, 0xa0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0xae, + 0x85, 0x00, 0x00, 0x00, + 0x7a, 0x41, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x4b, 0xd3, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0xfd, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xbc, 0x05, 0xcd, 0x3d, + 0x88, 0x00, 0x00, 0x00, + 0x74, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xba, 0x43, 0xcd, 0xfc, + 0xd3, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xdb, 0x4a, 0xc3, 0xbc, + 0xd3, 0x00, 0x00, 0x00, + 0xd5, 0x86, 0x78, 0x71, 0xc9, 0x00, 0x00, 0x00, 0xbf, 0x03, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x10, 0xc2, 0x08, 0xc0, + 0x34, 0x00, 0x00, 0x00, + 0x92, 0x05, 0x0a, 0x1a, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x41, 0x4a, 0x08, + 0xe9, 0x00, 0x00, 0x00, + 0x90, 0x81, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x68, 0xcb, 0x2d, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa7, 0x37, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x21, + 0x79, 0x00, 0x00, 0x00, + 0x12, 0x92, 0x07, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x13, 0x92, 0x07, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x14, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x15, 0x92, 0x07, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x16, 0x92, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x17, 0x92, 0x07, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x18, 0xe0, 0xcf, 0x0b, 0x70, 0x00, 0x00, 0x00, 0x30, 0x2f, 0x01, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0xc8, 0x49, 0x33, 0x00, 0x00, 0x00, 0x14, 0x04, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xd0, 0xa1, 0xfc, 0x88, 0xd0, 0x00, 0x00, 0x00, 0x7f, 0x04, 0xda, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xad, 0x21, + 0xd4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xca, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x06, 0x80, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0x06, 0x80, + 0x64, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xea, 0x31, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfa, 0x0b, + 0x51, 0x00, 0x00, 0x00, + 0x7f, 0x20, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xfa, 0x0b, 0x51, 0x00, 0x00, 0x00, 0x7f, 0x20, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfa, 0x0b, + 0x51, 0x00, 0x00, 0x00, + 0x7f, 0x20, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xfb, 0x0b, 0x51, 0x00, 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x48, 0xd4, 0x01, + 0x4c, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x0f, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x8c, 0x80, 0xec, 0x23, + 0x21, 0x00, 0x00, 0x00, + 0x75, 0x13, 0x24, 0x3f, 0xc8, 0x00, 0x00, 0x00, 0xe1, 0x45, 0x08, 0x00, + 0x37, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x1a, 0x06, 0xa4, 0x00, 0x00, 0x00, 0x70, 0x46, 0x38, 0x2f, + 0x15, 0x00, 0x00, 0x00, + 0xa0, 0x03, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x23, 0x2a, 0x03, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0xd4, 0x05, 0x32, 0x8c, 0x00, 0x00, 0x00, 0x55, 0xf9, 0x09, 0x60, + 0x63, 0x00, 0x00, 0x00, + 0x50, 0xc2, 0x78, 0xfa, 0x21, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0f, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x01, 0x18, 0x2d, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0x17, 0x93, 0x28, 0x80, + 0xd1, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x03, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x14, 0x0d, 0x00, + 0x81, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x2a, 0x40, 0xd1, 0x00, 0x00, 0x00, 0x02, 0x10, 0x1d, 0x00, + 0xd1, 0x00, 0x00, 0x00, + 0x01, 0x1c, 0x0d, 0x40, 0xa0, 0x00, 0x00, 0x00, 0xba, 0x02, 0x2d, 0xc0, + 0xd1, 0x00, 0x00, 0x00, + 0xe6, 0x03, 0x68, 0x71, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1e, + 0xa4, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x9f, 0x5d, 0xb6, 0x00, 0x00, 0x00, 0xdc, 0x41, 0x9a, 0x8d, + 0xd4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xaa, 0x3b, + 0xd4, 0x00, 0x00, 0x00, + 0xa1, 0x40, 0x0a, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x47, + 0xb6, 0x00, 0x00, 0x00, + 0x3e, 0xe4, 0x25, 0x1f, 0xa4, 0x00, 0x00, 0x00, 0xf9, 0x20, 0xb5, 0x17, + 0xa4, 0x00, 0x00, 0x00, + 0x8f, 0x81, 0x0c, 0xd2, 0x15, 0x00, 0x00, 0x00, 0x27, 0x5f, 0x98, 0x89, + 0x31, 0x00, 0x00, 0x00, + 0x2d, 0x81, 0x0c, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x13, 0x9a, + 0x88, 0x00, 0x00, 0x00, + 0x62, 0x04, 0xbc, 0xd5, 0x8a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x0f, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x5a, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x4f, 0xf7, + 0x27, 0x00, 0x00, 0x00, + 0x94, 0x5b, 0x12, 0x15, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x05, 0x20, + 0xa0, 0x00, 0x00, 0x00, + 0x5a, 0x04, 0xfc, 0x5a, 0x80, 0x00, 0x00, 0x00, 0x60, 0x34, 0x03, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x62, 0x40, 0x2e, 0x88, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x08, 0xc0, + 0x17, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x03, 0xe0, 0x27, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x0c, 0x40, + 0x8c, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x0f, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x76, 0x40, 0x9a, 0x18, + 0xc8, 0x00, 0x00, 0x00, + 0xe2, 0x1c, 0x13, 0x8a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x26, 0x71, 0x27, + 0x88, 0x00, 0x00, 0x00, + 0x78, 0x82, 0x48, 0xce, 0x31, 0x00, 0x00, 0x00, 0x16, 0x1d, 0x03, 0x60, + 0x12, 0x00, 0x00, 0x00, + 0x79, 0x82, 0x88, 0x0c, 0xc8, 0x00, 0x00, 0x00, 0x17, 0x1d, 0x03, 0x60, + 0x12, 0x00, 0x00, 0x00, + 0x18, 0x83, 0x08, 0x0d, 0xc8, 0x00, 0x00, 0x00, 0x19, 0x41, 0x0a, 0x60, + 0x12, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x1a, 0x09, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0f, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0xf6, 0x10, 0xb6, 0x95, 0x24, 0x00, 0x00, 0x00, 0xb7, 0xb9, 0x21, 0x3d, + 0x61, 0x00, 0x00, 0x00, + 0xd6, 0xe8, 0x81, 0x3f, 0x61, 0x00, 0x00, 0x00, 0x97, 0xf9, 0x91, 0x2f, + 0x61, 0x00, 0x00, 0x00, + 0xd8, 0x13, 0x06, 0x7a, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x15, 0x8b, + 0x1b, 0x00, 0x00, 0x00, + 0x93, 0x40, 0x9a, 0x0d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x08, 0xaa, 0x64, 0xd4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0f, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0xf4, 0x40, 0xea, 0x23, 0x21, 0x00, 0x00, 0x00, 0x00, 0x32, 0x03, 0x1f, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0xaa, 0x84, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x08, 0xaa, 0x24, 0xd0, 0x00, 0x00, 0x00, 0xa2, 0x74, 0x33, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0x15, 0x0e, 0x08, 0x80, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x14, 0x1d, 0x4a, + 0x37, 0x00, 0x00, 0x00, + 0x00, 0x74, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, + 0xd1, 0x00, 0x00, 0x00, + 0x53, 0x64, 0x0b, 0xc0, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4c, 0x05, + 0xa4, 0x00, 0x00, 0x00, + 0x58, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x04, 0xaa, 0x73, + 0xd4, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x0f, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x64, 0xeb, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0xf4, 0x40, 0x3a, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x40, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x90, 0x0f, 0x15, 0xc8, 0x00, 0x00, 0x00, 0x30, 0x3b, 0x01, 0xa0, + 0x11, 0x00, 0x00, 0x00, + 0xb8, 0x49, 0x47, 0x17, 0x70, 0x00, 0x00, 0x00, 0x10, 0x5b, 0xc7, 0x1f, + 0x70, 0x00, 0x00, 0x00, + 0x54, 0x6d, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x98, 0x01, 0x07, 0x15, + 0xc8, 0x00, 0x00, 0x00, + 0xdc, 0x91, 0x0f, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x30, 0x3b, 0x01, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xb8, 0x49, 0x47, 0x17, 0x70, 0x00, 0x00, 0x00, 0x10, 0x5b, 0xc7, 0x1f, + 0x70, 0x00, 0x00, 0x00, + 0x54, 0x6d, 0x07, 0x00, 0x70, 0x00, 0x00, 0x00, 0x31, 0x81, 0x8c, 0x19, + 0x70, 0x00, 0x00, 0x00, + 0xdc, 0x39, 0x13, 0xe6, 0x77, 0x00, 0x00, 0x00, 0x00, 0x96, 0x38, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0x4b, 0x81, 0x8c, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x64, 0x4b, 0x03, 0x2e, + 0x14, 0x00, 0x00, 0x00, + 0x20, 0x23, 0x81, 0xd1, 0x88, 0x00, 0x00, 0x00, 0x18, 0x87, 0x08, 0xae, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xac, 0x21, + 0xd4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3a, 0x03, 0xf0, 0x00, 0x00, 0x00, 0xd4, 0x04, 0x3a, 0x09, + 0xa4, 0x00, 0x00, 0x00, + 0xe3, 0x40, 0x3a, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x76, 0x76, 0x46, 0x1b, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x71, 0x6b, 0x7c, 0x00, 0x00, 0x00, 0x7a, 0xe9, 0x28, 0x23, + 0x33, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x13, 0xe6, 0x12, 0x00, 0x00, 0x00, 0xa7, 0x04, 0x7c, 0xc9, + 0x88, 0x00, 0x00, 0x00, + 0x31, 0x5e, 0x61, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0xe5, 0x0d, 0x01, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xf9, 0x27, 0x13, 0x2a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x44, 0xa8, 0x09, + 0xc8, 0x00, 0x00, 0x00, + 0xa2, 0x40, 0x9a, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0x21, 0x85, 0x08, 0x80, + 0x37, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0a, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0x40, + 0x20, 0x00, 0x00, 0x00, + 0xa1, 0x40, 0x3a, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6a, 0x05, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x88, 0x08, 0x40, 0x27, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x39, 0x09, 0xda, 0x59, 0xca, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x5a, 0x09, 0x2a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0xa0, 0xfe, 0x0c, 0x00, + 0xf8, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x0b, 0x07, 0xfd, 0x00, 0x00, 0x00, 0x60, 0x22, 0x05, 0x2f, + 0x41, 0x00, 0x00, 0x00, + 0xa1, 0xb2, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0f, 0x8d, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x88, 0x08, 0x40, 0x27, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x21, 0x09, 0x7a, 0x5a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x12, 0x54, 0x91, 0xae, + 0xd4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xaa, 0x35, 0xa0, 0x00, 0x00, 0x00, 0xe5, 0x13, 0x32, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0x7a, 0xa5, 0x23, 0x43, 0x22, 0x00, 0x00, 0x00, 0x00, 0x88, 0x08, 0x40, + 0x27, 0x00, 0x00, 0x00, + 0xa2, 0x04, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x21, 0x09, 0x0a, 0x5b, + 0xca, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x9a, 0xb6, 0xd4, 0x00, 0x00, 0x00, 0xa2, 0x5b, 0xb2, 0x02, + 0xf0, 0x00, 0x00, 0x00, + 0x20, 0x37, 0x62, 0x43, 0x22, 0x00, 0x00, 0x00, 0x77, 0x80, 0x67, 0xd5, + 0x00, 0x00, 0x00, 0x00, + 0x30, 0x1c, 0x70, 0x55, 0x3a, 0x00, 0x00, 0x00, 0x50, 0xa5, 0x43, 0x3a, + 0x79, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x3f, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x24, 0xb6, 0xe9, + 0x27, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe0, + 0x77, 0x00, 0x00, 0x00, + 0x51, 0xb7, 0x13, 0x07, 0x78, 0x00, 0x00, 0x00, 0x32, 0x92, 0x07, 0xc0, + 0x01, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x20, 0x75, 0x3b, 0x00, 0x00, 0x00, 0x53, 0xb7, 0x33, 0x07, + 0x78, 0x00, 0x00, 0x00, + 0x34, 0x92, 0x07, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x40, 0x95, + 0x3c, 0x00, 0x00, 0x00, + 0x55, 0xc9, 0x53, 0x07, 0x78, 0x00, 0x00, 0x00, 0x00, 0x92, 0x07, 0xc0, + 0x01, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x06, 0x80, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x24, 0x06, 0xe0, + 0x77, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x20, 0x7e, 0x37, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0x62, 0x7f, 0x17, 0x67, 0x62, 0x00, 0x00, 0x00, 0xdc, 0x7e, 0x27, 0x45, + 0x62, 0x00, 0x00, 0x00, + 0x17, 0x7e, 0xd7, 0x51, 0x62, 0x00, 0x00, 0x00, 0x24, 0x16, 0xa3, 0xbd, + 0x59, 0x00, 0x00, 0x00, + 0x23, 0x06, 0x13, 0x36, 0x8d, 0x00, 0x00, 0x00, 0x25, 0x06, 0x13, 0xf6, + 0x80, 0x00, 0x00, 0x00, + 0x26, 0x06, 0x23, 0xb6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x33, 0x76, + 0x80, 0x00, 0x00, 0x00, + 0x67, 0x41, 0x5a, 0x36, 0x80, 0x00, 0x00, 0x00, 0xe1, 0xd3, 0x48, 0x82, + 0x31, 0x00, 0x00, 0x00, + 0xe1, 0x0f, 0x38, 0x82, 0x30, 0x00, 0x00, 0x00, 0xe2, 0x0b, 0x58, 0x82, + 0x30, 0x00, 0x00, 0x00, + 0xe3, 0x07, 0x68, 0x82, 0x30, 0x00, 0x00, 0x00, 0xe5, 0x03, 0x08, 0x80, + 0x30, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x7f, 0x1e, 0xa4, 0x00, 0x00, 0x00, 0xf0, 0x1c, 0x01, 0x20, + 0x66, 0x00, 0x00, 0x00, + 0x00, 0x32, 0x13, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x53, 0x41, 0x2a, 0x5a, + 0x84, 0x00, 0x00, 0x00, + 0xa1, 0x3d, 0x73, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x52, 0x41, 0x0a, 0x40, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x63, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x41, 0x0a, 0x5a, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x53, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x50, 0x41, 0x0a, 0x40, + 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x9a, 0xe6, 0xd4, 0x00, 0x00, 0x00, 0x66, 0x40, 0x3a, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0x7a, 0x63, 0x96, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x32, 0x14, 0x18, 0x5e, + 0x31, 0x00, 0x00, 0x00, + 0xe6, 0xa2, 0x08, 0xe0, 0x26, 0x00, 0x00, 0x00, 0x13, 0x05, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x9f, 0x04, 0xc8, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x0c, 0x20, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x27, 0xa0, 0x00, 0x00, 0x00, 0xe6, 0x8e, 0x08, 0xe0, + 0x26, 0x00, 0x00, 0x00, + 0x0e, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2f, 0x05, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0xc1, 0x0c, 0x20, 0x10, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0f, 0x27, + 0xa0, 0x00, 0x00, 0x00, + 0x77, 0xda, 0x47, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0xb9, 0x1e, 0xa1, 0x11, + 0xc8, 0x00, 0x00, 0x00, + 0x57, 0x50, 0x38, 0x6e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xc0, 0xc1, 0x1c, 0x43, 0x22, 0x00, 0x00, 0x00, 0x71, 0x7a, 0x65, 0xc9, + 0x10, 0x00, 0x00, 0x00, + 0x52, 0x40, 0x7a, 0x09, 0xf8, 0x00, 0x00, 0x00, 0xe6, 0x44, 0xa8, 0x75, + 0x31, 0x00, 0x00, 0x00, + 0x22, 0x41, 0x9a, 0x1b, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x08, 0x60, 0x32, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xc0, + 0x20, 0x00, 0x00, 0x00, + 0x12, 0x40, 0x0a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x7e, 0xff, 0x2c, 0xa3, + 0x5e, 0x00, 0x00, 0x00, + 0xb4, 0x0a, 0x35, 0xe7, 0x48, 0x00, 0x00, 0x00, 0xf5, 0x1a, 0x25, 0xe1, + 0x49, 0x00, 0x00, 0x00, + 0x36, 0x2b, 0x35, 0xe5, 0x4a, 0x00, 0x00, 0x00, 0x94, 0x3a, 0x75, 0xe3, + 0x4b, 0x00, 0x00, 0x00, + 0x78, 0xec, 0x57, 0xed, 0x4c, 0x00, 0x00, 0x00, 0x16, 0x8d, 0x04, 0xa0, + 0x54, 0x00, 0x00, 0x00, + 0x00, 0x9c, 0x94, 0xab, 0x50, 0x00, 0x00, 0x00, 0xfa, 0xac, 0x74, 0xa1, + 0x51, 0x00, 0x00, 0x00, + 0x3b, 0xbd, 0x84, 0xa5, 0x52, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xda, 0xcc, 0x94, 0xa9, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa0, + 0x54, 0x00, 0x00, 0x00, + 0x89, 0x51, 0xbd, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x6c, 0xab, + 0x54, 0x00, 0x00, 0x00, + 0xee, 0x04, 0xcc, 0x8f, 0x49, 0x00, 0x00, 0x00, 0x50, 0xa8, 0x04, 0xe0, + 0x51, 0x00, 0x00, 0x00, + 0x96, 0xb8, 0x04, 0xe0, 0x52, 0x00, 0x00, 0x00, 0xdc, 0x40, 0x1a, 0xfe, + 0x53, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x3c, 0xab, 0x54, 0x00, 0x00, 0x00, 0xe9, 0x04, 0x6c, 0x8f, + 0x49, 0x00, 0x00, 0x00, + 0x50, 0xa8, 0x04, 0xe0, 0x51, 0x00, 0x00, 0x00, 0x93, 0xb8, 0x04, 0xe0, + 0x52, 0x00, 0x00, 0x00, + 0xd6, 0x40, 0x1a, 0xfe, 0x53, 0x00, 0x00, 0x00, 0x1f, 0x81, 0x3c, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0xa6, 0x41, 0x7a, 0x03, 0xa4, 0x00, 0x00, 0x00, 0xbc, 0x40, 0x23, 0x0e, + 0xa4, 0x00, 0x00, 0x00, + 0xbd, 0x40, 0x9a, 0x37, 0x8c, 0x00, 0x00, 0x00, 0xa2, 0x03, 0x18, 0xd2, + 0x35, 0x00, 0x00, 0x00, + 0x32, 0x44, 0x03, 0x60, 0x63, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x1a, 0x1e, + 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x6a, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x90, 0x08, 0xe0, + 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, + 0xf8, 0x00, 0x00, 0x00, + 0xff, 0xc7, 0x0c, 0x07, 0xa4, 0x00, 0x00, 0x00, 0xc0, 0xb9, 0x0c, 0x36, + 0x7c, 0x00, 0x00, 0x00, + 0x34, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xe1, 0x65, 0x03, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xb6, 0x41, 0x2a, 0x6a, 0x85, 0x00, 0x00, 0x00, 0x00, 0xac, 0x08, 0xe0, + 0x22, 0x00, 0x00, 0x00, + 0x46, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, + 0xf8, 0x00, 0x00, 0x00, + 0x60, 0xff, 0x0c, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x14, 0x3e, + 0x7c, 0x00, 0x00, 0x00, + 0x60, 0xff, 0x6c, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x94, 0x08, 0xe0, + 0x22, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x2e, 0x05, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09, 0xa0, + 0x51, 0x00, 0x00, 0x00, + 0x00, 0x6e, 0x01, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x80, 0x82, 0x3c, 0x03, + 0xf0, 0x00, 0x00, 0x00, + 0x77, 0x44, 0x26, 0x0e, 0xa4, 0x00, 0x00, 0x00, 0x79, 0x17, 0xf1, 0x1f, + 0xc8, 0x00, 0x00, 0x00, + 0x96, 0x47, 0x68, 0x92, 0x31, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, 0x80, + 0x35, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x41, + 0x31, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x7f, 0x65, 0x84, 0x00, 0x00, 0x00, 0x92, 0x41, 0x9a, 0x4a, + 0xd5, 0x00, 0x00, 0x00, + 0xee, 0x1f, 0x01, 0xe0, 0x51, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x80, + 0x7c, 0x00, 0x00, 0x00, + 0x00, 0xfa, 0x01, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x80, + 0x7c, 0x00, 0x00, 0x00, + 0xff, 0xc7, 0x0c, 0xf6, 0xcf, 0x00, 0x00, 0x00, 0x20, 0x05, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x05, 0x20, 0x8c, 0x00, 0x00, 0x00, 0xe1, 0x85, 0x09, 0x25, + 0x55, 0x00, 0x00, 0x00, + 0x00, 0x6e, 0x01, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x28, 0x05, 0x0c, 0x80, + 0x7c, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x84, 0x09, 0x20, + 0x55, 0x00, 0x00, 0x00, + 0x00, 0x6e, 0x01, 0x01, 0xd0, 0x00, 0x00, 0x00, 0x36, 0x84, 0x6c, 0x05, + 0xf0, 0x00, 0x00, 0x00, + 0xb2, 0x48, 0x34, 0x87, 0x24, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0xef, + 0x27, 0x00, 0x00, 0x00, + 0x7f, 0xbe, 0x0c, 0x20, 0x94, 0x00, 0x00, 0x00, 0x53, 0x30, 0x13, 0x93, + 0x23, 0x00, 0x00, 0x00, + 0xd0, 0x49, 0x06, 0x8d, 0x88, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x31, 0x3d, + 0x65, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x1f, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xb1, 0x41, 0x0a, 0x60, + 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x49, 0x02, 0x0d, 0x60, + 0x30, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x60, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x9a, 0x5a, + 0xd5, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3a, 0x08, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x1a, 0x79, 0xa0, 0x00, 0x00, 0x00, 0x4b, 0x82, 0x0c, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0x49, 0x00, 0xcf, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x20, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0d, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0x6c, 0x05, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x00, 0xbf, 0x63, + 0xd5, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x1f, 0x16, 0xc8, 0x00, 0x00, 0x00, 0xe6, 0x1a, 0x03, 0x1f, + 0xa4, 0x00, 0x00, 0x00, + 0x62, 0x6c, 0x02, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x49, 0x00, 0x3f, 0xd7, + 0x46, 0x00, 0x00, 0x00, + 0x71, 0x41, 0x0a, 0xbf, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x40, 0x1a, 0x02, + 0xc8, 0x00, 0x00, 0x00, + 0xf4, 0x40, 0x8a, 0x53, 0x80, 0x00, 0x00, 0x00, 0x74, 0x5c, 0x52, 0x13, + 0xa4, 0x00, 0x00, 0x00, + 0x0b, 0x12, 0x5e, 0x0b, 0x35, 0x00, 0x00, 0x00, 0x0c, 0x32, 0xbe, 0x20, + 0xe2, 0x00, 0x00, 0x00, + 0xe6, 0x40, 0xca, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x32, 0x24, 0xc2, 0x33, + 0x8d, 0x00, 0x00, 0x00, + 0x89, 0x05, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa2, 0x03, 0x38, 0x67, + 0x34, 0x00, 0x00, 0x00, + 0xba, 0x0c, 0x01, 0x40, 0x06, 0x00, 0x00, 0x00, 0x53, 0x40, 0x2a, 0xc1, + 0x11, 0x00, 0x00, 0x00, + 0x8b, 0x82, 0x0c, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x81, 0x83, 0xcc, 0x07, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0xce, 0x08, 0x40, 0x31, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9c, 0x04, + 0xf0, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x4d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x61, 0x46, 0x03, 0x20, 0xa0, 0x00, 0x00, 0x00, 0x33, 0x00, 0x3f, 0xea, + 0x84, 0x00, 0x00, 0x00, + 0x31, 0x40, 0x0a, 0xe0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, + 0xfe, 0x00, 0x00, 0x00, + 0xf4, 0x28, 0x0a, 0x0b, 0x11, 0x00, 0x00, 0x00, 0xa2, 0x75, 0x13, 0x04, + 0xf0, 0x00, 0x00, 0x00, + 0xb3, 0x40, 0x0a, 0xe0, 0xc8, 0x00, 0x00, 0x00, 0xf4, 0x1c, 0x08, 0x86, + 0xc8, 0x00, 0x00, 0x00, + 0x20, 0x8e, 0x1c, 0xda, 0x37, 0x00, 0x00, 0x00, 0x40, 0x8c, 0x7c, 0x0b, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x23, 0x2f, 0x81, 0x00, 0x00, 0x00, 0xb1, 0x40, 0x0a, 0xa0, + 0xc8, 0x00, 0x00, 0x00, + 0xf6, 0x08, 0x08, 0xc6, 0xc8, 0x00, 0x00, 0x00, 0xb5, 0x40, 0x0a, 0xa2, + 0xc8, 0x00, 0x00, 0x00, + 0xf0, 0x40, 0x0a, 0x84, 0xc8, 0x00, 0x00, 0x00, 0x61, 0x41, 0x9a, 0x04, + 0xf0, 0x00, 0x00, 0x00, + 0x53, 0x40, 0x2a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0xdb, 0x40, 0xaa, 0x09, + 0xa4, 0x00, 0x00, 0x00, + 0x76, 0x40, 0x0a, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xa0, 0x81, 0x0c, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0xe6, 0xed, 0x09, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0xc0, + 0x35, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x28, 0xe3, 0x34, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x16, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x98, 0x09, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, + 0x78, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x68, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x16, 0x0a, 0xde, 0x10, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0a, 0x3e, + 0x58, 0x00, 0x00, 0x00, + 0xe0, 0xa1, 0x0a, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0xe0, + 0x77, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x0f, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x14, 0x40, 0x0a, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x16, 0x40, 0x5a, 0x1d, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x41, 0x3a, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xba, 0x0b, 0xa4, 0x00, 0x00, 0x00, 0x79, 0x40, 0x0a, 0x00, + 0xf8, 0x00, 0x00, 0x00, + 0xa0, 0x81, 0x0c, 0x03, 0xa4, 0x00, 0x00, 0x00, 0xe6, 0xed, 0x09, 0x00, + 0x67, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x08, 0xc0, 0x35, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0xe3, + 0x34, 0x00, 0x00, 0x00, + 0x00, 0xe2, 0x16, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x98, 0x09, 0x00, + 0x67, 0x00, 0x00, 0x00, + 0x00, 0xa0, 0x0a, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0a, 0xde, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x0a, 0x3e, 0x58, 0x00, 0x00, 0x00, 0xe0, 0xa1, 0x0a, 0x00, + 0x78, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x68, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x06, 0xe0, 0x77, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x0b, 0xe0, + 0x77, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9a, 0x04, + 0xf0, 0x00, 0x00, 0x00, + 0xd8, 0x41, 0x7a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9a, 0x21, + 0xa0, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0xcd, 0xc4, + 0xd5, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x3d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xdd, 0xff, + 0xdf, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x5d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x7d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0xad, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x9d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x16, 0xfe, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4c, 0x0b, + 0xa4, 0x00, 0x00, 0x00, + 0xf0, 0x20, 0xe5, 0xe7, 0xcf, 0x00, 0x00, 0x00, 0x94, 0x32, 0x05, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xd0, 0x40, 0x3a, 0x20, 0xe2, 0x00, 0x00, 0x00, 0xa1, 0x40, 0x0a, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x2c, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x14, 0xa1, 0x00, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2f, 0x25, 0x30, 0x00, 0x00, 0x00, 0x9c, 0x5c, 0x0d, 0x20, + 0x8c, 0x00, 0x00, 0x00, + 0x10, 0x00, 0xaf, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xf3, 0x7e, 0xb2, 0x08, + 0xe9, 0x00, 0x00, 0x00, + 0xa1, 0xd0, 0x57, 0x18, 0xc8, 0x00, 0x00, 0x00, 0x10, 0xc2, 0x09, 0x94, + 0xc8, 0x00, 0x00, 0x00, + 0x51, 0x0a, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x17, 0x32, + 0x8e, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x69, 0x36, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x03, 0xe0, + 0x01, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x0f, 0x60, 0x8d, 0x00, 0x00, 0x00, 0xf4, 0x67, 0x03, 0x80, + 0x13, 0x00, 0x00, 0x00, + 0x00, 0xd2, 0x88, 0x14, 0xc8, 0x00, 0x00, 0x00, 0xd4, 0x41, 0x0a, 0xa0, + 0x17, 0x00, 0x00, 0x00, + 0x03, 0x72, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0xca, 0xdb, + 0xd5, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x08, 0x40, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x60, + 0x23, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3a, 0xad, + 0xa0, 0x00, 0x00, 0x00, + 0x8a, 0x80, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x21, 0x71, 0xcb, 0xec, + 0xd5, 0x00, 0x00, 0x00, + 0x8b, 0x90, 0x0e, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x85, 0x81, 0x3c, 0xef, + 0x27, 0x00, 0x00, 0x00, + 0x5a, 0x95, 0x1c, 0x0a, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x21, + 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x8c, 0x18, 0x05, 0x35, 0x00, 0x00, 0x00, 0x40, 0x89, 0x0c, 0x20, + 0x7d, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x20, 0x9c, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x08, 0x20, + 0x35, 0x00, 0x00, 0x00, + 0x00, 0xd0, 0x08, 0x40, 0x23, 0x00, 0x00, 0x00, 0xb7, 0x05, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x0a, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x66, 0x03, 0x80, + 0x13, 0x00, 0x00, 0x00, + 0x00, 0xbc, 0x05, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3a, 0xad, 0xa0, 0x00, 0x00, 0x00, 0x21, 0x37, 0x02, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0x48, 0x81, 0x4c, 0x08, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2a, 0x42, + 0x22, 0x00, 0x00, 0x00, + 0x00, 0x8a, 0x08, 0x80, 0x25, 0x00, 0x00, 0x00, 0xef, 0x05, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0xa6, 0x41, 0x3a, 0x79, 0x00, 0x00, 0x00, 0xf4, 0x2d, 0x03, 0x60, + 0xa0, 0x00, 0x00, 0x00, + 0x5f, 0xff, 0x3c, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x42, 0xcf, + 0x80, 0x00, 0x00, 0x00, + 0x00, 0xd0, 0x08, 0x02, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x51, 0xbe, + 0x53, 0x00, 0x00, 0x00, + 0x32, 0x80, 0x4c, 0xad, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x80, + 0x17, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x05, 0x20, 0x8c, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x06, 0xa0, + 0x53, 0x00, 0x00, 0x00, + 0x00, 0x88, 0x08, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0b, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0xca, 0x04, 0xd6, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x30, 0xcb, 0xdb, 0xd5, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xdd, 0xff, + 0xdf, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x32, 0x0e, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x4a, 0x7d, 0xa0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x4f, 0x08, + 0xe8, 0x00, 0x00, 0x00, + 0xa3, 0x7f, 0x32, 0x08, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x2a, + 0x79, 0x00, 0x00, 0x00, + 0x61, 0x81, 0x27, 0x4e, 0x3a, 0x00, 0x00, 0x00, 0xe1, 0x26, 0x13, 0x52, + 0x3a, 0x00, 0x00, 0x00, + 0xf6, 0x26, 0x13, 0x76, 0x81, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x36, + 0x81, 0x00, 0x00, 0x00, + 0xd6, 0x86, 0x09, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x08, 0xa0, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0x13, 0x96, 0xa0, 0x00, 0x00, 0x00, 0x61, 0x03, 0x0a, 0x40, + 0x80, 0x00, 0x00, 0x00, + 0xa1, 0x5a, 0x06, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x64, 0x02, 0xe0, + 0x3f, 0x00, 0x00, 0x00, + 0x06, 0x06, 0x0c, 0x40, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xa0, + 0xa0, 0x00, 0x00, 0x00, + 0xac, 0x61, 0x0d, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x64, 0x41, 0x5a, 0x13, + 0xb7, 0x00, 0x00, 0x00, + 0xf6, 0x4a, 0x31, 0x4a, 0xca, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x57, + 0x34, 0x00, 0x00, 0x00, + 0xe0, 0x56, 0x81, 0x5d, 0x88, 0x00, 0x00, 0x00, 0xd6, 0x40, 0x0a, 0xb2, + 0x65, 0x00, 0x00, 0x00, + 0x15, 0x41, 0x7a, 0x15, 0xa4, 0x00, 0x00, 0x00, 0x21, 0x40, 0x0a, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0xf8, 0x41, 0x9a, 0x1b, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xec, 0x07, 0x00, + 0x56, 0x00, 0x00, 0x00, + 0x7a, 0xec, 0x07, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0xd9, 0x6b, 0xb1, 0xeb, + 0x65, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x07, 0xe0, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x92, 0x07, 0x20, + 0x79, 0x00, 0x00, 0x00, + 0x7c, 0x1d, 0x01, 0x20, 0x79, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x0f, + 0xc8, 0x00, 0x00, 0x00, + 0xa2, 0x3a, 0xb1, 0x89, 0x8d, 0x00, 0x00, 0x00, 0x9b, 0xb0, 0x2f, 0x11, + 0xc8, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x00, 0x00, 0x60, 0x8a, 0x08, 0x85, + 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xec, 0x62, 0xad, 0x05, + 0xb7, 0x00, 0x00, 0x00, + 0x5c, 0x41, 0x0a, 0x80, 0xa0, 0x00, 0x00, 0x00, 0x5a, 0x40, 0x0a, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xca, 0xdb, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x92, 0x80, 0x0c, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0xe1, 0x41, 0xda, 0xa7, 0x25, 0x00, 0x00, 0x00, 0x00, 0x87, 0x0c, 0x0f, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0xe8, 0xf5, 0x11, 0x00, 0x00, 0x00, 0x5d, 0x40, 0x0a, 0x20, + 0x21, 0x00, 0x00, 0x00, + 0x00, 0x8e, 0x08, 0xe0, 0x22, 0x00, 0x00, 0x00, 0x33, 0x06, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x0f, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x01, 0xe3, + 0x13, 0x00, 0x00, 0x00, + 0xbe, 0xfe, 0x0c, 0x21, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x0f, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0x7d, 0x01, 0xcc, 0xdb, 0xd5, 0x00, 0x00, 0x00, 0x71, 0x40, 0x3a, 0x09, + 0xf0, 0x00, 0x00, 0x00, + 0xe2, 0x40, 0x0a, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x40, + 0x50, 0x00, 0x00, 0x00, + 0xa3, 0x01, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x46, + 0xd6, 0x00, 0x00, 0x00, + 0xa3, 0x01, 0x0f, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x20, 0x40, 0x0a, 0x49, + 0xd6, 0x00, 0x00, 0x00, + 0x14, 0x40, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xdc, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x1c, 0x40, 0xba, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x14, 0x40, 0x3a, 0x01, + 0xa4, 0x00, 0x00, 0x00, + 0x19, 0x40, 0x7a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8a, 0x19, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x6f, 0xb8, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2a, 0x8e, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x98, + 0xd0, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x2f, 0xee, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x51, + 0xd6, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x1c, 0x18, 0xf0, 0x00, 0x00, 0x00, 0x05, 0x00, 0x4d, 0x00, + 0xd0, 0x00, 0x00, 0x00, + 0x13, 0xf3, 0x2d, 0xff, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1d, 0x01, + 0xd1, 0x00, 0x00, 0x00, + 0xeb, 0xb3, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xee, 0x66, 0xdd, 0x18, + 0xf0, 0x00, 0x00, 0x00, + 0x31, 0x6e, 0x0d, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xf7, 0x0f, 0x2d, 0x0f, + 0xd0, 0x00, 0x00, 0x00, + 0x81, 0x01, 0x8f, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x33, 0x40, 0x9a, 0x80, + 0xd1, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x27, 0x07, 0xa4, 0x00, 0x00, 0x00, 0xf0, 0xc4, 0x08, 0x2a, + 0x3d, 0x00, 0x00, 0x00, + 0x00, 0xd4, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x31, 0xdb, 0x13, 0x9a, + 0x7c, 0x00, 0x00, 0x00, + 0x00, 0xc6, 0x08, 0xc0, 0x23, 0x00, 0x00, 0x00, 0x81, 0x01, 0x0f, 0x00, + 0xf0, 0x00, 0x00, 0x00, + 0xd0, 0x3c, 0x05, 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x80, + 0x84, 0x00, 0x00, 0x00, + 0x50, 0x4d, 0x11, 0x18, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x92, 0x16, 0x11, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x36, 0x0b, 0x70, 0x00, 0x00, 0x00, 0xf7, 0x06, 0x0c, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x06, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x66, 0x06, 0x0c, 0x60, 0x19, 0x00, 0x00, 0x00, 0x95, 0x96, 0x50, 0x53, + 0x00, 0x00, 0x00, 0x00, + 0xf3, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, + 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0xd4, 0x96, 0x42, 0x57, + 0x20, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x13, 0x9a, 0x02, 0x80, + 0x20, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x2a, 0x65, 0xa0, 0x00, 0x00, 0x00, 0x89, 0xe0, 0x1e, 0x18, + 0xf0, 0x00, 0x00, 0x00, + 0x37, 0x41, 0x6a, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x38, 0x41, 0xaa, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x39, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x3a, 0x41, 0xaa, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x3b, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x8d, 0x01, 0xaf, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x73, 0x40, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x55, 0x40, 0x6a, 0x19, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x6a, 0x1a, 0xa4, 0x00, 0x00, 0x00, 0x73, 0x40, 0x4a, 0x03, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0xb2, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xd0, 0xb6, 0x13, 0x52, + 0x7a, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x86, 0x37, 0x61, 0x00, 0x00, 0x00, 0x37, 0xc2, 0x09, 0x62, + 0x7a, 0x00, 0x00, 0x00, + 0xb2, 0x10, 0xf5, 0x12, 0x01, 0x00, 0x00, 0x00, 0xfb, 0x43, 0x11, 0xa3, + 0x11, 0x00, 0x00, 0x00, + 0x34, 0x91, 0xcf, 0x4b, 0x53, 0x00, 0x00, 0x00, 0x70, 0x30, 0x31, 0x03, + 0xfc, 0x00, 0x00, 0x00, + 0x61, 0xf1, 0x01, 0x43, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xdb, 0x18, + 0xf0, 0x00, 0x00, 0x00, + 0x86, 0x06, 0x3c, 0x25, 0x20, 0x00, 0x00, 0x00, 0x33, 0xa3, 0x46, 0x11, + 0x69, 0x00, 0x00, 0x00, + 0xcd, 0x8d, 0x3c, 0x5d, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x20, + 0x68, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x70, 0x05, 0x08, 0xa0, + 0x26, 0x00, 0x00, 0x00, + 0x78, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x75, 0xc2, 0x09, 0xaa, + 0x79, 0x00, 0x00, 0x00, + 0x7d, 0xf1, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0xda, 0x18, + 0xf0, 0x00, 0x00, 0x00, + 0xb6, 0x33, 0x06, 0xa0, 0x11, 0x00, 0x00, 0x00, 0x20, 0x36, 0x56, 0x65, + 0x63, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x89, 0x37, 0x7a, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x70, 0x27, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x56, 0x01, 0x20, + 0x53, 0x00, 0x00, 0x00, + 0xda, 0xd0, 0x0f, 0x3c, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x40, 0x3a, 0x1a, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x05, 0x40, + 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x06, 0xc0, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x92, 0x06, 0x20, + 0x69, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x06, 0x20, 0x69, 0x00, 0x00, 0x00, 0x60, 0xc2, 0x46, 0x2a, + 0x69, 0x00, 0x00, 0x00, + 0x9b, 0x06, 0x0c, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x19, 0x8e, + 0x64, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x06, 0xc0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x00, + 0x70, 0x00, 0x00, 0x00, + 0x34, 0x41, 0x8a, 0x19, 0xf0, 0x00, 0x00, 0x00, 0xb8, 0x40, 0x5a, 0x5e, + 0xcb, 0x00, 0x00, 0x00, + 0xf5, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x6f, + 0x54, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x72, 0x5f, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, + 0x29, 0x00, 0x00, 0x00, + 0xf7, 0x06, 0xac, 0x4b, 0x10, 0x00, 0x00, 0x00, 0x18, 0x04, 0x92, 0x6f, + 0x19, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x76, 0x65, 0x29, 0x00, 0x00, 0x00, 0xa9, 0x06, 0x0c, 0x16, + 0x70, 0x00, 0x00, 0x00, + 0xf4, 0x96, 0x51, 0x4b, 0x18, 0x00, 0x00, 0x00, 0x6f, 0x41, 0x0a, 0x20, + 0x8c, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x97, 0x25, 0x69, 0x00, 0x00, 0x00, 0xa1, 0xb3, 0x31, 0x13, + 0x1a, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x58, 0xa9, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x68, 0xf2, 0x12, + 0xa4, 0x00, 0x00, 0x00, + 0x21, 0x41, 0x0a, 0x20, 0x8c, 0x00, 0x00, 0x00, 0x13, 0x01, 0x47, 0x2d, + 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3a, + 0x69, 0x00, 0x00, 0x00, + 0xc9, 0x06, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x98, 0x61, 0x6f, + 0x10, 0x00, 0x00, 0x00, + 0x11, 0x40, 0x0a, 0x60, 0x11, 0x00, 0x00, 0x00, 0x50, 0x40, 0xda, 0x18, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, + 0x69, 0x00, 0x00, 0x00, + 0xf9, 0x96, 0xa1, 0x4b, 0x10, 0x00, 0x00, 0x00, 0x57, 0x96, 0x82, 0x41, + 0x20, 0x00, 0x00, 0x00, + 0x20, 0x93, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x2f, 0x41, 0x0a, 0x20, + 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x03, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x80, + 0x3c, 0x00, 0x00, 0x00, + 0x60, 0x99, 0x03, 0x20, 0x38, 0x00, 0x00, 0x00, 0xf4, 0x96, 0x51, 0x4b, + 0x10, 0x00, 0x00, 0x00, + 0x59, 0x92, 0xa3, 0x01, 0x78, 0x00, 0x00, 0x00, 0x6f, 0x41, 0x0a, 0x20, + 0x9c, 0x00, 0x00, 0x00, + 0x00, 0xfa, 0x35, 0x13, 0x78, 0x00, 0x00, 0x00, 0x00, 0xda, 0x03, 0x20, + 0x39, 0x00, 0x00, 0x00, + 0xb3, 0x06, 0x0c, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xba, 0x01, 0x20, + 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x57, 0xe9, 0x1c, 0x00, 0x00, 0x00, 0x13, 0x9b, 0x43, 0x2d, + 0x38, 0x00, 0x00, 0x00, + 0x79, 0x40, 0xaa, 0x03, 0xa4, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x5c, 0x17, + 0xa4, 0x00, 0x00, 0x00, + 0xe1, 0x4a, 0x65, 0x0b, 0x21, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x0f, 0x1a, + 0xf9, 0x00, 0x00, 0x00, + 0x00, 0x2c, 0x00, 0x23, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x07, 0x52, + 0x6a, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x09, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, 0x40, + 0x13, 0x00, 0x00, 0x00, + 0xd2, 0x06, 0x0c, 0xc0, 0x76, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x09, 0x00, + 0x78, 0x00, 0x00, 0x00, + 0x00, 0xb4, 0x01, 0xc0, 0x14, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x07, 0x40, + 0x6a, 0x00, 0x00, 0x00, + 0x70, 0xc4, 0x09, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x01, 0xc0, + 0x14, 0x00, 0x00, 0x00, + 0xe0, 0xc3, 0x18, 0x23, 0x23, 0x00, 0x00, 0x00, 0x33, 0x07, 0xf1, 0xff, + 0xcf, 0x00, 0x00, 0x00, + 0x11, 0x08, 0x22, 0xf7, 0x19, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x08, 0xa5, + 0x29, 0x00, 0x00, 0x00, + 0xb0, 0xc0, 0xf1, 0x26, 0x68, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x3f, 0x31, + 0x1d, 0x00, 0x00, 0x00, + 0x73, 0x40, 0x2a, 0x15, 0xa4, 0x00, 0x00, 0x00, 0xf4, 0x40, 0x3a, 0x1a, + 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x20, + 0x32, 0x00, 0x00, 0x00, + 0x00, 0x26, 0x43, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0d, 0x20, + 0x8c, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x06, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x60, + 0x59, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x40, 0x59, 0x00, 0x00, 0x00, 0x00, 0x92, 0x06, 0x40, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x90, 0x06, 0x40, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x90, 0x05, 0x60, + 0x20, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x90, 0x05, 0x60, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x90, 0x05, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x00, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, + 0x11, 0x00, 0x00, 0x00, + 0x00, 0x14, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x00, + 0x79, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, + 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, + 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x20, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x80, 0x0e, 0x10, + 0xf0, 0x00, 0x00, 0x00, + 0x84, 0xa0, 0xbe, 0x08, 0xe9, 0x00, 0x00, 0x00, 0x86, 0xc0, 0x3e, 0x08, + 0xeb, 0x00, 0x00, 0x00, + 0x85, 0xe0, 0x8e, 0x08, 0xed, 0x00, 0x00, 0x00, 0x10, 0x40, 0x7a, 0x08, + 0xef, 0x00, 0x00, 0x00, + 0x51, 0x40, 0x9a, 0x08, 0xe8, 0x00, 0x00, 0x00, 0xd3, 0x40, 0x2a, 0x09, + 0xa4, 0x00, 0x00, 0x00, + 0x55, 0x41, 0x4a, 0x11, 0xa4, 0x00, 0x00, 0x00, 0xd7, 0x41, 0x6a, 0x19, + 0xa4, 0x00, 0x00, 0x00, + 0x7b, 0x40, 0x8a, 0x01, 0xa4, 0x00, 0x00, 0x00, 0xf9, 0x40, 0xca, 0x0b, + 0xa4, 0x00, 0x00, 0x00, + 0x0d, 0x01, 0xaf, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x22, 0xbe, 0x20, + 0xe1, 0x00, 0x00, 0x00, + 0x0c, 0x42, 0xce, 0x20, 0xe3, 0x00, 0x00, 0x00, 0x31, 0x41, 0x0a, 0x13, + 0xa4, 0x00, 0x00, 0x00, + 0x32, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x33, 0x41, 0xaa, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x34, 0x41, 0xaa, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x35, 0x41, 0xaa, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xac, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x08, 0xaa, 0x20, + 0xe4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x1c, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x42, 0x81, 0x5c, 0xa1, + 0xca, 0x00, 0x00, 0x00, + 0xa5, 0x07, 0xac, 0x12, 0x79, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xef, 0xff, + 0xc8, 0x00, 0x00, 0x00, + 0xa5, 0x07, 0x0c, 0xa0, 0x27, 0x00, 0x00, 0x00, 0x51, 0x90, 0x08, 0x01, + 0xff, 0x00, 0x00, 0x00, + 0xfe, 0x8f, 0x0c, 0x40, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x48, 0xeb, 0x1f, + 0xf0, 0x00, 0x00, 0x00, + 0xf1, 0x84, 0x08, 0xbb, 0x27, 0x00, 0x00, 0x00, 0xa9, 0x07, 0x0c, 0x00, + 0xff, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x08, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x60, + 0x31, 0x00, 0x00, 0x00, + 0x9e, 0x81, 0x7c, 0xb3, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x88, 0x08, 0x20, + 0x30, 0x00, 0x00, 0x00, + 0xa2, 0x07, 0xac, 0x42, 0xcd, 0x00, 0x00, 0x00, 0xa7, 0xe1, 0x0a, 0x00, + 0x61, 0x00, 0x00, 0x00, + 0xfd, 0xbf, 0x0c, 0x19, 0xc8, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, + 0xfe, 0x00, 0x00, 0x00, + 0x10, 0x25, 0x01, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x05, 0x00, + 0x18, 0x00, 0x00, 0x00, + 0x00, 0xba, 0x06, 0xa0, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x24, 0x16, 0x76, + 0x44, 0x00, 0x00, 0x00, + 0x56, 0x81, 0x0c, 0xa0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x03, 0x40, + 0x73, 0x00, 0x00, 0x00, + 0xb2, 0x07, 0x0c, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xe0, + 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x4c, 0x2b, 0xe0, 0xcb, 0x00, 0x00, 0x00, 0xe1, 0x80, 0xab, 0x46, + 0xcd, 0x00, 0x00, 0x00, + 0xd3, 0x07, 0x7c, 0x8b, 0xca, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe1, 0xdf, + 0xcb, 0x00, 0x00, 0x00, + 0x00, 0x54, 0x0b, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x20, + 0x5d, 0x00, 0x00, 0x00, + 0x00, 0x54, 0x02, 0x20, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x40, + 0x5d, 0x00, 0x00, 0x00, + 0x00, 0xda, 0x04, 0x20, 0x5d, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x04, 0x20, + 0x5d, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x07, 0x40, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x52, 0x07, 0xa0, + 0x25, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x06, 0x20, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xb5, 0x71, + 0xcb, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x45, 0x96, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x05, 0x10, + 0xc8, 0x00, 0x00, 0x00, + 0x00, 0x48, 0xf5, 0xf7, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xa5, 0x52, + 0xcd, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x05, 0x14, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x15, 0x52, + 0x72, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x05, 0x40, 0x72, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x16, 0xfe, + 0xcb, 0x00, 0x00, 0x00, + 0xaf, 0xc2, 0xf9, 0x0e, 0xfe, 0x00, 0x00, 0x00, 0x6f, 0x82, 0xe9, 0xeb, + 0xcf, 0x00, 0x00, 0x00, + 0xda, 0x42, 0xd9, 0xe7, 0xcf, 0x00, 0x00, 0x00, 0xdb, 0x02, 0xa9, 0xfb, + 0xdf, 0x00, 0x00, 0x00, + 0xdc, 0xc2, 0xb8, 0xf7, 0xdf, 0x00, 0x00, 0x00, 0xdd, 0x82, 0xc8, 0xef, + 0xdf, 0x00, 0x00, 0x00, + 0xde, 0x42, 0xd8, 0xdf, 0xdf, 0x00, 0x00, 0x00, 0xdf, 0x02, 0xe8, 0xbf, + 0xdf, 0x00, 0x00, 0x00, + 0xba, 0x34, 0xf5, 0x7f, 0xdf, 0x00, 0x00, 0x00, 0xbc, 0x34, 0xb5, 0x27, + 0x53, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xdb, 0x27, 0x53, 0x00, 0x00, 0x00, 0x7f, 0x32, 0xe5, 0x4b, + 0x53, 0x00, 0x00, 0x00, + 0x00, 0x32, 0x15, 0x4a, 0x53, 0x00, 0x00, 0x00, 0xd0, 0x58, 0x0b, 0x40, + 0x16, 0x00, 0x00, 0x00, + 0x0f, 0x61, 0x0b, 0xd4, 0xb5, 0x00, 0x00, 0x00, 0x80, 0x69, 0xfb, 0x5c, + 0xb6, 0x00, 0x00, 0x00, + 0x21, 0x71, 0x0b, 0xc0, 0xb6, 0x00, 0x00, 0x00, 0x21, 0x78, 0x0b, 0x40, + 0xb7, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0xc0, 0xb7, 0x00, 0x00, 0x00, 0x40, 0x83, 0x0c, 0x80, + 0x20, 0x00, 0x00, 0x00, + 0x68, 0x81, 0x0c, 0x20, 0x88, 0x00, 0x00, 0x00, 0xd0, 0x81, 0x0c, 0x01, + 0xf0, 0x00, 0x00, 0x00, + 0xb0, 0x79, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x60, 0x7e, 0x0d, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0xe9, 0x07, 0x0c, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, + 0xfd, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0a, 0x99, 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, + 0xff, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0xf3, 0xd7, 0x00, 0x00, 0x00, 0x1f, 0x40, 0x0a, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x64, 0x80, 0x0c, 0xc0, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x2b, 0x14, + 0xc8, 0x00, 0x00, 0x00, + 0xf5, 0x07, 0x0c, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xef, 0x1c, + 0xc8, 0x00, 0x00, 0x00, + 0xf5, 0x07, 0x0c, 0xa0, 0x27, 0x00, 0x00, 0x00, 0x51, 0x90, 0x08, 0x05, + 0xff, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x0c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xb4, 0x1b, 0x6d, 0x22, + 0xd2, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x3a, 0x83, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0a, 0x00, + 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x09, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x01, + 0xa4, 0xc5, 0x31, 0x02, 0xec, 0x00, 0x0f, 0x01, 0xe8, 0x00, 0x00, 0x02, + 0xed, 0x00, 0x01, 0xf3, + 0x0b, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x01, 0x40, 0xe8, 0x00, 0x7f, 0x81, + 0xe4, 0x00, 0x01, 0xa2, + 0xec, 0x00, 0x01, 0xf3, 0x0b, 0x00, 0x3f, 0x01, 0xeb, 0x00, 0x0d, 0x03, + 0x76, 0x00, 0x11, 0x53, + 0xc5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0xa3, 0x0a, 0x00, 0x15, 0xc3, + 0xd8, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x0b, 0x83, 0xb7, 0x00, 0x19, 0x01, 0xe8, 0x00, 0x7f, 0x80, + 0xe7, 0x00, 0x31, 0xa0, + 0xec, 0x00, 0x0b, 0x83, 0xb7, 0x00, 0x19, 0x01, 0xe8, 0x00, 0x7f, 0x80, + 0xe7, 0x00, 0x31, 0xc0, + 0xec, 0x00, 0x7f, 0x82, 0xe1, 0x00, 0x1d, 0x20, 0xe8, 0x00, 0x01, 0xc2, + 0xec, 0x00, 0x01, 0x42, + 0xb2, 0x00, 0x7f, 0x40, 0xe1, 0x00, 0x59, 0x01, 0xe8, 0x00, 0x7f, 0x02, + 0xe1, 0x00, 0x01, 0xc2, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x4f, 0x60, + 0xeb, 0x00, 0x01, 0xc0, + 0xf6, 0x00, 0x01, 0xe2, 0xf7, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x67, 0x60, + 0xeb, 0x00, 0x1f, 0x00, + 0x00, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x0b, 0x83, + 0xb7, 0x00, 0x0d, 0x83, + 0xb4, 0x00, 0x3f, 0x01, 0xeb, 0x00, 0x0f, 0x01, 0xb1, 0x00, 0x0f, 0x82, + 0xb1, 0x00, 0x8d, 0x23, + 0xeb, 0x00, 0xc9, 0x00, 0xb4, 0x00, 0x0d, 0x21, 0xb5, 0x00, 0x0f, 0x00, + 0xb0, 0x00, 0x03, 0xc0, + 0xf5, 0x00, 0x35, 0x62, 0xe8, 0x00, 0xff, 0x00, 0xe0, 0x00, 0x0f, 0x83, + 0xb0, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x7e, 0x00, 0xe1, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, + 0xed, 0x00, 0x1e, 0x80, + 0xa8, 0x00, 0x9e, 0x80, 0xad, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x7e, 0x00, 0xe1, 0x00, 0x00, 0xa2, 0xec, 0x00, 0x7e, 0x20, + 0xb9, 0x00, 0xf8, 0x00, + 0xe8, 0x00, 0x16, 0x80, 0xa8, 0x00, 0x96, 0x80, 0xad, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, + 0xed, 0x00, 0x80, 0x80, + 0xa9, 0x00, 0xc0, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, + 0xed, 0x00, 0x88, 0x80, + 0xa9, 0x00, 0xc8, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xa2, + 0xed, 0x00, 0x90, 0x80, + 0xa9, 0x00, 0xd0, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x7e, 0x81, 0xe1, 0x00, 0x7e, 0x00, 0xe5, 0x00, 0x00, 0xa2, + 0xec, 0x00, 0x7e, 0xa1, + 0xb9, 0x00, 0x3e, 0x20, 0xbd, 0x00, 0x40, 0x02, 0xed, 0x00, 0x98, 0x80, + 0xa9, 0x00, 0xd8, 0x00, + 0xaa, 0x00, 0x7e, 0x80, 0xe3, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0xc0, + 0xbb, 0x00, 0x00, 0x02, + 0xed, 0x00, 0x00, 0x40, 0xac, 0x00, 0x20, 0xc0, 0xac, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xcc, 0x09, + 0xa8, 0x00, 0xfc, 0x0b, 0xe3, 0x00, 0x7e, 0x01, 0xe7, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x02, 0x49, + 0xbf, 0x00, 0x80, 0x02, 0xed, 0x00, 0x00, 0x09, 0xa8, 0x00, 0x20, 0x89, + 0xaf, 0x00, 0x0d, 0x03, + 0x76, 0x00, 0x11, 0x53, 0xc5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0xa3, + 0x4a, 0x00, 0x15, 0xc3, + 0xd8, 0x00, 0xe1, 0xa0, 0xaa, 0x00, 0x7f, 0x01, 0xe0, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x45, + 0xab, 0x00, 0x3f, 0x01, 0xeb, 0x00, 0x01, 0x15, 0xab, 0x00, 0x27, 0xcb, + 0xa9, 0x00, 0xde, 0xc3, + 0x9c, 0x00, 0xfc, 0xc3, 0x9c, 0x00, 0xfc, 0x03, 0x84, 0x00, 0x7e, 0x80, + 0xe7, 0x00, 0x2a, 0xc3, + 0x9c, 0x00, 0x1e, 0xc3, 0x9c, 0x00, 0xd5, 0x80, 0xa4, 0x00, 0xd9, 0x80, + 0xa3, 0x00, 0xcb, 0x80, + 0xa4, 0x00, 0x33, 0x03, 0xe8, 0x00, 0xd3, 0x80, 0xa3, 0x00, 0xdb, 0x80, + 0xa3, 0x00, 0x0f, 0x00, + 0xb0, 0x00, 0xff, 0x00, 0xe0, 0x00, 0x01, 0xa2, 0xec, 0x00, 0x39, 0x20, + 0xb8, 0x00, 0x21, 0x1a, + 0xf8, 0x00, 0x51, 0x00, 0xf8, 0x00, 0x09, 0x02, 0xf8, 0x00, 0x8b, 0x20, + 0xb8, 0x00, 0x01, 0x00, + 0xfa, 0x00, 0x01, 0x00, 0xfc, 0x00, 0x01, 0x02, 0xee, 0x00, 0x2b, 0x20, + 0xb8, 0x00, 0x19, 0x00, + 0xf8, 0x00, 0xe1, 0x03, 0xa9, 0x00, 0x01, 0x82, 0xbd, 0x00, 0x18, 0x70, + 0x0d, 0x00, 0x1a, 0x70, + 0x7b, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0x10, 0x53, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x1c, 0x30, 0x65, 0x00, 0x18, 0x00, 0xa2, 0x00, 0x20, 0xc0, + 0x08, 0x00, 0x22, 0xc0, + 0x7e, 0x00, 0x22, 0x50, 0x5d, 0x00, 0x24, 0x50, 0x6e, 0x00, 0x1a, 0x80, + 0xa4, 0x00, 0x28, 0xc0, + 0x9c, 0x00, 0x26, 0x40, 0x40, 0x00, 0x20, 0x00, 0xa2, 0x00, 0x2a, 0x10, + 0x40, 0x00, 0x22, 0x80, + 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x24, 0xc0, 0x9c, 0x00, 0x1c, 0xc0, + 0xdc, 0x00, 0x1a, 0xd0, + 0x48, 0x00, 0x27, 0x80, 0xa4, 0x00, 0x25, 0x00, 0xa6, 0x00, 0xff, 0x23, + 0xe7, 0x00, 0x6b, 0x80, + 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x22, 0x60, 0x42, 0x00, 0x26, 0x0c, + 0x70, 0x00, 0x2a, 0x30, + 0x1c, 0x00, 0x2c, 0x80, 0x4e, 0x00, 0x2e, 0x30, 0x77, 0x00, 0x2e, 0x00, + 0x60, 0x00, 0x30, 0xb0, + 0x6c, 0x00, 0x28, 0x80, 0xa4, 0x00, 0x28, 0x80, 0x4e, 0x00, 0x2e, 0xc0, + 0xdc, 0x00, 0x32, 0xb0, + 0x75, 0x00, 0x32, 0x50, 0x1c, 0x00, 0x32, 0xc0, 0xdc, 0x00, 0x34, 0xc0, + 0xdc, 0x00, 0x2c, 0x80, + 0xa4, 0x00, 0x3a, 0xe0, 0x69, 0x00, 0x30, 0x80, 0xa4, 0x00, 0xef, 0x83, + 0xe6, 0x00, 0x3a, 0x00, + 0x60, 0x00, 0x3d, 0x60, 0x62, 0x00, 0x31, 0xc0, 0xdc, 0x00, 0xf1, 0x2e, + 0xe8, 0x00, 0x36, 0x90, + 0x7f, 0x00, 0x38, 0xc0, 0x7f, 0x00, 0xdf, 0x83, 0xe6, 0x00, 0x49, 0xc0, + 0x9c, 0x00, 0x89, 0xa3, + 0xe5, 0x00, 0x6f, 0x10, 0x12, 0x00, 0x2d, 0x2e, 0xe8, 0x00, 0x39, 0x80, + 0xa4, 0x00, 0x35, 0x00, + 0xa6, 0x00, 0xdf, 0x09, 0xe8, 0x00, 0x61, 0x80, 0xa4, 0x00, 0x83, 0xa3, + 0xe5, 0x00, 0x4b, 0x30, + 0x4f, 0x00, 0xeb, 0x01, 0xe8, 0x00, 0x4b, 0x68, 0x0b, 0x00, 0x6f, 0x98, + 0x55, 0x00, 0x4b, 0xf0, + 0x3c, 0x00, 0xff, 0xa3, 0xe5, 0x00, 0x4d, 0xd0, 0x45, 0x00, 0x6f, 0x80, + 0x5d, 0x00, 0x4b, 0xc8, + 0x9c, 0x00, 0x4b, 0xe8, 0x42, 0x00, 0x1c, 0x43, 0xf0, 0x00, 0x6e, 0xc0, + 0x90, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x5d, 0x01, + 0xea, 0x00, 0x6d, 0x80, + 0xa4, 0x00, 0x6f, 0x80, 0xa2, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x7f, 0x82, + 0xe5, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x55, 0x0a, 0xe8, 0x00, 0xb9, 0xf2, 0x02, 0x00, 0xbb, 0x92, + 0x44, 0x00, 0xbd, 0xd2, + 0x43, 0x00, 0xbf, 0x83, 0xe2, 0x00, 0xbf, 0xc2, 0x40, 0x00, 0xb1, 0xa3, + 0xe2, 0x00, 0x21, 0x0a, + 0xe8, 0x00, 0xc1, 0x72, 0x7e, 0x00, 0xc3, 0x02, 0x7b, 0x00, 0xbe, 0x52, + 0x01, 0x00, 0xbc, 0xc2, + 0x45, 0x00, 0xba, 0x02, 0x42, 0x00, 0xb9, 0x82, 0x7f, 0x00, 0xc3, 0xa2, + 0x7c, 0x00, 0xc0, 0xb2, + 0x75, 0x00, 0xbc, 0x6e, 0x11, 0x00, 0xbc, 0xc2, 0x9c, 0x00, 0x3d, 0xc2, + 0x9c, 0x00, 0xff, 0x83, + 0xe2, 0x00, 0xef, 0x02, 0x10, 0x00, 0x7f, 0x01, 0xe7, 0x00, 0xbf, 0x82, + 0xa2, 0x00, 0xbf, 0x8e, + 0xa4, 0x00, 0x3f, 0x82, 0xa4, 0x00, 0xdf, 0x03, 0xe5, 0x00, 0x99, 0x23, + 0xe5, 0x00, 0x6f, 0x02, + 0x10, 0x00, 0xef, 0x0e, 0x10, 0x00, 0x21, 0x01, 0xa2, 0x00, 0xef, 0x02, + 0x50, 0x00, 0xef, 0xc2, + 0xd8, 0x00, 0x6f, 0x02, 0x50, 0x00, 0xef, 0x03, 0xe5, 0x00, 0x01, 0x01, + 0xa2, 0x00, 0x21, 0x09, + 0xa2, 0x00, 0x01, 0x0d, 0xa2, 0x00, 0x21, 0x0d, 0xa2, 0x00, 0xf7, 0x03, + 0xe5, 0x00, 0x02, 0x41, + 0xbf, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x0d, 0xa2, 0x00, 0x7e, 0x81, + 0xe7, 0x00, 0xa1, 0xa3, + 0xe6, 0x00, 0xe1, 0x53, 0x0c, 0x00, 0x13, 0x01, 0x50, 0x00, 0x85, 0x0a, + 0xe8, 0x00, 0x18, 0x51, + 0x20, 0x00, 0x16, 0xf1, 0x52, 0x00, 0x12, 0xa1, 0x40, 0x00, 0x12, 0x01, + 0xa2, 0x00, 0xc4, 0x83, + 0xa5, 0x00, 0x16, 0xc1, 0xdc, 0x00, 0x12, 0xa1, 0x40, 0x00, 0x18, 0xc1, + 0xd8, 0x00, 0x16, 0xc1, + 0x9c, 0x00, 0x14, 0xc1, 0x9c, 0x00, 0xc4, 0xc3, 0xdc, 0x00, 0x1a, 0xf1, + 0x1f, 0x00, 0x16, 0x81, + 0xa4, 0x00, 0xc2, 0x03, 0xa3, 0x00, 0x18, 0x81, 0xa4, 0x00, 0x1a, 0x01, + 0xcf, 0x00, 0x14, 0x81, + 0xa4, 0x00, 0xc3, 0x43, 0xf0, 0x00, 0xc3, 0xc3, 0xd0, 0x00, 0x1f, 0x20, + 0xe4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x21, 0x20, 0xe4, 0x00, 0x01, 0x0e, 0xef, 0x00, 0x01, 0x40, + 0xbc, 0x00, 0x1b, 0x81, + 0xa4, 0x00, 0x53, 0x0f, 0xe8, 0x00, 0x81, 0x83, 0xe4, 0x00, 0xfb, 0x83, + 0xe4, 0x00, 0x03, 0x02, + 0xec, 0x00, 0x33, 0x0f, 0xe8, 0x00, 0x01, 0x40, 0xb4, 0x00, 0x14, 0xc1, + 0x9c, 0x00, 0x38, 0xc1, + 0xd8, 0x00, 0xcc, 0xb3, 0x7f, 0x00, 0xcd, 0xa3, 0x40, 0x00, 0xcd, 0x63, + 0x3f, 0x00, 0xb5, 0x0a, + 0xe8, 0x00, 0x38, 0x81, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x14, 0x01, + 0xa4, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0x14, 0x89, 0xa4, 0x00, 0xfb, 0x83, 0xe4, 0x00, 0x1d, 0xf1, + 0x1d, 0x00, 0x1d, 0xc1, + 0xc7, 0x00, 0x1d, 0x8d, 0x20, 0x00, 0x1d, 0xcd, 0xc7, 0x00, 0xfd, 0x83, + 0xe4, 0x00, 0x1f, 0x2d, + 0x40, 0x00, 0x15, 0x5d, 0x40, 0x00, 0x1c, 0xbd, 0x1c, 0x00, 0x1c, 0x6d, + 0xc9, 0x00, 0x1e, 0x01, + 0x70, 0x00, 0x1e, 0x01, 0xc4, 0x00, 0x14, 0x01, 0xc8, 0x00, 0x1e, 0x01, + 0x70, 0x00, 0x1c, 0xc1, + 0x9c, 0x00, 0xcc, 0x03, 0x36, 0x00, 0x1a, 0x01, 0x6c, 0x00, 0x28, 0x81, + 0x15, 0x00, 0x1c, 0x01, + 0xa2, 0x00, 0xc6, 0x83, 0xa5, 0x00, 0x1f, 0x81, 0xa4, 0x00, 0x29, 0x01, + 0xc5, 0x00, 0xc3, 0x03, + 0xa4, 0x00, 0xfb, 0x83, 0xe4, 0x00, 0x29, 0x6d, 0x15, 0x00, 0x29, 0xfd, + 0xc1, 0x00, 0x28, 0xfd, + 0x21, 0x00, 0x28, 0xbd, 0xc3, 0x00, 0x2a, 0x2d, 0x40, 0x00, 0x14, 0x5d, + 0x40, 0x00, 0x2a, 0x01, + 0x70, 0x00, 0x2a, 0x01, 0xc4, 0x00, 0x14, 0x01, 0xc8, 0x00, 0x2a, 0x01, + 0x70, 0x00, 0x28, 0xc1, + 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x43, 0xf0, 0x00, 0xc6, 0xc3, + 0x90, 0x00, 0x28, 0x01, + 0xa2, 0x00, 0xc8, 0x83, 0xa5, 0x00, 0x2a, 0x81, 0xa4, 0x00, 0xc8, 0xc3, + 0xd4, 0x00, 0x3a, 0x81, + 0x5f, 0x00, 0x3a, 0x4d, 0x40, 0x00, 0x00, 0x02, 0xec, 0x00, 0x30, 0xf3, + 0x1f, 0x00, 0x30, 0x03, + 0xc8, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x03, 0x44, 0x00, 0x3a, 0x81, + 0xa4, 0x00, 0xc4, 0x83, + 0xa5, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc4, 0x03, + 0x30, 0x00, 0x30, 0x83, + 0xa4, 0x00, 0xc2, 0x83, 0xa5, 0x00, 0xc2, 0x03, 0x50, 0x00, 0x3a, 0xc1, + 0x9c, 0x00, 0x15, 0x81, + 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xef, 0x00, 0xc3, 0xcf, + 0xa4, 0x00, 0x31, 0x8b, 0xa4, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x80, 0x83, + 0xe4, 0x00, 0x7e, 0x81, + 0xe7, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x3b, 0x8d, + 0xa4, 0x00, 0x39, 0x8d, 0xa4, 0x00, 0x15, 0x8d, 0xa4, 0x00, 0x1d, 0x8d, + 0xa4, 0x00, 0x1f, 0x8d, + 0xa4, 0x00, 0x29, 0x8d, 0xa4, 0x00, 0x05, 0xc0, 0xf5, 0x00, 0x61, 0x40, + 0xe8, 0x00, 0x2b, 0x8d, + 0xa4, 0x00, 0x31, 0x8f, 0xa4, 0x00, 0x52, 0xc3, 0x9c, 0x00, 0x7e, 0x81, + 0xe7, 0x00, 0xca, 0x23, + 0x80, 0x00, 0x0e, 0xc1, 0x9c, 0x00, 0x09, 0xc1, 0xd8, 0x00, 0x09, 0xc1, + 0x9c, 0x00, 0x7d, 0xc3, + 0xa4, 0x00, 0x0b, 0x28, 0xe8, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0x0a, 0x41, + 0x40, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xc4, 0xcf, 0x7f, 0x00, 0xc4, 0x4b, 0x40, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x7c, 0x23, + 0x00, 0x00, 0x0c, 0xc1, 0x98, 0x00, 0x08, 0xa1, 0x49, 0x00, 0x08, 0x01, + 0x50, 0x00, 0x08, 0x81, + 0xa5, 0x00, 0x0a, 0x01, 0xa6, 0x00, 0xde, 0x81, 0xa3, 0x00, 0x3e, 0xc1, + 0x9c, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xca, 0x03, 0xc6, 0x00, 0xcc, 0x0f, 0xc2, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xcc, 0xcf, + 0x9c, 0x00, 0x08, 0xc1, 0x9c, 0x00, 0x0c, 0xc1, 0xd8, 0x00, 0x0c, 0xc1, + 0x9c, 0x00, 0xca, 0x23, + 0x00, 0x00, 0x0c, 0xc1, 0xd8, 0x00, 0x3e, 0x81, 0xa4, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xc6, 0xc3, + 0xa4, 0x00, 0xc5, 0x8f, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc3, 0xc3, + 0xa4, 0x00, 0xd3, 0x0b, + 0xe8, 0x00, 0xef, 0x83, 0xe7, 0x00, 0x0d, 0x01, 0x81, 0x00, 0x09, 0x01, + 0xcf, 0x00, 0xfb, 0x83, + 0xe7, 0x00, 0x0d, 0x8d, 0x80, 0x00, 0x09, 0x8d, 0xcf, 0x00, 0x3f, 0x61, + 0xf2, 0x00, 0x0d, 0x0d, + 0x82, 0x00, 0x09, 0x0d, 0xce, 0x00, 0xc7, 0x63, 0xf2, 0x00, 0x0d, 0x2d, + 0x80, 0x00, 0x09, 0xed, + 0xcf, 0x00, 0xfd, 0x83, 0xe7, 0x00, 0x0d, 0x0d, 0x84, 0x00, 0x09, 0x0d, + 0xcc, 0x00, 0x0d, 0xcd, + 0x9c, 0x00, 0x09, 0xf9, 0x5f, 0x00, 0x0b, 0x49, 0x40, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x08, 0x81, + 0xa4, 0x00, 0x0a, 0x01, 0xa6, 0x00, 0x3c, 0x41, 0xf0, 0x00, 0x0e, 0xa1, + 0x07, 0x00, 0xc4, 0xc3, + 0xd4, 0x00, 0x3c, 0xc1, 0x9c, 0x00, 0x3c, 0x01, 0xc8, 0x00, 0xca, 0x23, + 0xc0, 0x00, 0x0e, 0x61, + 0x08, 0x00, 0xc4, 0xc3, 0xd4, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x3c, 0x01, + 0x1f, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x3c, 0x89, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x3c, 0x8d, 0xa4, 0x00, 0x3c, 0xc1, 0x9c, 0x00, 0x40, 0xc1, + 0xd8, 0x00, 0x40, 0xc1, + 0x9c, 0x00, 0x10, 0xc1, 0x9c, 0x00, 0x3c, 0xc1, 0xd8, 0x00, 0x10, 0xc1, + 0x9c, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x3d, 0x8d, 0xa4, 0x00, 0x01, 0x02, + 0xef, 0x00, 0xc3, 0xc3, + 0xa4, 0x00, 0x3d, 0x8d, 0xa4, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0xcc, 0x03, + 0x38, 0x00, 0x0e, 0xc1, + 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x3f, 0x01, + 0xa4, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x3d, 0x81, 0xa4, 0x00, 0x09, 0x81, 0xa4, 0x00, 0x8a, 0x03, + 0xb0, 0x00, 0x7e, 0x40, + 0xe5, 0x00, 0x7e, 0xc2, 0xe7, 0x00, 0x7e, 0x41, 0xe0, 0x00, 0x92, 0x80, + 0x04, 0x00, 0x84, 0xc0, + 0xdc, 0x00, 0x86, 0x80, 0x7b, 0x00, 0x9a, 0xd0, 0x12, 0x00, 0x8c, 0xc0, + 0xdc, 0x00, 0x8e, 0x30, + 0x6d, 0x00, 0x82, 0x80, 0x04, 0x00, 0x92, 0xc0, 0xdc, 0x00, 0xc2, 0x83, + 0xa4, 0x00, 0xc2, 0x83, + 0x7b, 0x00, 0x8a, 0xd0, 0x12, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0x9a, 0xc0, + 0xdc, 0x00, 0xc4, 0x33, + 0x6d, 0x00, 0xc2, 0xa3, 0x06, 0x00, 0x84, 0x80, 0xa4, 0x00, 0xc4, 0xa3, + 0x46, 0x00, 0x94, 0x70, + 0x7b, 0x00, 0x94, 0x10, 0x53, 0x00, 0x8c, 0x80, 0xa4, 0x00, 0x96, 0x30, + 0x65, 0x00, 0x84, 0x50, + 0x04, 0x00, 0x8c, 0x50, 0x44, 0x00, 0x92, 0x00, 0xa2, 0x00, 0x9c, 0xc0, + 0x7e, 0x00, 0x9c, 0x50, + 0x5d, 0x00, 0x94, 0x80, 0xa4, 0x00, 0x9e, 0x50, 0x6e, 0x00, 0xa2, 0xc0, + 0x9c, 0x00, 0xa0, 0x40, + 0x40, 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xa6, 0x10, 0x40, 0x00, 0xfe, 0x23, + 0xe4, 0x00, 0x9c, 0x80, + 0xa4, 0x00, 0x9c, 0x60, 0x02, 0x00, 0x94, 0xd0, 0x48, 0x00, 0x96, 0xc0, + 0xdc, 0x00, 0x9e, 0xc0, + 0xdc, 0x00, 0xa0, 0x80, 0xa4, 0x00, 0x9e, 0x00, 0xa6, 0x00, 0xa4, 0x0c, + 0x70, 0x00, 0xa6, 0x40, + 0x7f, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x07, 0xc2, 0x9c, 0x00, 0x21, 0x43, + 0xf0, 0x00, 0x9b, 0x2c, + 0xe8, 0x00, 0x1a, 0x4f, 0xf0, 0x00, 0xa4, 0x80, 0xa4, 0x00, 0x02, 0x50, + 0x3d, 0x00, 0x00, 0x80, + 0xa4, 0x00, 0x00, 0xa0, 0x44, 0x00, 0x04, 0x10, 0x5e, 0x00, 0x04, 0xc0, + 0x90, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0x43, + 0xf0, 0x00, 0x02, 0x80, + 0xa4, 0x00, 0x06, 0x02, 0xa2, 0x00, 0xa6, 0xc0, 0x90, 0x00, 0x06, 0xc2, + 0x9c, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x04, 0x01, + 0xa2, 0x00, 0x01, 0x81, 0xa4, 0x00, 0x03, 0x81, 0xa4, 0x00, 0x25, 0x20, + 0xea, 0x00, 0x07, 0x81, + 0xa4, 0x00, 0x09, 0x81, 0xa4, 0x00, 0xa0, 0xc0, 0x9c, 0x00, 0xe0, 0xc0, + 0x9c, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x5e, 0x83, + 0xa4, 0x00, 0x5c, 0x83, 0xa4, 0x00, 0x03, 0xc1, 0x9c, 0x00, 0x23, 0xc1, + 0x9c, 0x00, 0xfd, 0x03, + 0xe6, 0x00, 0x70, 0x03, 0x02, 0x00, 0xcb, 0x03, 0x4e, 0x00, 0xff, 0xe3, + 0xf2, 0x00, 0x29, 0x8d, + 0xa4, 0x00, 0x07, 0x8d, 0xa4, 0x00, 0x7f, 0x81, 0xe7, 0x00, 0xfe, 0x03, + 0xa3, 0x00, 0xe2, 0x01, + 0xa1, 0x00, 0xff, 0x43, 0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0x73, 0x03, + 0x02, 0x00, 0xcb, 0x03, + 0x4e, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, 0x10, 0x00, 0xe7, 0x20, + 0xe8, 0x00, 0xfe, 0x03, + 0xa3, 0x00, 0xe2, 0x01, 0xa1, 0x00, 0xff, 0x43, 0xf3, 0x00, 0x7f, 0x80, + 0xe0, 0x00, 0xc3, 0x83, + 0xa4, 0x00, 0xc5, 0x83, 0xa4, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, + 0x10, 0x00, 0xf9, 0x20, + 0xe8, 0x00, 0x18, 0x03, 0x02, 0x00, 0xca, 0x03, 0x4e, 0x00, 0x0e, 0x00, + 0xb0, 0x00, 0x7e, 0x02, + 0xe0, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xfe, 0x03, + 0xa3, 0x00, 0xe2, 0x01, + 0xa1, 0x00, 0xff, 0x43, 0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0x11, 0x02, + 0x02, 0x00, 0xcb, 0x03, + 0x4e, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, 0x10, 0x00, 0x17, 0x21, + 0xe8, 0x00, 0xfe, 0x03, + 0xa3, 0x00, 0xe2, 0x01, 0xa1, 0x00, 0x00, 0x20, 0xe2, 0x00, 0x03, 0x22, + 0xb8, 0x00, 0x01, 0x00, + 0xa2, 0x00, 0x09, 0x2d, 0xe8, 0x00, 0x81, 0x00, 0xa2, 0x00, 0x17, 0x40, + 0xba, 0x00, 0x8c, 0x03, + 0x02, 0x00, 0xca, 0x03, 0x4e, 0x00, 0xfe, 0xe3, 0xf2, 0x00, 0x12, 0x00, + 0xba, 0x00, 0x74, 0x43, + 0xf0, 0x00, 0x78, 0xc1, 0x9c, 0x00, 0xfe, 0x03, 0xa3, 0x00, 0xe2, 0x01, + 0xa1, 0x00, 0xff, 0x43, + 0xf3, 0x00, 0x7f, 0x80, 0xe0, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x21, 0x00, + 0x10, 0x00, 0x41, 0x21, + 0xe8, 0x00, 0xe0, 0x81, 0xa4, 0x00, 0x7e, 0x02, 0xe0, 0x00, 0x7e, 0x40, + 0xe2, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xd0, 0x03, 0xa2, 0x00, 0xd2, 0x03, 0xa2, 0x00, 0xc2, 0xc3, + 0x90, 0x00, 0x76, 0x43, + 0xf0, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0x74, 0x43, + 0xf0, 0x00, 0xc4, 0xc3, + 0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x4e, 0x43, 0xf0, 0x00, 0x9e, 0x01, + 0xa2, 0x00, 0xd0, 0xc3, + 0x90, 0x00, 0xd0, 0xc3, 0xd2, 0x00, 0xe6, 0xc3, 0xd0, 0x00, 0xbe, 0x01, + 0xa2, 0x00, 0xd2, 0xc3, + 0x90, 0x00, 0xd2, 0xc3, 0xd2, 0x00, 0xe6, 0xc3, 0xd0, 0x00, 0x3c, 0x81, + 0x00, 0x00, 0xe2, 0x83, + 0x5f, 0x00, 0x40, 0x82, 0xa2, 0x00, 0x80, 0x83, 0xe1, 0x00, 0xe2, 0x43, + 0xf0, 0x00, 0x00, 0x82, + 0xa2, 0x00, 0x7e, 0xc2, 0xe2, 0x00, 0xe2, 0x83, 0xa4, 0x00, 0x16, 0x00, + 0x10, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x9e, 0xcd, 0x9c, 0x00, 0x96, 0x00, 0x10, 0x00, 0xbe, 0xcd, + 0x9c, 0x00, 0x00, 0xcd, + 0xf0, 0x00, 0x16, 0xc0, 0x90, 0x00, 0x16, 0xc0, 0xd2, 0x00, 0x3e, 0x82, + 0xa5, 0x00, 0xe6, 0xc3, + 0xdc, 0x00, 0xbe, 0x82, 0xa5, 0x00, 0x96, 0xc0, 0x90, 0x00, 0x96, 0xc0, + 0xd2, 0x00, 0xe6, 0xc3, + 0xdc, 0x00, 0xe2, 0x43, 0xf0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0xc9, + 0xf0, 0x00, 0x9e, 0xc1, + 0x90, 0x00, 0x9e, 0xc1, 0xd2, 0x00, 0xbe, 0xc1, 0x90, 0x00, 0xbe, 0xc1, + 0xd2, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x31, 0xc2, 0xec, 0x00, 0x9f, 0x81, + 0xa2, 0x00, 0x7f, 0xc1, + 0xe7, 0x00, 0xbf, 0x81, 0xa2, 0x00, 0x6e, 0xc0, 0x9c, 0x00, 0x2c, 0x00, + 0x04, 0x00, 0xe6, 0x03, + 0x50, 0x00, 0x00, 0x41, 0xf0, 0x00, 0x16, 0xc0, 0x90, 0x00, 0x16, 0xc0, + 0xd2, 0x00, 0x6e, 0x80, + 0xa5, 0x00, 0x70, 0x00, 0x30, 0x00, 0x2c, 0x80, 0xa2, 0x00, 0x6e, 0x00, + 0x50, 0x00, 0x02, 0x41, + 0xf0, 0x00, 0x16, 0x80, 0xa2, 0x00, 0x2c, 0xc0, 0x90, 0x00, 0x2c, 0xc0, + 0xd2, 0x00, 0x70, 0xf0, + 0x1f, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x6e, 0xc8, 0x40, 0x00, 0xbe, 0x43, + 0xf0, 0x00, 0x42, 0xc0, + 0x90, 0x00, 0x2c, 0x80, 0xa2, 0x00, 0x42, 0xc0, 0xd2, 0x00, 0x9c, 0x43, + 0xf0, 0x00, 0x6e, 0x80, + 0xa4, 0x00, 0x3f, 0xc2, 0x9c, 0x00, 0xbf, 0xc2, 0xd8, 0x00, 0xb3, 0x21, + 0xea, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x7e, 0x81, 0xe7, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x78, 0xc1, + 0x9c, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xbe, 0x22, 0x00, 0x00, 0x3e, 0x2e, + 0x00, 0x00, 0x0c, 0xf1, + 0x5f, 0x00, 0x28, 0xc3, 0x9c, 0x00, 0xe2, 0x81, 0xa4, 0x00, 0xe8, 0xe3, + 0x9c, 0x00, 0xea, 0xc3, + 0xdc, 0x00, 0x7e, 0x82, 0xba, 0x00, 0x0c, 0x81, 0xa4, 0x00, 0x78, 0x83, + 0xa4, 0x00, 0x78, 0x03, + 0x04, 0x00, 0x78, 0x0f, 0x3c, 0x00, 0x4c, 0x63, 0xf2, 0x00, 0xe9, 0x03, + 0xa1, 0x00, 0x7f, 0xc2, + 0xe0, 0x00, 0x01, 0x02, 0xec, 0x00, 0xd7, 0x4b, 0xe8, 0x00, 0x3f, 0xa2, + 0xb8, 0x00, 0xe7, 0x03, + 0xa2, 0x00, 0x7f, 0x02, 0xe0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x23, 0x63, + 0xe8, 0x00, 0x41, 0x42, + 0xac, 0x00, 0x01, 0xc2, 0xac, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xeb, 0x01, + 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xeb, 0x05, + 0xe8, 0x00, 0x4b, 0x60, + 0x0b, 0x00, 0x6f, 0x90, 0x55, 0x00, 0x1e, 0x63, 0xf2, 0x00, 0x4a, 0x30, + 0x38, 0x00, 0x4a, 0xc0, + 0xd8, 0x00, 0x4c, 0xe0, 0x47, 0x00, 0x4c, 0xc0, 0xdc, 0x00, 0x4e, 0xb0, + 0x72, 0x00, 0x52, 0x90, + 0x46, 0x00, 0x54, 0xf0, 0x7c, 0x00, 0x56, 0xc0, 0x40, 0x00, 0x59, 0x10, + 0x40, 0x00, 0x49, 0x40, + 0x4d, 0x00, 0x48, 0xc0, 0x9c, 0x00, 0x48, 0x00, 0x44, 0x00, 0x5a, 0x00, + 0x56, 0x00, 0x5a, 0x10, + 0x60, 0x00, 0x5c, 0xc0, 0x5f, 0x00, 0x50, 0x80, 0xa2, 0x00, 0x50, 0x40, + 0xf0, 0x00, 0xdc, 0xc0, + 0x90, 0x00, 0x58, 0x80, 0xa4, 0x00, 0xdc, 0xe0, 0xd2, 0x00, 0x5a, 0x80, + 0xa4, 0x00, 0xce, 0xf0, + 0x1f, 0x00, 0xce, 0xd0, 0xc5, 0x00, 0xd0, 0x40, 0x40, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0xc2, 0xc3, 0xd0, 0x00, 0x5a, 0xc0, 0xd3, 0x00, 0xdc, 0x0c, + 0xa4, 0x00, 0x5a, 0xc0, + 0x90, 0x00, 0xd2, 0xc0, 0xd3, 0x00, 0xcc, 0x03, 0x20, 0x00, 0xd2, 0xc0, + 0xdc, 0x00, 0xcc, 0x80, + 0xa5, 0x00, 0xce, 0x00, 0xa6, 0x00, 0xcc, 0xc0, 0xd4, 0x00, 0xc6, 0x03, + 0xa2, 0x00, 0xdc, 0xc0, + 0xd7, 0x00, 0xca, 0xc3, 0x3f, 0x00, 0xcc, 0xc0, 0xd0, 0x00, 0x86, 0xc3, + 0xd3, 0x00, 0xd2, 0xb0, + 0x0a, 0x00, 0xd4, 0xa0, 0x4a, 0x00, 0xd0, 0x00, 0xa3, 0x00, 0xcc, 0x03, + 0x58, 0x00, 0xd0, 0xb0, + 0x4a, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, + 0xdc, 0x00, 0xda, 0xf0, + 0x1f, 0x00, 0xda, 0x50, 0xc9, 0x00, 0x88, 0x83, 0xa2, 0x00, 0xc6, 0x43, + 0x40, 0x00, 0xd8, 0x40, + 0x40, 0x00, 0xc2, 0xc3, 0xa2, 0x00, 0x86, 0xc3, 0xd4, 0x00, 0xc2, 0xc3, + 0xd7, 0x00, 0x86, 0xc3, + 0xdc, 0x00, 0xca, 0x13, 0x80, 0x00, 0xd8, 0x80, 0xa4, 0x00, 0xd6, 0x00, + 0xa6, 0x00, 0xdc, 0x10, + 0x45, 0x00, 0xdc, 0xcc, 0xd4, 0x00, 0x86, 0x83, 0xa5, 0x00, 0xdc, 0xcc, + 0xd4, 0x00, 0x48, 0x80, + 0x21, 0x00, 0x4a, 0x20, 0x4f, 0x00, 0x4c, 0x20, 0x52, 0x00, 0x4e, 0xe0, + 0x79, 0x00, 0x62, 0xe0, + 0x4c, 0x00, 0xda, 0x80, 0xa2, 0x00, 0x88, 0x43, 0xf0, 0x00, 0x64, 0x30, + 0x7b, 0x00, 0x66, 0xb0, + 0x79, 0x00, 0x48, 0xc0, 0x5e, 0x00, 0x4a, 0x40, 0x71, 0x00, 0x4c, 0xb0, + 0x6d, 0x00, 0x4e, 0x30, + 0x46, 0x00, 0x62, 0xb0, 0x55, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc6, 0xc3, + 0xd8, 0x00, 0xc6, 0xc3, + 0xd0, 0x00, 0x86, 0xe3, 0xd3, 0x00, 0x64, 0xb0, 0x57, 0x00, 0x66, 0xa0, + 0x70, 0x00, 0x5e, 0x80, + 0x40, 0x00, 0x60, 0xc0, 0x7f, 0x00, 0x00, 0x02, 0xec, 0x00, 0x63, 0xc0, + 0x90, 0x00, 0x63, 0xc0, + 0xd2, 0x00, 0x6f, 0xc0, 0x52, 0x00, 0xeb, 0x01, 0xe8, 0x00, 0x61, 0x80, + 0xa4, 0x00, 0x5d, 0x00, + 0xa6, 0x00, 0xbf, 0x83, 0xe2, 0x00, 0x1a, 0xd0, 0x08, 0x00, 0x1c, 0xc0, + 0xdc, 0x00, 0x22, 0xa0, + 0x7d, 0x00, 0x6a, 0x00, 0x60, 0x00, 0x38, 0x80, 0xa4, 0x00, 0x34, 0x00, + 0xa6, 0x00, 0x4c, 0xc0, + 0x9c, 0x00, 0x4e, 0x80, 0x4c, 0x00, 0x50, 0x50, 0x62, 0x00, 0x53, 0x30, + 0x71, 0x00, 0x4b, 0x80, + 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x65, 0x3b, 0xe8, 0x00, 0x0f, 0x3f, + 0xe8, 0x00, 0x48, 0xc0, + 0x9c, 0x00, 0x58, 0x40, 0xf0, 0x00, 0x48, 0xc0, 0xd4, 0x00, 0xc8, 0x83, + 0xa5, 0x00, 0x54, 0xc0, + 0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, 0xa5, 0x00, 0xc8, 0xc3, + 0x9c, 0x00, 0xc8, 0xc3, + 0xdc, 0x00, 0x5a, 0x00, 0x60, 0x00, 0xcc, 0x6f, 0x46, 0x00, 0x52, 0x80, + 0xa4, 0x00, 0xc6, 0x83, + 0xa5, 0x00, 0xc6, 0xc3, 0x98, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc2, 0x8b, + 0x5b, 0x00, 0xcc, 0x8b, + 0x3f, 0x00, 0xcc, 0x0f, 0x3c, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x56, 0xcc, + 0x9c, 0x00, 0xcc, 0x13, + 0x40, 0x00, 0xc2, 0x83, 0xa6, 0x00, 0x58, 0xc0, 0x9c, 0x00, 0xc2, 0xe3, + 0x7f, 0x00, 0x5a, 0xe0, + 0x1f, 0x00, 0x5c, 0x40, 0x40, 0x00, 0x54, 0xc0, 0xa4, 0x00, 0xc8, 0xef, + 0x40, 0x00, 0xca, 0x13, + 0xc0, 0x00, 0x56, 0x00, 0xa4, 0x00, 0x5a, 0x28, 0x40, 0x00, 0x68, 0x40, + 0xf0, 0x00, 0x60, 0xc0, + 0x9c, 0x00, 0xcc, 0xab, 0x79, 0x00, 0xcc, 0x6f, 0x46, 0x00, 0x48, 0xc0, + 0x9c, 0x00, 0x59, 0x80, + 0xa4, 0x00, 0x5b, 0x00, 0xa6, 0x00, 0x6b, 0x3f, 0xe8, 0x00, 0x49, 0xc0, + 0xd4, 0x00, 0x5e, 0x00, + 0xa4, 0x00, 0x63, 0xc0, 0xd0, 0x00, 0x62, 0x14, 0xa6, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x56, 0x40, + 0xf0, 0x00, 0x5e, 0xc0, 0x90, 0x00, 0x89, 0xa3, 0xe5, 0x00, 0x6f, 0x10, + 0x12, 0x00, 0x61, 0x80, + 0xa4, 0x00, 0x7f, 0x2b, 0xe8, 0x00, 0x83, 0xa3, 0xe5, 0x00, 0x67, 0x80, + 0xa4, 0x00, 0x63, 0x30, + 0x4f, 0x00, 0xeb, 0x01, 0xe8, 0x00, 0x63, 0x68, 0x0b, 0x00, 0x6f, 0x98, + 0x55, 0x00, 0x63, 0xf0, + 0x3c, 0x00, 0xff, 0xa3, 0xe5, 0x00, 0x65, 0xd0, 0x45, 0x00, 0x6f, 0x80, + 0x5d, 0x00, 0xeb, 0x01, + 0xe8, 0x00, 0x63, 0xc8, 0x9c, 0x00, 0x63, 0xe8, 0x42, 0x00, 0x7f, 0x80, + 0xe7, 0x00, 0x8d, 0x23, + 0xb0, 0x00, 0xe1, 0xc0, 0x9c, 0x00, 0x0b, 0x21, 0xb0, 0x00, 0x8b, 0x22, + 0xb6, 0x00, 0x5b, 0xa2, + 0xb6, 0x00, 0x01, 0x02, 0xec, 0x00, 0xcd, 0x03, 0x3a, 0x00, 0x79, 0x80, + 0xa4, 0x00, 0xcd, 0x63, + 0x39, 0x00, 0x4b, 0x22, 0xb7, 0x00, 0x4b, 0xa3, 0xb3, 0x00, 0x5b, 0x23, + 0xb3, 0x00, 0x55, 0x83, + 0xa4, 0x00, 0x01, 0x02, 0xee, 0x00, 0x57, 0x80, 0xa4, 0x00, 0x55, 0x43, + 0xad, 0x00, 0x18, 0xe0, + 0x9c, 0x00, 0x7e, 0x02, 0xe6, 0x00, 0xc6, 0x43, 0xf2, 0x00, 0x7e, 0x80, + 0xe7, 0x00, 0xfe, 0x22, + 0xb8, 0x00, 0x00, 0x82, 0xec, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x26, 0x00, + 0xa6, 0x00, 0xc8, 0x03, + 0x08, 0x00, 0xcc, 0xe3, 0x7e, 0x00, 0xc8, 0x53, 0x05, 0x00, 0xcc, 0x13, + 0x7b, 0x00, 0xc8, 0x03, + 0x38, 0x00, 0xcc, 0x23, 0x71, 0x00, 0xc8, 0x23, 0x30, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0xcc, 0xd3, + 0x6e, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0xc6, 0x03, + 0xa2, 0x00, 0xc4, 0xc3, + 0xd2, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc4, 0xc3, + 0x94, 0x00, 0xc4, 0xc3, + 0xd6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc2, 0x83, + 0xa3, 0x00, 0xc8, 0xc3, + 0xd2, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc8, 0xc3, 0x94, 0x00, 0xc4, 0x83, + 0xa3, 0x00, 0x1a, 0xc2, + 0xd7, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0xc6, 0x83, + 0xa4, 0x00, 0x00, 0xc2, + 0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x1c, 0xc2, 0xd3, 0x00, 0xc8, 0x83, + 0xa4, 0x00, 0xc6, 0xc3, + 0xd0, 0x00, 0x1e, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0x3a, 0xc2, + 0xd3, 0x00, 0xc2, 0xc3, + 0x90, 0x00, 0x20, 0xc2, 0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x3c, 0xc2, + 0xd3, 0x00, 0xc6, 0xc3, + 0xd0, 0x00, 0x26, 0x14, 0xa2, 0x00, 0x3e, 0xc2, 0xd3, 0x00, 0x7e, 0x02, + 0xe6, 0x00, 0xc8, 0xc3, + 0xd0, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0x0e, 0x23, 0xe6, 0x00, 0xc9, 0xc0, + 0x9c, 0x00, 0xcb, 0x23, + 0xc0, 0x00, 0x01, 0x0e, 0xef, 0x00, 0x01, 0x42, 0xbe, 0x00, 0x07, 0x14, + 0xa2, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0xf4, 0x03, 0xe2, 0x00, 0x01, 0x42, 0xb6, 0x00, 0xc9, 0x80, + 0xa4, 0x00, 0x03, 0xcc, + 0xf5, 0x00, 0x01, 0x4c, 0xe8, 0x00, 0xfb, 0x03, 0xe2, 0x00, 0xc9, 0x8c, + 0xa4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xf7, 0x0b, 0xe2, 0x00, 0x03, 0xcc, 0xf5, 0x00, 0xd7, 0x4c, + 0xe8, 0x00, 0xfd, 0x48, + 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x09, 0x22, + 0xb0, 0x00, 0x7f, 0x01, + 0xe0, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0x1e, 0x61, 0xf2, 0x00, 0x1b, 0xc1, + 0x9c, 0x00, 0xcd, 0x83, + 0xcc, 0x00, 0x01, 0x0e, 0xef, 0x00, 0xcb, 0x03, 0xcc, 0x00, 0x01, 0xc2, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc3, 0xe3, 0xa4, 0x00, 0x01, 0x62, 0xec, 0x00, 0xc3, 0xcf, + 0xa4, 0x00, 0x1f, 0x49, + 0xe8, 0x00, 0x0e, 0x09, 0xa6, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x1b, 0xc1, + 0x9c, 0x00, 0xf7, 0x8f, + 0xe3, 0x00, 0x89, 0xab, 0xe3, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x1f, 0x4d, + 0xe8, 0x00, 0x0e, 0x8d, 0xa4, 0x00, 0x1a, 0xc1, 0x9c, 0x00, 0x0e, 0xc1, + 0xd8, 0x00, 0x0e, 0xc1, + 0xdc, 0x00, 0x1c, 0xc1, 0xd8, 0x00, 0x10, 0x01, 0x48, 0x00, 0x1a, 0x01, + 0xa6, 0x00, 0x0e, 0x81, + 0xa4, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0x83, + 0xa4, 0x00, 0x10, 0x81, + 0xa2, 0x00, 0xca, 0x4f, 0xc0, 0x00, 0xcc, 0xa3, 0xc0, 0x00, 0x10, 0xc1, + 0x9c, 0x00, 0x10, 0xc1, + 0xdc, 0x00, 0x00, 0xc1, 0xf0, 0x00, 0x18, 0xc1, 0x9c, 0x00, 0xcb, 0xc3, + 0xdc, 0x00, 0xc5, 0x43, + 0xa3, 0x00, 0x1f, 0x49, 0xe8, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xc2, 0xc3, + 0x9c, 0x00, 0xc2, 0xc3, + 0xdc, 0x00, 0xc6, 0xc3, 0xa4, 0x00, 0x12, 0xc1, 0x9c, 0x00, 0x14, 0x41, + 0x40, 0x00, 0xc2, 0x0f, + 0xc1, 0x00, 0xc2, 0x0b, 0x42, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x8f, + 0x40, 0x00, 0xc2, 0xcb, + 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x12, 0x01, + 0xa1, 0x00, 0x14, 0x01, + 0xa6, 0x00, 0x10, 0xc8, 0xf0, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x04, 0x01, + 0xa1, 0x00, 0x06, 0x01, + 0xa6, 0x00, 0xc2, 0x0f, 0x20, 0x00, 0xc2, 0xcb, 0x9c, 0x00, 0xc2, 0xcf, + 0x94, 0x00, 0xc2, 0xcb, + 0x90, 0x00, 0x16, 0xc1, 0xdc, 0x00, 0x16, 0xc1, 0xd4, 0x00, 0x18, 0x61, + 0xf2, 0x00, 0xc6, 0x83, + 0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x23, 0x40, 0x00, 0xca, 0x0f, + 0x20, 0x00, 0xca, 0xcb, + 0x9c, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x03, + 0xc4, 0x00, 0xc2, 0x43, + 0xa1, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0x18, 0x89, 0xa4, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0xca, 0xa3, + 0x7f, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc2, 0x43, 0xa1, 0x00, 0x18, 0x8d, + 0xa4, 0x00, 0x1c, 0x01, + 0xa6, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x19, 0x09, + 0xa6, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x07, 0x08, 0xa6, 0x00, 0x27, 0x08, 0xa6, 0x00, 0xfb, 0x80, + 0x00, 0x00, 0x7f, 0x02, + 0xe7, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x01, 0x42, 0xb7, 0x00, 0x7e, 0x82, + 0xe6, 0x00, 0x1c, 0xc1, + 0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc1, + 0x9c, 0x00, 0xc2, 0x03, + 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x00, 0xc2, 0xb6, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x1d, 0x81, + 0xa4, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1b, 0x81, + 0xa4, 0x00, 0x0f, 0xc1, + 0x9c, 0x00, 0xcd, 0x83, 0xc6, 0x00, 0xca, 0x83, 0x80, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xca, 0x03, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xce, 0x88, + 0xa4, 0x00, 0xce, 0x0c, 0xa6, 0x00, 0x18, 0x81, 0xa4, 0x00, 0xc7, 0xc3, + 0x9c, 0x00, 0xc7, 0xcf, + 0xdc, 0x00, 0x7f, 0x00, 0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0x11, 0x80, + 0xbe, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0xe3, 0xa2, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0xc6, 0xc3, + 0xdc, 0x00, 0x12, 0x01, 0xa6, 0x00, 0x14, 0x01, 0xa6, 0x00, 0x10, 0x01, + 0xa6, 0x00, 0xca, 0x33, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0x00, 0x02, + 0xa6, 0x00, 0x02, 0x02, 0xa6, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x04, 0x02, + 0xa6, 0x00, 0x06, 0x02, + 0xa6, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0x53, 0x15, 0x00, 0x08, 0x02, + 0xa6, 0x00, 0x0a, 0x02, + 0xa6, 0x00, 0x0c, 0x02, 0xa6, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x0e, 0x02, + 0xa6, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x04, 0x81, 0xa1, 0x00, 0xca, 0x03, 0x06, 0x00, 0x12, 0x81, + 0xa1, 0x00, 0x1b, 0x01, + 0xa6, 0x00, 0x1d, 0x01, 0xa6, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x0b, 0x01, + 0xa1, 0x00, 0x0f, 0xc1, 0x9c, 0x00, 0xcd, 0x83, 0xc6, 0x00, 0xca, 0x83, + 0x80, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xca, 0x03, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, + 0xa2, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xce, 0x88, 0xa4, 0x00, 0xce, 0x0c, 0xa6, 0x00, 0x18, 0x81, + 0xa4, 0x00, 0xc7, 0xc3, + 0x9c, 0x00, 0xc7, 0xcf, 0xdc, 0x00, 0x7f, 0x00, 0xe7, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x11, 0x80, + 0xbe, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0xe3, + 0xa2, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0xc6, 0xc3, 0xdc, 0x00, 0x12, 0x01, 0xa6, 0x00, 0x14, 0x01, + 0xa6, 0x00, 0x10, 0x01, + 0xa6, 0x00, 0xca, 0x33, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, + 0xa2, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0x00, 0x02, 0xa6, 0x00, 0x02, 0x02, 0xa6, 0x00, 0x16, 0x81, + 0xa4, 0x00, 0x04, 0x02, + 0xa6, 0x00, 0x06, 0x02, 0xa6, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0x53, + 0x15, 0x00, 0x08, 0x02, + 0xa6, 0x00, 0x0a, 0x02, 0xa6, 0x00, 0x0c, 0x02, 0xa6, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x0e, 0x02, + 0xa6, 0x00, 0x00, 0x02, 0xec, 0x00, 0x04, 0x81, 0xa1, 0x00, 0xca, 0x03, + 0x06, 0x00, 0x12, 0x81, + 0xa1, 0x00, 0x1b, 0x01, 0xa6, 0x00, 0x1d, 0x01, 0xa6, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x0b, 0x01, 0xa1, 0x00, 0x00, 0xc0, 0xdc, 0x00, 0x02, 0x40, + 0x40, 0x00, 0x00, 0x82, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xcc, 0xc3, + 0xdc, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x60, 0xf2, 0x00, 0x7c, 0x03, + 0xa1, 0x00, 0x7c, 0xc3, + 0x9c, 0x00, 0xcc, 0x03, 0x44, 0x00, 0x02, 0x00, 0xa6, 0x00, 0x02, 0x40, + 0x40, 0x00, 0x00, 0x0c, + 0xa1, 0x00, 0x00, 0x40, 0x80, 0x00, 0xcc, 0x03, 0xc1, 0x00, 0x00, 0x82, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc8, 0x83, 0xa2, 0x00, 0xc8, 0x43, 0xf0, 0x00, 0xc8, 0xc3, + 0x90, 0x00, 0xc8, 0xc3, + 0xd2, 0x00, 0xc7, 0x03, 0xa5, 0x00, 0x01, 0xc0, 0xf1, 0x00, 0xcb, 0x7f, + 0xf2, 0x00, 0x2d, 0x7b, + 0xe8, 0x00, 0x00, 0xc2, 0xec, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0x18, 0xe0, + 0x9c, 0x00, 0x7e, 0x02, + 0xe6, 0x00, 0xc6, 0x43, 0xf2, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xfe, 0x22, + 0xb8, 0x00, 0x00, 0x82, + 0xec, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x26, 0x00, 0xa6, 0x00, 0xc8, 0x03, + 0x08, 0x00, 0xcc, 0xe3, + 0x7e, 0x00, 0xc8, 0x53, 0x05, 0x00, 0xcc, 0x13, 0x7b, 0x00, 0xc8, 0x03, + 0x38, 0x00, 0xcc, 0x23, + 0x71, 0x00, 0xc8, 0x23, 0x30, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xcc, 0xd3, + 0x6e, 0x00, 0xc4, 0x83, + 0xa2, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0xc6, 0x03, 0xa2, 0x00, 0xc4, 0xc3, + 0xd2, 0x00, 0xc2, 0xc3, + 0xdc, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc4, 0xc3, 0x94, 0x00, 0xc4, 0xc3, + 0xd6, 0x00, 0xc2, 0xc3, + 0xdc, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc2, 0x83, 0xa3, 0x00, 0xc8, 0xc3, + 0xd2, 0x00, 0xc6, 0x03, + 0x50, 0x00, 0xc8, 0xc3, 0x94, 0x00, 0xc4, 0x83, 0xa3, 0x00, 0x1a, 0xc2, + 0xd7, 0x00, 0xc6, 0x03, + 0x50, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0x00, 0xc2, + 0xd3, 0x00, 0xc4, 0xc3, + 0xd0, 0x00, 0x1c, 0xc2, 0xd3, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc6, 0xc3, + 0xd0, 0x00, 0x1e, 0xc2, + 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0x3a, 0xc2, 0xd3, 0x00, 0xc2, 0xc3, + 0x90, 0x00, 0x20, 0xc2, + 0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x3c, 0xc2, 0xd3, 0x00, 0xc6, 0xc3, + 0xd0, 0x00, 0x06, 0x14, + 0xa2, 0x00, 0x3e, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0xc8, 0xc3, + 0xd2, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x26, 0x14, 0xa2, 0x00, 0xf6, 0x03, 0xe3, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc7, 0x4e, 0xe8, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x01, + 0xe0, 0x00, 0xfb, 0x80, + 0x00, 0x00, 0x7f, 0x02, 0xe7, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x01, 0x42, + 0xb7, 0x00, 0x7e, 0x82, + 0xe6, 0x00, 0x1c, 0xc1, 0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, + 0xdc, 0x00, 0x1a, 0xc1, + 0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xcc, 0x03, + 0xc4, 0x00, 0x00, 0xc2, + 0xb6, 0x00, 0x1c, 0x81, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x1a, 0x81, + 0xa4, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x01, 0xca, 0xec, 0x00, 0xf5, 0x4a, + 0xe8, 0x00, 0x7f, 0x02, + 0xe6, 0x00, 0x0f, 0x23, 0xe6, 0x00, 0xc9, 0xc0, 0x9c, 0x00, 0xcb, 0x23, + 0xc0, 0x00, 0x01, 0x0e, + 0xef, 0x00, 0x01, 0x42, 0xbe, 0x00, 0xcd, 0x03, 0x00, 0x00, 0xf4, 0x03, + 0xe2, 0x00, 0x01, 0x42, + 0xb6, 0x00, 0xc9, 0x80, 0xa4, 0x00, 0x03, 0xcc, 0xf5, 0x00, 0x01, 0x4c, + 0xe8, 0x00, 0xfb, 0x03, + 0xe2, 0x00, 0xc9, 0x8c, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0xf7, 0x0b, + 0xe2, 0x00, 0x03, 0xcc, + 0xf5, 0x00, 0xd7, 0x4c, 0xe8, 0x00, 0xb1, 0x4b, 0xe8, 0x00, 0xf7, 0x03, + 0xe3, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x0a, 0xef, 0x00, 0x09, 0x22, + 0xb0, 0x00, 0x7f, 0x01, + 0xe0, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x1f, 0x61, 0xf2, 0x00, 0x1b, 0xc1, + 0x9c, 0x00, 0xcd, 0x83, + 0xcc, 0x00, 0x01, 0x0e, 0xef, 0x00, 0xcb, 0x03, 0xcc, 0x00, 0x01, 0xc2, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc3, 0xe3, 0xa4, 0x00, 0x01, 0x62, 0xec, 0x00, 0xc3, 0xcf, + 0xa4, 0x00, 0x81, 0x49, + 0xe8, 0x00, 0x0e, 0x09, 0xa6, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x1b, 0xc1, + 0x9c, 0x00, 0xf7, 0x8f, + 0xe3, 0x00, 0x89, 0xab, 0xe3, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x81, 0x4d, + 0xe8, 0x00, 0x0e, 0x8d, 0xa4, 0x00, 0x1a, 0xc1, 0x9c, 0x00, 0x0e, 0xc1, + 0xd8, 0x00, 0x0e, 0xc1, + 0xdc, 0x00, 0x1c, 0xc1, 0xd8, 0x00, 0x10, 0x01, 0x48, 0x00, 0x1a, 0x01, + 0xa6, 0x00, 0x0e, 0x81, + 0xa4, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0x83, + 0xa4, 0x00, 0x10, 0x81, + 0xa2, 0x00, 0xca, 0x4f, 0xc0, 0x00, 0xcc, 0xa3, 0xc0, 0x00, 0x10, 0xc1, + 0x9c, 0x00, 0x10, 0xc1, + 0xdc, 0x00, 0x00, 0xc1, 0xf0, 0x00, 0x18, 0xc1, 0x9c, 0x00, 0xcb, 0xc3, + 0xdc, 0x00, 0xc5, 0x43, + 0xa3, 0x00, 0x81, 0x49, 0xe8, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0xc2, 0xc3, + 0x9c, 0x00, 0xc2, 0xc3, + 0xdc, 0x00, 0xc6, 0xc3, 0xa4, 0x00, 0x12, 0xc1, 0x9c, 0x00, 0x14, 0x41, + 0x40, 0x00, 0xc2, 0x0f, + 0xc1, 0x00, 0xc2, 0x0b, 0x42, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x8f, + 0x40, 0x00, 0xc2, 0xcb, + 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x12, 0x01, + 0xa1, 0x00, 0x14, 0x01, + 0xa6, 0x00, 0x10, 0xc8, 0xf0, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x04, 0x01, + 0xa1, 0x00, 0x06, 0x01, + 0xa6, 0x00, 0xc2, 0x0f, 0x20, 0x00, 0xc2, 0xcb, 0x9c, 0x00, 0xc2, 0xcf, + 0x94, 0x00, 0xc2, 0xcb, + 0x90, 0x00, 0x16, 0xc1, 0xdc, 0x00, 0x16, 0xc1, 0xd4, 0x00, 0x18, 0x61, + 0xf2, 0x00, 0xc6, 0x83, + 0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x23, 0x40, 0x00, 0xca, 0x0f, + 0x20, 0x00, 0xca, 0xcb, + 0x9c, 0x00, 0x16, 0x81, 0xa4, 0x00, 0x16, 0xc1, 0x9c, 0x00, 0xcc, 0x03, + 0xc4, 0x00, 0xc2, 0x43, + 0xa1, 0x00, 0xcc, 0xc3, 0x9c, 0x00, 0x18, 0x89, 0xa4, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0xca, 0xa3, + 0x7f, 0x00, 0xca, 0x03, 0x00, 0x00, 0xc2, 0x43, 0xa1, 0x00, 0x18, 0x8d, + 0xa4, 0x00, 0x1c, 0x01, + 0xa6, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x19, 0x89, + 0xa4, 0x00, 0xf7, 0x03, + 0xe3, 0x00, 0x07, 0x08, 0xa6, 0x00, 0x27, 0x08, 0xa6, 0x00, 0xc7, 0x4a, + 0xe8, 0x00, 0x01, 0x0e, + 0xef, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x01, 0xe0, 0x00, 0xfb, 0x80, + 0x00, 0x00, 0x7f, 0x02, + 0xe7, 0x00, 0xfd, 0x80, 0x00, 0x00, 0x01, 0x42, 0xb7, 0x00, 0x7e, 0x82, + 0xe6, 0x00, 0x1c, 0xc1, + 0x9c, 0x00, 0xc2, 0x03, 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc1, + 0x9c, 0x00, 0xc2, 0x03, + 0xa6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x00, 0xc2, 0xb6, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x1d, 0x81, + 0xa4, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x1b, 0x81, + 0xa4, 0x00, 0xc2, 0x03, + 0xad, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0x68, 0xc1, 0x9c, 0x00, 0xca, 0x23, + 0xc0, 0x00, 0xe2, 0xc1, + 0x9c, 0x00, 0x68, 0xc1, 0x9c, 0x00, 0xcc, 0x43, 0xc1, 0x00, 0xde, 0x81, + 0xa1, 0x00, 0xc0, 0xa3, + 0xe7, 0x00, 0x69, 0x81, 0xa4, 0x00, 0x79, 0x81, 0xa4, 0x00, 0x27, 0x6c, + 0xe8, 0x00, 0x91, 0x23, + 0xe0, 0x00, 0xef, 0x03, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc3, 0xc3, + 0xa4, 0x00, 0x27, 0x6c, 0xe8, 0x00, 0x91, 0x23, 0xe0, 0x00, 0xef, 0x03, + 0xe0, 0x00, 0xee, 0x81, + 0x00, 0x00, 0xc4, 0xc1, 0x9c, 0x00, 0xcc, 0xc3, 0xdc, 0x00, 0x98, 0x23, + 0xe1, 0x00, 0x56, 0x41, + 0xad, 0x00, 0x6a, 0xc1, 0x9c, 0x00, 0xc4, 0x03, 0xa6, 0x00, 0xc4, 0x03, + 0x50, 0x00, 0xc4, 0x81, + 0xa4, 0x00, 0x68, 0xc1, 0x9c, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xc4, 0x03, + 0x30, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x6c, 0x81, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x72, 0x81, + 0xa4, 0x00, 0x69, 0x81, + 0xa4, 0x00, 0x6b, 0x81, 0xa4, 0x00, 0x91, 0x23, 0xe0, 0x00, 0xef, 0x03, + 0xe0, 0x00, 0xc1, 0xe1, + 0x9c, 0x00, 0x3d, 0x6d, 0xe8, 0x00, 0xbd, 0x6c, 0xe8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x21, 0x6f, + 0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0xc1, 0x01, 0xa5, 0x00, 0x36, 0xe0, + 0xf3, 0x00, 0x02, 0xc2, + 0x00, 0x00, 0x06, 0x02, 0x4c, 0x00, 0x0a, 0x02, 0x50, 0x00, 0x0c, 0x02, + 0x68, 0x00, 0x10, 0x82, + 0x7e, 0x00, 0x04, 0x82, 0x04, 0x00, 0x08, 0x02, 0x50, 0x00, 0x0e, 0x02, + 0x77, 0x00, 0x7a, 0xe1, + 0x9c, 0x00, 0x0c, 0x02, 0x12, 0x00, 0x08, 0x82, 0xa4, 0x00, 0x0e, 0x02, + 0x52, 0x00, 0x12, 0xf2, + 0x7d, 0x00, 0x0a, 0x82, 0xa4, 0x00, 0x7a, 0x05, 0xa5, 0x00, 0x16, 0xc2, + 0x9c, 0x00, 0x18, 0x42, + 0x76, 0x00, 0x00, 0x02, 0xec, 0x00, 0x0e, 0x02, 0xa2, 0x00, 0x0e, 0xc2, + 0x49, 0x00, 0x16, 0xc2, + 0x9c, 0x00, 0x20, 0x02, 0x67, 0x00, 0x0e, 0x02, 0x59, 0x00, 0x18, 0xc2, + 0x9c, 0x00, 0x1e, 0x42, + 0x76, 0x00, 0x10, 0x82, 0xa4, 0x00, 0x10, 0xc2, 0x49, 0x00, 0x20, 0xc2, + 0x9c, 0x00, 0x18, 0x82, + 0xa4, 0x00, 0x26, 0x02, 0x67, 0x00, 0x18, 0x02, 0x59, 0x00, 0x26, 0x02, + 0x0c, 0x00, 0x16, 0x82, + 0xa4, 0x00, 0x28, 0x42, 0x76, 0x00, 0x16, 0x02, 0x44, 0x00, 0x26, 0x02, + 0x04, 0x00, 0x1e, 0x82, + 0xa4, 0x00, 0x2e, 0x02, 0x67, 0x00, 0x16, 0x02, 0x4c, 0x00, 0x28, 0xc2, + 0x9c, 0x00, 0x20, 0x82, + 0xa4, 0x00, 0x20, 0xc2, 0x49, 0x00, 0x32, 0xc2, 0xdc, 0x00, 0x2a, 0x02, + 0x59, 0x00, 0x26, 0x82, + 0xa4, 0x00, 0x35, 0xc2, 0x9c, 0x00, 0x2d, 0x82, 0x41, 0x00, 0x01, 0x8c, + 0xea, 0x00, 0x31, 0x02, + 0x58, 0x00, 0x29, 0x82, 0xa4, 0x00, 0x21, 0x6f, 0xe8, 0x00, 0x3b, 0x02, + 0x68, 0x00, 0x3f, 0x82, + 0x7e, 0x00, 0x30, 0xc2, 0x9c, 0x00, 0x2c, 0x02, 0x49, 0x00, 0x38, 0x02, + 0x77, 0x00, 0x30, 0xc2, + 0x9c, 0x00, 0x2c, 0x02, 0x58, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x28, 0x82, + 0x41, 0x00, 0x36, 0x02, + 0x68, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x3b, 0x82, 0x7e, 0x00, 0x2d, 0xc2, + 0x9c, 0x00, 0xbf, 0x61, + 0xe8, 0x00, 0x28, 0x02, 0x49, 0x00, 0x34, 0x02, 0x77, 0x00, 0xbe, 0xe0, + 0xf3, 0x00, 0x02, 0x02, + 0x12, 0x00, 0x04, 0xf2, 0x7d, 0x00, 0x0a, 0xc2, 0x9c, 0x00, 0x0e, 0x42, + 0x76, 0x00, 0x06, 0xc2, + 0x49, 0x00, 0x0a, 0xc2, 0x9c, 0x00, 0x16, 0x02, 0x67, 0x00, 0x02, 0x02, + 0xa2, 0x00, 0x06, 0x02, + 0x59, 0x00, 0x0e, 0xc2, 0x9c, 0x00, 0x0a, 0x82, 0xa4, 0x00, 0x12, 0x42, + 0x76, 0x00, 0x0a, 0xc2, + 0x49, 0x00, 0x16, 0xc2, 0x9c, 0x00, 0x12, 0x82, 0xa4, 0x00, 0x1a, 0x02, + 0x67, 0x00, 0x12, 0x02, + 0x59, 0x00, 0x1a, 0x02, 0x0c, 0x00, 0x0e, 0x82, 0xa4, 0x00, 0x1e, 0x42, + 0x76, 0x00, 0x0e, 0x02, + 0x44, 0x00, 0x1a, 0x02, 0x04, 0x00, 0x16, 0x82, 0xa4, 0x00, 0x22, 0x02, + 0x67, 0x00, 0x0e, 0x02, + 0x4c, 0x00, 0x7a, 0xe1, 0x9c, 0x00, 0x1a, 0x82, 0xa4, 0x00, 0x1e, 0xc2, + 0x9c, 0x00, 0x1a, 0xc2, + 0x49, 0x00, 0x24, 0xc2, 0xdc, 0x00, 0x1e, 0x82, 0xa4, 0x00, 0x7a, 0x05, + 0xa5, 0x00, 0x20, 0x02, + 0x59, 0x00, 0x34, 0xc2, 0x9c, 0x00, 0x37, 0xc2, 0x9c, 0x00, 0x39, 0xc2, + 0x9c, 0x00, 0x01, 0x8c, + 0xea, 0x00, 0x3a, 0xca, 0x9c, 0x00, 0x26, 0x82, 0xa4, 0x00, 0x38, 0x8a, + 0xa4, 0x00, 0x3b, 0x8a, + 0xa4, 0x00, 0x3d, 0x8a, 0xa4, 0x00, 0x21, 0x6f, 0xe8, 0x00, 0x3f, 0x8a, + 0xa4, 0x00, 0x2d, 0xca, + 0x9c, 0x00, 0x28, 0x8a, 0x41, 0x00, 0x2a, 0x02, 0x58, 0x00, 0x3a, 0x02, + 0x68, 0x00, 0x3e, 0x82, + 0x7e, 0x00, 0x2a, 0xc2, 0x9c, 0x00, 0x28, 0x02, 0x49, 0x00, 0x38, 0x02, + 0x77, 0x00, 0x2a, 0xc2, + 0x9c, 0x00, 0x28, 0x02, 0x58, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x26, 0x82, + 0x41, 0x00, 0x36, 0x02, + 0x68, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x3b, 0x82, 0x7e, 0x00, 0x29, 0xc2, + 0x9c, 0x00, 0xbf, 0x61, + 0xe8, 0x00, 0x26, 0x02, 0x49, 0x00, 0x34, 0x02, 0x77, 0x00, 0x3e, 0xe1, + 0xf3, 0x00, 0x02, 0xa2, + 0x10, 0x00, 0x04, 0xb2, 0x43, 0x00, 0x06, 0xb2, 0x7b, 0x00, 0x08, 0xc2, + 0x9c, 0x00, 0x0a, 0x42, + 0x76, 0x00, 0x06, 0xc2, 0x49, 0x00, 0x08, 0xc2, 0x9c, 0x00, 0x0e, 0x02, + 0x67, 0x00, 0x04, 0x02, + 0xa2, 0x00, 0x06, 0x02, 0x59, 0x00, 0x0a, 0xc2, 0x9c, 0x00, 0x08, 0x82, + 0xa4, 0x00, 0x0c, 0x42, + 0x76, 0x00, 0x08, 0xc2, 0x49, 0x00, 0x0e, 0xc2, 0x9c, 0x00, 0x0c, 0x82, + 0xa4, 0x00, 0x10, 0x02, + 0x67, 0x00, 0x0c, 0x02, 0x59, 0x00, 0x10, 0x02, 0x18, 0x00, 0x0a, 0x82, + 0xa4, 0x00, 0x12, 0x42, + 0x76, 0x00, 0x0a, 0x02, 0x48, 0x00, 0x10, 0x02, 0x04, 0x00, 0x0e, 0x82, + 0xa4, 0x00, 0x14, 0x02, + 0x67, 0x00, 0x0a, 0x02, 0x4c, 0x00, 0x12, 0xc2, 0x9c, 0x00, 0x10, 0x82, + 0xa4, 0x00, 0x10, 0xc2, + 0x49, 0x00, 0x00, 0x02, 0xec, 0x00, 0x14, 0xc2, 0x9c, 0x00, 0x12, 0x82, + 0xa4, 0x00, 0x12, 0x02, + 0x59, 0x00, 0x1a, 0xc2, 0x9c, 0x00, 0x1a, 0x82, 0xa4, 0x00, 0x32, 0xc2, + 0x9c, 0x00, 0x34, 0xc2, + 0x9c, 0x00, 0x36, 0xc2, 0x9c, 0x00, 0x18, 0x02, 0xa2, 0x00, 0x38, 0xc2, + 0x9c, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0x38, 0x82, 0xa4, 0x00, 0x3a, 0x82, 0xa4, 0x00, 0x3c, 0x82, + 0xa4, 0x00, 0x1c, 0xc2, + 0x9c, 0x00, 0x3e, 0x82, 0xa4, 0x00, 0x1a, 0x82, 0x41, 0x00, 0xc4, 0x03, + 0x58, 0x00, 0x3a, 0x02, + 0x68, 0x00, 0x3e, 0x82, 0x7e, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0x1a, 0x02, + 0x49, 0x00, 0x38, 0x02, + 0x77, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0x1a, 0x02, 0x58, 0x00, 0x36, 0x82, + 0xa4, 0x00, 0x18, 0x82, + 0x41, 0x00, 0x36, 0x02, 0x68, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x3a, 0x82, + 0x7e, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x1a, 0xc2, 0x9c, 0x00, 0x18, 0x02, 0x49, 0x00, 0x34, 0x02, + 0x77, 0x00, 0x0a, 0x23, + 0xb0, 0x00, 0x33, 0x82, 0xa4, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0x01, 0x80, + 0xea, 0x00, 0xcc, 0x63, + 0x0d, 0x00, 0x31, 0x82, 0xa4, 0x00, 0x04, 0xc0, 0xdc, 0x00, 0xcc, 0xc3, + 0x9c, 0x00, 0x02, 0xe0, + 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x82, + 0xec, 0x00, 0xc2, 0x03, + 0xa1, 0x00, 0xc3, 0x63, 0xf2, 0x00, 0x03, 0x14, 0xa1, 0x00, 0xf7, 0x61, + 0xe8, 0x00, 0x21, 0x7b, + 0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x0b, 0x23, 0xb0, 0x00, 0x7e, 0x00, + 0xe0, 0x00, 0xcc, 0xc3, + 0x9c, 0x00, 0x02, 0xe0, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x21, 0x6f, 0xe8, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x03, 0x0c, + 0xa1, 0x00, 0x01, 0xc0, + 0x9c, 0x00, 0x02, 0x40, 0x40, 0x00, 0x04, 0xc0, 0xdc, 0x00, 0x06, 0x40, + 0x40, 0x00, 0x00, 0xa2, + 0xec, 0x00, 0xcc, 0xc3, 0xdc, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x7c, 0x03, + 0xa1, 0x00, 0x7c, 0xc3, + 0x9c, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x60, 0xf2, 0x00, 0x02, 0x40, + 0x40, 0x00, 0x02, 0x00, + 0xa6, 0x00, 0x00, 0x0c, 0xa1, 0x00, 0xcc, 0x03, 0x44, 0x00, 0xc2, 0x43, + 0x80, 0x00, 0xcc, 0xc3, + 0xc1, 0x00, 0x00, 0x82, 0xec, 0x00, 0x02, 0xc0, 0x9c, 0x00, 0xcc, 0xc3, + 0xdc, 0x00, 0xc8, 0x83, + 0xa2, 0x00, 0xc8, 0x43, 0xf0, 0x00, 0xc6, 0x03, 0xa5, 0x00, 0x04, 0x64, + 0xf2, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0x02, 0x0c, + 0xa1, 0x00, 0x00, 0xce, + 0xec, 0x00, 0x7e, 0x82, 0xe0, 0x00, 0xc6, 0x43, 0xf2, 0x00, 0xcc, 0xe3, + 0x3e, 0x00, 0xfe, 0x22, + 0xb8, 0x00, 0xc8, 0x83, 0xa4, 0x00, 0xc8, 0x03, 0x48, 0x00, 0xc8, 0x53, + 0x05, 0x00, 0xcc, 0x13, + 0x7b, 0x00, 0xc8, 0x03, 0x38, 0x00, 0xcc, 0x23, 0x71, 0x00, 0xc8, 0x23, + 0x30, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0xcc, 0xd3, 0x6e, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0xc4, 0xc3, + 0x90, 0x00, 0xc6, 0x03, + 0xa2, 0x00, 0xc4, 0xc3, 0xd2, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0x83, + 0xa4, 0x00, 0xc4, 0xc3, + 0x94, 0x00, 0xc4, 0xc3, 0xd6, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xc8, 0xc3, + 0x90, 0x00, 0xc2, 0x83, + 0xa3, 0x00, 0xc8, 0xc3, 0xd2, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc8, 0xc3, + 0x94, 0x00, 0xc4, 0x83, + 0xa3, 0x00, 0x40, 0xc2, 0xd7, 0x00, 0xc6, 0x03, 0x50, 0x00, 0xc2, 0xc3, + 0x90, 0x00, 0xc6, 0x83, + 0xa4, 0x00, 0x46, 0xc2, 0xd3, 0x00, 0xc4, 0xc3, 0xd0, 0x00, 0x42, 0xc2, + 0xd3, 0x00, 0xc8, 0x83, + 0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0x44, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, + 0xd0, 0x00, 0x00, 0xc2, + 0xd3, 0x00, 0x8e, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0x06, 0xc2, + 0xd3, 0x00, 0xc4, 0xc3, + 0xd0, 0x00, 0x02, 0xc2, 0xd3, 0x00, 0x8e, 0x03, 0xa2, 0x00, 0xc2, 0x83, + 0xa4, 0x00, 0xc6, 0xc3, + 0xd0, 0x00, 0x04, 0xc2, 0xd3, 0x00, 0xc8, 0xc3, 0xd0, 0x00, 0xc8, 0xc3, + 0xd2, 0x00, 0xff, 0x03, + 0xe0, 0x00, 0x7d, 0xc1, 0x9c, 0x00, 0x8f, 0xc3, 0x9c, 0x00, 0xdb, 0xc3, + 0x9c, 0x00, 0x05, 0x6f, + 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0xdb, 0x03, 0xa2, 0x00, 0x7d, 0x41, + 0xa5, 0x00, 0x21, 0x6f, + 0xe8, 0x00, 0xc5, 0x83, 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x28, 0x23, + 0xb0, 0x00, 0x8e, 0xc3, + 0x9c, 0x00, 0x7e, 0x40, 0xe0, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0x00, 0x82, + 0xec, 0x00, 0x00, 0xc2, + 0xec, 0x00, 0x00, 0xc0, 0x9c, 0x00, 0x02, 0x40, 0x76, 0x00, 0x00, 0x80, + 0xa4, 0x00, 0x00, 0xc0, + 0x49, 0x00, 0x08, 0xc0, 0x9c, 0x00, 0x08, 0x80, 0xa4, 0x00, 0x08, 0x00, + 0x59, 0x00, 0x0a, 0x00, + 0x67, 0x00, 0x02, 0x00, 0x06, 0x00, 0x02, 0x80, 0xa4, 0x00, 0x0a, 0x00, + 0x42, 0x00, 0x0c, 0x00, + 0x67, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0a, 0x80, 0xa4, 0x00, 0x0a, 0x00, + 0x46, 0x00, 0x04, 0x40, + 0x76, 0x00, 0x0c, 0xc0, 0x9c, 0x00, 0x0c, 0x80, 0xa4, 0x00, 0x0c, 0x00, + 0x59, 0x00, 0x0e, 0x00, + 0x67, 0x00, 0x04, 0xc0, 0x9c, 0x00, 0x04, 0x80, 0xa4, 0x00, 0x04, 0xc0, + 0x49, 0x00, 0x06, 0x40, + 0x76, 0x00, 0x0e, 0xc0, 0x9c, 0x00, 0x0e, 0x80, 0xa4, 0x00, 0x06, 0xc0, + 0xdc, 0x00, 0x0e, 0x00, + 0x59, 0x00, 0x00, 0x02, 0xec, 0x00, 0x06, 0x80, 0xa4, 0x00, 0x06, 0xc0, + 0x49, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xdb, 0xc3, 0x9c, 0x00, 0xb9, 0x62, + 0xea, 0x00, 0xc4, 0xc3, + 0x9c, 0x00, 0xda, 0x03, 0xa2, 0x00, 0x00, 0x82, 0xec, 0x00, 0xda, 0xc3, + 0x9c, 0x00, 0x8e, 0x83, + 0xa4, 0x00, 0x0a, 0x23, 0xb0, 0x00, 0x7e, 0x00, 0xe0, 0x00, 0x8e, 0xc3, + 0x9c, 0x00, 0x7e, 0x02, + 0xe3, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x21, 0x82, 0xa4, 0x00, 0x03, 0x42, + 0xbb, 0x00, 0x19, 0x60, + 0xf2, 0x00, 0x01, 0x82, 0xa4, 0x00, 0xe3, 0x65, 0xe8, 0x00, 0x01, 0x8a, + 0xa4, 0x00, 0x21, 0x8a, + 0xa4, 0x00, 0xe3, 0x65, 0xe8, 0x00, 0x09, 0x22, 0xb0, 0x00, 0x7f, 0x00, + 0xe0, 0x00, 0xe3, 0x41, + 0xe8, 0x00, 0x04, 0xe0, 0x9c, 0x00, 0x06, 0x40, 0x40, 0x00, 0x00, 0x82, + 0xec, 0x00, 0x88, 0xa3, + 0xe3, 0x00, 0x7e, 0x41, 0xe6, 0x00, 0x7f, 0xc2, 0xe6, 0x00, 0x19, 0x01, + 0xbe, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x00, 0x82, 0xec, 0x00, 0x02, 0xc2, 0xbe, 0x00, 0x18, 0xc1, + 0x9c, 0x00, 0x2c, 0x85, + 0xa4, 0x00, 0x00, 0x62, 0x10, 0x00, 0x00, 0x11, 0x7e, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x2a, 0x85, + 0xa4, 0x00, 0x00, 0xc1, 0x9c, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x02, 0x41, + 0x76, 0x00, 0x18, 0x81, + 0xa4, 0x00, 0x18, 0xc1, 0x49, 0x00, 0x00, 0xc1, 0x9c, 0x00, 0x04, 0x01, + 0x67, 0x00, 0x18, 0x01, + 0x59, 0x00, 0x02, 0xc1, 0x9c, 0x00, 0x06, 0x41, 0x76, 0x00, 0x1a, 0x81, + 0xa4, 0x00, 0x1a, 0xc1, + 0x49, 0x00, 0x04, 0xc1, 0x9c, 0x00, 0x1c, 0x81, 0xa4, 0x00, 0x08, 0x01, + 0x67, 0x00, 0x1c, 0x01, + 0x59, 0x00, 0x08, 0x01, 0x18, 0x00, 0x1e, 0x81, 0xa4, 0x00, 0x0a, 0x41, + 0x76, 0x00, 0x1e, 0x01, + 0x48, 0x00, 0x08, 0x01, 0x04, 0x00, 0x00, 0x81, 0xa4, 0x00, 0x0c, 0x01, + 0x67, 0x00, 0x1e, 0x01, + 0x4c, 0x00, 0x0a, 0xc1, 0x9c, 0x00, 0x02, 0x81, 0xa4, 0x00, 0x02, 0xc1, + 0x49, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x0c, 0xc1, 0x9c, 0x00, 0x04, 0x81, 0xa4, 0x00, 0x04, 0x01, + 0x59, 0x00, 0x10, 0xc1, + 0x9c, 0x00, 0x08, 0x81, 0xa4, 0x00, 0x08, 0x81, 0x41, 0x00, 0x0e, 0x01, + 0x58, 0x00, 0x14, 0x01, + 0x68, 0x00, 0x06, 0x01, 0xa2, 0x00, 0xc2, 0x83, 0x7e, 0x00, 0x0e, 0xc1, + 0x9c, 0x00, 0x08, 0x01, + 0x49, 0x00, 0x12, 0x01, 0x77, 0x00, 0x0e, 0xc1, 0x9c, 0x00, 0x08, 0x01, + 0x58, 0x00, 0x10, 0x81, + 0xa4, 0x00, 0x10, 0x01, 0x68, 0x00, 0x06, 0x81, 0x41, 0x00, 0x0e, 0x81, + 0xa4, 0x00, 0x15, 0x81, + 0x7e, 0x00, 0x09, 0xc1, 0x9c, 0x00, 0x3d, 0x63, 0xea, 0x00, 0x06, 0x01, + 0x49, 0x00, 0x0e, 0x01, + 0x77, 0x00, 0x00, 0x02, 0xec, 0x00, 0x2d, 0x81, 0xa4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x1d, 0x4a, + 0xe8, 0x00, 0x2d, 0x6f, 0xe8, 0x00, 0x2a, 0x81, 0xa4, 0x00, 0x00, 0x22, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0xc0, + 0x9c, 0x00, 0x21, 0xc0, + 0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0xc0, 0x9c, 0x00, 0x01, 0x00, + 0x50, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x00, 0x50, 0x00, 0x21, 0xc0, 0xd8, 0x00, 0x21, 0xc0, + 0x9c, 0x00, 0x01, 0xc0, + 0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0xc0, 0x98, 0x00, 0x01, 0xc0, + 0x98, 0x00, 0x21, 0xc0, + 0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x21, 0xc0, + 0x9c, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xa0, + 0x16, 0x00, 0x01, 0xa0, + 0x16, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x01, 0xa0, + 0x16, 0x00, 0x01, 0x60, + 0x29, 0x00, 0x01, 0xc0, 0x9c, 0x00, 0x21, 0x30, 0x14, 0x00, 0x01, 0xc0, + 0x98, 0x00, 0x21, 0xc0, + 0x98, 0x00, 0x0a, 0x23, 0xb0, 0x00, 0x7f, 0x81, 0xe7, 0x00, 0x7f, 0x00, + 0xe0, 0x00, 0xed, 0x81, + 0x00, 0x00, 0x7f, 0x02, 0xe3, 0x00, 0xef, 0x81, 0x00, 0x00, 0x01, 0x42, + 0xb3, 0x00, 0x7f, 0x82, + 0xe3, 0x00, 0x1f, 0x60, 0xf2, 0x00, 0xc5, 0x03, 0xa6, 0x00, 0x01, 0xc2, + 0xb3, 0x00, 0xc2, 0x03, + 0xa6, 0x00, 0xc3, 0x03, 0x10, 0x00, 0x6b, 0xc1, 0xdc, 0x00, 0x01, 0xcc, + 0xf5, 0x00, 0x01, 0x0e, + 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc3, 0xc3, 0x9c, 0x00, 0xc3, 0xc3, + 0xdc, 0x00, 0x6a, 0x81, + 0xa4, 0x00, 0xc2, 0x03, 0x30, 0x00, 0x0e, 0xc0, 0xd8, 0x00, 0x0e, 0xc0, + 0xdc, 0x00, 0xc4, 0x03, + 0x50, 0x00, 0x10, 0x00, 0x48, 0x00, 0xc2, 0x83, 0xa2, 0x00, 0x1a, 0x80, + 0xa4, 0x00, 0xc4, 0xc3, + 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xca, 0x2f, + 0xc0, 0x00, 0xcc, 0x33, + 0xc0, 0x00, 0x10, 0x80, 0xa2, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0x11, 0xc0, + 0x9c, 0x00, 0x11, 0xc0, 0xdc, 0x00, 0xc5, 0xc3, 0xa4, 0x00, 0x69, 0x49, + 0xe8, 0x00, 0xf7, 0x03, + 0xe0, 0x00, 0xef, 0x03, 0xe0, 0x00, 0xe7, 0x03, 0xe0, 0x00, 0xc7, 0x8f, + 0xa4, 0x00, 0xc7, 0x0f, + 0xa2, 0x00, 0x1a, 0xc0, 0x9c, 0x00, 0xc6, 0x8f, 0xa2, 0x00, 0x08, 0x40, + 0xf0, 0x00, 0x18, 0xc0, + 0x9c, 0x00, 0xcc, 0xd3, 0x6c, 0x00, 0x12, 0xc0, 0x9c, 0x00, 0x14, 0x40, + 0x40, 0x00, 0xc4, 0xe3, + 0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0xc7, 0xc3, 0xd0, 0x00, 0xc5, 0x83, + 0xa4, 0x00, 0x69, 0x4d, + 0xe8, 0x00, 0xc4, 0x63, 0xf2, 0x00, 0xc7, 0xc3, 0x9c, 0x00, 0xc7, 0xc3, + 0xdc, 0x00, 0xa7, 0x48, + 0xe8, 0x00, 0x12, 0xa0, 0xa4, 0x00, 0x14, 0x00, 0xa6, 0x00, 0xc6, 0x03, + 0x10, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x1c, 0xc0, 0x9c, 0x00, 0x12, 0x00, 0xc2, 0x00, 0xc4, 0x83, + 0xa2, 0x00, 0x14, 0x00, + 0xc0, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc6, 0xc3, 0xd0, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0xc3, + 0x9c, 0x00, 0xc4, 0xc3, 0xdc, 0x00, 0xca, 0x03, 0x00, 0x00, 0x1c, 0x0c, + 0xa1, 0x00, 0x04, 0x00, + 0xa1, 0x00, 0x06, 0x00, 0xa6, 0x00, 0x01, 0x02, 0xec, 0x00, 0x0d, 0x80, + 0xa2, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0x8c, 0xa4, 0x00, 0x15, 0x0c, + 0xa6, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x83, 0xa2, 0x00, 0xc6, 0xc3, + 0x9c, 0x00, 0xc6, 0xc3, + 0xdc, 0x00, 0x1c, 0xc0, 0x9c, 0x00, 0x12, 0xc0, 0xdc, 0x00, 0x12, 0xc0, + 0xdc, 0x00, 0x14, 0x40, + 0x40, 0x00, 0x14, 0x40, 0x40, 0x00, 0x0c, 0x80, 0xa2, 0x00, 0x0c, 0xc0, + 0xd0, 0x00, 0x0c, 0xc0, + 0xd0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x03, + 0x00, 0x00, 0x1c, 0x0c, + 0xa1, 0x00, 0x00, 0x02, 0xec, 0x00, 0x05, 0x00, 0xa1, 0x00, 0x07, 0x00, + 0xa6, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x13, 0x8c, 0xa4, 0x00, 0x15, 0x0c, + 0xa6, 0x00, 0x0a, 0x23, + 0xb0, 0x00, 0x7e, 0x00, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x10, 0x60, + 0xf2, 0x00, 0x08, 0x40, + 0xf0, 0x00, 0x10, 0x00, 0x20, 0x00, 0x10, 0xc8, 0x9c, 0x00, 0x18, 0xc0, + 0x9c, 0x00, 0xcc, 0xc3, + 0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x03, + 0x82, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xc4, 0xc3, 0xd8, 0x00, 0xc2, 0x63, 0xa1, 0x00, 0xca, 0x03, + 0x20, 0x00, 0x1c, 0xc0, + 0x9c, 0x00, 0x13, 0x00, 0xc2, 0x00, 0x15, 0x00, 0xc0, 0x00, 0xc3, 0x4f, + 0xa1, 0x00, 0x0d, 0xc0, + 0xd4, 0x00, 0x19, 0x8c, 0xa4, 0x00, 0x0c, 0xc0, 0xd4, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xc4, 0xc3, 0xdc, 0x00, 0x16, 0xc0, + 0x9c, 0x00, 0x1c, 0x0c, + 0xa1, 0x00, 0x12, 0x8c, 0xa4, 0x00, 0x14, 0x0c, 0xa6, 0x00, 0x16, 0x80, + 0x7f, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0xc2, 0x03, 0x50, 0x00, 0xc4, 0xc3, 0x98, 0x00, 0xca, 0x83, + 0xc2, 0x00, 0xca, 0x03, + 0x00, 0x00, 0xca, 0x03, 0x02, 0x00, 0x18, 0xc0, 0x98, 0x00, 0x16, 0x80, + 0xa4, 0x00, 0xcc, 0xc3, + 0xdc, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x18, 0x0c, 0xa6, 0x00, 0x16, 0x8c, + 0xa4, 0x00, 0x16, 0xc0, + 0x9c, 0x00, 0xcc, 0x13, 0x40, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0x10, 0xc0, + 0x9c, 0x00, 0x1c, 0xc0, + 0x9c, 0x00, 0x13, 0xc0, 0xdc, 0x00, 0x13, 0xc0, 0xdc, 0x00, 0xc3, 0x4f, + 0xa1, 0x00, 0x15, 0x40, + 0x40, 0x00, 0xc3, 0xef, 0xa4, 0x00, 0x14, 0x40, 0x40, 0x00, 0xcc, 0xc3, + 0x9c, 0x00, 0xca, 0x03, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x16, 0xc0, 0x9c, 0x00, 0xcc, 0x83, + 0x40, 0x00, 0x1c, 0x0c, + 0xa1, 0x00, 0x18, 0x8c, 0xa4, 0x00, 0x12, 0x0c, 0xa6, 0x00, 0x14, 0x0c, + 0xa6, 0x00, 0x18, 0x60, + 0xf2, 0x00, 0xcd, 0x03, 0x10, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x62, + 0xec, 0x00, 0xc3, 0x4f, + 0xa1, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x19, 0x8c, + 0xa4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xcb, 0x03, 0x00, 0x00, 0x01, 0x02, 0xec, 0x00, 0x7f, 0x02, + 0xe3, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x11, 0xc2, 0xb3, 0x00, 0x01, 0x42, 0xb3, 0x00, 0x18, 0x80, + 0xa4, 0x00, 0x10, 0x80, + 0xa4, 0x00, 0x12, 0x00, 0xa6, 0x00, 0x14, 0x80, 0xa4, 0x00, 0x06, 0x80, + 0xa4, 0x00, 0x00, 0x82, + 0xa4, 0x00, 0x1e, 0x82, 0xa4, 0x00, 0x1c, 0x82, 0xa4, 0x00, 0x1a, 0x82, + 0xa4, 0x00, 0x18, 0x82, + 0xa4, 0x00, 0x16, 0x82, 0xa4, 0x00, 0x14, 0x82, 0xa4, 0x00, 0x12, 0x82, + 0xa4, 0x00, 0x20, 0x82, + 0xa4, 0x00, 0x3e, 0x82, 0xa4, 0x00, 0x3c, 0x82, 0xa4, 0x00, 0x3a, 0x82, + 0xa4, 0x00, 0x38, 0x82, + 0xa4, 0x00, 0x36, 0x82, 0xa4, 0x00, 0x34, 0x82, 0xa4, 0x00, 0x32, 0x82, + 0xa4, 0x00, 0xc2, 0xc3, + 0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x1a, 0xc0, + 0x98, 0x00, 0xcc, 0x33, + 0xc2, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x83, 0xc1, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0xca, 0x73, + 0xc1, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc8, 0xc3, 0xa4, 0x00, 0x00, 0x4c, + 0xb8, 0x00, 0xc8, 0xc3, + 0xa4, 0x00, 0x00, 0x4c, 0xb8, 0x00, 0xc8, 0xc3, 0xa4, 0x00, 0x00, 0x4c, + 0xb8, 0x00, 0xc2, 0xc3, + 0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0x1a, 0xc0, 0x9c, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, + 0xa4, 0x00, 0x0e, 0x80, + 0xa4, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc3, 0xc3, 0xdc, 0x00, 0xc3, 0xc3, + 0xdc, 0x00, 0x7d, 0x03, + 0xe0, 0x00, 0x7b, 0x03, 0xe0, 0x00, 0xc3, 0xc3, 0xdc, 0x00, 0xc3, 0x8f, + 0xa1, 0x00, 0xc3, 0x8f, + 0xa1, 0x00, 0x06, 0x23, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc2, 0x8b, + 0xa1, 0x00, 0xc2, 0x43, 0xf0, 0x00, 0xc2, 0xc3, 0x90, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xcc, 0x23, 0x2e, 0x00, 0xcc, 0x23, 0x6e, 0x00, 0xc2, 0xe3, + 0x6e, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xc2, 0xe3, 0x6e, 0x00, 0xc2, 0xe3, 0x6e, 0x00, 0xc2, 0xe3, + 0x6e, 0x00, 0xc4, 0x43, + 0x55, 0x00, 0xc4, 0x43, 0x55, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x03, + 0xa1, 0x00, 0xc4, 0x43, + 0xf0, 0x00, 0xc4, 0xc3, 0x90, 0x00, 0x1c, 0x80, 0xa1, 0x00, 0x04, 0x80, + 0xa1, 0x00, 0xca, 0x03, + 0x02, 0x00, 0xe0, 0x01, 0x01, 0x00, 0x07, 0x00, 0xa6, 0x00, 0x09, 0x00, + 0xa2, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x17, 0x80, 0xa4, 0x00, 0xc1, 0x01, + 0xa6, 0x00, 0x54, 0x63, + 0xf2, 0x00, 0x6c, 0xc1, 0x9c, 0x00, 0x6e, 0xc1, 0xdc, 0x00, 0x72, 0xc1, + 0x9c, 0x00, 0x74, 0xc1, + 0xdc, 0x00, 0x54, 0xc3, 0x9c, 0x00, 0x58, 0xc1, 0xd8, 0x00, 0x6e, 0x81, + 0xa4, 0x00, 0x70, 0x81, + 0xa4, 0x00, 0x74, 0x81, 0xa4, 0x00, 0x76, 0x81, 0xa4, 0x00, 0x58, 0x81, + 0xa4, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0xc5, 0x0d, 0xa6, 0x00, 0xf7, 0x0f, 0xa6, 0x00, 0x01, 0xcc, + 0xf5, 0x00, 0x01, 0x0e, + 0xef, 0x00, 0xc3, 0xe3, 0xa4, 0x00, 0xc5, 0x89, 0xa4, 0x00, 0x01, 0xc8, + 0xf5, 0x00, 0x01, 0x0a, + 0xef, 0x00, 0xff, 0x03, 0xe1, 0x00, 0xf7, 0x03, 0xe1, 0x00, 0xef, 0x03, + 0xe1, 0x00, 0x67, 0x4e, + 0xe8, 0x00, 0xc7, 0x4e, 0xe8, 0x00, 0xd5, 0x4e, 0xe8, 0x00, 0xe7, 0x03, + 0xe1, 0x00, 0xdf, 0x03, + 0xe1, 0x00, 0x01, 0x02, 0xec, 0x00, 0x31, 0x6c, 0xe8, 0x00, 0x59, 0x6c, + 0xe8, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xcc, 0x53, 0x4e, 0x00, 0xcc, 0x83, + 0xc9, 0x00, 0xca, 0x03, + 0x81, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xc2, 0x81, 0xa4, 0x00, 0xcc, 0x23, + 0x47, 0x00, 0xcc, 0xa3, + 0xcc, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0xca, 0x03, + 0x81, 0x00, 0x56, 0xc1, + 0x9c, 0x00, 0xcc, 0x23, 0x4d, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xcc, 0x03, + 0xcf, 0x00, 0xca, 0x03, + 0x82, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xcc, 0x93, + 0x46, 0x00, 0xcc, 0x83, + 0xc7, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0xca, 0x03, + 0x82, 0x00, 0x56, 0xc1, + 0x9c, 0x00, 0xcc, 0xc3, 0x53, 0x00, 0xcc, 0x83, 0xc6, 0x00, 0xc2, 0xe3, + 0xa4, 0x00, 0xca, 0x83, + 0x80, 0x00, 0xc2, 0x8d, 0xa4, 0x00, 0x56, 0xc1, 0x9c, 0x00, 0xcc, 0xe3, + 0x49, 0x00, 0xcc, 0x43, + 0xc3, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0xca, 0x83, 0x80, 0x00, 0xc2, 0x8d, + 0xa4, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0xca, 0x83, 0x80, 0x00, 0xc2, 0xe3, 0xa4, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc2, 0x8d, + 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xf7, 0x83, 0xa4, 0x00, 0xff, 0x83, + 0xe0, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0xc5, 0x89, 0xa4, 0x00, 0xc5, 0x0d, + 0xa6, 0x00, 0xca, 0x03, + 0x81, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0xc5, 0x81, 0xa4, 0x00, 0x56, 0xc3, + 0x9c, 0x00, 0xca, 0x83, + 0x81, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xdf, 0x81, 0xa4, 0x00, 0xc5, 0x81, 0xa4, 0x00, 0xf7, 0x83, + 0xe7, 0x00, 0xef, 0x83, + 0xe7, 0x00, 0xdf, 0x83, 0xe7, 0x00, 0x2b, 0x4f, 0xe8, 0x00, 0x4d, 0x4f, + 0xe8, 0x00, 0x8b, 0x4f, + 0xe8, 0x00, 0x76, 0xc1, 0x9c, 0x00, 0xcc, 0x73, 0x40, 0x00, 0xcc, 0x03, + 0xc8, 0x00, 0x76, 0xc1, + 0x9c, 0x00, 0xcc, 0x63, 0x40, 0x00, 0xcc, 0x13, 0xc4, 0x00, 0x56, 0xc3, + 0x9c, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc2, 0x83, 0xa5, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xcc, 0x03, + 0xc6, 0x00, 0xc2, 0x83, + 0xa5, 0x00, 0xc4, 0x83, 0xa1, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xcc, 0x03, + 0xc6, 0x00, 0xcd, 0x03, + 0x00, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0x2b, 0x4f, 0xe8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xc5, 0x89, 0xa4, 0x00, 0x01, 0xc8, + 0xf5, 0x00, 0x01, 0x0a, + 0xef, 0x00, 0xc5, 0x63, 0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x4d, 0x4f, + 0xe8, 0x00, 0x8b, 0x4b, 0xe8, 0x00, 0xcd, 0xb3, 0x3f, 0x00, 0xcb, 0xd3, + 0x00, 0x00, 0xca, 0x83, + 0xcc, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xcb, 0xf3, 0x00, 0x00, 0xef, 0x83, + 0xe0, 0x00, 0x65, 0x8d, + 0xa4, 0x00, 0xca, 0x03, 0xc0, 0x00, 0x64, 0x8d, 0xa4, 0x00, 0xde, 0x83, + 0xe0, 0x00, 0x64, 0xc1, + 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x65, 0x8d, + 0xa4, 0x00, 0x67, 0x8d, + 0xa4, 0x00, 0xc1, 0x43, 0xe8, 0x00, 0x66, 0x89, 0xa4, 0x00, 0xca, 0xd3, + 0x07, 0x00, 0xca, 0x03, + 0xc2, 0x00, 0xca, 0xd3, 0x07, 0x00, 0xca, 0x63, 0xc9, 0x00, 0xf7, 0x83, + 0xe0, 0x00, 0xcb, 0xe3, + 0x03, 0x00, 0xef, 0x83, 0xe0, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0xca, 0x03, + 0xc9, 0x00, 0x64, 0x8d, + 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xde, 0x83, 0xe0, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0x65, 0x6d, + 0x06, 0x00, 0x65, 0x6d, + 0xc6, 0x00, 0x65, 0x2d, 0x02, 0x00, 0x65, 0xed, 0xc4, 0x00, 0xee, 0x83, + 0xe0, 0x00, 0xca, 0xb3, + 0x00, 0x00, 0xca, 0xf3, 0xc7, 0x00, 0xc2, 0xc1, 0x9c, 0x00, 0xcc, 0xc3, + 0xdc, 0x00, 0x66, 0x81, + 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x67, 0x8d, + 0xa4, 0x00, 0xc1, 0x43, + 0xe8, 0x00, 0xc2, 0x81, 0xa4, 0x00, 0xca, 0x93, 0x01, 0x00, 0xca, 0x03, + 0xc0, 0x00, 0xca, 0xb3, + 0x00, 0x00, 0xca, 0xc3, 0xc7, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xcb, 0xc3, + 0x00, 0x00, 0xef, 0x83, + 0xe0, 0x00, 0x65, 0x8d, 0xa4, 0x00, 0xca, 0x03, 0xc8, 0x00, 0x64, 0x8d, + 0xa4, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xde, 0x83, 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x65, 0x8d, + 0xa4, 0x00, 0x64, 0xa1, 0x0a, 0x00, 0x64, 0xb1, 0xca, 0x00, 0x64, 0xc1, + 0x9c, 0x00, 0xf6, 0x83, + 0xe0, 0x00, 0xc2, 0xc1, 0x9c, 0x00, 0xca, 0xc3, 0xd8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x66, 0x81, + 0xa4, 0x00, 0x66, 0x89, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc2, 0x81, + 0xa4, 0x00, 0x56, 0xc3, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, + 0xa1, 0x00, 0xc2, 0xc3, + 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0x83, 0xa1, 0x00, 0x54, 0x93, + 0x11, 0x00, 0x54, 0x03, + 0xc4, 0x00, 0xc2, 0x63, 0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xf5, 0x4b, + 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x51, 0x01, 0xa2, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x57, 0x01, 0xa2, 0x00, 0x57, 0x41, 0xad, 0x00, 0x66, 0xc1, + 0x9c, 0x00, 0x70, 0xc1, + 0xd8, 0x00, 0x66, 0xc1, 0xdc, 0x00, 0x70, 0xc1, 0xd8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc2, 0x83, + 0xa2, 0x00, 0xc2, 0xc3, 0x9c, 0x00, 0xc2, 0xc3, 0xdc, 0x00, 0xf6, 0x83, + 0xe0, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x54, 0x93, 0x11, 0x00, 0x54, 0x03, + 0xc4, 0x00, 0xc2, 0x03, + 0xa2, 0x00, 0xc2, 0x5b, 0x78, 0x00, 0xc2, 0x6f, 0x70, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x51, 0x01, + 0xa2, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x57, 0x01, + 0xa2, 0x00, 0x57, 0x41, + 0xad, 0x00, 0xca, 0x43, 0x81, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x5a, 0x81, + 0xa4, 0x00, 0x52, 0x01, + 0xa6, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x81, 0xa4, 0x00, 0x5c, 0x81, + 0xa4, 0x00, 0x62, 0x81, + 0xa4, 0x00, 0x54, 0x81, 0xa4, 0x00, 0xca, 0x03, 0x82, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc5, 0x81, + 0xa4, 0x00, 0x70, 0xc1, 0x9c, 0x00, 0xca, 0x03, 0x82, 0x00, 0xc2, 0xe1, + 0x9c, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x93, 0x6c, 0xe8, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xc4, 0x81, + 0xa4, 0x00, 0x76, 0xc1, 0x9c, 0x00, 0xcc, 0x63, 0x40, 0x00, 0xcc, 0x03, + 0xce, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xca, 0x33, + 0x00, 0x00, 0xca, 0x03, + 0xc2, 0x00, 0xc2, 0xc3, 0xa5, 0x00, 0xc2, 0xc3, 0xd8, 0x00, 0xc4, 0x8d, + 0xa4, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, 0x10, 0x00, 0xcd, 0x03, + 0x00, 0x00, 0xc3, 0xc3, + 0xa4, 0x00, 0xdf, 0x03, 0xe1, 0x00, 0xc5, 0x8d, 0xa4, 0x00, 0x39, 0x61, + 0xe8, 0x00, 0xf6, 0x83, + 0xa4, 0x00, 0xf6, 0x8b, 0xa4, 0x00, 0xc2, 0x83, 0xa1, 0x00, 0xc2, 0x63, + 0xf2, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xf5, 0x6c, 0xe8, 0x00, 0x76, 0xc1, + 0x9c, 0x00, 0xcc, 0x63, + 0x40, 0x00, 0xcc, 0x03, 0xce, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x70, 0xc1, + 0x9c, 0x00, 0x70, 0xc1, + 0xdc, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, + 0xa5, 0x00, 0xc4, 0x89, + 0xa4, 0x00, 0xc2, 0xc3, 0x98, 0x00, 0xca, 0x33, 0x40, 0x00, 0xca, 0x03, + 0xc2, 0x00, 0xc6, 0x83, + 0xa2, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xcc, 0x03, 0x10, 0x00, 0xcc, 0xc3, + 0x9c, 0x00, 0xc7, 0xc3, + 0x9c, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xdf, 0x03, 0xe1, 0x00, 0xc5, 0x8d, + 0xa4, 0x00, 0xf6, 0x83, + 0xa4, 0x00, 0xf6, 0x8b, 0xa4, 0x00, 0xc6, 0xc3, 0xdc, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc7, 0x83, + 0xa2, 0x00, 0xf7, 0x83, 0xe0, 0x00, 0xdf, 0x83, 0xe0, 0x00, 0xef, 0x83, + 0xe0, 0x00, 0xc7, 0x8f, + 0x07, 0x00, 0xc7, 0x8f, 0x02, 0x00, 0xc6, 0xcf, 0x9c, 0x00, 0xc6, 0x0f, + 0x52, 0x00, 0xcc, 0xc3, + 0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x39, 0x61, + 0xe8, 0x00, 0xc4, 0x23, 0xa1, 0x00, 0xc4, 0x0f, 0xa1, 0x00, 0x76, 0xc1, + 0x9c, 0x00, 0xcc, 0x63, + 0x40, 0x00, 0xcc, 0x03, 0xce, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, + 0xa5, 0x00, 0xc4, 0x89, + 0xa4, 0x00, 0xc2, 0xc3, 0x98, 0x00, 0xca, 0x33, 0x40, 0x00, 0xca, 0x03, + 0xc2, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xcc, 0x03, 0x00, 0x00, 0xcc, 0x03, 0x10, 0x00, 0xcc, 0xc3, + 0x9c, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xdf, 0x03, 0xe1, 0x00, 0xc5, 0x8d, + 0xa4, 0x00, 0xf6, 0x83, + 0xa4, 0x00, 0xf6, 0x8b, 0xa4, 0x00, 0xf6, 0x83, 0xe0, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x70, 0xc1, + 0x9c, 0x00, 0x70, 0xcd, 0xdc, 0x00, 0x70, 0xcd, 0xdc, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0x64, 0xc1, 0xd8, 0x00, 0x62, 0xc1, + 0xdc, 0x00, 0x20, 0xc0, + 0xf0, 0x00, 0xc2, 0xe1, 0x9c, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x83, 0x69, + 0xe8, 0x00, 0x62, 0x81, 0xa4, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc2, 0x83, + 0xa1, 0x00, 0xc2, 0x63, + 0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x6f, 0x6d, + 0xe8, 0x00, 0xf7, 0x83, + 0xe0, 0x00, 0xef, 0x83, 0xe0, 0x00, 0xdf, 0x83, 0xe0, 0x00, 0x63, 0xbd, + 0x02, 0x00, 0x63, 0x5d, + 0x00, 0x00, 0x63, 0x6d, 0x06, 0x00, 0x00, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x83, 0x61, 0xe8, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xf6, 0x83, + 0xe0, 0x00, 0x62, 0xc1, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0x63, 0xbd, + 0x0a, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc4, 0x63, 0xf2, 0x00, 0x5a, 0xc1, + 0x9c, 0x00, 0x52, 0x41, + 0x40, 0x00, 0x5a, 0xc1, 0xd4, 0x00, 0x52, 0xc1, 0xd6, 0x00, 0xc4, 0xcb, + 0xd0, 0x00, 0xc4, 0xcf, + 0xd4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xcc, 0x13, + 0xc0, 0x00, 0x5c, 0xc1, + 0x9c, 0x00, 0xcc, 0x43, 0x80, 0x00, 0x5a, 0x81, 0xa4, 0x00, 0x52, 0x01, + 0xa6, 0x00, 0x5b, 0xc1, + 0xdc, 0x00, 0xc3, 0xc3, 0xa4, 0x00, 0xc3, 0xef, 0xa4, 0x00, 0x55, 0xc1, + 0x9c, 0x00, 0x5f, 0xc1, + 0xdc, 0x00, 0xcd, 0xc3, 0x9c, 0x00, 0xc3, 0xcf, 0xa4, 0x00, 0xbf, 0x69, + 0xe8, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x54, 0x81, 0xa4, 0x00, 0x5c, 0x81, + 0xa4, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x81, + 0xa4, 0x00, 0x5a, 0xc1, + 0x98, 0x00, 0xca, 0x03, 0x40, 0x00, 0xca, 0x43, 0xc6, 0x00, 0x5c, 0x61, + 0xf2, 0x00, 0x54, 0xc1, + 0x9c, 0x00, 0x5e, 0x41, 0x40, 0x00, 0x60, 0x81, 0xc0, 0x00, 0xc5, 0x03, + 0x41, 0x00, 0xc3, 0xcf, + 0xa4, 0x00, 0xe7, 0x69, 0xe8, 0x00, 0xc4, 0x03, 0x70, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x54, 0x81, + 0xa4, 0x00, 0x5c, 0x81, 0xa4, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x81, + 0xa4, 0x00, 0x5c, 0x61, + 0xf2, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x11, 0x6e, + 0xe8, 0x00, 0x5e, 0xc1, + 0x9c, 0x00, 0x60, 0x41, 0x40, 0x00, 0xc4, 0x43, 0x40, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0x03, + 0x10, 0x00, 0x50, 0xc1, 0xdc, 0x00, 0x54, 0xc1, 0xdc, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x5e, 0x81, + 0xa4, 0x00, 0x60, 0x01, 0xa6, 0x00, 0x5e, 0xc1, 0xdc, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x57, 0x01, + 0xa1, 0x00, 0x5e, 0xc1, 0x9c, 0x00, 0x60, 0x41, 0x40, 0x00, 0xc4, 0x43, + 0x40, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0x03, 0x01, 0x00, 0x50, 0xc1, 0xdc, 0x00, 0x54, 0xc1, + 0xdc, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x5e, 0x81, 0xa4, 0x00, 0x60, 0x01, 0xa6, 0x00, 0x5e, 0x41, + 0x40, 0x00, 0x60, 0x81, + 0xc0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x57, 0x81, 0xa4, 0x00, 0x1b, 0x20, + 0xb8, 0x00, 0x01, 0x00, + 0xfa, 0x00, 0x03, 0x20, 0xb8, 0x00, 0x01, 0x00, 0xfa, 0x00, 0x0f, 0xa0, + 0xb2, 0x00, 0xcb, 0x43, + 0x00, 0x00, 0xcb, 0x03, 0xc8, 0x00, 0x51, 0x20, 0xb8, 0x00, 0x01, 0x11, + 0xf8, 0x00, 0x01, 0x00, + 0xfa, 0x00, 0xcb, 0xc3, 0x03, 0x00, 0xcb, 0x03, 0xc8, 0x00, 0x19, 0x03, + 0xa2, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x0b, 0x20, 0xe8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x8d, 0x03, + 0xa2, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x01, 0xc1, 0xbc, 0x00, 0x7d, 0x83, 0xe4, 0x00, 0x7b, 0x83, + 0xe4, 0x00, 0x79, 0x83, + 0xe4, 0x00, 0x5f, 0x4c, 0xe8, 0x00, 0x7d, 0x4c, 0xe8, 0x00, 0x77, 0x83, + 0xe4, 0x00, 0x75, 0x83, + 0xe4, 0x00, 0xb3, 0x4c, 0xe8, 0x00, 0xb1, 0x4c, 0xe8, 0x00, 0x73, 0x83, + 0xe4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x97, 0x4d, 0xe8, 0x00, 0xe9, 0x4d, 0xe8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x05, 0x0e, + 0xec, 0x00, 0x0d, 0x83, 0xb4, 0x00, 0x7e, 0x02, 0xe2, 0x00, 0x7e, 0x80, + 0xe7, 0x00, 0x70, 0xc2, + 0x9c, 0x00, 0xf0, 0xc2, 0x9c, 0x00, 0x0e, 0xc3, 0x9c, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x28, 0xc3, + 0x9c, 0x00, 0x28, 0xc3, 0xdc, 0x00, 0x32, 0x83, 0xa4, 0x00, 0x34, 0x83, + 0xa4, 0x00, 0xde, 0x80, + 0xa1, 0x00, 0xee, 0x83, 0xe7, 0x00, 0x0f, 0xc3, 0x9c, 0x00, 0x7f, 0x83, + 0xa1, 0x00, 0x61, 0x4e, + 0xeb, 0x00, 0x0e, 0xcf, 0x9c, 0x00, 0xcc, 0x0f, 0x48, 0x00, 0xbe, 0x03, + 0x1e, 0x00, 0xc2, 0x03, + 0xa3, 0x00, 0xc2, 0xf3, 0x41, 0x00, 0x7e, 0x23, 0x1d, 0x00, 0x7e, 0x23, + 0x5d, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0xbf, 0x83, + 0xa4, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0xeb, 0x83, 0xa2, 0x00, 0x03, 0x02, + 0xec, 0x00, 0x02, 0x02, + 0xec, 0x00, 0x70, 0x23, 0x00, 0x00, 0xfc, 0x63, 0xf2, 0x00, 0x7e, 0x80, + 0xe7, 0x00, 0xca, 0x83, + 0x80, 0x00, 0x00, 0x82, 0xec, 0x00, 0x00, 0xe2, 0xec, 0x00, 0xc2, 0xe3, + 0xa3, 0x00, 0xcd, 0x03, + 0x80, 0x00, 0x01, 0x02, 0xec, 0x00, 0xcd, 0x80, 0xa4, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x01, 0x62, 0xec, 0x00, 0xcd, 0x9c, 0xa4, 0x00, 0x54, 0x93, + 0x11, 0x00, 0x54, 0x03, + 0xc4, 0x00, 0x02, 0x02, 0xec, 0x00, 0x56, 0x63, 0xf2, 0x00, 0x7e, 0x81, + 0xe7, 0x00, 0xcc, 0x03, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x57, 0x09, 0xa2, 0x00, 0x57, 0x49, + 0xad, 0x00, 0x55, 0x93, + 0x11, 0x00, 0x55, 0x03, 0xc4, 0x00, 0x01, 0xc8, 0xf5, 0x00, 0x01, 0x0a, + 0xef, 0x00, 0xc5, 0x89, + 0xa4, 0x00, 0xf7, 0x8b, 0xa4, 0x00, 0x91, 0x23, 0xe1, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc5, 0x61, + 0xf2, 0x00, 0x57, 0x0d, 0xa2, 0x00, 0x57, 0x4d, 0xad, 0x00, 0x03, 0xcc, + 0xf5, 0x00, 0x27, 0x4e, + 0xe8, 0x00, 0x01, 0xc8, 0xf5, 0x00, 0x01, 0x0a, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x00, 0xc2, 0xec, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0x7e, 0xc1, + 0xe7, 0x00, 0x08, 0x00, + 0xb0, 0x00, 0x7e, 0x42, 0xe0, 0x00, 0x01, 0xc3, 0x9c, 0x00, 0xcd, 0x03, + 0x48, 0x00, 0x61, 0x42, + 0xeb, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x4e, 0x03, + 0x1e, 0x00, 0x4e, 0x03, + 0xa3, 0x00, 0x4e, 0x03, 0x42, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x63, + 0xf2, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x4e, 0x83, + 0xa4, 0x00, 0x4e, 0x8f, + 0xa4, 0x00, 0x66, 0x03, 0x38, 0x00, 0x08, 0x07, 0x38, 0x00, 0x00, 0xc7, + 0xd8, 0x00, 0x0c, 0xd7, + 0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x43, 0x40, 0x00, 0xcc, 0x03, + 0x43, 0x00, 0xcc, 0x83, + 0x67, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x83, 0x3f, 0x00, 0xcc, 0x03, + 0xc4, 0x00, 0xc6, 0x83, + 0xa4, 0x00, 0xc4, 0x83, 0xa4, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xcc, 0x8f, + 0x58, 0x00, 0xc4, 0xcf, + 0xd8, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0xc3, 0x98, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xcd, 0x83, + 0x40, 0x00, 0x61, 0x42, 0xeb, 0x00, 0x79, 0x83, 0xa4, 0x00, 0x79, 0xc3, + 0xd8, 0x00, 0x2e, 0x63, + 0xf2, 0x00, 0xc8, 0x03, 0xa3, 0x00, 0x78, 0xc3, 0x9c, 0x00, 0xcc, 0xcf, + 0xdc, 0x00, 0x00, 0xe7, + 0x9c, 0x00, 0x0c, 0xf7, 0x9c, 0x00, 0xcd, 0x43, 0x40, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x21, 0x4d, + 0xe8, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc3, 0x47, + 0xaa, 0x00, 0xc3, 0xd7, + 0xaa, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc8, 0x4f, + 0xa4, 0x00, 0x02, 0xe7, + 0x9c, 0x00, 0x60, 0xf7, 0x9c, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcd, 0x43, + 0x28, 0x00, 0x03, 0xc7, + 0xd8, 0x00, 0x4d, 0x4d, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0xdf, 0x80, + 0xa1, 0x00, 0x60, 0xd7, + 0xd8, 0x00, 0x60, 0xf3, 0x37, 0x00, 0x02, 0xf7, 0x37, 0x00, 0xcc, 0x03, + 0x78, 0x00, 0xee, 0x83, + 0xe7, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x69, 0x41, + 0xe8, 0x00, 0xc6, 0x03, 0xa0, 0x00, 0xc4, 0x83, 0xa2, 0x00, 0xcd, 0x43, + 0x28, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x02, 0xc7, 0xdc, 0x00, 0x60, 0xd7, 0xdc, 0x00, 0x60, 0x13, + 0x08, 0x00, 0x02, 0x17, + 0x08, 0x00, 0xcc, 0x03, 0x78, 0x00, 0xee, 0x83, 0xe7, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x69, 0x41, 0xe8, 0x00, 0xc4, 0x03, + 0xa0, 0x00, 0xc6, 0x83, + 0xa2, 0x00, 0xc4, 0x43, 0xf0, 0x00, 0xc8, 0xc3, 0x90, 0x00, 0xc6, 0x43, + 0xf0, 0x00, 0xc8, 0xc3, + 0x90, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x04, + 0x1e, 0x00, 0xc4, 0x83, + 0xa4, 0x00, 0xc4, 0xf3, 0x41, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0x22, 0x00, + 0x1e, 0x00, 0x20, 0x04, + 0x1e, 0x00, 0xc6, 0xf3, 0x41, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0x94, + 0xa4, 0x00, 0x00, 0x84, + 0xa4, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x23, 0x94, + 0xa4, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x03, 0x02, 0xec, 0x00, 0x21, 0x84, + 0xa4, 0x00, 0x7e, 0x80, + 0xe7, 0x00, 0x7e, 0x82, 0xe5, 0x00, 0x2e, 0xc3, 0x9c, 0x00, 0x2e, 0x23, + 0x00, 0x00, 0x52, 0x23, + 0x80, 0x00, 0x26, 0x92, 0x11, 0x00, 0xa6, 0x92, 0x11, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xdc, 0x80, + 0xa3, 0x00, 0xd0, 0x80, 0xa3, 0x00, 0xc6, 0x80, 0xa4, 0x00, 0x36, 0x83, + 0xa2, 0x00, 0x38, 0x83, + 0xa2, 0x00, 0x1e, 0x13, 0x00, 0x00, 0xde, 0xc3, 0x9c, 0x00, 0x2a, 0xc3, + 0x9c, 0x00, 0x1e, 0xc3, + 0x9c, 0x00, 0xfc, 0xc3, 0x9c, 0x00, 0x80, 0xc3, 0x9c, 0x00, 0xd6, 0x00, + 0xa3, 0x00, 0xd4, 0x80, + 0xa4, 0x00, 0xd2, 0x80, 0xa3, 0x00, 0xda, 0x80, 0xa3, 0x00, 0xd8, 0x80, + 0xa3, 0x00, 0xde, 0x80, + 0xa1, 0x00, 0xee, 0x83, 0xe7, 0x00, 0x81, 0xc3, 0x9c, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x61, 0x4e, + 0xeb, 0x00, 0x80, 0xcf, 0x9c, 0x00, 0xcc, 0x0f, 0x48, 0x00, 0x9c, 0x03, + 0x1e, 0x00, 0xc2, 0x03, + 0xa3, 0x00, 0xc2, 0xf3, 0x41, 0x00, 0xfd, 0x03, 0x84, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x03, 0x02, + 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x9d, 0x83, + 0xa4, 0x00, 0xcb, 0x80, + 0xa4, 0x00, 0x53, 0xc3, 0x9c, 0x00, 0x53, 0xc3, 0xdc, 0x00, 0x7e, 0x81, + 0xe7, 0x00, 0x52, 0x83, + 0x00, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x43, + 0x2f, 0x00, 0xde, 0x81, + 0xa1, 0x00, 0x7e, 0x83, 0xa1, 0x00, 0xc8, 0x03, 0xa6, 0x00, 0x7f, 0xc3, + 0xdc, 0x00, 0x7f, 0xc3, + 0xdc, 0x00, 0x61, 0x42, 0xeb, 0x00, 0x7f, 0xc3, 0xdc, 0x00, 0x7f, 0xc3, + 0xdc, 0x00, 0x0f, 0x01, + 0xa3, 0x00, 0xcd, 0x03, 0x30, 0x00, 0xcd, 0x03, 0x38, 0x00, 0xcd, 0xc3, + 0x98, 0x00, 0xc9, 0x03, + 0x01, 0x00, 0x9f, 0x83, 0xe7, 0x00, 0xdf, 0x83, 0xe7, 0x00, 0x11, 0x81, + 0xa4, 0x00, 0x11, 0x8d, + 0xa4, 0x00, 0x11, 0x8d, 0xa4, 0x00, 0xcd, 0x83, 0x3f, 0x00, 0xcd, 0x03, + 0x3f, 0x00, 0xcd, 0x03, + 0x3e, 0x00, 0xdf, 0x01, 0xa1, 0x00, 0xfd, 0x83, 0xe7, 0x00, 0xfb, 0x83, + 0xe7, 0x00, 0x41, 0x81, + 0xa4, 0x00, 0x41, 0x8d, 0xa4, 0x00, 0x41, 0x8d, 0xa4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0xc0, 0xf5, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x00, 0xc7, 0xdc, 0x00, 0x0c, 0xd7, 0xdc, 0x00, 0xcc, 0xc3, + 0x5f, 0x00, 0x00, 0xc7, + 0xd8, 0x00, 0x0d, 0xd7, 0xd8, 0x00, 0xcd, 0x43, 0x60, 0x00, 0xef, 0x83, + 0xe7, 0x00, 0xdf, 0x83, + 0xe7, 0x00, 0xc3, 0x03, 0xa4, 0x00, 0xc3, 0xcf, 0xd8, 0x00, 0xc3, 0x0f, + 0x70, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc5, 0x83, 0xa2, 0x00, 0x01, 0x02, 0xee, 0x00, 0xc3, 0xc3, + 0xa4, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xcc, 0x03, 0x4c, 0x00, 0x00, 0x02, 0xec, 0x00, 0xcc, 0x03, + 0x2a, 0x00, 0xcc, 0x53, + 0x3f, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc4, 0x03, 0xa4, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xc4, 0x8b, + 0xa4, 0x00, 0xc6, 0x83, 0xa4, 0x00, 0xc4, 0xc3, 0x9c, 0x00, 0xcc, 0x03, + 0x46, 0x00, 0xc6, 0x8f, + 0xa0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0xc6, 0x03, + 0x02, 0x00, 0xc4, 0x83, + 0xa2, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc4, 0x8b, 0xa2, 0x00, 0xc4, 0xc3, + 0x9c, 0x00, 0xcc, 0x03, + 0x4c, 0x00, 0xc6, 0x0f, 0xa4, 0x00, 0xc6, 0x03, 0x08, 0x00, 0xcc, 0x33, + 0xc0, 0x00, 0x00, 0x02, + 0xec, 0x00, 0xc4, 0x83, 0xa1, 0x00, 0xc2, 0xc3, 0xa4, 0x00, 0xc4, 0x0b, + 0xa2, 0x00, 0xc4, 0xc3, + 0x9c, 0x00, 0xcc, 0x03, 0x4c, 0x00, 0xc6, 0x0f, 0xa4, 0x00, 0xc4, 0x43, + 0xf0, 0x00, 0xc6, 0xc3, + 0x90, 0x00, 0xc6, 0x03, 0x74, 0x00, 0xc4, 0x83, 0xa1, 0x00, 0xc2, 0xc3, + 0xa4, 0x00, 0xc4, 0x0b, + 0xa2, 0x00, 0xc4, 0x43, 0xf0, 0x00, 0xc2, 0x83, 0xa4, 0x00, 0xc2, 0x0b, + 0xa2, 0x00, 0xc6, 0x33, + 0x1a, 0x00, 0xc6, 0x3b, 0x5a, 0x00, 0xc2, 0xe3, 0x56, 0x00, 0xc2, 0xe3, + 0x56, 0x00, 0xc2, 0xc3, + 0xd0, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xee, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x67, 0x60, 0xeb, 0x00, 0x01, 0x83, + 0xaa, 0x00, 0x01, 0xc3, + 0x9c, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x80, 0xe8, 0x00, 0x0b, 0x83, + 0xb7, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x4f, 0x60, 0xeb, 0x00, 0x01, 0xc1, + 0xf7, 0x00, 0x01, 0xc0, + 0xf7, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0xe2, 0xf7, 0x00, 0x01, 0xe2, + 0xf7, 0x00, 0xff, 0xc3, + 0xf4, 0x00, 0x01, 0xa2, 0xec, 0x00, 0xef, 0x83, 0xb7, 0x00, 0x01, 0xa0, + 0xe7, 0x00, 0x7f, 0x81, + 0xe7, 0x00, 0x7f, 0x82, 0xe7, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x80, + 0xf3, 0x00, 0x01, 0xe3, + 0xf2, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0xc0, 0xf1, 0x00, 0x01, 0xc0, + 0xf5, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x3d, 0xc0, 0xf1, 0x00, 0x0f, 0x00, 0xb7, 0x00, 0x9f, 0x20, + 0xe7, 0x00, 0x6f, 0x60, + 0xe9, 0x00, 0x03, 0x00, 0xa1, 0x00, 0x03, 0x80, 0xa1, 0x00, 0x3d, 0xc0, + 0xf1, 0x00, 0x6d, 0x6c, + 0xe8, 0x00, 0x01, 0x0a, 0xee, 0x00, 0x81, 0x60, 0xbf, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x7e, 0x61, 0xe8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0xec, 0x83, 0xb7, 0x00, 0x7e, 0x80, 0xe7, 0x00, 0xc8, 0x62, + 0xeb, 0x00, 0x46, 0x1d, + 0xf8, 0x00, 0x00, 0x22, 0xec, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x02, 0xec, 0x00, 0x08, 0x00, 0xb0, 0x00, 0x00, 0xa2, + 0xed, 0x00, 0x00, 0x20, + 0xe0, 0x00, 0x00, 0x21, 0xe0, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x05, 0xa0, 0xa4, 0x00, 0x05, 0x20, 0xa2, 0x00, 0x05, 0xa0, + 0xa2, 0x00, 0x05, 0x20, + 0xa3, 0x00, 0x05, 0xa0, 0xa3, 0x00, 0x05, 0xa0, 0xa0, 0x00, 0x05, 0x20, + 0xa6, 0x00, 0x05, 0xa0, + 0xa5, 0x00, 0x05, 0x20, 0xa5, 0x00, 0x05, 0x20, 0xa4, 0x00, 0x05, 0x20, + 0xa0, 0x00, 0x05, 0xa0, + 0xa6, 0x00, 0x05, 0x20, 0xa7, 0x00, 0x05, 0xa0, 0xa7, 0x00, 0x05, 0xc0, + 0xa4, 0x00, 0x05, 0x40, + 0xa2, 0x00, 0x05, 0xc0, 0xa2, 0x00, 0x05, 0x40, 0xa3, 0x00, 0x05, 0xc0, + 0xa3, 0x00, 0x05, 0xc0, + 0xa0, 0x00, 0x05, 0xe0, 0xa4, 0x00, 0x05, 0x60, 0xa2, 0x00, 0x05, 0xe0, + 0xa2, 0x00, 0x05, 0x60, + 0xa3, 0x00, 0x05, 0xe0, 0xa3, 0x00, 0x05, 0xe0, 0xa0, 0x00, 0x05, 0x60, + 0xa6, 0x00, 0x05, 0xe0, + 0xa5, 0x00, 0x05, 0x60, 0xa5, 0x00, 0x05, 0x60, 0xa4, 0x00, 0x05, 0x60, + 0xa0, 0x00, 0x05, 0xe0, + 0xa6, 0x00, 0x05, 0x60, 0xa7, 0x00, 0x05, 0xe0, 0xa7, 0x00, 0x01, 0x02, + 0xee, 0x00, 0x01, 0xa2, + 0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x01, 0x82, 0xec, 0x00, 0x01, 0xe2, + 0xec, 0x00, 0x01, 0x62, + 0xec, 0x00, 0x01, 0x42, 0xec, 0x00, 0x01, 0x22, 0xec, 0x00, 0x01, 0xa2, + 0xe0, 0x00, 0x7f, 0xa2, + 0xe0, 0x00, 0x01, 0xa3, 0xe0, 0x00, 0x7f, 0xa3, 0xe0, 0x00, 0x19, 0xa3, + 0xe0, 0x00, 0x67, 0x83, + 0xe0, 0x00, 0x63, 0x83, 0xe0, 0x00, 0x01, 0xe2, 0xec, 0x00, 0x07, 0xe0, + 0x9c, 0x00, 0x07, 0x60, + 0xf0, 0x00, 0x07, 0x60, 0xf2, 0x00, 0x07, 0xe0, 0x90, 0x00, 0x81, 0x23, + 0xe0, 0x00, 0xff, 0x23, + 0xe0, 0x00, 0x2b, 0xa2, 0xe1, 0x00, 0x55, 0xa2, 0xe1, 0x00, 0x7f, 0x83, + 0xe1, 0x00, 0x01, 0x83, + 0xe1, 0x00, 0xd5, 0x03, 0xe0, 0x00, 0xab, 0x03, 0xe0, 0x00, 0x01, 0x02, + 0xee, 0x00, 0x40, 0xc0, + 0xf6, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x7e, 0x02, 0xe7, 0x00, 0x40, 0x02, + 0xed, 0x00, 0x00, 0x02, + 0xab, 0x00, 0x01, 0x42, 0xf3, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x80, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x80, + 0xaf, 0x00, 0x00, 0x02, + 0xef, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, + 0xef, 0x00, 0x00, 0x80, + 0xab, 0x00, 0x00, 0x80, 0xaf, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, + 0xef, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x80, 0xaf, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, + 0xef, 0x00, 0x00, 0x80, + 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0xec, 0x03, 0xb7, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x02, 0xef, 0x00, 0x00, 0x80, 0xa8, 0x00, 0x00, 0x80, + 0xad, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x8d, 0x23, 0xb0, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x80, + 0xaa, 0x00, 0x0f, 0xc0, 0xf1, 0x00, 0x49, 0x63, 0xeb, 0x00, 0x9b, 0x02, + 0xf8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xeb, 0x61, 0xe9, 0x00, 0x01, 0x40, 0xa9, 0x00, 0x03, 0x00, + 0xa5, 0x00, 0x01, 0x40, + 0xa8, 0x00, 0x03, 0xc0, 0xa8, 0x00, 0x01, 0x02, 0xef, 0x00, 0x02, 0x40, + 0xac, 0x00, 0x01, 0xc0, + 0xac, 0x00, 0xef, 0x83, 0xb7, 0x00, 0x09, 0x00, 0xb7, 0x00, 0x7f, 0x01, + 0xe7, 0x00, 0x7f, 0x80, + 0xe7, 0x00, 0x05, 0xc0, 0xf1, 0x00, 0x1d, 0x40, 0xf6, 0x00, 0x01, 0x03, + 0xe7, 0x00, 0x01, 0xa2, + 0xec, 0x00, 0xff, 0x03, 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x19, 0x62, + 0xe8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x13, 0x66, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x0b, 0x6a, + 0xe8, 0x00, 0x01, 0x41, 0xbf, 0x00, 0xff, 0x01, 0xec, 0x00, 0x0b, 0x62, + 0xe9, 0x00, 0x03, 0x21, + 0xbf, 0x00, 0xff, 0xc1, 0xf6, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xef, 0x83, 0xb7, 0x00, 0x09, 0x00, 0xb7, 0x00, 0x7f, 0x01, + 0xe7, 0x00, 0x7f, 0x80, + 0xe7, 0x00, 0x05, 0xc0, 0xf1, 0x00, 0x1d, 0x40, 0xf7, 0x00, 0x01, 0x03, + 0xe7, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x53, 0x62, + 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x45, 0x62, + 0xe8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xed, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x3b, 0x6a, 0xe8, 0x00, 0x01, 0x41, 0xbf, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x3b, 0x62, + 0xe9, 0x00, 0x03, 0x21, 0xbf, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0xed, 0x83, 0xb7, 0x00, 0x7f, 0x80, 0xe7, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xc9, 0x62, + 0xeb, 0x00, 0x01, 0x1d, 0xf8, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x01, 0x1d, + 0xf8, 0x00, 0xc9, 0x62, + 0xeb, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x60, 0x00, 0xc9, 0x62, + 0xeb, 0x00, 0x01, 0x1d, + 0xf8, 0x00, 0x1f, 0x00, 0x10, 0x00, 0x03, 0x00, 0xf8, 0x00, 0xc9, 0x62, + 0xeb, 0x00, 0x03, 0x00, + 0x10, 0x00, 0x01, 0x1d, 0xf8, 0x00, 0xc9, 0x62, 0xeb, 0x00, 0x47, 0x1d, + 0xf8, 0x00, 0x01, 0x22, + 0xec, 0x00, 0x7d, 0xc0, 0xf1, 0x00, 0x49, 0x63, 0xeb, 0x00, 0x9b, 0x02, + 0xf8, 0x00, 0x00, 0x02, + 0xec, 0x00, 0x07, 0x80, 0xa4, 0x00, 0x21, 0x00, 0xa5, 0x00, 0xc9, 0x62, + 0xeb, 0x00, 0x63, 0x1d, + 0xf8, 0x00, 0x07, 0x40, 0xf2, 0x00, 0x9b, 0x62, 0xe9, 0x00, 0xff, 0xc3, + 0x9c, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0xdf, 0x62, 0xe8, 0x00, 0xb7, 0xe2, + 0xf3, 0x00, 0xff, 0xff, + 0xff, 0x00, 0xb3, 0x62, 0xea, 0x00, 0xdf, 0x66, 0xe8, 0x00, 0xbf, 0xe2, + 0xf3, 0x00, 0x01, 0x00, + 0xf8, 0x00, 0xbb, 0x62, 0xea, 0x00, 0x01, 0x06, 0xef, 0x00, 0x55, 0x55, + 0xfd, 0x00, 0xab, 0xaa, + 0xfa, 0x00, 0x7e, 0x81, 0xe0, 0x00, 0x03, 0x40, 0xf3, 0x00, 0x01, 0xc1, + 0xb8, 0x00, 0x01, 0x80, + 0xe8, 0x00, 0xd5, 0x62, 0xe8, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xdf, 0x62, 0xe8, 0x00, 0xcb, 0xe2, 0xf3, 0x00, 0x01, 0x02, + 0xec, 0x00, 0xe3, 0x6a, + 0xe8, 0x00, 0xe5, 0x6e, 0xe8, 0x00, 0xe7, 0x66, 0xe8, 0x00, 0xe9, 0x76, + 0xe8, 0x00, 0xeb, 0x72, + 0xe8, 0x00, 0xed, 0x7a, 0xe8, 0x00, 0xef, 0x7e, 0xe8, 0x00, 0x01, 0x80, + 0xe8, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x01, 0xc2, 0xec, 0x00, 0x7d, 0xc0, 0xf1, 0x00, 0x8d, 0x23, + 0xb0, 0x00, 0x0f, 0x00, + 0xb7, 0x00, 0x7f, 0x00, 0xe0, 0x00, 0xff, 0x01, 0xe7, 0x00, 0x01, 0x80, + 0xaa, 0x00, 0x49, 0x63, + 0xeb, 0x00, 0x03, 0xc1, 0x9c, 0x00, 0x9b, 0x02, 0xf8, 0x00, 0x07, 0x63, + 0xe9, 0x00, 0x01, 0x95, + 0xa4, 0x00, 0x01, 0x05, 0xa5, 0x00, 0x1f, 0x23, 0xe7, 0x00, 0x81, 0x61, + 0xbf, 0x00, 0x7d, 0xc0, + 0xf1, 0x00, 0x07, 0x6f, 0xe8, 0x00, 0xfb, 0x6a, 0xea, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x00, 0xc2, 0xf7, 0x00, 0x0f, 0x01, 0xb7, 0x00, 0xff, 0x00, + 0xe7, 0x00, 0xff, 0xe3, + 0xf1, 0x00, 0x03, 0x40, 0xf2, 0x00, 0x03, 0x40, 0xf0, 0x00, 0x03, 0xc0, + 0x90, 0x00, 0x03, 0xc0, + 0xd3, 0x00, 0xff, 0xc3, 0xd4, 0x00, 0x03, 0xc0, 0xd6, 0x00, 0xff, 0x00, + 0xbf, 0x00, 0x01, 0x03, + 0xa6, 0x00, 0x01, 0x03, 0xa1, 0x00, 0x29, 0x63, 0xe9, 0x00, 0x01, 0x03, + 0xa6, 0x00, 0x01, 0x83, + 0xa1, 0x00, 0x23, 0x63, 0xea, 0x00, 0x01, 0x06, 0xef, 0x00, 0x01, 0xe0, + 0xf7, 0x00, 0x01, 0xc0, + 0xf7, 0x00, 0x00, 0xc0, 0x9c, 0x00, 0x00, 0xc0, 0xdc, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x05, 0xc0, 0x9c, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0x80, 0xa1, 0x00, 0x05, 0x80, + 0xa1, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x01, 0x83, 0xaa, 0x00, 0x01, 0x43, 0xf3, 0x00, 0x01, 0x80, + 0xe8, 0x00, 0x01, 0x80, + 0xeb, 0x00, 0x6b, 0x63, 0xe8, 0x00, 0x01, 0x02, 0xee, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x01, 0x02, + 0xec, 0x00, 0x0e, 0x00, 0xb0, 0x00, 0x80, 0x00, 0xe0, 0x00, 0x00, 0xc0, + 0xf7, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0xae, 0xa5, 0xfb, 0x00, 0x80, 0x71, 0xf8, 0x00, 0x30, 0x67, + 0xfc, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x02, 0xec, 0x00, 0x02, 0xc0, 0x9c, 0x00, 0x54, 0xe1, + 0xf0, 0x00, 0x02, 0xc0, + 0xd0, 0x00, 0x04, 0x40, 0xf0, 0x00, 0x06, 0xc0, 0x90, 0x00, 0x09, 0xc0, + 0x92, 0x00, 0x07, 0xc0, + 0x90, 0x00, 0x79, 0x63, 0xea, 0x00, 0x01, 0xe0, 0xf7, 0x00, 0x01, 0x00, + 0xb9, 0x00, 0x01, 0x02, + 0xef, 0x00, 0x01, 0x02, 0xec, 0x00, 0x01, 0x02, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x01, 0x02, 0xef, 0x00, 0x01, 0x83, 0xaa, 0x00, 0x01, 0x43, + 0xad, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x82, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x36, 0x0a, + 0x00, 0x02, 0x74, 0x36, + 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x02, 0x22, 0x4d, 0x19, 0x6f, 0x12, + 0x90, 0xb6, 0xf6, 0x7f, + 0xf0, 0xe4, 0xef, 0xa3, 0x53, 0xf0, 0xe7, 0xa9, 0xab, 0x53, 0x7f, 0xf7, + 0x12, 0x04, 0x03, 0x1b, + 0x00, 0x12, 0x12, 0x56, 0xad, 0x72, 0x02, 0x22, 0xc6, 0x00, 0x6f, 0x12, + 0x22, 0x38, 0x02, 0x22, + 0xdb, 0x3e, 0x7f, 0x78, 0xf6, 0xe4, 0xfd, 0xd8, 0x81, 0x75, 0x02, 0x43, + 0x40, 0x1a, 0x02, 0x22, + 0xf4, 0x37, 0x6f, 0x12, 0x22, 0x38, 0x02, 0x22, 0x45, 0x0e, 0x6f, 0x12, + 0x22, 0x38, 0x02, 0x22, + 0x1f, 0x69, 0x90, 0xe4, 0xae, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, 0xb0, 0x7f, + 0x10, 0x74, 0xa3, 0xf0, + 0xf0, 0xe4, 0x7f, 0x90, 0xf0, 0xd2, 0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xd4, + 0xf0, 0xa3, 0x02, 0x22, + 0xa2, 0x5e, 0x6f, 0x12, 0x22, 0x38, 0x02, 0x22, 0xeb, 0x62, 0x7e, 0x90, + 0xe0, 0xeb, 0x7a, 0x90, + 0xf0, 0xa8, 0x7e, 0x90, 0xe0, 0xe9, 0x7a, 0x90, 0xf0, 0xa9, 0xb4, 0xe0, + 0x11, 0x01, 0x7a, 0x90, + 0xe0, 0xa8, 0x05, 0xb4, 0x12, 0x05, 0xe2, 0x72, 0x08, 0x80, 0x72, 0x12, + 0x80, 0xe5, 0x12, 0x03, + 0x4a, 0x00, 0x48, 0x02, 0x00, 0x50, 0x02, 0x00, 0x60, 0x69, 0x40, 0x30, + 0xc2, 0xfd, 0x8e, 0x40, + 0x8f, 0xd3, 0xed, 0xd2, 0xff, 0x24, 0xec, 0xff, 0xff, 0x34, 0xda, 0xf5, + 0xd9, 0x8f, 0x02, 0x22, + 0xe9, 0x6b, 0xaf, 0xc2, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, + 0xd0, 0xc0, 0xd0, 0x75, + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, + 0xc0, 0x05, 0xc0, 0x06, + 0xaf, 0x07, 0x75, 0xcd, 0x00, 0x0e, 0x0f, 0x8f, 0x0f, 0xe5, 0xad, 0xfe, + 0x7c, 0xcc, 0xe4, 0x00, + 0xf5, 0x2d, 0xec, 0x0f, 0xf5, 0x3e, 0xc2, 0x0e, 0x53, 0xd1, 0xfe, 0xa9, + 0xad, 0xc2, 0xcf, 0xc2, + 0x24, 0xe5, 0x29, 0x60, 0x70, 0x14, 0x02, 0x03, 0x1b, 0x03, 0x70, 0x14, + 0x02, 0x03, 0xe0, 0x05, + 0x0f, 0x80, 0x24, 0x75, 0x80, 0x01, 0x75, 0x0a, 0x02, 0x24, 0x05, 0x80, + 0x01, 0xc2, 0x24, 0x75, + 0xc2, 0x00, 0x43, 0xaf, 0x01, 0xa9, 0xad, 0xd2, 0xd1, 0xd2, 0x07, 0x02, + 0xc0, 0xcb, 0x12, 0xd0, + 0xf3, 0x60, 0x1a, 0x7d, 0x31, 0x7c, 0x71, 0x12, 0x85, 0xc3, 0x12, 0xef, + 0xee, 0x85, 0x90, 0x13, + 0xa6, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0xc3, 0xce, 0xce, 0x13, + 0xd8, 0x13, 0x25, 0xf9, + 0xf5, 0x13, 0xe5, 0x17, 0x3e, 0x12, 0x16, 0xf5, 0x7e, 0x90, 0xe5, 0xaa, + 0xf0, 0x12, 0xe5, 0xa3, + 0xf0, 0x13, 0xc1, 0xd2, 0x90, 0xd3, 0xa9, 0x7e, 0x95, 0xe0, 0x90, 0x17, + 0xa8, 0x7e, 0x95, 0xe0, + 0x90, 0x16, 0xa0, 0x7d, 0x09, 0x40, 0x16, 0xe5, 0xa3, 0xf0, 0x17, 0xe5, + 0x80, 0xf0, 0xe4, 0x04, + 0xa3, 0xf0, 0xc2, 0xf0, 0x90, 0xc1, 0xa0, 0x7d, 0xf5, 0xe0, 0xa3, 0x21, + 0xf5, 0xe0, 0x30, 0x22, + 0xfd, 0x40, 0x7d, 0x90, 0xe0, 0xa2, 0xe0, 0xa3, 0x03, 0x54, 0x90, 0xff, + 0x9b, 0x7e, 0x54, 0xe0, + 0x4f, 0xfc, 0x25, 0xf5, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, + 0x1e, 0x7d, 0x31, 0x7c, + 0x6f, 0x12, 0xa2, 0x57, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x50, 0x7d, + 0x61, 0x12, 0x90, 0x2b, + 0x34, 0x7d, 0x61, 0x12, 0x90, 0x2b, 0x32, 0x7d, 0x61, 0x12, 0x90, 0x2b, + 0x4c, 0x7d, 0xf0, 0xe4, + 0x74, 0xa3, 0xf0, 0x08, 0x7d, 0x90, 0xe4, 0x5c, 0xa3, 0xf0, 0x08, 0x74, + 0x90, 0xf0, 0x55, 0x7d, + 0xf7, 0x74, 0x90, 0xf0, 0x63, 0x7d, 0x90, 0xf0, 0x36, 0x7d, 0x03, 0x74, + 0xa3, 0xf0, 0xff, 0x74, + 0x90, 0xf0, 0x38, 0x7d, 0xfc, 0x74, 0xa3, 0xf0, 0x01, 0x74, 0x90, 0xf0, + 0xe2, 0x7e, 0xff, 0xe0, + 0xe0, 0xa3, 0x7d, 0x90, 0xcf, 0x48, 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, + 0xe0, 0xe4, 0xa3, 0xff, + 0x90, 0xe0, 0x46, 0x7d, 0xf0, 0xcf, 0x12, 0xef, 0x09, 0x61, 0x7e, 0x90, + 0xe0, 0x90, 0x04, 0x70, + 0xe0, 0xa3, 0x40, 0x64, 0x4b, 0x70, 0x7d, 0x90, 0xf0, 0x50, 0x74, 0xa3, + 0xf0, 0xc8, 0x7d, 0x90, + 0xe4, 0x34, 0xa3, 0xf0, 0xc8, 0x74, 0x90, 0xf0, 0x32, 0x7d, 0xf0, 0xe4, + 0x74, 0xa3, 0xf0, 0xc8, + 0x7d, 0x90, 0xe4, 0x4c, 0xa3, 0xf0, 0x10, 0x74, 0x90, 0xf0, 0x5c, 0x7d, + 0xf0, 0xe4, 0x74, 0xa3, + 0xf0, 0x10, 0x7d, 0x90, 0x74, 0x55, 0xf0, 0xf0, 0x7d, 0x90, 0xf0, 0x63, + 0x7d, 0x90, 0x74, 0x48, + 0xf0, 0x07, 0x74, 0xa3, 0xf0, 0x77, 0x7d, 0x90, 0x74, 0x46, 0xf0, 0x07, + 0x77, 0x74, 0x61, 0x12, + 0x12, 0x09, 0xf3, 0x07, 0xd0, 0xc0, 0x60, 0x12, 0x7d, 0xf3, 0x7c, 0x23, + 0x12, 0x31, 0xc3, 0x71, + 0x7e, 0x90, 0xe0, 0x98, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x40, 0x30, + 0x90, 0xfd, 0xa2, 0x7d, + 0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0xe7, 0xa2, 0xf5, 0x13, 0xef, 0x10, + 0xf5, 0x13, 0xa2, 0x11, + 0x92, 0xd1, 0xd0, 0xaf, 0xc3, 0xd0, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, + 0x0e, 0x50, 0xe4, 0xc3, + 0x11, 0x95, 0xe4, 0xff, 0x10, 0x95, 0x1c, 0xf5, 0x1d, 0x8f, 0x06, 0x80, + 0x10, 0x85, 0x85, 0x1c, + 0x1d, 0x11, 0x13, 0xe5, 0x12, 0xae, 0x05, 0x78, 0xc3, 0xce, 0xce, 0x13, + 0xd8, 0x13, 0xff, 0xf9, + 0xe5, 0xc3, 0x9f, 0x13, 0xe5, 0xff, 0x9e, 0x12, 0xef, 0xfe, 0x1d, 0x25, + 0x1d, 0xf5, 0x35, 0xee, + 0xf5, 0x1c, 0xd3, 0x1c, 0x1d, 0xe5, 0xff, 0x94, 0x1c, 0xe5, 0x07, 0x94, + 0x06, 0x40, 0x1c, 0x75, + 0x75, 0x07, 0xff, 0x1d, 0x7e, 0x90, 0xe5, 0x98, 0xf0, 0x1c, 0xe5, 0xa3, + 0xf0, 0x1d, 0x94, 0xc3, + 0xe5, 0xff, 0x94, 0x1c, 0x90, 0x03, 0x97, 0x7e, 0x50, 0xe0, 0x44, 0x06, + 0xf0, 0x01, 0x01, 0x02, + 0x54, 0x16, 0xf0, 0xfe, 0x01, 0x02, 0x90, 0x16, 0xbc, 0x7e, 0xfe, 0xe0, + 0xe0, 0xa3, 0xe7, 0x8e, + 0xe6, 0xf5, 0x7e, 0x90, 0xe0, 0xa5, 0xc3, 0xff, 0x7e, 0x90, 0xe0, 0xa7, + 0xff, 0x9f, 0x7e, 0x90, + 0xe0, 0xa6, 0x00, 0x94, 0x7d, 0xfe, 0x7c, 0x1d, 0x12, 0x31, 0x57, 0x6f, + 0x2e, 0x30, 0xc2, 0x04, + 0x80, 0xc3, 0xd2, 0x02, 0x90, 0xc3, 0x90, 0x7e, 0x70, 0xe0, 0xa3, 0x04, + 0x64, 0xe0, 0x60, 0x40, + 0x20, 0x6b, 0x68, 0x2f, 0xd0, 0xc0, 0x60, 0x12, 0x7d, 0xf3, 0x7c, 0x19, + 0x12, 0x31, 0xc3, 0x71, + 0x40, 0x30, 0x90, 0xfd, 0xa2, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x60, 0xe0, + 0x90, 0x0f, 0xa2, 0x7d, + 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0xdc, 0xa3, 0xf0, 0xf0, 0xef, + 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x02, 0x20, 0x90, 0x0c, 0x7a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, + 0x70, 0xe0, 0x80, 0x1e, + 0x90, 0x0a, 0x70, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x7d, 0x12, + 0x7c, 0x19, 0xff, 0x31, + 0x12, 0xfe, 0x57, 0x6f, 0x21, 0x7d, 0x31, 0x7c, 0xff, 0xe4, 0x80, 0xfe, + 0x90, 0x0c, 0xdc, 0x7e, + 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x19, 0x12, 0x31, 0x57, 0x6f, + 0x7e, 0x90, 0xe0, 0xdb, + 0x03, 0x70, 0x05, 0x02, 0x90, 0x34, 0xc9, 0x7e, 0xf5, 0xe0, 0x64, 0x19, + 0x60, 0x07, 0x02, 0x03, + 0x34, 0x05, 0x90, 0xd3, 0xd9, 0x7e, 0x94, 0xe0, 0x90, 0xb0, 0xd8, 0x7e, + 0x94, 0xe0, 0x50, 0x04, + 0x02, 0x03, 0x34, 0x05, 0xe0, 0xa3, 0xb8, 0x94, 0x7e, 0x90, 0xe0, 0xd8, + 0x0b, 0x94, 0x03, 0x40, + 0x05, 0x02, 0x7f, 0x34, 0x7e, 0x22, 0x12, 0x31, 0xf0, 0x6e, 0x7d, 0x90, + 0xee, 0xa2, 0xa3, 0xf0, + 0xf0, 0xef, 0x7d, 0x90, 0xe0, 0xa2, 0xe0, 0xa3, 0x18, 0xf5, 0x7e, 0x90, + 0xe0, 0xd2, 0x0f, 0x54, + 0xa3, 0xfe, 0x78, 0xe0, 0xce, 0x03, 0x13, 0xc3, 0x13, 0xce, 0xf9, 0xd8, + 0x15, 0xf5, 0x14, 0x8e, + 0x18, 0xe5, 0x33, 0xfd, 0xe0, 0x95, 0xe5, 0xfc, 0x12, 0x15, 0x33, 0x61, + 0xa3, 0xfa, 0xfb, 0xe0, + 0xef, 0xc3, 0xf5, 0x9b, 0xee, 0x11, 0xf5, 0x9a, 0xc3, 0x10, 0x80, 0x64, + 0x80, 0x94, 0x0d, 0x50, + 0xe4, 0xc3, 0x11, 0x95, 0x1d, 0xf5, 0x95, 0xe4, 0xf5, 0x10, 0x80, 0x1c, + 0x85, 0x06, 0x1c, 0x10, + 0x11, 0x85, 0x90, 0x1d, 0xd8, 0x7e, 0x54, 0xe0, 0xfe, 0x0f, 0xe0, 0xa3, + 0x03, 0x78, 0xc3, 0xce, + 0xce, 0x13, 0xd8, 0x13, 0xf5, 0xf9, 0x8e, 0x15, 0x12, 0x14, 0x33, 0x61, + 0xa3, 0xfc, 0xfd, 0xe0, + 0xef, 0xc3, 0xf5, 0x9d, 0xee, 0x13, 0xf5, 0x9c, 0xc3, 0x12, 0x80, 0x64, + 0x80, 0x94, 0x0d, 0x50, + 0xe4, 0xc3, 0x13, 0x95, 0x17, 0xf5, 0x95, 0xe4, 0xf5, 0x12, 0x80, 0x16, + 0x85, 0x06, 0x16, 0x12, + 0x13, 0x85, 0xc3, 0x17, 0x1d, 0xe5, 0x1e, 0x94, 0x1c, 0xe5, 0x00, 0x94, + 0x34, 0x50, 0xe5, 0xc3, + 0x94, 0x17, 0xe5, 0x1e, 0x94, 0x16, 0x50, 0x00, 0xe5, 0x29, 0x94, 0x11, + 0xe5, 0x00, 0x64, 0x10, + 0x94, 0x80, 0x90, 0x80, 0xd0, 0x7e, 0x09, 0x40, 0x60, 0x12, 0xe4, 0xfe, + 0xf0, 0x75, 0x80, 0x0a, + 0x74, 0x0c, 0xf5, 0xff, 0x12, 0xf0, 0x02, 0x61, 0xff, 0x74, 0xf0, 0x75, + 0x12, 0xf6, 0x8c, 0x24, + 0x4e, 0x80, 0xe5, 0xd3, 0x94, 0x1d, 0xe5, 0x21, 0x94, 0x1c, 0x50, 0x00, + 0xe5, 0x0a, 0x94, 0x17, + 0xe5, 0x21, 0x94, 0x16, 0x40, 0x00, 0x12, 0x49, 0x19, 0x61, 0x7e, 0x90, + 0xe0, 0xd0, 0x70, 0x6e, + 0xa3, 0x03, 0x6f, 0xe0, 0x3a, 0x60, 0x61, 0x12, 0xd3, 0x19, 0x61, 0x12, + 0x40, 0x3e, 0x74, 0x0e, + 0xf5, 0xff, 0x12, 0xf0, 0x02, 0x61, 0xff, 0x74, 0xf0, 0x75, 0x80, 0xf6, + 0x12, 0x10, 0x19, 0x61, + 0x12, 0xc3, 0x3e, 0x61, 0x0a, 0x50, 0x60, 0x12, 0xe4, 0xfe, 0xf0, 0x75, + 0x12, 0x0a, 0x8c, 0x24, + 0x7e, 0x90, 0x7c, 0xd0, 0x12, 0x62, 0xe8, 0x07, 0x7e, 0x90, 0x7c, 0xd2, + 0x12, 0x65, 0xe8, 0x07, + 0x7e, 0x90, 0xe0, 0xc9, 0x18, 0xf5, 0x07, 0xb4, 0xe4, 0x05, 0x02, 0xf0, + 0x1b, 0x01, 0x18, 0x05, + 0x7e, 0x90, 0xe5, 0xc9, 0xf0, 0x18, 0x7e, 0x90, 0xe0, 0xca, 0x1e, 0xf5, + 0xe0, 0xa3, 0x1f, 0xf5, + 0x2d, 0xa2, 0x2c, 0x72, 0x6e, 0x50, 0xd0, 0xc0, 0x60, 0x12, 0x7d, 0xf3, + 0x7c, 0x20, 0x12, 0x31, + 0xc3, 0x71, 0x40, 0x30, 0x90, 0xfd, 0xa2, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, + 0xf5, 0xe0, 0xa2, 0x1b, + 0x92, 0xd1, 0xd0, 0xaf, 0xe5, 0xd0, 0x30, 0x1b, 0x0d, 0xe5, 0x61, 0x12, + 0x40, 0x49, 0xe5, 0x08, + 0x15, 0x1f, 0x70, 0x1f, 0x15, 0x02, 0x30, 0x1e, 0x02, 0x2c, 0x41, 0xd2, + 0x41, 0x30, 0xd3, 0x35, + 0x1b, 0xe5, 0x10, 0x94, 0x1a, 0xe5, 0x00, 0x94, 0x0d, 0x40, 0x61, 0x12, + 0x40, 0x49, 0xe5, 0x08, + 0x15, 0x1f, 0x70, 0x1f, 0x15, 0x02, 0xc3, 0x1e, 0x1b, 0xe5, 0x10, 0x94, + 0x1a, 0xe5, 0x00, 0x94, + 0x12, 0x50, 0x1f, 0xe5, 0xfe, 0x94, 0x1e, 0xe5, 0x04, 0x94, 0x08, 0x50, + 0x1f, 0x05, 0x1f, 0xe5, + 0x02, 0x70, 0x1e, 0x05, 0x1f, 0x7d, 0x31, 0x7c, 0x1f, 0xaf, 0x1e, 0xae, + 0x6f, 0x12, 0x90, 0x57, + 0xca, 0x7e, 0x1e, 0xe5, 0xa3, 0xf0, 0x1f, 0xe5, 0x02, 0xf0, 0x1b, 0x01, + 0xc3, 0xd2, 0x23, 0x75, + 0x30, 0x00, 0x03, 0x01, 0x07, 0x02, 0xd3, 0xc5, 0x0f, 0xe5, 0x7c, 0x94, + 0x0e, 0xe5, 0xfc, 0x94, + 0x03, 0x40, 0x07, 0x02, 0x90, 0xc5, 0xe9, 0x7d, 0x24, 0xe0, 0xf5, 0x01, + 0x90, 0x17, 0xe8, 0x7d, + 0x34, 0xe0, 0xf5, 0x00, 0xd3, 0x16, 0x17, 0xe5, 0x22, 0x94, 0x16, 0xe5, + 0x01, 0x94, 0x06, 0x40, + 0x16, 0x75, 0x75, 0x00, 0x00, 0x17, 0x7d, 0x90, 0xe5, 0xe8, 0xf0, 0x16, + 0xe5, 0xa3, 0xf0, 0x17, + 0xd8, 0xa2, 0x42, 0x92, 0xc2, 0xd2, 0x7e, 0x90, 0xe0, 0x97, 0x42, 0x30, + 0x44, 0x05, 0xf0, 0x02, + 0x03, 0x80, 0xfd, 0x54, 0xc2, 0xf0, 0x85, 0xc2, 0x12, 0xed, 0xec, 0x85, + 0xd2, 0x13, 0xd2, 0xc0, + 0x90, 0xc4, 0xa6, 0x7e, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, + 0xa8, 0x7e, 0x12, 0xe5, + 0xa3, 0xf0, 0x13, 0xe5, 0xc2, 0xf0, 0xc2, 0xc0, 0xc3, 0xc4, 0x15, 0xe5, + 0x13, 0x95, 0x11, 0xf5, + 0x14, 0xe5, 0x12, 0x95, 0x10, 0xf5, 0x7e, 0x90, 0xe0, 0x90, 0x04, 0x70, + 0xe0, 0xa3, 0x40, 0x64, + 0x10, 0x70, 0x7d, 0x90, 0xe0, 0xe8, 0x02, 0x70, 0xe0, 0xa3, 0x03, 0x70, + 0x07, 0x02, 0x02, 0x9a, + 0xc5, 0x07, 0x23, 0x75, 0x90, 0x00, 0x3a, 0x7d, 0xa3, 0xe0, 0x54, 0xe0, + 0xf5, 0x0f, 0x70, 0x19, + 0x02, 0x03, 0xc5, 0x07, 0x18, 0x75, 0xe5, 0x00, 0xae, 0x11, 0x78, 0x10, + 0xc3, 0x02, 0xce, 0x33, + 0xce, 0x33, 0xf9, 0xd8, 0x11, 0xf5, 0x10, 0x8e, 0x19, 0xe5, 0x94, 0xd3, + 0x40, 0x07, 0x75, 0x03, + 0x07, 0x19, 0x74, 0xc3, 0x95, 0x08, 0xf5, 0x19, 0x75, 0x19, 0x01, 0x16, + 0x16, 0xe5, 0x95, 0xd3, + 0x50, 0x19, 0x12, 0x0c, 0xe6, 0x60, 0x61, 0x12, 0xf5, 0x22, 0x05, 0x18, + 0x80, 0x16, 0xe5, 0xed, + 0xa2, 0x10, 0x13, 0xe7, 0x12, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x12, 0x13, + 0x22, 0x61, 0x19, 0xf5, + 0x1f, 0xc2, 0x18, 0x25, 0x18, 0xf5, 0x18, 0x92, 0x11, 0xe5, 0x13, 0x25, + 0xe5, 0xff, 0x35, 0x10, + 0xfe, 0x12, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x11, 0xf5, 0x3e, + 0xc2, 0x10, 0x90, 0x18, + 0x3d, 0x7d, 0x30, 0xe0, 0x08, 0xe0, 0x60, 0x12, 0x12, 0xe6, 0x22, 0x61, + 0x18, 0xf5, 0x7d, 0x90, + 0xe0, 0x3d, 0xe1, 0x30, 0x12, 0x14, 0xe6, 0x60, 0x1e, 0x92, 0x60, 0x12, + 0x92, 0xe6, 0xe5, 0x1f, + 0x13, 0x18, 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0x75, 0x18, 0x00, 0x23, + 0x7e, 0x90, 0xe0, 0xbf, + 0x18, 0x25, 0x92, 0xf0, 0x90, 0x18, 0xbc, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, + 0x11, 0x25, 0xe5, 0xff, + 0x3e, 0x10, 0x7c, 0xfe, 0xef, 0x00, 0x23, 0x25, 0x11, 0xf5, 0x3e, 0xec, + 0x10, 0xf5, 0x18, 0xc2, + 0x12, 0xf5, 0x11, 0x85, 0xd3, 0x13, 0x11, 0xe5, 0xf0, 0x94, 0x10, 0xe5, + 0x80, 0x64, 0xd7, 0x94, + 0x0c, 0x40, 0x10, 0x75, 0x75, 0x57, 0xf0, 0x11, 0x7e, 0x90, 0x74, 0xbf, + 0xf0, 0xff, 0xe5, 0xc3, + 0x94, 0x11, 0xe5, 0xe0, 0x64, 0x10, 0x94, 0x80, 0x50, 0x86, 0x75, 0x0b, + 0x06, 0x10, 0x11, 0x75, + 0x90, 0xe0, 0xbf, 0x7e, 0xf0, 0xe4, 0x10, 0x85, 0x85, 0xe7, 0xe6, 0x11, + 0x7e, 0x90, 0xe5, 0xbc, + 0xf0, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0x7e, 0x90, 0xe0, 0x90, 0x04, 0x70, + 0xe0, 0xa3, 0x40, 0x64, + 0x12, 0x70, 0x1f, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0x13, 0xf5, + 0x1e, 0xe5, 0x54, 0xc4, + 0x48, 0xf0, 0x12, 0xf5, 0x7d, 0x90, 0xe5, 0x68, 0xf0, 0x12, 0xe5, 0xa3, + 0xf0, 0x13, 0x21, 0x12, + 0x75, 0x96, 0x00, 0x23, 0x01, 0x02, 0xd0, 0x20, 0xd0, 0x07, 0xd0, 0x06, + 0xd0, 0x05, 0xd0, 0x04, + 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, + 0xd0, 0x83, 0xd0, 0xf0, + 0xd2, 0xe0, 0x32, 0xaf, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x12, 0x11, + 0x57, 0x6f, 0x90, 0x22, + 0x3b, 0x7d, 0x54, 0xe0, 0x70, 0xf0, 0xd3, 0x03, 0x01, 0x80, 0xb3, 0xc3, + 0x05, 0x92, 0x7d, 0x90, + 0xe0, 0x3a, 0xa2, 0xa3, 0xb3, 0xe4, 0x02, 0x92, 0x54, 0xe0, 0x70, 0x0f, + 0xd3, 0x03, 0x01, 0x80, + 0xb3, 0xc3, 0x06, 0x92, 0x7d, 0x90, 0xe0, 0x91, 0xe1, 0x30, 0x02, 0x03, + 0x46, 0x09, 0x7d, 0x90, + 0xe0, 0x5a, 0x02, 0x70, 0xe0, 0xa3, 0x2e, 0x70, 0x02, 0x30, 0x90, 0x2b, + 0x78, 0x7d, 0x31, 0x12, + 0x90, 0xec, 0x75, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x74, 0x50, 0x9e, + 0x90, 0x19, 0x65, 0x7d, + 0x64, 0xe0, 0x94, 0x80, 0x40, 0x7f, 0x74, 0x03, 0xf0, 0xff, 0x5b, 0x20, + 0xd2, 0x09, 0xe4, 0x5b, + 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x4a, 0x02, 0x70, + 0xe0, 0xa3, 0x03, 0x70, + 0x02, 0x20, 0x90, 0x17, 0x4a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, + 0x90, 0x33, 0x5a, 0x7d, + 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x20, 0x29, 0x26, 0x02, 0x7d, 0x90, + 0xe0, 0x6c, 0xa3, 0xfe, + 0x12, 0xd3, 0x88, 0x30, 0x1a, 0x40, 0x7d, 0x90, 0xe0, 0x57, 0x64, 0xd3, + 0x94, 0x80, 0x40, 0x7f, + 0x74, 0x03, 0xf0, 0xff, 0x07, 0x20, 0xd2, 0x09, 0xe4, 0x07, 0x7d, 0x90, + 0xf0, 0x52, 0xf0, 0xa3, + 0x22, 0x7f, 0x67, 0x7e, 0x6e, 0x12, 0x8e, 0xf0, 0x8f, 0x14, 0x7f, 0x15, + 0x7e, 0x27, 0x12, 0x67, + 0xf0, 0x6e, 0x16, 0x8e, 0x17, 0x8f, 0x7d, 0x90, 0xe0, 0x5e, 0xa3, 0xfe, + 0x78, 0xe0, 0xc3, 0x03, + 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xd3, 0xff, 0x17, 0xe5, 0xe5, 0x9f, + 0x9e, 0x16, 0x34, 0x40, + 0x02, 0x20, 0x90, 0x0c, 0x57, 0x7d, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x81, + 0x80, 0x10, 0x90, 0x0b, + 0x65, 0x7d, 0xc3, 0xe0, 0x80, 0x64, 0x81, 0x94, 0x03, 0x50, 0x01, 0x74, + 0x20, 0xf0, 0x14, 0x5b, + 0x5b, 0xd2, 0x7d, 0x90, 0x12, 0x60, 0x7d, 0x30, 0x0a, 0x50, 0x7d, 0x90, + 0xe0, 0x91, 0xe0, 0x30, + 0x12, 0x03, 0x64, 0x31, 0x7d, 0x90, 0xe0, 0x4e, 0xa3, 0xfe, 0x78, 0xe0, + 0xc3, 0x03, 0xce, 0x33, + 0xce, 0x33, 0xf9, 0xd8, 0xd3, 0xff, 0x15, 0xe5, 0xe5, 0x9f, 0x9e, 0x14, + 0x24, 0x40, 0x7d, 0x90, + 0xe0, 0x57, 0x80, 0x64, 0x81, 0x94, 0x03, 0x50, 0x01, 0x74, 0x20, 0xf0, + 0x14, 0x07, 0x07, 0xd2, + 0x7d, 0x90, 0x12, 0x52, 0x7d, 0x30, 0x0a, 0x50, 0x7d, 0x90, 0xe0, 0x91, + 0xe0, 0x30, 0x12, 0x03, + 0x64, 0x31, 0x7d, 0x90, 0x12, 0x34, 0x2b, 0x30, 0x7d, 0x90, 0x12, 0x60, + 0x1e, 0x31, 0x02, 0x70, + 0x1c, 0x05, 0x7d, 0x90, 0x12, 0x60, 0x2a, 0x31, 0x5b, 0x30, 0x90, 0x28, + 0x7e, 0x7d, 0x31, 0x12, + 0x74, 0xec, 0x9f, 0xf8, 0x74, 0xff, 0x9e, 0x2a, 0xd3, 0xfe, 0x7d, 0x90, + 0xe0, 0x7b, 0x90, 0x9f, + 0x7a, 0x7d, 0x9e, 0xe0, 0x07, 0x50, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, + 0x90, 0x06, 0x2e, 0x7d, + 0x30, 0x12, 0x12, 0x2b, 0xce, 0x30, 0x03, 0x40, 0x80, 0xd3, 0xc3, 0x01, + 0x04, 0x92, 0x7d, 0x90, + 0x12, 0x50, 0x2b, 0x30, 0x7d, 0x90, 0x12, 0x52, 0x1e, 0x31, 0x02, 0x70, + 0x1c, 0x05, 0x7d, 0x90, + 0x12, 0x52, 0x2a, 0x31, 0x07, 0x30, 0x90, 0x06, 0x82, 0x7d, 0x30, 0x12, + 0x20, 0x2b, 0x0b, 0x04, + 0x30, 0x12, 0x40, 0xce, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x03, + 0x03, 0x04, 0x0a, 0x02, + 0xc0, 0x6c, 0x12, 0xd0, 0xe5, 0x30, 0x00, 0x12, 0x7b, 0xae, 0x12, 0x27, + 0x3b, 0x0e, 0x40, 0x30, + 0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, 0x7d, 0x90, 0x12, 0x5a, + 0xf3, 0x31, 0xd0, 0xd0, + 0x90, 0xe4, 0x60, 0x7d, 0xa3, 0xf0, 0xc2, 0xf0, 0x90, 0x5b, 0x63, 0x7d, + 0xf5, 0xe0, 0x90, 0x18, + 0x5a, 0x7d, 0x31, 0x12, 0x90, 0x32, 0x5c, 0x7d, 0x31, 0x12, 0x90, 0x0e, + 0x5e, 0x7d, 0x30, 0x12, + 0x90, 0x2b, 0x66, 0x7d, 0x31, 0x12, 0x90, 0x5c, 0x65, 0x7d, 0xf5, 0xe0, + 0x90, 0x19, 0x74, 0x7d, + 0x31, 0x12, 0x74, 0xec, 0x9f, 0xff, 0x1d, 0xf5, 0x7f, 0x74, 0xf5, 0x9e, + 0x90, 0x1c, 0x6e, 0x7d, + 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x6a, 0x7d, 0xb5, 0xe0, 0x1a, 0x06, + 0xe0, 0xa3, 0x07, 0xb5, + 0xd3, 0x15, 0x7d, 0x90, 0xe0, 0x4b, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x4a, + 0x12, 0x95, 0x06, 0x40, + 0x58, 0x20, 0x12, 0x03, 0x32, 0x31, 0x90, 0xd3, 0x7b, 0x7d, 0x94, 0xe0, + 0x90, 0xfe, 0x7a, 0x7d, + 0x94, 0xe0, 0x40, 0x77, 0x12, 0x07, 0xfd, 0x31, 0x02, 0x40, 0x04, 0xc2, + 0x02, 0x30, 0x20, 0x03, + 0x02, 0x05, 0x04, 0xc2, 0x04, 0xa2, 0x5a, 0x92, 0x03, 0x30, 0xc0, 0x74, + 0x12, 0xd0, 0xe5, 0x30, + 0x00, 0x12, 0x7b, 0xae, 0x12, 0x22, 0x3b, 0x0e, 0x40, 0x30, 0x90, 0xfd, + 0xa4, 0x7d, 0xff, 0xe0, + 0xe0, 0xa3, 0x7d, 0x90, 0x12, 0x4a, 0xf3, 0x31, 0xd0, 0xd0, 0x90, 0xe4, + 0x52, 0x7d, 0xa3, 0xf0, + 0xc2, 0xf0, 0x90, 0x07, 0x55, 0x7d, 0xf5, 0xe0, 0x90, 0x18, 0x4a, 0x7d, + 0x31, 0x12, 0x90, 0x32, + 0x4c, 0x7d, 0x31, 0x12, 0x90, 0x0e, 0x4e, 0x7d, 0x30, 0x12, 0x90, 0x2b, + 0x58, 0x7d, 0x31, 0x12, + 0x90, 0x5c, 0x57, 0x7d, 0xf5, 0xe0, 0x90, 0x19, 0x6a, 0x7d, 0xf5, 0xe0, + 0xa3, 0x1c, 0xf5, 0xe0, + 0x20, 0x1d, 0x12, 0x02, 0x90, 0xd3, 0x5b, 0x7d, 0x95, 0xe0, 0x90, 0x13, + 0x5a, 0x7d, 0x95, 0xe0, + 0x40, 0x12, 0x12, 0x03, 0x32, 0x31, 0x06, 0x20, 0xc2, 0x02, 0xa2, 0x03, + 0x92, 0x03, 0x20, 0x59, + 0x0b, 0x05, 0x02, 0x20, 0xc2, 0x08, 0xc2, 0x03, 0xc2, 0x04, 0xc2, 0x59, + 0x20, 0x5a, 0x06, 0x04, + 0x03, 0x20, 0x02, 0x03, 0x35, 0x0c, 0xe5, 0xc3, 0x95, 0x13, 0xe5, 0x1b, + 0x95, 0x12, 0x50, 0x1a, + 0xe5, 0x3b, 0x64, 0x19, 0x94, 0x80, 0x50, 0x80, 0x15, 0x2e, 0xc3, 0x19, + 0x31, 0x12, 0x50, 0xd6, + 0x12, 0x06, 0xb7, 0x31, 0x19, 0x75, 0x12, 0xff, 0x4b, 0x31, 0xe5, 0xc3, + 0x9f, 0x1d, 0x11, 0xf5, + 0x1c, 0xe5, 0xf5, 0x9e, 0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, + 0x4b, 0x80, 0x10, 0x85, + 0x85, 0x1c, 0x1d, 0x11, 0x0b, 0x02, 0x75, 0x9e, 0xff, 0x19, 0x47, 0x80, + 0x74, 0xc3, 0x95, 0x01, + 0xa2, 0x18, 0x13, 0xe7, 0x18, 0xf5, 0x31, 0x12, 0x40, 0xfd, 0xe5, 0x3d, + 0x64, 0x19, 0x94, 0x80, + 0x40, 0x80, 0x05, 0x2d, 0xd3, 0x19, 0x31, 0x12, 0x40, 0xd6, 0x12, 0x06, + 0xb7, 0x31, 0x19, 0x75, + 0x12, 0x01, 0x4b, 0x31, 0x1d, 0xe5, 0xf5, 0x2f, 0xe5, 0x11, 0x3e, 0x1c, + 0x10, 0xf5, 0xe5, 0xd3, + 0x94, 0x11, 0xe5, 0xff, 0x94, 0x10, 0x40, 0x7f, 0x80, 0x02, 0x12, 0x08, + 0x07, 0x32, 0x1a, 0x80, + 0x19, 0x75, 0x12, 0x01, 0xde, 0x30, 0x12, 0x80, 0xf5, 0xe4, 0xf5, 0x19, + 0x75, 0x14, 0x01, 0x15, + 0x03, 0x30, 0xc2, 0x02, 0x30, 0x59, 0x02, 0x04, 0x5a, 0xc2, 0x03, 0x30, + 0x90, 0x4b, 0x6e, 0x7d, + 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x6c, 0x7d, 0x30, 0x12, + 0x12, 0x2b, 0xce, 0x30, + 0x05, 0x50, 0x30, 0x12, 0xc2, 0xd8, 0x12, 0x59, 0x0e, 0x32, 0x08, 0x40, + 0x32, 0x12, 0x12, 0x07, + 0xde, 0x30, 0x59, 0xc2, 0x7d, 0x90, 0xe5, 0x57, 0xf0, 0x19, 0x7d, 0x90, + 0x12, 0x58, 0xae, 0x30, + 0x7d, 0x90, 0x12, 0x6a, 0x2a, 0x31, 0x02, 0x20, 0x90, 0x0f, 0x78, 0x7d, + 0xff, 0xe0, 0xe0, 0xa3, + 0x7d, 0x90, 0xcf, 0x74, 0xa3, 0xf0, 0xf0, 0xef, 0x04, 0x30, 0x90, 0x46, + 0x78, 0x7d, 0xf5, 0xe0, + 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x76, 0x7d, 0x30, 0x12, 0xc3, 0x2b, + 0xff, 0x74, 0x1d, 0x95, + 0x1d, 0xf5, 0x7f, 0x74, 0x1c, 0x95, 0x1c, 0xf5, 0x30, 0x12, 0x50, 0xce, + 0x12, 0x05, 0xd8, 0x30, + 0x5a, 0xc2, 0x32, 0x12, 0x40, 0x0e, 0x12, 0x08, 0x07, 0x32, 0x30, 0x12, + 0xc2, 0xde, 0x90, 0x5a, + 0x65, 0x7d, 0x19, 0xe5, 0x90, 0xf0, 0x66, 0x7d, 0x30, 0x12, 0x90, 0xae, + 0x74, 0x7d, 0x31, 0x12, + 0x90, 0x2a, 0x30, 0x7d, 0x31, 0x12, 0x70, 0x1e, 0x05, 0x02, 0x90, 0x1c, + 0x30, 0x7d, 0x31, 0x12, + 0x90, 0x2a, 0x44, 0x7d, 0x31, 0x12, 0x45, 0x0e, 0x70, 0x1a, 0x02, 0x03, + 0x0a, 0x0e, 0x59, 0x20, + 0x30, 0x03, 0x09, 0x5a, 0x7d, 0x90, 0x12, 0x48, 0x5c, 0x31, 0x0d, 0x02, + 0xd3, 0xda, 0x7d, 0x90, + 0xe0, 0x33, 0x1d, 0x95, 0x7d, 0x90, 0xe0, 0x32, 0x1c, 0x95, 0x03, 0x40, + 0x0e, 0x02, 0x90, 0x3a, + 0x40, 0x7d, 0x31, 0x12, 0x90, 0xc3, 0x42, 0x7d, 0x30, 0x12, 0xc3, 0xfa, + 0x7d, 0x90, 0xe0, 0x3f, + 0x13, 0x95, 0x12, 0xe5, 0x80, 0x64, 0x90, 0xf8, 0x3e, 0x7d, 0x64, 0xe0, + 0x98, 0x80, 0x24, 0x40, + 0x11, 0xe5, 0x13, 0xb5, 0xe5, 0x1f, 0xb5, 0x10, 0x1a, 0x12, 0x1b, 0xe5, + 0xf8, 0xc4, 0x0f, 0x54, + 0x68, 0xc8, 0xe5, 0xff, 0xc4, 0x1a, 0xf0, 0x54, 0xfe, 0x48, 0x25, 0xef, + 0xf5, 0x13, 0xee, 0x13, + 0x12, 0x35, 0x12, 0xf5, 0xe5, 0xc3, 0x95, 0x13, 0xff, 0x11, 0x12, 0xe5, + 0x10, 0x95, 0xf8, 0xc4, + 0xf0, 0x54, 0x68, 0xc8, 0x1c, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, + 0x90, 0x1d, 0x84, 0x7d, + 0x31, 0x12, 0x90, 0xc3, 0x86, 0x7d, 0x30, 0x12, 0x40, 0x33, 0x85, 0x06, + 0x1c, 0x14, 0x15, 0x85, + 0x90, 0x1d, 0x92, 0x7d, 0x31, 0x12, 0x90, 0xc3, 0x94, 0x7d, 0x30, 0x12, + 0x40, 0x33, 0x85, 0x06, + 0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, 0x3a, 0x7d, 0x54, 0xe0, 0xf5, 0x0f, + 0xa3, 0x14, 0xf5, 0xe0, + 0x90, 0x15, 0x48, 0x7d, 0x30, 0x12, 0x90, 0x2b, 0x46, 0x7d, 0x31, 0x12, + 0xc3, 0x32, 0x1d, 0xe5, + 0x1b, 0x95, 0x1c, 0xe5, 0x1a, 0x95, 0x55, 0x50, 0x12, 0xe5, 0x31, 0x12, + 0xe4, 0x9e, 0x11, 0x95, + 0x95, 0xee, 0x40, 0x10, 0xe4, 0x06, 0x31, 0x12, 0x80, 0xe1, 0x12, 0x03, + 0x74, 0x31, 0x10, 0x75, + 0xe5, 0x00, 0x54, 0x13, 0xf5, 0xf0, 0xe5, 0x11, 0x54, 0x15, 0xd3, 0xf0, + 0x11, 0x95, 0x95, 0xe4, + 0x40, 0x10, 0x74, 0x07, 0x12, 0xf0, 0xe1, 0x31, 0x03, 0x80, 0x30, 0x12, + 0x75, 0x9d, 0x00, 0x10, + 0x13, 0xe5, 0x0f, 0x54, 0x11, 0xf5, 0x15, 0xe5, 0x0f, 0x54, 0x95, 0xd3, + 0xe4, 0x11, 0x10, 0x95, + 0x6d, 0x40, 0x15, 0xe5, 0x15, 0x15, 0x02, 0x70, 0x14, 0x15, 0x0d, 0x02, + 0xe5, 0xda, 0x12, 0x16, + 0x9e, 0x31, 0xe4, 0xc3, 0x11, 0x95, 0x95, 0xee, 0x50, 0x10, 0xe4, 0x0d, + 0x15, 0x25, 0x15, 0xf5, + 0x01, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x03, 0x80, 0x31, 0x12, 0x75, 0x74, + 0x00, 0x10, 0x17, 0xe5, + 0xf0, 0x54, 0x11, 0xf5, 0x15, 0xe5, 0xf0, 0x54, 0x95, 0xc3, 0xe4, 0x11, + 0x10, 0x95, 0x0d, 0x50, + 0x10, 0x74, 0x15, 0x25, 0x15, 0xf5, 0x35, 0xe4, 0xf5, 0x14, 0x80, 0x14, + 0x12, 0x03, 0x9d, 0x30, + 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, 0xf5, 0x0f, 0xe5, 0x11, 0x54, 0x15, + 0xc3, 0x0f, 0x11, 0x95, + 0x95, 0xe4, 0x50, 0x10, 0x05, 0x0a, 0xe5, 0x15, 0x70, 0x15, 0x05, 0x02, + 0x80, 0x14, 0xe5, 0x07, + 0x54, 0x15, 0x12, 0xf0, 0xa1, 0x30, 0x7d, 0x90, 0x12, 0x3a, 0x2b, 0x30, + 0xf0, 0x54, 0x03, 0x70, + 0x15, 0x53, 0xe5, 0x0f, 0x54, 0x16, 0x70, 0x0f, 0x53, 0x03, 0xf0, 0x14, + 0x17, 0xe5, 0x0f, 0x54, + 0x03, 0x70, 0x15, 0x53, 0xe5, 0xf0, 0x54, 0x16, 0x45, 0xf0, 0xff, 0x14, + 0x15, 0xe5, 0x7d, 0x90, + 0xcf, 0x3a, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x30, 0x7d, 0xa3, 0xf0, + 0x90, 0xf0, 0x42, 0x7d, + 0x80, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7d, 0x90, 0x12, 0x40, 0x16, 0x31, + 0x90, 0xe4, 0x86, 0x7d, + 0xa3, 0xf0, 0x90, 0xf0, 0x84, 0x7d, 0x31, 0x12, 0xe4, 0x16, 0x7d, 0x90, + 0xf0, 0x94, 0xf0, 0xa3, + 0x7d, 0x90, 0x12, 0x92, 0x16, 0x31, 0x7a, 0x22, 0x7d, 0x00, 0x7f, 0x07, + 0x12, 0x06, 0x48, 0x70, + 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, + 0x00, 0xd0, 0x00, 0xc0, + 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, + 0x07, 0xc0, 0x07, 0x7f, + 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x32, 0x7c, 0xf0, 0xef, 0xff, 0xf4, + 0x00, 0x7e, 0x05, 0x7d, + 0x71, 0x7c, 0x6f, 0x12, 0x90, 0x57, 0x32, 0x7c, 0xff, 0xe0, 0x03, 0x70, + 0x11, 0x02, 0xef, 0xec, + 0xe4, 0x20, 0x02, 0x03, 0x99, 0x10, 0x12, 0x12, 0xf0, 0x8a, 0x7f, 0x90, + 0x12, 0xd4, 0xfa, 0x6a, + 0x90, 0xc3, 0xd5, 0x7f, 0x94, 0xe0, 0x90, 0x39, 0xd4, 0x7f, 0x94, 0xe0, + 0x40, 0x01, 0xe4, 0x0a, + 0xa3, 0xf0, 0x90, 0xf0, 0xd2, 0x7f, 0x6a, 0x12, 0x7f, 0xfb, 0x7e, 0x74, + 0x12, 0x71, 0xf0, 0x6e, + 0x7c, 0x90, 0x12, 0x48, 0xd6, 0x6a, 0x06, 0x50, 0x6b, 0x12, 0xfe, 0x01, + 0x08, 0x80, 0x7c, 0x90, + 0xe0, 0x48, 0xa3, 0xfe, 0xff, 0xe0, 0x7c, 0x90, 0xee, 0x48, 0xa3, 0xf0, + 0xf0, 0xef, 0x75, 0x7f, + 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x4a, 0x7c, 0x6a, 0x12, 0x50, 0xd6, + 0x12, 0x06, 0x01, 0x6b, + 0x80, 0xfe, 0x90, 0x08, 0x4a, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0x4a, 0x7c, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0x4a, 0x7c, 0x6a, 0x12, 0xaa, 0xef, 0xab, 0x06, + 0x90, 0x07, 0x48, 0x7c, + 0x6a, 0x12, 0xef, 0xef, 0xff, 0x2b, 0x3a, 0xee, 0x7c, 0x90, 0xf0, 0x4c, + 0xef, 0xa3, 0x90, 0xf0, + 0x33, 0x7c, 0x25, 0x12, 0x90, 0x72, 0x37, 0x7c, 0x25, 0x12, 0x7f, 0xaa, + 0x7e, 0x12, 0x12, 0x62, + 0xf0, 0x6e, 0xfc, 0xe4, 0x90, 0xfd, 0x33, 0x7c, 0x25, 0x12, 0x90, 0xaa, + 0x37, 0x7c, 0x25, 0x12, + 0xab, 0x72, 0xaa, 0x07, 0xa9, 0x06, 0xa8, 0x05, 0x90, 0x04, 0x33, 0x7c, + 0x25, 0x12, 0x12, 0x72, + 0xc5, 0x24, 0x7c, 0x90, 0x12, 0x44, 0xaa, 0x25, 0x00, 0x7f, 0x80, 0x7e, + 0xff, 0x7d, 0xff, 0x7c, + 0x6b, 0x12, 0xc3, 0x08, 0x25, 0x12, 0x50, 0x22, 0x90, 0x14, 0x44, 0x7c, + 0x25, 0x12, 0xe4, 0x72, + 0xff, 0x2f, 0x3e, 0xe4, 0xed, 0xfe, 0x01, 0x34, 0xe4, 0xfd, 0x80, 0x3c, + 0xe4, 0x26, 0xff, 0x7f, + 0x7f, 0x7e, 0xfc, 0xfd, 0x6b, 0x12, 0xd3, 0x08, 0x25, 0x12, 0x40, 0x22, + 0x90, 0x1d, 0x44, 0x7c, + 0x25, 0x12, 0xc3, 0x72, 0x94, 0xef, 0xff, 0x00, 0x94, 0xee, 0xfe, 0x00, + 0x94, 0xed, 0xfd, 0x01, + 0x94, 0xec, 0xfc, 0x00, 0x7c, 0x90, 0x12, 0x44, 0xaa, 0x25, 0x7f, 0xe4, + 0xfe, 0x0f, 0xfc, 0xfd, + 0x7c, 0x90, 0x12, 0x3b, 0x8e, 0x25, 0x24, 0x12, 0xe4, 0xd3, 0x10, 0x7b, + 0xf9, 0xfa, 0x12, 0xf8, + 0xdb, 0x68, 0x6b, 0x12, 0x12, 0x08, 0xb8, 0x24, 0x7c, 0x90, 0x12, 0x3b, + 0xaa, 0x25, 0x7c, 0x90, + 0xe0, 0x41, 0x54, 0xf9, 0x70, 0x03, 0x90, 0x5d, 0x3b, 0x7c, 0x25, 0x12, + 0x78, 0x72, 0x12, 0x07, + 0x4b, 0x25, 0x7c, 0x90, 0x12, 0x42, 0xd6, 0x6a, 0x12, 0x50, 0x7c, 0x90, + 0xe0, 0x42, 0xa3, 0xfe, + 0xff, 0xe0, 0x6b, 0x12, 0x90, 0x01, 0x42, 0x7c, 0xa3, 0xf0, 0xf0, 0xef, + 0x7c, 0x90, 0xe0, 0x42, + 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0x40, 0x7c, 0x9f, 0xe0, 0x7c, 0x90, + 0xe0, 0x3f, 0x50, 0x9e, + 0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0xe9, 0x80, 0x94, 0x18, 0x40, + 0x7c, 0x90, 0xe0, 0x3f, + 0xa3, 0xff, 0x90, 0xe0, 0x4e, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, + 0x3f, 0x7c, 0xf0, 0xe4, + 0xf0, 0xa3, 0xf0, 0xa3, 0x7c, 0x90, 0xe0, 0x41, 0xf0, 0x04, 0x7c, 0x90, + 0xe0, 0x89, 0x17, 0x64, + 0x20, 0x70, 0x6c, 0x7d, 0x12, 0xff, 0x07, 0x12, 0x57, 0x7d, 0x12, 0x12, + 0xc3, 0x38, 0x6a, 0x12, + 0x40, 0xe2, 0x7d, 0x52, 0x7f, 0x3d, 0x12, 0x50, 0x76, 0x12, 0x70, 0x7d, + 0x71, 0x7c, 0x08, 0x7f, + 0x3e, 0x80, 0x7c, 0x90, 0xe0, 0x89, 0x74, 0xff, 0xc3, 0x17, 0x50, 0x9f, + 0xef, 0x38, 0x57, 0x94, + 0x33, 0x50, 0x7c, 0x90, 0xe0, 0x4f, 0x64, 0x94, 0x7c, 0x90, 0xe0, 0x4e, + 0x00, 0x94, 0x06, 0x40, + 0x12, 0xd3, 0xe2, 0x6a, 0x1f, 0x50, 0x16, 0x7d, 0x12, 0x12, 0x7d, 0x38, + 0x12, 0x18, 0x24, 0x12, + 0x70, 0x7d, 0x12, 0x12, 0x7d, 0x5c, 0x12, 0x57, 0x5c, 0x12, 0x6c, 0x7d, + 0x71, 0x7c, 0x5a, 0x7f, + 0x00, 0x7e, 0x6f, 0x12, 0x90, 0x57, 0x32, 0x7c, 0x20, 0xe0, 0x03, 0xe0, + 0x11, 0x02, 0x90, 0xb4, + 0xd2, 0x7f, 0x6a, 0x12, 0x90, 0xfa, 0xd4, 0x7f, 0xf0, 0xe4, 0x12, 0xa3, + 0x65, 0x12, 0x94, 0xc3, + 0xee, 0xff, 0x3f, 0x94, 0x51, 0x40, 0x7c, 0x90, 0xe0, 0x8c, 0x0a, 0x94, + 0x41, 0x40, 0x1b, 0x7d, + 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x1d, 0x7d, 0x12, 0x12, + 0x7f, 0x24, 0x12, 0x02, + 0x2e, 0x12, 0x0c, 0x7f, 0x12, 0x12, 0x7f, 0x2e, 0x12, 0x08, 0x42, 0x12, + 0x30, 0x7f, 0x12, 0x12, + 0x7d, 0x42, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x20, 0x12, 0x00, 0x57, 0x6f, + 0x1d, 0x7d, 0x71, 0x7c, + 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x1b, 0x7d, 0xff, 0x7f, 0x12, 0x12, + 0x80, 0x76, 0x90, 0x08, + 0x8c, 0x7c, 0x04, 0xe0, 0x80, 0xf0, 0x90, 0x05, 0x8c, 0x7c, 0xf0, 0xe4, + 0x7f, 0x90, 0xe0, 0xaf, + 0xe1, 0x20, 0x7f, 0x3c, 0x7e, 0x45, 0x12, 0x71, 0xf0, 0x6e, 0x7c, 0x90, + 0xee, 0x7f, 0xa3, 0xf0, + 0xf0, 0xef, 0x46, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x81, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, + 0x7f, 0xf0, 0x7e, 0x47, 0x12, 0x71, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x83, + 0xa3, 0xf0, 0xf0, 0xef, + 0x48, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x85, 0x7c, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, + 0x12, 0x04, 0x8c, 0x1b, 0x7c, 0x90, 0xe0, 0x89, 0x94, 0xc3, 0x7d, 0x57, + 0x7c, 0x22, 0x40, 0x71, + 0x7f, 0x42, 0x7e, 0xd0, 0x12, 0x00, 0x57, 0x6f, 0x00, 0x7d, 0x92, 0x7c, + 0x01, 0x7f, 0x12, 0x12, + 0x7f, 0x96, 0x7e, 0x1f, 0x12, 0x00, 0x57, 0x6f, 0x6d, 0x7d, 0x71, 0x7c, + 0xff, 0x7f, 0x7f, 0x7e, + 0x6f, 0x12, 0x90, 0x57, 0x8d, 0x7c, 0xff, 0xe0, 0xe0, 0xa3, 0x7c, 0x90, + 0xcf, 0x8f, 0xa3, 0xf0, + 0xf0, 0xef, 0x6f, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x8d, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, + 0x80, 0xf0, 0x7f, 0x0d, 0x12, 0xd2, 0x96, 0x12, 0x0f, 0x7f, 0x12, 0x12, + 0x12, 0x4c, 0x7e, 0x12, + 0x7c, 0x90, 0xe0, 0x32, 0xe2, 0x30, 0x12, 0x31, 0x8a, 0x12, 0x12, 0x12, + 0x7d, 0x65, 0x7c, 0x22, + 0x7f, 0x71, 0x12, 0xd2, 0x4c, 0x12, 0x2c, 0x7d, 0x94, 0x7c, 0x0f, 0x7f, + 0x00, 0x7e, 0x6f, 0x12, + 0x12, 0x57, 0x7e, 0x12, 0x7f, 0x90, 0xe4, 0xd2, 0xa3, 0xf0, 0x90, 0xf0, + 0xd4, 0x7f, 0xa3, 0xf0, + 0x7d, 0xf0, 0x7f, 0x57, 0x12, 0x01, 0x07, 0x12, 0x07, 0xd0, 0x06, 0xd0, + 0x05, 0xd0, 0x04, 0xd0, + 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, + 0x83, 0xd0, 0xf0, 0xd0, + 0xe0, 0xd0, 0x7c, 0x32, 0xfe, 0x71, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x16, + 0x7f, 0x71, 0x7e, 0x04, + 0x12, 0x00, 0x57, 0x6f, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, + 0x6f, 0x12, 0x22, 0x57, + 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x1d, 0x7d, + 0x71, 0x7c, 0x00, 0x7e, + 0x6f, 0x12, 0x22, 0x57, 0x71, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x12, + 0x22, 0x57, 0x1d, 0x7d, + 0x71, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x00, 0x7e, 0x6f, 0x12, + 0x7d, 0x57, 0x7c, 0x00, + 0xe4, 0x92, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x71, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0x57, 0x6f, + 0xf0, 0x22, 0x29, 0x7f, 0x71, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x8a, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, + 0x22, 0xf0, 0x71, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x6d, 0x7d, + 0x71, 0x7c, 0xad, 0x7f, + 0x01, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x23, 0x7f, 0x71, 0x7e, 0x6e, 0x12, + 0x90, 0xf0, 0x89, 0x7c, + 0x22, 0xef, 0x00, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x2c, 0x22, 0x94, + 0x30, 0x30, 0x90, 0x10, + 0x80, 0x7a, 0x01, 0x74, 0x7d, 0xf0, 0x7c, 0x2e, 0xe4, 0x55, 0xfe, 0xff, + 0x6f, 0x12, 0x20, 0x57, + 0x24, 0x11, 0x7b, 0x90, 0xe4, 0x49, 0xf0, 0x75, 0x12, 0x01, 0x8c, 0x24, + 0x90, 0xc3, 0x4a, 0x7b, + 0x94, 0xe0, 0x90, 0x9a, 0x49, 0x7b, 0x94, 0xe0, 0x40, 0x02, 0xe4, 0x12, + 0xa3, 0xf0, 0x90, 0xf0, + 0x80, 0x7a, 0xf0, 0x04, 0x07, 0x80, 0x90, 0xe4, 0x49, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0x95, 0x7f, + 0x54, 0xe0, 0xc3, 0x0f, 0x02, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0x80, + 0xf0, 0x01, 0x7a, 0x90, + 0xe0, 0x80, 0x27, 0x60, 0xf0, 0xe4, 0x7b, 0x90, 0x04, 0x2c, 0xe4, 0xf0, + 0x7b, 0x90, 0xf0, 0x3a, + 0x7b, 0x90, 0xf0, 0x3b, 0x11, 0xc2, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, + 0x02, 0x03, 0xf5, 0x15, + 0x7b, 0x90, 0x7d, 0x2c, 0x12, 0x10, 0xf6, 0x15, 0x71, 0x02, 0x90, 0x45, + 0x66, 0x7f, 0xa3, 0xe0, + 0xe1, 0x30, 0x12, 0x05, 0x14, 0x47, 0x03, 0x80, 0x71, 0x12, 0x12, 0x45, + 0x6d, 0x57, 0x7b, 0x90, + 0xe0, 0x3c, 0xf0, 0x04, 0xc3, 0xe0, 0x04, 0x94, 0x03, 0x50, 0x15, 0x02, + 0xe4, 0xf5, 0x12, 0xf0, + 0x89, 0x68, 0x86, 0x94, 0x08, 0x40, 0x7b, 0x90, 0xe0, 0x3a, 0xf0, 0x04, + 0x05, 0x80, 0x90, 0xe4, + 0x3a, 0x7b, 0xef, 0xf0, 0x94, 0xd3, 0x50, 0x6c, 0x90, 0x08, 0x3b, 0x7b, + 0x04, 0xe0, 0x80, 0xf0, + 0xe4, 0x05, 0x7b, 0x90, 0xf0, 0x3b, 0x7b, 0x90, 0xe0, 0x3a, 0x94, 0xc3, + 0x40, 0x03, 0x74, 0x05, + 0xf0, 0x03, 0x11, 0xd2, 0x7b, 0x90, 0xe0, 0x3b, 0x94, 0xc3, 0x40, 0x06, + 0x74, 0x05, 0xf0, 0x06, + 0x11, 0xc2, 0x7b, 0x90, 0xe0, 0x2c, 0x7c, 0x90, 0xf0, 0x14, 0x7b, 0x90, + 0xe0, 0x44, 0x94, 0xc3, + 0x40, 0xac, 0x12, 0x0b, 0x70, 0x68, 0x07, 0x74, 0xe4, 0xf0, 0x7a, 0x90, + 0xf0, 0xc6, 0x68, 0x12, + 0x94, 0x89, 0x50, 0xac, 0x12, 0x0b, 0x70, 0x68, 0x09, 0x74, 0xe4, 0xf0, + 0x7a, 0x90, 0xf0, 0xc6, + 0xc3, 0xef, 0x89, 0x94, 0x12, 0x50, 0x68, 0x12, 0xe4, 0x90, 0x7a, 0x90, + 0x12, 0xc6, 0x75, 0x68, + 0x09, 0x74, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x31, 0x7a, 0x90, 0xe0, 0xa8, + 0x90, 0xff, 0x59, 0x3b, + 0xfe, 0x93, 0x7c, 0x90, 0xf0, 0x16, 0x7b, 0x90, 0xe0, 0x2e, 0x9e, 0xd3, + 0x08, 0x40, 0x7c, 0x90, + 0xe0, 0x16, 0x7b, 0x90, 0xf0, 0x2e, 0x11, 0x30, 0x02, 0x03, 0xc0, 0x14, + 0x7b, 0x90, 0xe0, 0x44, + 0x94, 0xc3, 0x50, 0x7b, 0x12, 0x21, 0x64, 0x68, 0x02, 0x74, 0x68, 0x12, + 0xef, 0x53, 0x06, 0x94, + 0x06, 0x50, 0x7b, 0x90, 0x74, 0x2d, 0xf0, 0x01, 0x7a, 0x90, 0xe0, 0xa8, + 0x94, 0xd3, 0x50, 0x04, + 0xe4, 0x05, 0x7b, 0x90, 0xf0, 0x2d, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, + 0x50, 0x05, 0x02, 0x03, + 0xc0, 0x14, 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xff, 0x50, 0x7b, 0x30, 0x29, + 0x26, 0x14, 0x7a, 0x90, + 0xe0, 0xcb, 0x20, 0x70, 0x68, 0x12, 0x74, 0x90, 0x12, 0x04, 0x4d, 0x68, + 0xc3, 0xef, 0x6c, 0x94, + 0x03, 0x40, 0x01, 0x74, 0x90, 0xf0, 0x44, 0x7b, 0xc3, 0xe0, 0x72, 0x94, + 0x06, 0x40, 0x7b, 0x90, + 0x74, 0x31, 0xf0, 0x03, 0x68, 0x12, 0x94, 0x89, 0x50, 0x69, 0x30, 0x11, + 0x0e, 0x14, 0x7a, 0x90, + 0xe0, 0xcb, 0x08, 0x70, 0x68, 0x12, 0x74, 0x90, 0x12, 0x05, 0x4d, 0x68, + 0xc3, 0xef, 0x5f, 0x94, + 0x0e, 0x50, 0x68, 0x12, 0x90, 0x64, 0x2d, 0x7b, 0x01, 0x74, 0x74, 0xf0, + 0x12, 0x07, 0x59, 0x68, + 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xc3, 0x50, 0x4c, 0x12, 0x0c, 0x64, 0x68, + 0x12, 0xe4, 0x78, 0x68, + 0x06, 0x74, 0x68, 0x12, 0x12, 0x5c, 0x89, 0x68, 0x32, 0x94, 0x0c, 0x50, + 0x68, 0x12, 0xe4, 0x64, + 0x68, 0x12, 0x74, 0x78, 0x12, 0x04, 0x5c, 0x68, 0xc3, 0xef, 0x17, 0x94, + 0x0e, 0x50, 0x68, 0x12, + 0x74, 0x64, 0x12, 0x01, 0x78, 0x68, 0xf0, 0x04, 0x7a, 0x90, 0xf0, 0xc6, + 0x7c, 0x90, 0x74, 0x17, + 0xf0, 0x08, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, 0x40, 0x05, 0x90, 0x06, + 0x17, 0x7c, 0x09, 0x74, + 0x90, 0xf0, 0x2e, 0x7b, 0xff, 0xe0, 0x94, 0xc3, 0x50, 0x08, 0x90, 0x05, + 0x17, 0x7c, 0xf0, 0xef, + 0x7a, 0x90, 0x74, 0xc9, 0xf0, 0x01, 0x14, 0x20, 0x90, 0x09, 0x2c, 0x7b, + 0xd3, 0xe0, 0x07, 0x94, + 0x05, 0x40, 0x90, 0xe4, 0xc9, 0x7a, 0x90, 0xf0, 0x2c, 0x7b, 0xff, 0xe0, + 0x7b, 0x90, 0xe0, 0x31, + 0x12, 0xfd, 0x03, 0x68, 0x7b, 0x90, 0xee, 0x2f, 0xa3, 0xf0, 0xf0, 0xef, + 0x7c, 0x90, 0x74, 0x15, + 0xf0, 0x1f, 0x7b, 0x90, 0xe0, 0x2c, 0xc3, 0xff, 0x16, 0x94, 0x0c, 0x40, + 0x7a, 0x90, 0xe0, 0xa8, + 0x3b, 0x90, 0x93, 0x51, 0x7c, 0x90, 0xf0, 0x15, 0x64, 0xef, 0xff, 0x01, + 0x7b, 0x90, 0xf0, 0x2c, + 0x7f, 0x90, 0xe0, 0x69, 0x54, 0x5f, 0xfe, 0x07, 0x54, 0xef, 0x4e, 0x18, + 0x7b, 0x90, 0xf0, 0x2c, + 0x7f, 0x90, 0xe0, 0x69, 0x18, 0x54, 0x90, 0xff, 0x2c, 0x7b, 0xfe, 0xe0, + 0x18, 0x54, 0x9f, 0xd3, + 0x0f, 0x40, 0x54, 0xee, 0xff, 0x07, 0x7f, 0x90, 0xe0, 0x69, 0x18, 0x54, + 0x90, 0x4f, 0x2c, 0x7b, + 0x90, 0xf0, 0x2c, 0x7b, 0x64, 0xe0, 0xf0, 0x01, 0x7f, 0x90, 0xe0, 0x67, + 0xe2, 0x20, 0x02, 0x03, + 0xf5, 0x15, 0x7a, 0x90, 0xe0, 0xc6, 0x0b, 0x60, 0x15, 0x7d, 0x56, 0x7c, + 0x01, 0x7f, 0x00, 0x7e, + 0x6f, 0x12, 0x12, 0x57, 0x27, 0x58, 0x7b, 0x90, 0xe0, 0x2c, 0x7e, 0xff, + 0x7d, 0x00, 0x7c, 0x10, + 0x12, 0x52, 0x57, 0x6f, 0x7c, 0x90, 0x7c, 0x17, 0x12, 0x52, 0x0e, 0x16, + 0x7b, 0x90, 0x7d, 0x2d, + 0x12, 0x11, 0xf6, 0x15, 0x7b, 0x90, 0xe0, 0x2f, 0xa3, 0xfe, 0xff, 0xe0, + 0x13, 0x7d, 0x54, 0x7c, + 0x6f, 0x12, 0x90, 0x57, 0x31, 0x7b, 0x14, 0x7d, 0x16, 0x12, 0x90, 0x18, + 0x2e, 0x7b, 0x54, 0x7c, + 0x16, 0x12, 0x90, 0x0e, 0x2d, 0x7b, 0x11, 0x7d, 0x16, 0x12, 0x90, 0x18, + 0xc6, 0x7a, 0x70, 0xe0, + 0xfe, 0x04, 0x80, 0xff, 0x7e, 0x04, 0x7f, 0x00, 0x7d, 0x01, 0x7c, 0x15, + 0x12, 0x54, 0x57, 0x6f, + 0x7c, 0x90, 0xe0, 0x15, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x1e, 0x12, 0x54, + 0x57, 0x6f, 0x6e, 0x12, + 0x22, 0x05, 0xff, 0xe0, 0x00, 0x7e, 0x52, 0x7c, 0x6f, 0x12, 0x90, 0x57, + 0x2c, 0x7b, 0xff, 0xe0, + 0x00, 0x7e, 0x10, 0x7d, 0x54, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, + 0x00, 0x7e, 0x12, 0x7d, + 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x54, 0x7c, 0x6f, 0x12, + 0x22, 0x57, 0x0d, 0xaf, + 0x33, 0xef, 0xe0, 0x95, 0xef, 0xfe, 0xe0, 0x25, 0xee, 0xff, 0xfe, 0x33, + 0xa4, 0x74, 0xf5, 0x2f, + 0x74, 0x82, 0x3e, 0x7d, 0x83, 0xf5, 0xf0, 0xe4, 0xf0, 0xa3, 0x0d, 0x05, + 0x0d, 0xe5, 0x90, 0x22, + 0xbf, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xbf, 0x7b, 0xe4, 0xc3, + 0xff, 0x9f, 0x9e, 0xe4, + 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0x22, 0x48, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, + 0xc3, 0xff, 0x9f, 0xe4, + 0xe4, 0xff, 0x22, 0x9e, 0x90, 0xff, 0xbc, 0x7b, 0xf0, 0xee, 0xef, 0xa3, + 0x22, 0xf0, 0xa2, 0xce, + 0x13, 0xe7, 0x13, 0xce, 0x90, 0x22, 0xbc, 0x7b, 0xef, 0xf0, 0xf0, 0xa3, + 0x7b, 0x90, 0xe0, 0xbf, + 0xa3, 0xfe, 0x22, 0xe0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x90, 0x22, + 0x48, 0x7e, 0xfe, 0xe0, + 0xe0, 0xa3, 0xd3, 0xff, 0x7e, 0x90, 0xe0, 0x47, 0xee, 0x9f, 0x80, 0x64, + 0x90, 0xf8, 0x46, 0x7e, + 0x64, 0xe0, 0x98, 0x80, 0xf5, 0x22, 0xec, 0x83, 0xa3, 0xf0, 0xf0, 0xed, + 0xeb, 0xc3, 0xff, 0x9f, + 0x9e, 0xea, 0x90, 0xfe, 0xbf, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, + 0x80, 0x64, 0x80, 0x94, + 0x90, 0x22, 0xbc, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0xff, 0x22, 0x7b, 0x90, + 0xe0, 0x63, 0xff, 0x2f, + 0x7b, 0x90, 0xe0, 0x62, 0xfe, 0x3e, 0x95, 0x33, 0x90, 0xe0, 0xa0, 0x7d, + 0xf0, 0xee, 0xa3, 0xef, + 0x7e, 0xf0, 0x7f, 0x7d, 0x22, 0xa0, 0x90, 0xee, 0xbf, 0x7b, 0xa3, 0xf0, + 0xf0, 0xef, 0xfe, 0x22, + 0x7b, 0x90, 0xe0, 0xb5, 0x00, 0x34, 0x7b, 0x90, 0xf0, 0xbf, 0xce, 0xa3, + 0xf5, 0x22, 0xe0, 0x83, + 0xa3, 0xff, 0x90, 0xe0, 0xc1, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, + 0xc1, 0x7b, 0xfc, 0xe0, + 0xe0, 0xa3, 0x22, 0xfd, 0x80, 0x64, 0x90, 0x98, 0x30, 0x7c, 0xfe, 0xe0, + 0xe0, 0xa3, 0xe0, 0x22, + 0xa3, 0xfe, 0xe0, 0xd3, 0x90, 0xff, 0x1b, 0x7e, 0x9f, 0xe0, 0x7e, 0x90, + 0xe0, 0x1a, 0x22, 0x9e, + 0x0b, 0x24, 0x82, 0xf5, 0x3e, 0xe4, 0x83, 0xf5, 0x22, 0xe0, 0xc3, 0xff, + 0x9f, 0xe4, 0xe4, 0xff, + 0xfe, 0x9e, 0x7e, 0x90, 0xe0, 0x1d, 0x00, 0x7c, 0xff, 0x2f, 0x3e, 0xec, + 0x90, 0xfe, 0x1f, 0x7e, + 0xfd, 0xe0, 0x90, 0x22, 0x64, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0x22, + 0xa0, 0x7d, 0xf0, 0xcf, + 0xef, 0xa3, 0x7e, 0xf0, 0x7f, 0x7d, 0x22, 0xa0, 0x90, 0xd3, 0xc2, 0x7b, + 0x94, 0xe0, 0x90, 0xff, + 0xc1, 0x7b, 0x64, 0xe0, 0x22, 0x80, 0xc3, 0xff, 0x9f, 0xed, 0xec, 0xfd, + 0xfc, 0x9e, 0x7b, 0x90, + 0xe0, 0xbf, 0xa3, 0xfa, 0xfb, 0xe0, 0xfd, 0x2d, 0x3c, 0xea, 0xe9, 0xfc, + 0xe0, 0x25, 0xd3, 0x22, + 0x7b, 0x90, 0xe0, 0xc0, 0xff, 0x94, 0x7b, 0x90, 0xe0, 0xbf, 0x80, 0x64, + 0xee, 0x22, 0x7b, 0x90, + 0xf0, 0xc1, 0xef, 0xa3, 0x22, 0xf0, 0xac, 0xfd, 0x90, 0x06, 0x64, 0x7e, + 0xa2, 0xe0, 0x13, 0xe7, + 0xa3, 0xfe, 0x13, 0xe0, 0xff, 0x22, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, + 0x7d, 0x90, 0x74, 0xb4, + 0xf0, 0x04, 0xe4, 0xa3, 0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa4, 0xfc, 0x16, + 0xa3, 0x22, 0x90, 0xf0, + 0x05, 0x7e, 0x54, 0xe0, 0x22, 0xc0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, + 0x22, 0xf0, 0x90, 0xfe, + 0xb3, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0x22, 0xfd, 0x0d, 0xaf, 0x33, 0xef, + 0xe0, 0x95, 0xef, 0xfe, + 0xe0, 0x25, 0xee, 0xff, 0xfe, 0x33, 0xff, 0x22, 0xe4, 0xc3, 0xff, 0x9f, + 0x9e, 0xe4, 0xff, 0x22, + 0x90, 0xc3, 0x65, 0x7e, 0x9f, 0xe0, 0x90, 0xff, 0x64, 0x7e, 0x9e, 0xe0, + 0x22, 0xfe, 0x7e, 0x90, + 0xe0, 0x02, 0xa3, 0xff, 0x90, 0xe0, 0xb8, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, + 0xff, 0x22, 0x90, 0xc3, + 0xc0, 0x7b, 0x9f, 0xe0, 0x90, 0xff, 0xbf, 0x7b, 0x9e, 0xe0, 0xff, 0x22, + 0x82, 0xf5, 0x83, 0x8e, + 0xa3, 0xa3, 0xe0, 0x22, 0xed, 0xff, 0xee, 0x9f, 0x80, 0x64, 0xec, 0xf8, + 0x90, 0x22, 0x2a, 0x7c, + 0x25, 0x02, 0x12, 0x8e, 0xb8, 0x24, 0x7c, 0x90, 0x02, 0x2a, 0xaa, 0x25, + 0xff, 0xe0, 0xe0, 0xa3, + 0x7e, 0x90, 0xcf, 0x14, 0xa3, 0xf0, 0xf0, 0xef, 0xe0, 0x22, 0x54, 0xc4, + 0xff, 0x0f, 0x01, 0x74, + 0x00, 0x7e, 0x07, 0xa8, 0x22, 0x08, 0xee, 0xff, 0xa3, 0xf0, 0xf0, 0xef, + 0x7d, 0x22, 0x7c, 0x2e, + 0x7e, 0x83, 0x22, 0x00, 0x81, 0x7f, 0x19, 0x7d, 0x85, 0x7c, 0x00, 0x7e, + 0xff, 0x22, 0x8f, 0xee, + 0x02, 0xf0, 0x8c, 0x24, 0x7b, 0x90, 0xe0, 0xbc, 0xa3, 0xff, 0x22, 0xe0, + 0xff, 0xf4, 0x7e, 0x90, + 0xe4, 0x08, 0xa3, 0xf0, 0x5f, 0xe0, 0x22, 0xf0, 0x90, 0xff, 0x2f, 0x7c, + 0x9f, 0xe0, 0x7c, 0x90, + 0xe0, 0x2e, 0x22, 0x9e, 0xe0, 0xff, 0x01, 0x54, 0xa3, 0xfc, 0xfd, 0xe0, + 0x24, 0x02, 0x90, 0x7a, + 0x48, 0x7e, 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0x46, 0x90, 0x22, + 0x89, 0x7e, 0xff, 0xe0, + 0x00, 0x7e, 0x11, 0x7d, 0x85, 0x7c, 0x90, 0x22, 0xb7, 0x7b, 0x54, 0xe0, + 0xff, 0x03, 0xe4, 0x22, + 0x32, 0xf5, 0x7b, 0x90, 0xf0, 0xb7, 0x12, 0x22, 0x7a, 0x24, 0xa2, 0xee, + 0x13, 0xe7, 0xef, 0xfe, + 0x22, 0x13, 0x82, 0x8f, 0x83, 0x8e, 0xa3, 0xa3, 0xf0, 0xe4, 0xf0, 0xa3, + 0x90, 0x22, 0x2d, 0x7e, + 0x9f, 0xe0, 0x7e, 0x90, 0xe0, 0x2c, 0x22, 0x9e, 0x90, 0xe4, 0xb3, 0x7b, + 0xa3, 0xf0, 0x22, 0xf0, + 0xee, 0xff, 0xa3, 0xf0, 0xf0, 0xef, 0x1c, 0x7d, 0x82, 0x7c, 0x90, 0x22, + 0x20, 0x7c, 0x25, 0x02, + 0x7c, 0x72, 0x7f, 0x85, 0x7e, 0x0b, 0x22, 0x00, 0xfe, 0xe0, 0xe0, 0xa3, + 0xc3, 0xff, 0xe4, 0x22, + 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0x24, 0x12, 0xee, 0x7a, 0x95, 0x33, + 0xfd, 0xe0, 0x22, 0xfc, + 0x7e, 0x90, 0xe0, 0x46, 0xa3, 0xfe, 0x78, 0xe0, 0x22, 0x05, 0x7e, 0x90, + 0xe0, 0x05, 0x13, 0xc4, + 0x54, 0x13, 0x22, 0x03, 0xaf, 0xc2, 0xfe, 0x80, 0xc0, 0x32, 0xe5, 0xe0, + 0x54, 0xd0, 0x64, 0x18, + 0x70, 0x08, 0xd0, 0x03, 0x32, 0xe0, 0xe0, 0xd0, 0x19, 0x12, 0x85, 0x4c, + 0x0b, 0xd0, 0xd0, 0x75, + 0xaa, 0x08, 0xc2, 0xe0, 0xe5, 0x8c, 0x24, 0x8a, 0xf5, 0xf7, 0xe5, 0x8a, + 0x34, 0x8c, 0xf5, 0xd8, + 0xd2, 0x8c, 0xec, 0x8c, 0x40, 0x24, 0xe6, 0xf8, 0x04, 0xbc, 0x74, 0x02, + 0xc3, 0x7f, 0x81, 0x95, + 0x01, 0xb4, 0x40, 0x00, 0x79, 0xbf, 0x78, 0x05, 0x16, 0x35, 0x08, 0xe6, + 0x0b, 0x70, 0xaf, 0xc2, + 0x30, 0xe6, 0x03, 0xe1, 0x18, 0x44, 0xd2, 0xf6, 0x08, 0xaf, 0xed, 0xd9, + 0x8b, 0xea, 0xd2, 0xd0, + 0x22, 0x68, 0x0c, 0xe5, 0x23, 0xff, 0x36, 0x24, 0x0f, 0xf8, 0x08, 0x08, + 0xb5, 0xef, 0x06, 0x0c, + 0x68, 0x10, 0x43, 0x03, 0x01, 0x87, 0x05, 0xbf, 0x7f, 0x04, 0x78, 0x00, + 0xe6, 0x36, 0xe4, 0x30, + 0x00, 0xe8, 0x0c, 0xe5, 0x9f, 0xc3, 0x20, 0x50, 0x0c, 0x05, 0x3f, 0x74, + 0x0c, 0x25, 0xe6, 0xf8, + 0xa6, 0xfd, 0x08, 0x81, 0xae, 0xe6, 0xbe, 0x0c, 0x02, 0x04, 0x7f, 0x74, + 0xf8, 0xcd, 0x6d, 0xe8, + 0xe0, 0x60, 0xe6, 0x08, 0xe0, 0xc0, 0xf6, 0x80, 0x0c, 0xe5, 0x9f, 0xd3, + 0x27, 0x40, 0x0c, 0xe5, + 0x40, 0x24, 0xe6, 0xf8, 0x0c, 0xae, 0x04, 0xbe, 0x74, 0x02, 0xfd, 0x7f, + 0xe6, 0x18, 0xf8, 0xcd, + 0x81, 0xe5, 0x60, 0x6d, 0xd0, 0x06, 0xf6, 0xe0, 0x80, 0x18, 0xe5, 0xf5, + 0x24, 0x0c, 0xc8, 0x3f, + 0x15, 0xf6, 0x80, 0x0c, 0xe5, 0xd3, 0x23, 0x0c, 0x36, 0x24, 0x7f, 0xf8, + 0xc2, 0x04, 0xe6, 0xaf, + 0xe0, 0x30, 0x10, 0x03, 0x0c, 0xe2, 0x00, 0x7f, 0xe1, 0x30, 0x30, 0x07, + 0x04, 0xe3, 0x08, 0x7f, + 0xf4, 0x54, 0x7c, 0x54, 0xd2, 0xc6, 0x54, 0xaf, 0x42, 0x80, 0x22, 0x07, + 0x3f, 0x78, 0x81, 0xa6, + 0x04, 0x74, 0x06, 0x60, 0x08, 0xff, 0x7f, 0x76, 0xfb, 0xdf, 0x05, 0x7f, + 0x78, 0xe4, 0xf6, 0x35, + 0xf6, 0x08, 0xdf, 0x08, 0x78, 0xfa, 0x76, 0x36, 0x90, 0x30, 0x7d, 0x72, + 0x01, 0x74, 0xc0, 0x93, + 0xe4, 0xe0, 0xc0, 0x93, 0x43, 0xe0, 0x01, 0x89, 0x8a, 0x75, 0x75, 0xf0, + 0xd8, 0x8c, 0x8c, 0xd2, + 0xaf, 0xd2, 0xa9, 0xd2, 0x04, 0x22, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, + 0xff, 0x7f, 0x74, 0x22, + 0x2f, 0x36, 0xf8, 0x2f, 0x20, 0xe6, 0xf4, 0xe5, 0xaf, 0xc2, 0x44, 0xe6, + 0xf6, 0x30, 0xaf, 0xd2, + 0x0c, 0xae, 0xc3, 0xee, 0x50, 0x9f, 0x0e, 0x21, 0x3f, 0x74, 0xf8, 0x2e, + 0xf9, 0xe6, 0xe6, 0x08, + 0xbe, 0x18, 0x02, 0x04, 0x7f, 0x74, 0xed, 0xfd, 0x60, 0x69, 0x09, 0x09, + 0x19, 0xe7, 0xf7, 0x19, + 0x09, 0x09, 0xf3, 0x80, 0x16, 0x16, 0xda, 0x80, 0xd3, 0xee, 0x40, 0x9f, + 0x05, 0x04, 0x05, 0x81, + 0xee, 0x81, 0x9f, 0xd3, 0x22, 0x40, 0x3f, 0x74, 0xf8, 0x2e, 0xe6, 0x08, + 0xee, 0xf9, 0x0c, 0xb5, + 0xa9, 0x02, 0x18, 0x81, 0x06, 0x06, 0xfd, 0xe6, 0x69, 0xed, 0x09, 0x60, + 0x19, 0x19, 0x09, 0xe7, + 0xf7, 0x09, 0x80, 0x19, 0x1e, 0xf3, 0xd9, 0x80, 0x24, 0xef, 0xf8, 0x3f, + 0x04, 0xe6, 0xef, 0xf8, + 0x04, 0x2f, 0x72, 0x90, 0x93, 0x7d, 0x08, 0xf6, 0x2f, 0xef, 0xf6, 0x93, + 0x00, 0x7f, 0xef, 0x22, + 0x94, 0xd3, 0x40, 0x04, 0x7f, 0x03, 0x22, 0xff, 0x23, 0xef, 0x36, 0x24, + 0xe6, 0xf8, 0xe5, 0x30, + 0xc2, 0xf4, 0xe6, 0xaf, 0x8c, 0x54, 0xd2, 0xf6, 0xe5, 0xaf, 0xb5, 0x0c, + 0x0a, 0x07, 0x3f, 0x74, + 0xf8, 0x2f, 0xf5, 0xe6, 0x02, 0x81, 0xa6, 0x19, 0x2e, 0x50, 0x40, 0x74, + 0xf8, 0x2f, 0xbf, 0xe6, + 0x02, 0x04, 0x7f, 0x74, 0x18, 0xfd, 0xf9, 0xe6, 0x3f, 0x74, 0xf8, 0x2f, + 0xe6, 0xfb, 0xe9, 0xfc, + 0x60, 0x6c, 0xa8, 0x08, 0xe7, 0x05, 0x1d, 0xf6, 0x80, 0x19, 0xa8, 0xf4, + 0xa6, 0x03, 0x1f, 0x05, + 0x0c, 0xe5, 0x07, 0xb5, 0x7f, 0xe3, 0x22, 0x00, 0x40, 0x74, 0xf8, 0x2f, + 0xfd, 0xe6, 0x86, 0x18, + 0x0f, 0x01, 0x3f, 0x74, 0xf8, 0x2f, 0x01, 0xa6, 0x86, 0x08, 0xe5, 0x04, + 0xb5, 0x0c, 0x02, 0x07, + 0x81, 0xac, 0x6c, 0xed, 0x08, 0x60, 0x09, 0x0d, 0x05, 0xa8, 0xf7, 0xe6, + 0xf4, 0x80, 0x0c, 0xe5, + 0x07, 0xb5, 0x89, 0xde, 0x7f, 0x81, 0x22, 0x00, 0xd3, 0xef, 0x04, 0x94, + 0x03, 0x40, 0xff, 0x7f, + 0xef, 0x22, 0x24, 0x23, 0xf8, 0x36, 0xaf, 0xc2, 0x30, 0xe6, 0x05, 0xe5, + 0xe0, 0x30, 0xd2, 0x02, + 0xd2, 0xe4, 0xc6, 0xe2, 0xaf, 0xd2, 0x00, 0x7f, 0xe2, 0x30, 0x0f, 0x01, + 0x19, 0x02, 0x8f, 0xa3, + 0xe4, 0xf0, 0xfe, 0xff, 0x0c, 0xe5, 0x24, 0x23, 0xf8, 0x35, 0xa9, 0xc2, + 0xf7, 0x30, 0x7f, 0x0d, + 0xe6, 0x08, 0x0b, 0x60, 0xf6, 0x2d, 0x32, 0x60, 0x30, 0x50, 0x07, 0x80, + 0xf1, 0x30, 0xed, 0x06, + 0x60, 0xf6, 0x7e, 0x27, 0x08, 0x02, 0xf0, 0x30, 0xc2, 0x10, 0xe6, 0xaf, + 0xe7, 0x10, 0x0e, 0x25, + 0xe2, 0x30, 0xd2, 0x0c, 0x7f, 0xaf, 0x80, 0x04, 0xc2, 0x14, 0xe6, 0xaf, + 0xe7, 0x10, 0x54, 0x15, + 0x4e, 0xec, 0xd2, 0xf6, 0xd2, 0xaf, 0x02, 0xa9, 0xa6, 0x19, 0x08, 0x7f, + 0xef, 0x08, 0x83, 0x44, + 0xc2, 0xf4, 0x56, 0xaf, 0xd2, 0xc6, 0xd2, 0xaf, 0x54, 0xa9, 0x4f, 0x80, + 0x22, 0xff, 0xf5, 0xe4, + 0xd2, 0x2c, 0xc2, 0x40, 0x7b, 0x00, 0x7a, 0xff, 0x79, 0x61, 0x90, 0x53, + 0x91, 0x7c, 0x25, 0x12, + 0x7a, 0xf0, 0x79, 0x5c, 0x90, 0x06, 0x9a, 0x7c, 0x25, 0x12, 0x7a, 0xf0, + 0x79, 0x62, 0x90, 0x88, + 0x94, 0x7c, 0x25, 0x12, 0x7a, 0xf0, 0x79, 0x65, 0x90, 0x1f, 0x9d, 0x7c, + 0x25, 0x12, 0x7b, 0xf0, + 0x7a, 0x00, 0x79, 0x00, 0x90, 0x00, 0x97, 0x7c, 0x25, 0x12, 0x74, 0xf0, + 0x90, 0xff, 0xfa, 0x7f, + 0xa3, 0xf0, 0x90, 0xf0, 0x80, 0x7d, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0xff, + 0xb8, 0x75, 0x75, 0x38, + 0x01, 0xf8, 0xa8, 0x75, 0xe4, 0x82, 0xa9, 0xf5, 0xaa, 0xf5, 0xab, 0xf5, + 0xff, 0x7b, 0x72, 0x7a, + 0x9b, 0x79, 0x7c, 0x90, 0x12, 0xac, 0xf0, 0x25, 0x7c, 0x90, 0x12, 0xaf, + 0xf0, 0x25, 0xd1, 0xd2, + 0x72, 0x12, 0x90, 0xe8, 0xfa, 0x7f, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, + 0x02, 0x03, 0xcf, 0x1e, + 0x7f, 0x90, 0xe0, 0xfa, 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x02, 0x60, 0xf4, + 0x02, 0x03, 0xb0, 0x1e, + 0xf4, 0xe0, 0x03, 0x70, 0x1e, 0x02, 0x90, 0xab, 0xfb, 0x7f, 0x64, 0xe0, + 0x70, 0xfe, 0x12, 0x20, + 0x98, 0x6f, 0x7f, 0x90, 0xe0, 0xfe, 0xa3, 0xff, 0x90, 0xe0, 0xf6, 0x7f, + 0xf0, 0xcf, 0xef, 0xa3, + 0x90, 0xf0, 0xfc, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7f, 0x90, 0xcf, 0xf4, + 0x1e, 0x02, 0x90, 0x77, + 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0xfd, 0xc0, 0x27, 0xa2, 0xd0, 0x92, 0xaf, + 0xc2, 0xd1, 0x12, 0xaf, + 0x98, 0x6f, 0x7f, 0x7e, 0xf6, 0x7f, 0x12, 0x7d, 0x11, 0x7c, 0x71, 0x12, + 0x7e, 0xc3, 0x7f, 0x7f, + 0x7d, 0xf4, 0x7c, 0x13, 0x12, 0x11, 0xc3, 0x71, 0x40, 0x30, 0x02, 0xfd, + 0x9f, 0x1d, 0x7f, 0x90, + 0xe0, 0xfb, 0xc0, 0x64, 0x03, 0x60, 0x1d, 0x02, 0xc0, 0xa8, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, + 0x90, 0xaf, 0xf8, 0x7f, 0xa3, 0xe0, 0x54, 0xe0, 0x90, 0x7f, 0x08, 0x7c, + 0xe0, 0xf0, 0xd3, 0xff, + 0x1c, 0x94, 0x0d, 0x40, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, 0x74, 0xa3, + 0xf0, 0xfc, 0x1d, 0x02, + 0x90, 0x9f, 0xf9, 0x7f, 0x30, 0xe0, 0x1f, 0xe7, 0x7f, 0x7c, 0xf6, 0x7d, + 0x74, 0xc3, 0x9f, 0xf6, + 0x7c, 0x90, 0x12, 0x04, 0xac, 0x6f, 0x7f, 0x90, 0xe0, 0xf6, 0xa3, 0xff, + 0x90, 0xe0, 0x06, 0x7c, + 0xf0, 0xcf, 0xef, 0xa3, 0x80, 0xf0, 0x90, 0x20, 0xf6, 0x7f, 0xff, 0xe0, + 0xe0, 0xa3, 0x7c, 0x90, + 0xcf, 0x04, 0xa3, 0xf0, 0xf0, 0xef, 0xf6, 0x7f, 0x7c, 0x90, 0xe0, 0x08, + 0xc3, 0xfd, 0xf6, 0x74, + 0x90, 0x9d, 0x06, 0x7c, 0x6f, 0x12, 0x90, 0xac, 0x08, 0x7c, 0xd3, 0xe0, + 0x00, 0x94, 0x18, 0x40, + 0x7c, 0x90, 0x12, 0x04, 0x9f, 0x6f, 0xff, 0xe0, 0x7c, 0x90, 0x12, 0x06, + 0x9f, 0x6f, 0xf0, 0xef, + 0x7c, 0x90, 0xe0, 0x08, 0xf0, 0x14, 0xdf, 0x80, 0x6f, 0x12, 0xa2, 0x97, + 0x92, 0xd1, 0xd0, 0xaf, + 0x02, 0xd0, 0xc8, 0x1e, 0x7f, 0x90, 0xe0, 0xfb, 0x80, 0x64, 0x58, 0x70, + 0x6f, 0x12, 0xaf, 0x98, + 0x90, 0xa8, 0xf6, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0xa9, 0xaf, 0x7f, 0x90, + 0xe4, 0xf4, 0xa3, 0xf0, + 0xf0, 0xef, 0xaa, 0xaf, 0x7f, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, 0xf0, 0xef, + 0xab, 0xaf, 0x7f, 0x90, + 0xe4, 0xf0, 0xa3, 0xf0, 0xf0, 0xef, 0xb8, 0xaf, 0x7f, 0x90, 0xe4, 0xee, + 0xa3, 0xf0, 0xf0, 0xef, + 0xf8, 0xaf, 0x7f, 0x90, 0xe4, 0xec, 0xa3, 0xf0, 0xf0, 0xef, 0xd0, 0xaf, + 0x7f, 0x90, 0xe4, 0xea, + 0xa3, 0xf0, 0xf0, 0xef, 0x40, 0xa2, 0xff, 0xe4, 0x90, 0x33, 0xe8, 0x7f, + 0xf0, 0xcf, 0xef, 0xa3, + 0x02, 0xf0, 0xc8, 0x1e, 0x7f, 0x90, 0xe0, 0xfb, 0x88, 0x64, 0x49, 0x70, + 0x7f, 0x90, 0xe0, 0xf6, + 0xe0, 0xa3, 0xa8, 0xf5, 0x7f, 0x90, 0xe0, 0xf4, 0xe0, 0xa3, 0xa9, 0xf5, + 0x7f, 0x90, 0xe0, 0xf2, + 0xe0, 0xa3, 0xaa, 0xf5, 0x7f, 0x90, 0xe0, 0xf0, 0xe0, 0xa3, 0xab, 0xf5, + 0x7f, 0x90, 0xe0, 0xee, + 0xe0, 0xa3, 0xb8, 0xf5, 0x7f, 0x90, 0xe0, 0xec, 0xe0, 0xa3, 0xf8, 0xf5, + 0x7f, 0x90, 0xe0, 0xea, + 0xe0, 0xa3, 0xd0, 0xf5, 0x7f, 0x90, 0xe0, 0xe8, 0xa3, 0xfe, 0xff, 0xe0, + 0x4f, 0xee, 0xff, 0x24, + 0x40, 0x92, 0x80, 0xe4, 0x90, 0x52, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x89, + 0x12, 0x06, 0x2f, 0x6e, + 0x80, 0xe4, 0x90, 0x44, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x82, 0x12, 0x0e, + 0x98, 0x6f, 0x81, 0xaf, + 0x7f, 0x90, 0xf0, 0xf6, 0xef, 0xa3, 0x80, 0xf0, 0x90, 0x4b, 0xfb, 0x7f, + 0x64, 0xe0, 0x70, 0x83, + 0x90, 0x0d, 0x80, 0x7d, 0xa3, 0xf0, 0x12, 0xf0, 0x98, 0x6f, 0x00, 0xd2, + 0x36, 0x80, 0x7f, 0x90, + 0xe0, 0xfb, 0x84, 0x64, 0x0f, 0x70, 0x7d, 0x90, 0xf0, 0x80, 0x74, 0xa3, + 0xf0, 0xff, 0x6f, 0x12, + 0xc2, 0x97, 0x80, 0x00, 0x74, 0x1f, 0x12, 0xff, 0x98, 0x6f, 0x18, 0x80, + 0x7c, 0x90, 0x12, 0x91, + 0xe7, 0x25, 0x4a, 0xe9, 0x05, 0x60, 0x26, 0x12, 0x80, 0x1f, 0x90, 0x09, + 0xf8, 0x7f, 0xff, 0x74, + 0xa3, 0xf0, 0xf0, 0x14, 0x90, 0xe4, 0xfa, 0x7f, 0xa3, 0xf0, 0x12, 0xf0, + 0xa6, 0x19, 0x1c, 0x02, + 0x7f, 0x87, 0x7e, 0x2e, 0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xb8, + 0xa3, 0xf0, 0xf0, 0xef, + 0x2f, 0x7f, 0x55, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xba, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, + 0x7e, 0x31, 0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xaa, 0xa3, 0xf0, + 0xf0, 0xef, 0x32, 0x7f, + 0x55, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xac, 0x7a, 0xf0, 0xee, 0xef, 0xa3, + 0x7f, 0xf0, 0x7e, 0x33, + 0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xae, 0xa3, 0xf0, 0xf0, 0xef, + 0x7a, 0x90, 0xe0, 0xb8, + 0xa3, 0xfe, 0xff, 0xe0, 0x30, 0xee, 0x06, 0xe1, 0x7a, 0x90, 0x12, 0xb8, + 0xb9, 0x51, 0x7a, 0x90, + 0xe0, 0xba, 0xa3, 0xfe, 0xff, 0xe0, 0x30, 0xee, 0x06, 0xe1, 0x7a, 0x90, + 0x12, 0xba, 0xb9, 0x51, + 0x51, 0x12, 0xee, 0x9c, 0xe1, 0x30, 0x44, 0x09, 0x90, 0xfe, 0xac, 0x7a, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7a, 0x90, 0xe0, 0xae, 0x13, 0xc3, 0xa3, 0xf0, 0x13, 0xe0, 0x90, 0xf0, + 0xb8, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0x7a, 0x90, 0x12, 0xf7, 0xb2, 0x51, 0x7a, 0x90, 0xe0, 0xfd, + 0x54, 0x04, 0xf0, 0x0f, + 0x03, 0x60, 0x20, 0x02, 0x90, 0x03, 0xf7, 0x7a, 0x51, 0x12, 0x90, 0xc0, + 0xfc, 0x7a, 0x90, 0xe0, + 0xfb, 0x7a, 0x51, 0x12, 0x50, 0x57, 0x90, 0x0d, 0xfb, 0x7a, 0x51, 0x12, + 0x90, 0x87, 0xfb, 0x7a, + 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xfb, 0xa3, 0xfe, 0x78, 0xe0, + 0x12, 0x02, 0xa5, 0x51, + 0xfb, 0xd8, 0x7f, 0x90, 0x12, 0x9c, 0x71, 0x51, 0x7a, 0x90, 0xe0, 0xf9, + 0xa3, 0xff, 0x90, 0xe0, + 0xfb, 0x7a, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xf9, 0x7a, 0xf0, 0xec, + 0xed, 0xa3, 0xe4, 0xf0, + 0x7a, 0x90, 0xf0, 0xf7, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x2b, 0xc3, 0xff, + 0x7f, 0x90, 0xe0, 0x9d, + 0x74, 0x9f, 0xf8, 0x80, 0x7f, 0x90, 0xe0, 0x9c, 0x80, 0x64, 0x90, 0x98, + 0x07, 0x7b, 0x50, 0xe0, + 0x04, 0x04, 0x80, 0xf0, 0x14, 0x02, 0x90, 0xf0, 0x2d, 0x7f, 0x90, 0xe0, + 0x07, 0x7b, 0x51, 0x12, + 0x40, 0x1b, 0x90, 0x0c, 0x2d, 0x7f, 0x25, 0xe0, 0x25, 0xe0, 0x90, 0xe0, + 0x07, 0x7b, 0x90, 0xf0, + 0xba, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0x12, 0x00, 0xb2, 0x51, + 0x7b, 0x90, 0xe0, 0x06, + 0x54, 0x04, 0xf0, 0x0f, 0x03, 0x60, 0x20, 0x02, 0x90, 0xba, 0x00, 0x7b, + 0x51, 0x12, 0x90, 0xc0, + 0x05, 0x7b, 0x90, 0xe0, 0x04, 0x7b, 0x51, 0x12, 0x50, 0x57, 0x90, 0x0d, + 0x04, 0x7b, 0x51, 0x12, + 0x90, 0x87, 0x04, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x51, 0x12, 0x94, 0x4f, + 0x50, 0x82, 0x7f, 0x04, + 0x80, 0x02, 0x7f, 0x02, 0x90, 0x01, 0x04, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0x07, 0xa8, 0x80, 0x08, + 0x12, 0x03, 0xa5, 0x51, 0xfb, 0xd8, 0x90, 0xff, 0x9a, 0x7f, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, + 0x02, 0x7b, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x04, 0xa3, 0xf0, + 0xf0, 0xef, 0x7b, 0x90, + 0xec, 0x02, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xe4, 0x00, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0x29, 0x7f, + 0xff, 0xe0, 0x90, 0xc3, 0x9b, 0x7f, 0x9f, 0xe0, 0x80, 0x74, 0x90, 0xf8, + 0x9a, 0x7f, 0x64, 0xe0, + 0x98, 0x80, 0x7b, 0x90, 0xe0, 0x08, 0x04, 0x50, 0xf0, 0x04, 0x02, 0x80, + 0xf0, 0x14, 0x7f, 0x90, + 0xe0, 0x2d, 0x7b, 0x90, 0x12, 0x08, 0x1b, 0x51, 0x0c, 0x40, 0x7f, 0x90, + 0xe0, 0x2d, 0xe0, 0x25, + 0xe0, 0x25, 0x7b, 0x90, 0xf0, 0x08, 0x7f, 0x90, 0xe0, 0x2d, 0x90, 0xff, + 0x08, 0x7b, 0x51, 0x12, + 0x40, 0x20, 0xd2, 0x02, 0xee, 0x19, 0x02, 0x70, 0x19, 0xc2, 0x7f, 0x90, + 0xe0, 0x2d, 0x90, 0xff, + 0x07, 0x7b, 0x51, 0x12, 0x40, 0x20, 0xd2, 0x02, 0xee, 0x1c, 0x02, 0x70, + 0x1c, 0xc2, 0x7f, 0x90, + 0xe0, 0x27, 0x90, 0xff, 0xae, 0x7a, 0x51, 0x12, 0x9f, 0xc0, 0x94, 0xec, + 0x50, 0x00, 0xe4, 0x07, + 0x7a, 0x90, 0xf0, 0xd7, 0x0f, 0x80, 0x7a, 0x90, 0xe0, 0xd7, 0xf0, 0x04, + 0xd3, 0xe0, 0x06, 0x94, + 0x03, 0x40, 0x06, 0x74, 0x90, 0xf0, 0xd7, 0x7a, 0xc3, 0xe0, 0x06, 0x94, + 0x02, 0x50, 0x01, 0x80, + 0x92, 0xc3, 0x12, 0x1d, 0x9c, 0x51, 0x51, 0x12, 0x50, 0x60, 0x12, 0x06, + 0x8c, 0x51, 0x80, 0xfe, + 0x12, 0x03, 0x9c, 0x51, 0x7f, 0x90, 0xe0, 0x1f, 0xc3, 0xfb, 0x9b, 0xef, + 0x80, 0x74, 0x6e, 0xf8, + 0x50, 0x98, 0x80, 0x02, 0xc3, 0x01, 0x1b, 0x92, 0x7f, 0x90, 0xe0, 0x1d, + 0xc3, 0xff, 0x7a, 0x90, + 0xe0, 0xab, 0x90, 0x9f, 0xaa, 0x7a, 0x94, 0xe0, 0x50, 0x00, 0xd2, 0x0a, + 0x90, 0x1a, 0xa7, 0x7a, + 0x18, 0x74, 0x80, 0xf0, 0x90, 0x10, 0xa7, 0x7a, 0x70, 0xe0, 0xc2, 0x04, + 0x80, 0x1a, 0x90, 0x06, + 0xa7, 0x7a, 0x14, 0xe0, 0x90, 0xf0, 0x21, 0x7f, 0xff, 0xe0, 0xed, 0xc3, + 0xec, 0x9f, 0x00, 0x94, + 0x0d, 0x50, 0x1e, 0x30, 0xd2, 0x0a, 0x90, 0x1f, 0xa6, 0x7a, 0x18, 0x74, + 0x80, 0xf0, 0x90, 0x10, + 0xa6, 0x7a, 0x70, 0xe0, 0xc2, 0x04, 0x80, 0x1f, 0x90, 0x06, 0xa6, 0x7a, + 0x14, 0xe0, 0x02, 0xf0, + 0xd7, 0x6d, 0xf5, 0xe4, 0x90, 0x23, 0x68, 0x7d, 0x30, 0x12, 0xc3, 0xfa, + 0x7d, 0x90, 0xe0, 0x43, + 0x7d, 0x90, 0x12, 0x42, 0x02, 0x31, 0x03, 0x50, 0x30, 0x12, 0xd3, 0x95, + 0x7d, 0x90, 0xe0, 0x41, + 0x7d, 0x90, 0x12, 0x40, 0x02, 0x31, 0x03, 0x40, 0x30, 0x12, 0x90, 0x95, + 0x6a, 0x7d, 0x31, 0x12, + 0xc3, 0x0e, 0x13, 0x95, 0x11, 0xf5, 0x1a, 0xe5, 0x12, 0x95, 0x10, 0xf5, + 0x64, 0xc3, 0x94, 0x80, + 0x50, 0x80, 0x12, 0x0a, 0x83, 0x31, 0x10, 0x50, 0x10, 0x75, 0x80, 0xe0, + 0x12, 0x08, 0x3a, 0x31, + 0x06, 0x40, 0x10, 0x75, 0x75, 0x20, 0x00, 0x11, 0x02, 0x20, 0x02, 0x03, + 0xb3, 0x22, 0x58, 0x30, + 0x02, 0x03, 0xb3, 0x22, 0x7d, 0x90, 0xe0, 0x3a, 0x0f, 0x54, 0x19, 0xf5, + 0x09, 0x70, 0x7d, 0x90, + 0x12, 0x70, 0xfa, 0x30, 0x22, 0x02, 0x74, 0x79, 0x25, 0x08, 0xf5, 0x19, + 0xe5, 0x19, 0xd3, 0x19, + 0x00, 0x94, 0x05, 0x40, 0x30, 0x12, 0x80, 0x59, 0x12, 0xf4, 0xab, 0x31, + 0xe4, 0x30, 0x12, 0x06, + 0x07, 0x30, 0x31, 0x12, 0x90, 0xcb, 0x3d, 0x7d, 0x30, 0xe0, 0x06, 0xe5, + 0x2f, 0x12, 0x12, 0xf9, + 0x91, 0x31, 0xf5, 0xe4, 0x90, 0x23, 0x73, 0x7d, 0x30, 0x12, 0x20, 0x14, + 0x0f, 0x18, 0x7d, 0x90, + 0xe0, 0x71, 0x13, 0x25, 0x13, 0xf5, 0x7d, 0x90, 0xe0, 0x70, 0x30, 0x12, + 0x30, 0x22, 0x09, 0x18, + 0x12, 0x75, 0x75, 0x7f, 0xff, 0x13, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, + 0x80, 0x64, 0x80, 0x94, + 0x07, 0x50, 0xf5, 0xe4, 0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x73, 0x7d, + 0x18, 0xe5, 0x90, 0xf0, + 0x70, 0x7d, 0x30, 0x12, 0x90, 0x95, 0x74, 0x7d, 0x31, 0x12, 0xc3, 0x0e, + 0x13, 0xe5, 0x1b, 0x95, + 0x11, 0xf5, 0x12, 0xe5, 0x1a, 0x95, 0x10, 0xf5, 0x12, 0x85, 0x85, 0x14, + 0x15, 0x13, 0x64, 0xc3, + 0x94, 0x80, 0x50, 0x80, 0x12, 0x0a, 0x83, 0x31, 0x10, 0x50, 0x10, 0x75, + 0x80, 0xe0, 0x12, 0x08, + 0x3a, 0x31, 0x06, 0x40, 0x10, 0x75, 0x75, 0x20, 0x00, 0x11, 0xf5, 0xe4, + 0x80, 0x23, 0x20, 0x14, + 0x05, 0x02, 0x7d, 0x90, 0x80, 0x78, 0x90, 0x03, 0x74, 0x7d, 0x31, 0x12, + 0x90, 0x5c, 0x70, 0x7d, + 0x30, 0x12, 0xc3, 0xae, 0x7d, 0x90, 0xe0, 0x87, 0x15, 0x95, 0x7d, 0x90, + 0xe0, 0x86, 0x14, 0x95, + 0x03, 0x50, 0x30, 0x12, 0xd3, 0xae, 0x7d, 0x90, 0xe0, 0x85, 0x15, 0x95, + 0x7d, 0x90, 0xe0, 0x84, + 0x14, 0x95, 0x03, 0x40, 0x30, 0x12, 0xc0, 0xae, 0xa2, 0xd0, 0x92, 0xaf, + 0xc2, 0xd1, 0xe4, 0xaf, + 0x15, 0x25, 0x15, 0xf5, 0x08, 0x74, 0x14, 0x35, 0x14, 0xf5, 0xd2, 0xa2, + 0x18, 0x92, 0x40, 0x30, + 0x90, 0xfd, 0xa0, 0x7d, 0x18, 0x30, 0x12, 0x05, 0x16, 0x31, 0x03, 0x80, + 0x30, 0x12, 0x90, 0xae, + 0x3a, 0x7d, 0xa3, 0xe0, 0xe5, 0x30, 0x12, 0x03, 0xb6, 0x30, 0x7d, 0x7e, + 0xa0, 0x7f, 0x28, 0x7d, + 0x67, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, + 0x3b, 0x7d, 0xff, 0xe0, + 0xc4, 0xe4, 0x54, 0xf8, 0xc8, 0xf0, 0xc4, 0xef, 0x0f, 0x54, 0x54, 0x48, + 0xf5, 0x0f, 0x70, 0x19, + 0x90, 0x09, 0x7a, 0x7d, 0x30, 0x12, 0x02, 0xfa, 0xd5, 0x23, 0x07, 0x74, + 0x19, 0x25, 0x19, 0xf5, + 0x19, 0xe5, 0x94, 0xd3, 0x40, 0x00, 0x12, 0x05, 0x59, 0x30, 0xf4, 0x80, + 0x31, 0x12, 0x30, 0xab, + 0x06, 0xe2, 0x30, 0x12, 0x12, 0x07, 0xcb, 0x31, 0x7d, 0x90, 0xe0, 0x3d, + 0xe3, 0x30, 0x12, 0x06, + 0xf9, 0x2f, 0x31, 0x12, 0xe4, 0x91, 0x23, 0xf5, 0x19, 0xc2, 0x7d, 0x90, + 0x12, 0x7d, 0x14, 0x30, + 0x18, 0x20, 0x90, 0x0f, 0x7b, 0x7d, 0x25, 0xe0, 0xf5, 0x13, 0x90, 0x13, + 0x7a, 0x7d, 0x12, 0xe0, + 0x22, 0x30, 0x18, 0x20, 0x90, 0x17, 0x2c, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, + 0xd3, 0xff, 0x13, 0xe5, + 0xee, 0x9f, 0x80, 0x64, 0xe5, 0xf8, 0x64, 0x12, 0x98, 0x80, 0x09, 0x40, + 0x7d, 0x90, 0x12, 0x2c, + 0xfa, 0x30, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, + 0x07, 0x50, 0xf5, 0xe4, + 0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x7d, 0x7d, 0x18, 0xe5, 0x90, 0xf0, + 0x7a, 0x7d, 0x30, 0x12, + 0xc3, 0x95, 0x7d, 0x90, 0xe0, 0x95, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x94, + 0x12, 0x95, 0x03, 0x50, + 0x30, 0x12, 0xd3, 0x95, 0x7d, 0x90, 0xe0, 0x93, 0x13, 0x95, 0x7d, 0x90, + 0xe0, 0x92, 0x12, 0x95, + 0x03, 0x40, 0x30, 0x12, 0xc0, 0x95, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, + 0xe4, 0xaf, 0x13, 0x25, + 0x13, 0xf5, 0x08, 0x74, 0x30, 0x12, 0x20, 0x22, 0x0f, 0x18, 0x7d, 0x90, + 0xe0, 0x7e, 0xa3, 0xfe, + 0x25, 0xe0, 0xf5, 0x13, 0xee, 0x13, 0x30, 0x12, 0x30, 0x22, 0xfd, 0x40, + 0x7d, 0x90, 0x30, 0xa0, + 0x05, 0x18, 0x31, 0x12, 0x80, 0x16, 0x12, 0x03, 0x95, 0x30, 0x7d, 0x90, + 0xe0, 0x3a, 0x30, 0xa3, + 0x03, 0xe6, 0x30, 0x12, 0x7e, 0xb6, 0x7f, 0x7d, 0x7d, 0xa0, 0x7c, 0x29, + 0x12, 0x67, 0x15, 0x72, + 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x18, 0xc2, 0xbb, 0x22, 0x0c, 0x01, + 0x82, 0xe5, 0xf5, 0x29, + 0xe5, 0x82, 0x3a, 0x83, 0x83, 0xf5, 0x22, 0xe0, 0x06, 0x50, 0x25, 0xe9, + 0xf8, 0x82, 0x22, 0xe6, + 0xfe, 0xbb, 0xe9, 0x06, 0x82, 0x25, 0xe2, 0xf8, 0xe5, 0x22, 0x29, 0x82, + 0x82, 0xf5, 0x83, 0xe5, + 0xf5, 0x3a, 0xe4, 0x83, 0x22, 0x93, 0x8d, 0xef, 0xa4, 0xf0, 0xf0, 0xa8, + 0x8c, 0xcf, 0xa4, 0xf0, + 0xce, 0x28, 0xf0, 0x8d, 0x2e, 0xa4, 0x22, 0xfe, 0xf0, 0xc5, 0xa3, 0xf8, + 0x28, 0xe0, 0xc5, 0xf0, + 0xf8, 0xf0, 0x82, 0xe5, 0x82, 0x15, 0x02, 0x70, 0x83, 0x15, 0x38, 0xe0, + 0x22, 0xf0, 0xf8, 0xa3, + 0xc5, 0xe0, 0x25, 0xf0, 0xf0, 0xf0, 0x82, 0xe5, 0x82, 0x15, 0x02, 0x70, + 0x83, 0x15, 0xc8, 0xe0, + 0xf0, 0x38, 0x22, 0xe8, 0x2b, 0xef, 0xee, 0xff, 0xfe, 0x3a, 0x39, 0xed, + 0xec, 0xfd, 0xfc, 0x38, + 0xc3, 0x22, 0x9b, 0xef, 0xee, 0xff, 0xfe, 0x9a, 0x99, 0xed, 0xec, 0xfd, + 0xfc, 0x98, 0xe8, 0x22, + 0xf0, 0x8f, 0xcc, 0xa4, 0xf0, 0x8b, 0x2c, 0xa4, 0xe9, 0xfc, 0xf0, 0x8e, + 0x2c, 0xa4, 0x8a, 0xfc, + 0xed, 0xf0, 0x2c, 0xa4, 0xea, 0xfc, 0xf0, 0x8e, 0xcd, 0xa4, 0xf0, 0xa8, + 0xf0, 0x8b, 0x2d, 0xa4, + 0x38, 0xcc, 0xf0, 0x25, 0xe9, 0xfd, 0xf0, 0x8f, 0x2c, 0xa4, 0x35, 0xcd, + 0xfc, 0xf0, 0x8e, 0xeb, + 0xa4, 0xf0, 0xa9, 0xfe, 0xeb, 0xf0, 0xf0, 0x8f, 0xcf, 0xa4, 0xf0, 0xc5, + 0xcd, 0x2e, 0xfe, 0x39, + 0x3c, 0xe4, 0xea, 0xfc, 0x2d, 0xa4, 0x35, 0xce, 0xfd, 0xf0, 0x3c, 0xe4, + 0x22, 0xfc, 0x9f, 0xeb, + 0xf0, 0xf5, 0x9e, 0xea, 0xf0, 0x42, 0x9d, 0xe9, 0xf0, 0x42, 0x64, 0xec, + 0xc8, 0x80, 0x80, 0x64, + 0x45, 0x98, 0x22, 0xf0, 0x60, 0xe8, 0xec, 0x0f, 0x13, 0xc3, 0xed, 0xfc, + 0xfd, 0x13, 0x13, 0xee, + 0xef, 0xfe, 0xff, 0x13, 0xf1, 0xd8, 0xe8, 0x22, 0x10, 0x60, 0xa2, 0xec, + 0x13, 0xe7, 0xed, 0xfc, + 0xfd, 0x13, 0x13, 0xee, 0xef, 0xfe, 0xff, 0x13, 0xf0, 0xd8, 0xe8, 0x22, + 0x0f, 0x60, 0xc3, 0xef, + 0xff, 0x33, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xd8, 0xfc, + 0x22, 0xf1, 0xfc, 0xe0, + 0xe0, 0xa3, 0xa3, 0xfd, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x93, 0xe4, + 0x74, 0xfc, 0x93, 0x01, + 0x74, 0xfd, 0x93, 0x02, 0x74, 0xfe, 0x93, 0x03, 0x22, 0xff, 0xf8, 0xe0, + 0xe0, 0xa3, 0xa3, 0xf9, + 0xfa, 0xe0, 0xe0, 0xa3, 0x22, 0xfb, 0x93, 0xe4, 0x74, 0xf8, 0x93, 0x01, + 0x74, 0xf9, 0x93, 0x02, + 0x74, 0xfa, 0x93, 0x03, 0x22, 0xfb, 0xf0, 0xec, 0xed, 0xa3, 0xa3, 0xf0, + 0xf0, 0xee, 0xef, 0xa3, + 0x22, 0xf0, 0x82, 0xa8, 0x83, 0x85, 0xd0, 0xf0, 0xd0, 0x83, 0x12, 0x82, + 0xcd, 0x25, 0x25, 0x12, + 0x12, 0xcd, 0xcd, 0x25, 0x25, 0x12, 0xe4, 0xcd, 0xe4, 0x73, 0xa3, 0x93, + 0x83, 0xc5, 0xf0, 0xc5, + 0x83, 0xc5, 0xc5, 0xc8, 0xc8, 0x82, 0xa3, 0xf0, 0x83, 0xc5, 0xf0, 0xc5, + 0x83, 0xc5, 0xc5, 0xc8, + 0xc8, 0x82, 0xe0, 0x22, 0xa3, 0xfb, 0xfa, 0xe0, 0xe0, 0xa3, 0x22, 0xf9, + 0xf0, 0xeb, 0xea, 0xa3, + 0xa3, 0xf0, 0xf0, 0xe9, 0xd0, 0x22, 0xd0, 0x83, 0xf8, 0x82, 0x93, 0xe4, + 0x12, 0x70, 0x01, 0x74, + 0x70, 0x93, 0xa3, 0x0d, 0x93, 0xa3, 0x74, 0xf8, 0x93, 0x01, 0x82, 0xf5, + 0x83, 0x88, 0x73, 0xe4, + 0x02, 0x74, 0x68, 0x93, 0xef, 0x60, 0xa3, 0xa3, 0x80, 0xa3, 0x8a, 0xdf, + 0x89, 0x83, 0xe4, 0x82, + 0x75, 0x73, 0x08, 0xf0, 0x82, 0x75, 0xef, 0x00, 0xff, 0x2f, 0x33, 0xee, + 0xcd, 0xfe, 0xcd, 0x33, + 0x33, 0xcc, 0xc5, 0xcc, 0x33, 0x82, 0x82, 0xc5, 0xed, 0x9b, 0xec, 0x9a, + 0xe5, 0x99, 0x98, 0x82, + 0x0c, 0x40, 0x82, 0xf5, 0x9b, 0xee, 0xed, 0xfe, 0xfd, 0x9a, 0x99, 0xec, + 0x0f, 0xfc, 0xf0, 0xd5, + 0xe4, 0xd6, 0xfb, 0xce, 0xcd, 0xe4, 0xe4, 0xfa, 0xf9, 0xcc, 0x82, 0xa8, + 0xb8, 0x22, 0xc1, 0x00, + 0x00, 0xb9, 0xba, 0x59, 0x2d, 0x00, 0x8b, 0xec, 0x84, 0xf0, 0xce, 0xcf, + 0xfc, 0xcd, 0xf0, 0xe5, + 0xf9, 0xcb, 0x18, 0x78, 0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, + 0xec, 0xfd, 0xfc, 0x33, + 0x33, 0xeb, 0x10, 0xfb, 0x03, 0xd7, 0x40, 0x99, 0xeb, 0x04, 0xfb, 0x99, + 0xd8, 0x0f, 0xe4, 0xe5, + 0xfa, 0xf9, 0x78, 0x22, 0xef, 0x18, 0xff, 0x2f, 0x33, 0xee, 0xed, 0xfe, + 0xfd, 0x33, 0x33, 0xec, + 0xc9, 0xfc, 0xc9, 0x33, 0xd7, 0x10, 0x9b, 0x05, 0x9a, 0xe9, 0x07, 0x40, + 0x9b, 0xec, 0xe9, 0xfc, + 0xf9, 0x9a, 0xd8, 0x0f, 0xe4, 0xe0, 0xfa, 0xc9, 0xcc, 0xe4, 0x22, 0xfb, + 0xf0, 0x75, 0xef, 0x10, + 0xff, 0x2f, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xcc, 0xc8, 0xcc, + 0xc8, 0x33, 0xd7, 0x10, + 0x9b, 0x07, 0x9a, 0xec, 0x99, 0xe8, 0x0a, 0x40, 0x9b, 0xed, 0xec, 0xfd, + 0xfc, 0x9a, 0x99, 0xe8, + 0x0f, 0xf8, 0xf0, 0xd5, 0xe4, 0xda, 0xfb, 0xcd, 0xcc, 0xe4, 0xe4, 0xfa, + 0xf9, 0xc8, 0x7f, 0x22, + 0x7e, 0x12, 0x12, 0x85, 0xf0, 0x6e, 0x16, 0x12, 0x90, 0x69, 0x5a, 0x7e, + 0x12, 0xee, 0xba, 0x16, + 0x0d, 0x50, 0x16, 0x12, 0x12, 0xc5, 0xfb, 0x17, 0x7b, 0x90, 0xf0, 0xbc, + 0xef, 0xa3, 0x12, 0xf0, + 0xc5, 0x16, 0x7a, 0xff, 0x79, 0x7e, 0x7c, 0x5c, 0x7d, 0x7e, 0x12, 0x5c, + 0xa1, 0x56, 0x44, 0xc2, + 0x7e, 0x90, 0xe0, 0x67, 0x90, 0xff, 0x08, 0x7e, 0xe0, 0xa3, 0x60, 0x5f, + 0x02, 0x03, 0xb2, 0x28, + 0x17, 0x12, 0x78, 0x57, 0x12, 0x04, 0x72, 0x16, 0xfb, 0xd8, 0x16, 0x12, + 0xfe, 0x60, 0x7b, 0x90, + 0xe0, 0xb3, 0x06, 0xb5, 0xa3, 0x17, 0xb5, 0xe0, 0x12, 0x07, 0x29, 0x12, + 0x24, 0x78, 0xff, 0xce, + 0x34, 0xee, 0x90, 0xff, 0xbf, 0x7b, 0xa3, 0xf0, 0x02, 0xef, 0x7d, 0x28, + 0x17, 0x12, 0x78, 0x57, + 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x16, 0x12, 0x12, 0x60, 0xe2, 0x17, + 0x07, 0xb5, 0xec, 0x10, + 0x06, 0xb5, 0x90, 0x0c, 0xb6, 0x7b, 0x24, 0xe0, 0x12, 0x4b, 0xf3, 0x16, + 0x28, 0x02, 0x12, 0x7d, + 0x57, 0x17, 0x02, 0x78, 0x16, 0x12, 0xd8, 0x72, 0x12, 0xfb, 0x60, 0x16, + 0xed, 0xfe, 0x07, 0xb5, + 0xec, 0x17, 0x06, 0xb5, 0x90, 0x13, 0xb6, 0x7b, 0x24, 0xe0, 0xfe, 0x74, + 0x7b, 0x90, 0xe0, 0xb5, + 0xff, 0x34, 0x16, 0x12, 0x02, 0xfa, 0x7d, 0x28, 0x17, 0x12, 0x78, 0x57, + 0x12, 0x03, 0x72, 0x16, + 0xfb, 0xd8, 0x17, 0x12, 0xc3, 0xaa, 0xff, 0x9d, 0x9c, 0xee, 0x12, 0xfe, + 0x61, 0x16, 0x17, 0x12, + 0xb5, 0xe2, 0x10, 0x07, 0xb5, 0xec, 0x0c, 0x06, 0x7b, 0x90, 0xe0, 0xb6, + 0x96, 0x24, 0x16, 0x12, + 0x02, 0xf3, 0x7d, 0x28, 0x17, 0x12, 0x12, 0xad, 0x60, 0x16, 0xed, 0xfe, + 0x07, 0xb5, 0xec, 0x17, + 0x06, 0xb5, 0x90, 0x13, 0xb6, 0x7b, 0x24, 0xe0, 0xfe, 0x1f, 0x7b, 0x90, + 0xe0, 0xb5, 0xff, 0x34, + 0x16, 0x12, 0x02, 0xfa, 0x7d, 0x28, 0x17, 0x12, 0x78, 0x57, 0x12, 0x03, + 0x72, 0x16, 0xfb, 0xd8, + 0x17, 0x12, 0x2d, 0xaa, 0xee, 0xff, 0xfe, 0x3c, 0x16, 0x12, 0x12, 0x61, + 0xe2, 0x17, 0x07, 0xb5, + 0xec, 0x10, 0x06, 0xb5, 0x90, 0x0c, 0xb6, 0x7b, 0x24, 0xe0, 0x12, 0xe1, + 0xf3, 0x16, 0x28, 0x02, + 0x12, 0x7d, 0x57, 0x17, 0x02, 0x78, 0x16, 0x12, 0xd8, 0x72, 0x12, 0xfb, + 0x03, 0x18, 0x16, 0x12, + 0xfe, 0x61, 0xb5, 0xed, 0x16, 0x07, 0xb5, 0xec, 0x12, 0x06, 0x7b, 0x90, + 0xe0, 0xb6, 0xd4, 0x24, + 0x90, 0xfe, 0xb5, 0x7b, 0x34, 0xe0, 0x12, 0xfe, 0xfa, 0x16, 0x2d, 0x80, + 0x17, 0x12, 0x78, 0x57, + 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x18, 0x12, 0x12, 0x03, 0x61, 0x16, + 0x90, 0xfe, 0xb3, 0x7b, + 0xb5, 0xe0, 0x18, 0x06, 0xe0, 0xa3, 0x07, 0xb5, 0x90, 0x13, 0xb6, 0x7b, + 0x24, 0xe0, 0xfe, 0x2c, + 0x7b, 0x90, 0xe0, 0xb5, 0x01, 0x34, 0x16, 0x12, 0xf0, 0xfa, 0x44, 0xd2, + 0x7e, 0x90, 0x12, 0x64, + 0x5c, 0x16, 0xd3, 0xfe, 0x7b, 0x90, 0xe0, 0xb4, 0x90, 0x9f, 0xb3, 0x7b, + 0x9e, 0xe0, 0x05, 0x40, + 0x90, 0xe4, 0x07, 0x7e, 0x30, 0xf0, 0x13, 0x44, 0x18, 0x12, 0x12, 0xbf, + 0x57, 0x6f, 0x53, 0x12, + 0x7d, 0xe3, 0x7c, 0x11, 0xe4, 0x85, 0xfe, 0xff, 0x6f, 0x12, 0x02, 0x57, + 0x11, 0x29, 0x13, 0x7f, + 0x85, 0x7e, 0x6e, 0x12, 0x12, 0xf0, 0xa1, 0x17, 0x7b, 0x90, 0xe0, 0xb3, + 0x04, 0x70, 0xe0, 0xa3, + 0x08, 0x64, 0x3c, 0x70, 0x17, 0x12, 0x94, 0x6c, 0x40, 0x83, 0x12, 0x0d, + 0x78, 0x29, 0x01, 0x24, + 0xe4, 0xff, 0x12, 0x3e, 0xeb, 0x16, 0x44, 0xd2, 0x90, 0xc3, 0xc2, 0x7b, + 0x94, 0xe0, 0x12, 0x01, + 0x73, 0x17, 0x7c, 0x94, 0x1a, 0x50, 0x1c, 0x7f, 0x82, 0x7e, 0x6e, 0x12, + 0x90, 0xf0, 0xb5, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, 0x24, 0xf0, 0xff, 0xff, 0x34, 0xee, 0x12, 0xff, + 0xeb, 0x16, 0x44, 0xd2, + 0x7b, 0x90, 0xe0, 0xb4, 0x07, 0x54, 0x05, 0x60, 0x18, 0x12, 0x80, 0xfc, + 0x90, 0x0a, 0xb3, 0x7b, + 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x30, 0x8c, 0x59, 0x44, 0x7b, 0x90, + 0xe0, 0x62, 0xa3, 0xfe, + 0x12, 0xe0, 0x21, 0x18, 0xef, 0xfe, 0x05, 0x78, 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0x90, 0xf9, + 0x46, 0x7e, 0x18, 0x12, 0x12, 0x6a, 0x8f, 0x16, 0x05, 0x40, 0x18, 0x12, + 0x80, 0xb3, 0x12, 0x10, + 0x59, 0x16, 0xc3, 0xfe, 0x16, 0x12, 0x50, 0x98, 0x12, 0x0a, 0x59, 0x16, + 0x7e, 0x90, 0xf0, 0x46, + 0xef, 0xa3, 0xc0, 0xf0, 0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, 0x12, 0xfd, + 0x34, 0x19, 0x16, 0x12, + 0xd8, 0x72, 0x12, 0xfb, 0xcd, 0x16, 0x1c, 0x7d, 0x82, 0x7c, 0x72, 0x12, + 0xa2, 0x15, 0x92, 0xd1, + 0xd0, 0xaf, 0x22, 0xd0, 0x1c, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, + 0xb5, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x22, 0xf0, 0x90, 0xe4, 0xc5, 0x7a, 0x90, 0xf0, 0xc8, 0x7a, + 0x90, 0xf0, 0xca, 0x7a, + 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x17, 0x40, + 0x7a, 0x90, 0x74, 0xc5, + 0xf0, 0x01, 0x90, 0xe4, 0xc6, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, + 0xcc, 0x7a, 0x90, 0xf0, + 0xd2, 0x7a, 0x90, 0xf0, 0x95, 0x7f, 0x12, 0xe0, 0xf9, 0x25, 0xec, 0x29, + 0x29, 0x00, 0x01, 0xec, + 0x19, 0x2a, 0x2a, 0x02, 0x03, 0x38, 0x59, 0x2a, 0x2a, 0x04, 0x05, 0x82, + 0x9f, 0x2a, 0x2a, 0x06, + 0x07, 0xbc, 0xda, 0x2a, 0x2a, 0x08, 0x09, 0xef, 0x07, 0x2b, 0x29, 0x0a, + 0xfc, 0xec, 0xec, 0x29, + 0x29, 0xfd, 0xff, 0xec, 0x00, 0x00, 0x31, 0x2b, 0x7a, 0x90, 0x74, 0xc5, + 0x12, 0x02, 0x67, 0x63, + 0x0c, 0x74, 0x63, 0x12, 0xf0, 0x82, 0x7a, 0x90, 0x04, 0xd0, 0x90, 0xf0, + 0xd3, 0x7a, 0x32, 0x74, + 0x90, 0xf0, 0xcb, 0x7a, 0x01, 0x74, 0xe4, 0xf0, 0x63, 0x12, 0xf0, 0x7a, + 0x7a, 0x90, 0xf0, 0xc3, + 0xf0, 0xa3, 0x2b, 0x02, 0x90, 0x31, 0xc5, 0x7a, 0x02, 0x74, 0x63, 0x12, + 0x90, 0x67, 0xcd, 0x7a, + 0x0c, 0x74, 0x12, 0xf0, 0x85, 0x63, 0x90, 0xf0, 0xd0, 0x7a, 0x12, 0x04, + 0x6e, 0x63, 0x90, 0xf0, + 0xc3, 0x7a, 0x42, 0x80, 0x7a, 0x90, 0x74, 0xc5, 0x12, 0x02, 0x67, 0x63, + 0x0a, 0x74, 0x63, 0x12, + 0x04, 0x82, 0x90, 0xf0, 0xd0, 0x7a, 0x74, 0xf0, 0x12, 0x50, 0x71, 0x63, + 0x02, 0x74, 0x90, 0xf0, + 0xc3, 0x7a, 0x80, 0xe4, 0x90, 0x21, 0xc5, 0x7a, 0x01, 0x74, 0x90, 0xf0, + 0xc7, 0x7a, 0x90, 0xf0, + 0xcd, 0x7a, 0x09, 0x74, 0x63, 0x12, 0x04, 0x85, 0x90, 0xf0, 0xd0, 0x7a, + 0x63, 0x12, 0x74, 0x6e, + 0xf0, 0x02, 0x7a, 0x90, 0xe4, 0xc3, 0xa3, 0xf0, 0x96, 0x74, 0x02, 0xf0, + 0x31, 0x2b, 0x7a, 0x90, + 0x74, 0xcd, 0xf0, 0x0a, 0x7a, 0x90, 0x74, 0xc7, 0xf0, 0x01, 0x7a, 0x90, + 0x12, 0xc2, 0x90, 0x63, + 0x1e, 0x74, 0x63, 0x12, 0x74, 0x57, 0xf0, 0x5a, 0x2b, 0x02, 0x74, 0x31, + 0x12, 0x0a, 0x64, 0x63, + 0x7a, 0x90, 0x04, 0xc2, 0x74, 0xf0, 0x12, 0x03, 0x92, 0x63, 0x7a, 0x90, + 0x74, 0xd3, 0x12, 0x28, + 0x5a, 0x63, 0x49, 0x74, 0x02, 0xf0, 0x31, 0x2b, 0x7a, 0x90, 0x74, 0xcd, + 0x12, 0x0a, 0x67, 0x63, + 0x7a, 0x90, 0x74, 0xc2, 0x12, 0x02, 0x90, 0x63, 0x7a, 0x90, 0x74, 0xd3, + 0x12, 0x28, 0x5a, 0x63, + 0x44, 0x74, 0x02, 0xf0, 0x31, 0x2b, 0x63, 0x12, 0x90, 0x62, 0xc2, 0x7a, + 0x03, 0x74, 0x90, 0xf0, + 0xd0, 0x7a, 0x63, 0x12, 0x74, 0x4f, 0xf0, 0x41, 0x2b, 0x02, 0x12, 0x31, + 0x62, 0x63, 0x7a, 0x90, + 0x74, 0xc2, 0xf0, 0x04, 0x7a, 0x90, 0x14, 0xd0, 0x74, 0xf0, 0x12, 0x05, + 0x51, 0x63, 0x3a, 0x74, + 0x80, 0xf0, 0x12, 0x2a, 0x62, 0x63, 0x7a, 0x90, 0x74, 0xd0, 0xf0, 0x03, + 0x12, 0x04, 0x4c, 0x63, + 0x3a, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0xd3, 0xe0, 0x05, 0x94, 0x08, 0x50, + 0x05, 0x74, 0x63, 0x12, + 0x74, 0x4c, 0xf0, 0x32, 0x46, 0x30, 0x12, 0x06, 0x5b, 0x63, 0x1e, 0x74, + 0x90, 0xf0, 0xd3, 0x7a, + 0x75, 0xe0, 0x40, 0xf0, 0xfd, 0xa4, 0x7a, 0x90, 0xe0, 0xd2, 0x33, 0xc4, + 0xe0, 0x54, 0xe4, 0xfe, + 0xfd, 0x2d, 0x35, 0xee, 0xfc, 0xf0, 0x7a, 0x90, 0xe0, 0xd1, 0xf0, 0x75, + 0xa4, 0x04, 0xff, 0x2d, + 0x35, 0xec, 0xfe, 0xf0, 0x7a, 0x90, 0xe0, 0xd0, 0x00, 0x7c, 0xff, 0x2f, + 0x3e, 0xec, 0x7a, 0x90, + 0xf0, 0xce, 0xef, 0xa3, 0x90, 0xf0, 0x67, 0x7f, 0x30, 0xe0, 0x37, 0xe3, + 0x58, 0x12, 0x90, 0x27, + 0xcd, 0x7a, 0x11, 0x7d, 0x2b, 0x12, 0x90, 0xa8, 0xce, 0x7a, 0x12, 0x7d, + 0x63, 0x12, 0x12, 0x9b, + 0x57, 0x6f, 0x7a, 0x90, 0x7d, 0xc2, 0x12, 0x13, 0xa8, 0x2b, 0x7a, 0x90, + 0x7d, 0xc3, 0x12, 0x14, + 0x9b, 0x63, 0x6f, 0x12, 0x90, 0x57, 0x81, 0x7a, 0xff, 0xe0, 0x00, 0x7e, + 0x15, 0x7d, 0x53, 0x7c, + 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x53, 0x7c, 0x6f, 0x12, + 0x22, 0x57, 0x7e, 0x90, + 0xe0, 0x07, 0x32, 0xf5, 0x7e, 0x90, 0xe0, 0x08, 0xe0, 0xa3, 0x29, 0xf5, + 0x7e, 0x90, 0xe0, 0x08, + 0x2a, 0xf5, 0x32, 0xe5, 0xfd, 0x24, 0x2f, 0x60, 0x60, 0x14, 0x24, 0x5a, + 0x70, 0xfc, 0x02, 0x03, + 0x03, 0x2d, 0xd8, 0x24, 0x03, 0x70, 0x2d, 0x02, 0x24, 0x22, 0x70, 0xf0, + 0x02, 0x03, 0x5b, 0x2d, + 0x40, 0x24, 0x03, 0x60, 0x2d, 0x02, 0x12, 0x8e, 0x74, 0x49, 0x11, 0x7d, + 0x0d, 0x7f, 0x2d, 0x12, + 0x75, 0xb6, 0x03, 0x32, 0x2d, 0x02, 0x30, 0x8e, 0x1f, 0x48, 0x49, 0x30, + 0x12, 0x1c, 0xbf, 0x18, + 0x2d, 0x12, 0x7d, 0x95, 0x12, 0x16, 0xc6, 0x2d, 0x17, 0x7d, 0x2d, 0x12, + 0x12, 0xc6, 0xe3, 0x53, + 0x7e, 0x90, 0x74, 0x4b, 0xf0, 0x05, 0x32, 0x75, 0x20, 0x04, 0x06, 0x50, + 0x51, 0x20, 0x02, 0x03, + 0x8e, 0x2d, 0x2d, 0x02, 0x20, 0x1d, 0x06, 0x48, 0x49, 0x20, 0x02, 0x03, + 0xe2, 0x2c, 0x4a, 0x20, + 0x90, 0x0f, 0xb3, 0x7b, 0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x60, 0x01, + 0x02, 0x03, 0xe5, 0x2c, + 0x90, 0xe4, 0x4b, 0x7e, 0x7d, 0xf0, 0xfe, 0x12, 0x2d, 0x12, 0x7d, 0xbe, + 0x7c, 0x13, 0x7f, 0x83, + 0x7e, 0x08, 0x12, 0x00, 0x57, 0x6f, 0x11, 0x7d, 0x2d, 0x12, 0x7d, 0xa3, + 0x12, 0x2d, 0xa3, 0x2d, + 0x08, 0x7f, 0x18, 0x12, 0x12, 0x71, 0x57, 0x6f, 0x2c, 0x7d, 0x00, 0x7e, + 0x2d, 0x12, 0x7d, 0xbe, + 0x12, 0x2b, 0xad, 0x2d, 0x3c, 0x7d, 0x2d, 0x12, 0x7d, 0xad, 0x7c, 0x3d, + 0xe4, 0x83, 0xfe, 0xff, + 0x6f, 0x12, 0x90, 0x57, 0xb3, 0x7b, 0x70, 0xe0, 0xa3, 0x02, 0x60, 0xe0, + 0x90, 0x17, 0x05, 0x7e, + 0x30, 0xe0, 0x10, 0xe0, 0x7b, 0x90, 0xe0, 0xba, 0xa3, 0xfe, 0x90, 0xe0, + 0x62, 0x7b, 0x19, 0x12, + 0x12, 0x04, 0x57, 0x6f, 0x18, 0x12, 0x7d, 0xfc, 0x7c, 0x11, 0xff, 0x85, + 0x12, 0xfe, 0x95, 0x2d, + 0x16, 0x7d, 0x05, 0x7f, 0x2d, 0x12, 0x7d, 0xb6, 0x7c, 0x17, 0x7f, 0x85, + 0x7e, 0x07, 0x12, 0x00, + 0x57, 0x6f, 0x18, 0x7d, 0x85, 0x7c, 0x04, 0x7f, 0x08, 0x7e, 0x6f, 0x12, + 0x12, 0x57, 0x78, 0x18, + 0x6f, 0x12, 0x90, 0x57, 0xb7, 0x7b, 0x04, 0xe0, 0x75, 0xf0, 0x08, 0x32, + 0x03, 0x80, 0xf5, 0xe4, + 0x20, 0x32, 0x09, 0x51, 0x50, 0x20, 0x20, 0x06, 0x03, 0x52, 0x2d, 0x02, + 0xe4, 0x8e, 0x32, 0xf5, + 0x52, 0x20, 0x02, 0x03, 0x8e, 0x2d, 0x7b, 0x90, 0xe0, 0xb7, 0xf0, 0x04, + 0x2d, 0x02, 0x20, 0x8e, + 0x03, 0x48, 0x49, 0x30, 0x30, 0x08, 0x08, 0x4b, 0x2d, 0x12, 0x80, 0xcf, + 0xe4, 0x03, 0x32, 0xf5, + 0x51, 0x20, 0x20, 0x06, 0x03, 0x50, 0x53, 0x30, 0xe4, 0x71, 0x32, 0xf5, + 0x6c, 0x80, 0x4b, 0x30, + 0x30, 0x25, 0x0e, 0x4c, 0x7e, 0x90, 0xe0, 0x0d, 0x94, 0xd3, 0x50, 0x0a, + 0xe4, 0x05, 0x32, 0xf5, + 0x17, 0x80, 0x48, 0x30, 0x30, 0x14, 0x11, 0x49, 0x4b, 0x30, 0x30, 0x0e, + 0x0b, 0x4c, 0x4d, 0x30, + 0x75, 0x08, 0x40, 0x32, 0x03, 0x80, 0x18, 0x12, 0x20, 0xd3, 0x3b, 0x51, + 0x50, 0x20, 0x20, 0x38, + 0x35, 0x54, 0x55, 0x30, 0x80, 0x35, 0x30, 0x30, 0x1e, 0x4b, 0x4c, 0xa2, + 0x40, 0xb3, 0xa2, 0x05, + 0xb3, 0x4d, 0x03, 0x50, 0x2d, 0x12, 0x30, 0xcf, 0x11, 0x4c, 0x7e, 0x90, + 0xe0, 0x0d, 0x94, 0xd3, + 0x50, 0x0a, 0xe4, 0x08, 0x32, 0xf5, 0x03, 0x80, 0x18, 0x12, 0x20, 0xd3, + 0x09, 0x51, 0x50, 0x20, + 0x20, 0x06, 0x03, 0x54, 0x55, 0x30, 0x12, 0x03, 0xd3, 0x18, 0x7e, 0x90, + 0xe5, 0x07, 0xf0, 0x32, + 0x12, 0x22, 0x57, 0x6f, 0x15, 0x7d, 0x85, 0x7c, 0xff, 0xe4, 0x12, 0xfe, + 0x57, 0x6f, 0x7c, 0x22, + 0x7f, 0x83, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x83, + 0xfe, 0xff, 0x6f, 0x12, + 0x22, 0x57, 0x85, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, + 0x01, 0x7f, 0x6f, 0x12, + 0x22, 0x57, 0x85, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x12, 0x22, + 0x68, 0x64, 0x6b, 0x12, + 0x75, 0x0e, 0x30, 0x32, 0xc3, 0x22, 0x7a, 0x90, 0xe0, 0x89, 0x04, 0x94, + 0x7a, 0x90, 0xe0, 0x88, + 0x00, 0x94, 0x03, 0x50, 0x2f, 0x02, 0x90, 0xf8, 0x95, 0x7f, 0x12, 0xe0, + 0xf9, 0x25, 0x1c, 0x2e, + 0x2e, 0x00, 0x01, 0x24, 0x36, 0x2e, 0x2e, 0x02, 0x03, 0x50, 0x75, 0x2e, + 0x2e, 0x04, 0x05, 0xec, + 0xec, 0x2e, 0x2e, 0x06, 0x07, 0xec, 0xec, 0x2e, 0x2e, 0x08, 0x09, 0xec, + 0xec, 0x2e, 0x00, 0x0a, + 0x2e, 0x00, 0x12, 0x17, 0x7e, 0x00, 0x14, 0x80, 0x18, 0x20, 0x02, 0x03, + 0xf8, 0x2f, 0x4a, 0x80, + 0x19, 0x30, 0x12, 0x03, 0xc7, 0x51, 0x18, 0x30, 0x02, 0x03, 0xf8, 0x2f, + 0x90, 0xe4, 0x97, 0x7f, + 0x22, 0xf0, 0x1c, 0x30, 0x30, 0x0c, 0x09, 0x1b, 0x1d, 0x30, 0x90, 0x06, + 0x97, 0x7f, 0x03, 0x74, + 0x30, 0xf0, 0x06, 0x19, 0x18, 0x30, 0x02, 0x03, 0xf8, 0x2f, 0x1e, 0x80, + 0x1e, 0x30, 0x90, 0x06, + 0x97, 0x7f, 0x04, 0x74, 0x30, 0xf0, 0x06, 0x1c, 0x1b, 0x30, 0x20, 0x03, + 0x03, 0x1d, 0x51, 0x12, + 0x30, 0xc7, 0x06, 0x19, 0x18, 0x30, 0x02, 0x03, 0xf8, 0x2f, 0x7f, 0x90, + 0x74, 0x97, 0xf0, 0x01, + 0xc3, 0x22, 0x7a, 0x90, 0xe0, 0x89, 0x20, 0x94, 0x7a, 0x90, 0xe0, 0x88, + 0x00, 0x94, 0x03, 0x50, + 0x2f, 0x02, 0x30, 0xf8, 0x0c, 0x1d, 0x1a, 0x30, 0x30, 0x09, 0x06, 0x11, + 0x7f, 0x90, 0x74, 0x97, + 0xf0, 0x07, 0x10, 0x30, 0x30, 0x0c, 0x09, 0x1a, 0x11, 0x30, 0x90, 0x06, + 0x97, 0x7f, 0x08, 0x74, + 0x20, 0xf0, 0x06, 0x1e, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x03, 0x1c, 0x30, + 0x20, 0x03, 0x03, 0x1b, + 0x51, 0x12, 0x30, 0xc7, 0x03, 0x19, 0x18, 0x20, 0x90, 0x06, 0x97, 0x7f, + 0x01, 0x74, 0x90, 0xf0, + 0x97, 0x7f, 0x64, 0xe0, 0x60, 0x03, 0x02, 0x03, 0xf8, 0x2f, 0x7b, 0x90, + 0xe0, 0x11, 0xf0, 0x04, + 0xc3, 0xe0, 0x04, 0x94, 0x03, 0x50, 0x2f, 0x02, 0x30, 0xf8, 0x06, 0x11, + 0x7f, 0x90, 0x74, 0x97, + 0xf0, 0x05, 0x90, 0xe4, 0x11, 0x7b, 0x22, 0xf0, 0x1f, 0x30, 0x30, 0x09, + 0x06, 0x1a, 0x11, 0x30, + 0x20, 0x03, 0x07, 0x19, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x04, 0x90, 0x22, + 0xa0, 0x7a, 0x70, 0xe0, + 0x02, 0x03, 0xf8, 0x2f, 0x7f, 0x90, 0xe0, 0x0b, 0x12, 0xff, 0x38, 0x51, + 0x74, 0x9f, 0xf8, 0x80, + 0x64, 0xec, 0x98, 0x80, 0x08, 0x50, 0x7f, 0x90, 0x12, 0x0d, 0xfc, 0x50, + 0x09, 0x40, 0x7f, 0x90, + 0x74, 0x97, 0xf0, 0x0a, 0x2f, 0x02, 0x90, 0x85, 0x0f, 0x7f, 0x51, 0x12, + 0x12, 0x2c, 0x11, 0x51, + 0x09, 0x40, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x09, 0x2f, 0x02, 0x90, 0x85, + 0x11, 0x7f, 0x50, 0x12, + 0x40, 0xfc, 0x90, 0x08, 0x97, 0x7f, 0x08, 0x74, 0x80, 0xf0, 0x90, 0x36, + 0x13, 0x7f, 0x51, 0x12, + 0x12, 0x2c, 0x11, 0x51, 0x08, 0x40, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x07, + 0x23, 0x80, 0x7f, 0x90, + 0xe0, 0x15, 0x33, 0xff, 0xe0, 0x95, 0x90, 0xfe, 0xa4, 0x7a, 0x2f, 0xe0, + 0x90, 0xff, 0xa3, 0x7a, + 0x12, 0xe0, 0x0d, 0x51, 0x7f, 0x90, 0x40, 0x97, 0x74, 0x05, 0xf0, 0x06, + 0x03, 0x80, 0x05, 0x74, + 0x30, 0xf0, 0x1d, 0x46, 0x7f, 0x90, 0xe0, 0x95, 0x90, 0xff, 0x97, 0x7f, + 0xd3, 0xe0, 0x50, 0x9f, + 0xe0, 0x10, 0x64, 0xc3, 0x94, 0x80, 0x40, 0x88, 0x90, 0x08, 0x95, 0x7f, + 0x90, 0xe0, 0x97, 0x7f, + 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x08, 0x94, 0x19, 0x40, 0x94, 0xe0, + 0x50, 0x0a, 0x90, 0x14, + 0xbe, 0x7a, 0xc3, 0xe0, 0x03, 0x94, 0x0b, 0x40, 0x7f, 0x90, 0xe0, 0x95, + 0x90, 0x04, 0x97, 0x7f, + 0xd2, 0xf0, 0x90, 0x46, 0x66, 0x7f, 0x30, 0xe0, 0x2a, 0xe0, 0x7b, 0x90, + 0xe0, 0x0c, 0x0d, 0x60, + 0x7a, 0x90, 0xe0, 0xf4, 0x90, 0xff, 0xf3, 0x7a, 0xc3, 0xe0, 0x50, 0x9f, + 0x90, 0x08, 0xf3, 0x7a, + 0x90, 0xe0, 0xf4, 0x7a, 0x90, 0xf0, 0xf4, 0x7a, 0xff, 0xe0, 0x7f, 0x90, + 0xe0, 0x97, 0x9f, 0xd3, + 0x02, 0x40, 0xf0, 0xef, 0xe5, 0x22, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, + 0x13, 0xe5, 0xf5, 0x13, + 0x92, 0x13, 0xe5, 0x1e, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, + 0xf5, 0x13, 0x22, 0x13, + 0x25, 0xe0, 0xf5, 0x18, 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, + 0xe4, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0xe0, 0x22, 0x16, 0xf5, 0xe0, 0xa3, + 0x17, 0xf5, 0xe0, 0x22, + 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x95, 0xc3, 0xff, 0x11, 0x12, 0xe5, + 0x10, 0x95, 0xf8, 0xc4, + 0xf0, 0x54, 0x68, 0xc8, 0x14, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, + 0xd3, 0x15, 0x1d, 0x95, + 0x14, 0xe5, 0x1c, 0x95, 0xe5, 0x22, 0x25, 0x11, 0xf5, 0xe0, 0xe5, 0x11, + 0x33, 0x10, 0x10, 0xf5, + 0x18, 0x92, 0x13, 0xe5, 0xe0, 0x25, 0xe5, 0xff, 0x33, 0x12, 0x7c, 0xfe, + 0xef, 0x00, 0x23, 0x25, + 0x13, 0xf5, 0x3e, 0xec, 0x12, 0xf5, 0x19, 0x15, 0xe4, 0x22, 0xa3, 0xf0, + 0x90, 0xf0, 0x68, 0x7d, + 0xfe, 0xe0, 0xc3, 0xa3, 0xff, 0xe0, 0x7d, 0x90, 0xe0, 0x6b, 0x90, 0x9f, + 0x6a, 0x7d, 0x9e, 0xe0, + 0xe5, 0x22, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0xe5, 0x22, 0x54, 0x15, + 0xff, 0x0f, 0x10, 0xe5, + 0x14, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, 0x22, 0x15, 0x14, 0xe5, + 0xa3, 0xf0, 0x15, 0xe5, + 0x22, 0xf0, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, + 0x9f, 0xff, 0x7d, 0x90, + 0xf0, 0xa1, 0x87, 0x74, 0x90, 0x9e, 0xa0, 0x7d, 0x22, 0xf0, 0xe5, 0xc3, + 0x95, 0x1d, 0xe5, 0x17, + 0x95, 0x1c, 0x22, 0x16, 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, + 0x75, 0x00, 0x01, 0x15, + 0xa2, 0x22, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x7d, 0x90, 0xf0, 0xa4, + 0xf0, 0xa3, 0x7d, 0x7e, + 0xa4, 0x7f, 0x01, 0x7d, 0x22, 0xfc, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, + 0x22, 0x13, 0x13, 0x95, + 0x12, 0xe5, 0x80, 0x64, 0xe0, 0xf8, 0x80, 0x64, 0x22, 0x98, 0xf5, 0xe0, + 0xa3, 0x1a, 0xf5, 0xe0, + 0x22, 0x1b, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0xf5, 0xe0, + 0xa3, 0x1c, 0xf5, 0xe0, + 0x05, 0x1d, 0xe5, 0x1d, 0x22, 0x1d, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0xe5, + 0x22, 0xf0, 0xf5, 0xe0, + 0xa3, 0x12, 0xf5, 0xe0, 0x22, 0x13, 0xf5, 0xe4, 0xf5, 0x12, 0xd3, 0x13, + 0x11, 0xe5, 0x00, 0x94, + 0x10, 0xe5, 0x80, 0x64, 0xa0, 0x94, 0xe5, 0x22, 0xc4, 0x15, 0x54, 0xf8, + 0xc8, 0x0f, 0xff, 0x68, + 0x14, 0xe5, 0x54, 0xc4, 0x48, 0xf0, 0x22, 0xfe, 0xf5, 0xe0, 0xa3, 0x14, + 0xf5, 0xe0, 0x22, 0x15, + 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, + 0xef, 0xa3, 0x22, 0xf0, + 0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0x15, 0x45, + 0x15, 0xf5, 0x74, 0x22, + 0xf5, 0xff, 0xf5, 0x12, 0xc3, 0x13, 0x10, 0xe5, 0x80, 0x64, 0x60, 0x94, + 0x92, 0x22, 0xe5, 0x1f, + 0x13, 0x18, 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0x22, 0x18, 0x0f, 0x54, + 0x10, 0xf5, 0x11, 0x75, + 0xe5, 0x00, 0x54, 0x14, 0xfe, 0x0f, 0xc2, 0x22, 0xe5, 0x18, 0xff, 0x10, + 0x18, 0x8f, 0x7d, 0x90, + 0xe0, 0x3d, 0xe5, 0x22, 0x25, 0x15, 0xf5, 0xe0, 0xe5, 0x15, 0x33, 0x14, + 0x14, 0xf5, 0xe0, 0x22, + 0x10, 0xf5, 0xe0, 0xa3, 0x11, 0xf5, 0x92, 0x22, 0xe5, 0x1f, 0xc3, 0x18, + 0x45, 0x13, 0xf5, 0x23, + 0x22, 0x18, 0x18, 0xe5, 0x80, 0x64, 0xe5, 0xf8, 0x64, 0x19, 0x98, 0x80, + 0x25, 0x22, 0xf5, 0x15, + 0x74, 0x15, 0x35, 0xff, 0xf5, 0x14, 0x22, 0x14, 0xfe, 0xe0, 0xe0, 0xa3, + 0xc3, 0xff, 0xcf, 0x22, + 0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd3, 0x22, 0x13, 0xe5, + 0x17, 0x95, 0x12, 0xe5, + 0x16, 0x95, 0x85, 0x22, 0x1c, 0x10, 0x11, 0x85, 0x22, 0x1d, 0xe5, 0xd3, + 0x95, 0x1d, 0xe5, 0x11, + 0x95, 0x1c, 0x22, 0x10, 0x7f, 0x90, 0xe0, 0x67, 0xe5, 0x20, 0x02, 0x03, + 0x1d, 0x34, 0x18, 0x7f, + 0x66, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x09, 0x7c, 0xf0, 0xee, 0xef, 0xa3, + 0xc3, 0xf0, 0x7c, 0x90, + 0xe0, 0x09, 0x80, 0x64, 0x80, 0x94, 0x07, 0x50, 0x7f, 0x74, 0xa3, 0xf0, + 0xff, 0x74, 0x90, 0xf0, + 0xa8, 0x7a, 0x20, 0xe0, 0x1c, 0xe0, 0x7c, 0x90, 0xe0, 0x0a, 0xe0, 0x25, + 0x90, 0xf0, 0x09, 0x7c, + 0x33, 0xe0, 0xc3, 0xf0, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x80, 0x74, 0x07, + 0xf0, 0x7f, 0x74, 0xa3, + 0xf0, 0xff, 0x7c, 0x90, 0xe0, 0x0a, 0x14, 0x24, 0x90, 0xfe, 0x09, 0x7c, + 0x34, 0xe0, 0x90, 0xf7, + 0x92, 0x7f, 0xa3, 0xf0, 0xf0, 0xce, 0x7f, 0x90, 0xe0, 0x92, 0xa3, 0xff, + 0x90, 0xe0, 0x0b, 0x7c, + 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x0b, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, + 0x94, 0xd3, 0xee, 0x00, + 0x80, 0x64, 0x80, 0x94, 0x02, 0x40, 0x11, 0x80, 0xee, 0xc3, 0x80, 0x64, + 0x80, 0x94, 0x02, 0x50, + 0x07, 0x80, 0x90, 0xe4, 0x0b, 0x7c, 0xa3, 0xf0, 0xd3, 0xf0, 0x7c, 0x90, + 0xe0, 0x0c, 0x6a, 0x94, + 0x7c, 0x90, 0xe0, 0x0b, 0x80, 0x64, 0x8a, 0x94, 0x07, 0x40, 0x0a, 0x74, + 0xa3, 0xf0, 0x6a, 0x74, + 0xc3, 0xf0, 0x7c, 0x90, 0xe0, 0x0c, 0x96, 0x94, 0x7c, 0x90, 0xe0, 0x0b, + 0x80, 0x64, 0x75, 0x94, + 0x07, 0x50, 0xf5, 0x74, 0xa3, 0xf0, 0x96, 0x74, 0x90, 0xf0, 0x0b, 0x7c, + 0xfe, 0xe0, 0xe0, 0xa3, + 0xaa, 0xfb, 0xea, 0x06, 0x95, 0x33, 0xf9, 0xe0, 0x90, 0xf8, 0xa5, 0x7a, + 0xff, 0xe0, 0xfc, 0xe4, + 0xfe, 0xfd, 0x71, 0x12, 0xc0, 0x07, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, + 0x7f, 0xaf, 0x7e, 0x2d, + 0x12, 0x55, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xd5, 0xa3, 0xf0, 0xf0, 0xef, + 0x7c, 0x90, 0x12, 0x0d, + 0x8e, 0x25, 0x7a, 0x90, 0xe0, 0xd5, 0xa3, 0xfe, 0xff, 0xe0, 0xfc, 0xe4, + 0x12, 0xfd, 0x07, 0x71, + 0x7c, 0x90, 0x12, 0x0d, 0x72, 0x25, 0x12, 0x78, 0x25, 0x12, 0x90, 0x4b, + 0x0b, 0x7c, 0xf0, 0xee, + 0xef, 0xa3, 0xc3, 0xf0, 0x7a, 0x90, 0xe0, 0xd6, 0xf0, 0x9f, 0x7a, 0x90, + 0xe0, 0xd5, 0xf0, 0x9e, + 0xa3, 0xd3, 0x94, 0xe0, 0x90, 0xff, 0xd5, 0x7a, 0x94, 0xe0, 0x40, 0x3f, + 0x74, 0x07, 0xf0, 0x3f, + 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xc3, 0xd5, 0x7a, 0x94, 0xe0, 0x50, 0x02, + 0x74, 0x06, 0xf0, 0x02, + 0xe4, 0xa3, 0x90, 0xf0, 0xd5, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, + 0x7c, 0x2d, 0x12, 0x55, + 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7a, 0x90, 0xe0, 0xd8, + 0x4f, 0x60, 0xf0, 0xe4, + 0x7a, 0x90, 0xe0, 0xd9, 0xa3, 0xff, 0x90, 0xe0, 0xdb, 0x7a, 0xf0, 0xcf, + 0xef, 0xa3, 0x7f, 0xf0, + 0x7e, 0x12, 0x12, 0x62, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xd9, 0xa3, 0xf0, + 0xf0, 0xef, 0x7a, 0x90, + 0xe0, 0xdb, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0xda, 0x7a, 0x9f, 0xe0, + 0x90, 0xff, 0xd9, 0x7a, + 0x9e, 0xe0, 0x12, 0xfe, 0xff, 0x70, 0xee, 0xc3, 0x80, 0x94, 0x5d, 0x40, + 0x7a, 0x90, 0xe0, 0xdd, + 0xa3, 0xfe, 0xff, 0xe0, 0x9f, 0xe4, 0xe4, 0xff, 0x12, 0x9e, 0xff, 0x70, + 0x90, 0x22, 0xd8, 0x7a, + 0x01, 0x74, 0x90, 0xf0, 0xe1, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0xdd, 0x7a, 0xfc, 0xe0, + 0xe0, 0xa3, 0x9f, 0xc3, 0xec, 0xff, 0xfe, 0x9e, 0x7a, 0x90, 0xf0, 0xdf, + 0xef, 0xa3, 0xd3, 0xf0, + 0x00, 0x94, 0x64, 0xee, 0x94, 0x80, 0x40, 0x80, 0xe0, 0x20, 0x04, 0x24, + 0x90, 0xff, 0xdf, 0x7a, + 0x34, 0xe0, 0xfe, 0x00, 0x78, 0xef, 0xce, 0x03, 0xe7, 0xa2, 0xce, 0x13, + 0xd8, 0x13, 0xff, 0xf8, + 0x7a, 0x90, 0xee, 0xe1, 0xf0, 0x8f, 0x24, 0x12, 0x22, 0x8c, 0x19, 0x7d, + 0x82, 0x7c, 0xff, 0x7f, + 0x01, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x1c, 0x7f, 0x82, 0x7e, 0x01, + 0x12, 0x43, 0x57, 0x6f, + 0x03, 0x7d, 0x35, 0x12, 0x7d, 0x95, 0x12, 0x05, 0x9e, 0x35, 0x06, 0x7d, + 0x35, 0x12, 0x7d, 0x9e, + 0x12, 0x07, 0xa7, 0x35, 0x11, 0x7d, 0x35, 0x12, 0x7d, 0x95, 0x12, 0x12, + 0x0e, 0x36, 0x13, 0x7d, + 0x83, 0x7c, 0x35, 0x12, 0x7d, 0xe6, 0x12, 0x14, 0xa7, 0x35, 0x2c, 0x7d, + 0x35, 0x12, 0x7d, 0xb0, + 0x12, 0x2d, 0x0e, 0x36, 0x04, 0x7f, 0x18, 0x12, 0x12, 0x71, 0x57, 0x6f, + 0x2f, 0x7d, 0x35, 0x12, + 0x7d, 0xb0, 0x12, 0x2b, 0xcb, 0x35, 0x3c, 0x7d, 0x35, 0x12, 0x7d, 0xcb, + 0x12, 0x3d, 0xfc, 0x35, + 0x44, 0x7d, 0x35, 0x12, 0xc0, 0xfc, 0x12, 0xd0, 0x88, 0x16, 0xf5, 0xe4, + 0x12, 0x0d, 0x22, 0x16, + 0x0c, 0xb4, 0x7e, 0xfa, 0x7f, 0x7d, 0x7d, 0xa4, 0x7c, 0x0c, 0x12, 0x00, + 0xae, 0x00, 0x30, 0x7b, + 0x35, 0x12, 0xd0, 0xee, 0xc0, 0xd0, 0x12, 0xd0, 0x88, 0x16, 0xf5, 0xe4, + 0x12, 0x0d, 0x22, 0x16, + 0x16, 0xb4, 0x12, 0xfa, 0xc0, 0x17, 0x00, 0x12, 0x7b, 0xae, 0x12, 0x15, + 0xee, 0x35, 0xd0, 0xd0, + 0x03, 0x7d, 0x35, 0x12, 0x7d, 0xd4, 0x12, 0x05, 0xd4, 0x35, 0x06, 0x7d, + 0x36, 0x12, 0x7d, 0x05, + 0x12, 0x07, 0x05, 0x36, 0x11, 0x7d, 0x35, 0x12, 0x7d, 0xb9, 0x12, 0x15, + 0xb9, 0x35, 0x85, 0x7c, + 0x35, 0x12, 0x7d, 0xc2, 0x7c, 0x17, 0xe4, 0x85, 0xfe, 0xff, 0x6f, 0x12, + 0x7d, 0x57, 0x7c, 0x18, + 0x7f, 0x85, 0x7e, 0x04, 0x12, 0x08, 0x57, 0x6f, 0x18, 0x12, 0x12, 0x78, + 0x57, 0x6f, 0x1f, 0x7d, + 0x85, 0x7c, 0x35, 0x12, 0x7d, 0xe6, 0x7c, 0x20, 0x7f, 0x85, 0x7e, 0x03, + 0x12, 0x00, 0x57, 0x6f, + 0x21, 0x7d, 0x19, 0x12, 0x12, 0x15, 0x57, 0x6f, 0x13, 0x7f, 0x11, 0x7e, + 0x6e, 0x12, 0x90, 0xf0, + 0xb8, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xb8, 0x7b, 0xc4, 0xe0, + 0x54, 0x13, 0x7e, 0x07, + 0x12, 0x00, 0xb9, 0x17, 0x10, 0x7d, 0x86, 0x7c, 0x03, 0x70, 0x80, 0xff, + 0x7f, 0x04, 0x7e, 0xff, + 0x12, 0x00, 0x57, 0x6f, 0x12, 0x7d, 0x35, 0x12, 0x7d, 0xdd, 0x12, 0x15, + 0xdd, 0x35, 0x86, 0x7c, + 0x35, 0x12, 0x90, 0xc2, 0x86, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, + 0x7c, 0x17, 0x12, 0x86, + 0x57, 0x6f, 0x11, 0x7d, 0x86, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, + 0xd0, 0xc0, 0x16, 0x12, + 0xe4, 0x88, 0x7d, 0x90, 0xf0, 0xa0, 0x16, 0x12, 0x7d, 0xe3, 0xfc, 0x01, + 0x00, 0x12, 0x7b, 0xae, + 0x7a, 0x10, 0x7d, 0x00, 0x7f, 0x3f, 0x12, 0x08, 0x2c, 0x70, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, + 0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, + 0xff, 0xe4, 0x12, 0xfe, + 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, + 0x83, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x85, 0xfe, 0xff, 0x6f, 0x12, + 0x22, 0x57, 0x16, 0x7d, + 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x83, 0xfe, 0xff, + 0x6f, 0x12, 0x22, 0x57, + 0x84, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7c, 0x22, 0xe4, 0x86, + 0xfe, 0xff, 0x6f, 0x12, + 0x22, 0x57, 0x04, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x00, 0x7a, + 0x03, 0x7d, 0x08, 0x7f, + 0x70, 0x12, 0xa2, 0x2c, 0x92, 0xd1, 0x22, 0xaf, 0x83, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0x57, 0x6f, + 0x7c, 0x22, 0xe4, 0x84, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x83, 0x7c, + 0x02, 0x7f, 0x00, 0x7e, + 0x6f, 0x12, 0x22, 0x57, 0x7f, 0x90, 0xe0, 0x95, 0x25, 0x12, 0x36, 0xf9, + 0x00, 0x47, 0x78, 0x36, + 0x36, 0x01, 0x02, 0x9c, 0xb4, 0x36, 0x36, 0x03, 0x04, 0xc1, 0xce, 0x36, + 0x36, 0x05, 0x06, 0xe2, + 0xf5, 0x36, 0x36, 0x07, 0x08, 0xf5, 0x47, 0x36, 0x36, 0xfc, 0xfd, 0x47, + 0x47, 0x36, 0x00, 0xff, + 0x37, 0x00, 0x90, 0x08, 0xa5, 0x7a, 0x30, 0x74, 0x90, 0xf0, 0x95, 0x7f, + 0xc3, 0xe0, 0x80, 0x64, + 0x7f, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0xa5, 0xf0, 0x10, 0x90, 0xe4, + 0x15, 0x7c, 0xa3, 0xf0, + 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0x7b, 0xf0, + 0x7a, 0xff, 0x79, 0x3a, + 0x02, 0xf7, 0x1d, 0x37, 0x90, 0xe4, 0x15, 0x7c, 0x90, 0xf0, 0x35, 0x7f, + 0x90, 0xe0, 0x16, 0x7c, + 0x90, 0xf0, 0x3b, 0x7f, 0x90, 0xe0, 0x17, 0x7c, 0xe4, 0xf0, 0xf0, 0xa3, + 0xf0, 0xa3, 0x63, 0x12, + 0x7a, 0xd2, 0x79, 0x3b, 0x02, 0x06, 0x1d, 0x37, 0x63, 0x12, 0x90, 0xe5, + 0x4d, 0x7f, 0x90, 0xe0, + 0x1a, 0x7c, 0x90, 0xf0, 0x53, 0x7f, 0x63, 0x12, 0x7a, 0xdd, 0x79, 0x3b, + 0x02, 0x15, 0x1d, 0x37, + 0x63, 0x12, 0x12, 0xe5, 0xd2, 0x63, 0x3b, 0x7a, 0x24, 0x79, 0x37, 0x02, + 0x12, 0x1d, 0xac, 0x63, + 0x63, 0x12, 0x7a, 0xd2, 0x79, 0x3b, 0x02, 0x33, 0x1d, 0x37, 0x63, 0x12, + 0xa3, 0xac, 0xd0, 0x74, + 0xa3, 0xf0, 0x40, 0x74, 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x3b, 0x02, 0x33, + 0x1d, 0x37, 0x63, 0x12, + 0xa3, 0xac, 0x90, 0x74, 0xa3, 0xf0, 0x30, 0x74, 0x7b, 0xf0, 0x7a, 0xff, + 0x79, 0x3b, 0x80, 0x42, + 0x12, 0x28, 0xac, 0x63, 0x74, 0xa3, 0xf0, 0x48, 0x74, 0xa3, 0xf0, 0x14, + 0xff, 0x7b, 0x3b, 0x7a, + 0x42, 0x79, 0x15, 0x80, 0x63, 0x12, 0x90, 0xac, 0x51, 0x7f, 0x90, 0xe0, + 0x1a, 0x7c, 0x90, 0xf0, + 0x57, 0x7f, 0x63, 0x12, 0x7a, 0xdd, 0x79, 0x3b, 0xa3, 0x42, 0x25, 0x12, + 0x90, 0xf0, 0x95, 0x7f, + 0xc3, 0xe0, 0x03, 0x94, 0x7a, 0x90, 0x50, 0xd4, 0x74, 0x05, 0xf0, 0x0f, + 0x03, 0x80, 0x07, 0x74, + 0x90, 0xf0, 0x67, 0x7f, 0x20, 0xe0, 0x03, 0xe4, 0x37, 0x02, 0x12, 0xd5, + 0x05, 0x6e, 0x7f, 0x90, + 0xe0, 0x66, 0x30, 0xa3, 0x0b, 0xe0, 0x7f, 0x90, 0xe0, 0x95, 0x64, 0xc3, + 0x94, 0x80, 0x50, 0x85, + 0x90, 0x10, 0x1a, 0x7c, 0x12, 0x7d, 0x37, 0x12, 0x90, 0xd6, 0x1b, 0x7c, + 0x13, 0x7d, 0x37, 0x12, + 0x90, 0xd6, 0x1a, 0x7c, 0x90, 0xe0, 0xf1, 0x7a, 0x90, 0xf0, 0x1b, 0x7c, + 0x90, 0xe0, 0xf2, 0x7a, + 0x90, 0xf0, 0x16, 0x7c, 0x14, 0x7d, 0x37, 0x12, 0x90, 0xe0, 0x17, 0x7c, + 0x15, 0x7d, 0x37, 0x12, + 0x90, 0xe0, 0x18, 0x7c, 0x16, 0x7d, 0x37, 0x12, 0x90, 0xea, 0x19, 0x7c, + 0x17, 0x7d, 0x37, 0x12, + 0x90, 0xea, 0xd4, 0x7a, 0xff, 0xe0, 0x00, 0x7e, 0x10, 0x7d, 0x55, 0x7c, + 0x6f, 0x12, 0xe4, 0x57, + 0x7c, 0x90, 0xf0, 0x14, 0x7c, 0x90, 0x12, 0x1c, 0xe7, 0x25, 0x7c, 0x90, + 0xe0, 0x14, 0xf5, 0xfd, + 0x75, 0x82, 0x00, 0x83, 0x24, 0x12, 0xff, 0x4d, 0x00, 0x7e, 0x24, 0xed, + 0xfd, 0x18, 0x34, 0xe4, + 0xfc, 0x55, 0x6f, 0x12, 0x90, 0x57, 0x14, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, + 0x94, 0xc3, 0x40, 0x0f, + 0x22, 0xd3, 0xff, 0xe0, 0x00, 0x7e, 0x55, 0x7c, 0x6f, 0x12, 0x22, 0x57, + 0xff, 0xe0, 0x00, 0x7e, + 0x55, 0x7c, 0x6f, 0x12, 0x22, 0x57, 0xff, 0xe0, 0x00, 0x7e, 0x55, 0x7c, + 0x6f, 0x12, 0x22, 0x57, + 0xaf, 0xc2, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, + 0xd0, 0x75, 0xc0, 0x00, + 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, + 0xc0, 0x06, 0xe4, 0x07, + 0x12, 0xff, 0x56, 0x6e, 0xaf, 0xd2, 0x03, 0x7f, 0x80, 0x7e, 0x6e, 0x12, + 0x90, 0xf0, 0xc3, 0x7b, + 0xf0, 0xef, 0xe0, 0x20, 0x02, 0x03, 0x83, 0x39, 0x07, 0x7f, 0x83, 0x7e, + 0x6e, 0x12, 0x12, 0xf0, + 0x69, 0x16, 0xe0, 0x20, 0x02, 0x03, 0xda, 0x38, 0x7b, 0x90, 0xe0, 0x64, + 0x16, 0x64, 0x59, 0x60, + 0x24, 0xe0, 0xff, 0x17, 0x34, 0xe4, 0xfe, 0x83, 0x6e, 0x12, 0x12, 0xf0, + 0xea, 0x16, 0x7b, 0x90, + 0xe0, 0x64, 0x25, 0xf9, 0x24, 0xe0, 0xf5, 0x69, 0xe4, 0x82, 0x7b, 0x34, + 0x17, 0x12, 0xae, 0x01, + 0x78, 0x04, 0x12, 0x04, 0x72, 0x16, 0xfb, 0xd8, 0x17, 0x12, 0x24, 0x7a, + 0xf5, 0x69, 0xe4, 0x82, + 0x7b, 0x34, 0x16, 0x12, 0x50, 0xa9, 0x12, 0x03, 0x43, 0x16, 0x17, 0x12, + 0x94, 0x93, 0x40, 0x83, + 0x74, 0x07, 0xf0, 0x03, 0x74, 0xa3, 0xf0, 0xff, 0x16, 0x12, 0x90, 0x80, + 0x65, 0x7b, 0x18, 0x12, + 0x90, 0x81, 0x64, 0x7b, 0x04, 0xe0, 0x80, 0xf0, 0x90, 0x20, 0x65, 0x7b, + 0xff, 0xe0, 0xe0, 0xa3, + 0x7b, 0x90, 0xcf, 0x67, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0xe4, 0x65, + 0xa3, 0xf0, 0x90, 0xf0, + 0xb2, 0x7b, 0xf0, 0x04, 0x7b, 0x90, 0xe4, 0x64, 0xc0, 0xf0, 0x12, 0xd0, + 0x88, 0x16, 0x40, 0x30, + 0x12, 0xfd, 0x88, 0x18, 0xfe, 0x54, 0x17, 0x12, 0x7d, 0x5f, 0x7c, 0x05, + 0x12, 0x83, 0x15, 0x72, + 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x07, 0x7f, 0x83, 0x7e, 0x6e, 0x12, + 0x12, 0xf0, 0x69, 0x16, + 0xe1, 0x20, 0x02, 0x03, 0x83, 0x39, 0x7b, 0x90, 0xe0, 0x95, 0x0c, 0x64, + 0x5a, 0x60, 0x24, 0xe0, + 0xff, 0x32, 0x34, 0xe4, 0xfe, 0x83, 0x6e, 0x12, 0x12, 0xf0, 0xea, 0x16, + 0x7b, 0x90, 0xe0, 0x95, + 0x25, 0xf9, 0x24, 0xe0, 0xf5, 0x9a, 0xe4, 0x82, 0x7b, 0x34, 0x17, 0x12, + 0xae, 0x01, 0x78, 0x04, + 0x12, 0x04, 0x72, 0x16, 0xfb, 0xd8, 0x17, 0x12, 0x24, 0x7a, 0xf5, 0x9a, + 0xe4, 0x82, 0x7b, 0x34, + 0x16, 0x12, 0x50, 0xa9, 0x12, 0x03, 0x43, 0x16, 0x17, 0x12, 0x94, 0x93, + 0x40, 0x83, 0x74, 0x07, + 0xf0, 0x03, 0x74, 0xa3, 0xf0, 0xff, 0x16, 0x12, 0xff, 0x80, 0x7b, 0x90, + 0x12, 0x96, 0x82, 0x18, + 0x7b, 0x90, 0xe0, 0x95, 0xf0, 0x04, 0x1a, 0x80, 0x7b, 0x90, 0xe0, 0x96, + 0xa3, 0xff, 0x90, 0xe0, + 0x98, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x96, 0x7b, 0xf0, 0xe4, + 0xf0, 0xa3, 0x7b, 0x90, + 0xf0, 0x95, 0xd0, 0xc0, 0x16, 0x12, 0x30, 0x88, 0xfd, 0x40, 0x18, 0x12, + 0x54, 0x88, 0x12, 0xfd, + 0x5f, 0x17, 0x05, 0x7d, 0x83, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, + 0xd0, 0xaf, 0x90, 0xd0, + 0xc3, 0x7b, 0x30, 0xe0, 0x1c, 0xe1, 0x07, 0x7f, 0x84, 0x7e, 0x6e, 0x12, + 0x12, 0xf0, 0x69, 0x16, + 0xe0, 0x30, 0xe0, 0x0f, 0xfe, 0x54, 0x12, 0xf0, 0xc5, 0x16, 0x7d, 0xff, + 0x7c, 0x05, 0x12, 0x84, + 0x57, 0x6f, 0xa9, 0x53, 0xc2, 0xfb, 0xe4, 0xaf, 0x12, 0xff, 0xd4, 0x6f, + 0x07, 0xd0, 0x06, 0xd0, + 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, + 0xd0, 0xd0, 0x82, 0xd0, + 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, 0xaf, 0xd2, 0x00, 0x32, 0xff, 0x00, + 0x00, 0xfe, 0x00, 0x01, + 0xff, 0x02, 0x00, 0xfe, 0x00, 0x00, 0xff, 0x04, 0xff, 0xfe, 0x00, 0xfc, + 0x00, 0x04, 0xff, 0x03, + 0x00, 0xfa, 0x00, 0x00, 0xff, 0x06, 0xff, 0xfb, 0x00, 0xfd, 0xff, 0x0b, + 0xff, 0xfc, 0x00, 0xed, + 0x00, 0x13, 0xff, 0x1c, 0xff, 0xd3, 0x00, 0xdc, 0x00, 0x5a, 0xff, 0x2a, + 0xff, 0x47, 0x02, 0xd2, + 0xff, 0x66, 0x00, 0xfe, 0x00, 0x04, 0xff, 0x01, 0x00, 0xfc, 0x00, 0x00, + 0xff, 0x04, 0xff, 0xfe, + 0x00, 0xfc, 0x00, 0x05, 0xff, 0x02, 0x00, 0xf8, 0x00, 0x02, 0xff, 0x0b, + 0xff, 0xf8, 0x00, 0xf1, + 0x00, 0x10, 0xff, 0x13, 0xff, 0xe5, 0x00, 0xea, 0x00, 0x2c, 0xff, 0x1a, + 0xff, 0xbb, 0x00, 0xe4, + 0x00, 0x6e, 0xff, 0x1f, 0xff, 0x37, 0x02, 0xe0, 0xff, 0x74, 0x00, 0xff, + 0x00, 0x01, 0xff, 0x01, + 0xff, 0xff, 0x00, 0xff, 0x00, 0x02, 0xff, 0x01, 0x00, 0xfe, 0x00, 0x00, + 0xff, 0x03, 0xff, 0xff, + 0x00, 0xfd, 0x00, 0x04, 0xff, 0x01, 0x00, 0xf8, 0x00, 0x04, 0xff, 0x0d, + 0xff, 0xf3, 0x00, 0xed, + 0x00, 0x1c, 0xff, 0x19, 0xff, 0xcb, 0x00, 0xe1, 0x00, 0x60, 0xff, 0x25, + 0xff, 0x42, 0x02, 0xd8, + 0xff, 0x6b, 0x00, 0xfd, 0x00, 0x03, 0xff, 0x02, 0x00, 0xfc, 0x00, 0x00, + 0xff, 0x04, 0xff, 0xff, + 0x00, 0xfc, 0x00, 0x03, 0xff, 0x03, 0x00, 0xfb, 0x00, 0x00, 0xff, 0x09, + 0xff, 0xfc, 0x00, 0xf4, + 0x00, 0x0a, 0xff, 0x10, 0xff, 0xeb, 0x00, 0xec, 0x00, 0x25, 0xff, 0x19, + 0xff, 0xc2, 0x00, 0xe4, + 0x00, 0x69, 0xff, 0x1f, 0xff, 0x3b, 0x02, 0xdf, 0x1c, 0x72, 0x16, 0x36, + 0x15, 0xed, 0x18, 0x44, + 0x14, 0x36, 0x18, 0x36, 0x14, 0x7f, 0x18, 0x5b, 0x5b, 0x90, 0x5b, 0x5b, + 0x59, 0x5b, 0x0b, 0x49, + 0x01, 0xf5, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x02, 0x40, 0x24, 0xb2, + 0x18, 0x32, 0x10, 0x15, + 0x07, 0x04, 0x05, 0xaa, 0x4a, 0x19, 0x31, 0xdd, 0x21, 0xd0, 0x16, 0x20, + 0x0e, 0x07, 0x7f, 0xa6, + 0x61, 0xff, 0x3c, 0x18, 0x26, 0xf0, 0x18, 0x3f, 0x7f, 0x01, 0x7f, 0xff, + 0x6a, 0xff, 0x3a, 0x40, + 0x20, 0x76, 0x01, 0x2b, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x03, 0x02, 0x04, 0x03, + 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x04, 0x03, 0x08, 0x06, + 0x0c, 0x0a, 0x10, 0x0e, + 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, + 0x04, 0x03, 0x01, 0x04, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x1f, 0x01, 0x10, 0x17, + 0x0e, 0x13, 0x0d, 0x11, 0x04, 0x10, 0x05, 0x05, 0x07, 0x06, 0x08, 0x08, + 0x34, 0x09, 0x34, 0xcd, + 0x34, 0xcd, 0x34, 0xcd, 0x34, 0xcd, 0x34, 0xcd, 0x1a, 0xcd, 0x1a, 0x33, + 0x1a, 0x33, 0x1a, 0x33, + 0x1a, 0x33, 0x1a, 0x33, 0x34, 0x33, 0x31, 0x18, 0x2e, 0x4a, 0x35, 0xd4, + 0x35, 0xf1, 0x3c, 0xf1, + 0x18, 0xf9, 0x19, 0x14, 0x18, 0xc6, 0x19, 0xfa, 0x1a, 0x09, 0x1c, 0x00, + 0x30, 0x46, 0x30, 0x39, + 0x35, 0x39, 0x39, 0x3a, 0x39, 0x7f, 0x3b, 0x97, 0x20, 0xfc, 0x03, 0x61, + 0x3c, 0x02, 0x7f, 0x37, + 0x12, 0x01, 0xb3, 0x1b, 0x7a, 0x90, 0x12, 0x82, 0x72, 0x25, 0x24, 0xef, + 0xff, 0x01, 0x3e, 0xe4, + 0xe4, 0xfe, 0xfd, 0x3d, 0x3c, 0xe4, 0x90, 0xfc, 0x82, 0x7a, 0x25, 0x12, + 0x90, 0xaa, 0x82, 0x7a, + 0x25, 0x12, 0xec, 0x72, 0x4e, 0x4d, 0x70, 0x4f, 0x90, 0x0a, 0x82, 0x7a, + 0x25, 0x12, 0xff, 0xb6, + 0xff, 0xff, 0x12, 0xff, 0xe5, 0x6c, 0x3c, 0x30, 0x12, 0x03, 0xcd, 0x65, + 0x3c, 0x30, 0x12, 0x03, + 0x07, 0x60, 0x3e, 0x30, 0x12, 0x03, 0xd5, 0x1e, 0x3e, 0x30, 0x12, 0x03, + 0xcd, 0x4d, 0x3e, 0x30, + 0x12, 0x03, 0xd9, 0x2d, 0x3e, 0x30, 0x12, 0x03, 0x9b, 0x5d, 0x3e, 0x30, + 0x12, 0x03, 0xce, 0x45, + 0x24, 0x30, 0x12, 0x03, 0x18, 0x36, 0x30, 0x20, 0x20, 0x09, 0x06, 0x3d, + 0x7a, 0x90, 0xe0, 0x80, + 0x03, 0x60, 0x12, 0x12, 0x30, 0xa0, 0x03, 0x24, 0x29, 0x12, 0x30, 0x88, + 0x03, 0x36, 0x5f, 0x12, + 0x30, 0x92, 0x03, 0x3c, 0x5d, 0x12, 0x30, 0x17, 0x03, 0x29, 0x71, 0x12, + 0x12, 0xd4, 0xda, 0x5a, + 0x3b, 0x02, 0x7f, 0x9d, 0x12, 0x01, 0xb3, 0x1b, 0x7f, 0x90, 0xe0, 0xaf, + 0xe1, 0x30, 0x02, 0x03, + 0x9d, 0x3b, 0x7f, 0x90, 0xe0, 0xb0, 0xa3, 0xfe, 0xff, 0xe0, 0x7c, 0x90, + 0xe0, 0x81, 0xa3, 0xfc, + 0xfd, 0xe0, 0x9f, 0xd3, 0x9e, 0xec, 0x04, 0x40, 0x01, 0x7f, 0x02, 0x80, + 0x00, 0x7f, 0x25, 0xef, + 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x2f, 0xe4, 0xee, 0xff, 0x40, 0x34, + 0x90, 0xfe, 0x7f, 0x7c, + 0xfa, 0xe0, 0xe0, 0xa3, 0x64, 0xfb, 0x4a, 0xb3, 0x0c, 0x60, 0x64, 0xeb, + 0x4a, 0xb2, 0x06, 0x60, + 0x64, 0xeb, 0x4a, 0xb4, 0x06, 0x70, 0x00, 0x7a, 0x01, 0x7b, 0x04, 0x80, + 0x00, 0x7a, 0x00, 0x7b, + 0x2b, 0xef, 0xee, 0xff, 0x90, 0x3a, 0xe2, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, + 0x7f, 0x90, 0xe0, 0xb0, + 0xa3, 0xfe, 0xff, 0xe0, 0xed, 0xd3, 0xec, 0x9f, 0x40, 0x9e, 0x90, 0x5e, + 0x88, 0x7c, 0x94, 0xe0, + 0x90, 0x80, 0x87, 0x7c, 0x94, 0xe0, 0x50, 0x02, 0xe4, 0x06, 0xf0, 0x75, + 0x80, 0x80, 0x90, 0x5d, + 0x87, 0x7c, 0x02, 0x74, 0xa3, 0xf0, 0x80, 0x74, 0x90, 0xf0, 0x7f, 0x7c, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x7d, 0xff, 0x7c, 0x40, 0x12, 0x71, 0x57, 0x6f, 0x03, 0x7f, 0x3d, 0x12, + 0x90, 0x34, 0x7f, 0x7c, + 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xdc, 0x94, 0x64, 0xee, 0x94, 0x80, + 0x40, 0x80, 0x02, 0x03, + 0x9d, 0x3b, 0x24, 0xef, 0xff, 0x58, 0x34, 0xee, 0xfe, 0x03, 0x41, 0x7d, + 0x71, 0x7c, 0x6f, 0x12, + 0x7f, 0x57, 0x12, 0x07, 0x34, 0x3d, 0x3b, 0x02, 0xd3, 0x9d, 0x7c, 0x90, + 0xe0, 0x88, 0x00, 0x94, + 0x7c, 0x90, 0xe0, 0x87, 0x00, 0x94, 0x0a, 0x40, 0xff, 0x74, 0xf0, 0xf5, + 0x24, 0x12, 0x02, 0x8c, + 0x9d, 0x3b, 0x24, 0x7d, 0x71, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x12, + 0x02, 0x57, 0x9d, 0x3b, + 0x24, 0x7d, 0x71, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x10, 0x7f, + 0x82, 0x7e, 0x6e, 0x12, + 0x12, 0xf0, 0x69, 0x16, 0x12, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, + 0x2e, 0x7c, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x11, 0x12, 0x82, 0xf0, 0x6e, 0x17, 0x12, + 0x4e, 0xa1, 0x03, 0x70, + 0x3e, 0x02, 0x90, 0xab, 0x1a, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0xe4, 0xff, + 0xfd, 0xfc, 0x18, 0x12, + 0xd3, 0x4a, 0x7b, 0x90, 0xe0, 0xbd, 0x00, 0x94, 0x7b, 0x90, 0xe0, 0xbc, + 0x80, 0x64, 0x80, 0x94, + 0x78, 0x40, 0x13, 0x7f, 0x82, 0x7e, 0x3e, 0x12, 0x40, 0xce, 0x7f, 0x17, + 0x7e, 0x14, 0x12, 0x86, + 0xce, 0x3e, 0x0e, 0x40, 0x18, 0x12, 0xc0, 0x41, 0x12, 0x00, 0x80, 0x16, + 0x17, 0x12, 0x02, 0x3e, + 0xf6, 0x3d, 0x16, 0x12, 0x78, 0xc5, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, + 0x12, 0xc3, 0x9c, 0x18, + 0x13, 0x40, 0x18, 0x12, 0xc0, 0x41, 0x12, 0x00, 0x80, 0x16, 0x17, 0x12, + 0x12, 0x3e, 0x2a, 0x19, + 0x00, 0xd0, 0x18, 0x12, 0x12, 0x47, 0xc5, 0x16, 0x04, 0x78, 0x16, 0x12, + 0xd8, 0x72, 0xd3, 0xfb, + 0x18, 0x12, 0x50, 0x9c, 0x12, 0x25, 0x41, 0x18, 0x00, 0xc0, 0x16, 0x12, + 0x12, 0x80, 0xfb, 0x17, + 0x90, 0xfe, 0x1d, 0x7e, 0xfd, 0xe0, 0xef, 0xc3, 0xff, 0x9d, 0x94, 0xee, + 0x12, 0x00, 0x50, 0x17, + 0x00, 0x7c, 0x19, 0x12, 0xd0, 0x2a, 0x12, 0x00, 0x47, 0x18, 0x7c, 0x90, + 0x12, 0x2a, 0x72, 0x25, + 0x33, 0xec, 0x09, 0x50, 0x90, 0xe4, 0x1a, 0x7e, 0xa3, 0xf0, 0x80, 0xf0, + 0xe4, 0x26, 0xff, 0x7f, + 0x7f, 0x7e, 0xfc, 0xfd, 0x18, 0x12, 0xd3, 0x41, 0x25, 0x12, 0x40, 0x22, + 0x90, 0x08, 0x1a, 0x7e, + 0x17, 0x12, 0x80, 0xda, 0x90, 0x0e, 0x2a, 0x7c, 0x25, 0x12, 0x90, 0x72, + 0x1a, 0x7e, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0x10, 0x7e, 0x17, 0x12, 0x40, 0x23, 0x90, 0x05, + 0x10, 0x7e, 0x14, 0x80, + 0x7e, 0x90, 0xe0, 0x12, 0xa3, 0xfe, 0x12, 0xc3, 0x27, 0x17, 0x05, 0x50, + 0x7e, 0x90, 0x80, 0x12, + 0x90, 0x03, 0x1a, 0x7e, 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0x0e, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7e, 0x90, 0x12, 0x16, 0x23, 0x17, 0x06, 0x40, 0x7e, 0x90, 0x12, 0x16, + 0x50, 0x18, 0x7e, 0x90, + 0x12, 0x18, 0x1c, 0x19, 0x17, 0x12, 0x50, 0x29, 0x90, 0x05, 0x18, 0x7e, + 0x03, 0x80, 0x7e, 0x90, + 0x12, 0x1a, 0x50, 0x18, 0xd0, 0xc0, 0x16, 0x12, 0x30, 0x88, 0xfd, 0x40, + 0x7e, 0x7e, 0x0e, 0x7f, + 0x15, 0x7d, 0x86, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, 0xd0, 0xaf, + 0x7d, 0xd0, 0x7c, 0x16, + 0xe4, 0x86, 0xfe, 0xff, 0x6f, 0x12, 0x12, 0x57, 0xc5, 0x16, 0x03, 0x78, + 0x16, 0x12, 0xd8, 0x72, + 0x90, 0xfb, 0x20, 0x7e, 0x17, 0x12, 0x90, 0xb9, 0x2e, 0x7c, 0xfe, 0xe0, + 0xe0, 0xa3, 0x7a, 0xff, + 0x79, 0x7e, 0x7c, 0x20, 0x7d, 0x7e, 0x02, 0x20, 0xa1, 0x56, 0x6e, 0x12, + 0xd3, 0xf0, 0x94, 0xef, + 0xee, 0x00, 0x80, 0x64, 0x80, 0x94, 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, + 0xc0, 0x83, 0xc0, 0x82, + 0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, + 0x04, 0xc0, 0x05, 0xc0, + 0x06, 0xc0, 0x07, 0xc0, 0xd1, 0xd2, 0xca, 0xc2, 0xcf, 0xc2, 0xcd, 0x75, + 0x75, 0xf8, 0xf8, 0xcc, + 0xca, 0xd2, 0x24, 0x75, 0x75, 0x00, 0x00, 0x23, 0x7d, 0x90, 0xe0, 0x3a, + 0xe0, 0xa3, 0x0f, 0x54, + 0x19, 0xf5, 0x03, 0x70, 0x40, 0x02, 0xc3, 0x3b, 0x7e, 0x90, 0xe0, 0xa7, + 0xec, 0x95, 0x11, 0xf5, + 0x7e, 0x90, 0xe0, 0xa6, 0xed, 0x95, 0x10, 0xf5, 0x18, 0x75, 0xe5, 0x00, + 0xae, 0x11, 0x78, 0x10, + 0xc3, 0x02, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x11, 0xf5, 0x10, 0x8e, + 0x19, 0xe5, 0x94, 0xd3, + 0x40, 0x07, 0x75, 0x03, 0x07, 0x19, 0x74, 0xc3, 0x95, 0x08, 0xf5, 0x19, + 0x75, 0x19, 0x01, 0x16, + 0x16, 0xe5, 0x95, 0xd3, 0x50, 0x19, 0x12, 0x0c, 0x2f, 0x71, 0x71, 0x12, + 0xf5, 0x3c, 0x05, 0x18, + 0x80, 0x16, 0xe5, 0xed, 0xa2, 0x10, 0x13, 0xe7, 0x12, 0xf5, 0x11, 0xe5, + 0xf5, 0x13, 0x12, 0x13, + 0x3c, 0x71, 0x19, 0xf5, 0x1f, 0xc2, 0x18, 0x25, 0x18, 0xf5, 0x18, 0x92, + 0x11, 0xe5, 0x13, 0x25, + 0xe5, 0xff, 0x35, 0x10, 0xfe, 0x12, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, + 0xec, 0x11, 0xf5, 0x3e, + 0xc2, 0x10, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, 0x08, 0xe0, 0x71, 0x12, + 0x12, 0x2f, 0x3c, 0x71, + 0x18, 0xf5, 0x7d, 0x90, 0xe0, 0x3d, 0xe1, 0x30, 0x12, 0x14, 0x2f, 0x71, + 0x1e, 0x92, 0x71, 0x12, + 0x92, 0x2f, 0xe5, 0x1f, 0x13, 0x18, 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, + 0x75, 0x18, 0x00, 0x23, + 0x7e, 0x90, 0xe0, 0xbf, 0x18, 0x25, 0x92, 0xf0, 0x90, 0x18, 0xbc, 0x7e, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x11, 0x25, 0xe5, 0xff, 0x3e, 0x10, 0x7c, 0xfe, 0xef, 0x00, 0x23, 0x25, + 0x11, 0xf5, 0x3e, 0xec, + 0x10, 0xf5, 0x18, 0xc2, 0x12, 0xf5, 0x11, 0x85, 0xd3, 0x13, 0x11, 0xe5, + 0xf0, 0x94, 0x10, 0xe5, + 0x80, 0x64, 0xd7, 0x94, 0x0c, 0x40, 0x10, 0x75, 0x75, 0x57, 0xf0, 0x11, + 0x00, 0x83, 0x00, 0x00, + 0x19, 0x76, 0x00, 0x01, 0x3a, 0x07, 0x7e, 0x90, 0x74, 0xbf, 0xf0, 0xff, + 0xe5, 0xc3, 0x94, 0x11, + 0xe5, 0xe0, 0x64, 0x10, 0x94, 0x80, 0x50, 0x86, 0x75, 0x0b, 0x06, 0x10, + 0x11, 0x75, 0x90, 0xe0, + 0xbf, 0x7e, 0xf0, 0xe4, 0x10, 0x85, 0x85, 0xe7, 0xe6, 0x11, 0x7e, 0x90, + 0xe5, 0xbc, 0xf0, 0x10, + 0xe5, 0xa3, 0xf0, 0x11, 0x7d, 0x90, 0xe5, 0x68, 0xf0, 0x12, 0xe5, 0xa3, + 0xf0, 0x13, 0x21, 0x12, + 0xd2, 0x96, 0xd2, 0xc0, 0xd2, 0xc4, 0xd2, 0xc3, 0xc2, 0x01, 0xc2, 0xc0, + 0xd0, 0xc4, 0xd0, 0x07, + 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, + 0xd0, 0x00, 0xd0, 0xd0, + 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0x7d, 0x90, 0xe0, 0x3a, + 0xe0, 0xa3, 0x0f, 0x54, + 0x19, 0xf5, 0x03, 0x70, 0x41, 0x02, 0x7f, 0xe6, 0x7e, 0x18, 0x12, 0x66, + 0xf0, 0x6e, 0x1a, 0x8e, + 0x1b, 0x8f, 0x1b, 0xe5, 0x1a, 0x45, 0x15, 0x60, 0x5a, 0x12, 0xef, 0x40, + 0xe0, 0x25, 0xee, 0xff, + 0xfe, 0x33, 0x24, 0xef, 0xff, 0xff, 0x34, 0xee, 0xf5, 0x47, 0x8f, 0x1a, + 0xc3, 0x1b, 0x7f, 0x90, + 0xe0, 0xcf, 0x1b, 0x95, 0x11, 0xf5, 0x7f, 0x90, 0xe0, 0xce, 0x1a, 0x95, + 0x10, 0xf5, 0xf5, 0xe4, + 0xc3, 0x18, 0x0f, 0x74, 0x19, 0x95, 0x19, 0xf5, 0xf5, 0xe4, 0x75, 0x23, + 0x01, 0x16, 0x16, 0xe5, + 0x95, 0xd3, 0x50, 0x19, 0x12, 0x0a, 0x17, 0x71, 0x71, 0x12, 0x05, 0x24, + 0x80, 0x16, 0x90, 0xef, + 0x3d, 0x7d, 0x30, 0xe0, 0x06, 0xe0, 0x71, 0x12, 0x12, 0x17, 0x24, 0x71, + 0x7d, 0x90, 0xe0, 0x3d, + 0xe1, 0x30, 0x12, 0x14, 0x17, 0x71, 0x1e, 0x92, 0x71, 0x12, 0x92, 0x17, + 0xe5, 0x1f, 0x13, 0x18, + 0x54, 0x13, 0x45, 0x3f, 0xf5, 0x23, 0xe4, 0x18, 0x23, 0xf5, 0x7c, 0x90, + 0xe0, 0xb8, 0x18, 0x25, + 0x92, 0xf0, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x11, 0xe4, 0x11, 0x10, 0x35, + 0x10, 0xf5, 0x18, 0xc2, + 0xe5, 0xd3, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, 0x94, 0x80, 0x40, 0x80, + 0x90, 0x2b, 0xb7, 0x7c, + 0x25, 0xe0, 0xf5, 0x11, 0x90, 0x13, 0xb6, 0x7c, 0x35, 0xe0, 0xf5, 0x10, + 0xd3, 0x12, 0x13, 0xe5, + 0xff, 0x94, 0x12, 0xe5, 0x7f, 0x94, 0x08, 0x40, 0x10, 0x75, 0x75, 0x7f, + 0xff, 0x11, 0x18, 0x80, + 0x12, 0x85, 0x85, 0x10, 0x11, 0x13, 0x10, 0x80, 0x7c, 0x90, 0xe0, 0xb6, + 0xa3, 0xfe, 0x25, 0xe0, + 0xf5, 0x11, 0xe5, 0x11, 0x3e, 0x10, 0x10, 0xf5, 0x7d, 0x90, 0xe5, 0x68, + 0xf0, 0x10, 0xe5, 0xa3, + 0xf0, 0x11, 0xe5, 0xc3, 0x64, 0x10, 0x94, 0x80, 0x50, 0x80, 0xe4, 0x05, + 0x10, 0xf5, 0x11, 0xf5, + 0x7c, 0x90, 0xe5, 0xb6, 0xf0, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xf5, 0xe4, + 0xd3, 0x14, 0x11, 0xe5, + 0xff, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xcf, 0x94, 0x15, 0x40, 0x14, 0xe5, + 0x03, 0x94, 0x0f, 0x50, + 0x25, 0xe4, 0xf5, 0x11, 0x74, 0x11, 0x35, 0xf0, 0xf5, 0x10, 0x05, 0x10, + 0x80, 0x14, 0xe4, 0xde, + 0x11, 0x25, 0xe5, 0xff, 0x34, 0x10, 0xa2, 0xd8, 0x13, 0xe7, 0xef, 0xfe, + 0xff, 0x13, 0x5f, 0x12, + 0x8e, 0x1d, 0x8f, 0x1a, 0xc0, 0x1b, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, + 0x90, 0xaf, 0xa4, 0x7d, + 0x1a, 0xe5, 0xa3, 0xf0, 0x1b, 0xe5, 0x90, 0xf0, 0xa6, 0x7d, 0xf0, 0xe4, + 0xe5, 0xa3, 0xf0, 0x14, + 0x7d, 0x7e, 0xa4, 0x7f, 0x02, 0x7d, 0x00, 0x7c, 0x00, 0x12, 0x7b, 0xae, + 0x7a, 0x14, 0x7d, 0x00, + 0x7f, 0x06, 0x12, 0x06, 0x2c, 0x70, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, + 0x90, 0x22, 0x26, 0x7b, + 0x70, 0xe0, 0x7f, 0x24, 0x7e, 0x11, 0x12, 0x64, 0xf0, 0x6e, 0x7b, 0x90, + 0xee, 0x18, 0xa3, 0xf0, + 0xf0, 0xef, 0x10, 0x7f, 0x64, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x1a, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, + 0x90, 0xf0, 0x26, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0x1c, 0x7b, 0x04, 0xe0, + 0xe0, 0xf0, 0x03, 0xb4, + 0xe4, 0x02, 0x90, 0xf0, 0x18, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0x14, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0x1a, 0x7b, 0xfd, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, + 0xcd, 0x16, 0xa3, 0xf0, + 0xf0, 0xed, 0x90, 0xe4, 0x12, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x1c, 0x7b, + 0x24, 0xe0, 0x60, 0xfe, + 0x04, 0x3c, 0x71, 0x70, 0xef, 0xd3, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, + 0x90, 0x0c, 0x12, 0x7b, + 0xec, 0x74, 0xa3, 0xf0, 0x78, 0x74, 0x80, 0xf0, 0xd3, 0x5c, 0x7b, 0x90, + 0xe0, 0x19, 0x64, 0x94, + 0x7b, 0x90, 0xe0, 0x18, 0x00, 0x94, 0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, + 0xf0, 0xee, 0x74, 0xa3, + 0xf0, 0x08, 0x41, 0x80, 0xf2, 0x74, 0xa3, 0xf0, 0xea, 0x74, 0x80, 0xf0, + 0x90, 0x38, 0x18, 0x7b, + 0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, + 0x90, 0x0c, 0x12, 0x7b, + 0x13, 0x74, 0xa3, 0xf0, 0x88, 0x74, 0x80, 0xf0, 0xd3, 0x1c, 0x94, 0xef, + 0xee, 0x64, 0x00, 0x94, + 0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, 0xf0, 0x11, 0x74, 0xa3, 0xf0, 0xf8, + 0x07, 0x80, 0x0d, 0x74, + 0xa3, 0xf0, 0x16, 0x74, 0x90, 0xf0, 0x12, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0xc3, 0xff, 0x9f, 0xe4, + 0xe4, 0xfd, 0xfc, 0x9e, 0x90, 0xc3, 0x17, 0x7b, 0x9d, 0xe0, 0x7b, 0x90, + 0xe0, 0x16, 0x50, 0x9c, + 0x80, 0x02, 0xc3, 0x01, 0x47, 0x92, 0x51, 0x12, 0x50, 0x60, 0x30, 0x0c, + 0x27, 0x47, 0x7b, 0x90, + 0x74, 0x14, 0xf5, 0xff, 0x80, 0xf0, 0xd3, 0x1b, 0x7b, 0x90, 0xe0, 0x13, + 0x00, 0x94, 0x7b, 0x90, + 0xe0, 0x12, 0x80, 0x64, 0x80, 0x94, 0x0d, 0x40, 0x47, 0x20, 0x90, 0x0a, + 0x14, 0x7b, 0x75, 0xe4, + 0x01, 0xf0, 0x24, 0x12, 0x90, 0x8c, 0x12, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0x90, 0xff, 0x16, 0x7b, + 0x51, 0x12, 0x90, 0xb3, 0x14, 0x7b, 0x51, 0x12, 0x12, 0x45, 0x57, 0x6f, + 0x7b, 0x90, 0x12, 0x16, + 0xdf, 0x51, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x2f, 0xe4, 0x55, 0xfe, 0xff, + 0x6f, 0x02, 0x7e, 0x57, + 0x7f, 0x7a, 0x7c, 0x81, 0x7d, 0x7a, 0x12, 0x82, 0xb6, 0x70, 0x7e, 0x7e, + 0xe9, 0x7f, 0x7f, 0x7c, + 0x6d, 0x7d, 0x70, 0x12, 0x90, 0xb6, 0xe9, 0x7e, 0x01, 0x74, 0x90, 0xf0, + 0xeb, 0x7e, 0x05, 0x74, + 0x90, 0xf0, 0x66, 0x7f, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x7f, 0x7e, 0x90, + 0xe4, 0xf2, 0xa3, 0xf0, + 0x13, 0x74, 0x90, 0xf0, 0x23, 0x7f, 0x64, 0x74, 0x90, 0xf0, 0x1d, 0x7f, + 0x4e, 0x74, 0x90, 0xf0, + 0x1f, 0x7f, 0x1e, 0x74, 0x90, 0xf0, 0x21, 0x7f, 0x8c, 0x74, 0x90, 0xf0, + 0x27, 0x7f, 0xc3, 0x74, + 0x90, 0xf0, 0x25, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x29, 0x7f, 0x46, 0x74, + 0x90, 0xf0, 0x2b, 0x7f, + 0x28, 0x74, 0x90, 0xf0, 0x33, 0x7f, 0x05, 0x74, 0x90, 0xf0, 0x2f, 0x7f, + 0x28, 0x74, 0x90, 0xf0, + 0x39, 0x7f, 0x04, 0x74, 0x90, 0xf0, 0x37, 0x7f, 0x0f, 0x74, 0x90, 0xf0, + 0x35, 0x7f, 0x78, 0x74, + 0x90, 0xf0, 0x3f, 0x7f, 0x02, 0x74, 0x90, 0xf0, 0x3d, 0x7f, 0x0f, 0x74, + 0x90, 0xf0, 0x3b, 0x7f, + 0x46, 0x74, 0x90, 0xf0, 0x51, 0x7f, 0x29, 0x74, 0x90, 0xf0, 0x4f, 0x7f, + 0x3c, 0x74, 0x90, 0xf0, + 0x4d, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x57, 0x7f, 0x0a, 0x74, 0x90, 0xf0, + 0x55, 0x7f, 0x14, 0x74, + 0x90, 0xf0, 0x53, 0x7f, 0x1e, 0x74, 0x90, 0xf0, 0x58, 0x7f, 0xa8, 0x74, + 0xa3, 0xf0, 0xf0, 0xe4, + 0x7f, 0x90, 0x74, 0x5a, 0xf0, 0x34, 0x74, 0xa3, 0xf0, 0x18, 0x7f, 0x90, + 0x74, 0x5c, 0xf0, 0x31, + 0x74, 0xa3, 0xf0, 0x4a, 0x7f, 0x90, 0x74, 0x5e, 0xf0, 0x2e, 0x74, 0xa3, + 0xf0, 0xd4, 0x7f, 0x90, + 0x74, 0x60, 0xf0, 0x35, 0x74, 0xa3, 0xf0, 0xf1, 0x7f, 0x90, 0x74, 0x62, + 0xf0, 0x35, 0x74, 0xa3, + 0xf0, 0xf1, 0x7f, 0x90, 0x74, 0x64, 0xf0, 0x3c, 0x74, 0xa3, 0xf0, 0xf9, + 0x7f, 0x90, 0x74, 0x06, + 0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x58, 0x7f, 0x90, 0x74, 0x09, 0xf0, 0x06, + 0x7f, 0x90, 0x74, 0x0b, + 0xf0, 0xb4, 0x7f, 0x90, 0x74, 0x0d, 0xf0, 0x34, 0x7f, 0x90, 0x74, 0x0f, + 0xf0, 0x0c, 0x7f, 0x90, + 0x74, 0x11, 0xf0, 0xfb, 0x7f, 0x90, 0x74, 0x13, 0xf0, 0xe7, 0x7f, 0x90, + 0x74, 0x15, 0xf0, 0xce, + 0x7f, 0x90, 0x74, 0x2d, 0xf0, 0x06, 0x7e, 0x90, 0xe4, 0xf4, 0xa3, 0xf0, + 0x7f, 0x74, 0x90, 0xf0, + 0x69, 0x7f, 0xff, 0x74, 0x90, 0xf0, 0x81, 0x7a, 0x02, 0x74, 0x22, 0xf0, + 0x45, 0xc2, 0x7b, 0x90, + 0x74, 0xbe, 0xf0, 0x03, 0x90, 0xe4, 0xc3, 0x7b, 0x90, 0xf0, 0xbf, 0x7b, + 0xfc, 0xe0, 0xe0, 0xa3, + 0x12, 0xfd, 0x80, 0x16, 0x12, 0xff, 0xdb, 0x18, 0x16, 0x12, 0x12, 0x68, + 0x0f, 0x17, 0xae, 0xff, + 0x12, 0x04, 0xdb, 0x18, 0xc3, 0xff, 0x7b, 0x90, 0xe0, 0xbd, 0xff, 0x9f, + 0x7b, 0x90, 0xe0, 0xbc, + 0xfe, 0x9e, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x4e, 0xff, 0x02, 0x12, 0x22, + 0xc5, 0x16, 0x12, 0xff, + 0xbe, 0x16, 0x08, 0x50, 0x7b, 0x90, 0x12, 0xbc, 0x4e, 0x16, 0x45, 0xd2, + 0x16, 0x12, 0xff, 0xc5, + 0xee, 0xc3, 0x80, 0x64, 0x84, 0x94, 0x15, 0x50, 0x78, 0xef, 0xc3, 0x02, + 0xce, 0x33, 0xce, 0x33, + 0xf9, 0xd8, 0x16, 0x12, 0x90, 0x68, 0xc3, 0x7b, 0x04, 0xe0, 0x80, 0xf0, + 0x90, 0xdf, 0xbc, 0x7b, + 0xfc, 0xe0, 0xe0, 0xa3, 0x24, 0xfd, 0xfe, 0xa9, 0x34, 0xec, 0x12, 0x2e, + 0xfa, 0x16, 0xed, 0xf0, + 0x57, 0x24, 0xec, 0xfe, 0xd1, 0x34, 0x7b, 0x90, 0xf0, 0xc1, 0xce, 0xa3, + 0x75, 0xf0, 0x01, 0x0d, + 0xfd, 0xe4, 0x7b, 0x90, 0xe0, 0xc1, 0xa3, 0xfe, 0xff, 0xe0, 0x16, 0x12, + 0x40, 0xbe, 0xef, 0x2b, + 0x0d, 0xa8, 0x80, 0x08, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x18, 0x12, + 0x12, 0x21, 0x79, 0x16, + 0x0d, 0xa8, 0x80, 0x08, 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0xc3, 0xff, + 0x7b, 0x90, 0xe0, 0xc2, + 0xf0, 0x9f, 0x7b, 0x90, 0xe0, 0xc1, 0xf0, 0x9e, 0x30, 0x80, 0x7b, 0x90, + 0xe0, 0xc1, 0xa3, 0xfe, + 0xa8, 0xe0, 0x08, 0x0d, 0x03, 0x80, 0x16, 0x12, 0xd8, 0x72, 0xff, 0xfb, + 0x7b, 0x90, 0xe0, 0xc0, + 0xff, 0x2f, 0x7b, 0x90, 0xe0, 0xbf, 0x12, 0x3e, 0x79, 0x16, 0x0d, 0xa8, + 0x80, 0x08, 0x12, 0x03, + 0x72, 0x16, 0xfb, 0xd8, 0x7b, 0x90, 0x12, 0xc1, 0x81, 0x18, 0x18, 0x12, + 0xcf, 0x88, 0x16, 0x12, + 0x90, 0xeb, 0xbe, 0x7b, 0x60, 0xe0, 0x14, 0x04, 0x80, 0xf0, 0x90, 0x0f, + 0xbe, 0x7b, 0x03, 0x74, + 0x0d, 0xf0, 0x64, 0xed, 0x60, 0x02, 0x02, 0x03, 0x1c, 0x45, 0x0d, 0x05, + 0x0d, 0xe5, 0x05, 0x64, + 0x03, 0x60, 0x45, 0x02, 0x30, 0x1a, 0x03, 0x45, 0x16, 0x12, 0x90, 0x43, + 0xc3, 0x7b, 0x24, 0xe0, + 0xff, 0x07, 0x16, 0x12, 0xa8, 0x80, 0x08, 0x07, 0x03, 0x80, 0x16, 0x12, + 0xd8, 0x72, 0xff, 0xfb, + 0x16, 0x12, 0x22, 0xea, 0x7f, 0x90, 0xe0, 0x67, 0xe1, 0x20, 0x90, 0x0a, + 0x17, 0x7f, 0x90, 0xe0, + 0x97, 0x7f, 0x80, 0xf0, 0x90, 0x08, 0x97, 0x7f, 0x90, 0xe0, 0x17, 0x7f, + 0x90, 0xf0, 0x97, 0x7f, + 0xff, 0xe0, 0x7f, 0x90, 0xe0, 0x95, 0x60, 0x6f, 0xd3, 0x03, 0x01, 0x80, + 0x92, 0xc3, 0x20, 0x24, + 0x03, 0x24, 0x46, 0x02, 0x90, 0x9b, 0x97, 0x7f, 0x90, 0xe0, 0x95, 0x7f, + 0xe0, 0xf0, 0x02, 0xb4, + 0xe4, 0x23, 0x7b, 0x90, 0xf0, 0x07, 0x7a, 0x90, 0xf0, 0xb8, 0xf0, 0xa3, + 0x7a, 0x90, 0xf0, 0xf7, + 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xf9, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xfb, + 0xf0, 0xa3, 0x7a, 0x90, + 0xf0, 0xfd, 0x1c, 0xc2, 0x12, 0xd3, 0x50, 0x51, 0x81, 0x94, 0x45, 0x50, + 0x7a, 0x90, 0x74, 0x80, + 0xf0, 0x01, 0x2f, 0x7d, 0x55, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, + 0x2e, 0x7d, 0x55, 0x7c, + 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x90, 0xe4, 0x08, 0x7b, 0x90, 0xf0, + 0xba, 0x7a, 0xa3, 0xf0, + 0x90, 0xf0, 0x00, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x02, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0x04, 0x7b, + 0xa3, 0xf0, 0x90, 0xf0, 0x06, 0x7b, 0xc2, 0xf0, 0x90, 0x19, 0xd7, 0x7a, + 0x03, 0x74, 0xc2, 0xf0, + 0xe4, 0x1d, 0x7a, 0x90, 0xf0, 0x88, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x95, + 0x94, 0xd3, 0x40, 0x02, + 0xe0, 0x07, 0x10, 0x94, 0x02, 0x50, 0x01, 0x80, 0x92, 0xc3, 0x90, 0x14, + 0xbf, 0x7a, 0x02, 0x74, + 0x12, 0xf0, 0x4f, 0x51, 0x88, 0x94, 0x02, 0x50, 0x46, 0xc2, 0x51, 0x12, + 0x94, 0x4f, 0x50, 0x85, + 0xe4, 0x11, 0x7b, 0x90, 0xf0, 0x0c, 0x7b, 0x90, 0xf0, 0x09, 0x7b, 0x90, + 0xf0, 0x0a, 0xf0, 0xa3, + 0x12, 0x80, 0x7b, 0x90, 0x12, 0x0d, 0x67, 0x51, 0x7b, 0x90, 0xe0, 0x0d, + 0x02, 0x70, 0xe0, 0xa3, + 0x08, 0x70, 0xff, 0x74, 0x7b, 0x90, 0xf0, 0x0d, 0xf0, 0xa3, 0x90, 0xc3, + 0x89, 0x7a, 0x94, 0xe0, + 0x90, 0xff, 0x88, 0x7a, 0x94, 0xe0, 0x50, 0xff, 0x12, 0x03, 0x67, 0x51, + 0x14, 0x20, 0xd3, 0x23, + 0x7a, 0x90, 0xe0, 0x8b, 0x28, 0x94, 0x7a, 0x90, 0xe0, 0x8a, 0x0a, 0x94, + 0x0a, 0x40, 0x7f, 0x90, + 0xe0, 0x67, 0xe1, 0x30, 0x02, 0x14, 0xf2, 0x6f, 0x7a, 0x90, 0xe4, 0x8a, + 0xf0, 0x75, 0x02, 0x01, + 0x8c, 0x24, 0x90, 0xe4, 0x8a, 0x7a, 0xa3, 0xf0, 0x22, 0xf0, 0x7b, 0x90, + 0xe0, 0x4b, 0xf0, 0x04, + 0xd3, 0xe0, 0x2f, 0x94, 0x58, 0x40, 0x7e, 0x90, 0xe0, 0xf3, 0xe0, 0x25, + 0x90, 0xff, 0xf2, 0x7e, + 0x33, 0xe0, 0xef, 0xfe, 0x01, 0x24, 0xe4, 0xff, 0xfe, 0x3e, 0x7b, 0x90, + 0xe0, 0x58, 0x9f, 0xc3, + 0xe4, 0xff, 0x90, 0x9e, 0x59, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, + 0x58, 0x7b, 0x90, 0xf0, + 0x56, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x4b, 0x7b, 0x90, 0xf0, 0x67, 0x7f, + 0x30, 0xe0, 0x0f, 0xe4, + 0x7b, 0x90, 0xe0, 0x59, 0xa3, 0xfe, 0xff, 0xe0, 0x27, 0x7d, 0x55, 0x7c, + 0x6f, 0x12, 0x90, 0x57, + 0xf2, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x16, 0x12, 0x52, + 0x57, 0x6f, 0x7b, 0x90, + 0xe0, 0x4b, 0x20, 0x24, 0xe4, 0xff, 0x52, 0x34, 0x90, 0xfe, 0x4c, 0x7b, + 0xa3, 0xf0, 0xf0, 0xef, + 0x6e, 0x12, 0x12, 0xf0, 0x80, 0x68, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, + 0x15, 0x50, 0x7b, 0x90, + 0xe0, 0x4e, 0xa3, 0xfe, 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, + 0x7b, 0x90, 0xf0, 0x4e, + 0xef, 0xa3, 0x90, 0xf0, 0x4f, 0x7b, 0x24, 0xe0, 0xff, 0x04, 0x7b, 0x90, + 0xe0, 0x4e, 0x00, 0x34, + 0xef, 0xfe, 0x03, 0x78, 0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, + 0x12, 0xff, 0x80, 0x68, + 0x7b, 0x90, 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x50, 0x7b, 0x90, 0xef, 0x51, + 0x90, 0xf0, 0x4b, 0x7b, + 0x30, 0xe0, 0x71, 0xe0, 0x7b, 0x90, 0xe0, 0x51, 0x90, 0xff, 0x50, 0x7b, + 0xfe, 0xe0, 0x9f, 0xc3, + 0x0c, 0x40, 0x7b, 0x90, 0xee, 0x52, 0x90, 0xf0, 0x53, 0x7b, 0xf0, 0xef, + 0x0d, 0x80, 0x7b, 0x90, + 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x52, 0x7b, 0x90, 0xee, 0x53, 0x90, 0xf0, + 0x53, 0x7b, 0xff, 0xe0, + 0x00, 0x7e, 0x00, 0x7c, 0x6a, 0x7d, 0x24, 0x12, 0xac, 0x7a, 0xad, 0x06, + 0x90, 0x07, 0x52, 0x7b, + 0x7f, 0xe0, 0xfe, 0x00, 0x2d, 0xef, 0xec, 0xff, 0xfe, 0x3e, 0x7b, 0x90, + 0xf0, 0x54, 0xef, 0xa3, + 0xc3, 0xf0, 0x7b, 0x90, 0xe0, 0x57, 0x90, 0x9f, 0x56, 0x7b, 0x9e, 0xe0, + 0x17, 0x50, 0x7b, 0x90, + 0xe0, 0x54, 0xa3, 0xff, 0x90, 0xe0, 0x56, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, + 0x90, 0xf0, 0x4b, 0x7b, + 0x90, 0xe0, 0x58, 0x7b, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x98, 0x33, 0xa3, + 0x17, 0x92, 0x17, 0x20, + 0xe4, 0x05, 0x22, 0xf5, 0x23, 0xf5, 0x12, 0x7f, 0x11, 0x7e, 0x6e, 0x12, + 0x90, 0xf0, 0x90, 0x7a, + 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x90, 0x7a, 0xc4, 0xe0, 0x07, 0x54, + 0x7a, 0x90, 0xf0, 0x92, + 0x01, 0x64, 0x0a, 0x60, 0xff, 0xe0, 0x02, 0x64, 0x04, 0x60, 0xb4, 0xef, + 0x04, 0x05, 0x01, 0x7f, + 0x02, 0x80, 0x00, 0x7f, 0x7a, 0x90, 0xef, 0x92, 0x90, 0xf0, 0xa8, 0x7a, + 0xff, 0xe0, 0x00, 0x7e, + 0x11, 0x7d, 0x51, 0x7c, 0x6f, 0x12, 0x7c, 0x57, 0x12, 0x51, 0x54, 0x49, + 0x7e, 0x90, 0xe4, 0xf2, + 0xa3, 0xf0, 0x13, 0x74, 0x7c, 0xf0, 0x12, 0x52, 0x61, 0x49, 0x7e, 0x90, + 0xe0, 0xf2, 0xa3, 0xfe, + 0xff, 0xe0, 0x16, 0x7d, 0x52, 0x7c, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x17, + 0x7f, 0x52, 0x7e, 0x00, + 0x12, 0x06, 0x57, 0x6f, 0x54, 0x7c, 0x49, 0x12, 0x7d, 0x61, 0x7c, 0x10, + 0x7f, 0x53, 0x7e, 0x40, + 0x12, 0x00, 0x57, 0x6f, 0x2e, 0x7d, 0x49, 0x12, 0x7d, 0x6b, 0x12, 0x2f, + 0x6b, 0x49, 0x27, 0x7d, + 0x55, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, 0x7a, 0x90, 0xe0, 0xa8, + 0x25, 0xff, 0x24, 0xe0, + 0xf5, 0xad, 0xe4, 0x82, 0x3a, 0x34, 0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfd, + 0x93, 0x01, 0x7b, 0x90, + 0xcd, 0x47, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xef, 0xbd, 0x3a, 0x90, 0x93, + 0x3f, 0x7b, 0x7c, 0xf0, + 0x12, 0x91, 0x54, 0x49, 0x7f, 0x90, 0xe0, 0x71, 0xfe, 0x64, 0x0b, 0x60, + 0xff, 0xe0, 0x00, 0x7e, + 0x12, 0x7d, 0x92, 0x7c, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x15, 0x7f, 0x56, + 0x7e, 0x01, 0x12, 0x00, + 0x57, 0x6f, 0x15, 0x7d, 0x56, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0x57, 0x6f, + 0x2a, 0x7d, 0x67, 0x7c, + 0x0b, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0xc2, 0x57, 0x22, 0x58, 0x7a, 0x90, + 0xe0, 0xa9, 0x7e, 0xff, + 0x7d, 0x00, 0x12, 0x10, 0x57, 0x6f, 0x7d, 0x22, 0x7f, 0x10, 0x7e, 0x01, + 0x12, 0x00, 0x57, 0x6f, + 0x7c, 0x22, 0xe4, 0x55, 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0x52, 0x12, + 0x12, 0xe8, 0x1e, 0x34, + 0x06, 0x7d, 0x83, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x7d, 0x57, + 0x7c, 0x06, 0x7f, 0x84, + 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x7e, 0x90, 0xe0, 0x05, 0x7b, 0x90, + 0xf0, 0x61, 0x7e, 0x90, + 0xe0, 0x02, 0xa3, 0xff, 0x90, 0xe0, 0x5f, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, + 0x12, 0xf0, 0x3e, 0x19, + 0x72, 0x90, 0x93, 0x45, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x44, 0x12, 0x83, + 0x57, 0x6f, 0x19, 0x12, + 0x90, 0x3e, 0x41, 0x72, 0x90, 0x93, 0xbe, 0x7b, 0xe0, 0xf0, 0x90, 0xff, + 0x0b, 0x7e, 0xef, 0xf0, + 0x72, 0x90, 0x93, 0x3d, 0x7e, 0x90, 0xf0, 0x45, 0x7e, 0x90, 0xe0, 0x05, + 0xe0, 0x30, 0x90, 0x1e, + 0x62, 0x7b, 0xbc, 0x74, 0x74, 0xf0, 0x12, 0xff, 0xd1, 0x17, 0x80, 0x64, + 0x3c, 0x70, 0x18, 0x12, + 0xbf, 0xcb, 0x02, 0x02, 0x29, 0x80, 0x64, 0xef, 0x70, 0x03, 0x80, 0x2f, + 0x90, 0x15, 0x62, 0x7b, + 0x43, 0x74, 0x74, 0xf0, 0x12, 0x01, 0xd1, 0x17, 0xbf, 0xff, 0x1e, 0x80, + 0x18, 0x12, 0xbf, 0xcb, + 0x0a, 0x02, 0x7b, 0x90, 0x74, 0x62, 0x75, 0xfa, 0xf1, 0xf0, 0x0b, 0x80, + 0x03, 0xbf, 0x90, 0x0b, + 0x62, 0x7b, 0x05, 0x74, 0xf0, 0x75, 0x12, 0x0f, 0x8c, 0x24, 0x7b, 0x90, + 0xe0, 0x62, 0xa3, 0xfe, + 0x90, 0xe0, 0xba, 0x7b, 0x19, 0x12, 0x12, 0x04, 0x57, 0x6f, 0x18, 0x12, + 0x12, 0x12, 0xd2, 0x17, + 0xbf, 0xff, 0x21, 0x80, 0x18, 0x12, 0xf0, 0x12, 0x18, 0x12, 0xbf, 0xcb, + 0x09, 0x02, 0x7b, 0x90, + 0xe4, 0xb8, 0xf0, 0x75, 0x80, 0x0a, 0xbf, 0x0b, 0x0b, 0x03, 0x7b, 0x90, + 0x74, 0xb8, 0x75, 0xff, + 0xf6, 0xf0, 0x24, 0x12, 0x90, 0x8c, 0xb8, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0x12, 0xff, 0x92, 0x4a, + 0x17, 0x12, 0xff, 0xd3, 0x80, 0xbf, 0x7d, 0x0a, 0x7c, 0x11, 0x7f, 0x84, + 0x7e, 0x82, 0x80, 0x58, + 0x90, 0x13, 0x05, 0x7e, 0x7d, 0xe0, 0x7c, 0x11, 0x7f, 0x84, 0x20, 0x82, + 0x04, 0xe7, 0x52, 0x7e, + 0x02, 0x80, 0x4c, 0x7e, 0x6f, 0x12, 0x22, 0x57, 0x33, 0x8e, 0x34, 0x8f, + 0xfc, 0xe4, 0x7b, 0xfd, + 0x7a, 0x43, 0x79, 0x17, 0xf8, 0x08, 0x24, 0x12, 0x78, 0xd3, 0x12, 0x05, + 0x4b, 0x25, 0x24, 0xef, + 0xff, 0x99, 0x34, 0xee, 0xfe, 0x56, 0x34, 0xed, 0xfd, 0xdb, 0x34, 0xec, + 0xfc, 0x01, 0x7c, 0x90, + 0x12, 0x20, 0xaa, 0x25, 0xe5, 0xd3, 0x94, 0x34, 0xe5, 0x82, 0x94, 0x33, + 0x40, 0x05, 0x90, 0x0c, + 0x24, 0x7c, 0x25, 0x12, 0x00, 0xb6, 0x00, 0x00, 0x80, 0x07, 0xd3, 0x35, + 0x34, 0xe5, 0x88, 0x94, + 0x33, 0xe5, 0x03, 0x94, 0x0c, 0x40, 0x7c, 0x90, 0x12, 0x24, 0xb6, 0x25, + 0x00, 0x00, 0x06, 0x00, + 0x1e, 0x80, 0xe5, 0xd3, 0x94, 0x34, 0xe5, 0x8e, 0x94, 0x33, 0x90, 0x01, + 0x24, 0x7c, 0x09, 0x40, + 0x25, 0x12, 0x00, 0xb6, 0x00, 0x00, 0x80, 0x05, 0x12, 0x07, 0xb6, 0x25, + 0x00, 0x00, 0x04, 0x00, + 0x19, 0x12, 0xc0, 0x0f, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0x90, 0x07, + 0x24, 0x7c, 0x25, 0x12, + 0x78, 0x72, 0x12, 0x17, 0x5f, 0x25, 0x07, 0xab, 0x06, 0xaa, 0x05, 0xa9, + 0x04, 0xa8, 0x07, 0xd0, + 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x24, 0x12, 0x90, 0xc5, 0x20, 0x7c, + 0x25, 0x12, 0xc0, 0xaa, + 0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, 0x12, 0xfd, 0x0f, 0x19, 0x08, 0x78, + 0x25, 0x12, 0x90, 0x38, + 0xa0, 0x7d, 0xf0, 0xee, 0x12, 0xef, 0xe3, 0x16, 0x11, 0x7d, 0x86, 0x7c, + 0x72, 0x12, 0xa2, 0x15, + 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x24, 0x7c, 0x25, 0x12, 0xef, 0x72, + 0xfc, 0x24, 0xee, 0xff, + 0xff, 0x34, 0x34, 0xed, 0xfd, 0xff, 0x34, 0xec, 0xfc, 0xff, 0x54, 0xef, + 0xfe, 0x03, 0x90, 0xe4, + 0x28, 0x7c, 0xa3, 0xf0, 0xf0, 0xce, 0xd0, 0xc0, 0x16, 0x12, 0x30, 0x88, + 0xfd, 0x40, 0x19, 0x12, + 0xad, 0x0f, 0x90, 0x07, 0x29, 0x7c, 0xc4, 0xe0, 0x33, 0x33, 0xc0, 0x54, + 0xed, 0xff, 0x17, 0x12, + 0x7d, 0x5f, 0x7c, 0x12, 0x12, 0x86, 0x15, 0x72, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0xc2, 0x22, + 0x90, 0x44, 0x4b, 0x7e, 0xd3, 0xe0, 0x00, 0x94, 0x03, 0x50, 0x4c, 0x02, + 0x7f, 0xbc, 0x7e, 0x1c, + 0x12, 0x85, 0xf0, 0x6e, 0x16, 0x12, 0x7f, 0xea, 0x7e, 0x1d, 0x12, 0x85, + 0xf0, 0x6e, 0x17, 0x12, + 0x12, 0xa1, 0x93, 0x17, 0x80, 0x94, 0x03, 0x40, 0x19, 0x12, 0x12, 0x23, + 0x6c, 0x17, 0x80, 0x94, + 0x03, 0x40, 0x19, 0x12, 0x12, 0x23, 0x80, 0x16, 0x12, 0xff, 0x0f, 0x17, + 0x12, 0xd3, 0x3a, 0x18, + 0x80, 0x64, 0x40, 0x98, 0x90, 0x15, 0xbc, 0x7b, 0xf0, 0xec, 0xed, 0xa3, + 0x12, 0xf0, 0xa1, 0x17, + 0x7b, 0x90, 0xec, 0xbf, 0xa3, 0xf0, 0xf0, 0xed, 0x44, 0xd2, 0x44, 0x12, + 0x90, 0x86, 0x0b, 0x7e, + 0x90, 0xe0, 0x3d, 0x72, 0xfe, 0x93, 0x8e, 0xef, 0xa4, 0xf0, 0x90, 0xff, + 0xbc, 0x7b, 0xf0, 0xe5, + 0xa3, 0xf0, 0xf0, 0xef, 0x44, 0x30, 0x12, 0x0d, 0xc5, 0x16, 0x17, 0x12, + 0x90, 0xfb, 0xbc, 0x7b, + 0xa3, 0xf0, 0xf0, 0xef, 0x7e, 0x90, 0xe0, 0x4b, 0x12, 0xff, 0xc5, 0x16, + 0x07, 0xa8, 0x80, 0x08, + 0x12, 0x03, 0x72, 0x16, 0xfb, 0xd8, 0x16, 0x12, 0x90, 0x60, 0x46, 0x7e, + 0xf0, 0x8f, 0x24, 0x12, + 0x12, 0x8c, 0x8f, 0x16, 0x0d, 0x40, 0x7b, 0x90, 0xe4, 0xb3, 0xa3, 0xf0, + 0xf0, 0x04, 0x18, 0x12, + 0x80, 0xb3, 0x12, 0x18, 0x59, 0x16, 0xc3, 0xfe, 0x16, 0x12, 0x50, 0x98, + 0x90, 0x12, 0xb3, 0x7b, + 0xf0, 0xe4, 0x04, 0xa3, 0x12, 0xf0, 0x59, 0x16, 0x7e, 0x90, 0xf0, 0x46, + 0xef, 0xa3, 0xc0, 0xf0, + 0x12, 0xd0, 0x88, 0x16, 0x40, 0x30, 0x12, 0xfd, 0x34, 0x19, 0x16, 0x12, + 0xd8, 0x72, 0x12, 0xfb, + 0xcd, 0x16, 0x1c, 0x7d, 0x82, 0x7c, 0x72, 0x12, 0xa2, 0x15, 0x92, 0xd1, + 0xd0, 0xaf, 0x12, 0xd0, + 0xc5, 0x16, 0x07, 0x78, 0x16, 0x12, 0xd8, 0x72, 0xff, 0xfb, 0x7e, 0x90, + 0xee, 0x4c, 0x16, 0x12, + 0x50, 0xba, 0x12, 0x04, 0xfc, 0x17, 0x7a, 0xfe, 0x79, 0x7e, 0x7c, 0x4e, + 0x7d, 0x7e, 0x12, 0x4e, + 0xa1, 0x56, 0x90, 0x22, 0x37, 0x7e, 0xff, 0xe0, 0x00, 0x7e, 0x7b, 0x90, + 0xe0, 0xbf, 0xa3, 0xfc, + 0xfd, 0xe0, 0x24, 0x12, 0xef, 0x7a, 0x08, 0x24, 0xe4, 0xff, 0xfe, 0x3e, + 0x78, 0xef, 0x12, 0x04, + 0x72, 0x16, 0xfb, 0xd8, 0x90, 0xff, 0x2c, 0x7e, 0x8f, 0xee, 0x12, 0xf0, + 0x8c, 0x24, 0x7e, 0x90, + 0x12, 0x2e, 0x5d, 0x18, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, + 0x90, 0xf9, 0x2e, 0x7e, + 0x18, 0x12, 0xc3, 0xa8, 0x18, 0x12, 0x50, 0xf1, 0xee, 0x05, 0xa3, 0xf0, + 0xf0, 0xef, 0x7e, 0x90, + 0x12, 0x30, 0x5d, 0x18, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, + 0x90, 0xf9, 0x30, 0x7e, + 0x18, 0x12, 0xd3, 0xa8, 0x18, 0x12, 0x40, 0xf1, 0xee, 0x05, 0xa3, 0xf0, + 0xf0, 0xef, 0x7e, 0x90, + 0xe0, 0x2c, 0xa3, 0xff, 0x90, 0xe0, 0xc1, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, + 0xe4, 0xf0, 0x7b, 0x90, + 0xf0, 0xbc, 0xf0, 0xa3, 0x17, 0x12, 0xc3, 0x0f, 0x64, 0xec, 0x94, 0x80, + 0x40, 0x82, 0x90, 0x2c, + 0x30, 0x7e, 0xc4, 0xe0, 0x0f, 0x54, 0x90, 0xff, 0xbd, 0x7b, 0x9f, 0xe0, + 0x7b, 0x90, 0xe0, 0xbc, + 0x00, 0x94, 0x17, 0x50, 0xa2, 0xec, 0x13, 0xe7, 0xed, 0xff, 0xcf, 0x13, + 0x17, 0x12, 0x90, 0xa2, + 0xbc, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x80, 0x8c, 0x12, 0xc9, + 0x6c, 0x17, 0x81, 0x94, + 0x07, 0x40, 0x01, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0xc0, 0xf0, 0x12, 0xd0, + 0x88, 0x16, 0x40, 0x30, + 0x90, 0xfd, 0xbd, 0x7b, 0xc4, 0xe0, 0xf0, 0x54, 0x90, 0xfe, 0xc2, 0x7b, + 0x24, 0xe0, 0xff, 0x00, + 0x7b, 0x90, 0xe0, 0xc1, 0x90, 0x3e, 0xa0, 0x7d, 0x17, 0x12, 0x7d, 0x63, + 0x7c, 0x19, 0x12, 0x82, + 0x15, 0x72, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x16, 0x12, 0xff, 0x80, + 0x16, 0x12, 0x50, 0xbe, + 0x12, 0x03, 0x4b, 0x16, 0x16, 0x12, 0xff, 0x80, 0x7e, 0x7a, 0x38, 0x79, + 0x7e, 0x7c, 0x38, 0x7d, + 0x56, 0x02, 0x12, 0xa1, 0x4f, 0x51, 0x84, 0x94, 0x21, 0x50, 0x70, 0x12, + 0xc0, 0x80, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x7a, 0x90, 0xf0, 0xe1, 0xf0, 0xa3, + 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x72, 0x12, 0xe4, 0x23, 0x7a, 0x90, 0xf0, 0xa0, 0x90, 0x22, + 0x98, 0x7a, 0x25, 0x12, + 0x12, 0x8e, 0x93, 0x51, 0xfc, 0xe4, 0x12, 0xfd, 0xb8, 0x24, 0x7a, 0x90, + 0x12, 0x98, 0xaa, 0x25, + 0x7a, 0x90, 0x12, 0x9c, 0x8e, 0x25, 0x7a, 0x90, 0xe0, 0xaa, 0xa3, 0xfe, + 0xff, 0xe0, 0xfc, 0xe4, + 0x12, 0xfd, 0xb8, 0x24, 0x7a, 0x90, 0x12, 0x9c, 0xaa, 0x25, 0x7a, 0x90, + 0x12, 0x96, 0x67, 0x51, + 0x7a, 0x90, 0xe0, 0x96, 0x01, 0x54, 0xe0, 0xf0, 0xa3, 0xfe, 0xff, 0xe0, + 0x70, 0x4e, 0x7d, 0x04, + 0x80, 0x01, 0x7d, 0x02, 0x90, 0x00, 0xa0, 0x7a, 0xf0, 0xed, 0x01, 0xbe, + 0xbf, 0x06, 0x03, 0xfd, + 0x51, 0x12, 0x90, 0xe9, 0x96, 0x7a, 0xb4, 0xe0, 0x08, 0x01, 0xe0, 0xa3, + 0xfe, 0xb4, 0x12, 0x03, + 0xd5, 0x54, 0x7a, 0x90, 0xe0, 0x96, 0x01, 0xb4, 0xa3, 0x08, 0xb4, 0xe0, + 0x03, 0xff, 0x55, 0x12, + 0x90, 0xbf, 0xa0, 0x7a, 0x60, 0xe0, 0x12, 0x66, 0x23, 0x72, 0x7a, 0x90, + 0xe0, 0xbf, 0x0b, 0x60, + 0x90, 0xe4, 0xbe, 0x7a, 0x90, 0xf0, 0xbf, 0x7a, 0x14, 0xe0, 0x90, 0xf0, + 0x9c, 0x7a, 0x25, 0x12, + 0x78, 0x72, 0x12, 0x08, 0x38, 0x25, 0x7a, 0x90, 0xe0, 0x94, 0xff, 0x2f, + 0x7a, 0x90, 0xe0, 0x93, + 0x90, 0x3e, 0xa1, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0x12, 0x98, + 0x72, 0x25, 0x05, 0x78, + 0x25, 0x12, 0x90, 0x38, 0xa3, 0x7a, 0xf0, 0xee, 0xa3, 0xfc, 0xf0, 0xef, + 0x90, 0xfd, 0x09, 0x7f, + 0xff, 0xe0, 0x00, 0x7e, 0x24, 0x12, 0xef, 0x7a, 0x06, 0x78, 0x51, 0x12, + 0xd8, 0xa5, 0xff, 0xfb, + 0x7a, 0x90, 0xee, 0xa3, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x12, 0xd2, 0x80, + 0x22, 0x23, 0x03, 0x7f, + 0x60, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x6c, 0x7c, 0xf0, 0xef, 0xe1, 0x20, + 0x02, 0x03, 0xbe, 0x4f, + 0x07, 0x7f, 0x66, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x6d, 0x7c, 0xf0, 0xef, + 0xff, 0xf4, 0x00, 0x7e, + 0x05, 0x7d, 0x66, 0x7c, 0x6f, 0x12, 0x90, 0x57, 0x6d, 0x7c, 0x20, 0xe0, + 0x03, 0xe0, 0x4f, 0x02, + 0x7f, 0xbe, 0x7e, 0x23, 0x12, 0x71, 0xf0, 0x6e, 0x7c, 0x90, 0xef, 0x89, + 0xd3, 0xf0, 0x17, 0x94, + 0x03, 0x40, 0x4f, 0x02, 0xc3, 0xae, 0x7c, 0x90, 0xe0, 0x71, 0x40, 0x94, + 0x7a, 0x40, 0x70, 0x7d, + 0x4f, 0x12, 0x7f, 0xd7, 0x7e, 0x3d, 0x12, 0x71, 0xf0, 0x6e, 0x01, 0xbe, + 0xbf, 0x0b, 0x08, 0x42, + 0x3d, 0x7d, 0x71, 0x7c, 0x52, 0x7f, 0x1d, 0x80, 0x3d, 0x7f, 0x71, 0x7e, + 0x6e, 0x12, 0xbe, 0xf0, + 0x0d, 0x01, 0x52, 0xbf, 0x7d, 0x0a, 0x7c, 0x3d, 0x7f, 0x71, 0x7e, 0x42, + 0x80, 0x00, 0x7d, 0x08, + 0x7c, 0x3d, 0x7f, 0x71, 0x7e, 0x42, 0x12, 0x01, 0x57, 0x6f, 0x1b, 0x7d, + 0x4f, 0x12, 0x7f, 0xd7, + 0x12, 0x03, 0xbf, 0x4f, 0x02, 0x7f, 0x00, 0x7e, 0x6f, 0x12, 0x7f, 0x57, + 0x12, 0x0c, 0xbf, 0x4f, + 0x08, 0x7f, 0x4f, 0x12, 0x7f, 0xcd, 0x12, 0x30, 0xcd, 0x4f, 0x20, 0x7f, + 0x00, 0x7e, 0x6f, 0x12, + 0x7d, 0x57, 0x7c, 0x1d, 0xe4, 0x71, 0xfe, 0xff, 0x6f, 0x12, 0x7d, 0x57, + 0x7c, 0x1b, 0x7f, 0x71, + 0x7e, 0xff, 0x12, 0x00, 0x57, 0x6f, 0x0c, 0x80, 0x7c, 0x90, 0xe4, 0x71, + 0xf0, 0x75, 0x12, 0x01, + 0x8c, 0x24, 0x07, 0x80, 0x90, 0xe4, 0x71, 0x7c, 0xa3, 0xf0, 0x12, 0xf0, + 0xf3, 0x07, 0x40, 0x12, + 0x12, 0x62, 0x96, 0x21, 0x7d, 0x22, 0x7c, 0x1d, 0x7e, 0x71, 0x12, 0x00, + 0x57, 0x6f, 0x1d, 0x7d, + 0x71, 0x7c, 0x7e, 0x22, 0x12, 0x00, 0x57, 0x6f, 0x1d, 0x7d, 0x71, 0x7c, + 0x7c, 0x22, 0xe4, 0x71, + 0xfe, 0xff, 0x6f, 0x12, 0x22, 0x57, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x0f, 0x7d, + 0x81, 0x7c, 0xba, 0x7f, 0xbe, 0x7e, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x00, + 0x7f, 0x80, 0x7e, 0x01, + 0x12, 0x00, 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x34, 0x12, + 0xe4, 0x1e, 0x7e, 0x90, + 0xf0, 0x07, 0x7b, 0x90, 0xf0, 0xb7, 0x7b, 0x90, 0xe0, 0x61, 0x90, 0xff, + 0x05, 0x7e, 0xb5, 0xe0, + 0x14, 0x07, 0x7b, 0x90, 0xe0, 0x5f, 0xa3, 0xfe, 0xff, 0xe0, 0x7e, 0x90, + 0xe0, 0x02, 0x70, 0x6e, + 0xa3, 0x03, 0x6f, 0xe0, 0x0a, 0x60, 0x90, 0xe4, 0x07, 0x7e, 0x90, 0xf0, + 0xb7, 0x7b, 0xf0, 0x04, + 0x2b, 0x12, 0x7f, 0xb2, 0x12, 0x14, 0xd8, 0x50, 0x03, 0x64, 0x70, 0x4e, + 0x7d, 0x0e, 0x7c, 0x14, + 0xff, 0x83, 0x12, 0xfe, 0x57, 0x6f, 0x53, 0x12, 0x80, 0xe3, 0x90, 0x1a, + 0xbc, 0x7b, 0x70, 0xe0, + 0xa3, 0x02, 0x70, 0xe0, 0xfe, 0x05, 0x01, 0x7f, 0x04, 0x80, 0x00, 0x7e, + 0x00, 0x7f, 0x14, 0x7d, + 0x83, 0x7c, 0x6f, 0x12, 0x7f, 0x57, 0x12, 0x2f, 0xd8, 0x50, 0x70, 0x4e, + 0xfe, 0x05, 0x01, 0x7f, + 0x04, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x2f, 0x7d, 0x83, 0x7c, 0x6f, 0x12, + 0xc0, 0x57, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, 0x7f, 0xaf, 0x7e, 0x42, 0x12, 0x83, 0xf0, 0x6e, + 0x7b, 0x90, 0xef, 0xbe, + 0xd3, 0xf0, 0x39, 0x94, 0x03, 0x40, 0x80, 0xe4, 0x90, 0x08, 0xbe, 0x7b, + 0x90, 0xe0, 0x9c, 0x6a, + 0x90, 0x93, 0x0d, 0x7e, 0x90, 0xf0, 0x07, 0x7e, 0xd3, 0xe0, 0x08, 0x94, + 0x0e, 0x40, 0x7b, 0x90, + 0xe0, 0xbe, 0x94, 0xd3, 0x40, 0x20, 0xe4, 0x05, 0x7e, 0x90, 0xf0, 0x07, + 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0xa9, 0x43, 0x43, 0x04, 0x04, 0xaa, 0x19, 0x12, 0x02, 0xa6, + 0x10, 0x50, 0x83, 0x7e, + 0x6e, 0x12, 0x90, 0xf0, 0xbc, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, + 0x83, 0xf5, 0x93, 0xe4, + 0x74, 0xfe, 0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, 0x7a, 0x90, 0x12, 0xe5, + 0x8e, 0x25, 0x02, 0xd3, + 0x22, 0x25, 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, 0xe0, 0xa3, + 0xa3, 0xfa, 0xfb, 0xe0, + 0xff, 0x2f, 0x3e, 0xea, 0xd3, 0xfe, 0x9f, 0xed, 0x64, 0xee, 0xf8, 0x80, + 0x64, 0xec, 0x98, 0x80, + 0x25, 0x22, 0x25, 0xe0, 0xff, 0xe0, 0xfe, 0xe0, 0xef, 0xc3, 0x80, 0x64, + 0xee, 0xf8, 0x80, 0x64, + 0x22, 0x98, 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x2f, 0xeb, 0xea, 0xff, + 0xfe, 0x3e, 0x7a, 0x90, + 0xe0, 0xa1, 0xa3, 0xfc, 0xfd, 0xe0, 0x22, 0xd3, 0x7b, 0x90, 0x7d, 0x18, + 0xe0, 0x11, 0xa3, 0xfe, + 0xff, 0xe0, 0x64, 0x7c, 0xc3, 0x22, 0x7f, 0x90, 0xe0, 0x95, 0x80, 0x64, + 0x9d, 0x22, 0xe0, 0xff, + 0xfe, 0x9c, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, + 0xe4, 0x22, 0xf0, 0x75, + 0x02, 0x01, 0x8c, 0x24, 0x7a, 0x90, 0xff, 0xee, 0xf0, 0xee, 0xef, 0xa3, + 0x22, 0xf0, 0x7a, 0x90, + 0xe0, 0xe9, 0xa3, 0xfe, 0x22, 0xe0, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x25, + 0xe0, 0x22, 0xa3, 0xfe, + 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x90, 0x22, 0xb0, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x22, 0xff, 0x7a, 0x90, 0xe0, 0xac, 0xa3, 0xfe, 0xff, 0xe0, 0xce, 0x22, + 0xe7, 0xa2, 0xce, 0x13, + 0x22, 0x13, 0x7a, 0x90, 0x02, 0xe5, 0xaa, 0x25, 0xee, 0xff, 0xf0, 0x8f, + 0x24, 0x02, 0x44, 0x8c, + 0xf0, 0xfe, 0xef, 0xa3, 0x22, 0xf0, 0xfc, 0xe0, 0xe0, 0xa3, 0xc3, 0xfd, + 0x90, 0x22, 0x97, 0x7f, + 0x02, 0x74, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x95, 0x64, 0xd3, 0x94, 0x80, + 0x22, 0x85, 0x7a, 0x90, + 0xe4, 0xee, 0xa3, 0xf0, 0xe0, 0x22, 0xa3, 0xfe, 0xff, 0xe0, 0x10, 0x7d, + 0x64, 0x7c, 0xc0, 0x22, + 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xe1, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0x90, 0xff, + 0xe3, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x78, 0xf0, 0xce, 0x02, 0x13, 0xc3, + 0x13, 0xce, 0xf9, 0xd8, + 0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xe2, 0xf0, 0x9f, 0x7a, 0x90, 0xe0, 0xe1, + 0xf0, 0x9e, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, 0x12, 0x7f, 0x55, 0x7e, 0x6e, 0x12, 0x90, 0xf0, + 0xeb, 0x7a, 0xf0, 0xef, + 0x7a, 0x90, 0xe4, 0xe9, 0xa3, 0xf0, 0x19, 0x74, 0x12, 0xf0, 0xce, 0x51, + 0x09, 0x50, 0x7a, 0x90, + 0xe4, 0xe9, 0xa3, 0xf0, 0x37, 0x74, 0x12, 0xf0, 0x78, 0x51, 0x90, 0xff, + 0xeb, 0x7a, 0xfd, 0xe0, + 0x00, 0x7c, 0x24, 0x12, 0x90, 0x7a, 0xe9, 0x7a, 0xf0, 0xee, 0xef, 0xa3, + 0x12, 0xf0, 0x78, 0x51, + 0x04, 0x78, 0x51, 0x12, 0xd8, 0xa5, 0xf0, 0xfb, 0x90, 0xee, 0xe9, 0x7a, + 0x90, 0xf0, 0xe3, 0x7a, + 0xfa, 0xe0, 0xe0, 0xa3, 0xff, 0xfb, 0x02, 0xae, 0xfc, 0xe4, 0x12, 0xfd, + 0xac, 0x51, 0x51, 0x12, + 0xff, 0x78, 0xeb, 0xd3, 0xea, 0x9f, 0x90, 0x9e, 0xe5, 0x7a, 0x1f, 0x40, + 0x25, 0x12, 0xc0, 0x72, + 0xc0, 0x06, 0x12, 0x07, 0x78, 0x51, 0xaa, 0xfb, 0xea, 0x06, 0x95, 0x33, + 0xf9, 0xe0, 0xd0, 0xf8, + 0xd0, 0x07, 0x12, 0x06, 0xc5, 0x24, 0x51, 0x12, 0x80, 0xac, 0x12, 0x07, + 0xb6, 0x25, 0x00, 0x00, + 0x00, 0x00, 0x7a, 0x90, 0xe0, 0xeb, 0x94, 0xc3, 0x50, 0x58, 0x90, 0x32, + 0xe5, 0x7a, 0x25, 0x12, + 0x90, 0x8e, 0xeb, 0x7a, 0xc3, 0xe0, 0x24, 0x13, 0xff, 0x2c, 0xfc, 0xe4, + 0xfe, 0xfd, 0x24, 0x12, + 0x12, 0xd3, 0xac, 0x51, 0x7a, 0x90, 0x12, 0xe5, 0x72, 0x25, 0x07, 0xc0, + 0x7a, 0x90, 0xe0, 0xeb, + 0xe4, 0xfb, 0xf9, 0xfa, 0xd0, 0xf8, 0x12, 0x07, 0xdb, 0x68, 0x51, 0x12, + 0x22, 0xac, 0x7b, 0x90, + 0x74, 0x62, 0xf0, 0x43, 0x74, 0xa3, 0xf0, 0x01, 0x90, 0xe4, 0x64, 0x7b, + 0x90, 0xf0, 0x65, 0x7b, + 0xa3, 0xf0, 0x90, 0xf0, 0x67, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0xb2, 0x7b, + 0x12, 0xf0, 0xfd, 0x18, + 0xd0, 0xc0, 0x16, 0x12, 0xf5, 0x88, 0x12, 0x0d, 0xec, 0x17, 0x69, 0x74, + 0xf5, 0x2f, 0x74, 0x82, + 0x12, 0x7b, 0x37, 0x16, 0x16, 0xb4, 0xe4, 0xf0, 0x0d, 0xf5, 0x17, 0x12, + 0x74, 0xec, 0x2f, 0x9a, + 0x82, 0xf5, 0x7b, 0x74, 0x16, 0x12, 0xb4, 0x37, 0xf0, 0x0c, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, + 0x90, 0xe4, 0x95, 0x7b, 0x90, 0xf0, 0x96, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, + 0x98, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0x07, 0x7e, 0x90, 0xf0, 0x08, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, + 0x0e, 0x7e, 0xa3, 0xf0, + 0x90, 0xf0, 0x14, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x1a, 0x7e, 0xa3, 0xf0, + 0x90, 0xf0, 0x1d, 0x7e, + 0x0f, 0x74, 0x90, 0xf0, 0x1f, 0x7e, 0x02, 0x74, 0x90, 0xf0, 0x2c, 0x7e, + 0xf0, 0x14, 0x74, 0xa3, + 0xf0, 0xff, 0x90, 0xe4, 0x32, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x34, 0x7e, + 0xa3, 0xf0, 0xa5, 0x74, + 0x90, 0xf0, 0x37, 0x7e, 0x0f, 0x74, 0xe4, 0xf0, 0x7e, 0x90, 0xf0, 0x46, + 0xf0, 0xa3, 0x7e, 0x90, + 0x74, 0x4b, 0xf0, 0x05, 0x7e, 0x90, 0x12, 0x4c, 0xda, 0x17, 0x90, 0xe4, + 0x68, 0x7e, 0xa3, 0xf0, + 0x90, 0xf0, 0x6a, 0x7e, 0x17, 0x12, 0x90, 0xda, 0x5a, 0x7e, 0x17, 0x12, + 0x90, 0xda, 0x78, 0x7e, + 0xa3, 0xf0, 0xe4, 0xf0, 0x7e, 0x90, 0xf0, 0x22, 0xf0, 0xa3, 0x7e, 0x90, + 0xf0, 0x3a, 0xf0, 0xa3, + 0x7e, 0x90, 0xf0, 0x50, 0xf0, 0xa3, 0x7e, 0x90, 0xf0, 0x5e, 0xf0, 0xa3, + 0x7e, 0x90, 0xf0, 0x6e, + 0xf0, 0xa3, 0x7e, 0x90, 0xf0, 0x7c, 0xf0, 0xa3, 0xc0, 0x22, 0x12, 0xd0, + 0x88, 0x16, 0xf5, 0xe4, + 0x05, 0x0d, 0xe5, 0x0d, 0xb4, 0x0d, 0xf9, 0x19, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0xd0, 0xc0, + 0x16, 0x12, 0xe4, 0x88, 0x0d, 0xf5, 0x16, 0x12, 0xb4, 0x22, 0xfa, 0x16, + 0x17, 0x12, 0x12, 0xc0, + 0xae, 0x00, 0x15, 0x7b, 0x54, 0x12, 0xd0, 0xc7, 0xc0, 0xd0, 0x12, 0xd0, + 0x88, 0x16, 0x14, 0x7f, + 0x83, 0x7e, 0x6e, 0x12, 0x12, 0xf0, 0x69, 0x16, 0xfe, 0x54, 0x70, 0x4e, + 0x7d, 0x09, 0x7c, 0x14, + 0x7f, 0x83, 0xfe, 0x02, 0x19, 0x80, 0x7b, 0x90, 0xe0, 0xbc, 0x04, 0x70, + 0xe0, 0xa3, 0x02, 0x64, + 0x05, 0x70, 0x7f, 0xfe, 0x80, 0x01, 0x7e, 0x04, 0x7f, 0x00, 0x7d, 0x00, + 0x7c, 0x14, 0x12, 0x83, + 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xd0, 0xc0, 0x16, 0x12, + 0xe4, 0x88, 0x0d, 0xf5, + 0x16, 0x12, 0xb4, 0x22, 0xfa, 0x0c, 0x7d, 0x7e, 0xa4, 0x7f, 0x0c, 0x7d, + 0x00, 0x7c, 0x00, 0x12, + 0x7b, 0xae, 0x12, 0x30, 0xc7, 0x54, 0xd0, 0xd0, 0xd0, 0xc0, 0x16, 0x12, + 0x7f, 0x88, 0x7e, 0x2f, + 0x12, 0x83, 0xf0, 0x6e, 0x16, 0x12, 0x54, 0x69, 0x4e, 0xfe, 0x09, 0x70, + 0x2f, 0x7d, 0x83, 0x7c, + 0x02, 0x7f, 0x80, 0xfe, 0x90, 0x19, 0xbc, 0x7b, 0x70, 0xe0, 0xa3, 0x04, + 0x64, 0xe0, 0x70, 0x02, + 0xfe, 0x05, 0x01, 0x7f, 0x04, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x2f, 0x7d, + 0x83, 0x7c, 0x6f, 0x12, + 0xa2, 0x57, 0x92, 0xd1, 0xd0, 0xaf, 0xc0, 0xd0, 0x12, 0xd0, 0x88, 0x16, + 0xf5, 0xe4, 0x05, 0x0d, + 0xe5, 0x0d, 0xb4, 0x0d, 0xf9, 0x19, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, + 0x7a, 0x22, 0x7d, 0x00, + 0x7f, 0x03, 0x12, 0x08, 0x2c, 0x70, 0xd1, 0xa2, 0xaf, 0x92, 0x90, 0x22, + 0xf3, 0x7a, 0x0a, 0x74, + 0x12, 0xf0, 0x80, 0x51, 0xbf, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0x12, 0x3a, + 0xe6, 0x50, 0x06, 0x40, + 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x09, 0x51, 0x12, 0x24, 0x80, 0xf5, 0xc9, + 0xe4, 0x82, 0x3a, 0x34, + 0x50, 0x12, 0x40, 0xe6, 0x90, 0x06, 0xf3, 0x7a, 0x08, 0x74, 0x12, 0xf0, + 0x80, 0x51, 0xd3, 0x24, + 0x82, 0xf5, 0x34, 0xe4, 0x12, 0x3a, 0xe6, 0x50, 0x06, 0x40, 0x7a, 0x90, + 0x74, 0xf3, 0xf0, 0x07, + 0x51, 0x12, 0x24, 0x80, 0xf5, 0xdd, 0xe4, 0x82, 0x3a, 0x34, 0x50, 0x12, + 0x40, 0xe6, 0x90, 0x06, + 0xf3, 0x7a, 0x06, 0x74, 0x12, 0xf0, 0x80, 0x51, 0xe7, 0x24, 0x82, 0xf5, + 0x34, 0xe4, 0x12, 0x3a, + 0xe6, 0x50, 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x05, 0x90, 0xc3, + 0x0e, 0x7b, 0x94, 0xe0, + 0x90, 0xb8, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x0b, 0x90, 0x6b, 0xf3, 0x7a, + 0x94, 0xe0, 0x50, 0x0a, + 0xe4, 0x1d, 0x7b, 0x90, 0xf0, 0x0a, 0xf0, 0xa3, 0x7b, 0x90, 0xe0, 0x09, + 0xf0, 0x04, 0x94, 0xe0, + 0x40, 0x06, 0x74, 0x3f, 0xf0, 0x06, 0x7b, 0x90, 0x74, 0x0c, 0xf0, 0x01, + 0x34, 0x80, 0x90, 0xe4, + 0x09, 0x7b, 0x90, 0xf0, 0x0a, 0x7b, 0x51, 0x12, 0x90, 0x68, 0x06, 0x7f, + 0xfe, 0xe0, 0xe0, 0xa3, + 0xd3, 0xff, 0x7b, 0x90, 0xe0, 0x0b, 0x90, 0x9f, 0x0a, 0x7b, 0x9e, 0xe0, + 0x14, 0x40, 0x7f, 0x90, + 0xe0, 0x06, 0xa3, 0xff, 0x90, 0xe0, 0x0a, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, + 0xe4, 0xf0, 0x7b, 0x90, + 0xf0, 0x0c, 0x7f, 0x90, 0xe0, 0x06, 0x02, 0x70, 0xe0, 0xa3, 0x08, 0x70, + 0x7b, 0x90, 0xf0, 0x0c, + 0x7b, 0x90, 0xf0, 0x09, 0x90, 0x22, 0xe5, 0x7a, 0x25, 0x12, 0xef, 0x72, + 0x02, 0x78, 0xc3, 0xce, + 0xce, 0x13, 0xd8, 0x13, 0x12, 0xf9, 0x6e, 0x51, 0x08, 0x24, 0xe4, 0xff, + 0xfe, 0x3e, 0x54, 0xef, + 0x12, 0xf0, 0x6e, 0x51, 0x94, 0xd3, 0xee, 0xff, 0x80, 0x64, 0x80, 0x94, + 0x06, 0x40, 0x51, 0x12, + 0x74, 0xd8, 0xf0, 0xff, 0x51, 0x12, 0x50, 0xce, 0x12, 0x06, 0xd8, 0x51, + 0xff, 0x74, 0x12, 0xf0, + 0x4f, 0x51, 0x89, 0x94, 0x06, 0x40, 0x51, 0x12, 0x74, 0xd8, 0xf0, 0x10, + 0x7a, 0x90, 0xe0, 0xf0, + 0x90, 0xff, 0xee, 0x7a, 0x51, 0x12, 0x9f, 0x3b, 0x80, 0x74, 0xec, 0xf8, + 0x80, 0x64, 0x50, 0x98, + 0x90, 0x06, 0x0c, 0x7b, 0x70, 0xe0, 0x90, 0x05, 0xf0, 0x7a, 0xf0, 0xed, + 0x7a, 0x90, 0xe0, 0xf1, + 0x90, 0xff, 0xf0, 0x7a, 0xd3, 0xe0, 0x50, 0x9f, 0x80, 0x02, 0xc3, 0x01, + 0x43, 0x92, 0x43, 0x30, + 0x90, 0x05, 0xf0, 0x7a, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xf0, 0x7a, 0x90, + 0xf0, 0xeb, 0xff, 0xe0, + 0x02, 0x24, 0x13, 0x13, 0x3f, 0x54, 0x7a, 0x90, 0xf0, 0xec, 0xd3, 0xef, + 0x80, 0x94, 0x03, 0x40, + 0x20, 0x74, 0x30, 0xf0, 0x08, 0x43, 0x7a, 0x90, 0xe0, 0xf2, 0x7a, 0x90, + 0xf0, 0xec, 0x90, 0xc3, + 0x0e, 0x7b, 0x94, 0xe0, 0x90, 0xf4, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x01, + 0x90, 0x1f, 0x67, 0x7f, + 0x30, 0xe0, 0x18, 0xe1, 0x7f, 0x90, 0xe0, 0x66, 0x30, 0xa3, 0x10, 0xe0, + 0x7a, 0x90, 0x7d, 0xeb, + 0x12, 0x12, 0x97, 0x56, 0x7a, 0x90, 0x7d, 0xec, 0x12, 0x13, 0x97, 0x56, + 0xe0, 0x22, 0x7e, 0xff, + 0x7c, 0x00, 0x12, 0x55, 0x57, 0x6f, 0x90, 0x22, 0x30, 0x7c, 0xf0, 0xec, + 0xed, 0xa3, 0xf5, 0xf0, + 0x8c, 0x82, 0xe0, 0x83, 0xa3, 0xfc, 0xd3, 0xe0, 0xec, 0x9f, 0x40, 0x9e, + 0x12, 0x41, 0x1b, 0x17, + 0x18, 0x12, 0xe0, 0x2f, 0xa3, 0xfc, 0xfd, 0xe0, 0x64, 0xec, 0x94, 0x80, + 0x50, 0x80, 0x12, 0x04, + 0xe6, 0x18, 0x12, 0x22, 0x1b, 0x17, 0x04, 0x24, 0x17, 0x12, 0xfe, 0x36, + 0xc3, 0xa3, 0x18, 0x12, + 0x12, 0x37, 0x18, 0x17, 0x0e, 0x40, 0x17, 0x12, 0xff, 0x34, 0x7e, 0x90, + 0xe0, 0x08, 0xa3, 0xf0, + 0x4f, 0xe0, 0x22, 0xf0, 0x18, 0x12, 0xe4, 0x30, 0xf0, 0x75, 0x02, 0x01, + 0x69, 0x57, 0x17, 0x12, + 0x12, 0x1b, 0x2f, 0x18, 0xfc, 0xe0, 0xe0, 0xa3, 0xd3, 0xfd, 0x00, 0x94, + 0x64, 0xec, 0x94, 0x80, + 0x40, 0x80, 0x12, 0x05, 0xe6, 0x18, 0x1c, 0x80, 0x17, 0x12, 0x24, 0x1b, + 0x12, 0x06, 0x36, 0x17, + 0xa3, 0xfe, 0x12, 0xd3, 0x37, 0x18, 0x80, 0x64, 0x50, 0x98, 0x12, 0x09, + 0x1b, 0x17, 0x17, 0x12, + 0x12, 0x34, 0x90, 0x18, 0x17, 0x12, 0xff, 0x1b, 0x08, 0x24, 0x17, 0x12, + 0xfc, 0x36, 0xe0, 0xa3, + 0x8f, 0xfd, 0x8e, 0x82, 0xa3, 0x83, 0xe0, 0xa3, 0xa3, 0xfe, 0xd3, 0xe0, + 0xec, 0x9d, 0x80, 0x64, + 0xee, 0xf8, 0x17, 0x12, 0x50, 0x18, 0x12, 0x11, 0x34, 0x17, 0x90, 0xff, + 0x08, 0x7e, 0xf0, 0xe0, + 0xe0, 0xa3, 0xef, 0xf0, 0x18, 0x12, 0x22, 0x90, 0x18, 0x12, 0x74, 0x30, + 0xf5, 0xff, 0x12, 0xf0, + 0x8c, 0x24, 0x7f, 0x22, 0x7e, 0x17, 0x12, 0x53, 0xf0, 0x6e, 0x7a, 0x90, + 0xee, 0xb2, 0xa3, 0xf0, + 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xb2, 0xa3, 0xfe, 0xff, 0xe0, 0x7c, 0x90, + 0xee, 0x18, 0xa3, 0xf0, + 0xf0, 0xef, 0xee, 0xc3, 0x40, 0x94, 0x0a, 0x40, 0x7c, 0x90, 0x74, 0x18, + 0xf0, 0x3f, 0x74, 0xa3, + 0xf0, 0xff, 0x7c, 0x90, 0xe0, 0x18, 0xa3, 0xfe, 0xff, 0xe0, 0x7b, 0x90, + 0xee, 0x40, 0xf0, 0x8f, + 0x24, 0x12, 0x90, 0x8c, 0x3c, 0x7b, 0xc3, 0xe0, 0x03, 0x94, 0x70, 0x40, + 0xd0, 0xc0, 0xaf, 0xa2, + 0xd1, 0x92, 0xaf, 0xc2, 0x7b, 0x90, 0xe0, 0x40, 0xa3, 0xfe, 0xff, 0xe0, + 0x5a, 0x12, 0xc3, 0x40, + 0x7b, 0x90, 0xe0, 0x48, 0xff, 0x9f, 0x7b, 0x90, 0xe0, 0x47, 0xfe, 0x9e, + 0x78, 0xef, 0xce, 0x05, + 0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf8, 0x7b, 0x90, 0xee, 0x45, + 0xa3, 0xf0, 0xf0, 0xef, + 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7b, 0x90, 0xe0, 0x3f, 0x33, 0xff, + 0xe0, 0x95, 0x90, 0xfe, + 0x46, 0x7b, 0x2f, 0xe0, 0x90, 0xff, 0x45, 0x7b, 0x3e, 0xe0, 0x7b, 0x90, + 0xf0, 0x5d, 0xef, 0xa3, + 0x90, 0xf0, 0x5e, 0x7b, 0x90, 0xe0, 0x44, 0x7b, 0x90, 0xf0, 0x5d, 0x7b, + 0x60, 0xe0, 0x90, 0x06, + 0x44, 0x7b, 0xff, 0x74, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x40, 0xf0, 0xa3, + 0x90, 0x22, 0x67, 0x7f, + 0x20, 0xe0, 0x03, 0xe3, 0x58, 0x02, 0x90, 0xdc, 0xc0, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0x90, 0xff, + 0x18, 0x7c, 0xf0, 0xee, 0xa3, 0xfc, 0xf0, 0xef, 0x90, 0xfd, 0xc6, 0x7a, + 0x7e, 0xe0, 0x54, 0x00, + 0x78, 0x03, 0xc3, 0x02, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x90, 0xff, + 0xc5, 0x7a, 0x54, 0xe0, + 0xfb, 0x03, 0xfa, 0xee, 0x4f, 0xeb, 0x90, 0xfb, 0xc7, 0x7a, 0x54, 0xe0, + 0xc4, 0x03, 0x54, 0xf8, + 0xc8, 0x0f, 0xff, 0x68, 0xc4, 0xe4, 0xf0, 0x54, 0x4a, 0x48, 0xef, 0xfa, + 0xfb, 0x4b, 0x7a, 0x90, + 0xe0, 0xc8, 0x00, 0x7e, 0x01, 0x54, 0x06, 0x78, 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0x90, 0xf9, + 0xc9, 0x7a, 0x63, 0x12, 0x7e, 0xa3, 0x54, 0x00, 0x78, 0x01, 0xc3, 0x07, + 0xce, 0x33, 0xce, 0x33, + 0xf9, 0xd8, 0x7a, 0x90, 0x12, 0xca, 0xa3, 0x63, 0x01, 0x54, 0xfa, 0x4a, + 0x7a, 0x90, 0xe0, 0xcb, + 0x01, 0x54, 0xe0, 0x25, 0xfa, 0x4a, 0x7a, 0x90, 0xe0, 0xcc, 0x01, 0x54, + 0xe0, 0x25, 0xe0, 0x25, + 0xfe, 0x4a, 0xff, 0xeb, 0x7a, 0x90, 0xee, 0xc0, 0xa3, 0xf0, 0xf0, 0xef, + 0x70, 0x6d, 0xee, 0x02, + 0x60, 0x6c, 0x90, 0x0f, 0xc0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, + 0x7c, 0x10, 0x12, 0x53, + 0x57, 0x6f, 0x90, 0x22, 0x88, 0x7d, 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, + 0x7f, 0x8c, 0x7e, 0x17, + 0x12, 0x93, 0xf0, 0x6e, 0x6a, 0x12, 0x90, 0x54, 0x14, 0x7c, 0x6a, 0x12, + 0x50, 0x22, 0x90, 0x1a, + 0x14, 0x7c, 0x6a, 0x12, 0xa8, 0x49, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, + 0x33, 0xce, 0xd8, 0xce, + 0xf0, 0xf9, 0x90, 0xee, 0x50, 0x7c, 0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, + 0x50, 0x7c, 0xa3, 0xf0, + 0x7f, 0xf0, 0x7e, 0x16, 0x12, 0x93, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x66, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7c, 0x90, 0xe0, 0x66, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0x7c, 0x90, + 0xee, 0x14, 0xa3, 0xf0, + 0xf0, 0xef, 0x7c, 0x90, 0x12, 0x66, 0x30, 0x6a, 0x21, 0x50, 0x7c, 0x90, + 0xa3, 0x14, 0xff, 0xe0, + 0x7c, 0x90, 0xe0, 0x66, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, 0x05, 0x80, + 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, 0x66, 0x7c, 0x80, 0xf0, 0x74, 0x08, + 0x90, 0xff, 0x66, 0x7c, + 0xa3, 0xf0, 0x12, 0xf0, 0x4c, 0x6a, 0xc3, 0xff, 0x7c, 0x90, 0xe0, 0x67, + 0xff, 0x9f, 0x7c, 0x90, + 0xe0, 0x66, 0x90, 0x9e, 0x8a, 0x7d, 0xf0, 0x8f, 0x24, 0x12, 0x30, 0x8c, + 0x0a, 0xd7, 0x7d, 0x90, + 0xe4, 0x8c, 0xf0, 0x75, 0x12, 0x01, 0x8c, 0x24, 0x12, 0x22, 0x18, 0x32, + 0x7c, 0x90, 0xe0, 0x6e, + 0xf0, 0x04, 0xfb, 0xe0, 0x94, 0xc3, 0x40, 0x03, 0xe4, 0x05, 0x02, 0xf0, + 0x35, 0x5a, 0x7f, 0x90, + 0xe0, 0x67, 0xe5, 0x20, 0x02, 0x03, 0x35, 0x5a, 0xd0, 0xc0, 0xaf, 0xa2, + 0xd1, 0x92, 0xaf, 0xc2, + 0x1b, 0xaf, 0x1a, 0xae, 0x19, 0xad, 0x18, 0xac, 0x7c, 0x90, 0x12, 0x73, + 0xaa, 0x25, 0x27, 0xaf, + 0x26, 0xae, 0x25, 0xad, 0x24, 0xac, 0x7c, 0x90, 0x12, 0x77, 0xaa, 0x25, + 0x22, 0xae, 0x23, 0xaf, + 0xfc, 0xe4, 0x90, 0xfd, 0x7b, 0x7c, 0x25, 0x12, 0xeb, 0xaa, 0x01, 0xb4, + 0x7f, 0x1f, 0x7e, 0x16, + 0x12, 0x66, 0xf0, 0x6e, 0x7c, 0x90, 0xee, 0x6f, 0xa3, 0xf0, 0xf0, 0xef, + 0x5a, 0x12, 0x90, 0x40, + 0x68, 0x7d, 0xf0, 0xee, 0xef, 0xa3, 0x12, 0xf0, 0x96, 0x21, 0x03, 0x80, + 0x07, 0x12, 0x90, 0xf3, + 0x73, 0x7c, 0x25, 0x12, 0x8f, 0x72, 0x8e, 0x1b, 0x8d, 0x1a, 0x8c, 0x19, + 0x90, 0x18, 0x77, 0x7c, + 0x25, 0x12, 0x8f, 0x72, 0x8e, 0x27, 0x8d, 0x26, 0x8c, 0x25, 0x90, 0x24, + 0x7b, 0x7c, 0x25, 0x12, + 0x8e, 0x72, 0x8f, 0x22, 0xa2, 0x23, 0x92, 0xd1, 0xd0, 0xaf, 0x7d, 0xd0, + 0x7c, 0x05, 0x7f, 0x66, + 0x7e, 0xfe, 0x02, 0xff, 0x57, 0x6f, 0x30, 0x8e, 0x31, 0x8f, 0x31, 0xe5, + 0x30, 0x45, 0x05, 0x70, + 0xff, 0x7e, 0xff, 0x7f, 0xc0, 0x22, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, + 0x90, 0xaf, 0xaa, 0x7c, + 0x06, 0x74, 0x7a, 0xf0, 0x12, 0x40, 0x58, 0x62, 0x13, 0x40, 0x31, 0xe5, + 0xe0, 0x25, 0x31, 0xf5, + 0x30, 0xe5, 0xf5, 0x33, 0x90, 0x30, 0xaa, 0x7c, 0x14, 0xe0, 0x80, 0xf0, + 0x7a, 0xe6, 0x12, 0x80, + 0x58, 0x62, 0x13, 0x50, 0x30, 0xe5, 0x13, 0xc3, 0x30, 0xf5, 0x31, 0xe5, + 0xf5, 0x13, 0x90, 0x31, + 0xaa, 0x7c, 0x04, 0xe0, 0x80, 0xf0, 0xae, 0xe6, 0xaf, 0x30, 0xe4, 0x31, + 0xfd, 0xfc, 0x62, 0x12, + 0x12, 0x42, 0x78, 0x62, 0x02, 0x78, 0x62, 0x12, 0x34, 0x6c, 0x12, 0xfe, + 0x3d, 0x62, 0x7c, 0x90, + 0x74, 0xa8, 0xf0, 0x70, 0xdb, 0x74, 0x62, 0x12, 0xff, 0x7e, 0x95, 0x33, + 0xfe, 0xe0, 0xfc, 0xfd, + 0x0f, 0x78, 0x25, 0x12, 0x90, 0x5f, 0xa4, 0x7c, 0x25, 0x12, 0x12, 0x8e, + 0xb8, 0x24, 0x24, 0xef, + 0xff, 0x10, 0x3e, 0xe4, 0x05, 0x78, 0x62, 0x12, 0xa2, 0x33, 0x92, 0xd1, + 0xd0, 0xaf, 0x22, 0xd0, + 0x2a, 0x30, 0x90, 0x43, 0xa9, 0x7a, 0xff, 0xe0, 0x03, 0x60, 0x02, 0xb4, + 0x12, 0x14, 0xa1, 0x69, + 0x7c, 0x90, 0xe0, 0x50, 0xa3, 0xff, 0x90, 0xe0, 0x28, 0x7b, 0xf0, 0xcf, + 0xef, 0xa3, 0x80, 0xf0, + 0x7f, 0x22, 0x7e, 0x17, 0x12, 0x93, 0xf0, 0x6e, 0x7b, 0x90, 0xee, 0x28, + 0xa3, 0xf0, 0xf0, 0xef, + 0xe0, 0xd3, 0xff, 0x94, 0x7b, 0x90, 0xe0, 0x28, 0x0f, 0x94, 0x07, 0x40, + 0x0f, 0x74, 0xa3, 0xf0, + 0xff, 0x74, 0x12, 0xf0, 0xdd, 0x58, 0x2e, 0x30, 0x7f, 0x4f, 0x7e, 0x45, + 0x12, 0x94, 0xf0, 0x6e, + 0x7b, 0x90, 0xee, 0x2a, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xc3, 0x29, 0x7b, + 0x94, 0xe0, 0x90, 0x64, + 0x28, 0x7b, 0x94, 0xe0, 0x50, 0x00, 0x90, 0x19, 0x2b, 0x7b, 0x94, 0xe0, + 0x90, 0x2c, 0x2a, 0x7b, + 0x94, 0xe0, 0x40, 0x01, 0x7d, 0x0b, 0x7c, 0x43, 0x7f, 0x94, 0x7e, 0x01, + 0x12, 0x00, 0x57, 0x6f, + 0x7a, 0x90, 0xe0, 0xa9, 0x01, 0xb4, 0x90, 0x11, 0x2a, 0x7b, 0xfe, 0xe0, + 0xe0, 0xa3, 0x90, 0xff, + 0x96, 0x7d, 0x8f, 0xee, 0x12, 0xf0, 0x8c, 0x24, 0x7f, 0x22, 0x7e, 0x03, + 0x12, 0x90, 0xf0, 0x6e, + 0x7c, 0x90, 0xee, 0x54, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x4e, 0x02, 0x03, + 0x05, 0x5c, 0x7c, 0x90, + 0xe0, 0x55, 0xe0, 0x30, 0x7f, 0x1a, 0x7e, 0x07, 0x12, 0x94, 0xf0, 0x6e, + 0x7c, 0x90, 0xee, 0x5a, + 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0x12, 0x56, 0x3d, 0x6a, 0x94, 0x7c, + 0x6f, 0x12, 0x90, 0x57, + 0x55, 0x7c, 0x30, 0xe0, 0x2f, 0xe1, 0x07, 0x7f, 0x93, 0x7e, 0x6e, 0x12, + 0x90, 0xf0, 0x5e, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x52, 0x7c, 0x6a, 0x12, 0x7c, 0x3d, + 0x12, 0x93, 0x57, 0x6f, + 0x7c, 0x90, 0xe0, 0x5e, 0xa3, 0xfe, 0xff, 0xe0, 0x60, 0x4e, 0xef, 0x0a, + 0xe1, 0x30, 0x12, 0x06, + 0xa1, 0x69, 0x58, 0x12, 0x90, 0xdd, 0x55, 0x7c, 0x30, 0xe0, 0x1f, 0xe2, + 0x07, 0x7f, 0x92, 0x7e, + 0x6e, 0x12, 0x90, 0xf0, 0x64, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, + 0xee, 0xff, 0xfe, 0xf4, + 0x7c, 0x90, 0x12, 0x60, 0x42, 0x6a, 0x92, 0x7c, 0x6f, 0x12, 0x22, 0x57, + 0x7f, 0x90, 0xe0, 0xfa, + 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x03, 0x02, 0x64, 0x68, 0x70, 0x12, 0xe0, + 0xf9, 0x25, 0x49, 0x5c, + 0x5c, 0x01, 0x02, 0x4c, 0x4f, 0x5c, 0x5c, 0x03, 0x04, 0x52, 0x55, 0x5c, + 0x5c, 0x05, 0x06, 0x58, + 0x5b, 0x5c, 0x5c, 0x07, 0x08, 0x5e, 0x61, 0x5c, 0x5c, 0x09, 0x80, 0x64, + 0x67, 0x5c, 0x5c, 0x81, + 0x82, 0x6a, 0x6d, 0x5c, 0x5c, 0x83, 0x84, 0x70, 0x73, 0x5c, 0x00, 0x85, + 0x5c, 0x00, 0x02, 0x76, + 0x13, 0x6f, 0x69, 0x02, 0x02, 0xe2, 0x0b, 0x64, 0x65, 0x02, 0x02, 0x76, + 0x9c, 0x70, 0x70, 0x02, + 0x02, 0x64, 0x49, 0x72, 0x72, 0x02, 0x02, 0x31, 0x77, 0x6d, 0x00, 0x02, + 0x02, 0x2e, 0x46, 0x00, + 0x00, 0x02, 0x02, 0x4e, 0x76, 0x00, 0x72, 0x02, 0x02, 0xc2, 0xc6, 0x72, + 0xff, 0x74, 0x6f, 0x12, + 0x22, 0x39, 0x7c, 0x90, 0x12, 0x94, 0xe7, 0x25, 0x4a, 0xe9, 0x03, 0x60, + 0x26, 0x02, 0x12, 0x1f, + 0x47, 0x6f, 0xf0, 0x14, 0xe4, 0x22, 0x7c, 0x90, 0xf0, 0x89, 0xf0, 0xa3, + 0xf0, 0xa3, 0xf0, 0xa3, + 0x7c, 0x90, 0xf0, 0x87, 0xf0, 0xa3, 0x81, 0x7f, 0x12, 0xfe, 0x0f, 0x5d, + 0x01, 0x7f, 0x00, 0x7e, + 0x5d, 0x12, 0xe4, 0x0f, 0x7c, 0x90, 0xf0, 0x8d, 0xf0, 0xa3, 0xf0, 0xa3, + 0xf0, 0xa3, 0x12, 0x7f, + 0x62, 0x7e, 0x6e, 0x12, 0xe4, 0xf0, 0xfd, 0xfc, 0x7c, 0x90, 0x12, 0x33, + 0xaa, 0x25, 0x7c, 0x90, + 0x12, 0x33, 0x72, 0x25, 0x7c, 0x90, 0x12, 0x37, 0xaa, 0x25, 0x7c, 0x90, + 0x12, 0x3b, 0xb6, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, 0x3f, 0x7c, 0xa3, 0xf0, 0x90, 0xf0, + 0x41, 0x7c, 0x7d, 0xf0, + 0x7c, 0x06, 0x7f, 0x71, 0xfe, 0x17, 0x6f, 0x12, 0xe4, 0x57, 0x7d, 0x90, + 0xf0, 0x8f, 0x7d, 0x90, + 0xe0, 0x6a, 0xa3, 0xff, 0x90, 0xe0, 0xb6, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, + 0xe4, 0xf0, 0x7c, 0x90, + 0xf0, 0xb8, 0x58, 0xc2, 0x7d, 0x22, 0x7c, 0x24, 0x12, 0x71, 0x57, 0x6f, + 0x7f, 0x22, 0x7e, 0x10, + 0x12, 0x56, 0xf0, 0x6e, 0x7a, 0x90, 0xef, 0x8c, 0x7f, 0xf0, 0x7e, 0x10, + 0x12, 0x57, 0xf0, 0x6e, + 0x7a, 0x90, 0xef, 0x8d, 0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x92, 0xf0, 0x6e, + 0x7a, 0x90, 0xef, 0x8e, + 0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x94, 0xf0, 0x6e, 0x7a, 0x90, 0xef, 0x8f, + 0x7f, 0xf0, 0x7e, 0x14, + 0x12, 0x94, 0xf0, 0x6e, 0x7c, 0x90, 0xef, 0x14, 0xe0, 0xf0, 0xe0, 0x20, + 0x90, 0x07, 0x8f, 0x7a, + 0x54, 0xe0, 0xf0, 0xef, 0x13, 0xd2, 0x7a, 0x90, 0xe0, 0x8d, 0x02, 0x64, + 0x02, 0x60, 0x13, 0xc2, + 0x7a, 0x90, 0xe0, 0x8e, 0x01, 0x64, 0x02, 0x60, 0x13, 0xc2, 0x7a, 0x90, + 0xe0, 0xa9, 0x01, 0xb4, + 0x90, 0x15, 0x8c, 0x7a, 0x64, 0xe0, 0x60, 0x01, 0xc2, 0x02, 0x90, 0x13, + 0x8f, 0x7a, 0x64, 0xe0, + 0x60, 0x04, 0xc2, 0x0d, 0x22, 0x13, 0x7a, 0x90, 0xe0, 0x8f, 0x05, 0x64, + 0x02, 0x60, 0x13, 0xc2, + 0x90, 0x22, 0x66, 0x7f, 0x30, 0xe0, 0x62, 0xe2, 0x7f, 0x90, 0xe0, 0x95, + 0x94, 0xc3, 0x40, 0x01, + 0xe0, 0x0e, 0x94, 0xd3, 0x50, 0x03, 0x90, 0x08, 0x0f, 0x7b, 0x51, 0x12, + 0x80, 0x67, 0xe4, 0x0f, + 0x7b, 0x90, 0xf0, 0x0f, 0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x1c, 0x7b, 0x90, + 0xf0, 0x1d, 0x7b, 0x90, + 0xe0, 0x1c, 0x0f, 0x60, 0x90, 0xd3, 0x10, 0x7b, 0x94, 0xe0, 0x90, 0xc2, + 0x0f, 0x7b, 0x94, 0xe0, + 0x50, 0x01, 0xd3, 0x0f, 0x7b, 0x90, 0xe0, 0x10, 0x14, 0x94, 0x7b, 0x90, + 0xe0, 0x0f, 0x05, 0x94, + 0x32, 0x40, 0x90, 0xe4, 0x0f, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x97, 0x7f, + 0x64, 0xe0, 0x70, 0x01, + 0x12, 0x23, 0xe7, 0x41, 0x90, 0xe4, 0x08, 0x7b, 0x22, 0xf0, 0x7b, 0x90, + 0xe0, 0x26, 0x14, 0x60, + 0x51, 0x12, 0x12, 0x42, 0x57, 0x6f, 0x7b, 0x90, 0x12, 0x1a, 0xdf, 0x51, + 0x6f, 0x12, 0xe4, 0x57, + 0x7b, 0x90, 0xf0, 0x26, 0x7e, 0x22, 0x7f, 0x7e, 0x7c, 0x90, 0x7d, 0x7e, + 0x12, 0xe8, 0xb6, 0x70, + 0x7d, 0x7e, 0x3a, 0x7f, 0x7d, 0x7c, 0x80, 0x7d, 0x70, 0x12, 0xe4, 0xb6, + 0x7d, 0x90, 0xf0, 0x91, + 0xe7, 0x75, 0x75, 0x09, 0x60, 0xe6, 0xc0, 0x75, 0xc2, 0x1f, 0x90, 0x01, + 0x58, 0x7d, 0xa3, 0xf0, + 0xf0, 0x04, 0x7d, 0x90, 0xe4, 0x66, 0xa3, 0xf0, 0xf0, 0x04, 0x7d, 0x90, + 0x74, 0x42, 0xf0, 0x80, + 0xe4, 0xa3, 0x90, 0xf0, 0x40, 0x7d, 0x00, 0x12, 0x90, 0x03, 0xc9, 0x7e, + 0x07, 0x74, 0xe4, 0xf0, + 0x23, 0xf5, 0x7d, 0x90, 0xf0, 0xe8, 0xf0, 0xa3, 0xc0, 0x75, 0x90, 0x08, + 0x86, 0x7d, 0xa3, 0xf0, + 0x90, 0xf0, 0x84, 0x7d, 0x00, 0x12, 0xe4, 0x03, 0x7d, 0x90, 0xf0, 0x94, + 0xf0, 0xa3, 0x7d, 0x90, + 0x12, 0x92, 0x03, 0x00, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, + 0x60, 0x7d, 0xa3, 0xf0, + 0x90, 0xf0, 0x30, 0x7d, 0xa3, 0xf0, 0x22, 0xf0, 0xaf, 0xc2, 0xe0, 0xc0, + 0xf0, 0xc0, 0x83, 0xc0, + 0x82, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, + 0xc0, 0x02, 0xc0, 0x03, + 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xe4, 0x07, 0x12, 0xff, 0x56, 0x6e, + 0xaf, 0xd2, 0x7e, 0x90, + 0xe0, 0x07, 0x94, 0xc3, 0x40, 0x03, 0x12, 0x03, 0x7a, 0x66, 0x7e, 0x90, + 0xe0, 0x07, 0x04, 0xb4, + 0x12, 0x03, 0xa9, 0x4b, 0x7e, 0x90, 0xe0, 0x07, 0x94, 0xc3, 0x40, 0x08, + 0x12, 0x03, 0xf3, 0x26, + 0x7e, 0x90, 0xe0, 0x07, 0x94, 0xc3, 0x40, 0x30, 0x12, 0x03, 0xf6, 0x71, + 0xaa, 0x53, 0xc2, 0xfb, + 0xe4, 0xaf, 0x12, 0xff, 0xd4, 0x6f, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, + 0x04, 0xd0, 0x03, 0xd0, + 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, + 0xf0, 0xd0, 0xe0, 0xd0, + 0xaf, 0xd2, 0xc0, 0x32, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xee, 0xaf, + 0x95, 0x33, 0xfd, 0xe0, + 0x78, 0xfc, 0x12, 0x05, 0x5f, 0x25, 0x62, 0x12, 0x12, 0x42, 0x78, 0x62, + 0x0f, 0x78, 0x25, 0x12, + 0xef, 0x4b, 0x09, 0x24, 0x7c, 0x90, 0xf0, 0xaa, 0x62, 0x12, 0xee, 0x78, + 0x7f, 0x54, 0xe4, 0xfe, + 0xfc, 0xfd, 0x01, 0x78, 0x62, 0x12, 0x34, 0x6c, 0x12, 0xff, 0x3d, 0x62, + 0x7c, 0x90, 0x74, 0xa8, + 0xf0, 0x70, 0xcf, 0x74, 0x62, 0x12, 0xfb, 0x7e, 0x64, 0xc3, 0x94, 0x80, + 0x90, 0x80, 0xa4, 0x7c, + 0x0d, 0x50, 0x25, 0x12, 0xeb, 0x72, 0x04, 0xf4, 0xf8, 0xf9, 0x25, 0x12, + 0x80, 0x4b, 0x12, 0x0c, + 0x72, 0x25, 0x7c, 0x90, 0xe0, 0xaa, 0xf8, 0xf9, 0x25, 0x12, 0x12, 0x5f, + 0x66, 0x62, 0x62, 0x12, + 0xa2, 0x25, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0x7a, 0x90, 0xe0, 0xa9, + 0x01, 0x64, 0x58, 0x70, + 0x16, 0x7f, 0x57, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0xb4, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, + 0xb4, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xb6, 0x7a, 0x6e, 0xe0, + 0x03, 0x70, 0xe0, 0xa3, + 0x60, 0x6f, 0x90, 0x21, 0xbc, 0x7a, 0x70, 0xe0, 0x12, 0x03, 0xf3, 0x5f, + 0x12, 0xc2, 0x7a, 0x90, + 0x74, 0xbc, 0xf0, 0x01, 0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xff, 0x90, 0xe0, + 0xb6, 0x7a, 0xf0, 0xcf, + 0xef, 0xa3, 0x22, 0xf0, 0x7a, 0x90, 0xe0, 0xbc, 0xf0, 0x04, 0xc3, 0xe0, + 0x04, 0x94, 0x08, 0x40, + 0x12, 0xd2, 0x04, 0x74, 0x12, 0xf0, 0xf3, 0x5f, 0x90, 0x22, 0xb4, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x90, 0xff, 0x71, 0x7f, 0x7d, 0xf0, 0x7c, 0x12, 0x12, 0x92, 0x57, 0x6f, + 0x7f, 0x22, 0x7e, 0x16, + 0x12, 0x53, 0xf0, 0x6e, 0x7a, 0x90, 0xee, 0xb0, 0xa3, 0xf0, 0xf0, 0xef, + 0x7f, 0x90, 0xe0, 0x23, + 0x7e, 0xff, 0x90, 0x00, 0xae, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0x12, 0xfd, + 0x7a, 0x24, 0x7c, 0x90, + 0xee, 0x14, 0xa3, 0xf0, 0xf0, 0xef, 0x51, 0x12, 0x7c, 0x93, 0x7d, 0x00, + 0x12, 0x8c, 0x7a, 0x24, + 0x7c, 0x90, 0xe0, 0x14, 0xa3, 0xfa, 0xfb, 0xe0, 0x9f, 0xc3, 0x9e, 0xea, + 0x02, 0x50, 0x10, 0xc2, + 0x51, 0x12, 0x7c, 0x93, 0x7d, 0x00, 0x12, 0xb4, 0x7a, 0x24, 0xeb, 0xd3, + 0xea, 0x9f, 0x40, 0x9e, + 0xd2, 0x02, 0x90, 0x10, 0x25, 0x7f, 0xff, 0xe0, 0x90, 0xc3, 0xb1, 0x7a, + 0x9f, 0xe0, 0x7a, 0x90, + 0xe0, 0xb0, 0x00, 0x94, 0x02, 0x50, 0x01, 0x80, 0x92, 0xc3, 0x02, 0x1e, + 0xd7, 0x6d, 0xd0, 0xc0, + 0x6c, 0x12, 0x12, 0x8d, 0x57, 0x6f, 0x60, 0x7c, 0x6c, 0x12, 0x12, 0x95, + 0x57, 0x6f, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, 0xa8, 0x43, 0x43, 0x20, 0x01, 0xa9, 0xca, 0xd2, + 0x60, 0xd2, 0x6c, 0x12, + 0x90, 0x85, 0xd6, 0x7e, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x7f, 0x22, + 0x7e, 0x11, 0x12, 0x62, + 0xf0, 0x6e, 0x54, 0xee, 0x90, 0x0f, 0xd6, 0x7e, 0xa3, 0xf0, 0xf0, 0xef, + 0x11, 0x7f, 0x65, 0x7e, + 0x6e, 0x12, 0xee, 0xf0, 0x0f, 0x54, 0x7e, 0x90, 0xf0, 0xd8, 0xef, 0xa3, + 0x90, 0xf0, 0xd6, 0x7e, + 0xff, 0xe0, 0xe0, 0xa3, 0x7e, 0x90, 0xcf, 0xd0, 0xa3, 0xf0, 0xf0, 0xef, + 0x7e, 0x90, 0xe0, 0xd8, + 0xa3, 0xff, 0x90, 0xe0, 0xd2, 0x7e, 0xf0, 0xcf, 0xef, 0xa3, 0x22, 0xf0, + 0x10, 0xe5, 0xe7, 0xa2, + 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0xa2, 0x22, 0x92, 0xaf, + 0xc2, 0xd1, 0x7e, 0xaf, + 0x7f, 0x7d, 0x22, 0xa2, 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x12, 0x90, 0x8c, + 0xd2, 0x7e, 0xa3, 0x22, + 0x90, 0xf0, 0xe7, 0x7e, 0xff, 0xe0, 0x7d, 0x90, 0xe4, 0x44, 0xa3, 0xf0, + 0xf0, 0xef, 0x90, 0x22, + 0xd6, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x1f, 0x92, 0x18, 0xe5, + 0x13, 0xc3, 0x23, 0x45, + 0x74, 0x22, 0xf0, 0x01, 0x74, 0xa3, 0xf0, 0xf4, 0x2d, 0x22, 0xe5, 0xff, + 0x3c, 0x14, 0x90, 0xfe, + 0xd4, 0x7e, 0x22, 0xe0, 0x7e, 0x90, 0xe0, 0xd1, 0x90, 0x9f, 0xd0, 0x7e, + 0x9e, 0xe0, 0xd3, 0x22, + 0x1f, 0xe5, 0x00, 0x94, 0x1e, 0xe5, 0x00, 0x94, 0x90, 0x22, 0xfa, 0x7f, + 0xfe, 0xe0, 0xe4, 0xa3, + 0x03, 0x70, 0x64, 0xee, 0x70, 0x03, 0xe0, 0x44, 0x25, 0x12, 0x61, 0xf9, + 0x01, 0x84, 0x87, 0x61, + 0x61, 0x02, 0x03, 0x8a, 0x8d, 0x61, 0x61, 0x04, 0x05, 0x90, 0x93, 0x61, + 0x61, 0x06, 0x07, 0x96, + 0x99, 0x61, 0x61, 0x08, 0x09, 0x9c, 0x00, 0x00, 0x9f, 0x61, 0x00, 0x02, + 0x02, 0x0e, 0xca, 0x72, + 0x71, 0x02, 0x02, 0x71, 0xa4, 0x6e, 0x6d, 0x02, 0x02, 0x16, 0xce, 0x72, + 0x72, 0x02, 0x02, 0xd2, + 0xd6, 0x72, 0x71, 0x02, 0x74, 0xe5, 0x12, 0xff, 0xae, 0x72, 0x90, 0x22, + 0x9a, 0x7c, 0x25, 0x12, + 0xe9, 0xe7, 0x60, 0x4a, 0x02, 0x03, 0x1f, 0x26, 0x7f, 0x90, 0x74, 0xf8, + 0xf0, 0xff, 0x14, 0xa3, + 0x22, 0xf0, 0x06, 0x7d, 0x66, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x12, + 0xe4, 0x57, 0x7d, 0x90, + 0xf0, 0x4a, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x5a, 0xf0, 0xa3, 0x7d, 0x90, + 0xf0, 0x52, 0xf0, 0xa3, + 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x57, 0x7d, 0x90, + 0xf0, 0x65, 0x7d, 0x90, + 0xf0, 0x58, 0x04, 0xa3, 0x90, 0xf0, 0x66, 0x7d, 0xf0, 0xe4, 0x04, 0xa3, + 0x90, 0xf0, 0x42, 0x7d, + 0x80, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7d, 0x90, 0x12, 0x40, 0xa4, 0x72, + 0x7d, 0x90, 0xf0, 0x86, + 0xf0, 0xa3, 0x7d, 0x90, 0x12, 0x84, 0xa4, 0x72, 0x7d, 0x90, 0xf0, 0x94, + 0xf0, 0xa3, 0x7d, 0x90, + 0x12, 0x92, 0xa4, 0x72, 0x7d, 0x90, 0xf0, 0x30, 0xf0, 0xa3, 0x90, 0x22, + 0xa4, 0x7c, 0x25, 0x12, + 0xe4, 0x72, 0xff, 0x2f, 0x34, 0xee, 0x78, 0x40, 0xfe, 0x0f, 0x3d, 0xe4, + 0xe4, 0xfd, 0xfc, 0x3c, + 0x25, 0x02, 0xfd, 0x4b, 0x34, 0xec, 0xfc, 0xff, 0x7c, 0x90, 0x02, 0xa0, + 0xaa, 0x25, 0x7c, 0x90, + 0xe4, 0xa8, 0xf0, 0x75, 0x12, 0x04, 0xa2, 0x24, 0xf0, 0x85, 0xf5, 0x82, + 0x22, 0x83, 0x30, 0xae, + 0x31, 0xaf, 0xfc, 0xe4, 0xfb, 0xfd, 0xf8, 0xf9, 0x02, 0xd3, 0x22, 0x25, + 0x7c, 0x90, 0x02, 0xa4, + 0xaa, 0x25, 0x25, 0x12, 0xe4, 0x5f, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x80, + 0x22, 0xed, 0x7c, 0x90, + 0x02, 0xa0, 0x72, 0x25, 0xf0, 0xa3, 0x6a, 0x12, 0x90, 0x61, 0xaa, 0x7c, + 0x22, 0xe0, 0x7f, 0x90, + 0xe0, 0xfa, 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x03, 0x80, 0x64, 0x3e, 0x70, + 0x12, 0xe0, 0xf9, 0x25, + 0xb6, 0x62, 0x62, 0x01, 0x02, 0xb9, 0xbc, 0x62, 0x62, 0x03, 0x04, 0xbf, + 0xc2, 0x62, 0x62, 0x05, + 0x07, 0xc5, 0xc8, 0x62, 0x62, 0x08, 0x09, 0xcb, 0x00, 0x00, 0xce, 0x62, + 0x66, 0x02, 0x02, 0xcc, + 0xa7, 0x6d, 0x72, 0x02, 0x02, 0xb5, 0x87, 0x72, 0x66, 0x02, 0x02, 0x24, + 0xda, 0x72, 0x72, 0x02, + 0x02, 0xde, 0x9c, 0x71, 0xff, 0x74, 0x72, 0x12, 0x22, 0x94, 0x7c, 0x90, + 0x12, 0x9d, 0xe7, 0x25, + 0x4a, 0xe9, 0x03, 0x60, 0x26, 0x02, 0x90, 0x1f, 0xf8, 0x7f, 0xff, 0x74, + 0xa3, 0xf0, 0xf0, 0x14, + 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, + 0x00, 0xd0, 0x00, 0xc0, + 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, + 0x07, 0xc0, 0x04, 0x7d, + 0x05, 0x7f, 0x53, 0x7e, 0x67, 0x12, 0x7d, 0xb8, 0x7f, 0x06, 0x7e, 0x05, + 0x12, 0x55, 0xb8, 0x67, + 0x09, 0x7d, 0x05, 0x7f, 0x56, 0x7e, 0x67, 0x12, 0x7d, 0xb8, 0x7f, 0x0b, + 0x7e, 0x05, 0x12, 0x57, + 0xb8, 0x67, 0x04, 0x7f, 0x1b, 0x12, 0xd0, 0x8c, 0xd0, 0x07, 0xd0, 0x06, + 0xd0, 0x05, 0xd0, 0x04, + 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, + 0xd0, 0x83, 0xd0, 0xf0, + 0x32, 0xe0, 0x7a, 0x90, 0xf0, 0xc2, 0x90, 0x04, 0xd1, 0x7a, 0x74, 0xf0, + 0x90, 0x32, 0xd3, 0x7a, + 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, 0x22, 0xa3, 0x09, 0x74, 0x7a, 0x90, + 0xf0, 0xcd, 0x90, 0xe4, + 0xc7, 0x7a, 0x22, 0xf0, 0x74, 0xf0, 0x90, 0x32, 0xd3, 0x7a, 0xe4, 0xf0, + 0x7a, 0x90, 0xf0, 0xcb, + 0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, 0x22, 0xc2, 0x7a, 0x90, 0xf0, 0xcd, + 0x7a, 0x90, 0x74, 0xd2, + 0xf0, 0x01, 0x7a, 0x90, 0x22, 0xd1, 0x04, 0xf0, 0x7a, 0x90, 0xf0, 0xd0, + 0x7a, 0x90, 0xf0, 0xd1, + 0xe0, 0x22, 0xa3, 0xfe, 0xff, 0xe0, 0x53, 0x7c, 0xff, 0x22, 0x4a, 0xee, + 0xef, 0xfa, 0xfb, 0x4b, + 0x22, 0xe0, 0x90, 0xe4, 0x15, 0x7c, 0x90, 0xf0, 0x39, 0x7f, 0x90, 0xe0, + 0x16, 0x7c, 0x90, 0xf0, + 0x3f, 0x7f, 0x90, 0xe0, 0x17, 0x7c, 0x90, 0xf0, 0x45, 0x7f, 0x90, 0xe0, + 0x18, 0x7c, 0x90, 0xf0, + 0x4b, 0x7f, 0x90, 0xe0, 0x19, 0x7c, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x4f, + 0x7c, 0x90, 0xf0, 0x1a, + 0x7f, 0x90, 0xe0, 0x55, 0x7c, 0x90, 0xf0, 0x1b, 0xff, 0x7b, 0xe4, 0x22, + 0x7c, 0x90, 0xf0, 0x15, + 0x7f, 0x90, 0xe0, 0x37, 0x7c, 0x90, 0xf0, 0x16, 0x7f, 0x90, 0xe0, 0x3d, + 0x7c, 0x90, 0xf0, 0x17, + 0x7f, 0x90, 0xe0, 0x43, 0x7c, 0x90, 0xf0, 0x18, 0x7f, 0x90, 0xe0, 0x49, + 0x7c, 0x90, 0xf0, 0x19, + 0x90, 0x22, 0xf8, 0x7f, 0xa3, 0xe0, 0x90, 0xe0, 0xeb, 0x7e, 0x90, 0xf0, + 0xf6, 0x7f, 0xa3, 0xe0, + 0x90, 0xe0, 0xed, 0x7e, 0x6f, 0x12, 0x70, 0x4f, 0x90, 0x20, 0xed, 0x7e, + 0xc3, 0xe0, 0xfe, 0x94, + 0x0b, 0x50, 0xc3, 0xe0, 0x08, 0x94, 0x05, 0x40, 0x64, 0xe0, 0x70, 0x09, + 0x90, 0x20, 0xeb, 0x7e, + 0x64, 0xe0, 0x60, 0x05, 0xe0, 0x04, 0x07, 0xb4, 0x12, 0x14, 0x50, 0x6f, + 0x16, 0x60, 0x7e, 0x90, + 0xe0, 0xeb, 0x94, 0xc3, 0x40, 0x03, 0xe0, 0x06, 0x94, 0xd3, 0x40, 0x07, + 0x12, 0x07, 0x47, 0x6f, + 0xfd, 0x74, 0x22, 0xf0, 0x6d, 0x12, 0x12, 0x77, 0xb4, 0x6c, 0x6f, 0x12, + 0x22, 0x38, 0x12, 0x7d, + 0x64, 0x12, 0x7d, 0xa7, 0x7c, 0x13, 0x7f, 0x83, 0x7e, 0x06, 0x12, 0x00, + 0x57, 0x6f, 0x11, 0x7d, + 0x64, 0x12, 0x7d, 0xa7, 0x12, 0x2d, 0xb1, 0x64, 0x2e, 0x7d, 0x83, 0x7c, + 0x04, 0x7f, 0x00, 0x7e, + 0x6f, 0x12, 0x7d, 0x57, 0x12, 0x2c, 0xb1, 0x64, 0x2b, 0x7d, 0x64, 0x12, + 0x7d, 0xbb, 0x12, 0x3c, + 0xbb, 0x64, 0x3d, 0x7d, 0x83, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x6f, 0x02, + 0x7c, 0x57, 0x7f, 0x83, + 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x7c, 0x22, 0x7f, 0x83, 0x7e, 0x01, + 0x12, 0x00, 0x57, 0x6f, + 0x7c, 0x22, 0x7f, 0x83, 0x7e, 0x01, 0x12, 0x00, 0x57, 0x6f, 0x53, 0x22, + 0xdf, 0xa8, 0xa9, 0x53, + 0xc2, 0xfe, 0x75, 0xca, 0xf8, 0xcd, 0xcc, 0x75, 0xe4, 0xf8, 0x24, 0xf5, + 0xd0, 0xc0, 0x6c, 0x12, + 0xfd, 0xa6, 0x30, 0x7c, 0xfe, 0xff, 0x6f, 0x12, 0x7c, 0x57, 0x12, 0x62, + 0x0d, 0x65, 0x63, 0x7c, + 0x65, 0x12, 0x7c, 0x18, 0x12, 0x64, 0x0d, 0x65, 0x65, 0x7c, 0x65, 0x12, + 0x7d, 0x18, 0x7c, 0x00, + 0xe4, 0x66, 0xfe, 0xff, 0x6f, 0x12, 0xa2, 0x57, 0x92, 0xd1, 0xd0, 0xaf, + 0xc2, 0xd0, 0x12, 0x60, + 0x85, 0x6c, 0x7d, 0x22, 0xe4, 0x00, 0xfe, 0xff, 0x6f, 0x12, 0x7d, 0x57, + 0x22, 0x00, 0xff, 0xe4, + 0x12, 0xfe, 0x57, 0x6f, 0x90, 0x22, 0xfa, 0x7f, 0xfe, 0xe0, 0xe4, 0xa3, + 0x03, 0x70, 0x64, 0xee, + 0x70, 0x01, 0xe0, 0x38, 0x25, 0x12, 0x65, 0xf9, 0x01, 0x4a, 0x4d, 0x65, + 0x65, 0x02, 0x04, 0x50, + 0x53, 0x65, 0x65, 0x05, 0x07, 0x56, 0x59, 0x65, 0x65, 0x08, 0x09, 0x5c, + 0x00, 0x00, 0x5f, 0x65, + 0x71, 0x02, 0x02, 0x87, 0x47, 0x6d, 0x60, 0x02, 0x02, 0x78, 0xe7, 0x70, + 0x6e, 0x02, 0x02, 0x7d, + 0xcb, 0x6e, 0x64, 0x02, 0x74, 0xc5, 0x12, 0xff, 0x86, 0x6c, 0x90, 0x22, + 0x97, 0x7c, 0x25, 0x12, + 0xe9, 0xe7, 0x60, 0x4a, 0x02, 0x03, 0x1f, 0x26, 0x6c, 0x12, 0x22, 0x9c, + 0xd0, 0xc0, 0x6f, 0x12, + 0xd2, 0x40, 0x12, 0x61, 0x31, 0x72, 0x61, 0x12, 0x7f, 0xbc, 0x12, 0x04, + 0x7a, 0x1a, 0xff, 0x7b, + 0x59, 0x7a, 0x93, 0x79, 0x7c, 0x90, 0x12, 0xac, 0xf0, 0x25, 0x6f, 0x7a, + 0x77, 0x79, 0x7c, 0x90, + 0x12, 0xaf, 0xf0, 0x25, 0x06, 0x7d, 0x50, 0x7c, 0xff, 0x7f, 0x00, 0x7e, + 0x6f, 0x12, 0x7d, 0x57, + 0x7c, 0x06, 0x7f, 0x90, 0x7e, 0x0f, 0x12, 0x00, 0x57, 0x6f, 0xa8, 0x53, + 0x43, 0xfb, 0x10, 0xa9, + 0xaa, 0x43, 0x43, 0x08, 0x08, 0xab, 0x6f, 0x12, 0x12, 0x38, 0x52, 0x00, + 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0xc3, 0x22, 0x71, 0x12, 0x94, 0x10, 0x50, 0x80, 0xe0, 0x0e, + 0xa3, 0xfe, 0xff, 0xe0, + 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x80, 0xfe, 0x90, 0x08, 0x92, 0x7f, + 0xfe, 0xe0, 0xe0, 0xa3, + 0xd3, 0xff, 0x94, 0xef, 0xee, 0x64, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, + 0x18, 0xd2, 0x90, 0xd3, + 0x93, 0x7f, 0x94, 0xe0, 0x12, 0xf8, 0x10, 0x71, 0x83, 0x94, 0x02, 0x40, + 0x18, 0xc2, 0x90, 0xc3, + 0x93, 0x7f, 0x94, 0xe0, 0x12, 0x54, 0x10, 0x71, 0x7d, 0x94, 0x02, 0x50, + 0x18, 0xc2, 0x7f, 0x90, + 0xe0, 0x67, 0xe0, 0x20, 0xd2, 0x02, 0x02, 0x18, 0xd7, 0x6d, 0x72, 0x12, + 0x90, 0x93, 0x08, 0x7e, + 0xff, 0xe0, 0xe0, 0xa3, 0x7f, 0x90, 0xcf, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, + 0x7e, 0x90, 0xe0, 0x08, + 0x02, 0x70, 0xe0, 0xa3, 0x08, 0x70, 0x7f, 0x90, 0xe0, 0xf6, 0xc0, 0x44, + 0x26, 0x80, 0x7e, 0x90, + 0xe0, 0x09, 0x3b, 0x54, 0x3b, 0x64, 0x08, 0x70, 0x7f, 0x90, 0xe0, 0xf6, + 0x80, 0x44, 0x14, 0x80, + 0x7e, 0x90, 0xe0, 0x09, 0x3f, 0x54, 0x94, 0xc3, 0xe4, 0x08, 0x00, 0x94, + 0x0b, 0x40, 0x7f, 0x90, + 0xe0, 0xf6, 0x40, 0x44, 0xa3, 0xf0, 0xf0, 0xe0, 0x90, 0x22, 0x08, 0x7e, + 0xa3, 0xe0, 0x22, 0xe0, + 0x17, 0x7f, 0x82, 0x7e, 0x6e, 0x12, 0x90, 0xf0, 0x32, 0x7e, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, + 0x32, 0x7e, 0x19, 0x12, 0x90, 0x1c, 0x35, 0x7e, 0x9f, 0xe0, 0x90, 0xff, + 0x34, 0x7e, 0x9e, 0xe0, + 0x7b, 0x90, 0xf0, 0xbf, 0x12, 0xef, 0x7e, 0x16, 0xd3, 0xff, 0xff, 0x94, + 0x64, 0xee, 0x94, 0x80, + 0x40, 0x80, 0x90, 0x08, 0xbf, 0x7b, 0x19, 0x12, 0x80, 0x23, 0xc3, 0x11, + 0x64, 0xee, 0x94, 0x80, + 0x50, 0x7f, 0x90, 0x09, 0xbf, 0x7b, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, + 0x3d, 0x12, 0x02, 0x3e, + 0xbd, 0x4c, 0x71, 0x12, 0x90, 0x9c, 0x10, 0x7e, 0x7f, 0x74, 0xa3, 0xf0, + 0xff, 0x74, 0xe4, 0xf0, + 0x7e, 0x90, 0xf0, 0x12, 0xf0, 0xa3, 0x7e, 0x90, 0x74, 0x16, 0xf0, 0x7f, + 0x74, 0xa3, 0xf0, 0xff, + 0x90, 0xe4, 0x18, 0x7e, 0xa3, 0xf0, 0x90, 0xf0, 0x2e, 0x7e, 0xa3, 0xf0, + 0x80, 0x74, 0x90, 0xf0, + 0x30, 0x7e, 0x51, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x90, 0xf0, 0x48, 0x7e, + 0x3f, 0x74, 0xa3, 0xf0, + 0xe1, 0x74, 0xe4, 0xf0, 0x7e, 0x90, 0xf0, 0x05, 0x7e, 0x90, 0x04, 0x02, + 0x74, 0xf0, 0x12, 0xf9, + 0x91, 0x72, 0x7f, 0x22, 0x7e, 0x14, 0x12, 0x93, 0xf0, 0x6e, 0x7c, 0x90, + 0xee, 0xb2, 0xa3, 0xf0, + 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0xb2, 0xa3, 0xfa, 0xfb, 0xe0, 0xc4, 0xea, + 0x0f, 0x54, 0x7e, 0xff, + 0x90, 0x00, 0xb4, 0x7c, 0x6a, 0x12, 0x50, 0x28, 0x90, 0x1f, 0xb4, 0x7c, + 0xe0, 0xa3, 0xeb, 0xff, + 0x02, 0xae, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, + 0xf9, 0xd8, 0x90, 0xff, + 0xb2, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, 0xff, 0x74, 0x7c, 0x90, + 0xf0, 0xb2, 0xf0, 0xa3, + 0x7f, 0x22, 0x7e, 0x1e, 0x12, 0x85, 0xf0, 0x6e, 0x07, 0xad, 0x06, 0xac, + 0x7e, 0x90, 0x12, 0x68, + 0x1c, 0x19, 0x9f, 0xed, 0xec, 0xff, 0x90, 0x9e, 0x6a, 0x7e, 0xa3, 0xf0, + 0xf0, 0xef, 0x7e, 0x90, + 0xec, 0x68, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xc3, 0x6a, 0x7e, 0x64, 0xe0, + 0x94, 0x80, 0x50, 0x80, + 0x12, 0x06, 0x5c, 0x16, 0x80, 0xfe, 0x90, 0x08, 0x6a, 0x7e, 0xfe, 0xe0, + 0xe0, 0xa3, 0xac, 0xff, + 0xad, 0x06, 0x7a, 0x07, 0x79, 0x7e, 0x7c, 0x6c, 0x7d, 0x7e, 0x02, 0x6c, + 0xa1, 0x56, 0x7c, 0x90, + 0xee, 0x11, 0xa3, 0xf0, 0xf0, 0xef, 0xed, 0xa3, 0xc0, 0xf0, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, + 0x90, 0xaf, 0x12, 0x7c, 0x24, 0xe0, 0xff, 0x02, 0x7c, 0x90, 0xe0, 0x11, + 0x00, 0x34, 0x12, 0xfe, + 0xf0, 0x6e, 0x10, 0x8e, 0x11, 0x8f, 0x11, 0xe5, 0xff, 0xf4, 0x10, 0xe5, + 0xfe, 0xf4, 0x7c, 0x90, + 0xe0, 0x11, 0xa3, 0xfc, 0xfd, 0xe0, 0x6f, 0x12, 0x90, 0x57, 0x13, 0x7c, + 0xf5, 0xe0, 0x12, 0x14, + 0xb4, 0x6b, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7e, 0x22, 0xef, 0x06, + 0x13, 0x13, 0x54, 0x13, + 0xff, 0x03, 0x01, 0xbf, 0xae, 0x02, 0x1e, 0x05, 0xd3, 0xee, 0x05, 0x94, + 0x02, 0x40, 0x05, 0x7e, + 0x14, 0xee, 0x12, 0x60, 0x60, 0x14, 0x14, 0x14, 0x16, 0x60, 0x60, 0x14, + 0x24, 0x18, 0x70, 0x04, + 0x90, 0x19, 0x5a, 0x7f, 0x17, 0x80, 0x7f, 0x90, 0x80, 0x5c, 0x90, 0x12, + 0x5e, 0x7f, 0x0d, 0x80, + 0x7f, 0x90, 0x80, 0x60, 0x90, 0x08, 0x62, 0x7f, 0x03, 0x80, 0x7f, 0x90, + 0xe0, 0x64, 0xa3, 0xfe, + 0xff, 0xe0, 0x90, 0x22, 0x31, 0x7b, 0x74, 0xf0, 0x90, 0x01, 0x2d, 0x7b, + 0x74, 0xf0, 0x90, 0x08, + 0x2e, 0x7b, 0x90, 0xf0, 0xc6, 0x7a, 0x02, 0x74, 0x22, 0xf0, 0x7b, 0x90, + 0x74, 0x2c, 0xf0, 0x06, + 0x7b, 0x90, 0x04, 0x31, 0x22, 0xf0, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x16, + 0x02, 0x74, 0x7b, 0x90, + 0xf0, 0x2d, 0x7b, 0x90, 0x22, 0x2e, 0x7b, 0x90, 0xee, 0x4e, 0xa3, 0xf0, + 0xf0, 0xef, 0x90, 0x22, + 0x44, 0x7b, 0xff, 0xe0, 0x22, 0xc3, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x0e, + 0x7e, 0x22, 0x7f, 0x7a, + 0x7c, 0x82, 0x7d, 0x7b, 0x12, 0x5d, 0xb6, 0x70, 0x7f, 0x7e, 0x6f, 0x7f, + 0x7f, 0x7c, 0x74, 0x7d, + 0x70, 0x12, 0x7e, 0xb6, 0x7f, 0x7f, 0x7c, 0x78, 0x7d, 0x7f, 0x12, 0xad, + 0xb6, 0x70, 0x7f, 0x90, + 0x74, 0x95, 0xf0, 0xff, 0xa5, 0x74, 0x7a, 0x90, 0xf0, 0xb6, 0xf0, 0xa3, + 0x7a, 0x90, 0x74, 0xf3, + 0xf0, 0x0a, 0xf0, 0xa3, 0x7b, 0x90, 0x74, 0x4b, 0xf0, 0x2f, 0x7b, 0x90, + 0x74, 0x58, 0xf0, 0x27, + 0xc2, 0x22, 0xe8, 0xd5, 0xe7, 0x30, 0xb2, 0x0f, 0xe4, 0xd5, 0x9b, 0xc3, + 0xe4, 0xfb, 0xfa, 0x9a, + 0x99, 0xe4, 0xe4, 0xf9, 0xf8, 0x98, 0x30, 0xec, 0x17, 0xe7, 0xd5, 0xb2, + 0x69, 0x12, 0x12, 0x11, + 0x61, 0x26, 0xc3, 0xe4, 0xfb, 0x9b, 0x9a, 0xe4, 0xe4, 0xfa, 0xf9, 0x99, + 0x98, 0xe4, 0x80, 0xf8, + 0x12, 0x03, 0x61, 0x26, 0xd5, 0x30, 0xe4, 0x0d, 0x9f, 0xc3, 0xe4, 0xff, + 0xfe, 0x9e, 0x9d, 0xe4, + 0xe4, 0xfd, 0xfc, 0x9c, 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, + 0xc0, 0x82, 0x75, 0xd0, + 0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, + 0x05, 0xc0, 0x06, 0xc0, + 0x07, 0xc0, 0x7c, 0x90, 0x12, 0xac, 0xe7, 0x25, 0x26, 0x12, 0xd0, 0x1f, + 0xd0, 0x07, 0xd0, 0x06, + 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, + 0xd0, 0xd0, 0xd0, 0x82, + 0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, + 0x82, 0xc0, 0xd0, 0xc0, + 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, + 0xc0, 0x04, 0xc0, 0x05, + 0xc0, 0x06, 0x90, 0x07, 0xaf, 0x7c, 0x25, 0x12, 0x12, 0xe7, 0x1f, 0x26, + 0x07, 0xd0, 0x06, 0xd0, + 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, + 0xd0, 0xd0, 0x82, 0xd0, + 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, 0x7f, 0x32, 0x7e, 0x17, 0x12, 0x93, + 0xf0, 0x6e, 0x6a, 0x12, + 0x90, 0x54, 0x14, 0x7c, 0x6a, 0x12, 0x50, 0x22, 0x90, 0x1a, 0x14, 0x7c, + 0x6a, 0x12, 0xa8, 0x49, + 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf0, 0xf9, + 0x90, 0xee, 0x50, 0x7c, + 0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, 0x50, 0x7c, 0xa3, 0xf0, 0x12, 0xf0, + 0x4c, 0x6a, 0x90, 0xff, + 0x96, 0x7d, 0x8f, 0xee, 0x02, 0xf0, 0x8c, 0x24, 0x7f, 0x90, 0xe0, 0xf8, + 0xe0, 0xa3, 0x7e, 0x90, + 0xf0, 0xe9, 0x90, 0xd3, 0xf9, 0x7f, 0x94, 0xe0, 0x90, 0x02, 0xf8, 0x7f, + 0x94, 0xe0, 0x50, 0x00, + 0x90, 0x19, 0xe9, 0x7e, 0xff, 0xe0, 0x01, 0x74, 0x00, 0x7e, 0x07, 0xa8, + 0x80, 0x08, 0xc3, 0x05, + 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0x07, 0x54, 0x07, 0x70, 0x6f, 0x12, + 0x74, 0x47, 0xf0, 0xfd, + 0x12, 0x22, 0x49, 0x72, 0x6f, 0x12, 0x22, 0x38, 0x54, 0xc4, 0xff, 0x0f, + 0x00, 0x7e, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0x50, 0x7c, 0xe0, 0xfd, 0x0f, 0x54, 0xd3, 0xf0, + 0x94, 0xed, 0xe4, 0x04, + 0x00, 0x94, 0xf4, 0x22, 0xee, 0xff, 0xfe, 0xf4, 0xa3, 0xf0, 0xf0, 0xef, + 0x05, 0x7d, 0xa3, 0x22, + 0xff, 0xe0, 0x7c, 0x90, 0xe0, 0x50, 0xa3, 0xfe, 0x22, 0xe0, 0x7c, 0x90, + 0xee, 0x50, 0xa3, 0xf0, + 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x50, 0x12, 0x22, 0x48, 0x62, 0x25, 0x12, + 0x12, 0x7e, 0x66, 0x62, + 0x7c, 0x90, 0x74, 0xab, 0xf0, 0x01, 0x7c, 0x90, 0x12, 0xa4, 0x72, 0x25, + 0x7c, 0x90, 0x12, 0xa0, + 0x8e, 0x25, 0x24, 0x12, 0x12, 0xd3, 0x66, 0x62, 0x62, 0x12, 0x12, 0x25, + 0x48, 0x62, 0x25, 0x12, + 0x12, 0x9a, 0xb8, 0x24, 0x62, 0x12, 0x90, 0x66, 0xab, 0x7c, 0x04, 0xe0, + 0xe0, 0xf0, 0x03, 0xb4, + 0x22, 0xd5, 0x27, 0x27, 0x1d, 0x21, 0x19, 0x1b, 0x16, 0x17, 0x14, 0x15, + 0x12, 0x13, 0x10, 0x11, + 0x0f, 0x10, 0x0e, 0x0f, 0x0d, 0x0e, 0x0c, 0x0d, 0x0b, 0x0c, 0x0b, 0x0b, + 0x0a, 0x0a, 0x09, 0x0a, + 0x09, 0x09, 0x08, 0x09, 0x08, 0x08, 0x07, 0x08, 0x07, 0x07, 0x06, 0x07, + 0x06, 0x06, 0x06, 0x06, + 0x05, 0x05, 0x05, 0x05, 0x04, 0x05, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04, + 0xf0, 0xee, 0xef, 0xa3, + 0xc3, 0xf0, 0x64, 0xee, 0x94, 0x80, 0x22, 0x80, 0x7c, 0x90, 0xe0, 0x4d, + 0x78, 0x94, 0x7c, 0x90, + 0xe0, 0x4c, 0x00, 0x94, 0xe0, 0x22, 0xa3, 0xfc, 0xfd, 0xe0, 0xae, 0xff, + 0x02, 0x04, 0x7a, 0x24, + 0x75, 0xe4, 0x01, 0xf0, 0x24, 0x02, 0xc3, 0x8c, 0x9f, 0xe4, 0xe4, 0xff, + 0x22, 0x9e, 0x7c, 0x90, + 0x02, 0x44, 0x8e, 0x25, 0x15, 0x7d, 0x09, 0x7f, 0x6b, 0x12, 0x7d, 0x3e, + 0x7f, 0x16, 0x12, 0x06, + 0x3e, 0x6b, 0x17, 0x7d, 0x19, 0x12, 0x12, 0x15, 0x57, 0x6f, 0x18, 0x7d, + 0x85, 0x7c, 0x10, 0x74, + 0xfe, 0xff, 0x6f, 0x12, 0x7f, 0x57, 0x12, 0x01, 0x7a, 0x18, 0x6f, 0x12, + 0x90, 0x57, 0x37, 0x7e, + 0x03, 0x74, 0x22, 0xf0, 0x85, 0x7c, 0x00, 0x7e, 0x6f, 0x12, 0x22, 0x57, + 0x7e, 0x90, 0xe0, 0x97, + 0xe0, 0x30, 0x90, 0x0b, 0x09, 0x7c, 0x80, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, + 0x07, 0x80, 0x90, 0xe4, + 0x09, 0x7c, 0xa3, 0xf0, 0x90, 0xf0, 0x90, 0x7e, 0x70, 0xe0, 0xa3, 0x04, + 0x64, 0xe0, 0x70, 0x40, + 0x90, 0x09, 0x09, 0x7c, 0xc0, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7c, 0x90, + 0xe0, 0x09, 0xa3, 0xfe, + 0xff, 0xe0, 0x90, 0x22, 0x98, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0x68, 0x7b, 0x2f, 0xe0, + 0x90, 0xff, 0x67, 0x7b, 0x3e, 0xe0, 0xef, 0xfe, 0x05, 0x78, 0xc3, 0xce, + 0xce, 0x13, 0xd8, 0x13, + 0x90, 0xf9, 0x78, 0x7e, 0x18, 0x12, 0x90, 0x6a, 0x78, 0x7e, 0xfe, 0xe0, + 0xe0, 0xa3, 0x7a, 0xff, + 0x79, 0x7e, 0x7c, 0x7a, 0x7d, 0x7e, 0x02, 0x7a, 0xa1, 0x56, 0x14, 0xe5, + 0x07, 0x54, 0xe5, 0xff, + 0xae, 0x11, 0xa8, 0x10, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0xf5, 0xf9, + 0x8e, 0x11, 0xe5, 0x10, 0x13, 0x14, 0x13, 0x13, 0x1f, 0x54, 0xc3, 0xff, + 0x1a, 0x74, 0xf5, 0x9f, + 0xf8, 0x14, 0x45, 0xe6, 0xf6, 0x10, 0x14, 0x05, 0x14, 0xa8, 0x45, 0xe6, + 0xf6, 0x11, 0xd2, 0x22, + 0x30, 0x40, 0x2e, 0x00, 0xe0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, + 0xd0, 0x75, 0xc0, 0x00, + 0xaf, 0x07, 0xc3, 0x81, 0x7d, 0x90, 0xe0, 0x81, 0x90, 0x9f, 0x80, 0x7d, + 0x94, 0xe0, 0x50, 0x00, + 0xaf, 0x07, 0xe4, 0x81, 0xa3, 0xf0, 0xf0, 0xef, 0x07, 0xd0, 0xd0, 0xd0, + 0x82, 0xd0, 0x83, 0xd0, + 0xe0, 0xd0, 0xe4, 0x32, 0x7f, 0x90, 0xf0, 0x74, 0xf0, 0xa3, 0x13, 0x30, + 0x90, 0x07, 0x74, 0x7f, + 0x80, 0x74, 0x16, 0x80, 0x7f, 0x90, 0xe0, 0x95, 0x94, 0xc3, 0x40, 0x05, + 0xe0, 0x11, 0x10, 0x94, + 0x0c, 0x50, 0x11, 0x30, 0x90, 0x09, 0x74, 0x7f, 0x40, 0x74, 0xa3, 0xf0, + 0xf0, 0xe4, 0x7f, 0x90, + 0xe0, 0x74, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0x22, 0x89, 0x7c, 0xff, 0xe0, + 0x94, 0xc3, 0x40, 0x57, + 0x90, 0x07, 0x09, 0x7c, 0x80, 0x74, 0x0b, 0x80, 0xc3, 0xef, 0x06, 0x94, + 0x0b, 0x40, 0x7c, 0x90, + 0x74, 0x09, 0xf0, 0x40, 0xe4, 0xa3, 0x80, 0xf0, 0xe4, 0x07, 0x7c, 0x90, + 0xf0, 0x09, 0xf0, 0xa3, + 0x7c, 0x90, 0xe0, 0x09, 0xa3, 0xfe, 0xff, 0xe0, 0xa3, 0x22, 0xe4, 0xf0, + 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0xa2, 0x22, 0x92, 0xaf, 0xc2, 0xd1, 0x7c, 0xaf, 0x7d, 0x30, + 0x7f, 0x00, 0x7e, 0x01, + 0x22, 0x00, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, 0x14, 0xa3, 0x22, 0xf0, + 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x7d, 0x22, 0x7f, 0x00, 0x7e, 0x02, 0x22, 0x00, 0x68, 0x12, + 0x90, 0x97, 0xeb, 0x7e, + 0x90, 0xe0, 0x6f, 0x7f, 0x90, 0xf0, 0xed, 0x7e, 0x90, 0xe0, 0x71, 0x7f, + 0x6f, 0x12, 0x60, 0x4f, + 0x90, 0x08, 0x71, 0x7f, 0x10, 0x74, 0x80, 0xf0, 0x90, 0x0f, 0xed, 0x7e, + 0xc3, 0xe0, 0xfe, 0x94, + 0x06, 0x40, 0x7f, 0x90, 0x74, 0x71, 0xf0, 0xfe, 0x00, 0x02, 0xc0, 0x7e, + 0xa2, 0xd0, 0x92, 0xaf, + 0xc2, 0xd1, 0x85, 0xaf, 0x27, 0x1b, 0x1a, 0x85, 0x85, 0x26, 0x25, 0x19, + 0x18, 0x85, 0xe4, 0x24, + 0x1b, 0xf5, 0x1a, 0xf5, 0x19, 0xf5, 0x18, 0xf5, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x7f, 0x90, + 0xaf, 0x7a, 0xae, 0x27, 0xad, 0x26, 0xac, 0x25, 0x02, 0x24, 0xaa, 0x25, + 0x23, 0x7f, 0x71, 0x7e, + 0x6e, 0x12, 0x90, 0xf0, 0x89, 0x7c, 0xf0, 0xef, 0xd0, 0xc0, 0xaf, 0xa2, + 0xd1, 0x92, 0xaf, 0xc2, + 0x6c, 0x12, 0x90, 0x51, 0x89, 0x7c, 0xfd, 0xe0, 0x4d, 0xef, 0x90, 0xff, + 0xf6, 0x7f, 0xf0, 0xee, + 0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x12, 0xd0, 0xad, 0x72, + 0x90, 0x22, 0xf8, 0x7f, + 0x70, 0xe0, 0xa3, 0x04, 0x64, 0xe0, 0x60, 0x02, 0x90, 0x0c, 0xf8, 0x7f, + 0x70, 0xe0, 0xa3, 0x04, + 0x64, 0xe0, 0x70, 0x40, 0x90, 0x12, 0xf8, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, + 0x7e, 0x90, 0xcf, 0x90, + 0xef, 0xf0, 0x6c, 0x12, 0x80, 0x83, 0x12, 0x03, 0x9c, 0x6c, 0x00, 0x02, + 0xc0, 0x32, 0x12, 0xd0, + 0x40, 0x6f, 0xa8, 0x53, 0x53, 0xfb, 0xef, 0xa9, 0xaa, 0x53, 0x53, 0xf7, + 0xf7, 0xab, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, 0x04, 0x7f, 0x1b, 0x12, 0x12, 0x03, 0x49, 0x72, + 0x61, 0xc2, 0x13, 0xc2, + 0x90, 0xe4, 0x95, 0x7f, 0x90, 0xf0, 0x8c, 0x7a, 0x12, 0xf0, 0x39, 0x6f, + 0x90, 0x22, 0xf8, 0x7f, + 0xa3, 0xe0, 0x90, 0xe0, 0x05, 0x7e, 0x90, 0xf0, 0xf6, 0x7f, 0xff, 0xe0, + 0xe0, 0xa3, 0x7e, 0x90, + 0xcf, 0x02, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0x74, 0xb7, 0xf0, 0x01, + 0x7f, 0x90, 0xe0, 0xf4, + 0xa3, 0xff, 0x90, 0xe0, 0x86, 0x7e, 0xf0, 0xcf, 0x12, 0xef, 0x91, 0x72, + 0x90, 0x22, 0x98, 0x7f, + 0x33, 0xe0, 0x17, 0x92, 0x7f, 0x90, 0xe0, 0x98, 0x22, 0x65, 0x04, 0x70, + 0xe0, 0xa3, 0x23, 0x65, + 0x18, 0x60, 0x7f, 0x90, 0x30, 0x98, 0x09, 0x17, 0xf5, 0xe0, 0xa3, 0x22, + 0xf5, 0xe0, 0x80, 0x23, + 0xe5, 0x07, 0xf0, 0x22, 0xe5, 0xa3, 0xf0, 0x23, 0x23, 0xd2, 0xe4, 0x22, + 0x7c, 0x90, 0xf0, 0x1f, + 0x7a, 0x90, 0x74, 0xa5, 0xf0, 0x30, 0x11, 0x30, 0x90, 0x0e, 0x33, 0x7f, + 0x90, 0xe0, 0x1f, 0x7c, + 0x90, 0xf0, 0xa5, 0x7a, 0x04, 0x74, 0x90, 0xf0, 0x1f, 0x7c, 0xff, 0xe0, + 0x00, 0x7e, 0x11, 0x7d, + 0x55, 0x7c, 0x6f, 0x02, 0xc0, 0x57, 0xc0, 0xa8, 0x75, 0xd0, 0x00, 0xd0, + 0xaf, 0x92, 0xf0, 0xc0, + 0xf0, 0x75, 0xc0, 0x05, 0x75, 0xe0, 0x4a, 0xe0, 0xe0, 0xc0, 0xe0, 0x75, + 0xc0, 0x6e, 0x32, 0xe0, + 0xf0, 0xd5, 0xd0, 0xf2, 0xd0, 0xe0, 0xd0, 0xf0, 0xd0, 0xd0, 0x22, 0xa8, + 0x04, 0xef, 0x54, 0xc4, + 0x14, 0xf0, 0xc4, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x7b, 0xd0, 0x83, + 0xd0, 0x01, 0x7e, 0x07, + 0xe5, 0x0f, 0x70, 0x82, 0x15, 0x02, 0x15, 0x83, 0xd0, 0x82, 0xf0, 0xe0, + 0xf3, 0xde, 0x07, 0xc0, + 0x01, 0xc0, 0xc0, 0x22, 0x12, 0xd0, 0xa6, 0x6c, 0x30, 0x7c, 0x6c, 0x12, + 0x12, 0xad, 0x57, 0x6f, + 0x60, 0x7c, 0x6c, 0x12, 0x12, 0xad, 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0xa8, 0x53, + 0x53, 0xdf, 0xfe, 0xa9, 0xca, 0xc2, 0x6c, 0x12, 0x22, 0x85, 0x62, 0xd2, + 0x04, 0x7f, 0x1a, 0x12, + 0x7b, 0x7a, 0x7a, 0xff, 0x79, 0x4e, 0x90, 0xd8, 0xac, 0x7c, 0x25, 0x12, + 0x7a, 0xf0, 0x79, 0x5b, + 0x90, 0x73, 0xaf, 0x7c, 0x25, 0x12, 0x43, 0xf0, 0x18, 0xa9, 0xab, 0x43, + 0x12, 0x08, 0xad, 0x72, + 0xc0, 0x22, 0x12, 0xd0, 0x8d, 0x6c, 0x6f, 0x12, 0x7d, 0x57, 0x7c, 0x00, + 0x7f, 0x60, 0x7e, 0x01, + 0x12, 0x00, 0x57, 0x6f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xa8, 0x43, + 0x43, 0x20, 0x01, 0xa9, + 0xca, 0xd2, 0x6c, 0x12, 0x22, 0x85, 0xa8, 0xc0, 0xaf, 0xc2, 0x40, 0x10, + 0xd0, 0x04, 0x80, 0xa8, + 0x75, 0xf5, 0x7d, 0xc2, 0xc1, 0x75, 0x8e, 0xa0, 0x8f, 0xc3, 0x30, 0xc5, + 0xfd, 0x40, 0x7d, 0x90, + 0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, 0xa8, 0xd0, 0xc0, 0x22, 0x12, 0xd0, + 0x40, 0x6f, 0x6f, 0x12, + 0x90, 0xb6, 0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0x12, 0xf0, 0x77, 0x6d, + 0x68, 0x12, 0x12, 0x97, + 0x39, 0x43, 0x6f, 0x12, 0xa2, 0x38, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, + 0xf0, 0xa3, 0x90, 0xe4, + 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, + 0x90, 0x22, 0xf8, 0x7f, + 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x22, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, + 0xc0, 0x22, 0xc2, 0xa8, + 0x10, 0xaf, 0x04, 0x40, 0xa8, 0xd0, 0xf5, 0x80, 0x7d, 0x90, 0xee, 0xa0, + 0xa3, 0xf0, 0xf0, 0xef, + 0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, 0xc3, 0x8c, 0xc4, 0x8d, 0xa8, 0xd0, + 0x7d, 0x22, 0x7f, 0x0f, + 0x7e, 0x05, 0x12, 0x92, 0xb8, 0x67, 0x11, 0x7d, 0x05, 0x7f, 0x93, 0x7e, + 0x67, 0x12, 0x7d, 0xb8, + 0x7f, 0x13, 0x7e, 0x05, 0x12, 0x94, 0xb8, 0x67, 0x04, 0x7f, 0x1b, 0x02, + 0xe4, 0x8c, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, 0xe4, 0x22, 0xf0, 0x75, 0x12, 0x01, 0xa2, 0x24, + 0xf0, 0x85, 0xf5, 0x82, + 0x22, 0x83, 0x74, 0xfe, 0x94, 0x7f, 0xf0, 0x00, 0xce, 0xa3, 0x22, 0xf0, + 0x62, 0x30, 0x12, 0x06, + 0xe5, 0x71, 0x04, 0x7f, 0x30, 0x22, 0x06, 0x61, 0x6d, 0x12, 0x7f, 0x77, + 0x22, 0x02, 0x60, 0x30, + 0x12, 0x06, 0xc5, 0x64, 0x01, 0x7f, 0x7f, 0x22, 0x22, 0x00, 0xc4, 0xef, + 0xf0, 0x54, 0xc4, 0x24, + 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x7b, 0xd0, 0x83, 0xd0, 0x01, 0x7e, 0x07, + 0xe0, 0x0f, 0xe0, 0xc0, + 0xde, 0xa3, 0xc0, 0xfa, 0xc0, 0x07, 0x22, 0x01, 0x17, 0x20, 0x90, 0x1a, + 0x26, 0x7b, 0x60, 0xe0, + 0x12, 0x11, 0x42, 0x51, 0x6f, 0x12, 0x90, 0x57, 0x1a, 0x7b, 0x10, 0x7d, + 0x51, 0x12, 0x12, 0x47, + 0x57, 0x6f, 0x6c, 0x12, 0x22, 0xb4, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, + 0xff, 0x07, 0xd4, 0x8f, + 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x06, + 0x7f, 0x02, 0x8f, 0x02, + 0x22, 0xdb, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, + 0xd5, 0x8d, 0xd7, 0x8a, + 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x05, 0x7f, 0x02, 0x8f, 0x01, + 0x22, 0xdb, 0xf0, 0x8f, + 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, + 0xd6, 0x8b, 0xf7, 0x30, + 0x7f, 0x04, 0x80, 0x07, 0x7f, 0x02, 0x8f, 0x03, 0x22, 0xdb, 0x7f, 0x90, + 0xe0, 0x6f, 0x90, 0xff, + 0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0x90, 0xf0, 0x71, 0x7f, 0xff, 0xe0, + 0x7f, 0x90, 0xe4, 0xf4, + 0xef, 0xf0, 0x6f, 0x12, 0x22, 0x36, 0x7a, 0x90, 0x12, 0x98, 0xb6, 0x25, + 0x00, 0x00, 0x00, 0x00, + 0x7a, 0x90, 0x12, 0x9c, 0xb6, 0x25, 0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, + 0x96, 0x7a, 0xa3, 0xf0, + 0x22, 0xf0, 0xd0, 0xc0, 0x6f, 0x12, 0x12, 0x40, 0x1d, 0x6c, 0x7f, 0x90, + 0xee, 0xf6, 0xa3, 0xf0, + 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x6f, 0x12, 0x22, 0x38, + 0x6d, 0xef, 0x02, 0x70, + 0x6c, 0xee, 0x10, 0x60, 0xef, 0x0f, 0x06, 0xaa, 0x01, 0x70, 0x14, 0x0e, + 0x82, 0xf5, 0x83, 0x8a, + 0xf0, 0xe4, 0xe8, 0x80, 0x00, 0x22, 0x0a, 0x00, 0x00, 0xf4, 0x3f, 0x00, + 0x00, 0xaf, 0xb5, 0x00, + 0xff, 0x05, 0xf5, 0xff, 0x00, 0x4a, 0x3f, 0x00, 0xff, 0x5b, 0xca, 0xff, + 0xc0, 0xe0, 0x12, 0xd0, + 0xa6, 0x6c, 0x6b, 0x12, 0x90, 0x46, 0xf6, 0x7f, 0xf0, 0xee, 0x12, 0xef, + 0x83, 0x6c, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0x22, 0xdd, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, + 0x12, 0x22, 0xd3, 0x24, + 0x7c, 0x90, 0x02, 0x0d, 0xaa, 0x25, 0x7f, 0x90, 0xe0, 0x92, 0x80, 0x64, + 0xe5, 0x22, 0xa2, 0x10, + 0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x22, 0x11, 0x1f, 0x92, + 0x18, 0xe5, 0x13, 0xc3, + 0x23, 0x45, 0x18, 0xf5, 0xe5, 0x22, 0xa2, 0x10, 0x13, 0xe7, 0x10, 0xf5, + 0x11, 0xe5, 0xf5, 0x13, + 0x22, 0x11, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0xc3, 0x23, 0x45, 0x90, 0x22, + 0x4b, 0x7b, 0x2f, 0x74, + 0x90, 0xf0, 0xf2, 0x7e, 0xa3, 0xe0, 0x25, 0xe0, 0x04, 0xe0, 0x7b, 0x90, + 0xf0, 0x58, 0x47, 0x02, + 0x7d, 0x14, 0x7c, 0x16, 0x7f, 0x71, 0x7e, 0x04, 0x12, 0x00, 0x57, 0x6f, + 0x18, 0x7d, 0x71, 0x7c, + 0x03, 0x7f, 0x00, 0x7e, 0x6f, 0x02, 0x90, 0x57, 0xf8, 0x7f, 0xff, 0xe0, + 0xe0, 0xa3, 0x7f, 0x90, + 0xcf, 0xae, 0xa3, 0xf0, 0xf0, 0xef, 0x72, 0x12, 0x12, 0x06, 0xad, 0x72, + 0x12, 0x22, 0xb6, 0x6f, + 0x7f, 0x90, 0xe4, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, 0x5e, 0x12, 0x12, 0x1f, + 0xb0, 0x71, 0x6c, 0x12, + 0x22, 0x85, 0xa9, 0x53, 0x53, 0xfb, 0xfb, 0xaa, 0xab, 0x53, 0x7f, 0xfb, + 0x12, 0x02, 0x03, 0x1b, + 0x63, 0xc2, 0x72, 0x12, 0x22, 0x93, 0xc8, 0x75, 0x75, 0x00, 0xf8, 0xcb, + 0xca, 0x75, 0x75, 0xf8, + 0xf8, 0xcd, 0xcc, 0x75, 0xe4, 0xf8, 0x24, 0xf5, 0x30, 0x22, 0xfd, 0x40, + 0x40, 0xc2, 0x54, 0xef, + 0x8e, 0xfe, 0xf5, 0xc2, 0x8c, 0xc1, 0x8d, 0xc3, 0x22, 0xc5, 0x7a, 0x90, + 0xe0, 0xbd, 0x90, 0x04, + 0x14, 0x7c, 0x60, 0xf0, 0xe0, 0x05, 0x7a, 0x90, 0xf0, 0xbd, 0x53, 0x22, + 0xe7, 0xa9, 0xab, 0x53, + 0x7f, 0xf7, 0x12, 0x04, 0x03, 0x1b, 0x62, 0xc2, 0x72, 0x12, 0x22, 0xad, + 0x67, 0x12, 0x90, 0x6b, + 0xb2, 0x7b, 0xb4, 0xe0, 0x05, 0x01, 0xf0, 0xe4, 0x6b, 0x12, 0x22, 0x7d, + 0x00, 0x12, 0x12, 0x7a, + 0x5b, 0x71, 0x72, 0x12, 0x12, 0x54, 0xbc, 0x61, 0x5c, 0x02, 0xc2, 0x8f, + 0xef, 0x40, 0xfe, 0x54, + 0xc2, 0x8e, 0xc1, 0xf5, 0xc3, 0x8c, 0xc4, 0x8d, 0x90, 0x22, 0xbd, 0x7a, + 0x90, 0xe0, 0xbe, 0x7a, + 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xbd, 0x90, 0x22, 0x66, 0x7f, 0x1f, 0x74, + 0x74, 0xf0, 0x12, 0x7f, + 0x36, 0x6f, 0x60, 0x22, 0x80, 0xc0, 0x02, 0x80, 0x00, 0x02, 0x6c, 0x01, + 0x52, 0x6c, 0xe4, 0xa3, + 0x7f, 0x90, 0xf0, 0x66, 0xf0, 0xa3, 0x6f, 0x12, 0x22, 0x39, 0x06, 0x7d, + 0x90, 0x7c, 0x02, 0x7f, + 0x00, 0x7e, 0x6f, 0x02, 0x8a, 0x57, 0x89, 0x83, 0xec, 0x82, 0xa3, 0xf0, + 0xf0, 0xed, 0x8a, 0x22, + 0x89, 0x83, 0xec, 0x82, 0xa3, 0xf0, 0xf0, 0xed, 0x8e, 0x22, 0x8f, 0x82, + 0xa3, 0x83, 0x82, 0xae, + 0x83, 0xaf, 0x1c, 0x22, 0x00, 0x12, 0x4f, 0x00, 0x00, 0xe0, 0x3b, 0x00, + 0x12, 0x9d, 0x93, 0x72, + 0x63, 0xd2, 0x02, 0x7f, 0x1a, 0x02, 0xa3, 0x7a, 0xe4, 0xf0, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, + 0x74, 0x22, 0x90, 0xff, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7f, 0x74, + 0xa3, 0xf0, 0xff, 0x74, + 0xe4, 0xf0, 0xe4, 0x22, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x12, 0x22, + 0xa7, 0x6d, 0x72, 0x12, + 0x22, 0x93, 0x48, 0x12, 0xc2, 0x50, 0x22, 0x58, 0x6f, 0x12, 0x22, 0x38, + 0x6f, 0x12, 0x22, 0x38, + 0x72, 0x12, 0x22, 0xad, 0x72, 0x12, 0x22, 0xad, 0x72, 0x12, 0x22, 0xad, + 0x72, 0x12, 0x22, 0xad, + 0x72, 0x12, 0x22, 0x93, 0x72, 0x12, 0x22, 0x93, 0x00, 0x02, 0x02, 0x42, + 0x42, 0x00, 0x6f, 0x02, + 0x00, 0x13, 0x00, 0x83, 0x1f, 0xfe, 0x00, 0x02, 0x00, 0x01, 0xe8, 0x03, + 0x10, 0x00, 0x08, 0x00, + 0x80, 0x00, 0x03, 0x94, 0x00, 0xd9, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00 }; #endif /* __DRXJ_MC_MAIN_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsb.h b/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsb.h index 9c24d3ee62cb..20f3fe6a4102 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsb.h +++ b/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsb.h @@ -44,701 +44,1396 @@ #define DRXJ_MC_VSB ((pu8_t) drxj_mc_vsb_g) const u8_t drxj_mc_vsb_g[] = { -0x48, 0x4c, 0x00, 0x03, 0x00, 0x00, 0x2b, 0x62, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x82, -0x00, 0x00, 0x15, 0x9e, 0x00, 0x01, 0x92, 0x3b, 0x2a, 0x02, 0xe4, 0xf8, 0x7f, 0x90, 0xf0, 0xf8, -0xf0, 0xa3, 0x02, 0x22, 0xa6, 0x15, 0x23, 0x7f, 0x71, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x19, 0x7b, -0xf0, 0xef, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x28, 0x12, 0x90, 0xb6, 0x19, 0x7b, -0xfd, 0xe0, 0x4d, 0xef, 0x90, 0xff, 0xf6, 0x7f, 0xf0, 0xee, 0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, -0xd0, 0xaf, 0xe4, 0xd0, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xe4, 0x22, 0x7f, 0x90, 0xf0, 0xf8, -0xf0, 0xa3, 0x02, 0x22, 0x70, 0x09, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28, 0x7a, 0x90, -0xe0, 0xfa, 0xa3, 0xfe, 0xff, 0xe0, 0x30, 0x7d, 0x94, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0xfc, 0x7a, -0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x31, 0x12, 0x94, 0xa5, 0x29, 0x7b, 0x90, 0xe0, 0x01, -0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x2e, 0x12, 0x94, 0xa5, 0x29, 0x7b, 0x90, 0xe0, 0x02, 0x7e, 0xff, -0x7d, 0x00, 0x7c, 0x22, 0x12, 0x94, 0xa5, 0x29, 0x7b, 0x90, 0xe0, 0x03, 0x7e, 0xff, 0x7d, 0x00, -0x7c, 0x23, 0x02, 0x94, 0xa5, 0x29, 0x62, 0x30, 0x12, 0x06, 0xb5, 0x2a, 0x04, 0x7f, 0x7f, 0x22, -0x22, 0x00, 0x02, 0x00, 0x41, 0x28, 0x40, 0x30, 0xc2, 0xfd, 0x8e, 0x40, 0x8f, 0xd3, 0xed, 0xd2, -0xff, 0x24, 0xec, 0xff, 0xff, 0x34, 0xda, 0xf5, 0xd9, 0x8f, 0x02, 0x22, 0x82, 0x28, 0x7d, 0x90, -0xe0, 0x3b, 0xf0, 0x54, 0x03, 0x70, 0x80, 0xd3, 0xc3, 0x01, 0x92, 0xb3, 0x90, 0x05, 0x3a, 0x7d, -0xa3, 0xe0, 0xe4, 0xa2, 0x92, 0xb3, 0xe0, 0x02, 0x0f, 0x54, 0x03, 0x70, 0x80, 0xd3, 0xc3, 0x01, -0x92, 0xb3, 0x90, 0x06, 0x91, 0x7d, 0x30, 0xe0, 0x03, 0xe1, 0x02, 0x02, 0x90, 0x65, 0x5a, 0x7d, -0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x30, 0x31, 0x2e, 0x02, 0x7d, 0x90, 0xe0, 0x78, 0xa3, 0xfe, -0xff, 0xe0, 0x90, 0xc3, 0x75, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x74, 0x50, 0x9e, 0x90, 0x19, -0x65, 0x7d, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x7f, 0x74, 0x03, 0xf0, 0xff, 0x5b, 0x20, 0xd2, 0x09, -0xe4, 0x5b, 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x4a, 0x02, 0x70, 0xe0, 0xa3, -0x03, 0x70, 0x02, 0x20, 0x90, 0x17, 0x4a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x3c, -0x5a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x20, 0x32, 0x2f, 0x02, 0x7d, 0x90, 0xe0, 0x6c, -0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xd3, 0x6b, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x6a, 0x40, 0x9e, -0x90, 0x1a, 0x57, 0x7d, 0xd3, 0xe0, 0x80, 0x64, 0x7f, 0x94, 0x03, 0x40, 0xff, 0x74, 0x20, 0xf0, -0x09, 0x07, 0x07, 0xd2, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0x7f, 0xf0, 0x7e, 0x22, 0x12, 0x67, -0x61, 0x29, 0x14, 0x8e, 0x15, 0x8f, 0x27, 0x7f, 0x67, 0x7e, 0x29, 0x12, 0x8e, 0x61, 0x8f, 0x16, -0x90, 0x17, 0x5e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, -0xff, 0xf9, 0xe5, 0xd3, 0x9f, 0x17, 0x16, 0xe5, 0x40, 0x9e, 0x20, 0x54, 0x0c, 0x02, 0x7d, 0x90, -0xe0, 0x57, 0x80, 0x64, 0x81, 0x94, 0x10, 0x50, 0x0b, 0x80, 0x7d, 0x90, 0xe0, 0x65, 0x64, 0xc3, -0x94, 0x80, 0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x5b, 0x20, 0xd2, 0x34, 0xe4, 0x5b, 0x7d, 0x90, -0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0x6b, 0x7d, -0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, 0x30, 0xe0, 0x0f, 0xe0, -0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, -0x4e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xff, 0xf9, -0xe5, 0xd3, 0x9f, 0x15, 0x14, 0xe5, 0x40, 0x9e, 0x90, 0x44, 0x57, 0x7d, 0x64, 0xe0, 0x94, 0x80, -0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x07, 0x20, 0xd2, 0x34, 0xe4, 0x07, 0x7d, 0x90, 0xf0, 0x52, -0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0x6b, 0x7d, 0x9f, 0xe0, -0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, 0x30, 0xe0, 0x0f, 0xe0, 0x7d, 0x90, -0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x34, 0x7d, -0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x60, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, -0x05, 0x1d, 0xe5, 0x1d, 0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x60, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, -0x1d, 0xe5, 0x30, 0xf0, 0x2f, 0x5b, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, -0x9f, 0xf8, 0x74, 0xff, 0x9e, 0x2a, 0xd3, 0xfe, 0x7d, 0x90, 0xe0, 0x7b, 0x90, 0x9f, 0x7a, 0x7d, -0x9e, 0xe0, 0x07, 0x50, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x0a, 0x2e, 0x7d, 0xf5, 0xe0, -0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, 0x16, 0x95, 0x03, 0x40, -0x80, 0xd3, 0xc3, 0x01, 0x04, 0x92, 0x7d, 0x90, 0xe0, 0x50, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, -0x7d, 0x90, 0xe0, 0x52, 0x1c, 0xf5, 0xe0, 0xa3, 0x1d, 0xf5, 0x1d, 0x05, 0x1d, 0xe5, 0x02, 0x70, -0x1c, 0x05, 0x7d, 0x90, 0xe5, 0x52, 0xf0, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0x07, 0x30, 0x90, 0x0a, -0x82, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x20, 0x17, 0x11, 0x04, 0xe5, 0xc3, 0x95, 0x1d, -0xe5, 0x17, 0x95, 0x1c, 0x40, 0x16, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x03, 0x03, 0x04, -0x03, 0x02, 0xc0, 0xfc, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x7d, 0x90, 0xf0, 0xa4, -0xf0, 0xa3, 0x7d, 0x7e, 0xa4, 0x7f, 0x01, 0x7d, 0x12, 0xfc, 0xae, 0x00, 0x27, 0x7b, 0x00, 0x7a, -0x07, 0x7d, 0x06, 0x7f, 0x2a, 0x12, 0x30, 0x38, 0xfd, 0x40, 0x7d, 0x90, 0xe0, 0xa4, 0xa3, 0xff, -0x90, 0xe0, 0x5a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0xe4, 0xd0, -0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x5b, 0xc2, 0x7d, 0x90, 0xe0, 0x63, 0x18, 0xf5, 0x7d, 0x90, -0xe0, 0x5a, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x7d, 0x90, 0xe0, 0x5c, 0x1a, 0xf5, 0xe0, 0xa3, -0x1b, 0xf5, 0x7d, 0x90, 0xe0, 0x5e, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0x7d, 0x90, 0xe0, 0x66, -0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, 0x7d, 0x90, 0xe0, 0x65, 0x19, 0xf5, 0x7d, 0x90, 0xe0, 0x74, -0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x1d, 0xf5, 0x7f, 0x74, 0xf5, 0x9e, 0x90, 0x1c, -0x6e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x6a, 0x7d, 0xb5, 0xe0, 0x1e, 0x06, 0xe0, 0xa3, -0x07, 0xb5, 0xd3, 0x19, 0x7d, 0x90, 0xe0, 0x4b, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x4a, 0x12, 0x95, -0x0a, 0x40, 0x58, 0x20, 0xe0, 0x07, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x90, 0xd3, 0x7b, 0x7d, -0x94, 0xe0, 0x90, 0xfe, 0x7a, 0x7d, 0x94, 0xe0, 0x40, 0x77, 0xd3, 0x0d, 0x13, 0xe5, 0x17, 0x95, -0x12, 0xe5, 0x16, 0x95, 0x02, 0x40, 0x04, 0xc2, 0x02, 0x30, 0x20, 0x03, 0x02, 0x05, 0x04, 0xc2, -0x04, 0xa2, 0x5a, 0x92, 0x03, 0x20, 0x02, 0x03, 0xa7, 0x04, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, -0xaf, 0xc2, 0x90, 0xe4, 0xa4, 0x7d, 0xa3, 0xf0, 0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa4, 0xfc, 0x01, -0x00, 0x12, 0x7b, 0xae, 0x7a, 0x22, 0x7d, 0x00, 0x7f, 0x07, 0x12, 0x06, 0x38, 0x2a, 0x40, 0x30, -0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, 0x7d, 0x90, 0xcf, 0x4a, 0xa3, 0xf0, 0xf0, 0xef, -0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0xc2, 0xf0, 0x90, 0x07, -0x55, 0x7d, 0xf5, 0xe0, 0x90, 0x18, 0x4a, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0x90, 0x13, -0x4c, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x90, 0x1b, 0x4e, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, -0xf5, 0xe0, 0x90, 0x17, 0x58, 0x7d, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, 0x57, 0x7d, -0xf5, 0xe0, 0x90, 0x19, 0x6a, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, 0x20, 0x1d, 0x16, 0x02, -0x90, 0xd3, 0x5b, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x5a, 0x7d, 0x95, 0xe0, 0x40, 0x12, 0xe0, 0x07, -0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x06, 0x20, 0xc2, 0x02, 0xa2, 0x03, 0x92, 0x03, 0x20, 0x59, -0x0b, 0x05, 0x02, 0x20, 0xc2, 0x08, 0xc2, 0x03, 0xc2, 0x04, 0xc2, 0x59, 0x20, 0x5a, 0x06, 0x04, -0x03, 0x20, 0x02, 0x03, 0x8b, 0x06, 0xe5, 0xc3, 0x95, 0x13, 0xe5, 0x1b, 0x95, 0x12, 0x50, 0x1a, -0xe5, 0x57, 0x64, 0x19, 0x94, 0x80, 0x50, 0x80, 0x15, 0x4a, 0xc3, 0x19, 0x18, 0xe5, 0x80, 0x64, -0xe5, 0xf8, 0x64, 0x19, 0x98, 0x80, 0x0e, 0x50, 0x15, 0xe5, 0xe0, 0x25, 0x15, 0xf5, 0x14, 0xe5, -0xf5, 0x33, 0x75, 0x14, 0xff, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe5, 0xff, -0xc4, 0x14, 0xf0, 0x54, 0xfe, 0x48, 0xe5, 0xc3, 0x9f, 0x1d, 0x11, 0xf5, 0x1c, 0xe5, 0xf5, 0x9e, -0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, 0x6d, 0x80, 0x10, 0x85, 0x85, 0x1c, 0x1d, 0x11, -0x05, 0x02, 0x75, 0xa6, 0xff, 0x19, 0x6c, 0x80, 0x74, 0xc3, 0x95, 0x01, 0xa2, 0x18, 0x13, 0xe7, -0x18, 0xf5, 0xe5, 0xd3, 0x95, 0x13, 0xe5, 0x17, 0x95, 0x12, 0x40, 0x16, 0xe5, 0x5f, 0x64, 0x19, -0x94, 0x80, 0x40, 0x80, 0x05, 0x4c, 0xd3, 0x19, 0x18, 0xe5, 0x80, 0x64, 0xe5, 0xf8, 0x64, 0x19, -0x98, 0x80, 0x0e, 0x40, 0x15, 0xe5, 0xe0, 0x25, 0x15, 0xf5, 0x14, 0xe5, 0xf5, 0x33, 0x75, 0x14, -0x01, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe5, 0xff, 0xc4, 0x14, 0xf0, 0x54, -0xfe, 0x48, 0x1d, 0xe5, 0xf5, 0x2f, 0xe5, 0x11, 0x3e, 0x1c, 0x10, 0xf5, 0xe5, 0xd3, 0x94, 0x11, -0xe5, 0xff, 0x94, 0x10, 0x40, 0x7f, 0x80, 0x02, 0x85, 0x0b, 0x1c, 0x10, 0x11, 0x85, 0x80, 0x1d, -0x75, 0x1d, 0x01, 0x19, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x12, 0x80, 0xf5, 0xe4, 0xf5, 0x19, -0x75, 0x14, 0x01, 0x15, 0x03, 0x30, 0xc2, 0x02, 0x30, 0x59, 0x02, 0x04, 0x5a, 0xc2, 0x03, 0x30, -0x90, 0x72, 0x6e, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x6c, 0x7d, 0xf5, 0xe0, -0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, 0x16, 0x95, 0x0e, 0x50, -0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x59, 0xc2, 0xe5, 0xd3, -0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, 0x1c, 0x10, 0x11, 0x85, 0x75, 0x1d, -0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x59, 0x57, 0x7d, 0x19, 0xe5, 0x90, 0xf0, 0x58, 0x7d, -0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x6a, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0xe5, -0x20, 0xf0, 0x0f, 0x02, 0x7d, 0x90, 0xe0, 0x78, 0xa3, 0xff, 0x90, 0xe0, 0x74, 0x7d, 0xf0, 0xcf, -0xef, 0xa3, 0x30, 0xf0, 0x6d, 0x04, 0x7d, 0x90, 0xe0, 0x78, 0x10, 0xf5, 0xe0, 0xa3, 0x11, 0xf5, -0x7d, 0x90, 0xe0, 0x76, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0x74, 0xc3, 0x95, 0xff, 0xf5, 0x1d, -0x74, 0x1d, 0x95, 0x7f, 0xf5, 0x1c, 0xc3, 0x1c, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, 0x16, 0x95, -0x0e, 0x50, 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x5a, 0xc2, -0xe5, 0xd3, 0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, 0x1c, 0x10, 0x11, 0x85, -0x75, 0x1d, 0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x5a, 0x65, 0x7d, 0x19, 0xe5, 0x90, 0xf0, -0x66, 0x7d, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x74, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, -0x1d, 0xe5, 0x90, 0xf0, 0x30, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, 0x05, 0x1d, 0xe5, 0x1d, -0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x30, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0xe5, 0x90, 0xf0, -0x44, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x45, 0x1b, 0x70, 0x1a, 0x02, 0x03, 0x33, 0x09, -0x59, 0x20, 0x30, 0x03, 0x0d, 0x5a, 0x7d, 0x90, 0xe0, 0x48, 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, -0x08, 0x02, 0xd3, 0xff, 0x7d, 0x90, 0xe0, 0x33, 0x1d, 0x95, 0x7d, 0x90, 0xe0, 0x32, 0x1c, 0x95, -0x03, 0x40, 0x09, 0x02, 0x90, 0x6f, 0x40, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, -0x42, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x7d, 0x90, 0xe0, 0x3f, 0x13, 0x95, -0x12, 0xe5, 0x80, 0x64, 0x90, 0xf8, 0x3e, 0x7d, 0x64, 0xe0, 0x98, 0x80, 0x24, 0x40, 0x11, 0xe5, -0x13, 0xb5, 0xe5, 0x1f, 0xb5, 0x10, 0x1a, 0x12, 0x1b, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, -0xe5, 0xff, 0xc4, 0x1a, 0xf0, 0x54, 0xfe, 0x48, 0x25, 0xef, 0xf5, 0x13, 0xee, 0x13, 0x12, 0x35, -0x12, 0xf5, 0xe5, 0xc3, 0x95, 0x13, 0xff, 0x11, 0x12, 0xe5, 0x10, 0x95, 0xf8, 0xc4, 0xf0, 0x54, -0x68, 0xc8, 0x1c, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, 0x90, 0x1d, 0x84, 0x7d, 0xf5, 0xe0, -0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x86, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, -0x11, 0x95, 0xe5, 0xff, 0x95, 0x12, 0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, 0xf5, 0x68, 0xef, 0x14, -0x54, 0xc4, 0x48, 0x0f, 0x15, 0xf5, 0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, 0x40, 0x1c, 0x85, 0x06, -0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, 0x92, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, -0x94, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x11, 0x95, 0xe5, 0xff, 0x95, 0x12, -0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, 0xf5, 0x68, 0xef, 0x14, 0x54, 0xc4, 0x48, 0x0f, 0x15, 0xf5, -0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, 0x40, 0x1c, 0x85, 0x06, 0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, -0x3a, 0x7d, 0x54, 0xe0, 0xf5, 0x0f, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, 0x48, 0x7d, 0xf5, 0xe0, -0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x46, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, -0x1d, 0xe5, 0x1b, 0x95, 0x1c, 0xe5, 0x1a, 0x95, 0x03, 0x40, 0x08, 0x02, 0xe5, 0x6c, 0x54, 0x12, -0xf5, 0x0f, 0x75, 0x10, 0x00, 0x11, 0x14, 0xe5, 0x0f, 0x54, 0xe4, 0xfe, 0x11, 0x95, 0x95, 0xee, -0x40, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, 0xff, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x0e, 0x80, -0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x10, 0x75, -0xe5, 0x00, 0x54, 0x13, 0xf5, 0xf0, 0xe5, 0x11, 0x54, 0x15, 0xd3, 0xf0, 0x11, 0x95, 0x95, 0xe4, -0x40, 0x10, 0x74, 0x0e, 0x25, 0xf0, 0xf5, 0x15, 0x74, 0x15, 0x35, 0xff, 0xf5, 0x14, 0x80, 0x14, -0xe5, 0x10, 0x54, 0x15, 0xff, 0x0f, 0x10, 0xe5, 0x14, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, -0x75, 0x15, 0x00, 0x10, 0x13, 0xe5, 0x0f, 0x54, 0x11, 0xf5, 0x15, 0xe5, 0x0f, 0x54, 0x95, 0xd3, -0xe4, 0x11, 0x10, 0x95, 0x03, 0x50, 0x08, 0x02, 0xe5, 0xef, 0x15, 0x15, 0x70, 0x15, 0x15, 0x02, -0x02, 0x14, 0xff, 0x08, 0x16, 0xe5, 0x0f, 0x54, 0x10, 0xf5, 0x11, 0x75, 0xe5, 0x00, 0x54, 0x14, -0xfe, 0x0f, 0xe4, 0xc3, 0x11, 0x95, 0x95, 0xee, 0x50, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, -0x01, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x0e, 0x80, 0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, -0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, 0xf5, 0xf0, 0xe5, 0x11, -0x54, 0x15, 0xc3, 0xf0, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, 0x74, 0x0d, 0x25, 0x10, 0xf5, 0x15, -0xe4, 0x15, 0x14, 0x35, 0x14, 0xf5, 0x10, 0x80, 0x15, 0xe5, 0x0f, 0x54, 0xe5, 0xff, 0x45, 0x10, -0xf5, 0x14, 0xe5, 0x14, 0x4f, 0x11, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, 0xf5, 0x0f, -0xe5, 0x11, 0x54, 0x15, 0xc3, 0x0f, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, 0x05, 0x0a, 0xe5, 0x15, -0x70, 0x15, 0x05, 0x02, 0x80, 0x14, 0xe5, 0x10, 0x54, 0x15, 0xff, 0xf0, 0x10, 0xe5, 0x14, 0x45, -0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, 0x90, 0x15, 0x3a, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, -0x54, 0x17, 0x70, 0xf0, 0x53, 0x03, 0x0f, 0x15, 0x16, 0xe5, 0x0f, 0x54, 0x03, 0x70, 0x14, 0x53, -0xe5, 0xf0, 0x54, 0x17, 0x70, 0x0f, 0x53, 0x03, 0xf0, 0x15, 0x16, 0xe5, 0xf0, 0x54, 0x14, 0x45, -0xe5, 0xff, 0x90, 0x15, 0x3a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x30, -0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, 0xe4, 0xa3, 0x90, 0xf0, 0x40, 0x7d, 0x7f, 0x74, -0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x86, 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x84, -0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0x94, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x92, 0x7d, -0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, -0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, -0xc0, 0x05, 0xc0, 0x06, 0x7f, 0x07, 0x7e, 0x07, 0x12, 0x71, 0x61, 0x29, 0x7a, 0x90, 0xef, 0xc0, -0xf4, 0xf0, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x05, 0x12, 0x71, 0xa5, 0x29, 0x7a, 0x90, 0xe0, 0xc0, -0x70, 0xff, 0x02, 0x03, 0x40, 0x0e, 0x20, 0xef, 0x03, 0xe4, 0x0c, 0x02, 0x7f, 0x58, 0x7e, 0x23, -0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xef, 0x19, 0x90, 0xf0, 0xd4, 0x7f, 0x75, 0xe4, 0x01, 0xf0, -0x18, 0x12, 0xc3, 0x7d, 0x7f, 0x90, 0xe0, 0xd5, 0x39, 0x94, 0x7f, 0x90, 0xe0, 0xd4, 0x01, 0x94, -0x0d, 0x40, 0xf0, 0xe4, 0xf0, 0xa3, 0x7f, 0x90, 0x75, 0xd2, 0x01, 0xf0, 0x18, 0x12, 0x7f, 0x7d, -0x7e, 0x74, 0x12, 0x71, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xd6, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, -0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x80, 0xfe, 0x90, 0x08, -0xd6, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xd6, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, -0x7e, 0x75, 0x12, 0x71, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xd8, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, -0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x80, 0xfe, 0x90, 0x08, -0xd8, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xd8, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, -0xd8, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, 0x18, 0x12, 0xaa, 0x6b, 0xab, 0x06, -0x90, 0x07, 0xd6, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, 0x18, 0x12, 0xef, 0x6b, -0xff, 0x2b, 0x3a, 0xee, 0x7a, 0x90, 0xf0, 0xda, 0xef, 0xa3, 0x90, 0xf0, 0xc1, 0x7a, 0x19, 0x12, -0x90, 0x6f, 0xc5, 0x7a, 0x19, 0x12, 0x7f, 0xa7, 0x7e, 0x12, 0x12, 0x62, 0x61, 0x29, 0xfc, 0xe4, -0x90, 0xfd, 0xc1, 0x7a, 0x19, 0x12, 0x90, 0xa7, 0xc5, 0x7a, 0x19, 0x12, 0xab, 0x6f, 0xaa, 0x07, -0xa9, 0x06, 0xa8, 0x05, 0x90, 0x04, 0xc1, 0x7a, 0x19, 0x12, 0x12, 0x6f, 0xb6, 0x18, 0x7a, 0x90, -0x12, 0xd2, 0xa7, 0x19, 0x00, 0x7f, 0x80, 0x7e, 0xff, 0x7d, 0xff, 0x7c, 0x7a, 0x90, 0x12, 0xd2, -0x8b, 0x19, 0x12, 0xc3, 0x21, 0x19, 0x14, 0x50, 0x7a, 0x90, 0x12, 0xd2, 0x6f, 0x19, 0x2f, 0xe4, -0xe4, 0xff, 0xfe, 0x3e, 0x34, 0xed, 0xfd, 0x01, 0x3c, 0xe4, 0x29, 0x80, 0x7f, 0xe4, 0x7e, 0xff, -0xfd, 0x7f, 0x90, 0xfc, 0xd2, 0x7a, 0x19, 0x12, 0xd3, 0x8b, 0x19, 0x12, 0x40, 0x21, 0x90, 0x1d, -0xd2, 0x7a, 0x19, 0x12, 0xc3, 0x6f, 0x94, 0xef, 0xff, 0x00, 0x94, 0xee, 0xfe, 0x00, 0x94, 0xed, -0xfd, 0x01, 0x94, 0xec, 0xfc, 0x00, 0x7a, 0x90, 0x12, 0xd2, 0xa7, 0x19, 0x7f, 0xe4, 0xfe, 0x0f, -0xfc, 0xfd, 0x7a, 0x90, 0x12, 0xc9, 0x8b, 0x19, 0x18, 0x12, 0xe4, 0xc4, 0x10, 0x7b, 0xf9, 0xfa, -0x12, 0xf8, 0xbc, 0x27, 0x7a, 0x90, 0x12, 0xd2, 0x8b, 0x19, 0x18, 0x12, 0x90, 0xa9, 0xc9, 0x7a, -0x19, 0x12, 0x90, 0xa7, 0xcf, 0x7a, 0xf9, 0xe0, 0x03, 0x54, 0x68, 0x70, 0x7a, 0x90, 0x12, 0xc9, -0x6f, 0x19, 0x07, 0x78, 0x19, 0x12, 0x90, 0x48, 0xd0, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0xc3, 0xf0, -0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0x90, 0x15, 0xd0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, -0x9f, 0xe4, 0xe4, 0xff, 0x90, 0x9e, 0xd0, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xd0, -0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0xce, 0x7a, 0x9f, 0xe0, 0x7a, 0x90, 0xe0, 0xcd, 0x50, 0x9e, -0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0xe9, 0x80, 0x94, 0x18, 0x40, 0x7a, 0x90, 0xe0, 0xcd, -0xa3, 0xff, 0x90, 0xe0, 0xdc, 0x7a, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xcd, 0x7a, 0xf0, 0xe4, -0xf0, 0xa3, 0xf0, 0xa3, 0x7a, 0x90, 0xe0, 0xcf, 0xf0, 0x04, 0x7b, 0x90, 0xe0, 0x19, 0x17, 0x64, -0x4c, 0x70, 0x6c, 0x7d, 0x71, 0x7c, 0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x16, 0x7f, 0x71, -0x7e, 0x04, 0x12, 0x00, 0xa5, 0x29, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x29, 0x12, -0x7d, 0xa5, 0x7c, 0x57, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x90, 0xc3, 0xdb, 0x7a, -0x94, 0xe0, 0x90, 0x78, 0xda, 0x7a, 0x94, 0xe0, 0x40, 0x00, 0x7d, 0x75, 0x7c, 0x3d, 0x7f, 0x71, -0x7e, 0x50, 0x12, 0x00, 0xa5, 0x29, 0x70, 0x7d, 0x71, 0x7c, 0x08, 0x7f, 0x5d, 0x80, 0x7b, 0x90, -0xe0, 0x19, 0x74, 0xff, 0xc3, 0x17, 0x50, 0x9f, 0xef, 0x57, 0x57, 0x94, 0x52, 0x50, 0x7a, 0x90, -0xe0, 0xdd, 0x64, 0x94, 0x7a, 0x90, 0xe0, 0xdc, 0x00, 0x94, 0x0f, 0x40, 0x90, 0xd3, 0xdb, 0x7a, -0x94, 0xe0, 0x90, 0x78, 0xda, 0x7a, 0x94, 0xe0, 0x50, 0x00, 0x7d, 0x35, 0x7c, 0x16, 0x7f, 0x71, -0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x29, 0x12, -0x7d, 0xa5, 0x7c, 0x70, 0xe4, 0x71, 0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x57, 0xe4, 0x71, -0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x6c, 0x7f, 0x71, 0x7e, 0x5a, 0x12, 0x00, 0xa5, 0x29, -0x7a, 0x90, 0xe0, 0xc0, 0xe0, 0x20, 0x02, 0x03, 0xc6, 0x0d, 0x7f, 0x90, 0xe4, 0xd2, 0xf0, 0x75, -0x12, 0x01, 0x7d, 0x18, 0x7f, 0x90, 0xe4, 0xd4, 0xa3, 0xf0, 0x7f, 0xf0, 0x7e, 0x29, 0x12, 0x71, -0x61, 0x29, 0x7b, 0x90, 0xee, 0x1a, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xc3, 0xee, 0xff, 0x3f, 0x94, -0x73, 0x40, 0x7b, 0x90, 0xe0, 0x1c, 0x0a, 0x94, 0x63, 0x40, 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0xe4, -0x12, 0xfe, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, -0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x02, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0x0c, 0x7f, -0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x08, 0x12, 0x00, 0xa5, 0x29, -0x1d, 0x7d, 0x71, 0x7c, 0x30, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, -0x7e, 0x20, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0xa5, 0x29, -0x1b, 0x7d, 0x71, 0x7c, 0xff, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x80, 0xa5, 0x90, 0x08, 0x1c, 0x7b, -0x04, 0xe0, 0x80, 0xf0, 0x90, 0x05, 0x1c, 0x7b, 0xf0, 0xe4, 0x7f, 0x90, 0xe0, 0xaf, 0xe1, 0x20, -0x7f, 0x3c, 0x7e, 0x45, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x0f, 0xa3, 0xf0, 0xf0, 0xef, -0x46, 0x7f, 0x71, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x11, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, -0x7e, 0x47, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x13, 0xa3, 0xf0, 0xf0, 0xef, 0x48, 0x7f, -0x71, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x15, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x12, 0x04, -0xe5, 0x17, 0x7b, 0x90, 0xe0, 0x19, 0x94, 0xc3, 0x7d, 0x57, 0x7c, 0x22, 0x40, 0x71, 0x7f, 0x48, -0x7e, 0xd0, 0x12, 0x00, 0xa5, 0x29, 0x00, 0x7d, 0x92, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x29, 0x12, -0x7d, 0xa5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x1f, 0x12, 0x00, 0xa5, 0x29, 0x6d, 0x7d, 0x71, 0x7c, -0xff, 0x7f, 0x7f, 0x7e, 0x29, 0x12, 0x90, 0xa5, 0x1d, 0x7b, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, -0xcf, 0x1f, 0xa3, 0xf0, 0xf0, 0xef, 0x6f, 0x7f, 0x71, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x1d, 0x7b, -0xf0, 0xee, 0xef, 0xa3, 0x80, 0xf0, 0x7f, 0x27, 0x7e, 0xd2, 0x12, 0x00, 0xa5, 0x29, 0x2c, 0x7d, -0x94, 0x7c, 0x0f, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x00, 0xe4, 0x92, 0xfe, 0xff, -0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x6d, 0x7f, 0x71, 0x7e, 0xad, 0x12, 0x01, 0xa5, 0x29, 0x7a, 0x90, -0xe0, 0xc0, 0xe2, 0x30, 0x7f, 0x73, 0x7e, 0x23, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xef, 0x19, -0x7f, 0xf0, 0x7e, 0x29, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x1a, 0xa3, 0xf0, 0xf0, 0xef, -0x22, 0x7d, 0x71, 0x7c, 0xd2, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x00, 0xe4, 0x92, -0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x0f, 0x12, 0x00, 0xa5, 0x29, -0x6d, 0x7d, 0x71, 0x7c, 0xad, 0x7f, 0x01, 0x7e, 0x29, 0x12, 0x90, 0xa5, 0xd2, 0x7f, 0xf0, 0xe4, -0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xd4, 0xf0, 0xa3, 0x57, 0x7d, 0x71, 0x7c, 0x01, 0x7f, 0x12, 0xfe, -0xa5, 0x29, 0x16, 0x7d, 0x71, 0x7c, 0x04, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x18, -0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xa5, 0x29, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, -0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, -0xe0, 0xd0, 0xe4, 0x32, 0x23, 0xf5, 0x7d, 0x90, 0xe0, 0x68, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, -0x90, 0xc3, 0x43, 0x7d, 0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, 0x7d, 0x90, 0xe0, 0x42, -0x80, 0x64, 0x50, 0x98, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xd3, 0x41, 0x7d, -0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, 0x7d, 0x90, 0xe0, 0x40, 0x80, 0x64, 0x40, 0x98, -0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x7d, 0x90, 0xe0, 0x6a, 0x1a, 0xf5, 0xe0, 0xa3, -0x1b, 0xf5, 0x95, 0xc3, 0xf5, 0x13, 0xe5, 0x11, 0x95, 0x1a, 0xf5, 0x12, 0xc3, 0x10, 0x80, 0x64, -0x80, 0x94, 0x14, 0x50, 0xff, 0x74, 0x12, 0xf5, 0x13, 0xf5, 0xe5, 0xc3, 0x64, 0x10, 0x94, 0x80, -0x50, 0x60, 0x75, 0x1d, 0xe0, 0x10, 0x15, 0x80, 0xf5, 0xe4, 0xf5, 0x12, 0xd3, 0x13, 0x11, 0xe5, -0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xa0, 0x94, 0x06, 0x40, 0x10, 0x75, 0x75, 0x20, 0x00, 0x11, -0x02, 0x20, 0x02, 0x03, 0x42, 0x10, 0x58, 0x30, 0x02, 0x03, 0x42, 0x10, 0x7d, 0x90, 0xe0, 0x3a, -0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x70, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, -0x0f, 0x02, 0x74, 0xed, 0x25, 0x08, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, 0x00, 0x94, 0x25, 0x40, -0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, 0x92, 0x10, 0xe5, 0x18, 0x25, 0x13, -0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x13, 0xf5, 0x3e, -0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, 0x7d, 0x90, 0xe0, 0x3d, -0xe4, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, 0xf5, 0x13, 0x92, 0x13, -0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, 0x26, 0xe5, -0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1e, 0x92, 0x12, 0xe5, -0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0x13, -0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x73, 0x7d, 0x25, 0xe0, 0xf5, 0x18, -0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, 0x12, 0xf5, 0xd2, 0xa2, -0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x71, 0x7d, 0x25, 0xe0, 0xf5, 0x13, 0x90, 0x13, 0x70, 0x7d, -0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x30, 0x18, 0x09, 0x18, 0x12, 0x75, 0x75, 0x7f, -0xff, 0x13, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x07, 0x50, 0xf5, 0xe4, -0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x73, 0x7d, 0x18, 0xe5, 0x90, 0xf0, 0x70, 0x7d, 0x12, 0xe5, -0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x74, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0xc3, 0x1b, -0x13, 0xe5, 0x1b, 0x95, 0x11, 0xf5, 0x12, 0xe5, 0x1a, 0x95, 0x10, 0xf5, 0x12, 0x85, 0x85, 0x14, -0x15, 0x13, 0x64, 0xc3, 0x94, 0x80, 0x50, 0x80, 0x74, 0x14, 0xf5, 0xff, 0xf5, 0x12, 0xc3, 0x13, -0x10, 0xe5, 0x80, 0x64, 0x60, 0x94, 0x1d, 0x50, 0x10, 0x75, 0x80, 0xe0, 0xe4, 0x15, 0x12, 0xf5, -0x13, 0xf5, 0xe5, 0xd3, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, 0x94, 0x80, 0x40, 0xa0, 0x75, 0x06, -0x20, 0x10, 0x11, 0x75, 0xe4, 0x00, 0x23, 0xf5, 0x1c, 0x80, 0x02, 0x20, 0x90, 0x05, 0x78, 0x7d, -0x03, 0x80, 0x7d, 0x90, 0xe0, 0x74, 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, 0x7d, 0x90, 0xe5, 0x70, -0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0x90, 0xc3, 0x87, 0x7d, 0x95, 0xe0, 0x90, 0x15, 0x86, 0x7d, -0x95, 0xe0, 0x50, 0x14, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0x90, 0xd3, 0x85, 0x7d, -0x95, 0xe0, 0x90, 0x15, 0x84, 0x7d, 0x95, 0xe0, 0x40, 0x14, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, -0xf0, 0x15, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, 0xf5, 0x15, 0x74, 0x15, -0x35, 0x08, 0xf5, 0x14, 0xa2, 0x14, 0x92, 0xd2, 0x30, 0x18, 0xfd, 0x40, 0x7d, 0x90, 0x30, 0xa0, -0x09, 0x18, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x80, 0xf0, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, -0xf0, 0x15, 0x7d, 0x90, 0xe0, 0x3a, 0x30, 0xa3, 0x17, 0xe5, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, -0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x7d, 0x90, 0xf0, 0xa1, 0x87, 0x74, 0x90, 0x9e, 0xa0, 0x7d, -0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa0, 0x7c, 0x28, 0x12, 0x67, 0xea, 0x2a, 0xd1, 0xa2, 0xaf, 0x92, -0xd0, 0xd0, 0x7d, 0x90, 0xe0, 0x3b, 0xe4, 0xff, 0xf8, 0xc4, 0xf0, 0x54, 0xef, 0xc8, 0x54, 0xc4, -0x48, 0x0f, 0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x7a, 0x12, 0xf5, 0xe0, 0xa3, -0x13, 0xf5, 0x12, 0x02, 0x74, 0x0c, 0x25, 0x07, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, 0x00, 0x94, -0x25, 0x40, 0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, 0x92, 0x10, 0xe5, 0x18, -0x25, 0x13, 0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x13, -0xf5, 0x3e, 0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, 0x7d, 0x90, -0xe0, 0x3d, 0xe2, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, 0xf5, 0x13, -0x92, 0x13, 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, -0x26, 0xe3, 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1e, 0x92, -0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1f, 0x92, 0x18, 0xe5, -0x13, 0x13, 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0xc2, 0x23, 0x90, 0x19, 0x7d, 0x7d, -0x25, 0xe0, 0xf5, 0x18, 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, -0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x7b, 0x7d, 0x25, 0xe0, 0xf5, 0x13, -0x90, 0x13, 0x7a, 0x7d, 0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x20, 0x18, 0x17, 0x18, -0x7d, 0x90, 0xe0, 0x2c, 0xa3, 0xfe, 0xff, 0xe0, 0xe5, 0xd3, 0x9f, 0x13, 0x64, 0xee, 0xf8, 0x80, -0x12, 0xe5, 0x80, 0x64, 0x40, 0x98, 0x90, 0x0d, 0x2c, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, -0x75, 0x13, 0xff, 0x18, 0xe5, 0xc3, 0x64, 0x12, 0x94, 0x80, 0x50, 0x80, 0xe4, 0x07, 0x12, 0xf5, -0x13, 0xf5, 0x18, 0xf5, 0x7d, 0x90, 0xe5, 0x7d, 0xf0, 0x18, 0x7d, 0x90, 0xe5, 0x7a, 0xf0, 0x12, -0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xc3, 0x95, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x94, 0x7d, 0x95, 0xe0, -0x50, 0x12, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xd3, 0x93, 0x7d, 0x95, 0xe0, -0x90, 0x13, 0x92, 0x7d, 0x95, 0xe0, 0x40, 0x12, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, -0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, 0xf5, 0x13, 0x74, 0x13, 0x35, 0x08, -0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x20, 0x18, 0x14, 0x18, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, -0x25, 0xe0, 0xf5, 0x13, 0xee, 0x13, 0x12, 0x35, 0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x40, 0x30, -0x90, 0xfd, 0xa0, 0x7d, 0x18, 0x30, 0x74, 0x09, 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x07, 0x80, -0x12, 0xe5, 0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x3a, 0x7d, 0xa3, 0xe0, 0xe6, 0x30, 0x90, 0x17, -0xa0, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xff, 0x74, 0x90, 0x9f, 0xa1, 0x7d, 0x74, 0xf0, -0x9e, 0x87, 0x7d, 0x90, 0xf0, 0xa0, 0x7d, 0x7e, 0xa0, 0x7f, 0x29, 0x7d, 0x67, 0x7c, 0x2a, 0x12, -0xa2, 0xea, 0x92, 0xd1, 0xd0, 0xaf, 0xc2, 0xd0, 0x22, 0x18, 0xf5, 0xe4, 0xd2, 0x2c, 0xc2, 0x40, -0x7b, 0x00, 0x7a, 0xff, 0x79, 0x25, 0x90, 0xc1, 0x31, 0x7b, 0x19, 0x12, 0x7b, 0xed, 0x7a, 0x00, -0x79, 0x00, 0x90, 0x00, 0x34, 0x7b, 0x19, 0x12, 0x90, 0xed, 0x37, 0x7b, 0x19, 0x12, 0x90, 0xed, -0x3a, 0x7b, 0x19, 0x12, 0x90, 0xed, 0x3d, 0x7b, 0x19, 0x12, 0x74, 0xed, 0x90, 0xff, 0xfa, 0x7f, -0xa3, 0xf0, 0x90, 0xf0, 0x80, 0x7d, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0xff, 0xb8, 0x75, 0x75, 0x38, -0x01, 0xf8, 0xa8, 0x75, 0xe4, 0x82, 0xa9, 0xf5, 0xaa, 0xf5, 0xab, 0xf5, 0xff, 0x7b, 0x2b, 0x7a, -0x23, 0x79, 0x7b, 0x90, 0x12, 0x5a, 0xed, 0x19, 0x7b, 0x90, 0x12, 0x5d, 0xed, 0x19, 0xd1, 0xd2, -0x00, 0x00, 0x90, 0x00, 0xfa, 0x7f, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x02, 0x03, 0x9b, 0x15, -0x7f, 0x90, 0xe0, 0xfa, 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x02, 0x60, 0xf4, 0x02, 0x03, 0x7c, 0x15, -0xf4, 0xe0, 0x03, 0x70, 0x15, 0x02, 0x90, 0x74, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0xfe, 0x90, 0x23, -0xf8, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, 0xfe, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7f, 0x90, 0xcf, 0xf6, -0xa3, 0xf0, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0xfc, 0xa3, 0xff, 0x90, 0xe0, 0xf4, 0x7f, 0x02, 0xcf, -0x39, 0x15, 0x7f, 0x90, 0xe0, 0xfb, 0xfd, 0x64, 0x2a, 0x70, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, -0xaf, 0xc2, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x7f, 0x7e, 0xf6, 0x7f, 0x12, 0x7d, 0x11, 0x7c, -0x2a, 0x12, 0x7e, 0xca, 0x7f, 0x7f, 0x7d, 0xf4, 0x7c, 0x13, 0x12, 0x11, 0xca, 0x2a, 0x40, 0x30, -0x02, 0xfd, 0x5b, 0x14, 0x7f, 0x90, 0xe0, 0xfb, 0xc0, 0x64, 0x03, 0x60, 0x14, 0x02, 0xc0, 0x64, -0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xf8, 0x7f, 0xa3, 0xe0, 0x54, 0xe0, 0x90, 0x7f, -0x57, 0x7b, 0xe0, 0xf0, 0xd3, 0xff, 0x1c, 0x94, 0x0d, 0x40, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, -0x74, 0xa3, 0xf0, 0xfc, 0x14, 0x02, 0x90, 0x5b, 0xf9, 0x7f, 0x30, 0xe0, 0x25, 0xe7, 0x7f, 0x7c, -0xf6, 0x7d, 0x74, 0xc3, 0x9f, 0xf6, 0x74, 0xfe, 0x94, 0x7f, 0x90, 0x00, 0x53, 0x7b, 0xa3, 0xf0, -0xf0, 0xce, 0x7f, 0x90, 0xe0, 0xf6, 0xa3, 0xff, 0x90, 0xe0, 0x55, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, -0x80, 0xf0, 0x90, 0x26, 0xf6, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x53, 0xa3, 0xf0, -0xf0, 0xef, 0xf6, 0x7f, 0x7b, 0x90, 0xe0, 0x57, 0xc3, 0xfd, 0xf6, 0x74, 0xfe, 0x9d, 0x7f, 0x74, -0x00, 0x94, 0x7b, 0x90, 0xf0, 0x55, 0xce, 0xa3, 0x90, 0xf0, 0x57, 0x7b, 0xd3, 0xe0, 0x00, 0x94, -0x2a, 0x40, 0x7b, 0x90, 0xe4, 0x53, 0xf0, 0x75, 0x12, 0x01, 0x93, 0x18, 0xf0, 0x85, 0xf5, 0x82, -0xe0, 0x83, 0x90, 0xff, 0x55, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x18, 0x12, 0x85, 0x93, 0x82, 0xf0, -0x83, 0xf5, 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x57, 0xf0, 0x14, 0xcd, 0x80, 0x90, 0xe4, 0xf8, 0x7f, -0xa3, 0xf0, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x02, 0xd0, 0x94, 0x15, 0x7f, 0x90, 0xe0, 0xfb, -0x80, 0x64, 0x5b, 0x70, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xa8, 0xaf, 0x7f, 0x90, 0xf0, 0xf6, -0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xa9, 0xf4, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xaa, -0xf2, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xab, 0xf0, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, -0xaf, 0xf0, 0x90, 0xb8, 0xee, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xf8, 0xec, 0x7f, -0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xd0, 0xea, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xa2, 0xf0, -0xe4, 0x40, 0x33, 0xff, 0x7f, 0x90, 0xcf, 0xe8, 0xa3, 0xf0, 0xf0, 0xef, 0x15, 0x02, 0x90, 0x94, -0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x88, 0x90, 0x49, 0xf6, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xa8, -0xf4, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xa9, 0xf2, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xaa, -0xf0, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xab, 0xee, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xb8, -0xec, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xf8, 0xea, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xd0, -0xe8, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0x24, 0x4f, 0x92, 0xff, 0xe4, 0x40, 0x5c, 0x80, -0x7f, 0x90, 0xe0, 0xfb, 0x89, 0x64, 0x06, 0x70, 0x29, 0x12, 0xe4, 0x3a, 0x4e, 0x80, 0x7f, 0x90, -0xe0, 0xfb, 0x82, 0x64, 0x11, 0x70, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x81, 0xaf, 0x7f, 0x90, -0xf0, 0xf6, 0xef, 0xa3, 0x80, 0xf0, 0x90, 0x55, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x83, 0x90, 0x10, -0x80, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0xf8, 0x7f, 0xa3, 0xf0, 0xd2, 0xf0, 0x80, 0x00, 0x90, 0x3d, -0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x84, 0x90, 0x13, 0x80, 0x7d, 0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, -0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x00, 0xc2, 0x22, 0x80, 0xff, 0x74, 0x7f, 0x90, 0xf0, 0xf8, -0xf0, 0xa3, 0x18, 0x80, 0x7b, 0x90, 0x12, 0x31, 0xe4, 0x19, 0x4a, 0xe9, 0x05, 0x60, 0x1a, 0x12, -0x80, 0x1c, 0x90, 0x09, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x14, 0x90, 0xe4, 0xfa, 0x7f, -0xa3, 0xf0, 0x12, 0xf0, 0xff, 0x15, 0x13, 0x02, 0xc2, 0x1b, 0x80, 0xaf, 0x32, 0xfe, 0xe0, 0xc0, -0xd0, 0xe5, 0x18, 0x54, 0x08, 0x64, 0x03, 0x70, 0xe0, 0xd0, 0xd0, 0x32, 0x12, 0xe0, 0xa5, 0x15, -0xd0, 0x85, 0x75, 0x0b, 0x08, 0xd0, 0xe0, 0xaa, 0x8c, 0xc2, 0x8a, 0xe5, 0xf7, 0x24, 0x8a, 0xf5, -0x8c, 0xe5, 0xd8, 0x34, 0x8c, 0xf5, 0x8c, 0xd2, 0x24, 0xec, 0xf8, 0x38, 0xbc, 0xe6, 0x02, 0x04, -0x7f, 0x74, 0x95, 0xc3, 0xb4, 0x81, 0x00, 0x01, 0xbf, 0x40, 0x05, 0x79, 0x2d, 0x78, 0xe6, 0x16, -0x70, 0x08, 0xc2, 0x0b, 0xe6, 0xaf, 0xe1, 0x30, 0x44, 0x03, 0xf6, 0x18, 0xaf, 0xd2, 0xd9, 0x08, -0xea, 0xed, 0xd0, 0x8b, 0x08, 0xd2, 0xe5, 0x22, 0xff, 0x0c, 0x24, 0x23, 0xf8, 0x2e, 0x08, 0x0f, -0xef, 0x08, 0x0c, 0xb5, 0x10, 0x06, 0x03, 0x08, 0x87, 0x43, 0xbf, 0x01, 0x04, 0x05, 0x00, 0x7f, -0x2e, 0x78, 0x30, 0xe6, 0xe8, 0xe4, 0xe5, 0x00, 0xc3, 0x0c, 0x50, 0x9f, 0x05, 0x20, 0x74, 0x0c, -0x25, 0x37, 0xf8, 0x0c, 0xfd, 0xe6, 0x81, 0xa6, 0xe6, 0x08, 0x0c, 0xae, 0x04, 0xbe, 0x74, 0x02, -0xcd, 0x7f, 0xe8, 0xf8, 0x60, 0x6d, 0x08, 0xe0, 0xc0, 0xe6, 0x80, 0xe0, 0xe5, 0xf6, 0xd3, 0x0c, -0x40, 0x9f, 0xe5, 0x27, 0x24, 0x0c, 0xf8, 0x38, 0xae, 0xe6, 0xbe, 0x0c, 0x02, 0x04, 0x7f, 0x74, -0x18, 0xfd, 0xcd, 0xe6, 0xe5, 0xf8, 0x6d, 0x81, 0x06, 0x60, 0xe0, 0xd0, 0x18, 0xf6, 0xf5, 0x80, -0x0c, 0xe5, 0x37, 0x24, 0xf6, 0xc8, 0x0c, 0x15, 0xd3, 0x80, 0x0c, 0xe5, 0x24, 0x23, 0xf8, 0x2e, -0x04, 0x7f, 0xaf, 0xc2, 0x30, 0xe6, 0x03, 0xe0, 0xe2, 0x10, 0x7f, 0x0c, 0x30, 0x00, 0x07, 0xe1, -0xe3, 0x30, 0x7f, 0x04, 0x54, 0x08, 0x54, 0xf4, 0xc6, 0x7c, 0xaf, 0xd2, 0x80, 0x54, 0x07, 0x42, -0x78, 0x22, 0xa6, 0x37, 0x74, 0x81, 0x60, 0x04, 0xff, 0x06, 0x76, 0x08, 0xdf, 0x7f, 0x7f, 0xfb, -0xe4, 0x05, 0x2d, 0x78, 0x08, 0xf6, 0x08, 0xf6, 0xfa, 0xdf, 0x2e, 0x78, 0x30, 0x76, 0x2b, 0x90, -0x74, 0x19, 0x93, 0x01, 0xe0, 0xc0, 0x93, 0xe4, 0xe0, 0xc0, 0x89, 0x43, 0x75, 0x01, 0xf0, 0x8a, -0x8c, 0x75, 0xd2, 0xd8, 0xd2, 0x8c, 0xd2, 0xaf, 0x22, 0xa9, 0xef, 0x04, 0x94, 0xd3, 0x40, 0x04, -0x7f, 0x03, 0x22, 0xff, 0x2e, 0x74, 0x2f, 0x2f, 0xe6, 0xf8, 0xe5, 0x20, 0xc2, 0xf4, 0xe6, 0xaf, -0x30, 0x44, 0xd2, 0xf6, 0xae, 0xaf, 0xee, 0x0c, 0x9f, 0xc3, 0x21, 0x50, 0x74, 0x0e, 0x2e, 0x37, -0xe6, 0xf8, 0x08, 0xf9, 0x18, 0xe6, 0x04, 0xbe, 0x74, 0x02, 0xfd, 0x7f, 0x69, 0xed, 0x09, 0x60, -0xe7, 0x09, 0x19, 0x19, 0x09, 0xf7, 0x80, 0x09, 0x16, 0xf3, 0x80, 0x16, 0xee, 0xda, 0x9f, 0xd3, -0x04, 0x40, 0x81, 0x05, 0x81, 0x05, 0xd3, 0xee, 0x40, 0x9f, 0x74, 0x22, 0x2e, 0x37, 0x08, 0xf8, -0xf9, 0xe6, 0xb5, 0xee, 0x02, 0x0c, 0x81, 0xa9, 0x06, 0x18, 0xe6, 0x06, 0xed, 0xfd, 0x60, 0x69, -0x19, 0x09, 0xe7, 0x19, 0x09, 0x09, 0x19, 0xf7, 0xf3, 0x80, 0x80, 0x1e, 0xef, 0xd9, 0x37, 0x24, -0xe6, 0xf8, 0xf8, 0x04, 0x2f, 0xef, 0x90, 0x04, 0x19, 0x2b, 0xf6, 0x93, 0xef, 0x08, 0x93, 0x2f, -0x7f, 0xf6, 0x22, 0x00, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, 0xef, 0x22, 0x24, 0x23, -0xf8, 0x2e, 0x30, 0xe6, 0xf4, 0xe5, 0xaf, 0xc2, 0x54, 0xe6, 0xf6, 0x8c, 0xaf, 0xd2, 0x0c, 0xe5, -0x07, 0xb5, 0x74, 0x0a, 0x2f, 0x37, 0xe6, 0xf8, 0x81, 0xf5, 0x15, 0x02, 0x50, 0xff, 0x74, 0x2e, -0x2f, 0x38, 0xe6, 0xf8, 0x04, 0xbf, 0x74, 0x02, 0xfd, 0x7f, 0xe6, 0x18, 0x74, 0xf9, 0x2f, 0x37, -0xfb, 0xf8, 0xfc, 0xe6, 0x6c, 0xe9, 0x08, 0x60, 0x05, 0xa8, 0xf6, 0xe7, 0x19, 0x1d, 0xf4, 0x80, -0x03, 0xa8, 0x05, 0xa6, 0xe5, 0x1f, 0xb5, 0x0c, 0xe3, 0x07, 0x00, 0x7f, 0x74, 0x22, 0x2f, 0x38, -0xe6, 0xf8, 0x18, 0xfd, 0x01, 0x86, 0x74, 0x0f, 0x2f, 0x37, 0xa6, 0xf8, 0x08, 0x01, 0x04, 0x86, -0x0c, 0xe5, 0x07, 0xb5, 0xac, 0x02, 0xed, 0x81, 0x60, 0x6c, 0x0d, 0x08, 0xa8, 0x09, 0xe6, 0x05, -0x80, 0xf7, 0xe5, 0xf4, 0xb5, 0x0c, 0xde, 0x07, 0x81, 0x89, 0x00, 0x7f, 0xef, 0x22, 0x94, 0xd3, -0x40, 0x04, 0x7f, 0x03, 0x22, 0xff, 0x23, 0xef, 0x2e, 0x24, 0xc2, 0xf8, 0xe6, 0xaf, 0xe5, 0x30, -0x30, 0x05, 0x02, 0xe0, 0xe4, 0xd2, 0xe2, 0xd2, 0xd2, 0xc6, 0x7f, 0xaf, 0x30, 0x00, 0x01, 0xe2, -0x02, 0x0f, 0xfc, 0x15, 0xf0, 0x8f, 0xff, 0xe4, 0xe5, 0xfe, 0x23, 0x0c, 0x2d, 0x24, 0xc2, 0xf8, -0x30, 0xa9, 0x0d, 0xf7, 0x08, 0x7f, 0x60, 0xe6, 0x2d, 0x0b, 0x60, 0xf6, 0x50, 0x32, 0x80, 0x30, -0x30, 0x07, 0x06, 0xf1, 0xf6, 0xed, 0x27, 0x60, 0x02, 0x7e, 0x30, 0x08, 0x10, 0xf0, 0xaf, 0xc2, -0x10, 0xe6, 0x25, 0xe7, 0x30, 0x0e, 0x0c, 0xe2, 0xaf, 0xd2, 0x04, 0x7f, 0x14, 0x80, 0xaf, 0xc2, -0x10, 0xe6, 0x15, 0xe7, 0xec, 0x54, 0xf6, 0x4e, 0xaf, 0xd2, 0xa9, 0xd2, 0x15, 0x02, 0x7f, 0xff, -0x08, 0x08, 0x44, 0xef, 0xf4, 0x83, 0xaf, 0xc2, 0xc6, 0x56, 0xaf, 0xd2, 0xa9, 0xd2, 0x80, 0x54, -0xff, 0x4f, 0xef, 0x22, 0xf0, 0x8d, 0xa8, 0xa4, 0xcf, 0xf0, 0xf0, 0x8c, 0x28, 0xa4, 0x8d, 0xce, -0xa4, 0xf0, 0xfe, 0x2e, 0xc5, 0x22, 0xf8, 0xf0, 0xe0, 0xa3, 0xf0, 0x28, 0xf0, 0xc5, 0xe5, 0xf8, -0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, 0xf0, 0x38, 0xa3, 0x22, 0xe0, 0xf8, 0xf0, 0xc5, -0xf0, 0x25, 0xe5, 0xf0, 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, 0x38, 0xc8, 0xe8, 0xf0, -0xef, 0x22, 0xff, 0x2b, 0x3a, 0xee, 0xed, 0xfe, 0xfd, 0x39, 0x38, 0xec, 0x22, 0xfc, 0xef, 0xc3, -0xff, 0x9b, 0x9a, 0xee, 0xed, 0xfe, 0xfd, 0x99, 0x98, 0xec, 0x22, 0xfc, 0x8f, 0xe8, 0xa4, 0xf0, -0x8b, 0xcc, 0xa4, 0xf0, 0xfc, 0x2c, 0x8e, 0xe9, 0xa4, 0xf0, 0xfc, 0x2c, 0xf0, 0x8a, 0xa4, 0xed, -0xfc, 0x2c, 0x8e, 0xea, 0xa4, 0xf0, 0xa8, 0xcd, 0x8b, 0xf0, 0xa4, 0xf0, 0xcc, 0x2d, 0x25, 0x38, -0xfd, 0xf0, 0x8f, 0xe9, 0xa4, 0xf0, 0xcd, 0x2c, 0xf0, 0x35, 0xeb, 0xfc, 0xf0, 0x8e, 0xfe, 0xa4, -0xf0, 0xa9, 0x8f, 0xeb, 0xa4, 0xf0, 0xc5, 0xcf, 0x2e, 0xf0, 0x39, 0xcd, 0xe4, 0xfe, 0xfc, 0x3c, -0xa4, 0xea, 0xce, 0x2d, 0xf0, 0x35, 0xe4, 0xfd, 0xfc, 0x3c, 0xc3, 0x22, 0x9f, 0xe4, 0xe4, 0xff, -0xfe, 0x9e, 0x9d, 0xe4, 0xe4, 0xfd, 0xfc, 0x9c, 0xeb, 0x22, 0xf5, 0x9f, 0xea, 0xf0, 0x42, 0x9e, -0xe9, 0xf0, 0x42, 0x9d, 0xec, 0xf0, 0x80, 0x64, 0x64, 0xc8, 0x98, 0x80, 0xf0, 0x45, 0xeb, 0x22, -0xf5, 0x9f, 0xea, 0xf0, 0x42, 0x9e, 0xe9, 0xf0, 0x42, 0x9d, 0xe8, 0xf0, 0x45, 0x9c, 0x22, 0xf0, -0x60, 0xe8, 0xec, 0x10, 0xe7, 0xa2, 0xfc, 0x13, 0x13, 0xed, 0xee, 0xfd, 0xfe, 0x13, 0x13, 0xef, -0xd8, 0xff, 0x22, 0xf0, 0x60, 0xe8, 0xef, 0x0f, 0x33, 0xc3, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, -0xec, 0xfd, 0xfc, 0x33, 0xf1, 0xd8, 0xe0, 0x22, 0xa3, 0xfc, 0xfd, 0xe0, 0xe0, 0xa3, 0xa3, 0xfe, -0xff, 0xe0, 0xe4, 0x22, 0xfc, 0x93, 0x01, 0x74, 0xfd, 0x93, 0x02, 0x74, 0xfe, 0x93, 0x03, 0x74, -0xff, 0x93, 0xe0, 0x22, 0xa3, 0xf8, 0xf9, 0xe0, 0xe0, 0xa3, 0xa3, 0xfa, 0xfb, 0xe0, 0xe4, 0x22, -0xf8, 0x93, 0x01, 0x74, 0xf9, 0x93, 0x02, 0x74, 0xfa, 0x93, 0x03, 0x74, 0xfb, 0x93, 0xec, 0x22, -0xa3, 0xf0, 0xf0, 0xed, 0xee, 0xa3, 0xa3, 0xf0, 0xf0, 0xef, 0xa8, 0x22, 0x85, 0x82, 0xf0, 0x83, -0x83, 0xd0, 0x82, 0xd0, 0x19, 0x12, 0x12, 0xca, 0xca, 0x19, 0x19, 0x12, 0x12, 0xca, 0xca, 0x19, -0x73, 0xe4, 0x93, 0xe4, 0xc5, 0xa3, 0xc5, 0x83, 0xc5, 0xf0, 0xc8, 0x83, 0x82, 0xc5, 0xf0, 0xc8, -0xc5, 0xa3, 0xc5, 0x83, 0xc5, 0xf0, 0xc8, 0x83, 0x82, 0xc5, 0x22, 0xc8, 0xfb, 0xe0, 0xe0, 0xa3, -0xa3, 0xfa, 0xf9, 0xe0, 0xeb, 0x22, 0xa3, 0xf0, 0xf0, 0xea, 0xe9, 0xa3, 0x22, 0xf0, 0x83, 0xd0, -0x82, 0xd0, 0xe4, 0xf8, 0x70, 0x93, 0x74, 0x12, 0x93, 0x01, 0x0d, 0x70, 0xa3, 0xa3, 0xf8, 0x93, -0x01, 0x74, 0xf5, 0x93, 0x88, 0x82, 0xe4, 0x83, 0x74, 0x73, 0x93, 0x02, 0x60, 0x68, 0xa3, 0xef, -0xa3, 0xa3, 0xdf, 0x80, 0x83, 0x8a, 0x82, 0x89, 0x73, 0xe4, 0xf0, 0x75, 0x75, 0x08, 0x00, 0x82, -0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xcd, 0xcc, 0xcd, 0xcc, 0x33, 0x82, 0xc5, 0xc5, 0x33, -0x9b, 0x82, 0x9a, 0xed, 0x99, 0xec, 0x82, 0xe5, 0x40, 0x98, 0xf5, 0x0c, 0xee, 0x82, 0xfe, 0x9b, -0x9a, 0xed, 0xec, 0xfd, 0xfc, 0x99, 0xd5, 0x0f, 0xd6, 0xf0, 0xce, 0xe4, 0xe4, 0xfb, 0xfa, 0xcd, -0xcc, 0xe4, 0xa8, 0xf9, 0x22, 0x82, 0x00, 0xb8, 0xb9, 0xc1, 0x59, 0x00, 0x00, 0xba, 0xec, 0x2d, -0xf0, 0x8b, 0xcf, 0x84, 0xcd, 0xce, 0xe5, 0xfc, 0xcb, 0xf0, 0x78, 0xf9, 0xef, 0x18, 0xff, 0x2f, -0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xeb, 0xfc, 0xfb, 0x33, 0xd7, 0x10, 0x99, 0x03, -0x04, 0x40, 0x99, 0xeb, 0x0f, 0xfb, 0xe5, 0xd8, 0xf9, 0xe4, 0x22, 0xfa, 0x18, 0x78, 0x2f, 0xef, -0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, 0xec, 0xfd, 0xfc, 0x33, 0x33, 0xc9, 0x10, 0xc9, 0x05, 0xd7, -0xe9, 0x9b, 0x40, 0x9a, 0xec, 0x07, 0xfc, 0x9b, 0x9a, 0xe9, 0x0f, 0xf9, 0xe0, 0xd8, 0xc9, 0xe4, -0xe4, 0xfa, 0xfb, 0xcc, 0x75, 0x22, 0x10, 0xf0, 0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, -0xcc, 0xfd, 0xcc, 0x33, 0x33, 0xc8, 0x10, 0xc8, 0x07, 0xd7, 0xec, 0x9b, 0xe8, 0x9a, 0x40, 0x99, -0xed, 0x0a, 0xfd, 0x9b, 0x9a, 0xec, 0xe8, 0xfc, 0xf8, 0x99, 0xd5, 0x0f, 0xda, 0xf0, 0xcd, 0xe4, -0xe4, 0xfb, 0xfa, 0xcc, 0xc8, 0xe4, 0x22, 0xf9, 0x7b, 0x90, 0xee, 0x21, 0xa3, 0xf0, 0xf0, 0xef, -0x7b, 0x90, 0xe0, 0x0d, 0x55, 0x64, 0x04, 0x70, 0xe0, 0xa3, 0xaa, 0x64, 0x16, 0x60, 0x7b, 0x90, -0x74, 0x0d, 0xf0, 0x55, 0x74, 0xa3, 0xf0, 0xaa, 0x7b, 0x90, 0x74, 0x0c, 0xf0, 0xae, 0x7b, 0x90, -0x74, 0x0a, 0xf0, 0x3c, 0x3b, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x2d, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x2f, 0xa3, 0xf0, -0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x21, 0xa3, 0xfa, 0xfb, 0xe0, 0x01, 0x64, 0x70, 0x4a, 0x90, 0x13, -0x2d, 0x7b, 0x19, 0x12, 0xef, 0x6f, 0x68, 0x24, 0xee, 0xff, 0x14, 0x34, 0xed, 0xfe, 0xa5, 0x34, -0x27, 0x80, 0x64, 0xeb, 0x4a, 0x02, 0x7b, 0x90, 0x70, 0x2d, 0x12, 0x10, 0x6f, 0x19, 0x24, 0xef, -0xff, 0x18, 0x34, 0xee, 0xfe, 0x2a, 0x34, 0xed, 0x80, 0x7d, 0x12, 0x0e, 0x6f, 0x19, 0x24, 0xef, -0xff, 0x68, 0x34, 0xee, 0xfe, 0x14, 0x34, 0xed, 0xfd, 0xa5, 0x34, 0xec, 0xfc, 0xff, 0x7b, 0x90, -0x12, 0x25, 0xa7, 0x19, 0x7b, 0x90, 0x12, 0x2d, 0x6f, 0x19, 0x7b, 0x90, 0x12, 0x04, 0xa7, 0x19, -0x7b, 0x90, 0xe0, 0x0a, 0xf0, 0x14, 0xd3, 0xe0, 0x3c, 0x94, 0x03, 0x40, 0x3c, 0x74, 0x90, 0xf0, -0x0a, 0x7b, 0x60, 0xe0, 0x02, 0x03, 0x67, 0x1d, 0x3c, 0x74, 0xe4, 0xf0, 0xfe, 0xff, 0xfc, 0xfd, -0x7b, 0x90, 0x12, 0x25, 0x8b, 0x19, 0x12, 0xd3, 0x21, 0x19, 0x08, 0x40, 0x7b, 0x90, 0x12, 0x25, -0x6f, 0x19, 0x09, 0x80, 0x7b, 0x90, 0x12, 0x25, 0x6f, 0x19, 0x19, 0x12, 0x90, 0x13, 0x2d, 0x7b, -0x19, 0x12, 0xe4, 0xa7, 0xfe, 0xff, 0x01, 0x7d, 0x90, 0xfc, 0x2d, 0x7b, 0x19, 0x12, 0xd3, 0x8b, -0x19, 0x12, 0x40, 0x37, 0xe4, 0x09, 0x7b, 0x90, 0xf0, 0x23, 0xf0, 0xa3, 0x0f, 0x80, 0x7b, 0x90, -0xe0, 0x2f, 0xa3, 0xff, 0x90, 0xe0, 0x23, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x0c, 0x7b, -0x60, 0xe0, 0x24, 0x20, 0x70, 0xef, 0xc3, 0x33, 0x7b, 0x90, 0xe0, 0x24, 0xf4, 0x94, 0x7b, 0x90, -0xe0, 0x23, 0x01, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0xe0, 0x0b, 0xf0, 0x14, 0x70, 0xe0, 0xa3, 0x4c, -0x80, 0xf0, 0xd3, 0x48, 0x7b, 0x90, 0xe0, 0x24, 0xf4, 0x94, 0x7b, 0x90, 0xe0, 0x23, 0x01, 0x94, -0x39, 0x40, 0x7b, 0x90, 0x74, 0x0c, 0xf0, 0xae, 0x31, 0x80, 0x22, 0x7d, 0x94, 0x7c, 0x06, 0x7f, -0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x2e, 0x7f, 0x94, 0x7e, 0x0a, 0x12, 0x00, 0xa5, 0x29, -0x7b, 0x90, 0x74, 0x0b, 0xf0, 0x0c, 0x90, 0xc3, 0x24, 0x7b, 0x94, 0xe0, 0x90, 0xf4, 0x23, 0x7b, -0x94, 0xe0, 0x50, 0x01, 0x90, 0x06, 0x0c, 0x7b, 0x11, 0x74, 0x90, 0xf0, 0x0b, 0x7b, 0x64, 0xe0, -0x60, 0x0c, 0x02, 0x03, 0x67, 0x1d, 0xe0, 0xa3, 0x11, 0x64, 0x03, 0x60, 0x1d, 0x02, 0x7d, 0x67, -0x7c, 0x2c, 0xff, 0x94, 0x12, 0xfe, 0xa5, 0x29, 0x22, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, -0x23, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x64, 0xf0, 0x4e, 0x08, 0x0a, 0x60, 0x7b, 0x90, 0xe4, 0x23, -0xf0, 0x75, 0x12, 0x01, 0x7d, 0x18, 0x7b, 0x90, 0xe0, 0x23, 0xa3, 0xfe, 0xff, 0xe0, 0x22, 0x7d, -0x94, 0x7c, 0x29, 0x12, 0x7f, 0xa5, 0x7e, 0x2e, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x23, -0xa3, 0xf0, 0xf0, 0xef, 0x08, 0x64, 0x70, 0x4e, 0x02, 0x03, 0x5c, 0x1d, 0x7b, 0x90, 0x74, 0x23, -0xf5, 0xff, 0x12, 0xf0, 0x7d, 0x18, 0x7b, 0x90, 0xe0, 0x23, 0xa3, 0xfe, 0xff, 0xe0, 0x2e, 0x7d, -0x94, 0x7c, 0x29, 0x12, 0x7f, 0xa5, 0x7e, 0x3b, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x29, -0xa3, 0xf0, 0xf0, 0xef, 0x3a, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x2b, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x35, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x2d, 0xa3, 0xf0, -0xf0, 0xef, 0x34, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x2f, 0x7b, 0xf0, 0xee, 0xef, 0xa3, -0x90, 0xf0, 0x29, 0x7b, 0x19, 0x12, 0x90, 0x6f, 0x2d, 0x7b, 0x19, 0x12, 0x12, 0x8b, 0xb6, 0x18, -0x7b, 0x90, 0x12, 0x29, 0xa7, 0x19, 0x7b, 0x90, 0xe0, 0x29, 0xa3, 0xfe, 0xff, 0xe0, 0x31, 0x7d, -0x94, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0x2b, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x30, -0x12, 0x94, 0xa5, 0x29, 0x2c, 0x7d, 0x94, 0x7c, 0x1f, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x90, 0xa5, -0x0c, 0x7b, 0xff, 0xe0, 0x90, 0x22, 0x3a, 0x7d, 0xa3, 0xe0, 0x54, 0xe0, 0xf5, 0x0f, 0x70, 0x19, -0x02, 0x03, 0x23, 0x1f, 0x18, 0x7f, 0x66, 0x7e, 0x29, 0x12, 0x8e, 0x61, 0x8f, 0x1a, 0xe5, 0x1b, -0x45, 0x1b, 0x60, 0x1a, 0x12, 0x15, 0x2b, 0x22, 0x25, 0xef, 0xff, 0xe0, 0x33, 0xee, 0xef, 0xfe, -0xff, 0x24, 0xee, 0xff, 0x47, 0x34, 0x1a, 0xf5, 0x1b, 0x8f, 0x90, 0xc3, 0xcf, 0x7f, 0x95, 0xe0, -0xf5, 0x1b, 0x90, 0x11, 0xce, 0x7f, 0x95, 0xe0, 0xf5, 0x1a, 0xe4, 0x10, 0x18, 0xf5, 0x74, 0xc3, -0x95, 0x0f, 0xf5, 0x19, 0xe4, 0x19, 0x23, 0xf5, 0x16, 0x75, 0xe5, 0x01, 0xd3, 0x16, 0x19, 0x95, -0x1a, 0x50, 0x10, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1f, 0x92, -0x18, 0xe5, 0x13, 0xc3, 0x23, 0x45, 0x18, 0xf5, 0x16, 0x05, 0xdf, 0x80, 0x7d, 0x90, 0xe0, 0x3d, -0xe0, 0x30, 0xe5, 0x16, 0xa2, 0x10, 0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x92, 0x11, -0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, 0x26, 0xe1, -0x10, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1e, 0x92, 0x10, 0xe5, -0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0x13, -0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x66, 0x7b, 0x25, 0xe0, 0xf0, 0x18, -0x18, 0x92, 0x23, 0xe5, 0x11, 0x25, 0x11, 0xf5, 0x35, 0xe4, 0xf5, 0x10, 0xc2, 0x10, 0xd3, 0x18, -0x11, 0xe5, 0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x2b, 0x40, 0x7b, 0x90, 0xe0, 0x65, -0x11, 0x25, 0x13, 0xf5, 0x7b, 0x90, 0xe0, 0x64, 0x10, 0x35, 0x12, 0xf5, 0xe5, 0xd3, 0x94, 0x13, -0xe5, 0xff, 0x94, 0x12, 0x40, 0x7f, 0x75, 0x08, 0x7f, 0x10, 0x11, 0x75, 0x80, 0xff, 0x85, 0x18, -0x10, 0x12, 0x13, 0x85, 0x80, 0x11, 0x90, 0x10, 0x64, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x11, 0x25, -0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x3e, 0x90, 0x10, 0x68, 0x7d, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xe5, -0xc3, 0xf0, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x05, 0x50, 0xf5, 0xe4, 0xf5, 0x10, 0x90, 0x11, -0x64, 0x7b, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xe5, 0xe4, 0xf0, 0x14, 0xf5, 0xe5, 0xd3, 0x94, 0x11, -0xe5, 0xff, 0x64, 0x10, 0x94, 0x80, 0x40, 0xcf, 0xe5, 0x15, 0x94, 0x14, 0x50, 0x03, 0xe4, 0x0f, -0x11, 0x25, 0x11, 0xf5, 0xf0, 0x74, 0x10, 0x35, 0x10, 0xf5, 0x14, 0x05, 0xde, 0x80, 0x25, 0xe4, -0xff, 0x11, 0x10, 0xe5, 0xd8, 0x34, 0xe7, 0xa2, 0xfe, 0x13, 0x13, 0xef, 0x12, 0xff, 0xfe, 0x22, -0x1a, 0x8e, 0x1b, 0x8f, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7d, 0x90, 0xe5, 0xa4, -0xf0, 0x1a, 0xe5, 0xa3, 0xf0, 0x1b, 0x7d, 0x90, 0xe4, 0xa6, 0xa3, 0xf0, 0x14, 0xe5, 0x7e, 0xf0, -0x7f, 0x7d, 0x7d, 0xa4, 0x7c, 0x02, 0x12, 0x00, 0xae, 0x00, 0x14, 0x7b, 0x00, 0x7a, 0x06, 0x7d, -0x06, 0x7f, 0x2a, 0x12, 0xa2, 0x1c, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0x03, 0x7f, 0x60, 0x7e, -0x29, 0x12, 0x90, 0x61, 0x4c, 0x7b, 0xf0, 0xef, 0xe1, 0x20, 0x02, 0x03, 0x37, 0x20, 0x07, 0x7f, -0x66, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x4d, 0x7b, 0xf0, 0xef, 0xff, 0xf4, 0x00, 0x7e, 0x05, 0x7d, -0x66, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0x4d, 0x7b, 0x20, 0xe0, 0x03, 0xe0, 0x20, 0x02, 0x7f, 0x37, -0x7e, 0x23, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xef, 0x19, 0xd3, 0xf0, 0x17, 0x94, 0x03, 0x40, -0x20, 0x02, 0xc3, 0x27, 0x7b, 0x90, 0xe0, 0x51, 0x40, 0x94, 0x03, 0x50, 0x20, 0x02, 0x7d, 0x1b, -0x7c, 0x70, 0xe4, 0x71, 0xfe, 0xff, 0x29, 0x12, 0x7f, 0xa5, 0x7e, 0x3d, 0x12, 0x71, 0x61, 0x29, -0x01, 0xbe, 0xbf, 0x0b, 0x08, 0x42, 0x3d, 0x7d, 0x71, 0x7c, 0x52, 0x7f, 0x1d, 0x80, 0x3d, 0x7f, -0x71, 0x7e, 0x29, 0x12, 0xbe, 0x61, 0x0d, 0x01, 0x52, 0xbf, 0x7d, 0x0a, 0x7c, 0x3d, 0x7f, 0x71, -0x7e, 0x42, 0x80, 0x00, 0x7d, 0x08, 0x7c, 0x3d, 0x7f, 0x71, 0x7e, 0x42, 0x12, 0x01, 0xa5, 0x29, -0x1b, 0x7d, 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0x03, 0x7f, -0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x02, 0x12, 0x00, 0xa5, 0x29, -0x1d, 0x7d, 0x71, 0x7c, 0x0c, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, -0x7e, 0x08, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0x30, 0x7f, 0x00, 0x7e, 0x29, 0x12, -0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x20, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, -0xff, 0xe4, 0x12, 0xfe, 0xa5, 0x29, 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0x7f, 0x00, 0x7e, 0x29, 0x12, -0x80, 0xa5, 0x90, 0x0c, 0x51, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x18, 0x12, 0x80, 0x7d, 0xe4, 0x07, -0x7b, 0x90, 0xf0, 0x51, 0xf0, 0xa3, 0x00, 0x12, 0x12, 0xc6, 0x6d, 0x1d, 0x0e, 0x12, 0x22, 0x5b, -0x61, 0x20, 0x7f, 0xfd, 0x12, 0x01, 0x0c, 0x18, 0x7f, 0x90, 0xe0, 0xaf, 0xe1, 0x20, 0x90, 0xf1, -0xb0, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x11, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xd3, 0xfd, -0xec, 0x9f, 0x40, 0x9e, 0x7f, 0x04, 0x80, 0x01, 0x7f, 0x02, 0xef, 0x00, 0xe0, 0x25, 0x33, 0xff, -0xe0, 0x95, 0xe4, 0xfe, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x40, 0x7b, 0x90, 0xe0, 0x0f, 0xa3, 0xfa, -0xfb, 0xe0, 0xb3, 0x64, 0x60, 0x4a, 0xeb, 0x0c, 0xb2, 0x64, 0x60, 0x4a, 0xeb, 0x06, 0xb4, 0x64, -0x70, 0x4a, 0x7a, 0x06, 0x7b, 0x00, 0x80, 0x01, 0x7a, 0x04, 0x7b, 0x00, 0xef, 0x00, 0xff, 0x2b, -0x3a, 0xee, 0x7f, 0x90, 0xf0, 0xe2, 0xef, 0xa3, 0x90, 0xf0, 0xb0, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, -0xd3, 0xff, 0x9f, 0xed, 0x9e, 0xec, 0x6a, 0x40, 0x7b, 0x90, 0xe0, 0x18, 0x80, 0x94, 0x7b, 0x90, -0xe0, 0x17, 0x02, 0x94, 0x06, 0x50, 0x75, 0xe4, 0x80, 0xf0, 0x69, 0x80, 0x7b, 0x90, 0x74, 0x17, -0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x80, 0x7b, 0x90, 0xe0, 0x0f, 0xa3, 0xfe, 0xff, 0xe0, 0x40, 0x7d, -0x71, 0x7c, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xa5, 0x29, -0x7b, 0x90, 0xe0, 0x0f, 0xa3, 0xfe, 0xff, 0xe0, 0x94, 0xc3, 0xee, 0xdc, 0x80, 0x64, 0x80, 0x94, -0x03, 0x40, 0x20, 0x02, 0xef, 0x38, 0x58, 0x24, 0xee, 0xff, 0x03, 0x34, 0x7d, 0xfe, 0x7c, 0x41, -0x12, 0x71, 0xa5, 0x29, 0x24, 0x7d, 0x71, 0x7c, 0x07, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x02, 0xa5, -0x38, 0x20, 0x90, 0xd3, 0x18, 0x7b, 0x94, 0xe0, 0x90, 0x00, 0x17, 0x7b, 0x94, 0xe0, 0x40, 0x00, -0x74, 0x0a, 0xf5, 0xff, 0x12, 0xf0, 0x7d, 0x18, 0x20, 0x02, 0x7d, 0x38, 0x7c, 0x24, 0x7f, 0x71, -0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x20, 0x02, 0x90, 0x38, 0x88, 0x7d, 0x75, 0xe4, 0x01, 0xf0, -0x18, 0x12, 0x7f, 0x7d, 0x7e, 0x17, 0x12, 0x93, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xde, 0xa3, 0xf0, -0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xde, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0x7b, 0x90, 0xee, 0x58, -0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xfd, 0xde, 0x7a, 0x54, 0xe0, 0xf0, 0x0f, 0xed, 0xd3, 0x04, 0x94, -0x94, 0xe4, 0x50, 0x00, 0x90, 0x21, 0x58, 0x7b, 0xe0, 0xa3, 0x90, 0xff, 0xde, 0x7a, 0xfe, 0xe0, -0xe0, 0xa3, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xee, 0xf0, -0x7a, 0x90, 0xf0, 0xde, 0x08, 0x80, 0xff, 0x74, 0x7a, 0x90, 0xf0, 0xde, 0xf0, 0xa3, 0x16, 0x7f, -0x93, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xf4, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xf4, 0x7a, -0xc4, 0xe0, 0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, 0x58, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, -0x7a, 0x90, 0xe0, 0xf4, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x21, 0x50, -0x7b, 0x90, 0xa3, 0x58, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xf4, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, -0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, 0xf4, 0x7a, 0x80, 0xf0, -0x74, 0x08, 0x90, 0xff, 0xf4, 0x7a, 0xa3, 0xf0, 0x90, 0xf0, 0xde, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, -0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xf5, 0xff, 0x9f, 0x7a, 0x90, 0xe0, 0xf4, 0x90, 0x9e, 0x8a, 0x7d, -0xf0, 0x8f, 0x18, 0x12, 0x30, 0x7d, 0x0a, 0xd7, 0x7d, 0x90, 0xe4, 0x8c, 0xf0, 0x75, 0x12, 0x01, -0x7d, 0x18, 0x8e, 0x22, 0x8f, 0x0d, 0xe5, 0x0e, 0x45, 0x0e, 0x70, 0x0d, 0x7e, 0x05, 0x7f, 0xff, -0x22, 0xff, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7b, 0x90, 0x74, 0x4a, 0xf0, 0x06, -0x0d, 0xae, 0x0e, 0xaf, 0xfc, 0xe4, 0xfb, 0xfd, 0x40, 0x7a, 0xf8, 0xf9, 0x12, 0xd3, 0x21, 0x19, -0x13, 0x40, 0x0e, 0xe5, 0xe0, 0x25, 0x0e, 0xf5, 0x0d, 0xe5, 0xf5, 0x33, 0x90, 0x0d, 0x4a, 0x7b, -0x14, 0xe0, 0x80, 0xf0, 0xae, 0xdb, 0xaf, 0x0d, 0xe4, 0x0e, 0xfd, 0xfc, 0x7a, 0xfb, 0xf9, 0x80, -0xd3, 0xf8, 0x19, 0x12, 0x50, 0x21, 0xe5, 0x13, 0xc3, 0x0d, 0xf5, 0x13, 0xe5, 0x0d, 0x13, 0x0e, -0x0e, 0xf5, 0x7b, 0x90, 0xe0, 0x4a, 0xf0, 0x04, 0xdb, 0x80, 0x0d, 0xae, 0x0e, 0xaf, 0xfc, 0xe4, -0x90, 0xfd, 0x40, 0x7b, 0x19, 0x12, 0x90, 0xa7, 0x40, 0x7b, 0x19, 0x12, 0x78, 0x6f, 0x12, 0x02, -0x5c, 0x19, 0x2f, 0xe4, 0xee, 0xff, 0x80, 0x34, 0xed, 0xfe, 0xfe, 0x34, 0xec, 0xfd, 0xff, 0x34, -0x90, 0xfc, 0x40, 0x7b, 0x19, 0x12, 0x90, 0xa7, 0x48, 0x7b, 0x2a, 0x74, 0xa3, 0xf0, 0x93, 0x74, -0x12, 0xf0, 0x50, 0x25, 0x7b, 0x90, 0xe0, 0x4a, 0x33, 0xff, 0xe0, 0x95, 0xfd, 0xfe, 0x78, 0xfc, -0x12, 0x0f, 0x5c, 0x19, 0x7b, 0x90, 0x12, 0x44, 0x8b, 0x19, 0x18, 0x12, 0xef, 0xa9, 0x10, 0x24, -0xe4, 0xff, 0xfe, 0x3e, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x05, 0x78, 0x19, 0x12, 0xa2, 0x48, -0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x33, 0xee, -0xe0, 0x95, 0xfc, 0xfd, 0x05, 0x78, 0x19, 0x12, 0x90, 0x5c, 0x40, 0x7b, 0x19, 0x12, 0x90, 0xa7, -0x40, 0x7b, 0x19, 0x12, 0x78, 0x6f, 0x12, 0x0f, 0x48, 0x19, 0x24, 0xef, 0x90, 0x09, 0x4a, 0x7b, -0x90, 0xf0, 0x40, 0x7b, 0x19, 0x12, 0xee, 0x6f, 0x7f, 0x54, 0xe4, 0xfe, 0xfc, 0xfd, 0x01, 0x78, -0x19, 0x12, 0xe4, 0x5c, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x80, 0x34, 0xed, 0xfd, 0xff, 0x34, 0xec, -0xfc, 0xff, 0x7b, 0x90, 0x12, 0x40, 0xa7, 0x19, 0x7b, 0x90, 0x74, 0x48, 0xf0, 0x2a, 0x74, 0xa3, -0xf0, 0x87, 0x25, 0x12, 0x90, 0x50, 0x4a, 0x7b, 0xfb, 0xe0, 0x64, 0xc3, 0x94, 0x80, 0x90, 0x80, -0x44, 0x7b, 0x0d, 0x50, 0x19, 0x12, 0xeb, 0x6f, 0x04, 0xf4, 0xf8, 0xf9, 0x19, 0x12, 0x80, 0x48, -0x12, 0x0c, 0x6f, 0x19, 0x7b, 0x90, 0xe0, 0x4a, 0xf8, 0xf9, 0x19, 0x12, 0x90, 0x5c, 0x44, 0x7b, -0x19, 0x12, 0x90, 0xa7, 0x44, 0x7b, 0x19, 0x12, 0xe4, 0x6f, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x40, -0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x0f, 0x78, 0x19, 0x12, 0xa2, 0x48, 0x92, 0xd1, 0xd0, 0xaf, -0x22, 0xd0, 0x03, 0x7f, 0x90, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xe2, 0x7a, 0xf0, 0xee, 0xef, 0xa3, -0x4e, 0xf0, 0x03, 0x70, 0x24, 0x02, 0x90, 0x4f, 0xe3, 0x7a, 0x30, 0xe0, 0x22, 0xe0, 0x07, 0x7f, -0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xe8, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, 0xee, 0xff, -0xfe, 0xf4, 0x7a, 0x90, 0xf0, 0xe4, 0xef, 0xa3, 0x7d, 0xf0, 0x7c, 0x05, 0x12, 0x94, 0xa5, 0x29, -0x7a, 0x90, 0xe0, 0xe3, 0xe1, 0x30, 0x7f, 0x37, 0x7e, 0x07, 0x12, 0x93, 0x61, 0x29, 0x7a, 0x90, -0xee, 0xec, 0xa3, 0xf0, 0xf0, 0xef, 0xff, 0xf4, 0xf4, 0xee, 0x90, 0xfe, 0xe0, 0x7a, 0xa3, 0xf0, -0xf0, 0xef, 0x05, 0x7d, 0x93, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0xec, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, -0x4e, 0xff, 0x0a, 0x60, 0x30, 0xef, 0x06, 0xe1, 0x26, 0x12, 0x12, 0x2d, 0x41, 0x21, 0x7a, 0x90, -0xe0, 0xe3, 0xe2, 0x30, 0x7f, 0x22, 0x7e, 0x07, 0x12, 0x92, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xf2, -0xa3, 0xf0, 0xf0, 0xef, 0xff, 0xf4, 0xf4, 0xee, 0x90, 0xfe, 0xee, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, -0x05, 0x7d, 0x92, 0x7c, 0x29, 0x12, 0x22, 0xa5, 0x90, 0xe4, 0x19, 0x7b, 0xa3, 0xf0, 0xa3, 0xf0, -0xa3, 0xf0, 0x90, 0xf0, 0x17, 0x7b, 0xa3, 0xf0, 0x7d, 0xf0, 0x7c, 0x24, 0x7f, 0x71, 0xfe, 0x81, -0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x90, 0xe4, -0x1d, 0x7b, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0x7f, 0xf0, 0x7e, 0x12, 0x12, 0x62, 0x61, 0x29, -0xfc, 0xe4, 0x90, 0xfd, 0xc1, 0x7a, 0x19, 0x12, 0x90, 0xa7, 0xc1, 0x7a, 0x19, 0x12, 0x90, 0x6f, -0xc5, 0x7a, 0x19, 0x12, 0x90, 0xa7, 0xc9, 0x7a, 0x19, 0x12, 0x00, 0xb3, 0x00, 0x00, 0xe4, 0x00, -0x7a, 0x90, 0xf0, 0xcd, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xcf, 0x06, 0x7d, 0x71, 0x7c, 0x17, 0x7f, -0x12, 0xfe, 0xa5, 0x29, 0x90, 0xe4, 0x8f, 0x7d, 0x90, 0xf0, 0x6a, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, -0x7b, 0x90, 0xcf, 0x64, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x66, 0x7b, 0xc2, 0xf0, 0x22, 0x58, -0x06, 0x7d, 0x66, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0xe4, 0xa5, 0x7d, 0x90, 0xf0, 0x4a, -0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x5a, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x52, 0xf0, 0xa3, 0x7d, 0x90, -0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x57, 0x7d, 0x90, 0xf0, 0x65, 0x7d, 0x90, 0xf0, 0x58, -0x04, 0xa3, 0x90, 0xf0, 0x66, 0x7d, 0xf0, 0xe4, 0x04, 0xa3, 0x90, 0xf0, 0x42, 0x7d, 0x80, 0x74, -0xa3, 0xf0, 0xf0, 0xe4, 0x7d, 0x90, 0x74, 0x40, 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, -0x86, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x84, 0x7d, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, -0x7d, 0x90, 0xf0, 0x94, 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x92, 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, -0x90, 0xe4, 0x30, 0x7d, 0xa3, 0xf0, 0x22, 0xf0, 0x7b, 0x90, 0xe4, 0x48, 0xf0, 0x75, 0x12, 0x04, -0x93, 0x18, 0xf0, 0x85, 0xf5, 0x82, 0x12, 0x83, 0x7b, 0x19, 0x7b, 0x90, 0x12, 0x44, 0xa7, 0x19, -0x7b, 0x90, 0x74, 0x4b, 0xf0, 0x01, 0x7b, 0x90, 0x12, 0x44, 0x6f, 0x19, 0x7b, 0x90, 0x12, 0x40, -0x8b, 0x19, 0x18, 0x12, 0x90, 0xc4, 0x44, 0x7b, 0x19, 0x12, 0x90, 0xa7, 0x44, 0x7b, 0x19, 0x12, -0xe4, 0x6f, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x40, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x0f, 0x78, -0x19, 0x12, 0x90, 0x48, 0x48, 0x7b, 0x75, 0xe4, 0x04, 0xf0, 0x18, 0x12, 0x85, 0x93, 0x82, 0xf0, -0x83, 0xf5, 0x19, 0x12, 0x12, 0x97, 0xa9, 0x18, 0x7b, 0x90, 0x12, 0x44, 0xa7, 0x19, 0x7b, 0x90, -0xe0, 0x4b, 0xf0, 0x04, 0xb4, 0xe0, 0xae, 0x03, 0x90, 0x22, 0xfa, 0x7f, 0xfe, 0xe0, 0xe4, 0xa3, -0x03, 0x70, 0x64, 0xee, 0x70, 0x03, 0xe0, 0x47, 0x19, 0x12, 0x25, 0xf6, 0x01, 0xf2, 0xf5, 0x25, -0x25, 0x02, 0x03, 0xf8, 0xfb, 0x25, 0x25, 0x04, 0x05, 0xfe, 0x01, 0x26, 0x26, 0x06, 0x07, 0x04, -0x07, 0x26, 0x26, 0x08, 0x09, 0x0a, 0x00, 0x00, 0x0d, 0x26, 0x29, 0x02, 0x02, 0x84, 0x03, 0x00, -0x2a, 0x02, 0x02, 0x54, 0xe8, 0x28, 0x00, 0x02, 0x02, 0x0e, 0x43, 0x00, 0x2b, 0x02, 0x02, 0x2c, -0x34, 0x2b, 0x2a, 0x02, 0x74, 0xb5, 0x90, 0xff, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7b, 0x90, -0x12, 0x3a, 0xe4, 0x19, 0x4a, 0xe9, 0x03, 0x60, 0x1a, 0x02, 0x90, 0x1c, 0xf8, 0x7f, 0xff, 0x74, -0xa3, 0xf0, 0xf0, 0x14, 0x7f, 0x22, 0x7e, 0x17, 0x12, 0x93, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xde, -0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xde, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0x7b, 0x90, -0xee, 0x58, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xfd, 0xde, 0x7a, 0x54, 0xe0, 0xf0, 0x0f, 0xed, 0xd3, -0x04, 0x94, 0x94, 0xe4, 0x50, 0x00, 0x90, 0x21, 0x58, 0x7b, 0xe0, 0xa3, 0x90, 0xff, 0xde, 0x7a, -0xfe, 0xe0, 0xe0, 0xa3, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, -0xee, 0xf0, 0x7a, 0x90, 0xf0, 0xde, 0x08, 0x80, 0xff, 0x74, 0x7a, 0x90, 0xf0, 0xde, 0xf0, 0xa3, -0x7a, 0x90, 0xe0, 0xde, 0xa3, 0xfe, 0xff, 0xe0, 0x7d, 0x90, 0xee, 0x96, 0xf0, 0x8f, 0x18, 0x02, -0x7d, 0x7d, 0x7c, 0x1e, 0x7f, 0x94, 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x1f, 0x7d, 0x94, 0x7c, -0xff, 0x7f, 0x03, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x21, 0x7f, 0x94, 0x7e, 0xea, 0x12, 0x01, -0xa5, 0x29, 0x20, 0x7d, 0x94, 0x7c, 0x16, 0x7f, 0x01, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x2e, -0x7f, 0x94, 0x7e, 0x0a, 0x12, 0x00, 0xa5, 0x29, 0x22, 0x7d, 0x94, 0x7c, 0x0a, 0x7f, 0x00, 0x7e, -0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x23, 0x7f, 0x94, 0x7e, 0x0a, 0x12, 0x00, 0xa5, 0x29, 0x26, 0x7d, -0x94, 0x7c, 0x05, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x27, 0x7f, 0x94, 0x7e, 0x07, -0x02, 0x00, 0xa5, 0x29, 0x30, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xfa, 0x7a, 0xf0, 0xee, -0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x31, 0x12, 0x94, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xfc, 0xa3, 0xf0, -0xf0, 0xef, 0x2e, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x01, 0x7b, 0xf0, 0xef, 0x22, 0x7f, -0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x02, 0x7b, 0xf0, 0xef, 0x23, 0x7f, 0x94, 0x7e, 0x29, 0x12, -0x90, 0x61, 0x03, 0x7b, 0xf0, 0xef, 0x3b, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x04, 0x7b, -0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x06, -0xa3, 0xf0, 0xf0, 0xef, 0x7f, 0x22, 0x7e, 0x14, 0x12, 0x93, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x60, -0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x60, 0xa3, 0xfa, 0xfb, 0xe0, 0xc4, 0xea, 0x0f, 0x54, -0x7e, 0xff, 0x90, 0x00, 0x62, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, 0x7a, 0x90, 0xe0, 0xde, -0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x1f, 0x50, 0x7b, 0x90, 0xa3, 0x62, -0xff, 0xe0, 0xae, 0xeb, 0xa8, 0x02, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, -0xff, 0xf9, 0x7b, 0x90, 0xee, 0x60, 0xa3, 0xf0, 0xf0, 0xef, 0x74, 0x22, 0x90, 0xff, 0x60, 0x7b, -0xa3, 0xf0, 0x22, 0xf0, 0xd5, 0xc2, 0x30, 0xe8, 0x0f, 0xe7, 0xd5, 0xb2, 0xc3, 0xe4, 0xfb, 0x9b, -0x9a, 0xe4, 0xe4, 0xfa, 0xf9, 0x99, 0x98, 0xe4, 0xec, 0xf8, 0xe7, 0x30, 0xb2, 0x17, 0x12, 0xd5, -0xf2, 0x27, 0x1a, 0x12, 0xe4, 0x5e, 0x9b, 0xc3, 0xe4, 0xfb, 0xfa, 0x9a, 0x99, 0xe4, 0xe4, 0xf9, -0xf8, 0x98, 0x03, 0x80, 0x1a, 0x12, 0x30, 0x5e, 0x0d, 0xd5, 0xc3, 0xe4, 0xff, 0x9f, 0x9e, 0xe4, -0xe4, 0xfe, 0xfd, 0x9d, 0x9c, 0xe4, 0x22, 0xfc, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, -0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, -0xc0, 0x05, 0xc0, 0x06, 0x90, 0x07, 0x5a, 0x7b, 0x19, 0x12, 0x12, 0xe4, 0x1c, 0x1a, 0x07, 0xd0, -0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, -0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, 0xc0, 0x32, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, -0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, -0x05, 0xc0, 0x06, 0xc0, 0x07, 0xc0, 0x7b, 0x90, 0x12, 0x5d, 0xe4, 0x19, 0x1a, 0x12, 0xd0, 0x1c, -0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, -0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0x40, 0xd2, 0x00, 0x30, 0xc0, 0x2e, -0xc0, 0xe0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x07, 0xc0, 0x81, 0xaf, 0x90, 0xc3, -0x81, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x80, 0x00, 0x94, 0x07, 0x50, 0x81, 0xaf, 0xf0, 0xe4, -0xef, 0xa3, 0xd0, 0xf0, 0xd0, 0x07, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0x32, 0xe0, 0x7b, 0x90, -0xe0, 0x19, 0xc3, 0xff, 0x57, 0x94, 0x07, 0x40, 0x7b, 0x90, 0x74, 0x58, 0x80, 0x80, 0xef, 0x0b, -0x94, 0xc3, 0x40, 0x06, 0x90, 0x0b, 0x58, 0x7b, 0x40, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x07, 0x80, -0x90, 0xe4, 0x58, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x58, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, -0x62, 0xd2, 0x04, 0x7f, 0x16, 0x12, 0x7b, 0xd3, 0x7a, 0xff, 0x79, 0x1f, 0x90, 0x24, 0x5a, 0x7b, -0x19, 0x12, 0x7a, 0xed, 0x79, 0x23, 0x90, 0xaa, 0x5d, 0x7b, 0x19, 0x12, 0x43, 0xed, 0x18, 0xa9, -0xab, 0x43, 0xe4, 0x08, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xef, 0x22, 0xc4, 0x04, 0xf0, 0x54, -0x24, 0x14, 0xf5, 0x80, 0xe4, 0x82, 0x7a, 0x34, 0x83, 0xf5, 0x01, 0xd0, 0x07, 0xd0, 0x0f, 0x7e, -0x82, 0xe5, 0x02, 0x70, 0x83, 0x15, 0x82, 0x15, 0xe0, 0xd0, 0xde, 0xf0, 0xc0, 0xf3, 0xc0, 0x07, -0x22, 0x01, 0xa8, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0x92, 0x00, 0xc0, 0xaf, 0x75, 0xf0, 0x05, 0xf0, -0xe0, 0xc0, 0xe0, 0x75, 0xc0, 0x55, 0x75, 0xe0, 0x29, 0xe0, 0xe0, 0xc0, 0xd5, 0x32, 0xf2, 0xf0, -0xe0, 0xd0, 0xf0, 0xd0, 0xd0, 0xd0, 0xa8, 0xd0, 0xc0, 0x22, 0xc2, 0xa8, 0x10, 0xaf, 0x04, 0x40, -0xa8, 0xd0, 0xf5, 0x80, 0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, 0xc3, 0x8e, 0xc5, 0x8f, 0x40, 0x30, -0x90, 0xfd, 0xa0, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xd0, 0xff, 0x22, 0xa8, 0x00, 0x12, 0x90, 0x9e, -0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0x53, 0xf0, 0xe7, 0xa9, 0xab, 0x53, 0x7f, 0xf7, 0x12, 0x04, -0x5c, 0x17, 0x29, 0x12, 0xe4, 0xe3, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xc0, 0x22, 0xc2, 0xa8, -0x10, 0xaf, 0x04, 0x40, 0xa8, 0xd0, 0xf5, 0x80, 0x7d, 0x90, 0xee, 0xa0, 0xa3, 0xf0, 0xf0, 0xef, -0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, 0xc3, 0x8c, 0xc4, 0x8d, 0xa8, 0xd0, 0xef, 0x22, 0x54, 0xc4, -0x24, 0xf0, 0xf5, 0x80, 0xe4, 0x82, 0x7a, 0x34, 0x83, 0xf5, 0x01, 0xd0, 0x07, 0xd0, 0x0f, 0x7e, -0xc0, 0xe0, 0xa3, 0xe0, 0xfa, 0xde, 0x07, 0xc0, 0x01, 0xc0, 0xe4, 0x22, 0x7f, 0x90, 0xf0, 0xae, -0xf0, 0xa3, 0x7f, 0x90, 0x74, 0xb0, 0xf0, 0x10, 0xe4, 0xa3, 0x90, 0xf0, 0xd2, 0x7f, 0xa3, 0xf0, -0x90, 0xf0, 0xd4, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, -0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x06, 0x7f, 0x02, -0x8f, 0x02, 0x22, 0xdb, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, -0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x05, 0x7f, 0x02, 0x8f, 0x01, 0x22, 0xdb, -0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, -0xf7, 0x30, 0x7f, 0x04, 0x80, 0x07, 0x7f, 0x02, 0x8f, 0x03, 0x22, 0xdb, 0x7f, 0x90, 0xe0, 0xf8, -0xa3, 0xff, 0x90, 0xe0, 0xae, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, 0x12, 0xf0, 0xdb, 0x2a, 0x90, 0xe4, -0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x6d, 0xef, 0x02, 0x70, 0x6c, 0xee, 0x10, 0x60, 0xef, 0x0f, -0x06, 0xaa, 0x01, 0x70, 0x14, 0x0e, 0x82, 0xf5, 0x83, 0x8a, 0xf0, 0xe4, 0xe8, 0x80, 0x00, 0x22, -0x0a, 0x00, 0x00, 0xf4, 0x3f, 0x00, 0x00, 0xaf, 0xb5, 0x00, 0xff, 0x05, 0xf5, 0xff, 0x00, 0x4a, -0x3f, 0x00, 0xff, 0x5b, 0xca, 0xff, 0x7d, 0xe0, 0x7c, 0x16, 0x7f, 0x71, 0x7e, 0x04, 0x12, 0x00, -0xa5, 0x29, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x29, 0x02, 0x53, 0xa5, 0xe7, 0xa9, -0xab, 0x53, 0x7f, 0xf7, 0x12, 0x04, 0x5c, 0x17, 0x62, 0xc2, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, -0x22, 0xf0, 0x40, 0x30, 0xc2, 0xfd, 0xef, 0x40, 0xfe, 0x54, 0xc2, 0x8e, 0xc1, 0xf5, 0xc3, 0x8c, -0xc5, 0x8d, 0x12, 0x22, 0x4e, 0x00, 0x2a, 0x12, 0x12, 0x9f, 0x04, 0x2b, 0x24, 0x12, 0x02, 0xd8, -0x50, 0x24, 0x40, 0xc2, 0x54, 0xef, 0x8e, 0xfe, 0xf5, 0xc2, 0x8c, 0xc1, 0x8d, 0xc3, 0x22, 0xc4, -0x7f, 0x78, 0xf6, 0xe4, 0xfd, 0xd8, 0x81, 0x75, 0x02, 0x3b, 0x99, 0x16, 0x06, 0x7d, 0x90, 0x7c, -0x02, 0x7f, 0x00, 0x7e, 0x29, 0x02, 0x8e, 0xa5, 0x8f, 0x82, 0xa3, 0x83, 0x82, 0xae, 0x83, 0xaf, -0x12, 0x22, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x74, 0x38, 0x90, 0xff, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x00, 0x83, 0x1f, 0xfe, 0x00, 0x02, 0x00, 0x01, 0xe8, 0x03, 0x10, 0x00, -0x08, 0x00, 0x80, 0x00, 0x03, 0x94, 0x00, 0xd9, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 + 0x48, 0x4c, 0x00, 0x03, 0x00, 0x00, 0x2b, 0x62, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x15, 0x9e, 0x00, 0x01, 0x92, 0x3b, 0x2a, 0x02, 0xe4, 0xf8, + 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0x02, 0x22, 0xa6, 0x15, 0x23, 0x7f, 0x71, 0x7e, 0x29, 0x12, + 0x90, 0x61, 0x19, 0x7b, + 0xf0, 0xef, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x28, 0x12, + 0x90, 0xb6, 0x19, 0x7b, + 0xfd, 0xe0, 0x4d, 0xef, 0x90, 0xff, 0xf6, 0x7f, 0xf0, 0xee, 0xef, 0xa3, + 0xa2, 0xf0, 0x92, 0xd1, + 0xd0, 0xaf, 0xe4, 0xd0, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xe4, 0x22, + 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0x02, 0x22, 0x70, 0x09, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x28, 0x7a, 0x90, + 0xe0, 0xfa, 0xa3, 0xfe, 0xff, 0xe0, 0x30, 0x7d, 0x94, 0x7c, 0x29, 0x12, + 0x90, 0xa5, 0xfc, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x31, 0x12, 0x94, 0xa5, 0x29, + 0x7b, 0x90, 0xe0, 0x01, + 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x2e, 0x12, 0x94, 0xa5, 0x29, 0x7b, 0x90, + 0xe0, 0x02, 0x7e, 0xff, + 0x7d, 0x00, 0x7c, 0x22, 0x12, 0x94, 0xa5, 0x29, 0x7b, 0x90, 0xe0, 0x03, + 0x7e, 0xff, 0x7d, 0x00, + 0x7c, 0x23, 0x02, 0x94, 0xa5, 0x29, 0x62, 0x30, 0x12, 0x06, 0xb5, 0x2a, + 0x04, 0x7f, 0x7f, 0x22, + 0x22, 0x00, 0x02, 0x00, 0x41, 0x28, 0x40, 0x30, 0xc2, 0xfd, 0x8e, 0x40, + 0x8f, 0xd3, 0xed, 0xd2, + 0xff, 0x24, 0xec, 0xff, 0xff, 0x34, 0xda, 0xf5, 0xd9, 0x8f, 0x02, 0x22, + 0x82, 0x28, 0x7d, 0x90, + 0xe0, 0x3b, 0xf0, 0x54, 0x03, 0x70, 0x80, 0xd3, 0xc3, 0x01, 0x92, 0xb3, + 0x90, 0x05, 0x3a, 0x7d, + 0xa3, 0xe0, 0xe4, 0xa2, 0x92, 0xb3, 0xe0, 0x02, 0x0f, 0x54, 0x03, 0x70, + 0x80, 0xd3, 0xc3, 0x01, + 0x92, 0xb3, 0x90, 0x06, 0x91, 0x7d, 0x30, 0xe0, 0x03, 0xe1, 0x02, 0x02, + 0x90, 0x65, 0x5a, 0x7d, + 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x30, 0x31, 0x2e, 0x02, 0x7d, 0x90, + 0xe0, 0x78, 0xa3, 0xfe, + 0xff, 0xe0, 0x90, 0xc3, 0x75, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x74, + 0x50, 0x9e, 0x90, 0x19, + 0x65, 0x7d, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x7f, 0x74, 0x03, 0xf0, 0xff, + 0x5b, 0x20, 0xd2, 0x09, + 0xe4, 0x5b, 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x4a, + 0x02, 0x70, 0xe0, 0xa3, + 0x03, 0x70, 0x02, 0x20, 0x90, 0x17, 0x4a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, + 0x70, 0xe0, 0x90, 0x3c, + 0x5a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x20, 0x32, 0x2f, 0x02, + 0x7d, 0x90, 0xe0, 0x6c, + 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xd3, 0x6b, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, + 0xe0, 0x6a, 0x40, 0x9e, + 0x90, 0x1a, 0x57, 0x7d, 0xd3, 0xe0, 0x80, 0x64, 0x7f, 0x94, 0x03, 0x40, + 0xff, 0x74, 0x20, 0xf0, + 0x09, 0x07, 0x07, 0xd2, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0x7f, 0xf0, + 0x7e, 0x22, 0x12, 0x67, + 0x61, 0x29, 0x14, 0x8e, 0x15, 0x8f, 0x27, 0x7f, 0x67, 0x7e, 0x29, 0x12, + 0x8e, 0x61, 0x8f, 0x16, + 0x90, 0x17, 0x5e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, + 0x33, 0xce, 0xd8, 0xce, + 0xff, 0xf9, 0xe5, 0xd3, 0x9f, 0x17, 0x16, 0xe5, 0x40, 0x9e, 0x20, 0x54, + 0x0c, 0x02, 0x7d, 0x90, + 0xe0, 0x57, 0x80, 0x64, 0x81, 0x94, 0x10, 0x50, 0x0b, 0x80, 0x7d, 0x90, + 0xe0, 0x65, 0x64, 0xc3, + 0x94, 0x80, 0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x5b, 0x20, 0xd2, 0x34, + 0xe4, 0x5b, 0x7d, 0x90, + 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, + 0x90, 0xc3, 0x6b, 0x7d, + 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, + 0x30, 0xe0, 0x0f, 0xe0, + 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, + 0xef, 0xa3, 0x90, 0xf0, + 0x4e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0xff, 0xf9, + 0xe5, 0xd3, 0x9f, 0x15, 0x14, 0xe5, 0x40, 0x9e, 0x90, 0x44, 0x57, 0x7d, + 0x64, 0xe0, 0x94, 0x80, + 0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x07, 0x20, 0xd2, 0x34, 0xe4, 0x07, + 0x7d, 0x90, 0xf0, 0x52, + 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, + 0x6b, 0x7d, 0x9f, 0xe0, + 0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, 0x30, 0xe0, + 0x0f, 0xe0, 0x7d, 0x90, + 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, + 0x90, 0xf0, 0x34, 0x7d, + 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x60, 0x7d, 0xf5, 0xe0, + 0xa3, 0x1c, 0xf5, 0xe0, + 0x05, 0x1d, 0xe5, 0x1d, 0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x60, 0x7d, + 0x1c, 0xe5, 0xa3, 0xf0, + 0x1d, 0xe5, 0x30, 0xf0, 0x2f, 0x5b, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, + 0xff, 0xe0, 0x74, 0xc3, + 0x9f, 0xf8, 0x74, 0xff, 0x9e, 0x2a, 0xd3, 0xfe, 0x7d, 0x90, 0xe0, 0x7b, + 0x90, 0x9f, 0x7a, 0x7d, + 0x9e, 0xe0, 0x07, 0x50, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x0a, + 0x2e, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, + 0x16, 0x95, 0x03, 0x40, + 0x80, 0xd3, 0xc3, 0x01, 0x04, 0x92, 0x7d, 0x90, 0xe0, 0x50, 0x16, 0xf5, + 0xe0, 0xa3, 0x17, 0xf5, + 0x7d, 0x90, 0xe0, 0x52, 0x1c, 0xf5, 0xe0, 0xa3, 0x1d, 0xf5, 0x1d, 0x05, + 0x1d, 0xe5, 0x02, 0x70, + 0x1c, 0x05, 0x7d, 0x90, 0xe5, 0x52, 0xf0, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, + 0x07, 0x30, 0x90, 0x0a, + 0x82, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x20, 0x17, 0x11, 0x04, + 0xe5, 0xc3, 0x95, 0x1d, + 0xe5, 0x17, 0x95, 0x1c, 0x40, 0x16, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, + 0x20, 0x03, 0x03, 0x04, + 0x03, 0x02, 0xc0, 0xfc, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, + 0x7d, 0x90, 0xf0, 0xa4, + 0xf0, 0xa3, 0x7d, 0x7e, 0xa4, 0x7f, 0x01, 0x7d, 0x12, 0xfc, 0xae, 0x00, + 0x27, 0x7b, 0x00, 0x7a, + 0x07, 0x7d, 0x06, 0x7f, 0x2a, 0x12, 0x30, 0x38, 0xfd, 0x40, 0x7d, 0x90, + 0xe0, 0xa4, 0xa3, 0xff, + 0x90, 0xe0, 0x5a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, + 0xd0, 0xaf, 0xe4, 0xd0, + 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x5b, 0xc2, 0x7d, 0x90, 0xe0, 0x63, + 0x18, 0xf5, 0x7d, 0x90, + 0xe0, 0x5a, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x7d, 0x90, 0xe0, 0x5c, + 0x1a, 0xf5, 0xe0, 0xa3, + 0x1b, 0xf5, 0x7d, 0x90, 0xe0, 0x5e, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, + 0x7d, 0x90, 0xe0, 0x66, + 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, 0x7d, 0x90, 0xe0, 0x65, 0x19, 0xf5, + 0x7d, 0x90, 0xe0, 0x74, + 0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x1d, 0xf5, 0x7f, 0x74, + 0xf5, 0x9e, 0x90, 0x1c, + 0x6e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x6a, 0x7d, 0xb5, 0xe0, + 0x1e, 0x06, 0xe0, 0xa3, + 0x07, 0xb5, 0xd3, 0x19, 0x7d, 0x90, 0xe0, 0x4b, 0x13, 0x95, 0x7d, 0x90, + 0xe0, 0x4a, 0x12, 0x95, + 0x0a, 0x40, 0x58, 0x20, 0xe0, 0x07, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, + 0x90, 0xd3, 0x7b, 0x7d, + 0x94, 0xe0, 0x90, 0xfe, 0x7a, 0x7d, 0x94, 0xe0, 0x40, 0x77, 0xd3, 0x0d, + 0x13, 0xe5, 0x17, 0x95, + 0x12, 0xe5, 0x16, 0x95, 0x02, 0x40, 0x04, 0xc2, 0x02, 0x30, 0x20, 0x03, + 0x02, 0x05, 0x04, 0xc2, + 0x04, 0xa2, 0x5a, 0x92, 0x03, 0x20, 0x02, 0x03, 0xa7, 0x04, 0xd0, 0xc0, + 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x90, 0xe4, 0xa4, 0x7d, 0xa3, 0xf0, 0x7e, 0xf0, 0x7f, 0x7d, + 0x7d, 0xa4, 0xfc, 0x01, + 0x00, 0x12, 0x7b, 0xae, 0x7a, 0x22, 0x7d, 0x00, 0x7f, 0x07, 0x12, 0x06, + 0x38, 0x2a, 0x40, 0x30, + 0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, 0x7d, 0x90, 0xcf, 0x4a, + 0xa3, 0xf0, 0xf0, 0xef, + 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, + 0xc2, 0xf0, 0x90, 0x07, + 0x55, 0x7d, 0xf5, 0xe0, 0x90, 0x18, 0x4a, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, + 0xf5, 0xe0, 0x90, 0x13, + 0x4c, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x90, 0x1b, 0x4e, 0x7d, + 0xf5, 0xe0, 0xa3, 0x16, + 0xf5, 0xe0, 0x90, 0x17, 0x58, 0x7d, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, + 0x90, 0x15, 0x57, 0x7d, + 0xf5, 0xe0, 0x90, 0x19, 0x6a, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, + 0x20, 0x1d, 0x16, 0x02, + 0x90, 0xd3, 0x5b, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x5a, 0x7d, 0x95, 0xe0, + 0x40, 0x12, 0xe0, 0x07, + 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x06, 0x20, 0xc2, 0x02, 0xa2, 0x03, + 0x92, 0x03, 0x20, 0x59, + 0x0b, 0x05, 0x02, 0x20, 0xc2, 0x08, 0xc2, 0x03, 0xc2, 0x04, 0xc2, 0x59, + 0x20, 0x5a, 0x06, 0x04, + 0x03, 0x20, 0x02, 0x03, 0x8b, 0x06, 0xe5, 0xc3, 0x95, 0x13, 0xe5, 0x1b, + 0x95, 0x12, 0x50, 0x1a, + 0xe5, 0x57, 0x64, 0x19, 0x94, 0x80, 0x50, 0x80, 0x15, 0x4a, 0xc3, 0x19, + 0x18, 0xe5, 0x80, 0x64, + 0xe5, 0xf8, 0x64, 0x19, 0x98, 0x80, 0x0e, 0x50, 0x15, 0xe5, 0xe0, 0x25, + 0x15, 0xf5, 0x14, 0xe5, + 0xf5, 0x33, 0x75, 0x14, 0xff, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, + 0x68, 0xc8, 0xe5, 0xff, + 0xc4, 0x14, 0xf0, 0x54, 0xfe, 0x48, 0xe5, 0xc3, 0x9f, 0x1d, 0x11, 0xf5, + 0x1c, 0xe5, 0xf5, 0x9e, + 0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, 0x6d, 0x80, 0x10, 0x85, + 0x85, 0x1c, 0x1d, 0x11, + 0x05, 0x02, 0x75, 0xa6, 0xff, 0x19, 0x6c, 0x80, 0x74, 0xc3, 0x95, 0x01, + 0xa2, 0x18, 0x13, 0xe7, + 0x18, 0xf5, 0xe5, 0xd3, 0x95, 0x13, 0xe5, 0x17, 0x95, 0x12, 0x40, 0x16, + 0xe5, 0x5f, 0x64, 0x19, + 0x94, 0x80, 0x40, 0x80, 0x05, 0x4c, 0xd3, 0x19, 0x18, 0xe5, 0x80, 0x64, + 0xe5, 0xf8, 0x64, 0x19, + 0x98, 0x80, 0x0e, 0x40, 0x15, 0xe5, 0xe0, 0x25, 0x15, 0xf5, 0x14, 0xe5, + 0xf5, 0x33, 0x75, 0x14, + 0x01, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe5, 0xff, + 0xc4, 0x14, 0xf0, 0x54, + 0xfe, 0x48, 0x1d, 0xe5, 0xf5, 0x2f, 0xe5, 0x11, 0x3e, 0x1c, 0x10, 0xf5, + 0xe5, 0xd3, 0x94, 0x11, + 0xe5, 0xff, 0x94, 0x10, 0x40, 0x7f, 0x80, 0x02, 0x85, 0x0b, 0x1c, 0x10, + 0x11, 0x85, 0x80, 0x1d, + 0x75, 0x1d, 0x01, 0x19, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x12, 0x80, + 0xf5, 0xe4, 0xf5, 0x19, + 0x75, 0x14, 0x01, 0x15, 0x03, 0x30, 0xc2, 0x02, 0x30, 0x59, 0x02, 0x04, + 0x5a, 0xc2, 0x03, 0x30, + 0x90, 0x72, 0x6e, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, + 0x6c, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, + 0x16, 0x95, 0x0e, 0x50, + 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, + 0x59, 0xc2, 0xe5, 0xd3, + 0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, 0x1c, 0x10, + 0x11, 0x85, 0x75, 0x1d, + 0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x59, 0x57, 0x7d, 0x19, 0xe5, + 0x90, 0xf0, 0x58, 0x7d, + 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x6a, 0x7d, 0x1c, 0xe5, + 0xa3, 0xf0, 0x1d, 0xe5, + 0x20, 0xf0, 0x0f, 0x02, 0x7d, 0x90, 0xe0, 0x78, 0xa3, 0xff, 0x90, 0xe0, + 0x74, 0x7d, 0xf0, 0xcf, + 0xef, 0xa3, 0x30, 0xf0, 0x6d, 0x04, 0x7d, 0x90, 0xe0, 0x78, 0x10, 0xf5, + 0xe0, 0xa3, 0x11, 0xf5, + 0x7d, 0x90, 0xe0, 0x76, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0x74, 0xc3, + 0x95, 0xff, 0xf5, 0x1d, + 0x74, 0x1d, 0x95, 0x7f, 0xf5, 0x1c, 0xc3, 0x1c, 0x1d, 0xe5, 0x17, 0x95, + 0x1c, 0xe5, 0x16, 0x95, + 0x0e, 0x50, 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, + 0x01, 0x15, 0x5a, 0xc2, + 0xe5, 0xd3, 0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, + 0x1c, 0x10, 0x11, 0x85, + 0x75, 0x1d, 0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x5a, 0x65, 0x7d, + 0x19, 0xe5, 0x90, 0xf0, + 0x66, 0x7d, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x74, 0x7d, + 0x1c, 0xe5, 0xa3, 0xf0, + 0x1d, 0xe5, 0x90, 0xf0, 0x30, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, + 0x05, 0x1d, 0xe5, 0x1d, + 0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x30, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, + 0x1d, 0xe5, 0x90, 0xf0, + 0x44, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x45, 0x1b, 0x70, 0x1a, + 0x02, 0x03, 0x33, 0x09, + 0x59, 0x20, 0x30, 0x03, 0x0d, 0x5a, 0x7d, 0x90, 0xe0, 0x48, 0x14, 0xf5, + 0xe0, 0xa3, 0x15, 0xf5, + 0x08, 0x02, 0xd3, 0xff, 0x7d, 0x90, 0xe0, 0x33, 0x1d, 0x95, 0x7d, 0x90, + 0xe0, 0x32, 0x1c, 0x95, + 0x03, 0x40, 0x09, 0x02, 0x90, 0x6f, 0x40, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, + 0xf5, 0xe0, 0x90, 0x11, + 0x42, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x7d, 0x90, + 0xe0, 0x3f, 0x13, 0x95, + 0x12, 0xe5, 0x80, 0x64, 0x90, 0xf8, 0x3e, 0x7d, 0x64, 0xe0, 0x98, 0x80, + 0x24, 0x40, 0x11, 0xe5, + 0x13, 0xb5, 0xe5, 0x1f, 0xb5, 0x10, 0x1a, 0x12, 0x1b, 0xe5, 0xf8, 0xc4, + 0x0f, 0x54, 0x68, 0xc8, + 0xe5, 0xff, 0xc4, 0x1a, 0xf0, 0x54, 0xfe, 0x48, 0x25, 0xef, 0xf5, 0x13, + 0xee, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xe5, 0xc3, 0x95, 0x13, 0xff, 0x11, 0x12, 0xe5, 0x10, 0x95, + 0xf8, 0xc4, 0xf0, 0x54, + 0x68, 0xc8, 0x1c, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, 0x90, 0x1d, + 0x84, 0x7d, 0xf5, 0xe0, + 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x86, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, + 0xf5, 0xe0, 0xc3, 0x13, + 0x11, 0x95, 0xe5, 0xff, 0x95, 0x12, 0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, + 0xf5, 0x68, 0xef, 0x14, + 0x54, 0xc4, 0x48, 0x0f, 0x15, 0xf5, 0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, + 0x40, 0x1c, 0x85, 0x06, + 0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, 0x92, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, + 0xf5, 0xe0, 0x90, 0x11, + 0x94, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x11, 0x95, + 0xe5, 0xff, 0x95, 0x12, + 0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, 0xf5, 0x68, 0xef, 0x14, 0x54, 0xc4, + 0x48, 0x0f, 0x15, 0xf5, + 0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, 0x40, 0x1c, 0x85, 0x06, 0x1c, 0x14, + 0x15, 0x85, 0x90, 0x1d, + 0x3a, 0x7d, 0x54, 0xe0, 0xf5, 0x0f, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, + 0x48, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x46, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, + 0xf5, 0xe0, 0xc3, 0x13, + 0x1d, 0xe5, 0x1b, 0x95, 0x1c, 0xe5, 0x1a, 0x95, 0x03, 0x40, 0x08, 0x02, + 0xe5, 0x6c, 0x54, 0x12, + 0xf5, 0x0f, 0x75, 0x10, 0x00, 0x11, 0x14, 0xe5, 0x0f, 0x54, 0xe4, 0xfe, + 0x11, 0x95, 0x95, 0xee, + 0x40, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, 0xff, 0x74, 0x14, 0x35, + 0x14, 0xf5, 0x0e, 0x80, + 0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0x15, 0x45, + 0x15, 0xf5, 0x10, 0x75, + 0xe5, 0x00, 0x54, 0x13, 0xf5, 0xf0, 0xe5, 0x11, 0x54, 0x15, 0xd3, 0xf0, + 0x11, 0x95, 0x95, 0xe4, + 0x40, 0x10, 0x74, 0x0e, 0x25, 0xf0, 0xf5, 0x15, 0x74, 0x15, 0x35, 0xff, + 0xf5, 0x14, 0x80, 0x14, + 0xe5, 0x10, 0x54, 0x15, 0xff, 0x0f, 0x10, 0xe5, 0x14, 0x45, 0x14, 0xf5, + 0x11, 0xe5, 0xf5, 0x4f, + 0x75, 0x15, 0x00, 0x10, 0x13, 0xe5, 0x0f, 0x54, 0x11, 0xf5, 0x15, 0xe5, + 0x0f, 0x54, 0x95, 0xd3, + 0xe4, 0x11, 0x10, 0x95, 0x03, 0x50, 0x08, 0x02, 0xe5, 0xef, 0x15, 0x15, + 0x70, 0x15, 0x15, 0x02, + 0x02, 0x14, 0xff, 0x08, 0x16, 0xe5, 0x0f, 0x54, 0x10, 0xf5, 0x11, 0x75, + 0xe5, 0x00, 0x54, 0x14, + 0xfe, 0x0f, 0xe4, 0xc3, 0x11, 0x95, 0x95, 0xee, 0x50, 0x10, 0xe4, 0x0d, + 0x15, 0x25, 0x15, 0xf5, + 0x01, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x0e, 0x80, 0x14, 0xe5, 0xf0, 0x54, + 0x10, 0x45, 0x14, 0xf5, + 0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, + 0xf5, 0xf0, 0xe5, 0x11, + 0x54, 0x15, 0xc3, 0xf0, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, 0x74, 0x0d, + 0x25, 0x10, 0xf5, 0x15, + 0xe4, 0x15, 0x14, 0x35, 0x14, 0xf5, 0x10, 0x80, 0x15, 0xe5, 0x0f, 0x54, + 0xe5, 0xff, 0x45, 0x10, + 0xf5, 0x14, 0xe5, 0x14, 0x4f, 0x11, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, + 0x54, 0x17, 0xf5, 0x0f, + 0xe5, 0x11, 0x54, 0x15, 0xc3, 0x0f, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, + 0x05, 0x0a, 0xe5, 0x15, + 0x70, 0x15, 0x05, 0x02, 0x80, 0x14, 0xe5, 0x10, 0x54, 0x15, 0xff, 0xf0, + 0x10, 0xe5, 0x14, 0x45, + 0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, 0x90, 0x15, 0x3a, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, + 0x54, 0x17, 0x70, 0xf0, 0x53, 0x03, 0x0f, 0x15, 0x16, 0xe5, 0x0f, 0x54, + 0x03, 0x70, 0x14, 0x53, + 0xe5, 0xf0, 0x54, 0x17, 0x70, 0x0f, 0x53, 0x03, 0xf0, 0x15, 0x16, 0xe5, + 0xf0, 0x54, 0x14, 0x45, + 0xe5, 0xff, 0x90, 0x15, 0x3a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, + 0x7d, 0x90, 0xf0, 0x30, + 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, 0xe4, 0xa3, 0x90, 0xf0, + 0x40, 0x7d, 0x7f, 0x74, + 0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x86, 0xf0, 0xa3, + 0x7d, 0x90, 0x74, 0x84, + 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0x94, 0x7d, 0xa3, 0xf0, + 0x90, 0xf0, 0x92, 0x7d, + 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0xe0, 0xc0, 0xf0, 0xc0, + 0x83, 0xc0, 0x82, 0xc0, + 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, + 0xc0, 0x03, 0xc0, 0x04, + 0xc0, 0x05, 0xc0, 0x06, 0x7f, 0x07, 0x7e, 0x07, 0x12, 0x71, 0x61, 0x29, + 0x7a, 0x90, 0xef, 0xc0, + 0xf4, 0xf0, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x05, 0x12, 0x71, 0xa5, 0x29, + 0x7a, 0x90, 0xe0, 0xc0, + 0x70, 0xff, 0x02, 0x03, 0x40, 0x0e, 0x20, 0xef, 0x03, 0xe4, 0x0c, 0x02, + 0x7f, 0x58, 0x7e, 0x23, + 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xef, 0x19, 0x90, 0xf0, 0xd4, 0x7f, + 0x75, 0xe4, 0x01, 0xf0, + 0x18, 0x12, 0xc3, 0x7d, 0x7f, 0x90, 0xe0, 0xd5, 0x39, 0x94, 0x7f, 0x90, + 0xe0, 0xd4, 0x01, 0x94, + 0x0d, 0x40, 0xf0, 0xe4, 0xf0, 0xa3, 0x7f, 0x90, 0x75, 0xd2, 0x01, 0xf0, + 0x18, 0x12, 0x7f, 0x7d, + 0x7e, 0x74, 0x12, 0x71, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xd6, 0xa3, 0xf0, + 0xf0, 0xef, 0xee, 0xc3, + 0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, + 0x80, 0xfe, 0x90, 0x08, + 0xd6, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xd6, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, + 0x7e, 0x75, 0x12, 0x71, 0x61, 0x29, 0x7a, 0x90, 0xee, 0xd8, 0xa3, 0xf0, + 0xf0, 0xef, 0xee, 0xc3, + 0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, + 0x80, 0xfe, 0x90, 0x08, + 0xd8, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xd8, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, + 0xd8, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, 0x18, 0x12, + 0xaa, 0x6b, 0xab, 0x06, + 0x90, 0x07, 0xd6, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, + 0x18, 0x12, 0xef, 0x6b, + 0xff, 0x2b, 0x3a, 0xee, 0x7a, 0x90, 0xf0, 0xda, 0xef, 0xa3, 0x90, 0xf0, + 0xc1, 0x7a, 0x19, 0x12, + 0x90, 0x6f, 0xc5, 0x7a, 0x19, 0x12, 0x7f, 0xa7, 0x7e, 0x12, 0x12, 0x62, + 0x61, 0x29, 0xfc, 0xe4, + 0x90, 0xfd, 0xc1, 0x7a, 0x19, 0x12, 0x90, 0xa7, 0xc5, 0x7a, 0x19, 0x12, + 0xab, 0x6f, 0xaa, 0x07, + 0xa9, 0x06, 0xa8, 0x05, 0x90, 0x04, 0xc1, 0x7a, 0x19, 0x12, 0x12, 0x6f, + 0xb6, 0x18, 0x7a, 0x90, + 0x12, 0xd2, 0xa7, 0x19, 0x00, 0x7f, 0x80, 0x7e, 0xff, 0x7d, 0xff, 0x7c, + 0x7a, 0x90, 0x12, 0xd2, + 0x8b, 0x19, 0x12, 0xc3, 0x21, 0x19, 0x14, 0x50, 0x7a, 0x90, 0x12, 0xd2, + 0x6f, 0x19, 0x2f, 0xe4, + 0xe4, 0xff, 0xfe, 0x3e, 0x34, 0xed, 0xfd, 0x01, 0x3c, 0xe4, 0x29, 0x80, + 0x7f, 0xe4, 0x7e, 0xff, + 0xfd, 0x7f, 0x90, 0xfc, 0xd2, 0x7a, 0x19, 0x12, 0xd3, 0x8b, 0x19, 0x12, + 0x40, 0x21, 0x90, 0x1d, + 0xd2, 0x7a, 0x19, 0x12, 0xc3, 0x6f, 0x94, 0xef, 0xff, 0x00, 0x94, 0xee, + 0xfe, 0x00, 0x94, 0xed, + 0xfd, 0x01, 0x94, 0xec, 0xfc, 0x00, 0x7a, 0x90, 0x12, 0xd2, 0xa7, 0x19, + 0x7f, 0xe4, 0xfe, 0x0f, + 0xfc, 0xfd, 0x7a, 0x90, 0x12, 0xc9, 0x8b, 0x19, 0x18, 0x12, 0xe4, 0xc4, + 0x10, 0x7b, 0xf9, 0xfa, + 0x12, 0xf8, 0xbc, 0x27, 0x7a, 0x90, 0x12, 0xd2, 0x8b, 0x19, 0x18, 0x12, + 0x90, 0xa9, 0xc9, 0x7a, + 0x19, 0x12, 0x90, 0xa7, 0xcf, 0x7a, 0xf9, 0xe0, 0x03, 0x54, 0x68, 0x70, + 0x7a, 0x90, 0x12, 0xc9, + 0x6f, 0x19, 0x07, 0x78, 0x19, 0x12, 0x90, 0x48, 0xd0, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0xc3, 0xf0, + 0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0x90, 0x15, 0xd0, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0xc3, 0xff, + 0x9f, 0xe4, 0xe4, 0xff, 0x90, 0x9e, 0xd0, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, + 0x7a, 0x90, 0xe0, 0xd0, + 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0xce, 0x7a, 0x9f, 0xe0, 0x7a, 0x90, + 0xe0, 0xcd, 0x50, 0x9e, + 0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0xe9, 0x80, 0x94, 0x18, 0x40, + 0x7a, 0x90, 0xe0, 0xcd, + 0xa3, 0xff, 0x90, 0xe0, 0xdc, 0x7a, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, + 0xcd, 0x7a, 0xf0, 0xe4, + 0xf0, 0xa3, 0xf0, 0xa3, 0x7a, 0x90, 0xe0, 0xcf, 0xf0, 0x04, 0x7b, 0x90, + 0xe0, 0x19, 0x17, 0x64, + 0x4c, 0x70, 0x6c, 0x7d, 0x71, 0x7c, 0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, + 0x7c, 0x16, 0x7f, 0x71, + 0x7e, 0x04, 0x12, 0x00, 0xa5, 0x29, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, + 0x00, 0x7e, 0x29, 0x12, + 0x7d, 0xa5, 0x7c, 0x57, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, + 0x90, 0xc3, 0xdb, 0x7a, + 0x94, 0xe0, 0x90, 0x78, 0xda, 0x7a, 0x94, 0xe0, 0x40, 0x00, 0x7d, 0x75, + 0x7c, 0x3d, 0x7f, 0x71, + 0x7e, 0x50, 0x12, 0x00, 0xa5, 0x29, 0x70, 0x7d, 0x71, 0x7c, 0x08, 0x7f, + 0x5d, 0x80, 0x7b, 0x90, + 0xe0, 0x19, 0x74, 0xff, 0xc3, 0x17, 0x50, 0x9f, 0xef, 0x57, 0x57, 0x94, + 0x52, 0x50, 0x7a, 0x90, + 0xe0, 0xdd, 0x64, 0x94, 0x7a, 0x90, 0xe0, 0xdc, 0x00, 0x94, 0x0f, 0x40, + 0x90, 0xd3, 0xdb, 0x7a, + 0x94, 0xe0, 0x90, 0x78, 0xda, 0x7a, 0x94, 0xe0, 0x50, 0x00, 0x7d, 0x35, + 0x7c, 0x16, 0x7f, 0x71, + 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, + 0x00, 0x7e, 0x29, 0x12, + 0x7d, 0xa5, 0x7c, 0x70, 0xe4, 0x71, 0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, + 0x7c, 0x57, 0xe4, 0x71, + 0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x6c, 0x7f, 0x71, 0x7e, 0x5a, + 0x12, 0x00, 0xa5, 0x29, + 0x7a, 0x90, 0xe0, 0xc0, 0xe0, 0x20, 0x02, 0x03, 0xc6, 0x0d, 0x7f, 0x90, + 0xe4, 0xd2, 0xf0, 0x75, + 0x12, 0x01, 0x7d, 0x18, 0x7f, 0x90, 0xe4, 0xd4, 0xa3, 0xf0, 0x7f, 0xf0, + 0x7e, 0x29, 0x12, 0x71, + 0x61, 0x29, 0x7b, 0x90, 0xee, 0x1a, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xc3, + 0xee, 0xff, 0x3f, 0x94, + 0x73, 0x40, 0x7b, 0x90, 0xe0, 0x1c, 0x0a, 0x94, 0x63, 0x40, 0x1b, 0x7d, + 0x71, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, + 0x29, 0x12, 0x7d, 0xa5, + 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x02, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, + 0x71, 0x7c, 0x0c, 0x7f, + 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x08, + 0x12, 0x00, 0xa5, 0x29, + 0x1d, 0x7d, 0x71, 0x7c, 0x30, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, + 0x7c, 0x1d, 0x7f, 0x71, + 0x7e, 0x20, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0xa5, 0x29, + 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x80, 0xa5, + 0x90, 0x08, 0x1c, 0x7b, + 0x04, 0xe0, 0x80, 0xf0, 0x90, 0x05, 0x1c, 0x7b, 0xf0, 0xe4, 0x7f, 0x90, + 0xe0, 0xaf, 0xe1, 0x20, + 0x7f, 0x3c, 0x7e, 0x45, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x0f, + 0xa3, 0xf0, 0xf0, 0xef, + 0x46, 0x7f, 0x71, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x11, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, + 0x7e, 0x47, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x13, 0xa3, 0xf0, + 0xf0, 0xef, 0x48, 0x7f, + 0x71, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x15, 0x7b, 0xf0, 0xee, 0xef, 0xa3, + 0x7f, 0xf0, 0x12, 0x04, + 0xe5, 0x17, 0x7b, 0x90, 0xe0, 0x19, 0x94, 0xc3, 0x7d, 0x57, 0x7c, 0x22, + 0x40, 0x71, 0x7f, 0x48, + 0x7e, 0xd0, 0x12, 0x00, 0xa5, 0x29, 0x00, 0x7d, 0x92, 0x7c, 0x01, 0x7f, + 0x00, 0x7e, 0x29, 0x12, + 0x7d, 0xa5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x1f, 0x12, 0x00, 0xa5, 0x29, + 0x6d, 0x7d, 0x71, 0x7c, + 0xff, 0x7f, 0x7f, 0x7e, 0x29, 0x12, 0x90, 0xa5, 0x1d, 0x7b, 0xff, 0xe0, + 0xe0, 0xa3, 0x7b, 0x90, + 0xcf, 0x1f, 0xa3, 0xf0, 0xf0, 0xef, 0x6f, 0x7f, 0x71, 0x7e, 0x29, 0x12, + 0x90, 0x61, 0x1d, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, 0x80, 0xf0, 0x7f, 0x27, 0x7e, 0xd2, 0x12, 0x00, + 0xa5, 0x29, 0x2c, 0x7d, + 0x94, 0x7c, 0x0f, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x00, + 0xe4, 0x92, 0xfe, 0xff, + 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x6d, 0x7f, 0x71, 0x7e, 0xad, 0x12, 0x01, + 0xa5, 0x29, 0x7a, 0x90, + 0xe0, 0xc0, 0xe2, 0x30, 0x7f, 0x73, 0x7e, 0x23, 0x12, 0x71, 0x61, 0x29, + 0x7b, 0x90, 0xef, 0x19, + 0x7f, 0xf0, 0x7e, 0x29, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xee, 0x1a, + 0xa3, 0xf0, 0xf0, 0xef, + 0x22, 0x7d, 0x71, 0x7c, 0xd2, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, + 0x7c, 0x00, 0xe4, 0x92, + 0xfe, 0xff, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x0f, + 0x12, 0x00, 0xa5, 0x29, + 0x6d, 0x7d, 0x71, 0x7c, 0xad, 0x7f, 0x01, 0x7e, 0x29, 0x12, 0x90, 0xa5, + 0xd2, 0x7f, 0xf0, 0xe4, + 0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xd4, 0xf0, 0xa3, 0x57, 0x7d, 0x71, 0x7c, + 0x01, 0x7f, 0x12, 0xfe, + 0xa5, 0x29, 0x16, 0x7d, 0x71, 0x7c, 0x04, 0x7f, 0x00, 0x7e, 0x29, 0x12, + 0x7d, 0xa5, 0x7c, 0x18, + 0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xa5, 0x29, 0x07, 0xd0, 0x06, 0xd0, + 0x05, 0xd0, 0x04, 0xd0, + 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, + 0x83, 0xd0, 0xf0, 0xd0, + 0xe0, 0xd0, 0xe4, 0x32, 0x23, 0xf5, 0x7d, 0x90, 0xe0, 0x68, 0x12, 0xf5, + 0xe0, 0xa3, 0x13, 0xf5, + 0x90, 0xc3, 0x43, 0x7d, 0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, + 0x7d, 0x90, 0xe0, 0x42, + 0x80, 0x64, 0x50, 0x98, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, + 0x90, 0xd3, 0x41, 0x7d, + 0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, 0x7d, 0x90, 0xe0, 0x40, + 0x80, 0x64, 0x40, 0x98, + 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x7d, 0x90, 0xe0, 0x6a, + 0x1a, 0xf5, 0xe0, 0xa3, + 0x1b, 0xf5, 0x95, 0xc3, 0xf5, 0x13, 0xe5, 0x11, 0x95, 0x1a, 0xf5, 0x12, + 0xc3, 0x10, 0x80, 0x64, + 0x80, 0x94, 0x14, 0x50, 0xff, 0x74, 0x12, 0xf5, 0x13, 0xf5, 0xe5, 0xc3, + 0x64, 0x10, 0x94, 0x80, + 0x50, 0x60, 0x75, 0x1d, 0xe0, 0x10, 0x15, 0x80, 0xf5, 0xe4, 0xf5, 0x12, + 0xd3, 0x13, 0x11, 0xe5, + 0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xa0, 0x94, 0x06, 0x40, 0x10, 0x75, + 0x75, 0x20, 0x00, 0x11, + 0x02, 0x20, 0x02, 0x03, 0x42, 0x10, 0x58, 0x30, 0x02, 0x03, 0x42, 0x10, + 0x7d, 0x90, 0xe0, 0x3a, + 0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x70, 0x12, 0xf5, + 0xe0, 0xa3, 0x13, 0xf5, + 0x0f, 0x02, 0x74, 0xed, 0x25, 0x08, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, + 0x00, 0x94, 0x25, 0x40, + 0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, 0x92, 0x10, + 0xe5, 0x18, 0x25, 0x13, + 0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, + 0xec, 0x13, 0xf5, 0x3e, + 0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, + 0x7d, 0x90, 0xe0, 0x3d, + 0xe4, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, + 0xf5, 0x13, 0x92, 0x13, + 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, + 0x30, 0xe0, 0x26, 0xe5, + 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, + 0x1e, 0x92, 0x12, 0xe5, + 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1f, 0x92, + 0x18, 0xe5, 0x13, 0x13, + 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x73, 0x7d, + 0x25, 0xe0, 0xf5, 0x18, + 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xd2, 0xa2, + 0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x71, 0x7d, 0x25, 0xe0, 0xf5, 0x13, + 0x90, 0x13, 0x70, 0x7d, + 0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x30, 0x18, 0x09, 0x18, + 0x12, 0x75, 0x75, 0x7f, + 0xff, 0x13, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, + 0x07, 0x50, 0xf5, 0xe4, + 0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x73, 0x7d, 0x18, 0xe5, 0x90, 0xf0, + 0x70, 0x7d, 0x12, 0xe5, + 0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x74, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, + 0xf5, 0xe0, 0xc3, 0x1b, + 0x13, 0xe5, 0x1b, 0x95, 0x11, 0xf5, 0x12, 0xe5, 0x1a, 0x95, 0x10, 0xf5, + 0x12, 0x85, 0x85, 0x14, + 0x15, 0x13, 0x64, 0xc3, 0x94, 0x80, 0x50, 0x80, 0x74, 0x14, 0xf5, 0xff, + 0xf5, 0x12, 0xc3, 0x13, + 0x10, 0xe5, 0x80, 0x64, 0x60, 0x94, 0x1d, 0x50, 0x10, 0x75, 0x80, 0xe0, + 0xe4, 0x15, 0x12, 0xf5, + 0x13, 0xf5, 0xe5, 0xd3, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, 0x94, 0x80, + 0x40, 0xa0, 0x75, 0x06, + 0x20, 0x10, 0x11, 0x75, 0xe4, 0x00, 0x23, 0xf5, 0x1c, 0x80, 0x02, 0x20, + 0x90, 0x05, 0x78, 0x7d, + 0x03, 0x80, 0x7d, 0x90, 0xe0, 0x74, 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, + 0x7d, 0x90, 0xe5, 0x70, + 0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0x90, 0xc3, 0x87, 0x7d, 0x95, 0xe0, + 0x90, 0x15, 0x86, 0x7d, + 0x95, 0xe0, 0x50, 0x14, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, + 0x90, 0xd3, 0x85, 0x7d, + 0x95, 0xe0, 0x90, 0x15, 0x84, 0x7d, 0x95, 0xe0, 0x40, 0x14, 0xe5, 0x07, + 0xf0, 0x14, 0xe5, 0xa3, + 0xf0, 0x15, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, + 0xf5, 0x15, 0x74, 0x15, + 0x35, 0x08, 0xf5, 0x14, 0xa2, 0x14, 0x92, 0xd2, 0x30, 0x18, 0xfd, 0x40, + 0x7d, 0x90, 0x30, 0xa0, + 0x09, 0x18, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x80, 0xf0, 0xe5, 0x07, + 0xf0, 0x14, 0xe5, 0xa3, + 0xf0, 0x15, 0x7d, 0x90, 0xe0, 0x3a, 0x30, 0xa3, 0x17, 0xe5, 0x7d, 0x90, + 0xe0, 0xa0, 0xa3, 0xfe, + 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x7d, 0x90, 0xf0, 0xa1, 0x87, 0x74, + 0x90, 0x9e, 0xa0, 0x7d, + 0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa0, 0x7c, 0x28, 0x12, 0x67, 0xea, 0x2a, + 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x7d, 0x90, 0xe0, 0x3b, 0xe4, 0xff, 0xf8, 0xc4, 0xf0, 0x54, + 0xef, 0xc8, 0x54, 0xc4, + 0x48, 0x0f, 0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x7a, + 0x12, 0xf5, 0xe0, 0xa3, + 0x13, 0xf5, 0x12, 0x02, 0x74, 0x0c, 0x25, 0x07, 0xf5, 0x19, 0xe5, 0x19, + 0xd3, 0x19, 0x00, 0x94, + 0x25, 0x40, 0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, + 0x92, 0x10, 0xe5, 0x18, + 0x25, 0x13, 0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, + 0xf5, 0x23, 0xec, 0x13, + 0xf5, 0x3e, 0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, + 0x18, 0x8f, 0x7d, 0x90, + 0xe0, 0x3d, 0xe2, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, + 0x13, 0xe5, 0xf5, 0x13, + 0x92, 0x13, 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, + 0x3d, 0x7d, 0x30, 0xe0, + 0x26, 0xe3, 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, + 0x13, 0xf5, 0x1e, 0x92, + 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, + 0x1f, 0x92, 0x18, 0xe5, + 0x13, 0x13, 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0xc2, 0x23, + 0x90, 0x19, 0x7d, 0x7d, + 0x25, 0xe0, 0xf5, 0x18, 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, + 0xe4, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x7b, 0x7d, + 0x25, 0xe0, 0xf5, 0x13, + 0x90, 0x13, 0x7a, 0x7d, 0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, + 0x20, 0x18, 0x17, 0x18, + 0x7d, 0x90, 0xe0, 0x2c, 0xa3, 0xfe, 0xff, 0xe0, 0xe5, 0xd3, 0x9f, 0x13, + 0x64, 0xee, 0xf8, 0x80, + 0x12, 0xe5, 0x80, 0x64, 0x40, 0x98, 0x90, 0x0d, 0x2c, 0x7d, 0xf5, 0xe0, + 0xa3, 0x12, 0xf5, 0xe0, + 0x75, 0x13, 0xff, 0x18, 0xe5, 0xc3, 0x64, 0x12, 0x94, 0x80, 0x50, 0x80, + 0xe4, 0x07, 0x12, 0xf5, + 0x13, 0xf5, 0x18, 0xf5, 0x7d, 0x90, 0xe5, 0x7d, 0xf0, 0x18, 0x7d, 0x90, + 0xe5, 0x7a, 0xf0, 0x12, + 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xc3, 0x95, 0x7d, 0x95, 0xe0, 0x90, 0x13, + 0x94, 0x7d, 0x95, 0xe0, + 0x50, 0x12, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xd3, + 0x93, 0x7d, 0x95, 0xe0, + 0x90, 0x13, 0x92, 0x7d, 0x95, 0xe0, 0x40, 0x12, 0xe5, 0x07, 0xf0, 0x12, + 0xe5, 0xa3, 0xf0, 0x13, + 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, 0xf5, 0x13, + 0x74, 0x13, 0x35, 0x08, + 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x20, 0x18, 0x14, 0x18, 0x7d, 0x90, + 0xe0, 0x7e, 0xa3, 0xfe, + 0x25, 0xe0, 0xf5, 0x13, 0xee, 0x13, 0x12, 0x35, 0x12, 0xf5, 0xd2, 0xa2, + 0x18, 0x92, 0x40, 0x30, + 0x90, 0xfd, 0xa0, 0x7d, 0x18, 0x30, 0x74, 0x09, 0xf0, 0x7f, 0x74, 0xa3, + 0xf0, 0xff, 0x07, 0x80, + 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x3a, 0x7d, 0xa3, 0xe0, + 0xe6, 0x30, 0x90, 0x17, + 0xa0, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xff, 0x74, 0x90, 0x9f, + 0xa1, 0x7d, 0x74, 0xf0, + 0x9e, 0x87, 0x7d, 0x90, 0xf0, 0xa0, 0x7d, 0x7e, 0xa0, 0x7f, 0x29, 0x7d, + 0x67, 0x7c, 0x2a, 0x12, + 0xa2, 0xea, 0x92, 0xd1, 0xd0, 0xaf, 0xc2, 0xd0, 0x22, 0x18, 0xf5, 0xe4, + 0xd2, 0x2c, 0xc2, 0x40, + 0x7b, 0x00, 0x7a, 0xff, 0x79, 0x25, 0x90, 0xc1, 0x31, 0x7b, 0x19, 0x12, + 0x7b, 0xed, 0x7a, 0x00, + 0x79, 0x00, 0x90, 0x00, 0x34, 0x7b, 0x19, 0x12, 0x90, 0xed, 0x37, 0x7b, + 0x19, 0x12, 0x90, 0xed, + 0x3a, 0x7b, 0x19, 0x12, 0x90, 0xed, 0x3d, 0x7b, 0x19, 0x12, 0x74, 0xed, + 0x90, 0xff, 0xfa, 0x7f, + 0xa3, 0xf0, 0x90, 0xf0, 0x80, 0x7d, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0xff, + 0xb8, 0x75, 0x75, 0x38, + 0x01, 0xf8, 0xa8, 0x75, 0xe4, 0x82, 0xa9, 0xf5, 0xaa, 0xf5, 0xab, 0xf5, + 0xff, 0x7b, 0x2b, 0x7a, + 0x23, 0x79, 0x7b, 0x90, 0x12, 0x5a, 0xed, 0x19, 0x7b, 0x90, 0x12, 0x5d, + 0xed, 0x19, 0xd1, 0xd2, + 0x00, 0x00, 0x90, 0x00, 0xfa, 0x7f, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, + 0x02, 0x03, 0x9b, 0x15, + 0x7f, 0x90, 0xe0, 0xfa, 0xa3, 0xfe, 0x70, 0xe4, 0xee, 0x02, 0x60, 0xf4, + 0x02, 0x03, 0x7c, 0x15, + 0xf4, 0xe0, 0x03, 0x70, 0x15, 0x02, 0x90, 0x74, 0xfb, 0x7f, 0x64, 0xe0, + 0x70, 0xfe, 0x90, 0x23, + 0xf8, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, 0xfe, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, + 0x7f, 0x90, 0xcf, 0xf6, + 0xa3, 0xf0, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0xfc, 0xa3, 0xff, 0x90, 0xe0, + 0xf4, 0x7f, 0x02, 0xcf, + 0x39, 0x15, 0x7f, 0x90, 0xe0, 0xfb, 0xfd, 0x64, 0x2a, 0x70, 0xd0, 0xc0, + 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x7f, 0x7e, 0xf6, 0x7f, + 0x12, 0x7d, 0x11, 0x7c, + 0x2a, 0x12, 0x7e, 0xca, 0x7f, 0x7f, 0x7d, 0xf4, 0x7c, 0x13, 0x12, 0x11, + 0xca, 0x2a, 0x40, 0x30, + 0x02, 0xfd, 0x5b, 0x14, 0x7f, 0x90, 0xe0, 0xfb, 0xc0, 0x64, 0x03, 0x60, + 0x14, 0x02, 0xc0, 0x64, + 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xf8, 0x7f, 0xa3, 0xe0, + 0x54, 0xe0, 0x90, 0x7f, + 0x57, 0x7b, 0xe0, 0xf0, 0xd3, 0xff, 0x1c, 0x94, 0x0d, 0x40, 0x7f, 0x90, + 0x74, 0xf8, 0xf0, 0xff, + 0x74, 0xa3, 0xf0, 0xfc, 0x14, 0x02, 0x90, 0x5b, 0xf9, 0x7f, 0x30, 0xe0, + 0x25, 0xe7, 0x7f, 0x7c, + 0xf6, 0x7d, 0x74, 0xc3, 0x9f, 0xf6, 0x74, 0xfe, 0x94, 0x7f, 0x90, 0x00, + 0x53, 0x7b, 0xa3, 0xf0, + 0xf0, 0xce, 0x7f, 0x90, 0xe0, 0xf6, 0xa3, 0xff, 0x90, 0xe0, 0x55, 0x7b, + 0xf0, 0xcf, 0xef, 0xa3, + 0x80, 0xf0, 0x90, 0x26, 0xf6, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, + 0xcf, 0x53, 0xa3, 0xf0, + 0xf0, 0xef, 0xf6, 0x7f, 0x7b, 0x90, 0xe0, 0x57, 0xc3, 0xfd, 0xf6, 0x74, + 0xfe, 0x9d, 0x7f, 0x74, + 0x00, 0x94, 0x7b, 0x90, 0xf0, 0x55, 0xce, 0xa3, 0x90, 0xf0, 0x57, 0x7b, + 0xd3, 0xe0, 0x00, 0x94, + 0x2a, 0x40, 0x7b, 0x90, 0xe4, 0x53, 0xf0, 0x75, 0x12, 0x01, 0x93, 0x18, + 0xf0, 0x85, 0xf5, 0x82, + 0xe0, 0x83, 0x90, 0xff, 0x55, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x18, 0x12, + 0x85, 0x93, 0x82, 0xf0, + 0x83, 0xf5, 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x57, 0xf0, 0x14, 0xcd, 0x80, + 0x90, 0xe4, 0xf8, 0x7f, + 0xa3, 0xf0, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x02, 0xd0, 0x94, 0x15, + 0x7f, 0x90, 0xe0, 0xfb, + 0x80, 0x64, 0x5b, 0x70, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xa8, 0xaf, + 0x7f, 0x90, 0xf0, 0xf6, + 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xa9, 0xf4, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, + 0xaf, 0xf0, 0x90, 0xaa, + 0xf2, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xab, 0xf0, 0x7f, + 0xf0, 0xe4, 0xef, 0xa3, + 0xaf, 0xf0, 0x90, 0xb8, 0xee, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, + 0x90, 0xf8, 0xec, 0x7f, + 0xf0, 0xe4, 0xef, 0xa3, 0xaf, 0xf0, 0x90, 0xd0, 0xea, 0x7f, 0xf0, 0xe4, + 0xef, 0xa3, 0xa2, 0xf0, + 0xe4, 0x40, 0x33, 0xff, 0x7f, 0x90, 0xcf, 0xe8, 0xa3, 0xf0, 0xf0, 0xef, + 0x15, 0x02, 0x90, 0x94, + 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x88, 0x90, 0x49, 0xf6, 0x7f, 0xa3, 0xe0, + 0xf5, 0xe0, 0x90, 0xa8, + 0xf4, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xa9, 0xf2, 0x7f, 0xa3, 0xe0, + 0xf5, 0xe0, 0x90, 0xaa, + 0xf0, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xab, 0xee, 0x7f, 0xa3, 0xe0, + 0xf5, 0xe0, 0x90, 0xb8, + 0xec, 0x7f, 0xa3, 0xe0, 0xf5, 0xe0, 0x90, 0xf8, 0xea, 0x7f, 0xa3, 0xe0, + 0xf5, 0xe0, 0x90, 0xd0, + 0xe8, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0x24, 0x4f, 0x92, 0xff, + 0xe4, 0x40, 0x5c, 0x80, + 0x7f, 0x90, 0xe0, 0xfb, 0x89, 0x64, 0x06, 0x70, 0x29, 0x12, 0xe4, 0x3a, + 0x4e, 0x80, 0x7f, 0x90, + 0xe0, 0xfb, 0x82, 0x64, 0x11, 0x70, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, + 0x81, 0xaf, 0x7f, 0x90, + 0xf0, 0xf6, 0xef, 0xa3, 0x80, 0xf0, 0x90, 0x55, 0xfb, 0x7f, 0x64, 0xe0, + 0x70, 0x83, 0x90, 0x10, + 0x80, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0xf8, 0x7f, 0xa3, 0xf0, 0xd2, 0xf0, + 0x80, 0x00, 0x90, 0x3d, + 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x84, 0x90, 0x13, 0x80, 0x7d, 0xa3, 0xf0, + 0xff, 0x74, 0xe4, 0xf0, + 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x00, 0xc2, 0x22, 0x80, 0xff, 0x74, + 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0x18, 0x80, 0x7b, 0x90, 0x12, 0x31, 0xe4, 0x19, 0x4a, 0xe9, + 0x05, 0x60, 0x1a, 0x12, + 0x80, 0x1c, 0x90, 0x09, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x14, + 0x90, 0xe4, 0xfa, 0x7f, + 0xa3, 0xf0, 0x12, 0xf0, 0xff, 0x15, 0x13, 0x02, 0xc2, 0x1b, 0x80, 0xaf, + 0x32, 0xfe, 0xe0, 0xc0, + 0xd0, 0xe5, 0x18, 0x54, 0x08, 0x64, 0x03, 0x70, 0xe0, 0xd0, 0xd0, 0x32, + 0x12, 0xe0, 0xa5, 0x15, + 0xd0, 0x85, 0x75, 0x0b, 0x08, 0xd0, 0xe0, 0xaa, 0x8c, 0xc2, 0x8a, 0xe5, + 0xf7, 0x24, 0x8a, 0xf5, + 0x8c, 0xe5, 0xd8, 0x34, 0x8c, 0xf5, 0x8c, 0xd2, 0x24, 0xec, 0xf8, 0x38, + 0xbc, 0xe6, 0x02, 0x04, + 0x7f, 0x74, 0x95, 0xc3, 0xb4, 0x81, 0x00, 0x01, 0xbf, 0x40, 0x05, 0x79, + 0x2d, 0x78, 0xe6, 0x16, + 0x70, 0x08, 0xc2, 0x0b, 0xe6, 0xaf, 0xe1, 0x30, 0x44, 0x03, 0xf6, 0x18, + 0xaf, 0xd2, 0xd9, 0x08, + 0xea, 0xed, 0xd0, 0x8b, 0x08, 0xd2, 0xe5, 0x22, 0xff, 0x0c, 0x24, 0x23, + 0xf8, 0x2e, 0x08, 0x0f, + 0xef, 0x08, 0x0c, 0xb5, 0x10, 0x06, 0x03, 0x08, 0x87, 0x43, 0xbf, 0x01, + 0x04, 0x05, 0x00, 0x7f, + 0x2e, 0x78, 0x30, 0xe6, 0xe8, 0xe4, 0xe5, 0x00, 0xc3, 0x0c, 0x50, 0x9f, + 0x05, 0x20, 0x74, 0x0c, + 0x25, 0x37, 0xf8, 0x0c, 0xfd, 0xe6, 0x81, 0xa6, 0xe6, 0x08, 0x0c, 0xae, + 0x04, 0xbe, 0x74, 0x02, + 0xcd, 0x7f, 0xe8, 0xf8, 0x60, 0x6d, 0x08, 0xe0, 0xc0, 0xe6, 0x80, 0xe0, + 0xe5, 0xf6, 0xd3, 0x0c, + 0x40, 0x9f, 0xe5, 0x27, 0x24, 0x0c, 0xf8, 0x38, 0xae, 0xe6, 0xbe, 0x0c, + 0x02, 0x04, 0x7f, 0x74, + 0x18, 0xfd, 0xcd, 0xe6, 0xe5, 0xf8, 0x6d, 0x81, 0x06, 0x60, 0xe0, 0xd0, + 0x18, 0xf6, 0xf5, 0x80, + 0x0c, 0xe5, 0x37, 0x24, 0xf6, 0xc8, 0x0c, 0x15, 0xd3, 0x80, 0x0c, 0xe5, + 0x24, 0x23, 0xf8, 0x2e, + 0x04, 0x7f, 0xaf, 0xc2, 0x30, 0xe6, 0x03, 0xe0, 0xe2, 0x10, 0x7f, 0x0c, + 0x30, 0x00, 0x07, 0xe1, + 0xe3, 0x30, 0x7f, 0x04, 0x54, 0x08, 0x54, 0xf4, 0xc6, 0x7c, 0xaf, 0xd2, + 0x80, 0x54, 0x07, 0x42, + 0x78, 0x22, 0xa6, 0x37, 0x74, 0x81, 0x60, 0x04, 0xff, 0x06, 0x76, 0x08, + 0xdf, 0x7f, 0x7f, 0xfb, + 0xe4, 0x05, 0x2d, 0x78, 0x08, 0xf6, 0x08, 0xf6, 0xfa, 0xdf, 0x2e, 0x78, + 0x30, 0x76, 0x2b, 0x90, + 0x74, 0x19, 0x93, 0x01, 0xe0, 0xc0, 0x93, 0xe4, 0xe0, 0xc0, 0x89, 0x43, + 0x75, 0x01, 0xf0, 0x8a, + 0x8c, 0x75, 0xd2, 0xd8, 0xd2, 0x8c, 0xd2, 0xaf, 0x22, 0xa9, 0xef, 0x04, + 0x94, 0xd3, 0x40, 0x04, + 0x7f, 0x03, 0x22, 0xff, 0x2e, 0x74, 0x2f, 0x2f, 0xe6, 0xf8, 0xe5, 0x20, + 0xc2, 0xf4, 0xe6, 0xaf, + 0x30, 0x44, 0xd2, 0xf6, 0xae, 0xaf, 0xee, 0x0c, 0x9f, 0xc3, 0x21, 0x50, + 0x74, 0x0e, 0x2e, 0x37, + 0xe6, 0xf8, 0x08, 0xf9, 0x18, 0xe6, 0x04, 0xbe, 0x74, 0x02, 0xfd, 0x7f, + 0x69, 0xed, 0x09, 0x60, + 0xe7, 0x09, 0x19, 0x19, 0x09, 0xf7, 0x80, 0x09, 0x16, 0xf3, 0x80, 0x16, + 0xee, 0xda, 0x9f, 0xd3, + 0x04, 0x40, 0x81, 0x05, 0x81, 0x05, 0xd3, 0xee, 0x40, 0x9f, 0x74, 0x22, + 0x2e, 0x37, 0x08, 0xf8, + 0xf9, 0xe6, 0xb5, 0xee, 0x02, 0x0c, 0x81, 0xa9, 0x06, 0x18, 0xe6, 0x06, + 0xed, 0xfd, 0x60, 0x69, + 0x19, 0x09, 0xe7, 0x19, 0x09, 0x09, 0x19, 0xf7, 0xf3, 0x80, 0x80, 0x1e, + 0xef, 0xd9, 0x37, 0x24, + 0xe6, 0xf8, 0xf8, 0x04, 0x2f, 0xef, 0x90, 0x04, 0x19, 0x2b, 0xf6, 0x93, + 0xef, 0x08, 0x93, 0x2f, + 0x7f, 0xf6, 0x22, 0x00, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, + 0xef, 0x22, 0x24, 0x23, + 0xf8, 0x2e, 0x30, 0xe6, 0xf4, 0xe5, 0xaf, 0xc2, 0x54, 0xe6, 0xf6, 0x8c, + 0xaf, 0xd2, 0x0c, 0xe5, + 0x07, 0xb5, 0x74, 0x0a, 0x2f, 0x37, 0xe6, 0xf8, 0x81, 0xf5, 0x15, 0x02, + 0x50, 0xff, 0x74, 0x2e, + 0x2f, 0x38, 0xe6, 0xf8, 0x04, 0xbf, 0x74, 0x02, 0xfd, 0x7f, 0xe6, 0x18, + 0x74, 0xf9, 0x2f, 0x37, + 0xfb, 0xf8, 0xfc, 0xe6, 0x6c, 0xe9, 0x08, 0x60, 0x05, 0xa8, 0xf6, 0xe7, + 0x19, 0x1d, 0xf4, 0x80, + 0x03, 0xa8, 0x05, 0xa6, 0xe5, 0x1f, 0xb5, 0x0c, 0xe3, 0x07, 0x00, 0x7f, + 0x74, 0x22, 0x2f, 0x38, + 0xe6, 0xf8, 0x18, 0xfd, 0x01, 0x86, 0x74, 0x0f, 0x2f, 0x37, 0xa6, 0xf8, + 0x08, 0x01, 0x04, 0x86, + 0x0c, 0xe5, 0x07, 0xb5, 0xac, 0x02, 0xed, 0x81, 0x60, 0x6c, 0x0d, 0x08, + 0xa8, 0x09, 0xe6, 0x05, + 0x80, 0xf7, 0xe5, 0xf4, 0xb5, 0x0c, 0xde, 0x07, 0x81, 0x89, 0x00, 0x7f, + 0xef, 0x22, 0x94, 0xd3, + 0x40, 0x04, 0x7f, 0x03, 0x22, 0xff, 0x23, 0xef, 0x2e, 0x24, 0xc2, 0xf8, + 0xe6, 0xaf, 0xe5, 0x30, + 0x30, 0x05, 0x02, 0xe0, 0xe4, 0xd2, 0xe2, 0xd2, 0xd2, 0xc6, 0x7f, 0xaf, + 0x30, 0x00, 0x01, 0xe2, + 0x02, 0x0f, 0xfc, 0x15, 0xf0, 0x8f, 0xff, 0xe4, 0xe5, 0xfe, 0x23, 0x0c, + 0x2d, 0x24, 0xc2, 0xf8, + 0x30, 0xa9, 0x0d, 0xf7, 0x08, 0x7f, 0x60, 0xe6, 0x2d, 0x0b, 0x60, 0xf6, + 0x50, 0x32, 0x80, 0x30, + 0x30, 0x07, 0x06, 0xf1, 0xf6, 0xed, 0x27, 0x60, 0x02, 0x7e, 0x30, 0x08, + 0x10, 0xf0, 0xaf, 0xc2, + 0x10, 0xe6, 0x25, 0xe7, 0x30, 0x0e, 0x0c, 0xe2, 0xaf, 0xd2, 0x04, 0x7f, + 0x14, 0x80, 0xaf, 0xc2, + 0x10, 0xe6, 0x15, 0xe7, 0xec, 0x54, 0xf6, 0x4e, 0xaf, 0xd2, 0xa9, 0xd2, + 0x15, 0x02, 0x7f, 0xff, + 0x08, 0x08, 0x44, 0xef, 0xf4, 0x83, 0xaf, 0xc2, 0xc6, 0x56, 0xaf, 0xd2, + 0xa9, 0xd2, 0x80, 0x54, + 0xff, 0x4f, 0xef, 0x22, 0xf0, 0x8d, 0xa8, 0xa4, 0xcf, 0xf0, 0xf0, 0x8c, + 0x28, 0xa4, 0x8d, 0xce, + 0xa4, 0xf0, 0xfe, 0x2e, 0xc5, 0x22, 0xf8, 0xf0, 0xe0, 0xa3, 0xf0, 0x28, + 0xf0, 0xc5, 0xe5, 0xf8, + 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, 0xf0, 0x38, 0xa3, 0x22, + 0xe0, 0xf8, 0xf0, 0xc5, + 0xf0, 0x25, 0xe5, 0xf0, 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, + 0x38, 0xc8, 0xe8, 0xf0, + 0xef, 0x22, 0xff, 0x2b, 0x3a, 0xee, 0xed, 0xfe, 0xfd, 0x39, 0x38, 0xec, + 0x22, 0xfc, 0xef, 0xc3, + 0xff, 0x9b, 0x9a, 0xee, 0xed, 0xfe, 0xfd, 0x99, 0x98, 0xec, 0x22, 0xfc, + 0x8f, 0xe8, 0xa4, 0xf0, + 0x8b, 0xcc, 0xa4, 0xf0, 0xfc, 0x2c, 0x8e, 0xe9, 0xa4, 0xf0, 0xfc, 0x2c, + 0xf0, 0x8a, 0xa4, 0xed, + 0xfc, 0x2c, 0x8e, 0xea, 0xa4, 0xf0, 0xa8, 0xcd, 0x8b, 0xf0, 0xa4, 0xf0, + 0xcc, 0x2d, 0x25, 0x38, + 0xfd, 0xf0, 0x8f, 0xe9, 0xa4, 0xf0, 0xcd, 0x2c, 0xf0, 0x35, 0xeb, 0xfc, + 0xf0, 0x8e, 0xfe, 0xa4, + 0xf0, 0xa9, 0x8f, 0xeb, 0xa4, 0xf0, 0xc5, 0xcf, 0x2e, 0xf0, 0x39, 0xcd, + 0xe4, 0xfe, 0xfc, 0x3c, + 0xa4, 0xea, 0xce, 0x2d, 0xf0, 0x35, 0xe4, 0xfd, 0xfc, 0x3c, 0xc3, 0x22, + 0x9f, 0xe4, 0xe4, 0xff, + 0xfe, 0x9e, 0x9d, 0xe4, 0xe4, 0xfd, 0xfc, 0x9c, 0xeb, 0x22, 0xf5, 0x9f, + 0xea, 0xf0, 0x42, 0x9e, + 0xe9, 0xf0, 0x42, 0x9d, 0xec, 0xf0, 0x80, 0x64, 0x64, 0xc8, 0x98, 0x80, + 0xf0, 0x45, 0xeb, 0x22, + 0xf5, 0x9f, 0xea, 0xf0, 0x42, 0x9e, 0xe9, 0xf0, 0x42, 0x9d, 0xe8, 0xf0, + 0x45, 0x9c, 0x22, 0xf0, + 0x60, 0xe8, 0xec, 0x10, 0xe7, 0xa2, 0xfc, 0x13, 0x13, 0xed, 0xee, 0xfd, + 0xfe, 0x13, 0x13, 0xef, + 0xd8, 0xff, 0x22, 0xf0, 0x60, 0xe8, 0xef, 0x0f, 0x33, 0xc3, 0xee, 0xff, + 0xfe, 0x33, 0x33, 0xed, + 0xec, 0xfd, 0xfc, 0x33, 0xf1, 0xd8, 0xe0, 0x22, 0xa3, 0xfc, 0xfd, 0xe0, + 0xe0, 0xa3, 0xa3, 0xfe, + 0xff, 0xe0, 0xe4, 0x22, 0xfc, 0x93, 0x01, 0x74, 0xfd, 0x93, 0x02, 0x74, + 0xfe, 0x93, 0x03, 0x74, + 0xff, 0x93, 0xe0, 0x22, 0xa3, 0xf8, 0xf9, 0xe0, 0xe0, 0xa3, 0xa3, 0xfa, + 0xfb, 0xe0, 0xe4, 0x22, + 0xf8, 0x93, 0x01, 0x74, 0xf9, 0x93, 0x02, 0x74, 0xfa, 0x93, 0x03, 0x74, + 0xfb, 0x93, 0xec, 0x22, + 0xa3, 0xf0, 0xf0, 0xed, 0xee, 0xa3, 0xa3, 0xf0, 0xf0, 0xef, 0xa8, 0x22, + 0x85, 0x82, 0xf0, 0x83, + 0x83, 0xd0, 0x82, 0xd0, 0x19, 0x12, 0x12, 0xca, 0xca, 0x19, 0x19, 0x12, + 0x12, 0xca, 0xca, 0x19, + 0x73, 0xe4, 0x93, 0xe4, 0xc5, 0xa3, 0xc5, 0x83, 0xc5, 0xf0, 0xc8, 0x83, + 0x82, 0xc5, 0xf0, 0xc8, + 0xc5, 0xa3, 0xc5, 0x83, 0xc5, 0xf0, 0xc8, 0x83, 0x82, 0xc5, 0x22, 0xc8, + 0xfb, 0xe0, 0xe0, 0xa3, + 0xa3, 0xfa, 0xf9, 0xe0, 0xeb, 0x22, 0xa3, 0xf0, 0xf0, 0xea, 0xe9, 0xa3, + 0x22, 0xf0, 0x83, 0xd0, + 0x82, 0xd0, 0xe4, 0xf8, 0x70, 0x93, 0x74, 0x12, 0x93, 0x01, 0x0d, 0x70, + 0xa3, 0xa3, 0xf8, 0x93, + 0x01, 0x74, 0xf5, 0x93, 0x88, 0x82, 0xe4, 0x83, 0x74, 0x73, 0x93, 0x02, + 0x60, 0x68, 0xa3, 0xef, + 0xa3, 0xa3, 0xdf, 0x80, 0x83, 0x8a, 0x82, 0x89, 0x73, 0xe4, 0xf0, 0x75, + 0x75, 0x08, 0x00, 0x82, + 0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xcd, 0xcc, 0xcd, 0xcc, 0x33, + 0x82, 0xc5, 0xc5, 0x33, + 0x9b, 0x82, 0x9a, 0xed, 0x99, 0xec, 0x82, 0xe5, 0x40, 0x98, 0xf5, 0x0c, + 0xee, 0x82, 0xfe, 0x9b, + 0x9a, 0xed, 0xec, 0xfd, 0xfc, 0x99, 0xd5, 0x0f, 0xd6, 0xf0, 0xce, 0xe4, + 0xe4, 0xfb, 0xfa, 0xcd, + 0xcc, 0xe4, 0xa8, 0xf9, 0x22, 0x82, 0x00, 0xb8, 0xb9, 0xc1, 0x59, 0x00, + 0x00, 0xba, 0xec, 0x2d, + 0xf0, 0x8b, 0xcf, 0x84, 0xcd, 0xce, 0xe5, 0xfc, 0xcb, 0xf0, 0x78, 0xf9, + 0xef, 0x18, 0xff, 0x2f, + 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xeb, 0xfc, 0xfb, 0x33, + 0xd7, 0x10, 0x99, 0x03, + 0x04, 0x40, 0x99, 0xeb, 0x0f, 0xfb, 0xe5, 0xd8, 0xf9, 0xe4, 0x22, 0xfa, + 0x18, 0x78, 0x2f, 0xef, + 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, 0xec, 0xfd, 0xfc, 0x33, 0x33, 0xc9, + 0x10, 0xc9, 0x05, 0xd7, + 0xe9, 0x9b, 0x40, 0x9a, 0xec, 0x07, 0xfc, 0x9b, 0x9a, 0xe9, 0x0f, 0xf9, + 0xe0, 0xd8, 0xc9, 0xe4, + 0xe4, 0xfa, 0xfb, 0xcc, 0x75, 0x22, 0x10, 0xf0, 0x2f, 0xef, 0xee, 0xff, + 0xfe, 0x33, 0x33, 0xed, + 0xcc, 0xfd, 0xcc, 0x33, 0x33, 0xc8, 0x10, 0xc8, 0x07, 0xd7, 0xec, 0x9b, + 0xe8, 0x9a, 0x40, 0x99, + 0xed, 0x0a, 0xfd, 0x9b, 0x9a, 0xec, 0xe8, 0xfc, 0xf8, 0x99, 0xd5, 0x0f, + 0xda, 0xf0, 0xcd, 0xe4, + 0xe4, 0xfb, 0xfa, 0xcc, 0xc8, 0xe4, 0x22, 0xf9, 0x7b, 0x90, 0xee, 0x21, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7b, 0x90, 0xe0, 0x0d, 0x55, 0x64, 0x04, 0x70, 0xe0, 0xa3, 0xaa, 0x64, + 0x16, 0x60, 0x7b, 0x90, + 0x74, 0x0d, 0xf0, 0x55, 0x74, 0xa3, 0xf0, 0xaa, 0x7b, 0x90, 0x74, 0x0c, + 0xf0, 0xae, 0x7b, 0x90, + 0x74, 0x0a, 0xf0, 0x3c, 0x3b, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, + 0x2d, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, + 0xee, 0x2f, 0xa3, 0xf0, + 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x21, 0xa3, 0xfa, 0xfb, 0xe0, 0x01, 0x64, + 0x70, 0x4a, 0x90, 0x13, + 0x2d, 0x7b, 0x19, 0x12, 0xef, 0x6f, 0x68, 0x24, 0xee, 0xff, 0x14, 0x34, + 0xed, 0xfe, 0xa5, 0x34, + 0x27, 0x80, 0x64, 0xeb, 0x4a, 0x02, 0x7b, 0x90, 0x70, 0x2d, 0x12, 0x10, + 0x6f, 0x19, 0x24, 0xef, + 0xff, 0x18, 0x34, 0xee, 0xfe, 0x2a, 0x34, 0xed, 0x80, 0x7d, 0x12, 0x0e, + 0x6f, 0x19, 0x24, 0xef, + 0xff, 0x68, 0x34, 0xee, 0xfe, 0x14, 0x34, 0xed, 0xfd, 0xa5, 0x34, 0xec, + 0xfc, 0xff, 0x7b, 0x90, + 0x12, 0x25, 0xa7, 0x19, 0x7b, 0x90, 0x12, 0x2d, 0x6f, 0x19, 0x7b, 0x90, + 0x12, 0x04, 0xa7, 0x19, + 0x7b, 0x90, 0xe0, 0x0a, 0xf0, 0x14, 0xd3, 0xe0, 0x3c, 0x94, 0x03, 0x40, + 0x3c, 0x74, 0x90, 0xf0, + 0x0a, 0x7b, 0x60, 0xe0, 0x02, 0x03, 0x67, 0x1d, 0x3c, 0x74, 0xe4, 0xf0, + 0xfe, 0xff, 0xfc, 0xfd, + 0x7b, 0x90, 0x12, 0x25, 0x8b, 0x19, 0x12, 0xd3, 0x21, 0x19, 0x08, 0x40, + 0x7b, 0x90, 0x12, 0x25, + 0x6f, 0x19, 0x09, 0x80, 0x7b, 0x90, 0x12, 0x25, 0x6f, 0x19, 0x19, 0x12, + 0x90, 0x13, 0x2d, 0x7b, + 0x19, 0x12, 0xe4, 0xa7, 0xfe, 0xff, 0x01, 0x7d, 0x90, 0xfc, 0x2d, 0x7b, + 0x19, 0x12, 0xd3, 0x8b, + 0x19, 0x12, 0x40, 0x37, 0xe4, 0x09, 0x7b, 0x90, 0xf0, 0x23, 0xf0, 0xa3, + 0x0f, 0x80, 0x7b, 0x90, + 0xe0, 0x2f, 0xa3, 0xff, 0x90, 0xe0, 0x23, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, + 0x90, 0xf0, 0x0c, 0x7b, + 0x60, 0xe0, 0x24, 0x20, 0x70, 0xef, 0xc3, 0x33, 0x7b, 0x90, 0xe0, 0x24, + 0xf4, 0x94, 0x7b, 0x90, + 0xe0, 0x23, 0x01, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0xe0, 0x0b, 0xf0, 0x14, + 0x70, 0xe0, 0xa3, 0x4c, + 0x80, 0xf0, 0xd3, 0x48, 0x7b, 0x90, 0xe0, 0x24, 0xf4, 0x94, 0x7b, 0x90, + 0xe0, 0x23, 0x01, 0x94, + 0x39, 0x40, 0x7b, 0x90, 0x74, 0x0c, 0xf0, 0xae, 0x31, 0x80, 0x22, 0x7d, + 0x94, 0x7c, 0x06, 0x7f, + 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x2e, 0x7f, 0x94, 0x7e, 0x0a, + 0x12, 0x00, 0xa5, 0x29, + 0x7b, 0x90, 0x74, 0x0b, 0xf0, 0x0c, 0x90, 0xc3, 0x24, 0x7b, 0x94, 0xe0, + 0x90, 0xf4, 0x23, 0x7b, + 0x94, 0xe0, 0x50, 0x01, 0x90, 0x06, 0x0c, 0x7b, 0x11, 0x74, 0x90, 0xf0, + 0x0b, 0x7b, 0x64, 0xe0, + 0x60, 0x0c, 0x02, 0x03, 0x67, 0x1d, 0xe0, 0xa3, 0x11, 0x64, 0x03, 0x60, + 0x1d, 0x02, 0x7d, 0x67, + 0x7c, 0x2c, 0xff, 0x94, 0x12, 0xfe, 0xa5, 0x29, 0x22, 0x7f, 0x94, 0x7e, + 0x29, 0x12, 0x90, 0x61, + 0x23, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x64, 0xf0, 0x4e, 0x08, 0x0a, 0x60, + 0x7b, 0x90, 0xe4, 0x23, + 0xf0, 0x75, 0x12, 0x01, 0x7d, 0x18, 0x7b, 0x90, 0xe0, 0x23, 0xa3, 0xfe, + 0xff, 0xe0, 0x22, 0x7d, + 0x94, 0x7c, 0x29, 0x12, 0x7f, 0xa5, 0x7e, 0x2e, 0x12, 0x94, 0x61, 0x29, + 0x7b, 0x90, 0xee, 0x23, + 0xa3, 0xf0, 0xf0, 0xef, 0x08, 0x64, 0x70, 0x4e, 0x02, 0x03, 0x5c, 0x1d, + 0x7b, 0x90, 0x74, 0x23, + 0xf5, 0xff, 0x12, 0xf0, 0x7d, 0x18, 0x7b, 0x90, 0xe0, 0x23, 0xa3, 0xfe, + 0xff, 0xe0, 0x2e, 0x7d, + 0x94, 0x7c, 0x29, 0x12, 0x7f, 0xa5, 0x7e, 0x3b, 0x12, 0x94, 0x61, 0x29, + 0x7b, 0x90, 0xee, 0x29, + 0xa3, 0xf0, 0xf0, 0xef, 0x3a, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, + 0x2b, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x35, 0x12, 0x94, 0x61, 0x29, 0x7b, 0x90, + 0xee, 0x2d, 0xa3, 0xf0, + 0xf0, 0xef, 0x34, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x2f, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, + 0x90, 0xf0, 0x29, 0x7b, 0x19, 0x12, 0x90, 0x6f, 0x2d, 0x7b, 0x19, 0x12, + 0x12, 0x8b, 0xb6, 0x18, + 0x7b, 0x90, 0x12, 0x29, 0xa7, 0x19, 0x7b, 0x90, 0xe0, 0x29, 0xa3, 0xfe, + 0xff, 0xe0, 0x31, 0x7d, + 0x94, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0x2b, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0x7d, 0xff, 0x7c, 0x30, + 0x12, 0x94, 0xa5, 0x29, 0x2c, 0x7d, 0x94, 0x7c, 0x1f, 0x7f, 0x00, 0x7e, + 0x29, 0x12, 0x90, 0xa5, + 0x0c, 0x7b, 0xff, 0xe0, 0x90, 0x22, 0x3a, 0x7d, 0xa3, 0xe0, 0x54, 0xe0, + 0xf5, 0x0f, 0x70, 0x19, + 0x02, 0x03, 0x23, 0x1f, 0x18, 0x7f, 0x66, 0x7e, 0x29, 0x12, 0x8e, 0x61, + 0x8f, 0x1a, 0xe5, 0x1b, + 0x45, 0x1b, 0x60, 0x1a, 0x12, 0x15, 0x2b, 0x22, 0x25, 0xef, 0xff, 0xe0, + 0x33, 0xee, 0xef, 0xfe, + 0xff, 0x24, 0xee, 0xff, 0x47, 0x34, 0x1a, 0xf5, 0x1b, 0x8f, 0x90, 0xc3, + 0xcf, 0x7f, 0x95, 0xe0, + 0xf5, 0x1b, 0x90, 0x11, 0xce, 0x7f, 0x95, 0xe0, 0xf5, 0x1a, 0xe4, 0x10, + 0x18, 0xf5, 0x74, 0xc3, + 0x95, 0x0f, 0xf5, 0x19, 0xe4, 0x19, 0x23, 0xf5, 0x16, 0x75, 0xe5, 0x01, + 0xd3, 0x16, 0x19, 0x95, + 0x1a, 0x50, 0x10, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, + 0x11, 0xf5, 0x1f, 0x92, + 0x18, 0xe5, 0x13, 0xc3, 0x23, 0x45, 0x18, 0xf5, 0x16, 0x05, 0xdf, 0x80, + 0x7d, 0x90, 0xe0, 0x3d, + 0xe0, 0x30, 0xe5, 0x16, 0xa2, 0x10, 0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, + 0xf5, 0x13, 0x92, 0x11, + 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, + 0x30, 0xe0, 0x26, 0xe1, + 0x10, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, + 0x1e, 0x92, 0x10, 0xe5, + 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1f, 0x92, + 0x18, 0xe5, 0x13, 0x13, + 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x66, 0x7b, + 0x25, 0xe0, 0xf0, 0x18, + 0x18, 0x92, 0x23, 0xe5, 0x11, 0x25, 0x11, 0xf5, 0x35, 0xe4, 0xf5, 0x10, + 0xc2, 0x10, 0xd3, 0x18, + 0x11, 0xe5, 0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x2b, 0x40, + 0x7b, 0x90, 0xe0, 0x65, + 0x11, 0x25, 0x13, 0xf5, 0x7b, 0x90, 0xe0, 0x64, 0x10, 0x35, 0x12, 0xf5, + 0xe5, 0xd3, 0x94, 0x13, + 0xe5, 0xff, 0x94, 0x12, 0x40, 0x7f, 0x75, 0x08, 0x7f, 0x10, 0x11, 0x75, + 0x80, 0xff, 0x85, 0x18, + 0x10, 0x12, 0x13, 0x85, 0x80, 0x11, 0x90, 0x10, 0x64, 0x7b, 0xfe, 0xe0, + 0xe0, 0xa3, 0x11, 0x25, + 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x3e, 0x90, 0x10, 0x68, 0x7d, 0x10, 0xe5, + 0xa3, 0xf0, 0x11, 0xe5, + 0xc3, 0xf0, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x05, 0x50, 0xf5, 0xe4, + 0xf5, 0x10, 0x90, 0x11, + 0x64, 0x7b, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xe5, 0xe4, 0xf0, 0x14, 0xf5, + 0xe5, 0xd3, 0x94, 0x11, + 0xe5, 0xff, 0x64, 0x10, 0x94, 0x80, 0x40, 0xcf, 0xe5, 0x15, 0x94, 0x14, + 0x50, 0x03, 0xe4, 0x0f, + 0x11, 0x25, 0x11, 0xf5, 0xf0, 0x74, 0x10, 0x35, 0x10, 0xf5, 0x14, 0x05, + 0xde, 0x80, 0x25, 0xe4, + 0xff, 0x11, 0x10, 0xe5, 0xd8, 0x34, 0xe7, 0xa2, 0xfe, 0x13, 0x13, 0xef, + 0x12, 0xff, 0xfe, 0x22, + 0x1a, 0x8e, 0x1b, 0x8f, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, + 0x7d, 0x90, 0xe5, 0xa4, + 0xf0, 0x1a, 0xe5, 0xa3, 0xf0, 0x1b, 0x7d, 0x90, 0xe4, 0xa6, 0xa3, 0xf0, + 0x14, 0xe5, 0x7e, 0xf0, + 0x7f, 0x7d, 0x7d, 0xa4, 0x7c, 0x02, 0x12, 0x00, 0xae, 0x00, 0x14, 0x7b, + 0x00, 0x7a, 0x06, 0x7d, + 0x06, 0x7f, 0x2a, 0x12, 0xa2, 0x1c, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, + 0x03, 0x7f, 0x60, 0x7e, + 0x29, 0x12, 0x90, 0x61, 0x4c, 0x7b, 0xf0, 0xef, 0xe1, 0x20, 0x02, 0x03, + 0x37, 0x20, 0x07, 0x7f, + 0x66, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x4d, 0x7b, 0xf0, 0xef, 0xff, 0xf4, + 0x00, 0x7e, 0x05, 0x7d, + 0x66, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0x4d, 0x7b, 0x20, 0xe0, 0x03, 0xe0, + 0x20, 0x02, 0x7f, 0x37, + 0x7e, 0x23, 0x12, 0x71, 0x61, 0x29, 0x7b, 0x90, 0xef, 0x19, 0xd3, 0xf0, + 0x17, 0x94, 0x03, 0x40, + 0x20, 0x02, 0xc3, 0x27, 0x7b, 0x90, 0xe0, 0x51, 0x40, 0x94, 0x03, 0x50, + 0x20, 0x02, 0x7d, 0x1b, + 0x7c, 0x70, 0xe4, 0x71, 0xfe, 0xff, 0x29, 0x12, 0x7f, 0xa5, 0x7e, 0x3d, + 0x12, 0x71, 0x61, 0x29, + 0x01, 0xbe, 0xbf, 0x0b, 0x08, 0x42, 0x3d, 0x7d, 0x71, 0x7c, 0x52, 0x7f, + 0x1d, 0x80, 0x3d, 0x7f, + 0x71, 0x7e, 0x29, 0x12, 0xbe, 0x61, 0x0d, 0x01, 0x52, 0xbf, 0x7d, 0x0a, + 0x7c, 0x3d, 0x7f, 0x71, + 0x7e, 0x42, 0x80, 0x00, 0x7d, 0x08, 0x7c, 0x3d, 0x7f, 0x71, 0x7e, 0x42, + 0x12, 0x01, 0xa5, 0x29, + 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0xa5, 0x29, 0x1d, 0x7d, + 0x71, 0x7c, 0x03, 0x7f, + 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x02, + 0x12, 0x00, 0xa5, 0x29, + 0x1d, 0x7d, 0x71, 0x7c, 0x0c, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, + 0x7c, 0x1d, 0x7f, 0x71, + 0x7e, 0x08, 0x12, 0x00, 0xa5, 0x29, 0x1d, 0x7d, 0x71, 0x7c, 0x30, 0x7f, + 0x00, 0x7e, 0x29, 0x12, + 0x7d, 0xa5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x20, 0x12, 0x00, 0xa5, 0x29, + 0x1d, 0x7d, 0x71, 0x7c, + 0xff, 0xe4, 0x12, 0xfe, 0xa5, 0x29, 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0x7f, + 0x00, 0x7e, 0x29, 0x12, + 0x80, 0xa5, 0x90, 0x0c, 0x51, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x18, 0x12, + 0x80, 0x7d, 0xe4, 0x07, + 0x7b, 0x90, 0xf0, 0x51, 0xf0, 0xa3, 0x00, 0x12, 0x12, 0xc6, 0x6d, 0x1d, + 0x0e, 0x12, 0x22, 0x5b, + 0x61, 0x20, 0x7f, 0xfd, 0x12, 0x01, 0x0c, 0x18, 0x7f, 0x90, 0xe0, 0xaf, + 0xe1, 0x20, 0x90, 0xf1, + 0xb0, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x11, 0x7b, 0xfc, 0xe0, + 0xe0, 0xa3, 0xd3, 0xfd, + 0xec, 0x9f, 0x40, 0x9e, 0x7f, 0x04, 0x80, 0x01, 0x7f, 0x02, 0xef, 0x00, + 0xe0, 0x25, 0x33, 0xff, + 0xe0, 0x95, 0xe4, 0xfe, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x40, 0x7b, 0x90, + 0xe0, 0x0f, 0xa3, 0xfa, + 0xfb, 0xe0, 0xb3, 0x64, 0x60, 0x4a, 0xeb, 0x0c, 0xb2, 0x64, 0x60, 0x4a, + 0xeb, 0x06, 0xb4, 0x64, + 0x70, 0x4a, 0x7a, 0x06, 0x7b, 0x00, 0x80, 0x01, 0x7a, 0x04, 0x7b, 0x00, + 0xef, 0x00, 0xff, 0x2b, + 0x3a, 0xee, 0x7f, 0x90, 0xf0, 0xe2, 0xef, 0xa3, 0x90, 0xf0, 0xb0, 0x7f, + 0xfe, 0xe0, 0xe0, 0xa3, + 0xd3, 0xff, 0x9f, 0xed, 0x9e, 0xec, 0x6a, 0x40, 0x7b, 0x90, 0xe0, 0x18, + 0x80, 0x94, 0x7b, 0x90, + 0xe0, 0x17, 0x02, 0x94, 0x06, 0x50, 0x75, 0xe4, 0x80, 0xf0, 0x69, 0x80, + 0x7b, 0x90, 0x74, 0x17, + 0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x80, 0x7b, 0x90, 0xe0, 0x0f, 0xa3, 0xfe, + 0xff, 0xe0, 0x40, 0x7d, + 0x71, 0x7c, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x03, + 0x12, 0x00, 0xa5, 0x29, + 0x7b, 0x90, 0xe0, 0x0f, 0xa3, 0xfe, 0xff, 0xe0, 0x94, 0xc3, 0xee, 0xdc, + 0x80, 0x64, 0x80, 0x94, + 0x03, 0x40, 0x20, 0x02, 0xef, 0x38, 0x58, 0x24, 0xee, 0xff, 0x03, 0x34, + 0x7d, 0xfe, 0x7c, 0x41, + 0x12, 0x71, 0xa5, 0x29, 0x24, 0x7d, 0x71, 0x7c, 0x07, 0x7f, 0x00, 0x7e, + 0x29, 0x12, 0x02, 0xa5, + 0x38, 0x20, 0x90, 0xd3, 0x18, 0x7b, 0x94, 0xe0, 0x90, 0x00, 0x17, 0x7b, + 0x94, 0xe0, 0x40, 0x00, + 0x74, 0x0a, 0xf5, 0xff, 0x12, 0xf0, 0x7d, 0x18, 0x20, 0x02, 0x7d, 0x38, + 0x7c, 0x24, 0x7f, 0x71, + 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, 0x20, 0x02, 0x90, 0x38, 0x88, 0x7d, + 0x75, 0xe4, 0x01, 0xf0, + 0x18, 0x12, 0x7f, 0x7d, 0x7e, 0x17, 0x12, 0x93, 0x61, 0x29, 0x7a, 0x90, + 0xee, 0xde, 0xa3, 0xf0, + 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xde, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, + 0x7b, 0x90, 0xee, 0x58, + 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xfd, 0xde, 0x7a, 0x54, 0xe0, 0xf0, 0x0f, + 0xed, 0xd3, 0x04, 0x94, + 0x94, 0xe4, 0x50, 0x00, 0x90, 0x21, 0x58, 0x7b, 0xe0, 0xa3, 0x90, 0xff, + 0xde, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, + 0xf9, 0xd8, 0xee, 0xf0, + 0x7a, 0x90, 0xf0, 0xde, 0x08, 0x80, 0xff, 0x74, 0x7a, 0x90, 0xf0, 0xde, + 0xf0, 0xa3, 0x16, 0x7f, + 0x93, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xf4, 0x7a, 0xf0, 0xee, 0xef, 0xa3, + 0x90, 0xf0, 0xf4, 0x7a, + 0xc4, 0xe0, 0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, 0x58, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0xfd, 0xf0, + 0x7a, 0x90, 0xe0, 0xf4, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, + 0x00, 0x94, 0x21, 0x50, + 0x7b, 0x90, 0xa3, 0x58, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xf4, 0xa3, 0xfe, + 0xa8, 0xe0, 0x08, 0x07, + 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, + 0xf4, 0x7a, 0x80, 0xf0, + 0x74, 0x08, 0x90, 0xff, 0xf4, 0x7a, 0xa3, 0xf0, 0x90, 0xf0, 0xde, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, + 0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xf5, 0xff, 0x9f, 0x7a, 0x90, 0xe0, 0xf4, + 0x90, 0x9e, 0x8a, 0x7d, + 0xf0, 0x8f, 0x18, 0x12, 0x30, 0x7d, 0x0a, 0xd7, 0x7d, 0x90, 0xe4, 0x8c, + 0xf0, 0x75, 0x12, 0x01, + 0x7d, 0x18, 0x8e, 0x22, 0x8f, 0x0d, 0xe5, 0x0e, 0x45, 0x0e, 0x70, 0x0d, + 0x7e, 0x05, 0x7f, 0xff, + 0x22, 0xff, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7b, 0x90, + 0x74, 0x4a, 0xf0, 0x06, + 0x0d, 0xae, 0x0e, 0xaf, 0xfc, 0xe4, 0xfb, 0xfd, 0x40, 0x7a, 0xf8, 0xf9, + 0x12, 0xd3, 0x21, 0x19, + 0x13, 0x40, 0x0e, 0xe5, 0xe0, 0x25, 0x0e, 0xf5, 0x0d, 0xe5, 0xf5, 0x33, + 0x90, 0x0d, 0x4a, 0x7b, + 0x14, 0xe0, 0x80, 0xf0, 0xae, 0xdb, 0xaf, 0x0d, 0xe4, 0x0e, 0xfd, 0xfc, + 0x7a, 0xfb, 0xf9, 0x80, + 0xd3, 0xf8, 0x19, 0x12, 0x50, 0x21, 0xe5, 0x13, 0xc3, 0x0d, 0xf5, 0x13, + 0xe5, 0x0d, 0x13, 0x0e, + 0x0e, 0xf5, 0x7b, 0x90, 0xe0, 0x4a, 0xf0, 0x04, 0xdb, 0x80, 0x0d, 0xae, + 0x0e, 0xaf, 0xfc, 0xe4, + 0x90, 0xfd, 0x40, 0x7b, 0x19, 0x12, 0x90, 0xa7, 0x40, 0x7b, 0x19, 0x12, + 0x78, 0x6f, 0x12, 0x02, + 0x5c, 0x19, 0x2f, 0xe4, 0xee, 0xff, 0x80, 0x34, 0xed, 0xfe, 0xfe, 0x34, + 0xec, 0xfd, 0xff, 0x34, + 0x90, 0xfc, 0x40, 0x7b, 0x19, 0x12, 0x90, 0xa7, 0x48, 0x7b, 0x2a, 0x74, + 0xa3, 0xf0, 0x93, 0x74, + 0x12, 0xf0, 0x50, 0x25, 0x7b, 0x90, 0xe0, 0x4a, 0x33, 0xff, 0xe0, 0x95, + 0xfd, 0xfe, 0x78, 0xfc, + 0x12, 0x0f, 0x5c, 0x19, 0x7b, 0x90, 0x12, 0x44, 0x8b, 0x19, 0x18, 0x12, + 0xef, 0xa9, 0x10, 0x24, + 0xe4, 0xff, 0xfe, 0x3e, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x05, 0x78, + 0x19, 0x12, 0xa2, 0x48, + 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x33, 0xee, + 0xe0, 0x95, 0xfc, 0xfd, 0x05, 0x78, 0x19, 0x12, 0x90, 0x5c, 0x40, 0x7b, + 0x19, 0x12, 0x90, 0xa7, + 0x40, 0x7b, 0x19, 0x12, 0x78, 0x6f, 0x12, 0x0f, 0x48, 0x19, 0x24, 0xef, + 0x90, 0x09, 0x4a, 0x7b, + 0x90, 0xf0, 0x40, 0x7b, 0x19, 0x12, 0xee, 0x6f, 0x7f, 0x54, 0xe4, 0xfe, + 0xfc, 0xfd, 0x01, 0x78, + 0x19, 0x12, 0xe4, 0x5c, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x80, 0x34, 0xed, + 0xfd, 0xff, 0x34, 0xec, + 0xfc, 0xff, 0x7b, 0x90, 0x12, 0x40, 0xa7, 0x19, 0x7b, 0x90, 0x74, 0x48, + 0xf0, 0x2a, 0x74, 0xa3, + 0xf0, 0x87, 0x25, 0x12, 0x90, 0x50, 0x4a, 0x7b, 0xfb, 0xe0, 0x64, 0xc3, + 0x94, 0x80, 0x90, 0x80, + 0x44, 0x7b, 0x0d, 0x50, 0x19, 0x12, 0xeb, 0x6f, 0x04, 0xf4, 0xf8, 0xf9, + 0x19, 0x12, 0x80, 0x48, + 0x12, 0x0c, 0x6f, 0x19, 0x7b, 0x90, 0xe0, 0x4a, 0xf8, 0xf9, 0x19, 0x12, + 0x90, 0x5c, 0x44, 0x7b, + 0x19, 0x12, 0x90, 0xa7, 0x44, 0x7b, 0x19, 0x12, 0xe4, 0x6f, 0xff, 0x2f, + 0x34, 0xee, 0xfe, 0x40, + 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x0f, 0x78, 0x19, 0x12, 0xa2, 0x48, + 0x92, 0xd1, 0xd0, 0xaf, + 0x22, 0xd0, 0x03, 0x7f, 0x90, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xe2, 0x7a, + 0xf0, 0xee, 0xef, 0xa3, + 0x4e, 0xf0, 0x03, 0x70, 0x24, 0x02, 0x90, 0x4f, 0xe3, 0x7a, 0x30, 0xe0, + 0x22, 0xe0, 0x07, 0x7f, + 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0xe8, 0x7a, 0xf0, 0xee, 0xef, 0xa3, + 0xf4, 0xf0, 0xee, 0xff, + 0xfe, 0xf4, 0x7a, 0x90, 0xf0, 0xe4, 0xef, 0xa3, 0x7d, 0xf0, 0x7c, 0x05, + 0x12, 0x94, 0xa5, 0x29, + 0x7a, 0x90, 0xe0, 0xe3, 0xe1, 0x30, 0x7f, 0x37, 0x7e, 0x07, 0x12, 0x93, + 0x61, 0x29, 0x7a, 0x90, + 0xee, 0xec, 0xa3, 0xf0, 0xf0, 0xef, 0xff, 0xf4, 0xf4, 0xee, 0x90, 0xfe, + 0xe0, 0x7a, 0xa3, 0xf0, + 0xf0, 0xef, 0x05, 0x7d, 0x93, 0x7c, 0x29, 0x12, 0x90, 0xa5, 0xec, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x4e, 0xff, 0x0a, 0x60, 0x30, 0xef, 0x06, 0xe1, 0x26, 0x12, 0x12, 0x2d, + 0x41, 0x21, 0x7a, 0x90, + 0xe0, 0xe3, 0xe2, 0x30, 0x7f, 0x22, 0x7e, 0x07, 0x12, 0x92, 0x61, 0x29, + 0x7a, 0x90, 0xee, 0xf2, + 0xa3, 0xf0, 0xf0, 0xef, 0xff, 0xf4, 0xf4, 0xee, 0x90, 0xfe, 0xee, 0x7a, + 0xa3, 0xf0, 0xf0, 0xef, + 0x05, 0x7d, 0x92, 0x7c, 0x29, 0x12, 0x22, 0xa5, 0x90, 0xe4, 0x19, 0x7b, + 0xa3, 0xf0, 0xa3, 0xf0, + 0xa3, 0xf0, 0x90, 0xf0, 0x17, 0x7b, 0xa3, 0xf0, 0x7d, 0xf0, 0x7c, 0x24, + 0x7f, 0x71, 0xfe, 0x81, + 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, + 0xa5, 0x29, 0x90, 0xe4, + 0x1d, 0x7b, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0x7f, 0xf0, 0x7e, 0x12, + 0x12, 0x62, 0x61, 0x29, + 0xfc, 0xe4, 0x90, 0xfd, 0xc1, 0x7a, 0x19, 0x12, 0x90, 0xa7, 0xc1, 0x7a, + 0x19, 0x12, 0x90, 0x6f, + 0xc5, 0x7a, 0x19, 0x12, 0x90, 0xa7, 0xc9, 0x7a, 0x19, 0x12, 0x00, 0xb3, + 0x00, 0x00, 0xe4, 0x00, + 0x7a, 0x90, 0xf0, 0xcd, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xcf, 0x06, 0x7d, + 0x71, 0x7c, 0x17, 0x7f, + 0x12, 0xfe, 0xa5, 0x29, 0x90, 0xe4, 0x8f, 0x7d, 0x90, 0xf0, 0x6a, 0x7d, + 0xff, 0xe0, 0xe0, 0xa3, + 0x7b, 0x90, 0xcf, 0x64, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x66, 0x7b, + 0xc2, 0xf0, 0x22, 0x58, + 0x06, 0x7d, 0x66, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0xe4, 0xa5, + 0x7d, 0x90, 0xf0, 0x4a, + 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x5a, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x52, + 0xf0, 0xa3, 0x7d, 0x90, + 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xf0, 0x57, 0x7d, 0x90, 0xf0, 0x65, + 0x7d, 0x90, 0xf0, 0x58, + 0x04, 0xa3, 0x90, 0xf0, 0x66, 0x7d, 0xf0, 0xe4, 0x04, 0xa3, 0x90, 0xf0, + 0x42, 0x7d, 0x80, 0x74, + 0xa3, 0xf0, 0xf0, 0xe4, 0x7d, 0x90, 0x74, 0x40, 0xf0, 0x7f, 0x74, 0xa3, + 0xf0, 0xff, 0x90, 0xe4, + 0x86, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x84, 0x7d, 0x7f, 0x74, 0xa3, 0xf0, + 0xff, 0x74, 0xe4, 0xf0, + 0x7d, 0x90, 0xf0, 0x94, 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x92, 0xf0, 0x7f, + 0x74, 0xa3, 0xf0, 0xff, + 0x90, 0xe4, 0x30, 0x7d, 0xa3, 0xf0, 0x22, 0xf0, 0x7b, 0x90, 0xe4, 0x48, + 0xf0, 0x75, 0x12, 0x04, + 0x93, 0x18, 0xf0, 0x85, 0xf5, 0x82, 0x12, 0x83, 0x7b, 0x19, 0x7b, 0x90, + 0x12, 0x44, 0xa7, 0x19, + 0x7b, 0x90, 0x74, 0x4b, 0xf0, 0x01, 0x7b, 0x90, 0x12, 0x44, 0x6f, 0x19, + 0x7b, 0x90, 0x12, 0x40, + 0x8b, 0x19, 0x18, 0x12, 0x90, 0xc4, 0x44, 0x7b, 0x19, 0x12, 0x90, 0xa7, + 0x44, 0x7b, 0x19, 0x12, + 0xe4, 0x6f, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x40, 0x3d, 0xe4, 0xe4, 0xfd, + 0xfc, 0x3c, 0x0f, 0x78, + 0x19, 0x12, 0x90, 0x48, 0x48, 0x7b, 0x75, 0xe4, 0x04, 0xf0, 0x18, 0x12, + 0x85, 0x93, 0x82, 0xf0, + 0x83, 0xf5, 0x19, 0x12, 0x12, 0x97, 0xa9, 0x18, 0x7b, 0x90, 0x12, 0x44, + 0xa7, 0x19, 0x7b, 0x90, + 0xe0, 0x4b, 0xf0, 0x04, 0xb4, 0xe0, 0xae, 0x03, 0x90, 0x22, 0xfa, 0x7f, + 0xfe, 0xe0, 0xe4, 0xa3, + 0x03, 0x70, 0x64, 0xee, 0x70, 0x03, 0xe0, 0x47, 0x19, 0x12, 0x25, 0xf6, + 0x01, 0xf2, 0xf5, 0x25, + 0x25, 0x02, 0x03, 0xf8, 0xfb, 0x25, 0x25, 0x04, 0x05, 0xfe, 0x01, 0x26, + 0x26, 0x06, 0x07, 0x04, + 0x07, 0x26, 0x26, 0x08, 0x09, 0x0a, 0x00, 0x00, 0x0d, 0x26, 0x29, 0x02, + 0x02, 0x84, 0x03, 0x00, + 0x2a, 0x02, 0x02, 0x54, 0xe8, 0x28, 0x00, 0x02, 0x02, 0x0e, 0x43, 0x00, + 0x2b, 0x02, 0x02, 0x2c, + 0x34, 0x2b, 0x2a, 0x02, 0x74, 0xb5, 0x90, 0xff, 0xf8, 0x7f, 0xa3, 0xf0, + 0x22, 0xf0, 0x7b, 0x90, + 0x12, 0x3a, 0xe4, 0x19, 0x4a, 0xe9, 0x03, 0x60, 0x1a, 0x02, 0x90, 0x1c, + 0xf8, 0x7f, 0xff, 0x74, + 0xa3, 0xf0, 0xf0, 0x14, 0x7f, 0x22, 0x7e, 0x17, 0x12, 0x93, 0x61, 0x29, + 0x7a, 0x90, 0xee, 0xde, + 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xde, 0x54, 0xc4, 0xff, 0x0f, + 0x00, 0x7e, 0x7b, 0x90, + 0xee, 0x58, 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xfd, 0xde, 0x7a, 0x54, 0xe0, + 0xf0, 0x0f, 0xed, 0xd3, + 0x04, 0x94, 0x94, 0xe4, 0x50, 0x00, 0x90, 0x21, 0x58, 0x7b, 0xe0, 0xa3, + 0x90, 0xff, 0xde, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, + 0xce, 0x33, 0xf9, 0xd8, + 0xee, 0xf0, 0x7a, 0x90, 0xf0, 0xde, 0x08, 0x80, 0xff, 0x74, 0x7a, 0x90, + 0xf0, 0xde, 0xf0, 0xa3, + 0x7a, 0x90, 0xe0, 0xde, 0xa3, 0xfe, 0xff, 0xe0, 0x7d, 0x90, 0xee, 0x96, + 0xf0, 0x8f, 0x18, 0x02, + 0x7d, 0x7d, 0x7c, 0x1e, 0x7f, 0x94, 0x7e, 0x01, 0x12, 0x00, 0xa5, 0x29, + 0x1f, 0x7d, 0x94, 0x7c, + 0xff, 0x7f, 0x03, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x21, 0x7f, 0x94, + 0x7e, 0xea, 0x12, 0x01, + 0xa5, 0x29, 0x20, 0x7d, 0x94, 0x7c, 0x16, 0x7f, 0x01, 0x7e, 0x29, 0x12, + 0x7d, 0xa5, 0x7c, 0x2e, + 0x7f, 0x94, 0x7e, 0x0a, 0x12, 0x00, 0xa5, 0x29, 0x22, 0x7d, 0x94, 0x7c, + 0x0a, 0x7f, 0x00, 0x7e, + 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x23, 0x7f, 0x94, 0x7e, 0x0a, 0x12, 0x00, + 0xa5, 0x29, 0x26, 0x7d, + 0x94, 0x7c, 0x05, 0x7f, 0x00, 0x7e, 0x29, 0x12, 0x7d, 0xa5, 0x7c, 0x27, + 0x7f, 0x94, 0x7e, 0x07, + 0x02, 0x00, 0xa5, 0x29, 0x30, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, + 0xfa, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x31, 0x12, 0x94, 0x61, 0x29, 0x7a, 0x90, + 0xee, 0xfc, 0xa3, 0xf0, + 0xf0, 0xef, 0x2e, 0x7f, 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x01, 0x7b, + 0xf0, 0xef, 0x22, 0x7f, + 0x94, 0x7e, 0x29, 0x12, 0x90, 0x61, 0x02, 0x7b, 0xf0, 0xef, 0x23, 0x7f, + 0x94, 0x7e, 0x29, 0x12, + 0x90, 0x61, 0x03, 0x7b, 0xf0, 0xef, 0x3b, 0x7f, 0x94, 0x7e, 0x29, 0x12, + 0x90, 0x61, 0x04, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, 0x61, 0x29, + 0x7b, 0x90, 0xee, 0x06, + 0xa3, 0xf0, 0xf0, 0xef, 0x7f, 0x22, 0x7e, 0x14, 0x12, 0x93, 0x61, 0x29, + 0x7b, 0x90, 0xee, 0x60, + 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x60, 0xa3, 0xfa, 0xfb, 0xe0, + 0xc4, 0xea, 0x0f, 0x54, + 0x7e, 0xff, 0x90, 0x00, 0x62, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, + 0x7a, 0x90, 0xe0, 0xde, + 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x1f, 0x50, + 0x7b, 0x90, 0xa3, 0x62, + 0xff, 0xe0, 0xae, 0xeb, 0xa8, 0x02, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, + 0x33, 0xce, 0xd8, 0xce, + 0xff, 0xf9, 0x7b, 0x90, 0xee, 0x60, 0xa3, 0xf0, 0xf0, 0xef, 0x74, 0x22, + 0x90, 0xff, 0x60, 0x7b, + 0xa3, 0xf0, 0x22, 0xf0, 0xd5, 0xc2, 0x30, 0xe8, 0x0f, 0xe7, 0xd5, 0xb2, + 0xc3, 0xe4, 0xfb, 0x9b, + 0x9a, 0xe4, 0xe4, 0xfa, 0xf9, 0x99, 0x98, 0xe4, 0xec, 0xf8, 0xe7, 0x30, + 0xb2, 0x17, 0x12, 0xd5, + 0xf2, 0x27, 0x1a, 0x12, 0xe4, 0x5e, 0x9b, 0xc3, 0xe4, 0xfb, 0xfa, 0x9a, + 0x99, 0xe4, 0xe4, 0xf9, + 0xf8, 0x98, 0x03, 0x80, 0x1a, 0x12, 0x30, 0x5e, 0x0d, 0xd5, 0xc3, 0xe4, + 0xff, 0x9f, 0x9e, 0xe4, + 0xe4, 0xfe, 0xfd, 0x9d, 0x9c, 0xe4, 0x22, 0xfc, 0xe0, 0xc0, 0xf0, 0xc0, + 0x83, 0xc0, 0x82, 0xc0, + 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, + 0xc0, 0x03, 0xc0, 0x04, + 0xc0, 0x05, 0xc0, 0x06, 0x90, 0x07, 0x5a, 0x7b, 0x19, 0x12, 0x12, 0xe4, + 0x1c, 0x1a, 0x07, 0xd0, + 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, + 0x00, 0xd0, 0xd0, 0xd0, + 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0xd0, 0xc0, 0x32, 0xc0, 0xe0, + 0xc0, 0xf0, 0xc0, 0x83, + 0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, + 0x03, 0xc0, 0x04, 0xc0, + 0x05, 0xc0, 0x06, 0xc0, 0x07, 0xc0, 0x7b, 0x90, 0x12, 0x5d, 0xe4, 0x19, + 0x1a, 0x12, 0xd0, 0x1c, + 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, + 0xd0, 0x01, 0xd0, 0x00, + 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0x40, 0xd2, + 0x00, 0x30, 0xc0, 0x2e, + 0xc0, 0xe0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x07, 0xc0, + 0x81, 0xaf, 0x90, 0xc3, + 0x81, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x80, 0x00, 0x94, 0x07, 0x50, + 0x81, 0xaf, 0xf0, 0xe4, + 0xef, 0xa3, 0xd0, 0xf0, 0xd0, 0x07, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, + 0x32, 0xe0, 0x7b, 0x90, + 0xe0, 0x19, 0xc3, 0xff, 0x57, 0x94, 0x07, 0x40, 0x7b, 0x90, 0x74, 0x58, + 0x80, 0x80, 0xef, 0x0b, + 0x94, 0xc3, 0x40, 0x06, 0x90, 0x0b, 0x58, 0x7b, 0x40, 0x74, 0xa3, 0xf0, + 0xf0, 0xe4, 0x07, 0x80, + 0x90, 0xe4, 0x58, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x58, 0x7b, 0xfe, 0xe0, + 0xe0, 0xa3, 0x22, 0xff, + 0x62, 0xd2, 0x04, 0x7f, 0x16, 0x12, 0x7b, 0xd3, 0x7a, 0xff, 0x79, 0x1f, + 0x90, 0x24, 0x5a, 0x7b, + 0x19, 0x12, 0x7a, 0xed, 0x79, 0x23, 0x90, 0xaa, 0x5d, 0x7b, 0x19, 0x12, + 0x43, 0xed, 0x18, 0xa9, + 0xab, 0x43, 0xe4, 0x08, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xef, 0x22, + 0xc4, 0x04, 0xf0, 0x54, + 0x24, 0x14, 0xf5, 0x80, 0xe4, 0x82, 0x7a, 0x34, 0x83, 0xf5, 0x01, 0xd0, + 0x07, 0xd0, 0x0f, 0x7e, + 0x82, 0xe5, 0x02, 0x70, 0x83, 0x15, 0x82, 0x15, 0xe0, 0xd0, 0xde, 0xf0, + 0xc0, 0xf3, 0xc0, 0x07, + 0x22, 0x01, 0xa8, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0x92, 0x00, 0xc0, 0xaf, + 0x75, 0xf0, 0x05, 0xf0, + 0xe0, 0xc0, 0xe0, 0x75, 0xc0, 0x55, 0x75, 0xe0, 0x29, 0xe0, 0xe0, 0xc0, + 0xd5, 0x32, 0xf2, 0xf0, + 0xe0, 0xd0, 0xf0, 0xd0, 0xd0, 0xd0, 0xa8, 0xd0, 0xc0, 0x22, 0xc2, 0xa8, + 0x10, 0xaf, 0x04, 0x40, + 0xa8, 0xd0, 0xf5, 0x80, 0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, 0xc3, 0x8e, + 0xc5, 0x8f, 0x40, 0x30, + 0x90, 0xfd, 0xa0, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xd0, 0xff, 0x22, 0xa8, + 0x00, 0x12, 0x90, 0x9e, + 0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0x53, 0xf0, 0xe7, 0xa9, 0xab, 0x53, + 0x7f, 0xf7, 0x12, 0x04, + 0x5c, 0x17, 0x29, 0x12, 0xe4, 0xe3, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, + 0xc0, 0x22, 0xc2, 0xa8, + 0x10, 0xaf, 0x04, 0x40, 0xa8, 0xd0, 0xf5, 0x80, 0x7d, 0x90, 0xee, 0xa0, + 0xa3, 0xf0, 0xf0, 0xef, + 0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, 0xc3, 0x8c, 0xc4, 0x8d, 0xa8, 0xd0, + 0xef, 0x22, 0x54, 0xc4, + 0x24, 0xf0, 0xf5, 0x80, 0xe4, 0x82, 0x7a, 0x34, 0x83, 0xf5, 0x01, 0xd0, + 0x07, 0xd0, 0x0f, 0x7e, + 0xc0, 0xe0, 0xa3, 0xe0, 0xfa, 0xde, 0x07, 0xc0, 0x01, 0xc0, 0xe4, 0x22, + 0x7f, 0x90, 0xf0, 0xae, + 0xf0, 0xa3, 0x7f, 0x90, 0x74, 0xb0, 0xf0, 0x10, 0xe4, 0xa3, 0x90, 0xf0, + 0xd2, 0x7f, 0xa3, 0xf0, + 0x90, 0xf0, 0xd4, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0xf0, 0x8f, 0xf7, 0x30, + 0x63, 0x03, 0xff, 0x07, + 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, + 0x80, 0x06, 0x7f, 0x02, + 0x8f, 0x02, 0x22, 0xdb, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, + 0xd4, 0x8f, 0xd5, 0x8d, + 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x05, 0x7f, 0x02, + 0x8f, 0x01, 0x22, 0xdb, + 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, + 0xd7, 0x8a, 0xd6, 0x8b, + 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x07, 0x7f, 0x02, 0x8f, 0x03, 0x22, 0xdb, + 0x7f, 0x90, 0xe0, 0xf8, + 0xa3, 0xff, 0x90, 0xe0, 0xae, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, 0x12, 0xf0, + 0xdb, 0x2a, 0x90, 0xe4, + 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x6d, 0xef, 0x02, 0x70, 0x6c, 0xee, + 0x10, 0x60, 0xef, 0x0f, + 0x06, 0xaa, 0x01, 0x70, 0x14, 0x0e, 0x82, 0xf5, 0x83, 0x8a, 0xf0, 0xe4, + 0xe8, 0x80, 0x00, 0x22, + 0x0a, 0x00, 0x00, 0xf4, 0x3f, 0x00, 0x00, 0xaf, 0xb5, 0x00, 0xff, 0x05, + 0xf5, 0xff, 0x00, 0x4a, + 0x3f, 0x00, 0xff, 0x5b, 0xca, 0xff, 0x7d, 0xe0, 0x7c, 0x16, 0x7f, 0x71, + 0x7e, 0x04, 0x12, 0x00, + 0xa5, 0x29, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x29, 0x02, + 0x53, 0xa5, 0xe7, 0xa9, + 0xab, 0x53, 0x7f, 0xf7, 0x12, 0x04, 0x5c, 0x17, 0x62, 0xc2, 0x90, 0xe4, + 0xf8, 0x7f, 0xa3, 0xf0, + 0x22, 0xf0, 0x40, 0x30, 0xc2, 0xfd, 0xef, 0x40, 0xfe, 0x54, 0xc2, 0x8e, + 0xc1, 0xf5, 0xc3, 0x8c, + 0xc5, 0x8d, 0x12, 0x22, 0x4e, 0x00, 0x2a, 0x12, 0x12, 0x9f, 0x04, 0x2b, + 0x24, 0x12, 0x02, 0xd8, + 0x50, 0x24, 0x40, 0xc2, 0x54, 0xef, 0x8e, 0xfe, 0xf5, 0xc2, 0x8c, 0xc1, + 0x8d, 0xc3, 0x22, 0xc4, + 0x7f, 0x78, 0xf6, 0xe4, 0xfd, 0xd8, 0x81, 0x75, 0x02, 0x3b, 0x99, 0x16, + 0x06, 0x7d, 0x90, 0x7c, + 0x02, 0x7f, 0x00, 0x7e, 0x29, 0x02, 0x8e, 0xa5, 0x8f, 0x82, 0xa3, 0x83, + 0x82, 0xae, 0x83, 0xaf, + 0x12, 0x22, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x74, 0x38, + 0x90, 0xff, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x90, 0xe4, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x00, 0x83, 0x1f, 0xfe, 0x00, 0x02, 0x00, 0x01, + 0xe8, 0x03, 0x10, 0x00, + 0x08, 0x00, 0x80, 0x00, 0x03, 0x94, 0x00, 0xd9, 0x00, 0x10, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00 }; #endif /* __DRXJ_MC_VSB_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsbqam.h b/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsbqam.h index 2eda7b88666c..480eb7e3f461 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsbqam.h +++ b/drivers/media/dvb-frontends/drx39xyj/drxj_mc_vsbqam.h @@ -45,1393 +45,2780 @@ #define DRXJ_MC_VSBQAM ((pu8_t) drxj_mc_vsbqam_g) const u8_t drxj_mc_vsbqam_g[] = { -0x48, 0x4c, 0x00, 0x04, 0x00, 0x00, 0x56, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x82, -0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0xc4, 0x4d, 0x55, 0x02, 0xe4, 0xee, 0x7f, 0x90, 0xf0, 0xf8, -0xf0, 0xa3, 0x02, 0x22, 0x4b, 0x23, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0xa8, 0x53, -0x53, 0xfb, 0xef, 0xa9, 0xaa, 0x53, 0x53, 0xf7, 0xf7, 0xab, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, -0x04, 0x7f, 0x25, 0x12, 0x12, 0x01, 0xd2, 0x55, 0x61, 0xc2, 0x13, 0xc2, 0x90, 0xe4, 0x95, 0x7f, -0x90, 0xf0, 0x8c, 0x7a, 0x90, 0xf0, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x3b, 0x12, 0xc2, 0xe0, -0x22, 0x58, 0x02, 0x22, 0x70, 0x09, 0x00, 0x02, 0x22, 0x4a, 0x02, 0x22, 0x7f, 0x50, 0xa8, 0xc0, -0xaf, 0xc2, 0x40, 0x10, 0xd0, 0x04, 0x80, 0xa8, 0x75, 0xf5, 0x7d, 0xc2, 0xc1, 0x75, 0x8e, 0xa0, -0x8f, 0xc3, 0x30, 0xc5, 0xfd, 0x40, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, 0xff, 0xe0, 0xa8, 0xd0, -0x22, 0x22, 0x02, 0x00, 0xf3, 0x4c, 0x7e, 0x90, 0xe0, 0xeb, 0x7a, 0x90, 0xf0, 0xa8, 0x7e, 0x90, -0xe0, 0xe9, 0x7a, 0x90, 0xf0, 0xa9, 0xb4, 0xe0, 0x11, 0x01, 0x7a, 0x90, 0xe0, 0xa8, 0x05, 0xb4, -0x12, 0x05, 0x4e, 0x00, 0x08, 0x80, 0x56, 0x12, 0x80, 0x6a, 0x12, 0x03, 0x51, 0x00, 0x3b, 0x02, -0x00, 0xe0, 0x02, 0x00, 0xc0, 0x50, 0x62, 0x30, 0x12, 0x06, 0x6c, 0x55, 0x04, 0x7f, 0x30, 0x22, -0x06, 0x61, 0x00, 0x12, 0x7f, 0x0e, 0x22, 0x02, 0x00, 0x7f, 0x02, 0x22, 0xa0, 0x51, 0x7d, 0x90, -0xe0, 0x3b, 0xf0, 0x54, 0x03, 0x70, 0x80, 0xd3, 0xc3, 0x01, 0x92, 0xb3, 0x90, 0x05, 0x3a, 0x7d, -0xa3, 0xe0, 0xe4, 0xa2, 0x92, 0xb3, 0xe0, 0x02, 0x0f, 0x54, 0x03, 0x70, 0x80, 0xd3, 0xc3, 0x01, -0x92, 0xb3, 0x90, 0x06, 0x91, 0x7d, 0x30, 0xe0, 0x03, 0xe1, 0x02, 0x02, 0x90, 0x65, 0x5a, 0x7d, -0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x30, 0x31, 0x2e, 0x02, 0x7d, 0x90, 0xe0, 0x78, 0xa3, 0xfe, -0xff, 0xe0, 0x90, 0xc3, 0x75, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x74, 0x50, 0x9e, 0x90, 0x19, -0x65, 0x7d, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x7f, 0x74, 0x03, 0xf0, 0xff, 0x5b, 0x20, 0xd2, 0x09, -0xe4, 0x5b, 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x4a, 0x02, 0x70, 0xe0, 0xa3, -0x03, 0x70, 0x02, 0x20, 0x90, 0x17, 0x4a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x3c, -0x5a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x20, 0x32, 0x2f, 0x02, 0x7d, 0x90, 0xe0, 0x6c, -0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xd3, 0x6b, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x6a, 0x40, 0x9e, -0x90, 0x1a, 0x57, 0x7d, 0xd3, 0xe0, 0x80, 0x64, 0x7f, 0x94, 0x03, 0x40, 0xff, 0x74, 0x20, 0xf0, -0x09, 0x07, 0x07, 0xd2, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0x7f, 0xf0, 0x7e, 0x22, 0x12, 0x67, -0x56, 0x00, 0x14, 0x8e, 0x15, 0x8f, 0x27, 0x7f, 0x67, 0x7e, 0x00, 0x12, 0x8e, 0x56, 0x8f, 0x16, -0x90, 0x17, 0x5e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, -0xff, 0xf9, 0xe5, 0xd3, 0x9f, 0x17, 0x16, 0xe5, 0x40, 0x9e, 0x20, 0x54, 0x0c, 0x02, 0x7d, 0x90, -0xe0, 0x57, 0x80, 0x64, 0x81, 0x94, 0x10, 0x50, 0x0b, 0x80, 0x7d, 0x90, 0xe0, 0x65, 0x64, 0xc3, -0x94, 0x80, 0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x5b, 0x20, 0xd2, 0x34, 0xe4, 0x5b, 0x7d, 0x90, -0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0x6b, 0x7d, -0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, 0x30, 0xe0, 0x0f, 0xe0, -0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, -0x4e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xff, 0xf9, -0xe5, 0xd3, 0x9f, 0x15, 0x14, 0xe5, 0x40, 0x9e, 0x90, 0x44, 0x57, 0x7d, 0x64, 0xe0, 0x94, 0x80, -0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x07, 0x20, 0xd2, 0x34, 0xe4, 0x07, 0x7d, 0x90, 0xf0, 0x52, -0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0x6b, 0x7d, 0x9f, 0xe0, -0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, 0x30, 0xe0, 0x0f, 0xe0, 0x7d, 0x90, -0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0x34, 0x7d, -0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x60, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, -0x05, 0x1d, 0xe5, 0x1d, 0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x60, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, -0x1d, 0xe5, 0x30, 0xf0, 0x2f, 0x5b, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, -0x9f, 0xf8, 0x74, 0xff, 0x9e, 0x2a, 0xd3, 0xfe, 0x7d, 0x90, 0xe0, 0x7b, 0x90, 0x9f, 0x7a, 0x7d, -0x9e, 0xe0, 0x07, 0x50, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x0a, 0x2e, 0x7d, 0xf5, 0xe0, -0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, 0x16, 0x95, 0x03, 0x40, -0x80, 0xd3, 0xc3, 0x01, 0x04, 0x92, 0x7d, 0x90, 0xe0, 0x50, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, -0x7d, 0x90, 0xe0, 0x52, 0x1c, 0xf5, 0xe0, 0xa3, 0x1d, 0xf5, 0x1d, 0x05, 0x1d, 0xe5, 0x02, 0x70, -0x1c, 0x05, 0x7d, 0x90, 0xe5, 0x52, 0xf0, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0x07, 0x30, 0x90, 0x0a, -0x82, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x20, 0x17, 0x11, 0x04, 0xe5, 0xc3, 0x95, 0x1d, -0xe5, 0x17, 0x95, 0x1c, 0x40, 0x16, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x03, 0x03, 0x04, -0x03, 0x02, 0xc0, 0xfc, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, 0x7d, 0x90, 0xf0, 0xa4, -0xf0, 0xa3, 0x7d, 0x7e, 0xa4, 0x7f, 0x01, 0x7d, 0x12, 0xfc, 0x57, 0x55, 0x27, 0x7b, 0x00, 0x7a, -0x07, 0x7d, 0x06, 0x7f, 0x54, 0x12, 0x30, 0xa8, 0xfd, 0x40, 0x7d, 0x90, 0xe0, 0xa4, 0xa3, 0xff, -0x90, 0xe0, 0x5a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0xe4, 0xd0, -0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x5b, 0xc2, 0x7d, 0x90, 0xe0, 0x63, 0x18, 0xf5, 0x7d, 0x90, -0xe0, 0x5a, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x7d, 0x90, 0xe0, 0x5c, 0x1a, 0xf5, 0xe0, 0xa3, -0x1b, 0xf5, 0x7d, 0x90, 0xe0, 0x5e, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0x7d, 0x90, 0xe0, 0x66, -0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, 0x7d, 0x90, 0xe0, 0x65, 0x19, 0xf5, 0x7d, 0x90, 0xe0, 0x74, -0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x1d, 0xf5, 0x7f, 0x74, 0xf5, 0x9e, 0x90, 0x1c, -0x6e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x6a, 0x7d, 0xb5, 0xe0, 0x1e, 0x06, 0xe0, 0xa3, -0x07, 0xb5, 0xd3, 0x19, 0x7d, 0x90, 0xe0, 0x4b, 0x13, 0x95, 0x7d, 0x90, 0xe0, 0x4a, 0x12, 0x95, -0x0a, 0x40, 0x58, 0x20, 0xe0, 0x07, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x90, 0xd3, 0x7b, 0x7d, -0x94, 0xe0, 0x90, 0xfe, 0x7a, 0x7d, 0x94, 0xe0, 0x40, 0x77, 0xd3, 0x0d, 0x13, 0xe5, 0x17, 0x95, -0x12, 0xe5, 0x16, 0x95, 0x02, 0x40, 0x04, 0xc2, 0x02, 0x30, 0x20, 0x03, 0x02, 0x05, 0x04, 0xc2, -0x04, 0xa2, 0x5a, 0x92, 0x03, 0x20, 0x02, 0x03, 0xa7, 0x04, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, -0xaf, 0xc2, 0x90, 0xe4, 0xa4, 0x7d, 0xa3, 0xf0, 0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa4, 0xfc, 0x01, -0x55, 0x12, 0x7b, 0x57, 0x7a, 0x22, 0x7d, 0x00, 0x7f, 0x07, 0x12, 0x06, 0xa8, 0x54, 0x40, 0x30, -0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, 0x7d, 0x90, 0xcf, 0x4a, 0xa3, 0xf0, 0xf0, 0xef, -0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0xc2, 0xf0, 0x90, 0x07, -0x55, 0x7d, 0xf5, 0xe0, 0x90, 0x18, 0x4a, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0x90, 0x13, -0x4c, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x90, 0x1b, 0x4e, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, -0xf5, 0xe0, 0x90, 0x17, 0x58, 0x7d, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, 0x57, 0x7d, -0xf5, 0xe0, 0x90, 0x19, 0x6a, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, 0x20, 0x1d, 0x16, 0x02, -0x90, 0xd3, 0x5b, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x5a, 0x7d, 0x95, 0xe0, 0x40, 0x12, 0xe0, 0x07, -0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x06, 0x20, 0xc2, 0x02, 0xa2, 0x03, 0x92, 0x03, 0x20, 0x59, -0x0b, 0x05, 0x02, 0x20, 0xc2, 0x08, 0xc2, 0x03, 0xc2, 0x04, 0xc2, 0x59, 0x20, 0x5a, 0x06, 0x04, -0x03, 0x20, 0x02, 0x03, 0x8b, 0x06, 0xe5, 0xc3, 0x95, 0x13, 0xe5, 0x1b, 0x95, 0x12, 0x50, 0x1a, -0xe5, 0x57, 0x64, 0x19, 0x94, 0x80, 0x50, 0x80, 0x15, 0x4a, 0xc3, 0x19, 0x18, 0xe5, 0x80, 0x64, -0xe5, 0xf8, 0x64, 0x19, 0x98, 0x80, 0x0e, 0x50, 0x15, 0xe5, 0xe0, 0x25, 0x15, 0xf5, 0x14, 0xe5, -0xf5, 0x33, 0x75, 0x14, 0xff, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe5, 0xff, -0xc4, 0x14, 0xf0, 0x54, 0xfe, 0x48, 0xe5, 0xc3, 0x9f, 0x1d, 0x11, 0xf5, 0x1c, 0xe5, 0xf5, 0x9e, -0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, 0x6d, 0x80, 0x10, 0x85, 0x85, 0x1c, 0x1d, 0x11, -0x05, 0x02, 0x75, 0xa6, 0xff, 0x19, 0x6c, 0x80, 0x74, 0xc3, 0x95, 0x01, 0xa2, 0x18, 0x13, 0xe7, -0x18, 0xf5, 0xe5, 0xd3, 0x95, 0x13, 0xe5, 0x17, 0x95, 0x12, 0x40, 0x16, 0xe5, 0x5f, 0x64, 0x19, -0x94, 0x80, 0x40, 0x80, 0x05, 0x4c, 0xd3, 0x19, 0x18, 0xe5, 0x80, 0x64, 0xe5, 0xf8, 0x64, 0x19, -0x98, 0x80, 0x0e, 0x40, 0x15, 0xe5, 0xe0, 0x25, 0x15, 0xf5, 0x14, 0xe5, 0xf5, 0x33, 0x75, 0x14, -0x01, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe5, 0xff, 0xc4, 0x14, 0xf0, 0x54, -0xfe, 0x48, 0x1d, 0xe5, 0xf5, 0x2f, 0xe5, 0x11, 0x3e, 0x1c, 0x10, 0xf5, 0xe5, 0xd3, 0x94, 0x11, -0xe5, 0xff, 0x94, 0x10, 0x40, 0x7f, 0x80, 0x02, 0x85, 0x0b, 0x1c, 0x10, 0x11, 0x85, 0x80, 0x1d, -0x75, 0x1d, 0x01, 0x19, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x12, 0x80, 0xf5, 0xe4, 0xf5, 0x19, -0x75, 0x14, 0x01, 0x15, 0x03, 0x30, 0xc2, 0x02, 0x30, 0x59, 0x02, 0x04, 0x5a, 0xc2, 0x03, 0x30, -0x90, 0x72, 0x6e, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x6c, 0x7d, 0xf5, 0xe0, -0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, 0x16, 0x95, 0x0e, 0x50, -0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x59, 0xc2, 0xe5, 0xd3, -0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, 0x1c, 0x10, 0x11, 0x85, 0x75, 0x1d, -0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x59, 0x57, 0x7d, 0x19, 0xe5, 0x90, 0xf0, 0x58, 0x7d, -0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x6a, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0xe5, -0x20, 0xf0, 0x0f, 0x02, 0x7d, 0x90, 0xe0, 0x78, 0xa3, 0xff, 0x90, 0xe0, 0x74, 0x7d, 0xf0, 0xcf, -0xef, 0xa3, 0x30, 0xf0, 0x6d, 0x04, 0x7d, 0x90, 0xe0, 0x78, 0x10, 0xf5, 0xe0, 0xa3, 0x11, 0xf5, -0x7d, 0x90, 0xe0, 0x76, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0x74, 0xc3, 0x95, 0xff, 0xf5, 0x1d, -0x74, 0x1d, 0x95, 0x7f, 0xf5, 0x1c, 0xc3, 0x1c, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, 0x16, 0x95, -0x0e, 0x50, 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x5a, 0xc2, -0xe5, 0xd3, 0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, 0x1c, 0x10, 0x11, 0x85, -0x75, 0x1d, 0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x5a, 0x65, 0x7d, 0x19, 0xe5, 0x90, 0xf0, -0x66, 0x7d, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x74, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, -0x1d, 0xe5, 0x90, 0xf0, 0x30, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, 0x05, 0x1d, 0xe5, 0x1d, -0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x30, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, 0xe5, 0x90, 0xf0, -0x44, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x45, 0x1b, 0x70, 0x1a, 0x02, 0x03, 0x33, 0x09, -0x59, 0x20, 0x30, 0x03, 0x0d, 0x5a, 0x7d, 0x90, 0xe0, 0x48, 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, -0x08, 0x02, 0xd3, 0xff, 0x7d, 0x90, 0xe0, 0x33, 0x1d, 0x95, 0x7d, 0x90, 0xe0, 0x32, 0x1c, 0x95, -0x03, 0x40, 0x09, 0x02, 0x90, 0x6f, 0x40, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, -0x42, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x7d, 0x90, 0xe0, 0x3f, 0x13, 0x95, -0x12, 0xe5, 0x80, 0x64, 0x90, 0xf8, 0x3e, 0x7d, 0x64, 0xe0, 0x98, 0x80, 0x24, 0x40, 0x11, 0xe5, -0x13, 0xb5, 0xe5, 0x1f, 0xb5, 0x10, 0x1a, 0x12, 0x1b, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, -0xe5, 0xff, 0xc4, 0x1a, 0xf0, 0x54, 0xfe, 0x48, 0x25, 0xef, 0xf5, 0x13, 0xee, 0x13, 0x12, 0x35, -0x12, 0xf5, 0xe5, 0xc3, 0x95, 0x13, 0xff, 0x11, 0x12, 0xe5, 0x10, 0x95, 0xf8, 0xc4, 0xf0, 0x54, -0x68, 0xc8, 0x1c, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, 0x90, 0x1d, 0x84, 0x7d, 0xf5, 0xe0, -0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x86, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, -0x11, 0x95, 0xe5, 0xff, 0x95, 0x12, 0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, 0xf5, 0x68, 0xef, 0x14, -0x54, 0xc4, 0x48, 0x0f, 0x15, 0xf5, 0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, 0x40, 0x1c, 0x85, 0x06, -0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, 0x92, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, -0x94, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x11, 0x95, 0xe5, 0xff, 0x95, 0x12, -0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, 0xf5, 0x68, 0xef, 0x14, 0x54, 0xc4, 0x48, 0x0f, 0x15, 0xf5, -0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, 0x40, 0x1c, 0x85, 0x06, 0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, -0x3a, 0x7d, 0x54, 0xe0, 0xf5, 0x0f, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, 0x48, 0x7d, 0xf5, 0xe0, -0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x46, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, -0x1d, 0xe5, 0x1b, 0x95, 0x1c, 0xe5, 0x1a, 0x95, 0x03, 0x40, 0x08, 0x02, 0xe5, 0x6c, 0x54, 0x12, -0xf5, 0x0f, 0x75, 0x10, 0x00, 0x11, 0x14, 0xe5, 0x0f, 0x54, 0xe4, 0xfe, 0x11, 0x95, 0x95, 0xee, -0x40, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, 0xff, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x0e, 0x80, -0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x10, 0x75, -0xe5, 0x00, 0x54, 0x13, 0xf5, 0xf0, 0xe5, 0x11, 0x54, 0x15, 0xd3, 0xf0, 0x11, 0x95, 0x95, 0xe4, -0x40, 0x10, 0x74, 0x0e, 0x25, 0xf0, 0xf5, 0x15, 0x74, 0x15, 0x35, 0xff, 0xf5, 0x14, 0x80, 0x14, -0xe5, 0x10, 0x54, 0x15, 0xff, 0x0f, 0x10, 0xe5, 0x14, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, -0x75, 0x15, 0x00, 0x10, 0x13, 0xe5, 0x0f, 0x54, 0x11, 0xf5, 0x15, 0xe5, 0x0f, 0x54, 0x95, 0xd3, -0xe4, 0x11, 0x10, 0x95, 0x03, 0x50, 0x08, 0x02, 0xe5, 0xef, 0x15, 0x15, 0x70, 0x15, 0x15, 0x02, -0x02, 0x14, 0xff, 0x08, 0x16, 0xe5, 0x0f, 0x54, 0x10, 0xf5, 0x11, 0x75, 0xe5, 0x00, 0x54, 0x14, -0xfe, 0x0f, 0xe4, 0xc3, 0x11, 0x95, 0x95, 0xee, 0x50, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, -0x01, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x0e, 0x80, 0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, -0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, 0xf5, 0xf0, 0xe5, 0x11, -0x54, 0x15, 0xc3, 0xf0, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, 0x74, 0x0d, 0x25, 0x10, 0xf5, 0x15, -0xe4, 0x15, 0x14, 0x35, 0x14, 0xf5, 0x10, 0x80, 0x15, 0xe5, 0x0f, 0x54, 0xe5, 0xff, 0x45, 0x10, -0xf5, 0x14, 0xe5, 0x14, 0x4f, 0x11, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, 0xf5, 0x0f, -0xe5, 0x11, 0x54, 0x15, 0xc3, 0x0f, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, 0x05, 0x0a, 0xe5, 0x15, -0x70, 0x15, 0x05, 0x02, 0x80, 0x14, 0xe5, 0x10, 0x54, 0x15, 0xff, 0xf0, 0x10, 0xe5, 0x14, 0x45, -0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, 0x90, 0x15, 0x3a, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, -0x54, 0x17, 0x70, 0xf0, 0x53, 0x03, 0x0f, 0x15, 0x16, 0xe5, 0x0f, 0x54, 0x03, 0x70, 0x14, 0x53, -0xe5, 0xf0, 0x54, 0x17, 0x70, 0x0f, 0x53, 0x03, 0xf0, 0x15, 0x16, 0xe5, 0xf0, 0x54, 0x14, 0x45, -0xe5, 0xff, 0x90, 0x15, 0x3a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x30, -0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, 0xe4, 0xa3, 0x90, 0xf0, 0x40, 0x7d, 0x7f, 0x74, -0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x86, 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x84, -0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0x94, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x92, 0x7d, -0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, -0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, -0xc0, 0x05, 0xc0, 0x06, 0x7f, 0x07, 0x7e, 0x07, 0x12, 0x71, 0x56, 0x00, 0x7b, 0x90, 0xef, 0x9f, -0xf4, 0xf0, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x05, 0x12, 0x71, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x9f, -0x70, 0xff, 0x02, 0x03, 0x40, 0x0e, 0x20, 0xef, 0x03, 0xe4, 0x0c, 0x02, 0x7f, 0x58, 0x7e, 0x23, -0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x27, 0x90, 0xf0, 0xd4, 0x7f, 0x75, 0xe4, 0x01, 0xf0, -0x26, 0x12, 0xc3, 0x4f, 0x7f, 0x90, 0xe0, 0xd5, 0x39, 0x94, 0x7f, 0x90, 0xe0, 0xd4, 0x01, 0x94, -0x0d, 0x40, 0xf0, 0xe4, 0xf0, 0xa3, 0x7f, 0x90, 0x75, 0xd2, 0x01, 0xf0, 0x26, 0x12, 0x7f, 0x4f, -0x7e, 0x74, 0x12, 0x71, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xb5, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, -0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x80, 0xfe, 0x90, 0x08, -0xb5, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xb5, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, -0x7e, 0x75, 0x12, 0x71, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xb7, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, -0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x80, 0xfe, 0x90, 0x08, -0xb7, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xb7, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, -0xb7, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, 0x26, 0x12, 0xaa, 0x3d, 0xab, 0x06, -0x90, 0x07, 0xb5, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, 0x26, 0x12, 0xef, 0x3d, -0xff, 0x2b, 0x3a, 0xee, 0x7b, 0x90, 0xf0, 0xb9, 0xef, 0xa3, 0x90, 0xf0, 0xa0, 0x7b, 0x27, 0x12, -0x90, 0x54, 0xa4, 0x7b, 0x27, 0x12, 0x7f, 0x8c, 0x7e, 0x12, 0x12, 0x62, 0x56, 0x00, 0xfc, 0xe4, -0x90, 0xfd, 0xa0, 0x7b, 0x27, 0x12, 0x90, 0x8c, 0xa4, 0x7b, 0x27, 0x12, 0xab, 0x54, 0xaa, 0x07, -0xa9, 0x06, 0xa8, 0x05, 0x90, 0x04, 0xa0, 0x7b, 0x27, 0x12, 0x12, 0x54, 0x88, 0x26, 0x7b, 0x90, -0x12, 0xb1, 0x8c, 0x27, 0x00, 0x7f, 0x80, 0x7e, 0xff, 0x7d, 0xff, 0x7c, 0x7b, 0x90, 0x12, 0xb1, -0x70, 0x27, 0x12, 0xc3, 0xf3, 0x26, 0x14, 0x50, 0x7b, 0x90, 0x12, 0xb1, 0x54, 0x27, 0x2f, 0xe4, -0xe4, 0xff, 0xfe, 0x3e, 0x34, 0xed, 0xfd, 0x01, 0x3c, 0xe4, 0x29, 0x80, 0x7f, 0xe4, 0x7e, 0xff, -0xfd, 0x7f, 0x90, 0xfc, 0xb1, 0x7b, 0x27, 0x12, 0xd3, 0x70, 0x26, 0x12, 0x40, 0xf3, 0x90, 0x1d, -0xb1, 0x7b, 0x27, 0x12, 0xc3, 0x54, 0x94, 0xef, 0xff, 0x00, 0x94, 0xee, 0xfe, 0x00, 0x94, 0xed, -0xfd, 0x01, 0x94, 0xec, 0xfc, 0x00, 0x7b, 0x90, 0x12, 0xb1, 0x8c, 0x27, 0x7f, 0xe4, 0xfe, 0x0f, -0xfc, 0xfd, 0x7b, 0x90, 0x12, 0xa8, 0x70, 0x27, 0x26, 0x12, 0xe4, 0x96, 0x10, 0x7b, 0xf9, 0xfa, -0x12, 0xf8, 0x3b, 0x50, 0x7b, 0x90, 0x12, 0xb1, 0x70, 0x27, 0x26, 0x12, 0x90, 0x7b, 0xa8, 0x7b, -0x27, 0x12, 0x90, 0x8c, 0xae, 0x7b, 0xf9, 0xe0, 0x03, 0x54, 0x68, 0x70, 0x7b, 0x90, 0x12, 0xa8, -0x54, 0x27, 0x07, 0x78, 0x27, 0x12, 0x90, 0x2d, 0xaf, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xc3, 0xf0, -0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0x90, 0x15, 0xaf, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, -0x9f, 0xe4, 0xe4, 0xff, 0x90, 0x9e, 0xaf, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0xaf, -0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0xad, 0x7b, 0x9f, 0xe0, 0x7b, 0x90, 0xe0, 0xac, 0x50, 0x9e, -0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0xe9, 0x80, 0x94, 0x18, 0x40, 0x7b, 0x90, 0xe0, 0xac, -0xa3, 0xff, 0x90, 0xe0, 0xbb, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xac, 0x7b, 0xf0, 0xe4, -0xf0, 0xa3, 0xf0, 0xa3, 0x7b, 0x90, 0xe0, 0xae, 0xf0, 0x04, 0x7c, 0x90, 0xe0, 0x27, 0x17, 0x64, -0x4c, 0x70, 0x6c, 0x7d, 0x71, 0x7c, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x16, 0x7f, 0x71, -0x7e, 0x04, 0x12, 0x00, 0xf5, 0x53, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x53, 0x12, -0x7d, 0xf5, 0x7c, 0x57, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, 0x90, 0xc3, 0xba, 0x7b, -0x94, 0xe0, 0x90, 0x78, 0xb9, 0x7b, 0x94, 0xe0, 0x40, 0x00, 0x7d, 0x75, 0x7c, 0x3d, 0x7f, 0x71, -0x7e, 0x50, 0x12, 0x00, 0xf5, 0x53, 0x70, 0x7d, 0x71, 0x7c, 0x08, 0x7f, 0x5d, 0x80, 0x7c, 0x90, -0xe0, 0x27, 0x74, 0xff, 0xc3, 0x17, 0x50, 0x9f, 0xef, 0x57, 0x57, 0x94, 0x52, 0x50, 0x7b, 0x90, -0xe0, 0xbc, 0x64, 0x94, 0x7b, 0x90, 0xe0, 0xbb, 0x00, 0x94, 0x0f, 0x40, 0x90, 0xd3, 0xba, 0x7b, -0x94, 0xe0, 0x90, 0x78, 0xb9, 0x7b, 0x94, 0xe0, 0x50, 0x00, 0x7d, 0x35, 0x7c, 0x16, 0x7f, 0x71, -0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x53, 0x12, -0x7d, 0xf5, 0x7c, 0x70, 0xe4, 0x71, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x57, 0xe4, 0x71, -0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x6c, 0x7f, 0x71, 0x7e, 0x5a, 0x12, 0x00, 0xf5, 0x53, -0x7b, 0x90, 0xe0, 0x9f, 0xe0, 0x20, 0x02, 0x03, 0xc6, 0x0d, 0x7f, 0x90, 0xe4, 0xd2, 0xf0, 0x75, -0x12, 0x01, 0x4f, 0x26, 0x7f, 0x90, 0xe4, 0xd4, 0xa3, 0xf0, 0x7f, 0xf0, 0x7e, 0x29, 0x12, 0x71, -0x56, 0x00, 0x7c, 0x90, 0xee, 0x28, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xc3, 0xee, 0xff, 0x3f, 0x94, -0x73, 0x40, 0x7c, 0x90, 0xe0, 0x2a, 0x0a, 0x94, 0x63, 0x40, 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0xe4, -0x12, 0xfe, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, -0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x02, 0x12, 0x00, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0x0c, 0x7f, -0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x08, 0x12, 0x00, 0xf5, 0x53, -0x1d, 0x7d, 0x71, 0x7c, 0x30, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, -0x7e, 0x20, 0x12, 0x00, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0xf5, 0x53, -0x1b, 0x7d, 0x71, 0x7c, 0xff, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x80, 0xf5, 0x90, 0x08, 0x2a, 0x7c, -0x04, 0xe0, 0x80, 0xf0, 0x90, 0x05, 0x2a, 0x7c, 0xf0, 0xe4, 0x7f, 0x90, 0xe0, 0xaf, 0xe1, 0x20, -0x7f, 0x3c, 0x7e, 0x45, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xee, 0x1d, 0xa3, 0xf0, 0xf0, 0xef, -0x46, 0x7f, 0x71, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x1f, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, -0x7e, 0x47, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xee, 0x21, 0xa3, 0xf0, 0xf0, 0xef, 0x48, 0x7f, -0x71, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x23, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x12, 0x04, -0x8a, 0x25, 0x7c, 0x90, 0xe0, 0x27, 0x94, 0xc3, 0x7d, 0x57, 0x7c, 0x22, 0x40, 0x71, 0x7f, 0x48, -0x7e, 0xd0, 0x12, 0x00, 0xf5, 0x53, 0x00, 0x7d, 0x92, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, -0x7d, 0xf5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x1f, 0x12, 0x00, 0xf5, 0x53, 0x6d, 0x7d, 0x71, 0x7c, -0xff, 0x7f, 0x7f, 0x7e, 0x53, 0x12, 0x90, 0xf5, 0x2b, 0x7c, 0xff, 0xe0, 0xe0, 0xa3, 0x7c, 0x90, -0xcf, 0x2d, 0xa3, 0xf0, 0xf0, 0xef, 0x6f, 0x7f, 0x71, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x2b, 0x7c, -0xf0, 0xee, 0xef, 0xa3, 0x80, 0xf0, 0x7f, 0x27, 0x7e, 0xd2, 0x12, 0x00, 0xf5, 0x53, 0x2c, 0x7d, -0x94, 0x7c, 0x0f, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x00, 0xe4, 0x92, 0xfe, 0xff, -0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x6d, 0x7f, 0x71, 0x7e, 0xad, 0x12, 0x01, 0xf5, 0x53, 0x7b, 0x90, -0xe0, 0x9f, 0xe2, 0x30, 0x7f, 0x73, 0x7e, 0x23, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x27, -0x7f, 0xf0, 0x7e, 0x29, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xee, 0x28, 0xa3, 0xf0, 0xf0, 0xef, -0x22, 0x7d, 0x71, 0x7c, 0xd2, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x00, 0xe4, 0x92, -0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x0f, 0x12, 0x00, 0xf5, 0x53, -0x6d, 0x7d, 0x71, 0x7c, 0xad, 0x7f, 0x01, 0x7e, 0x53, 0x12, 0x90, 0xf5, 0xd2, 0x7f, 0xf0, 0xe4, -0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xd4, 0xf0, 0xa3, 0x57, 0x7d, 0x71, 0x7c, 0x01, 0x7f, 0x12, 0xfe, -0xf5, 0x53, 0x16, 0x7d, 0x71, 0x7c, 0x04, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x18, -0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xf5, 0x53, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, -0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, -0xe0, 0xd0, 0xe4, 0x32, 0x23, 0xf5, 0x7d, 0x90, 0xe0, 0x68, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, -0x90, 0xc3, 0x43, 0x7d, 0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, 0x7d, 0x90, 0xe0, 0x42, -0x80, 0x64, 0x50, 0x98, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xd3, 0x41, 0x7d, -0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, 0x7d, 0x90, 0xe0, 0x40, 0x80, 0x64, 0x40, 0x98, -0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x7d, 0x90, 0xe0, 0x6a, 0x1a, 0xf5, 0xe0, 0xa3, -0x1b, 0xf5, 0x95, 0xc3, 0xf5, 0x13, 0xe5, 0x11, 0x95, 0x1a, 0xf5, 0x12, 0xc3, 0x10, 0x80, 0x64, -0x80, 0x94, 0x14, 0x50, 0xff, 0x74, 0x12, 0xf5, 0x13, 0xf5, 0xe5, 0xc3, 0x64, 0x10, 0x94, 0x80, -0x50, 0x60, 0x75, 0x1d, 0xe0, 0x10, 0x15, 0x80, 0xf5, 0xe4, 0xf5, 0x12, 0xd3, 0x13, 0x11, 0xe5, -0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xa0, 0x94, 0x06, 0x40, 0x10, 0x75, 0x75, 0x20, 0x00, 0x11, -0x02, 0x20, 0x02, 0x03, 0x42, 0x10, 0x58, 0x30, 0x02, 0x03, 0x42, 0x10, 0x7d, 0x90, 0xe0, 0x3a, -0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x70, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, -0x0f, 0x02, 0x74, 0xed, 0x25, 0x08, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, 0x00, 0x94, 0x25, 0x40, -0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, 0x92, 0x10, 0xe5, 0x18, 0x25, 0x13, -0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x13, 0xf5, 0x3e, -0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, 0x7d, 0x90, 0xe0, 0x3d, -0xe4, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, 0xf5, 0x13, 0x92, 0x13, -0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, 0x26, 0xe5, -0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1e, 0x92, 0x12, 0xe5, -0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0x13, -0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x73, 0x7d, 0x25, 0xe0, 0xf5, 0x18, -0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, 0x12, 0xf5, 0xd2, 0xa2, -0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x71, 0x7d, 0x25, 0xe0, 0xf5, 0x13, 0x90, 0x13, 0x70, 0x7d, -0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x30, 0x18, 0x09, 0x18, 0x12, 0x75, 0x75, 0x7f, -0xff, 0x13, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x07, 0x50, 0xf5, 0xe4, -0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x73, 0x7d, 0x18, 0xe5, 0x90, 0xf0, 0x70, 0x7d, 0x12, 0xe5, -0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x74, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0xc3, 0x1b, -0x13, 0xe5, 0x1b, 0x95, 0x11, 0xf5, 0x12, 0xe5, 0x1a, 0x95, 0x10, 0xf5, 0x12, 0x85, 0x85, 0x14, -0x15, 0x13, 0x64, 0xc3, 0x94, 0x80, 0x50, 0x80, 0x74, 0x14, 0xf5, 0xff, 0xf5, 0x12, 0xc3, 0x13, -0x10, 0xe5, 0x80, 0x64, 0x60, 0x94, 0x1d, 0x50, 0x10, 0x75, 0x80, 0xe0, 0xe4, 0x15, 0x12, 0xf5, -0x13, 0xf5, 0xe5, 0xd3, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, 0x94, 0x80, 0x40, 0xa0, 0x75, 0x06, -0x20, 0x10, 0x11, 0x75, 0xe4, 0x00, 0x23, 0xf5, 0x1c, 0x80, 0x02, 0x20, 0x90, 0x05, 0x78, 0x7d, -0x03, 0x80, 0x7d, 0x90, 0xe0, 0x74, 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, 0x7d, 0x90, 0xe5, 0x70, -0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0x90, 0xc3, 0x87, 0x7d, 0x95, 0xe0, 0x90, 0x15, 0x86, 0x7d, -0x95, 0xe0, 0x50, 0x14, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0x90, 0xd3, 0x85, 0x7d, -0x95, 0xe0, 0x90, 0x15, 0x84, 0x7d, 0x95, 0xe0, 0x40, 0x14, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, -0xf0, 0x15, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, 0xf5, 0x15, 0x74, 0x15, -0x35, 0x08, 0xf5, 0x14, 0xa2, 0x14, 0x92, 0xd2, 0x30, 0x18, 0xfd, 0x40, 0x7d, 0x90, 0x30, 0xa0, -0x09, 0x18, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x80, 0xf0, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, -0xf0, 0x15, 0x7d, 0x90, 0xe0, 0x3a, 0x30, 0xa3, 0x17, 0xe5, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, -0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x7d, 0x90, 0xf0, 0xa1, 0x87, 0x74, 0x90, 0x9e, 0xa0, 0x7d, -0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa0, 0x7c, 0x28, 0x12, 0x67, 0xc4, 0x55, 0xd1, 0xa2, 0xaf, 0x92, -0xd0, 0xd0, 0x7d, 0x90, 0xe0, 0x3b, 0xe4, 0xff, 0xf8, 0xc4, 0xf0, 0x54, 0xef, 0xc8, 0x54, 0xc4, -0x48, 0x0f, 0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x7a, 0x12, 0xf5, 0xe0, 0xa3, -0x13, 0xf5, 0x12, 0x02, 0x74, 0x0c, 0x25, 0x07, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, 0x00, 0x94, -0x25, 0x40, 0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, 0x92, 0x10, 0xe5, 0x18, -0x25, 0x13, 0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, 0xec, 0x13, -0xf5, 0x3e, 0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, 0x7d, 0x90, -0xe0, 0x3d, 0xe2, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, 0xf5, 0x13, -0x92, 0x13, 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, -0x26, 0xe3, 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1e, 0x92, -0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1f, 0x92, 0x18, 0xe5, -0x13, 0x13, 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0xc2, 0x23, 0x90, 0x19, 0x7d, 0x7d, -0x25, 0xe0, 0xf5, 0x18, 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, -0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x7b, 0x7d, 0x25, 0xe0, 0xf5, 0x13, -0x90, 0x13, 0x7a, 0x7d, 0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x20, 0x18, 0x17, 0x18, -0x7d, 0x90, 0xe0, 0x2c, 0xa3, 0xfe, 0xff, 0xe0, 0xe5, 0xd3, 0x9f, 0x13, 0x64, 0xee, 0xf8, 0x80, -0x12, 0xe5, 0x80, 0x64, 0x40, 0x98, 0x90, 0x0d, 0x2c, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, -0x75, 0x13, 0xff, 0x18, 0xe5, 0xc3, 0x64, 0x12, 0x94, 0x80, 0x50, 0x80, 0xe4, 0x07, 0x12, 0xf5, -0x13, 0xf5, 0x18, 0xf5, 0x7d, 0x90, 0xe5, 0x7d, 0xf0, 0x18, 0x7d, 0x90, 0xe5, 0x7a, 0xf0, 0x12, -0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xc3, 0x95, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x94, 0x7d, 0x95, 0xe0, -0x50, 0x12, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xd3, 0x93, 0x7d, 0x95, 0xe0, -0x90, 0x13, 0x92, 0x7d, 0x95, 0xe0, 0x40, 0x12, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, -0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, 0xf5, 0x13, 0x74, 0x13, 0x35, 0x08, -0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x20, 0x18, 0x14, 0x18, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, -0x25, 0xe0, 0xf5, 0x13, 0xee, 0x13, 0x12, 0x35, 0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x40, 0x30, -0x90, 0xfd, 0xa0, 0x7d, 0x18, 0x30, 0x74, 0x09, 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x07, 0x80, -0x12, 0xe5, 0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x3a, 0x7d, 0xa3, 0xe0, 0xe6, 0x30, 0x90, 0x17, -0xa0, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xff, 0x74, 0x90, 0x9f, 0xa1, 0x7d, 0x74, 0xf0, -0x9e, 0x87, 0x7d, 0x90, 0xf0, 0xa0, 0x7d, 0x7e, 0xa0, 0x7f, 0x29, 0x7d, 0x67, 0x7c, 0x55, 0x12, -0xa2, 0xc4, 0x92, 0xd1, 0xd0, 0xaf, 0xc2, 0xd0, 0x22, 0x18, 0x30, 0x30, 0x90, 0x10, 0x80, 0x7a, -0x01, 0x74, 0x7d, 0xf0, 0x7c, 0x2e, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, 0x20, 0xf5, 0x24, 0x11, -0x7b, 0x90, 0xe4, 0x49, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x90, 0xc3, 0x4a, 0x7b, 0x94, 0xe0, -0x90, 0x9a, 0x49, 0x7b, 0x94, 0xe0, 0x40, 0x02, 0xe4, 0x12, 0xa3, 0xf0, 0x90, 0xf0, 0x80, 0x7a, -0xf0, 0x04, 0x07, 0x80, 0x90, 0xe4, 0x49, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x95, 0x7f, 0x54, 0xe0, -0xc3, 0x0f, 0x02, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0x80, 0xf0, 0x01, 0x7a, 0x90, 0xe0, 0x80, -0x3b, 0x60, 0xf0, 0xe4, 0x7b, 0x90, 0x04, 0x2c, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x3a, 0x7b, 0x90, -0xf0, 0x3b, 0x11, 0xc2, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, 0x02, 0x03, 0xf1, 0x16, 0x7b, 0x90, -0xe0, 0x2c, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x52, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x2c, -0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x54, 0xf5, 0x53, 0x55, 0x02, 0x90, 0x2b, 0x66, 0x7f, -0xa3, 0xe0, 0xe1, 0x30, 0x12, 0x05, 0x9a, 0x3a, 0x03, 0x80, 0x55, 0x12, 0x12, 0x2b, 0xe2, 0x43, -0x7b, 0x90, 0xe0, 0x3c, 0xf0, 0x04, 0xc3, 0xe0, 0x04, 0x94, 0x03, 0x50, 0x16, 0x02, 0xe4, 0xf1, -0x90, 0xf0, 0x44, 0x7b, 0xff, 0xe0, 0x94, 0xc3, 0x40, 0x86, 0x90, 0x08, 0x3a, 0x7b, 0x04, 0xe0, -0x80, 0xf0, 0xe4, 0x05, 0x7b, 0x90, 0xf0, 0x3a, 0xd3, 0xef, 0x6c, 0x94, 0x08, 0x50, 0x7b, 0x90, -0xe0, 0x3b, 0xf0, 0x04, 0x05, 0x80, 0x90, 0xe4, 0x3b, 0x7b, 0x90, 0xf0, 0x3a, 0x7b, 0xc3, 0xe0, -0x03, 0x94, 0x05, 0x40, 0x03, 0x74, 0xd2, 0xf0, 0x90, 0x11, 0x3b, 0x7b, 0xc3, 0xe0, 0x06, 0x94, -0x05, 0x40, 0x06, 0x74, 0xc2, 0xf0, 0x90, 0x11, 0x2c, 0x7b, 0x90, 0xe0, 0xe9, 0x7b, 0x90, 0xf0, -0x44, 0x7b, 0xc3, 0xe0, 0xac, 0x94, 0x17, 0x40, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x16, 0x7b, 0x90, -0x74, 0x2d, 0xf0, 0x02, 0x7b, 0x90, 0x74, 0x2e, 0xf0, 0x07, 0x90, 0xe4, 0xc6, 0x7a, 0x90, 0xf0, -0x44, 0x7b, 0xff, 0xe0, 0x94, 0xc3, 0x50, 0xac, 0x90, 0x17, 0x2c, 0x7b, 0x16, 0x74, 0x90, 0xf0, -0x2d, 0x7b, 0x02, 0x74, 0x90, 0xf0, 0x2e, 0x7b, 0x09, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc6, -0xc3, 0xef, 0x89, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x0e, 0x90, 0xe4, 0xc6, 0x7a, -0x90, 0xf0, 0x2d, 0x7b, 0x02, 0x74, 0x90, 0xf0, 0x2e, 0x7b, 0x09, 0x74, 0xe4, 0xf0, 0x7b, 0x90, -0xf0, 0x31, 0x7a, 0x90, 0xe0, 0xa8, 0x90, 0xff, 0x97, 0x31, 0xfe, 0x93, 0x7b, 0x90, 0xf0, 0xeb, -0x7b, 0x90, 0xe0, 0x2e, 0x9e, 0xd3, 0x08, 0x40, 0x7b, 0x90, 0xe0, 0xeb, 0x7b, 0x90, 0xf0, 0x2e, -0x11, 0x30, 0x02, 0x03, 0x90, 0x15, 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xc3, 0x50, 0x7b, 0x90, 0x36, -0x2c, 0x7b, 0x06, 0x74, 0x90, 0xf0, 0x31, 0x7b, 0xf0, 0x04, 0x7b, 0x90, 0x74, 0x2d, 0xf0, 0x02, -0x7b, 0x90, 0x74, 0x2e, 0xf0, 0x08, 0x7a, 0x90, 0x74, 0xc6, 0xf0, 0x02, 0x94, 0xef, 0x50, 0x06, -0x90, 0x06, 0x2d, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0xd3, 0xe0, 0x04, 0x94, 0x05, 0x50, -0x90, 0xe4, 0x2d, 0x7b, 0x90, 0xf0, 0xa8, 0x7a, 0xd3, 0xe0, 0x05, 0x94, 0x03, 0x50, 0x15, 0x02, -0x90, 0x90, 0x44, 0x7b, 0xff, 0xe0, 0x7b, 0x94, 0x3f, 0x50, 0x14, 0x30, 0x90, 0x3c, 0xcb, 0x7a, -0x70, 0xe0, 0x90, 0x36, 0x2c, 0x7b, 0x0e, 0x74, 0x90, 0xf0, 0x31, 0x7b, 0x04, 0x74, 0x90, 0xf0, -0x2d, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0x2e, 0x7b, 0x08, 0x74, 0x90, 0xf0, 0xc6, 0x7a, 0x02, 0x74, -0xef, 0xf0, 0x94, 0xc3, 0x40, 0x6c, 0x74, 0x03, 0xf0, 0x01, 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xc3, -0x40, 0x72, 0x90, 0x06, 0x31, 0x7b, 0x03, 0x74, 0x90, 0xf0, 0x44, 0x7b, 0xff, 0xe0, 0x94, 0xc3, -0x50, 0x69, 0x30, 0x27, 0x24, 0x14, 0x7a, 0x90, 0xe0, 0xcb, 0x1e, 0x70, 0x7b, 0x90, 0x74, 0x2c, -0xf0, 0x0e, 0x7b, 0x90, 0x74, 0x31, 0xf0, 0x05, 0x7b, 0x90, 0x74, 0x2d, 0xf0, 0x01, 0x7b, 0x90, -0x74, 0x2e, 0xf0, 0x08, 0x7a, 0x90, 0x74, 0xc6, 0xf0, 0x02, 0xc3, 0xef, 0x5f, 0x94, 0x1d, 0x50, -0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, 0x90, 0xf0, 0x2d, 0x7b, 0x01, 0x74, -0x90, 0xf0, 0x2e, 0x7b, 0x07, 0x74, 0x90, 0xf0, 0xc6, 0x7a, 0x02, 0x74, 0x90, 0xf0, 0x44, 0x7b, -0xc3, 0xe0, 0x4c, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, -0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x2d, 0x7b, 0x90, 0x74, 0x2e, 0xf0, 0x06, 0x7a, 0x90, 0x74, 0xc6, -0xf0, 0x02, 0x7b, 0x90, 0xe0, 0x44, 0xc3, 0xff, 0x32, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0x74, 0x2c, -0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x2d, 0x7b, 0x90, 0x74, 0x2e, -0xf0, 0x04, 0x7a, 0x90, 0x74, 0xc6, 0xf0, 0x02, 0xc3, 0xef, 0x17, 0x94, 0x1a, 0x50, 0x7b, 0x90, -0x74, 0x2c, 0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, 0x90, 0xf0, 0x2d, 0x7b, 0x01, 0x74, 0x90, 0xf0, -0x2e, 0x7b, 0xf0, 0x04, 0x7a, 0x90, 0xf0, 0xc6, 0x7b, 0x90, 0x74, 0xec, 0xf0, 0x08, 0x7a, 0x90, -0xe0, 0xa8, 0x94, 0xd3, 0x40, 0x05, 0x90, 0x06, 0xec, 0x7b, 0x09, 0x74, 0x90, 0xf0, 0x2e, 0x7b, -0xff, 0xe0, 0x94, 0xc3, 0x50, 0x08, 0x90, 0x05, 0xec, 0x7b, 0xf0, 0xef, 0x7a, 0x90, 0x74, 0xc9, -0xf0, 0x01, 0x14, 0x20, 0x90, 0x09, 0x2c, 0x7b, 0xd3, 0xe0, 0x07, 0x94, 0x05, 0x40, 0x90, 0xe4, -0xc9, 0x7a, 0x90, 0xf0, 0x2c, 0x7b, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0x31, 0x12, 0xfd, 0x1d, 0x4f, -0x7b, 0x90, 0xee, 0x2f, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0x74, 0xea, 0xf0, 0x1f, 0x7b, 0x90, -0xe0, 0x2c, 0xc3, 0xff, 0x16, 0x94, 0x0c, 0x40, 0x7a, 0x90, 0xe0, 0xa8, 0x31, 0x90, 0x93, 0x8f, -0x7b, 0x90, 0xf0, 0xea, 0x64, 0xef, 0xff, 0x01, 0x7b, 0x90, 0xf0, 0x2c, 0x7f, 0x90, 0xe0, 0x69, -0x54, 0x5f, 0xfe, 0x07, 0x54, 0xef, 0x4e, 0x18, 0x7b, 0x90, 0xf0, 0x2c, 0x7f, 0x90, 0xe0, 0x69, -0x18, 0x54, 0x90, 0xff, 0x2c, 0x7b, 0xfe, 0xe0, 0x18, 0x54, 0x9f, 0xd3, 0x0f, 0x40, 0x54, 0xee, -0xff, 0x07, 0x7f, 0x90, 0xe0, 0x69, 0x18, 0x54, 0x90, 0x4f, 0x2c, 0x7b, 0x90, 0xf0, 0x2c, 0x7b, -0x64, 0xe0, 0xf0, 0x01, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, 0x02, 0x03, 0xf1, 0x16, 0x7a, 0x90, -0xe0, 0xc6, 0x0b, 0x60, 0x15, 0x7d, 0x56, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x12, 0xf5, -0x22, 0x43, 0x7b, 0x90, 0xe0, 0x2c, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x52, 0xf5, 0x53, -0x7b, 0x90, 0xe0, 0xec, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x12, 0x12, 0x52, 0xf5, 0x53, 0x7b, 0x90, -0xe0, 0x2d, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x11, 0x12, 0x52, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x2c, -0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x54, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x2f, 0xa3, 0xfe, -0xff, 0xe0, 0x13, 0x7d, 0x54, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x31, 0x7b, 0xff, 0xe0, 0x00, 0x7e, -0x14, 0x7d, 0x54, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x2e, 0x7b, 0xff, 0xe0, 0x00, 0x7e, 0x12, 0x7d, -0x54, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x2d, 0x7b, 0xff, 0xe0, 0x00, 0x7e, 0x11, 0x7d, 0x54, 0x7c, -0x53, 0x12, 0x90, 0xf5, 0xc6, 0x7a, 0x70, 0xe0, 0xfe, 0x04, 0x80, 0xff, 0x7e, 0x04, 0x7f, 0x00, -0x7d, 0x01, 0x7c, 0x15, 0x12, 0x54, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xea, 0x7e, 0xff, 0x7d, 0x00, -0x7c, 0x1e, 0x12, 0x54, 0xf5, 0x53, 0x53, 0x12, 0x22, 0x19, 0x2e, 0x7f, 0x55, 0x7e, 0x00, 0x12, -0x90, 0x56, 0xb8, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x2f, 0x12, 0x55, 0x56, 0x00, -0x7a, 0x90, 0xee, 0xba, 0xa3, 0xf0, 0xf0, 0xef, 0x31, 0x7f, 0x55, 0x7e, 0x00, 0x12, 0x90, 0x56, -0xaa, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x32, 0x12, 0x55, 0x56, 0x00, 0x7a, 0x90, -0xee, 0xac, 0xa3, 0xf0, 0xf0, 0xef, 0x33, 0x7f, 0x55, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xae, 0x7a, -0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xb8, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0xe1, 0x30, -0x44, 0x09, 0x90, 0xfe, 0xb8, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xba, 0xa3, 0xfe, -0xff, 0xe0, 0x30, 0xee, 0x09, 0xe1, 0xfe, 0x44, 0x7a, 0x90, 0xf0, 0xba, 0xef, 0xa3, 0x90, 0xf0, -0xac, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0xe1, 0x30, 0x44, 0x09, 0x90, 0xfe, 0xac, 0x7a, -0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xae, 0x13, 0xc3, 0xa3, 0xf0, 0x13, 0xe0, 0x90, 0xf0, -0xb8, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xf7, 0x7a, 0x8f, 0xee, 0x12, 0xf0, 0x4f, 0x26, -0x7a, 0x90, 0xe0, 0xfd, 0x54, 0x04, 0xf0, 0x0f, 0x03, 0x60, 0x18, 0x02, 0x90, 0x59, 0xf7, 0x7a, -0xfc, 0xe0, 0xe0, 0xa3, 0xc3, 0xfd, 0x7a, 0x90, 0xe0, 0xfc, 0xff, 0x9d, 0x7a, 0x90, 0xe0, 0xfb, -0xfe, 0x9c, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, 0x15, 0x50, 0x7a, 0x90, -0xe0, 0xfb, 0xa3, 0xfe, 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x7a, 0x90, 0xf0, 0xfb, -0xef, 0xa3, 0x90, 0xf0, 0xfb, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x02, 0x78, 0xa2, 0xce, 0x13, 0xe7, -0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0x9c, 0x7f, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xf9, 0x7a, -0xff, 0xe0, 0xe0, 0xa3, 0x7a, 0x90, 0xcf, 0xfb, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xec, 0xf9, -0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xe4, 0xf7, 0x7a, 0xa3, 0xf0, 0x90, 0xf0, 0x2b, 0x7f, 0xff, 0xe0, -0x90, 0xc3, 0x9d, 0x7f, 0x9f, 0xe0, 0x80, 0x74, 0x90, 0xf8, 0x9c, 0x7f, 0x64, 0xe0, 0x98, 0x80, -0x7b, 0x90, 0xe0, 0x07, 0x04, 0x50, 0xf0, 0x04, 0x02, 0x80, 0xf0, 0x14, 0x7f, 0x90, 0xe0, 0x2d, -0xe0, 0x25, 0xe0, 0x25, 0x90, 0xff, 0x07, 0x7b, 0xfe, 0xe0, 0xef, 0xc3, 0x80, 0x64, 0xee, 0xf8, -0x80, 0x64, 0x40, 0x98, 0x90, 0x0c, 0x2d, 0x7f, 0x25, 0xe0, 0x25, 0xe0, 0x90, 0xe0, 0x07, 0x7b, -0x90, 0xf0, 0xba, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x00, 0x7b, 0x8f, 0xee, 0x12, 0xf0, -0x4f, 0x26, 0x7b, 0x90, 0xe0, 0x06, 0x54, 0x04, 0xf0, 0x0f, 0x03, 0x60, 0x19, 0x02, 0x90, 0x3f, -0x00, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xc3, 0xfd, 0x7b, 0x90, 0xe0, 0x05, 0xff, 0x9d, 0x7b, 0x90, -0xe0, 0x04, 0xfe, 0x9c, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, 0x15, 0x50, -0x7b, 0x90, 0xe0, 0x04, 0xa3, 0xfe, 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, 0x7b, 0x90, -0xf0, 0x04, 0xef, 0xa3, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x82, 0x94, 0x04, 0x50, -0x02, 0x7f, 0x02, 0x80, 0x01, 0x7f, 0x7b, 0x90, 0xe0, 0x04, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, -0x06, 0x80, 0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0x9a, 0x7f, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0x02, 0x7b, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x04, 0xa3, 0xf0, -0xf0, 0xef, 0x7b, 0x90, 0xec, 0x02, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xe4, 0x00, 0x7b, 0xa3, 0xf0, -0x90, 0xf0, 0x29, 0x7f, 0xff, 0xe0, 0x90, 0xc3, 0x9b, 0x7f, 0x9f, 0xe0, 0x80, 0x74, 0x90, 0xf8, -0x9a, 0x7f, 0x64, 0xe0, 0x98, 0x80, 0x7b, 0x90, 0xe0, 0x08, 0x04, 0x50, 0xf0, 0x04, 0x02, 0x80, -0xf0, 0x14, 0x7f, 0x90, 0xe0, 0x2d, 0xe0, 0x25, 0xe0, 0x25, 0x90, 0xff, 0x08, 0x7b, 0xfe, 0xe0, -0xef, 0xc3, 0x80, 0x64, 0xee, 0xf8, 0x80, 0x64, 0x40, 0x98, 0x90, 0x0c, 0x2d, 0x7f, 0x25, 0xe0, -0x25, 0xe0, 0x90, 0xe0, 0x08, 0x7b, 0x90, 0xf0, 0x2d, 0x7f, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0x08, -0xc3, 0xfe, 0x64, 0xef, 0xf8, 0x80, 0x64, 0xee, 0x98, 0x80, 0x02, 0x40, 0x19, 0xd2, 0x70, 0xee, -0xc2, 0x02, 0x90, 0x19, 0x2d, 0x7f, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0x07, 0xc3, 0xfe, 0x64, 0xef, -0xf8, 0x80, 0x64, 0xee, 0x98, 0x80, 0x02, 0x40, 0x1c, 0xd2, 0x70, 0xee, 0xc2, 0x02, 0x90, 0x1c, -0x27, 0x7f, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xae, 0xa3, 0xfc, 0xfd, 0xe0, 0x9f, 0xc3, 0x94, 0xec, -0x50, 0x00, 0xe4, 0x07, 0x7a, 0x90, 0xf0, 0xd7, 0x0f, 0x80, 0x7a, 0x90, 0xe0, 0xd7, 0xf0, 0x04, -0xd3, 0xe0, 0x06, 0x94, 0x03, 0x40, 0x06, 0x74, 0x90, 0xf0, 0xd7, 0x7a, 0xc3, 0xe0, 0x06, 0x94, -0x02, 0x50, 0x01, 0x80, 0x92, 0xc3, 0x90, 0x1d, 0xac, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, -0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0xc3, 0x09, 0x9f, 0xe4, 0xe4, 0xff, 0xfe, 0x9e, 0x08, 0x80, -0x7a, 0x90, 0xe0, 0xac, 0xa3, 0xfe, 0xff, 0xe0, 0x7f, 0x90, 0xe0, 0x1f, 0xc3, 0xfb, 0x9b, 0xef, -0x80, 0x74, 0x6e, 0xf8, 0x50, 0x98, 0x80, 0x02, 0xc3, 0x01, 0x1b, 0x92, 0x7f, 0x90, 0xe0, 0x1d, -0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xab, 0x90, 0x9f, 0xaa, 0x7a, 0x94, 0xe0, 0x50, 0x00, 0xd2, 0x0a, -0x90, 0x1a, 0xa7, 0x7a, 0x18, 0x74, 0x80, 0xf0, 0x90, 0x10, 0xa7, 0x7a, 0x70, 0xe0, 0xc2, 0x04, -0x80, 0x1a, 0x90, 0x06, 0xa7, 0x7a, 0x14, 0xe0, 0x90, 0xf0, 0x21, 0x7f, 0xff, 0xe0, 0xed, 0xc3, -0xec, 0x9f, 0x00, 0x94, 0x0d, 0x50, 0x1e, 0x30, 0xd2, 0x0a, 0x90, 0x1f, 0xa6, 0x7a, 0x18, 0x74, -0x80, 0xf0, 0x90, 0x10, 0xa6, 0x7a, 0x70, 0xe0, 0xc2, 0x04, 0x80, 0x1f, 0x90, 0x06, 0xa6, 0x7a, -0x14, 0xe0, 0x02, 0xf0, 0x6b, 0x52, 0x90, 0xe4, 0xc5, 0x7a, 0x90, 0xf0, 0xc8, 0x7a, 0x90, 0xf0, -0xca, 0x7a, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x17, 0x40, 0x7a, 0x90, -0x74, 0xc5, 0xf0, 0x01, 0x90, 0xe4, 0xc6, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, 0x7a, -0x90, 0xf0, 0xd2, 0x7a, 0x90, 0xf0, 0x95, 0x7f, 0x12, 0xe0, 0xdb, 0x27, 0xa2, 0x1a, 0x1a, 0x00, -0x01, 0xa2, 0xe0, 0x1a, 0x1b, 0x02, 0x03, 0x19, 0x54, 0x1b, 0x1b, 0x04, 0x05, 0x94, 0xbf, 0x1b, -0x1b, 0x06, 0x07, 0xeb, 0x17, 0x1c, 0x1c, 0x08, 0x09, 0x43, 0x70, 0x1c, 0x1a, 0x0a, 0xfc, 0xa2, -0xa2, 0x1a, 0x1a, 0xfd, 0xff, 0xa2, 0x00, 0x00, 0xc9, 0x1c, 0x7a, 0x90, 0x74, 0xc5, 0xf0, 0x02, -0x90, 0xe4, 0xc7, 0x7a, 0x90, 0xf0, 0xcd, 0x7a, 0x0c, 0x74, 0x90, 0xf0, 0xd2, 0x7a, 0x01, 0x74, -0x90, 0xf0, 0xd1, 0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0xf0, 0x04, 0x7a, 0x90, 0x74, 0xd3, 0xf0, 0x32, -0x7a, 0x90, 0x74, 0xcb, 0xf0, 0x01, 0x90, 0xe4, 0xcc, 0x7a, 0x90, 0xf0, 0xc2, 0x7a, 0x90, 0xf0, -0xc3, 0x7a, 0xa3, 0xf0, 0x02, 0xf0, 0xc9, 0x1c, 0x7a, 0x90, 0x74, 0xc5, 0xf0, 0x02, 0x90, 0xe4, -0xc7, 0x7a, 0x90, 0xf0, 0xcd, 0x7a, 0x0c, 0x74, 0xf0, 0xf0, 0x7a, 0x90, 0x74, 0xd2, 0xf0, 0x01, -0x7a, 0x90, 0xf0, 0xd1, 0x7a, 0x90, 0x04, 0xd0, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, 0xe4, 0xf0, -0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, 0xf0, 0xc2, 0x7a, 0x90, 0x80, 0xc3, -0x90, 0x73, 0xc5, 0x7a, 0x02, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0x74, 0xcd, -0xf0, 0x0a, 0x7a, 0x90, 0x74, 0xd2, 0xf0, 0x01, 0x7a, 0x90, 0x04, 0xd1, 0x90, 0xf0, 0xd0, 0x7a, -0x90, 0xf0, 0xd3, 0x7a, 0x50, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, -0x7a, 0x90, 0x74, 0xc2, 0xf0, 0x02, 0x7a, 0x90, 0xe4, 0xc3, 0x38, 0x80, 0x7a, 0x90, 0x74, 0xc5, -0xf0, 0x01, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0x74, 0xcd, 0xf0, 0x09, 0x7a, 0x90, 0x74, 0xd2, -0xf0, 0x01, 0x7a, 0x90, 0x04, 0xd1, 0x90, 0xf0, 0xd0, 0x7a, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, -0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, 0x74, 0xc2, 0xf0, 0x02, -0x7a, 0x90, 0xe4, 0xc3, 0xa3, 0xf0, 0x96, 0x74, 0x02, 0xf0, 0xc9, 0x1c, 0x7a, 0x90, 0x74, 0xcd, -0xf0, 0x0a, 0x7a, 0x90, 0x74, 0xc7, 0xf0, 0x01, 0x7a, 0x90, 0xf0, 0xc2, 0x7a, 0x90, 0x04, 0xd0, -0x90, 0xf0, 0xd1, 0x7a, 0x90, 0xf0, 0xd3, 0x7a, 0x1e, 0x74, 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, -0x74, 0xa3, 0xf0, 0x5a, 0x1c, 0x02, 0x90, 0xc9, 0xcd, 0x7a, 0x0a, 0x74, 0xe4, 0xf0, 0x7a, 0x90, -0xf0, 0xc7, 0x7a, 0x90, 0x04, 0xc2, 0x90, 0xf0, 0xd0, 0x7a, 0x03, 0x74, 0x90, 0xf0, 0xd1, 0x7a, -0x90, 0xf0, 0xd3, 0x7a, 0x28, 0x74, 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x49, -0x1c, 0x02, 0x90, 0xc9, 0xcd, 0x7a, 0x0a, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, -0x74, 0xc2, 0xf0, 0x02, 0x7a, 0x90, 0x04, 0xd0, 0x90, 0xf0, 0xd1, 0x7a, 0x90, 0xf0, 0xd3, 0x7a, -0x28, 0x74, 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x44, 0x1c, 0x02, 0x90, 0xc9, -0xcd, 0x7a, 0x09, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0x74, 0xc2, 0xf0, 0x03, -0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0x90, 0x04, 0xd1, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, 0x90, 0xf0, -0xc3, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x41, 0x1c, 0x02, 0x90, 0xc9, 0xcd, 0x7a, 0x09, 0x74, -0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0x74, 0xc2, 0xf0, 0x04, 0x7a, 0x90, 0x14, 0xd0, -0x90, 0xf0, 0xd1, 0x7a, 0x05, 0x74, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, 0x90, 0xf0, 0xc3, 0x7a, -0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x3a, 0x59, 0x80, 0x7a, 0x90, 0x74, 0xcd, 0xf0, 0x09, 0x90, 0xe4, -0xc7, 0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0x03, 0x74, 0x90, 0xf0, 0xc2, 0x7a, 0xf0, 0x04, 0x7a, 0x90, -0x04, 0xd1, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, -0xf0, 0x3a, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, 0x50, 0x05, 0x90, 0x1a, 0xc2, 0x7a, 0x05, 0x74, -0x90, 0xf0, 0xd1, 0x7a, 0xf0, 0x04, 0x7a, 0x90, 0x74, 0xd3, 0xf0, 0x32, 0x7a, 0x90, 0xe4, 0xc3, -0xa3, 0xf0, 0x32, 0x74, 0x30, 0xf0, 0x09, 0x08, 0x7a, 0x90, 0xe4, 0xc3, 0xa3, 0xf0, 0x1e, 0x74, -0x90, 0xf0, 0xd3, 0x7a, 0x75, 0xe0, 0x40, 0xf0, 0xfd, 0xa4, 0x7a, 0x90, 0xe0, 0xd2, 0x33, 0xc4, -0xe0, 0x54, 0xe4, 0xfe, 0xfd, 0x2d, 0x35, 0xee, 0xfc, 0xf0, 0x7a, 0x90, 0xe0, 0xd1, 0xf0, 0x75, -0xa4, 0x04, 0xff, 0x2d, 0x35, 0xec, 0xfe, 0xf0, 0x7a, 0x90, 0xe0, 0xd0, 0x00, 0x7c, 0xff, 0x2f, -0x3e, 0xec, 0x7a, 0x90, 0xf0, 0xce, 0xef, 0xa3, 0x90, 0xf0, 0x67, 0x7f, 0x30, 0xe0, 0x4b, 0xe3, -0x43, 0x12, 0x90, 0x22, 0xcd, 0x7a, 0xff, 0xe0, 0x00, 0x7e, 0x11, 0x7d, 0x53, 0x7c, 0x53, 0x12, -0x90, 0xf5, 0xce, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x12, 0x12, 0x53, 0xf5, 0x53, -0x7a, 0x90, 0xe0, 0xc2, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x13, 0x12, 0x53, 0xf5, 0x53, 0x7a, 0x90, -0xe0, 0xc3, 0xa3, 0xfe, 0xff, 0xe0, 0x14, 0x7d, 0x53, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x81, 0x7a, -0xff, 0xe0, 0x00, 0x7e, 0x15, 0x7d, 0x53, 0x7c, 0x53, 0x12, 0x22, 0xf5, 0x7f, 0x90, 0xe0, 0x95, -0x27, 0x12, 0x1d, 0xdb, 0x00, 0x83, 0xb4, 0x1d, 0x1d, 0x01, 0x02, 0xe7, 0x25, 0x1e, 0x1e, 0x03, -0x04, 0x63, 0xa1, 0x1e, 0x1e, 0x05, 0x06, 0xd7, 0x0c, 0x1f, 0x1f, 0x07, 0x08, 0x0c, 0x83, 0x1d, -0x1d, 0xfc, 0xfd, 0x83, 0x83, 0x1d, 0x00, 0xff, 0x1f, 0x00, 0x90, 0x41, 0xa5, 0x7a, 0x30, 0x74, -0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x7f, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0xa5, -0xf0, 0x10, 0x90, 0xe4, 0xea, 0x7b, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, -0xa3, 0xf0, 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x31, 0x02, 0x35, 0x7c, 0x1f, 0x90, 0xe4, 0xea, 0x7b, -0x90, 0xf0, 0x35, 0x7f, 0x90, 0xe0, 0xeb, 0x7b, 0x90, 0xf0, 0x3b, 0x7f, 0x90, 0xe0, 0xec, 0x7b, -0xe4, 0xf0, 0xf0, 0xa3, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x4f, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, -0xe0, 0x55, 0x7b, 0x90, 0xf0, 0xf0, 0xff, 0x7b, 0x31, 0x7a, 0x44, 0x79, 0x1f, 0x02, 0xe4, 0x7c, -0x7b, 0x90, 0xf0, 0xea, 0x7f, 0x90, 0xe0, 0x37, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3d, -0x7b, 0x90, 0xf0, 0xec, 0x7f, 0x90, 0xe0, 0x43, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x49, -0x7b, 0x90, 0xf0, 0xee, 0x7f, 0x90, 0xe0, 0x4d, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x53, -0x7b, 0x90, 0xf0, 0xf0, 0xff, 0x7b, 0x31, 0x7a, 0x53, 0x79, 0x1f, 0x02, 0xe4, 0x7c, 0x7b, 0x90, -0xf0, 0xea, 0x7f, 0x90, 0xe0, 0x37, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3d, 0x7b, 0x90, -0xf0, 0xec, 0x7f, 0x90, 0xe0, 0x43, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x49, 0x7b, 0x90, -0xf0, 0xee, 0x7f, 0x90, 0xe0, 0x4f, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x55, 0x7b, 0x90, -0xf0, 0xf0, 0xff, 0x7b, 0x31, 0x7a, 0x62, 0x79, 0x1f, 0x02, 0xe4, 0x7c, 0x7b, 0x90, 0xf0, 0xea, -0x7f, 0x90, 0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, 0x7b, 0x90, 0xf0, 0xec, -0x7f, 0x90, 0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, 0x7b, 0x90, 0xf0, 0xee, -0x7f, 0x90, 0xe0, 0x4f, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x55, 0x7b, 0x90, 0xf0, 0xf0, -0xff, 0x7b, 0x31, 0x7a, 0x71, 0x79, 0x1f, 0x02, 0xe4, 0x7c, 0x7b, 0x90, 0xf0, 0xea, 0x7f, 0x90, -0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, 0x7b, 0x90, 0xf0, 0xec, 0x7f, 0x90, -0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, 0x7b, 0x90, 0xf0, 0xee, 0x74, 0xa3, -0xf0, 0xd0, 0x74, 0xa3, 0xf0, 0x40, 0xff, 0x7b, 0x31, 0x7a, 0x71, 0x79, 0x1f, 0x02, 0xe4, 0x7c, -0x7b, 0x90, 0xf0, 0xea, 0x7f, 0x90, 0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, -0x7b, 0x90, 0xf0, 0xec, 0x7f, 0x90, 0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, -0x7b, 0x90, 0xf0, 0xee, 0x74, 0xa3, 0xf0, 0x90, 0x74, 0xa3, 0xf0, 0x30, 0xff, 0x7b, 0x31, 0x7a, -0x80, 0x79, 0x70, 0x80, 0x90, 0xe4, 0xea, 0x7b, 0x90, 0xf0, 0x39, 0x7f, 0x90, 0xe0, 0xeb, 0x7b, -0x90, 0xf0, 0x3f, 0x7f, 0x90, 0xe0, 0xec, 0x7b, 0x90, 0xf0, 0x45, 0x7f, 0x90, 0xe0, 0xed, 0x7b, -0x90, 0xf0, 0x4b, 0x7f, 0x90, 0xe0, 0xee, 0x7b, 0xa3, 0xf0, 0x48, 0x74, 0xa3, 0xf0, 0x14, 0x74, -0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x31, 0x80, 0x80, 0xe4, 0x3b, 0x7b, 0x90, 0xf0, 0xea, 0x7f, 0x90, -0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, 0x7b, 0x90, 0xf0, 0xec, 0x7f, 0x90, -0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, 0x7b, 0x90, 0xf0, 0xee, 0x7f, 0x90, -0xe0, 0x51, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x57, 0x7b, 0x90, 0xf0, 0xf0, 0xff, 0x7b, -0x31, 0x7a, 0x80, 0x79, 0x12, 0xa3, 0xd2, 0x27, 0x7f, 0x90, 0xe0, 0x95, 0x94, 0xc3, 0x90, 0x03, -0xd4, 0x7a, 0x05, 0x50, 0x0f, 0x74, 0x80, 0xf0, 0x74, 0x03, 0xf0, 0x07, 0x7f, 0x90, 0xe0, 0x67, -0xe4, 0x20, 0x02, 0x03, 0x58, 0x20, 0x53, 0x12, 0x90, 0x19, 0x66, 0x7f, 0xa3, 0xe0, 0xe0, 0x30, -0x90, 0x0b, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0xe0, 0xef, -0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x12, 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xf0, 0x7e, 0xff, -0x7d, 0x00, 0x7c, 0x13, 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xef, 0x7a, 0x90, 0xf0, 0xf1, -0x7b, 0x90, 0xe0, 0xf0, 0x7a, 0x90, 0xf0, 0xf2, 0x7b, 0x90, 0xe0, 0xeb, 0x7e, 0xff, 0x7d, 0x00, -0x7c, 0x14, 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xec, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x15, -0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xed, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x16, 0x12, 0x55, -0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xee, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x17, 0x12, 0x55, 0xf5, 0x53, -0x7a, 0x90, 0xe0, 0xd4, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x55, 0xf5, 0x53, 0x90, 0xe4, -0xe9, 0x7b, 0x90, 0xf0, 0xf1, 0x7b, 0x27, 0x12, 0x90, 0xc9, 0xe9, 0x7b, 0xfd, 0xe0, 0x82, 0xf5, -0x83, 0x75, 0x12, 0x00, 0x10, 0x26, 0x7e, 0xff, 0xed, 0x00, 0x18, 0x24, 0xe4, 0xfd, 0x55, 0x34, -0x12, 0xfc, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xe9, 0xf0, 0x04, 0xc3, 0xe0, 0x0f, 0x94, 0xd3, 0x40, -0xe4, 0x22, 0x2c, 0xf5, 0x40, 0xd2, 0x00, 0xc2, 0xff, 0x7b, 0x4b, 0x7a, 0xb8, 0x79, 0x7c, 0x90, -0x12, 0x3f, 0xd2, 0x27, 0x47, 0x7a, 0xcb, 0x79, 0x7c, 0x90, 0x12, 0x48, 0xd2, 0x27, 0x00, 0x7b, -0x00, 0x7a, 0x00, 0x79, 0x7c, 0x90, 0x12, 0x42, 0xd2, 0x27, 0x7c, 0x90, 0x12, 0x45, 0xd2, 0x27, -0xff, 0x74, 0x7f, 0x90, 0xf0, 0xfa, 0xf0, 0xa3, 0x7d, 0x90, 0xe4, 0x80, 0xa3, 0xf0, 0xff, 0x74, -0x75, 0xf0, 0x38, 0xb8, 0xf8, 0x75, 0x75, 0x01, 0x82, 0xa8, 0xf5, 0xe4, 0xf5, 0xa9, 0xf5, 0xaa, -0x7b, 0xab, 0x7a, 0xff, 0x79, 0x56, 0x90, 0x19, 0x5a, 0x7c, 0x27, 0x12, 0x90, 0xd2, 0x5d, 0x7c, -0x27, 0x12, 0xd2, 0xd2, 0x12, 0xd1, 0x6d, 0x56, 0x7f, 0x90, 0xe0, 0xfa, 0x02, 0x70, 0xe0, 0xa3, -0x03, 0x70, 0x23, 0x02, 0x90, 0x40, 0xfa, 0x7f, 0xfe, 0xe0, 0xe4, 0xa3, 0x02, 0x70, 0xf4, 0xee, -0x03, 0x60, 0x23, 0x02, 0xe0, 0x21, 0x70, 0xf4, 0x02, 0x03, 0x19, 0x23, 0x7f, 0x90, 0xe0, 0xfb, -0xfe, 0x64, 0x23, 0x70, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0xfe, 0xa3, 0xff, -0x90, 0xe0, 0xf6, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xfc, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, -0x7f, 0x90, 0xcf, 0xf4, 0x22, 0x02, 0x90, 0xde, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0xfd, 0xc0, 0x2a, -0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xf8, 0x7f, 0xa3, 0xf0, 0x7e, 0xf0, 0x7f, 0x7f, -0x7d, 0xf6, 0x7c, 0x12, 0x12, 0x11, 0x93, 0x55, 0x7f, 0x7e, 0xf4, 0x7f, 0x13, 0x7d, 0x11, 0x7c, -0x55, 0x12, 0x30, 0x93, 0xfd, 0x40, 0x22, 0x02, 0x90, 0x00, 0xfb, 0x7f, 0x64, 0xe0, 0x60, 0xc0, -0x02, 0x03, 0x09, 0x22, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7f, 0x90, 0xe0, 0xf8, -0xe0, 0xa3, 0x7f, 0x54, 0x7b, 0x90, 0xf0, 0xdd, 0xff, 0xe0, 0x94, 0xd3, 0x40, 0x1c, 0x90, 0x0d, -0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xfc, 0x74, 0x02, 0xf0, 0x00, 0x22, 0x7f, 0x90, 0xe0, 0xf9, -0xe7, 0x30, 0x7c, 0x25, 0x7d, 0x7f, 0xc3, 0xf6, 0xf6, 0x74, 0xfe, 0x9f, 0x7f, 0x74, 0x00, 0x94, -0x7b, 0x90, 0xf0, 0xd9, 0xce, 0xa3, 0x90, 0xf0, 0xf6, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, -0xcf, 0xdb, 0xa3, 0xf0, 0xf0, 0xef, 0x26, 0x80, 0x7f, 0x90, 0xe0, 0xf6, 0xa3, 0xff, 0x90, 0xe0, -0xd9, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x7f, 0xf0, 0x90, 0xf6, 0xdd, 0x7b, 0xfd, 0xe0, 0x74, 0xc3, -0x9d, 0xf6, 0x74, 0xfe, 0x94, 0x7f, 0x90, 0x00, 0xdb, 0x7b, 0xa3, 0xf0, 0xf0, 0xce, 0x7b, 0x90, -0xe0, 0xdd, 0x94, 0xd3, 0x40, 0x00, 0x90, 0x2a, 0xd9, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x26, 0x12, -0x85, 0x65, 0x82, 0xf0, 0x83, 0xf5, 0xff, 0xe0, 0x7b, 0x90, 0xe4, 0xdb, 0xf0, 0x75, 0x12, 0x01, -0x65, 0x26, 0xf0, 0x85, 0xf5, 0x82, 0xef, 0x83, 0x90, 0xf0, 0xdd, 0x7b, 0x14, 0xe0, 0x80, 0xf0, -0xe4, 0xcd, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x23, 0x02, -0x90, 0x39, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x80, 0x90, 0x5b, 0xf8, 0x7f, 0xa3, 0xf0, 0xaf, 0xf0, -0x90, 0xa8, 0xf6, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0xa9, 0xaf, 0x7f, 0x90, 0xe4, 0xf4, 0xa3, 0xf0, -0xf0, 0xef, 0xaa, 0xaf, 0x7f, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, 0xf0, 0xef, 0xab, 0xaf, 0x7f, 0x90, -0xe4, 0xf0, 0xa3, 0xf0, 0xf0, 0xef, 0xb8, 0xaf, 0x7f, 0x90, 0xe4, 0xee, 0xa3, 0xf0, 0xf0, 0xef, -0xf8, 0xaf, 0x7f, 0x90, 0xe4, 0xec, 0xa3, 0xf0, 0xf0, 0xef, 0xd0, 0xaf, 0x7f, 0x90, 0xe4, 0xea, -0xa3, 0xf0, 0xf0, 0xef, 0x40, 0xa2, 0xff, 0xe4, 0x90, 0x33, 0xe8, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, -0x02, 0xf0, 0x39, 0x23, 0x7f, 0x90, 0xe0, 0xfb, 0x88, 0x64, 0x49, 0x70, 0x7f, 0x90, 0xe0, 0xf6, -0xe0, 0xa3, 0xa8, 0xf5, 0x7f, 0x90, 0xe0, 0xf4, 0xe0, 0xa3, 0xa9, 0xf5, 0x7f, 0x90, 0xe0, 0xf2, -0xe0, 0xa3, 0xaa, 0xf5, 0x7f, 0x90, 0xe0, 0xf0, 0xe0, 0xa3, 0xab, 0xf5, 0x7f, 0x90, 0xe0, 0xee, -0xe0, 0xa3, 0xb8, 0xf5, 0x7f, 0x90, 0xe0, 0xec, 0xe0, 0xa3, 0xf8, 0xf5, 0x7f, 0x90, 0xe0, 0xea, -0xe0, 0xa3, 0xd0, 0xf5, 0x7f, 0x90, 0xe0, 0xe8, 0xa3, 0xfe, 0xff, 0xe0, 0x4f, 0xee, 0xff, 0x24, -0x40, 0x92, 0x80, 0xe4, 0x90, 0x5c, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x89, 0x12, 0x06, 0x6a, 0x53, -0x80, 0xe4, 0x90, 0x4e, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x82, 0x90, 0x11, 0xf8, 0x7f, 0xa3, 0xf0, -0xaf, 0xf0, 0x90, 0x81, 0xf6, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0x55, 0x80, 0x7f, 0x90, 0xe0, 0xfb, -0x83, 0x64, 0x10, 0x70, 0x7d, 0x90, 0xf0, 0x80, 0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, -0x00, 0xd2, 0x3d, 0x80, 0x7f, 0x90, 0xe0, 0xfb, 0x84, 0x64, 0x13, 0x70, 0x7d, 0x90, 0xf0, 0x80, -0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0xc2, 0xf0, 0x80, 0x00, 0x74, 0x22, -0x90, 0xff, 0xf8, 0x7f, 0xa3, 0xf0, 0x80, 0xf0, 0x90, 0x18, 0x3f, 0x7c, 0x27, 0x12, 0xe9, 0xc9, -0x60, 0x4a, 0x12, 0x05, 0x01, 0x28, 0x09, 0x80, 0x7f, 0x90, 0x74, 0xf8, 0xf0, 0xff, 0x14, 0xa3, -0xe4, 0xf0, 0x7f, 0x90, 0xf0, 0xfa, 0xf0, 0xa3, 0x23, 0x12, 0x02, 0xa4, 0xc0, 0x20, 0xaf, 0xc2, -0xfe, 0x80, 0xc0, 0x32, 0xe5, 0xe0, 0x54, 0xd0, 0x64, 0x18, 0x70, 0x08, 0xd0, 0x03, 0x32, 0xe0, -0xe0, 0xd0, 0x23, 0x12, 0x85, 0x4a, 0x0b, 0xd0, 0xd0, 0x75, 0xaa, 0x08, 0xc2, 0xe0, 0xe5, 0x8c, -0x24, 0x8a, 0xf5, 0xf7, 0xe5, 0x8a, 0x34, 0x8c, 0xf5, 0xd8, 0xd2, 0x8c, 0xec, 0x8c, 0x3c, 0x24, -0xe6, 0xf8, 0x04, 0xbc, 0x74, 0x02, 0xc3, 0x7f, 0x81, 0x95, 0x01, 0xb4, 0x40, 0x00, 0x79, 0xbf, -0x78, 0x05, 0x16, 0x31, 0x08, 0xe6, 0x0b, 0x70, 0xaf, 0xc2, 0x30, 0xe6, 0x03, 0xe1, 0x18, 0x44, -0xd2, 0xf6, 0x08, 0xaf, 0xed, 0xd9, 0x8b, 0xea, 0xd2, 0xd0, 0x22, 0x0a, 0x0c, 0xe5, 0x23, 0xff, -0x32, 0x24, 0x0f, 0xf8, 0x08, 0x08, 0xb5, 0xef, 0x06, 0x0c, 0x0a, 0x10, 0x43, 0x03, 0x01, 0x87, -0x05, 0xbf, 0x7f, 0x04, 0x78, 0x00, 0xe6, 0x32, 0xe4, 0x30, 0x00, 0xe8, 0x0c, 0xe5, 0x9f, 0xc3, -0x20, 0x50, 0x0c, 0x05, 0x3b, 0x74, 0x0c, 0x25, 0xe6, 0xf8, 0xa6, 0xfd, 0x08, 0x81, 0xae, 0xe6, -0xbe, 0x0c, 0x02, 0x04, 0x7f, 0x74, 0xf8, 0xcd, 0x6d, 0xe8, 0xe0, 0x60, 0xe6, 0x08, 0xe0, 0xc0, -0xf6, 0x80, 0x0c, 0xe5, 0x9f, 0xd3, 0x27, 0x40, 0x0c, 0xe5, 0x3c, 0x24, 0xe6, 0xf8, 0x0c, 0xae, -0x04, 0xbe, 0x74, 0x02, 0xfd, 0x7f, 0xe6, 0x18, 0xf8, 0xcd, 0x81, 0xe5, 0x60, 0x6d, 0xd0, 0x06, -0xf6, 0xe0, 0x80, 0x18, 0xe5, 0xf5, 0x24, 0x0c, 0xc8, 0x3b, 0x15, 0xf6, 0x80, 0x0c, 0xe5, 0xd3, -0x23, 0x0c, 0x32, 0x24, 0x7f, 0xf8, 0xc2, 0x04, 0xe6, 0xaf, 0xe0, 0x30, 0x10, 0x03, 0x0c, 0xe2, -0x00, 0x7f, 0xe1, 0x30, 0x30, 0x07, 0x04, 0xe3, 0x08, 0x7f, 0xf4, 0x54, 0x7c, 0x54, 0xd2, 0xc6, -0x54, 0xaf, 0x42, 0x80, 0x22, 0x07, 0x3b, 0x78, 0x81, 0xa6, 0x04, 0x74, 0x06, 0x60, 0x08, 0xff, -0x7f, 0x76, 0xfb, 0xdf, 0x05, 0x7f, 0x78, 0xe4, 0xf6, 0x31, 0xf6, 0x08, 0xdf, 0x08, 0x78, 0xfa, -0x76, 0x32, 0x90, 0x30, 0x0f, 0x56, 0x01, 0x74, 0xc0, 0x93, 0xe4, 0xe0, 0xc0, 0x93, 0x43, 0xe0, -0x01, 0x89, 0x8a, 0x75, 0x75, 0xf0, 0xd8, 0x8c, 0x8c, 0xd2, 0xaf, 0xd2, 0xa9, 0xd2, 0x04, 0x22, -0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, 0x74, 0x22, 0x2f, 0x32, 0xf8, 0x2f, 0x20, 0xe6, -0xf4, 0xe5, 0xaf, 0xc2, 0x44, 0xe6, 0xf6, 0x30, 0xaf, 0xd2, 0x0c, 0xae, 0xc3, 0xee, 0x50, 0x9f, -0x0e, 0x21, 0x3b, 0x74, 0xf8, 0x2e, 0xf9, 0xe6, 0xe6, 0x08, 0xbe, 0x18, 0x02, 0x04, 0x7f, 0x74, -0xed, 0xfd, 0x60, 0x69, 0x09, 0x09, 0x19, 0xe7, 0xf7, 0x19, 0x09, 0x09, 0xf3, 0x80, 0x16, 0x16, -0xda, 0x80, 0xd3, 0xee, 0x40, 0x9f, 0x05, 0x04, 0x05, 0x81, 0xee, 0x81, 0x9f, 0xd3, 0x22, 0x40, -0x3b, 0x74, 0xf8, 0x2e, 0xe6, 0x08, 0xee, 0xf9, 0x0c, 0xb5, 0xa9, 0x02, 0x18, 0x81, 0x06, 0x06, -0xfd, 0xe6, 0x69, 0xed, 0x09, 0x60, 0x19, 0x19, 0x09, 0xe7, 0xf7, 0x09, 0x80, 0x19, 0x1e, 0xf3, -0xd9, 0x80, 0x24, 0xef, 0xf8, 0x3b, 0x04, 0xe6, 0xef, 0xf8, 0x04, 0x2f, 0x56, 0x90, 0x93, 0x0f, -0x08, 0xf6, 0x2f, 0xef, 0xf6, 0x93, 0x00, 0x7f, 0xef, 0x22, 0x94, 0xd3, 0x40, 0x04, 0x7f, 0x03, -0x22, 0xff, 0x23, 0xef, 0x32, 0x24, 0xe6, 0xf8, 0xe5, 0x30, 0xc2, 0xf4, 0xe6, 0xaf, 0x8c, 0x54, -0xd2, 0xf6, 0xe5, 0xaf, 0xb5, 0x0c, 0x0a, 0x07, 0x3b, 0x74, 0xf8, 0x2f, 0xf5, 0xe6, 0x02, 0x81, -0xa4, 0x23, 0x2e, 0x50, 0x3c, 0x74, 0xf8, 0x2f, 0xbf, 0xe6, 0x02, 0x04, 0x7f, 0x74, 0x18, 0xfd, -0xf9, 0xe6, 0x3b, 0x74, 0xf8, 0x2f, 0xe6, 0xfb, 0xe9, 0xfc, 0x60, 0x6c, 0xa8, 0x08, 0xe7, 0x05, -0x1d, 0xf6, 0x80, 0x19, 0xa8, 0xf4, 0xa6, 0x03, 0x1f, 0x05, 0x0c, 0xe5, 0x07, 0xb5, 0x7f, 0xe3, -0x22, 0x00, 0x3c, 0x74, 0xf8, 0x2f, 0xfd, 0xe6, 0x86, 0x18, 0x0f, 0x01, 0x3b, 0x74, 0xf8, 0x2f, -0x01, 0xa6, 0x86, 0x08, 0xe5, 0x04, 0xb5, 0x0c, 0x02, 0x07, 0x81, 0xac, 0x6c, 0xed, 0x08, 0x60, -0x09, 0x0d, 0x05, 0xa8, 0xf7, 0xe6, 0xf4, 0x80, 0x0c, 0xe5, 0x07, 0xb5, 0x89, 0xde, 0x7f, 0x81, -0x22, 0x00, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, 0xef, 0x22, 0x24, 0x23, 0xf8, 0x32, -0xaf, 0xc2, 0x30, 0xe6, 0x05, 0xe5, 0xe0, 0x30, 0xd2, 0x02, 0xd2, 0xe4, 0xc6, 0xe2, 0xaf, 0xd2, -0x00, 0x7f, 0xe2, 0x30, 0x0f, 0x01, 0x23, 0x02, 0x8f, 0xa1, 0xe4, 0xf0, 0xfe, 0xff, 0x0c, 0xe5, -0x24, 0x23, 0xf8, 0x31, 0xa9, 0xc2, 0xf7, 0x30, 0x7f, 0x0d, 0xe6, 0x08, 0x0b, 0x60, 0xf6, 0x2d, -0x32, 0x60, 0x30, 0x50, 0x07, 0x80, 0xf1, 0x30, 0xed, 0x06, 0x60, 0xf6, 0x7e, 0x27, 0x08, 0x02, -0xf0, 0x30, 0xc2, 0x10, 0xe6, 0xaf, 0xe7, 0x10, 0x0e, 0x25, 0xe2, 0x30, 0xd2, 0x0c, 0x7f, 0xaf, -0x80, 0x04, 0xc2, 0x14, 0xe6, 0xaf, 0xe7, 0x10, 0x54, 0x15, 0x4e, 0xec, 0xd2, 0xf6, 0xd2, 0xaf, -0x02, 0xa9, 0xa4, 0x23, 0x08, 0x7f, 0xef, 0x08, 0x83, 0x44, 0xc2, 0xf4, 0x56, 0xaf, 0xd2, 0xc6, -0xd2, 0xaf, 0x54, 0xa9, 0x4f, 0x80, 0x22, 0xff, 0x01, 0xbb, 0xe5, 0x0c, 0x29, 0x82, 0x82, 0xf5, -0x83, 0xe5, 0xf5, 0x3a, 0xe0, 0x83, 0x50, 0x22, 0xe9, 0x06, 0x82, 0x25, 0xe6, 0xf8, 0xbb, 0x22, -0x06, 0xfe, 0x25, 0xe9, 0xf8, 0x82, 0x22, 0xe2, 0x82, 0xe5, 0xf5, 0x29, 0xe5, 0x82, 0x3a, 0x83, -0x83, 0xf5, 0x93, 0xe4, 0xef, 0x22, 0xf0, 0x8d, 0xa8, 0xa4, 0xcf, 0xf0, 0xf0, 0x8c, 0x28, 0xa4, -0x8d, 0xce, 0xa4, 0xf0, 0xfe, 0x2e, 0xc5, 0x22, 0xf8, 0xf0, 0xe0, 0xa3, 0xf0, 0x28, 0xf0, 0xc5, -0xe5, 0xf8, 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, 0xf0, 0x38, 0xa3, 0x22, 0xe0, 0xf8, -0xf0, 0xc5, 0xf0, 0x25, 0xe5, 0xf0, 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, 0x38, 0xc8, -0xe8, 0xf0, 0xef, 0x22, 0xff, 0x2b, 0x3a, 0xee, 0xed, 0xfe, 0xfd, 0x39, 0x38, 0xec, 0x22, 0xfc, -0xef, 0xc3, 0xff, 0x9b, 0x9a, 0xee, 0xed, 0xfe, 0xfd, 0x99, 0x98, 0xec, 0x22, 0xfc, 0x8f, 0xe8, -0xa4, 0xf0, 0x8b, 0xcc, 0xa4, 0xf0, 0xfc, 0x2c, 0x8e, 0xe9, 0xa4, 0xf0, 0xfc, 0x2c, 0xf0, 0x8a, -0xa4, 0xed, 0xfc, 0x2c, 0x8e, 0xea, 0xa4, 0xf0, 0xa8, 0xcd, 0x8b, 0xf0, 0xa4, 0xf0, 0xcc, 0x2d, -0x25, 0x38, 0xfd, 0xf0, 0x8f, 0xe9, 0xa4, 0xf0, 0xcd, 0x2c, 0xf0, 0x35, 0xeb, 0xfc, 0xf0, 0x8e, -0xfe, 0xa4, 0xf0, 0xa9, 0x8f, 0xeb, 0xa4, 0xf0, 0xc5, 0xcf, 0x2e, 0xf0, 0x39, 0xcd, 0xe4, 0xfe, -0xfc, 0x3c, 0xa4, 0xea, 0xce, 0x2d, 0xf0, 0x35, 0xe4, 0xfd, 0xfc, 0x3c, 0xc3, 0x22, 0x9f, 0xe4, -0xe4, 0xff, 0xfe, 0x9e, 0x9d, 0xe4, 0xe4, 0xfd, 0xfc, 0x9c, 0xeb, 0x22, 0xf5, 0x9f, 0xea, 0xf0, -0x42, 0x9e, 0xe9, 0xf0, 0x42, 0x9d, 0xec, 0xf0, 0x80, 0x64, 0x64, 0xc8, 0x98, 0x80, 0xf0, 0x45, -0xeb, 0x22, 0xf5, 0x9f, 0xea, 0xf0, 0x42, 0x9e, 0xe9, 0xf0, 0x42, 0x9d, 0xe8, 0xf0, 0x45, 0x9c, -0x22, 0xf0, 0x60, 0xe8, 0xec, 0x0f, 0x13, 0xc3, 0xed, 0xfc, 0xfd, 0x13, 0x13, 0xee, 0xef, 0xfe, -0xff, 0x13, 0xf1, 0xd8, 0xe8, 0x22, 0x10, 0x60, 0xa2, 0xec, 0x13, 0xe7, 0xed, 0xfc, 0xfd, 0x13, -0x13, 0xee, 0xef, 0xfe, 0xff, 0x13, 0xf0, 0xd8, 0xe8, 0x22, 0x0f, 0x60, 0xc3, 0xef, 0xff, 0x33, -0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xd8, 0xfc, 0x22, 0xf1, 0xfc, 0xe0, 0xe0, 0xa3, -0xa3, 0xfd, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x93, 0xe4, 0x74, 0xfc, 0x93, 0x01, 0x74, 0xfd, -0x93, 0x02, 0x74, 0xfe, 0x93, 0x03, 0x22, 0xff, 0xf8, 0xe0, 0xe0, 0xa3, 0xa3, 0xf9, 0xfa, 0xe0, -0xe0, 0xa3, 0x22, 0xfb, 0x93, 0xe4, 0x74, 0xf8, 0x93, 0x01, 0x74, 0xf9, 0x93, 0x02, 0x74, 0xfa, -0x93, 0x03, 0x22, 0xfb, 0xf0, 0xec, 0xed, 0xa3, 0xa3, 0xf0, 0xf0, 0xee, 0xef, 0xa3, 0x22, 0xf0, -0x82, 0xa8, 0x83, 0x85, 0xd0, 0xf0, 0xd0, 0x83, 0x12, 0x82, 0xaf, 0x27, 0x27, 0x12, 0x12, 0xaf, -0xaf, 0x27, 0x27, 0x12, 0xe4, 0xaf, 0xe4, 0x73, 0xa3, 0x93, 0x83, 0xc5, 0xf0, 0xc5, 0x83, 0xc5, -0xc5, 0xc8, 0xc8, 0x82, 0xa3, 0xf0, 0x83, 0xc5, 0xf0, 0xc5, 0x83, 0xc5, 0xc5, 0xc8, 0xc8, 0x82, -0xe0, 0x22, 0xa3, 0xfb, 0xfa, 0xe0, 0xe0, 0xa3, 0x22, 0xf9, 0xf0, 0xeb, 0xea, 0xa3, 0xa3, 0xf0, -0xf0, 0xe9, 0xd0, 0x22, 0xd0, 0x83, 0xf8, 0x82, 0x93, 0xe4, 0x12, 0x70, 0x01, 0x74, 0x70, 0x93, -0xa3, 0x0d, 0x93, 0xa3, 0x74, 0xf8, 0x93, 0x01, 0x82, 0xf5, 0x83, 0x88, 0x73, 0xe4, 0x02, 0x74, -0x68, 0x93, 0xef, 0x60, 0xa3, 0xa3, 0x80, 0xa3, 0x8a, 0xdf, 0x89, 0x83, 0xe4, 0x82, 0x75, 0x73, -0x08, 0xf0, 0x82, 0x75, 0xef, 0x00, 0xff, 0x2f, 0x33, 0xee, 0xcd, 0xfe, 0xcd, 0x33, 0x33, 0xcc, -0xc5, 0xcc, 0x33, 0x82, 0x82, 0xc5, 0xed, 0x9b, 0xec, 0x9a, 0xe5, 0x99, 0x98, 0x82, 0x0c, 0x40, -0x82, 0xf5, 0x9b, 0xee, 0xed, 0xfe, 0xfd, 0x9a, 0x99, 0xec, 0x0f, 0xfc, 0xf0, 0xd5, 0xe4, 0xd6, -0xfb, 0xce, 0xcd, 0xe4, 0xe4, 0xfa, 0xf9, 0xcc, 0x82, 0xa8, 0xb8, 0x22, 0xc1, 0x00, 0x00, 0xb9, -0xba, 0x59, 0x2d, 0x00, 0x8b, 0xec, 0x84, 0xf0, 0xce, 0xcf, 0xfc, 0xcd, 0xf0, 0xe5, 0xf9, 0xcb, -0x18, 0x78, 0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, 0xec, 0xfd, 0xfc, 0x33, 0x33, 0xeb, -0x10, 0xfb, 0x03, 0xd7, 0x40, 0x99, 0xeb, 0x04, 0xfb, 0x99, 0xd8, 0x0f, 0xe4, 0xe5, 0xfa, 0xf9, -0x78, 0x22, 0xef, 0x18, 0xff, 0x2f, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xc9, 0xfc, -0xc9, 0x33, 0xd7, 0x10, 0x9b, 0x05, 0x9a, 0xe9, 0x07, 0x40, 0x9b, 0xec, 0xe9, 0xfc, 0xf9, 0x9a, -0xd8, 0x0f, 0xe4, 0xe0, 0xfa, 0xc9, 0xcc, 0xe4, 0x22, 0xfb, 0xf0, 0x75, 0xef, 0x10, 0xff, 0x2f, -0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xcc, 0xc8, 0xcc, 0xc8, 0x33, 0xd7, 0x10, 0x9b, 0x07, -0x9a, 0xec, 0x99, 0xe8, 0x0a, 0x40, 0x9b, 0xed, 0xec, 0xfd, 0xfc, 0x9a, 0x99, 0xe8, 0x0f, 0xf8, -0xf0, 0xd5, 0xe4, 0xda, 0xfb, 0xcd, 0xcc, 0xe4, 0xe4, 0xfa, 0xf9, 0xc8, 0xc3, 0x22, 0x7a, 0x90, -0xe0, 0x89, 0x04, 0x94, 0x7a, 0x90, 0xe0, 0x88, 0x00, 0x94, 0x03, 0x50, 0x2b, 0x02, 0x90, 0x73, -0x95, 0x7f, 0x12, 0xe0, 0xdb, 0x27, 0x18, 0x29, 0x29, 0x00, 0x01, 0x20, 0x35, 0x29, 0x29, 0x02, -0x03, 0x4f, 0x77, 0x29, 0x29, 0x04, 0x05, 0xf1, 0xf1, 0x29, 0x29, 0x06, 0x07, 0xf1, 0xf1, 0x29, -0x29, 0x08, 0x09, 0xf1, 0xf1, 0x29, 0x00, 0x0a, 0x29, 0x00, 0x12, 0x13, 0x7e, 0x00, 0x17, 0x80, -0x18, 0x20, 0x02, 0x03, 0x73, 0x2b, 0x50, 0x80, 0x19, 0x30, 0x90, 0x06, 0x97, 0x7f, 0x02, 0x74, -0x30, 0xf0, 0x03, 0x18, 0x2b, 0x02, 0xe4, 0x73, 0x7f, 0x90, 0xf0, 0x97, 0x30, 0x22, 0x0c, 0x1c, -0x1b, 0x30, 0x30, 0x09, 0x06, 0x1d, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x03, 0x19, 0x30, 0x30, 0x06, -0x03, 0x18, 0x2b, 0x02, 0x80, 0x73, 0x30, 0x21, 0x06, 0x1e, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x04, -0x1c, 0x30, 0x30, 0x06, 0x03, 0x1b, 0x1d, 0x20, 0x90, 0x06, 0x97, 0x7f, 0x02, 0x74, 0x30, 0xf0, -0x06, 0x19, 0x18, 0x30, 0x02, 0x03, 0x73, 0x2b, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x01, 0xc3, 0x22, -0x7a, 0x90, 0xe0, 0x89, 0x20, 0x94, 0x7a, 0x90, 0xe0, 0x88, 0x00, 0x94, 0x03, 0x50, 0x2b, 0x02, -0x30, 0x73, 0x0c, 0x1d, 0x1a, 0x30, 0x30, 0x09, 0x06, 0x11, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x07, -0x10, 0x30, 0x30, 0x0c, 0x09, 0x1a, 0x11, 0x30, 0x90, 0x06, 0x97, 0x7f, 0x08, 0x74, 0x20, 0xf0, -0x06, 0x1e, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x03, 0x1c, 0x30, 0x20, 0x03, 0x06, 0x1b, 0x7f, 0x90, -0x74, 0x97, 0xf0, 0x02, 0x19, 0x30, 0x20, 0x03, 0x06, 0x18, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x01, -0x7f, 0x90, 0xe0, 0x97, 0x03, 0x64, 0x03, 0x60, 0x2b, 0x02, 0x90, 0x73, 0x11, 0x7b, 0x04, 0xe0, -0xe0, 0xf0, 0x94, 0xc3, 0x50, 0x04, 0x02, 0x03, 0x73, 0x2b, 0x11, 0x30, 0x90, 0x06, 0x97, 0x7f, -0x05, 0x74, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x11, 0x30, 0x22, 0x09, 0x1f, 0x1a, 0x30, 0x30, 0x06, -0x03, 0x11, 0x19, 0x20, 0x90, 0x07, 0x97, 0x7f, 0x04, 0x74, 0x22, 0xf0, 0x7a, 0x90, 0xe0, 0xa0, -0x03, 0x70, 0x2b, 0x02, 0x90, 0x73, 0x0b, 0x7f, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xa1, 0xa3, 0xfc, -0xfd, 0xe0, 0x9f, 0xd3, 0x80, 0x74, 0xec, 0xf8, 0x80, 0x64, 0x50, 0x98, 0x90, 0x23, 0x0d, 0x7f, -0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, 0xe0, 0xa3, 0xa3, 0xfa, 0xfb, 0xe0, 0xff, 0x2f, -0x3e, 0xea, 0xd3, 0xfe, 0x9f, 0xed, 0x64, 0xee, 0xf8, 0x80, 0x64, 0xec, 0x98, 0x80, 0x09, 0x40, -0x7f, 0x90, 0x74, 0x97, 0xf0, 0x0a, 0x2b, 0x02, 0x90, 0x00, 0x0f, 0x7f, 0xff, 0xe0, 0x95, 0x33, -0xfe, 0xe0, 0x2f, 0xeb, 0xea, 0xff, 0xfe, 0x3e, 0x7a, 0x90, 0xe0, 0xa1, 0xa3, 0xfc, 0xfd, 0xe0, -0x9f, 0xd3, 0x64, 0xee, 0xf8, 0x80, 0x64, 0xec, 0x98, 0x80, 0x09, 0x40, 0x7f, 0x90, 0x74, 0x97, -0xf0, 0x09, 0x2b, 0x02, 0x90, 0x00, 0x11, 0x7f, 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, -0xe0, 0xa3, 0xa3, 0xfa, 0xfb, 0xe0, 0xff, 0x2f, 0x3e, 0xea, 0xd3, 0xfe, 0x9f, 0xed, 0x64, 0xee, -0xf8, 0x80, 0x64, 0xec, 0x98, 0x80, 0x08, 0x40, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x08, 0x58, 0x80, -0x7f, 0x90, 0xe0, 0x13, 0x33, 0xff, 0xe0, 0x95, 0xeb, 0xfe, 0xff, 0x2f, 0x3e, 0xea, 0x90, 0xfe, -0xa1, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0xd3, 0xfd, 0xee, 0x9f, 0x80, 0x64, 0xec, 0xf8, 0x80, 0x64, -0x40, 0x98, 0x90, 0x08, 0x97, 0x7f, 0x07, 0x74, 0x80, 0xf0, 0x90, 0x2d, 0x15, 0x7f, 0xff, 0xe0, -0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, 0xe0, 0xa4, 0xff, 0x2f, 0x7a, 0x90, 0xe0, 0xa3, 0xfe, 0x3e, -0xed, 0xd3, 0xee, 0x9f, 0x80, 0x64, 0xec, 0xf8, 0x80, 0x64, 0x90, 0x98, 0x97, 0x7f, 0x05, 0x40, -0x06, 0x74, 0x80, 0xf0, 0x74, 0x03, 0xf0, 0x05, 0x08, 0x30, 0x90, 0x1d, 0x95, 0x7f, 0xff, 0xe0, -0x7f, 0x90, 0xe0, 0x97, 0x9f, 0xd3, 0x10, 0x50, 0xc3, 0xe0, 0x80, 0x64, 0x88, 0x94, 0x08, 0x40, -0x7f, 0x90, 0xe0, 0x95, 0x7f, 0x90, 0xf0, 0x97, 0x7f, 0x90, 0xe0, 0x95, 0x94, 0xc3, 0x40, 0x08, -0xe0, 0x19, 0x0a, 0x94, 0x14, 0x50, 0x7a, 0x90, 0xe0, 0xbe, 0x94, 0xc3, 0x40, 0x03, 0x90, 0x0b, -0x95, 0x7f, 0x04, 0xe0, 0x7f, 0x90, 0xf0, 0x97, 0x08, 0xd2, 0x7f, 0x90, 0xe0, 0x66, 0xe0, 0x30, -0x90, 0x2a, 0x0c, 0x7b, 0x60, 0xe0, 0x90, 0x0d, 0xf4, 0x7a, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xf3, -0x9f, 0xc3, 0x08, 0x50, 0x7a, 0x90, 0xe0, 0xf3, 0x7a, 0x90, 0xf0, 0xf4, 0x7a, 0x90, 0xe0, 0xf4, -0x90, 0xff, 0x97, 0x7f, 0xd3, 0xe0, 0x40, 0x9f, 0xef, 0x02, 0x22, 0xf0, 0x7c, 0x90, 0xee, 0x2f, -0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x08, 0x55, 0x64, 0x04, 0x70, 0xe0, 0xa3, 0xaa, 0x64, -0x16, 0x60, 0x7c, 0x90, 0x74, 0x08, 0xf0, 0x55, 0x74, 0xa3, 0xf0, 0xaa, 0x7c, 0x90, 0x74, 0x07, -0xf0, 0xae, 0x7c, 0x90, 0x74, 0x05, 0xf0, 0x3c, 0x3b, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, -0x3b, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, 0x56, 0x00, 0x7c, 0x90, -0xee, 0x3d, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x2f, 0xa3, 0xfa, 0xfb, 0xe0, 0x01, 0x64, -0x70, 0x4a, 0x90, 0x13, 0x3b, 0x7c, 0x27, 0x12, 0xef, 0x54, 0x68, 0x24, 0xee, 0xff, 0x14, 0x34, -0xed, 0xfe, 0xa5, 0x34, 0x27, 0x80, 0x64, 0xeb, 0x4a, 0x02, 0x7c, 0x90, 0x70, 0x3b, 0x12, 0x10, -0x54, 0x27, 0x24, 0xef, 0xff, 0x18, 0x34, 0xee, 0xfe, 0x2a, 0x34, 0xed, 0x80, 0x7d, 0x12, 0x0e, -0x54, 0x27, 0x24, 0xef, 0xff, 0x68, 0x34, 0xee, 0xfe, 0x14, 0x34, 0xed, 0xfd, 0xa5, 0x34, 0xec, -0xfc, 0xff, 0x7c, 0x90, 0x12, 0x33, 0x8c, 0x27, 0x7c, 0x90, 0x12, 0x3b, 0x54, 0x27, 0x7b, 0x90, -0x12, 0xff, 0x8c, 0x27, 0x7c, 0x90, 0xe0, 0x05, 0xf0, 0x14, 0xd3, 0xe0, 0x3c, 0x94, 0x03, 0x40, -0x3c, 0x74, 0x90, 0xf0, 0x05, 0x7c, 0x60, 0xe0, 0x02, 0x03, 0xeb, 0x2d, 0x3c, 0x74, 0xe4, 0xf0, -0xfe, 0xff, 0xfc, 0xfd, 0x7c, 0x90, 0x12, 0x33, 0x70, 0x27, 0x12, 0xd3, 0xf3, 0x26, 0x08, 0x40, -0x7c, 0x90, 0x12, 0x33, 0x54, 0x27, 0x09, 0x80, 0x7c, 0x90, 0x12, 0x33, 0x54, 0x27, 0x26, 0x12, -0x90, 0xe5, 0x3b, 0x7c, 0x27, 0x12, 0xe4, 0x8c, 0xfe, 0xff, 0x01, 0x7d, 0x90, 0xfc, 0x3b, 0x7c, -0x27, 0x12, 0xd3, 0x70, 0x27, 0x12, 0x40, 0x09, 0xe4, 0x09, 0x7c, 0x90, 0xf0, 0x31, 0xf0, 0xa3, -0x0f, 0x80, 0x7c, 0x90, 0xe0, 0x3d, 0xa3, 0xff, 0x90, 0xe0, 0x31, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, -0x90, 0xf0, 0x07, 0x7c, 0x60, 0xe0, 0x24, 0x20, 0x70, 0xef, 0xc3, 0x33, 0x7c, 0x90, 0xe0, 0x32, -0xf4, 0x94, 0x7c, 0x90, 0xe0, 0x31, 0x01, 0x94, 0x1c, 0x50, 0x7c, 0x90, 0xe0, 0x06, 0xf0, 0x14, -0x70, 0xe0, 0xa3, 0x4c, 0x80, 0xf0, 0xd3, 0x48, 0x7c, 0x90, 0xe0, 0x32, 0xf4, 0x94, 0x7c, 0x90, -0xe0, 0x31, 0x01, 0x94, 0x39, 0x40, 0x7c, 0x90, 0x74, 0x07, 0xf0, 0xae, 0x31, 0x80, 0x22, 0x7d, -0x94, 0x7c, 0x06, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2e, 0x7f, 0x94, 0x7e, 0x0a, -0x12, 0x00, 0xf5, 0x53, 0x7c, 0x90, 0x74, 0x06, 0xf0, 0x0c, 0x90, 0xc3, 0x32, 0x7c, 0x94, 0xe0, -0x90, 0xf4, 0x31, 0x7c, 0x94, 0xe0, 0x50, 0x01, 0x90, 0x06, 0x07, 0x7c, 0x11, 0x74, 0x90, 0xf0, -0x06, 0x7c, 0x64, 0xe0, 0x60, 0x0c, 0x02, 0x03, 0xeb, 0x2d, 0xe0, 0xa3, 0x11, 0x64, 0x03, 0x60, -0x2d, 0x02, 0x7d, 0xeb, 0x7c, 0x2c, 0xff, 0x94, 0x12, 0xfe, 0xf5, 0x53, 0x22, 0x7f, 0x94, 0x7e, -0x00, 0x12, 0x90, 0x56, 0x31, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x64, 0xf0, 0x4e, 0x08, 0x0a, 0x60, -0x7c, 0x90, 0xe4, 0x31, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x7c, 0x90, 0xe0, 0x31, 0xa3, 0xfe, -0xff, 0xe0, 0x22, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x7f, 0xf5, 0x7e, 0x2e, 0x12, 0x94, 0x56, 0x00, -0x7c, 0x90, 0xee, 0x31, 0xa3, 0xf0, 0xf0, 0xef, 0x08, 0x64, 0x70, 0x4e, 0x02, 0x03, 0xe0, 0x2d, -0x7c, 0x90, 0x74, 0x31, 0xf5, 0xff, 0x12, 0xf0, 0x4f, 0x26, 0x7c, 0x90, 0xe0, 0x31, 0xa3, 0xfe, -0xff, 0xe0, 0x2e, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x7f, 0xf5, 0x7e, 0x3b, 0x12, 0x94, 0x56, 0x00, -0x7c, 0x90, 0xee, 0x37, 0xa3, 0xf0, 0xf0, 0xef, 0x3a, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, -0x39, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x35, 0x12, 0x94, 0x56, 0x00, 0x7c, 0x90, -0xee, 0x3b, 0xa3, 0xf0, 0xf0, 0xef, 0x34, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x3d, 0x7c, -0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x37, 0x7c, 0x27, 0x12, 0x90, 0x54, 0x3b, 0x7c, 0x27, 0x12, -0x12, 0x70, 0x88, 0x26, 0x7c, 0x90, 0x12, 0x37, 0x8c, 0x27, 0x7c, 0x90, 0xe0, 0x37, 0xa3, 0xfe, -0xff, 0xe0, 0x31, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x39, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, -0x7d, 0xff, 0x7c, 0x30, 0x12, 0x94, 0xf5, 0x53, 0x2c, 0x7d, 0x94, 0x7c, 0x1f, 0x7f, 0x00, 0x7e, -0x53, 0x12, 0x90, 0xf5, 0x07, 0x7c, 0xff, 0xe0, 0x90, 0x22, 0x67, 0x7f, 0x20, 0xe0, 0x03, 0xe5, -0x30, 0x02, 0x7f, 0x0a, 0x7e, 0x18, 0x12, 0x66, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xde, 0xa3, 0xf0, -0xf0, 0xef, 0x90, 0xc3, 0xde, 0x7b, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x80, 0x74, 0x07, 0xf0, 0x7f, -0x74, 0xa3, 0xf0, 0xff, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x20, 0x90, 0x1c, 0xdf, 0x7b, 0x25, 0xe0, -0xf0, 0xe0, 0x7b, 0x90, 0xe0, 0xde, 0xf0, 0x33, 0xe0, 0xc3, 0x80, 0x64, 0x80, 0x94, 0x07, 0x50, -0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x90, 0xf0, 0xdf, 0x7b, 0x24, 0xe0, 0xfe, 0x14, 0x7b, 0x90, -0xe0, 0xde, 0xf7, 0x34, 0x7f, 0x90, 0xf0, 0x92, 0xce, 0xa3, 0x90, 0xf0, 0x92, 0x7f, 0xff, 0xe0, -0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0xe0, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0xe0, 0xa3, 0xfe, -0xd3, 0xe0, 0x00, 0x94, 0x64, 0xee, 0x94, 0x80, 0x40, 0x80, 0x80, 0x02, 0xc3, 0x11, 0x64, 0xee, -0x94, 0x80, 0x50, 0x80, 0x80, 0x02, 0xe4, 0x07, 0x7b, 0x90, 0xf0, 0xe0, 0xf0, 0xa3, 0x90, 0xd3, -0xe1, 0x7b, 0x94, 0xe0, 0x90, 0x6a, 0xe0, 0x7b, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x8a, 0x74, 0x07, -0xf0, 0x0a, 0x74, 0xa3, 0xf0, 0x6a, 0x90, 0xc3, 0xe1, 0x7b, 0x94, 0xe0, 0x90, 0x96, 0xe0, 0x7b, -0x64, 0xe0, 0x94, 0x80, 0x50, 0x75, 0x74, 0x07, 0xf0, 0xf5, 0x74, 0xa3, 0xf0, 0x96, 0x7b, 0x90, -0xe0, 0xe0, 0xa3, 0xfe, 0xfb, 0xe0, 0x06, 0xaa, 0x33, 0xea, 0xe0, 0x95, 0xf8, 0xf9, 0x7a, 0x90, -0xe0, 0xa5, 0xe4, 0xff, 0xfd, 0xfc, 0x12, 0xfe, 0x96, 0x26, 0x7b, 0x90, 0x12, 0xe2, 0x8c, 0x27, -0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x2d, 0x7f, 0x55, 0x7e, 0x00, 0x12, 0x90, 0x56, -0xd5, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xe2, 0x7b, 0x27, 0x12, 0x90, 0x70, 0xd5, 0x7a, -0xfe, 0xe0, 0xe0, 0xa3, 0xe4, 0xff, 0xfd, 0xfc, 0x26, 0x12, 0x90, 0x96, 0xe2, 0x7b, 0x27, 0x12, -0x90, 0x8c, 0xe2, 0x7b, 0x27, 0x12, 0x78, 0x54, 0x12, 0x12, 0x2d, 0x27, 0x7b, 0x90, 0xee, 0xe0, -0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xc3, 0xd6, 0x7a, 0x9f, 0xe0, 0x90, 0xf0, 0xd5, 0x7a, 0x9e, 0xe0, -0xd3, 0xf0, 0xe0, 0xa3, 0xff, 0x94, 0x7a, 0x90, 0xe0, 0xd5, 0x3f, 0x94, 0x07, 0x40, 0x3f, 0x74, -0xa3, 0xf0, 0xff, 0x74, 0xc3, 0xf0, 0x7a, 0x90, 0xe0, 0xd5, 0x02, 0x94, 0x06, 0x50, 0x02, 0x74, -0xa3, 0xf0, 0xf0, 0xe4, 0x7a, 0x90, 0xe0, 0xd5, 0xa3, 0xfe, 0xff, 0xe0, 0x2d, 0x7d, 0x55, 0x7c, -0x53, 0x12, 0xa2, 0xf5, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0xd8, 0x7a, 0x60, 0xe0, 0xe4, 0x57, -0x90, 0xf0, 0xd9, 0x7a, 0xff, 0xe0, 0xe0, 0xa3, 0x7a, 0x90, 0xcf, 0xdb, 0xa3, 0xf0, 0xf0, 0xef, -0x12, 0x7f, 0x62, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xd9, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, -0xdb, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xda, 0xff, 0x9f, 0x7a, 0x90, -0xe0, 0xd9, 0xfe, 0x9e, 0x7a, 0x90, 0xf0, 0xdd, 0xef, 0xa3, 0xc3, 0xf0, 0x94, 0xee, 0x40, 0x80, -0x90, 0x61, 0xdd, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xe4, 0xff, 0xff, 0x9f, 0x9e, 0xe4, 0x7a, 0x90, -0xf0, 0xdd, 0xef, 0xa3, 0x22, 0xf0, 0x7a, 0x90, 0x74, 0xd8, 0xf0, 0x01, 0x7a, 0x90, 0xe0, 0xe1, -0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xdd, 0xa3, 0xfc, 0xc3, 0xe0, 0xff, 0x9f, 0x9e, 0xec, -0x90, 0xfe, 0xdf, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xd3, 0xee, 0x00, 0x80, 0x64, 0x80, 0x94, -0x20, 0x40, 0x24, 0xe0, 0xff, 0x04, 0x7a, 0x90, 0xe0, 0xdf, 0x00, 0x34, 0xef, 0xfe, 0x03, 0x78, -0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0xe1, 0x7a, 0x8f, 0xee, 0x12, 0xf0, -0x4f, 0x26, 0x00, 0x22, 0xff, 0x00, 0x00, 0xfe, 0x00, 0x01, 0xff, 0x02, 0x00, 0xfe, 0x00, 0x00, -0xff, 0x04, 0xff, 0xfe, 0x00, 0xfc, 0x00, 0x04, 0xff, 0x03, 0x00, 0xfa, 0x00, 0x00, 0xff, 0x06, -0xff, 0xfb, 0x00, 0xfd, 0xff, 0x0b, 0xff, 0xfc, 0x00, 0xed, 0x00, 0x13, 0xff, 0x1c, 0xff, 0xd3, -0x00, 0xdc, 0x00, 0x5a, 0xff, 0x2a, 0xff, 0x47, 0x02, 0xd2, 0xff, 0x66, 0x00, 0xfe, 0x00, 0x04, -0xff, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x04, 0xff, 0xfe, 0x00, 0xfc, 0x00, 0x05, 0xff, 0x02, -0x00, 0xf8, 0x00, 0x02, 0xff, 0x0b, 0xff, 0xf8, 0x00, 0xf1, 0x00, 0x10, 0xff, 0x13, 0xff, 0xe5, -0x00, 0xea, 0x00, 0x2c, 0xff, 0x1a, 0xff, 0xbb, 0x00, 0xe4, 0x00, 0x6e, 0xff, 0x1f, 0xff, 0x37, -0x02, 0xe0, 0xff, 0x74, 0x00, 0xff, 0x00, 0x01, 0xff, 0x01, 0xff, 0xff, 0x00, 0xff, 0x00, 0x02, -0xff, 0x01, 0x00, 0xfe, 0x00, 0x00, 0xff, 0x03, 0xff, 0xff, 0x00, 0xfd, 0x00, 0x04, 0xff, 0x01, -0x00, 0xf8, 0x00, 0x04, 0xff, 0x0d, 0xff, 0xf3, 0x00, 0xed, 0x00, 0x1c, 0xff, 0x19, 0xff, 0xcb, -0x00, 0xe1, 0x00, 0x60, 0xff, 0x25, 0xff, 0x42, 0x02, 0xd8, 0xff, 0x6b, 0x00, 0xfd, 0x00, 0x03, -0xff, 0x02, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x04, 0xff, 0xff, 0x00, 0xfc, 0x00, 0x03, 0xff, 0x03, -0x00, 0xfb, 0x00, 0x00, 0xff, 0x09, 0xff, 0xfc, 0x00, 0xf4, 0x00, 0x0a, 0xff, 0x10, 0xff, 0xeb, -0x00, 0xec, 0x00, 0x25, 0xff, 0x19, 0xff, 0xc2, 0x00, 0xe4, 0x00, 0x69, 0xff, 0x1f, 0xff, 0x3b, -0x02, 0xdf, 0x1c, 0x72, 0x16, 0x36, 0x15, 0xed, 0x18, 0x44, 0x14, 0x36, 0x18, 0x36, 0x14, 0x7f, -0x18, 0x5b, 0x5b, 0x90, 0x5b, 0x5b, 0x59, 0x5b, 0x0b, 0x49, 0x01, 0xf5, 0x01, 0x40, 0x01, 0x40, -0x01, 0x40, 0x02, 0x40, 0x24, 0xb2, 0x18, 0x32, 0x10, 0x15, 0x07, 0x04, 0x05, 0xaa, 0x4a, 0x19, -0x31, 0xdd, 0x21, 0xd0, 0x16, 0x20, 0x0e, 0x07, 0x7f, 0xa6, 0x61, 0xff, 0x3c, 0x18, 0x26, 0xf0, -0x18, 0x3f, 0x7f, 0x01, 0x7f, 0xff, 0x6a, 0xff, 0x3a, 0x40, 0x20, 0x76, 0x01, 0x2b, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, -0x02, 0x01, 0x04, 0x03, 0x08, 0x06, 0x0c, 0x0a, 0x10, 0x0e, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x10, 0x17, 0x0e, 0x13, 0x0d, 0x11, 0x04, 0x10, -0x05, 0x05, 0x07, 0x06, 0x08, 0x08, 0x34, 0x09, 0x34, 0xcd, 0x34, 0xcd, 0x34, 0xcd, 0x34, 0xcd, -0x34, 0xcd, 0x1a, 0xcd, 0x1a, 0x33, 0x1a, 0x33, 0x1a, 0x33, 0x1a, 0x33, 0x1a, 0x33, 0x34, 0x33, -0x31, 0x18, 0x2e, 0x4a, 0x35, 0xd4, 0x35, 0xf1, 0x3c, 0xf1, 0x18, 0xf9, 0x19, 0x14, 0x18, 0xc6, -0x19, 0xfa, 0x1a, 0x09, 0x1c, 0x00, 0x30, 0x46, 0x30, 0x39, 0x35, 0x39, 0x39, 0x3a, 0x39, 0x7f, -0x3b, 0x97, 0x90, 0xfc, 0x3a, 0x7d, 0xa3, 0xe0, 0x54, 0xe0, 0xf5, 0x0f, 0x70, 0x19, 0x02, 0x03, -0x91, 0x33, 0x18, 0x7f, 0x66, 0x7e, 0x00, 0x12, 0x8e, 0x56, 0x8f, 0x1a, 0xe5, 0x1b, 0x45, 0x1b, -0x60, 0x1a, 0x12, 0x15, 0x4f, 0x42, 0x25, 0xef, 0xff, 0xe0, 0x33, 0xee, 0xef, 0xfe, 0xff, 0x24, -0xee, 0xff, 0x47, 0x34, 0x1a, 0xf5, 0x1b, 0x8f, 0x90, 0xc3, 0xcf, 0x7f, 0x95, 0xe0, 0xf5, 0x1b, -0x90, 0x11, 0xce, 0x7f, 0x95, 0xe0, 0xf5, 0x1a, 0xe4, 0x10, 0x18, 0xf5, 0x74, 0xc3, 0x95, 0x0f, -0xf5, 0x19, 0xe4, 0x19, 0x23, 0xf5, 0x16, 0x75, 0xe5, 0x01, 0xd3, 0x16, 0x19, 0x95, 0x1a, 0x50, -0x10, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1f, 0x92, 0x18, 0xe5, -0x13, 0xc3, 0x23, 0x45, 0x18, 0xf5, 0x16, 0x05, 0xdf, 0x80, 0x7d, 0x90, 0xe0, 0x3d, 0xe0, 0x30, -0xe5, 0x16, 0xa2, 0x10, 0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, 0xf5, 0x13, 0x92, 0x11, 0xe5, 0x1f, -0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, 0x26, 0xe1, 0x10, 0xe5, -0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1e, 0x92, 0x10, 0xe5, 0xe7, 0xa2, -0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1f, 0x92, 0x18, 0xe5, 0x13, 0x13, 0x3f, 0x54, -0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x66, 0x7c, 0x25, 0xe0, 0xf0, 0x18, 0x18, 0x92, -0x23, 0xe5, 0x11, 0x25, 0x11, 0xf5, 0x35, 0xe4, 0xf5, 0x10, 0xc2, 0x10, 0xd3, 0x18, 0x11, 0xe5, -0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x2b, 0x40, 0x7c, 0x90, 0xe0, 0x65, 0x11, 0x25, -0x13, 0xf5, 0x7c, 0x90, 0xe0, 0x64, 0x10, 0x35, 0x12, 0xf5, 0xe5, 0xd3, 0x94, 0x13, 0xe5, 0xff, -0x94, 0x12, 0x40, 0x7f, 0x75, 0x08, 0x7f, 0x10, 0x11, 0x75, 0x80, 0xff, 0x85, 0x18, 0x10, 0x12, -0x13, 0x85, 0x80, 0x11, 0x90, 0x10, 0x64, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, 0x11, 0x25, 0x11, 0xf5, -0x10, 0xe5, 0xf5, 0x3e, 0x90, 0x10, 0x68, 0x7d, 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xe5, 0xc3, 0xf0, -0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x05, 0x50, 0xf5, 0xe4, 0xf5, 0x10, 0x90, 0x11, 0x64, 0x7c, -0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xe5, 0xe4, 0xf0, 0x14, 0xf5, 0xe5, 0xd3, 0x94, 0x11, 0xe5, 0xff, -0x64, 0x10, 0x94, 0x80, 0x40, 0xcf, 0xe5, 0x15, 0x94, 0x14, 0x50, 0x03, 0xe4, 0x0f, 0x11, 0x25, -0x11, 0xf5, 0xf0, 0x74, 0x10, 0x35, 0x10, 0xf5, 0x14, 0x05, 0xde, 0x80, 0x25, 0xe4, 0xff, 0x11, -0x10, 0xe5, 0xd8, 0x34, 0xe7, 0xa2, 0xfe, 0x13, 0x13, 0xef, 0x12, 0xff, 0x49, 0x45, 0x1a, 0x8e, -0x1b, 0x8f, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7d, 0x90, 0xe5, 0xa4, 0xf0, 0x1a, -0xe5, 0xa3, 0xf0, 0x1b, 0x7d, 0x90, 0xe4, 0xa6, 0xa3, 0xf0, 0x14, 0xe5, 0x7e, 0xf0, 0x7f, 0x7d, -0x7d, 0xa4, 0x7c, 0x02, 0x12, 0x00, 0x57, 0x55, 0x14, 0x7b, 0x00, 0x7a, 0x06, 0x7d, 0x06, 0x7f, -0x54, 0x12, 0xa2, 0x8c, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0x61, 0x20, 0x02, 0x03, 0x2c, 0x34, -0x01, 0x7f, 0x25, 0x12, 0x90, 0xb1, 0x82, 0x7a, 0x27, 0x12, 0xef, 0x54, 0x01, 0x24, 0xe4, 0xff, -0xfe, 0x3e, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x7a, 0x90, 0x12, 0x82, 0x8c, 0x27, 0x7a, 0x90, -0x12, 0x82, 0x54, 0x27, 0x4d, 0xec, 0x4f, 0x4e, 0x0a, 0x70, 0x7a, 0x90, 0x12, 0x82, 0x98, 0x27, -0xff, 0xff, 0xff, 0xff, 0x52, 0x12, 0x30, 0x3a, 0x03, 0x3c, 0x4d, 0x12, 0x30, 0xb5, 0x03, 0x3c, -0x49, 0x12, 0x30, 0xe8, 0x03, 0x3e, 0x16, 0x12, 0x30, 0xf2, 0x03, 0x3e, 0x3e, 0x12, 0x30, 0x30, -0x03, 0x3e, 0x28, 0x12, 0x30, 0xd5, 0x03, 0x3e, 0x47, 0x12, 0x30, 0x34, 0x03, 0x3e, 0x37, 0x12, -0x30, 0xf4, 0x03, 0x24, 0x1d, 0x12, 0x20, 0x54, 0x09, 0x30, 0x3d, 0x20, 0x90, 0x06, 0x80, 0x7a, -0x60, 0xe0, 0x12, 0x03, 0xb2, 0x12, 0x24, 0x30, 0x12, 0x03, 0x3e, 0x1a, 0x36, 0x30, 0x12, 0x03, -0x67, 0x49, 0x3c, 0x30, 0x12, 0x03, 0xe3, 0x48, 0x29, 0x30, 0x12, 0x03, 0xa4, 0x55, 0x46, 0x12, -0x02, 0x9b, 0x92, 0x33, 0x01, 0x7f, 0x25, 0x12, 0x90, 0xb1, 0xaf, 0x7f, 0x30, 0xe0, 0x03, 0xe1, -0x33, 0x02, 0x90, 0x92, 0xb0, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x1f, 0x7c, 0xfc, 0xe0, -0xe0, 0xa3, 0xd3, 0xfd, 0xec, 0x9f, 0x40, 0x9e, 0x7f, 0x04, 0x80, 0x01, 0x7f, 0x02, 0xef, 0x00, -0xe0, 0x25, 0x33, 0xff, 0xe0, 0x95, 0xe4, 0xfe, 0xff, 0x2f, 0x34, 0xee, 0xfe, 0x40, 0x7c, 0x90, -0xe0, 0x1d, 0xa3, 0xfa, 0xfb, 0xe0, 0xb3, 0x64, 0x60, 0x4a, 0xeb, 0x0c, 0xb2, 0x64, 0x60, 0x4a, -0xeb, 0x06, 0xb4, 0x64, 0x70, 0x4a, 0x7a, 0x06, 0x7b, 0x00, 0x80, 0x01, 0x7a, 0x04, 0x7b, 0x00, -0xef, 0x00, 0xff, 0x2b, 0x3a, 0xee, 0x7f, 0x90, 0xf0, 0xe2, 0xef, 0xa3, 0x90, 0xf0, 0xb0, 0x7f, -0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0x9f, 0xed, 0x9e, 0xec, 0x6a, 0x40, 0x7c, 0x90, 0xe0, 0x26, -0x80, 0x94, 0x7c, 0x90, 0xe0, 0x25, 0x02, 0x94, 0x06, 0x50, 0x75, 0xe4, 0x80, 0xf0, 0x69, 0x80, -0x7c, 0x90, 0x74, 0x25, 0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x80, 0x7c, 0x90, 0xe0, 0x1d, 0xa3, 0xfe, -0xff, 0xe0, 0x40, 0x7d, 0x71, 0x7c, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x03, -0x12, 0x00, 0xf5, 0x53, 0x7c, 0x90, 0xe0, 0x1d, 0xa3, 0xfe, 0xff, 0xe0, 0x94, 0xc3, 0xee, 0xdc, -0x80, 0x64, 0x80, 0x94, 0x03, 0x40, 0x33, 0x02, 0xef, 0x92, 0x58, 0x24, 0xee, 0xff, 0x03, 0x34, -0x7d, 0xfe, 0x7c, 0x41, 0x12, 0x71, 0xf5, 0x53, 0x24, 0x7d, 0x71, 0x7c, 0x07, 0x7f, 0x00, 0x7e, -0x53, 0x12, 0x02, 0xf5, 0x92, 0x33, 0x90, 0xd3, 0x26, 0x7c, 0x94, 0xe0, 0x90, 0x00, 0x25, 0x7c, -0x94, 0xe0, 0x40, 0x00, 0x74, 0x0a, 0xf5, 0xff, 0x12, 0xf0, 0x4f, 0x26, 0x33, 0x02, 0x7d, 0x92, -0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, 0x33, 0x02, 0x90, 0x92, 0x26, 0x7b, -0x70, 0xe0, 0x7f, 0x24, 0x7e, 0x11, 0x12, 0x64, 0x56, 0x00, 0x7b, 0x90, 0xee, 0x18, 0xa3, 0xf0, -0xf0, 0xef, 0x10, 0x7f, 0x64, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x1a, 0x7b, 0xf0, 0xee, 0xef, 0xa3, -0x90, 0xf0, 0x26, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0x1c, 0x7b, 0x04, 0xe0, 0xe0, 0xf0, 0x03, 0xb4, -0xe4, 0x02, 0x90, 0xf0, 0x18, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x14, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0x1a, 0x7b, 0xfd, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcd, 0x16, 0xa3, 0xf0, -0xf0, 0xed, 0x90, 0xe4, 0x12, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x1c, 0x7b, 0x24, 0xe0, 0x60, 0xfe, -0x04, 0x3c, 0x71, 0x70, 0xef, 0xd3, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, 0x90, 0x0c, 0x12, 0x7b, -0xec, 0x74, 0xa3, 0xf0, 0x78, 0x74, 0x80, 0xf0, 0xd3, 0x5c, 0x7b, 0x90, 0xe0, 0x19, 0x64, 0x94, -0x7b, 0x90, 0xe0, 0x18, 0x00, 0x94, 0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, 0xf0, 0xee, 0x74, 0xa3, -0xf0, 0x08, 0x41, 0x80, 0xf2, 0x74, 0xa3, 0xf0, 0xea, 0x74, 0x80, 0xf0, 0x90, 0x38, 0x18, 0x7b, -0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, 0x90, 0x0c, 0x12, 0x7b, -0x13, 0x74, 0xa3, 0xf0, 0x88, 0x74, 0x80, 0xf0, 0xd3, 0x1c, 0x94, 0xef, 0xee, 0x64, 0x00, 0x94, -0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, 0xf0, 0x11, 0x74, 0xa3, 0xf0, 0xf8, 0x07, 0x80, 0x0d, 0x74, -0xa3, 0xf0, 0x16, 0x74, 0x90, 0xf0, 0x12, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, -0xe4, 0xfd, 0xfc, 0x9e, 0x90, 0xc3, 0x17, 0x7b, 0x9d, 0xe0, 0x7b, 0x90, 0xe0, 0x16, 0x50, 0x9c, -0x80, 0x02, 0xc3, 0x01, 0x09, 0x92, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, 0x0c, 0x50, 0x09, 0x30, -0x90, 0x27, 0x14, 0x7b, 0xff, 0x74, 0xf0, 0xf5, 0x1b, 0x80, 0x90, 0xd3, 0x13, 0x7b, 0x94, 0xe0, -0x90, 0x00, 0x12, 0x7b, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x80, 0x20, 0x0d, 0x0a, 0x09, 0x7b, 0x90, -0xe4, 0x14, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x7b, 0x90, 0xe0, 0x12, 0xa3, 0xfe, 0xff, 0xe0, -0x7b, 0x90, 0xee, 0x16, 0xf0, 0x8f, 0x26, 0x12, 0x90, 0x4f, 0x14, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, -0x7d, 0xff, 0x7c, 0x11, 0x12, 0x64, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x16, 0xa3, 0xfe, 0xff, 0xe0, -0x10, 0x7d, 0x64, 0x7c, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2f, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x02, -0x90, 0xf5, 0xf3, 0x7a, 0x0a, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0x25, 0xe0, 0x24, 0xe0, 0xf5, 0xfd, -0xe4, 0x82, 0x30, 0x34, 0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfe, 0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, -0x7a, 0x90, 0x12, 0xe5, 0x70, 0x27, 0x12, 0xd3, 0xf3, 0x26, 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, -0xf0, 0x09, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x25, 0x07, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x31, -0xe4, 0x83, 0xfe, 0x93, 0x01, 0x74, 0xff, 0x93, 0xfc, 0xe4, 0x90, 0xfd, 0xe5, 0x7a, 0x27, 0x12, -0xd3, 0x70, 0x26, 0x12, 0x40, 0xf3, 0x90, 0x06, 0xf3, 0x7a, 0x08, 0x74, 0x90, 0xf0, 0xa8, 0x7a, -0x25, 0xe0, 0x24, 0xe0, 0xf5, 0x11, 0xe4, 0x82, 0x31, 0x34, 0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfe, -0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, 0x7a, 0x90, 0x12, 0xe5, 0x70, 0x27, 0x12, 0xd3, 0xf3, 0x26, -0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x07, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x25, 0x1b, 0x24, -0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x31, 0xe4, 0x83, 0xfe, 0x93, 0x01, 0x74, 0xff, 0x93, 0xfc, 0xe4, -0x90, 0xfd, 0xe5, 0x7a, 0x27, 0x12, 0xd3, 0x70, 0x26, 0x12, 0x40, 0xf3, 0x90, 0x06, 0xf3, 0x7a, -0x06, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0x25, 0xe0, 0x24, 0xe0, 0xf5, 0x25, 0xe4, 0x82, 0x31, 0x34, -0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfe, 0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, 0x7a, 0x90, 0x12, 0xe5, -0x70, 0x27, 0x12, 0xd3, 0xf3, 0x26, 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x05, 0x90, 0xc3, -0x0e, 0x7b, 0x94, 0xe0, 0x90, 0xb8, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x0b, 0x90, 0x6e, 0xf3, 0x7a, -0x94, 0xe0, 0x50, 0x0a, 0xe4, 0x1d, 0x7b, 0x90, 0xf0, 0x0a, 0xf0, 0xa3, 0x7b, 0x90, 0xe0, 0x09, -0xf0, 0x04, 0x94, 0xe0, 0x40, 0x06, 0x74, 0x42, 0xf0, 0x06, 0x7b, 0x90, 0x74, 0x0c, 0xf0, 0x01, -0x37, 0x80, 0x90, 0xe4, 0x09, 0x7b, 0x90, 0xf0, 0x0a, 0x7b, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, -0x7f, 0x90, 0xe0, 0x06, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xd3, 0x0b, 0x7b, 0x9f, 0xe0, 0x7b, 0x90, -0xe0, 0x0a, 0x40, 0x9e, 0x90, 0x14, 0x06, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x0a, -0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x0c, 0x7b, 0x90, 0xf0, 0x06, 0x7f, 0x70, 0xe0, 0xa3, 0x02, -0x70, 0xe0, 0x90, 0x08, 0x0c, 0x7b, 0x90, 0xf0, 0x09, 0x7b, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x67, -0xe1, 0x20, 0x90, 0x0a, 0x17, 0x7f, 0x90, 0xe0, 0x97, 0x7f, 0x80, 0xf0, 0x90, 0x08, 0x97, 0x7f, -0x90, 0xe0, 0x17, 0x7f, 0x90, 0xf0, 0x97, 0x7f, 0xff, 0xe0, 0x7f, 0x90, 0xe0, 0x95, 0x60, 0x6f, -0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x24, 0x03, 0x24, 0x38, 0x02, 0x90, 0xc4, 0x97, 0x7f, -0x90, 0xe0, 0x95, 0x7f, 0xe0, 0xf0, 0x02, 0xb4, 0xe4, 0x23, 0x7b, 0x90, 0xf0, 0x07, 0x7a, 0x90, -0xf0, 0xb8, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xf7, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xf9, 0xf0, 0xa3, -0x7a, 0x90, 0xf0, 0xfb, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xfd, 0x1c, 0xc2, 0x7f, 0x90, 0xe0, 0x95, -0x64, 0xd3, 0x94, 0x80, 0x50, 0x81, 0x90, 0x45, 0x80, 0x7a, 0x01, 0x74, 0x7d, 0xf0, 0x7c, 0x2f, -0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2e, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, -0xe4, 0xf5, 0x7b, 0x90, 0xf0, 0x08, 0x7a, 0x90, 0xf0, 0xba, 0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x00, -0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x02, 0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x04, 0xf0, 0xa3, 0x7b, 0x90, -0xf0, 0x06, 0x19, 0xc2, 0x7a, 0x90, 0x74, 0xd7, 0xf0, 0x03, 0x1d, 0xc2, 0x90, 0xe4, 0x88, 0x7a, -0xa3, 0xf0, 0x90, 0xf0, 0x95, 0x7f, 0xd3, 0xe0, 0x02, 0x94, 0x07, 0x40, 0x94, 0xe0, 0x50, 0x10, -0x80, 0x02, 0xc3, 0x01, 0x14, 0x92, 0x7a, 0x90, 0x74, 0xbf, 0xf0, 0x02, 0x7f, 0x90, 0xe0, 0x95, -0x64, 0xc3, 0x94, 0x80, 0x50, 0x88, 0xc2, 0x02, 0x90, 0x08, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, -0x85, 0x94, 0x11, 0x50, 0x90, 0xe4, 0x0c, 0x7b, 0x90, 0xf0, 0x09, 0x7b, 0x90, 0xf0, 0x0a, 0x7b, -0xa3, 0xf0, 0x80, 0xf0, 0x90, 0x16, 0x0d, 0x7b, 0x75, 0xe4, 0x01, 0xf0, 0x26, 0x12, 0x90, 0x4f, -0x0d, 0x7b, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x74, 0x08, 0x90, 0xff, 0x0d, 0x7b, 0xa3, 0xf0, -0xc3, 0xf0, 0x7a, 0x90, 0xe0, 0x89, 0xff, 0x94, 0x7a, 0x90, 0xe0, 0x88, 0xff, 0x94, 0x07, 0x50, -0x75, 0xe4, 0x01, 0xf0, 0x26, 0x12, 0x20, 0x4f, 0x23, 0x14, 0x90, 0xd3, 0x8b, 0x7a, 0x94, 0xe0, -0x90, 0x28, 0x8a, 0x7a, 0x94, 0xe0, 0x40, 0x0a, 0x90, 0x0a, 0x67, 0x7f, 0x30, 0xe0, 0x14, 0xe1, -0x52, 0x02, 0x90, 0x99, 0x8a, 0x7a, 0x75, 0xe4, 0x01, 0xf0, 0x26, 0x02, 0xe4, 0x4f, 0x7a, 0x90, -0xf0, 0x8a, 0xf0, 0xa3, 0x7e, 0x22, 0x7f, 0x7a, 0x7c, 0x81, 0x7d, 0x7a, 0x12, 0x82, 0xfa, 0x54, -0x7e, 0x7e, 0xe9, 0x7f, 0x7f, 0x7c, 0x6d, 0x7d, 0x54, 0x12, 0x90, 0xfa, 0xe9, 0x7e, 0x01, 0x74, -0x90, 0xf0, 0xeb, 0x7e, 0x05, 0x74, 0x90, 0xf0, 0x66, 0x7f, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x7f, -0x7e, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, 0x13, 0x74, 0x90, 0xf0, 0x23, 0x7f, 0x64, 0x74, 0x90, 0xf0, -0x1d, 0x7f, 0x4e, 0x74, 0x90, 0xf0, 0x1f, 0x7f, 0x1e, 0x74, 0x90, 0xf0, 0x21, 0x7f, 0x8c, 0x74, -0x90, 0xf0, 0x27, 0x7f, 0xc3, 0x74, 0x90, 0xf0, 0x25, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x29, 0x7f, -0x46, 0x74, 0x90, 0xf0, 0x2b, 0x7f, 0x28, 0x74, 0x90, 0xf0, 0x33, 0x7f, 0x05, 0x74, 0x90, 0xf0, -0x2f, 0x7f, 0x28, 0x74, 0x90, 0xf0, 0x39, 0x7f, 0x04, 0x74, 0x90, 0xf0, 0x37, 0x7f, 0x0f, 0x74, -0x90, 0xf0, 0x35, 0x7f, 0x78, 0x74, 0x90, 0xf0, 0x3f, 0x7f, 0x02, 0x74, 0x90, 0xf0, 0x3d, 0x7f, -0x0f, 0x74, 0x90, 0xf0, 0x3b, 0x7f, 0x46, 0x74, 0x90, 0xf0, 0x51, 0x7f, 0x29, 0x74, 0x90, 0xf0, -0x4f, 0x7f, 0x3c, 0x74, 0x90, 0xf0, 0x4d, 0x7f, 0x8c, 0x74, 0x90, 0xf0, 0x57, 0x7f, 0x0a, 0x74, -0x90, 0xf0, 0x55, 0x7f, 0x14, 0x74, 0x90, 0xf0, 0x53, 0x7f, 0x1e, 0x74, 0x90, 0xf0, 0x58, 0x7f, -0xa8, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7f, 0x90, 0x74, 0x5a, 0xf0, 0x34, 0x74, 0xa3, 0xf0, 0x18, -0x7f, 0x90, 0x74, 0x5c, 0xf0, 0x31, 0x74, 0xa3, 0xf0, 0x4a, 0x7f, 0x90, 0x74, 0x5e, 0xf0, 0x2e, -0x74, 0xa3, 0xf0, 0xd4, 0x7f, 0x90, 0x74, 0x60, 0xf0, 0x35, 0x74, 0xa3, 0xf0, 0xf1, 0x7f, 0x90, -0x74, 0x62, 0xf0, 0x35, 0x74, 0xa3, 0xf0, 0xf1, 0x7f, 0x90, 0x74, 0x64, 0xf0, 0x3c, 0x74, 0xa3, -0xf0, 0xf9, 0x7f, 0x90, 0x74, 0x06, 0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x58, 0x7f, 0x90, 0x74, 0x09, -0xf0, 0x06, 0x7f, 0x90, 0x74, 0x0b, 0xf0, 0xb4, 0x7f, 0x90, 0x74, 0x0d, 0xf0, 0x34, 0x7f, 0x90, -0x74, 0x0f, 0xf0, 0x0c, 0x7f, 0x90, 0x74, 0x11, 0xf0, 0xfb, 0x7f, 0x90, 0x74, 0x13, 0xf0, 0xe7, -0x7f, 0x90, 0x74, 0x15, 0xf0, 0xce, 0x7f, 0x90, 0x74, 0x2d, 0xf0, 0x06, 0x7e, 0x90, 0xe4, 0xf4, -0xa3, 0xf0, 0x7f, 0x74, 0x90, 0xf0, 0x69, 0x7f, 0xff, 0x74, 0x90, 0xf0, 0x81, 0x7a, 0x02, 0x74, -0x22, 0xf0, 0x7b, 0x90, 0xe0, 0x4b, 0xf0, 0x04, 0xd3, 0xe0, 0x2f, 0x94, 0x58, 0x40, 0x7e, 0x90, -0xe0, 0xf3, 0xe0, 0x25, 0x90, 0xff, 0xf2, 0x7e, 0x33, 0xe0, 0xef, 0xfe, 0x01, 0x24, 0xe4, 0xff, -0xfe, 0x3e, 0x7b, 0x90, 0xe0, 0x58, 0x9f, 0xc3, 0xe4, 0xff, 0x90, 0x9e, 0x59, 0x7b, 0xa3, 0xf0, -0xf0, 0xef, 0x90, 0xe4, 0x58, 0x7b, 0x90, 0xf0, 0x56, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x4b, 0x7b, -0x90, 0xf0, 0x67, 0x7f, 0x30, 0xe0, 0x0f, 0xe4, 0x7b, 0x90, 0xe0, 0x59, 0xa3, 0xfe, 0xff, 0xe0, -0x27, 0x7d, 0x55, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xf2, 0x7e, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, -0x7c, 0x16, 0x12, 0x52, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x4b, 0x20, 0x24, 0xe4, 0xff, 0x52, 0x34, -0x90, 0xfe, 0x4c, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x00, 0x12, 0x90, 0x56, 0x4e, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0xc3, 0xf0, 0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0x90, 0x15, 0x4e, 0x7b, 0xfe, 0xe0, -0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, 0xe4, 0xff, 0x90, 0x9e, 0x4e, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, -0x7b, 0x90, 0xe0, 0x4f, 0x04, 0x24, 0x90, 0xff, 0x4e, 0x7b, 0x34, 0xe0, 0xfe, 0x00, 0x78, 0xef, -0xce, 0x03, 0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf8, 0x7b, 0x90, 0xee, 0x4e, 0xa3, 0xf0, -0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x50, 0x7b, 0x90, 0xef, 0x51, 0x90, 0xf0, -0x4b, 0x7b, 0x30, 0xe0, 0x71, 0xe0, 0x7b, 0x90, 0xe0, 0x51, 0x90, 0xff, 0x50, 0x7b, 0xfe, 0xe0, -0x9f, 0xc3, 0x0c, 0x40, 0x7b, 0x90, 0xee, 0x52, 0x90, 0xf0, 0x53, 0x7b, 0xf0, 0xef, 0x0d, 0x80, -0x7b, 0x90, 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x52, 0x7b, 0x90, 0xee, 0x53, 0x90, 0xf0, 0x53, 0x7b, -0xff, 0xe0, 0x00, 0x7e, 0x00, 0x7c, 0x6a, 0x7d, 0x26, 0x12, 0xac, 0x3d, 0xad, 0x06, 0x90, 0x07, -0x52, 0x7b, 0x7f, 0xe0, 0xfe, 0x00, 0x2d, 0xef, 0xec, 0xff, 0xfe, 0x3e, 0x7b, 0x90, 0xf0, 0x54, -0xef, 0xa3, 0xc3, 0xf0, 0x7b, 0x90, 0xe0, 0x57, 0x90, 0x9f, 0x56, 0x7b, 0x9e, 0xe0, 0x17, 0x50, -0x7b, 0x90, 0xe0, 0x54, 0xa3, 0xff, 0x90, 0xe0, 0x56, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, -0x4b, 0x7b, 0x90, 0xe0, 0x58, 0x7b, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x98, 0x33, 0xa3, 0x17, 0x92, -0x17, 0x20, 0xe4, 0x05, 0x22, 0xf5, 0x23, 0xf5, 0x12, 0x7f, 0x11, 0x7e, 0x00, 0x12, 0x90, 0x56, -0x90, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x90, 0x7a, 0xc4, 0xe0, 0x07, 0x54, 0x7a, 0x90, -0xf0, 0x92, 0x01, 0x64, 0x0a, 0x60, 0xff, 0xe0, 0x02, 0x64, 0x04, 0x60, 0xb4, 0xef, 0x04, 0x05, -0x01, 0x7f, 0x02, 0x80, 0x00, 0x7f, 0x7a, 0x90, 0xef, 0x92, 0x90, 0xf0, 0xa8, 0x7a, 0xff, 0xe0, -0x00, 0x7e, 0x11, 0x7d, 0x51, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xa9, 0x7a, 0xff, 0xe0, 0x00, 0x7e, -0x10, 0x7d, 0x51, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xf2, 0x7e, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x13, -0x10, 0x7d, 0x52, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x90, 0xf5, 0xf2, 0x7e, 0xfe, 0xe0, -0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x16, 0x12, 0x52, 0xf5, 0x53, 0x17, 0x7d, 0x52, 0x7c, 0x00, 0x7f, -0x06, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x10, 0x7f, 0x54, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, -0x10, 0x7d, 0x53, 0x7c, 0x40, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2e, 0xe4, 0x55, -0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2f, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, -0x7c, 0x27, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, 0x90, 0xf5, 0xa8, 0x7a, 0xff, 0xe0, 0xe0, 0x25, -0xeb, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x30, 0xe4, 0x83, 0xfd, 0x93, 0x01, 0x74, 0x90, 0x93, -0x47, 0x7b, 0xf0, 0xcd, 0xed, 0xa3, 0xef, 0xf0, 0x30, 0x90, 0x93, 0xfb, 0x7b, 0x90, 0xf0, 0x3f, -0x7a, 0x90, 0xe0, 0xa9, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x91, 0xf5, 0x53, 0x7f, 0x90, -0xe0, 0x71, 0xfe, 0x64, 0x0b, 0x60, 0xff, 0xe0, 0x00, 0x7e, 0x12, 0x7d, 0x92, 0x7c, 0x53, 0x12, -0x7d, 0xf5, 0x7c, 0x15, 0x7f, 0x56, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, 0x15, 0x7d, 0x56, 0x7c, -0xff, 0xe4, 0x12, 0xfe, 0xf5, 0x53, 0x2a, 0x7d, 0x67, 0x7c, 0x0b, 0x7f, 0x00, 0x7e, 0x53, 0x12, -0xc2, 0xf5, 0x22, 0x58, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7a, 0x90, 0xe0, 0xe1, -0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xee, 0xe3, 0xa3, 0xf0, 0xf0, 0xef, 0x02, 0x78, 0xc3, 0xce, -0xce, 0x13, 0xd8, 0x13, 0xff, 0xf9, 0x90, 0xc3, 0xe2, 0x7a, 0x9f, 0xe0, 0x90, 0xf0, 0xe1, 0x7a, -0x9e, 0xe0, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x7f, 0xd0, 0x7e, 0x12, 0x12, 0x55, 0x56, 0x00, -0x7a, 0x90, 0xef, 0xeb, 0x90, 0xf0, 0xe9, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x19, 0x7f, 0x90, -0xe0, 0x95, 0x64, 0xd3, 0x94, 0x80, 0x50, 0x85, 0x90, 0x09, 0xe9, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, -0xf0, 0x37, 0x7a, 0x90, 0xe0, 0xe9, 0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xeb, 0x7c, 0xfd, -0x12, 0x00, 0x3d, 0x26, 0x7a, 0x90, 0xee, 0xe9, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xe9, -0xa3, 0xfe, 0x78, 0xe0, 0xce, 0x04, 0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, 0xf0, 0xf8, 0x90, 0xee, -0xe9, 0x7a, 0x90, 0xf0, 0xe3, 0x7a, 0xfa, 0xe0, 0xe0, 0xa3, 0xff, 0xfb, 0x02, 0xae, 0xfc, 0xe4, -0x90, 0xfd, 0xe5, 0x7a, 0x27, 0x12, 0x90, 0x8c, 0xe9, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, -0x9f, 0xeb, 0x9e, 0xea, 0x7a, 0x90, 0x40, 0xe5, 0x12, 0x26, 0x54, 0x27, 0x06, 0xc0, 0x07, 0xc0, -0x7a, 0x90, 0xe0, 0xe9, 0xa3, 0xfe, 0xfb, 0xe0, 0x06, 0xaa, 0x33, 0xea, 0xe0, 0x95, 0xf8, 0xf9, -0x07, 0xd0, 0x06, 0xd0, 0x26, 0x12, 0x90, 0x88, 0xe5, 0x7a, 0x27, 0x12, 0x80, 0x8c, 0x12, 0x07, -0x98, 0x27, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x90, 0xe0, 0xeb, 0x94, 0xc3, 0x50, 0x58, 0x90, 0x38, -0xe5, 0x7a, 0x27, 0x12, 0x90, 0x70, 0xeb, 0x7a, 0xc3, 0xe0, 0x24, 0x13, 0xff, 0x2c, 0xfc, 0xe4, -0xfe, 0xfd, 0x26, 0x12, 0x90, 0x96, 0xe5, 0x7a, 0x27, 0x12, 0x90, 0x8c, 0xe5, 0x7a, 0x27, 0x12, -0xc0, 0x54, 0x90, 0x07, 0xeb, 0x7a, 0xfb, 0xe0, 0xfa, 0xe4, 0xf8, 0xf9, 0x07, 0xd0, 0x50, 0x12, -0x90, 0x3b, 0xe5, 0x7a, 0x27, 0x12, 0x22, 0x8c, 0x7f, 0x90, 0xe0, 0x95, 0x64, 0xc3, 0x94, 0x80, -0x50, 0x84, 0x12, 0x21, 0xc4, 0x54, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x90, 0xe4, -0xe1, 0x7a, 0xa3, 0xf0, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x12, 0xd0, 0xe0, 0x55, 0x90, 0xe4, -0xa0, 0x7a, 0x22, 0xf0, 0x7a, 0x90, 0x12, 0x98, 0x70, 0x27, 0x7a, 0x90, 0xe0, 0xb0, 0xa3, 0xfe, -0xff, 0xe0, 0xfc, 0xe4, 0x12, 0xfd, 0x7b, 0x26, 0x7a, 0x90, 0x12, 0x98, 0x8c, 0x27, 0x7a, 0x90, -0x12, 0x9c, 0x70, 0x27, 0x7a, 0x90, 0xe0, 0xaa, 0xa3, 0xfe, 0xff, 0xe0, 0xfc, 0xe4, 0x12, 0xfd, -0x7b, 0x26, 0x7a, 0x90, 0x12, 0x9c, 0x8c, 0x27, 0x7a, 0x90, 0xe4, 0x96, 0xf0, 0x75, 0x12, 0x01, -0x4f, 0x26, 0x7a, 0x90, 0xe0, 0x96, 0x01, 0x54, 0xe0, 0xf0, 0xa3, 0xfe, 0xff, 0xe0, 0x70, 0x4e, -0x7d, 0x04, 0x80, 0x01, 0x7d, 0x02, 0x90, 0x00, 0xa0, 0x7a, 0xf0, 0xed, 0x01, 0xbe, 0xbf, 0x06, -0x03, 0xfd, 0x3d, 0x12, 0x90, 0x0c, 0x96, 0x7a, 0xb4, 0xe0, 0x08, 0x01, 0xe0, 0xa3, 0xfe, 0xb4, -0x12, 0x03, 0x99, 0x36, 0x7a, 0x90, 0xe0, 0x96, 0x01, 0xb4, 0xa3, 0x08, 0xb4, 0xe0, 0x03, 0xff, -0x40, 0x12, 0x90, 0x5f, 0xa0, 0x7a, 0x60, 0xe0, 0x12, 0x69, 0xe0, 0x55, 0x7a, 0x90, 0xe0, 0xbf, -0x0b, 0x60, 0x90, 0xe4, 0xbe, 0x7a, 0x90, 0xf0, 0xbf, 0x7a, 0x14, 0xe0, 0x90, 0xf0, 0x9c, 0x7a, -0x27, 0x12, 0x78, 0x54, 0x12, 0x08, 0x1a, 0x27, 0x7a, 0x90, 0xe0, 0x94, 0xff, 0x2f, 0x7a, 0x90, -0xe0, 0x93, 0x90, 0x3e, 0xa1, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0x12, 0x98, 0x54, 0x27, -0x05, 0x78, 0x27, 0x12, 0x90, 0x1a, 0xa3, 0x7a, 0xf0, 0xee, 0xa3, 0xfc, 0xf0, 0xef, 0x90, 0xfd, -0x09, 0x7f, 0xff, 0xe0, 0x00, 0x7e, 0x26, 0x12, 0xef, 0x3d, 0x06, 0x78, 0xa2, 0xce, 0x13, 0xe7, -0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0xa3, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x12, 0xf0, 0xc4, 0x54, -0x23, 0xd2, 0x7f, 0x22, 0x7e, 0x03, 0x12, 0x60, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x0a, 0x20, 0xf0, -0x03, 0xe1, 0x40, 0x02, 0x7f, 0x5e, 0x7e, 0x07, 0x12, 0x66, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x0b, -0xf4, 0xf0, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x05, 0x12, 0x66, 0xf5, 0x53, 0x7c, 0x90, 0xe0, 0x0b, -0xe0, 0x20, 0x02, 0x03, 0x5e, 0x40, 0x23, 0x7f, 0x71, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x27, 0x7c, -0xf0, 0xef, 0x94, 0xd3, 0x40, 0x17, 0x02, 0x03, 0x4e, 0x40, 0x90, 0xc3, 0x0f, 0x7c, 0x94, 0xe0, -0x50, 0x40, 0x02, 0x03, 0x42, 0x40, 0x70, 0x7d, 0x71, 0x7c, 0xff, 0xe4, 0x12, 0xfe, 0xf5, 0x53, -0x3d, 0x7f, 0x71, 0x7e, 0x00, 0x12, 0xbe, 0x56, 0x0b, 0x01, 0x42, 0xbf, 0x7d, 0x08, 0x7c, 0x3d, -0x7f, 0x71, 0x80, 0x52, 0x7f, 0x1d, 0x7e, 0x3d, 0x12, 0x71, 0x56, 0x00, 0x01, 0xbe, 0xbf, 0x0d, -0x0a, 0x52, 0x3d, 0x7d, 0x71, 0x7c, 0x42, 0x7f, 0x00, 0x7e, 0x08, 0x80, 0x3d, 0x7d, 0x71, 0x7c, -0x42, 0x7f, 0x01, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1b, 0xe4, 0x71, 0xfe, 0xff, 0x53, 0x12, -0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, -0x02, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x00, 0x83, 0x00, 0x00, 0x0b, 0x38, 0x00, 0x01, -0x86, 0x1e, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x0c, 0x12, 0x00, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, -0x08, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x30, 0x12, 0x00, -0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0x20, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1d, -0xe4, 0x71, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1b, 0x7f, 0x71, 0x7e, 0xff, 0x12, 0x00, -0xf5, 0x53, 0x0c, 0x80, 0x7c, 0x90, 0xe4, 0x0f, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x07, 0x80, -0x90, 0xe4, 0x0f, 0x7c, 0xa3, 0xf0, 0x12, 0xf0, 0xc6, 0x00, 0x31, 0x12, 0x12, 0xdb, 0x5b, 0x0e, -0x90, 0x22, 0xe5, 0x7a, 0x27, 0x12, 0xef, 0x54, 0x02, 0x78, 0xc3, 0xce, 0xce, 0x13, 0xd8, 0x13, -0xff, 0xf9, 0x7a, 0x90, 0xee, 0xee, 0xa3, 0xf0, 0xf0, 0xef, 0x08, 0x24, 0xe4, 0xff, 0xfe, 0x3e, -0x54, 0xef, 0xff, 0xf0, 0x7a, 0x90, 0xee, 0xee, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xd3, 0xee, 0xff, -0x80, 0x64, 0x80, 0x94, 0x09, 0x40, 0x7a, 0x90, 0xe4, 0xee, 0xa3, 0xf0, 0xff, 0x74, 0x90, 0xf0, -0x95, 0x7f, 0xd3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x09, 0x50, 0x7a, 0x90, 0xe4, 0xee, 0xa3, 0xf0, -0xff, 0x74, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x89, 0x94, 0x09, 0x40, 0x7a, 0x90, -0xe4, 0xee, 0xa3, 0xf0, 0x10, 0x74, 0x90, 0xf0, 0xf0, 0x7a, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xee, -0xa3, 0xfc, 0xfd, 0xe0, 0x9f, 0xd3, 0x80, 0x74, 0xec, 0xf8, 0x80, 0x64, 0x50, 0x98, 0x90, 0x06, -0x0c, 0x7b, 0x70, 0xe0, 0x90, 0x05, 0xf0, 0x7a, 0xf0, 0xed, 0x7a, 0x90, 0xe0, 0xf1, 0x90, 0xff, -0xf0, 0x7a, 0xd3, 0xe0, 0x50, 0x9f, 0x80, 0x02, 0xc3, 0x01, 0x0b, 0x92, 0x0b, 0x30, 0x90, 0x05, -0xf0, 0x7a, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xf0, 0x7a, 0x90, 0xf0, 0xeb, 0xff, 0xe0, 0x02, 0x24, -0x13, 0x13, 0x3f, 0x54, 0x7a, 0x90, 0xf0, 0xec, 0xd3, 0xef, 0x80, 0x94, 0x03, 0x40, 0x20, 0x74, -0x30, 0xf0, 0x08, 0x0b, 0x7a, 0x90, 0xe0, 0xf2, 0x7a, 0x90, 0xf0, 0xec, 0x90, 0xc3, 0x0e, 0x7b, -0x94, 0xe0, 0x90, 0xf4, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x01, 0x90, 0x2b, 0x67, 0x7f, 0x30, 0xe0, -0x24, 0xe1, 0x7f, 0x90, 0xe0, 0x66, 0x30, 0xa3, 0x1c, 0xe0, 0x7a, 0x90, 0xe0, 0xeb, 0x7e, 0xff, -0x7d, 0x00, 0x7c, 0x12, 0x12, 0x55, 0xf5, 0x53, 0x7a, 0x90, 0xe0, 0xec, 0x7e, 0xff, 0x7d, 0x00, -0x7c, 0x13, 0x12, 0x55, 0xf5, 0x53, 0x90, 0x22, 0x88, 0x7d, 0x75, 0xe4, 0x01, 0xf0, 0x26, 0x12, -0x7f, 0x4f, 0x7e, 0x17, 0x12, 0x93, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xbd, 0xa3, 0xf0, 0xf0, 0xef, -0x7b, 0x90, 0xe0, 0xbd, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0x7b, 0x90, 0xee, 0xe9, 0xa3, 0xf0, -0xf0, 0xef, 0x90, 0xfd, 0xbd, 0x7b, 0x54, 0xe0, 0xf0, 0x0f, 0xed, 0xd3, 0x04, 0x94, 0x94, 0xe4, -0x50, 0x00, 0x90, 0x21, 0xe9, 0x7b, 0xe0, 0xa3, 0x90, 0xff, 0xbd, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, -0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xee, 0xf0, 0x7b, 0x90, -0xf0, 0xbd, 0x08, 0x80, 0xff, 0x74, 0x7b, 0x90, 0xf0, 0xbd, 0xf0, 0xa3, 0x16, 0x7f, 0x93, 0x7e, -0x00, 0x12, 0x90, 0x56, 0xd3, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xd3, 0x7b, 0xc4, 0xe0, -0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, 0xe9, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, 0x7b, 0x90, -0xe0, 0xd3, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x21, 0x50, 0x7b, 0x90, -0xa3, 0xe9, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0xd3, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, 0x05, 0x80, -0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, 0xd3, 0x7b, 0x80, 0xf0, 0x74, 0x08, -0x90, 0xff, 0xd3, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0xbd, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, -0x7b, 0x90, 0xe0, 0xd4, 0xff, 0x9f, 0x7b, 0x90, 0xe0, 0xd3, 0x90, 0x9e, 0x8a, 0x7d, 0xf0, 0x8f, -0x26, 0x12, 0x30, 0x4f, 0x0a, 0xd7, 0x7d, 0x90, 0xe4, 0x8c, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, -0x8e, 0x22, 0x8f, 0x2f, 0xe5, 0x30, 0x45, 0x30, 0x70, 0x2f, 0x7e, 0x05, 0x7f, 0xff, 0x22, 0xff, -0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7c, 0x90, 0x74, 0x58, 0xf0, 0x06, 0x2f, 0xae, -0x30, 0xaf, 0xfc, 0xe4, 0xfb, 0xfd, 0x40, 0x7a, 0xf8, 0xf9, 0x12, 0xd3, 0xf3, 0x26, 0x13, 0x40, -0x30, 0xe5, 0xe0, 0x25, 0x30, 0xf5, 0x2f, 0xe5, 0xf5, 0x33, 0x90, 0x2f, 0x58, 0x7c, 0x14, 0xe0, -0x80, 0xf0, 0xae, 0xdb, 0xaf, 0x2f, 0xe4, 0x30, 0xfd, 0xfc, 0x7a, 0xfb, 0xf9, 0x80, 0xd3, 0xf8, -0x26, 0x12, 0x50, 0xf3, 0xe5, 0x13, 0xc3, 0x2f, 0xf5, 0x13, 0xe5, 0x2f, 0x13, 0x30, 0x30, 0xf5, -0x7c, 0x90, 0xe0, 0x58, 0xf0, 0x04, 0xdb, 0x80, 0x2f, 0xae, 0x30, 0xaf, 0xfc, 0xe4, 0x90, 0xfd, -0x4e, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x4e, 0x7c, 0x27, 0x12, 0x78, 0x54, 0x12, 0x02, 0x41, 0x27, -0x2f, 0xe4, 0xee, 0xff, 0x80, 0x34, 0xed, 0xfe, 0xfe, 0x34, 0xec, 0xfd, 0xff, 0x34, 0x90, 0xfc, -0x4e, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x56, 0x7c, 0x55, 0x74, 0xa3, 0xf0, 0x1f, 0x74, 0x12, 0xf0, -0xdb, 0x4a, 0x7c, 0x90, 0xe0, 0x58, 0x33, 0xff, 0xe0, 0x95, 0xfd, 0xfe, 0x78, 0xfc, 0x12, 0x0f, -0x41, 0x27, 0x7c, 0x90, 0x12, 0x52, 0x70, 0x27, 0x26, 0x12, 0xef, 0x7b, 0x10, 0x24, 0xe4, 0xff, -0xfe, 0x3e, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x05, 0x78, 0x27, 0x12, 0xa2, 0x2d, 0x92, 0xd1, -0xd0, 0xaf, 0x22, 0xd0, 0x7f, 0x90, 0xe0, 0x67, 0xe3, 0x20, 0x02, 0x03, 0xe1, 0x43, 0x7a, 0x90, -0xe0, 0xc0, 0xa3, 0xfe, 0xff, 0xe0, 0x7b, 0x90, 0xee, 0xed, 0xfc, 0xf0, 0xef, 0xa3, 0xfd, 0xf0, -0x7a, 0x90, 0xe0, 0xc6, 0x00, 0x7e, 0x03, 0x54, 0x02, 0x78, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, -0xff, 0xf9, 0x7a, 0x90, 0xe0, 0xc5, 0x03, 0x54, 0xee, 0xfb, 0xeb, 0xfa, 0xfb, 0x4f, 0x7a, 0x90, -0xe0, 0xc7, 0x03, 0x54, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe4, 0xff, 0x54, 0xc4, 0x48, 0xf0, -0xfa, 0x4a, 0x4b, 0xef, 0x90, 0xfb, 0xc8, 0x7a, 0x7e, 0xe0, 0x54, 0x00, 0x78, 0x01, 0xc3, 0x06, -0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xee, 0xff, 0xfa, 0x4a, 0x4b, 0xef, 0x90, 0xfb, 0xc9, 0x7a, -0x7e, 0xe0, 0x54, 0x00, 0x78, 0x01, 0xc3, 0x07, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xee, 0xff, -0xfa, 0x4a, 0x4b, 0xef, 0x90, 0xfb, 0xca, 0x7a, 0x54, 0xe0, 0x4a, 0x01, 0x90, 0xfa, 0xcb, 0x7a, -0x54, 0xe0, 0x25, 0x01, 0x4a, 0xe0, 0x90, 0xfa, 0xcc, 0x7a, 0x54, 0xe0, 0x25, 0x01, 0x25, 0xe0, -0x4a, 0xe0, 0xeb, 0xfe, 0x90, 0xff, 0xc0, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x6d, 0xf0, 0x02, 0x70, -0x6c, 0xee, 0x0f, 0x60, 0x7a, 0x90, 0xe0, 0xc0, 0xa3, 0xfe, 0xff, 0xe0, 0x10, 0x7d, 0x53, 0x7c, -0x53, 0x12, 0x22, 0xf5, 0x17, 0x7f, 0x53, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xb2, 0x7a, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0xb2, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xed, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0xc3, 0xf0, 0x94, 0xee, 0x40, 0x40, 0x90, 0x0a, 0xed, 0x7b, 0x3f, 0x74, 0xa3, 0xf0, -0xff, 0x74, 0x90, 0xf0, 0xed, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x40, 0x7b, 0x8f, 0xee, -0x12, 0xf0, 0x4f, 0x26, 0x7b, 0x90, 0xe0, 0x3c, 0x94, 0xc3, 0x40, 0x03, 0xc0, 0x70, 0xa2, 0xd0, -0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0x40, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x12, 0xff, 0x4f, 0x42, -0x90, 0xc3, 0x48, 0x7b, 0x9f, 0xe0, 0x90, 0xff, 0x47, 0x7b, 0x9e, 0xe0, 0xef, 0xfe, 0x05, 0x78, -0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0x45, 0x7b, 0xf0, 0xee, 0xef, 0xa3, -0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x3f, 0x7b, 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, -0x7b, 0x90, 0xe0, 0x46, 0xff, 0x2f, 0x7b, 0x90, 0xe0, 0x45, 0x90, 0x3e, 0x5d, 0x7b, 0xa3, 0xf0, -0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x5e, 0x7b, 0x90, 0xf0, 0x44, 0x7b, 0x90, 0xe0, 0x5d, 0x06, 0x60, -0x7b, 0x90, 0x74, 0x44, 0xf0, 0xff, 0x90, 0xe4, 0x40, 0x7b, 0xa3, 0xf0, 0x22, 0xf0, 0x2d, 0x12, -0x90, 0xf1, 0x0c, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, 0xc3, 0xfb, 0x03, 0x94, 0x05, 0x40, 0xf0, 0xe4, -0x45, 0x02, 0x90, 0x3e, 0x67, 0x7f, 0x20, 0xe0, 0x03, 0xe5, 0x45, 0x02, 0xc0, 0x3e, 0xa2, 0xd0, -0x92, 0xaf, 0xc2, 0xd1, 0xaf, 0xaf, 0xae, 0x1b, 0xad, 0x1a, 0xac, 0x19, 0x90, 0x18, 0x11, 0x7c, -0x27, 0x12, 0xaf, 0x8c, 0xae, 0x27, 0xad, 0x26, 0xac, 0x25, 0x90, 0x24, 0x15, 0x7c, 0x27, 0x12, -0xae, 0x8c, 0xaf, 0x22, 0xe4, 0x23, 0xfd, 0xfc, 0x7c, 0x90, 0x12, 0x19, 0x8c, 0x27, 0xb4, 0xeb, -0x1f, 0x01, 0x16, 0x7f, 0x66, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x0d, 0x7c, 0xf0, 0xee, 0xef, 0xa3, -0x12, 0xf0, 0x4f, 0x42, 0x7d, 0x90, 0xee, 0x68, 0xa3, 0xf0, 0xf0, 0xef, 0x0e, 0x12, 0x80, 0x5b, -0x12, 0x03, 0xc6, 0x00, 0x7c, 0x90, 0x12, 0x11, 0x54, 0x27, 0x1b, 0x8f, 0x1a, 0x8e, 0x19, 0x8d, -0x18, 0x8c, 0x7c, 0x90, 0x12, 0x15, 0x54, 0x27, 0x27, 0x8f, 0x26, 0x8e, 0x25, 0x8d, 0x24, 0x8c, -0x7c, 0x90, 0x12, 0x19, 0x54, 0x27, 0x22, 0x8e, 0x23, 0x8f, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, -0x05, 0x7d, 0x66, 0x7c, 0xfe, 0x7f, 0xff, 0x7e, 0x53, 0x02, 0xc0, 0xf5, 0xa2, 0xd0, 0x92, 0xaf, -0xc2, 0xd1, 0xee, 0xaf, 0x95, 0x33, 0xfd, 0xe0, 0x78, 0xfc, 0x12, 0x05, 0x41, 0x27, 0x7c, 0x90, -0x12, 0x4e, 0x8c, 0x27, 0x7c, 0x90, 0x12, 0x4e, 0x54, 0x27, 0x0f, 0x78, 0x27, 0x12, 0xef, 0x2d, -0x09, 0x24, 0x7c, 0x90, 0xf0, 0x58, 0x7c, 0x90, 0x12, 0x4e, 0x54, 0x27, 0x54, 0xee, 0xfe, 0x7f, -0xfd, 0xe4, 0x78, 0xfc, 0x12, 0x01, 0x41, 0x27, 0x2f, 0xe4, 0xee, 0xff, 0x80, 0x34, 0xed, 0xfe, -0xff, 0x34, 0xec, 0xfd, 0xff, 0x34, 0x90, 0xfc, 0x4e, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x56, 0x7c, -0x55, 0x74, 0xa3, 0xf0, 0x13, 0x74, 0x12, 0xf0, 0xdb, 0x4a, 0x7c, 0x90, 0xe0, 0x58, 0xc3, 0xfb, -0x80, 0x64, 0x80, 0x94, 0x7c, 0x90, 0x50, 0x52, 0x12, 0x0d, 0x54, 0x27, 0xf4, 0xeb, 0xf9, 0x04, -0x12, 0xf8, 0x2d, 0x27, 0x0c, 0x80, 0x27, 0x12, 0x90, 0x54, 0x58, 0x7c, 0xf9, 0xe0, 0x12, 0xf8, -0x41, 0x27, 0x7c, 0x90, 0x12, 0x52, 0x8c, 0x27, 0x7c, 0x90, 0x12, 0x52, 0x54, 0x27, 0x2f, 0xe4, -0xee, 0xff, 0x40, 0x34, 0xe4, 0xfe, 0xfd, 0x3d, 0x3c, 0xe4, 0x78, 0xfc, 0x12, 0x0f, 0x2d, 0x27, -0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7f, 0x22, 0x7e, 0x03, 0x12, 0x90, 0x56, 0x00, 0x7b, 0x90, -0xee, 0xc1, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x4e, 0x02, 0x03, 0x9a, 0x46, 0x7b, 0x90, 0xe0, 0xc2, -0xe0, 0x30, 0x7f, 0x22, 0x7e, 0x07, 0x12, 0x94, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xc7, 0xa3, 0xf0, -0xf0, 0xef, 0xff, 0xf4, 0xf4, 0xee, 0x90, 0xfe, 0xc3, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x05, 0x7d, -0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xc2, 0x7b, 0x30, 0xe0, 0x37, 0xe1, 0x07, 0x7f, 0x93, 0x7e, -0x00, 0x12, 0x90, 0x56, 0xcb, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, 0xee, 0xff, 0xfe, 0xf4, -0x7b, 0x90, 0xf0, 0xbf, 0xef, 0xa3, 0x7d, 0xf0, 0x7c, 0x05, 0x12, 0x93, 0xf5, 0x53, 0x7b, 0x90, -0xe0, 0xcb, 0xa3, 0xfe, 0xff, 0xe0, 0x60, 0x4e, 0xef, 0x0a, 0xe1, 0x30, 0x12, 0x06, 0x24, 0x4c, -0x41, 0x12, 0x90, 0x65, 0xc2, 0x7b, 0x30, 0xe0, 0x22, 0xe2, 0x07, 0x7f, 0x92, 0x7e, 0x00, 0x12, -0x90, 0x56, 0xd1, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, 0xee, 0xff, 0xfe, 0xf4, 0x7b, 0x90, -0xf0, 0xcd, 0xef, 0xa3, 0x7d, 0xf0, 0x7c, 0x05, 0x12, 0x92, 0xf5, 0x53, 0x30, 0x22, 0x43, 0x2a, -0x7a, 0x90, 0xe0, 0xa9, 0x60, 0xff, 0xb4, 0x03, 0x14, 0x02, 0x4c, 0x12, 0x90, 0x24, 0xbd, 0x7b, -0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x28, 0xa3, 0xf0, 0xf0, 0xef, 0x22, 0x80, 0x17, 0x7f, -0x93, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x28, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xd3, 0xf0, 0x94, 0xe0, -0x90, 0xff, 0x28, 0x7b, 0x94, 0xe0, 0x40, 0x0f, 0x74, 0x07, 0xf0, 0x0f, 0x74, 0xa3, 0xf0, 0xff, -0x41, 0x12, 0x30, 0x65, 0x4f, 0x2e, 0x45, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x2a, 0x7b, -0xf0, 0xee, 0xef, 0xa3, 0xc3, 0xf0, 0x7b, 0x90, 0xe0, 0x29, 0x64, 0x94, 0x7b, 0x90, 0xe0, 0x28, -0x00, 0x94, 0x19, 0x50, 0x7b, 0x90, 0xe0, 0x2b, 0x2c, 0x94, 0x7b, 0x90, 0xe0, 0x2a, 0x01, 0x94, -0x0b, 0x40, 0x43, 0x7d, 0x94, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x90, 0xf5, 0xa9, 0x7a, -0xb4, 0xe0, 0x11, 0x01, 0x7b, 0x90, 0xe0, 0x2a, 0xa3, 0xfe, 0xff, 0xe0, 0x7d, 0x90, 0xee, 0x96, -0xf0, 0x8f, 0x26, 0x12, 0x22, 0x4f, 0x7f, 0x90, 0xe0, 0x66, 0xe2, 0x30, 0x90, 0x66, 0x95, 0x7f, -0xc3, 0xe0, 0x01, 0x94, 0x12, 0x40, 0xd3, 0xe0, 0x03, 0x94, 0x0c, 0x50, 0x7b, 0x90, 0xe4, 0x0f, -0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x0f, 0x80, 0x90, 0xe4, 0x0f, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, -0x1c, 0x7b, 0x90, 0xf0, 0x1d, 0x7b, 0x90, 0xf0, 0x1c, 0x7b, 0x60, 0xe0, 0xd3, 0x0f, 0x7b, 0x90, -0xe0, 0x10, 0xc2, 0x94, 0x7b, 0x90, 0xe0, 0x0f, 0x01, 0x94, 0x0f, 0x50, 0x90, 0xd3, 0x10, 0x7b, -0x94, 0xe0, 0x90, 0x14, 0x0f, 0x7b, 0x94, 0xe0, 0x40, 0x05, 0xe4, 0x41, 0x7b, 0x90, 0xf0, 0x0f, -0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x97, 0x01, 0x64, 0x32, 0x70, 0x35, 0x12, 0xe4, 0x35, 0x7b, 0x90, -0xf0, 0x08, 0x90, 0x22, 0x26, 0x7b, 0x60, 0xe0, 0x90, 0x23, 0x18, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, -0x7d, 0xff, 0x7c, 0x11, 0x12, 0x64, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x1a, 0xa3, 0xfe, 0xff, 0xe0, -0x10, 0x7d, 0x64, 0x7c, 0x53, 0x12, 0xe4, 0xf5, 0x7b, 0x90, 0xf0, 0x26, 0x90, 0x22, 0xfa, 0x7f, -0xfe, 0xe0, 0xe4, 0xa3, 0x03, 0x70, 0x64, 0xee, 0x70, 0x02, 0xe0, 0x6b, 0x27, 0x12, 0x48, 0xdb, -0x01, 0x0e, 0x11, 0x48, 0x48, 0x02, 0x03, 0x14, 0x17, 0x48, 0x48, 0x04, 0x05, 0x1a, 0x1d, 0x48, -0x48, 0x06, 0x07, 0x20, 0x23, 0x48, 0x48, 0x08, 0x09, 0x26, 0x29, 0x48, 0x48, 0x80, 0x81, 0x2c, -0x2f, 0x48, 0x48, 0x82, 0x83, 0x32, 0x35, 0x48, 0x48, 0x84, 0x85, 0x38, 0x00, 0x00, 0x3b, 0x48, -0x52, 0x02, 0x02, 0xef, 0x67, 0x4f, 0x4b, 0x02, 0x02, 0x4c, 0x74, 0x4e, 0x53, 0x02, 0x02, 0xb3, -0x91, 0x53, 0x55, 0x02, 0x02, 0xd2, 0x81, 0x55, 0x00, 0x02, 0x02, 0x0e, 0x03, 0x00, 0x56, 0x02, -0x02, 0x22, 0x2a, 0x56, 0x56, 0x02, 0x02, 0x32, 0x3a, 0x56, 0x56, 0x02, 0x74, 0x42, 0x90, 0xff, -0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7c, 0x90, 0x12, 0x42, 0xc9, 0x27, 0x4a, 0xe9, 0x03, 0x60, -0x28, 0x02, 0x90, 0x01, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x14, 0xe4, 0x22, 0x7c, 0x90, -0xf0, 0x27, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0x7c, 0x90, 0xf0, 0x25, 0xf0, 0xa3, 0x24, 0x7d, -0x71, 0x7c, 0x81, 0x7f, 0x12, 0xfe, 0xf5, 0x53, 0x24, 0x7d, 0x71, 0x7c, 0x01, 0x7f, 0x00, 0x7e, -0x53, 0x12, 0xe4, 0xf5, 0x7c, 0x90, 0xf0, 0x2b, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0x12, 0x7f, -0x62, 0x7e, 0x00, 0x12, 0xe4, 0x56, 0xfd, 0xfc, 0x7b, 0x90, 0x12, 0xa0, 0x8c, 0x27, 0x7b, 0x90, -0x12, 0xa0, 0x54, 0x27, 0x7b, 0x90, 0x12, 0xa4, 0x8c, 0x27, 0x7b, 0x90, 0x12, 0xa8, 0x98, 0x27, -0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, 0xac, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0xae, 0x7b, 0x7d, 0xf0, -0x7c, 0x06, 0x7f, 0x71, 0xfe, 0x17, 0x53, 0x12, 0xe4, 0xf5, 0x7d, 0x90, 0xf0, 0x8f, 0x7d, 0x90, -0xe0, 0x6a, 0xa3, 0xff, 0x90, 0xe0, 0x64, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, 0x7c, 0x90, -0xf0, 0x66, 0x58, 0xc2, 0x7f, 0x22, 0x7e, 0x10, 0x12, 0x56, 0x56, 0x00, 0x7a, 0x90, 0xef, 0x8c, -0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x57, 0x56, 0x00, 0x7a, 0x90, 0xef, 0x8d, 0x7f, 0xf0, 0x7e, 0x10, -0x12, 0x92, 0x56, 0x00, 0x7a, 0x90, 0xef, 0x8e, 0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x94, 0x56, 0x00, -0x7a, 0x90, 0xef, 0x8f, 0x7f, 0xf0, 0x7e, 0x14, 0x12, 0x94, 0x56, 0x00, 0x7b, 0x90, 0xef, 0xe9, -0xe0, 0xf0, 0xe0, 0x20, 0x90, 0x07, 0x8f, 0x7a, 0x54, 0xe0, 0xf0, 0xef, 0x13, 0xd2, 0x7a, 0x90, -0xe0, 0x8d, 0x02, 0x64, 0x02, 0x60, 0x13, 0xc2, 0x7a, 0x90, 0xe0, 0x8e, 0x01, 0x64, 0x02, 0x60, -0x13, 0xc2, 0x7a, 0x90, 0xe0, 0xa9, 0x01, 0xb4, 0x90, 0x15, 0x8c, 0x7a, 0x64, 0xe0, 0x60, 0x01, -0xc2, 0x02, 0x90, 0x13, 0x8f, 0x7a, 0x64, 0xe0, 0x60, 0x04, 0xc2, 0x0d, 0x22, 0x13, 0x7a, 0x90, -0xe0, 0x8f, 0x05, 0x64, 0x02, 0x60, 0x13, 0xc2, 0x90, 0x22, 0xa9, 0x7a, 0x64, 0xe0, 0x70, 0x01, -0x7f, 0x78, 0x7e, 0x16, 0x12, 0x57, 0x56, 0x00, 0x7a, 0x90, 0xee, 0xb4, 0xa3, 0xf0, 0xf0, 0xef, -0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xb6, 0x70, 0x6e, 0xa3, 0x03, -0x6f, 0xe0, 0x31, 0x60, 0x7a, 0x90, 0xe0, 0xbc, 0x13, 0x70, 0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xfe, -0xff, 0xe0, 0x7f, 0x90, 0xf0, 0x71, 0x12, 0x7d, 0x92, 0x7c, 0x53, 0x12, 0xc2, 0xf5, 0x90, 0x12, -0xbc, 0x7a, 0x01, 0x74, 0x90, 0xf0, 0xb4, 0x7a, 0xff, 0xe0, 0xe0, 0xa3, 0x7a, 0x90, 0xcf, 0xb6, -0xa3, 0xf0, 0xf0, 0xef, 0x90, 0x22, 0xbc, 0x7a, 0x04, 0xe0, 0xe0, 0xf0, 0x94, 0xc3, 0x40, 0x04, -0xd2, 0x18, 0x74, 0x12, 0xf0, 0x04, 0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xfe, 0xff, 0xe0, 0x7f, 0x90, -0xf0, 0x71, 0x12, 0x7d, 0x92, 0x7c, 0x53, 0x12, 0x22, 0xf5, 0x16, 0x7f, 0x53, 0x7e, 0x00, 0x12, -0x90, 0x56, 0xb0, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x23, 0x7f, 0xff, 0xe0, 0x00, 0x7e, -0x7a, 0x90, 0xe0, 0xae, 0xa3, 0xfc, 0xfd, 0xe0, 0x26, 0x12, 0x90, 0x3d, 0xe9, 0x7b, 0xf0, 0xee, -0xef, 0xa3, 0x90, 0xf0, 0xb0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7c, 0xff, 0x7d, 0x00, 0x12, 0x8c, -0x3d, 0x26, 0x7b, 0x90, 0xe0, 0xe9, 0xa3, 0xfa, 0xfb, 0xe0, 0x9f, 0xc3, 0x9e, 0xea, 0x02, 0x50, -0x10, 0xc2, 0x7a, 0x90, 0xe0, 0xb0, 0xa3, 0xfe, 0xff, 0xe0, 0x00, 0x7c, 0xb4, 0x7d, 0x26, 0x12, -0xd3, 0x3d, 0x9f, 0xeb, 0x9e, 0xea, 0x02, 0x40, 0x10, 0xd2, 0x7f, 0x90, 0xe0, 0x25, 0xc3, 0xff, -0x7a, 0x90, 0xe0, 0xb1, 0x90, 0x9f, 0xb0, 0x7a, 0x94, 0xe0, 0x50, 0x00, 0x80, 0x02, 0xc3, 0x01, -0x1e, 0x92, 0x52, 0x02, 0x7d, 0x6b, 0x7c, 0x06, 0x7f, 0x66, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, -0x90, 0xe4, 0x4a, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x5a, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x52, 0x7d, -0xa3, 0xf0, 0x90, 0xf0, 0x60, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x57, 0x7d, 0x90, 0xf0, 0x65, 0x7d, -0x90, 0xf0, 0x58, 0x7d, 0xa3, 0xf0, 0xf0, 0x04, 0x7d, 0x90, 0xe4, 0x66, 0xa3, 0xf0, 0xf0, 0x04, -0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, 0xe4, 0xa3, 0x90, 0xf0, 0x40, 0x7d, 0x7f, 0x74, 0xa3, 0xf0, -0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x86, 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x84, 0xf0, 0x7f, -0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0x94, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x92, 0x7d, 0x7f, 0x74, -0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x30, 0xf0, 0xa3, 0x90, 0x22, 0x56, 0x7c, -0x75, 0xe4, 0x04, 0xf0, 0x26, 0x12, 0x85, 0x65, 0x82, 0xf0, 0x83, 0xf5, 0x27, 0x12, 0x90, 0x60, -0x52, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x59, 0x7c, 0x01, 0x74, 0x90, 0xf0, 0x52, 0x7c, 0x27, 0x12, -0x90, 0x54, 0x4e, 0x7c, 0x27, 0x12, 0x12, 0x70, 0x96, 0x26, 0x7c, 0x90, 0x12, 0x52, 0x8c, 0x27, -0x7c, 0x90, 0x12, 0x52, 0x54, 0x27, 0x2f, 0xe4, 0xee, 0xff, 0x40, 0x34, 0xe4, 0xfe, 0xfd, 0x3d, -0x3c, 0xe4, 0x78, 0xfc, 0x12, 0x0f, 0x2d, 0x27, 0x7c, 0x90, 0xe4, 0x56, 0xf0, 0x75, 0x12, 0x04, -0x65, 0x26, 0xf0, 0x85, 0xf5, 0x82, 0x12, 0x83, 0x7c, 0x27, 0x26, 0x12, 0x90, 0x7b, 0x52, 0x7c, -0x27, 0x12, 0x90, 0x8c, 0x59, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, 0x03, 0xb4, 0x22, 0xae, 0x7f, 0x90, -0xe0, 0xf8, 0xe0, 0xa3, 0x7e, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0xf6, 0xe0, 0xa3, 0x7e, 0x90, -0xf0, 0xed, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, 0x20, 0x70, 0x7e, 0x90, 0xe0, 0xed, 0x94, 0xc3, -0x50, 0xfe, 0xe0, 0x0b, 0x94, 0xc3, 0x40, 0x08, 0xe0, 0x05, 0x09, 0x64, 0x23, 0x70, 0x7e, 0x90, -0xe0, 0xeb, 0x05, 0x64, 0x04, 0x60, 0xb4, 0xe0, 0x17, 0x07, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, -0x1a, 0x60, 0x7e, 0x90, 0xe0, 0xeb, 0x94, 0xc3, 0x40, 0x03, 0xe0, 0x06, 0x94, 0xd3, 0x40, 0x07, -0x90, 0x0b, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xfd, 0x74, 0x22, 0xf0, 0x00, 0x12, 0x12, 0x0e, -0x01, 0x51, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0xfa, 0xa3, 0xfe, -0x70, 0xe4, 0xee, 0x03, 0x03, 0x64, 0x47, 0x70, 0x12, 0xe0, 0xdb, 0x27, 0xe9, 0x4b, 0x4b, 0x01, -0x02, 0xec, 0xef, 0x4b, 0x4b, 0x03, 0x04, 0xf2, 0xf5, 0x4b, 0x4b, 0x05, 0x06, 0xf8, 0xfb, 0x4b, -0x4b, 0x07, 0x08, 0xfe, 0x01, 0x4c, 0x00, 0x09, 0x4c, 0x00, 0x02, 0x04, 0xd4, 0x53, 0x56, 0x02, -0x02, 0x4a, 0xe0, 0x54, 0x52, 0x02, 0x02, 0xc4, 0x6b, 0x51, 0x56, 0x02, 0x02, 0x52, 0x5a, 0x56, -0x56, 0x02, 0x02, 0x62, 0x6c, 0x55, 0xff, 0x74, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x90, 0x22, -0x48, 0x7c, 0x27, 0x12, 0xe9, 0xc9, 0x60, 0x4a, 0x02, 0x03, 0x01, 0x28, 0x7f, 0x90, 0x74, 0xf8, -0xf0, 0xff, 0x14, 0xa3, 0x22, 0xf0, 0x17, 0x7f, 0x93, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xbd, 0x7b, -0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xbd, 0x7b, 0xc4, 0xe0, 0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, -0xe9, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, 0x7b, 0x90, 0xe0, 0xbd, 0x0f, 0x54, 0xd3, 0xf0, -0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x21, 0x50, 0x7b, 0x90, 0xa3, 0xe9, 0xff, 0xe0, 0x7b, 0x90, -0xe0, 0xbd, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, -0xf0, 0xf9, 0x90, 0xee, 0xbd, 0x7b, 0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, 0xbd, 0x7b, 0xa3, 0xf0, -0x90, 0xf0, 0xbd, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x96, 0x7d, 0x8f, 0xee, 0x02, 0xf0, -0x4f, 0x26, 0x1e, 0x7d, 0x94, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1f, -0x7f, 0x94, 0x7e, 0xff, 0x12, 0x03, 0xf5, 0x53, 0x21, 0x7d, 0x94, 0x7c, 0xea, 0x7f, 0x01, 0x7e, -0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x20, 0x7f, 0x94, 0x7e, 0x16, 0x12, 0x01, 0xf5, 0x53, 0x2e, 0x7d, -0x94, 0x7c, 0x0a, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x22, 0x7f, 0x94, 0x7e, 0x0a, -0x12, 0x00, 0xf5, 0x53, 0x23, 0x7d, 0x94, 0x7c, 0x0a, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, -0x7c, 0x26, 0x7f, 0x94, 0x7e, 0x05, 0x12, 0x00, 0xf5, 0x53, 0x27, 0x7d, 0x94, 0x7c, 0x07, 0x7f, -0x00, 0x7e, 0x53, 0x02, 0xc0, 0xf5, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, -0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, -0x07, 0xc0, 0x04, 0x7d, 0x05, 0x7f, 0x53, 0x7e, 0x4e, 0x12, 0x7d, 0xd2, 0x7f, 0x06, 0x7e, 0x05, -0x12, 0x55, 0xd2, 0x4e, 0x09, 0x7d, 0x05, 0x7f, 0x56, 0x7e, 0x4e, 0x12, 0x7d, 0xd2, 0x7f, 0x0b, -0x7e, 0x05, 0x12, 0x57, 0xd2, 0x4e, 0x04, 0x7f, 0x25, 0x12, 0xd0, 0x8a, 0xd0, 0x07, 0xd0, 0x06, -0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, -0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0x30, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xf5, 0x7b, -0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x31, 0x12, 0x94, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xf7, -0xa3, 0xf0, 0xf0, 0xef, 0x2e, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xfc, 0x7b, 0xf0, 0xef, -0x22, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xfd, 0x7b, 0xf0, 0xef, 0x23, 0x7f, 0x94, 0x7e, -0x00, 0x12, 0x90, 0x56, 0xfe, 0x7b, 0xf0, 0xef, 0x3b, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, -0xff, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, 0x56, 0x00, 0x7c, 0x90, -0xee, 0x01, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0x22, 0x7f, 0x90, 0xe0, 0x92, 0x80, 0x64, 0x80, 0x94, -0x0e, 0x50, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, 0xe4, 0xff, 0xfe, 0x9e, 0x08, 0x80, -0x7f, 0x90, 0xe0, 0x92, 0xa3, 0xfe, 0xff, 0xe0, 0xef, 0xd3, 0x64, 0x94, 0x64, 0xee, 0x94, 0x80, -0x50, 0x80, 0xd2, 0x02, 0xd3, 0x18, 0x7f, 0x90, 0xe0, 0x93, 0xf8, 0x94, 0x7f, 0x90, 0xe0, 0x92, -0x80, 0x64, 0x83, 0x94, 0x02, 0x40, 0x18, 0xc2, 0x90, 0xc3, 0x93, 0x7f, 0x94, 0xe0, 0x90, 0x54, -0x92, 0x7f, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x7d, 0xc2, 0x02, 0x90, 0x18, 0x67, 0x7f, 0x20, 0xe0, -0x02, 0xe0, 0x18, 0xd2, 0x52, 0x02, 0x7f, 0x6b, 0x7e, 0x14, 0x12, 0x93, 0x56, 0x00, 0x7c, 0x90, -0xee, 0x60, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x60, 0xa3, 0xfa, 0xfb, 0xe0, 0xc4, 0xea, -0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, 0x62, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, 0x7b, 0x90, -0xe0, 0xbd, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x1f, 0x50, 0x7c, 0x90, -0xa3, 0x62, 0xff, 0xe0, 0xae, 0xeb, 0xa8, 0x02, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, -0xd8, 0xce, 0xff, 0xf9, 0x7c, 0x90, 0xee, 0x60, 0xa3, 0xf0, 0xf0, 0xef, 0x74, 0x22, 0x90, 0xff, -0x60, 0x7c, 0xa3, 0xf0, 0x22, 0xf0, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x61, 0xd2, -0x55, 0x12, 0x12, 0x81, 0x63, 0x4a, 0x04, 0x7f, 0x24, 0x12, 0x7b, 0x78, 0x7a, 0xff, 0x79, 0x44, -0x90, 0x9c, 0x5a, 0x7c, 0x27, 0x12, 0x7a, 0xd2, 0x79, 0x54, 0x90, 0x15, 0x5d, 0x7c, 0x27, 0x12, -0x7d, 0xd2, 0x7c, 0x06, 0x7f, 0x50, 0x7e, 0xff, 0x12, 0x00, 0xf5, 0x53, 0x06, 0x7d, 0x90, 0x7c, -0x0f, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x53, 0xf5, 0xfb, 0xa8, 0xa9, 0x43, 0x43, 0x10, 0x08, 0xaa, -0xab, 0x43, 0xe4, 0x08, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x00, 0x12, 0xa2, 0x52, 0x92, 0xd1, -0xd0, 0xaf, 0x22, 0xd0, 0x7b, 0x90, 0xee, 0xe6, 0xa3, 0xf0, 0xf0, 0xef, 0xed, 0xa3, 0xc0, 0xf0, -0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xe7, 0x7b, 0x24, 0xe0, 0xff, 0x02, 0x7b, 0x90, -0xe0, 0xe6, 0x00, 0x34, 0x12, 0xfe, 0x56, 0x00, 0x10, 0x8e, 0x11, 0x8f, 0x11, 0xe5, 0xff, 0xf4, -0x10, 0xe5, 0xfe, 0xf4, 0x7b, 0x90, 0xe0, 0xe6, 0xa3, 0xfc, 0xfd, 0xe0, 0x53, 0x12, 0x90, 0xf5, -0xe8, 0x7b, 0xf5, 0xe0, 0x12, 0x14, 0x36, 0x51, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7e, 0x22, -0xef, 0x06, 0x13, 0x13, 0x54, 0x13, 0xff, 0x03, 0x01, 0xbf, 0xae, 0x02, 0x1e, 0x05, 0xd3, 0xee, -0x05, 0x94, 0x02, 0x40, 0x05, 0x7e, 0x14, 0xee, 0x12, 0x60, 0x60, 0x14, 0x14, 0x14, 0x16, 0x60, -0x60, 0x14, 0x24, 0x18, 0x70, 0x04, 0x90, 0x19, 0x5a, 0x7f, 0x17, 0x80, 0x7f, 0x90, 0x80, 0x5c, -0x90, 0x12, 0x5e, 0x7f, 0x0d, 0x80, 0x7f, 0x90, 0x80, 0x60, 0x90, 0x08, 0x62, 0x7f, 0x03, 0x80, -0x7f, 0x90, 0xe0, 0x64, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0x22, 0xf8, 0x7f, 0xa3, 0xe0, 0x90, 0xe0, -0xe9, 0x7e, 0xd3, 0xf0, 0x7f, 0x90, 0xe0, 0xf9, 0x02, 0x94, 0x7f, 0x90, 0xe0, 0xf8, 0x00, 0x94, -0x19, 0x50, 0x7e, 0x90, 0xe0, 0xe9, 0x74, 0xff, 0x7e, 0x01, 0xa8, 0x00, 0x08, 0x07, 0x05, 0x80, -0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0x54, 0xf9, 0x70, 0x07, 0x90, 0x0b, 0xf8, 0x7f, 0xff, 0x74, -0xa3, 0xf0, 0xfd, 0x74, 0x22, 0xf0, 0x55, 0x12, 0xe4, 0xd2, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, -0x90, 0x22, 0xf5, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x30, 0x12, 0x94, 0xf5, 0x53, -0x7b, 0x90, 0xe0, 0xf7, 0xa3, 0xfe, 0xff, 0xe0, 0x31, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, -0xfc, 0x7b, 0xff, 0xe0, 0x00, 0x7e, 0x2e, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xfd, 0x7b, -0xff, 0xe0, 0x00, 0x7e, 0x22, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xfe, 0x7b, 0xff, 0xe0, -0x00, 0x7e, 0x23, 0x7d, 0x94, 0x7c, 0x53, 0x02, 0x7e, 0xf5, 0x7f, 0x7a, 0x7c, 0x82, 0x7d, 0x7b, -0x12, 0x5d, 0xfa, 0x54, 0x7f, 0x7e, 0x6f, 0x7f, 0x7f, 0x7c, 0x74, 0x7d, 0x54, 0x12, 0x7e, 0xfa, -0x7f, 0x7f, 0x7c, 0x78, 0x7d, 0x7f, 0x12, 0xad, 0xfa, 0x54, 0x7f, 0x90, 0x74, 0x95, 0xf0, 0xff, -0xa5, 0x74, 0x7a, 0x90, 0xf0, 0xb6, 0xf0, 0xa3, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x0a, 0xf0, 0xa3, -0x7b, 0x90, 0x74, 0x4b, 0xf0, 0x2f, 0x7b, 0x90, 0x74, 0x58, 0xf0, 0x27, 0xc2, 0x22, 0xe8, 0xd5, -0xe7, 0x30, 0xb2, 0x0f, 0xe4, 0xd5, 0x9b, 0xc3, 0xe4, 0xfb, 0xfa, 0x9a, 0x99, 0xe4, 0xe4, 0xf9, -0xf8, 0x98, 0x30, 0xec, 0x17, 0xe7, 0xd5, 0xb2, 0x50, 0x12, 0x12, 0x71, 0x43, 0x28, 0xc3, 0xe4, -0xfb, 0x9b, 0x9a, 0xe4, 0xe4, 0xfa, 0xf9, 0x99, 0x98, 0xe4, 0x80, 0xf8, 0x12, 0x03, 0x43, 0x28, -0xd5, 0x30, 0xe4, 0x0d, 0x9f, 0xc3, 0xe4, 0xff, 0xfe, 0x9e, 0x9d, 0xe4, 0xe4, 0xfd, 0xfc, 0x9c, -0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, 0x00, 0xd0, 0x00, 0xc0, -0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0xc0, 0x7c, 0x90, -0x12, 0x5a, 0xc9, 0x27, 0x28, 0x12, 0xd0, 0x01, 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, -0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, -0x32, 0xe0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, -0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0x90, 0x07, -0x5d, 0x7c, 0x27, 0x12, 0x12, 0xc9, 0x01, 0x28, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, -0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, -0xe0, 0xd0, 0x12, 0x32, 0xf7, 0x4f, 0x7e, 0x90, 0xe0, 0xeb, 0x7f, 0x90, 0xf0, 0x6f, 0x7e, 0x90, -0xe0, 0xed, 0x7f, 0x90, 0xf0, 0x71, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, 0x08, 0x60, 0x7f, 0x90, -0x74, 0x71, 0xf0, 0x10, 0x0f, 0x80, 0x7e, 0x90, 0xe0, 0xed, 0x94, 0xc3, 0x40, 0xfe, 0x90, 0x06, -0x71, 0x7f, 0xfe, 0x74, 0x02, 0xf0, 0x7e, 0x00, 0x14, 0xe5, 0x07, 0x54, 0xe5, 0xff, 0xae, 0x11, -0xa8, 0x10, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf5, 0xf9, 0x8e, 0x11, -0xe5, 0x10, 0x13, 0x14, 0x13, 0x13, 0x1f, 0x54, 0xc3, 0xff, 0x1a, 0x74, 0xf5, 0x9f, 0xf8, 0x14, -0x45, 0xe6, 0xf6, 0x10, 0x14, 0x05, 0x14, 0xa8, 0x45, 0xe6, 0xf6, 0x11, 0x7f, 0x22, 0x7e, 0x23, -0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x27, 0xc0, 0xf0, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, -0x12, 0xaf, 0x08, 0x52, 0x7c, 0x90, 0xe0, 0x27, 0xef, 0xfd, 0xff, 0x4d, 0x7f, 0x90, 0xee, 0xf6, -0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, -0x22, 0xf0, 0x40, 0xd2, 0x00, 0x30, 0xc0, 0x2e, 0xc0, 0xe0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, -0x00, 0xd0, 0x07, 0xc0, 0x81, 0xaf, 0x90, 0xc3, 0x81, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x80, -0x00, 0x94, 0x07, 0x50, 0x81, 0xaf, 0xf0, 0xe4, 0xef, 0xa3, 0xd0, 0xf0, 0xd0, 0x07, 0xd0, 0xd0, -0xd0, 0x82, 0xd0, 0x83, 0x32, 0xe0, 0x90, 0xe4, 0x74, 0x7f, 0xa3, 0xf0, 0x30, 0xf0, 0x07, 0x13, -0x7f, 0x90, 0x74, 0x74, 0x80, 0x80, 0x90, 0x16, 0x95, 0x7f, 0xc3, 0xe0, 0x05, 0x94, 0x11, 0x40, -0x94, 0xe0, 0x50, 0x10, 0x30, 0x0c, 0x09, 0x11, 0x7f, 0x90, 0x74, 0x74, 0xf0, 0x40, 0xe4, 0xa3, -0x90, 0xf0, 0x74, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x7c, 0x90, 0xe0, 0x27, 0xc3, 0xff, -0x57, 0x94, 0x07, 0x40, 0x7b, 0x90, 0x74, 0xde, 0x80, 0x80, 0xef, 0x0b, 0x94, 0xc3, 0x40, 0x06, -0x90, 0x0b, 0xde, 0x7b, 0x40, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x07, 0x80, 0x90, 0xe4, 0xde, 0x7b, -0xa3, 0xf0, 0x90, 0xf0, 0xde, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0xd0, 0xc0, 0xaf, 0xa2, -0xd1, 0x92, 0xaf, 0xc2, 0x1b, 0x85, 0x85, 0x27, 0x26, 0x1a, 0x19, 0x85, 0x85, 0x25, 0x24, 0x18, -0xf5, 0xe4, 0xf5, 0x1b, 0xf5, 0x1a, 0xf5, 0x19, 0xa2, 0x18, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, -0x7a, 0x7f, 0x27, 0xaf, 0x26, 0xae, 0x25, 0xad, 0x24, 0xac, 0x27, 0x02, 0x90, 0x8c, 0x98, 0x7f, -0x33, 0xe0, 0x17, 0x92, 0x7f, 0x90, 0xe0, 0x98, 0x22, 0x65, 0x04, 0x70, 0xe0, 0xa3, 0x23, 0x65, -0x18, 0x60, 0x7f, 0x90, 0x30, 0x98, 0x09, 0x17, 0xf5, 0xe0, 0xa3, 0x22, 0xf5, 0xe0, 0x80, 0x23, -0xe5, 0x07, 0xf0, 0x22, 0xe5, 0xa3, 0xf0, 0x23, 0x23, 0xd2, 0x20, 0x22, 0x27, 0x17, 0x7b, 0x90, -0xe0, 0x26, 0x1e, 0x60, 0x7b, 0x90, 0xe0, 0x18, 0xa3, 0xfe, 0xff, 0xe0, 0x11, 0x7d, 0x64, 0x7c, -0x53, 0x12, 0x90, 0xf5, 0x1a, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x10, 0x12, 0x64, -0xf5, 0x53, 0x51, 0x12, 0x22, 0x01, 0x62, 0xd2, 0x04, 0x7f, 0x24, 0x12, 0x7b, 0x78, 0x7a, 0xff, -0x79, 0x3f, 0x90, 0x4b, 0x5a, 0x7c, 0x27, 0x12, 0x7a, 0xd2, 0x79, 0x45, 0x90, 0xf5, 0x5d, 0x7c, -0x27, 0x12, 0x43, 0xd2, 0x18, 0xa9, 0xab, 0x43, 0xe4, 0x08, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, -0xc0, 0x22, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x12, 0xaf, 0xae, 0x00, 0x7f, 0x90, 0xe4, 0xf6, -0xa3, 0xf0, 0xf0, 0xef, 0x00, 0x12, 0x12, 0x0e, 0xf7, 0x4f, 0x39, 0x12, 0xe4, 0x4d, 0x7f, 0x90, -0xf0, 0xf8, 0xf0, 0xa3, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xe4, 0x22, 0x7b, 0x90, 0xf0, 0xf4, -0x7a, 0x90, 0x74, 0xa5, 0xf0, 0x30, 0x11, 0x30, 0x90, 0x0e, 0x33, 0x7f, 0x90, 0xe0, 0xf4, 0x7b, -0x90, 0xf0, 0xa5, 0x7a, 0x04, 0x74, 0x90, 0xf0, 0xf4, 0x7b, 0xff, 0xe0, 0x00, 0x7e, 0x11, 0x7d, -0x55, 0x7c, 0x53, 0x02, 0xef, 0xf5, 0xc4, 0x04, 0xf0, 0x54, 0x24, 0x14, 0xf5, 0x5f, 0xe4, 0x82, -0x7b, 0x34, 0x83, 0xf5, 0x01, 0xd0, 0x07, 0xd0, 0x0f, 0x7e, 0x82, 0xe5, 0x02, 0x70, 0x83, 0x15, -0x82, 0x15, 0xe0, 0xd0, 0xde, 0xf0, 0xc0, 0xf3, 0xc0, 0x07, 0x22, 0x01, 0xa8, 0xc0, 0xd0, 0xc0, -0xd0, 0x75, 0x92, 0x00, 0xc0, 0xaf, 0x75, 0xf0, 0x05, 0xf0, 0xe0, 0xc0, 0xe0, 0x75, 0xc0, 0x85, -0x75, 0xe0, 0x53, 0xe0, 0xe0, 0xc0, 0xd5, 0x32, 0xf2, 0xf0, 0xe0, 0xd0, 0xf0, 0xd0, 0xd0, 0xd0, -0xa8, 0xd0, 0x90, 0x22, 0x6f, 0x7f, 0xff, 0xe0, 0x7f, 0x90, 0xe4, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, -0x7f, 0x90, 0xe0, 0x71, 0x90, 0xff, 0xf4, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, 0xe4, 0xf0, 0x7f, 0x90, -0xf0, 0xf8, 0xf0, 0xa3, 0xc0, 0x22, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x12, 0xaf, 0xd4, 0x51, -0x7f, 0x90, 0xee, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, -0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x00, 0x12, 0x90, 0xae, 0xf6, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, -0x53, 0xf0, 0xe7, 0xa9, 0xab, 0x53, 0x7f, 0xf7, 0x12, 0x04, 0x01, 0x25, 0x54, 0x12, 0xe4, 0x53, -0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xc0, 0x22, 0xc2, 0xa8, 0x10, 0xaf, 0x04, 0x40, 0xa8, 0xd0, -0xf5, 0x80, 0x7d, 0x90, 0xee, 0xa0, 0xa3, 0xf0, 0xf0, 0xef, 0xc2, 0x75, 0x75, 0x7d, 0xa0, 0xc1, -0xc3, 0x8c, 0xc4, 0x8d, 0xa8, 0xd0, 0x7d, 0x22, 0x7f, 0x0f, 0x7e, 0x05, 0x12, 0x92, 0xd2, 0x4e, -0x11, 0x7d, 0x05, 0x7f, 0x93, 0x7e, 0x4e, 0x12, 0x7d, 0xd2, 0x7f, 0x13, 0x7e, 0x05, 0x12, 0x94, -0xd2, 0x4e, 0x04, 0x7f, 0x25, 0x02, 0xef, 0x8a, 0x54, 0xc4, 0x24, 0xf0, 0xf5, 0x5f, 0xe4, 0x82, -0x7b, 0x34, 0x83, 0xf5, 0x01, 0xd0, 0x07, 0xd0, 0x0f, 0x7e, 0xc0, 0xe0, 0xa3, 0xe0, 0xfa, 0xde, -0x07, 0xc0, 0x01, 0xc0, 0xe4, 0x22, 0x7f, 0x90, 0xf0, 0xae, 0xf0, 0xa3, 0x7f, 0x90, 0x74, 0xb0, -0xf0, 0x10, 0xe4, 0xa3, 0x90, 0xf0, 0xd2, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, 0xd4, 0x7f, 0xa3, 0xf0, -0x22, 0xf0, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, -0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x06, 0x7f, 0x02, 0x8f, 0x02, 0x22, 0xdb, 0xf0, 0x8f, -0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, -0x7f, 0x04, 0x80, 0x05, 0x7f, 0x02, 0x8f, 0x01, 0x22, 0xdb, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, -0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x07, -0x7f, 0x02, 0x8f, 0x03, 0x22, 0xdb, 0x7a, 0x90, 0x12, 0x98, 0x98, 0x27, 0x00, 0x00, 0x00, 0x00, -0x7a, 0x90, 0x12, 0x9c, 0x98, 0x27, 0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, 0x96, 0x7a, 0xa3, 0xf0, -0x22, 0xf0, 0x7f, 0x90, 0xe0, 0xf8, 0xa3, 0xff, 0x90, 0xe0, 0xae, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, -0x12, 0xf0, 0xb5, 0x55, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x6d, 0xef, 0x02, 0x70, -0x6c, 0xee, 0x10, 0x60, 0xef, 0x0f, 0x06, 0xaa, 0x01, 0x70, 0x14, 0x0e, 0x82, 0xf5, 0x83, 0x8a, -0xf0, 0xe4, 0xe8, 0x80, 0x00, 0x22, 0x0a, 0x00, 0x00, 0xf4, 0x3f, 0x00, 0x00, 0xaf, 0xb5, 0x00, -0xff, 0x05, 0xf5, 0xff, 0x00, 0x4a, 0x3f, 0x00, 0xff, 0x5b, 0xca, 0xff, 0x90, 0xe0, 0x4b, 0x7b, -0x2f, 0x74, 0x90, 0xf0, 0xf2, 0x7e, 0xa3, 0xe0, 0x25, 0xe0, 0x04, 0xe0, 0x7b, 0x90, 0xf0, 0x58, -0x3a, 0x02, 0x7d, 0x9a, 0x7c, 0x16, 0x7f, 0x71, 0x7e, 0x04, 0x12, 0x00, 0xf5, 0x53, 0x18, 0x7d, -0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x53, 0x02, 0x30, 0xf5, 0xfd, 0x40, 0x40, 0xc2, 0xd3, 0x8e, -0xd2, 0x8f, 0x24, 0xed, 0xff, 0xff, 0x34, 0xec, 0xf5, 0xff, 0x8f, 0xda, 0x22, 0xd9, 0xa9, 0x53, -0x53, 0xe7, 0xf7, 0xab, 0x04, 0x7f, 0x25, 0x12, 0xc2, 0x01, 0xe4, 0x62, 0x7f, 0x90, 0xf0, 0xf8, -0xf0, 0xa3, 0x90, 0x22, 0x66, 0x7f, 0x1f, 0x74, 0xa3, 0xf0, 0x7f, 0x74, 0xe4, 0xf0, 0x7f, 0x90, -0xf0, 0xf8, 0xf0, 0xa3, 0x30, 0x22, 0xfd, 0x40, 0x40, 0xc2, 0x54, 0xef, 0x8e, 0xfe, 0xf5, 0xc2, -0x8c, 0xc1, 0x8d, 0xc3, 0x22, 0xc5, 0x7a, 0x90, 0xe0, 0xbd, 0x90, 0x04, 0xe9, 0x7b, 0x60, 0xf0, -0xe0, 0x05, 0x7a, 0x90, 0xf0, 0xbd, 0x12, 0x22, 0x79, 0x00, 0x55, 0x12, 0x12, 0x41, 0xfa, 0x55, -0x4a, 0x12, 0x02, 0x63, 0x5b, 0x48, 0x40, 0xc2, 0x54, 0xef, 0x8e, 0xfe, 0xf5, 0xc2, 0x8c, 0xc1, -0x8d, 0xc3, 0x22, 0xc4, 0x90, 0xe4, 0x66, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, 0xf8, 0x7f, 0xa3, 0xf0, -0x22, 0xf0, 0x7a, 0x90, 0xe0, 0xbd, 0x7a, 0x90, 0xf0, 0xbe, 0x90, 0xe4, 0xbd, 0x7a, 0x22, 0xf0, -0x7f, 0x78, 0xf6, 0xe4, 0xfd, 0xd8, 0x81, 0x75, 0x02, 0x3f, 0x3e, 0x24, 0x06, 0x7d, 0x90, 0x7c, -0x02, 0x7f, 0x00, 0x7e, 0x53, 0x02, 0x8e, 0xf5, 0x8f, 0x82, 0xa3, 0x83, 0x82, 0xae, 0x83, 0xaf, -0x20, 0x22, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x74, 0x92, 0x90, 0xff, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, -0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x00, 0x02, 0x02, 0x4a, -0xef, 0x52, 0x00, 0x83, 0x1f, 0xfe, 0x00, 0x02, 0x00, 0x01, 0xe8, 0x03, 0x10, 0x00, 0x08, 0x00, -0x80, 0x00, 0x03, 0x94, 0x00, 0xd9, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 + 0x48, 0x4c, 0x00, 0x04, 0x00, 0x00, 0x56, 0xa0, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0xc4, 0x4d, 0x55, 0x02, 0xe4, 0xee, + 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0x02, 0x22, 0x4b, 0x23, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0xa8, 0x53, + 0x53, 0xfb, 0xef, 0xa9, 0xaa, 0x53, 0x53, 0xf7, 0xf7, 0xab, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, + 0x04, 0x7f, 0x25, 0x12, 0x12, 0x01, 0xd2, 0x55, 0x61, 0xc2, 0x13, 0xc2, + 0x90, 0xe4, 0x95, 0x7f, + 0x90, 0xf0, 0x8c, 0x7a, 0x90, 0xf0, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x3b, 0x12, 0xc2, 0xe0, + 0x22, 0x58, 0x02, 0x22, 0x70, 0x09, 0x00, 0x02, 0x22, 0x4a, 0x02, 0x22, + 0x7f, 0x50, 0xa8, 0xc0, + 0xaf, 0xc2, 0x40, 0x10, 0xd0, 0x04, 0x80, 0xa8, 0x75, 0xf5, 0x7d, 0xc2, + 0xc1, 0x75, 0x8e, 0xa0, + 0x8f, 0xc3, 0x30, 0xc5, 0xfd, 0x40, 0x7d, 0x90, 0xe0, 0xa0, 0xa3, 0xfe, + 0xff, 0xe0, 0xa8, 0xd0, + 0x22, 0x22, 0x02, 0x00, 0xf3, 0x4c, 0x7e, 0x90, 0xe0, 0xeb, 0x7a, 0x90, + 0xf0, 0xa8, 0x7e, 0x90, + 0xe0, 0xe9, 0x7a, 0x90, 0xf0, 0xa9, 0xb4, 0xe0, 0x11, 0x01, 0x7a, 0x90, + 0xe0, 0xa8, 0x05, 0xb4, + 0x12, 0x05, 0x4e, 0x00, 0x08, 0x80, 0x56, 0x12, 0x80, 0x6a, 0x12, 0x03, + 0x51, 0x00, 0x3b, 0x02, + 0x00, 0xe0, 0x02, 0x00, 0xc0, 0x50, 0x62, 0x30, 0x12, 0x06, 0x6c, 0x55, + 0x04, 0x7f, 0x30, 0x22, + 0x06, 0x61, 0x00, 0x12, 0x7f, 0x0e, 0x22, 0x02, 0x00, 0x7f, 0x02, 0x22, + 0xa0, 0x51, 0x7d, 0x90, + 0xe0, 0x3b, 0xf0, 0x54, 0x03, 0x70, 0x80, 0xd3, 0xc3, 0x01, 0x92, 0xb3, + 0x90, 0x05, 0x3a, 0x7d, + 0xa3, 0xe0, 0xe4, 0xa2, 0x92, 0xb3, 0xe0, 0x02, 0x0f, 0x54, 0x03, 0x70, + 0x80, 0xd3, 0xc3, 0x01, + 0x92, 0xb3, 0x90, 0x06, 0x91, 0x7d, 0x30, 0xe0, 0x03, 0xe1, 0x02, 0x02, + 0x90, 0x65, 0x5a, 0x7d, + 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x30, 0x31, 0x2e, 0x02, 0x7d, 0x90, + 0xe0, 0x78, 0xa3, 0xfe, + 0xff, 0xe0, 0x90, 0xc3, 0x75, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x74, + 0x50, 0x9e, 0x90, 0x19, + 0x65, 0x7d, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x7f, 0x74, 0x03, 0xf0, 0xff, + 0x5b, 0x20, 0xd2, 0x09, + 0xe4, 0x5b, 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x4a, + 0x02, 0x70, 0xe0, 0xa3, + 0x03, 0x70, 0x02, 0x20, 0x90, 0x17, 0x4a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, + 0x70, 0xe0, 0x90, 0x3c, + 0x5a, 0x7d, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x20, 0x32, 0x2f, 0x02, + 0x7d, 0x90, 0xe0, 0x6c, + 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xd3, 0x6b, 0x7d, 0x9f, 0xe0, 0x7d, 0x90, + 0xe0, 0x6a, 0x40, 0x9e, + 0x90, 0x1a, 0x57, 0x7d, 0xd3, 0xe0, 0x80, 0x64, 0x7f, 0x94, 0x03, 0x40, + 0xff, 0x74, 0x20, 0xf0, + 0x09, 0x07, 0x07, 0xd2, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, 0x7f, 0xf0, + 0x7e, 0x22, 0x12, 0x67, + 0x56, 0x00, 0x14, 0x8e, 0x15, 0x8f, 0x27, 0x7f, 0x67, 0x7e, 0x00, 0x12, + 0x8e, 0x56, 0x8f, 0x16, + 0x90, 0x17, 0x5e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, + 0x33, 0xce, 0xd8, 0xce, + 0xff, 0xf9, 0xe5, 0xd3, 0x9f, 0x17, 0x16, 0xe5, 0x40, 0x9e, 0x20, 0x54, + 0x0c, 0x02, 0x7d, 0x90, + 0xe0, 0x57, 0x80, 0x64, 0x81, 0x94, 0x10, 0x50, 0x0b, 0x80, 0x7d, 0x90, + 0xe0, 0x65, 0x64, 0xc3, + 0x94, 0x80, 0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x5b, 0x20, 0xd2, 0x34, + 0xe4, 0x5b, 0x7d, 0x90, + 0xf0, 0x60, 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, + 0x90, 0xc3, 0x6b, 0x7d, + 0x9f, 0xe0, 0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, + 0x30, 0xe0, 0x0f, 0xe0, + 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, + 0xef, 0xa3, 0x90, 0xf0, + 0x4e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x03, 0x78, 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0xff, 0xf9, + 0xe5, 0xd3, 0x9f, 0x15, 0x14, 0xe5, 0x40, 0x9e, 0x90, 0x44, 0x57, 0x7d, + 0x64, 0xe0, 0x94, 0x80, + 0x50, 0x81, 0x74, 0x03, 0xf0, 0x01, 0x07, 0x20, 0xd2, 0x34, 0xe4, 0x07, + 0x7d, 0x90, 0xf0, 0x52, + 0xf0, 0xa3, 0x7d, 0x90, 0xe0, 0x68, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, + 0x6b, 0x7d, 0x9f, 0xe0, + 0x7d, 0x90, 0xe0, 0x6a, 0x50, 0x9e, 0x90, 0x16, 0x91, 0x7d, 0x30, 0xe0, + 0x0f, 0xe0, 0x7d, 0x90, + 0xe0, 0x68, 0xa3, 0xff, 0x90, 0xe0, 0x6a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, + 0x90, 0xf0, 0x34, 0x7d, + 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x60, 0x7d, 0xf5, 0xe0, + 0xa3, 0x1c, 0xf5, 0xe0, + 0x05, 0x1d, 0xe5, 0x1d, 0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x60, 0x7d, + 0x1c, 0xe5, 0xa3, 0xf0, + 0x1d, 0xe5, 0x30, 0xf0, 0x2f, 0x5b, 0x7d, 0x90, 0xe0, 0x7e, 0xa3, 0xfe, + 0xff, 0xe0, 0x74, 0xc3, + 0x9f, 0xf8, 0x74, 0xff, 0x9e, 0x2a, 0xd3, 0xfe, 0x7d, 0x90, 0xe0, 0x7b, + 0x90, 0x9f, 0x7a, 0x7d, + 0x9e, 0xe0, 0x07, 0x50, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x90, 0x0a, + 0x2e, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, + 0x16, 0x95, 0x03, 0x40, + 0x80, 0xd3, 0xc3, 0x01, 0x04, 0x92, 0x7d, 0x90, 0xe0, 0x50, 0x16, 0xf5, + 0xe0, 0xa3, 0x17, 0xf5, + 0x7d, 0x90, 0xe0, 0x52, 0x1c, 0xf5, 0xe0, 0xa3, 0x1d, 0xf5, 0x1d, 0x05, + 0x1d, 0xe5, 0x02, 0x70, + 0x1c, 0x05, 0x7d, 0x90, 0xe5, 0x52, 0xf0, 0x1c, 0xe5, 0xa3, 0xf0, 0x1d, + 0x07, 0x30, 0x90, 0x0a, + 0x82, 0x7d, 0xf5, 0xe0, 0xa3, 0x16, 0xf5, 0xe0, 0x20, 0x17, 0x11, 0x04, + 0xe5, 0xc3, 0x95, 0x1d, + 0xe5, 0x17, 0x95, 0x1c, 0x40, 0x16, 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, + 0x20, 0x03, 0x03, 0x04, + 0x03, 0x02, 0xc0, 0xfc, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0xe4, 0xaf, + 0x7d, 0x90, 0xf0, 0xa4, + 0xf0, 0xa3, 0x7d, 0x7e, 0xa4, 0x7f, 0x01, 0x7d, 0x12, 0xfc, 0x57, 0x55, + 0x27, 0x7b, 0x00, 0x7a, + 0x07, 0x7d, 0x06, 0x7f, 0x54, 0x12, 0x30, 0xa8, 0xfd, 0x40, 0x7d, 0x90, + 0xe0, 0xa4, 0xa3, 0xff, + 0x90, 0xe0, 0x5a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xa2, 0xf0, 0x92, 0xd1, + 0xd0, 0xaf, 0xe4, 0xd0, + 0x7d, 0x90, 0xf0, 0x60, 0xf0, 0xa3, 0x5b, 0xc2, 0x7d, 0x90, 0xe0, 0x63, + 0x18, 0xf5, 0x7d, 0x90, + 0xe0, 0x5a, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x7d, 0x90, 0xe0, 0x5c, + 0x1a, 0xf5, 0xe0, 0xa3, + 0x1b, 0xf5, 0x7d, 0x90, 0xe0, 0x5e, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, + 0x7d, 0x90, 0xe0, 0x66, + 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, 0x7d, 0x90, 0xe0, 0x65, 0x19, 0xf5, + 0x7d, 0x90, 0xe0, 0x74, + 0xa3, 0xfe, 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x1d, 0xf5, 0x7f, 0x74, + 0xf5, 0x9e, 0x90, 0x1c, + 0x6e, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x6a, 0x7d, 0xb5, 0xe0, + 0x1e, 0x06, 0xe0, 0xa3, + 0x07, 0xb5, 0xd3, 0x19, 0x7d, 0x90, 0xe0, 0x4b, 0x13, 0x95, 0x7d, 0x90, + 0xe0, 0x4a, 0x12, 0x95, + 0x0a, 0x40, 0x58, 0x20, 0xe0, 0x07, 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, + 0x90, 0xd3, 0x7b, 0x7d, + 0x94, 0xe0, 0x90, 0xfe, 0x7a, 0x7d, 0x94, 0xe0, 0x40, 0x77, 0xd3, 0x0d, + 0x13, 0xe5, 0x17, 0x95, + 0x12, 0xe5, 0x16, 0x95, 0x02, 0x40, 0x04, 0xc2, 0x02, 0x30, 0x20, 0x03, + 0x02, 0x05, 0x04, 0xc2, + 0x04, 0xa2, 0x5a, 0x92, 0x03, 0x20, 0x02, 0x03, 0xa7, 0x04, 0xd0, 0xc0, + 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x90, 0xe4, 0xa4, 0x7d, 0xa3, 0xf0, 0x7e, 0xf0, 0x7f, 0x7d, + 0x7d, 0xa4, 0xfc, 0x01, + 0x55, 0x12, 0x7b, 0x57, 0x7a, 0x22, 0x7d, 0x00, 0x7f, 0x07, 0x12, 0x06, + 0xa8, 0x54, 0x40, 0x30, + 0x90, 0xfd, 0xa4, 0x7d, 0xff, 0xe0, 0xe0, 0xa3, 0x7d, 0x90, 0xcf, 0x4a, + 0xa3, 0xf0, 0xf0, 0xef, + 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, 0x52, 0x7d, 0xa3, 0xf0, + 0xc2, 0xf0, 0x90, 0x07, + 0x55, 0x7d, 0xf5, 0xe0, 0x90, 0x18, 0x4a, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, + 0xf5, 0xe0, 0x90, 0x13, + 0x4c, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x90, 0x1b, 0x4e, 0x7d, + 0xf5, 0xe0, 0xa3, 0x16, + 0xf5, 0xe0, 0x90, 0x17, 0x58, 0x7d, 0xf5, 0xe0, 0xa3, 0x14, 0xf5, 0xe0, + 0x90, 0x15, 0x57, 0x7d, + 0xf5, 0xe0, 0x90, 0x19, 0x6a, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, + 0x20, 0x1d, 0x16, 0x02, + 0x90, 0xd3, 0x5b, 0x7d, 0x95, 0xe0, 0x90, 0x13, 0x5a, 0x7d, 0x95, 0xe0, + 0x40, 0x12, 0xe0, 0x07, + 0x12, 0xf5, 0xe0, 0xa3, 0x13, 0xf5, 0x06, 0x20, 0xc2, 0x02, 0xa2, 0x03, + 0x92, 0x03, 0x20, 0x59, + 0x0b, 0x05, 0x02, 0x20, 0xc2, 0x08, 0xc2, 0x03, 0xc2, 0x04, 0xc2, 0x59, + 0x20, 0x5a, 0x06, 0x04, + 0x03, 0x20, 0x02, 0x03, 0x8b, 0x06, 0xe5, 0xc3, 0x95, 0x13, 0xe5, 0x1b, + 0x95, 0x12, 0x50, 0x1a, + 0xe5, 0x57, 0x64, 0x19, 0x94, 0x80, 0x50, 0x80, 0x15, 0x4a, 0xc3, 0x19, + 0x18, 0xe5, 0x80, 0x64, + 0xe5, 0xf8, 0x64, 0x19, 0x98, 0x80, 0x0e, 0x50, 0x15, 0xe5, 0xe0, 0x25, + 0x15, 0xf5, 0x14, 0xe5, + 0xf5, 0x33, 0x75, 0x14, 0xff, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, + 0x68, 0xc8, 0xe5, 0xff, + 0xc4, 0x14, 0xf0, 0x54, 0xfe, 0x48, 0xe5, 0xc3, 0x9f, 0x1d, 0x11, 0xf5, + 0x1c, 0xe5, 0xf5, 0x9e, + 0xc3, 0x10, 0x80, 0x64, 0x80, 0x94, 0x02, 0x50, 0x6d, 0x80, 0x10, 0x85, + 0x85, 0x1c, 0x1d, 0x11, + 0x05, 0x02, 0x75, 0xa6, 0xff, 0x19, 0x6c, 0x80, 0x74, 0xc3, 0x95, 0x01, + 0xa2, 0x18, 0x13, 0xe7, + 0x18, 0xf5, 0xe5, 0xd3, 0x95, 0x13, 0xe5, 0x17, 0x95, 0x12, 0x40, 0x16, + 0xe5, 0x5f, 0x64, 0x19, + 0x94, 0x80, 0x40, 0x80, 0x05, 0x4c, 0xd3, 0x19, 0x18, 0xe5, 0x80, 0x64, + 0xe5, 0xf8, 0x64, 0x19, + 0x98, 0x80, 0x0e, 0x40, 0x15, 0xe5, 0xe0, 0x25, 0x15, 0xf5, 0x14, 0xe5, + 0xf5, 0x33, 0x75, 0x14, + 0x01, 0x19, 0x15, 0xe5, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe5, 0xff, + 0xc4, 0x14, 0xf0, 0x54, + 0xfe, 0x48, 0x1d, 0xe5, 0xf5, 0x2f, 0xe5, 0x11, 0x3e, 0x1c, 0x10, 0xf5, + 0xe5, 0xd3, 0x94, 0x11, + 0xe5, 0xff, 0x94, 0x10, 0x40, 0x7f, 0x80, 0x02, 0x85, 0x0b, 0x1c, 0x10, + 0x11, 0x85, 0x80, 0x1d, + 0x75, 0x1d, 0x01, 0x19, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, 0x12, 0x80, + 0xf5, 0xe4, 0xf5, 0x19, + 0x75, 0x14, 0x01, 0x15, 0x03, 0x30, 0xc2, 0x02, 0x30, 0x59, 0x02, 0x04, + 0x5a, 0xc2, 0x03, 0x30, + 0x90, 0x72, 0x6e, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, + 0x6c, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, 0xc3, 0x17, 0x1d, 0xe5, 0x17, 0x95, 0x1c, 0xe5, + 0x16, 0x95, 0x0e, 0x50, + 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, 0x01, 0x15, + 0x59, 0xc2, 0xe5, 0xd3, + 0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, 0x1c, 0x10, + 0x11, 0x85, 0x75, 0x1d, + 0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x59, 0x57, 0x7d, 0x19, 0xe5, + 0x90, 0xf0, 0x58, 0x7d, + 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x6a, 0x7d, 0x1c, 0xe5, + 0xa3, 0xf0, 0x1d, 0xe5, + 0x20, 0xf0, 0x0f, 0x02, 0x7d, 0x90, 0xe0, 0x78, 0xa3, 0xff, 0x90, 0xe0, + 0x74, 0x7d, 0xf0, 0xcf, + 0xef, 0xa3, 0x30, 0xf0, 0x6d, 0x04, 0x7d, 0x90, 0xe0, 0x78, 0x10, 0xf5, + 0xe0, 0xa3, 0x11, 0xf5, + 0x7d, 0x90, 0xe0, 0x76, 0x16, 0xf5, 0xe0, 0xa3, 0x17, 0xf5, 0x74, 0xc3, + 0x95, 0xff, 0xf5, 0x1d, + 0x74, 0x1d, 0x95, 0x7f, 0xf5, 0x1c, 0xc3, 0x1c, 0x1d, 0xe5, 0x17, 0x95, + 0x1c, 0xe5, 0x16, 0x95, + 0x0e, 0x50, 0x16, 0x85, 0x85, 0x1c, 0x1d, 0x17, 0x14, 0x75, 0x75, 0x00, + 0x01, 0x15, 0x5a, 0xc2, + 0xe5, 0xd3, 0x95, 0x1d, 0xe5, 0x11, 0x95, 0x1c, 0x40, 0x10, 0x85, 0x0e, + 0x1c, 0x10, 0x11, 0x85, + 0x75, 0x1d, 0x00, 0x14, 0x15, 0x75, 0xc2, 0x01, 0x90, 0x5a, 0x65, 0x7d, + 0x19, 0xe5, 0x90, 0xf0, + 0x66, 0x7d, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0xe5, 0x90, 0xf0, 0x74, 0x7d, + 0x1c, 0xe5, 0xa3, 0xf0, + 0x1d, 0xe5, 0x90, 0xf0, 0x30, 0x7d, 0xf5, 0xe0, 0xa3, 0x1c, 0xf5, 0xe0, + 0x05, 0x1d, 0xe5, 0x1d, + 0x70, 0x1d, 0x05, 0x02, 0x90, 0x1c, 0x30, 0x7d, 0x1c, 0xe5, 0xa3, 0xf0, + 0x1d, 0xe5, 0x90, 0xf0, + 0x44, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, 0xf5, 0xe0, 0x45, 0x1b, 0x70, 0x1a, + 0x02, 0x03, 0x33, 0x09, + 0x59, 0x20, 0x30, 0x03, 0x0d, 0x5a, 0x7d, 0x90, 0xe0, 0x48, 0x14, 0xf5, + 0xe0, 0xa3, 0x15, 0xf5, + 0x08, 0x02, 0xd3, 0xff, 0x7d, 0x90, 0xe0, 0x33, 0x1d, 0x95, 0x7d, 0x90, + 0xe0, 0x32, 0x1c, 0x95, + 0x03, 0x40, 0x09, 0x02, 0x90, 0x6f, 0x40, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, + 0xf5, 0xe0, 0x90, 0x11, + 0x42, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x7d, 0x90, + 0xe0, 0x3f, 0x13, 0x95, + 0x12, 0xe5, 0x80, 0x64, 0x90, 0xf8, 0x3e, 0x7d, 0x64, 0xe0, 0x98, 0x80, + 0x24, 0x40, 0x11, 0xe5, + 0x13, 0xb5, 0xe5, 0x1f, 0xb5, 0x10, 0x1a, 0x12, 0x1b, 0xe5, 0xf8, 0xc4, + 0x0f, 0x54, 0x68, 0xc8, + 0xe5, 0xff, 0xc4, 0x1a, 0xf0, 0x54, 0xfe, 0x48, 0x25, 0xef, 0xf5, 0x13, + 0xee, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xe5, 0xc3, 0x95, 0x13, 0xff, 0x11, 0x12, 0xe5, 0x10, 0x95, + 0xf8, 0xc4, 0xf0, 0x54, + 0x68, 0xc8, 0x1c, 0xf5, 0xc4, 0xef, 0x0f, 0x54, 0xf5, 0x48, 0x90, 0x1d, + 0x84, 0x7d, 0xf5, 0xe0, + 0xa3, 0x10, 0xf5, 0xe0, 0x90, 0x11, 0x86, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, + 0xf5, 0xe0, 0xc3, 0x13, + 0x11, 0x95, 0xe5, 0xff, 0x95, 0x12, 0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, + 0xf5, 0x68, 0xef, 0x14, + 0x54, 0xc4, 0x48, 0x0f, 0x15, 0xf5, 0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, + 0x40, 0x1c, 0x85, 0x06, + 0x1c, 0x14, 0x15, 0x85, 0x90, 0x1d, 0x92, 0x7d, 0xf5, 0xe0, 0xa3, 0x10, + 0xf5, 0xe0, 0x90, 0x11, + 0x94, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, 0xf5, 0xe0, 0xc3, 0x13, 0x11, 0x95, + 0xe5, 0xff, 0x95, 0x12, + 0xc4, 0x10, 0x54, 0xf8, 0xc8, 0xf0, 0xf5, 0x68, 0xef, 0x14, 0x54, 0xc4, + 0x48, 0x0f, 0x15, 0xf5, + 0x95, 0xd3, 0xe5, 0x1d, 0x95, 0x14, 0x40, 0x1c, 0x85, 0x06, 0x1c, 0x14, + 0x15, 0x85, 0x90, 0x1d, + 0x3a, 0x7d, 0x54, 0xe0, 0xf5, 0x0f, 0xa3, 0x14, 0xf5, 0xe0, 0x90, 0x15, + 0x48, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, 0x90, 0x17, 0x46, 0x7d, 0xf5, 0xe0, 0xa3, 0x12, + 0xf5, 0xe0, 0xc3, 0x13, + 0x1d, 0xe5, 0x1b, 0x95, 0x1c, 0xe5, 0x1a, 0x95, 0x03, 0x40, 0x08, 0x02, + 0xe5, 0x6c, 0x54, 0x12, + 0xf5, 0x0f, 0x75, 0x10, 0x00, 0x11, 0x14, 0xe5, 0x0f, 0x54, 0xe4, 0xfe, + 0x11, 0x95, 0x95, 0xee, + 0x40, 0x10, 0xe4, 0x0d, 0x15, 0x25, 0x15, 0xf5, 0xff, 0x74, 0x14, 0x35, + 0x14, 0xf5, 0x0e, 0x80, + 0x14, 0xe5, 0xf0, 0x54, 0x10, 0x45, 0x14, 0xf5, 0x11, 0xe5, 0x15, 0x45, + 0x15, 0xf5, 0x10, 0x75, + 0xe5, 0x00, 0x54, 0x13, 0xf5, 0xf0, 0xe5, 0x11, 0x54, 0x15, 0xd3, 0xf0, + 0x11, 0x95, 0x95, 0xe4, + 0x40, 0x10, 0x74, 0x0e, 0x25, 0xf0, 0xf5, 0x15, 0x74, 0x15, 0x35, 0xff, + 0xf5, 0x14, 0x80, 0x14, + 0xe5, 0x10, 0x54, 0x15, 0xff, 0x0f, 0x10, 0xe5, 0x14, 0x45, 0x14, 0xf5, + 0x11, 0xe5, 0xf5, 0x4f, + 0x75, 0x15, 0x00, 0x10, 0x13, 0xe5, 0x0f, 0x54, 0x11, 0xf5, 0x15, 0xe5, + 0x0f, 0x54, 0x95, 0xd3, + 0xe4, 0x11, 0x10, 0x95, 0x03, 0x50, 0x08, 0x02, 0xe5, 0xef, 0x15, 0x15, + 0x70, 0x15, 0x15, 0x02, + 0x02, 0x14, 0xff, 0x08, 0x16, 0xe5, 0x0f, 0x54, 0x10, 0xf5, 0x11, 0x75, + 0xe5, 0x00, 0x54, 0x14, + 0xfe, 0x0f, 0xe4, 0xc3, 0x11, 0x95, 0x95, 0xee, 0x50, 0x10, 0xe4, 0x0d, + 0x15, 0x25, 0x15, 0xf5, + 0x01, 0x74, 0x14, 0x35, 0x14, 0xf5, 0x0e, 0x80, 0x14, 0xe5, 0xf0, 0x54, + 0x10, 0x45, 0x14, 0xf5, + 0x11, 0xe5, 0x15, 0x45, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, 0x54, 0x17, + 0xf5, 0xf0, 0xe5, 0x11, + 0x54, 0x15, 0xc3, 0xf0, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, 0x74, 0x0d, + 0x25, 0x10, 0xf5, 0x15, + 0xe4, 0x15, 0x14, 0x35, 0x14, 0xf5, 0x10, 0x80, 0x15, 0xe5, 0x0f, 0x54, + 0xe5, 0xff, 0x45, 0x10, + 0xf5, 0x14, 0xe5, 0x14, 0x4f, 0x11, 0x15, 0xf5, 0x10, 0x75, 0xe5, 0x00, + 0x54, 0x17, 0xf5, 0x0f, + 0xe5, 0x11, 0x54, 0x15, 0xc3, 0x0f, 0x11, 0x95, 0x95, 0xe4, 0x50, 0x10, + 0x05, 0x0a, 0xe5, 0x15, + 0x70, 0x15, 0x05, 0x02, 0x80, 0x14, 0xe5, 0x10, 0x54, 0x15, 0xff, 0xf0, + 0x10, 0xe5, 0x14, 0x45, + 0x14, 0xf5, 0x11, 0xe5, 0xf5, 0x4f, 0x90, 0x15, 0x3a, 0x7d, 0xf5, 0xe0, + 0xa3, 0x16, 0xf5, 0xe0, + 0x54, 0x17, 0x70, 0xf0, 0x53, 0x03, 0x0f, 0x15, 0x16, 0xe5, 0x0f, 0x54, + 0x03, 0x70, 0x14, 0x53, + 0xe5, 0xf0, 0x54, 0x17, 0x70, 0x0f, 0x53, 0x03, 0xf0, 0x15, 0x16, 0xe5, + 0xf0, 0x54, 0x14, 0x45, + 0xe5, 0xff, 0x90, 0x15, 0x3a, 0x7d, 0xf0, 0xcf, 0xef, 0xa3, 0xe4, 0xf0, + 0x7d, 0x90, 0xf0, 0x30, + 0xf0, 0xa3, 0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, 0xe4, 0xa3, 0x90, 0xf0, + 0x40, 0x7d, 0x7f, 0x74, + 0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x86, 0xf0, 0xa3, + 0x7d, 0x90, 0x74, 0x84, + 0xf0, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0x94, 0x7d, 0xa3, 0xf0, + 0x90, 0xf0, 0x92, 0x7d, + 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x22, 0xf0, 0xe0, 0xc0, 0xf0, 0xc0, + 0x83, 0xc0, 0x82, 0xc0, + 0xd0, 0xc0, 0xd0, 0x75, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, + 0xc0, 0x03, 0xc0, 0x04, + 0xc0, 0x05, 0xc0, 0x06, 0x7f, 0x07, 0x7e, 0x07, 0x12, 0x71, 0x56, 0x00, + 0x7b, 0x90, 0xef, 0x9f, + 0xf4, 0xf0, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x05, 0x12, 0x71, 0xf5, 0x53, + 0x7b, 0x90, 0xe0, 0x9f, + 0x70, 0xff, 0x02, 0x03, 0x40, 0x0e, 0x20, 0xef, 0x03, 0xe4, 0x0c, 0x02, + 0x7f, 0x58, 0x7e, 0x23, + 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x27, 0x90, 0xf0, 0xd4, 0x7f, + 0x75, 0xe4, 0x01, 0xf0, + 0x26, 0x12, 0xc3, 0x4f, 0x7f, 0x90, 0xe0, 0xd5, 0x39, 0x94, 0x7f, 0x90, + 0xe0, 0xd4, 0x01, 0x94, + 0x0d, 0x40, 0xf0, 0xe4, 0xf0, 0xa3, 0x7f, 0x90, 0x75, 0xd2, 0x01, 0xf0, + 0x26, 0x12, 0x7f, 0x4f, + 0x7e, 0x74, 0x12, 0x71, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xb5, 0xa3, 0xf0, + 0xf0, 0xef, 0xee, 0xc3, + 0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, + 0x80, 0xfe, 0x90, 0x08, + 0xb5, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xb5, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, + 0x7e, 0x75, 0x12, 0x71, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xb7, 0xa3, 0xf0, + 0xf0, 0xef, 0xee, 0xc3, + 0x80, 0x64, 0x80, 0x94, 0x09, 0x50, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, + 0x80, 0xfe, 0x90, 0x08, + 0xb7, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xb7, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, + 0xb7, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, 0x26, 0x12, + 0xaa, 0x3d, 0xab, 0x06, + 0x90, 0x07, 0xb5, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xff, 0xfd, 0x04, 0xae, + 0x26, 0x12, 0xef, 0x3d, + 0xff, 0x2b, 0x3a, 0xee, 0x7b, 0x90, 0xf0, 0xb9, 0xef, 0xa3, 0x90, 0xf0, + 0xa0, 0x7b, 0x27, 0x12, + 0x90, 0x54, 0xa4, 0x7b, 0x27, 0x12, 0x7f, 0x8c, 0x7e, 0x12, 0x12, 0x62, + 0x56, 0x00, 0xfc, 0xe4, + 0x90, 0xfd, 0xa0, 0x7b, 0x27, 0x12, 0x90, 0x8c, 0xa4, 0x7b, 0x27, 0x12, + 0xab, 0x54, 0xaa, 0x07, + 0xa9, 0x06, 0xa8, 0x05, 0x90, 0x04, 0xa0, 0x7b, 0x27, 0x12, 0x12, 0x54, + 0x88, 0x26, 0x7b, 0x90, + 0x12, 0xb1, 0x8c, 0x27, 0x00, 0x7f, 0x80, 0x7e, 0xff, 0x7d, 0xff, 0x7c, + 0x7b, 0x90, 0x12, 0xb1, + 0x70, 0x27, 0x12, 0xc3, 0xf3, 0x26, 0x14, 0x50, 0x7b, 0x90, 0x12, 0xb1, + 0x54, 0x27, 0x2f, 0xe4, + 0xe4, 0xff, 0xfe, 0x3e, 0x34, 0xed, 0xfd, 0x01, 0x3c, 0xe4, 0x29, 0x80, + 0x7f, 0xe4, 0x7e, 0xff, + 0xfd, 0x7f, 0x90, 0xfc, 0xb1, 0x7b, 0x27, 0x12, 0xd3, 0x70, 0x26, 0x12, + 0x40, 0xf3, 0x90, 0x1d, + 0xb1, 0x7b, 0x27, 0x12, 0xc3, 0x54, 0x94, 0xef, 0xff, 0x00, 0x94, 0xee, + 0xfe, 0x00, 0x94, 0xed, + 0xfd, 0x01, 0x94, 0xec, 0xfc, 0x00, 0x7b, 0x90, 0x12, 0xb1, 0x8c, 0x27, + 0x7f, 0xe4, 0xfe, 0x0f, + 0xfc, 0xfd, 0x7b, 0x90, 0x12, 0xa8, 0x70, 0x27, 0x26, 0x12, 0xe4, 0x96, + 0x10, 0x7b, 0xf9, 0xfa, + 0x12, 0xf8, 0x3b, 0x50, 0x7b, 0x90, 0x12, 0xb1, 0x70, 0x27, 0x26, 0x12, + 0x90, 0x7b, 0xa8, 0x7b, + 0x27, 0x12, 0x90, 0x8c, 0xae, 0x7b, 0xf9, 0xe0, 0x03, 0x54, 0x68, 0x70, + 0x7b, 0x90, 0x12, 0xa8, + 0x54, 0x27, 0x07, 0x78, 0x27, 0x12, 0x90, 0x2d, 0xaf, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0xc3, 0xf0, + 0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0x90, 0x15, 0xaf, 0x7b, 0xfe, 0xe0, + 0xe0, 0xa3, 0xc3, 0xff, + 0x9f, 0xe4, 0xe4, 0xff, 0x90, 0x9e, 0xaf, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, + 0x7b, 0x90, 0xe0, 0xaf, + 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xc3, 0xad, 0x7b, 0x9f, 0xe0, 0x7b, 0x90, + 0xe0, 0xac, 0x50, 0x9e, + 0xee, 0x05, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0xe9, 0x80, 0x94, 0x18, 0x40, + 0x7b, 0x90, 0xe0, 0xac, + 0xa3, 0xff, 0x90, 0xe0, 0xbb, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, + 0xac, 0x7b, 0xf0, 0xe4, + 0xf0, 0xa3, 0xf0, 0xa3, 0x7b, 0x90, 0xe0, 0xae, 0xf0, 0x04, 0x7c, 0x90, + 0xe0, 0x27, 0x17, 0x64, + 0x4c, 0x70, 0x6c, 0x7d, 0x71, 0x7c, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x16, 0x7f, 0x71, + 0x7e, 0x04, 0x12, 0x00, 0xf5, 0x53, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, + 0x00, 0x7e, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x57, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, + 0x90, 0xc3, 0xba, 0x7b, + 0x94, 0xe0, 0x90, 0x78, 0xb9, 0x7b, 0x94, 0xe0, 0x40, 0x00, 0x7d, 0x75, + 0x7c, 0x3d, 0x7f, 0x71, + 0x7e, 0x50, 0x12, 0x00, 0xf5, 0x53, 0x70, 0x7d, 0x71, 0x7c, 0x08, 0x7f, + 0x5d, 0x80, 0x7c, 0x90, + 0xe0, 0x27, 0x74, 0xff, 0xc3, 0x17, 0x50, 0x9f, 0xef, 0x57, 0x57, 0x94, + 0x52, 0x50, 0x7b, 0x90, + 0xe0, 0xbc, 0x64, 0x94, 0x7b, 0x90, 0xe0, 0xbb, 0x00, 0x94, 0x0f, 0x40, + 0x90, 0xd3, 0xba, 0x7b, + 0x94, 0xe0, 0x90, 0x78, 0xb9, 0x7b, 0x94, 0xe0, 0x50, 0x00, 0x7d, 0x35, + 0x7c, 0x16, 0x7f, 0x71, + 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, 0x18, 0x7d, 0x71, 0x7c, 0x03, 0x7f, + 0x00, 0x7e, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x70, 0xe4, 0x71, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x57, 0xe4, 0x71, + 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x6c, 0x7f, 0x71, 0x7e, 0x5a, + 0x12, 0x00, 0xf5, 0x53, + 0x7b, 0x90, 0xe0, 0x9f, 0xe0, 0x20, 0x02, 0x03, 0xc6, 0x0d, 0x7f, 0x90, + 0xe4, 0xd2, 0xf0, 0x75, + 0x12, 0x01, 0x4f, 0x26, 0x7f, 0x90, 0xe4, 0xd4, 0xa3, 0xf0, 0x7f, 0xf0, + 0x7e, 0x29, 0x12, 0x71, + 0x56, 0x00, 0x7c, 0x90, 0xee, 0x28, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xc3, + 0xee, 0xff, 0x3f, 0x94, + 0x73, 0x40, 0x7c, 0x90, 0xe0, 0x2a, 0x0a, 0x94, 0x63, 0x40, 0x1b, 0x7d, + 0x71, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, + 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x02, 0x12, 0x00, 0xf5, 0x53, 0x1d, 0x7d, + 0x71, 0x7c, 0x0c, 0x7f, + 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x08, + 0x12, 0x00, 0xf5, 0x53, + 0x1d, 0x7d, 0x71, 0x7c, 0x30, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x1d, 0x7f, 0x71, + 0x7e, 0x20, 0x12, 0x00, 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0xf5, 0x53, + 0x1b, 0x7d, 0x71, 0x7c, 0xff, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x80, 0xf5, + 0x90, 0x08, 0x2a, 0x7c, + 0x04, 0xe0, 0x80, 0xf0, 0x90, 0x05, 0x2a, 0x7c, 0xf0, 0xe4, 0x7f, 0x90, + 0xe0, 0xaf, 0xe1, 0x20, + 0x7f, 0x3c, 0x7e, 0x45, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xee, 0x1d, + 0xa3, 0xf0, 0xf0, 0xef, + 0x46, 0x7f, 0x71, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x1f, 0x7c, 0xf0, 0xee, + 0xef, 0xa3, 0x7f, 0xf0, + 0x7e, 0x47, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xee, 0x21, 0xa3, 0xf0, + 0xf0, 0xef, 0x48, 0x7f, + 0x71, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x23, 0x7c, 0xf0, 0xee, 0xef, 0xa3, + 0x7f, 0xf0, 0x12, 0x04, + 0x8a, 0x25, 0x7c, 0x90, 0xe0, 0x27, 0x94, 0xc3, 0x7d, 0x57, 0x7c, 0x22, + 0x40, 0x71, 0x7f, 0x48, + 0x7e, 0xd0, 0x12, 0x00, 0xf5, 0x53, 0x00, 0x7d, 0x92, 0x7c, 0x01, 0x7f, + 0x00, 0x7e, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x1f, 0x12, 0x00, 0xf5, 0x53, + 0x6d, 0x7d, 0x71, 0x7c, + 0xff, 0x7f, 0x7f, 0x7e, 0x53, 0x12, 0x90, 0xf5, 0x2b, 0x7c, 0xff, 0xe0, + 0xe0, 0xa3, 0x7c, 0x90, + 0xcf, 0x2d, 0xa3, 0xf0, 0xf0, 0xef, 0x6f, 0x7f, 0x71, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0x2b, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, 0x80, 0xf0, 0x7f, 0x27, 0x7e, 0xd2, 0x12, 0x00, + 0xf5, 0x53, 0x2c, 0x7d, + 0x94, 0x7c, 0x0f, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x00, + 0xe4, 0x92, 0xfe, 0xff, + 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x6d, 0x7f, 0x71, 0x7e, 0xad, 0x12, 0x01, + 0xf5, 0x53, 0x7b, 0x90, + 0xe0, 0x9f, 0xe2, 0x30, 0x7f, 0x73, 0x7e, 0x23, 0x12, 0x71, 0x56, 0x00, + 0x7c, 0x90, 0xef, 0x27, + 0x7f, 0xf0, 0x7e, 0x29, 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xee, 0x28, + 0xa3, 0xf0, 0xf0, 0xef, + 0x22, 0x7d, 0x71, 0x7c, 0xd2, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x00, 0xe4, 0x92, + 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2c, 0x7f, 0x94, 0x7e, 0x0f, + 0x12, 0x00, 0xf5, 0x53, + 0x6d, 0x7d, 0x71, 0x7c, 0xad, 0x7f, 0x01, 0x7e, 0x53, 0x12, 0x90, 0xf5, + 0xd2, 0x7f, 0xf0, 0xe4, + 0xf0, 0xa3, 0x7f, 0x90, 0xf0, 0xd4, 0xf0, 0xa3, 0x57, 0x7d, 0x71, 0x7c, + 0x01, 0x7f, 0x12, 0xfe, + 0xf5, 0x53, 0x16, 0x7d, 0x71, 0x7c, 0x04, 0x7f, 0x00, 0x7e, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x18, + 0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xf5, 0x53, 0x07, 0xd0, 0x06, 0xd0, + 0x05, 0xd0, 0x04, 0xd0, + 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, + 0x83, 0xd0, 0xf0, 0xd0, + 0xe0, 0xd0, 0xe4, 0x32, 0x23, 0xf5, 0x7d, 0x90, 0xe0, 0x68, 0x12, 0xf5, + 0xe0, 0xa3, 0x13, 0xf5, + 0x90, 0xc3, 0x43, 0x7d, 0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, + 0x7d, 0x90, 0xe0, 0x42, + 0x80, 0x64, 0x50, 0x98, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, + 0x90, 0xd3, 0x41, 0x7d, + 0x95, 0xe0, 0xe5, 0x13, 0x64, 0x12, 0xf8, 0x80, 0x7d, 0x90, 0xe0, 0x40, + 0x80, 0x64, 0x40, 0x98, + 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x7d, 0x90, 0xe0, 0x6a, + 0x1a, 0xf5, 0xe0, 0xa3, + 0x1b, 0xf5, 0x95, 0xc3, 0xf5, 0x13, 0xe5, 0x11, 0x95, 0x1a, 0xf5, 0x12, + 0xc3, 0x10, 0x80, 0x64, + 0x80, 0x94, 0x14, 0x50, 0xff, 0x74, 0x12, 0xf5, 0x13, 0xf5, 0xe5, 0xc3, + 0x64, 0x10, 0x94, 0x80, + 0x50, 0x60, 0x75, 0x1d, 0xe0, 0x10, 0x15, 0x80, 0xf5, 0xe4, 0xf5, 0x12, + 0xd3, 0x13, 0x11, 0xe5, + 0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0xa0, 0x94, 0x06, 0x40, 0x10, 0x75, + 0x75, 0x20, 0x00, 0x11, + 0x02, 0x20, 0x02, 0x03, 0x42, 0x10, 0x58, 0x30, 0x02, 0x03, 0x42, 0x10, + 0x7d, 0x90, 0xe0, 0x3a, + 0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x70, 0x12, 0xf5, + 0xe0, 0xa3, 0x13, 0xf5, + 0x0f, 0x02, 0x74, 0xed, 0x25, 0x08, 0xf5, 0x19, 0xe5, 0x19, 0xd3, 0x19, + 0x00, 0x94, 0x25, 0x40, + 0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, 0x92, 0x10, + 0xe5, 0x18, 0x25, 0x13, + 0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, 0xf5, 0x23, + 0xec, 0x13, 0xf5, 0x3e, + 0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, 0x18, 0x8f, + 0x7d, 0x90, 0xe0, 0x3d, + 0xe4, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, 0x13, 0xe5, + 0xf5, 0x13, 0x92, 0x13, + 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, + 0x30, 0xe0, 0x26, 0xe5, + 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, + 0x1e, 0x92, 0x12, 0xe5, + 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, 0x1f, 0x92, + 0x18, 0xe5, 0x13, 0x13, + 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x73, 0x7d, + 0x25, 0xe0, 0xf5, 0x18, + 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, 0xe4, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xd2, 0xa2, + 0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x71, 0x7d, 0x25, 0xe0, 0xf5, 0x13, + 0x90, 0x13, 0x70, 0x7d, + 0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x30, 0x18, 0x09, 0x18, + 0x12, 0x75, 0x75, 0x7f, + 0xff, 0x13, 0x18, 0x75, 0xc3, 0xff, 0x12, 0xe5, 0x80, 0x64, 0x80, 0x94, + 0x07, 0x50, 0xf5, 0xe4, + 0xf5, 0x12, 0xf5, 0x13, 0x90, 0x18, 0x73, 0x7d, 0x18, 0xe5, 0x90, 0xf0, + 0x70, 0x7d, 0x12, 0xe5, + 0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x74, 0x7d, 0xf5, 0xe0, 0xa3, 0x1a, + 0xf5, 0xe0, 0xc3, 0x1b, + 0x13, 0xe5, 0x1b, 0x95, 0x11, 0xf5, 0x12, 0xe5, 0x1a, 0x95, 0x10, 0xf5, + 0x12, 0x85, 0x85, 0x14, + 0x15, 0x13, 0x64, 0xc3, 0x94, 0x80, 0x50, 0x80, 0x74, 0x14, 0xf5, 0xff, + 0xf5, 0x12, 0xc3, 0x13, + 0x10, 0xe5, 0x80, 0x64, 0x60, 0x94, 0x1d, 0x50, 0x10, 0x75, 0x80, 0xe0, + 0xe4, 0x15, 0x12, 0xf5, + 0x13, 0xf5, 0xe5, 0xd3, 0x94, 0x11, 0xe5, 0x00, 0x64, 0x10, 0x94, 0x80, + 0x40, 0xa0, 0x75, 0x06, + 0x20, 0x10, 0x11, 0x75, 0xe4, 0x00, 0x23, 0xf5, 0x1c, 0x80, 0x02, 0x20, + 0x90, 0x05, 0x78, 0x7d, + 0x03, 0x80, 0x7d, 0x90, 0xe0, 0x74, 0x14, 0xf5, 0xe0, 0xa3, 0x15, 0xf5, + 0x7d, 0x90, 0xe5, 0x70, + 0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, 0x90, 0xc3, 0x87, 0x7d, 0x95, 0xe0, + 0x90, 0x15, 0x86, 0x7d, + 0x95, 0xe0, 0x50, 0x14, 0xe5, 0x07, 0xf0, 0x14, 0xe5, 0xa3, 0xf0, 0x15, + 0x90, 0xd3, 0x85, 0x7d, + 0x95, 0xe0, 0x90, 0x15, 0x84, 0x7d, 0x95, 0xe0, 0x40, 0x14, 0xe5, 0x07, + 0xf0, 0x14, 0xe5, 0xa3, + 0xf0, 0x15, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, + 0xf5, 0x15, 0x74, 0x15, + 0x35, 0x08, 0xf5, 0x14, 0xa2, 0x14, 0x92, 0xd2, 0x30, 0x18, 0xfd, 0x40, + 0x7d, 0x90, 0x30, 0xa0, + 0x09, 0x18, 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x80, 0xf0, 0xe5, 0x07, + 0xf0, 0x14, 0xe5, 0xa3, + 0xf0, 0x15, 0x7d, 0x90, 0xe0, 0x3a, 0x30, 0xa3, 0x17, 0xe5, 0x7d, 0x90, + 0xe0, 0xa0, 0xa3, 0xfe, + 0xff, 0xe0, 0x74, 0xc3, 0x9f, 0xff, 0x7d, 0x90, 0xf0, 0xa1, 0x87, 0x74, + 0x90, 0x9e, 0xa0, 0x7d, + 0x7e, 0xf0, 0x7f, 0x7d, 0x7d, 0xa0, 0x7c, 0x28, 0x12, 0x67, 0xc4, 0x55, + 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x7d, 0x90, 0xe0, 0x3b, 0xe4, 0xff, 0xf8, 0xc4, 0xf0, 0x54, + 0xef, 0xc8, 0x54, 0xc4, + 0x48, 0x0f, 0x0f, 0x54, 0x19, 0xf5, 0x0d, 0x70, 0x7d, 0x90, 0xe0, 0x7a, + 0x12, 0xf5, 0xe0, 0xa3, + 0x13, 0xf5, 0x12, 0x02, 0x74, 0x0c, 0x25, 0x07, 0xf5, 0x19, 0xe5, 0x19, + 0xd3, 0x19, 0x00, 0x94, + 0x25, 0x40, 0x11, 0xe5, 0xe0, 0x25, 0x11, 0xf5, 0x10, 0xe5, 0xf5, 0x33, + 0x92, 0x10, 0xe5, 0x18, + 0x25, 0x13, 0xff, 0xe0, 0x12, 0xe5, 0xfe, 0x33, 0x00, 0x7c, 0x25, 0xef, + 0xf5, 0x23, 0xec, 0x13, + 0xf5, 0x3e, 0x15, 0x12, 0x80, 0x19, 0xc2, 0xd4, 0xe5, 0x18, 0xff, 0x10, + 0x18, 0x8f, 0x7d, 0x90, + 0xe0, 0x3d, 0xe2, 0x30, 0xe5, 0x16, 0xa2, 0x12, 0x13, 0xe7, 0x12, 0xf5, + 0x13, 0xe5, 0xf5, 0x13, + 0x92, 0x13, 0xe5, 0x1f, 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, + 0x3d, 0x7d, 0x30, 0xe0, + 0x26, 0xe3, 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, + 0x13, 0xf5, 0x1e, 0x92, + 0x12, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x12, 0x13, 0x13, 0x13, 0xf5, + 0x1f, 0x92, 0x18, 0xe5, + 0x13, 0x13, 0x3f, 0x54, 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0xc2, 0x23, + 0x90, 0x19, 0x7d, 0x7d, + 0x25, 0xe0, 0xf5, 0x18, 0x92, 0x18, 0xe5, 0x18, 0x25, 0x23, 0xf5, 0x13, + 0xe4, 0x13, 0x12, 0x35, + 0x12, 0xf5, 0xd2, 0xa2, 0x18, 0x92, 0x18, 0x20, 0x90, 0x14, 0x7b, 0x7d, + 0x25, 0xe0, 0xf5, 0x13, + 0x90, 0x13, 0x7a, 0x7d, 0x35, 0xe0, 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, + 0x20, 0x18, 0x17, 0x18, + 0x7d, 0x90, 0xe0, 0x2c, 0xa3, 0xfe, 0xff, 0xe0, 0xe5, 0xd3, 0x9f, 0x13, + 0x64, 0xee, 0xf8, 0x80, + 0x12, 0xe5, 0x80, 0x64, 0x40, 0x98, 0x90, 0x0d, 0x2c, 0x7d, 0xf5, 0xe0, + 0xa3, 0x12, 0xf5, 0xe0, + 0x75, 0x13, 0xff, 0x18, 0xe5, 0xc3, 0x64, 0x12, 0x94, 0x80, 0x50, 0x80, + 0xe4, 0x07, 0x12, 0xf5, + 0x13, 0xf5, 0x18, 0xf5, 0x7d, 0x90, 0xe5, 0x7d, 0xf0, 0x18, 0x7d, 0x90, + 0xe5, 0x7a, 0xf0, 0x12, + 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xc3, 0x95, 0x7d, 0x95, 0xe0, 0x90, 0x13, + 0x94, 0x7d, 0x95, 0xe0, + 0x50, 0x12, 0xe5, 0x07, 0xf0, 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0x90, 0xd3, + 0x93, 0x7d, 0x95, 0xe0, + 0x90, 0x13, 0x92, 0x7d, 0x95, 0xe0, 0x40, 0x12, 0xe5, 0x07, 0xf0, 0x12, + 0xe5, 0xa3, 0xf0, 0x13, + 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x25, 0xe4, 0xf5, 0x13, + 0x74, 0x13, 0x35, 0x08, + 0xf5, 0x12, 0xa2, 0x12, 0x92, 0xd2, 0x20, 0x18, 0x14, 0x18, 0x7d, 0x90, + 0xe0, 0x7e, 0xa3, 0xfe, + 0x25, 0xe0, 0xf5, 0x13, 0xee, 0x13, 0x12, 0x35, 0x12, 0xf5, 0xd2, 0xa2, + 0x18, 0x92, 0x40, 0x30, + 0x90, 0xfd, 0xa0, 0x7d, 0x18, 0x30, 0x74, 0x09, 0xf0, 0x7f, 0x74, 0xa3, + 0xf0, 0xff, 0x07, 0x80, + 0x12, 0xe5, 0xa3, 0xf0, 0x13, 0xe5, 0x90, 0xf0, 0x3a, 0x7d, 0xa3, 0xe0, + 0xe6, 0x30, 0x90, 0x17, + 0xa0, 0x7d, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0xff, 0x74, 0x90, 0x9f, + 0xa1, 0x7d, 0x74, 0xf0, + 0x9e, 0x87, 0x7d, 0x90, 0xf0, 0xa0, 0x7d, 0x7e, 0xa0, 0x7f, 0x29, 0x7d, + 0x67, 0x7c, 0x55, 0x12, + 0xa2, 0xc4, 0x92, 0xd1, 0xd0, 0xaf, 0xc2, 0xd0, 0x22, 0x18, 0x30, 0x30, + 0x90, 0x10, 0x80, 0x7a, + 0x01, 0x74, 0x7d, 0xf0, 0x7c, 0x2e, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, + 0x20, 0xf5, 0x24, 0x11, + 0x7b, 0x90, 0xe4, 0x49, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x90, 0xc3, + 0x4a, 0x7b, 0x94, 0xe0, + 0x90, 0x9a, 0x49, 0x7b, 0x94, 0xe0, 0x40, 0x02, 0xe4, 0x12, 0xa3, 0xf0, + 0x90, 0xf0, 0x80, 0x7a, + 0xf0, 0x04, 0x07, 0x80, 0x90, 0xe4, 0x49, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, + 0x95, 0x7f, 0x54, 0xe0, + 0xc3, 0x0f, 0x02, 0x94, 0x06, 0x50, 0x7a, 0x90, 0x74, 0x80, 0xf0, 0x01, + 0x7a, 0x90, 0xe0, 0x80, + 0x3b, 0x60, 0xf0, 0xe4, 0x7b, 0x90, 0x04, 0x2c, 0xe4, 0xf0, 0x7b, 0x90, + 0xf0, 0x3a, 0x7b, 0x90, + 0xf0, 0x3b, 0x11, 0xc2, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, 0x02, 0x03, + 0xf1, 0x16, 0x7b, 0x90, + 0xe0, 0x2c, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x52, 0xf5, 0x53, + 0x7b, 0x90, 0xe0, 0x2c, + 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x54, 0xf5, 0x53, 0x55, 0x02, + 0x90, 0x2b, 0x66, 0x7f, + 0xa3, 0xe0, 0xe1, 0x30, 0x12, 0x05, 0x9a, 0x3a, 0x03, 0x80, 0x55, 0x12, + 0x12, 0x2b, 0xe2, 0x43, + 0x7b, 0x90, 0xe0, 0x3c, 0xf0, 0x04, 0xc3, 0xe0, 0x04, 0x94, 0x03, 0x50, + 0x16, 0x02, 0xe4, 0xf1, + 0x90, 0xf0, 0x44, 0x7b, 0xff, 0xe0, 0x94, 0xc3, 0x40, 0x86, 0x90, 0x08, + 0x3a, 0x7b, 0x04, 0xe0, + 0x80, 0xf0, 0xe4, 0x05, 0x7b, 0x90, 0xf0, 0x3a, 0xd3, 0xef, 0x6c, 0x94, + 0x08, 0x50, 0x7b, 0x90, + 0xe0, 0x3b, 0xf0, 0x04, 0x05, 0x80, 0x90, 0xe4, 0x3b, 0x7b, 0x90, 0xf0, + 0x3a, 0x7b, 0xc3, 0xe0, + 0x03, 0x94, 0x05, 0x40, 0x03, 0x74, 0xd2, 0xf0, 0x90, 0x11, 0x3b, 0x7b, + 0xc3, 0xe0, 0x06, 0x94, + 0x05, 0x40, 0x06, 0x74, 0xc2, 0xf0, 0x90, 0x11, 0x2c, 0x7b, 0x90, 0xe0, + 0xe9, 0x7b, 0x90, 0xf0, + 0x44, 0x7b, 0xc3, 0xe0, 0xac, 0x94, 0x17, 0x40, 0x7b, 0x90, 0x74, 0x2c, + 0xf0, 0x16, 0x7b, 0x90, + 0x74, 0x2d, 0xf0, 0x02, 0x7b, 0x90, 0x74, 0x2e, 0xf0, 0x07, 0x90, 0xe4, + 0xc6, 0x7a, 0x90, 0xf0, + 0x44, 0x7b, 0xff, 0xe0, 0x94, 0xc3, 0x50, 0xac, 0x90, 0x17, 0x2c, 0x7b, + 0x16, 0x74, 0x90, 0xf0, + 0x2d, 0x7b, 0x02, 0x74, 0x90, 0xf0, 0x2e, 0x7b, 0x09, 0x74, 0xe4, 0xf0, + 0x7a, 0x90, 0xf0, 0xc6, + 0xc3, 0xef, 0x89, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x0e, + 0x90, 0xe4, 0xc6, 0x7a, + 0x90, 0xf0, 0x2d, 0x7b, 0x02, 0x74, 0x90, 0xf0, 0x2e, 0x7b, 0x09, 0x74, + 0xe4, 0xf0, 0x7b, 0x90, + 0xf0, 0x31, 0x7a, 0x90, 0xe0, 0xa8, 0x90, 0xff, 0x97, 0x31, 0xfe, 0x93, + 0x7b, 0x90, 0xf0, 0xeb, + 0x7b, 0x90, 0xe0, 0x2e, 0x9e, 0xd3, 0x08, 0x40, 0x7b, 0x90, 0xe0, 0xeb, + 0x7b, 0x90, 0xf0, 0x2e, + 0x11, 0x30, 0x02, 0x03, 0x90, 0x15, 0x7b, 0x90, 0xe0, 0x44, 0x94, 0xc3, + 0x50, 0x7b, 0x90, 0x36, + 0x2c, 0x7b, 0x06, 0x74, 0x90, 0xf0, 0x31, 0x7b, 0xf0, 0x04, 0x7b, 0x90, + 0x74, 0x2d, 0xf0, 0x02, + 0x7b, 0x90, 0x74, 0x2e, 0xf0, 0x08, 0x7a, 0x90, 0x74, 0xc6, 0xf0, 0x02, + 0x94, 0xef, 0x50, 0x06, + 0x90, 0x06, 0x2d, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0xd3, 0xe0, + 0x04, 0x94, 0x05, 0x50, + 0x90, 0xe4, 0x2d, 0x7b, 0x90, 0xf0, 0xa8, 0x7a, 0xd3, 0xe0, 0x05, 0x94, + 0x03, 0x50, 0x15, 0x02, + 0x90, 0x90, 0x44, 0x7b, 0xff, 0xe0, 0x7b, 0x94, 0x3f, 0x50, 0x14, 0x30, + 0x90, 0x3c, 0xcb, 0x7a, + 0x70, 0xe0, 0x90, 0x36, 0x2c, 0x7b, 0x0e, 0x74, 0x90, 0xf0, 0x31, 0x7b, + 0x04, 0x74, 0x90, 0xf0, + 0x2d, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0x2e, 0x7b, 0x08, 0x74, 0x90, 0xf0, + 0xc6, 0x7a, 0x02, 0x74, + 0xef, 0xf0, 0x94, 0xc3, 0x40, 0x6c, 0x74, 0x03, 0xf0, 0x01, 0x7b, 0x90, + 0xe0, 0x44, 0x94, 0xc3, + 0x40, 0x72, 0x90, 0x06, 0x31, 0x7b, 0x03, 0x74, 0x90, 0xf0, 0x44, 0x7b, + 0xff, 0xe0, 0x94, 0xc3, + 0x50, 0x69, 0x30, 0x27, 0x24, 0x14, 0x7a, 0x90, 0xe0, 0xcb, 0x1e, 0x70, + 0x7b, 0x90, 0x74, 0x2c, + 0xf0, 0x0e, 0x7b, 0x90, 0x74, 0x31, 0xf0, 0x05, 0x7b, 0x90, 0x74, 0x2d, + 0xf0, 0x01, 0x7b, 0x90, + 0x74, 0x2e, 0xf0, 0x08, 0x7a, 0x90, 0x74, 0xc6, 0xf0, 0x02, 0xc3, 0xef, + 0x5f, 0x94, 0x1d, 0x50, + 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, 0x90, 0xf0, + 0x2d, 0x7b, 0x01, 0x74, + 0x90, 0xf0, 0x2e, 0x7b, 0x07, 0x74, 0x90, 0xf0, 0xc6, 0x7a, 0x02, 0x74, + 0x90, 0xf0, 0x44, 0x7b, + 0xc3, 0xe0, 0x4c, 0x94, 0x1c, 0x50, 0x7b, 0x90, 0x74, 0x2c, 0xf0, 0x06, + 0x7b, 0x90, 0x04, 0x31, + 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x2d, 0x7b, 0x90, 0x74, 0x2e, 0xf0, 0x06, + 0x7a, 0x90, 0x74, 0xc6, + 0xf0, 0x02, 0x7b, 0x90, 0xe0, 0x44, 0xc3, 0xff, 0x32, 0x94, 0x1c, 0x50, + 0x7b, 0x90, 0x74, 0x2c, + 0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x2d, + 0x7b, 0x90, 0x74, 0x2e, + 0xf0, 0x04, 0x7a, 0x90, 0x74, 0xc6, 0xf0, 0x02, 0xc3, 0xef, 0x17, 0x94, + 0x1a, 0x50, 0x7b, 0x90, + 0x74, 0x2c, 0xf0, 0x06, 0x7b, 0x90, 0x04, 0x31, 0x90, 0xf0, 0x2d, 0x7b, + 0x01, 0x74, 0x90, 0xf0, + 0x2e, 0x7b, 0xf0, 0x04, 0x7a, 0x90, 0xf0, 0xc6, 0x7b, 0x90, 0x74, 0xec, + 0xf0, 0x08, 0x7a, 0x90, + 0xe0, 0xa8, 0x94, 0xd3, 0x40, 0x05, 0x90, 0x06, 0xec, 0x7b, 0x09, 0x74, + 0x90, 0xf0, 0x2e, 0x7b, + 0xff, 0xe0, 0x94, 0xc3, 0x50, 0x08, 0x90, 0x05, 0xec, 0x7b, 0xf0, 0xef, + 0x7a, 0x90, 0x74, 0xc9, + 0xf0, 0x01, 0x14, 0x20, 0x90, 0x09, 0x2c, 0x7b, 0xd3, 0xe0, 0x07, 0x94, + 0x05, 0x40, 0x90, 0xe4, + 0xc9, 0x7a, 0x90, 0xf0, 0x2c, 0x7b, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0x31, + 0x12, 0xfd, 0x1d, 0x4f, + 0x7b, 0x90, 0xee, 0x2f, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, 0x74, 0xea, + 0xf0, 0x1f, 0x7b, 0x90, + 0xe0, 0x2c, 0xc3, 0xff, 0x16, 0x94, 0x0c, 0x40, 0x7a, 0x90, 0xe0, 0xa8, + 0x31, 0x90, 0x93, 0x8f, + 0x7b, 0x90, 0xf0, 0xea, 0x64, 0xef, 0xff, 0x01, 0x7b, 0x90, 0xf0, 0x2c, + 0x7f, 0x90, 0xe0, 0x69, + 0x54, 0x5f, 0xfe, 0x07, 0x54, 0xef, 0x4e, 0x18, 0x7b, 0x90, 0xf0, 0x2c, + 0x7f, 0x90, 0xe0, 0x69, + 0x18, 0x54, 0x90, 0xff, 0x2c, 0x7b, 0xfe, 0xe0, 0x18, 0x54, 0x9f, 0xd3, + 0x0f, 0x40, 0x54, 0xee, + 0xff, 0x07, 0x7f, 0x90, 0xe0, 0x69, 0x18, 0x54, 0x90, 0x4f, 0x2c, 0x7b, + 0x90, 0xf0, 0x2c, 0x7b, + 0x64, 0xe0, 0xf0, 0x01, 0x7f, 0x90, 0xe0, 0x67, 0xe2, 0x20, 0x02, 0x03, + 0xf1, 0x16, 0x7a, 0x90, + 0xe0, 0xc6, 0x0b, 0x60, 0x15, 0x7d, 0x56, 0x7c, 0x01, 0x7f, 0x00, 0x7e, + 0x53, 0x12, 0x12, 0xf5, + 0x22, 0x43, 0x7b, 0x90, 0xe0, 0x2c, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, + 0x12, 0x52, 0xf5, 0x53, + 0x7b, 0x90, 0xe0, 0xec, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x12, 0x12, 0x52, + 0xf5, 0x53, 0x7b, 0x90, + 0xe0, 0x2d, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x11, 0x12, 0x52, 0xf5, 0x53, + 0x7b, 0x90, 0xe0, 0x2c, + 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x54, 0xf5, 0x53, 0x7b, 0x90, + 0xe0, 0x2f, 0xa3, 0xfe, + 0xff, 0xe0, 0x13, 0x7d, 0x54, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x31, 0x7b, + 0xff, 0xe0, 0x00, 0x7e, + 0x14, 0x7d, 0x54, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x2e, 0x7b, 0xff, 0xe0, + 0x00, 0x7e, 0x12, 0x7d, + 0x54, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x2d, 0x7b, 0xff, 0xe0, 0x00, 0x7e, + 0x11, 0x7d, 0x54, 0x7c, + 0x53, 0x12, 0x90, 0xf5, 0xc6, 0x7a, 0x70, 0xe0, 0xfe, 0x04, 0x80, 0xff, + 0x7e, 0x04, 0x7f, 0x00, + 0x7d, 0x01, 0x7c, 0x15, 0x12, 0x54, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xea, + 0x7e, 0xff, 0x7d, 0x00, + 0x7c, 0x1e, 0x12, 0x54, 0xf5, 0x53, 0x53, 0x12, 0x22, 0x19, 0x2e, 0x7f, + 0x55, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0xb8, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x2f, + 0x12, 0x55, 0x56, 0x00, + 0x7a, 0x90, 0xee, 0xba, 0xa3, 0xf0, 0xf0, 0xef, 0x31, 0x7f, 0x55, 0x7e, + 0x00, 0x12, 0x90, 0x56, + 0xaa, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x32, 0x12, 0x55, + 0x56, 0x00, 0x7a, 0x90, + 0xee, 0xac, 0xa3, 0xf0, 0xf0, 0xef, 0x33, 0x7f, 0x55, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0xae, 0x7a, + 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xb8, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, + 0xee, 0xff, 0xe1, 0x30, + 0x44, 0x09, 0x90, 0xfe, 0xb8, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, + 0xe0, 0xba, 0xa3, 0xfe, + 0xff, 0xe0, 0x30, 0xee, 0x09, 0xe1, 0xfe, 0x44, 0x7a, 0x90, 0xf0, 0xba, + 0xef, 0xa3, 0x90, 0xf0, + 0xac, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xee, 0xff, 0xe1, 0x30, 0x44, 0x09, + 0x90, 0xfe, 0xac, 0x7a, + 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xae, 0x13, 0xc3, 0xa3, 0xf0, + 0x13, 0xe0, 0x90, 0xf0, + 0xb8, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0xf7, 0x7a, 0x8f, 0xee, + 0x12, 0xf0, 0x4f, 0x26, + 0x7a, 0x90, 0xe0, 0xfd, 0x54, 0x04, 0xf0, 0x0f, 0x03, 0x60, 0x18, 0x02, + 0x90, 0x59, 0xf7, 0x7a, + 0xfc, 0xe0, 0xe0, 0xa3, 0xc3, 0xfd, 0x7a, 0x90, 0xe0, 0xfc, 0xff, 0x9d, + 0x7a, 0x90, 0xe0, 0xfb, + 0xfe, 0x9c, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, + 0x15, 0x50, 0x7a, 0x90, + 0xe0, 0xfb, 0xa3, 0xfe, 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, 0x9e, 0xe4, + 0x7a, 0x90, 0xf0, 0xfb, + 0xef, 0xa3, 0x90, 0xf0, 0xfb, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x02, 0x78, + 0xa2, 0xce, 0x13, 0xe7, + 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0x9c, 0x7f, 0xf0, 0xee, 0xef, 0xa3, + 0x90, 0xf0, 0xf9, 0x7a, + 0xff, 0xe0, 0xe0, 0xa3, 0x7a, 0x90, 0xcf, 0xfb, 0xa3, 0xf0, 0xf0, 0xef, + 0x7a, 0x90, 0xec, 0xf9, + 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xe4, 0xf7, 0x7a, 0xa3, 0xf0, 0x90, 0xf0, + 0x2b, 0x7f, 0xff, 0xe0, + 0x90, 0xc3, 0x9d, 0x7f, 0x9f, 0xe0, 0x80, 0x74, 0x90, 0xf8, 0x9c, 0x7f, + 0x64, 0xe0, 0x98, 0x80, + 0x7b, 0x90, 0xe0, 0x07, 0x04, 0x50, 0xf0, 0x04, 0x02, 0x80, 0xf0, 0x14, + 0x7f, 0x90, 0xe0, 0x2d, + 0xe0, 0x25, 0xe0, 0x25, 0x90, 0xff, 0x07, 0x7b, 0xfe, 0xe0, 0xef, 0xc3, + 0x80, 0x64, 0xee, 0xf8, + 0x80, 0x64, 0x40, 0x98, 0x90, 0x0c, 0x2d, 0x7f, 0x25, 0xe0, 0x25, 0xe0, + 0x90, 0xe0, 0x07, 0x7b, + 0x90, 0xf0, 0xba, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x00, 0x7b, + 0x8f, 0xee, 0x12, 0xf0, + 0x4f, 0x26, 0x7b, 0x90, 0xe0, 0x06, 0x54, 0x04, 0xf0, 0x0f, 0x03, 0x60, + 0x19, 0x02, 0x90, 0x3f, + 0x00, 0x7b, 0xfc, 0xe0, 0xe0, 0xa3, 0xc3, 0xfd, 0x7b, 0x90, 0xe0, 0x05, + 0xff, 0x9d, 0x7b, 0x90, + 0xe0, 0x04, 0xfe, 0x9c, 0xa3, 0xf0, 0xf0, 0xef, 0xee, 0xc3, 0x80, 0x64, + 0x80, 0x94, 0x15, 0x50, + 0x7b, 0x90, 0xe0, 0x04, 0xa3, 0xfe, 0xff, 0xe0, 0xe4, 0xc3, 0xff, 0x9f, + 0x9e, 0xe4, 0x7b, 0x90, + 0xf0, 0x04, 0xef, 0xa3, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, + 0x82, 0x94, 0x04, 0x50, + 0x02, 0x7f, 0x02, 0x80, 0x01, 0x7f, 0x7b, 0x90, 0xe0, 0x04, 0xa3, 0xfe, + 0xa8, 0xe0, 0x08, 0x07, + 0x06, 0x80, 0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, + 0x9a, 0x7f, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0x02, 0x7b, 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, + 0xcf, 0x04, 0xa3, 0xf0, + 0xf0, 0xef, 0x7b, 0x90, 0xec, 0x02, 0xa3, 0xf0, 0xf0, 0xed, 0x90, 0xe4, + 0x00, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0x29, 0x7f, 0xff, 0xe0, 0x90, 0xc3, 0x9b, 0x7f, 0x9f, 0xe0, + 0x80, 0x74, 0x90, 0xf8, + 0x9a, 0x7f, 0x64, 0xe0, 0x98, 0x80, 0x7b, 0x90, 0xe0, 0x08, 0x04, 0x50, + 0xf0, 0x04, 0x02, 0x80, + 0xf0, 0x14, 0x7f, 0x90, 0xe0, 0x2d, 0xe0, 0x25, 0xe0, 0x25, 0x90, 0xff, + 0x08, 0x7b, 0xfe, 0xe0, + 0xef, 0xc3, 0x80, 0x64, 0xee, 0xf8, 0x80, 0x64, 0x40, 0x98, 0x90, 0x0c, + 0x2d, 0x7f, 0x25, 0xe0, + 0x25, 0xe0, 0x90, 0xe0, 0x08, 0x7b, 0x90, 0xf0, 0x2d, 0x7f, 0xff, 0xe0, + 0x7b, 0x90, 0xe0, 0x08, + 0xc3, 0xfe, 0x64, 0xef, 0xf8, 0x80, 0x64, 0xee, 0x98, 0x80, 0x02, 0x40, + 0x19, 0xd2, 0x70, 0xee, + 0xc2, 0x02, 0x90, 0x19, 0x2d, 0x7f, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0x07, + 0xc3, 0xfe, 0x64, 0xef, + 0xf8, 0x80, 0x64, 0xee, 0x98, 0x80, 0x02, 0x40, 0x1c, 0xd2, 0x70, 0xee, + 0xc2, 0x02, 0x90, 0x1c, + 0x27, 0x7f, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xae, 0xa3, 0xfc, 0xfd, 0xe0, + 0x9f, 0xc3, 0x94, 0xec, + 0x50, 0x00, 0xe4, 0x07, 0x7a, 0x90, 0xf0, 0xd7, 0x0f, 0x80, 0x7a, 0x90, + 0xe0, 0xd7, 0xf0, 0x04, + 0xd3, 0xe0, 0x06, 0x94, 0x03, 0x40, 0x06, 0x74, 0x90, 0xf0, 0xd7, 0x7a, + 0xc3, 0xe0, 0x06, 0x94, + 0x02, 0x50, 0x01, 0x80, 0x92, 0xc3, 0x90, 0x1d, 0xac, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0xc3, 0xff, + 0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0xc3, 0x09, 0x9f, 0xe4, 0xe4, 0xff, + 0xfe, 0x9e, 0x08, 0x80, + 0x7a, 0x90, 0xe0, 0xac, 0xa3, 0xfe, 0xff, 0xe0, 0x7f, 0x90, 0xe0, 0x1f, + 0xc3, 0xfb, 0x9b, 0xef, + 0x80, 0x74, 0x6e, 0xf8, 0x50, 0x98, 0x80, 0x02, 0xc3, 0x01, 0x1b, 0x92, + 0x7f, 0x90, 0xe0, 0x1d, + 0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xab, 0x90, 0x9f, 0xaa, 0x7a, 0x94, 0xe0, + 0x50, 0x00, 0xd2, 0x0a, + 0x90, 0x1a, 0xa7, 0x7a, 0x18, 0x74, 0x80, 0xf0, 0x90, 0x10, 0xa7, 0x7a, + 0x70, 0xe0, 0xc2, 0x04, + 0x80, 0x1a, 0x90, 0x06, 0xa7, 0x7a, 0x14, 0xe0, 0x90, 0xf0, 0x21, 0x7f, + 0xff, 0xe0, 0xed, 0xc3, + 0xec, 0x9f, 0x00, 0x94, 0x0d, 0x50, 0x1e, 0x30, 0xd2, 0x0a, 0x90, 0x1f, + 0xa6, 0x7a, 0x18, 0x74, + 0x80, 0xf0, 0x90, 0x10, 0xa6, 0x7a, 0x70, 0xe0, 0xc2, 0x04, 0x80, 0x1f, + 0x90, 0x06, 0xa6, 0x7a, + 0x14, 0xe0, 0x02, 0xf0, 0x6b, 0x52, 0x90, 0xe4, 0xc5, 0x7a, 0x90, 0xf0, + 0xc8, 0x7a, 0x90, 0xf0, + 0xca, 0x7a, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x85, 0x94, + 0x17, 0x40, 0x7a, 0x90, + 0x74, 0xc5, 0xf0, 0x01, 0x90, 0xe4, 0xc6, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, + 0x90, 0xf0, 0xcc, 0x7a, + 0x90, 0xf0, 0xd2, 0x7a, 0x90, 0xf0, 0x95, 0x7f, 0x12, 0xe0, 0xdb, 0x27, + 0xa2, 0x1a, 0x1a, 0x00, + 0x01, 0xa2, 0xe0, 0x1a, 0x1b, 0x02, 0x03, 0x19, 0x54, 0x1b, 0x1b, 0x04, + 0x05, 0x94, 0xbf, 0x1b, + 0x1b, 0x06, 0x07, 0xeb, 0x17, 0x1c, 0x1c, 0x08, 0x09, 0x43, 0x70, 0x1c, + 0x1a, 0x0a, 0xfc, 0xa2, + 0xa2, 0x1a, 0x1a, 0xfd, 0xff, 0xa2, 0x00, 0x00, 0xc9, 0x1c, 0x7a, 0x90, + 0x74, 0xc5, 0xf0, 0x02, + 0x90, 0xe4, 0xc7, 0x7a, 0x90, 0xf0, 0xcd, 0x7a, 0x0c, 0x74, 0x90, 0xf0, + 0xd2, 0x7a, 0x01, 0x74, + 0x90, 0xf0, 0xd1, 0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0xf0, 0x04, 0x7a, 0x90, + 0x74, 0xd3, 0xf0, 0x32, + 0x7a, 0x90, 0x74, 0xcb, 0xf0, 0x01, 0x90, 0xe4, 0xcc, 0x7a, 0x90, 0xf0, + 0xc2, 0x7a, 0x90, 0xf0, + 0xc3, 0x7a, 0xa3, 0xf0, 0x02, 0xf0, 0xc9, 0x1c, 0x7a, 0x90, 0x74, 0xc5, + 0xf0, 0x02, 0x90, 0xe4, + 0xc7, 0x7a, 0x90, 0xf0, 0xcd, 0x7a, 0x0c, 0x74, 0xf0, 0xf0, 0x7a, 0x90, + 0x74, 0xd2, 0xf0, 0x01, + 0x7a, 0x90, 0xf0, 0xd1, 0x7a, 0x90, 0x04, 0xd0, 0x90, 0xf0, 0xd3, 0x7a, + 0x32, 0x74, 0xe4, 0xf0, + 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, 0xf0, 0xc2, + 0x7a, 0x90, 0x80, 0xc3, + 0x90, 0x73, 0xc5, 0x7a, 0x02, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, + 0x7a, 0x90, 0x74, 0xcd, + 0xf0, 0x0a, 0x7a, 0x90, 0x74, 0xd2, 0xf0, 0x01, 0x7a, 0x90, 0x04, 0xd1, + 0x90, 0xf0, 0xd0, 0x7a, + 0x90, 0xf0, 0xd3, 0x7a, 0x50, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xcb, + 0x7a, 0x90, 0xf0, 0xcc, + 0x7a, 0x90, 0x74, 0xc2, 0xf0, 0x02, 0x7a, 0x90, 0xe4, 0xc3, 0x38, 0x80, + 0x7a, 0x90, 0x74, 0xc5, + 0xf0, 0x01, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0x74, 0xcd, 0xf0, 0x09, + 0x7a, 0x90, 0x74, 0xd2, + 0xf0, 0x01, 0x7a, 0x90, 0x04, 0xd1, 0x90, 0xf0, 0xd0, 0x7a, 0x90, 0xf0, + 0xd3, 0x7a, 0x32, 0x74, + 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xcb, 0x7a, 0x90, 0xf0, 0xcc, 0x7a, 0x90, + 0x74, 0xc2, 0xf0, 0x02, + 0x7a, 0x90, 0xe4, 0xc3, 0xa3, 0xf0, 0x96, 0x74, 0x02, 0xf0, 0xc9, 0x1c, + 0x7a, 0x90, 0x74, 0xcd, + 0xf0, 0x0a, 0x7a, 0x90, 0x74, 0xc7, 0xf0, 0x01, 0x7a, 0x90, 0xf0, 0xc2, + 0x7a, 0x90, 0x04, 0xd0, + 0x90, 0xf0, 0xd1, 0x7a, 0x90, 0xf0, 0xd3, 0x7a, 0x1e, 0x74, 0x90, 0xf0, + 0xc3, 0x7a, 0xf0, 0xe4, + 0x74, 0xa3, 0xf0, 0x5a, 0x1c, 0x02, 0x90, 0xc9, 0xcd, 0x7a, 0x0a, 0x74, + 0xe4, 0xf0, 0x7a, 0x90, + 0xf0, 0xc7, 0x7a, 0x90, 0x04, 0xc2, 0x90, 0xf0, 0xd0, 0x7a, 0x03, 0x74, + 0x90, 0xf0, 0xd1, 0x7a, + 0x90, 0xf0, 0xd3, 0x7a, 0x28, 0x74, 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, + 0x74, 0xa3, 0xf0, 0x49, + 0x1c, 0x02, 0x90, 0xc9, 0xcd, 0x7a, 0x0a, 0x74, 0xe4, 0xf0, 0x7a, 0x90, + 0xf0, 0xc7, 0x7a, 0x90, + 0x74, 0xc2, 0xf0, 0x02, 0x7a, 0x90, 0x04, 0xd0, 0x90, 0xf0, 0xd1, 0x7a, + 0x90, 0xf0, 0xd3, 0x7a, + 0x28, 0x74, 0x90, 0xf0, 0xc3, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x44, + 0x1c, 0x02, 0x90, 0xc9, + 0xcd, 0x7a, 0x09, 0x74, 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, + 0x74, 0xc2, 0xf0, 0x03, + 0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0x90, 0x04, 0xd1, 0x90, 0xf0, 0xd3, 0x7a, + 0x32, 0x74, 0x90, 0xf0, + 0xc3, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x41, 0x1c, 0x02, 0x90, 0xc9, + 0xcd, 0x7a, 0x09, 0x74, + 0xe4, 0xf0, 0x7a, 0x90, 0xf0, 0xc7, 0x7a, 0x90, 0x74, 0xc2, 0xf0, 0x04, + 0x7a, 0x90, 0x14, 0xd0, + 0x90, 0xf0, 0xd1, 0x7a, 0x05, 0x74, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, + 0x90, 0xf0, 0xc3, 0x7a, + 0xf0, 0xe4, 0x74, 0xa3, 0xf0, 0x3a, 0x59, 0x80, 0x7a, 0x90, 0x74, 0xcd, + 0xf0, 0x09, 0x90, 0xe4, + 0xc7, 0x7a, 0x90, 0xf0, 0xd0, 0x7a, 0x03, 0x74, 0x90, 0xf0, 0xc2, 0x7a, + 0xf0, 0x04, 0x7a, 0x90, + 0x04, 0xd1, 0x90, 0xf0, 0xd3, 0x7a, 0x32, 0x74, 0x90, 0xf0, 0xc3, 0x7a, + 0xf0, 0xe4, 0x74, 0xa3, + 0xf0, 0x3a, 0x7a, 0x90, 0xe0, 0xa8, 0x94, 0xd3, 0x50, 0x05, 0x90, 0x1a, + 0xc2, 0x7a, 0x05, 0x74, + 0x90, 0xf0, 0xd1, 0x7a, 0xf0, 0x04, 0x7a, 0x90, 0x74, 0xd3, 0xf0, 0x32, + 0x7a, 0x90, 0xe4, 0xc3, + 0xa3, 0xf0, 0x32, 0x74, 0x30, 0xf0, 0x09, 0x08, 0x7a, 0x90, 0xe4, 0xc3, + 0xa3, 0xf0, 0x1e, 0x74, + 0x90, 0xf0, 0xd3, 0x7a, 0x75, 0xe0, 0x40, 0xf0, 0xfd, 0xa4, 0x7a, 0x90, + 0xe0, 0xd2, 0x33, 0xc4, + 0xe0, 0x54, 0xe4, 0xfe, 0xfd, 0x2d, 0x35, 0xee, 0xfc, 0xf0, 0x7a, 0x90, + 0xe0, 0xd1, 0xf0, 0x75, + 0xa4, 0x04, 0xff, 0x2d, 0x35, 0xec, 0xfe, 0xf0, 0x7a, 0x90, 0xe0, 0xd0, + 0x00, 0x7c, 0xff, 0x2f, + 0x3e, 0xec, 0x7a, 0x90, 0xf0, 0xce, 0xef, 0xa3, 0x90, 0xf0, 0x67, 0x7f, + 0x30, 0xe0, 0x4b, 0xe3, + 0x43, 0x12, 0x90, 0x22, 0xcd, 0x7a, 0xff, 0xe0, 0x00, 0x7e, 0x11, 0x7d, + 0x53, 0x7c, 0x53, 0x12, + 0x90, 0xf5, 0xce, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x12, + 0x12, 0x53, 0xf5, 0x53, + 0x7a, 0x90, 0xe0, 0xc2, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x13, 0x12, 0x53, + 0xf5, 0x53, 0x7a, 0x90, + 0xe0, 0xc3, 0xa3, 0xfe, 0xff, 0xe0, 0x14, 0x7d, 0x53, 0x7c, 0x53, 0x12, + 0x90, 0xf5, 0x81, 0x7a, + 0xff, 0xe0, 0x00, 0x7e, 0x15, 0x7d, 0x53, 0x7c, 0x53, 0x12, 0x22, 0xf5, + 0x7f, 0x90, 0xe0, 0x95, + 0x27, 0x12, 0x1d, 0xdb, 0x00, 0x83, 0xb4, 0x1d, 0x1d, 0x01, 0x02, 0xe7, + 0x25, 0x1e, 0x1e, 0x03, + 0x04, 0x63, 0xa1, 0x1e, 0x1e, 0x05, 0x06, 0xd7, 0x0c, 0x1f, 0x1f, 0x07, + 0x08, 0x0c, 0x83, 0x1d, + 0x1d, 0xfc, 0xfd, 0x83, 0x83, 0x1d, 0x00, 0xff, 0x1f, 0x00, 0x90, 0x41, + 0xa5, 0x7a, 0x30, 0x74, + 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x7f, 0x94, 0x06, 0x50, + 0x7a, 0x90, 0x74, 0xa5, + 0xf0, 0x10, 0x90, 0xe4, 0xea, 0x7b, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, + 0xa3, 0xf0, 0xa3, 0xf0, + 0xa3, 0xf0, 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x31, 0x02, 0x35, 0x7c, 0x1f, + 0x90, 0xe4, 0xea, 0x7b, + 0x90, 0xf0, 0x35, 0x7f, 0x90, 0xe0, 0xeb, 0x7b, 0x90, 0xf0, 0x3b, 0x7f, + 0x90, 0xe0, 0xec, 0x7b, + 0xe4, 0xf0, 0xf0, 0xa3, 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x4f, 0x7b, 0x90, + 0xf0, 0xef, 0x7f, 0x90, + 0xe0, 0x55, 0x7b, 0x90, 0xf0, 0xf0, 0xff, 0x7b, 0x31, 0x7a, 0x44, 0x79, + 0x1f, 0x02, 0xe4, 0x7c, + 0x7b, 0x90, 0xf0, 0xea, 0x7f, 0x90, 0xe0, 0x37, 0x7b, 0x90, 0xf0, 0xeb, + 0x7f, 0x90, 0xe0, 0x3d, + 0x7b, 0x90, 0xf0, 0xec, 0x7f, 0x90, 0xe0, 0x43, 0x7b, 0x90, 0xf0, 0xed, + 0x7f, 0x90, 0xe0, 0x49, + 0x7b, 0x90, 0xf0, 0xee, 0x7f, 0x90, 0xe0, 0x4d, 0x7b, 0x90, 0xf0, 0xef, + 0x7f, 0x90, 0xe0, 0x53, + 0x7b, 0x90, 0xf0, 0xf0, 0xff, 0x7b, 0x31, 0x7a, 0x53, 0x79, 0x1f, 0x02, + 0xe4, 0x7c, 0x7b, 0x90, + 0xf0, 0xea, 0x7f, 0x90, 0xe0, 0x37, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, + 0xe0, 0x3d, 0x7b, 0x90, + 0xf0, 0xec, 0x7f, 0x90, 0xe0, 0x43, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, + 0xe0, 0x49, 0x7b, 0x90, + 0xf0, 0xee, 0x7f, 0x90, 0xe0, 0x4f, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, + 0xe0, 0x55, 0x7b, 0x90, + 0xf0, 0xf0, 0xff, 0x7b, 0x31, 0x7a, 0x62, 0x79, 0x1f, 0x02, 0xe4, 0x7c, + 0x7b, 0x90, 0xf0, 0xea, + 0x7f, 0x90, 0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, + 0x7b, 0x90, 0xf0, 0xec, + 0x7f, 0x90, 0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, + 0x7b, 0x90, 0xf0, 0xee, + 0x7f, 0x90, 0xe0, 0x4f, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x55, + 0x7b, 0x90, 0xf0, 0xf0, + 0xff, 0x7b, 0x31, 0x7a, 0x71, 0x79, 0x1f, 0x02, 0xe4, 0x7c, 0x7b, 0x90, + 0xf0, 0xea, 0x7f, 0x90, + 0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, 0x7b, 0x90, + 0xf0, 0xec, 0x7f, 0x90, + 0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, 0x7b, 0x90, + 0xf0, 0xee, 0x74, 0xa3, + 0xf0, 0xd0, 0x74, 0xa3, 0xf0, 0x40, 0xff, 0x7b, 0x31, 0x7a, 0x71, 0x79, + 0x1f, 0x02, 0xe4, 0x7c, + 0x7b, 0x90, 0xf0, 0xea, 0x7f, 0x90, 0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, + 0x7f, 0x90, 0xe0, 0x3f, + 0x7b, 0x90, 0xf0, 0xec, 0x7f, 0x90, 0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, + 0x7f, 0x90, 0xe0, 0x4b, + 0x7b, 0x90, 0xf0, 0xee, 0x74, 0xa3, 0xf0, 0x90, 0x74, 0xa3, 0xf0, 0x30, + 0xff, 0x7b, 0x31, 0x7a, + 0x80, 0x79, 0x70, 0x80, 0x90, 0xe4, 0xea, 0x7b, 0x90, 0xf0, 0x39, 0x7f, + 0x90, 0xe0, 0xeb, 0x7b, + 0x90, 0xf0, 0x3f, 0x7f, 0x90, 0xe0, 0xec, 0x7b, 0x90, 0xf0, 0x45, 0x7f, + 0x90, 0xe0, 0xed, 0x7b, + 0x90, 0xf0, 0x4b, 0x7f, 0x90, 0xe0, 0xee, 0x7b, 0xa3, 0xf0, 0x48, 0x74, + 0xa3, 0xf0, 0x14, 0x74, + 0x7b, 0xf0, 0x7a, 0xff, 0x79, 0x31, 0x80, 0x80, 0xe4, 0x3b, 0x7b, 0x90, + 0xf0, 0xea, 0x7f, 0x90, + 0xe0, 0x39, 0x7b, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0x3f, 0x7b, 0x90, + 0xf0, 0xec, 0x7f, 0x90, + 0xe0, 0x45, 0x7b, 0x90, 0xf0, 0xed, 0x7f, 0x90, 0xe0, 0x4b, 0x7b, 0x90, + 0xf0, 0xee, 0x7f, 0x90, + 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0xef, 0x7f, 0x90, 0xe0, 0x57, 0x7b, 0x90, + 0xf0, 0xf0, 0xff, 0x7b, + 0x31, 0x7a, 0x80, 0x79, 0x12, 0xa3, 0xd2, 0x27, 0x7f, 0x90, 0xe0, 0x95, + 0x94, 0xc3, 0x90, 0x03, + 0xd4, 0x7a, 0x05, 0x50, 0x0f, 0x74, 0x80, 0xf0, 0x74, 0x03, 0xf0, 0x07, + 0x7f, 0x90, 0xe0, 0x67, + 0xe4, 0x20, 0x02, 0x03, 0x58, 0x20, 0x53, 0x12, 0x90, 0x19, 0x66, 0x7f, + 0xa3, 0xe0, 0xe0, 0x30, + 0x90, 0x0b, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x1c, 0x50, + 0x7b, 0x90, 0xe0, 0xef, + 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x12, 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, + 0xe0, 0xf0, 0x7e, 0xff, + 0x7d, 0x00, 0x7c, 0x13, 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xef, + 0x7a, 0x90, 0xf0, 0xf1, + 0x7b, 0x90, 0xe0, 0xf0, 0x7a, 0x90, 0xf0, 0xf2, 0x7b, 0x90, 0xe0, 0xeb, + 0x7e, 0xff, 0x7d, 0x00, + 0x7c, 0x14, 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xec, 0x7e, 0xff, + 0x7d, 0x00, 0x7c, 0x15, + 0x12, 0x55, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xed, 0x7e, 0xff, 0x7d, 0x00, + 0x7c, 0x16, 0x12, 0x55, + 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xee, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x17, + 0x12, 0x55, 0xf5, 0x53, + 0x7a, 0x90, 0xe0, 0xd4, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x55, + 0xf5, 0x53, 0x90, 0xe4, + 0xe9, 0x7b, 0x90, 0xf0, 0xf1, 0x7b, 0x27, 0x12, 0x90, 0xc9, 0xe9, 0x7b, + 0xfd, 0xe0, 0x82, 0xf5, + 0x83, 0x75, 0x12, 0x00, 0x10, 0x26, 0x7e, 0xff, 0xed, 0x00, 0x18, 0x24, + 0xe4, 0xfd, 0x55, 0x34, + 0x12, 0xfc, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0xe9, 0xf0, 0x04, 0xc3, 0xe0, + 0x0f, 0x94, 0xd3, 0x40, + 0xe4, 0x22, 0x2c, 0xf5, 0x40, 0xd2, 0x00, 0xc2, 0xff, 0x7b, 0x4b, 0x7a, + 0xb8, 0x79, 0x7c, 0x90, + 0x12, 0x3f, 0xd2, 0x27, 0x47, 0x7a, 0xcb, 0x79, 0x7c, 0x90, 0x12, 0x48, + 0xd2, 0x27, 0x00, 0x7b, + 0x00, 0x7a, 0x00, 0x79, 0x7c, 0x90, 0x12, 0x42, 0xd2, 0x27, 0x7c, 0x90, + 0x12, 0x45, 0xd2, 0x27, + 0xff, 0x74, 0x7f, 0x90, 0xf0, 0xfa, 0xf0, 0xa3, 0x7d, 0x90, 0xe4, 0x80, + 0xa3, 0xf0, 0xff, 0x74, + 0x75, 0xf0, 0x38, 0xb8, 0xf8, 0x75, 0x75, 0x01, 0x82, 0xa8, 0xf5, 0xe4, + 0xf5, 0xa9, 0xf5, 0xaa, + 0x7b, 0xab, 0x7a, 0xff, 0x79, 0x56, 0x90, 0x19, 0x5a, 0x7c, 0x27, 0x12, + 0x90, 0xd2, 0x5d, 0x7c, + 0x27, 0x12, 0xd2, 0xd2, 0x12, 0xd1, 0x6d, 0x56, 0x7f, 0x90, 0xe0, 0xfa, + 0x02, 0x70, 0xe0, 0xa3, + 0x03, 0x70, 0x23, 0x02, 0x90, 0x40, 0xfa, 0x7f, 0xfe, 0xe0, 0xe4, 0xa3, + 0x02, 0x70, 0xf4, 0xee, + 0x03, 0x60, 0x23, 0x02, 0xe0, 0x21, 0x70, 0xf4, 0x02, 0x03, 0x19, 0x23, + 0x7f, 0x90, 0xe0, 0xfb, + 0xfe, 0x64, 0x23, 0x70, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x7f, 0x90, + 0xe0, 0xfe, 0xa3, 0xff, + 0x90, 0xe0, 0xf6, 0x7f, 0xf0, 0xcf, 0xef, 0xa3, 0x90, 0xf0, 0xfc, 0x7f, + 0xff, 0xe0, 0xe0, 0xa3, + 0x7f, 0x90, 0xcf, 0xf4, 0x22, 0x02, 0x90, 0xde, 0xfb, 0x7f, 0x64, 0xe0, + 0x70, 0xfd, 0xc0, 0x2a, + 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xf8, 0x7f, 0xa3, 0xf0, + 0x7e, 0xf0, 0x7f, 0x7f, + 0x7d, 0xf6, 0x7c, 0x12, 0x12, 0x11, 0x93, 0x55, 0x7f, 0x7e, 0xf4, 0x7f, + 0x13, 0x7d, 0x11, 0x7c, + 0x55, 0x12, 0x30, 0x93, 0xfd, 0x40, 0x22, 0x02, 0x90, 0x00, 0xfb, 0x7f, + 0x64, 0xe0, 0x60, 0xc0, + 0x02, 0x03, 0x09, 0x22, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, + 0x7f, 0x90, 0xe0, 0xf8, + 0xe0, 0xa3, 0x7f, 0x54, 0x7b, 0x90, 0xf0, 0xdd, 0xff, 0xe0, 0x94, 0xd3, + 0x40, 0x1c, 0x90, 0x0d, + 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xfc, 0x74, 0x02, 0xf0, 0x00, 0x22, + 0x7f, 0x90, 0xe0, 0xf9, + 0xe7, 0x30, 0x7c, 0x25, 0x7d, 0x7f, 0xc3, 0xf6, 0xf6, 0x74, 0xfe, 0x9f, + 0x7f, 0x74, 0x00, 0x94, + 0x7b, 0x90, 0xf0, 0xd9, 0xce, 0xa3, 0x90, 0xf0, 0xf6, 0x7f, 0xff, 0xe0, + 0xe0, 0xa3, 0x7b, 0x90, + 0xcf, 0xdb, 0xa3, 0xf0, 0xf0, 0xef, 0x26, 0x80, 0x7f, 0x90, 0xe0, 0xf6, + 0xa3, 0xff, 0x90, 0xe0, + 0xd9, 0x7b, 0xf0, 0xcf, 0xef, 0xa3, 0x7f, 0xf0, 0x90, 0xf6, 0xdd, 0x7b, + 0xfd, 0xe0, 0x74, 0xc3, + 0x9d, 0xf6, 0x74, 0xfe, 0x94, 0x7f, 0x90, 0x00, 0xdb, 0x7b, 0xa3, 0xf0, + 0xf0, 0xce, 0x7b, 0x90, + 0xe0, 0xdd, 0x94, 0xd3, 0x40, 0x00, 0x90, 0x2a, 0xd9, 0x7b, 0x75, 0xe4, + 0x01, 0xf0, 0x26, 0x12, + 0x85, 0x65, 0x82, 0xf0, 0x83, 0xf5, 0xff, 0xe0, 0x7b, 0x90, 0xe4, 0xdb, + 0xf0, 0x75, 0x12, 0x01, + 0x65, 0x26, 0xf0, 0x85, 0xf5, 0x82, 0xef, 0x83, 0x90, 0xf0, 0xdd, 0x7b, + 0x14, 0xe0, 0x80, 0xf0, + 0xe4, 0xcd, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x23, 0x02, + 0x90, 0x39, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x80, 0x90, 0x5b, 0xf8, 0x7f, + 0xa3, 0xf0, 0xaf, 0xf0, + 0x90, 0xa8, 0xf6, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0xa9, 0xaf, 0x7f, 0x90, + 0xe4, 0xf4, 0xa3, 0xf0, + 0xf0, 0xef, 0xaa, 0xaf, 0x7f, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, 0xf0, 0xef, + 0xab, 0xaf, 0x7f, 0x90, + 0xe4, 0xf0, 0xa3, 0xf0, 0xf0, 0xef, 0xb8, 0xaf, 0x7f, 0x90, 0xe4, 0xee, + 0xa3, 0xf0, 0xf0, 0xef, + 0xf8, 0xaf, 0x7f, 0x90, 0xe4, 0xec, 0xa3, 0xf0, 0xf0, 0xef, 0xd0, 0xaf, + 0x7f, 0x90, 0xe4, 0xea, + 0xa3, 0xf0, 0xf0, 0xef, 0x40, 0xa2, 0xff, 0xe4, 0x90, 0x33, 0xe8, 0x7f, + 0xf0, 0xcf, 0xef, 0xa3, + 0x02, 0xf0, 0x39, 0x23, 0x7f, 0x90, 0xe0, 0xfb, 0x88, 0x64, 0x49, 0x70, + 0x7f, 0x90, 0xe0, 0xf6, + 0xe0, 0xa3, 0xa8, 0xf5, 0x7f, 0x90, 0xe0, 0xf4, 0xe0, 0xa3, 0xa9, 0xf5, + 0x7f, 0x90, 0xe0, 0xf2, + 0xe0, 0xa3, 0xaa, 0xf5, 0x7f, 0x90, 0xe0, 0xf0, 0xe0, 0xa3, 0xab, 0xf5, + 0x7f, 0x90, 0xe0, 0xee, + 0xe0, 0xa3, 0xb8, 0xf5, 0x7f, 0x90, 0xe0, 0xec, 0xe0, 0xa3, 0xf8, 0xf5, + 0x7f, 0x90, 0xe0, 0xea, + 0xe0, 0xa3, 0xd0, 0xf5, 0x7f, 0x90, 0xe0, 0xe8, 0xa3, 0xfe, 0xff, 0xe0, + 0x4f, 0xee, 0xff, 0x24, + 0x40, 0x92, 0x80, 0xe4, 0x90, 0x5c, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x89, + 0x12, 0x06, 0x6a, 0x53, + 0x80, 0xe4, 0x90, 0x4e, 0xfb, 0x7f, 0x64, 0xe0, 0x70, 0x82, 0x90, 0x11, + 0xf8, 0x7f, 0xa3, 0xf0, + 0xaf, 0xf0, 0x90, 0x81, 0xf6, 0x7f, 0xa3, 0xf0, 0xf0, 0xef, 0x55, 0x80, + 0x7f, 0x90, 0xe0, 0xfb, + 0x83, 0x64, 0x10, 0x70, 0x7d, 0x90, 0xf0, 0x80, 0xf0, 0xa3, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, + 0x00, 0xd2, 0x3d, 0x80, 0x7f, 0x90, 0xe0, 0xfb, 0x84, 0x64, 0x13, 0x70, + 0x7d, 0x90, 0xf0, 0x80, + 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0xc2, 0xf0, + 0x80, 0x00, 0x74, 0x22, + 0x90, 0xff, 0xf8, 0x7f, 0xa3, 0xf0, 0x80, 0xf0, 0x90, 0x18, 0x3f, 0x7c, + 0x27, 0x12, 0xe9, 0xc9, + 0x60, 0x4a, 0x12, 0x05, 0x01, 0x28, 0x09, 0x80, 0x7f, 0x90, 0x74, 0xf8, + 0xf0, 0xff, 0x14, 0xa3, + 0xe4, 0xf0, 0x7f, 0x90, 0xf0, 0xfa, 0xf0, 0xa3, 0x23, 0x12, 0x02, 0xa4, + 0xc0, 0x20, 0xaf, 0xc2, + 0xfe, 0x80, 0xc0, 0x32, 0xe5, 0xe0, 0x54, 0xd0, 0x64, 0x18, 0x70, 0x08, + 0xd0, 0x03, 0x32, 0xe0, + 0xe0, 0xd0, 0x23, 0x12, 0x85, 0x4a, 0x0b, 0xd0, 0xd0, 0x75, 0xaa, 0x08, + 0xc2, 0xe0, 0xe5, 0x8c, + 0x24, 0x8a, 0xf5, 0xf7, 0xe5, 0x8a, 0x34, 0x8c, 0xf5, 0xd8, 0xd2, 0x8c, + 0xec, 0x8c, 0x3c, 0x24, + 0xe6, 0xf8, 0x04, 0xbc, 0x74, 0x02, 0xc3, 0x7f, 0x81, 0x95, 0x01, 0xb4, + 0x40, 0x00, 0x79, 0xbf, + 0x78, 0x05, 0x16, 0x31, 0x08, 0xe6, 0x0b, 0x70, 0xaf, 0xc2, 0x30, 0xe6, + 0x03, 0xe1, 0x18, 0x44, + 0xd2, 0xf6, 0x08, 0xaf, 0xed, 0xd9, 0x8b, 0xea, 0xd2, 0xd0, 0x22, 0x0a, + 0x0c, 0xe5, 0x23, 0xff, + 0x32, 0x24, 0x0f, 0xf8, 0x08, 0x08, 0xb5, 0xef, 0x06, 0x0c, 0x0a, 0x10, + 0x43, 0x03, 0x01, 0x87, + 0x05, 0xbf, 0x7f, 0x04, 0x78, 0x00, 0xe6, 0x32, 0xe4, 0x30, 0x00, 0xe8, + 0x0c, 0xe5, 0x9f, 0xc3, + 0x20, 0x50, 0x0c, 0x05, 0x3b, 0x74, 0x0c, 0x25, 0xe6, 0xf8, 0xa6, 0xfd, + 0x08, 0x81, 0xae, 0xe6, + 0xbe, 0x0c, 0x02, 0x04, 0x7f, 0x74, 0xf8, 0xcd, 0x6d, 0xe8, 0xe0, 0x60, + 0xe6, 0x08, 0xe0, 0xc0, + 0xf6, 0x80, 0x0c, 0xe5, 0x9f, 0xd3, 0x27, 0x40, 0x0c, 0xe5, 0x3c, 0x24, + 0xe6, 0xf8, 0x0c, 0xae, + 0x04, 0xbe, 0x74, 0x02, 0xfd, 0x7f, 0xe6, 0x18, 0xf8, 0xcd, 0x81, 0xe5, + 0x60, 0x6d, 0xd0, 0x06, + 0xf6, 0xe0, 0x80, 0x18, 0xe5, 0xf5, 0x24, 0x0c, 0xc8, 0x3b, 0x15, 0xf6, + 0x80, 0x0c, 0xe5, 0xd3, + 0x23, 0x0c, 0x32, 0x24, 0x7f, 0xf8, 0xc2, 0x04, 0xe6, 0xaf, 0xe0, 0x30, + 0x10, 0x03, 0x0c, 0xe2, + 0x00, 0x7f, 0xe1, 0x30, 0x30, 0x07, 0x04, 0xe3, 0x08, 0x7f, 0xf4, 0x54, + 0x7c, 0x54, 0xd2, 0xc6, + 0x54, 0xaf, 0x42, 0x80, 0x22, 0x07, 0x3b, 0x78, 0x81, 0xa6, 0x04, 0x74, + 0x06, 0x60, 0x08, 0xff, + 0x7f, 0x76, 0xfb, 0xdf, 0x05, 0x7f, 0x78, 0xe4, 0xf6, 0x31, 0xf6, 0x08, + 0xdf, 0x08, 0x78, 0xfa, + 0x76, 0x32, 0x90, 0x30, 0x0f, 0x56, 0x01, 0x74, 0xc0, 0x93, 0xe4, 0xe0, + 0xc0, 0x93, 0x43, 0xe0, + 0x01, 0x89, 0x8a, 0x75, 0x75, 0xf0, 0xd8, 0x8c, 0x8c, 0xd2, 0xaf, 0xd2, + 0xa9, 0xd2, 0x04, 0x22, + 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, 0x74, 0x22, 0x2f, 0x32, + 0xf8, 0x2f, 0x20, 0xe6, + 0xf4, 0xe5, 0xaf, 0xc2, 0x44, 0xe6, 0xf6, 0x30, 0xaf, 0xd2, 0x0c, 0xae, + 0xc3, 0xee, 0x50, 0x9f, + 0x0e, 0x21, 0x3b, 0x74, 0xf8, 0x2e, 0xf9, 0xe6, 0xe6, 0x08, 0xbe, 0x18, + 0x02, 0x04, 0x7f, 0x74, + 0xed, 0xfd, 0x60, 0x69, 0x09, 0x09, 0x19, 0xe7, 0xf7, 0x19, 0x09, 0x09, + 0xf3, 0x80, 0x16, 0x16, + 0xda, 0x80, 0xd3, 0xee, 0x40, 0x9f, 0x05, 0x04, 0x05, 0x81, 0xee, 0x81, + 0x9f, 0xd3, 0x22, 0x40, + 0x3b, 0x74, 0xf8, 0x2e, 0xe6, 0x08, 0xee, 0xf9, 0x0c, 0xb5, 0xa9, 0x02, + 0x18, 0x81, 0x06, 0x06, + 0xfd, 0xe6, 0x69, 0xed, 0x09, 0x60, 0x19, 0x19, 0x09, 0xe7, 0xf7, 0x09, + 0x80, 0x19, 0x1e, 0xf3, + 0xd9, 0x80, 0x24, 0xef, 0xf8, 0x3b, 0x04, 0xe6, 0xef, 0xf8, 0x04, 0x2f, + 0x56, 0x90, 0x93, 0x0f, + 0x08, 0xf6, 0x2f, 0xef, 0xf6, 0x93, 0x00, 0x7f, 0xef, 0x22, 0x94, 0xd3, + 0x40, 0x04, 0x7f, 0x03, + 0x22, 0xff, 0x23, 0xef, 0x32, 0x24, 0xe6, 0xf8, 0xe5, 0x30, 0xc2, 0xf4, + 0xe6, 0xaf, 0x8c, 0x54, + 0xd2, 0xf6, 0xe5, 0xaf, 0xb5, 0x0c, 0x0a, 0x07, 0x3b, 0x74, 0xf8, 0x2f, + 0xf5, 0xe6, 0x02, 0x81, + 0xa4, 0x23, 0x2e, 0x50, 0x3c, 0x74, 0xf8, 0x2f, 0xbf, 0xe6, 0x02, 0x04, + 0x7f, 0x74, 0x18, 0xfd, + 0xf9, 0xe6, 0x3b, 0x74, 0xf8, 0x2f, 0xe6, 0xfb, 0xe9, 0xfc, 0x60, 0x6c, + 0xa8, 0x08, 0xe7, 0x05, + 0x1d, 0xf6, 0x80, 0x19, 0xa8, 0xf4, 0xa6, 0x03, 0x1f, 0x05, 0x0c, 0xe5, + 0x07, 0xb5, 0x7f, 0xe3, + 0x22, 0x00, 0x3c, 0x74, 0xf8, 0x2f, 0xfd, 0xe6, 0x86, 0x18, 0x0f, 0x01, + 0x3b, 0x74, 0xf8, 0x2f, + 0x01, 0xa6, 0x86, 0x08, 0xe5, 0x04, 0xb5, 0x0c, 0x02, 0x07, 0x81, 0xac, + 0x6c, 0xed, 0x08, 0x60, + 0x09, 0x0d, 0x05, 0xa8, 0xf7, 0xe6, 0xf4, 0x80, 0x0c, 0xe5, 0x07, 0xb5, + 0x89, 0xde, 0x7f, 0x81, + 0x22, 0x00, 0xd3, 0xef, 0x04, 0x94, 0x03, 0x40, 0xff, 0x7f, 0xef, 0x22, + 0x24, 0x23, 0xf8, 0x32, + 0xaf, 0xc2, 0x30, 0xe6, 0x05, 0xe5, 0xe0, 0x30, 0xd2, 0x02, 0xd2, 0xe4, + 0xc6, 0xe2, 0xaf, 0xd2, + 0x00, 0x7f, 0xe2, 0x30, 0x0f, 0x01, 0x23, 0x02, 0x8f, 0xa1, 0xe4, 0xf0, + 0xfe, 0xff, 0x0c, 0xe5, + 0x24, 0x23, 0xf8, 0x31, 0xa9, 0xc2, 0xf7, 0x30, 0x7f, 0x0d, 0xe6, 0x08, + 0x0b, 0x60, 0xf6, 0x2d, + 0x32, 0x60, 0x30, 0x50, 0x07, 0x80, 0xf1, 0x30, 0xed, 0x06, 0x60, 0xf6, + 0x7e, 0x27, 0x08, 0x02, + 0xf0, 0x30, 0xc2, 0x10, 0xe6, 0xaf, 0xe7, 0x10, 0x0e, 0x25, 0xe2, 0x30, + 0xd2, 0x0c, 0x7f, 0xaf, + 0x80, 0x04, 0xc2, 0x14, 0xe6, 0xaf, 0xe7, 0x10, 0x54, 0x15, 0x4e, 0xec, + 0xd2, 0xf6, 0xd2, 0xaf, + 0x02, 0xa9, 0xa4, 0x23, 0x08, 0x7f, 0xef, 0x08, 0x83, 0x44, 0xc2, 0xf4, + 0x56, 0xaf, 0xd2, 0xc6, + 0xd2, 0xaf, 0x54, 0xa9, 0x4f, 0x80, 0x22, 0xff, 0x01, 0xbb, 0xe5, 0x0c, + 0x29, 0x82, 0x82, 0xf5, + 0x83, 0xe5, 0xf5, 0x3a, 0xe0, 0x83, 0x50, 0x22, 0xe9, 0x06, 0x82, 0x25, + 0xe6, 0xf8, 0xbb, 0x22, + 0x06, 0xfe, 0x25, 0xe9, 0xf8, 0x82, 0x22, 0xe2, 0x82, 0xe5, 0xf5, 0x29, + 0xe5, 0x82, 0x3a, 0x83, + 0x83, 0xf5, 0x93, 0xe4, 0xef, 0x22, 0xf0, 0x8d, 0xa8, 0xa4, 0xcf, 0xf0, + 0xf0, 0x8c, 0x28, 0xa4, + 0x8d, 0xce, 0xa4, 0xf0, 0xfe, 0x2e, 0xc5, 0x22, 0xf8, 0xf0, 0xe0, 0xa3, + 0xf0, 0x28, 0xf0, 0xc5, + 0xe5, 0xf8, 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, 0xe0, 0x83, 0xf0, 0x38, + 0xa3, 0x22, 0xe0, 0xf8, + 0xf0, 0xc5, 0xf0, 0x25, 0xe5, 0xf0, 0x15, 0x82, 0x70, 0x82, 0x15, 0x02, + 0xe0, 0x83, 0x38, 0xc8, + 0xe8, 0xf0, 0xef, 0x22, 0xff, 0x2b, 0x3a, 0xee, 0xed, 0xfe, 0xfd, 0x39, + 0x38, 0xec, 0x22, 0xfc, + 0xef, 0xc3, 0xff, 0x9b, 0x9a, 0xee, 0xed, 0xfe, 0xfd, 0x99, 0x98, 0xec, + 0x22, 0xfc, 0x8f, 0xe8, + 0xa4, 0xf0, 0x8b, 0xcc, 0xa4, 0xf0, 0xfc, 0x2c, 0x8e, 0xe9, 0xa4, 0xf0, + 0xfc, 0x2c, 0xf0, 0x8a, + 0xa4, 0xed, 0xfc, 0x2c, 0x8e, 0xea, 0xa4, 0xf0, 0xa8, 0xcd, 0x8b, 0xf0, + 0xa4, 0xf0, 0xcc, 0x2d, + 0x25, 0x38, 0xfd, 0xf0, 0x8f, 0xe9, 0xa4, 0xf0, 0xcd, 0x2c, 0xf0, 0x35, + 0xeb, 0xfc, 0xf0, 0x8e, + 0xfe, 0xa4, 0xf0, 0xa9, 0x8f, 0xeb, 0xa4, 0xf0, 0xc5, 0xcf, 0x2e, 0xf0, + 0x39, 0xcd, 0xe4, 0xfe, + 0xfc, 0x3c, 0xa4, 0xea, 0xce, 0x2d, 0xf0, 0x35, 0xe4, 0xfd, 0xfc, 0x3c, + 0xc3, 0x22, 0x9f, 0xe4, + 0xe4, 0xff, 0xfe, 0x9e, 0x9d, 0xe4, 0xe4, 0xfd, 0xfc, 0x9c, 0xeb, 0x22, + 0xf5, 0x9f, 0xea, 0xf0, + 0x42, 0x9e, 0xe9, 0xf0, 0x42, 0x9d, 0xec, 0xf0, 0x80, 0x64, 0x64, 0xc8, + 0x98, 0x80, 0xf0, 0x45, + 0xeb, 0x22, 0xf5, 0x9f, 0xea, 0xf0, 0x42, 0x9e, 0xe9, 0xf0, 0x42, 0x9d, + 0xe8, 0xf0, 0x45, 0x9c, + 0x22, 0xf0, 0x60, 0xe8, 0xec, 0x0f, 0x13, 0xc3, 0xed, 0xfc, 0xfd, 0x13, + 0x13, 0xee, 0xef, 0xfe, + 0xff, 0x13, 0xf1, 0xd8, 0xe8, 0x22, 0x10, 0x60, 0xa2, 0xec, 0x13, 0xe7, + 0xed, 0xfc, 0xfd, 0x13, + 0x13, 0xee, 0xef, 0xfe, 0xff, 0x13, 0xf0, 0xd8, 0xe8, 0x22, 0x0f, 0x60, + 0xc3, 0xef, 0xff, 0x33, + 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xec, 0xd8, 0xfc, 0x22, 0xf1, + 0xfc, 0xe0, 0xe0, 0xa3, + 0xa3, 0xfd, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x93, 0xe4, 0x74, 0xfc, + 0x93, 0x01, 0x74, 0xfd, + 0x93, 0x02, 0x74, 0xfe, 0x93, 0x03, 0x22, 0xff, 0xf8, 0xe0, 0xe0, 0xa3, + 0xa3, 0xf9, 0xfa, 0xe0, + 0xe0, 0xa3, 0x22, 0xfb, 0x93, 0xe4, 0x74, 0xf8, 0x93, 0x01, 0x74, 0xf9, + 0x93, 0x02, 0x74, 0xfa, + 0x93, 0x03, 0x22, 0xfb, 0xf0, 0xec, 0xed, 0xa3, 0xa3, 0xf0, 0xf0, 0xee, + 0xef, 0xa3, 0x22, 0xf0, + 0x82, 0xa8, 0x83, 0x85, 0xd0, 0xf0, 0xd0, 0x83, 0x12, 0x82, 0xaf, 0x27, + 0x27, 0x12, 0x12, 0xaf, + 0xaf, 0x27, 0x27, 0x12, 0xe4, 0xaf, 0xe4, 0x73, 0xa3, 0x93, 0x83, 0xc5, + 0xf0, 0xc5, 0x83, 0xc5, + 0xc5, 0xc8, 0xc8, 0x82, 0xa3, 0xf0, 0x83, 0xc5, 0xf0, 0xc5, 0x83, 0xc5, + 0xc5, 0xc8, 0xc8, 0x82, + 0xe0, 0x22, 0xa3, 0xfb, 0xfa, 0xe0, 0xe0, 0xa3, 0x22, 0xf9, 0xf0, 0xeb, + 0xea, 0xa3, 0xa3, 0xf0, + 0xf0, 0xe9, 0xd0, 0x22, 0xd0, 0x83, 0xf8, 0x82, 0x93, 0xe4, 0x12, 0x70, + 0x01, 0x74, 0x70, 0x93, + 0xa3, 0x0d, 0x93, 0xa3, 0x74, 0xf8, 0x93, 0x01, 0x82, 0xf5, 0x83, 0x88, + 0x73, 0xe4, 0x02, 0x74, + 0x68, 0x93, 0xef, 0x60, 0xa3, 0xa3, 0x80, 0xa3, 0x8a, 0xdf, 0x89, 0x83, + 0xe4, 0x82, 0x75, 0x73, + 0x08, 0xf0, 0x82, 0x75, 0xef, 0x00, 0xff, 0x2f, 0x33, 0xee, 0xcd, 0xfe, + 0xcd, 0x33, 0x33, 0xcc, + 0xc5, 0xcc, 0x33, 0x82, 0x82, 0xc5, 0xed, 0x9b, 0xec, 0x9a, 0xe5, 0x99, + 0x98, 0x82, 0x0c, 0x40, + 0x82, 0xf5, 0x9b, 0xee, 0xed, 0xfe, 0xfd, 0x9a, 0x99, 0xec, 0x0f, 0xfc, + 0xf0, 0xd5, 0xe4, 0xd6, + 0xfb, 0xce, 0xcd, 0xe4, 0xe4, 0xfa, 0xf9, 0xcc, 0x82, 0xa8, 0xb8, 0x22, + 0xc1, 0x00, 0x00, 0xb9, + 0xba, 0x59, 0x2d, 0x00, 0x8b, 0xec, 0x84, 0xf0, 0xce, 0xcf, 0xfc, 0xcd, + 0xf0, 0xe5, 0xf9, 0xcb, + 0x18, 0x78, 0x2f, 0xef, 0xee, 0xff, 0xfe, 0x33, 0x33, 0xed, 0xec, 0xfd, + 0xfc, 0x33, 0x33, 0xeb, + 0x10, 0xfb, 0x03, 0xd7, 0x40, 0x99, 0xeb, 0x04, 0xfb, 0x99, 0xd8, 0x0f, + 0xe4, 0xe5, 0xfa, 0xf9, + 0x78, 0x22, 0xef, 0x18, 0xff, 0x2f, 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, + 0x33, 0xec, 0xc9, 0xfc, + 0xc9, 0x33, 0xd7, 0x10, 0x9b, 0x05, 0x9a, 0xe9, 0x07, 0x40, 0x9b, 0xec, + 0xe9, 0xfc, 0xf9, 0x9a, + 0xd8, 0x0f, 0xe4, 0xe0, 0xfa, 0xc9, 0xcc, 0xe4, 0x22, 0xfb, 0xf0, 0x75, + 0xef, 0x10, 0xff, 0x2f, + 0x33, 0xee, 0xed, 0xfe, 0xfd, 0x33, 0x33, 0xcc, 0xc8, 0xcc, 0xc8, 0x33, + 0xd7, 0x10, 0x9b, 0x07, + 0x9a, 0xec, 0x99, 0xe8, 0x0a, 0x40, 0x9b, 0xed, 0xec, 0xfd, 0xfc, 0x9a, + 0x99, 0xe8, 0x0f, 0xf8, + 0xf0, 0xd5, 0xe4, 0xda, 0xfb, 0xcd, 0xcc, 0xe4, 0xe4, 0xfa, 0xf9, 0xc8, + 0xc3, 0x22, 0x7a, 0x90, + 0xe0, 0x89, 0x04, 0x94, 0x7a, 0x90, 0xe0, 0x88, 0x00, 0x94, 0x03, 0x50, + 0x2b, 0x02, 0x90, 0x73, + 0x95, 0x7f, 0x12, 0xe0, 0xdb, 0x27, 0x18, 0x29, 0x29, 0x00, 0x01, 0x20, + 0x35, 0x29, 0x29, 0x02, + 0x03, 0x4f, 0x77, 0x29, 0x29, 0x04, 0x05, 0xf1, 0xf1, 0x29, 0x29, 0x06, + 0x07, 0xf1, 0xf1, 0x29, + 0x29, 0x08, 0x09, 0xf1, 0xf1, 0x29, 0x00, 0x0a, 0x29, 0x00, 0x12, 0x13, + 0x7e, 0x00, 0x17, 0x80, + 0x18, 0x20, 0x02, 0x03, 0x73, 0x2b, 0x50, 0x80, 0x19, 0x30, 0x90, 0x06, + 0x97, 0x7f, 0x02, 0x74, + 0x30, 0xf0, 0x03, 0x18, 0x2b, 0x02, 0xe4, 0x73, 0x7f, 0x90, 0xf0, 0x97, + 0x30, 0x22, 0x0c, 0x1c, + 0x1b, 0x30, 0x30, 0x09, 0x06, 0x1d, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x03, + 0x19, 0x30, 0x30, 0x06, + 0x03, 0x18, 0x2b, 0x02, 0x80, 0x73, 0x30, 0x21, 0x06, 0x1e, 0x7f, 0x90, + 0x74, 0x97, 0xf0, 0x04, + 0x1c, 0x30, 0x30, 0x06, 0x03, 0x1b, 0x1d, 0x20, 0x90, 0x06, 0x97, 0x7f, + 0x02, 0x74, 0x30, 0xf0, + 0x06, 0x19, 0x18, 0x30, 0x02, 0x03, 0x73, 0x2b, 0x7f, 0x90, 0x74, 0x97, + 0xf0, 0x01, 0xc3, 0x22, + 0x7a, 0x90, 0xe0, 0x89, 0x20, 0x94, 0x7a, 0x90, 0xe0, 0x88, 0x00, 0x94, + 0x03, 0x50, 0x2b, 0x02, + 0x30, 0x73, 0x0c, 0x1d, 0x1a, 0x30, 0x30, 0x09, 0x06, 0x11, 0x7f, 0x90, + 0x74, 0x97, 0xf0, 0x07, + 0x10, 0x30, 0x30, 0x0c, 0x09, 0x1a, 0x11, 0x30, 0x90, 0x06, 0x97, 0x7f, + 0x08, 0x74, 0x20, 0xf0, + 0x06, 0x1e, 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x03, 0x1c, 0x30, 0x20, 0x03, + 0x06, 0x1b, 0x7f, 0x90, + 0x74, 0x97, 0xf0, 0x02, 0x19, 0x30, 0x20, 0x03, 0x06, 0x18, 0x7f, 0x90, + 0x74, 0x97, 0xf0, 0x01, + 0x7f, 0x90, 0xe0, 0x97, 0x03, 0x64, 0x03, 0x60, 0x2b, 0x02, 0x90, 0x73, + 0x11, 0x7b, 0x04, 0xe0, + 0xe0, 0xf0, 0x94, 0xc3, 0x50, 0x04, 0x02, 0x03, 0x73, 0x2b, 0x11, 0x30, + 0x90, 0x06, 0x97, 0x7f, + 0x05, 0x74, 0xe4, 0xf0, 0x7b, 0x90, 0xf0, 0x11, 0x30, 0x22, 0x09, 0x1f, + 0x1a, 0x30, 0x30, 0x06, + 0x03, 0x11, 0x19, 0x20, 0x90, 0x07, 0x97, 0x7f, 0x04, 0x74, 0x22, 0xf0, + 0x7a, 0x90, 0xe0, 0xa0, + 0x03, 0x70, 0x2b, 0x02, 0x90, 0x73, 0x0b, 0x7f, 0xff, 0xe0, 0x7a, 0x90, + 0xe0, 0xa1, 0xa3, 0xfc, + 0xfd, 0xe0, 0x9f, 0xd3, 0x80, 0x74, 0xec, 0xf8, 0x80, 0x64, 0x50, 0x98, + 0x90, 0x23, 0x0d, 0x7f, + 0xff, 0xe0, 0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, 0xe0, 0xa3, 0xa3, 0xfa, + 0xfb, 0xe0, 0xff, 0x2f, + 0x3e, 0xea, 0xd3, 0xfe, 0x9f, 0xed, 0x64, 0xee, 0xf8, 0x80, 0x64, 0xec, + 0x98, 0x80, 0x09, 0x40, + 0x7f, 0x90, 0x74, 0x97, 0xf0, 0x0a, 0x2b, 0x02, 0x90, 0x00, 0x0f, 0x7f, + 0xff, 0xe0, 0x95, 0x33, + 0xfe, 0xe0, 0x2f, 0xeb, 0xea, 0xff, 0xfe, 0x3e, 0x7a, 0x90, 0xe0, 0xa1, + 0xa3, 0xfc, 0xfd, 0xe0, + 0x9f, 0xd3, 0x64, 0xee, 0xf8, 0x80, 0x64, 0xec, 0x98, 0x80, 0x09, 0x40, + 0x7f, 0x90, 0x74, 0x97, + 0xf0, 0x09, 0x2b, 0x02, 0x90, 0x00, 0x11, 0x7f, 0xff, 0xe0, 0x95, 0x33, + 0xfe, 0xe0, 0x7a, 0x90, + 0xe0, 0xa3, 0xa3, 0xfa, 0xfb, 0xe0, 0xff, 0x2f, 0x3e, 0xea, 0xd3, 0xfe, + 0x9f, 0xed, 0x64, 0xee, + 0xf8, 0x80, 0x64, 0xec, 0x98, 0x80, 0x08, 0x40, 0x7f, 0x90, 0x74, 0x97, + 0xf0, 0x08, 0x58, 0x80, + 0x7f, 0x90, 0xe0, 0x13, 0x33, 0xff, 0xe0, 0x95, 0xeb, 0xfe, 0xff, 0x2f, + 0x3e, 0xea, 0x90, 0xfe, + 0xa1, 0x7a, 0xfc, 0xe0, 0xe0, 0xa3, 0xd3, 0xfd, 0xee, 0x9f, 0x80, 0x64, + 0xec, 0xf8, 0x80, 0x64, + 0x40, 0x98, 0x90, 0x08, 0x97, 0x7f, 0x07, 0x74, 0x80, 0xf0, 0x90, 0x2d, + 0x15, 0x7f, 0xff, 0xe0, + 0x95, 0x33, 0xfe, 0xe0, 0x7a, 0x90, 0xe0, 0xa4, 0xff, 0x2f, 0x7a, 0x90, + 0xe0, 0xa3, 0xfe, 0x3e, + 0xed, 0xd3, 0xee, 0x9f, 0x80, 0x64, 0xec, 0xf8, 0x80, 0x64, 0x90, 0x98, + 0x97, 0x7f, 0x05, 0x40, + 0x06, 0x74, 0x80, 0xf0, 0x74, 0x03, 0xf0, 0x05, 0x08, 0x30, 0x90, 0x1d, + 0x95, 0x7f, 0xff, 0xe0, + 0x7f, 0x90, 0xe0, 0x97, 0x9f, 0xd3, 0x10, 0x50, 0xc3, 0xe0, 0x80, 0x64, + 0x88, 0x94, 0x08, 0x40, + 0x7f, 0x90, 0xe0, 0x95, 0x7f, 0x90, 0xf0, 0x97, 0x7f, 0x90, 0xe0, 0x95, + 0x94, 0xc3, 0x40, 0x08, + 0xe0, 0x19, 0x0a, 0x94, 0x14, 0x50, 0x7a, 0x90, 0xe0, 0xbe, 0x94, 0xc3, + 0x40, 0x03, 0x90, 0x0b, + 0x95, 0x7f, 0x04, 0xe0, 0x7f, 0x90, 0xf0, 0x97, 0x08, 0xd2, 0x7f, 0x90, + 0xe0, 0x66, 0xe0, 0x30, + 0x90, 0x2a, 0x0c, 0x7b, 0x60, 0xe0, 0x90, 0x0d, 0xf4, 0x7a, 0xff, 0xe0, + 0x7a, 0x90, 0xe0, 0xf3, + 0x9f, 0xc3, 0x08, 0x50, 0x7a, 0x90, 0xe0, 0xf3, 0x7a, 0x90, 0xf0, 0xf4, + 0x7a, 0x90, 0xe0, 0xf4, + 0x90, 0xff, 0x97, 0x7f, 0xd3, 0xe0, 0x40, 0x9f, 0xef, 0x02, 0x22, 0xf0, + 0x7c, 0x90, 0xee, 0x2f, + 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x08, 0x55, 0x64, 0x04, 0x70, + 0xe0, 0xa3, 0xaa, 0x64, + 0x16, 0x60, 0x7c, 0x90, 0x74, 0x08, 0xf0, 0x55, 0x74, 0xa3, 0xf0, 0xaa, + 0x7c, 0x90, 0x74, 0x07, + 0xf0, 0xae, 0x7c, 0x90, 0x74, 0x05, 0xf0, 0x3c, 0x3b, 0x7f, 0x94, 0x7e, + 0x00, 0x12, 0x90, 0x56, + 0x3b, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, + 0x56, 0x00, 0x7c, 0x90, + 0xee, 0x3d, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x2f, 0xa3, 0xfa, + 0xfb, 0xe0, 0x01, 0x64, + 0x70, 0x4a, 0x90, 0x13, 0x3b, 0x7c, 0x27, 0x12, 0xef, 0x54, 0x68, 0x24, + 0xee, 0xff, 0x14, 0x34, + 0xed, 0xfe, 0xa5, 0x34, 0x27, 0x80, 0x64, 0xeb, 0x4a, 0x02, 0x7c, 0x90, + 0x70, 0x3b, 0x12, 0x10, + 0x54, 0x27, 0x24, 0xef, 0xff, 0x18, 0x34, 0xee, 0xfe, 0x2a, 0x34, 0xed, + 0x80, 0x7d, 0x12, 0x0e, + 0x54, 0x27, 0x24, 0xef, 0xff, 0x68, 0x34, 0xee, 0xfe, 0x14, 0x34, 0xed, + 0xfd, 0xa5, 0x34, 0xec, + 0xfc, 0xff, 0x7c, 0x90, 0x12, 0x33, 0x8c, 0x27, 0x7c, 0x90, 0x12, 0x3b, + 0x54, 0x27, 0x7b, 0x90, + 0x12, 0xff, 0x8c, 0x27, 0x7c, 0x90, 0xe0, 0x05, 0xf0, 0x14, 0xd3, 0xe0, + 0x3c, 0x94, 0x03, 0x40, + 0x3c, 0x74, 0x90, 0xf0, 0x05, 0x7c, 0x60, 0xe0, 0x02, 0x03, 0xeb, 0x2d, + 0x3c, 0x74, 0xe4, 0xf0, + 0xfe, 0xff, 0xfc, 0xfd, 0x7c, 0x90, 0x12, 0x33, 0x70, 0x27, 0x12, 0xd3, + 0xf3, 0x26, 0x08, 0x40, + 0x7c, 0x90, 0x12, 0x33, 0x54, 0x27, 0x09, 0x80, 0x7c, 0x90, 0x12, 0x33, + 0x54, 0x27, 0x26, 0x12, + 0x90, 0xe5, 0x3b, 0x7c, 0x27, 0x12, 0xe4, 0x8c, 0xfe, 0xff, 0x01, 0x7d, + 0x90, 0xfc, 0x3b, 0x7c, + 0x27, 0x12, 0xd3, 0x70, 0x27, 0x12, 0x40, 0x09, 0xe4, 0x09, 0x7c, 0x90, + 0xf0, 0x31, 0xf0, 0xa3, + 0x0f, 0x80, 0x7c, 0x90, 0xe0, 0x3d, 0xa3, 0xff, 0x90, 0xe0, 0x31, 0x7c, + 0xf0, 0xcf, 0xef, 0xa3, + 0x90, 0xf0, 0x07, 0x7c, 0x60, 0xe0, 0x24, 0x20, 0x70, 0xef, 0xc3, 0x33, + 0x7c, 0x90, 0xe0, 0x32, + 0xf4, 0x94, 0x7c, 0x90, 0xe0, 0x31, 0x01, 0x94, 0x1c, 0x50, 0x7c, 0x90, + 0xe0, 0x06, 0xf0, 0x14, + 0x70, 0xe0, 0xa3, 0x4c, 0x80, 0xf0, 0xd3, 0x48, 0x7c, 0x90, 0xe0, 0x32, + 0xf4, 0x94, 0x7c, 0x90, + 0xe0, 0x31, 0x01, 0x94, 0x39, 0x40, 0x7c, 0x90, 0x74, 0x07, 0xf0, 0xae, + 0x31, 0x80, 0x22, 0x7d, + 0x94, 0x7c, 0x06, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2e, + 0x7f, 0x94, 0x7e, 0x0a, + 0x12, 0x00, 0xf5, 0x53, 0x7c, 0x90, 0x74, 0x06, 0xf0, 0x0c, 0x90, 0xc3, + 0x32, 0x7c, 0x94, 0xe0, + 0x90, 0xf4, 0x31, 0x7c, 0x94, 0xe0, 0x50, 0x01, 0x90, 0x06, 0x07, 0x7c, + 0x11, 0x74, 0x90, 0xf0, + 0x06, 0x7c, 0x64, 0xe0, 0x60, 0x0c, 0x02, 0x03, 0xeb, 0x2d, 0xe0, 0xa3, + 0x11, 0x64, 0x03, 0x60, + 0x2d, 0x02, 0x7d, 0xeb, 0x7c, 0x2c, 0xff, 0x94, 0x12, 0xfe, 0xf5, 0x53, + 0x22, 0x7f, 0x94, 0x7e, + 0x00, 0x12, 0x90, 0x56, 0x31, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x64, 0xf0, + 0x4e, 0x08, 0x0a, 0x60, + 0x7c, 0x90, 0xe4, 0x31, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x7c, 0x90, + 0xe0, 0x31, 0xa3, 0xfe, + 0xff, 0xe0, 0x22, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x7f, 0xf5, 0x7e, 0x2e, + 0x12, 0x94, 0x56, 0x00, + 0x7c, 0x90, 0xee, 0x31, 0xa3, 0xf0, 0xf0, 0xef, 0x08, 0x64, 0x70, 0x4e, + 0x02, 0x03, 0xe0, 0x2d, + 0x7c, 0x90, 0x74, 0x31, 0xf5, 0xff, 0x12, 0xf0, 0x4f, 0x26, 0x7c, 0x90, + 0xe0, 0x31, 0xa3, 0xfe, + 0xff, 0xe0, 0x2e, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x7f, 0xf5, 0x7e, 0x3b, + 0x12, 0x94, 0x56, 0x00, + 0x7c, 0x90, 0xee, 0x37, 0xa3, 0xf0, 0xf0, 0xef, 0x3a, 0x7f, 0x94, 0x7e, + 0x00, 0x12, 0x90, 0x56, + 0x39, 0x7c, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x35, 0x12, 0x94, + 0x56, 0x00, 0x7c, 0x90, + 0xee, 0x3b, 0xa3, 0xf0, 0xf0, 0xef, 0x34, 0x7f, 0x94, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0x3d, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x37, 0x7c, 0x27, 0x12, 0x90, 0x54, + 0x3b, 0x7c, 0x27, 0x12, + 0x12, 0x70, 0x88, 0x26, 0x7c, 0x90, 0x12, 0x37, 0x8c, 0x27, 0x7c, 0x90, + 0xe0, 0x37, 0xa3, 0xfe, + 0xff, 0xe0, 0x31, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0x39, 0x7c, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x7d, 0xff, 0x7c, 0x30, 0x12, 0x94, 0xf5, 0x53, 0x2c, 0x7d, 0x94, 0x7c, + 0x1f, 0x7f, 0x00, 0x7e, + 0x53, 0x12, 0x90, 0xf5, 0x07, 0x7c, 0xff, 0xe0, 0x90, 0x22, 0x67, 0x7f, + 0x20, 0xe0, 0x03, 0xe5, + 0x30, 0x02, 0x7f, 0x0a, 0x7e, 0x18, 0x12, 0x66, 0x56, 0x00, 0x7b, 0x90, + 0xee, 0xde, 0xa3, 0xf0, + 0xf0, 0xef, 0x90, 0xc3, 0xde, 0x7b, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x80, + 0x74, 0x07, 0xf0, 0x7f, + 0x74, 0xa3, 0xf0, 0xff, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x20, 0x90, 0x1c, + 0xdf, 0x7b, 0x25, 0xe0, + 0xf0, 0xe0, 0x7b, 0x90, 0xe0, 0xde, 0xf0, 0x33, 0xe0, 0xc3, 0x80, 0x64, + 0x80, 0x94, 0x07, 0x50, + 0x7f, 0x74, 0xa3, 0xf0, 0xff, 0x74, 0x90, 0xf0, 0xdf, 0x7b, 0x24, 0xe0, + 0xfe, 0x14, 0x7b, 0x90, + 0xe0, 0xde, 0xf7, 0x34, 0x7f, 0x90, 0xf0, 0x92, 0xce, 0xa3, 0x90, 0xf0, + 0x92, 0x7f, 0xff, 0xe0, + 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0xe0, 0xa3, 0xf0, 0xf0, 0xef, 0x7b, 0x90, + 0xe0, 0xe0, 0xa3, 0xfe, + 0xd3, 0xe0, 0x00, 0x94, 0x64, 0xee, 0x94, 0x80, 0x40, 0x80, 0x80, 0x02, + 0xc3, 0x11, 0x64, 0xee, + 0x94, 0x80, 0x50, 0x80, 0x80, 0x02, 0xe4, 0x07, 0x7b, 0x90, 0xf0, 0xe0, + 0xf0, 0xa3, 0x90, 0xd3, + 0xe1, 0x7b, 0x94, 0xe0, 0x90, 0x6a, 0xe0, 0x7b, 0x64, 0xe0, 0x94, 0x80, + 0x40, 0x8a, 0x74, 0x07, + 0xf0, 0x0a, 0x74, 0xa3, 0xf0, 0x6a, 0x90, 0xc3, 0xe1, 0x7b, 0x94, 0xe0, + 0x90, 0x96, 0xe0, 0x7b, + 0x64, 0xe0, 0x94, 0x80, 0x50, 0x75, 0x74, 0x07, 0xf0, 0xf5, 0x74, 0xa3, + 0xf0, 0x96, 0x7b, 0x90, + 0xe0, 0xe0, 0xa3, 0xfe, 0xfb, 0xe0, 0x06, 0xaa, 0x33, 0xea, 0xe0, 0x95, + 0xf8, 0xf9, 0x7a, 0x90, + 0xe0, 0xa5, 0xe4, 0xff, 0xfd, 0xfc, 0x12, 0xfe, 0x96, 0x26, 0x7b, 0x90, + 0x12, 0xe2, 0x8c, 0x27, + 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x2d, 0x7f, 0x55, 0x7e, + 0x00, 0x12, 0x90, 0x56, + 0xd5, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xe2, 0x7b, 0x27, 0x12, + 0x90, 0x70, 0xd5, 0x7a, + 0xfe, 0xe0, 0xe0, 0xa3, 0xe4, 0xff, 0xfd, 0xfc, 0x26, 0x12, 0x90, 0x96, + 0xe2, 0x7b, 0x27, 0x12, + 0x90, 0x8c, 0xe2, 0x7b, 0x27, 0x12, 0x78, 0x54, 0x12, 0x12, 0x2d, 0x27, + 0x7b, 0x90, 0xee, 0xe0, + 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xc3, 0xd6, 0x7a, 0x9f, 0xe0, 0x90, 0xf0, + 0xd5, 0x7a, 0x9e, 0xe0, + 0xd3, 0xf0, 0xe0, 0xa3, 0xff, 0x94, 0x7a, 0x90, 0xe0, 0xd5, 0x3f, 0x94, + 0x07, 0x40, 0x3f, 0x74, + 0xa3, 0xf0, 0xff, 0x74, 0xc3, 0xf0, 0x7a, 0x90, 0xe0, 0xd5, 0x02, 0x94, + 0x06, 0x50, 0x02, 0x74, + 0xa3, 0xf0, 0xf0, 0xe4, 0x7a, 0x90, 0xe0, 0xd5, 0xa3, 0xfe, 0xff, 0xe0, + 0x2d, 0x7d, 0x55, 0x7c, + 0x53, 0x12, 0xa2, 0xf5, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0xd8, 0x7a, + 0x60, 0xe0, 0xe4, 0x57, + 0x90, 0xf0, 0xd9, 0x7a, 0xff, 0xe0, 0xe0, 0xa3, 0x7a, 0x90, 0xcf, 0xdb, + 0xa3, 0xf0, 0xf0, 0xef, + 0x12, 0x7f, 0x62, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xd9, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, + 0xdb, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x7a, 0x90, 0xe0, 0xda, + 0xff, 0x9f, 0x7a, 0x90, + 0xe0, 0xd9, 0xfe, 0x9e, 0x7a, 0x90, 0xf0, 0xdd, 0xef, 0xa3, 0xc3, 0xf0, + 0x94, 0xee, 0x40, 0x80, + 0x90, 0x61, 0xdd, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0xe4, 0xff, 0xff, 0x9f, + 0x9e, 0xe4, 0x7a, 0x90, + 0xf0, 0xdd, 0xef, 0xa3, 0x22, 0xf0, 0x7a, 0x90, 0x74, 0xd8, 0xf0, 0x01, + 0x7a, 0x90, 0xe0, 0xe1, + 0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xdd, 0xa3, 0xfc, 0xc3, 0xe0, + 0xff, 0x9f, 0x9e, 0xec, + 0x90, 0xfe, 0xdf, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x94, 0xd3, 0xee, 0x00, + 0x80, 0x64, 0x80, 0x94, + 0x20, 0x40, 0x24, 0xe0, 0xff, 0x04, 0x7a, 0x90, 0xe0, 0xdf, 0x00, 0x34, + 0xef, 0xfe, 0x03, 0x78, + 0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0xe1, 0x7a, + 0x8f, 0xee, 0x12, 0xf0, + 0x4f, 0x26, 0x00, 0x22, 0xff, 0x00, 0x00, 0xfe, 0x00, 0x01, 0xff, 0x02, + 0x00, 0xfe, 0x00, 0x00, + 0xff, 0x04, 0xff, 0xfe, 0x00, 0xfc, 0x00, 0x04, 0xff, 0x03, 0x00, 0xfa, + 0x00, 0x00, 0xff, 0x06, + 0xff, 0xfb, 0x00, 0xfd, 0xff, 0x0b, 0xff, 0xfc, 0x00, 0xed, 0x00, 0x13, + 0xff, 0x1c, 0xff, 0xd3, + 0x00, 0xdc, 0x00, 0x5a, 0xff, 0x2a, 0xff, 0x47, 0x02, 0xd2, 0xff, 0x66, + 0x00, 0xfe, 0x00, 0x04, + 0xff, 0x01, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x04, 0xff, 0xfe, 0x00, 0xfc, + 0x00, 0x05, 0xff, 0x02, + 0x00, 0xf8, 0x00, 0x02, 0xff, 0x0b, 0xff, 0xf8, 0x00, 0xf1, 0x00, 0x10, + 0xff, 0x13, 0xff, 0xe5, + 0x00, 0xea, 0x00, 0x2c, 0xff, 0x1a, 0xff, 0xbb, 0x00, 0xe4, 0x00, 0x6e, + 0xff, 0x1f, 0xff, 0x37, + 0x02, 0xe0, 0xff, 0x74, 0x00, 0xff, 0x00, 0x01, 0xff, 0x01, 0xff, 0xff, + 0x00, 0xff, 0x00, 0x02, + 0xff, 0x01, 0x00, 0xfe, 0x00, 0x00, 0xff, 0x03, 0xff, 0xff, 0x00, 0xfd, + 0x00, 0x04, 0xff, 0x01, + 0x00, 0xf8, 0x00, 0x04, 0xff, 0x0d, 0xff, 0xf3, 0x00, 0xed, 0x00, 0x1c, + 0xff, 0x19, 0xff, 0xcb, + 0x00, 0xe1, 0x00, 0x60, 0xff, 0x25, 0xff, 0x42, 0x02, 0xd8, 0xff, 0x6b, + 0x00, 0xfd, 0x00, 0x03, + 0xff, 0x02, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x04, 0xff, 0xff, 0x00, 0xfc, + 0x00, 0x03, 0xff, 0x03, + 0x00, 0xfb, 0x00, 0x00, 0xff, 0x09, 0xff, 0xfc, 0x00, 0xf4, 0x00, 0x0a, + 0xff, 0x10, 0xff, 0xeb, + 0x00, 0xec, 0x00, 0x25, 0xff, 0x19, 0xff, 0xc2, 0x00, 0xe4, 0x00, 0x69, + 0xff, 0x1f, 0xff, 0x3b, + 0x02, 0xdf, 0x1c, 0x72, 0x16, 0x36, 0x15, 0xed, 0x18, 0x44, 0x14, 0x36, + 0x18, 0x36, 0x14, 0x7f, + 0x18, 0x5b, 0x5b, 0x90, 0x5b, 0x5b, 0x59, 0x5b, 0x0b, 0x49, 0x01, 0xf5, + 0x01, 0x40, 0x01, 0x40, + 0x01, 0x40, 0x02, 0x40, 0x24, 0xb2, 0x18, 0x32, 0x10, 0x15, 0x07, 0x04, + 0x05, 0xaa, 0x4a, 0x19, + 0x31, 0xdd, 0x21, 0xd0, 0x16, 0x20, 0x0e, 0x07, 0x7f, 0xa6, 0x61, 0xff, + 0x3c, 0x18, 0x26, 0xf0, + 0x18, 0x3f, 0x7f, 0x01, 0x7f, 0xff, 0x6a, 0xff, 0x3a, 0x40, 0x20, 0x76, + 0x01, 0x2b, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, 0x00, 0x04, + 0x01, 0x01, 0x01, 0x01, + 0x02, 0x01, 0x04, 0x03, 0x08, 0x06, 0x0c, 0x0a, 0x10, 0x0e, 0x01, 0x01, + 0x01, 0x01, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x03, 0x01, 0x04, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01, 0x10, 0x17, 0x0e, 0x13, + 0x0d, 0x11, 0x04, 0x10, + 0x05, 0x05, 0x07, 0x06, 0x08, 0x08, 0x34, 0x09, 0x34, 0xcd, 0x34, 0xcd, + 0x34, 0xcd, 0x34, 0xcd, + 0x34, 0xcd, 0x1a, 0xcd, 0x1a, 0x33, 0x1a, 0x33, 0x1a, 0x33, 0x1a, 0x33, + 0x1a, 0x33, 0x34, 0x33, + 0x31, 0x18, 0x2e, 0x4a, 0x35, 0xd4, 0x35, 0xf1, 0x3c, 0xf1, 0x18, 0xf9, + 0x19, 0x14, 0x18, 0xc6, + 0x19, 0xfa, 0x1a, 0x09, 0x1c, 0x00, 0x30, 0x46, 0x30, 0x39, 0x35, 0x39, + 0x39, 0x3a, 0x39, 0x7f, + 0x3b, 0x97, 0x90, 0xfc, 0x3a, 0x7d, 0xa3, 0xe0, 0x54, 0xe0, 0xf5, 0x0f, + 0x70, 0x19, 0x02, 0x03, + 0x91, 0x33, 0x18, 0x7f, 0x66, 0x7e, 0x00, 0x12, 0x8e, 0x56, 0x8f, 0x1a, + 0xe5, 0x1b, 0x45, 0x1b, + 0x60, 0x1a, 0x12, 0x15, 0x4f, 0x42, 0x25, 0xef, 0xff, 0xe0, 0x33, 0xee, + 0xef, 0xfe, 0xff, 0x24, + 0xee, 0xff, 0x47, 0x34, 0x1a, 0xf5, 0x1b, 0x8f, 0x90, 0xc3, 0xcf, 0x7f, + 0x95, 0xe0, 0xf5, 0x1b, + 0x90, 0x11, 0xce, 0x7f, 0x95, 0xe0, 0xf5, 0x1a, 0xe4, 0x10, 0x18, 0xf5, + 0x74, 0xc3, 0x95, 0x0f, + 0xf5, 0x19, 0xe4, 0x19, 0x23, 0xf5, 0x16, 0x75, 0xe5, 0x01, 0xd3, 0x16, + 0x19, 0x95, 0x1a, 0x50, + 0x10, 0xe5, 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, + 0x1f, 0x92, 0x18, 0xe5, + 0x13, 0xc3, 0x23, 0x45, 0x18, 0xf5, 0x16, 0x05, 0xdf, 0x80, 0x7d, 0x90, + 0xe0, 0x3d, 0xe0, 0x30, + 0xe5, 0x16, 0xa2, 0x10, 0x13, 0xe7, 0x10, 0xf5, 0x11, 0xe5, 0xf5, 0x13, + 0x92, 0x11, 0xe5, 0x1f, + 0xc3, 0x18, 0x45, 0x13, 0xf5, 0x23, 0x90, 0x18, 0x3d, 0x7d, 0x30, 0xe0, + 0x26, 0xe1, 0x10, 0xe5, + 0xe7, 0xa2, 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1e, 0x92, + 0x10, 0xe5, 0xe7, 0xa2, + 0xf5, 0x13, 0xe5, 0x10, 0x13, 0x11, 0x11, 0xf5, 0x1f, 0x92, 0x18, 0xe5, + 0x13, 0x13, 0x3f, 0x54, + 0x23, 0x45, 0x18, 0xf5, 0xf5, 0xe4, 0x90, 0x23, 0x66, 0x7c, 0x25, 0xe0, + 0xf0, 0x18, 0x18, 0x92, + 0x23, 0xe5, 0x11, 0x25, 0x11, 0xf5, 0x35, 0xe4, 0xf5, 0x10, 0xc2, 0x10, + 0xd3, 0x18, 0x11, 0xe5, + 0x00, 0x94, 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x2b, 0x40, 0x7c, 0x90, + 0xe0, 0x65, 0x11, 0x25, + 0x13, 0xf5, 0x7c, 0x90, 0xe0, 0x64, 0x10, 0x35, 0x12, 0xf5, 0xe5, 0xd3, + 0x94, 0x13, 0xe5, 0xff, + 0x94, 0x12, 0x40, 0x7f, 0x75, 0x08, 0x7f, 0x10, 0x11, 0x75, 0x80, 0xff, + 0x85, 0x18, 0x10, 0x12, + 0x13, 0x85, 0x80, 0x11, 0x90, 0x10, 0x64, 0x7c, 0xfe, 0xe0, 0xe0, 0xa3, + 0x11, 0x25, 0x11, 0xf5, + 0x10, 0xe5, 0xf5, 0x3e, 0x90, 0x10, 0x68, 0x7d, 0x10, 0xe5, 0xa3, 0xf0, + 0x11, 0xe5, 0xc3, 0xf0, + 0x10, 0xe5, 0x80, 0x64, 0x80, 0x94, 0x05, 0x50, 0xf5, 0xe4, 0xf5, 0x10, + 0x90, 0x11, 0x64, 0x7c, + 0x10, 0xe5, 0xa3, 0xf0, 0x11, 0xe5, 0xe4, 0xf0, 0x14, 0xf5, 0xe5, 0xd3, + 0x94, 0x11, 0xe5, 0xff, + 0x64, 0x10, 0x94, 0x80, 0x40, 0xcf, 0xe5, 0x15, 0x94, 0x14, 0x50, 0x03, + 0xe4, 0x0f, 0x11, 0x25, + 0x11, 0xf5, 0xf0, 0x74, 0x10, 0x35, 0x10, 0xf5, 0x14, 0x05, 0xde, 0x80, + 0x25, 0xe4, 0xff, 0x11, + 0x10, 0xe5, 0xd8, 0x34, 0xe7, 0xa2, 0xfe, 0x13, 0x13, 0xef, 0x12, 0xff, + 0x49, 0x45, 0x1a, 0x8e, + 0x1b, 0x8f, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7d, 0x90, + 0xe5, 0xa4, 0xf0, 0x1a, + 0xe5, 0xa3, 0xf0, 0x1b, 0x7d, 0x90, 0xe4, 0xa6, 0xa3, 0xf0, 0x14, 0xe5, + 0x7e, 0xf0, 0x7f, 0x7d, + 0x7d, 0xa4, 0x7c, 0x02, 0x12, 0x00, 0x57, 0x55, 0x14, 0x7b, 0x00, 0x7a, + 0x06, 0x7d, 0x06, 0x7f, + 0x54, 0x12, 0xa2, 0x8c, 0x92, 0xd1, 0xd0, 0xaf, 0x22, 0xd0, 0x61, 0x20, + 0x02, 0x03, 0x2c, 0x34, + 0x01, 0x7f, 0x25, 0x12, 0x90, 0xb1, 0x82, 0x7a, 0x27, 0x12, 0xef, 0x54, + 0x01, 0x24, 0xe4, 0xff, + 0xfe, 0x3e, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x7a, 0x90, 0x12, 0x82, + 0x8c, 0x27, 0x7a, 0x90, + 0x12, 0x82, 0x54, 0x27, 0x4d, 0xec, 0x4f, 0x4e, 0x0a, 0x70, 0x7a, 0x90, + 0x12, 0x82, 0x98, 0x27, + 0xff, 0xff, 0xff, 0xff, 0x52, 0x12, 0x30, 0x3a, 0x03, 0x3c, 0x4d, 0x12, + 0x30, 0xb5, 0x03, 0x3c, + 0x49, 0x12, 0x30, 0xe8, 0x03, 0x3e, 0x16, 0x12, 0x30, 0xf2, 0x03, 0x3e, + 0x3e, 0x12, 0x30, 0x30, + 0x03, 0x3e, 0x28, 0x12, 0x30, 0xd5, 0x03, 0x3e, 0x47, 0x12, 0x30, 0x34, + 0x03, 0x3e, 0x37, 0x12, + 0x30, 0xf4, 0x03, 0x24, 0x1d, 0x12, 0x20, 0x54, 0x09, 0x30, 0x3d, 0x20, + 0x90, 0x06, 0x80, 0x7a, + 0x60, 0xe0, 0x12, 0x03, 0xb2, 0x12, 0x24, 0x30, 0x12, 0x03, 0x3e, 0x1a, + 0x36, 0x30, 0x12, 0x03, + 0x67, 0x49, 0x3c, 0x30, 0x12, 0x03, 0xe3, 0x48, 0x29, 0x30, 0x12, 0x03, + 0xa4, 0x55, 0x46, 0x12, + 0x02, 0x9b, 0x92, 0x33, 0x01, 0x7f, 0x25, 0x12, 0x90, 0xb1, 0xaf, 0x7f, + 0x30, 0xe0, 0x03, 0xe1, + 0x33, 0x02, 0x90, 0x92, 0xb0, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0x1f, 0x7c, 0xfc, 0xe0, + 0xe0, 0xa3, 0xd3, 0xfd, 0xec, 0x9f, 0x40, 0x9e, 0x7f, 0x04, 0x80, 0x01, + 0x7f, 0x02, 0xef, 0x00, + 0xe0, 0x25, 0x33, 0xff, 0xe0, 0x95, 0xe4, 0xfe, 0xff, 0x2f, 0x34, 0xee, + 0xfe, 0x40, 0x7c, 0x90, + 0xe0, 0x1d, 0xa3, 0xfa, 0xfb, 0xe0, 0xb3, 0x64, 0x60, 0x4a, 0xeb, 0x0c, + 0xb2, 0x64, 0x60, 0x4a, + 0xeb, 0x06, 0xb4, 0x64, 0x70, 0x4a, 0x7a, 0x06, 0x7b, 0x00, 0x80, 0x01, + 0x7a, 0x04, 0x7b, 0x00, + 0xef, 0x00, 0xff, 0x2b, 0x3a, 0xee, 0x7f, 0x90, 0xf0, 0xe2, 0xef, 0xa3, + 0x90, 0xf0, 0xb0, 0x7f, + 0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0x9f, 0xed, 0x9e, 0xec, 0x6a, 0x40, + 0x7c, 0x90, 0xe0, 0x26, + 0x80, 0x94, 0x7c, 0x90, 0xe0, 0x25, 0x02, 0x94, 0x06, 0x50, 0x75, 0xe4, + 0x80, 0xf0, 0x69, 0x80, + 0x7c, 0x90, 0x74, 0x25, 0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x80, 0x7c, 0x90, + 0xe0, 0x1d, 0xa3, 0xfe, + 0xff, 0xe0, 0x40, 0x7d, 0x71, 0x7c, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x24, + 0x7f, 0x71, 0x7e, 0x03, + 0x12, 0x00, 0xf5, 0x53, 0x7c, 0x90, 0xe0, 0x1d, 0xa3, 0xfe, 0xff, 0xe0, + 0x94, 0xc3, 0xee, 0xdc, + 0x80, 0x64, 0x80, 0x94, 0x03, 0x40, 0x33, 0x02, 0xef, 0x92, 0x58, 0x24, + 0xee, 0xff, 0x03, 0x34, + 0x7d, 0xfe, 0x7c, 0x41, 0x12, 0x71, 0xf5, 0x53, 0x24, 0x7d, 0x71, 0x7c, + 0x07, 0x7f, 0x00, 0x7e, + 0x53, 0x12, 0x02, 0xf5, 0x92, 0x33, 0x90, 0xd3, 0x26, 0x7c, 0x94, 0xe0, + 0x90, 0x00, 0x25, 0x7c, + 0x94, 0xe0, 0x40, 0x00, 0x74, 0x0a, 0xf5, 0xff, 0x12, 0xf0, 0x4f, 0x26, + 0x33, 0x02, 0x7d, 0x92, + 0x7c, 0x24, 0x7f, 0x71, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, 0x33, 0x02, + 0x90, 0x92, 0x26, 0x7b, + 0x70, 0xe0, 0x7f, 0x24, 0x7e, 0x11, 0x12, 0x64, 0x56, 0x00, 0x7b, 0x90, + 0xee, 0x18, 0xa3, 0xf0, + 0xf0, 0xef, 0x10, 0x7f, 0x64, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x1a, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, + 0x90, 0xf0, 0x26, 0x7b, 0x01, 0x74, 0x90, 0xf0, 0x1c, 0x7b, 0x04, 0xe0, + 0xe0, 0xf0, 0x03, 0xb4, + 0xe4, 0x02, 0x90, 0xf0, 0x18, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0x14, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0x1a, 0x7b, 0xfd, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, + 0xcd, 0x16, 0xa3, 0xf0, + 0xf0, 0xed, 0x90, 0xe4, 0x12, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0x1c, 0x7b, + 0x24, 0xe0, 0x60, 0xfe, + 0x04, 0x3c, 0x71, 0x70, 0xef, 0xd3, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, + 0x90, 0x0c, 0x12, 0x7b, + 0xec, 0x74, 0xa3, 0xf0, 0x78, 0x74, 0x80, 0xf0, 0xd3, 0x5c, 0x7b, 0x90, + 0xe0, 0x19, 0x64, 0x94, + 0x7b, 0x90, 0xe0, 0x18, 0x00, 0x94, 0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, + 0xf0, 0xee, 0x74, 0xa3, + 0xf0, 0x08, 0x41, 0x80, 0xf2, 0x74, 0xa3, 0xf0, 0xea, 0x74, 0x80, 0xf0, + 0x90, 0x38, 0x18, 0x7b, + 0xfe, 0xe0, 0xe0, 0xa3, 0xd3, 0xff, 0xaa, 0x94, 0x94, 0xee, 0x40, 0x00, + 0x90, 0x0c, 0x12, 0x7b, + 0x13, 0x74, 0xa3, 0xf0, 0x88, 0x74, 0x80, 0xf0, 0xd3, 0x1c, 0x94, 0xef, + 0xee, 0x64, 0x00, 0x94, + 0x7b, 0x90, 0x40, 0x12, 0x74, 0x09, 0xf0, 0x11, 0x74, 0xa3, 0xf0, 0xf8, + 0x07, 0x80, 0x0d, 0x74, + 0xa3, 0xf0, 0x16, 0x74, 0x90, 0xf0, 0x12, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0xc3, 0xff, 0x9f, 0xe4, + 0xe4, 0xfd, 0xfc, 0x9e, 0x90, 0xc3, 0x17, 0x7b, 0x9d, 0xe0, 0x7b, 0x90, + 0xe0, 0x16, 0x50, 0x9c, + 0x80, 0x02, 0xc3, 0x01, 0x09, 0x92, 0xee, 0xc3, 0x80, 0x64, 0x80, 0x94, + 0x0c, 0x50, 0x09, 0x30, + 0x90, 0x27, 0x14, 0x7b, 0xff, 0x74, 0xf0, 0xf5, 0x1b, 0x80, 0x90, 0xd3, + 0x13, 0x7b, 0x94, 0xe0, + 0x90, 0x00, 0x12, 0x7b, 0x64, 0xe0, 0x94, 0x80, 0x40, 0x80, 0x20, 0x0d, + 0x0a, 0x09, 0x7b, 0x90, + 0xe4, 0x14, 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x7b, 0x90, 0xe0, 0x12, + 0xa3, 0xfe, 0xff, 0xe0, + 0x7b, 0x90, 0xee, 0x16, 0xf0, 0x8f, 0x26, 0x12, 0x90, 0x4f, 0x14, 0x7b, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x7d, 0xff, 0x7c, 0x11, 0x12, 0x64, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x16, + 0xa3, 0xfe, 0xff, 0xe0, + 0x10, 0x7d, 0x64, 0x7c, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2f, 0xe4, 0x55, + 0xfe, 0xff, 0x53, 0x02, + 0x90, 0xf5, 0xf3, 0x7a, 0x0a, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0x25, 0xe0, + 0x24, 0xe0, 0xf5, 0xfd, + 0xe4, 0x82, 0x30, 0x34, 0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfe, 0x93, 0x01, + 0xe4, 0xff, 0xfd, 0xfc, + 0x7a, 0x90, 0x12, 0xe5, 0x70, 0x27, 0x12, 0xd3, 0xf3, 0x26, 0x06, 0x40, + 0x7a, 0x90, 0x74, 0xf3, + 0xf0, 0x09, 0x7a, 0x90, 0xe0, 0xa8, 0xe0, 0x25, 0x07, 0x24, 0x82, 0xf5, + 0x34, 0xe4, 0xf5, 0x31, + 0xe4, 0x83, 0xfe, 0x93, 0x01, 0x74, 0xff, 0x93, 0xfc, 0xe4, 0x90, 0xfd, + 0xe5, 0x7a, 0x27, 0x12, + 0xd3, 0x70, 0x26, 0x12, 0x40, 0xf3, 0x90, 0x06, 0xf3, 0x7a, 0x08, 0x74, + 0x90, 0xf0, 0xa8, 0x7a, + 0x25, 0xe0, 0x24, 0xe0, 0xf5, 0x11, 0xe4, 0x82, 0x31, 0x34, 0x83, 0xf5, + 0x93, 0xe4, 0x74, 0xfe, + 0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, 0x7a, 0x90, 0x12, 0xe5, 0x70, 0x27, + 0x12, 0xd3, 0xf3, 0x26, + 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, 0xf0, 0x07, 0x7a, 0x90, 0xe0, 0xa8, + 0xe0, 0x25, 0x1b, 0x24, + 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x31, 0xe4, 0x83, 0xfe, 0x93, 0x01, 0x74, + 0xff, 0x93, 0xfc, 0xe4, + 0x90, 0xfd, 0xe5, 0x7a, 0x27, 0x12, 0xd3, 0x70, 0x26, 0x12, 0x40, 0xf3, + 0x90, 0x06, 0xf3, 0x7a, + 0x06, 0x74, 0x90, 0xf0, 0xa8, 0x7a, 0x25, 0xe0, 0x24, 0xe0, 0xf5, 0x25, + 0xe4, 0x82, 0x31, 0x34, + 0x83, 0xf5, 0x93, 0xe4, 0x74, 0xfe, 0x93, 0x01, 0xe4, 0xff, 0xfd, 0xfc, + 0x7a, 0x90, 0x12, 0xe5, + 0x70, 0x27, 0x12, 0xd3, 0xf3, 0x26, 0x06, 0x40, 0x7a, 0x90, 0x74, 0xf3, + 0xf0, 0x05, 0x90, 0xc3, + 0x0e, 0x7b, 0x94, 0xe0, 0x90, 0xb8, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x0b, + 0x90, 0x6e, 0xf3, 0x7a, + 0x94, 0xe0, 0x50, 0x0a, 0xe4, 0x1d, 0x7b, 0x90, 0xf0, 0x0a, 0xf0, 0xa3, + 0x7b, 0x90, 0xe0, 0x09, + 0xf0, 0x04, 0x94, 0xe0, 0x40, 0x06, 0x74, 0x42, 0xf0, 0x06, 0x7b, 0x90, + 0x74, 0x0c, 0xf0, 0x01, + 0x37, 0x80, 0x90, 0xe4, 0x09, 0x7b, 0x90, 0xf0, 0x0a, 0x7b, 0xf0, 0x75, + 0x12, 0x01, 0x4f, 0x26, + 0x7f, 0x90, 0xe0, 0x06, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0xd3, 0x0b, 0x7b, + 0x9f, 0xe0, 0x7b, 0x90, + 0xe0, 0x0a, 0x40, 0x9e, 0x90, 0x14, 0x06, 0x7f, 0xff, 0xe0, 0xe0, 0xa3, + 0x7b, 0x90, 0xcf, 0x0a, + 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0xe4, 0x0c, 0x7b, 0x90, 0xf0, 0x06, 0x7f, + 0x70, 0xe0, 0xa3, 0x02, + 0x70, 0xe0, 0x90, 0x08, 0x0c, 0x7b, 0x90, 0xf0, 0x09, 0x7b, 0x22, 0xf0, + 0x7f, 0x90, 0xe0, 0x67, + 0xe1, 0x20, 0x90, 0x0a, 0x17, 0x7f, 0x90, 0xe0, 0x97, 0x7f, 0x80, 0xf0, + 0x90, 0x08, 0x97, 0x7f, + 0x90, 0xe0, 0x17, 0x7f, 0x90, 0xf0, 0x97, 0x7f, 0xff, 0xe0, 0x7f, 0x90, + 0xe0, 0x95, 0x60, 0x6f, + 0xd3, 0x03, 0x01, 0x80, 0x92, 0xc3, 0x20, 0x24, 0x03, 0x24, 0x38, 0x02, + 0x90, 0xc4, 0x97, 0x7f, + 0x90, 0xe0, 0x95, 0x7f, 0xe0, 0xf0, 0x02, 0xb4, 0xe4, 0x23, 0x7b, 0x90, + 0xf0, 0x07, 0x7a, 0x90, + 0xf0, 0xb8, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xf7, 0xf0, 0xa3, 0x7a, 0x90, + 0xf0, 0xf9, 0xf0, 0xa3, + 0x7a, 0x90, 0xf0, 0xfb, 0xf0, 0xa3, 0x7a, 0x90, 0xf0, 0xfd, 0x1c, 0xc2, + 0x7f, 0x90, 0xe0, 0x95, + 0x64, 0xd3, 0x94, 0x80, 0x50, 0x81, 0x90, 0x45, 0x80, 0x7a, 0x01, 0x74, + 0x7d, 0xf0, 0x7c, 0x2f, + 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2e, 0xe4, 0x55, + 0xfe, 0xff, 0x53, 0x12, + 0xe4, 0xf5, 0x7b, 0x90, 0xf0, 0x08, 0x7a, 0x90, 0xf0, 0xba, 0xf0, 0xa3, + 0x7b, 0x90, 0xf0, 0x00, + 0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x02, 0xf0, 0xa3, 0x7b, 0x90, 0xf0, 0x04, + 0xf0, 0xa3, 0x7b, 0x90, + 0xf0, 0x06, 0x19, 0xc2, 0x7a, 0x90, 0x74, 0xd7, 0xf0, 0x03, 0x1d, 0xc2, + 0x90, 0xe4, 0x88, 0x7a, + 0xa3, 0xf0, 0x90, 0xf0, 0x95, 0x7f, 0xd3, 0xe0, 0x02, 0x94, 0x07, 0x40, + 0x94, 0xe0, 0x50, 0x10, + 0x80, 0x02, 0xc3, 0x01, 0x14, 0x92, 0x7a, 0x90, 0x74, 0xbf, 0xf0, 0x02, + 0x7f, 0x90, 0xe0, 0x95, + 0x64, 0xc3, 0x94, 0x80, 0x50, 0x88, 0xc2, 0x02, 0x90, 0x08, 0x95, 0x7f, + 0xc3, 0xe0, 0x80, 0x64, + 0x85, 0x94, 0x11, 0x50, 0x90, 0xe4, 0x0c, 0x7b, 0x90, 0xf0, 0x09, 0x7b, + 0x90, 0xf0, 0x0a, 0x7b, + 0xa3, 0xf0, 0x80, 0xf0, 0x90, 0x16, 0x0d, 0x7b, 0x75, 0xe4, 0x01, 0xf0, + 0x26, 0x12, 0x90, 0x4f, + 0x0d, 0x7b, 0x70, 0xe0, 0xa3, 0x02, 0x70, 0xe0, 0x74, 0x08, 0x90, 0xff, + 0x0d, 0x7b, 0xa3, 0xf0, + 0xc3, 0xf0, 0x7a, 0x90, 0xe0, 0x89, 0xff, 0x94, 0x7a, 0x90, 0xe0, 0x88, + 0xff, 0x94, 0x07, 0x50, + 0x75, 0xe4, 0x01, 0xf0, 0x26, 0x12, 0x20, 0x4f, 0x23, 0x14, 0x90, 0xd3, + 0x8b, 0x7a, 0x94, 0xe0, + 0x90, 0x28, 0x8a, 0x7a, 0x94, 0xe0, 0x40, 0x0a, 0x90, 0x0a, 0x67, 0x7f, + 0x30, 0xe0, 0x14, 0xe1, + 0x52, 0x02, 0x90, 0x99, 0x8a, 0x7a, 0x75, 0xe4, 0x01, 0xf0, 0x26, 0x02, + 0xe4, 0x4f, 0x7a, 0x90, + 0xf0, 0x8a, 0xf0, 0xa3, 0x7e, 0x22, 0x7f, 0x7a, 0x7c, 0x81, 0x7d, 0x7a, + 0x12, 0x82, 0xfa, 0x54, + 0x7e, 0x7e, 0xe9, 0x7f, 0x7f, 0x7c, 0x6d, 0x7d, 0x54, 0x12, 0x90, 0xfa, + 0xe9, 0x7e, 0x01, 0x74, + 0x90, 0xf0, 0xeb, 0x7e, 0x05, 0x74, 0x90, 0xf0, 0x66, 0x7f, 0xf0, 0xe4, + 0x74, 0xa3, 0xf0, 0x7f, + 0x7e, 0x90, 0xe4, 0xf2, 0xa3, 0xf0, 0x13, 0x74, 0x90, 0xf0, 0x23, 0x7f, + 0x64, 0x74, 0x90, 0xf0, + 0x1d, 0x7f, 0x4e, 0x74, 0x90, 0xf0, 0x1f, 0x7f, 0x1e, 0x74, 0x90, 0xf0, + 0x21, 0x7f, 0x8c, 0x74, + 0x90, 0xf0, 0x27, 0x7f, 0xc3, 0x74, 0x90, 0xf0, 0x25, 0x7f, 0x8c, 0x74, + 0x90, 0xf0, 0x29, 0x7f, + 0x46, 0x74, 0x90, 0xf0, 0x2b, 0x7f, 0x28, 0x74, 0x90, 0xf0, 0x33, 0x7f, + 0x05, 0x74, 0x90, 0xf0, + 0x2f, 0x7f, 0x28, 0x74, 0x90, 0xf0, 0x39, 0x7f, 0x04, 0x74, 0x90, 0xf0, + 0x37, 0x7f, 0x0f, 0x74, + 0x90, 0xf0, 0x35, 0x7f, 0x78, 0x74, 0x90, 0xf0, 0x3f, 0x7f, 0x02, 0x74, + 0x90, 0xf0, 0x3d, 0x7f, + 0x0f, 0x74, 0x90, 0xf0, 0x3b, 0x7f, 0x46, 0x74, 0x90, 0xf0, 0x51, 0x7f, + 0x29, 0x74, 0x90, 0xf0, + 0x4f, 0x7f, 0x3c, 0x74, 0x90, 0xf0, 0x4d, 0x7f, 0x8c, 0x74, 0x90, 0xf0, + 0x57, 0x7f, 0x0a, 0x74, + 0x90, 0xf0, 0x55, 0x7f, 0x14, 0x74, 0x90, 0xf0, 0x53, 0x7f, 0x1e, 0x74, + 0x90, 0xf0, 0x58, 0x7f, + 0xa8, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x7f, 0x90, 0x74, 0x5a, 0xf0, 0x34, + 0x74, 0xa3, 0xf0, 0x18, + 0x7f, 0x90, 0x74, 0x5c, 0xf0, 0x31, 0x74, 0xa3, 0xf0, 0x4a, 0x7f, 0x90, + 0x74, 0x5e, 0xf0, 0x2e, + 0x74, 0xa3, 0xf0, 0xd4, 0x7f, 0x90, 0x74, 0x60, 0xf0, 0x35, 0x74, 0xa3, + 0xf0, 0xf1, 0x7f, 0x90, + 0x74, 0x62, 0xf0, 0x35, 0x74, 0xa3, 0xf0, 0xf1, 0x7f, 0x90, 0x74, 0x64, + 0xf0, 0x3c, 0x74, 0xa3, + 0xf0, 0xf9, 0x7f, 0x90, 0x74, 0x06, 0xf0, 0x02, 0x74, 0xa3, 0xf0, 0x58, + 0x7f, 0x90, 0x74, 0x09, + 0xf0, 0x06, 0x7f, 0x90, 0x74, 0x0b, 0xf0, 0xb4, 0x7f, 0x90, 0x74, 0x0d, + 0xf0, 0x34, 0x7f, 0x90, + 0x74, 0x0f, 0xf0, 0x0c, 0x7f, 0x90, 0x74, 0x11, 0xf0, 0xfb, 0x7f, 0x90, + 0x74, 0x13, 0xf0, 0xe7, + 0x7f, 0x90, 0x74, 0x15, 0xf0, 0xce, 0x7f, 0x90, 0x74, 0x2d, 0xf0, 0x06, + 0x7e, 0x90, 0xe4, 0xf4, + 0xa3, 0xf0, 0x7f, 0x74, 0x90, 0xf0, 0x69, 0x7f, 0xff, 0x74, 0x90, 0xf0, + 0x81, 0x7a, 0x02, 0x74, + 0x22, 0xf0, 0x7b, 0x90, 0xe0, 0x4b, 0xf0, 0x04, 0xd3, 0xe0, 0x2f, 0x94, + 0x58, 0x40, 0x7e, 0x90, + 0xe0, 0xf3, 0xe0, 0x25, 0x90, 0xff, 0xf2, 0x7e, 0x33, 0xe0, 0xef, 0xfe, + 0x01, 0x24, 0xe4, 0xff, + 0xfe, 0x3e, 0x7b, 0x90, 0xe0, 0x58, 0x9f, 0xc3, 0xe4, 0xff, 0x90, 0x9e, + 0x59, 0x7b, 0xa3, 0xf0, + 0xf0, 0xef, 0x90, 0xe4, 0x58, 0x7b, 0x90, 0xf0, 0x56, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0x4b, 0x7b, + 0x90, 0xf0, 0x67, 0x7f, 0x30, 0xe0, 0x0f, 0xe4, 0x7b, 0x90, 0xe0, 0x59, + 0xa3, 0xfe, 0xff, 0xe0, + 0x27, 0x7d, 0x55, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xf2, 0x7e, 0xfe, 0xe0, + 0xe0, 0xa3, 0x7d, 0xff, + 0x7c, 0x16, 0x12, 0x52, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x4b, 0x20, 0x24, + 0xe4, 0xff, 0x52, 0x34, + 0x90, 0xfe, 0x4c, 0x7b, 0xa3, 0xf0, 0xf0, 0xef, 0x00, 0x12, 0x90, 0x56, + 0x4e, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0xc3, 0xf0, 0x64, 0xee, 0x94, 0x80, 0x50, 0x80, 0x90, 0x15, + 0x4e, 0x7b, 0xfe, 0xe0, + 0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, 0xe4, 0xff, 0x90, 0x9e, 0x4e, 0x7b, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7b, 0x90, 0xe0, 0x4f, 0x04, 0x24, 0x90, 0xff, 0x4e, 0x7b, 0x34, 0xe0, + 0xfe, 0x00, 0x78, 0xef, + 0xce, 0x03, 0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf8, 0x7b, 0x90, + 0xee, 0x4e, 0xa3, 0xf0, + 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x50, 0x7b, 0x90, + 0xef, 0x51, 0x90, 0xf0, + 0x4b, 0x7b, 0x30, 0xe0, 0x71, 0xe0, 0x7b, 0x90, 0xe0, 0x51, 0x90, 0xff, + 0x50, 0x7b, 0xfe, 0xe0, + 0x9f, 0xc3, 0x0c, 0x40, 0x7b, 0x90, 0xee, 0x52, 0x90, 0xf0, 0x53, 0x7b, + 0xf0, 0xef, 0x0d, 0x80, + 0x7b, 0x90, 0xe0, 0x51, 0x7b, 0x90, 0xf0, 0x52, 0x7b, 0x90, 0xee, 0x53, + 0x90, 0xf0, 0x53, 0x7b, + 0xff, 0xe0, 0x00, 0x7e, 0x00, 0x7c, 0x6a, 0x7d, 0x26, 0x12, 0xac, 0x3d, + 0xad, 0x06, 0x90, 0x07, + 0x52, 0x7b, 0x7f, 0xe0, 0xfe, 0x00, 0x2d, 0xef, 0xec, 0xff, 0xfe, 0x3e, + 0x7b, 0x90, 0xf0, 0x54, + 0xef, 0xa3, 0xc3, 0xf0, 0x7b, 0x90, 0xe0, 0x57, 0x90, 0x9f, 0x56, 0x7b, + 0x9e, 0xe0, 0x17, 0x50, + 0x7b, 0x90, 0xe0, 0x54, 0xa3, 0xff, 0x90, 0xe0, 0x56, 0x7b, 0xf0, 0xcf, + 0xef, 0xa3, 0x90, 0xf0, + 0x4b, 0x7b, 0x90, 0xe0, 0x58, 0x7b, 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0x98, + 0x33, 0xa3, 0x17, 0x92, + 0x17, 0x20, 0xe4, 0x05, 0x22, 0xf5, 0x23, 0xf5, 0x12, 0x7f, 0x11, 0x7e, + 0x00, 0x12, 0x90, 0x56, + 0x90, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x90, 0x7a, 0xc4, 0xe0, + 0x07, 0x54, 0x7a, 0x90, + 0xf0, 0x92, 0x01, 0x64, 0x0a, 0x60, 0xff, 0xe0, 0x02, 0x64, 0x04, 0x60, + 0xb4, 0xef, 0x04, 0x05, + 0x01, 0x7f, 0x02, 0x80, 0x00, 0x7f, 0x7a, 0x90, 0xef, 0x92, 0x90, 0xf0, + 0xa8, 0x7a, 0xff, 0xe0, + 0x00, 0x7e, 0x11, 0x7d, 0x51, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xa9, 0x7a, + 0xff, 0xe0, 0x00, 0x7e, + 0x10, 0x7d, 0x51, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xf2, 0x7e, 0xf0, 0xe4, + 0x74, 0xa3, 0xf0, 0x13, + 0x10, 0x7d, 0x52, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x90, 0xf5, + 0xf2, 0x7e, 0xfe, 0xe0, + 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x16, 0x12, 0x52, 0xf5, 0x53, 0x17, 0x7d, + 0x52, 0x7c, 0x00, 0x7f, + 0x06, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x10, 0x7f, 0x54, 0x7e, 0x01, + 0x12, 0x00, 0xf5, 0x53, + 0x10, 0x7d, 0x53, 0x7c, 0x40, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x2e, 0xe4, 0x55, + 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x2f, 0xe4, 0x55, 0xfe, 0xff, + 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x27, 0xe4, 0x55, 0xfe, 0xff, 0x53, 0x12, 0x90, 0xf5, 0xa8, 0x7a, + 0xff, 0xe0, 0xe0, 0x25, + 0xeb, 0x24, 0x82, 0xf5, 0x34, 0xe4, 0xf5, 0x30, 0xe4, 0x83, 0xfd, 0x93, + 0x01, 0x74, 0x90, 0x93, + 0x47, 0x7b, 0xf0, 0xcd, 0xed, 0xa3, 0xef, 0xf0, 0x30, 0x90, 0x93, 0xfb, + 0x7b, 0x90, 0xf0, 0x3f, + 0x7a, 0x90, 0xe0, 0xa9, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x10, 0x12, 0x91, + 0xf5, 0x53, 0x7f, 0x90, + 0xe0, 0x71, 0xfe, 0x64, 0x0b, 0x60, 0xff, 0xe0, 0x00, 0x7e, 0x12, 0x7d, + 0x92, 0x7c, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x15, 0x7f, 0x56, 0x7e, 0x01, 0x12, 0x00, 0xf5, 0x53, + 0x15, 0x7d, 0x56, 0x7c, + 0xff, 0xe4, 0x12, 0xfe, 0xf5, 0x53, 0x2a, 0x7d, 0x67, 0x7c, 0x0b, 0x7f, + 0x00, 0x7e, 0x53, 0x12, + 0xc2, 0xf5, 0x22, 0x58, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, + 0x7a, 0x90, 0xe0, 0xe1, + 0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xee, 0xe3, 0xa3, 0xf0, 0xf0, 0xef, + 0x02, 0x78, 0xc3, 0xce, + 0xce, 0x13, 0xd8, 0x13, 0xff, 0xf9, 0x90, 0xc3, 0xe2, 0x7a, 0x9f, 0xe0, + 0x90, 0xf0, 0xe1, 0x7a, + 0x9e, 0xe0, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x7f, 0xd0, 0x7e, 0x12, + 0x12, 0x55, 0x56, 0x00, + 0x7a, 0x90, 0xef, 0xeb, 0x90, 0xf0, 0xe9, 0x7a, 0xf0, 0xe4, 0x74, 0xa3, + 0xf0, 0x19, 0x7f, 0x90, + 0xe0, 0x95, 0x64, 0xd3, 0x94, 0x80, 0x50, 0x85, 0x90, 0x09, 0xe9, 0x7a, + 0xf0, 0xe4, 0x74, 0xa3, + 0xf0, 0x37, 0x7a, 0x90, 0xe0, 0xe9, 0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, + 0xe0, 0xeb, 0x7c, 0xfd, + 0x12, 0x00, 0x3d, 0x26, 0x7a, 0x90, 0xee, 0xe9, 0xa3, 0xf0, 0xf0, 0xef, + 0x7a, 0x90, 0xe0, 0xe9, + 0xa3, 0xfe, 0x78, 0xe0, 0xce, 0x04, 0xe7, 0xa2, 0xce, 0x13, 0xd8, 0x13, + 0xf0, 0xf8, 0x90, 0xee, + 0xe9, 0x7a, 0x90, 0xf0, 0xe3, 0x7a, 0xfa, 0xe0, 0xe0, 0xa3, 0xff, 0xfb, + 0x02, 0xae, 0xfc, 0xe4, + 0x90, 0xfd, 0xe5, 0x7a, 0x27, 0x12, 0x90, 0x8c, 0xe9, 0x7a, 0xfe, 0xe0, + 0xe0, 0xa3, 0xd3, 0xff, + 0x9f, 0xeb, 0x9e, 0xea, 0x7a, 0x90, 0x40, 0xe5, 0x12, 0x26, 0x54, 0x27, + 0x06, 0xc0, 0x07, 0xc0, + 0x7a, 0x90, 0xe0, 0xe9, 0xa3, 0xfe, 0xfb, 0xe0, 0x06, 0xaa, 0x33, 0xea, + 0xe0, 0x95, 0xf8, 0xf9, + 0x07, 0xd0, 0x06, 0xd0, 0x26, 0x12, 0x90, 0x88, 0xe5, 0x7a, 0x27, 0x12, + 0x80, 0x8c, 0x12, 0x07, + 0x98, 0x27, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x90, 0xe0, 0xeb, 0x94, 0xc3, + 0x50, 0x58, 0x90, 0x38, + 0xe5, 0x7a, 0x27, 0x12, 0x90, 0x70, 0xeb, 0x7a, 0xc3, 0xe0, 0x24, 0x13, + 0xff, 0x2c, 0xfc, 0xe4, + 0xfe, 0xfd, 0x26, 0x12, 0x90, 0x96, 0xe5, 0x7a, 0x27, 0x12, 0x90, 0x8c, + 0xe5, 0x7a, 0x27, 0x12, + 0xc0, 0x54, 0x90, 0x07, 0xeb, 0x7a, 0xfb, 0xe0, 0xfa, 0xe4, 0xf8, 0xf9, + 0x07, 0xd0, 0x50, 0x12, + 0x90, 0x3b, 0xe5, 0x7a, 0x27, 0x12, 0x22, 0x8c, 0x7f, 0x90, 0xe0, 0x95, + 0x64, 0xc3, 0x94, 0x80, + 0x50, 0x84, 0x12, 0x21, 0xc4, 0x54, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x90, 0xe4, + 0xe1, 0x7a, 0xa3, 0xf0, 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x12, 0xd0, + 0xe0, 0x55, 0x90, 0xe4, + 0xa0, 0x7a, 0x22, 0xf0, 0x7a, 0x90, 0x12, 0x98, 0x70, 0x27, 0x7a, 0x90, + 0xe0, 0xb0, 0xa3, 0xfe, + 0xff, 0xe0, 0xfc, 0xe4, 0x12, 0xfd, 0x7b, 0x26, 0x7a, 0x90, 0x12, 0x98, + 0x8c, 0x27, 0x7a, 0x90, + 0x12, 0x9c, 0x70, 0x27, 0x7a, 0x90, 0xe0, 0xaa, 0xa3, 0xfe, 0xff, 0xe0, + 0xfc, 0xe4, 0x12, 0xfd, + 0x7b, 0x26, 0x7a, 0x90, 0x12, 0x9c, 0x8c, 0x27, 0x7a, 0x90, 0xe4, 0x96, + 0xf0, 0x75, 0x12, 0x01, + 0x4f, 0x26, 0x7a, 0x90, 0xe0, 0x96, 0x01, 0x54, 0xe0, 0xf0, 0xa3, 0xfe, + 0xff, 0xe0, 0x70, 0x4e, + 0x7d, 0x04, 0x80, 0x01, 0x7d, 0x02, 0x90, 0x00, 0xa0, 0x7a, 0xf0, 0xed, + 0x01, 0xbe, 0xbf, 0x06, + 0x03, 0xfd, 0x3d, 0x12, 0x90, 0x0c, 0x96, 0x7a, 0xb4, 0xe0, 0x08, 0x01, + 0xe0, 0xa3, 0xfe, 0xb4, + 0x12, 0x03, 0x99, 0x36, 0x7a, 0x90, 0xe0, 0x96, 0x01, 0xb4, 0xa3, 0x08, + 0xb4, 0xe0, 0x03, 0xff, + 0x40, 0x12, 0x90, 0x5f, 0xa0, 0x7a, 0x60, 0xe0, 0x12, 0x69, 0xe0, 0x55, + 0x7a, 0x90, 0xe0, 0xbf, + 0x0b, 0x60, 0x90, 0xe4, 0xbe, 0x7a, 0x90, 0xf0, 0xbf, 0x7a, 0x14, 0xe0, + 0x90, 0xf0, 0x9c, 0x7a, + 0x27, 0x12, 0x78, 0x54, 0x12, 0x08, 0x1a, 0x27, 0x7a, 0x90, 0xe0, 0x94, + 0xff, 0x2f, 0x7a, 0x90, + 0xe0, 0x93, 0x90, 0x3e, 0xa1, 0x7a, 0xa3, 0xf0, 0xf0, 0xef, 0x7a, 0x90, + 0x12, 0x98, 0x54, 0x27, + 0x05, 0x78, 0x27, 0x12, 0x90, 0x1a, 0xa3, 0x7a, 0xf0, 0xee, 0xa3, 0xfc, + 0xf0, 0xef, 0x90, 0xfd, + 0x09, 0x7f, 0xff, 0xe0, 0x00, 0x7e, 0x26, 0x12, 0xef, 0x3d, 0x06, 0x78, + 0xa2, 0xce, 0x13, 0xe7, + 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0xa3, 0x7a, 0xf0, 0xee, 0xef, 0xa3, + 0x12, 0xf0, 0xc4, 0x54, + 0x23, 0xd2, 0x7f, 0x22, 0x7e, 0x03, 0x12, 0x60, 0x56, 0x00, 0x7c, 0x90, + 0xef, 0x0a, 0x20, 0xf0, + 0x03, 0xe1, 0x40, 0x02, 0x7f, 0x5e, 0x7e, 0x07, 0x12, 0x66, 0x56, 0x00, + 0x7c, 0x90, 0xef, 0x0b, + 0xf4, 0xf0, 0x7e, 0xff, 0x7d, 0x00, 0x7c, 0x05, 0x12, 0x66, 0xf5, 0x53, + 0x7c, 0x90, 0xe0, 0x0b, + 0xe0, 0x20, 0x02, 0x03, 0x5e, 0x40, 0x23, 0x7f, 0x71, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0x27, 0x7c, + 0xf0, 0xef, 0x94, 0xd3, 0x40, 0x17, 0x02, 0x03, 0x4e, 0x40, 0x90, 0xc3, + 0x0f, 0x7c, 0x94, 0xe0, + 0x50, 0x40, 0x02, 0x03, 0x42, 0x40, 0x70, 0x7d, 0x71, 0x7c, 0xff, 0xe4, + 0x12, 0xfe, 0xf5, 0x53, + 0x3d, 0x7f, 0x71, 0x7e, 0x00, 0x12, 0xbe, 0x56, 0x0b, 0x01, 0x42, 0xbf, + 0x7d, 0x08, 0x7c, 0x3d, + 0x7f, 0x71, 0x80, 0x52, 0x7f, 0x1d, 0x7e, 0x3d, 0x12, 0x71, 0x56, 0x00, + 0x01, 0xbe, 0xbf, 0x0d, + 0x0a, 0x52, 0x3d, 0x7d, 0x71, 0x7c, 0x42, 0x7f, 0x00, 0x7e, 0x08, 0x80, + 0x3d, 0x7d, 0x71, 0x7c, + 0x42, 0x7f, 0x01, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1b, 0xe4, 0x71, + 0xfe, 0xff, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x03, 0x12, 0x00, 0xf5, 0x53, + 0x1d, 0x7d, 0x71, 0x7c, + 0x02, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x00, 0x83, 0x00, 0x00, + 0x0b, 0x38, 0x00, 0x01, + 0x86, 0x1e, 0x7c, 0x1d, 0x7f, 0x71, 0x7e, 0x0c, 0x12, 0x00, 0xf5, 0x53, + 0x1d, 0x7d, 0x71, 0x7c, + 0x08, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1d, 0x7f, 0x71, + 0x7e, 0x30, 0x12, 0x00, + 0xf5, 0x53, 0x1d, 0x7d, 0x71, 0x7c, 0x20, 0x7f, 0x00, 0x7e, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x1d, + 0xe4, 0x71, 0xfe, 0xff, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x1b, 0x7f, 0x71, + 0x7e, 0xff, 0x12, 0x00, + 0xf5, 0x53, 0x0c, 0x80, 0x7c, 0x90, 0xe4, 0x0f, 0xf0, 0x75, 0x12, 0x01, + 0x4f, 0x26, 0x07, 0x80, + 0x90, 0xe4, 0x0f, 0x7c, 0xa3, 0xf0, 0x12, 0xf0, 0xc6, 0x00, 0x31, 0x12, + 0x12, 0xdb, 0x5b, 0x0e, + 0x90, 0x22, 0xe5, 0x7a, 0x27, 0x12, 0xef, 0x54, 0x02, 0x78, 0xc3, 0xce, + 0xce, 0x13, 0xd8, 0x13, + 0xff, 0xf9, 0x7a, 0x90, 0xee, 0xee, 0xa3, 0xf0, 0xf0, 0xef, 0x08, 0x24, + 0xe4, 0xff, 0xfe, 0x3e, + 0x54, 0xef, 0xff, 0xf0, 0x7a, 0x90, 0xee, 0xee, 0xa3, 0xf0, 0xf0, 0xef, + 0x94, 0xd3, 0xee, 0xff, + 0x80, 0x64, 0x80, 0x94, 0x09, 0x40, 0x7a, 0x90, 0xe4, 0xee, 0xa3, 0xf0, + 0xff, 0x74, 0x90, 0xf0, + 0x95, 0x7f, 0xd3, 0xe0, 0x80, 0x64, 0x85, 0x94, 0x09, 0x50, 0x7a, 0x90, + 0xe4, 0xee, 0xa3, 0xf0, + 0xff, 0x74, 0x90, 0xf0, 0x95, 0x7f, 0xc3, 0xe0, 0x80, 0x64, 0x89, 0x94, + 0x09, 0x40, 0x7a, 0x90, + 0xe4, 0xee, 0xa3, 0xf0, 0x10, 0x74, 0x90, 0xf0, 0xf0, 0x7a, 0xff, 0xe0, + 0x7a, 0x90, 0xe0, 0xee, + 0xa3, 0xfc, 0xfd, 0xe0, 0x9f, 0xd3, 0x80, 0x74, 0xec, 0xf8, 0x80, 0x64, + 0x50, 0x98, 0x90, 0x06, + 0x0c, 0x7b, 0x70, 0xe0, 0x90, 0x05, 0xf0, 0x7a, 0xf0, 0xed, 0x7a, 0x90, + 0xe0, 0xf1, 0x90, 0xff, + 0xf0, 0x7a, 0xd3, 0xe0, 0x50, 0x9f, 0x80, 0x02, 0xc3, 0x01, 0x0b, 0x92, + 0x0b, 0x30, 0x90, 0x05, + 0xf0, 0x7a, 0xf0, 0xef, 0x7a, 0x90, 0xe0, 0xf0, 0x7a, 0x90, 0xf0, 0xeb, + 0xff, 0xe0, 0x02, 0x24, + 0x13, 0x13, 0x3f, 0x54, 0x7a, 0x90, 0xf0, 0xec, 0xd3, 0xef, 0x80, 0x94, + 0x03, 0x40, 0x20, 0x74, + 0x30, 0xf0, 0x08, 0x0b, 0x7a, 0x90, 0xe0, 0xf2, 0x7a, 0x90, 0xf0, 0xec, + 0x90, 0xc3, 0x0e, 0x7b, + 0x94, 0xe0, 0x90, 0xf4, 0x0d, 0x7b, 0x94, 0xe0, 0x40, 0x01, 0x90, 0x2b, + 0x67, 0x7f, 0x30, 0xe0, + 0x24, 0xe1, 0x7f, 0x90, 0xe0, 0x66, 0x30, 0xa3, 0x1c, 0xe0, 0x7a, 0x90, + 0xe0, 0xeb, 0x7e, 0xff, + 0x7d, 0x00, 0x7c, 0x12, 0x12, 0x55, 0xf5, 0x53, 0x7a, 0x90, 0xe0, 0xec, + 0x7e, 0xff, 0x7d, 0x00, + 0x7c, 0x13, 0x12, 0x55, 0xf5, 0x53, 0x90, 0x22, 0x88, 0x7d, 0x75, 0xe4, + 0x01, 0xf0, 0x26, 0x12, + 0x7f, 0x4f, 0x7e, 0x17, 0x12, 0x93, 0x56, 0x00, 0x7b, 0x90, 0xee, 0xbd, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7b, 0x90, 0xe0, 0xbd, 0x54, 0xc4, 0xff, 0x0f, 0x00, 0x7e, 0x7b, 0x90, + 0xee, 0xe9, 0xa3, 0xf0, + 0xf0, 0xef, 0x90, 0xfd, 0xbd, 0x7b, 0x54, 0xe0, 0xf0, 0x0f, 0xed, 0xd3, + 0x04, 0x94, 0x94, 0xe4, + 0x50, 0x00, 0x90, 0x21, 0xe9, 0x7b, 0xe0, 0xa3, 0x90, 0xff, 0xbd, 0x7b, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x07, 0xa8, 0x80, 0x08, 0xc3, 0x05, 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, + 0xee, 0xf0, 0x7b, 0x90, + 0xf0, 0xbd, 0x08, 0x80, 0xff, 0x74, 0x7b, 0x90, 0xf0, 0xbd, 0xf0, 0xa3, + 0x16, 0x7f, 0x93, 0x7e, + 0x00, 0x12, 0x90, 0x56, 0xd3, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, + 0xd3, 0x7b, 0xc4, 0xe0, + 0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, 0xe9, 0x7b, 0xf0, 0xee, 0xef, 0xa3, + 0xfd, 0xf0, 0x7b, 0x90, + 0xe0, 0xd3, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, + 0x21, 0x50, 0x7b, 0x90, + 0xa3, 0xe9, 0xff, 0xe0, 0x7b, 0x90, 0xe0, 0xd3, 0xa3, 0xfe, 0xa8, 0xe0, + 0x08, 0x07, 0x05, 0x80, + 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0xf0, 0xf9, 0x90, 0xee, 0xd3, 0x7b, + 0x80, 0xf0, 0x74, 0x08, + 0x90, 0xff, 0xd3, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, 0xbd, 0x7b, 0xfe, 0xe0, + 0xe0, 0xa3, 0xc3, 0xff, + 0x7b, 0x90, 0xe0, 0xd4, 0xff, 0x9f, 0x7b, 0x90, 0xe0, 0xd3, 0x90, 0x9e, + 0x8a, 0x7d, 0xf0, 0x8f, + 0x26, 0x12, 0x30, 0x4f, 0x0a, 0xd7, 0x7d, 0x90, 0xe4, 0x8c, 0xf0, 0x75, + 0x12, 0x01, 0x4f, 0x26, + 0x8e, 0x22, 0x8f, 0x2f, 0xe5, 0x30, 0x45, 0x30, 0x70, 0x2f, 0x7e, 0x05, + 0x7f, 0xff, 0x22, 0xff, + 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, 0xaf, 0xc2, 0x7c, 0x90, 0x74, 0x58, + 0xf0, 0x06, 0x2f, 0xae, + 0x30, 0xaf, 0xfc, 0xe4, 0xfb, 0xfd, 0x40, 0x7a, 0xf8, 0xf9, 0x12, 0xd3, + 0xf3, 0x26, 0x13, 0x40, + 0x30, 0xe5, 0xe0, 0x25, 0x30, 0xf5, 0x2f, 0xe5, 0xf5, 0x33, 0x90, 0x2f, + 0x58, 0x7c, 0x14, 0xe0, + 0x80, 0xf0, 0xae, 0xdb, 0xaf, 0x2f, 0xe4, 0x30, 0xfd, 0xfc, 0x7a, 0xfb, + 0xf9, 0x80, 0xd3, 0xf8, + 0x26, 0x12, 0x50, 0xf3, 0xe5, 0x13, 0xc3, 0x2f, 0xf5, 0x13, 0xe5, 0x2f, + 0x13, 0x30, 0x30, 0xf5, + 0x7c, 0x90, 0xe0, 0x58, 0xf0, 0x04, 0xdb, 0x80, 0x2f, 0xae, 0x30, 0xaf, + 0xfc, 0xe4, 0x90, 0xfd, + 0x4e, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x4e, 0x7c, 0x27, 0x12, 0x78, 0x54, + 0x12, 0x02, 0x41, 0x27, + 0x2f, 0xe4, 0xee, 0xff, 0x80, 0x34, 0xed, 0xfe, 0xfe, 0x34, 0xec, 0xfd, + 0xff, 0x34, 0x90, 0xfc, + 0x4e, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x56, 0x7c, 0x55, 0x74, 0xa3, 0xf0, + 0x1f, 0x74, 0x12, 0xf0, + 0xdb, 0x4a, 0x7c, 0x90, 0xe0, 0x58, 0x33, 0xff, 0xe0, 0x95, 0xfd, 0xfe, + 0x78, 0xfc, 0x12, 0x0f, + 0x41, 0x27, 0x7c, 0x90, 0x12, 0x52, 0x70, 0x27, 0x26, 0x12, 0xef, 0x7b, + 0x10, 0x24, 0xe4, 0xff, + 0xfe, 0x3e, 0x3d, 0xe4, 0xe4, 0xfd, 0xfc, 0x3c, 0x05, 0x78, 0x27, 0x12, + 0xa2, 0x2d, 0x92, 0xd1, + 0xd0, 0xaf, 0x22, 0xd0, 0x7f, 0x90, 0xe0, 0x67, 0xe3, 0x20, 0x02, 0x03, + 0xe1, 0x43, 0x7a, 0x90, + 0xe0, 0xc0, 0xa3, 0xfe, 0xff, 0xe0, 0x7b, 0x90, 0xee, 0xed, 0xfc, 0xf0, + 0xef, 0xa3, 0xfd, 0xf0, + 0x7a, 0x90, 0xe0, 0xc6, 0x00, 0x7e, 0x03, 0x54, 0x02, 0x78, 0x33, 0xc3, + 0x33, 0xce, 0xd8, 0xce, + 0xff, 0xf9, 0x7a, 0x90, 0xe0, 0xc5, 0x03, 0x54, 0xee, 0xfb, 0xeb, 0xfa, + 0xfb, 0x4f, 0x7a, 0x90, + 0xe0, 0xc7, 0x03, 0x54, 0xf8, 0xc4, 0x0f, 0x54, 0x68, 0xc8, 0xe4, 0xff, + 0x54, 0xc4, 0x48, 0xf0, + 0xfa, 0x4a, 0x4b, 0xef, 0x90, 0xfb, 0xc8, 0x7a, 0x7e, 0xe0, 0x54, 0x00, + 0x78, 0x01, 0xc3, 0x06, + 0xce, 0x33, 0xce, 0x33, 0xf9, 0xd8, 0xee, 0xff, 0xfa, 0x4a, 0x4b, 0xef, + 0x90, 0xfb, 0xc9, 0x7a, + 0x7e, 0xe0, 0x54, 0x00, 0x78, 0x01, 0xc3, 0x07, 0xce, 0x33, 0xce, 0x33, + 0xf9, 0xd8, 0xee, 0xff, + 0xfa, 0x4a, 0x4b, 0xef, 0x90, 0xfb, 0xca, 0x7a, 0x54, 0xe0, 0x4a, 0x01, + 0x90, 0xfa, 0xcb, 0x7a, + 0x54, 0xe0, 0x25, 0x01, 0x4a, 0xe0, 0x90, 0xfa, 0xcc, 0x7a, 0x54, 0xe0, + 0x25, 0x01, 0x25, 0xe0, + 0x4a, 0xe0, 0xeb, 0xfe, 0x90, 0xff, 0xc0, 0x7a, 0xf0, 0xee, 0xef, 0xa3, + 0x6d, 0xf0, 0x02, 0x70, + 0x6c, 0xee, 0x0f, 0x60, 0x7a, 0x90, 0xe0, 0xc0, 0xa3, 0xfe, 0xff, 0xe0, + 0x10, 0x7d, 0x53, 0x7c, + 0x53, 0x12, 0x22, 0xf5, 0x17, 0x7f, 0x53, 0x7e, 0x00, 0x12, 0x90, 0x56, + 0xb2, 0x7a, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0xb2, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0xed, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0xc3, 0xf0, 0x94, 0xee, 0x40, 0x40, 0x90, 0x0a, 0xed, 0x7b, + 0x3f, 0x74, 0xa3, 0xf0, + 0xff, 0x74, 0x90, 0xf0, 0xed, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, + 0x40, 0x7b, 0x8f, 0xee, + 0x12, 0xf0, 0x4f, 0x26, 0x7b, 0x90, 0xe0, 0x3c, 0x94, 0xc3, 0x40, 0x03, + 0xc0, 0x70, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0x40, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, + 0x12, 0xff, 0x4f, 0x42, + 0x90, 0xc3, 0x48, 0x7b, 0x9f, 0xe0, 0x90, 0xff, 0x47, 0x7b, 0x9e, 0xe0, + 0xef, 0xfe, 0x05, 0x78, + 0xa2, 0xce, 0x13, 0xe7, 0x13, 0xce, 0xf8, 0xd8, 0x90, 0xff, 0x45, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, + 0xa2, 0xf0, 0x92, 0xd1, 0xd0, 0xaf, 0x90, 0xd0, 0x3f, 0x7b, 0xff, 0xe0, + 0x95, 0x33, 0xfe, 0xe0, + 0x7b, 0x90, 0xe0, 0x46, 0xff, 0x2f, 0x7b, 0x90, 0xe0, 0x45, 0x90, 0x3e, + 0x5d, 0x7b, 0xa3, 0xf0, + 0xf0, 0xef, 0x7b, 0x90, 0xe0, 0x5e, 0x7b, 0x90, 0xf0, 0x44, 0x7b, 0x90, + 0xe0, 0x5d, 0x06, 0x60, + 0x7b, 0x90, 0x74, 0x44, 0xf0, 0xff, 0x90, 0xe4, 0x40, 0x7b, 0xa3, 0xf0, + 0x22, 0xf0, 0x2d, 0x12, + 0x90, 0xf1, 0x0c, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, 0xc3, 0xfb, 0x03, 0x94, + 0x05, 0x40, 0xf0, 0xe4, + 0x45, 0x02, 0x90, 0x3e, 0x67, 0x7f, 0x20, 0xe0, 0x03, 0xe5, 0x45, 0x02, + 0xc0, 0x3e, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, 0xaf, 0xaf, 0xae, 0x1b, 0xad, 0x1a, 0xac, 0x19, + 0x90, 0x18, 0x11, 0x7c, + 0x27, 0x12, 0xaf, 0x8c, 0xae, 0x27, 0xad, 0x26, 0xac, 0x25, 0x90, 0x24, + 0x15, 0x7c, 0x27, 0x12, + 0xae, 0x8c, 0xaf, 0x22, 0xe4, 0x23, 0xfd, 0xfc, 0x7c, 0x90, 0x12, 0x19, + 0x8c, 0x27, 0xb4, 0xeb, + 0x1f, 0x01, 0x16, 0x7f, 0x66, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x0d, 0x7c, + 0xf0, 0xee, 0xef, 0xa3, + 0x12, 0xf0, 0x4f, 0x42, 0x7d, 0x90, 0xee, 0x68, 0xa3, 0xf0, 0xf0, 0xef, + 0x0e, 0x12, 0x80, 0x5b, + 0x12, 0x03, 0xc6, 0x00, 0x7c, 0x90, 0x12, 0x11, 0x54, 0x27, 0x1b, 0x8f, + 0x1a, 0x8e, 0x19, 0x8d, + 0x18, 0x8c, 0x7c, 0x90, 0x12, 0x15, 0x54, 0x27, 0x27, 0x8f, 0x26, 0x8e, + 0x25, 0x8d, 0x24, 0x8c, + 0x7c, 0x90, 0x12, 0x19, 0x54, 0x27, 0x22, 0x8e, 0x23, 0x8f, 0xd1, 0xa2, + 0xaf, 0x92, 0xd0, 0xd0, + 0x05, 0x7d, 0x66, 0x7c, 0xfe, 0x7f, 0xff, 0x7e, 0x53, 0x02, 0xc0, 0xf5, + 0xa2, 0xd0, 0x92, 0xaf, + 0xc2, 0xd1, 0xee, 0xaf, 0x95, 0x33, 0xfd, 0xe0, 0x78, 0xfc, 0x12, 0x05, + 0x41, 0x27, 0x7c, 0x90, + 0x12, 0x4e, 0x8c, 0x27, 0x7c, 0x90, 0x12, 0x4e, 0x54, 0x27, 0x0f, 0x78, + 0x27, 0x12, 0xef, 0x2d, + 0x09, 0x24, 0x7c, 0x90, 0xf0, 0x58, 0x7c, 0x90, 0x12, 0x4e, 0x54, 0x27, + 0x54, 0xee, 0xfe, 0x7f, + 0xfd, 0xe4, 0x78, 0xfc, 0x12, 0x01, 0x41, 0x27, 0x2f, 0xe4, 0xee, 0xff, + 0x80, 0x34, 0xed, 0xfe, + 0xff, 0x34, 0xec, 0xfd, 0xff, 0x34, 0x90, 0xfc, 0x4e, 0x7c, 0x27, 0x12, + 0x90, 0x8c, 0x56, 0x7c, + 0x55, 0x74, 0xa3, 0xf0, 0x13, 0x74, 0x12, 0xf0, 0xdb, 0x4a, 0x7c, 0x90, + 0xe0, 0x58, 0xc3, 0xfb, + 0x80, 0x64, 0x80, 0x94, 0x7c, 0x90, 0x50, 0x52, 0x12, 0x0d, 0x54, 0x27, + 0xf4, 0xeb, 0xf9, 0x04, + 0x12, 0xf8, 0x2d, 0x27, 0x0c, 0x80, 0x27, 0x12, 0x90, 0x54, 0x58, 0x7c, + 0xf9, 0xe0, 0x12, 0xf8, + 0x41, 0x27, 0x7c, 0x90, 0x12, 0x52, 0x8c, 0x27, 0x7c, 0x90, 0x12, 0x52, + 0x54, 0x27, 0x2f, 0xe4, + 0xee, 0xff, 0x40, 0x34, 0xe4, 0xfe, 0xfd, 0x3d, 0x3c, 0xe4, 0x78, 0xfc, + 0x12, 0x0f, 0x2d, 0x27, + 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x7f, 0x22, 0x7e, 0x03, 0x12, 0x90, + 0x56, 0x00, 0x7b, 0x90, + 0xee, 0xc1, 0xa3, 0xf0, 0xf0, 0xef, 0x70, 0x4e, 0x02, 0x03, 0x9a, 0x46, + 0x7b, 0x90, 0xe0, 0xc2, + 0xe0, 0x30, 0x7f, 0x22, 0x7e, 0x07, 0x12, 0x94, 0x56, 0x00, 0x7b, 0x90, + 0xee, 0xc7, 0xa3, 0xf0, + 0xf0, 0xef, 0xff, 0xf4, 0xf4, 0xee, 0x90, 0xfe, 0xc3, 0x7b, 0xa3, 0xf0, + 0xf0, 0xef, 0x05, 0x7d, + 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, 0xc2, 0x7b, 0x30, 0xe0, 0x37, 0xe1, + 0x07, 0x7f, 0x93, 0x7e, + 0x00, 0x12, 0x90, 0x56, 0xcb, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, + 0xee, 0xff, 0xfe, 0xf4, + 0x7b, 0x90, 0xf0, 0xbf, 0xef, 0xa3, 0x7d, 0xf0, 0x7c, 0x05, 0x12, 0x93, + 0xf5, 0x53, 0x7b, 0x90, + 0xe0, 0xcb, 0xa3, 0xfe, 0xff, 0xe0, 0x60, 0x4e, 0xef, 0x0a, 0xe1, 0x30, + 0x12, 0x06, 0x24, 0x4c, + 0x41, 0x12, 0x90, 0x65, 0xc2, 0x7b, 0x30, 0xe0, 0x22, 0xe2, 0x07, 0x7f, + 0x92, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0xd1, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xf4, 0xf0, 0xee, 0xff, + 0xfe, 0xf4, 0x7b, 0x90, + 0xf0, 0xcd, 0xef, 0xa3, 0x7d, 0xf0, 0x7c, 0x05, 0x12, 0x92, 0xf5, 0x53, + 0x30, 0x22, 0x43, 0x2a, + 0x7a, 0x90, 0xe0, 0xa9, 0x60, 0xff, 0xb4, 0x03, 0x14, 0x02, 0x4c, 0x12, + 0x90, 0x24, 0xbd, 0x7b, + 0xff, 0xe0, 0xe0, 0xa3, 0x7b, 0x90, 0xcf, 0x28, 0xa3, 0xf0, 0xf0, 0xef, + 0x22, 0x80, 0x17, 0x7f, + 0x93, 0x7e, 0x00, 0x12, 0x90, 0x56, 0x28, 0x7b, 0xf0, 0xee, 0xef, 0xa3, + 0xd3, 0xf0, 0x94, 0xe0, + 0x90, 0xff, 0x28, 0x7b, 0x94, 0xe0, 0x40, 0x0f, 0x74, 0x07, 0xf0, 0x0f, + 0x74, 0xa3, 0xf0, 0xff, + 0x41, 0x12, 0x30, 0x65, 0x4f, 0x2e, 0x45, 0x7f, 0x94, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0x2a, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, 0xc3, 0xf0, 0x7b, 0x90, 0xe0, 0x29, 0x64, 0x94, + 0x7b, 0x90, 0xe0, 0x28, + 0x00, 0x94, 0x19, 0x50, 0x7b, 0x90, 0xe0, 0x2b, 0x2c, 0x94, 0x7b, 0x90, + 0xe0, 0x2a, 0x01, 0x94, + 0x0b, 0x40, 0x43, 0x7d, 0x94, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, + 0x90, 0xf5, 0xa9, 0x7a, + 0xb4, 0xe0, 0x11, 0x01, 0x7b, 0x90, 0xe0, 0x2a, 0xa3, 0xfe, 0xff, 0xe0, + 0x7d, 0x90, 0xee, 0x96, + 0xf0, 0x8f, 0x26, 0x12, 0x22, 0x4f, 0x7f, 0x90, 0xe0, 0x66, 0xe2, 0x30, + 0x90, 0x66, 0x95, 0x7f, + 0xc3, 0xe0, 0x01, 0x94, 0x12, 0x40, 0xd3, 0xe0, 0x03, 0x94, 0x0c, 0x50, + 0x7b, 0x90, 0xe4, 0x0f, + 0xf0, 0x75, 0x12, 0x01, 0x4f, 0x26, 0x0f, 0x80, 0x90, 0xe4, 0x0f, 0x7b, + 0xa3, 0xf0, 0x90, 0xf0, + 0x1c, 0x7b, 0x90, 0xf0, 0x1d, 0x7b, 0x90, 0xf0, 0x1c, 0x7b, 0x60, 0xe0, + 0xd3, 0x0f, 0x7b, 0x90, + 0xe0, 0x10, 0xc2, 0x94, 0x7b, 0x90, 0xe0, 0x0f, 0x01, 0x94, 0x0f, 0x50, + 0x90, 0xd3, 0x10, 0x7b, + 0x94, 0xe0, 0x90, 0x14, 0x0f, 0x7b, 0x94, 0xe0, 0x40, 0x05, 0xe4, 0x41, + 0x7b, 0x90, 0xf0, 0x0f, + 0xf0, 0xa3, 0x7f, 0x90, 0xe0, 0x97, 0x01, 0x64, 0x32, 0x70, 0x35, 0x12, + 0xe4, 0x35, 0x7b, 0x90, + 0xf0, 0x08, 0x90, 0x22, 0x26, 0x7b, 0x60, 0xe0, 0x90, 0x23, 0x18, 0x7b, + 0xfe, 0xe0, 0xe0, 0xa3, + 0x7d, 0xff, 0x7c, 0x11, 0x12, 0x64, 0xf5, 0x53, 0x7b, 0x90, 0xe0, 0x1a, + 0xa3, 0xfe, 0xff, 0xe0, + 0x10, 0x7d, 0x64, 0x7c, 0x53, 0x12, 0xe4, 0xf5, 0x7b, 0x90, 0xf0, 0x26, + 0x90, 0x22, 0xfa, 0x7f, + 0xfe, 0xe0, 0xe4, 0xa3, 0x03, 0x70, 0x64, 0xee, 0x70, 0x02, 0xe0, 0x6b, + 0x27, 0x12, 0x48, 0xdb, + 0x01, 0x0e, 0x11, 0x48, 0x48, 0x02, 0x03, 0x14, 0x17, 0x48, 0x48, 0x04, + 0x05, 0x1a, 0x1d, 0x48, + 0x48, 0x06, 0x07, 0x20, 0x23, 0x48, 0x48, 0x08, 0x09, 0x26, 0x29, 0x48, + 0x48, 0x80, 0x81, 0x2c, + 0x2f, 0x48, 0x48, 0x82, 0x83, 0x32, 0x35, 0x48, 0x48, 0x84, 0x85, 0x38, + 0x00, 0x00, 0x3b, 0x48, + 0x52, 0x02, 0x02, 0xef, 0x67, 0x4f, 0x4b, 0x02, 0x02, 0x4c, 0x74, 0x4e, + 0x53, 0x02, 0x02, 0xb3, + 0x91, 0x53, 0x55, 0x02, 0x02, 0xd2, 0x81, 0x55, 0x00, 0x02, 0x02, 0x0e, + 0x03, 0x00, 0x56, 0x02, + 0x02, 0x22, 0x2a, 0x56, 0x56, 0x02, 0x02, 0x32, 0x3a, 0x56, 0x56, 0x02, + 0x74, 0x42, 0x90, 0xff, + 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7c, 0x90, 0x12, 0x42, 0xc9, 0x27, + 0x4a, 0xe9, 0x03, 0x60, + 0x28, 0x02, 0x90, 0x01, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xf0, 0x14, + 0xe4, 0x22, 0x7c, 0x90, + 0xf0, 0x27, 0xf0, 0xa3, 0xf0, 0xa3, 0xf0, 0xa3, 0x7c, 0x90, 0xf0, 0x25, + 0xf0, 0xa3, 0x24, 0x7d, + 0x71, 0x7c, 0x81, 0x7f, 0x12, 0xfe, 0xf5, 0x53, 0x24, 0x7d, 0x71, 0x7c, + 0x01, 0x7f, 0x00, 0x7e, + 0x53, 0x12, 0xe4, 0xf5, 0x7c, 0x90, 0xf0, 0x2b, 0xf0, 0xa3, 0xf0, 0xa3, + 0xf0, 0xa3, 0x12, 0x7f, + 0x62, 0x7e, 0x00, 0x12, 0xe4, 0x56, 0xfd, 0xfc, 0x7b, 0x90, 0x12, 0xa0, + 0x8c, 0x27, 0x7b, 0x90, + 0x12, 0xa0, 0x54, 0x27, 0x7b, 0x90, 0x12, 0xa4, 0x8c, 0x27, 0x7b, 0x90, + 0x12, 0xa8, 0x98, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, 0xac, 0x7b, 0xa3, 0xf0, 0x90, 0xf0, + 0xae, 0x7b, 0x7d, 0xf0, + 0x7c, 0x06, 0x7f, 0x71, 0xfe, 0x17, 0x53, 0x12, 0xe4, 0xf5, 0x7d, 0x90, + 0xf0, 0x8f, 0x7d, 0x90, + 0xe0, 0x6a, 0xa3, 0xff, 0x90, 0xe0, 0x64, 0x7c, 0xf0, 0xcf, 0xef, 0xa3, + 0xe4, 0xf0, 0x7c, 0x90, + 0xf0, 0x66, 0x58, 0xc2, 0x7f, 0x22, 0x7e, 0x10, 0x12, 0x56, 0x56, 0x00, + 0x7a, 0x90, 0xef, 0x8c, + 0x7f, 0xf0, 0x7e, 0x10, 0x12, 0x57, 0x56, 0x00, 0x7a, 0x90, 0xef, 0x8d, + 0x7f, 0xf0, 0x7e, 0x10, + 0x12, 0x92, 0x56, 0x00, 0x7a, 0x90, 0xef, 0x8e, 0x7f, 0xf0, 0x7e, 0x10, + 0x12, 0x94, 0x56, 0x00, + 0x7a, 0x90, 0xef, 0x8f, 0x7f, 0xf0, 0x7e, 0x14, 0x12, 0x94, 0x56, 0x00, + 0x7b, 0x90, 0xef, 0xe9, + 0xe0, 0xf0, 0xe0, 0x20, 0x90, 0x07, 0x8f, 0x7a, 0x54, 0xe0, 0xf0, 0xef, + 0x13, 0xd2, 0x7a, 0x90, + 0xe0, 0x8d, 0x02, 0x64, 0x02, 0x60, 0x13, 0xc2, 0x7a, 0x90, 0xe0, 0x8e, + 0x01, 0x64, 0x02, 0x60, + 0x13, 0xc2, 0x7a, 0x90, 0xe0, 0xa9, 0x01, 0xb4, 0x90, 0x15, 0x8c, 0x7a, + 0x64, 0xe0, 0x60, 0x01, + 0xc2, 0x02, 0x90, 0x13, 0x8f, 0x7a, 0x64, 0xe0, 0x60, 0x04, 0xc2, 0x0d, + 0x22, 0x13, 0x7a, 0x90, + 0xe0, 0x8f, 0x05, 0x64, 0x02, 0x60, 0x13, 0xc2, 0x90, 0x22, 0xa9, 0x7a, + 0x64, 0xe0, 0x70, 0x01, + 0x7f, 0x78, 0x7e, 0x16, 0x12, 0x57, 0x56, 0x00, 0x7a, 0x90, 0xee, 0xb4, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xfe, 0xff, 0xe0, 0x7a, 0x90, 0xe0, 0xb6, + 0x70, 0x6e, 0xa3, 0x03, + 0x6f, 0xe0, 0x31, 0x60, 0x7a, 0x90, 0xe0, 0xbc, 0x13, 0x70, 0x7a, 0x90, + 0xe0, 0xb4, 0xa3, 0xfe, + 0xff, 0xe0, 0x7f, 0x90, 0xf0, 0x71, 0x12, 0x7d, 0x92, 0x7c, 0x53, 0x12, + 0xc2, 0xf5, 0x90, 0x12, + 0xbc, 0x7a, 0x01, 0x74, 0x90, 0xf0, 0xb4, 0x7a, 0xff, 0xe0, 0xe0, 0xa3, + 0x7a, 0x90, 0xcf, 0xb6, + 0xa3, 0xf0, 0xf0, 0xef, 0x90, 0x22, 0xbc, 0x7a, 0x04, 0xe0, 0xe0, 0xf0, + 0x94, 0xc3, 0x40, 0x04, + 0xd2, 0x18, 0x74, 0x12, 0xf0, 0x04, 0x7a, 0x90, 0xe0, 0xb4, 0xa3, 0xfe, + 0xff, 0xe0, 0x7f, 0x90, + 0xf0, 0x71, 0x12, 0x7d, 0x92, 0x7c, 0x53, 0x12, 0x22, 0xf5, 0x16, 0x7f, + 0x53, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0xb0, 0x7a, 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0x23, 0x7f, + 0xff, 0xe0, 0x00, 0x7e, + 0x7a, 0x90, 0xe0, 0xae, 0xa3, 0xfc, 0xfd, 0xe0, 0x26, 0x12, 0x90, 0x3d, + 0xe9, 0x7b, 0xf0, 0xee, + 0xef, 0xa3, 0x90, 0xf0, 0xb0, 0x7a, 0xfe, 0xe0, 0xe0, 0xa3, 0x7c, 0xff, + 0x7d, 0x00, 0x12, 0x8c, + 0x3d, 0x26, 0x7b, 0x90, 0xe0, 0xe9, 0xa3, 0xfa, 0xfb, 0xe0, 0x9f, 0xc3, + 0x9e, 0xea, 0x02, 0x50, + 0x10, 0xc2, 0x7a, 0x90, 0xe0, 0xb0, 0xa3, 0xfe, 0xff, 0xe0, 0x00, 0x7c, + 0xb4, 0x7d, 0x26, 0x12, + 0xd3, 0x3d, 0x9f, 0xeb, 0x9e, 0xea, 0x02, 0x40, 0x10, 0xd2, 0x7f, 0x90, + 0xe0, 0x25, 0xc3, 0xff, + 0x7a, 0x90, 0xe0, 0xb1, 0x90, 0x9f, 0xb0, 0x7a, 0x94, 0xe0, 0x50, 0x00, + 0x80, 0x02, 0xc3, 0x01, + 0x1e, 0x92, 0x52, 0x02, 0x7d, 0x6b, 0x7c, 0x06, 0x7f, 0x66, 0x7e, 0x01, + 0x12, 0x00, 0xf5, 0x53, + 0x90, 0xe4, 0x4a, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x5a, 0x7d, 0xa3, 0xf0, + 0x90, 0xf0, 0x52, 0x7d, + 0xa3, 0xf0, 0x90, 0xf0, 0x60, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, 0x57, 0x7d, + 0x90, 0xf0, 0x65, 0x7d, + 0x90, 0xf0, 0x58, 0x7d, 0xa3, 0xf0, 0xf0, 0x04, 0x7d, 0x90, 0xe4, 0x66, + 0xa3, 0xf0, 0xf0, 0x04, + 0x7d, 0x90, 0x74, 0x42, 0xf0, 0x80, 0xe4, 0xa3, 0x90, 0xf0, 0x40, 0x7d, + 0x7f, 0x74, 0xa3, 0xf0, + 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x86, 0xf0, 0xa3, 0x7d, 0x90, + 0x74, 0x84, 0xf0, 0x7f, + 0x74, 0xa3, 0xf0, 0xff, 0x90, 0xe4, 0x94, 0x7d, 0xa3, 0xf0, 0x90, 0xf0, + 0x92, 0x7d, 0x7f, 0x74, + 0xa3, 0xf0, 0xff, 0x74, 0xe4, 0xf0, 0x7d, 0x90, 0xf0, 0x30, 0xf0, 0xa3, + 0x90, 0x22, 0x56, 0x7c, + 0x75, 0xe4, 0x04, 0xf0, 0x26, 0x12, 0x85, 0x65, 0x82, 0xf0, 0x83, 0xf5, + 0x27, 0x12, 0x90, 0x60, + 0x52, 0x7c, 0x27, 0x12, 0x90, 0x8c, 0x59, 0x7c, 0x01, 0x74, 0x90, 0xf0, + 0x52, 0x7c, 0x27, 0x12, + 0x90, 0x54, 0x4e, 0x7c, 0x27, 0x12, 0x12, 0x70, 0x96, 0x26, 0x7c, 0x90, + 0x12, 0x52, 0x8c, 0x27, + 0x7c, 0x90, 0x12, 0x52, 0x54, 0x27, 0x2f, 0xe4, 0xee, 0xff, 0x40, 0x34, + 0xe4, 0xfe, 0xfd, 0x3d, + 0x3c, 0xe4, 0x78, 0xfc, 0x12, 0x0f, 0x2d, 0x27, 0x7c, 0x90, 0xe4, 0x56, + 0xf0, 0x75, 0x12, 0x04, + 0x65, 0x26, 0xf0, 0x85, 0xf5, 0x82, 0x12, 0x83, 0x7c, 0x27, 0x26, 0x12, + 0x90, 0x7b, 0x52, 0x7c, + 0x27, 0x12, 0x90, 0x8c, 0x59, 0x7c, 0x04, 0xe0, 0xe0, 0xf0, 0x03, 0xb4, + 0x22, 0xae, 0x7f, 0x90, + 0xe0, 0xf8, 0xe0, 0xa3, 0x7e, 0x90, 0xf0, 0xeb, 0x7f, 0x90, 0xe0, 0xf6, + 0xe0, 0xa3, 0x7e, 0x90, + 0xf0, 0xed, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, 0x20, 0x70, 0x7e, 0x90, + 0xe0, 0xed, 0x94, 0xc3, + 0x50, 0xfe, 0xe0, 0x0b, 0x94, 0xc3, 0x40, 0x08, 0xe0, 0x05, 0x09, 0x64, + 0x23, 0x70, 0x7e, 0x90, + 0xe0, 0xeb, 0x05, 0x64, 0x04, 0x60, 0xb4, 0xe0, 0x17, 0x07, 0x7e, 0x90, + 0xe0, 0xe9, 0x01, 0x64, + 0x1a, 0x60, 0x7e, 0x90, 0xe0, 0xeb, 0x94, 0xc3, 0x40, 0x03, 0xe0, 0x06, + 0x94, 0xd3, 0x40, 0x07, + 0x90, 0x0b, 0xf8, 0x7f, 0xff, 0x74, 0xa3, 0xf0, 0xfd, 0x74, 0x22, 0xf0, + 0x00, 0x12, 0x12, 0x0e, + 0x01, 0x51, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x7f, 0x90, + 0xe0, 0xfa, 0xa3, 0xfe, + 0x70, 0xe4, 0xee, 0x03, 0x03, 0x64, 0x47, 0x70, 0x12, 0xe0, 0xdb, 0x27, + 0xe9, 0x4b, 0x4b, 0x01, + 0x02, 0xec, 0xef, 0x4b, 0x4b, 0x03, 0x04, 0xf2, 0xf5, 0x4b, 0x4b, 0x05, + 0x06, 0xf8, 0xfb, 0x4b, + 0x4b, 0x07, 0x08, 0xfe, 0x01, 0x4c, 0x00, 0x09, 0x4c, 0x00, 0x02, 0x04, + 0xd4, 0x53, 0x56, 0x02, + 0x02, 0x4a, 0xe0, 0x54, 0x52, 0x02, 0x02, 0xc4, 0x6b, 0x51, 0x56, 0x02, + 0x02, 0x52, 0x5a, 0x56, + 0x56, 0x02, 0x02, 0x62, 0x6c, 0x55, 0xff, 0x74, 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0x90, 0x22, + 0x48, 0x7c, 0x27, 0x12, 0xe9, 0xc9, 0x60, 0x4a, 0x02, 0x03, 0x01, 0x28, + 0x7f, 0x90, 0x74, 0xf8, + 0xf0, 0xff, 0x14, 0xa3, 0x22, 0xf0, 0x17, 0x7f, 0x93, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0xbd, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, 0x90, 0xf0, 0xbd, 0x7b, 0xc4, 0xe0, 0x0f, 0x54, + 0x7e, 0xff, 0x90, 0x00, + 0xe9, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0xfd, 0xf0, 0x7b, 0x90, 0xe0, 0xbd, + 0x0f, 0x54, 0xd3, 0xf0, + 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, 0x21, 0x50, 0x7b, 0x90, 0xa3, 0xe9, + 0xff, 0xe0, 0x7b, 0x90, + 0xe0, 0xbd, 0xa3, 0xfe, 0xa8, 0xe0, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, + 0x33, 0xce, 0xd8, 0xce, + 0xf0, 0xf9, 0x90, 0xee, 0xbd, 0x7b, 0x80, 0xf0, 0x74, 0x08, 0x90, 0xff, + 0xbd, 0x7b, 0xa3, 0xf0, + 0x90, 0xf0, 0xbd, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x90, 0xff, 0x96, 0x7d, + 0x8f, 0xee, 0x02, 0xf0, + 0x4f, 0x26, 0x1e, 0x7d, 0x94, 0x7c, 0x01, 0x7f, 0x00, 0x7e, 0x53, 0x12, + 0x7d, 0xf5, 0x7c, 0x1f, + 0x7f, 0x94, 0x7e, 0xff, 0x12, 0x03, 0xf5, 0x53, 0x21, 0x7d, 0x94, 0x7c, + 0xea, 0x7f, 0x01, 0x7e, + 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x20, 0x7f, 0x94, 0x7e, 0x16, 0x12, 0x01, + 0xf5, 0x53, 0x2e, 0x7d, + 0x94, 0x7c, 0x0a, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x7d, 0xf5, 0x7c, 0x22, + 0x7f, 0x94, 0x7e, 0x0a, + 0x12, 0x00, 0xf5, 0x53, 0x23, 0x7d, 0x94, 0x7c, 0x0a, 0x7f, 0x00, 0x7e, + 0x53, 0x12, 0x7d, 0xf5, + 0x7c, 0x26, 0x7f, 0x94, 0x7e, 0x05, 0x12, 0x00, 0xf5, 0x53, 0x27, 0x7d, + 0x94, 0x7c, 0x07, 0x7f, + 0x00, 0x7e, 0x53, 0x02, 0xc0, 0xf5, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, + 0xc0, 0x82, 0x75, 0xd0, + 0x00, 0xd0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, + 0x05, 0xc0, 0x06, 0xc0, + 0x07, 0xc0, 0x04, 0x7d, 0x05, 0x7f, 0x53, 0x7e, 0x4e, 0x12, 0x7d, 0xd2, + 0x7f, 0x06, 0x7e, 0x05, + 0x12, 0x55, 0xd2, 0x4e, 0x09, 0x7d, 0x05, 0x7f, 0x56, 0x7e, 0x4e, 0x12, + 0x7d, 0xd2, 0x7f, 0x0b, + 0x7e, 0x05, 0x12, 0x57, 0xd2, 0x4e, 0x04, 0x7f, 0x25, 0x12, 0xd0, 0x8a, + 0xd0, 0x07, 0xd0, 0x06, + 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, + 0xd0, 0xd0, 0xd0, 0x82, + 0xd0, 0x83, 0xd0, 0xf0, 0x32, 0xe0, 0x30, 0x7f, 0x94, 0x7e, 0x00, 0x12, + 0x90, 0x56, 0xf5, 0x7b, + 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x31, 0x12, 0x94, 0x56, 0x00, + 0x7b, 0x90, 0xee, 0xf7, + 0xa3, 0xf0, 0xf0, 0xef, 0x2e, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, + 0xfc, 0x7b, 0xf0, 0xef, + 0x22, 0x7f, 0x94, 0x7e, 0x00, 0x12, 0x90, 0x56, 0xfd, 0x7b, 0xf0, 0xef, + 0x23, 0x7f, 0x94, 0x7e, + 0x00, 0x12, 0x90, 0x56, 0xfe, 0x7b, 0xf0, 0xef, 0x3b, 0x7f, 0x94, 0x7e, + 0x00, 0x12, 0x90, 0x56, + 0xff, 0x7b, 0xf0, 0xee, 0xef, 0xa3, 0x7f, 0xf0, 0x7e, 0x3a, 0x12, 0x94, + 0x56, 0x00, 0x7c, 0x90, + 0xee, 0x01, 0xa3, 0xf0, 0xf0, 0xef, 0xc3, 0x22, 0x7f, 0x90, 0xe0, 0x92, + 0x80, 0x64, 0x80, 0x94, + 0x0e, 0x50, 0xfe, 0xe0, 0xe0, 0xa3, 0xc3, 0xff, 0x9f, 0xe4, 0xe4, 0xff, + 0xfe, 0x9e, 0x08, 0x80, + 0x7f, 0x90, 0xe0, 0x92, 0xa3, 0xfe, 0xff, 0xe0, 0xef, 0xd3, 0x64, 0x94, + 0x64, 0xee, 0x94, 0x80, + 0x50, 0x80, 0xd2, 0x02, 0xd3, 0x18, 0x7f, 0x90, 0xe0, 0x93, 0xf8, 0x94, + 0x7f, 0x90, 0xe0, 0x92, + 0x80, 0x64, 0x83, 0x94, 0x02, 0x40, 0x18, 0xc2, 0x90, 0xc3, 0x93, 0x7f, + 0x94, 0xe0, 0x90, 0x54, + 0x92, 0x7f, 0x64, 0xe0, 0x94, 0x80, 0x50, 0x7d, 0xc2, 0x02, 0x90, 0x18, + 0x67, 0x7f, 0x20, 0xe0, + 0x02, 0xe0, 0x18, 0xd2, 0x52, 0x02, 0x7f, 0x6b, 0x7e, 0x14, 0x12, 0x93, + 0x56, 0x00, 0x7c, 0x90, + 0xee, 0x60, 0xa3, 0xf0, 0xf0, 0xef, 0x7c, 0x90, 0xe0, 0x60, 0xa3, 0xfa, + 0xfb, 0xe0, 0xc4, 0xea, + 0x0f, 0x54, 0x7e, 0xff, 0x90, 0x00, 0x62, 0x7c, 0xf0, 0xee, 0xef, 0xa3, + 0xfd, 0xf0, 0x7b, 0x90, + 0xe0, 0xbd, 0x0f, 0x54, 0xd3, 0xf0, 0x94, 0xed, 0xe4, 0x04, 0x00, 0x94, + 0x1f, 0x50, 0x7c, 0x90, + 0xa3, 0x62, 0xff, 0xe0, 0xae, 0xeb, 0xa8, 0x02, 0x08, 0x07, 0x05, 0x80, + 0x33, 0xc3, 0x33, 0xce, + 0xd8, 0xce, 0xff, 0xf9, 0x7c, 0x90, 0xee, 0x60, 0xa3, 0xf0, 0xf0, 0xef, + 0x74, 0x22, 0x90, 0xff, + 0x60, 0x7c, 0xa3, 0xf0, 0x22, 0xf0, 0xd0, 0xc0, 0xaf, 0xa2, 0xd1, 0x92, + 0xaf, 0xc2, 0x61, 0xd2, + 0x55, 0x12, 0x12, 0x81, 0x63, 0x4a, 0x04, 0x7f, 0x24, 0x12, 0x7b, 0x78, + 0x7a, 0xff, 0x79, 0x44, + 0x90, 0x9c, 0x5a, 0x7c, 0x27, 0x12, 0x7a, 0xd2, 0x79, 0x54, 0x90, 0x15, + 0x5d, 0x7c, 0x27, 0x12, + 0x7d, 0xd2, 0x7c, 0x06, 0x7f, 0x50, 0x7e, 0xff, 0x12, 0x00, 0xf5, 0x53, + 0x06, 0x7d, 0x90, 0x7c, + 0x0f, 0x7f, 0x00, 0x7e, 0x53, 0x12, 0x53, 0xf5, 0xfb, 0xa8, 0xa9, 0x43, + 0x43, 0x10, 0x08, 0xaa, + 0xab, 0x43, 0xe4, 0x08, 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0x00, 0x12, + 0xa2, 0x52, 0x92, 0xd1, + 0xd0, 0xaf, 0x22, 0xd0, 0x7b, 0x90, 0xee, 0xe6, 0xa3, 0xf0, 0xf0, 0xef, + 0xed, 0xa3, 0xc0, 0xf0, + 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x90, 0xaf, 0xe7, 0x7b, 0x24, 0xe0, + 0xff, 0x02, 0x7b, 0x90, + 0xe0, 0xe6, 0x00, 0x34, 0x12, 0xfe, 0x56, 0x00, 0x10, 0x8e, 0x11, 0x8f, + 0x11, 0xe5, 0xff, 0xf4, + 0x10, 0xe5, 0xfe, 0xf4, 0x7b, 0x90, 0xe0, 0xe6, 0xa3, 0xfc, 0xfd, 0xe0, + 0x53, 0x12, 0x90, 0xf5, + 0xe8, 0x7b, 0xf5, 0xe0, 0x12, 0x14, 0x36, 0x51, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x7e, 0x22, + 0xef, 0x06, 0x13, 0x13, 0x54, 0x13, 0xff, 0x03, 0x01, 0xbf, 0xae, 0x02, + 0x1e, 0x05, 0xd3, 0xee, + 0x05, 0x94, 0x02, 0x40, 0x05, 0x7e, 0x14, 0xee, 0x12, 0x60, 0x60, 0x14, + 0x14, 0x14, 0x16, 0x60, + 0x60, 0x14, 0x24, 0x18, 0x70, 0x04, 0x90, 0x19, 0x5a, 0x7f, 0x17, 0x80, + 0x7f, 0x90, 0x80, 0x5c, + 0x90, 0x12, 0x5e, 0x7f, 0x0d, 0x80, 0x7f, 0x90, 0x80, 0x60, 0x90, 0x08, + 0x62, 0x7f, 0x03, 0x80, + 0x7f, 0x90, 0xe0, 0x64, 0xa3, 0xfe, 0xff, 0xe0, 0x90, 0x22, 0xf8, 0x7f, + 0xa3, 0xe0, 0x90, 0xe0, + 0xe9, 0x7e, 0xd3, 0xf0, 0x7f, 0x90, 0xe0, 0xf9, 0x02, 0x94, 0x7f, 0x90, + 0xe0, 0xf8, 0x00, 0x94, + 0x19, 0x50, 0x7e, 0x90, 0xe0, 0xe9, 0x74, 0xff, 0x7e, 0x01, 0xa8, 0x00, + 0x08, 0x07, 0x05, 0x80, + 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, 0x54, 0xf9, 0x70, 0x07, 0x90, 0x0b, + 0xf8, 0x7f, 0xff, 0x74, + 0xa3, 0xf0, 0xfd, 0x74, 0x22, 0xf0, 0x55, 0x12, 0xe4, 0xd2, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, + 0x90, 0x22, 0xf5, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, 0x7c, 0x30, + 0x12, 0x94, 0xf5, 0x53, + 0x7b, 0x90, 0xe0, 0xf7, 0xa3, 0xfe, 0xff, 0xe0, 0x31, 0x7d, 0x94, 0x7c, + 0x53, 0x12, 0x90, 0xf5, + 0xfc, 0x7b, 0xff, 0xe0, 0x00, 0x7e, 0x2e, 0x7d, 0x94, 0x7c, 0x53, 0x12, + 0x90, 0xf5, 0xfd, 0x7b, + 0xff, 0xe0, 0x00, 0x7e, 0x22, 0x7d, 0x94, 0x7c, 0x53, 0x12, 0x90, 0xf5, + 0xfe, 0x7b, 0xff, 0xe0, + 0x00, 0x7e, 0x23, 0x7d, 0x94, 0x7c, 0x53, 0x02, 0x7e, 0xf5, 0x7f, 0x7a, + 0x7c, 0x82, 0x7d, 0x7b, + 0x12, 0x5d, 0xfa, 0x54, 0x7f, 0x7e, 0x6f, 0x7f, 0x7f, 0x7c, 0x74, 0x7d, + 0x54, 0x12, 0x7e, 0xfa, + 0x7f, 0x7f, 0x7c, 0x78, 0x7d, 0x7f, 0x12, 0xad, 0xfa, 0x54, 0x7f, 0x90, + 0x74, 0x95, 0xf0, 0xff, + 0xa5, 0x74, 0x7a, 0x90, 0xf0, 0xb6, 0xf0, 0xa3, 0x7a, 0x90, 0x74, 0xf3, + 0xf0, 0x0a, 0xf0, 0xa3, + 0x7b, 0x90, 0x74, 0x4b, 0xf0, 0x2f, 0x7b, 0x90, 0x74, 0x58, 0xf0, 0x27, + 0xc2, 0x22, 0xe8, 0xd5, + 0xe7, 0x30, 0xb2, 0x0f, 0xe4, 0xd5, 0x9b, 0xc3, 0xe4, 0xfb, 0xfa, 0x9a, + 0x99, 0xe4, 0xe4, 0xf9, + 0xf8, 0x98, 0x30, 0xec, 0x17, 0xe7, 0xd5, 0xb2, 0x50, 0x12, 0x12, 0x71, + 0x43, 0x28, 0xc3, 0xe4, + 0xfb, 0x9b, 0x9a, 0xe4, 0xe4, 0xfa, 0xf9, 0x99, 0x98, 0xe4, 0x80, 0xf8, + 0x12, 0x03, 0x43, 0x28, + 0xd5, 0x30, 0xe4, 0x0d, 0x9f, 0xc3, 0xe4, 0xff, 0xfe, 0x9e, 0x9d, 0xe4, + 0xe4, 0xfd, 0xfc, 0x9c, + 0xc0, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0x75, 0xd0, + 0x00, 0xd0, 0x00, 0xc0, + 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, + 0x07, 0xc0, 0x7c, 0x90, + 0x12, 0x5a, 0xc9, 0x27, 0x28, 0x12, 0xd0, 0x01, 0xd0, 0x07, 0xd0, 0x06, + 0xd0, 0x05, 0xd0, 0x04, + 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, + 0xd0, 0x83, 0xd0, 0xf0, + 0x32, 0xe0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xc0, + 0xd0, 0x75, 0xc0, 0x00, + 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, + 0xc0, 0x06, 0x90, 0x07, + 0x5d, 0x7c, 0x27, 0x12, 0x12, 0xc9, 0x01, 0x28, 0x07, 0xd0, 0x06, 0xd0, + 0x05, 0xd0, 0x04, 0xd0, + 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, + 0x83, 0xd0, 0xf0, 0xd0, + 0xe0, 0xd0, 0x12, 0x32, 0xf7, 0x4f, 0x7e, 0x90, 0xe0, 0xeb, 0x7f, 0x90, + 0xf0, 0x6f, 0x7e, 0x90, + 0xe0, 0xed, 0x7f, 0x90, 0xf0, 0x71, 0x7e, 0x90, 0xe0, 0xe9, 0x01, 0x64, + 0x08, 0x60, 0x7f, 0x90, + 0x74, 0x71, 0xf0, 0x10, 0x0f, 0x80, 0x7e, 0x90, 0xe0, 0xed, 0x94, 0xc3, + 0x40, 0xfe, 0x90, 0x06, + 0x71, 0x7f, 0xfe, 0x74, 0x02, 0xf0, 0x7e, 0x00, 0x14, 0xe5, 0x07, 0x54, + 0xe5, 0xff, 0xae, 0x11, + 0xa8, 0x10, 0x08, 0x07, 0x05, 0x80, 0x33, 0xc3, 0x33, 0xce, 0xd8, 0xce, + 0xf5, 0xf9, 0x8e, 0x11, + 0xe5, 0x10, 0x13, 0x14, 0x13, 0x13, 0x1f, 0x54, 0xc3, 0xff, 0x1a, 0x74, + 0xf5, 0x9f, 0xf8, 0x14, + 0x45, 0xe6, 0xf6, 0x10, 0x14, 0x05, 0x14, 0xa8, 0x45, 0xe6, 0xf6, 0x11, + 0x7f, 0x22, 0x7e, 0x23, + 0x12, 0x71, 0x56, 0x00, 0x7c, 0x90, 0xef, 0x27, 0xc0, 0xf0, 0xa2, 0xd0, + 0x92, 0xaf, 0xc2, 0xd1, + 0x12, 0xaf, 0x08, 0x52, 0x7c, 0x90, 0xe0, 0x27, 0xef, 0xfd, 0xff, 0x4d, + 0x7f, 0x90, 0xee, 0xf6, + 0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0x90, 0xe4, + 0xf8, 0x7f, 0xa3, 0xf0, + 0x22, 0xf0, 0x40, 0xd2, 0x00, 0x30, 0xc0, 0x2e, 0xc0, 0xe0, 0xc0, 0x83, + 0xc0, 0x82, 0x75, 0xd0, + 0x00, 0xd0, 0x07, 0xc0, 0x81, 0xaf, 0x90, 0xc3, 0x81, 0x7d, 0x9f, 0xe0, + 0x7d, 0x90, 0xe0, 0x80, + 0x00, 0x94, 0x07, 0x50, 0x81, 0xaf, 0xf0, 0xe4, 0xef, 0xa3, 0xd0, 0xf0, + 0xd0, 0x07, 0xd0, 0xd0, + 0xd0, 0x82, 0xd0, 0x83, 0x32, 0xe0, 0x90, 0xe4, 0x74, 0x7f, 0xa3, 0xf0, + 0x30, 0xf0, 0x07, 0x13, + 0x7f, 0x90, 0x74, 0x74, 0x80, 0x80, 0x90, 0x16, 0x95, 0x7f, 0xc3, 0xe0, + 0x05, 0x94, 0x11, 0x40, + 0x94, 0xe0, 0x50, 0x10, 0x30, 0x0c, 0x09, 0x11, 0x7f, 0x90, 0x74, 0x74, + 0xf0, 0x40, 0xe4, 0xa3, + 0x90, 0xf0, 0x74, 0x7f, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, 0x7c, 0x90, + 0xe0, 0x27, 0xc3, 0xff, + 0x57, 0x94, 0x07, 0x40, 0x7b, 0x90, 0x74, 0xde, 0x80, 0x80, 0xef, 0x0b, + 0x94, 0xc3, 0x40, 0x06, + 0x90, 0x0b, 0xde, 0x7b, 0x40, 0x74, 0xa3, 0xf0, 0xf0, 0xe4, 0x07, 0x80, + 0x90, 0xe4, 0xde, 0x7b, + 0xa3, 0xf0, 0x90, 0xf0, 0xde, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x22, 0xff, + 0xd0, 0xc0, 0xaf, 0xa2, + 0xd1, 0x92, 0xaf, 0xc2, 0x1b, 0x85, 0x85, 0x27, 0x26, 0x1a, 0x19, 0x85, + 0x85, 0x25, 0x24, 0x18, + 0xf5, 0xe4, 0xf5, 0x1b, 0xf5, 0x1a, 0xf5, 0x19, 0xa2, 0x18, 0x92, 0xd1, + 0xd0, 0xaf, 0x90, 0xd0, + 0x7a, 0x7f, 0x27, 0xaf, 0x26, 0xae, 0x25, 0xad, 0x24, 0xac, 0x27, 0x02, + 0x90, 0x8c, 0x98, 0x7f, + 0x33, 0xe0, 0x17, 0x92, 0x7f, 0x90, 0xe0, 0x98, 0x22, 0x65, 0x04, 0x70, + 0xe0, 0xa3, 0x23, 0x65, + 0x18, 0x60, 0x7f, 0x90, 0x30, 0x98, 0x09, 0x17, 0xf5, 0xe0, 0xa3, 0x22, + 0xf5, 0xe0, 0x80, 0x23, + 0xe5, 0x07, 0xf0, 0x22, 0xe5, 0xa3, 0xf0, 0x23, 0x23, 0xd2, 0x20, 0x22, + 0x27, 0x17, 0x7b, 0x90, + 0xe0, 0x26, 0x1e, 0x60, 0x7b, 0x90, 0xe0, 0x18, 0xa3, 0xfe, 0xff, 0xe0, + 0x11, 0x7d, 0x64, 0x7c, + 0x53, 0x12, 0x90, 0xf5, 0x1a, 0x7b, 0xfe, 0xe0, 0xe0, 0xa3, 0x7d, 0xff, + 0x7c, 0x10, 0x12, 0x64, + 0xf5, 0x53, 0x51, 0x12, 0x22, 0x01, 0x62, 0xd2, 0x04, 0x7f, 0x24, 0x12, + 0x7b, 0x78, 0x7a, 0xff, + 0x79, 0x3f, 0x90, 0x4b, 0x5a, 0x7c, 0x27, 0x12, 0x7a, 0xd2, 0x79, 0x45, + 0x90, 0xf5, 0x5d, 0x7c, + 0x27, 0x12, 0x43, 0xd2, 0x18, 0xa9, 0xab, 0x43, 0xe4, 0x08, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, + 0xc0, 0x22, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, 0x12, 0xaf, 0xae, 0x00, + 0x7f, 0x90, 0xe4, 0xf6, + 0xa3, 0xf0, 0xf0, 0xef, 0x00, 0x12, 0x12, 0x0e, 0xf7, 0x4f, 0x39, 0x12, + 0xe4, 0x4d, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, 0xd1, 0xa2, 0xaf, 0x92, 0xd0, 0xd0, 0xe4, 0x22, + 0x7b, 0x90, 0xf0, 0xf4, + 0x7a, 0x90, 0x74, 0xa5, 0xf0, 0x30, 0x11, 0x30, 0x90, 0x0e, 0x33, 0x7f, + 0x90, 0xe0, 0xf4, 0x7b, + 0x90, 0xf0, 0xa5, 0x7a, 0x04, 0x74, 0x90, 0xf0, 0xf4, 0x7b, 0xff, 0xe0, + 0x00, 0x7e, 0x11, 0x7d, + 0x55, 0x7c, 0x53, 0x02, 0xef, 0xf5, 0xc4, 0x04, 0xf0, 0x54, 0x24, 0x14, + 0xf5, 0x5f, 0xe4, 0x82, + 0x7b, 0x34, 0x83, 0xf5, 0x01, 0xd0, 0x07, 0xd0, 0x0f, 0x7e, 0x82, 0xe5, + 0x02, 0x70, 0x83, 0x15, + 0x82, 0x15, 0xe0, 0xd0, 0xde, 0xf0, 0xc0, 0xf3, 0xc0, 0x07, 0x22, 0x01, + 0xa8, 0xc0, 0xd0, 0xc0, + 0xd0, 0x75, 0x92, 0x00, 0xc0, 0xaf, 0x75, 0xf0, 0x05, 0xf0, 0xe0, 0xc0, + 0xe0, 0x75, 0xc0, 0x85, + 0x75, 0xe0, 0x53, 0xe0, 0xe0, 0xc0, 0xd5, 0x32, 0xf2, 0xf0, 0xe0, 0xd0, + 0xf0, 0xd0, 0xd0, 0xd0, + 0xa8, 0xd0, 0x90, 0x22, 0x6f, 0x7f, 0xff, 0xe0, 0x7f, 0x90, 0xe4, 0xf6, + 0xa3, 0xf0, 0xf0, 0xef, + 0x7f, 0x90, 0xe0, 0x71, 0x90, 0xff, 0xf4, 0x7f, 0xf0, 0xe4, 0xef, 0xa3, + 0xe4, 0xf0, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, 0xc0, 0x22, 0xa2, 0xd0, 0x92, 0xaf, 0xc2, 0xd1, + 0x12, 0xaf, 0xd4, 0x51, + 0x7f, 0x90, 0xee, 0xf6, 0xa3, 0xf0, 0xf0, 0xef, 0xd1, 0xa2, 0xaf, 0x92, + 0xd0, 0xd0, 0x90, 0xe4, + 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, 0x00, 0x12, 0x90, 0xae, 0xf6, 0x7f, + 0xf0, 0xe4, 0xef, 0xa3, + 0x53, 0xf0, 0xe7, 0xa9, 0xab, 0x53, 0x7f, 0xf7, 0x12, 0x04, 0x01, 0x25, + 0x54, 0x12, 0xe4, 0x53, + 0x7f, 0x90, 0xf0, 0xf8, 0xf0, 0xa3, 0xc0, 0x22, 0xc2, 0xa8, 0x10, 0xaf, + 0x04, 0x40, 0xa8, 0xd0, + 0xf5, 0x80, 0x7d, 0x90, 0xee, 0xa0, 0xa3, 0xf0, 0xf0, 0xef, 0xc2, 0x75, + 0x75, 0x7d, 0xa0, 0xc1, + 0xc3, 0x8c, 0xc4, 0x8d, 0xa8, 0xd0, 0x7d, 0x22, 0x7f, 0x0f, 0x7e, 0x05, + 0x12, 0x92, 0xd2, 0x4e, + 0x11, 0x7d, 0x05, 0x7f, 0x93, 0x7e, 0x4e, 0x12, 0x7d, 0xd2, 0x7f, 0x13, + 0x7e, 0x05, 0x12, 0x94, + 0xd2, 0x4e, 0x04, 0x7f, 0x25, 0x02, 0xef, 0x8a, 0x54, 0xc4, 0x24, 0xf0, + 0xf5, 0x5f, 0xe4, 0x82, + 0x7b, 0x34, 0x83, 0xf5, 0x01, 0xd0, 0x07, 0xd0, 0x0f, 0x7e, 0xc0, 0xe0, + 0xa3, 0xe0, 0xfa, 0xde, + 0x07, 0xc0, 0x01, 0xc0, 0xe4, 0x22, 0x7f, 0x90, 0xf0, 0xae, 0xf0, 0xa3, + 0x7f, 0x90, 0x74, 0xb0, + 0xf0, 0x10, 0xe4, 0xa3, 0x90, 0xf0, 0xd2, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, + 0xd4, 0x7f, 0xa3, 0xf0, + 0x22, 0xf0, 0xf0, 0x8f, 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, + 0xd5, 0x8d, 0xd7, 0x8a, + 0xd6, 0x8b, 0xf7, 0x30, 0x7f, 0x04, 0x80, 0x06, 0x7f, 0x02, 0x8f, 0x02, + 0x22, 0xdb, 0xf0, 0x8f, + 0xf7, 0x30, 0x63, 0x03, 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, + 0xd6, 0x8b, 0xf7, 0x30, + 0x7f, 0x04, 0x80, 0x05, 0x7f, 0x02, 0x8f, 0x01, 0x22, 0xdb, 0xf0, 0x8f, + 0xf7, 0x30, 0x63, 0x03, + 0xff, 0x07, 0xd4, 0x8f, 0xd5, 0x8d, 0xd7, 0x8a, 0xd6, 0x8b, 0xf7, 0x30, + 0x7f, 0x04, 0x80, 0x07, + 0x7f, 0x02, 0x8f, 0x03, 0x22, 0xdb, 0x7a, 0x90, 0x12, 0x98, 0x98, 0x27, + 0x00, 0x00, 0x00, 0x00, + 0x7a, 0x90, 0x12, 0x9c, 0x98, 0x27, 0x00, 0x00, 0x00, 0x00, 0x90, 0xe4, + 0x96, 0x7a, 0xa3, 0xf0, + 0x22, 0xf0, 0x7f, 0x90, 0xe0, 0xf8, 0xa3, 0xff, 0x90, 0xe0, 0xae, 0x7f, + 0xf0, 0xcf, 0xef, 0xa3, + 0x12, 0xf0, 0xb5, 0x55, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x6d, 0xef, 0x02, 0x70, + 0x6c, 0xee, 0x10, 0x60, 0xef, 0x0f, 0x06, 0xaa, 0x01, 0x70, 0x14, 0x0e, + 0x82, 0xf5, 0x83, 0x8a, + 0xf0, 0xe4, 0xe8, 0x80, 0x00, 0x22, 0x0a, 0x00, 0x00, 0xf4, 0x3f, 0x00, + 0x00, 0xaf, 0xb5, 0x00, + 0xff, 0x05, 0xf5, 0xff, 0x00, 0x4a, 0x3f, 0x00, 0xff, 0x5b, 0xca, 0xff, + 0x90, 0xe0, 0x4b, 0x7b, + 0x2f, 0x74, 0x90, 0xf0, 0xf2, 0x7e, 0xa3, 0xe0, 0x25, 0xe0, 0x04, 0xe0, + 0x7b, 0x90, 0xf0, 0x58, + 0x3a, 0x02, 0x7d, 0x9a, 0x7c, 0x16, 0x7f, 0x71, 0x7e, 0x04, 0x12, 0x00, + 0xf5, 0x53, 0x18, 0x7d, + 0x71, 0x7c, 0x03, 0x7f, 0x00, 0x7e, 0x53, 0x02, 0x30, 0xf5, 0xfd, 0x40, + 0x40, 0xc2, 0xd3, 0x8e, + 0xd2, 0x8f, 0x24, 0xed, 0xff, 0xff, 0x34, 0xec, 0xf5, 0xff, 0x8f, 0xda, + 0x22, 0xd9, 0xa9, 0x53, + 0x53, 0xe7, 0xf7, 0xab, 0x04, 0x7f, 0x25, 0x12, 0xc2, 0x01, 0xe4, 0x62, + 0x7f, 0x90, 0xf0, 0xf8, + 0xf0, 0xa3, 0x90, 0x22, 0x66, 0x7f, 0x1f, 0x74, 0xa3, 0xf0, 0x7f, 0x74, + 0xe4, 0xf0, 0x7f, 0x90, + 0xf0, 0xf8, 0xf0, 0xa3, 0x30, 0x22, 0xfd, 0x40, 0x40, 0xc2, 0x54, 0xef, + 0x8e, 0xfe, 0xf5, 0xc2, + 0x8c, 0xc1, 0x8d, 0xc3, 0x22, 0xc5, 0x7a, 0x90, 0xe0, 0xbd, 0x90, 0x04, + 0xe9, 0x7b, 0x60, 0xf0, + 0xe0, 0x05, 0x7a, 0x90, 0xf0, 0xbd, 0x12, 0x22, 0x79, 0x00, 0x55, 0x12, + 0x12, 0x41, 0xfa, 0x55, + 0x4a, 0x12, 0x02, 0x63, 0x5b, 0x48, 0x40, 0xc2, 0x54, 0xef, 0x8e, 0xfe, + 0xf5, 0xc2, 0x8c, 0xc1, + 0x8d, 0xc3, 0x22, 0xc4, 0x90, 0xe4, 0x66, 0x7f, 0xa3, 0xf0, 0x90, 0xf0, + 0xf8, 0x7f, 0xa3, 0xf0, + 0x22, 0xf0, 0x7a, 0x90, 0xe0, 0xbd, 0x7a, 0x90, 0xf0, 0xbe, 0x90, 0xe4, + 0xbd, 0x7a, 0x22, 0xf0, + 0x7f, 0x78, 0xf6, 0xe4, 0xfd, 0xd8, 0x81, 0x75, 0x02, 0x3f, 0x3e, 0x24, + 0x06, 0x7d, 0x90, 0x7c, + 0x02, 0x7f, 0x00, 0x7e, 0x53, 0x02, 0x8e, 0xf5, 0x8f, 0x82, 0xa3, 0x83, + 0x82, 0xae, 0x83, 0xaf, + 0x20, 0x22, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x74, 0x92, + 0x90, 0xff, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x90, 0xe4, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x90, 0xe4, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x90, 0xe4, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x90, 0xe4, 0xf8, 0x7f, + 0xa3, 0xf0, 0x22, 0xf0, 0x90, 0xe4, 0xf8, 0x7f, 0xa3, 0xf0, 0x22, 0xf0, + 0x00, 0x02, 0x02, 0x4a, + 0xef, 0x52, 0x00, 0x83, 0x1f, 0xfe, 0x00, 0x02, 0x00, 0x01, 0xe8, 0x03, + 0x10, 0x00, 0x08, 0x00, + 0x80, 0x00, 0x03, 0x94, 0x00, 0xd9, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00 }; #endif /* __DRXJ_MC_VSBQAM_H__ */ diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj_options.h b/drivers/media/dvb-frontends/drx39xyj/drxj_options.h index 64ed1702d524..f3902868eaad 100644 --- a/drivers/media/dvb-frontends/drx39xyj/drxj_options.h +++ b/drivers/media/dvb-frontends/drx39xyj/drxj_options.h @@ -62,4 +62,4 @@ THE END #ifdef __cplusplus } #endif -#endif /* __DRXJ_OPTIONS_H__ */ +#endif /* __DRXJ_OPTIONS_H__ */ |