From 41e90653fe35242291f248a66f1da70e62965d1d Mon Sep 17 00:00:00 2001
From: Rosen Penev Compresses `src` content as a single zstd compressed frame into already allocated `dst`.
Hint : compression runs faster if `dstCapacity` >= `ZSTD_compressBound(srcSize)`.
@return : compressed size written into `dst` (<= `dstCapacity),
- or an error code if it fails (which can be tested using ZSTD_isError()).
+ or an error code if it fails (which can be tested using ZSTD_isError()).
size_t ZSTD_decompress( void* dst, size_t dstCapacity,
@@ -85,7 +85,7 @@
`dstCapacity` is an upper bound of originalSize to regenerate.
If user cannot imply a maximum upper bound, it's better to use streaming mode to decompress data.
@return : the number of bytes decompressed into `dst` (<= `dstCapacity`),
- or an errorCode if it fails (which can be tested using ZSTD_isError()).
+ or an errorCode if it fails (which can be tested using ZSTD_isError()).
#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1) @@ -112,7 +112,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); note 5 : If source is untrusted, decompressed size could be wrong or intentionally modified. Always ensure return value fits within application's authorized limits. Each application can set its own limits. - note 6 : This function replaces ZSTD_getDecompressedSize() + note 6 : This function replaces ZSTD_getDecompressedSize()
unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize); @@ -120,7 +120,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); Both functions work the same way, but ZSTD_getDecompressedSize() blends "empty", "unknown" and "error" results to the same return value (0), while ZSTD_getFrameContentSize() gives them separate return values. - @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise. + @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise.
size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize); @@ -128,7 +128,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); `srcSize` must be >= first frame size @return : the compressed size of the first frame starting at `src`, suitable to pass as `srcSize` to `ZSTD_decompress` or similar, - or an error code if input is invalid + or an error code if input is invalid
#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < (128<<10)) ? (((128<<10) - (srcSize)) >> 11)/* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */ @@ -148,7 +148,7 @@ int ZSTD_maxCLevel(void); /*!< maximum compression lev It doesn't change the compression ratio, which remains identical. Note 2 : In multi-threaded environments, use one different context per thread for parallel execution. - +
typedef struct ZSTD_CCtx_s ZSTD_CCtx; ZSTD_CCtx* ZSTD_createCCtx(void); size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); @@ -159,14 +159,14 @@ size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); int compressionLevel);
Same as ZSTD_compress(), using an explicit ZSTD_CCtx The function will compress at requested compression level, - ignoring any other parameter + ignoring any other parameter
When decompressing many times, it is recommended to allocate a context only once, and re-use it for each successive compression operation. This will make workload friendlier for system's memory. - Use one context per thread for parallel execution. + Use one context per thread for parallel execution.
typedef struct ZSTD_DCtx_s ZSTD_DCtx; ZSTD_DCtx* ZSTD_createDCtx(void); size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); @@ -177,7 +177,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx);
Same as ZSTD_decompress(), requires an allocated ZSTD_DCtx. Compatible with sticky parameters. - +
typedef struct { @@ -348,7 +350,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); @return : a structure, ZSTD_bounds, which contains - an error status field, which must be tested using ZSTD_isError() - lower and upper bounds, both inclusive - +
size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value); @@ -361,7 +363,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); => compressionLevel, hashLog, chainLog, searchLog, minMatch, targetLength and strategy. new parameters will be active for next job only (after a flush()). @return : an error code (which can be tested using ZSTD_isError()). - +
size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); @@ -378,7 +380,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); for example with ZSTD_compress2(), or invoking immediately ZSTD_compressStream2(,,,ZSTD_e_end), this value is automatically overridden by srcSize instead. - +
typedef enum { @@ -400,7 +402,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Parameters can only be changed between 2 sessions (i.e. no compression is currently ongoing) otherwise the reset fails, and function returns an error value (which can be tested using ZSTD_isError()) - Both : similar to resetting the session, followed by resetting parameters. - +
size_t ZSTD_compress2( ZSTD_CCtx* cctx, @@ -414,7 +416,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Hint : compression runs faster if `dstCapacity` >= `ZSTD_compressBound(srcSize)`. @return : compressed size written into `dst` (<= `dstCapacity), or an error code if it fails (which can be tested using ZSTD_isError()). - +
size_t ZSTD_DCtx_setParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int value); @@ -454,7 +456,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Providing a value beyond bound will either clamp it, or trigger an error (depending on parameter). Setting a parameter is only possible during frame initialization (before starting decompression). @return : 0, or an error code (which can be tested using ZSTD_isError()). - +
size_t ZSTD_DCtx_reset(ZSTD_DCtx* dctx, ZSTD_ResetDirective reset); @@ -462,7 +464,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Session and parameters can be reset jointly or separately. Parameters can only be reset when no active frame is being decompressed. @return : 0, or an error code, which can be tested with ZSTD_isError() - +
typedef ZSTD_CCtx ZSTD_CStream; /**< CCtx and CStream are now effectively same object (>= v1.3.0) */ @@ -580,7 +582,7 @@ size_t ZSTD_freeCStream(ZSTD_CStream* zcs); only ZSTD_e_end or ZSTD_e_flush operations are allowed. Before starting a new compression job, or changing compression parameters, it is required to fully flush internal buffers. - +
size_t ZSTD_CStreamInSize(void); /**< recommended size for input buffer */ @@ -603,7 +605,7 @@ size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); ZSTD_CCtx_refCDict(zcs, NULL); // clear the dictionary (if any) ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); - +
@@ -629,7 +631,7 @@ size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); or any other value > 0, which means there is still some decoding or flushing to do to complete current frame : the return value is a suggested next input size (just a hint for better latency) that will never request more than the remaining frame size. - +
typedef ZSTD_DCtx ZSTD_DStream; /**< DCtx and DStream are now effectively same object (>= v1.3.0) */ @@ -654,7 +656,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); or a buffer with specified information (see dictBuilder/zdict.h). Note : This function loads the dictionary, resulting in significant startup delay. It's intended for a dictionary used only once. - Note 2 : When `dict == NULL || dictSize < 8` no dictionary is used. + Note 2 : When `dict == NULL || dictSize < 8` no dictionary is used.
size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, @@ -665,7 +667,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Dictionary must be identical to the one used during compression. Note : This function loads the dictionary, resulting in significant startup delay. It's intended for a dictionary used only once. - Note : When `dict == NULL || dictSize < 8` no dictionary is used. + Note : When `dict == NULL || dictSize < 8` no dictionary is used.
size_t ZSTD_freeCDict(ZSTD_CDict* CDict); -Function frees memory allocated by ZSTD_createCDict(). +
Function frees memory allocated by ZSTD_createCDict().
size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, @@ -691,16 +693,16 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds);Compression using a digested Dictionary. Recommended when same dictionary is used multiple times. Note : compression level is _decided at dictionary creation time_, - and frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no) + and frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no)
ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize);Create a digested dictionary, ready to start decompression operation without startup delay. - dictBuffer can be released after DDict creation, as its content is copied inside DDict. + dictBuffer can be released after DDict creation, as its content is copied inside DDict.
size_t ZSTD_freeDDict(ZSTD_DDict* ddict); -Function frees memory allocated with ZSTD_createDDict() +
Function frees memory allocated with ZSTD_createDDict()
size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx, @@ -708,7 +710,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); const void* src, size_t srcSize, const ZSTD_DDict* ddict);Decompression using a digested Dictionary. - Recommended when same dictionary is used multiple times. + Recommended when same dictionary is used multiple times.
unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize);Provides the dictID stored within dictionary. if @return == 0, the dictionary is not conformant with Zstandard specification. - It can still be loaded, but as a content-only dictionary. + It can still be loaded, but as a content-only dictionary.
unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict);Provides the dictID of the dictionary loaded into `ddict`. If @return == 0, the dictionary is not conformant to Zstandard specification, or empty. - Non-conformant dictionaries can still be loaded, but as content-only dictionaries. + Non-conformant dictionaries can still be loaded, but as content-only dictionaries.
unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); @@ -734,7 +736,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Note : this use case also happens when using a non-conformant dictionary. - `srcSize` is too small, and as a result, the frame header could not be decoded (only possible if `srcSize < ZSTD_FRAMEHEADERSIZE_MAX`). - This is not a Zstandard frame. - When identifying the exact failure cause, it's possible to use ZSTD_getFrameHeader(), which will provide a more precise error code. + When identifying the exact failure cause, it's possible to use ZSTD_getFrameHeader(), which will provide a more precise error code.
@@ -760,7 +762,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Use experimental ZSTD_CCtx_loadDictionary_byReference() to reference content instead. In such a case, dictionary buffer must outlive its users. Note 4 : Use ZSTD_CCtx_loadDictionary_advanced() - to precisely select how dictionary content must be interpreted. + to precisely select how dictionary content must be interpreted.
size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); @@ -774,7 +776,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Special : Referencing a NULL CDict means "return to no-dictionary mode". Note 1 : Currently, only one dictionary can be managed. Referencing a new dictionary effectively "discards" any previous one. - Note 2 : CDict is just referenced, its lifetime must outlive its usage within CCtx. + Note 2 : CDict is just referenced, its lifetime must outlive its usage within CCtx.
size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, @@ -795,7 +797,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); It's a CPU consuming operation, with non-negligible impact on latency. If there is a need to use the same prefix multiple times, consider loadDictionary instead. Note 4 : By default, the prefix is interpreted as raw content (ZSTD_dm_rawContent). - Use experimental ZSTD_CCtx_refPrefix_advanced() to alter dictionary interpretation. + Use experimental ZSTD_CCtx_refPrefix_advanced() to alter dictionary interpretation.
size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); @@ -812,7 +814,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Use ZSTD_DCtx_loadDictionary_byReference() to reference dictionary content instead. Note 3 : Use ZSTD_DCtx_loadDictionary_advanced() to take control of how dictionary content is loaded and interpreted. - +
size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); @@ -823,7 +825,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Referencing a new dictionary effectively "discards" any previous one. Special: referencing a NULL DDict means "return to no-dictionary mode". Note 2 : DDict is just referenced, its lifetime must outlive its usage from DCtx. - +
size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, @@ -842,7 +844,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode (Experimental section) Note 4 : Referencing a raw content prefix has almost no cpu nor memory cost. A full dictionary is more costly, as it requires building tables. - +
size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx); @@ -852,7 +854,7 @@ size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds); size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict); size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict);These functions give the _current_ memory usage of selected object. - Note that object memory usage can evolve (increase or decrease) over time. + Note that object memory usage can evolve (increase or decrease) over time.
@@ -861,7 +863,7 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); They can still change in future versions. Some of them are planned to remain in the static_only section indefinitely. Some of them might be removed in the future (especially when redundant with existing stable functions) - +
typedef struct { @@ -975,7 +977,7 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); Each application can set its own limits. note 5 : ZSTD_findDecompressedSize handles multiple frames, and so it must traverse the input to read each contained frame header. This is fast as most of the data is skipped, - however it does mean that all frame data must be present and valid. + however it does mean that all frame data must be present and valid.
unsigned long long ZSTD_decompressBound(const void* src, size_t srcSize); @@ -990,13 +992,13 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); in this case, `ZSTD_findDecompressedSize` and `ZSTD_decompressBound` return the same value. note 3 : when the decompressed size field isn't available, the upper-bound for that frame is calculated by: upper-bound = # blocks * min(128 KB, Window_Size) - +
size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize);srcSize must be >= ZSTD_FRAMEHEADERSIZE_PREFIX. @return : size of the Frame Header, - or an error code (if srcSize is too small) + or an error code (if srcSize is too small)
size_t ZSTD_estimateCStreamSize(int compressionLevel); @@ -1031,7 +1033,7 @@ size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize); or deducted from a valid frame Header, using ZSTD_estimateDStreamSize_fromFrame(); Note : if streaming is init with function ZSTD_init?Stream_usingDict(), an internal ?Dict will be created, which additional size is not estimated here. - In this case, get total size by adding ZSTD_estimate?DictSize + In this case, get total size by adding ZSTD_estimate?DictSize
size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel); @@ -1040,7 +1042,7 @@ size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMetZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict(). ZSTD_estimateCDictSize_advanced() makes it possible to control compression parameters precisely, like ZSTD_createCDict_advanced(). Note : dictionaries created by reference (`ZSTD_dlm_byRef`) are logically smaller. - +
ZSTD_CCtx* ZSTD_initStaticCCtx(void* workspace, size_t workspaceSize); @@ -1064,7 +1066,7 @@ ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); ZSTD_CCtx_loadDictionary(), ZSTD_initCStream_usingDict() or ZSTD_initDStream_usingDict(). Limitation 2 : static cctx currently not compatible with multi-threading. Limitation 3 : static dctx is incompatible with legacy support. - +
ZSTD_DStream* ZSTD_initStaticDStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticDCtx() */ @@ -1076,7 +1078,7 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< tThese prototypes make it possible to pass your own allocation/free functions. ZSTD_customMem is provided at creation time, using ZSTD_create*_advanced() variants listed below. All allocation/free operations will be completed using these custom variants instead of regular
ones. - +
Create a digested dictionary for compression Dictionary content is just referenced, not duplicated. As a consequence, `dictBuffer` **must** outlive CDict, - and its content must remain unmodified throughout the lifetime of CDict. + and its content must remain unmodified throughout the lifetime of CDict.
ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize);@return ZSTD_compressionParameters structure for a selected compression level and estimated srcSize. - `estimatedSrcSize` value is optional, select 0 if not known + `estimatedSrcSize` value is optional, select 0 if not known
ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize);same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. - All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 + All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0
size_t ZSTD_checkCParams(ZSTD_compressionParameters params);Ensure param values remain within authorized range. - @return 0 on success, or an error code (can be checked with ZSTD_isError()) + @return 0 on success, or an error code (can be checked with ZSTD_isError())
ZSTD_compressionParameters ZSTD_adjustCParams(ZSTD_compressionParameters cPar, unsigned long long srcSize, size_t dictSize); @@ -1108,7 +1110,7 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< t `srcSize` can be unknown, in which case use ZSTD_CONTENTSIZE_UNKNOWN. `dictSize` must be `0` when there is no dictionary. cPar can be invalid : all parameters will be clamped within valid range in the @return struct. - This function never fails (wide contract) + This function never fails (wide contract)
size_t ZSTD_compress_advanced(ZSTD_CCtx* cctx, @@ -1116,7 +1118,7 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< t const void* src, size_t srcSize, const void* dict,size_t dictSize, ZSTD_parameters params); -Same as ZSTD_compress_usingDict(), with fine-tune control over compression parameters (by structure) +
Same as ZSTD_compress_usingDict(), with fine-tune control over compression parameters (by structure)
size_t ZSTD_compress_usingCDict_advanced(ZSTD_CCtx* cctx, @@ -1124,30 +1126,30 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< t const void* src, size_t srcSize, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams); -Same as ZSTD_compress_usingCDict(), with fine-tune control over frame parameters +
Same as ZSTD_compress_usingCDict(), with fine-tune control over frame parameters
size_t ZSTD_CCtx_loadDictionary_byReference(ZSTD_CCtx* cctx, const void* dict, size_t dictSize);Same as ZSTD_CCtx_loadDictionary(), but dictionary content is referenced, instead of being copied into CCtx. - It saves some memory, but also requires that `dict` outlives its usage within `cctx` + It saves some memory, but also requires that `dict` outlives its usage within `cctx`
size_t ZSTD_CCtx_loadDictionary_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType);Same as ZSTD_CCtx_loadDictionary(), but gives finer control over how to load the dictionary (by copy ? by reference ?) - and how to interpret it (automatic ? force raw mode ? full mode only ?) + and how to interpret it (automatic ? force raw mode ? full mode only ?)
size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType);Same as ZSTD_CCtx_refPrefix(), but gives finer control over - how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) + how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?)
size_t ZSTD_CCtx_getParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int* value);Get the requested compression parameter value, selected by enum ZSTD_cParameter, and store it into int* value. @return : 0, or an error code (which can be tested with ZSTD_isError()). - +
ZSTD_CCtx_params* ZSTD_createCCtxParams(void); @@ -1167,24 +1169,24 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); This can be used with ZSTD_estimateCCtxSize_advanced_usingCCtxParams() for static allocation of CCtx for single-threaded compression. - +
size_t ZSTD_CCtxParams_reset(ZSTD_CCtx_params* params);Reset params to default values. - +
size_t ZSTD_CCtxParams_init(ZSTD_CCtx_params* cctxParams, int compressionLevel);Initializes the compression parameters of cctxParams according to compression level. All other parameters are reset to their default values. - +
size_t ZSTD_CCtxParams_init_advanced(ZSTD_CCtx_params* cctxParams, ZSTD_parameters params);Initializes the compression and frame parameters of cctxParams according to params. All other parameters are reset to their default values. - +
size_t ZSTD_CCtxParams_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int value); @@ -1192,14 +1194,14 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); Set one compression parameter, selected by enum ZSTD_cParameter. Parameters must be applied to a ZSTD_CCtx using ZSTD_CCtx_setParametersUsingCCtxParams(). @result : 0, or an error code (which can be tested with ZSTD_isError()). - +
size_t ZSTD_CCtxParams_getParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int* value);Similar to ZSTD_CCtx_getParameter. Get the requested value of one compression parameter, selected by enum ZSTD_cParameter. @result : 0, or an error code (which can be tested with ZSTD_isError()). - +
size_t ZSTD_CCtx_setParametersUsingCCtxParams( @@ -1209,7 +1211,7 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); if nbWorkers==0, this will have no impact until a new compression is started. if nbWorkers>=1, new parameters will be picked up at next job, with a few restrictions (windowLog, pledgedSrcSize, nbWorkers, jobSize, and overlapLog are not updated). - +
size_t ZSTD_compressStream2_simpleArgs ( @@ -1221,7 +1223,7 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); but using only integral types as arguments. This variant might be helpful for binders from dynamic languages which have troubles handling structures containing memory pointers. - +
Tells if the content of `buffer` starts with a valid Frame Identifier. Note : Frame Identifier is 4 bytes. If `size < 4`, @return will always be 0. Note 2 : Legacy Frame Identifiers are considered valid only if Legacy Support is enabled. - Note 3 : Skippable Frame Identifiers are considered valid. + Note 3 : Skippable Frame Identifiers are considered valid.
ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, size_t dictSize);Create a digested dictionary, ready to start decompression operation without startup delay. Dictionary content is referenced, and therefore stays in dictBuffer. It is important that dictBuffer outlives DDict, - it must remain read accessible throughout the lifetime of DDict + it must remain read accessible throughout the lifetime of DDict
size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);Same as ZSTD_DCtx_loadDictionary(), but references `dict` content instead of copying it into `dctx`. This saves memory if `dict` remains around., - However, it's imperative that `dict` remains accessible (and unmodified) while being used, so it must outlive decompression. + However, it's imperative that `dict` remains accessible (and unmodified) while being used, so it must outlive decompression.
size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType);Same as ZSTD_DCtx_loadDictionary(), but gives direct control over how to load the dictionary (by copy ? by reference ?) - and how to interpret it (automatic ? force raw mode ? full mode only ?). + and how to interpret it (automatic ? force raw mode ? full mode only ?).
size_t ZSTD_DCtx_refPrefix_advanced(ZSTD_DCtx* dctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType);Same as ZSTD_DCtx_refPrefix(), but gives finer control over - how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) + how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?)
size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowSize); @@ -1265,14 +1267,14 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); This parameter is only useful in streaming mode, since no internal buffer is allocated in single-pass mode. By default, a decompression context accepts all window sizes <= (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT) @return : 0, or an error code (which can be tested using ZSTD_isError()). - +
size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format);Instruct the decoder context about what kind of data to decode next. This instruction is mandatory to decode data without a fully-formed header, such ZSTD_f_zstd1_magicless for example. - @return : 0, or an error code (which can be tested using ZSTD_isError()). + @return : 0, or an error code (which can be tested using ZSTD_isError()).
size_t ZSTD_decompressStream_simpleArgs ( @@ -1283,7 +1285,7 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); but using only integral types as arguments. This can be helpful for binders from dynamic languages which have troubles handling structures containing memory pointers. - +
Warning : most of these functions are now redundant with the Advanced API. @@ -1361,7 +1363,7 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* For the time being, pledgedSrcSize==0 is interpreted as "srcSize unknown" for compatibility with older programs, but it will change to mean "empty" in future version, so use macro ZSTD_CONTENTSIZE_UNKNOWN instead. @return : 0, or an error code (which can be tested using ZSTD_isError()) - +
typedef struct { @@ -1385,7 +1387,7 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* but everything it has produced has also been flushed so far, therefore flush speed is limited by production speed of oldest job irrespective of the speed of concurrent (and newer) jobs. - +
@@ -1517,7 +1519,7 @@ size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned lo Note : it's possible to know if next input to present is a header or a block, using ZSTD_nextInputType(). This information is not required to properly decode a frame. - == Special case : skippable frames + == Special case : skippable frames Skippable frames allow integration of user-defined data into a flow of concatenated frames. Skippable frames will be ignored (skipped) by decompressor. @@ -1549,7 +1551,7 @@ size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long
decode Frame Header, or requires larger `srcSize`. @return : 0, `zfhPtr` is correctly filled, >0, `srcSize` is too small, value is wanted `srcSize` amount, - or an error code, which can be tested using ZSTD_isError() + or an error code, which can be tested using ZSTD_isError()
typedef enum { ZSTDnit_frameHeader, ZSTDnit_blockHeader, ZSTDnit_block, ZSTDnit_lastBlock, ZSTDnit_checksum, ZSTDnit_skippableFrame } ZSTD_nextInputType_e; diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index cd73db13b..5589c323a 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -392,6 +392,11 @@ ZSTD_bounds ZSTD_cParam_getBounds(ZSTD_cParameter param) bounds.upperBound = ZSTD_TARGETCBLOCKSIZE_MAX; return bounds; + case ZSTD_c_srcSizeHint: + bounds.lowerBound = 0; + bounds.upperBound = ZSTD_SRCSIZEHINT_MAX; + return bounds; + default: { ZSTD_bounds const boundError = { ERROR(parameter_unsupported), 0, 0 }; return boundError; @@ -448,6 +453,7 @@ static int ZSTD_isUpdateAuthorized(ZSTD_cParameter param) case ZSTD_c_forceAttachDict: case ZSTD_c_literalCompressionMode: case ZSTD_c_targetCBlockSize: + case ZSTD_c_srcSizeHint: default: return 0; } @@ -494,6 +500,7 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value) case ZSTD_c_ldmMinMatch: case ZSTD_c_ldmBucketSizeLog: case ZSTD_c_targetCBlockSize: + case ZSTD_c_srcSizeHint: break; default: RETURN_ERROR(parameter_unsupported); @@ -674,6 +681,12 @@ size_t ZSTD_CCtxParams_setParameter(ZSTD_CCtx_params* CCtxParams, CCtxParams->targetCBlockSize = value; return CCtxParams->targetCBlockSize; + case ZSTD_c_srcSizeHint : + if (value!=0) /* 0 ==> default */ + BOUNDCHECK(ZSTD_c_srcSizeHint, value); + CCtxParams->srcSizeHint = value; + return CCtxParams->srcSizeHint; + default: RETURN_ERROR(parameter_unsupported, "unknown parameter"); } } @@ -779,6 +792,8 @@ size_t ZSTD_CCtxParams_getParameter( case ZSTD_c_targetCBlockSize : *value = (int)CCtxParams->targetCBlockSize; break; + case ZSTD_c_srcSizeHint : + *value = (int)CCtxParams->srcSizeHint; default: RETURN_ERROR(parameter_unsupported, "unknown parameter"); } return 0; @@ -1029,7 +1044,11 @@ ZSTD_adjustCParams(ZSTD_compressionParameters cPar, ZSTD_compressionParameters ZSTD_getCParamsFromCCtxParams( const ZSTD_CCtx_params* CCtxParams, U64 srcSizeHint, size_t dictSize) { - ZSTD_compressionParameters cParams = ZSTD_getCParams(CCtxParams->compressionLevel, srcSizeHint, dictSize); + ZSTD_compressionParameters cParams; + if (srcSizeHint == ZSTD_CONTENTSIZE_UNKNOWN && CCtxParams->srcSizeHint > 0) { + srcSizeHint = CCtxParams->srcSizeHint; + } + cParams = ZSTD_getCParams(CCtxParams->compressionLevel, srcSizeHint, dictSize); if (CCtxParams->ldmParams.enableLdm) cParams.windowLog = ZSTD_LDM_DEFAULT_WINDOW_LOG; if (CCtxParams->cParams.windowLog) cParams.windowLog = CCtxParams->cParams.windowLog; if (CCtxParams->cParams.hashLog) cParams.hashLog = CCtxParams->cParams.hashLog; diff --git a/lib/compress/zstd_compress_internal.h b/lib/compress/zstd_compress_internal.h index 6d623cc6b..0e4ec6b7d 100644 --- a/lib/compress/zstd_compress_internal.h +++ b/lib/compress/zstd_compress_internal.h @@ -203,6 +203,9 @@ struct ZSTD_CCtx_params_s { size_t targetCBlockSize; /* Tries to fit compressed block size to be around targetCBlockSize. * No target when targetCBlockSize == 0. * There is no guarantee on compressed block size */ + size_t srcSizeHint; /* User's best guess of source size. + * Hint is not valid when srcSizeHint == 0. + * There is no guarantee that hint is close to actual source size */ ZSTD_dictAttachPref_e attachDictPref; ZSTD_literalCompressionMode_e literalCompressionMode; diff --git a/lib/zstd.h b/lib/zstd.h index f8e95f228..4078f9c63 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -386,6 +386,7 @@ typedef enum { * ZSTD_c_forceAttachDict * ZSTD_c_literalCompressionMode * ZSTD_c_targetCBlockSize + * ZSTD_c_srcSizeHint * Because they are not stable, it's necessary to define ZSTD_STATIC_LINKING_ONLY to access them. * note : never ever use experimentalParam? names directly; * also, the enums values themselves are unstable and can still change. @@ -396,6 +397,7 @@ typedef enum { ZSTD_c_experimentalParam4=1001, ZSTD_c_experimentalParam5=1002, ZSTD_c_experimentalParam6=1003, + ZSTD_c_experimentalParam7=1004, } ZSTD_cParameter; typedef struct { @@ -1063,6 +1065,7 @@ ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); /* Advanced parameter bounds */ #define ZSTD_TARGETCBLOCKSIZE_MIN 64 #define ZSTD_TARGETCBLOCKSIZE_MAX ZSTD_BLOCKSIZE_MAX +#define ZSTD_SRCSIZEHINT_MAX 1e9 /* 1 GB */ /* internal */ #define ZSTD_HASHLOG3_MAX 17 @@ -1441,6 +1444,11 @@ ZSTDLIB_API size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* pre * There is no guarantee on compressed block size (default:0) */ #define ZSTD_c_targetCBlockSize ZSTD_c_experimentalParam6 +/* User's best guess of source size. + * Hint is not valid when srcSizeHint == 0. + * There is no guarantee that hint is close to actual source size */ +#define ZSTD_c_srcSizeHint ZSTD_c_experimentalParam7 + /*! ZSTD_CCtx_getParameter() : * Get the requested compression parameter value, selected by enum ZSTD_cParameter, * and store it into int* value. diff --git a/programs/fileio.c b/programs/fileio.c index 569a410c1..20543cd5e 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -305,6 +305,7 @@ struct FIO_prefs_s { int ldmBucketSizeLog; int ldmHashRateLog; size_t targetCBlockSize; + size_t srcSizeHint; ZSTD_literalCompressionMode_e literalCompressionMode; /* IO preferences */ @@ -350,6 +351,7 @@ FIO_prefs_t* FIO_createPreferences(void) ret->ldmBucketSizeLog = FIO_LDM_PARAM_NOTSET; ret->ldmHashRateLog = FIO_LDM_PARAM_NOTSET; ret->targetCBlockSize = 0; + ret->srcSizeHint = 0; ret->literalCompressionMode = ZSTD_lcm_auto; return ret; } @@ -422,6 +424,10 @@ void FIO_setTargetCBlockSize(FIO_prefs_t* const prefs, size_t targetCBlockSize) prefs->targetCBlockSize = targetCBlockSize; } +void FIO_setSrcSizeHint(FIO_prefs_t* const prefs, size_t srcSizeHint) { + prefs->srcSizeHint = srcSizeHint; +} + void FIO_setLiteralCompressionMode( FIO_prefs_t* const prefs, ZSTD_literalCompressionMode_e mode) { @@ -667,6 +673,8 @@ static cRess_t FIO_createCResources(FIO_prefs_t* const prefs, CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_compressionLevel, cLevel) ); /* max compressed block size */ CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_targetCBlockSize, (int)prefs->targetCBlockSize) ); + /* source size hint */ + CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_srcSizeHint, (int)prefs->srcSizeHint) ); /* long distance matching */ CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_enableLongDistanceMatching, prefs->ldmFlag) ); CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_ldmHashLog, prefs->ldmHashLog) ); diff --git a/programs/fileio.h b/programs/fileio.h index 311f8c0e1..fd49a749d 100644 --- a/programs/fileio.h +++ b/programs/fileio.h @@ -72,6 +72,7 @@ void FIO_setRemoveSrcFile(FIO_prefs_t* const prefs, unsigned flag); void FIO_setSparseWrite(FIO_prefs_t* const prefs, unsigned sparse); /**< 0: no sparse; 1: disable on stdout; 2: always enabled */ void FIO_setRsyncable(FIO_prefs_t* const prefs, int rsyncable); void FIO_setTargetCBlockSize(FIO_prefs_t* const prefs, size_t targetCBlockSize); +void FIO_setSrcSizeHint(FIO_prefs_t* const prefs, size_t srcSizeHint); void FIO_setLiteralCompressionMode( FIO_prefs_t* const prefs, ZSTD_literalCompressionMode_e mode); diff --git a/programs/zstdcli.c b/programs/zstdcli.c index de286cdf2..98b9ffb90 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -141,6 +141,7 @@ static int usage_advanced(const char* programName) DISPLAY( "--long[=#]: enable long distance matching with given window log (default: %u)\n", g_defaultMaxWindowLog); DISPLAY( "--fast[=#]: switch to ultra fast compression level (default: %u)\n", 1); DISPLAY( "--adapt : dynamically adapt compression level to I/O conditions \n"); + DISPLAY( "--size-hint=# optimize compression parameters for streaming input of approximately this size\n"); DISPLAY( "--target-compressed-block-size=# : make compressed block near targeted size \n"); #ifdef ZSTD_MULTITHREAD DISPLAY( " -T# : spawns # compression threads (default: 1, 0==# cores) \n"); @@ -589,6 +590,7 @@ int main(int argCount, const char* argv[]) unsigned maxDictSize = g_defaultMaxDictSize; unsigned dictID = 0; size_t targetCBlockSize = 0; + size_t srcSizeHint = 0; int dictCLevel = g_defaultDictCLevel; unsigned dictSelect = g_defaultSelectivityLevel; #ifdef UTIL_HAS_CREATEFILELIST @@ -746,6 +748,7 @@ int main(int argCount, const char* argv[]) if (longCommandWArg(&argument, "--dictID=")) { dictID = readU32FromChar(&argument); continue; } if (longCommandWArg(&argument, "--zstd=")) { if (!parseCompressionParameters(argument, &compressionParams)) CLEAN_RETURN(badusage(programName)); continue; } if (longCommandWArg(&argument, "--target-compressed-block-size=")) { targetCBlockSize = readU32FromChar(&argument); continue; } + if (longCommandWArg(&argument, "--size-hint=")) { srcSizeHint = readU32FromChar(&argument); continue; } if (longCommandWArg(&argument, "--long")) { unsigned ldmWindowLog = 0; ldmFlag = 1; @@ -1151,6 +1154,7 @@ int main(int argCount, const char* argv[]) FIO_setAdaptMax(prefs, adaptMax); FIO_setRsyncable(prefs, rsyncable); FIO_setTargetCBlockSize(prefs, targetCBlockSize); + FIO_setSrcSizeHint(prefs, srcSizeHint); FIO_setLiteralCompressionMode(prefs, literalCompressionMode); if (adaptMin > cLevel) cLevel = adaptMin; if (adaptMax < cLevel) cLevel = adaptMax; @@ -1160,7 +1164,7 @@ int main(int argCount, const char* argv[]) else operationResult = FIO_compressMultipleFilenames(prefs, filenameTable, filenameIdx, outFileName, suffix, dictFileName, cLevel, compressionParams); #else - (void)suffix; (void)adapt; (void)rsyncable; (void)ultra; (void)cLevel; (void)ldmFlag; (void)literalCompressionMode; (void)targetCBlockSize; /* not used when ZSTD_NOCOMPRESS set */ + (void)suffix; (void)adapt; (void)rsyncable; (void)ultra; (void)cLevel; (void)ldmFlag; (void)literalCompressionMode; (void)targetCBlockSize; (void)srcSizeHint; /* not used when ZSTD_NOCOMPRESS set */ DISPLAY("Compression not supported \n"); #endif } else { /* decompression or test */ diff --git a/tests/playTests.sh b/tests/playTests.sh index 69387321f..e3f4cac13 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -409,6 +409,34 @@ println "compress multiple files including a missing one (notHere) : " $ZSTD -f tmp1 notHere tmp2 && die "missing file not detected!" +println "\n===> size-hint mode" + +./datagen -g11000 > tmp +println "test : basic file compression vs streaming compression vs hinted streaming compression" +$ZSTD -14 -f tmp -o tmp.zst 2>&1 | tee file.out +cat tmp | $ZSTD -14 -f -o tmp.zst # only run for convenience of comparison +cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=11000 2>&1 | tee stream_sized.out + +file_ratio=$(cat file.out | awk '{print $4}' | sed 's/%//g') +stream_sized_ratio=$(cat stream_sized.out | awk '{print $4}' | sed 's/%//g') +rm file.out stream_sized.out + +ratio_diff=$(echo $stream_sized_ratio - $file_ratio | bc) +if [ $(echo "(100 * $ratio_diff) > 1" | bc -l) -eq 1 ] +then + die "hinted compression greater than 0.01% larger than file compression" +fi +println "test : hinted streaming compression and decompression" +cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=11000 +$ZSTD -df tmp.zst -o tmp_decompress +cmp tmp tmp_decompress || die "difference between original and decompressed file" +println "test : incorrect hinted stream sizes" +cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=11050 # slightly too high +cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=10950 # slightly too low +cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=22000 # considerably too high +cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=5500 # considerably too low + + println "\n===> dictionary tests " println "- test with raw dict (content only) " From edf2abf1069325f24199cdcc9cf405ab46b4bff9 Mon Sep 17 00:00:00 2001 From: Nick MagerkoDate: Mon, 19 Aug 2019 12:32:43 -0700 Subject: [PATCH 015/163] Fix fall-through case --- lib/compress/zstd_compress.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 5589c323a..d4471c2b2 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -794,6 +794,7 @@ size_t ZSTD_CCtxParams_getParameter( break; case ZSTD_c_srcSizeHint : *value = (int)CCtxParams->srcSizeHint; + break; default: RETURN_ERROR(parameter_unsupported, "unknown parameter"); } return 0; From fee8fbcddffddc2d18b6d27a01449a4d1dc9d355 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 12:58:54 -0700 Subject: [PATCH 016/163] Make upper bound INT_MAX --- lib/zstd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/zstd.h b/lib/zstd.h index 4078f9c63..ee7871f12 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -15,6 +15,7 @@ extern "C" { #define ZSTD_H_235446 /* ====== Dependency ======*/ +#include /* INT_MAX */ #include /* size_t */ @@ -1065,7 +1066,7 @@ ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); /* Advanced parameter bounds */ #define ZSTD_TARGETCBLOCKSIZE_MIN 64 #define ZSTD_TARGETCBLOCKSIZE_MAX ZSTD_BLOCKSIZE_MAX -#define ZSTD_SRCSIZEHINT_MAX 1e9 /* 1 GB */ +#define ZSTD_SRCSIZEHINT_MAX INT_MAX /* internal */ #define ZSTD_HASHLOG3_MAX 17 From 09894dc2ebd9c33ac87bf20f658fb82da09a2479 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 13:08:41 -0700 Subject: [PATCH 017/163] Add mention of regression with poor size hints --- lib/zstd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/zstd.h b/lib/zstd.h index ee7871f12..0fbe71ab8 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -1447,7 +1447,8 @@ ZSTDLIB_API size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* pre /* User's best guess of source size. * Hint is not valid when srcSizeHint == 0. - * There is no guarantee that hint is close to actual source size */ + * There is no guarantee that hint is close to actual source size, + * but compression ratio may regress significantly if guess considerably underestimates */ #define ZSTD_c_srcSizeHint ZSTD_c_experimentalParam7 /*! ZSTD_CCtx_getParameter() : From ea9d35922cc48260f8603757a98f22938abaa52c Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 15:12:24 -0700 Subject: [PATCH 018/163] Add size-hint to fuzz tests --- tests/fuzz/zstd_helpers.c | 3 +++ tests/zstreamtest.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/tests/fuzz/zstd_helpers.c b/tests/fuzz/zstd_helpers.c index 9dff2895a..5d24a48c4 100644 --- a/tests/fuzz/zstd_helpers.c +++ b/tests/fuzz/zstd_helpers.c @@ -90,6 +90,9 @@ void FUZZ_setRandomParameters(ZSTD_CCtx *cctx, size_t srcSize, uint32_t *state) setRand(cctx, ZSTD_c_forceMaxWindow, 0, 1, state); setRand(cctx, ZSTD_c_literalCompressionMode, 0, 2, state); setRand(cctx, ZSTD_c_forceAttachDict, 0, 2, state); + if (FUZZ_rand32(state, 0, 1) == 0) { + setRand(cctx, ZSTD_c_srcSizeHint, 0, 2 * srcSize, state); + } } FUZZ_dict_t FUZZ_train(void const* src, size_t srcSize, uint32_t *state) diff --git a/tests/zstreamtest.c b/tests/zstreamtest.c index 97d4e33e1..70326677c 100644 --- a/tests/zstreamtest.c +++ b/tests/zstreamtest.c @@ -1151,6 +1151,21 @@ static int basicUnitTests(U32 seed, double compressibility) } DISPLAYLEVEL(3, "OK \n"); + DISPLAYLEVEL(3, "test%3i : ZSTD_c_srcSizeHint provides hint about size of stream : ", testNb++); + { + CHECK_Z( ZSTD_initCStream(zc, 1 /* cLevel */) ); + outBuff.dst = (char*)(compressedBuffer); + outBuff.size = compressedBufferSize; + outBuff.pos = 0; + inBuff.src = CNBuffer; + inBuff.size = CNBufferSize; + inBuff.pos = 0; + CHECK_Z( ZSTD_compressStream(zc, &outBuff, &inBuff) ); + if (inBuff.pos != inBuff.size) goto _output_error; /* entire input should be consumed */ + { size_t const r = ZSTD_endStream(zc, &outBuff); + if (r != 0) goto _output_error; } /* error, or some data not flushed */ + } + /* Overlen overwriting window data bug */ DISPLAYLEVEL(3, "test%3i : wildcopy doesn't overwrite potential match data : ", testNb++); { /* This test has a window size of 1024 bytes and consists of 3 blocks: @@ -2106,6 +2121,7 @@ static int fuzzerTests_newAPI(U32 seed, int nbTests, int startTest, if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmMinMatch, FUZ_randomClampedLength(&lseed, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX), opaqueAPI) ); if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmBucketSizeLog, FUZ_randomClampedLength(&lseed, ZSTD_LDM_BUCKETSIZELOG_MIN, ZSTD_LDM_BUCKETSIZELOG_MAX), opaqueAPI) ); if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmHashRateLog, FUZ_randomClampedLength(&lseed, ZSTD_LDM_HASHRATELOG_MIN, ZSTD_LDM_HASHRATELOG_MAX), opaqueAPI) ); + if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_srcSizeHint, FUZ_randomClampedLength(&lseed, 0, ZSTD_ZSTD_SRCSIZEHINT_MAX), opaqueAPI) ); } /* mess with frame parameters */ From f9af70ca8a060bb05a476562513cd488a942a3c5 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 16:48:35 -0700 Subject: [PATCH 019/163] Fix playTests and add additional cases --- tests/playTests.sh | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/tests/playTests.sh b/tests/playTests.sh index e3f4cac13..2404ffb64 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -412,29 +412,31 @@ $ZSTD -f tmp1 notHere tmp2 && die "missing file not detected!" println "\n===> size-hint mode" ./datagen -g11000 > tmp -println "test : basic file compression vs streaming compression vs hinted streaming compression" -$ZSTD -14 -f tmp -o tmp.zst 2>&1 | tee file.out -cat tmp | $ZSTD -14 -f -o tmp.zst # only run for convenience of comparison -cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=11000 2>&1 | tee stream_sized.out - -file_ratio=$(cat file.out | awk '{print $4}' | sed 's/%//g') -stream_sized_ratio=$(cat stream_sized.out | awk '{print $4}' | sed 's/%//g') -rm file.out stream_sized.out - -ratio_diff=$(echo $stream_sized_ratio - $file_ratio | bc) -if [ $(echo "(100 * $ratio_diff) > 1" | bc -l) -eq 1 ] -then - die "hinted compression greater than 0.01% larger than file compression" +./datagen -g11000 > tmp2 +./datagen > tmpDict +println "test : basic file compression vs hinted streaming compression" +file_size=$($ZSTD -14 -f tmp -o tmp.zst && wc -c < tmp.zst) +stream_size=$(cat tmp | $ZSTD -14 --size-hint=11000 | wc -c) +if [ "$stream_size" -ge "$file_size" ]; then + die "hinted compression larger than expected" fi println "test : hinted streaming compression and decompression" cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=11000 $ZSTD -df tmp.zst -o tmp_decompress cmp tmp tmp_decompress || die "difference between original and decompressed file" +println "test : hinted streaming compression with dictionary" +cat tmp | $ZSTD -14 -f -D tmpDict --size-hint=11000 | $ZSTD -t -D tmpDict +println "test : multiple file compression with hints and dictionary" +$ZSTD -14 -f -D tmpDict --size-hint=11000 tmp tmp2 +$ZSTD -14 -f -o tmp1_.zst -D tmpDict --size-hint=11000 tmp +$ZSTD -14 -f -o tmp2_.zst -D tmpDict --size-hint=11000 tmp2 +cmp tmp.zst tmp1_.zst || die "first file's output differs" +cmp tmp2.zst tmp2_.zst || die "second file's output differs" println "test : incorrect hinted stream sizes" -cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=11050 # slightly too high -cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=10950 # slightly too low -cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=22000 # considerably too high -cat tmp | $ZSTD -14 -f -o tmp.zst --size-hint=5500 # considerably too low +cat tmp | $ZSTD -14 -f --size-hint=11050 | $ZSTD -t # slightly too high +cat tmp | $ZSTD -14 -f --size-hint=10950 | $ZSTD -t # slightly too low +cat tmp | $ZSTD -14 -f --size-hint=22000 | $ZSTD -t # considerably too high +cat tmp | $ZSTD -14 -f --size-hint=5500 | $ZSTD -t # considerably too low println "\n===> dictionary tests " From 2d39b43906343cbe20d47d340a8518e5d6fdf6c8 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 16:49:25 -0700 Subject: [PATCH 020/163] Use int for srcSizeHint when sensible --- lib/compress/zstd_compress_internal.h | 2 +- programs/fileio.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/compress/zstd_compress_internal.h b/lib/compress/zstd_compress_internal.h index 0e4ec6b7d..3e590ec37 100644 --- a/lib/compress/zstd_compress_internal.h +++ b/lib/compress/zstd_compress_internal.h @@ -203,7 +203,7 @@ struct ZSTD_CCtx_params_s { size_t targetCBlockSize; /* Tries to fit compressed block size to be around targetCBlockSize. * No target when targetCBlockSize == 0. * There is no guarantee on compressed block size */ - size_t srcSizeHint; /* User's best guess of source size. + int srcSizeHint; /* User's best guess of source size. * Hint is not valid when srcSizeHint == 0. * There is no guarantee that hint is close to actual source size */ diff --git a/programs/fileio.c b/programs/fileio.c index 20543cd5e..0eda12649 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -30,6 +30,7 @@ #include /* strcmp, strlen */ #include #include /* errno */ +#include /* INT_MAX */ #include #include "timefn.h" /* UTIL_getTime, UTIL_clockSpanMicro */ @@ -305,7 +306,7 @@ struct FIO_prefs_s { int ldmBucketSizeLog; int ldmHashRateLog; size_t targetCBlockSize; - size_t srcSizeHint; + int srcSizeHint; ZSTD_literalCompressionMode_e literalCompressionMode; /* IO preferences */ @@ -425,7 +426,7 @@ void FIO_setTargetCBlockSize(FIO_prefs_t* const prefs, size_t targetCBlockSize) } void FIO_setSrcSizeHint(FIO_prefs_t* const prefs, size_t srcSizeHint) { - prefs->srcSizeHint = srcSizeHint; + prefs->srcSizeHint = (int)MIN((size_t)INT_MAX, srcSizeHint); } void FIO_setLiteralCompressionMode( From 83076ab277884702428d9ebad933d119928eaf3e Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 16:50:26 -0700 Subject: [PATCH 021/163] Revert change to zstd manual --- doc/zstd_manual.html | 162 +++++++++++++++++++++---------------------- 1 file changed, 80 insertions(+), 82 deletions(-) diff --git a/doc/zstd_manual.html b/doc/zstd_manual.html index 806920a5f..26b204e14 100644 --- a/doc/zstd_manual.html +++ b/doc/zstd_manual.html @@ -76,7 +76,7 @@ Compresses `src` content as a single zstd compressed frame into already allocated `dst`. Hint : compression runs faster if `dstCapacity` >= `ZSTD_compressBound(srcSize)`. @return : compressed size written into `dst` (<= `dstCapacity), - or an error code if it fails (which can be tested using ZSTD_isError()). + or an error code if it fails (which can be tested using ZSTD_isError()).
size_t ZSTD_decompress( void* dst, size_t dstCapacity, @@ -85,7 +85,7 @@ `dstCapacity` is an upper bound of originalSize to regenerate. If user cannot imply a maximum upper bound, it's better to use streaming mode to decompress data. @return : the number of bytes decompressed into `dst` (<= `dstCapacity`), - or an errorCode if it fails (which can be tested using ZSTD_isError()). + or an errorCode if it fails (which can be tested using ZSTD_isError()).
#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1) @@ -112,7 +112,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); note 5 : If source is untrusted, decompressed size could be wrong or intentionally modified. Always ensure return value fits within application's authorized limits. Each application can set its own limits. - note 6 : This function replaces ZSTD_getDecompressedSize() + note 6 : This function replaces ZSTD_getDecompressedSize()
unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize); @@ -120,7 +120,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); Both functions work the same way, but ZSTD_getDecompressedSize() blends "empty", "unknown" and "error" results to the same return value (0), while ZSTD_getFrameContentSize() gives them separate return values. - @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise. + @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise.
size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize); @@ -128,7 +128,7 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); `srcSize` must be >= first frame size @return : the compressed size of the first frame starting at `src`, suitable to pass as `srcSize` to `ZSTD_decompress` or similar, - or an error code if input is invalid + or an error code if input is invalid
#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < (128<<10)) ? (((128<<10) - (srcSize)) >> 11)/* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */ @@ -148,7 +148,7 @@ int ZSTD_maxCLevel(void); /*!< maximum compression lev It doesn't change the compression ratio, which remains identical. Note 2 : In multi-threaded environments, use one different context per thread for parallel execution. - +
typedef struct ZSTD_CCtx_s ZSTD_CCtx; ZSTD_CCtx* ZSTD_createCCtx(void); size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); @@ -159,14 +159,14 @@ size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); int compressionLevel);
Same as ZSTD_compress(), using an explicit ZSTD_CCtx The function will compress at requested compression level, - ignoring any other parameter + ignoring any other parameter
When decompressing many times, it is recommended to allocate a context only once, and re-use it for each successive compression operation. This will make workload friendlier for system's memory. - Use one context per thread for parallel execution. + Use one context per thread for parallel execution.
typedef struct ZSTD_DCtx_s ZSTD_DCtx; ZSTD_DCtx* ZSTD_createDCtx(void); size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); @@ -177,7 +177,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx);
Same as ZSTD_decompress(), requires an allocated ZSTD_DCtx. Compatible with sticky parameters. - +
typedef struct { @@ -350,7 +348,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); @return : a structure, ZSTD_bounds, which contains - an error status field, which must be tested using ZSTD_isError() - lower and upper bounds, both inclusive - +
size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value); @@ -363,7 +361,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); => compressionLevel, hashLog, chainLog, searchLog, minMatch, targetLength and strategy. new parameters will be active for next job only (after a flush()). @return : an error code (which can be tested using ZSTD_isError()). - +
size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); @@ -380,7 +378,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); for example with ZSTD_compress2(), or invoking immediately ZSTD_compressStream2(,,,ZSTD_e_end), this value is automatically overridden by srcSize instead. - +
typedef enum { @@ -402,7 +400,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Parameters can only be changed between 2 sessions (i.e. no compression is currently ongoing) otherwise the reset fails, and function returns an error value (which can be tested using ZSTD_isError()) - Both : similar to resetting the session, followed by resetting parameters. - +
size_t ZSTD_compress2( ZSTD_CCtx* cctx, @@ -416,7 +414,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Hint : compression runs faster if `dstCapacity` >= `ZSTD_compressBound(srcSize)`. @return : compressed size written into `dst` (<= `dstCapacity), or an error code if it fails (which can be tested using ZSTD_isError()). - +
size_t ZSTD_DCtx_setParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int value); @@ -456,7 +454,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Providing a value beyond bound will either clamp it, or trigger an error (depending on parameter). Setting a parameter is only possible during frame initialization (before starting decompression). @return : 0, or an error code (which can be tested using ZSTD_isError()). - +
size_t ZSTD_DCtx_reset(ZSTD_DCtx* dctx, ZSTD_ResetDirective reset); @@ -464,7 +462,7 @@ size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); Session and parameters can be reset jointly or separately. Parameters can only be reset when no active frame is being decompressed. @return : 0, or an error code, which can be tested with ZSTD_isError() - +
typedef ZSTD_CCtx ZSTD_CStream; /**< CCtx and CStream are now effectively same object (>= v1.3.0) */ @@ -582,7 +580,7 @@ size_t ZSTD_freeCStream(ZSTD_CStream* zcs); only ZSTD_e_end or ZSTD_e_flush operations are allowed. Before starting a new compression job, or changing compression parameters, it is required to fully flush internal buffers. - +
size_t ZSTD_CStreamInSize(void); /**< recommended size for input buffer */ @@ -605,7 +603,7 @@ size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); ZSTD_CCtx_refCDict(zcs, NULL); // clear the dictionary (if any) ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); - +
@@ -631,7 +629,7 @@ size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); or any other value > 0, which means there is still some decoding or flushing to do to complete current frame : the return value is a suggested next input size (just a hint for better latency) that will never request more than the remaining frame size. - +
typedef ZSTD_DCtx ZSTD_DStream; /**< DCtx and DStream are now effectively same object (>= v1.3.0) */ @@ -656,7 +654,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); or a buffer with specified information (see dictBuilder/zdict.h). Note : This function loads the dictionary, resulting in significant startup delay. It's intended for a dictionary used only once. - Note 2 : When `dict == NULL || dictSize < 8` no dictionary is used. + Note 2 : When `dict == NULL || dictSize < 8` no dictionary is used.
size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, @@ -667,7 +665,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Dictionary must be identical to the one used during compression. Note : This function loads the dictionary, resulting in significant startup delay. It's intended for a dictionary used only once. - Note : When `dict == NULL || dictSize < 8` no dictionary is used. + Note : When `dict == NULL || dictSize < 8` no dictionary is used.
size_t ZSTD_freeCDict(ZSTD_CDict* CDict); -Function frees memory allocated by ZSTD_createCDict(). +
Function frees memory allocated by ZSTD_createCDict().
size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, @@ -693,16 +691,16 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds);Compression using a digested Dictionary. Recommended when same dictionary is used multiple times. Note : compression level is _decided at dictionary creation time_, - and frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no) + and frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no)
ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize);Create a digested dictionary, ready to start decompression operation without startup delay. - dictBuffer can be released after DDict creation, as its content is copied inside DDict. + dictBuffer can be released after DDict creation, as its content is copied inside DDict.
size_t ZSTD_freeDDict(ZSTD_DDict* ddict); -Function frees memory allocated with ZSTD_createDDict() +
Function frees memory allocated with ZSTD_createDDict()
size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx, @@ -710,7 +708,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); const void* src, size_t srcSize, const ZSTD_DDict* ddict);Decompression using a digested Dictionary. - Recommended when same dictionary is used multiple times. + Recommended when same dictionary is used multiple times.
unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize);Provides the dictID stored within dictionary. if @return == 0, the dictionary is not conformant with Zstandard specification. - It can still be loaded, but as a content-only dictionary. + It can still be loaded, but as a content-only dictionary.
unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict);Provides the dictID of the dictionary loaded into `ddict`. If @return == 0, the dictionary is not conformant to Zstandard specification, or empty. - Non-conformant dictionaries can still be loaded, but as content-only dictionaries. + Non-conformant dictionaries can still be loaded, but as content-only dictionaries.
unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); @@ -736,7 +734,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Note : this use case also happens when using a non-conformant dictionary. - `srcSize` is too small, and as a result, the frame header could not be decoded (only possible if `srcSize < ZSTD_FRAMEHEADERSIZE_MAX`). - This is not a Zstandard frame. - When identifying the exact failure cause, it's possible to use ZSTD_getFrameHeader(), which will provide a more precise error code. + When identifying the exact failure cause, it's possible to use ZSTD_getFrameHeader(), which will provide a more precise error code.
@@ -762,7 +760,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Use experimental ZSTD_CCtx_loadDictionary_byReference() to reference content instead. In such a case, dictionary buffer must outlive its users. Note 4 : Use ZSTD_CCtx_loadDictionary_advanced() - to precisely select how dictionary content must be interpreted. + to precisely select how dictionary content must be interpreted.
size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); @@ -776,7 +774,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Special : Referencing a NULL CDict means "return to no-dictionary mode". Note 1 : Currently, only one dictionary can be managed. Referencing a new dictionary effectively "discards" any previous one. - Note 2 : CDict is just referenced, its lifetime must outlive its usage within CCtx. + Note 2 : CDict is just referenced, its lifetime must outlive its usage within CCtx.
size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, @@ -797,7 +795,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); It's a CPU consuming operation, with non-negligible impact on latency. If there is a need to use the same prefix multiple times, consider loadDictionary instead. Note 4 : By default, the prefix is interpreted as raw content (ZSTD_dm_rawContent). - Use experimental ZSTD_CCtx_refPrefix_advanced() to alter dictionary interpretation. + Use experimental ZSTD_CCtx_refPrefix_advanced() to alter dictionary interpretation.
size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); @@ -814,7 +812,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Use ZSTD_DCtx_loadDictionary_byReference() to reference dictionary content instead. Note 3 : Use ZSTD_DCtx_loadDictionary_advanced() to take control of how dictionary content is loaded and interpreted. - +
size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); @@ -825,7 +823,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Referencing a new dictionary effectively "discards" any previous one. Special: referencing a NULL DDict means "return to no-dictionary mode". Note 2 : DDict is just referenced, its lifetime must outlive its usage from DCtx. - +
size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, @@ -844,7 +842,7 @@ size_t ZSTD_freeDStream(ZSTD_DStream* zds); Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode (Experimental section) Note 4 : Referencing a raw content prefix has almost no cpu nor memory cost. A full dictionary is more costly, as it requires building tables. - +
size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx); @@ -854,7 +852,7 @@ size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds); size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict); size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict);These functions give the _current_ memory usage of selected object. - Note that object memory usage can evolve (increase or decrease) over time. + Note that object memory usage can evolve (increase or decrease) over time.
@@ -863,7 +861,7 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); They can still change in future versions. Some of them are planned to remain in the static_only section indefinitely. Some of them might be removed in the future (especially when redundant with existing stable functions) - +
typedef struct { @@ -977,7 +975,7 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); Each application can set its own limits. note 5 : ZSTD_findDecompressedSize handles multiple frames, and so it must traverse the input to read each contained frame header. This is fast as most of the data is skipped, - however it does mean that all frame data must be present and valid. + however it does mean that all frame data must be present and valid.
unsigned long long ZSTD_decompressBound(const void* src, size_t srcSize); @@ -992,13 +990,13 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); in this case, `ZSTD_findDecompressedSize` and `ZSTD_decompressBound` return the same value. note 3 : when the decompressed size field isn't available, the upper-bound for that frame is calculated by: upper-bound = # blocks * min(128 KB, Window_Size) - +
size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize);srcSize must be >= ZSTD_FRAMEHEADERSIZE_PREFIX. @return : size of the Frame Header, - or an error code (if srcSize is too small) + or an error code (if srcSize is too small)
size_t ZSTD_estimateCStreamSize(int compressionLevel); @@ -1033,7 +1031,7 @@ size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize); or deducted from a valid frame Header, using ZSTD_estimateDStreamSize_fromFrame(); Note : if streaming is init with function ZSTD_init?Stream_usingDict(), an internal ?Dict will be created, which additional size is not estimated here. - In this case, get total size by adding ZSTD_estimate?DictSize + In this case, get total size by adding ZSTD_estimate?DictSize
size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel); @@ -1042,7 +1040,7 @@ size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMetZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict(). ZSTD_estimateCDictSize_advanced() makes it possible to control compression parameters precisely, like ZSTD_createCDict_advanced(). Note : dictionaries created by reference (`ZSTD_dlm_byRef`) are logically smaller. - +
ZSTD_CCtx* ZSTD_initStaticCCtx(void* workspace, size_t workspaceSize); @@ -1066,7 +1064,7 @@ ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); ZSTD_CCtx_loadDictionary(), ZSTD_initCStream_usingDict() or ZSTD_initDStream_usingDict(). Limitation 2 : static cctx currently not compatible with multi-threading. Limitation 3 : static dctx is incompatible with legacy support. - +
ZSTD_DStream* ZSTD_initStaticDStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticDCtx() */ @@ -1078,7 +1076,7 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< tThese prototypes make it possible to pass your own allocation/free functions. ZSTD_customMem is provided at creation time, using ZSTD_create*_advanced() variants listed below. All allocation/free operations will be completed using these custom variants instead of regular
ones. - +
Create a digested dictionary for compression Dictionary content is just referenced, not duplicated. As a consequence, `dictBuffer` **must** outlive CDict, - and its content must remain unmodified throughout the lifetime of CDict. + and its content must remain unmodified throughout the lifetime of CDict.
ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize);@return ZSTD_compressionParameters structure for a selected compression level and estimated srcSize. - `estimatedSrcSize` value is optional, select 0 if not known + `estimatedSrcSize` value is optional, select 0 if not known
ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize);same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. - All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 + All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0
size_t ZSTD_checkCParams(ZSTD_compressionParameters params);Ensure param values remain within authorized range. - @return 0 on success, or an error code (can be checked with ZSTD_isError()) + @return 0 on success, or an error code (can be checked with ZSTD_isError())
ZSTD_compressionParameters ZSTD_adjustCParams(ZSTD_compressionParameters cPar, unsigned long long srcSize, size_t dictSize); @@ -1110,7 +1108,7 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< t `srcSize` can be unknown, in which case use ZSTD_CONTENTSIZE_UNKNOWN. `dictSize` must be `0` when there is no dictionary. cPar can be invalid : all parameters will be clamped within valid range in the @return struct. - This function never fails (wide contract) + This function never fails (wide contract)
size_t ZSTD_compress_advanced(ZSTD_CCtx* cctx, @@ -1118,7 +1116,7 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< t const void* src, size_t srcSize, const void* dict,size_t dictSize, ZSTD_parameters params); -Same as ZSTD_compress_usingDict(), with fine-tune control over compression parameters (by structure) +
Same as ZSTD_compress_usingDict(), with fine-tune control over compression parameters (by structure)
size_t ZSTD_compress_usingCDict_advanced(ZSTD_CCtx* cctx, @@ -1126,30 +1124,30 @@ static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< t const void* src, size_t srcSize, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams); -Same as ZSTD_compress_usingCDict(), with fine-tune control over frame parameters +
Same as ZSTD_compress_usingCDict(), with fine-tune control over frame parameters
size_t ZSTD_CCtx_loadDictionary_byReference(ZSTD_CCtx* cctx, const void* dict, size_t dictSize);Same as ZSTD_CCtx_loadDictionary(), but dictionary content is referenced, instead of being copied into CCtx. - It saves some memory, but also requires that `dict` outlives its usage within `cctx` + It saves some memory, but also requires that `dict` outlives its usage within `cctx`
size_t ZSTD_CCtx_loadDictionary_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType);Same as ZSTD_CCtx_loadDictionary(), but gives finer control over how to load the dictionary (by copy ? by reference ?) - and how to interpret it (automatic ? force raw mode ? full mode only ?) + and how to interpret it (automatic ? force raw mode ? full mode only ?)
size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType);Same as ZSTD_CCtx_refPrefix(), but gives finer control over - how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) + how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?)
size_t ZSTD_CCtx_getParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int* value);Get the requested compression parameter value, selected by enum ZSTD_cParameter, and store it into int* value. @return : 0, or an error code (which can be tested with ZSTD_isError()). - +
ZSTD_CCtx_params* ZSTD_createCCtxParams(void); @@ -1169,24 +1167,24 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); This can be used with ZSTD_estimateCCtxSize_advanced_usingCCtxParams() for static allocation of CCtx for single-threaded compression. - +
size_t ZSTD_CCtxParams_reset(ZSTD_CCtx_params* params);Reset params to default values. - +
size_t ZSTD_CCtxParams_init(ZSTD_CCtx_params* cctxParams, int compressionLevel);Initializes the compression parameters of cctxParams according to compression level. All other parameters are reset to their default values. - +
size_t ZSTD_CCtxParams_init_advanced(ZSTD_CCtx_params* cctxParams, ZSTD_parameters params);Initializes the compression and frame parameters of cctxParams according to params. All other parameters are reset to their default values. - +
size_t ZSTD_CCtxParams_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int value); @@ -1194,14 +1192,14 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); Set one compression parameter, selected by enum ZSTD_cParameter. Parameters must be applied to a ZSTD_CCtx using ZSTD_CCtx_setParametersUsingCCtxParams(). @result : 0, or an error code (which can be tested with ZSTD_isError()). - +
size_t ZSTD_CCtxParams_getParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int* value);Similar to ZSTD_CCtx_getParameter. Get the requested value of one compression parameter, selected by enum ZSTD_cParameter. @result : 0, or an error code (which can be tested with ZSTD_isError()). - +
size_t ZSTD_CCtx_setParametersUsingCCtxParams( @@ -1211,7 +1209,7 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); if nbWorkers==0, this will have no impact until a new compression is started. if nbWorkers>=1, new parameters will be picked up at next job, with a few restrictions (windowLog, pledgedSrcSize, nbWorkers, jobSize, and overlapLog are not updated). - +
size_t ZSTD_compressStream2_simpleArgs ( @@ -1223,7 +1221,7 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); but using only integral types as arguments. This variant might be helpful for binders from dynamic languages which have troubles handling structures containing memory pointers. - +
Tells if the content of `buffer` starts with a valid Frame Identifier. Note : Frame Identifier is 4 bytes. If `size < 4`, @return will always be 0. Note 2 : Legacy Frame Identifiers are considered valid only if Legacy Support is enabled. - Note 3 : Skippable Frame Identifiers are considered valid. + Note 3 : Skippable Frame Identifiers are considered valid.
ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, size_t dictSize);Create a digested dictionary, ready to start decompression operation without startup delay. Dictionary content is referenced, and therefore stays in dictBuffer. It is important that dictBuffer outlives DDict, - it must remain read accessible throughout the lifetime of DDict + it must remain read accessible throughout the lifetime of DDict
size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);Same as ZSTD_DCtx_loadDictionary(), but references `dict` content instead of copying it into `dctx`. This saves memory if `dict` remains around., - However, it's imperative that `dict` remains accessible (and unmodified) while being used, so it must outlive decompression. + However, it's imperative that `dict` remains accessible (and unmodified) while being used, so it must outlive decompression.
size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType);Same as ZSTD_DCtx_loadDictionary(), but gives direct control over how to load the dictionary (by copy ? by reference ?) - and how to interpret it (automatic ? force raw mode ? full mode only ?). + and how to interpret it (automatic ? force raw mode ? full mode only ?).
size_t ZSTD_DCtx_refPrefix_advanced(ZSTD_DCtx* dctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType);Same as ZSTD_DCtx_refPrefix(), but gives finer control over - how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) + how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?)
size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowSize); @@ -1267,14 +1265,14 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); This parameter is only useful in streaming mode, since no internal buffer is allocated in single-pass mode. By default, a decompression context accepts all window sizes <= (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT) @return : 0, or an error code (which can be tested using ZSTD_isError()). - +
size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format);Instruct the decoder context about what kind of data to decode next. This instruction is mandatory to decode data without a fully-formed header, such ZSTD_f_zstd1_magicless for example. - @return : 0, or an error code (which can be tested using ZSTD_isError()). + @return : 0, or an error code (which can be tested using ZSTD_isError()).
size_t ZSTD_decompressStream_simpleArgs ( @@ -1285,7 +1283,7 @@ size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); but using only integral types as arguments. This can be helpful for binders from dynamic languages which have troubles handling structures containing memory pointers. - +
Warning : most of these functions are now redundant with the Advanced API. @@ -1363,7 +1361,7 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* For the time being, pledgedSrcSize==0 is interpreted as "srcSize unknown" for compatibility with older programs, but it will change to mean "empty" in future version, so use macro ZSTD_CONTENTSIZE_UNKNOWN instead. @return : 0, or an error code (which can be tested using ZSTD_isError()) - +
typedef struct { @@ -1387,7 +1385,7 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* but everything it has produced has also been flushed so far, therefore flush speed is limited by production speed of oldest job irrespective of the speed of concurrent (and newer) jobs. - +
@@ -1519,7 +1517,7 @@ size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned lo Note : it's possible to know if next input to present is a header or a block, using ZSTD_nextInputType(). This information is not required to properly decode a frame. - == Special case : skippable frames + == Special case : skippable frames Skippable frames allow integration of user-defined data into a flow of concatenated frames. Skippable frames will be ignored (skipped) by decompressor. @@ -1551,7 +1549,7 @@ size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long
decode Frame Header, or requires larger `srcSize`. @return : 0, `zfhPtr` is correctly filled, >0, `srcSize` is too small, value is wanted `srcSize` amount, - or an error code, which can be tested using ZSTD_isError() + or an error code, which can be tested using ZSTD_isError()
typedef enum { ZSTDnit_frameHeader, ZSTDnit_blockHeader, ZSTDnit_block, ZSTDnit_lastBlock, ZSTDnit_checksum, ZSTDnit_skippableFrame } ZSTD_nextInputType_e; From 294f1e5cfe2e3f24aed2a36c7a25e1eb401a1636 Mon Sep 17 00:00:00 2001 From: Nick MagerkoDate: Mon, 19 Aug 2019 16:53:02 -0700 Subject: [PATCH 022/163] Fix typo in test --- tests/zstreamtest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/zstreamtest.c b/tests/zstreamtest.c index 70326677c..b0e5d827a 100644 --- a/tests/zstreamtest.c +++ b/tests/zstreamtest.c @@ -2121,7 +2121,7 @@ static int fuzzerTests_newAPI(U32 seed, int nbTests, int startTest, if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmMinMatch, FUZ_randomClampedLength(&lseed, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX), opaqueAPI) ); if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmBucketSizeLog, FUZ_randomClampedLength(&lseed, ZSTD_LDM_BUCKETSIZELOG_MIN, ZSTD_LDM_BUCKETSIZELOG_MAX), opaqueAPI) ); if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmHashRateLog, FUZ_randomClampedLength(&lseed, ZSTD_LDM_HASHRATELOG_MIN, ZSTD_LDM_HASHRATELOG_MAX), opaqueAPI) ); - if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_srcSizeHint, FUZ_randomClampedLength(&lseed, 0, ZSTD_ZSTD_SRCSIZEHINT_MAX), opaqueAPI) ); + if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_srcSizeHint, FUZ_randomClampedLength(&lseed, 0, ZSTD_SRCSIZEHINT_MAX), opaqueAPI) ); } /* mess with frame parameters */ From f23402f1f5f6a5b3adb103f06dd22c9d669a9311 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Mon, 19 Aug 2019 17:20:46 -0700 Subject: [PATCH 023/163] Remove unnecessary test case --- tests/zstreamtest.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/tests/zstreamtest.c b/tests/zstreamtest.c index b0e5d827a..6fe177cbe 100644 --- a/tests/zstreamtest.c +++ b/tests/zstreamtest.c @@ -1151,21 +1151,6 @@ static int basicUnitTests(U32 seed, double compressibility) } DISPLAYLEVEL(3, "OK \n"); - DISPLAYLEVEL(3, "test%3i : ZSTD_c_srcSizeHint provides hint about size of stream : ", testNb++); - { - CHECK_Z( ZSTD_initCStream(zc, 1 /* cLevel */) ); - outBuff.dst = (char*)(compressedBuffer); - outBuff.size = compressedBufferSize; - outBuff.pos = 0; - inBuff.src = CNBuffer; - inBuff.size = CNBufferSize; - inBuff.pos = 0; - CHECK_Z( ZSTD_compressStream(zc, &outBuff, &inBuff) ); - if (inBuff.pos != inBuff.size) goto _output_error; /* entire input should be consumed */ - { size_t const r = ZSTD_endStream(zc, &outBuff); - if (r != 0) goto _output_error; } /* error, or some data not flushed */ - } - /* Overlen overwriting window data bug */ DISPLAYLEVEL(3, "test%3i : wildcopy doesn't overwrite potential match data : ", testNb++); { /* This test has a window size of 1024 bytes and consists of 3 blocks: From c7a24d7a14d32dff18b9a98265c9a5ee6578dd25 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Tue, 20 Aug 2019 13:06:15 -0700 Subject: [PATCH 024/163] Define ZSTD_SRCSIZEHINT_MIN as 0 --- lib/compress/zstd_compress.c | 2 +- lib/zstd.h | 1 + tests/fuzz/zstd_helpers.c | 2 +- tests/zstreamtest.c | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index d4471c2b2..3660e9d1c 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -393,7 +393,7 @@ ZSTD_bounds ZSTD_cParam_getBounds(ZSTD_cParameter param) return bounds; case ZSTD_c_srcSizeHint: - bounds.lowerBound = 0; + bounds.lowerBound = ZSTD_SRCSIZEHINT_MIN; bounds.upperBound = ZSTD_SRCSIZEHINT_MAX; return bounds; diff --git a/lib/zstd.h b/lib/zstd.h index 0fbe71ab8..5396b719f 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -1066,6 +1066,7 @@ ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); /* Advanced parameter bounds */ #define ZSTD_TARGETCBLOCKSIZE_MIN 64 #define ZSTD_TARGETCBLOCKSIZE_MAX ZSTD_BLOCKSIZE_MAX +#define ZSTD_SRCSIZEHINT_MAX 0 #define ZSTD_SRCSIZEHINT_MAX INT_MAX /* internal */ diff --git a/tests/fuzz/zstd_helpers.c b/tests/fuzz/zstd_helpers.c index 5d24a48c4..5ff057b8c 100644 --- a/tests/fuzz/zstd_helpers.c +++ b/tests/fuzz/zstd_helpers.c @@ -91,7 +91,7 @@ void FUZZ_setRandomParameters(ZSTD_CCtx *cctx, size_t srcSize, uint32_t *state) setRand(cctx, ZSTD_c_literalCompressionMode, 0, 2, state); setRand(cctx, ZSTD_c_forceAttachDict, 0, 2, state); if (FUZZ_rand32(state, 0, 1) == 0) { - setRand(cctx, ZSTD_c_srcSizeHint, 0, 2 * srcSize, state); + setRand(cctx, ZSTD_c_srcSizeHint, ZSTD_SRCSIZEHINT_MIN, 2 * srcSize, state); } } diff --git a/tests/zstreamtest.c b/tests/zstreamtest.c index 6fe177cbe..d2c4036ac 100644 --- a/tests/zstreamtest.c +++ b/tests/zstreamtest.c @@ -2106,7 +2106,7 @@ static int fuzzerTests_newAPI(U32 seed, int nbTests, int startTest, if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmMinMatch, FUZ_randomClampedLength(&lseed, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX), opaqueAPI) ); if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmBucketSizeLog, FUZ_randomClampedLength(&lseed, ZSTD_LDM_BUCKETSIZELOG_MIN, ZSTD_LDM_BUCKETSIZELOG_MAX), opaqueAPI) ); if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_ldmHashRateLog, FUZ_randomClampedLength(&lseed, ZSTD_LDM_HASHRATELOG_MIN, ZSTD_LDM_HASHRATELOG_MAX), opaqueAPI) ); - if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_srcSizeHint, FUZ_randomClampedLength(&lseed, 0, ZSTD_SRCSIZEHINT_MAX), opaqueAPI) ); + if (FUZ_rand(&lseed) & 3) CHECK_Z( setCCtxParameter(zc, cctxParams, ZSTD_c_srcSizeHint, FUZ_randomClampedLength(&lseed, ZSTD_SRCSIZEHINT_MIN, ZSTD_SRCSIZEHINT_MAX), opaqueAPI) ); } /* mess with frame parameters */ From de6a6c73645092595250f5e9347baf60a7e91a12 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Tue, 20 Aug 2019 13:07:51 -0700 Subject: [PATCH 025/163] Fix ZSTD_SRCSIZEHINT_MIN typo --- lib/zstd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/zstd.h b/lib/zstd.h index 5396b719f..38c99e016 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -1066,7 +1066,7 @@ ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); /* Advanced parameter bounds */ #define ZSTD_TARGETCBLOCKSIZE_MIN 64 #define ZSTD_TARGETCBLOCKSIZE_MAX ZSTD_BLOCKSIZE_MAX -#define ZSTD_SRCSIZEHINT_MAX 0 +#define ZSTD_SRCSIZEHINT_MIN 0 #define ZSTD_SRCSIZEHINT_MAX INT_MAX /* internal */ From 05d7479a505584563c521822ae353d3f256c3bb8 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Tue, 20 Aug 2019 14:08:26 -0700 Subject: [PATCH 026/163] Document --size-hint --- programs/zstd.1.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/programs/zstd.1.md b/programs/zstd.1.md index 3ab2667a0..f8349fa80 100644 --- a/programs/zstd.1.md +++ b/programs/zstd.1.md @@ -144,6 +144,13 @@ the last one takes effect. Due to the chaotic nature of dynamic adaptation, compressed result is not reproducible. _note_ : at the time of this writing, `--adapt` can remain stuck at low speed when combined with multiple worker threads (>=2). +* `--size-hint=#`: + When handling input from a stream, `zstd` must guess how large the source size + will be when optimizing compression parameters. If the stream size is relatively + small, this guess may be a poor one, resulting in a higher compression ratio than + expected. This feature allows for controlling the guess when needed. + Exact guesses result in better compression ratios. Overestimates result in slightly + degraded compression ratios, while underestimates may result in significant degradation. * `--rsyncable` : `zstd` will periodically synchronize the compression state to make the compressed file more rsync-friendly. There is a negligible impact to From 3982935aefbd6e8c0a8ceb7d54afc5b97f188fc7 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Tue, 20 Aug 2019 11:33:33 -0700 Subject: [PATCH 027/163] [fuzz] Improve fuzzer build script and docs * Remove the `make libFuzzer` target since it is broken and obsoleted by `CC=clang CXX=clang++ ./fuzz.py build all --enable-fuzzer`. The new `-fsanitize=fuzzer` is much better because it works with MSAN by default. * Improve the `./fuzz.py gen` command by making the input type explicit when creating a new target. * Update the `README` for `--enable-fuzzer`. Fixes #1727. --- tests/fuzz/Makefile | 9 -------- tests/fuzz/README.md | 19 ++++++++++------ tests/fuzz/fuzz.py | 53 ++++++++++++++++++++++++++++++-------------- 3 files changed, 48 insertions(+), 33 deletions(-) diff --git a/tests/fuzz/Makefile b/tests/fuzz/Makefile index 8bf16b1fb..08dedd66f 100644 --- a/tests/fuzz/Makefile +++ b/tests/fuzz/Makefile @@ -113,15 +113,6 @@ zstd_frame_info: $(FUZZ_HEADERS) $(FUZZ_OBJ) zstd_frame_info.o libregression.a: $(FUZZ_HEADERS) $(PRGDIR)/util.h $(PRGDIR)/util.c regression_driver.o $(AR) $(FUZZ_ARFLAGS) $@ regression_driver.o -# Install libfuzzer (not usable for MSAN testing) -# Provided for convenience. To use this library run make libFuzzer and -# set LDFLAGS=-L. -.PHONY: libFuzzer -libFuzzer: - @$(RM) -rf Fuzzer - @git clone https://chromium.googlesource.com/chromium/llvm-project/compiler-rt/lib/fuzzer Fuzzer - @cd Fuzzer && ./build.sh - corpora/%_seed_corpus.zip: @mkdir -p corpora $(DOWNLOAD) $@ $(CORPORA_URL_PREFIX)$*_seed_corpus.zip diff --git a/tests/fuzz/README.md b/tests/fuzz/README.md index 9e0bb259a..856a57f82 100644 --- a/tests/fuzz/README.md +++ b/tests/fuzz/README.md @@ -35,6 +35,8 @@ The environment variables can be overridden with the corresponding flags `--cc`, `--cflags`, etc. The specific fuzzing engine is selected with `LIB_FUZZING_ENGINE` or `--lib-fuzzing-engine`, the default is `libregression.a`. +Alternatively, you can use Clang's built in fuzzing engine with +`--enable-fuzzer`. It has flags that can easily set up sanitizers `--enable-{a,ub,m}san`, and coverage instrumentation `--enable-coverage`. It sets sane defaults which can be overridden with flags `--debug`, @@ -51,22 +53,25 @@ The command used to run the fuzzer is printed for debugging. ## LibFuzzer ``` -# Build libfuzzer if necessary -make libFuzzer # Build the fuzz targets -./fuzz.py build all --enable-coverage --enable-asan --enable-ubsan --lib-fuzzing-engine Fuzzer/libFuzzer.a --cc clang --cxx clang++ +./fuzz.py build all --enable-fuzzer --enable-asan --enable-ubsan --cc clang --cxx clang++ # OR equivalently -CC=clang CXX=clang++ LIB_FUZZING_ENGINE=Fuzzer/libFuzzer.a ./fuzz.py build all --enable-coverage --enable-asan --enable-ubsan +CC=clang CXX=clang++ ./fuzz.py build all --enable-fuzzer --enable-asan --enable-ubsan # Run the fuzzer -./fuzz.py libfuzzer TARGET -max_len=8192 -jobs=4 +./fuzz.py libfuzzer TARGET ``` where `TARGET` could be `simple_decompress`, `stream_round_trip`, etc. ### MSAN -Fuzzing with `libFuzzer` and `MSAN` will require building a C++ standard library -and libFuzzer with MSAN. +Fuzzing with `libFuzzer` and `MSAN` is as easy as: + +``` +CC=clang CXX=clang++ ./fuzz.py build all --enable-fuzzer --enable-msan +./fuzz.py libfuzzer TARGET +``` + `fuzz.py` respects the environment variables / flags `MSAN_EXTRA_CPPFLAGS`, `MSAN_EXTRA_CFLAGS`, `MSAN_EXTRA_CXXFLAGS`, `MSAN_EXTRA_LDFLAGS` to easily pass the extra parameters only for MSAN. diff --git a/tests/fuzz/fuzz.py b/tests/fuzz/fuzz.py index d993209a0..faf8ce8ae 100755 --- a/tests/fuzz/fuzz.py +++ b/tests/fuzz/fuzz.py @@ -24,21 +24,38 @@ def abs_join(a, *p): return os.path.abspath(os.path.join(a, *p)) +class InputType(object): + RAW_DATA = 1 + COMPRESSED_DATA = 2 + + +class FrameType(object): + ZSTD = 1 + BLOCK = 2 + + +class TargetInfo(object): + def __init__(self, input_type, frame_type=FrameType.ZSTD): + self.input_type = input_type + self.frame_type = frame_type + + # Constants FUZZ_DIR = os.path.abspath(os.path.dirname(__file__)) CORPORA_DIR = abs_join(FUZZ_DIR, 'corpora') -TARGETS = [ - 'simple_round_trip', - 'stream_round_trip', - 'block_round_trip', - 'simple_decompress', - 'stream_decompress', - 'block_decompress', - 'dictionary_round_trip', - 'dictionary_decompress', - 'zstd_frame_info', - 'simple_compress', -] +TARGET_INFO = { + 'simple_round_trip': TargetInfo(InputType.RAW_DATA), + 'stream_round_trip': TargetInfo(InputType.RAW_DATA), + 'block_round_trip': TargetInfo(InputType.RAW_DATA, FrameType.BLOCK), + 'simple_decompress': TargetInfo(InputType.COMPRESSED_DATA), + 'stream_decompress': TargetInfo(InputType.COMPRESSED_DATA), + 'block_decompress': TargetInfo(InputType.COMPRESSED_DATA, FrameType.BLOCK), + 'dictionary_round_trip': TargetInfo(InputType.RAW_DATA), + 'dictionary_decompress': TargetInfo(InputType.COMPRESSED_DATA), + 'zstd_frame_info': TargetInfo(InputType.COMPRESSED_DATA), + 'simple_compress': TargetInfo(InputType.RAW_DATA), +} +TARGETS = list(TARGET_INFO.keys()) ALL_TARGETS = TARGETS + ['all'] FUZZ_RNG_SEED_SIZE = 4 @@ -67,7 +84,7 @@ MSAN_EXTRA_LDFLAGS = os.environ.get('MSAN_EXTRA_LDFLAGS', '') def create(r): d = os.path.abspath(r) if not os.path.isdir(d): - os.mkdir(d) + os.makedirs(d) return d @@ -158,7 +175,7 @@ def compiler_version(cc, cxx): assert(b'clang' in cxx_version_bytes) compiler = 'clang' elif b'gcc' in cc_version_bytes: - assert(b'gcc' in cxx_version_bytes) + assert(b'gcc' in cxx_version_bytes or b'g++' in cxx_version_bytes) compiler = 'gcc' if compiler is not None: version_regex = b'([0-9])+\.([0-9])+\.([0-9])+' @@ -699,7 +716,8 @@ def gen(args): '-o{}'.format(decompressed), ] - if 'block_' in args.TARGET: + info = TARGET_INFO[args.TARGET] + if info.frame_type == FrameType.BLOCK: cmd += [ '--gen-blocks', '--max-block-size-log={}'.format(args.max_size_log) @@ -710,10 +728,11 @@ def gen(args): print(' '.join(cmd)) subprocess.check_call(cmd) - if '_round_trip' in args.TARGET: + if info.input_type == InputType.RAW_DATA: print('using decompressed data in {}'.format(decompressed)) samples = decompressed - elif '_decompress' in args.TARGET: + else: + assert info.input_type == InputType.COMPRESSED_DATA print('using compressed data in {}'.format(compressed)) samples = compressed From 07f22d465d0f85aa00f20fc2f0b59a50ddfe494f Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Tue, 20 Aug 2019 17:13:04 -0700 Subject: [PATCH 028/163] [legacy] Fix buffer overflow in v0.2 and v0.4 raw literals decompression Extends the fix in PR#1722 to v0.2 and v0.4. These aren't built into zstd by default, and v0.5 onward are not affected. I only add the `srcSize > BLOCKSIZE` check to v0.4 because the comments say that it must hold, but the equivalent comment isn't present in v0.2. Credit to OSS-Fuzz. --- lib/legacy/zstd_v02.c | 1 + lib/legacy/zstd_v04.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/legacy/zstd_v02.c b/lib/legacy/zstd_v02.c index 793df6024..de0a4bd6b 100644 --- a/lib/legacy/zstd_v02.c +++ b/lib/legacy/zstd_v02.c @@ -2889,6 +2889,7 @@ static size_t ZSTD_decodeLiteralsBlock(void* ctx, const size_t litSize = (MEM_readLE32(istart) & 0xFFFFFF) >> 2; /* no buffer issue : srcSize >= MIN_CBLOCK_SIZE */ if (litSize > srcSize-11) /* risk of reading too far with wildcopy */ { + if (litSize > BLOCKSIZE) return ERROR(corruption_detected); if (litSize > srcSize-3) return ERROR(corruption_detected); memcpy(dctx->litBuffer, istart, litSize); dctx->litPtr = dctx->litBuffer; diff --git a/lib/legacy/zstd_v04.c b/lib/legacy/zstd_v04.c index 645a6e313..201ce2b69 100644 --- a/lib/legacy/zstd_v04.c +++ b/lib/legacy/zstd_v04.c @@ -2655,6 +2655,7 @@ static size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx, const size_t litSize = (MEM_readLE32(istart) & 0xFFFFFF) >> 2; /* no buffer issue : srcSize >= MIN_CBLOCK_SIZE */ if (litSize > srcSize-11) /* risk of reading too far with wildcopy */ { + if (litSize > BLOCKSIZE) return ERROR(corruption_detected); if (litSize > srcSize-3) return ERROR(corruption_detected); memcpy(dctx->litBuffer, istart, litSize); dctx->litPtr = dctx->litBuffer; @@ -3034,9 +3035,12 @@ static size_t ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx, { /* blockType == blockCompressed */ const BYTE* ip = (const BYTE*)src; + size_t litCSize; + + if (srcSize > BLOCKSIZE) return ERROR(corruption_detected); /* Decode literals sub-block */ - size_t litCSize = ZSTD_decodeLiteralsBlock(dctx, src, srcSize); + litCSize = ZSTD_decodeLiteralsBlock(dctx, src, srcSize); if (ZSTD_isError(litCSize)) return litCSize; ip += litCSize; srcSize -= litCSize; From 901ea61f83333c88e749c6fb3d8d35f01378bde4 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Wed, 21 Aug 2019 17:49:17 +0200 Subject: [PATCH 029/163] Tweaks to create a single-file decoder The CHECK_F macros differ slightly (but eventually do the same thing). Older GCC needs to fallback on the old-style pragma optimisation flags. --- lib/common/compiler.h | 9 +++++++-- lib/common/fse_decompress.c | 2 ++ lib/decompress/huf_decompress.c | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/common/compiler.h b/lib/common/compiler.h index 6686b837d..36584aa69 100644 --- a/lib/common/compiler.h +++ b/lib/common/compiler.h @@ -127,9 +127,14 @@ } \ } -/* vectorization */ +/* vectorization + * older GCC (pre gcc-4.3 picked as the cutoff) uses a different syntax */ #if !defined(__clang__) && defined(__GNUC__) -# define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize"))) +# if (__GNUC__ == 4 && __GNUC_MINOR__ > 3) || (__GNUC__ >= 5) +# define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize"))) +# else +# define DONT_VECTORIZE _Pragma("GCC optimize(\"no-tree-vectorize\")") +# endif #else # define DONT_VECTORIZE #endif diff --git a/lib/common/fse_decompress.c b/lib/common/fse_decompress.c index 72bbead5b..4f0737898 100644 --- a/lib/common/fse_decompress.c +++ b/lib/common/fse_decompress.c @@ -52,7 +52,9 @@ #define FSE_STATIC_ASSERT(c) DEBUG_STATIC_ASSERT(c) /* use only *after* variable declarations */ /* check and forward error code */ +#ifndef CHECK_F #define CHECK_F(f) { size_t const e = f; if (FSE_isError(e)) return e; } +#endif /* ************************************************************** diff --git a/lib/decompress/huf_decompress.c b/lib/decompress/huf_decompress.c index 3f8bd2973..bb2d0a96b 100644 --- a/lib/decompress/huf_decompress.c +++ b/lib/decompress/huf_decompress.c @@ -61,7 +61,9 @@ * Error Management ****************************************************************/ #define HUF_isError ERR_isError +#ifndef CHECK_F #define CHECK_F(f) { size_t const err_ = (f); if (HUF_isError(err_)) return err_; } +#endif /* ************************************************************** From b3540507f5239f9d0810c3b9e2b920601687738d Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Wed, 21 Aug 2019 10:27:54 -0700 Subject: [PATCH 030/163] Remove bc from play tests --- tests/playTests.sh | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/tests/playTests.sh b/tests/playTests.sh index c516aa712..b74076763 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -408,6 +408,23 @@ println "compress multiple files including a missing one (notHere) : " $ZSTD -f tmp1 notHere tmp2 && die "missing file not detected!" +println "\n===> stream-size mode" + +./datagen -g11000 > tmp +println "test : basic file compression vs sized streaming compression" +file_size=$($ZSTD -14 -f tmp -o tmp.zst && wc -c < tmp.zst) +stream_size=$(cat tmp | $ZSTD -14 --stream-size=11000 | wc -c) +if [ "$stream_size" -gt "$file_size" ]; then + die "hinted compression larger than expected" +fi +println "test : sized streaming compression and decompression" +cat tmp | $ZSTD -14 -f tmp -o --stream-size=11000 tmp.zst +$ZSTD -df tmp.zst -o tmp_decompress +cmp tmp tmp_decompress || die "difference between original and decompressed file" +println "test : incorrect stream size" +cat tmp | $ZSTD -14 -f -o tmp.zst --stream-size=11001 && die "should fail with incorrect stream size" + + println "\n===> dictionary tests " println "- test with raw dict (content only) " @@ -1019,28 +1036,4 @@ test -f dictionary rm -f tmp* dictionary -println "\n===> stream-size mode" - -./datagen -g11000 > tmp -println "test : basic file compression vs sized streaming compression" -$ZSTD -14 -f tmp -o tmp.zst 2>&1 | tee file.out -cat tmp | $ZSTD -14 -f -o tmp.zst --stream-size=11000 2>&1 | tee stream_sized.out - -file_ratio=$(cat file.out | awk '{print $4}' | sed 's/%//g') -stream_sized_ratio=$(cat stream_sized.out | awk '{print $4}' | sed 's/%//g') -rm file.out stream_sized.out - -ratio_diff=$(echo $file_ratio - $stream_sized_ratio | bc) -if [ $(echo "(100 * $ratio_diff) > 5" | bc -l) == 1 ] -then - die "greater than 0.05% difference between file and sized-streaming compression" -fi -println "test : sized streaming compression and decompression" -cat tmp | $ZSTD -14 -f tmp -o --stream-size=11000 tmp.zst -$ZSTD -df tmp.zst -o tmp_decompress -cmp tmp tmp_decompress || die "difference between original and decompressed file" -println "test : incorrect stream size" -cat tmp | $ZSTD -14 -f -o tmp.zst --stream-size=11001 && die "should fail with incorrect stream size" - - rm -f tmp* From 2cdda8b3c43c23981941cdd97c1a517981d2339e Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Thu, 22 Aug 2019 09:13:28 -0700 Subject: [PATCH 031/163] Minor documentation update --- programs/zstd.1.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/programs/zstd.1.md b/programs/zstd.1.md index e3f729282..ee5db9d63 100644 --- a/programs/zstd.1.md +++ b/programs/zstd.1.md @@ -144,6 +144,11 @@ the last one takes effect. Due to the chaotic nature of dynamic adaptation, compressed result is not reproducible. _note_ : at the time of this writing, `--adapt` can remain stuck at low speed when combined with multiple worker threads (>=2). +* `--stream-size=#` : + When handling input from a stream, `zstd` must guess how large the source size + will be when optimizing compression parameters. This option sets the pledged source + size of a stream to eliminate that guesswork. Note that the pledged size must be exact; + incorrect stream sizes will cause an error. * `--rsyncable` : `zstd` will periodically synchronize the compression state to make the compressed file more rsync-friendly. There is a negligible impact to @@ -152,12 +157,6 @@ the last one takes effect. This feature does not work with `--single-thread`. You probably don't want to use it with long range mode, since it will decrease the effectiveness of the synchronization points, but your milage may vary. -* `--stream-size` : - When handling input from a stream, `zstd` must guess how large the source size - will be when optimizing compression parameters. If the stream size is relatively - small, this guess may be a poor one, resulting in a higher compression ratio than - expected. This feature will set the source size of a stream. Note that it must - be exact; incorrect stream sizes will cause an error. * `-D file`: use `file` as Dictionary to compress or decompress FILE(s) * `--no-dictID`: From fd486a846abcbf6c92496dd4915d6a46bd4790c2 Mon Sep 17 00:00:00 2001 From: Nick Magerko Date: Thu, 22 Aug 2019 09:37:47 -0700 Subject: [PATCH 032/163] Differentiate --stream-size from --size-hint --- programs/zstd.1.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/programs/zstd.1.md b/programs/zstd.1.md index ee5db9d63..1bdc42654 100644 --- a/programs/zstd.1.md +++ b/programs/zstd.1.md @@ -145,10 +145,10 @@ the last one takes effect. _note_ : at the time of this writing, `--adapt` can remain stuck at low speed when combined with multiple worker threads (>=2). * `--stream-size=#` : - When handling input from a stream, `zstd` must guess how large the source size - will be when optimizing compression parameters. This option sets the pledged source - size of a stream to eliminate that guesswork. Note that the pledged size must be exact; - incorrect stream sizes will cause an error. + Sets the pledged source size of input coming from a stream. This value must be exact, as it + will be included in the produced frame header. Incorrect stream sizes will cause an error. + This information will be used to better optimize compression parameters, resulting in + better and potentially faster compression, especially for smaller source sizes. * `--rsyncable` : `zstd` will periodically synchronize the compression state to make the compressed file more rsync-friendly. There is a negligible impact to From e2030a2c40de6e5b452ce4530896773f08cbd9b7 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Thu, 22 Aug 2019 17:27:15 -0700 Subject: [PATCH 033/163] [fuzz] Add a DEBUGLOG(3) statement to print file Enable it by building with this command: ``` ./fuzz.py build all --debug 3 ``` --- tests/fuzz/fuzz_helpers.h | 1 + tests/fuzz/regression_driver.c | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/fuzz/fuzz_helpers.h b/tests/fuzz/fuzz_helpers.h index 0cf79d0d7..0ee85fc7e 100644 --- a/tests/fuzz/fuzz_helpers.h +++ b/tests/fuzz/fuzz_helpers.h @@ -14,6 +14,7 @@ #ifndef FUZZ_HELPERS_H #define FUZZ_HELPERS_H +#include "debug.h" #include "fuzz.h" #include "xxhash.h" #include "zstd.h" diff --git a/tests/fuzz/regression_driver.c b/tests/fuzz/regression_driver.c index 658c685f4..e3ebcd5ce 100644 --- a/tests/fuzz/regression_driver.c +++ b/tests/fuzz/regression_driver.c @@ -36,6 +36,7 @@ int main(int argc, char const **argv) { fprintf(stderr, "WARNING: No files passed to %s\n", argv[0]); for (i = 0; i < numFiles; ++i) { char const *fileName = files[i]; + DEBUGLOG(3, "Running %s", fileName); size_t const fileSize = UTIL_getFileSize(fileName); size_t readSize; FILE *file; From 0a49353a4634b963e2065f84a5472d3b74bc75f6 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Fri, 23 Aug 2019 18:43:29 +0200 Subject: [PATCH 034/163] Added generator script and simple test The script will combine decompressor sources into a single file. The example shows this in use. --- contrib/declib/README.md | 8 + contrib/declib/combine.sh | 80 + contrib/declib/tests/simple.c | 3392 ++++++++++++++++++++++++++++++++ contrib/declib/zstddeclib-in.c | 66 + 4 files changed, 3546 insertions(+) create mode 100644 contrib/declib/README.md create mode 100755 contrib/declib/combine.sh create mode 100644 contrib/declib/tests/simple.c create mode 100755 contrib/declib/zstddeclib-in.c diff --git a/contrib/declib/README.md b/contrib/declib/README.md new file mode 100644 index 000000000..727b3e8fa --- /dev/null +++ b/contrib/declib/README.md @@ -0,0 +1,8 @@ +# Single File Zstandard Decompression Library + +Create the file using the shell script: +``` +cd zstd/contrib/declib +./combine.sh -r "../../lib ../../lib/common ../../lib/decompress" zstddeclib-in.c > zstddeclib.c +``` +Then add the resulting file to your project (see the [test sources](tests) for examples). diff --git a/contrib/declib/combine.sh b/contrib/declib/combine.sh new file mode 100755 index 000000000..4a4afc3a5 --- /dev/null +++ b/contrib/declib/combine.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# Tool to bundle multiple C/C++ source files, inlining any includes. + +# Common file roots +ROOTS="./" + +# Files previously visited +FOUND="" + +# Prints the script usage then exits +function usage { + echo "Usage: $0 [-r ] infile" + echo " -r file root search paths" + echo "Example: $0 -r \"../my/path ../my/other\" in.c > out.c" + exit 1 +} + +# Tests if list $1 has item $2 +function list_has_item { + local list="$1" + local item="$2" + if [[ $list =~ (^|[[:space:]]*)"$item"($|[[:space:]]*) ]]; then + return 0 + fi + return 1 +} + +# Adds the contents of $1 with any of its includes inlined +function add_file { + # Match the path + local file= + for root in $ROOTS; do + if test -f "$root/$1"; then + file="$root/$1" + fi + done + if [ "$file" != "" ]; then + # Read the file + local line + while IFS= read -r line; do + if [[ $line =~ ^[[:space:]]*\#[[:space:]]*include[[:space:]]*\"(.*)\".* ]]; then + # We have an include directive + local inc=${BASH_REMATCH[1]} + if ! `list_has_item "$FOUND" "$inc"`; then + # And we've not previously encountered it + FOUND="$FOUND $inc" + echo "/**** start inlining $inc ****/" + add_file $inc + echo "/**** ended inlining $inc ****/" + else + echo "/**** skipping file: $inc ****/" + fi + else + # Otherwise write the source line + echo "$line" + fi + done < "$file" + else + echo "#error Unable to find \"$1\"" + fi +} + +while getopts ":r:" opts; do + case $opts in + r) + ROOTS="$ROOTS $OPTARG" + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +if [ "$1" != "" ]; then + add_file $1 +else + usage +fi diff --git a/contrib/declib/tests/simple.c b/contrib/declib/tests/simple.c new file mode 100644 index 000000000..cb200c938 --- /dev/null +++ b/contrib/declib/tests/simple.c @@ -0,0 +1,3392 @@ +/** + * \file simple.c + * Simple standalone example of using the single-file \c zstddeclib. + */ +#include "../zstddeclib.c" + +#include "stdio.h" +#include "string.h" + +//************************* Test Data (DXT texture) **************************/ + +/** + * Raw 256x256 DXT1 data (used to compare the result). + */ +static char const rawDxt1[] = { + 0x3c, 0xe7, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x00, 0x28, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0xe8, 0x41, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0xff, 0xff, 0xe7, 0x39, 0x5a, 0x5a, 0x5a, 0xa0, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xfb, 0xde, 0x90, 0x90, 0x90, 0x55, 0xe7, 0x39, 0x9a, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x28, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x3c, 0xe7, 0xc7, 0x39, 0x58, 0x58, 0x58, 0x00, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x3c, 0xe7, 0x86, 0x31, 0xcd, 0xcd, 0xcd, 0x00, 0xe8, 0x41, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0xe7, 0x39, 0xba, 0xd6, + 0x80, 0x80, 0x80, 0x55, 0x08, 0x42, 0x1b, 0xdf, 0x01, 0x01, 0x01, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0xfb, 0xde, 0xc7, 0x39, 0x49, 0x49, 0x49, 0x00, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xfb, 0xde, + 0x40, 0x40, 0x40, 0x55, 0x1c, 0xe7, 0xe8, 0x41, 0x56, 0x56, 0x56, 0x00, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0xe7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0xff, 0xff, 0x29, 0x4a, + 0x15, 0x15, 0x15, 0x2a, 0xda, 0xd6, 0xe8, 0x41, 0x57, 0x57, 0x57, 0x00, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0xe7, 0x39, 0x9a, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x5c, 0xe7, 0x49, 0x4a, 0x53, 0x53, 0x53, 0x00, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x1b, 0xdf, 0xe7, 0x39, + 0x25, 0x25, 0x25, 0x00, 0xba, 0xd6, 0x08, 0x42, 0x55, 0x55, 0x55, 0x00, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0xe7, 0x39, 0x9a, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0xfb, 0xde, 0xe8, 0x41, 0x52, 0x52, 0x52, 0x00, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x1b, 0xdf, 0x08, 0x42, + 0x85, 0x85, 0x85, 0x00, 0xe7, 0x39, 0x9a, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, + 0x00, 0x00, 0x00, 0x55, 0x9a, 0xd6, 0x08, 0x42, 0x55, 0x55, 0xd5, 0x00, + 0xdf, 0xff, 0x08, 0x42, 0x5c, 0x5c, 0x5c, 0xa0, 0xe7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0xcb, 0x5a, 0x65, 0x29, 0xa8, 0xfe, 0xfe, 0xfe, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x69, 0x4a, 0xc7, 0x39, 0x00, 0x55, 0x7f, 0x7f, + 0xf7, 0xbd, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x28, 0x42, 0xfb, 0xde, + 0x90, 0x90, 0x90, 0x90, 0x8a, 0x52, 0x86, 0x31, 0x02, 0xfd, 0xfd, 0xfd, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0xcb, 0x5a, 0x65, 0x29, 0x2a, 0xbf, 0xbf, 0xbf, + 0xe7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x86, 0x31, + 0xcd, 0xcd, 0xcd, 0xcd, 0x69, 0x4a, 0xc7, 0x39, 0x00, 0x55, 0xfd, 0xfd, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x10, 0x84, 0xc7, 0x39, 0x3f, 0x15, 0x15, 0x15, + 0x28, 0x42, 0x3c, 0xe7, 0x01, 0x01, 0x01, 0x01, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0xda, 0xd6, 0xe7, 0x39, + 0x49, 0x49, 0x49, 0x49, 0x69, 0x4a, 0xc7, 0x39, 0x00, 0x55, 0xfd, 0x55, + 0x6a, 0x52, 0xa6, 0x31, 0x00, 0xff, 0xff, 0xd5, 0x6a, 0x52, 0xe7, 0x39, + 0x00, 0x55, 0x55, 0xbf, 0x28, 0x42, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, + 0xd7, 0xbd, 0x41, 0x08, 0xfc, 0xfc, 0xfc, 0xfc, 0x6a, 0x52, 0xe7, 0x39, + 0x00, 0x55, 0x55, 0xfe, 0x6a, 0x52, 0xa6, 0x31, 0x00, 0xff, 0xff, 0x57, + 0x69, 0x4a, 0xc7, 0x39, 0x00, 0x55, 0x7f, 0x55, 0xba, 0xd6, 0xe7, 0x39, + 0x61, 0x61, 0x61, 0x61, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x29, 0x4a, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, + 0xcf, 0x7b, 0xc7, 0x39, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x8a, 0x52, 0xa6, 0x31, 0x80, 0x7f, 0x7f, 0x7f, 0xbe, 0xf7, 0x49, 0x4a, + 0x53, 0x53, 0x53, 0x53, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe7, 0x39, 0x25, 0x25, 0x25, 0x25, + 0x0c, 0x63, 0x45, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x8a, 0x52, 0x86, 0x31, 0x80, 0x7f, 0x7f, 0x7f, 0xba, 0xd6, 0x08, 0x42, + 0x52, 0x52, 0x52, 0x52, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0xfb, 0xde, 0x28, 0x42, 0x85, 0x85, 0x85, 0x85, + 0x8a, 0x52, 0x86, 0x31, 0x02, 0xfd, 0xfd, 0xfd, 0x0c, 0x63, 0x65, 0x29, + 0xaa, 0xff, 0xff, 0xff, 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, + 0x2c, 0x63, 0x45, 0x29, 0x2a, 0xbf, 0xbf, 0xbf, 0xde, 0xf7, 0x08, 0x42, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, + 0x5a, 0x5a, 0x5a, 0x5a, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x49, 0x4a, 0xc7, 0x39, 0x1f, 0x1f, 0x1f, 0x1f, 0xc7, 0x39, 0xff, 0xff, + 0x09, 0x09, 0x09, 0x09, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, + 0xc7, 0x39, 0x28, 0x42, 0xa8, 0xa8, 0xa8, 0xa8, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x34, 0xa5, 0xc7, 0x39, 0x95, 0x95, 0x95, 0x95, 0xe7, 0x39, 0x1c, 0xe7, + 0x01, 0x01, 0x01, 0x01, 0x34, 0xa5, 0x41, 0x08, 0xff, 0xff, 0xff, 0x2f, + 0x58, 0xc6, 0xe7, 0x39, 0x55, 0x55, 0xb5, 0xa0, 0xb6, 0xb5, 0xe7, 0x39, + 0x55, 0xd5, 0x00, 0x5e, 0xda, 0xd6, 0x86, 0x31, 0x49, 0x03, 0xc2, 0x49, + 0x18, 0xc6, 0x08, 0x42, 0xb5, 0xa0, 0x55, 0x55, 0x55, 0xad, 0xc7, 0x39, + 0x00, 0xaa, 0x55, 0x55, 0x38, 0xc6, 0xe7, 0x39, 0x00, 0x7f, 0x55, 0x55, + 0x08, 0x42, 0xda, 0xd6, 0x55, 0x40, 0x40, 0x40, 0xdf, 0xff, 0xe7, 0x39, + 0xa8, 0x56, 0x56, 0x56, 0x38, 0xc6, 0x08, 0x42, 0x00, 0xf5, 0x55, 0x55, + 0x55, 0xad, 0xc7, 0x39, 0x00, 0xaa, 0x55, 0x55, 0x18, 0xc6, 0xe7, 0x39, + 0x7e, 0x0a, 0x55, 0x55, 0xfb, 0xde, 0x86, 0x31, 0x61, 0x80, 0xa3, 0x61, + 0x18, 0xc6, 0x08, 0x42, 0x55, 0x57, 0x02, 0xf5, 0x59, 0xce, 0xe8, 0x41, + 0x55, 0x55, 0x5e, 0x0a, 0x55, 0xad, 0xc7, 0x39, 0x55, 0x55, 0x55, 0x78, + 0x08, 0x42, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, 0x96, 0xb5, 0x00, 0x00, + 0xfe, 0xfe, 0xfe, 0xfe, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0x65, 0x29, + 0xea, 0xea, 0xea, 0xea, 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xde, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x25, 0x08, 0x42, 0xc7, 0x39, + 0xae, 0xae, 0xae, 0xae, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, + 0x2a, 0x2a, 0x2a, 0x2a, 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xde, 0xe8, 0x41, 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0xc7, 0x39, + 0x1f, 0x1f, 0x1f, 0x1f, 0xc7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, + 0xa8, 0xa8, 0xa8, 0xa8, 0x28, 0x42, 0x66, 0x31, 0xaa, 0xaa, 0xaa, 0xea, + 0x59, 0xce, 0xc7, 0x39, 0x55, 0x55, 0x55, 0x2d, 0xbe, 0xf7, 0xe7, 0x39, + 0xd5, 0x95, 0xab, 0xde, 0xfb, 0xde, 0xc7, 0x39, 0xb4, 0xa0, 0x5c, 0x54, + 0x38, 0xc6, 0xe7, 0x39, 0xa0, 0x57, 0x55, 0x55, 0x8e, 0x73, 0xc7, 0x39, + 0x5c, 0x55, 0x55, 0x55, 0x08, 0x42, 0xc7, 0x39, 0xb5, 0xaa, 0xaa, 0xaa, + 0xba, 0xd6, 0xc7, 0x39, 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x39, 0xdb, 0xde, + 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0xea, + 0xe7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, 0x08, 0x42, 0xc7, 0x39, + 0x5e, 0xaa, 0xaa, 0xaa, 0xeb, 0x5a, 0x86, 0x31, 0x25, 0xff, 0xff, 0xff, + 0x58, 0xc6, 0xe7, 0x39, 0x0a, 0xd5, 0x55, 0x55, 0xbe, 0xf7, 0xc7, 0x39, + 0x1e, 0x2b, 0x35, 0x35, 0x59, 0xce, 0x08, 0x42, 0x57, 0x56, 0x80, 0xb7, + 0xda, 0xd6, 0xe7, 0x39, 0x55, 0x55, 0x55, 0x78, 0x08, 0x42, 0xa6, 0x31, + 0xaa, 0xaa, 0xaa, 0xa9, 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, + 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xc7, 0x39, + 0x25, 0x25, 0x25, 0x25, 0x08, 0x42, 0xc7, 0x39, 0xae, 0xae, 0xae, 0xae, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, + 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, + 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xa7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0x56, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0x28, 0x42, 0xa6, 0x31, 0xea, 0xea, 0xea, 0x7f, + 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xe8, 0x41, 0xdb, 0xde, + 0x90, 0x90, 0x90, 0x90, 0x28, 0x42, 0x86, 0x31, 0xa9, 0xa9, 0xa9, 0xfd, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0x49, 0x4a, 0xc7, 0x39, 0x1f, 0x1f, 0x1f, 0x95, + 0xa7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0x5d, 0xef, 0x45, 0x29, + 0xcd, 0xcd, 0xcd, 0xcd, 0x9d, 0xef, 0xc7, 0x39, 0x55, 0x55, 0xb5, 0xeb, + 0x96, 0xb5, 0xa7, 0x39, 0x95, 0x03, 0x78, 0x55, 0xf7, 0xbd, 0xc7, 0x39, + 0xe0, 0x57, 0x55, 0x55, 0x10, 0x84, 0xa2, 0x10, 0x3f, 0x3f, 0x3f, 0x3f, + 0xe8, 0x41, 0x1c, 0xe7, 0x01, 0x01, 0x01, 0x01, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xba, 0xd6, 0xa7, 0x39, + 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, 0xab, 0xab, 0xab, 0x55, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xe7, 0x39, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, + 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0x55, 0xc7, 0x39, 0xdb, 0xde, + 0x24, 0x24, 0x24, 0x24, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0x28, 0x42, 0xbe, 0xf7, 0x40, 0x40, 0x40, 0x40, + 0xae, 0x73, 0xc3, 0x18, 0xfc, 0xfc, 0xfc, 0xfc, 0x38, 0xc6, 0xc7, 0x39, + 0x0b, 0xd5, 0x55, 0x55, 0x38, 0xc6, 0xa7, 0x39, 0x56, 0xc2, 0x2d, 0x55, + 0x38, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x58, 0x83, 0xbe, 0xf7, 0x28, 0x42, + 0x53, 0x53, 0x53, 0x53, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xfb, 0xde, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x25, + 0x08, 0x42, 0xc7, 0x39, 0xae, 0xae, 0xae, 0x55, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xe8, 0x41, 0x65, 0x29, 0xc0, 0xc0, 0xc0, 0x6a, 0xba, 0xd6, 0xe7, 0x39, + 0x52, 0x52, 0x52, 0x52, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xfb, 0xde, 0xe7, 0x39, 0x85, 0x85, 0x85, 0x85, + 0x28, 0x42, 0x86, 0x31, 0xa9, 0xa9, 0xa9, 0xfd, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xc7, 0x39, 0x1f, 0x1f, 0x1f, 0x15, 0xde, 0xf7, 0xc7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0xe7, 0x66, 0x31, 0x2f, 0x0a, 0x25, 0x25, + 0x55, 0xad, 0xe8, 0x41, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x34, 0xa5, 0xc7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x59, 0xce, 0xa7, 0x39, + 0xf0, 0xa0, 0x50, 0x50, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0xda, 0xd6, 0xa7, 0x39, 0x8f, 0x0a, 0x85, 0x85, + 0x34, 0xa5, 0xc7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x55, 0xad, 0xe8, 0x41, 0xff, 0x00, 0x55, 0x55, 0x5c, 0xe7, 0x66, 0x31, + 0xf8, 0xa0, 0x58, 0x58, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x55, 0xad, 0xc7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x18, 0xc6, 0xa7, 0x39, + 0xff, 0x2a, 0x35, 0xc3, 0xbe, 0xf7, 0x8a, 0x52, 0x0d, 0x80, 0x4f, 0x45, + 0xdb, 0xde, 0xa6, 0x31, 0xf8, 0xaa, 0x55, 0x55, 0xc7, 0x39, 0x34, 0xa5, + 0xaa, 0x55, 0x00, 0x00, 0x55, 0xad, 0xe8, 0x41, 0xff, 0x00, 0x55, 0x55, + 0x9a, 0xd6, 0xc7, 0x39, 0xbf, 0x2a, 0xd5, 0xd5, 0x3c, 0xe7, 0xc7, 0x39, + 0xfc, 0xa8, 0x54, 0x54, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0xfb, 0xde, 0x86, 0x31, 0xcb, 0x82, 0x49, 0x49, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0xfb, 0xde, 0xc7, 0x39, 0x3f, 0x2a, 0x15, 0x15, 0xdb, 0xde, 0xa7, 0x39, + 0xfc, 0xa8, 0x56, 0x56, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0xdb, 0xde, 0x86, 0x31, 0xe3, 0x82, 0x61, 0x61, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x7d, 0xef, 0xc7, 0x39, 0x3f, 0x2a, 0x15, 0x15, 0x79, 0xce, 0xc7, 0x39, + 0xfe, 0xa8, 0x57, 0x57, 0xc7, 0x39, 0x34, 0xa5, 0xaa, 0x55, 0x00, 0x00, + 0xc7, 0x39, 0x34, 0xa5, 0xaa, 0x55, 0x00, 0x00, 0x1c, 0xe7, 0xa6, 0x31, + 0x2f, 0xaa, 0x55, 0x55, 0xde, 0xf7, 0x08, 0x42, 0x70, 0x02, 0xb3, 0x53, + 0xba, 0xd6, 0xa6, 0x31, 0xff, 0xa8, 0x58, 0xc3, 0x55, 0xad, 0xc7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x1c, 0xe7, 0xa6, 0x31, 0x2f, 0x0a, 0x25, 0x25, 0x55, 0xad, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x34, 0xa5, 0xc7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0xfb, 0xde, 0xc7, 0x39, 0xf2, 0xa0, 0x52, 0x52, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x1c, 0xe7, 0xc7, 0x39, 0x8f, 0x0a, 0x85, 0x85, 0x34, 0xa5, 0xc7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, 0x34, 0xa5, 0xc7, 0x39, + 0xbf, 0x00, 0xd5, 0xd5, 0x9e, 0xf7, 0x86, 0x31, 0xf8, 0xa8, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0xc7, 0x39, + 0x1f, 0x1f, 0x1f, 0x1f, 0xc7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, + 0xe7, 0x39, 0x9a, 0xd6, 0x00, 0x00, 0x00, 0x60, 0x38, 0xc6, 0xe7, 0x39, + 0x95, 0x8d, 0x70, 0x56, 0xe7, 0x39, 0x58, 0xc6, 0x09, 0x00, 0x00, 0x00, + 0x5d, 0xef, 0x65, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, + 0xa8, 0xa8, 0xa8, 0xa8, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x34, 0xa5, 0xc7, 0x39, + 0x95, 0x95, 0x95, 0x95, 0x08, 0x42, 0x1c, 0xe7, 0x01, 0x01, 0x01, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xba, 0xd6, 0xc7, 0x39, 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x39, 0xdb, 0xde, + 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0xea, + 0xe7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0x9e, 0xf7, + 0x40, 0x40, 0x40, 0x40, 0x96, 0xb5, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, + 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, 0xe7, 0x39, 0x1c, 0xe7, + 0x60, 0x00, 0x00, 0x00, 0x9a, 0xd6, 0xc7, 0x39, 0x5c, 0x62, 0x0d, 0x95, + 0x5c, 0xe7, 0xc7, 0x39, 0x55, 0x55, 0x57, 0x58, 0x1b, 0xdf, 0xc7, 0x39, + 0x25, 0x25, 0x25, 0x25, 0x08, 0x42, 0xc7, 0x39, 0xae, 0xae, 0xae, 0xae, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, + 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, + 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xdb, 0xde, + 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0xc7, 0x39, 0x1f, 0x1f, 0x1f, 0x9f, + 0x9e, 0xf7, 0xa6, 0x31, 0x58, 0xd8, 0xa8, 0x70, 0x18, 0xc6, 0xa7, 0x39, + 0xc3, 0x58, 0x57, 0x55, 0x86, 0x31, 0x49, 0x4a, 0xa8, 0xaa, 0xaa, 0xaa, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x45, 0x29, + 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, 0xa8, 0xa8, 0xa8, 0xa8, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x34, 0xa5, 0xc7, 0x39, 0x95, 0x95, 0x95, 0x95, + 0x08, 0x42, 0x1c, 0xe7, 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xba, 0xd6, 0xc7, 0x39, + 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xe7, 0x39, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, + 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0xea, 0xe7, 0x39, 0xfb, 0xde, + 0x24, 0x24, 0x24, 0x24, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, + 0x96, 0xb5, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, 0xbe, 0xf7, 0x28, 0x42, + 0x53, 0x53, 0x53, 0x53, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x86, 0x31, 0x49, 0x4a, 0x2a, 0xaa, 0xaa, 0xaa, 0xba, 0xd6, 0xa7, 0x39, + 0xc3, 0x25, 0xd5, 0x55, 0xfb, 0xde, 0xe7, 0x39, 0x25, 0x26, 0x00, 0x0d, + 0x08, 0x42, 0xc7, 0x39, 0xae, 0xae, 0xae, 0xa7, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, 0xba, 0xd6, 0xe7, 0x39, + 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, 0x85, 0x85, 0x85, 0x85, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, + 0x5a, 0x5a, 0x5a, 0x5a, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x34, 0xa5, 0x21, 0x08, 0xff, 0xff, 0xff, 0xbf, + 0xf7, 0xbd, 0xc7, 0x39, 0x95, 0x05, 0xe3, 0x5c, 0xa7, 0x39, 0xff, 0xff, + 0x09, 0x09, 0x09, 0x09, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, + 0xc7, 0x39, 0x28, 0x42, 0xa8, 0xa8, 0xa8, 0xa8, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x34, 0xa5, 0xc7, 0x39, 0x95, 0x95, 0x95, 0x95, 0x08, 0x42, 0x1c, 0xe7, + 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xba, 0xd6, 0xc7, 0x39, 0x49, 0x49, 0x49, 0x49, + 0x08, 0x42, 0xc7, 0x39, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xe7, 0x39, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, + 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xc7, 0x39, + 0xea, 0xea, 0xea, 0xea, 0xe7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, 0x96, 0xb5, 0x00, 0x00, + 0xfe, 0xfe, 0xfe, 0xfe, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0x65, 0x29, + 0xea, 0xea, 0xea, 0xea, 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x3c, 0xe7, 0xa7, 0x39, 0x25, 0x25, 0x25, 0x25, 0xfb, 0xde, 0xe8, 0x41, + 0x56, 0x50, 0xc9, 0x35, 0xe7, 0x39, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, + 0x2a, 0x2a, 0x2a, 0x2a, 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xde, 0xe8, 0x41, 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xfb, 0xde, 0x65, 0x29, 0x25, 0x25, 0x0a, 0x0a, 0xba, 0xd6, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x9a, 0xd6, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, + 0x9a, 0xd6, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0xf3, 0x9c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x1e, 0xe7, 0xa7, 0x39, 0x5a, 0x5a, 0xa0, 0xa0, + 0xc7, 0x39, 0x19, 0xad, 0x00, 0x00, 0x55, 0x55, 0xc7, 0x39, 0x19, 0xad, + 0x00, 0x00, 0x55, 0x55, 0xc7, 0x39, 0x19, 0xad, 0x00, 0x00, 0x55, 0x55, + 0x9d, 0xd6, 0xa8, 0x39, 0x85, 0x85, 0x0a, 0xaa, 0xa6, 0x31, 0xf9, 0xa4, + 0x00, 0x00, 0x55, 0x55, 0xbf, 0xde, 0xa7, 0x31, 0x55, 0x55, 0xaa, 0x0a, + 0xbe, 0xde, 0xc9, 0x39, 0x25, 0x69, 0xa0, 0xaa, 0x19, 0xad, 0xa6, 0x31, + 0xd7, 0x55, 0x00, 0x00, 0xff, 0xe6, 0x47, 0x29, 0x58, 0x58, 0xa0, 0xaa, + 0xc7, 0x39, 0xfa, 0xa4, 0x00, 0x00, 0x55, 0x55, 0xc7, 0x39, 0xfb, 0xa4, + 0x00, 0x00, 0x55, 0x55, 0xfa, 0xa4, 0xc7, 0x39, 0x55, 0x55, 0x00, 0x00, + 0x3f, 0xef, 0x05, 0x21, 0xcd, 0xcd, 0x8a, 0xaa, 0xf9, 0xa4, 0xa7, 0x39, + 0x55, 0x55, 0x00, 0x00, 0xc7, 0x39, 0xd9, 0xa4, 0x00, 0x00, 0x55, 0x55, + 0xc7, 0x39, 0xd9, 0xa4, 0x00, 0x00, 0x55, 0x55, 0x7e, 0xd6, 0xc7, 0x39, + 0xd5, 0xd5, 0x2a, 0xaa, 0xe9, 0x39, 0x7f, 0xef, 0x01, 0x01, 0xa9, 0xaa, + 0x3f, 0xce, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0x1f, 0xce, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x3e, 0xce, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, + 0x9c, 0xd6, 0x66, 0x29, 0x49, 0x49, 0x82, 0xaa, 0x58, 0xad, 0xc8, 0x39, + 0x55, 0x55, 0x00, 0xaa, 0x58, 0xad, 0xc8, 0x39, 0x55, 0x55, 0x00, 0xaa, + 0x57, 0xad, 0xc8, 0x39, 0x55, 0x55, 0x00, 0xaa, 0x1c, 0xe7, 0xe9, 0x39, + 0x15, 0x15, 0x2a, 0xff, 0x5d, 0xef, 0xc8, 0x39, 0x56, 0x56, 0xa8, 0xff, + 0x37, 0xad, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xaa, 0x36, 0xa5, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xaa, 0x35, 0xa5, 0xa7, 0x39, 0x55, 0x55, 0x00, 0xaa, + 0xdb, 0xd6, 0xc8, 0x39, 0x61, 0x61, 0x82, 0xff, 0x35, 0xa5, 0xa7, 0x39, + 0x55, 0x55, 0x00, 0xaa, 0x14, 0xa5, 0xa7, 0x39, 0x55, 0x55, 0x00, 0xaa, + 0x3c, 0xe7, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xff, 0x7d, 0xef, 0xc7, 0x39, + 0x15, 0x15, 0x2a, 0xff, 0x3c, 0xe7, 0xa6, 0x31, 0x57, 0x57, 0xaa, 0xaa, + 0x1b, 0xdf, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0x1b, 0xdf, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x1c, 0xe7, 0xa6, 0x31, 0x55, 0x55, 0xaa, 0xaa, + 0x7d, 0xef, 0xe7, 0x39, 0x53, 0x53, 0xa2, 0xaa, 0x1b, 0xdf, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x1b, 0xdf, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, + 0x1b, 0xdf, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0x1b, 0xdf, 0x86, 0x31, + 0x25, 0x25, 0x0a, 0xaa, 0x1b, 0xdf, 0x86, 0x31, 0xd5, 0x55, 0xaa, 0xaa, + 0xfb, 0xde, 0x08, 0x42, 0x58, 0x41, 0x0a, 0xaa, 0x5d, 0xef, 0xa6, 0x31, + 0x55, 0x55, 0xaa, 0xa8, 0x1c, 0xe7, 0xa6, 0x31, 0x55, 0x55, 0xaa, 0xaa, + 0xdb, 0xde, 0xa7, 0x39, 0x52, 0x52, 0xa0, 0xaa, 0x1b, 0xdf, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x1b, 0xdf, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, + 0x1b, 0xdf, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0x1b, 0xdf, 0xc7, 0x39, + 0x85, 0x85, 0x0a, 0x0a, 0xf3, 0x9c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x9a, 0xd6, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0x9a, 0xd6, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x14, 0xa5, 0xa6, 0x31, 0xd5, 0xd5, 0x00, 0x00, + 0x9d, 0xef, 0x86, 0x31, 0x5c, 0x5c, 0xa8, 0xa8, 0xa6, 0x31, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x86, 0x31, 0x49, 0x4a, 0x02, 0xa9, 0xa9, 0xa9, + 0x49, 0x4a, 0x45, 0x29, 0xff, 0xaa, 0xaa, 0xaa, 0x49, 0x4a, 0x45, 0x29, + 0xff, 0xaa, 0xaa, 0xaa, 0x28, 0x42, 0x86, 0x31, 0x55, 0xea, 0xea, 0xea, + 0xf8, 0xf7, 0xdf, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, 0x7f, 0x6a, 0x5f, 0x49, + 0xff, 0xaa, 0xaa, 0xaa, 0x7f, 0x6a, 0x5f, 0x49, 0xff, 0xaa, 0xaa, 0xaa, + 0x7f, 0x6a, 0x5f, 0x49, 0xff, 0xaa, 0xaa, 0xaa, 0x7f, 0x6a, 0x5f, 0x49, + 0xff, 0xaa, 0xaa, 0xaa, 0x1f, 0xe7, 0xdf, 0x59, 0x55, 0x55, 0xd5, 0x35, + 0xff, 0xe6, 0xdf, 0x59, 0xcd, 0x73, 0x5c, 0x57, 0x7f, 0x6a, 0x5f, 0x49, + 0xff, 0xaa, 0xaa, 0xaa, 0x7f, 0x6a, 0x5f, 0x49, 0xff, 0xaa, 0xaa, 0xaa, + 0x3f, 0x62, 0xbf, 0x51, 0x55, 0xaa, 0xaa, 0xaa, 0x5e, 0x62, 0x3d, 0x49, + 0xff, 0xaa, 0xaa, 0xaa, 0x1c, 0x5a, 0x7c, 0x49, 0x55, 0xaa, 0xaa, 0xaa, + 0x3b, 0x5a, 0x1b, 0x41, 0xff, 0xaa, 0xaa, 0xaa, 0x1a, 0x5a, 0xf9, 0x38, + 0xff, 0xaa, 0xaa, 0xaa, 0xd8, 0x38, 0xb9, 0x49, 0xaa, 0x55, 0x55, 0x55, + 0xf8, 0x51, 0xd7, 0x30, 0xff, 0xaa, 0xaa, 0xaa, 0xb7, 0x49, 0x16, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x75, 0x41, 0x54, 0x20, 0xaa, 0x00, 0x00, 0x00, + 0x35, 0x52, 0xf4, 0x30, 0x55, 0xff, 0xff, 0xff, 0x72, 0x20, 0x53, 0x39, + 0xaa, 0x55, 0x55, 0x55, 0x93, 0x41, 0x70, 0x20, 0xff, 0xaa, 0xaa, 0xaa, + 0x91, 0x41, 0x4f, 0x18, 0xff, 0xaa, 0xaa, 0xaa, 0x70, 0x39, 0x2e, 0x18, + 0xff, 0xaa, 0xaa, 0xaa, 0x2f, 0x31, 0x8d, 0x20, 0x55, 0xaa, 0xaa, 0xaa, + 0x4e, 0x31, 0x0b, 0x10, 0xff, 0xaa, 0xaa, 0xaa, 0x0d, 0x29, 0x6b, 0x18, + 0x55, 0xaa, 0xaa, 0xaa, 0x4a, 0x10, 0x2c, 0x31, 0x00, 0xaa, 0xaa, 0xaa, + 0x8c, 0x39, 0x29, 0x10, 0x55, 0xff, 0xff, 0xff, 0x27, 0x08, 0x0a, 0x29, + 0x00, 0xaa, 0xaa, 0xaa, 0x4a, 0x31, 0x06, 0x08, 0x55, 0xff, 0xff, 0xff, + 0xa7, 0x18, 0x05, 0x08, 0x55, 0xaa, 0xaa, 0xaa, 0x45, 0x10, 0x03, 0x00, + 0x57, 0x80, 0x80, 0x80, 0x65, 0x10, 0x02, 0x00, 0x55, 0xaa, 0xaa, 0xaa, + 0x23, 0x08, 0x01, 0x00, 0x55, 0x80, 0x80, 0x80, 0x24, 0x08, 0x00, 0x00, + 0x55, 0xfe, 0xfe, 0xfe, 0xa2, 0x10, 0x00, 0x00, 0xd5, 0x95, 0x95, 0x95, + 0xeb, 0x5a, 0x29, 0x4a, 0xab, 0x00, 0x00, 0x00, 0x8e, 0x73, 0xaa, 0x52, + 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, + 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, + 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, + 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, + 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, + 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, 0x2c, 0x63, 0x8a, 0x52, + 0x55, 0xaa, 0xaa, 0xaa, 0xeb, 0x5a, 0xfb, 0xde, 0x06, 0x18, 0x60, 0x80, + 0xba, 0xd6, 0xaa, 0x52, 0x55, 0x55, 0x57, 0x5c, 0x8e, 0x73, 0xaa, 0x52, + 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, + 0x8e, 0x73, 0xaa, 0x52, 0x55, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xaa, 0x52, + 0x55, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xcb, 0x5a, 0x85, 0x85, 0x85, 0x85, + 0x49, 0x4a, 0x45, 0x29, 0xfd, 0xab, 0xab, 0xab, 0x49, 0x4a, 0x45, 0x29, + 0xff, 0xaa, 0xaa, 0xaa, 0x49, 0x4a, 0x45, 0x29, 0xff, 0xaa, 0xaa, 0xaa, + 0xaa, 0x52, 0x86, 0x31, 0x95, 0x3f, 0x3f, 0x3f, 0xbe, 0xf7, 0xa7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xfa, 0xf7, 0xff, 0x59, + 0x5a, 0x5a, 0x5a, 0x5a, 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0x3f, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xde, 0xff, 0x59, 0x55, 0x55, 0xd5, 0x15, + 0x5f, 0xef, 0xff, 0x59, 0xcd, 0x73, 0x5c, 0x57, 0x7f, 0x6a, 0x5f, 0x49, + 0xab, 0xaa, 0xaa, 0xaa, 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x62, 0xfe, 0x59, + 0xfa, 0xfa, 0xfa, 0xfa, 0xfe, 0x59, 0xfd, 0x59, 0x78, 0x78, 0x78, 0x78, + 0xfd, 0x59, 0xdc, 0x51, 0xfa, 0xfa, 0xfa, 0xfa, 0xdd, 0x59, 0xdb, 0x51, + 0x5f, 0x5f, 0x5f, 0x5f, 0xdb, 0x51, 0x99, 0x49, 0xea, 0xea, 0xea, 0xea, + 0xb9, 0x49, 0x98, 0x49, 0xe0, 0xe0, 0xe0, 0xe0, 0x98, 0x49, 0x76, 0x41, + 0xa0, 0xa0, 0xa0, 0xa0, 0x97, 0x49, 0x76, 0x41, 0xfa, 0xfa, 0xfa, 0xfa, + 0x76, 0x41, 0x54, 0x41, 0xe8, 0xe8, 0xe8, 0xe8, 0x75, 0x41, 0x53, 0x39, + 0xfa, 0xfa, 0xfa, 0xfa, 0x54, 0x39, 0x32, 0x39, 0xea, 0xea, 0xea, 0xea, + 0x32, 0x39, 0x31, 0x31, 0xe8, 0xe8, 0xe8, 0xe8, 0x31, 0x31, 0x10, 0x31, + 0x7a, 0x7a, 0x7a, 0x7a, 0x10, 0x31, 0x0e, 0x29, 0xa0, 0xa0, 0xa0, 0xa0, + 0x10, 0x31, 0xee, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0xee, 0x28, 0xcc, 0x20, + 0xe8, 0xe8, 0xe8, 0xe8, 0xcd, 0x28, 0xcb, 0x20, 0xfa, 0xfa, 0xfa, 0xfa, + 0xcc, 0x20, 0xaa, 0x20, 0xfe, 0xfe, 0xfe, 0xfe, 0xaa, 0x20, 0x89, 0x18, + 0xea, 0xea, 0xea, 0xea, 0xaa, 0x18, 0x88, 0x18, 0x7f, 0x7f, 0x7f, 0x7f, + 0x88, 0x18, 0x46, 0x10, 0xa8, 0xa8, 0xa8, 0xa8, 0x67, 0x18, 0x66, 0x10, + 0x7f, 0x7f, 0x7f, 0x7f, 0x66, 0x10, 0x44, 0x10, 0x7a, 0x7a, 0x7a, 0x7a, + 0x45, 0x10, 0x23, 0x08, 0xfa, 0xfa, 0xfa, 0xfa, 0x23, 0x08, 0x22, 0x08, + 0xe0, 0xe0, 0xe0, 0xe0, 0x01, 0x00, 0x22, 0x08, 0xa9, 0xa9, 0xa9, 0xa9, + 0x44, 0x29, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, 0x0c, 0x63, 0xeb, 0x5a, + 0xf9, 0xf9, 0xf9, 0xf9, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x6e, 0x73, 0xaa, 0x52, 0x7f, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xaa, 0x52, + 0x72, 0xc9, 0x25, 0x95, 0x1c, 0xe7, 0xe3, 0x18, 0xff, 0xff, 0xff, 0xfc, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xde, 0xeb, 0x5a, 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xf8, 0xf7, 0xff, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, + 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0x3f, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x3f, 0xb5, 0x5f, 0x30, 0xff, 0xff, 0xff, 0x3f, + 0x5f, 0xd6, 0x1f, 0x62, 0x85, 0x61, 0x50, 0x54, 0x5f, 0x62, 0x7f, 0x51, + 0xab, 0xaa, 0xaa, 0xaa, 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xfd, 0x3f, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfd, 0x3f, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x1f, 0x62, 0xfe, 0x59, 0xfa, 0xfa, 0xfa, 0xfa, + 0xfe, 0x59, 0xfd, 0x59, 0x78, 0x78, 0x78, 0x78, 0xfd, 0x59, 0xdc, 0x51, + 0xfa, 0xfa, 0xfa, 0xfa, 0xdd, 0x59, 0xdb, 0x51, 0x5f, 0x5f, 0x5f, 0x5f, + 0xdb, 0x51, 0x99, 0x49, 0xea, 0xea, 0xea, 0xea, 0xb9, 0x49, 0x98, 0x49, + 0xe0, 0xe0, 0xe0, 0xe0, 0x98, 0x49, 0x76, 0x41, 0xa0, 0xa0, 0xa0, 0xa0, + 0x97, 0x49, 0x76, 0x41, 0xfa, 0xfa, 0xfa, 0xfa, 0x76, 0x41, 0x54, 0x41, + 0xe8, 0xe8, 0xe8, 0xe8, 0x75, 0x41, 0x53, 0x39, 0xfa, 0xfa, 0xfa, 0xfa, + 0x54, 0x39, 0x32, 0x39, 0xea, 0xea, 0xea, 0xea, 0x32, 0x39, 0x31, 0x31, + 0xe8, 0xe8, 0xe8, 0xe8, 0x31, 0x31, 0x10, 0x31, 0x7a, 0x7a, 0x7a, 0x7a, + 0x10, 0x31, 0x0e, 0x29, 0xa0, 0xa0, 0xa0, 0xa0, 0x10, 0x31, 0xee, 0x28, + 0x5f, 0x5f, 0x5f, 0x5f, 0xee, 0x28, 0xcc, 0x20, 0xe8, 0xe8, 0xe8, 0xe8, + 0xcd, 0x28, 0xcb, 0x20, 0xfa, 0xfa, 0xfa, 0xfa, 0xcc, 0x20, 0xaa, 0x20, + 0xfe, 0xfe, 0xfe, 0xfe, 0xaa, 0x20, 0x89, 0x18, 0xea, 0xea, 0xea, 0xea, + 0xaa, 0x18, 0x88, 0x18, 0x7f, 0x7f, 0x7f, 0x7f, 0x88, 0x18, 0x46, 0x10, + 0xa8, 0xa8, 0xa8, 0xa8, 0x67, 0x18, 0x66, 0x10, 0x7f, 0x7f, 0x7f, 0x7f, + 0x66, 0x10, 0x44, 0x10, 0x7a, 0x7a, 0x7a, 0x7a, 0x45, 0x10, 0x23, 0x08, + 0xfa, 0xfa, 0xfa, 0xfa, 0x23, 0x08, 0x22, 0x08, 0xe0, 0xe0, 0xe0, 0xe0, + 0x01, 0x00, 0x22, 0x08, 0xa9, 0xa9, 0xa9, 0xa9, 0x44, 0x29, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0xd5, 0x0c, 0x63, 0xeb, 0x5a, 0xf9, 0xf9, 0xf9, 0xf9, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x2c, 0x63, 0xcb, 0x5a, 0x7f, 0x7f, 0xff, 0xff, + 0xdb, 0xde, 0x0c, 0x63, 0x52, 0x41, 0x85, 0x15, 0xdb, 0xde, 0xeb, 0x5a, + 0x55, 0x55, 0x55, 0x56, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xeb, 0x5a, + 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xa7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0x56, + 0xc7, 0x39, 0x08, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x08, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0x08, 0x42, 0xa6, 0x31, 0xea, 0xea, 0xea, 0x7f, + 0xf9, 0xf7, 0xff, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, 0xff, 0x69, 0x1f, 0x5a, + 0xff, 0xff, 0xff, 0x55, 0xff, 0x61, 0x3f, 0x52, 0xaa, 0xaa, 0xaa, 0xbf, + 0xff, 0xe6, 0xff, 0x59, 0x35, 0xcd, 0x61, 0x58, 0xbf, 0x72, 0xbf, 0x51, + 0xf4, 0xfd, 0xff, 0xff, 0xff, 0x69, 0x1f, 0x5a, 0xff, 0xff, 0xff, 0x55, + 0xff, 0x69, 0x1f, 0x5a, 0xff, 0xff, 0xff, 0x55, 0xff, 0x69, 0x1f, 0x5a, + 0xff, 0xff, 0xff, 0x55, 0xff, 0x69, 0x1f, 0x5a, 0xff, 0xff, 0xff, 0x55, + 0xfe, 0x61, 0x3f, 0x52, 0xaa, 0xaa, 0xaa, 0xff, 0xfd, 0x59, 0x1f, 0x52, + 0x02, 0x02, 0x02, 0xff, 0xfd, 0x51, 0xdc, 0x59, 0xaa, 0xaa, 0xaa, 0x00, + 0xdb, 0x51, 0xfd, 0x41, 0x00, 0x00, 0x00, 0xaa, 0xb9, 0x51, 0xdb, 0x49, + 0xaa, 0xaa, 0xaa, 0xfd, 0x98, 0x51, 0xda, 0x41, 0xaa, 0xaa, 0xaa, 0xff, + 0x97, 0x49, 0xb9, 0x41, 0x2a, 0x2a, 0x2a, 0xbf, 0x76, 0x49, 0x98, 0x39, + 0xaa, 0xaa, 0xaa, 0xff, 0x76, 0x41, 0x54, 0x39, 0xa0, 0xa0, 0xa0, 0xa0, + 0x54, 0x41, 0x75, 0x31, 0xaa, 0xaa, 0xaa, 0xff, 0x54, 0x39, 0x32, 0x39, + 0xea, 0xea, 0xea, 0xa8, 0x31, 0x39, 0x33, 0x31, 0xaa, 0xaa, 0xaa, 0xfd, + 0x31, 0x31, 0x10, 0x31, 0x7a, 0x7a, 0x7a, 0xe0, 0x10, 0x31, 0x0f, 0x29, + 0xe8, 0xe8, 0xe8, 0xfa, 0x10, 0x31, 0xee, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, + 0xee, 0x28, 0xcc, 0x20, 0xe8, 0xe8, 0xe8, 0xe8, 0xed, 0x28, 0xcc, 0x20, + 0x5f, 0x5f, 0x5f, 0x5f, 0xcc, 0x20, 0xaa, 0x20, 0xfe, 0xfe, 0xfe, 0xea, + 0x89, 0x20, 0xcb, 0x18, 0xaa, 0xaa, 0xaa, 0xaf, 0xa9, 0x18, 0x88, 0x18, + 0xfa, 0xfa, 0xfa, 0xe8, 0x67, 0x10, 0x88, 0x18, 0xa9, 0xa9, 0xa9, 0xa9, + 0x67, 0x18, 0x66, 0x10, 0x7f, 0x7f, 0x7f, 0x7f, 0x66, 0x10, 0x24, 0x08, + 0xea, 0xea, 0xea, 0xea, 0x45, 0x10, 0x23, 0x08, 0xfa, 0xfa, 0xfa, 0xfa, + 0x23, 0x08, 0x21, 0x00, 0xa0, 0xa0, 0xa0, 0xa0, 0x01, 0x00, 0x22, 0x08, + 0xa9, 0xa9, 0xa9, 0xa9, 0x44, 0x29, 0x00, 0x00, 0xd5, 0xd5, 0xd5, 0xd5, + 0x0c, 0x63, 0xeb, 0x5a, 0xf9, 0xf9, 0xf9, 0xf9, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x7b, 0x8a, 0x52, + 0x1f, 0x7f, 0xff, 0xff, 0x7d, 0xef, 0xcb, 0x5a, 0x5c, 0x73, 0x49, 0xa5, + 0x2c, 0x63, 0xcb, 0x5a, 0xff, 0xff, 0xfd, 0xfd, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xeb, 0x5a, 0x85, 0x85, 0x85, 0x85, + 0x28, 0x42, 0x86, 0x31, 0xa9, 0xa9, 0xa9, 0xfd, 0xc7, 0x39, 0x08, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x08, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x1f, 0xde, 0xf7, 0xc7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0x9d, 0xef, 0xa6, 0x31, 0x0a, 0x2f, 0x25, 0x25, + 0xd7, 0xbd, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0xe7, 0x39, 0xd7, 0xbd, + 0x55, 0xaa, 0x00, 0x00, 0xe7, 0x39, 0xd7, 0xbd, 0x55, 0xaa, 0x00, 0x00, + 0xde, 0xf7, 0xc7, 0x39, 0xaa, 0xff, 0x55, 0x55, 0x2d, 0xe8, 0x9c, 0xce, + 0xa5, 0x0d, 0x0d, 0x0d, 0xba, 0x81, 0x6b, 0xf8, 0x00, 0x55, 0x55, 0x55, + 0x7d, 0xe6, 0x2d, 0xe0, 0xbf, 0x35, 0x85, 0x49, 0x2c, 0xe8, 0x3f, 0xb6, + 0xa9, 0x02, 0x00, 0x00, 0xba, 0x81, 0x6b, 0xf8, 0x00, 0x55, 0x55, 0x55, + 0xba, 0x81, 0x6b, 0xf8, 0x00, 0x55, 0x55, 0x55, 0xba, 0x81, 0x6b, 0xf8, + 0x00, 0x55, 0x55, 0x55, 0xba, 0x81, 0x6b, 0xf8, 0x00, 0x55, 0x55, 0x55, + 0xba, 0x81, 0x6b, 0xf8, 0x00, 0x55, 0x55, 0x55, 0x6b, 0xf8, 0xba, 0x81, + 0x55, 0x00, 0x00, 0x00, 0x99, 0x81, 0x6b, 0xf0, 0x00, 0x55, 0x55, 0x55, + 0x6a, 0xe0, 0x1f, 0x42, 0xff, 0x00, 0x00, 0x00, 0x6a, 0xd8, 0xfd, 0x41, + 0xff, 0x00, 0x00, 0x00, 0x6a, 0xd0, 0xfc, 0x39, 0xff, 0x00, 0x00, 0x00, + 0x69, 0xc8, 0xdb, 0x39, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x0a, 0x49, 0xc0, + 0xaa, 0x55, 0x55, 0x55, 0x03, 0xe0, 0x33, 0x61, 0x55, 0xaa, 0xaa, 0xaa, + 0x48, 0xa8, 0x97, 0x31, 0xff, 0x00, 0x00, 0x00, 0xdb, 0x09, 0x47, 0xa0, + 0xaa, 0x55, 0x55, 0x55, 0xb9, 0x09, 0x47, 0x98, 0xaa, 0x55, 0x55, 0x55, + 0x47, 0x90, 0x53, 0x29, 0xff, 0x00, 0x00, 0x00, 0xee, 0x48, 0x46, 0x88, + 0x00, 0x55, 0x55, 0x55, 0x02, 0x98, 0xcd, 0x40, 0x55, 0xaa, 0xaa, 0xaa, + 0x02, 0x90, 0xcc, 0x40, 0x55, 0xaa, 0xaa, 0xaa, 0x25, 0x68, 0x0e, 0x21, + 0xff, 0x00, 0x00, 0x00, 0x30, 0x09, 0x24, 0x60, 0xaa, 0x55, 0x55, 0x55, + 0x24, 0x58, 0xcc, 0x18, 0xff, 0x00, 0x00, 0x00, 0xed, 0x00, 0x24, 0x50, + 0xaa, 0x55, 0x55, 0x55, 0xcb, 0x00, 0x23, 0x48, 0xaa, 0x55, 0x55, 0x55, + 0x01, 0x48, 0x66, 0x20, 0x55, 0xaa, 0xaa, 0xaa, 0x02, 0x30, 0x87, 0x10, + 0xff, 0x00, 0x00, 0x00, 0x87, 0x00, 0x02, 0x28, 0xaa, 0x55, 0x55, 0x55, + 0x65, 0x00, 0x01, 0x20, 0xaa, 0x55, 0x55, 0x55, 0x44, 0x00, 0x01, 0x18, + 0xaa, 0x55, 0x55, 0x55, 0x00, 0x10, 0x01, 0x08, 0x55, 0xe8, 0xe8, 0xe8, + 0x00, 0x00, 0xe3, 0x18, 0x80, 0x80, 0x80, 0x80, 0x0c, 0x63, 0xeb, 0x5a, + 0xf9, 0xf9, 0xf9, 0xf9, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0xef, 0xeb, 0x5a, 0x15, 0xd5, 0x55, 0x55, 0xfb, 0xde, 0xcb, 0x5a, + 0x56, 0x5c, 0x52, 0x61, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x1c, 0xe7, 0xeb, 0x5a, 0x05, 0x85, 0x85, 0x85, 0xde, 0xf7, 0xc7, 0x39, + 0xaa, 0xff, 0x55, 0x55, 0xe7, 0x39, 0xd7, 0xbd, 0x55, 0xaa, 0x00, 0x00, + 0xe7, 0x39, 0xd7, 0xbd, 0x55, 0xaa, 0x00, 0x00, 0xd7, 0xbd, 0x20, 0x00, + 0x00, 0xaa, 0xff, 0xff, 0xde, 0xf7, 0xc7, 0x39, 0xa8, 0xf8, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xb8, 0xdd, 0x4b, 0xf8, 0x50, 0x50, 0x50, 0x50, + 0x1d, 0xff, 0x4b, 0xf8, 0x55, 0x55, 0x95, 0x35, 0x5b, 0xfe, 0x2b, 0xf8, + 0x73, 0x58, 0x54, 0x57, 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, + 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, + 0xaa, 0xaa, 0xaa, 0xaa, 0x6c, 0xf8, 0x6b, 0xf0, 0x7a, 0x7a, 0x7a, 0x7a, + 0x6b, 0xf0, 0x6b, 0xe8, 0xf8, 0xf8, 0xf8, 0xf8, 0x6b, 0xe8, 0x6a, 0xe0, + 0x7e, 0x7e, 0x7e, 0x7e, 0x6a, 0xe0, 0x6a, 0xd0, 0xfa, 0xfa, 0xfa, 0xfa, + 0x6a, 0xd8, 0x69, 0xc8, 0xfa, 0xfa, 0xfa, 0xfa, 0x69, 0xc8, 0x49, 0xc0, + 0xe0, 0xe0, 0xe0, 0xe0, 0x49, 0xc8, 0x49, 0xb8, 0x7e, 0x7e, 0x7e, 0x7e, + 0x69, 0xb8, 0x48, 0xb0, 0xfa, 0xfa, 0xfa, 0xfa, 0x48, 0xa8, 0x48, 0xb0, + 0x09, 0x09, 0x09, 0x09, 0x47, 0xa0, 0x48, 0xa8, 0x0a, 0x0a, 0x0a, 0x0a, + 0x47, 0xa0, 0x47, 0x90, 0xfa, 0xfa, 0xfa, 0xfa, 0x47, 0x90, 0x46, 0x88, + 0xe0, 0xe0, 0xe0, 0xe0, 0x46, 0x88, 0x46, 0x80, 0xe8, 0xe8, 0xe8, 0xe8, + 0x46, 0x80, 0x26, 0x78, 0xf8, 0xf8, 0xf8, 0xf8, 0x26, 0x78, 0x25, 0x70, + 0x7a, 0x7a, 0x7a, 0x7a, 0x25, 0x70, 0x25, 0x68, 0x5e, 0x5e, 0x5e, 0x5e, + 0x25, 0x68, 0x24, 0x58, 0xfa, 0xfa, 0xfa, 0xfa, 0x24, 0x60, 0x24, 0x50, + 0xfe, 0xfe, 0xfe, 0xfe, 0x24, 0x50, 0x23, 0x48, 0xe0, 0xe0, 0xe0, 0xe0, + 0x23, 0x48, 0x23, 0x40, 0x70, 0x70, 0x70, 0x70, 0x23, 0x40, 0x02, 0x30, + 0xe8, 0xe8, 0xe8, 0xe8, 0x03, 0x38, 0x02, 0x30, 0x7e, 0x7e, 0x7e, 0x7e, + 0x22, 0x30, 0x01, 0x20, 0xfa, 0xfa, 0xfa, 0xfa, 0x02, 0x28, 0x01, 0x18, + 0xfa, 0xfa, 0xfa, 0xfa, 0x01, 0x18, 0x01, 0x10, 0xe0, 0xe0, 0xe0, 0xe0, + 0x01, 0x10, 0x00, 0x08, 0x68, 0x68, 0x68, 0x68, 0x00, 0x00, 0xe3, 0x18, + 0x80, 0x80, 0x80, 0x80, 0x0c, 0x63, 0xeb, 0x5a, 0xf9, 0xf9, 0xf9, 0xf9, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xcb, 0x5a, 0xcd, 0x25, 0x15, 0xd5, + 0x5d, 0xef, 0xcb, 0x5a, 0x55, 0x55, 0x56, 0x5c, 0x5d, 0xef, 0xe3, 0x18, + 0x8f, 0x8f, 0x8f, 0x8f, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0xb8, 0xe5, 0x4b, 0xf8, 0x50, 0x50, 0x50, 0x50, 0x7b, 0xfe, 0x4b, 0xf8, + 0x85, 0x49, 0x73, 0x58, 0xac, 0xf8, 0x0a, 0xf8, 0xa9, 0xab, 0xaa, 0xaa, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, + 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, + 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, + 0x6c, 0xf8, 0x6b, 0xf0, 0x7a, 0x7a, 0x7a, 0x7a, 0x6b, 0xf0, 0x6b, 0xe8, + 0xf8, 0xf8, 0xf8, 0xf8, 0x6b, 0xe8, 0x6a, 0xe0, 0x7e, 0x7e, 0x7e, 0x7e, + 0x6a, 0xe0, 0x6a, 0xd0, 0xfa, 0xfa, 0xfa, 0xfa, 0x6a, 0xd8, 0x69, 0xc8, + 0xfa, 0xfa, 0xfa, 0xfa, 0x69, 0xc8, 0x49, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, + 0x49, 0xc8, 0x49, 0xb8, 0x7e, 0x7e, 0x7e, 0x7e, 0x69, 0xb8, 0x48, 0xb0, + 0xfa, 0xfa, 0xfa, 0xfa, 0x48, 0xa8, 0x48, 0xb0, 0x09, 0x09, 0x09, 0x09, + 0x47, 0xa0, 0x48, 0xa8, 0x0a, 0x0a, 0x0a, 0x0a, 0x47, 0xa0, 0x47, 0x90, + 0xfa, 0xfa, 0xfa, 0xfa, 0x47, 0x90, 0x46, 0x88, 0xe0, 0xe0, 0xe0, 0xe0, + 0x46, 0x88, 0x46, 0x80, 0xe8, 0xe8, 0xe8, 0xe8, 0x46, 0x80, 0x26, 0x78, + 0xf8, 0xf8, 0xf8, 0xf8, 0x26, 0x78, 0x25, 0x70, 0x7a, 0x7a, 0x7a, 0x7a, + 0x25, 0x70, 0x25, 0x68, 0x5e, 0x5e, 0x5e, 0x5e, 0x25, 0x68, 0x24, 0x58, + 0xfa, 0xfa, 0xfa, 0xfa, 0x24, 0x60, 0x24, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, + 0x24, 0x50, 0x23, 0x48, 0xe0, 0xe0, 0xe0, 0xe0, 0x23, 0x48, 0x23, 0x40, + 0x70, 0x70, 0x70, 0x70, 0x23, 0x40, 0x02, 0x30, 0xe8, 0xe8, 0xe8, 0xe8, + 0x03, 0x38, 0x02, 0x30, 0x7e, 0x7e, 0x7e, 0x7e, 0x22, 0x30, 0x01, 0x20, + 0xfa, 0xfa, 0xfa, 0xfa, 0x02, 0x28, 0x01, 0x18, 0xfa, 0xfa, 0xfa, 0xfa, + 0x01, 0x18, 0x01, 0x10, 0xe0, 0xe0, 0xe0, 0xe0, 0x01, 0x10, 0x00, 0x08, + 0x68, 0x68, 0x68, 0x68, 0x00, 0x00, 0xe3, 0x18, 0x80, 0x80, 0x80, 0x80, + 0x0c, 0x63, 0xeb, 0x5a, 0xf9, 0xf9, 0xf9, 0xf9, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x0c, 0x63, 0xaa, 0x52, 0x6a, 0xaa, 0xaa, 0xaa, 0x5c, 0xe7, 0x0c, 0x63, + 0x52, 0x71, 0x4d, 0xa5, 0xeb, 0x5a, 0x7d, 0xef, 0x90, 0x90, 0x90, 0x90, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xac, 0xf8, 0xbb, 0xde, + 0x8d, 0x4d, 0x7d, 0x95, 0x6b, 0xf8, 0x3d, 0xff, 0x01, 0x02, 0x00, 0x00, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, + 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, + 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, + 0x02, 0xf8, 0x5f, 0xf1, 0xaa, 0xaa, 0xaa, 0xaa, 0x6c, 0xf8, 0x6b, 0xf0, + 0x7a, 0x7a, 0x7a, 0x7a, 0x6b, 0xf0, 0x6b, 0xe8, 0xf8, 0xf8, 0xf8, 0xf8, + 0x6b, 0xe8, 0x6a, 0xe0, 0x7e, 0x7e, 0x7e, 0x7e, 0x6a, 0xe0, 0x6a, 0xd0, + 0xfa, 0xfa, 0xfa, 0xfa, 0x6a, 0xd8, 0x69, 0xc8, 0xfa, 0xfa, 0xfa, 0xfa, + 0x69, 0xc8, 0x49, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0x49, 0xc8, 0x49, 0xb8, + 0x7e, 0x7e, 0x7e, 0x7e, 0x69, 0xb8, 0x48, 0xb0, 0xfa, 0xfa, 0xfa, 0xfa, + 0x48, 0xa8, 0x48, 0xb0, 0x09, 0x09, 0x09, 0x09, 0x47, 0xa0, 0x48, 0xa8, + 0x0a, 0x0a, 0x0a, 0x0a, 0x47, 0xa0, 0x47, 0x90, 0xfa, 0xfa, 0xfa, 0xfa, + 0x47, 0x90, 0x46, 0x88, 0xe0, 0xe0, 0xe0, 0xe0, 0x46, 0x88, 0x46, 0x80, + 0xe8, 0xe8, 0xe8, 0xe8, 0x46, 0x80, 0x26, 0x78, 0xf8, 0xf8, 0xf8, 0xf8, + 0x26, 0x78, 0x25, 0x70, 0x7a, 0x7a, 0x7a, 0x7a, 0x25, 0x70, 0x25, 0x68, + 0x5e, 0x5e, 0x5e, 0x5e, 0x25, 0x68, 0x24, 0x58, 0xfa, 0xfa, 0xfa, 0xfa, + 0x24, 0x60, 0x24, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0x24, 0x50, 0x23, 0x48, + 0xe0, 0xe0, 0xe0, 0xe0, 0x23, 0x48, 0x23, 0x40, 0x70, 0x70, 0x70, 0x70, + 0x23, 0x40, 0x02, 0x30, 0xe8, 0xe8, 0xe8, 0xe8, 0x03, 0x38, 0x02, 0x30, + 0x7e, 0x7e, 0x7e, 0x7e, 0x22, 0x30, 0x01, 0x20, 0xfa, 0xfa, 0xfa, 0xfa, + 0x02, 0x28, 0x01, 0x18, 0xfa, 0xfa, 0xfa, 0xfa, 0x01, 0x18, 0x01, 0x10, + 0xe0, 0xe0, 0xe0, 0xe0, 0x01, 0x10, 0x00, 0x08, 0x68, 0x68, 0x68, 0x68, + 0x00, 0x00, 0xe3, 0x18, 0x80, 0x80, 0x80, 0x80, 0x0c, 0x63, 0xeb, 0x5a, + 0xf9, 0xf9, 0xf9, 0xf9, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x82, 0x10, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x82, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0xcb, 0x5a, 0x35, 0x95, 0x55, 0x55, + 0xde, 0xf7, 0xae, 0x73, 0xc5, 0xc6, 0xcc, 0xc3, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0x9d, 0xef, 0x08, 0x42, 0x25, 0x25, 0x0a, 0x25, 0x18, 0xc6, 0xe7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x38, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xbf, 0xbe, 0xf7, 0x09, 0xe8, 0x62, 0x72, 0xa0, 0x00, + 0x4b, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x4b, 0xf8, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x4b, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x4b, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x4b, 0xf8, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x4b, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x4b, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x4b, 0xf8, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x4b, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x4a, 0xe8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x4a, 0xe0, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x49, 0xd8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x29, 0xd0, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x28, 0xc8, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x28, 0xb8, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x28, 0xb0, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x27, 0xa8, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x27, 0xa0, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x26, 0x98, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x26, 0x88, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x25, 0x80, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x25, 0x78, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x24, 0x70, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x24, 0x68, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x24, 0x58, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x23, 0x50, 0xbe, 0xef, + 0x00, 0x00, 0xaa, 0x56, 0x03, 0x48, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x02, 0x40, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x02, 0x38, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x01, 0x30, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x01, 0x20, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x01, 0x18, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0x01, 0x10, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0x00, 0x08, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x20, 0x08, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, + 0x00, 0x00, 0xaa, 0x55, 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, + 0xcb, 0x5a, 0xff, 0xff, 0x00, 0x00, 0xaa, 0x55, 0x7d, 0xef, 0xe7, 0x39, + 0x83, 0x8d, 0x0a, 0x00, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x38, 0xc6, 0x49, 0x4a, 0x55, 0x55, 0x00, 0xd5, + 0xff, 0xff, 0x28, 0x42, 0x5c, 0x5c, 0xa8, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0x56, 0xf4, 0xf4, 0xf4, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0xfb, 0xde, 0xe7, 0x39, 0x95, 0x15, 0x25, 0xc5, + 0xff, 0xff, 0x96, 0xb5, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xdf, 0xff, + 0x2a, 0x2a, 0x2a, 0x2a, 0xa2, 0x10, 0x9e, 0xf7, 0x5a, 0x52, 0x52, 0x62, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0xaa, 0xa8, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0x14, 0xa5, 0x00, 0x00, 0xc0, 0x40, + 0xe7, 0x39, 0xfb, 0xde, 0x02, 0x01, 0x09, 0x06, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x8a, 0x52, 0xc7, 0x39, 0x15, 0x1f, 0x1f, 0x1f, 0xde, 0xf7, 0xc7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x66, 0x31, 0xaa, 0xaa, 0xea, 0xea, + 0xdb, 0xde, 0xa6, 0x31, 0x49, 0x61, 0x73, 0x52, 0xff, 0xff, 0x86, 0x31, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xdf, 0xff, 0x2a, 0x2a, 0x2a, 0x2a, + 0xdb, 0xde, 0x00, 0x00, 0x36, 0x16, 0xd6, 0xd6, 0x7d, 0xef, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x56, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x8a, 0x52, 0xff, 0xff, 0x95, 0x95, 0x95, 0x95, 0x5c, 0xe7, 0xc7, 0x39, + 0x71, 0x69, 0x4d, 0x85, 0x08, 0x42, 0xa6, 0x31, 0xaa, 0xaa, 0xab, 0xa9, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xff, 0x08, 0x42, 0x55, 0xd5, 0x95, 0x15, 0x3c, 0xe7, 0xc7, 0x39, + 0x5c, 0x54, 0x56, 0x57, 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xff, 0xdf, 0xff, 0x2a, 0x2a, 0x2a, 0x2a, 0x00, 0x00, 0x71, 0x8c, + 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0x00, 0x00, 0x02, 0x03, 0x09, 0x09, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, + 0xc0, 0xc0, 0xc0, 0xc0, 0x7d, 0xef, 0xe7, 0x39, 0x35, 0x15, 0x95, 0xd5, + 0x9d, 0xef, 0xe7, 0x39, 0x55, 0x57, 0x56, 0x54, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xe7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0xcb, 0x5a, 0xe7, 0x39, 0x57, 0x57, 0x57, 0x28, + 0x4d, 0x6b, 0xe7, 0x39, 0x55, 0x55, 0x55, 0x0a, 0xda, 0xd6, 0xc7, 0x39, + 0x25, 0x85, 0xcd, 0x43, 0x6a, 0x52, 0xa6, 0x31, 0xff, 0xfd, 0x7d, 0x00, + 0x8e, 0x73, 0xff, 0xff, 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x0a, 0x0a, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x0a, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0xa0, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x02, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x2a, 0x28, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x80, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x0a, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0xa0, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x08, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x82, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0xa2, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x20, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x28, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x0a, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x82, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0xa0, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0x2a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x51, 0x8c, 0x01, 0x01, 0x01, 0x01, + 0xde, 0xf7, 0x82, 0x10, 0x05, 0x25, 0x35, 0x15, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x80, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x08, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x22, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x02, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x02, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x88, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x80, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x20, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0x8a, 0x52, 0xff, 0xff, 0x95, 0x95, 0x95, 0x95, + 0x8a, 0x52, 0x86, 0x31, 0xbd, 0x7d, 0x7d, 0x02, 0xfb, 0xde, 0xc7, 0x39, + 0x58, 0x52, 0x53, 0xe3, 0x4d, 0x6b, 0xe7, 0x39, 0x55, 0x55, 0x55, 0xa0, + 0x0c, 0x63, 0xe7, 0x39, 0x95, 0x95, 0x95, 0x3a, 0xde, 0xf7, 0x08, 0x42, + 0x5c, 0x5c, 0x5c, 0x5c, 0x9d, 0xef, 0xc7, 0x39, 0x0a, 0x25, 0x25, 0x25, + 0x08, 0x42, 0x38, 0xc6, 0x55, 0x00, 0x00, 0x00, 0x38, 0xc6, 0xe7, 0x39, + 0x00, 0x55, 0x55, 0x55, 0x3c, 0xe7, 0xc7, 0x39, 0x80, 0x73, 0x52, 0x58, + 0xe7, 0x39, 0x18, 0xc6, 0x55, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, 0xb5, + 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xdf, 0xff, 0xae, 0x73, + 0xe0, 0x70, 0x70, 0x70, 0x38, 0xc6, 0xcf, 0x7b, 0x2a, 0x95, 0x95, 0x95, + 0x7d, 0xef, 0xa3, 0x18, 0xe0, 0x70, 0x70, 0x70, 0x7d, 0xef, 0xe3, 0x18, + 0x0b, 0x0d, 0x0d, 0x0d, 0xb6, 0xb5, 0x00, 0x00, 0xa8, 0xdc, 0xdc, 0xdc, + 0x7d, 0xef, 0xef, 0x7b, 0xc2, 0x43, 0x43, 0x43, 0x9a, 0xd6, 0x82, 0x10, + 0x2e, 0x35, 0x35, 0x35, 0xde, 0xf7, 0x21, 0x08, 0xe0, 0x78, 0x78, 0x78, + 0x04, 0x21, 0x9e, 0xf7, 0x5a, 0x58, 0x58, 0x58, 0x38, 0xc6, 0x82, 0x10, + 0xb8, 0xd6, 0xd6, 0xd6, 0xef, 0x7b, 0x9a, 0xd6, 0xaa, 0x00, 0x00, 0x00, + 0x08, 0x42, 0x1b, 0xdf, 0xa5, 0x06, 0x06, 0x06, 0xc3, 0x18, 0xba, 0xd6, + 0x65, 0x49, 0x49, 0x49, 0xc3, 0x18, 0x9a, 0xd6, 0x59, 0x61, 0x61, 0x61, + 0x3c, 0xe7, 0xa7, 0x39, 0x8b, 0xc5, 0xc5, 0xc5, 0xfb, 0xde, 0xe3, 0x18, + 0xc3, 0x61, 0x61, 0x61, 0xdb, 0xde, 0x45, 0x29, 0xb0, 0xd2, 0xd2, 0xd2, + 0xe7, 0x39, 0x3c, 0xe7, 0x69, 0x41, 0x41, 0x41, 0x18, 0xc6, 0x62, 0x10, + 0x08, 0x06, 0x06, 0x06, 0x55, 0xad, 0xe4, 0x20, 0x02, 0xad, 0xad, 0xad, + 0x5c, 0xe7, 0x6a, 0x52, 0xd7, 0x3f, 0x3f, 0x3f, 0x9a, 0xd6, 0xaa, 0x52, + 0xd7, 0xfc, 0xfc, 0xfc, 0x18, 0xc6, 0xef, 0x7b, 0x2a, 0x95, 0x35, 0x35, + 0x7d, 0xef, 0x28, 0x42, 0xb3, 0x99, 0x99, 0x99, 0x96, 0xb5, 0x0c, 0x63, + 0x82, 0x79, 0x79, 0x79, 0x18, 0xc6, 0x28, 0x42, 0x88, 0x46, 0x46, 0x46, + 0xfb, 0xde, 0x69, 0x4a, 0x8c, 0x66, 0x66, 0x66, 0x18, 0xc6, 0xae, 0x73, + 0x28, 0x97, 0x96, 0x96, 0x18, 0xc6, 0x86, 0x31, 0x22, 0x13, 0x13, 0x13, + 0xd7, 0xbd, 0x49, 0x4a, 0x22, 0x91, 0x91, 0x91, 0x79, 0xce, 0x08, 0x42, + 0x8a, 0x6f, 0x6f, 0x6f, 0x9a, 0xd6, 0x8a, 0x52, 0xaa, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xe1, 0xab, 0xff, 0x55, 0x55, 0x55, 0xe0, 0xab, 0x94, 0xe6, + 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, + 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, + 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, + 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, + 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, + 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, + 0xaa, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, + 0xe0, 0xab, 0x94, 0xe6, 0xaa, 0x00, 0x00, 0x00, 0xbf, 0x9d, 0x85, 0x8b, + 0xab, 0xfd, 0xfd, 0xfd, 0xef, 0x7b, 0x9a, 0xd6, 0xaa, 0x00, 0x00, 0x00, + 0xcf, 0x7b, 0x3c, 0xe7, 0x5a, 0x90, 0x90, 0x90, 0xe7, 0x39, 0x18, 0xc6, + 0x55, 0x00, 0x00, 0x00, 0xff, 0xff, 0x28, 0x42, 0x8a, 0x4d, 0xc5, 0xa5, + 0xe7, 0x39, 0x58, 0xc6, 0x55, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x08, 0x42, + 0x00, 0xd5, 0x55, 0x55, 0xff, 0xff, 0xe7, 0x39, 0xa8, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0x79, 0xce, 0xe7, 0x39, 0x55, 0xd5, 0x95, 0x15, + 0x7d, 0xef, 0xc7, 0x39, 0x5c, 0x5c, 0x54, 0x56, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, 0x70, 0x70, 0x70, 0x70, + 0x75, 0xad, 0x2c, 0x63, 0x3f, 0x3f, 0x3f, 0x3f, 0x41, 0x08, 0x3c, 0xe7, + 0x25, 0x25, 0x25, 0x25, 0x41, 0x08, 0x1c, 0xe7, 0x58, 0x58, 0x58, 0x58, + 0x75, 0xad, 0x00, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, 0x7d, 0xef, 0xef, 0x7b, + 0x43, 0x43, 0x43, 0x43, 0x79, 0xce, 0x82, 0x10, 0x35, 0x35, 0x35, 0x35, + 0xff, 0xff, 0x20, 0x00, 0x78, 0x78, 0x78, 0x78, 0x04, 0x21, 0x7d, 0xef, + 0x58, 0x58, 0x58, 0x58, 0x62, 0x10, 0x92, 0x94, 0x81, 0x81, 0x81, 0x81, + 0xcf, 0x7b, 0x30, 0x84, 0x2a, 0x2a, 0x2a, 0x2a, 0x28, 0x42, 0x5c, 0xe7, + 0x06, 0x06, 0x06, 0x06, 0x58, 0xc6, 0xa3, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x38, 0xc6, 0x82, 0x10, 0x24, 0x24, 0x24, 0x24, 0x3c, 0xe7, 0xe7, 0x39, + 0xc5, 0xc5, 0xc5, 0xc5, 0xfb, 0xde, 0xc3, 0x18, 0x61, 0x61, 0x61, 0x61, + 0xdb, 0xde, 0x45, 0x29, 0xd2, 0xd2, 0xd2, 0xd2, 0x1c, 0xe7, 0x45, 0x29, + 0x1c, 0x1c, 0x1c, 0x1c, 0xf7, 0xbd, 0xa3, 0x18, 0x06, 0x06, 0x06, 0x06, + 0x10, 0x84, 0xc3, 0x18, 0x09, 0x09, 0x09, 0x09, 0xc3, 0x18, 0x3c, 0xe7, + 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, + 0x1c, 0xe7, 0x10, 0x84, 0x95, 0x95, 0x95, 0x95, 0x28, 0x42, 0x96, 0xb5, + 0x44, 0x44, 0x44, 0x44, 0xb2, 0x94, 0x0c, 0x63, 0x61, 0x61, 0x61, 0x61, + 0x18, 0xc6, 0x28, 0x42, 0x46, 0x46, 0x46, 0x46, 0xb6, 0xb5, 0xe7, 0x39, + 0xc4, 0xc4, 0xc4, 0xc4, 0x75, 0xad, 0x4d, 0x6b, 0x1e, 0x1e, 0x1e, 0x1e, + 0xd7, 0xbd, 0x86, 0x31, 0x13, 0x13, 0x13, 0x13, 0x96, 0xb5, 0x8a, 0x52, + 0x91, 0x91, 0x91, 0x91, 0xfb, 0xde, 0xe7, 0x39, 0x6f, 0x6f, 0x6f, 0x6f, + 0x10, 0x84, 0xef, 0x7b, 0xfa, 0xfb, 0xfb, 0xfb, 0xe0, 0xab, 0xe7, 0x9b, + 0x03, 0x03, 0x03, 0x03, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xb3, 0xe0, 0xab, + 0xbf, 0xbf, 0xbf, 0xbf, 0xfc, 0x5b, 0xe3, 0xa3, 0xa9, 0xa9, 0xa9, 0xa9, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0x7d, 0xef, 0x10, 0x84, + 0xc5, 0xc5, 0xc5, 0xc5, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0x9e, 0xf7, 0xe7, 0x39, 0x35, 0x35, 0x15, 0x95, 0xf7, 0xbd, 0xc7, 0x39, + 0x55, 0x57, 0x56, 0x54, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0x9d, 0xef, 0xc7, 0x39, 0x15, 0x35, 0x25, 0xa5, 0x10, 0x84, 0xc7, 0x39, + 0x54, 0x56, 0x57, 0x55, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xff, 0xcf, 0x7b, 0x70, 0x70, 0x70, 0x70, 0x75, 0xad, 0xe4, 0x20, + 0x2a, 0x2a, 0x2a, 0x2a, 0x41, 0x08, 0x5d, 0xef, 0x25, 0x25, 0x25, 0x25, + 0x21, 0x08, 0x3c, 0xe7, 0x58, 0x58, 0x58, 0x58, 0x95, 0xad, 0x00, 0x00, + 0xdc, 0xdc, 0xdc, 0xdc, 0x7d, 0xef, 0x10, 0x84, 0x43, 0x43, 0x43, 0x43, + 0x79, 0xce, 0xa2, 0x10, 0x35, 0x35, 0x35, 0x35, 0xff, 0xff, 0x21, 0x08, + 0x78, 0x78, 0x78, 0x78, 0x04, 0x21, 0x7d, 0xef, 0x58, 0x58, 0x58, 0x58, + 0xd3, 0x9c, 0x21, 0x08, 0xdc, 0xdc, 0xdc, 0xdc, 0xcf, 0x7b, 0x30, 0x84, + 0x2a, 0x2a, 0x2a, 0x2a, 0x29, 0x4a, 0x5c, 0xe7, 0x06, 0x06, 0x06, 0x06, + 0x58, 0xc6, 0xa3, 0x18, 0x18, 0x18, 0x18, 0x18, 0xe3, 0x18, 0xba, 0xd6, + 0x61, 0x61, 0x61, 0x61, 0x1c, 0xe7, 0xe7, 0x39, 0xc5, 0xc5, 0xc5, 0xc5, + 0x1b, 0xdf, 0xc3, 0x18, 0x61, 0x61, 0x61, 0x61, 0xda, 0xd6, 0x45, 0x29, + 0xd2, 0xd2, 0xd2, 0xd2, 0x1b, 0xdf, 0x04, 0x21, 0x1c, 0x1c, 0x1c, 0x1c, + 0xf7, 0xbd, 0xa2, 0x10, 0x06, 0x06, 0x06, 0x06, 0xef, 0x7b, 0xc3, 0x18, + 0x09, 0x09, 0x09, 0x09, 0xc3, 0x18, 0x3c, 0xe7, 0x6a, 0x6a, 0x6a, 0x6a, + 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, 0x3c, 0xe7, 0x10, 0x84, + 0x95, 0x95, 0x95, 0x95, 0x3c, 0xe7, 0x28, 0x42, 0x99, 0x99, 0x99, 0x99, + 0x65, 0x29, 0x71, 0x8c, 0x96, 0x96, 0x96, 0x96, 0x38, 0xc6, 0x49, 0x4a, + 0x46, 0x46, 0x46, 0x46, 0x96, 0xb5, 0xe8, 0x41, 0xc4, 0xc4, 0xc4, 0xc4, + 0x55, 0xad, 0x2c, 0x63, 0x1e, 0x1e, 0x1e, 0x1e, 0xb6, 0xb5, 0x86, 0x31, + 0x13, 0x13, 0x13, 0x13, 0x96, 0xb5, 0xe7, 0x39, 0xb1, 0xb1, 0xb1, 0xb1, + 0x13, 0x9d, 0xa6, 0x31, 0x4a, 0x4a, 0x4a, 0x4a, 0x10, 0x84, 0xef, 0x7b, + 0xfb, 0xfb, 0xfb, 0xfa, 0xe0, 0xab, 0xe7, 0x9b, 0x03, 0x03, 0x03, 0x03, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xb3, 0xe0, 0xab, 0xbf, 0xbf, 0xbf, 0xbf, + 0xfc, 0x5b, 0xe3, 0xa3, 0xa9, 0xa9, 0xa9, 0xa9, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0x7d, 0xef, 0x10, 0x84, 0xc5, 0xc5, 0xc5, 0xc5, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xb2, 0x94, 0xc7, 0x39, + 0x15, 0x95, 0xd5, 0x55, 0x5c, 0xe7, 0xe8, 0x41, 0x54, 0x54, 0x5c, 0x58, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0x5d, 0xef, 0x08, 0x42, + 0xc5, 0xc5, 0x4d, 0x49, 0x28, 0x42, 0x86, 0x31, 0xa9, 0xab, 0xab, 0xaa, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0x45, 0x29, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, + 0x70, 0x70, 0x70, 0x70, 0xfb, 0xde, 0x69, 0x4a, 0xbf, 0xbf, 0xbf, 0xbf, + 0x41, 0x08, 0x3c, 0xe7, 0x25, 0x25, 0x25, 0x25, 0x41, 0x08, 0x3c, 0xe7, + 0x58, 0x58, 0x58, 0x58, 0x75, 0xad, 0x00, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, + 0x7d, 0xef, 0xef, 0x7b, 0x43, 0x43, 0x43, 0x43, 0x99, 0xce, 0xa2, 0x10, + 0x35, 0x35, 0x35, 0x35, 0xff, 0xff, 0x20, 0x00, 0x78, 0x78, 0x78, 0x78, + 0x04, 0x21, 0x7d, 0xef, 0x58, 0x58, 0x58, 0x58, 0x99, 0xce, 0x82, 0x10, + 0xd6, 0xd6, 0xd6, 0xd6, 0xcf, 0x7b, 0x30, 0x84, 0x2a, 0x2a, 0x2a, 0x2a, + 0x28, 0x42, 0x5c, 0xe7, 0x06, 0x06, 0x06, 0x06, 0x79, 0xce, 0xa2, 0x10, + 0x18, 0x18, 0x18, 0x18, 0x59, 0xce, 0x82, 0x10, 0x24, 0x24, 0x24, 0x24, + 0x1c, 0xe7, 0xe7, 0x39, 0xc5, 0xc5, 0xc5, 0xc5, 0xfb, 0xde, 0xa3, 0x18, + 0x61, 0x61, 0x61, 0x61, 0xda, 0xd6, 0x45, 0x29, 0xd2, 0xd2, 0xd2, 0xd2, + 0x1c, 0xe7, 0x04, 0x21, 0x1c, 0x1c, 0x1c, 0x1c, 0xf7, 0xbd, 0xa3, 0x18, + 0x06, 0x06, 0x06, 0x06, 0x10, 0x84, 0xa3, 0x18, 0x09, 0x09, 0x09, 0x09, + 0xc3, 0x18, 0x3c, 0xe7, 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, + 0x56, 0x56, 0x56, 0x56, 0x10, 0x84, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, + 0xb6, 0xb5, 0x20, 0x00, 0x33, 0x33, 0x33, 0x33, 0x92, 0x94, 0xeb, 0x5a, + 0x61, 0x61, 0x61, 0x61, 0x18, 0xc6, 0x29, 0x4a, 0x46, 0x46, 0x46, 0x46, + 0xb6, 0xb5, 0xe8, 0x41, 0xc4, 0xc4, 0xc4, 0xc4, 0x34, 0xa5, 0x4d, 0x6b, + 0x1e, 0x1e, 0x1e, 0x1e, 0xd7, 0xbd, 0xa6, 0x31, 0x13, 0x13, 0x13, 0x13, + 0xb6, 0xb5, 0x8a, 0x52, 0x91, 0x91, 0x91, 0x91, 0xf3, 0x9c, 0xa6, 0x31, + 0x4a, 0x4a, 0x4a, 0x4a, 0xef, 0x7b, 0x10, 0x84, 0xaa, 0xaa, 0xaa, 0xa9, + 0xe0, 0xab, 0xe7, 0x9b, 0x03, 0x03, 0x03, 0x03, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc7, 0x00, 0xa2, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xb3, 0xe0, 0xab, 0xbf, 0xbf, 0xbf, 0xbf, 0xfc, 0x5b, 0xe3, 0xa3, + 0xa9, 0xa9, 0xa9, 0xa9, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0x7d, 0xef, 0x10, 0x84, 0xc5, 0xc5, 0xc5, 0xc5, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0x28, 0x42, 0x86, 0x31, 0x6a, 0xea, 0xea, 0xea, + 0x3c, 0xe7, 0x08, 0x42, 0x52, 0x53, 0x53, 0x71, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5d, 0xef, 0x86, 0x31, 0x25, 0x2f, 0x0a, 0x25, 0x34, 0xa5, 0xa7, 0x39, + 0x55, 0xaa, 0x00, 0x55, 0x9d, 0xef, 0xc7, 0x39, 0x69, 0xe3, 0xa2, 0x71, + 0x34, 0xa5, 0xa6, 0x31, 0x55, 0xaa, 0x00, 0x55, 0x34, 0xa5, 0xa6, 0x31, + 0x55, 0xaa, 0x00, 0x55, 0xff, 0xff, 0x71, 0x8c, 0x03, 0x02, 0x02, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xdf, 0xff, 0xcf, 0x7b, 0x70, 0x70, 0x80, 0x00, + 0xff, 0xff, 0x10, 0x84, 0xd5, 0xd5, 0x2a, 0x00, 0x41, 0x08, 0x7d, 0xef, + 0x25, 0x25, 0x55, 0x55, 0x62, 0x10, 0x7d, 0xef, 0x58, 0x58, 0x55, 0x55, + 0x5d, 0xef, 0x00, 0x00, 0xde, 0xde, 0x00, 0x00, 0xc3, 0x18, 0x9d, 0xef, + 0x96, 0x96, 0x00, 0x00, 0x41, 0x08, 0x38, 0xc6, 0x60, 0x60, 0x00, 0x00, + 0xff, 0xff, 0x61, 0x08, 0x78, 0x78, 0x55, 0x55, 0xa3, 0x18, 0x7d, 0xef, + 0x58, 0x58, 0x00, 0x00, 0x30, 0x84, 0x00, 0x00, 0x9c, 0x9c, 0x57, 0x55, + 0x61, 0x08, 0x7d, 0xef, 0xaa, 0xaa, 0x00, 0x00, 0xfb, 0xde, 0x41, 0x08, + 0xf2, 0xf2, 0x55, 0x55, 0x79, 0xce, 0x82, 0x10, 0x18, 0x18, 0x55, 0x55, + 0x59, 0xce, 0x82, 0x10, 0x24, 0x24, 0x55, 0x55, 0x1c, 0xe7, 0x41, 0x08, + 0xcf, 0xcf, 0x55, 0x55, 0xfb, 0xde, 0x82, 0x10, 0x61, 0x61, 0x55, 0x55, + 0xfb, 0xde, 0xa3, 0x18, 0xd2, 0xd2, 0x55, 0x55, 0x1c, 0xe7, 0xa2, 0x10, + 0x1c, 0x1c, 0x55, 0x55, 0xf7, 0xbd, 0x82, 0x10, 0x06, 0x06, 0x55, 0x55, + 0x10, 0x84, 0x62, 0x10, 0x09, 0x09, 0x55, 0x55, 0x82, 0x10, 0xfb, 0xde, + 0x6a, 0x6a, 0x40, 0x40, 0xf7, 0xbd, 0x61, 0x08, 0xa8, 0xa8, 0x54, 0x56, + 0xd7, 0xbd, 0x82, 0x10, 0x2a, 0x2a, 0x55, 0x55, 0x95, 0xad, 0x41, 0x08, + 0x33, 0x33, 0x55, 0x55, 0x30, 0x84, 0x61, 0x08, 0x82, 0x82, 0x55, 0x55, + 0x75, 0xad, 0x82, 0x10, 0xcc, 0xcc, 0x55, 0x55, 0xd6, 0xb5, 0x82, 0x10, + 0xcc, 0xcc, 0x55, 0x55, 0xf3, 0x9c, 0x82, 0x10, 0x28, 0x28, 0x55, 0x55, + 0xd7, 0xbd, 0x62, 0x10, 0x33, 0x33, 0x55, 0x55, 0x17, 0xbe, 0x82, 0x10, + 0xb3, 0xb3, 0x55, 0x55, 0x14, 0xa5, 0x61, 0x08, 0xca, 0xca, 0x55, 0x55, + 0x61, 0x08, 0x9e, 0xf7, 0xaa, 0xaa, 0x00, 0x00, 0xa2, 0xf5, 0x60, 0x10, + 0xaa, 0xaa, 0x55, 0x55, 0xa0, 0xfd, 0x60, 0x10, 0xaa, 0xaa, 0x55, 0x55, + 0xa0, 0xfd, 0x60, 0x10, 0xaa, 0xaa, 0x55, 0x55, 0xa0, 0xfd, 0x60, 0x10, + 0xaa, 0xaa, 0x55, 0x55, 0x80, 0x18, 0xe0, 0xab, 0x55, 0x55, 0x00, 0x00, + 0xe1, 0xab, 0x7c, 0xef, 0x00, 0x00, 0x56, 0x56, 0xff, 0xff, 0x00, 0xac, + 0x55, 0x55, 0xaa, 0x00, 0xff, 0xff, 0x00, 0xac, 0x55, 0x55, 0xaa, 0x00, + 0xff, 0xff, 0x00, 0xac, 0x55, 0x55, 0xaa, 0x00, 0xff, 0xff, 0x00, 0xac, + 0x55, 0x55, 0xaa, 0x00, 0xff, 0xff, 0x00, 0xac, 0x55, 0x55, 0xaa, 0x00, + 0xff, 0xff, 0x00, 0xac, 0x55, 0x55, 0xaa, 0x00, 0xff, 0xff, 0x00, 0xb4, + 0x55, 0x55, 0xaa, 0x00, 0xff, 0xff, 0x0c, 0x8c, 0x55, 0x55, 0xaa, 0x00, + 0xff, 0xff, 0x10, 0x84, 0x55, 0x55, 0xaa, 0x00, 0xff, 0xff, 0x10, 0x84, + 0xc5, 0xa5, 0x8a, 0xc0, 0x34, 0xa5, 0x86, 0x31, 0x55, 0xaa, 0x00, 0x55, + 0x34, 0xa5, 0xa6, 0x31, 0x55, 0xaa, 0x00, 0x55, 0x3c, 0xe7, 0xc7, 0x39, + 0x61, 0xc3, 0x8a, 0x4d, 0x14, 0xa5, 0x86, 0x31, 0xd5, 0x2a, 0x00, 0xd5, + 0xbe, 0xf7, 0x86, 0x31, 0x5c, 0xf8, 0xa8, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0x45, 0x29, 0xe8, 0xe8, 0xe8, 0xe8, + 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x52, 0x5a, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xfb, 0xde, 0xff, 0xff, + 0x95, 0x95, 0x95, 0x95, 0x65, 0x29, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xce, 0x40, 0x40, 0x40, 0x40, + 0x7d, 0xef, 0x00, 0x00, 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x45, 0x29, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, 0xc0, 0xc0, 0xc0, 0xc0, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x9d, 0xef, 0xe8, 0x41, 0x4d, 0xcd, 0xc5, 0x85, + 0x8a, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3d, 0x3d, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0x74, 0x74, 0xf4, 0xf4, 0x59, 0xce, 0xc7, 0x39, + 0x50, 0x58, 0x58, 0x58, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0x45, 0x29, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xfb, 0xde, 0xff, 0xff, 0x95, 0x95, 0x95, 0x95, + 0x65, 0x29, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x79, 0xce, 0x40, 0x40, 0x40, 0x40, 0x7d, 0xef, 0x00, 0x00, + 0x56, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xff, 0xcf, 0x7b, 0xc0, 0xc0, 0xc0, 0xc0, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xba, 0xd6, 0xe7, 0x39, 0x85, 0x85, 0x25, 0x25, 0x8a, 0x52, 0x86, 0x31, + 0x3d, 0x3d, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xe7, 0x39, + 0x94, 0x94, 0x94, 0x14, 0x3c, 0xe7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xfb, 0xde, 0xff, 0xff, 0x95, 0x95, 0x95, 0x95, 0x65, 0x29, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xce, + 0x40, 0x40, 0x40, 0x40, 0x7d, 0xef, 0x00, 0x00, 0x56, 0x56, 0x56, 0x56, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x45, 0x29, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, + 0xc0, 0xc0, 0xc0, 0xc0, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x39, 0xda, 0xd6, + 0x60, 0x60, 0x60, 0x60, 0x8a, 0x52, 0xe7, 0x39, 0x15, 0x17, 0x17, 0x17, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0xe7, 0x86, 0x31, + 0x25, 0x25, 0x25, 0x0a, 0x75, 0xad, 0x08, 0x42, 0x55, 0x55, 0x55, 0x00, + 0x9e, 0xf7, 0xa6, 0x31, 0x5c, 0x5c, 0x5c, 0xa8, 0x55, 0xad, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x00, 0x1b, 0xdf, 0xc7, 0x39, 0x55, 0x55, 0x55, 0xaa, + 0xff, 0xff, 0x92, 0x94, 0x03, 0x03, 0x03, 0x02, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, + 0xaa, 0xaa, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0xff, 0xaa, 0xaa, 0x00, 0x00, 0x7d, 0xef, 0xff, 0xff, + 0x15, 0x15, 0x15, 0x95, 0x71, 0x8c, 0x21, 0x08, 0x55, 0x55, 0x55, 0x00, + 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x71, 0x8c, 0x00, 0x00, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0xba, 0xd6, 0x00, 0x00, 0x15, 0x15, 0x15, 0x2a, + 0xdb, 0xde, 0x00, 0x00, 0x56, 0x56, 0x56, 0xa8, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x71, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x71, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x51, 0x8c, 0x00, 0x00, 0x00, 0x55, + 0x51, 0x8c, 0x00, 0x00, 0x55, 0x55, 0x55, 0x00, 0xff, 0xff, 0xb2, 0x94, + 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x34, 0xa5, 0xff, 0xff, 0x15, 0x15, 0x15, 0x95, + 0x1b, 0xdf, 0xa7, 0x39, 0x55, 0x55, 0x55, 0xaa, 0x55, 0xad, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x00, 0x7d, 0xef, 0xc7, 0x39, 0x35, 0x35, 0x35, 0x2a, + 0x55, 0xad, 0xe7, 0x39, 0xd5, 0xd5, 0x55, 0x00, 0xbe, 0xf7, 0xa7, 0x39, + 0x5c, 0x5c, 0x5c, 0xa8, 0xbe, 0xf7, 0xa6, 0x31, 0x2f, 0x25, 0x25, 0x25, + 0x71, 0x8c, 0xa7, 0x39, 0x00, 0xd5, 0xd7, 0xd7, 0xbe, 0xf7, 0xc7, 0x39, + 0xf8, 0x5c, 0x5c, 0x5c, 0x51, 0x8c, 0xa2, 0x10, 0x00, 0xff, 0xff, 0xff, + 0xc7, 0x39, 0xba, 0xd6, 0xaa, 0x00, 0x00, 0x00, 0x79, 0xce, 0x41, 0x08, + 0xf0, 0x58, 0x58, 0x58, 0xbe, 0xf7, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0xbe, 0xf7, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0xbe, 0xf7, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, + 0xbe, 0xf7, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0x00, 0x00, + 0xff, 0x55, 0x55, 0x55, 0x00, 0x00, 0x34, 0xa5, 0xaa, 0x00, 0x00, 0x00, + 0xb6, 0xb5, 0xc7, 0x39, 0xaa, 0x55, 0x55, 0x55, 0x71, 0x8c, 0x82, 0x10, + 0x00, 0xff, 0xff, 0xff, 0x71, 0x8c, 0x82, 0x10, 0x00, 0xff, 0xff, 0xff, + 0x71, 0x8c, 0x82, 0x10, 0x00, 0xff, 0xff, 0xff, 0x71, 0x8c, 0x82, 0x10, + 0x00, 0xff, 0xff, 0xff, 0x71, 0x8c, 0x82, 0x10, 0x00, 0xff, 0xff, 0xff, + 0x71, 0x8c, 0x82, 0x10, 0x00, 0xff, 0xff, 0xff, 0x71, 0x8c, 0x82, 0x10, + 0x00, 0xff, 0xff, 0xff, 0x71, 0x8c, 0x82, 0x10, 0x00, 0xff, 0xff, 0xff, + 0x71, 0x8c, 0x82, 0x10, 0x00, 0xff, 0xff, 0xff, 0x34, 0xa5, 0xc7, 0x39, + 0x0a, 0x95, 0xb5, 0xb5, 0xba, 0xd6, 0xef, 0x7b, 0xaa, 0x55, 0x55, 0x55, + 0xba, 0xd6, 0xef, 0x7b, 0xaa, 0x55, 0x55, 0x55, 0xba, 0xd6, 0xef, 0x7b, + 0xaa, 0x55, 0x55, 0x55, 0xba, 0xd6, 0xef, 0x7b, 0xaa, 0x55, 0x55, 0x55, + 0xef, 0x7b, 0x5d, 0xef, 0x6a, 0x40, 0x40, 0x40, 0xba, 0xd6, 0xcf, 0x7b, + 0xa8, 0x54, 0x54, 0x54, 0xba, 0xd6, 0xef, 0x7b, 0xaa, 0x55, 0x55, 0x55, + 0xba, 0xd6, 0xef, 0x7b, 0xaa, 0x55, 0x55, 0x55, 0xba, 0xd6, 0xef, 0x7b, + 0xaa, 0x55, 0x55, 0x55, 0xba, 0xd6, 0xef, 0x7b, 0xaa, 0x55, 0x55, 0x55, + 0x1c, 0xe7, 0xcf, 0x7b, 0x0a, 0xad, 0xad, 0xad, 0xbe, 0xf7, 0xf7, 0xbd, + 0xaa, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0xf7, 0xbd, 0xaa, 0x55, 0x55, 0x55, + 0xbe, 0xf7, 0xf7, 0xbd, 0xaa, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0xf7, 0xbd, + 0xaa, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0xf7, 0xbd, 0xaa, 0x55, 0x55, 0x55, + 0xbe, 0xf7, 0xf7, 0xbd, 0xaa, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0xf7, 0xbd, + 0xaa, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0xf7, 0xbd, 0xaa, 0x55, 0x55, 0x55, + 0xbe, 0xf7, 0xf7, 0xbd, 0xaa, 0x55, 0x55, 0x55, 0xb2, 0x94, 0x1c, 0xe7, + 0x55, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0x1c, 0xe7, 0x02, 0x03, 0x03, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xff, 0x34, 0xa5, 0xc0, 0x40, 0x40, 0x40, 0x30, 0x84, 0x62, 0x10, + 0x00, 0xff, 0xff, 0xff, 0x51, 0x8c, 0xa2, 0x10, 0x00, 0xff, 0xff, 0xff, + 0x7d, 0xef, 0xe7, 0x39, 0x2f, 0x35, 0x35, 0x35, 0x51, 0x8c, 0xc7, 0x39, + 0x00, 0xd5, 0xd7, 0xd5, 0xde, 0xf7, 0xc7, 0x39, 0xf8, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xe7, 0x39, + 0x14, 0x94, 0x94, 0x94, 0x3c, 0xe7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0x9a, 0xd6, 0x21, 0x08, 0x58, 0x58, 0x58, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x41, 0x08, 0x80, 0x80, 0x80, 0x80, 0x49, 0x4a, 0xc7, 0x39, + 0xfd, 0xfd, 0xfd, 0xfd, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xef, 0x7b, 0xe7, 0x39, 0x35, 0x35, 0x35, 0x35, + 0x10, 0x84, 0xef, 0x7b, 0xfe, 0xfe, 0xfe, 0xfe, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x18, 0x3c, 0xe7, + 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0x1c, 0xe7, 0xef, 0x7b, + 0xad, 0xad, 0xad, 0xad, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf7, 0xbd, 0xd7, 0xbd, 0x20, 0x20, 0x20, 0x20, + 0xff, 0xff, 0x38, 0xc6, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, + 0xc0, 0xc0, 0xc0, 0xc0, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x39, 0xda, 0xd6, + 0x60, 0x60, 0x60, 0x60, 0x8a, 0x52, 0xc7, 0x39, 0x17, 0x17, 0x17, 0x17, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0x74, 0x74, + 0x59, 0xce, 0xc7, 0x39, 0x58, 0x58, 0x58, 0x50, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0x9a, 0xd6, 0x21, 0x08, 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, + 0x80, 0x80, 0x80, 0x80, 0x49, 0x4a, 0xc7, 0x39, 0xfd, 0xfd, 0xfd, 0xfd, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xef, 0x7b, 0xe7, 0x39, 0x35, 0x35, 0x35, 0x35, 0x10, 0x84, 0xef, 0x7b, + 0xfe, 0xfe, 0xfe, 0xfe, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xc3, 0x18, 0x3c, 0xe7, 0x6a, 0x6a, 0x6a, 0x6a, + 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0x1c, 0xe7, 0xef, 0x7b, 0xad, 0xad, 0xad, 0xad, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0xf7, 0xbd, 0xd7, 0xbd, 0x20, 0x20, 0x20, 0x20, 0xff, 0xff, 0x38, 0xc6, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, 0xc0, 0xc0, 0xc0, 0xc0, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xba, 0xd6, 0xe7, 0x39, 0x25, 0x25, 0x85, 0x85, + 0x8a, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3d, 0x3d, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0xaa, 0x52, 0x86, 0x31, 0x7e, 0x7e, 0x7e, 0x7e, 0xbe, 0xf7, 0x28, 0x42, + 0x5a, 0x52, 0x53, 0x53, 0x08, 0x42, 0xc7, 0x39, 0xaa, 0xaa, 0xaa, 0xff, + 0x08, 0x42, 0xc7, 0x39, 0x7a, 0x7a, 0x7a, 0x7f, 0x79, 0xce, 0x21, 0x08, + 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0x80, 0x80, 0x80, 0x80, + 0x49, 0x4a, 0xc7, 0x39, 0xfd, 0xfd, 0xfd, 0xfd, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7b, 0xe7, 0x39, + 0x35, 0x35, 0x35, 0x35, 0x10, 0x84, 0xef, 0x7b, 0xfe, 0xfe, 0xfe, 0xfe, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0x18, 0x3c, 0xe7, 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, + 0x56, 0x56, 0x56, 0x56, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0x1c, 0xe7, 0xef, 0x7b, 0xad, 0xad, 0xad, 0xad, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0xf7, 0xbd, 0xd7, 0xbd, + 0x20, 0x20, 0x20, 0x20, 0xff, 0xff, 0x38, 0xc6, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x69, 0x4a, 0xff, 0xff, 0x95, 0x95, 0x95, 0x95, 0x86, 0x31, 0x49, 0x4a, + 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x42, 0xc7, 0x39, 0xaa, 0xaa, 0xaa, 0xff, + 0x9d, 0xef, 0xe7, 0x39, 0x85, 0xc5, 0xcd, 0x4d, 0x8a, 0x52, 0x86, 0x31, + 0x3d, 0x3d, 0x3f, 0x3f, 0xde, 0xf7, 0xc7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0x9e, 0xf7, 0x86, 0x31, 0x25, 0x0a, 0x2f, 0x25, 0x38, 0xc6, 0xe7, 0x39, + 0x55, 0x00, 0xff, 0x55, 0x7d, 0xef, 0x86, 0x31, 0x73, 0x82, 0xe3, 0x69, + 0x38, 0xc6, 0xe7, 0x39, 0x55, 0x00, 0xff, 0x55, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x00, 0xff, 0x55, 0xdb, 0xde, 0x20, 0x00, 0x58, 0x58, 0x58, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x41, 0x08, 0x80, 0x80, 0x80, 0x80, 0x49, 0x4a, 0xc7, 0x39, + 0xfd, 0xfd, 0xfd, 0xfd, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xef, 0x7b, 0xe7, 0x39, 0x35, 0x35, 0x35, 0x35, + 0x10, 0x84, 0xef, 0x7b, 0xfe, 0xfe, 0xfe, 0xfe, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x18, 0x3c, 0xe7, + 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0x1c, 0xe7, 0xef, 0x7b, + 0xad, 0xad, 0xad, 0xad, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf7, 0xbd, 0xd7, 0xbd, 0x20, 0x20, 0x20, 0x20, + 0xff, 0xff, 0x38, 0xc6, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0x14, 0xa5, + 0x40, 0x80, 0xc0, 0x40, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x00, 0xff, 0x55, + 0x38, 0xc6, 0xe7, 0x39, 0x55, 0x00, 0xff, 0x55, 0xba, 0xd6, 0xc7, 0x39, + 0x4d, 0x00, 0xc3, 0x61, 0x38, 0xc6, 0x08, 0x42, 0x55, 0x00, 0xff, 0x55, + 0x9d, 0xef, 0xa7, 0x39, 0x5c, 0xa0, 0xf8, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0x3c, 0xe7, 0xc7, 0x39, 0x49, 0xcd, 0xc5, 0x85, 0x28, 0x42, 0x86, 0x31, + 0xaa, 0xab, 0xab, 0xa9, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0x9a, 0xd6, 0x21, 0x08, 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, + 0x80, 0x80, 0x80, 0x80, 0x49, 0x4a, 0xc7, 0x39, 0xfd, 0xfd, 0xfd, 0xfd, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xef, 0x7b, 0xe7, 0x39, 0x35, 0x35, 0x35, 0x35, 0x10, 0x84, 0xef, 0x7b, + 0xfe, 0xfe, 0xfe, 0xfe, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xc3, 0x18, 0x3c, 0xe7, 0x6a, 0x6a, 0x6a, 0x6a, + 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0x1c, 0xe7, 0xef, 0x7b, 0xad, 0xad, 0xad, 0xad, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0xf7, 0xbd, 0xd7, 0xbd, 0x20, 0x20, 0x20, 0x20, 0xff, 0xff, 0x38, 0xc6, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, 0xc0, 0xc0, 0xc0, 0xc0, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0x6a, 0x6a, 0x9d, 0xef, 0x08, 0x42, 0x71, 0x53, 0x53, 0x5a, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xbe, 0xf7, 0x08, 0x42, + 0xa5, 0x35, 0x15, 0x15, 0x51, 0x8c, 0xc7, 0x39, 0x55, 0x57, 0x56, 0x54, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0x9a, 0xd6, 0x21, 0x08, + 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0x80, 0x80, 0x80, 0x80, + 0x49, 0x4a, 0xc7, 0x39, 0xfd, 0xfd, 0xfd, 0xfd, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7b, 0xe7, 0x39, + 0x35, 0x35, 0x35, 0x35, 0x10, 0x84, 0xef, 0x7b, 0xfe, 0xfe, 0xfe, 0xfe, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0x18, 0x3c, 0xe7, 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, + 0x56, 0x56, 0x56, 0x56, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0x1c, 0xe7, 0xef, 0x7b, 0xad, 0xad, 0xad, 0xad, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0xf7, 0xbd, 0xd7, 0xbd, + 0x20, 0x20, 0x20, 0x20, 0xff, 0xff, 0x38, 0xc6, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0xff, 0xff, 0xcf, 0x7b, 0xc0, 0xc0, 0xc0, 0xc0, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xf3, 0x9c, 0xc7, 0x39, 0x55, 0xd5, 0x95, 0x15, + 0x5c, 0xe7, 0xe7, 0x39, 0x58, 0x5c, 0x54, 0x54, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0x38, 0xc6, 0xe7, 0x39, 0x15, 0x95, 0xd5, 0x55, + 0x7d, 0xef, 0xe7, 0x39, 0x56, 0x54, 0x5c, 0x5c, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0x9a, 0xd6, 0x21, 0x08, 0x58, 0x58, 0x58, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x41, 0x08, 0x80, 0x80, 0x80, 0x80, 0x49, 0x4a, 0xc7, 0x39, + 0xfd, 0xfd, 0xfd, 0xfd, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xef, 0x7b, 0xe7, 0x39, 0x35, 0x35, 0x35, 0x35, + 0x10, 0x84, 0xef, 0x7b, 0xfe, 0xfe, 0xfe, 0xfe, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x18, 0x3c, 0xe7, + 0x6a, 0x6a, 0x6a, 0x6a, 0xbe, 0xf7, 0xef, 0x7b, 0x56, 0x56, 0x56, 0x56, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0x0a, 0x52, 0xff, 0xff, 0xff, 0xff, 0x1c, 0xe7, 0xef, 0x7b, + 0xad, 0xad, 0xad, 0xad, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf7, 0xbd, 0xd7, 0xbd, 0x20, 0x20, 0x20, 0x20, + 0xff, 0xff, 0x38, 0xc6, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xcf, 0x7b, + 0xc0, 0xc0, 0xc0, 0xc0, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0x1c, 0xe7, 0xe7, 0x39, 0x15, 0x15, 0x35, 0x25, 0x96, 0xb5, 0xc7, 0x39, + 0x54, 0x56, 0x57, 0x55, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0x3c, 0xe7, 0xc7, 0x39, + 0x25, 0x25, 0x25, 0x00, 0x28, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0xe8, 0x41, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x5c, 0xe7, 0xe7, 0x39, + 0x5a, 0x52, 0x73, 0x00, 0xe8, 0x41, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, + 0xff, 0xff, 0x41, 0x08, 0x5a, 0x5a, 0x5a, 0xf8, 0x00, 0x00, 0x79, 0xce, + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x79, 0xce, 0x00, 0x00, 0x00, 0xaa, + 0x00, 0x00, 0x79, 0xce, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x79, 0xce, + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x79, 0xce, 0x00, 0x00, 0x00, 0xaa, + 0x00, 0x00, 0x79, 0xce, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x61, 0xce, + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x60, 0xce, 0x00, 0x00, 0x00, 0xaa, + 0x00, 0x00, 0x60, 0xce, 0x00, 0x00, 0x00, 0xaa, 0xe0, 0x9c, 0x00, 0x00, + 0x55, 0x55, 0x55, 0xaa, 0x03, 0x84, 0xaa, 0x18, 0xff, 0xff, 0xff, 0x00, + 0x23, 0x84, 0xca, 0x18, 0xff, 0xff, 0xff, 0x00, 0x44, 0x84, 0x29, 0x3a, + 0x55, 0x55, 0x55, 0x60, 0xc3, 0x50, 0x30, 0x1c, 0xaa, 0xaa, 0xaa, 0x55, + 0xc3, 0x50, 0x30, 0x1c, 0xaa, 0xaa, 0xaa, 0x55, 0xc3, 0x50, 0x30, 0x1c, + 0xaa, 0xaa, 0xaa, 0x55, 0xc3, 0x50, 0x30, 0x1c, 0xaa, 0xaa, 0xaa, 0x55, + 0xc3, 0x50, 0x30, 0x1c, 0xaa, 0xaa, 0xaa, 0x55, 0xc3, 0x50, 0x30, 0x1c, + 0xaa, 0xaa, 0xaa, 0x55, 0xc8, 0x41, 0x48, 0x0d, 0x00, 0x00, 0x00, 0xff, + 0x8d, 0x69, 0x64, 0x24, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0xab, 0x26, 0x35, + 0xaa, 0xaa, 0xaa, 0x55, 0x26, 0x35, 0xb9, 0xca, 0xaa, 0xaa, 0xaa, 0x00, + 0x26, 0x35, 0xb9, 0xca, 0xaa, 0xaa, 0xaa, 0x00, 0x26, 0x35, 0xb9, 0xca, + 0xaa, 0xaa, 0xaa, 0x00, 0x9d, 0xee, 0xe7, 0x3b, 0x3f, 0x3f, 0x3f, 0xd5, + 0xb7, 0xbe, 0x30, 0x82, 0xfc, 0xfc, 0xfc, 0x57, 0xd4, 0xa1, 0x2d, 0x6d, + 0xff, 0xff, 0xff, 0x00, 0xd4, 0xa1, 0x2d, 0x6d, 0xff, 0xff, 0xff, 0x00, + 0xd4, 0xa1, 0x2d, 0x6d, 0xff, 0xff, 0xff, 0x00, 0xd4, 0xa1, 0x2d, 0x6d, + 0xff, 0xff, 0xff, 0x00, 0x36, 0xb6, 0x73, 0x9a, 0x0b, 0x0b, 0x0b, 0x55, + 0xd9, 0xbf, 0x74, 0xba, 0xaa, 0xaa, 0xaa, 0x55, 0xde, 0xbf, 0x69, 0xba, + 0xaa, 0xaa, 0xaa, 0x55, 0xde, 0xbf, 0x69, 0xba, 0xaa, 0xaa, 0xaa, 0x55, + 0xde, 0xbf, 0x69, 0xba, 0xaa, 0xaa, 0xaa, 0x55, 0xde, 0xbf, 0x69, 0xba, + 0xaa, 0xaa, 0xaa, 0x55, 0xde, 0xbf, 0x69, 0xba, 0xaa, 0xaa, 0xaa, 0x55, + 0xde, 0xbf, 0x69, 0xba, 0xaa, 0xaa, 0xaa, 0x55, 0x17, 0xc6, 0x33, 0x6a, + 0x00, 0x00, 0x00, 0x57, 0xd7, 0xf7, 0x77, 0x4a, 0xaa, 0xaa, 0xaa, 0x55, + 0xd7, 0xf7, 0x77, 0x4a, 0xaa, 0xaa, 0xaa, 0x55, 0xbe, 0xf7, 0xf8, 0x20, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x18, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xf8, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x18, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe5, 0x18, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xe3, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe3, 0x18, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe3, 0x18, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xe3, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe3, 0x18, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x8e, 0x73, 0xc0, 0xc0, 0xc0, 0x25, + 0xe7, 0x39, 0x9a, 0xd6, 0x00, 0x00, 0x00, 0x55, 0xdf, 0xff, 0x29, 0x4a, + 0xa5, 0xc5, 0x4d, 0x82, 0xba, 0xd6, 0xe7, 0x39, 0x55, 0x55, 0x55, 0x00, + 0x9a, 0xd6, 0x08, 0x42, 0x55, 0x55, 0xd5, 0x00, 0xdf, 0xff, 0x08, 0x42, + 0x5c, 0x5c, 0x5c, 0xa0, 0xe7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0xcb, 0x5a, 0xe7, 0x39, 0xa8, 0x57, 0x57, 0x57, 0xcb, 0x5a, 0xe7, 0x39, + 0x02, 0x55, 0x55, 0x55, 0xfb, 0xde, 0x86, 0x31, 0xcb, 0xcd, 0x85, 0x25, + 0x69, 0x4a, 0xa6, 0x31, 0x00, 0x7d, 0xfd, 0xfe, 0x7d, 0xef, 0xd7, 0xbd, + 0xf1, 0x51, 0x51, 0x51, 0xf7, 0xbd, 0xba, 0xd6, 0xaa, 0x00, 0x00, 0x00, + 0xf7, 0xbd, 0xba, 0xd6, 0xaa, 0x00, 0x00, 0x00, 0xf7, 0xbd, 0xba, 0xd6, + 0xaa, 0x00, 0x00, 0x00, 0xf7, 0xbd, 0xba, 0xd6, 0xaa, 0x00, 0x00, 0x00, + 0xf7, 0xbd, 0xba, 0xd6, 0xaa, 0x00, 0x00, 0x00, 0xf7, 0xbd, 0xba, 0xd6, + 0xaa, 0x00, 0x00, 0x00, 0xa1, 0xd6, 0x81, 0xb5, 0xaa, 0xff, 0xff, 0xff, + 0xa0, 0xd6, 0x80, 0xb5, 0xaa, 0xff, 0xff, 0xff, 0xa0, 0xd6, 0x80, 0xb5, + 0xaa, 0xff, 0xff, 0xff, 0xa0, 0xd6, 0x80, 0xb5, 0xaa, 0xff, 0xff, 0xff, + 0x20, 0xc6, 0xc0, 0xbd, 0x00, 0xff, 0xff, 0xff, 0x20, 0xc6, 0xc0, 0xbd, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xc6, 0x17, 0x06, 0x60, 0x60, 0x60, 0x60, + 0x38, 0x06, 0xd7, 0x05, 0x00, 0xff, 0xff, 0xff, 0x38, 0x06, 0xd7, 0x05, + 0x00, 0xff, 0xff, 0xff, 0x38, 0x06, 0xd7, 0x05, 0x00, 0xff, 0xff, 0xff, + 0x38, 0x06, 0xd7, 0x05, 0x00, 0xff, 0xff, 0xff, 0x38, 0x06, 0xd7, 0x05, + 0x00, 0xff, 0xff, 0xff, 0x38, 0x06, 0xd7, 0x05, 0x00, 0xff, 0xff, 0xff, + 0x00, 0x06, 0x19, 0x06, 0x09, 0x09, 0x09, 0x09, 0x20, 0x06, 0xe0, 0x05, + 0x80, 0x55, 0x55, 0x55, 0x00, 0x06, 0xe0, 0x05, 0x00, 0xff, 0xff, 0xff, + 0x00, 0x06, 0xe0, 0x05, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0xe0, 0x05, + 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0xe0, 0x05, 0x00, 0xff, 0xff, 0xff, + 0x42, 0x15, 0x00, 0x06, 0x95, 0x95, 0x95, 0x95, 0x18, 0xc0, 0x76, 0xb0, + 0x01, 0xa1, 0xa1, 0xa1, 0x18, 0xc0, 0x17, 0xb8, 0xaa, 0xff, 0xff, 0xff, + 0x18, 0xc0, 0x17, 0xb8, 0xaa, 0xff, 0xff, 0xff, 0x18, 0xc0, 0x17, 0xb8, + 0xaa, 0xff, 0xff, 0xff, 0x18, 0xc0, 0x17, 0xb8, 0xaa, 0xff, 0xff, 0xff, + 0x18, 0xc0, 0x17, 0xb8, 0xfe, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, + 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x16, 0x00, 0xff, 0xaa, 0xaa, 0xaa, + 0x18, 0x00, 0x16, 0x00, 0xff, 0xaa, 0xaa, 0xaa, 0x18, 0x00, 0x16, 0x00, + 0xff, 0xaa, 0xaa, 0xaa, 0x18, 0x00, 0x17, 0x00, 0x55, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x0d, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf7, 0xbd, 0x50, 0x50, 0x50, 0x50, 0x8a, 0x52, 0x86, 0x31, + 0x82, 0x7d, 0x7d, 0x3d, 0x5d, 0xef, 0xe7, 0x39, 0x63, 0x53, 0x5a, 0x5c, + 0x0c, 0x63, 0x65, 0x29, 0xaa, 0xff, 0xff, 0xff, 0x2c, 0x63, 0x45, 0x29, + 0x2a, 0xbf, 0xbf, 0xbf, 0xde, 0xf7, 0x08, 0x42, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x9e, 0xf7, 0xe8, 0x41, 0x15, 0x95, 0xd5, 0x55, 0x5d, 0xef, 0xe7, 0x39, + 0x57, 0x56, 0x54, 0x5c, 0x7d, 0xef, 0x14, 0xa5, 0xf3, 0xf3, 0xf3, 0xf3, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf9, 0xbd, 0xf4, 0xbd, 0xea, 0xea, 0xea, 0xea, + 0xe0, 0xbd, 0xe3, 0xbd, 0x02, 0x02, 0x02, 0x02, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, + 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, + 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, + 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, 0x00, 0x00, 0x0d, 0x00, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbd, + 0x50, 0x50, 0x50, 0x50, 0xda, 0xd6, 0xc7, 0x39, 0xd5, 0x15, 0x35, 0x25, + 0x3c, 0xe7, 0xe7, 0x39, 0x54, 0x56, 0x57, 0x55, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xa6, 0x31, + 0x6a, 0xea, 0xaa, 0xaa, 0xfb, 0xde, 0xc7, 0x39, 0x52, 0x73, 0x61, 0x4d, + 0x7d, 0xef, 0xeb, 0x5a, 0xa2, 0xa2, 0xa2, 0xa2, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0xf9, 0xbd, 0xf4, 0xbd, 0xea, 0xea, 0xea, 0xea, 0xe0, 0xbd, 0xe3, 0xbd, + 0x02, 0x02, 0x02, 0x02, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, + 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, + 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, + 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, + 0xef, 0xef, 0xef, 0xef, 0x00, 0x00, 0x0d, 0x00, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xbd, 0x50, 0x50, 0x50, 0x50, + 0x5c, 0xe7, 0xa6, 0x31, 0x85, 0x4d, 0x69, 0x73, 0x08, 0x42, 0xa6, 0x31, + 0xa9, 0xab, 0xaa, 0xaa, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xa7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0x56, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xe7, 0x39, 0x1c, 0xe7, 0x90, 0x60, 0x40, 0x80, 0xff, 0xff, 0xd7, 0xbd, + 0x59, 0x5b, 0x58, 0x58, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0xf9, 0xbd, 0xf4, 0xbd, + 0xea, 0xea, 0xea, 0xea, 0xe5, 0xbd, 0xe0, 0xbd, 0x57, 0x57, 0x57, 0x57, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, + 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, + 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, + 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, + 0x00, 0x00, 0x0d, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x21, 0x08, 0xa5, 0xa5, 0x25, 0x25, 0xc7, 0x39, 0xdb, 0xde, + 0x06, 0x09, 0x01, 0x02, 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x28, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xc7, 0x39, + 0x1f, 0x1f, 0x1f, 0x15, 0xde, 0xf7, 0xc7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0xe7, 0x66, 0x31, 0x2f, 0x0a, 0x25, 0x25, 0x55, 0xad, 0xe8, 0x41, + 0xff, 0x00, 0x55, 0x55, 0x54, 0xa5, 0xe7, 0x39, 0xff, 0x00, 0x55, 0x55, + 0x34, 0xa5, 0x00, 0x00, 0xaa, 0x00, 0xff, 0xff, 0xfb, 0xde, 0xc7, 0x39, + 0xbf, 0xaa, 0x55, 0x55, 0xff, 0xff, 0xd7, 0xbd, 0x58, 0x5a, 0x71, 0x61, + 0xf7, 0xbd, 0xd7, 0xbd, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf9, 0xbd, 0xf4, 0xbd, 0xea, 0xea, 0xea, 0xea, + 0xe5, 0xbd, 0xe0, 0xbd, 0x57, 0x57, 0x57, 0x57, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, + 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, + 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, + 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, 0x00, 0x00, 0x0d, 0x00, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xef, 0x41, 0x08, + 0x25, 0x05, 0x8d, 0x81, 0x34, 0xa5, 0x00, 0x00, 0xa8, 0x00, 0xff, 0xff, + 0x34, 0xa5, 0x00, 0x00, 0xaa, 0x00, 0xff, 0xff, 0x54, 0xa5, 0xe7, 0x39, + 0xff, 0x00, 0x55, 0x55, 0x34, 0xa5, 0xc7, 0x39, 0xbf, 0x00, 0xd5, 0xd5, + 0x9e, 0xf7, 0x86, 0x31, 0xf8, 0xa8, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0x9e, 0xf7, 0xf3, 0x9c, 0x83, 0x23, 0x33, 0xb3, 0xbe, 0xf7, 0xf7, 0xbd, + 0x55, 0x55, 0x56, 0x5c, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0xf9, 0xbd, 0xf4, 0xbd, 0xea, 0xea, 0xea, 0xea, 0xe5, 0xbd, 0xe0, 0xbd, + 0x57, 0x57, 0x57, 0x57, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, + 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, + 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, + 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, + 0xef, 0xef, 0xef, 0xef, 0x13, 0x00, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xef, 0x41, 0x08, + 0x55, 0x55, 0x95, 0x35, 0x7d, 0xef, 0xc3, 0x18, 0x83, 0x8c, 0x86, 0x85, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0x7d, 0xef, 0xaa, 0x52, + 0xa2, 0xa2, 0xa2, 0xa2, 0xde, 0xf7, 0xf7, 0xbd, 0x5a, 0x71, 0x4d, 0xa5, + 0xf7, 0xbd, 0x96, 0xb5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0xf8, 0xbd, 0xf6, 0xbd, + 0x6a, 0x6a, 0x6a, 0x6a, 0xe5, 0xbd, 0xe0, 0xbd, 0x57, 0x57, 0x57, 0x57, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, + 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, + 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, + 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, + 0x13, 0x00, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfb, 0xde, 0x82, 0x10, 0x85, 0x4d, 0x71, 0x5a, + 0x1c, 0xe7, 0x41, 0x08, 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0x51, 0x8c, 0x7d, 0xef, 0xa6, 0xa6, 0xa6, 0xa6, + 0xf7, 0xbd, 0xbe, 0xf7, 0x40, 0x80, 0x00, 0x00, 0x9d, 0xef, 0xd7, 0xbd, + 0x57, 0x54, 0x58, 0x73, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf8, 0xbd, 0xf6, 0xbd, 0x6a, 0x6a, 0x6a, 0x6a, + 0xe0, 0xbd, 0xe2, 0xbd, 0x01, 0x01, 0x01, 0x01, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, + 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, + 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, + 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, 0x13, 0x00, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9a, 0xd6, 0x61, 0x08, 0xd5, 0x15, 0x25, 0x4d, + 0x41, 0x08, 0x1b, 0xdf, 0x01, 0x02, 0x00, 0x00, 0xfb, 0xde, 0x41, 0x08, + 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xfb, 0xde, 0x65, 0x29, + 0x25, 0x25, 0x0a, 0x0a, 0xba, 0xd6, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, + 0x9a, 0xd6, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, 0x9a, 0xd6, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0xf3, 0x9c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x7d, 0xef, 0xd7, 0xbd, 0x51, 0x51, 0x52, 0x52, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xbe, 0xf7, 0xf7, 0xbd, 0x4d, 0xa5, 0x15, 0xd5, + 0xbe, 0xf7, 0xf7, 0xbd, 0x55, 0x55, 0x57, 0x5c, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0xf8, 0xbd, 0xf6, 0xbd, 0x6a, 0x6a, 0x6a, 0x6a, 0xe3, 0xbd, 0xe0, 0xbd, + 0x56, 0x56, 0x56, 0x56, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, + 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, + 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, + 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, + 0xef, 0xef, 0xef, 0xef, 0x13, 0x00, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0xe7, 0x00, 0x00, 0x55, 0x55, 0xd5, 0x35, + 0x3c, 0xe7, 0x61, 0x08, 0x71, 0x5a, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xda, 0xd6, 0x21, 0x08, 0x85, 0x85, 0x05, 0x05, + 0xf3, 0x9c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x9a, 0xd6, 0xc7, 0x39, + 0x55, 0x55, 0xaa, 0xaa, 0x9a, 0xd6, 0xc7, 0x39, 0x55, 0x55, 0xaa, 0xaa, + 0x14, 0xa5, 0xa6, 0x31, 0xd5, 0xd5, 0x00, 0x00, 0x9d, 0xef, 0x86, 0x31, + 0x5c, 0x5c, 0xa8, 0xa8, 0xa6, 0x31, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x86, 0x31, 0x49, 0x4a, 0x02, 0xa9, 0xa9, 0xa9, 0x49, 0x4a, 0x45, 0x29, + 0xff, 0xaa, 0xaa, 0xaa, 0x49, 0x4a, 0x45, 0x29, 0xff, 0xaa, 0xaa, 0xaa, + 0x28, 0x42, 0x86, 0x31, 0x55, 0xea, 0xea, 0xea, 0x7d, 0xef, 0x8a, 0x52, + 0xa2, 0xa2, 0xa2, 0xa2, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0xf7, 0xbd, 0x96, 0xb5, 0x80, 0x00, 0x00, 0x00, 0xbe, 0xf7, 0xf7, 0xbd, + 0x52, 0x61, 0xc5, 0x35, 0x55, 0xad, 0x79, 0xce, 0xaa, 0xaa, 0xaa, 0xa9, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0xf8, 0xbd, 0xf6, 0xbd, + 0x6a, 0x6a, 0x6a, 0x6a, 0xe0, 0xbd, 0xe4, 0xbd, 0x02, 0x02, 0x02, 0x02, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, + 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, + 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, + 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, + 0x13, 0x00, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xa5, 0x00, 0x00, 0x00, 0x80, + 0xf7, 0xbd, 0x20, 0x00, 0x85, 0x41, 0x52, 0x5c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd7, 0xbd, 0x50, 0x50, 0x50, 0x50, 0x49, 0x4a, 0x45, 0x29, + 0xfd, 0xab, 0xab, 0xab, 0x49, 0x4a, 0x45, 0x29, 0xff, 0xaa, 0xaa, 0xaa, + 0x49, 0x4a, 0x45, 0x29, 0xff, 0xaa, 0xaa, 0xaa, 0xaa, 0x52, 0x86, 0x31, + 0x95, 0x3f, 0x3f, 0x3f, 0xbe, 0xf7, 0xa7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0x7d, 0xef, 0xaa, 0x52, 0xa2, 0xa2, 0xa2, 0xa2, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xba, 0xd6, 0x51, 0x8c, 0x2a, 0xaa, 0xaa, 0xaa, + 0x7d, 0xef, 0xf7, 0xbd, 0x5c, 0x52, 0x41, 0x05, 0xf7, 0xbd, 0xd7, 0xbd, + 0x00, 0x00, 0x03, 0x0e, 0xf8, 0xbd, 0xf6, 0xbd, 0x6a, 0x6a, 0x6a, 0x6a, + 0xe3, 0xbd, 0xe0, 0xbd, 0x56, 0x56, 0x56, 0x56, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, + 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, + 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, + 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x00, 0xc8, 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x00, 0x17, 0x00, 0xef, 0xef, 0xef, 0xef, 0x13, 0x00, 0x00, 0x00, + 0x57, 0x57, 0x57, 0x57, 0xc3, 0x18, 0x00, 0x00, 0x55, 0x55, 0x55, 0xd5, + 0x79, 0xce, 0x61, 0x08, 0x35, 0xc5, 0x61, 0x58, 0xba, 0xd6, 0x00, 0x00, + 0x57, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbd, + 0x50, 0x50, 0x50, 0x50, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0x7d, 0xef, 0xaa, 0x52, 0xa2, 0xa2, 0xa2, 0xa2, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x51, 0x8c, 0x9d, 0xef, + 0x6a, 0xaa, 0xaa, 0xaa, 0xbe, 0xf7, 0xf7, 0xbd, 0x56, 0x58, 0x61, 0x05, + 0xf8, 0xbd, 0xf6, 0xbd, 0x6a, 0x6a, 0x6b, 0x6e, 0xe7, 0xbd, 0xe0, 0xbd, + 0x57, 0x57, 0x57, 0x57, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xf7, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, + 0x60, 0x60, 0x60, 0x60, 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, + 0x17, 0xb8, 0x33, 0x99, 0x02, 0x02, 0x02, 0x02, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x01, 0xb8, 0x17, 0xb8, 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc8, + 0x09, 0x09, 0x09, 0x09, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, + 0xef, 0xef, 0xef, 0xef, 0x13, 0x00, 0x00, 0x00, 0x57, 0x57, 0x57, 0x57, + 0xb6, 0xb5, 0x41, 0x08, 0x15, 0x25, 0x41, 0x50, 0x20, 0x00, 0xb6, 0xb5, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xbd, 0x50, 0x50, 0x50, 0x50, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xa7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0x56, 0xc7, 0x39, 0x08, 0x42, + 0xaa, 0xaa, 0xaa, 0x00, 0xc7, 0x39, 0x08, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0x08, 0x42, 0xa6, 0x31, 0xea, 0xea, 0xea, 0x7f, 0x7d, 0xef, 0xaa, 0x52, + 0xa2, 0xa2, 0xa2, 0xa2, 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, + 0x00, 0x00, 0xf7, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xf7, 0xbd, + 0x55, 0x55, 0x55, 0x55, 0xf7, 0xbd, 0xd7, 0xbd, 0x00, 0x00, 0x00, 0xa0, + 0xf7, 0xbd, 0x9d, 0xef, 0x40, 0x00, 0x00, 0x00, 0x9d, 0xf7, 0x34, 0xa5, + 0xfc, 0xf0, 0xc3, 0x0f, 0x26, 0xc6, 0xe0, 0xbd, 0x57, 0x57, 0x57, 0x56, + 0x00, 0xc6, 0xe0, 0xbd, 0x55, 0x55, 0x55, 0xff, 0x00, 0xc6, 0xe0, 0xbd, + 0xff, 0xff, 0xff, 0xfd, 0x00, 0xc6, 0xe0, 0xbd, 0x55, 0x55, 0x55, 0xff, + 0x00, 0xc6, 0xe0, 0xbd, 0x55, 0x55, 0x55, 0x57, 0xc0, 0xf7, 0x00, 0xa5, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xc5, 0xf7, 0x05, 0x60, 0x60, 0x60, 0x60, + 0xf8, 0x05, 0xf7, 0x05, 0xfe, 0xfe, 0xfe, 0xfe, 0xde, 0x07, 0x14, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0x17, 0x06, 0xf7, 0x05, 0xff, 0xff, 0xff, 0x7f, 0x17, 0x06, 0xf7, 0x05, + 0xff, 0xff, 0xff, 0xfd, 0xde, 0x07, 0x14, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0xf9, 0x05, 0x09, 0x09, 0x09, 0x09, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xc0, 0x05, 0x00, 0x00, 0x00, 0x20, + 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0x05, 0x23, 0x1d, 0x80, 0x80, 0x80, 0x80, 0x17, 0xb8, 0x95, 0xa8, + 0x03, 0x03, 0x03, 0x03, 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0xf0, 0x14, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x17, 0xb8, 0x17, 0xb8, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0xf0, 0x14, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x01, 0xb8, 0x17, 0xb8, + 0x15, 0x15, 0x15, 0x15, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xc0, 0x00, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xb8, 0x00, 0xb8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xf0, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0x00, 0xa0, + 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0xc0, 0x09, 0x09, 0x09, 0x09, + 0x1e, 0x00, 0x14, 0x00, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x17, 0x00, + 0x55, 0x55, 0x55, 0xd5, 0x18, 0x00, 0x17, 0x00, 0x55, 0x55, 0x55, 0xff, + 0x18, 0x00, 0x17, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x18, 0x00, 0x17, 0x00, + 0x55, 0x55, 0x55, 0xff, 0x18, 0x00, 0x17, 0x00, 0xff, 0xff, 0x7f, 0x7f, + 0x38, 0xc6, 0x44, 0x08, 0x95, 0x25, 0x49, 0x52, 0x21, 0x08, 0x96, 0xb5, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf7, 0xbd, 0x50, 0x50, 0x50, 0x50, 0x28, 0x42, 0x86, 0x31, + 0xa9, 0xa9, 0xa9, 0xfd, 0xc7, 0x39, 0x08, 0x42, 0xaa, 0xaa, 0xaa, 0x00, + 0xc7, 0x39, 0x08, 0x42, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x1f, 0xde, 0xf7, 0xc7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0x9d, 0xef, 0xa6, 0x31, 0x0a, 0x2f, 0x25, 0x25, 0xd7, 0xbd, 0x00, 0x00, + 0x00, 0xaa, 0xff, 0xff, 0xe7, 0x39, 0xd7, 0xbd, 0x55, 0xaa, 0x00, 0x00, + 0xe7, 0x39, 0xd7, 0xbd, 0x55, 0xaa, 0x00, 0x00, 0xde, 0xf7, 0xc7, 0x39, + 0xaa, 0xff, 0x55, 0x55, 0x7d, 0xef, 0xc7, 0x39, 0x00, 0xf8, 0x5a, 0x5a, + 0x3c, 0xe7, 0xe7, 0x39, 0x00, 0xff, 0x55, 0x55, 0x3c, 0xe7, 0xe7, 0x39, + 0x00, 0xff, 0x55, 0x55, 0x3c, 0xe7, 0xe7, 0x39, 0x00, 0xff, 0x55, 0x55, + 0xfb, 0xde, 0xc7, 0x39, 0x00, 0x8f, 0x85, 0x85, 0x3c, 0xe7, 0xa7, 0x39, + 0x00, 0xff, 0x55, 0x55, 0x7d, 0xef, 0xc7, 0x39, 0x00, 0xff, 0x55, 0x55, + 0x9a, 0xef, 0xe8, 0x39, 0x00, 0xe2, 0xcd, 0x35, 0x58, 0xe7, 0xc8, 0x39, + 0x00, 0xff, 0x55, 0x56, 0x7a, 0xef, 0x87, 0x31, 0x00, 0xf8, 0x58, 0x58, + 0x56, 0xef, 0xc8, 0x39, 0x00, 0xff, 0x55, 0x55, 0x55, 0xe7, 0xc8, 0x39, + 0x00, 0xff, 0x55, 0x55, 0x55, 0xe7, 0xe8, 0x39, 0x00, 0xff, 0x55, 0x55, + 0x39, 0xdf, 0x26, 0x29, 0x00, 0x8b, 0xcd, 0xcd, 0x3c, 0xaf, 0xc7, 0x41, + 0x00, 0xff, 0x55, 0x55, 0x5c, 0xaf, 0xe7, 0x41, 0x00, 0xff, 0x55, 0x55, + 0x5c, 0xaf, 0xe7, 0x41, 0x00, 0xff, 0x55, 0x55, 0x5c, 0xb7, 0xc7, 0x41, + 0x00, 0xbf, 0xd5, 0xd5, 0x3c, 0xc7, 0xe7, 0x41, 0x00, 0xfc, 0x54, 0x54, + 0x5c, 0xaf, 0xe7, 0x41, 0x00, 0xff, 0x55, 0x55, 0x37, 0xa7, 0xe8, 0x49, + 0x00, 0xff, 0x55, 0x55, 0xa8, 0x41, 0xf4, 0xa6, 0x55, 0xaa, 0x00, 0x00, + 0xd8, 0xc6, 0xa7, 0x39, 0x00, 0xc3, 0x49, 0x49, 0xa7, 0x39, 0xd5, 0xae, + 0x55, 0xaa, 0x00, 0x00, 0xa8, 0x41, 0xf4, 0xa6, 0x55, 0xaa, 0x00, 0x00, + 0xa8, 0x41, 0xf4, 0xa6, 0x55, 0xaa, 0x00, 0x00, 0xa7, 0x39, 0xf7, 0xbe, + 0x55, 0x6a, 0x40, 0x40, 0xc6, 0x31, 0x99, 0xcd, 0x55, 0xa9, 0x01, 0x01, + 0xe6, 0x31, 0x3b, 0xdd, 0x55, 0xaa, 0x00, 0x00, 0xe6, 0x31, 0x3b, 0xdd, + 0x55, 0xaa, 0x00, 0x00, 0xe6, 0x31, 0x5b, 0xdd, 0x55, 0xaa, 0x00, 0x00, + 0xc6, 0x31, 0x1a, 0xd6, 0x55, 0x96, 0x24, 0x24, 0xe6, 0x31, 0x3b, 0xdd, + 0x55, 0xaa, 0x00, 0x00, 0x07, 0x32, 0x3a, 0xdd, 0x55, 0xaa, 0x00, 0x00, + 0xe8, 0x31, 0x34, 0xdd, 0x55, 0xaa, 0x00, 0x00, 0x5d, 0xff, 0xe8, 0x41, + 0xaa, 0x3f, 0x15, 0x15, 0xe7, 0x31, 0x55, 0xc5, 0x55, 0xa9, 0x02, 0x02, + 0xe8, 0x31, 0x34, 0xdd, 0x55, 0xaa, 0x00, 0x00, 0xe8, 0x31, 0x34, 0xdd, + 0x55, 0xaa, 0x00, 0x00, 0xc7, 0x31, 0x55, 0xdd, 0x55, 0xaa, 0x00, 0x00, + 0x5f, 0xf7, 0x08, 0x42, 0xaa, 0xf2, 0x53, 0x53, 0x3a, 0xa5, 0xc6, 0x39, + 0x00, 0xaa, 0x55, 0x55, 0xe6, 0x39, 0x7c, 0xad, 0x55, 0xaa, 0x00, 0x00, + 0xe6, 0x39, 0x9c, 0xb5, 0x55, 0xaa, 0x00, 0x00, 0x3e, 0xe7, 0xc7, 0x39, + 0xaa, 0x2f, 0x25, 0x25, 0xc6, 0x39, 0xdb, 0xbd, 0x55, 0xaa, 0x00, 0x80, + 0x9f, 0xf7, 0x86, 0x31, 0xaa, 0x8b, 0x7b, 0x5e, 0x5d, 0xef, 0xe7, 0x39, + 0xa8, 0xff, 0x55, 0x55, 0x14, 0xa5, 0xa6, 0x31, 0x00, 0xaa, 0x55, 0x55, + 0xba, 0xd6, 0xe7, 0x39, 0xaa, 0xf0, 0x52, 0x52, 0x14, 0xa5, 0xc7, 0x39, + 0x00, 0xaa, 0x55, 0x55, 0x14, 0xa5, 0xc7, 0x39, 0x00, 0xaa, 0x55, 0x55, + 0x14, 0xa5, 0xc7, 0x39, 0x00, 0xaa, 0x55, 0x55, 0xfb, 0xde, 0xe7, 0x39, + 0x0a, 0x0f, 0x85, 0x85, 0xde, 0xf7, 0xc7, 0x39, 0xaa, 0xff, 0x55, 0x55, + 0xe7, 0x39, 0xd7, 0xbd, 0x55, 0xaa, 0x00, 0x00, 0xe7, 0x39, 0xd7, 0xbd, + 0x55, 0xaa, 0x00, 0x00, 0xd7, 0xbd, 0x20, 0x00, 0x00, 0xaa, 0xff, 0xff, + 0xde, 0xf7, 0xc7, 0x39, 0xa8, 0xf8, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xdb, 0xde, + 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0xa6, 0x31, + 0x1f, 0x7f, 0xff, 0xff, 0x3c, 0xe7, 0xe7, 0x39, 0x58, 0xc9, 0x25, 0xd5, + 0xc7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x45, 0x29, + 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, 0xa8, 0xa8, 0xa8, 0xa8, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x34, 0xa5, 0xc7, 0x39, 0x95, 0x95, 0x95, 0x95, + 0x08, 0x42, 0x1c, 0xe7, 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xba, 0xd6, 0xc7, 0x39, + 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xe7, 0x39, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, + 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0xea, 0xe7, 0x39, 0xfb, 0xde, + 0x24, 0x24, 0x24, 0x24, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, + 0x96, 0xb5, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, 0xbe, 0xf7, 0x28, 0x42, + 0x53, 0x53, 0x53, 0x53, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x5c, 0xe7, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x25, + 0x17, 0xbe, 0xe7, 0x39, 0x25, 0x61, 0x58, 0x57, 0x49, 0x4a, 0x65, 0x29, + 0xac, 0xab, 0xaa, 0xaa, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, 0xba, 0xd6, 0xe7, 0x39, + 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, 0x85, 0x85, 0x85, 0x85, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, + 0x5a, 0x5a, 0x5a, 0x5a, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x49, 0x4a, 0xc7, 0x39, 0x9f, 0x1f, 0x1f, 0x1f, 0x7d, 0xef, 0x65, 0x29, + 0xc0, 0x38, 0xd8, 0x58, 0xdb, 0xde, 0xc7, 0x39, 0x55, 0x56, 0x70, 0x89, + 0x28, 0x42, 0xa6, 0x31, 0xaa, 0xaa, 0xab, 0xa4, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, + 0xc7, 0x39, 0x28, 0x42, 0xa8, 0xa8, 0xa8, 0xa8, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x34, 0xa5, 0xc7, 0x39, 0x95, 0x95, 0x95, 0x95, 0x08, 0x42, 0x1c, 0xe7, + 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xba, 0xd6, 0xc7, 0x39, 0x49, 0x49, 0x49, 0x49, + 0x08, 0x42, 0xc7, 0x39, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xe7, 0x39, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, + 0x01, 0x01, 0x01, 0x01, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xc7, 0x39, + 0xea, 0xea, 0xea, 0xea, 0xe7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, 0x96, 0xb5, 0x00, 0x00, + 0xfe, 0xfe, 0xfe, 0xfe, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0x65, 0x29, + 0xea, 0xea, 0xea, 0xea, 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x39, 0x28, 0x42, + 0xaa, 0xaa, 0xaa, 0x0a, 0xe7, 0x39, 0x18, 0xc6, 0x00, 0x80, 0x50, 0x26, + 0x1c, 0xe7, 0xc7, 0x39, 0x09, 0x2c, 0x27, 0x25, 0x08, 0x42, 0xc7, 0x39, + 0xaf, 0xac, 0xac, 0xac, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, + 0x2a, 0x2a, 0x2a, 0x2a, 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xde, 0xe8, 0x41, 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, + 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0xc7, 0x39, + 0x1f, 0x1f, 0x1f, 0x1f, 0xc7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, + 0xb6, 0xb5, 0xc7, 0x39, 0x35, 0x55, 0x55, 0x55, 0x3c, 0xe7, 0xe8, 0x41, + 0x5c, 0x63, 0x25, 0xd5, 0x1c, 0xe7, 0xe7, 0x39, 0x55, 0x55, 0x56, 0x72, + 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, + 0xa8, 0xa8, 0xa8, 0xa8, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x34, 0xa5, 0xc7, 0x39, + 0x95, 0x95, 0x95, 0x95, 0x08, 0x42, 0x1c, 0xe7, 0x01, 0x01, 0x01, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xba, 0xd6, 0xc7, 0x39, 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x39, 0xdb, 0xde, + 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0xea, + 0xe7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0x9e, 0xf7, + 0x40, 0x40, 0x40, 0x40, 0x96, 0xb5, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, + 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, 0x96, 0xb5, 0xc7, 0x39, + 0x55, 0x55, 0x95, 0x0d, 0x38, 0xc6, 0xe7, 0x39, 0x35, 0xc9, 0x58, 0x57, + 0x55, 0xad, 0xc7, 0x39, 0x5c, 0x55, 0x55, 0x55, 0x1b, 0xdf, 0xc7, 0x39, + 0x25, 0x25, 0x25, 0x25, 0x08, 0x42, 0xc7, 0x39, 0xac, 0xac, 0xac, 0xac, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, + 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, + 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0x9d, 0xef, 0x08, 0x42, + 0x25, 0x25, 0x0a, 0x25, 0x18, 0xc6, 0xe7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0xf7, 0xbd, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0xde, 0xf7, 0x29, 0x4a, 0x5a, 0x5a, 0xa0, 0x5a, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x49, 0x4a, 0xdb, 0xde, + 0x90, 0x90, 0x55, 0x90, 0x18, 0xc6, 0xe7, 0x39, 0x55, 0x55, 0x00, 0xfd, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xe7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x9d, 0xef, 0x08, 0x42, 0x58, 0x58, 0xa0, 0x58, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x38, 0xc6, 0xc7, 0x39, 0x0d, 0x95, 0x00, 0xff, 0x0c, 0x63, 0x7d, 0xef, + 0x10, 0x15, 0x55, 0x90, 0xff, 0xff, 0x28, 0x42, 0x55, 0x55, 0xaa, 0x70, + 0xf7, 0xbd, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x59, 0xce, 0x00, 0x00, 0xbf, 0xbf, 0x00, 0xbf, + 0x9d, 0xef, 0x69, 0x4a, 0x54, 0x54, 0xa8, 0x54, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0xda, 0xd6, 0x08, 0x42, + 0x49, 0x49, 0x00, 0x49, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x5d, 0xef, 0x49, 0x4a, 0x15, 0x15, 0x2a, 0x15, + 0xbe, 0xf7, 0x29, 0x4a, 0x56, 0x56, 0xa8, 0x56, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0xba, 0xd6, 0xc7, 0x39, + 0x61, 0x61, 0x00, 0x63, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0xde, 0xf7, 0x69, 0x4a, 0x15, 0x15, 0x2a, 0x15, + 0x38, 0xc6, 0xe8, 0x41, 0x57, 0x57, 0x00, 0xf6, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x17, 0xbe, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x08, 0x42, 0x59, 0xce, 0x00, 0x00, 0x55, 0x58, 0x9d, 0xef, 0x8a, 0x52, + 0x53, 0xa3, 0x00, 0x52, 0xf7, 0xbd, 0xe7, 0x39, 0x70, 0x56, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x5c, 0xe7, 0x28, 0x42, 0x25, 0x25, 0x0a, 0x25, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xe7, 0x39, 0x55, 0x55, 0x00, 0x7f, 0xda, 0xd6, 0x28, 0x42, + 0x52, 0x52, 0x00, 0x52, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x5c, 0xe7, 0x49, 0x4a, 0x85, 0x85, 0x0a, 0x85, + 0x18, 0xc6, 0xe7, 0x39, 0x55, 0x55, 0x00, 0xfd, 0x18, 0xc6, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x55, 0x55, 0x00, 0xff, + 0x38, 0xc6, 0x49, 0x4a, 0x55, 0x55, 0x00, 0xd5, 0xff, 0xff, 0x28, 0x42, + 0x5c, 0x5c, 0xa8, 0x5c, 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0x49, 0x4a, 0xc7, 0x39, 0x56, 0xf4, 0xf4, 0xf4, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xa6, 0x31, 0x7f, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, + 0x5a, 0x5a, 0x5a, 0x5a, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0xe8, 0x41, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, + 0xaa, 0x52, 0x86, 0x31, 0xfd, 0xfd, 0xfd, 0xfd, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x49, 0x4a, 0xc7, 0x39, 0x95, 0x1f, 0x1f, 0x1f, 0xc7, 0x39, 0xff, 0xff, + 0x09, 0x09, 0x09, 0x09, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, + 0xc7, 0x39, 0x38, 0xc6, 0x58, 0x80, 0x00, 0x00, 0x79, 0xce, 0xc7, 0x39, + 0x56, 0xc2, 0x2d, 0x55, 0x9a, 0xd6, 0xe7, 0x39, 0x55, 0x55, 0x58, 0x0b, + 0xc7, 0x39, 0x38, 0xc6, 0x80, 0x80, 0x80, 0x82, 0x1c, 0xe7, 0xe8, 0x41, + 0x54, 0x54, 0x54, 0x54, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0xba, 0xd6, 0xa7, 0x39, 0x49, 0x49, 0x49, 0x49, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xab, 0xab, 0xab, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0xe7, 0x39, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, + 0x01, 0x01, 0x01, 0x01, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xea, 0xea, 0xea, 0xc7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x28, 0x42, 0xbe, 0xf7, 0x40, 0x40, 0x40, 0x40, 0xae, 0x73, 0xc7, 0x39, + 0x54, 0x54, 0x54, 0x94, 0xbe, 0xf7, 0xe7, 0x39, 0x55, 0x55, 0xb5, 0xea, + 0x75, 0xad, 0xc7, 0x39, 0x95, 0x03, 0x78, 0x55, 0x7d, 0xef, 0xc7, 0x39, + 0x7a, 0x57, 0x55, 0x55, 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0xfb, 0xde, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x25, 0x08, 0x42, 0xc7, 0x39, + 0x57, 0xae, 0xae, 0xae, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0xe8, 0x41, 0x65, 0x29, + 0x6a, 0xc0, 0xc0, 0xc0, 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, + 0x55, 0xaa, 0xaa, 0xaa, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0xfb, 0xde, 0xe7, 0x39, 0x85, 0x85, 0x85, 0x85, 0x28, 0x42, 0x86, 0x31, + 0xfd, 0xa9, 0xa9, 0xa9, 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, + 0x08, 0x42, 0xc7, 0x39, 0x55, 0xaa, 0xaa, 0xaa, 0x8a, 0x52, 0xc7, 0x39, + 0x15, 0x1f, 0x1f, 0x1f, 0xde, 0xf7, 0xc7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, + 0xc7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, + 0xf4, 0xf4, 0xf4, 0xf4, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, + 0xea, 0xea, 0xea, 0xea, 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xdb, 0xde, 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0xc7, 0x39, + 0x1f, 0x1f, 0x1f, 0x1f, 0xc7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x5d, 0xef, 0x45, 0x29, 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, + 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x42, 0xc7, 0x39, 0xea, 0xaa, 0xaa, 0xaa, + 0x30, 0x84, 0xc7, 0x39, 0x35, 0x55, 0x55, 0x55, 0x38, 0xc6, 0xc7, 0x39, + 0xa0, 0x2d, 0xd5, 0x95, 0x7d, 0xef, 0x08, 0x42, 0x54, 0x78, 0xac, 0x54, + 0x59, 0xce, 0xe8, 0x41, 0x55, 0x55, 0x78, 0x2b, 0xb6, 0xb5, 0xc7, 0x39, + 0x55, 0x55, 0x55, 0xe0, 0x08, 0x42, 0xa6, 0x31, 0xaa, 0xaa, 0xaa, 0x58, + 0xba, 0xd6, 0xa7, 0x39, 0x49, 0x49, 0x49, 0x49, 0x08, 0x42, 0xc7, 0x39, + 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x39, 0xdb, 0xde, + 0x40, 0x40, 0x40, 0x40, 0xc7, 0x39, 0xb6, 0xb5, 0x01, 0x01, 0x01, 0x01, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xc7, 0x39, 0xea, 0xea, 0xea, 0xea, + 0xc7, 0x39, 0xfb, 0xde, 0x24, 0x24, 0x24, 0x24, 0x08, 0x42, 0xa6, 0x31, + 0xaa, 0xaa, 0xaa, 0x37, 0x38, 0xc6, 0xe8, 0x41, 0x55, 0x55, 0x55, 0x2d, + 0x59, 0xce, 0xe7, 0x39, 0x55, 0x55, 0x2d, 0xe8, 0xbe, 0xf7, 0xe7, 0x39, + 0x35, 0x2d, 0x3a, 0x15, 0x18, 0xc6, 0xc7, 0x39, 0x0a, 0x78, 0x57, 0x57, + 0x30, 0x84, 0xc7, 0x39, 0x5c, 0x55, 0x55, 0x55, 0x08, 0x42, 0xc7, 0x39, + 0xab, 0xaa, 0xaa, 0xaa, 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, + 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x53, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xc7, 0x39, + 0x25, 0x25, 0x25, 0x25, 0x08, 0x42, 0xc7, 0x39, 0xae, 0xae, 0xae, 0xae, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, + 0xba, 0xd6, 0xe7, 0x39, 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, + 0x85, 0x85, 0x85, 0x85, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, + 0xde, 0xf7, 0xe7, 0x39, 0x5c, 0x5c, 0x5c, 0x5c, 0xc7, 0x39, 0xff, 0xff, + 0x60, 0x60, 0x60, 0x60, 0x49, 0x4a, 0xc7, 0x39, 0xf4, 0xf4, 0xf4, 0xf4, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x42, 0x86, 0x31, 0xea, 0xea, 0xea, 0xea, + 0xff, 0xff, 0xc7, 0x39, 0x5a, 0x5a, 0x5a, 0x5a, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x08, 0x42, 0xdb, 0xde, + 0x90, 0x90, 0x90, 0x90, 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x49, 0x4a, 0xc7, 0x39, 0x1f, 0x1f, 0x1f, 0x1f, + 0xc7, 0x39, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x45, 0x29, + 0xcd, 0xcd, 0xcd, 0xcd, 0xc7, 0x39, 0x28, 0x42, 0xa8, 0xa8, 0xa8, 0xa8, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0x34, 0xa5, 0xc7, 0x39, 0x95, 0x95, 0x95, 0x95, + 0x08, 0x42, 0x1c, 0xe7, 0x01, 0x01, 0x01, 0x01, 0x29, 0x4a, 0x65, 0x29, + 0x3f, 0xaa, 0xaa, 0xaa, 0xf7, 0xbd, 0xe7, 0x39, 0x2b, 0x55, 0x55, 0x55, + 0x38, 0xc6, 0xc7, 0x39, 0xa0, 0xaf, 0x55, 0x55, 0x1c, 0xe7, 0xa6, 0x31, + 0x4b, 0x82, 0xc9, 0x49, 0x34, 0xa5, 0xa7, 0x39, 0x55, 0xe0, 0x02, 0x55, + 0x58, 0xc6, 0x28, 0x42, 0x55, 0x55, 0x00, 0xd5, 0xb6, 0xb5, 0xe7, 0x39, + 0x55, 0x55, 0x00, 0xaf, 0xdb, 0xde, 0xa6, 0x31, 0x15, 0x15, 0x2a, 0x2a, + 0xfb, 0xde, 0xa6, 0x31, 0x56, 0x56, 0xa8, 0xa8, 0x95, 0xad, 0xc7, 0x39, + 0x55, 0x55, 0x00, 0xea, 0x58, 0xc6, 0x28, 0x42, 0x55, 0x55, 0x00, 0x57, + 0x14, 0xa5, 0xa7, 0x39, 0x55, 0x0b, 0x80, 0x55, 0x3c, 0xe7, 0xe7, 0x39, + 0x61, 0x82, 0x63, 0x61, 0x38, 0xc6, 0xe7, 0x39, 0x0b, 0xfa, 0x55, 0x55, + 0x18, 0xc6, 0xe7, 0x39, 0xe8, 0x55, 0x55, 0x55, 0x6a, 0x52, 0xa6, 0x31, + 0x5c, 0xff, 0xff, 0xff, 0x08, 0x42, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, + 0xc7, 0x39, 0xb6, 0xb5, 0x02, 0x02, 0x02, 0x02, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x49, 0x4a, 0x65, 0x29, 0xea, 0xea, 0xea, 0xea, 0xbe, 0xf7, 0x28, 0x42, + 0x53, 0x53, 0x53, 0x53, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x25, + 0x08, 0x42, 0xc7, 0x39, 0xae, 0xae, 0xae, 0xae, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0x86, 0x31, 0x69, 0x4a, 0x2a, 0x2a, 0x2a, 0x2a, 0xba, 0xd6, 0xe7, 0x39, + 0x52, 0x52, 0x52, 0x52, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xe8, 0x41, 0x85, 0x85, 0x85, 0x85, + 0x49, 0x4a, 0x45, 0x29, 0xab, 0xab, 0xab, 0xab, 0xd3, 0x9d, 0x02, 0x10, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0x9d, 0x02, 0x10, 0xff, 0xff, 0xff, 0xff, + 0xaa, 0x52, 0x86, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0xde, 0xf7, 0xe7, 0x39, + 0x5c, 0x5c, 0x5c, 0x5c, 0xe7, 0x39, 0xff, 0xff, 0x60, 0x60, 0x60, 0x60, + 0xeb, 0x5a, 0xe7, 0x39, 0x57, 0x57, 0x57, 0xa8, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xc7, 0x39, 0x5f, 0x5f, 0x55, 0x80, 0xf7, 0xbd, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x28, 0x42, 0xfb, 0xde, 0x90, 0x90, 0x90, 0x90, + 0x8a, 0x52, 0x86, 0x31, 0xfd, 0xfd, 0xfd, 0x02, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0xeb, 0x5a, 0xe7, 0x39, 0xd5, 0xd5, 0xd5, 0x2a, 0xe7, 0x39, 0xff, 0xff, + 0x09, 0x09, 0x09, 0x09, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x5d, 0xef, 0x86, 0x31, 0xcd, 0xcd, 0xcd, 0xcd, + 0x8a, 0x52, 0xc7, 0x39, 0xfd, 0xfd, 0x55, 0x02, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x30, 0x84, 0xc7, 0x39, 0x15, 0x15, 0x15, 0x3f, 0x28, 0x42, 0x3c, 0xe7, + 0x01, 0x01, 0x01, 0x01, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0xda, 0xd6, 0xe7, 0x39, 0x49, 0x49, 0x49, 0x49, + 0x2c, 0x63, 0x45, 0x29, 0xff, 0xff, 0xff, 0xaa, 0x8a, 0x52, 0x86, 0x31, + 0xff, 0xff, 0xff, 0x00, 0x8a, 0x52, 0xa6, 0x31, 0x55, 0xff, 0xff, 0x00, + 0x08, 0x42, 0xdb, 0xde, 0x40, 0x40, 0x40, 0x40, 0x96, 0xb5, 0xa7, 0x39, + 0x54, 0x54, 0x54, 0xf4, 0x8a, 0x52, 0xa6, 0x31, 0x55, 0xff, 0xff, 0x00, + 0x8a, 0x52, 0x86, 0x31, 0xff, 0xff, 0xff, 0x00, 0x2c, 0x63, 0x45, 0x29, + 0xff, 0xff, 0xff, 0xaa, 0xba, 0xd6, 0xe7, 0x39, 0x61, 0x61, 0x61, 0x61, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x29, 0x4a, 0x9e, 0xf7, 0x40, 0x40, 0x40, 0x40, 0xcf, 0x7b, 0xc7, 0x39, + 0x54, 0x54, 0x54, 0xfc, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa6, 0x31, + 0x7f, 0x7f, 0x7f, 0x80, 0xbe, 0xf7, 0x28, 0x42, 0x53, 0x53, 0x53, 0x73, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0xfb, 0xde, 0xe8, 0x41, 0x25, 0x25, 0x25, 0x25, 0x2c, 0x63, 0x45, 0x29, + 0xff, 0xff, 0xff, 0xaa, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0x86, 0x31, + 0x7f, 0x7f, 0x7f, 0x80, 0xba, 0xd6, 0x08, 0x42, 0x52, 0x52, 0x52, 0x52, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, + 0xaa, 0xaa, 0xaa, 0x00, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0xfb, 0xde, 0x28, 0x42, 0x85, 0x85, 0x85, 0x85, 0x8a, 0x52, 0x86, 0x31, + 0xfd, 0xfd, 0xfd, 0x02, 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, + 0x8a, 0x52, 0xa2, 0x10, 0xaa, 0xaa, 0xaa, 0x00, 0x2c, 0x63, 0x25, 0x29, + 0xbf, 0xbf, 0xbf, 0x2a, 0xde, 0xf7, 0x08, 0x42, 0x5c, 0x5c, 0x5c, 0x5c, + 0x7d, 0xef, 0xc7, 0x39, 0x0a, 0x25, 0x25, 0x25, 0x38, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe7, 0x39, 0x18, 0xc6, + 0x55, 0x00, 0x00, 0x00, 0xbe, 0xf7, 0xe7, 0x39, 0xa0, 0x5a, 0x5a, 0x5a, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x08, 0x42, 0xda, 0xd6, 0x55, 0x90, 0x90, 0x90, 0x18, 0xc6, 0xe7, 0x39, + 0x00, 0x55, 0x55, 0x55, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x7d, 0xef, 0xc7, 0x39, 0xa0, 0x58, 0x58, 0x58, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x3c, 0xe7, 0x66, 0x31, 0x02, 0xcd, 0xcd, 0xcd, 0xe7, 0x39, 0x18, 0xc6, + 0x55, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe7, 0x39, 0x59, 0xce, + 0x55, 0x80, 0x80, 0x80, 0x9d, 0xef, 0x08, 0x42, 0xa8, 0x54, 0x54, 0x54, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xba, 0xd6, 0xc7, 0x39, 0x00, 0x49, 0x49, 0x49, 0xe8, 0x41, 0x18, 0xc6, + 0x55, 0x00, 0x00, 0x00, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x5d, 0xef, 0x08, 0x42, + 0x2a, 0x15, 0x15, 0x15, 0xbe, 0xf7, 0xe7, 0x39, 0xa8, 0x56, 0x56, 0x56, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xe8, 0x41, 0x18, 0xc6, 0x55, 0x00, 0x00, 0x00, + 0xe7, 0x39, 0xda, 0xd6, 0x55, 0x24, 0x24, 0x24, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xde, 0xf7, 0x28, 0x42, + 0x2a, 0x15, 0x15, 0x15, 0xc7, 0x39, 0x38, 0xc6, 0x55, 0x02, 0x02, 0x02, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xe7, 0x39, 0x18, 0xc6, 0x55, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x49, 0x4a, 0xa2, 0x53, 0x53, 0x53, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0xe7, 0x39, + 0x0a, 0x25, 0x25, 0x25, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0xc7, 0x39, 0x00, 0x55, 0x55, 0x55, + 0xba, 0xd6, 0xe8, 0x41, 0x00, 0x52, 0x52, 0x52, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3c, 0xe7, 0x08, 0x42, + 0x0a, 0x85, 0x85, 0x85, 0xe7, 0x39, 0x18, 0xc6, 0x55, 0x00, 0x00, 0x00, + 0x18, 0xc6, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x18, 0xc6, 0x08, 0x42, 0x00, 0xd5, 0x55, 0x55, + 0xff, 0xff, 0xe7, 0x39, 0xa8, 0x5c, 0x5c, 0x5c +}; + +/** + * Zstd compressed version of \c #rawDxt1. + */ +static char const srcZstd[] = { + 0x28, 0xb5, 0x2f, 0xfd, 0x60, 0x00, 0x7f, 0xfd, 0xe2, 0x00, 0x8a, 0x05, + 0xc9, 0x3c, 0x5c, 0x00, 0x8e, 0x39, 0xb3, 0x01, 0xb3, 0xa8, 0xf4, 0xeb, + 0x13, 0x29, 0xfe, 0x37, 0xcd, 0x0a, 0x2e, 0xa8, 0xc3, 0xc2, 0xaf, 0xdf, + 0x28, 0x0b, 0x96, 0x5f, 0x79, 0x8b, 0xf8, 0xa2, 0xb8, 0x4f, 0x23, 0x4b, + 0xd4, 0xe8, 0x9c, 0xeb, 0xc9, 0xf8, 0xc3, 0xcd, 0xeb, 0xed, 0x68, 0xae, + 0x60, 0x7c, 0xe7, 0x61, 0x90, 0x00, 0x9d, 0x43, 0xbf, 0x2e, 0x88, 0x22, + 0x90, 0xab, 0x1b, 0x84, 0x37, 0x82, 0x73, 0x3e, 0x92, 0x9c, 0xbd, 0x83, + 0x34, 0x6e, 0x7a, 0x88, 0x92, 0x6c, 0x28, 0x06, 0x9a, 0x6c, 0xef, 0x65, + 0xb9, 0x6f, 0x66, 0xfe, 0x0a, 0x4c, 0x6a, 0xb8, 0x26, 0x21, 0x3d, 0x9a, + 0x03, 0xc3, 0x03, 0xb7, 0x03, 0x9d, 0xcf, 0x34, 0x91, 0x71, 0xff, 0x4f, + 0xd3, 0x76, 0x70, 0x0d, 0xfe, 0x12, 0x20, 0xc6, 0x61, 0x46, 0x4b, 0x47, + 0xe5, 0x9c, 0xd3, 0x71, 0x0e, 0x35, 0x47, 0x6a, 0x82, 0xf0, 0x19, 0x00, + 0x26, 0xe1, 0x6b, 0x00, 0x8f, 0x2f, 0xe0, 0x73, 0x51, 0xf1, 0x43, 0x02, + 0xd7, 0x31, 0x7f, 0x56, 0xf4, 0x7e, 0x44, 0x58, 0x3c, 0x5c, 0x49, 0x3a, + 0xee, 0xc9, 0x39, 0x0f, 0x57, 0x5d, 0x22, 0x86, 0x21, 0x64, 0xc4, 0xc3, + 0x75, 0x53, 0x79, 0x8f, 0x8a, 0x8a, 0x8a, 0xb9, 0x4f, 0x48, 0xe4, 0xef, + 0xd7, 0xf4, 0xff, 0x7c, 0xba, 0x4f, 0x32, 0xa7, 0x51, 0x96, 0x91, 0x76, + 0x0f, 0x2d, 0x83, 0xe7, 0xdc, 0x1a, 0xf5, 0x7a, 0xba, 0x48, 0x4e, 0x3b, + 0x3b, 0x6f, 0x6d, 0x07, 0x69, 0xba, 0xd7, 0xb3, 0xe9, 0xb5, 0x0d, 0x4b, + 0x1f, 0x0e, 0x81, 0x6e, 0x41, 0x1d, 0x71, 0xc7, 0x05, 0x38, 0xa7, 0x18, + 0xd0, 0x91, 0x3c, 0xde, 0x3b, 0xe4, 0x7d, 0x41, 0xed, 0xd2, 0x1b, 0x32, + 0x35, 0xd3, 0xc3, 0x38, 0xbe, 0xc9, 0x80, 0xf6, 0x70, 0x40, 0x89, 0xac, + 0x15, 0x74, 0x14, 0x0c, 0x66, 0x1b, 0xbd, 0x2f, 0xa0, 0x65, 0x9e, 0x4f, + 0x0c, 0xc8, 0x90, 0x82, 0xd7, 0x09, 0x25, 0x43, 0x10, 0x74, 0x12, 0x16, + 0xd6, 0x4b, 0x8a, 0xbd, 0xe2, 0x5f, 0x06, 0x27, 0x5e, 0x32, 0x38, 0x79, + 0x9d, 0xb4, 0x71, 0x9e, 0x6f, 0x2e, 0x92, 0x70, 0x2d, 0xf7, 0x69, 0xaa, + 0x00, 0xb4, 0x31, 0xa8, 0xf6, 0xea, 0x10, 0x5d, 0xca, 0x5c, 0xa8, 0x28, + 0x53, 0x86, 0x20, 0xdc, 0x27, 0x5a, 0x86, 0x84, 0x36, 0x71, 0xfe, 0x3f, + 0x55, 0x80, 0xd7, 0x69, 0x34, 0x42, 0xd5, 0x1b, 0xfc, 0xf7, 0xfe, 0xdf, + 0x03, 0x08, 0x26, 0x9a, 0xe6, 0x5c, 0x26, 0xab, 0xd5, 0x6e, 0x31, 0xa2, + 0x5e, 0xb0, 0xff, 0x57, 0x1a, 0x7a, 0x6b, 0x9c, 0x0e, 0x3a, 0x3c, 0xa8, + 0xda, 0x06, 0xea, 0xd7, 0x95, 0x52, 0x64, 0xae, 0x2f, 0x50, 0x23, 0xde, + 0x04, 0x7f, 0xd6, 0xac, 0x64, 0x68, 0x9a, 0x46, 0xe2, 0xf0, 0xde, 0x6c, + 0x45, 0x03, 0x79, 0x64, 0x76, 0x9f, 0x6e, 0x1f, 0x20, 0xe0, 0x22, 0x31, + 0xf7, 0x38, 0xff, 0x15, 0x47, 0xfc, 0xfc, 0xfe, 0xdf, 0x27, 0xb7, 0xc6, + 0xf8, 0x5f, 0x69, 0xce, 0x6f, 0xcd, 0xa3, 0xe1, 0x42, 0xd1, 0x07, 0x49, + 0x75, 0x91, 0x6e, 0x1f, 0xcf, 0xe7, 0x33, 0x9d, 0xb5, 0x8b, 0x2c, 0x1b, + 0x7f, 0xb0, 0x9a, 0x91, 0xdd, 0x7d, 0x82, 0x52, 0xed, 0xdc, 0x10, 0xa3, + 0x81, 0xc2, 0x7d, 0xaa, 0x5d, 0x7a, 0x3d, 0xe4, 0xd7, 0x0d, 0x3b, 0x08, + 0x04, 0x0e, 0xbb, 0xb6, 0x78, 0x3c, 0xa8, 0xe8, 0xd6, 0x6c, 0x26, 0x13, + 0xc7, 0x43, 0x22, 0xbb, 0x1d, 0xf2, 0xc9, 0xf3, 0x29, 0xc3, 0x64, 0xfa, + 0xe7, 0xf4, 0x91, 0x86, 0xd3, 0x54, 0xf7, 0x29, 0xba, 0xc5, 0x02, 0x02, + 0xc2, 0x11, 0x72, 0xd2, 0xbd, 0xb4, 0xc2, 0xc9, 0xf4, 0x76, 0x9e, 0x8d, + 0x54, 0x22, 0x51, 0xc6, 0x01, 0x24, 0x3a, 0x3a, 0x46, 0x26, 0x2f, 0x54, + 0x16, 0xcf, 0x5b, 0x1f, 0x77, 0x9c, 0x7f, 0x87, 0xa7, 0x53, 0xbc, 0x56, + 0x93, 0xa1, 0x70, 0x65, 0xd4, 0xce, 0x3b, 0x3a, 0x93, 0x93, 0xde, 0x5a, + 0xa8, 0xaa, 0xaa, 0xea, 0x16, 0x83, 0xb3, 0x30, 0x9f, 0x20, 0x01, 0xef, + 0x85, 0x7a, 0x86, 0x78, 0x9d, 0xcd, 0x9a, 0xd6, 0x8a, 0x68, 0x86, 0xe5, + 0x16, 0x87, 0x82, 0x52, 0xc1, 0x53, 0xd6, 0xe9, 0x88, 0xe5, 0xbc, 0x27, + 0x7d, 0x9d, 0xca, 0x9b, 0xdb, 0x40, 0x29, 0xbe, 0x50, 0xc9, 0xa5, 0x25, + 0x4e, 0xbb, 0x09, 0xaa, 0x58, 0x8d, 0x8a, 0x8a, 0x82, 0xa7, 0x46, 0xb6, + 0xe7, 0x41, 0x45, 0x3d, 0xe1, 0x20, 0xe4, 0xf5, 0x72, 0x6b, 0x16, 0x0f, + 0x0e, 0xd7, 0xc1, 0x06, 0xaf, 0xf3, 0x5e, 0x72, 0xfe, 0x94, 0xd5, 0x5c, + 0x24, 0xdf, 0x12, 0x12, 0x62, 0x92, 0x41, 0x5e, 0xe7, 0x5b, 0x3b, 0xa1, + 0x54, 0xc9, 0xdf, 0xeb, 0x24, 0xda, 0x00, 0xe7, 0x3d, 0xe3, 0xee, 0x67, + 0x14, 0x41, 0x54, 0xaa, 0xf8, 0x5c, 0x9e, 0xc8, 0xe2, 0x51, 0x42, 0xd3, + 0xb4, 0x2b, 0x23, 0x67, 0x7b, 0xeb, 0x3b, 0xba, 0x82, 0x26, 0xca, 0x32, + 0x38, 0x41, 0x2e, 0xd2, 0x0c, 0xaf, 0x33, 0xb7, 0xd6, 0x76, 0x72, 0xb6, + 0x7b, 0x79, 0x8b, 0xf1, 0xf5, 0x9f, 0x5c, 0xca, 0xad, 0x36, 0x64, 0x24, + 0x70, 0x0e, 0x4f, 0xb3, 0x78, 0x64, 0x10, 0xeb, 0x71, 0xe0, 0x0f, 0x21, + 0xd0, 0x45, 0xe2, 0x32, 0x0c, 0xb4, 0x32, 0xf8, 0x1a, 0xe4, 0x5b, 0x77, + 0x2e, 0x0e, 0x45, 0xc2, 0x8d, 0xbe, 0x86, 0x73, 0x7a, 0x8a, 0x73, 0x6e, + 0x4c, 0xe6, 0xd6, 0x66, 0x1b, 0x93, 0x00, 0x25, 0x76, 0x91, 0xa0, 0x48, + 0x48, 0xf8, 0x67, 0x32, 0x88, 0x31, 0xc9, 0xf9, 0x5b, 0x37, 0x67, 0x14, + 0x2b, 0x7c, 0xa4, 0x71, 0x79, 0xeb, 0xe2, 0xeb, 0x3c, 0xd2, 0x20, 0x73, + 0xb6, 0xd7, 0x79, 0x63, 0xe1, 0x2c, 0x21, 0x75, 0x63, 0x81, 0x13, 0xaf, + 0xbe, 0xd7, 0xd9, 0xbb, 0x12, 0x17, 0x29, 0x67, 0xeb, 0x6c, 0xac, 0xe9, + 0x04, 0x4d, 0x62, 0xe7, 0x1d, 0xf5, 0x80, 0x98, 0xb3, 0xc9, 0x2c, 0x80, + 0x44, 0x44, 0xbd, 0xee, 0xa5, 0x91, 0x91, 0x91, 0x30, 0x69, 0xb7, 0xdb, + 0x3d, 0x79, 0x9d, 0x45, 0x46, 0x6e, 0x1f, 0x38, 0x37, 0x20, 0x15, 0xef, + 0x7d, 0x3d, 0x59, 0x61, 0xa5, 0xd6, 0x4d, 0x74, 0x2b, 0x67, 0x63, 0xf2, + 0x5a, 0x16, 0x7a, 0xf6, 0xfe, 0xee, 0x93, 0x2c, 0xc4, 0xe3, 0xb7, 0x86, + 0x22, 0x81, 0xd5, 0x36, 0x39, 0xdb, 0x8a, 0xd7, 0x79, 0xc4, 0xda, 0x3d, + 0x2b, 0x4c, 0x26, 0x53, 0xa6, 0x5a, 0xad, 0xc6, 0x5c, 0x24, 0x39, 0xc9, + 0xc6, 0xe4, 0x5f, 0x79, 0x1b, 0x19, 0xf1, 0x7f, 0x9d, 0x38, 0x41, 0xbd, + 0x77, 0xfa, 0x16, 0x03, 0x48, 0xc4, 0xd7, 0xd7, 0x17, 0xf2, 0x16, 0xc3, + 0x47, 0xc4, 0xa7, 0xf7, 0xb7, 0x36, 0xfe, 0x7e, 0xbf, 0xdc, 0xda, 0xb9, + 0xfe, 0xc9, 0xf4, 0x44, 0x22, 0x31, 0xb7, 0xca, 0xb2, 0x0c, 0x4f, 0x39, + 0xe7, 0xb9, 0x15, 0x4a, 0x55, 0x73, 0x91, 0xf8, 0x9d, 0x9d, 0x1d, 0x9c, + 0xb8, 0xfe, 0x7d, 0xaf, 0xd7, 0x83, 0xa7, 0x50, 0x24, 0x32, 0xb3, 0xd9, + 0x0c, 0xe7, 0xd6, 0x3b, 0x8f, 0x89, 0x89, 0x89, 0x7a, 0x3d, 0x8f, 0xc7, + 0x83, 0xa7, 0xb5, 0x0b, 0xbf, 0xb9, 0xb9, 0xf9, 0x38, 0x8e, 0x5f, 0x67, + 0xd4, 0x0b, 0x06, 0x83, 0x71, 0x91, 0x10, 0x0a, 0x85, 0x50, 0x2a, 0x78, + 0xfa, 0x58, 0x58, 0x58, 0x2e, 0xd2, 0xfa, 0xf3, 0x3c, 0x33, 0xbd, 0x35, + 0xcf, 0x91, 0x23, 0x47, 0xd4, 0xcb, 0xe8, 0xf3, 0xf9, 0xde, 0xba, 0x77, + 0x78, 0xba, 0xf2, 0xff, 0x87, 0x52, 0xe5, 0x6c, 0x5f, 0xab, 0xd5, 0x5e, + 0x67, 0x6d, 0x13, 0xc6, 0xae, 0x1d, 0x79, 0x8e, 0x05, 0x83, 0xca, 0x17, + 0xe2, 0x88, 0x71, 0x30, 0xc3, 0xd5, 0x52, 0xd8, 0xe1, 0x1d, 0xd5, 0x19, + 0x6d, 0x34, 0xa7, 0xe1, 0xfa, 0x42, 0x9b, 0x4c, 0xcc, 0xf8, 0x2f, 0x93, + 0xf1, 0x7a, 0x0f, 0x56, 0x3b, 0x08, 0x58, 0xc4, 0xda, 0xeb, 0x84, 0x22, + 0x91, 0xcd, 0xc8, 0xb1, 0xf5, 0x7a, 0xbd, 0xb7, 0xde, 0xf1, 0x7a, 0xbc, + 0xe9, 0x59, 0x9c, 0xe1, 0xaa, 0x56, 0x56, 0x50, 0x62, 0x30, 0xa5, 0xa1, + 0xff, 0x1b, 0x8b, 0xde, 0x7b, 0xbc, 0xdd, 0x6f, 0x56, 0x7c, 0xf2, 0x28, + 0x29, 0x62, 0x4e, 0xd0, 0x50, 0x31, 0x89, 0x67, 0x07, 0xa1, 0x50, 0x02, + 0x2c, 0xe0, 0x3f, 0xba, 0x15, 0x93, 0x89, 0x80, 0xb1, 0x92, 0x99, 0xca, + 0x0a, 0x2c, 0x76, 0x53, 0xf5, 0x7f, 0x64, 0x41, 0xfe, 0xc8, 0xb2, 0xef, + 0xf6, 0xc1, 0x3a, 0xc9, 0xf0, 0xde, 0xff, 0x61, 0x28, 0xbd, 0x5f, 0xd5, + 0x66, 0x45, 0xce, 0x7b, 0xe2, 0xc4, 0x2f, 0x73, 0x81, 0x05, 0x1f, 0x11, + 0xda, 0xfa, 0x6c, 0x4b, 0x9b, 0x81, 0xd5, 0xdc, 0xc4, 0x5e, 0xa0, 0xf0, + 0xec, 0xa5, 0x0e, 0xcc, 0x5c, 0x02, 0x8d, 0x18, 0x1b, 0xc2, 0x1a, 0x8e, + 0x1d, 0x26, 0x8c, 0x48, 0x04, 0xd4, 0x20, 0x64, 0x88, 0xcd, 0x04, 0xb7, + 0x23, 0xb1, 0x74, 0x8a, 0xc3, 0xe9, 0xff, 0xde, 0xa9, 0x22, 0xbc, 0xf1, + 0x84, 0x9f, 0xe9, 0xca, 0xbd, 0x64, 0xd6, 0x38, 0x9b, 0x6d, 0xff, 0xb6, + 0x96, 0x5b, 0xed, 0x26, 0xab, 0x22, 0xcd, 0x2b, 0xa2, 0x19, 0x8a, 0xb8, + 0xff, 0x18, 0xac, 0xab, 0xa0, 0xce, 0x28, 0x06, 0x73, 0x5c, 0x88, 0x8e, + 0x80, 0x0a, 0x24, 0x87, 0x1d, 0xf4, 0x2d, 0x39, 0xe6, 0x0c, 0xd5, 0x3f, + 0x21, 0x99, 0x06, 0x12, 0x11, 0x45, 0x95, 0x51, 0x81, 0xcc, 0x44, 0x31, + 0x91, 0x2a, 0xc2, 0x57, 0x91, 0x0b, 0x84, 0x70, 0xa0, 0xed, 0xb2, 0x7b, + 0x7e, 0x3d, 0xcf, 0x59, 0x0d, 0xab, 0x84, 0xf5, 0x59, 0x16, 0xd6, 0xc2, + 0x5a, 0x98, 0x2d, 0x46, 0x83, 0xcd, 0x70, 0x30, 0x13, 0xab, 0x41, 0x99, + 0xce, 0xc4, 0x6e, 0x60, 0x68, 0xdc, 0xc0, 0xbc, 0x80, 0x79, 0x01, 0xa3, + 0x13, 0xf3, 0xa5, 0x13, 0xe3, 0x13, 0x33, 0xc7, 0x94, 0x50, 0x23, 0xa1, + 0x84, 0x1a, 0x8d, 0x1a, 0x8d, 0x9a, 0x0d, 0x13, 0x54, 0x1b, 0x26, 0x84, + 0x2d, 0xa6, 0xc2, 0x16, 0x38, 0x5a, 0xe0, 0x68, 0x91, 0xc3, 0x45, 0x0e, + 0x17, 0x46, 0x17, 0x32, 0xe4, 0x8b, 0x1a, 0x5e, 0x20, 0x5f, 0xd4, 0xf0, + 0x42, 0x48, 0x90, 0x90, 0x78, 0x48, 0x5c, 0x15, 0x0f, 0x09, 0x1a, 0x12, + 0x74, 0x44, 0xc8, 0x89, 0x09, 0x84, 0xa4, 0x42, 0x18, 0x90, 0x0a, 0x4d, + 0x67, 0x50, 0xa7, 0x33, 0x98, 0xcc, 0x50, 0x81, 0xc9, 0x0c, 0xea, 0x04, + 0xe8, 0x18, 0xc0, 0xa0, 0xc6, 0x7a, 0xbb, 0x99, 0x88, 0xda, 0xc1, 0xd7, + 0x08, 0xb8, 0x22, 0xe7, 0x54, 0x11, 0xfa, 0x01, 0x74, 0xa8, 0x22, 0xa8, + 0x40, 0x08, 0x15, 0x49, 0x53, 0x6a, 0xa5, 0xf8, 0x96, 0xd4, 0x2e, 0x40, + 0xf9, 0xc7, 0xe3, 0xfc, 0x39, 0xf3, 0x2d, 0xb1, 0x7b, 0x84, 0x6d, 0xd7, + 0x3f, 0x5f, 0x61, 0xec, 0xb7, 0xb0, 0x0f, 0x81, 0x06, 0xfb, 0x18, 0xb6, + 0xd8, 0x67, 0x80, 0xcd, 0xc0, 0x0c, 0x4d, 0xc6, 0x0b, 0xd8, 0x0b, 0x98, + 0x27, 0xa2, 0x13, 0xf3, 0x30, 0x68, 0x8b, 0xcc, 0x31, 0xb4, 0x4f, 0xcc, + 0xca, 0xcc, 0x8b, 0x00, 0x4a, 0xa8, 0x15, 0xc9, 0x11, 0xe3, 0x37, 0x58, + 0x3b, 0x62, 0x8f, 0xa3, 0xc5, 0x0b, 0x1f, 0x6e, 0x3b, 0x39, 0x5c, 0xec, + 0x70, 0xb1, 0x92, 0x83, 0xd1, 0xc5, 0xca, 0x96, 0x0b, 0x03, 0xf2, 0x05, + 0x07, 0xa6, 0x90, 0xa2, 0x54, 0xc5, 0xb2, 0x15, 0x5b, 0x43, 0x82, 0xde, + 0x27, 0x26, 0x80, 0xab, 0x47, 0x84, 0x7a, 0xae, 0x84, 0x54, 0x88, 0xc9, + 0x8c, 0x15, 0x78, 0xf0, 0x15, 0xa8, 0xa8, 0x33, 0xfe, 0x63, 0x51, 0x41, + 0x56, 0x4c, 0x3d, 0x88, 0x89, 0x38, 0xa6, 0xf4, 0x44, 0x92, 0x20, 0xe7, + 0xfc, 0xa9, 0x33, 0x56, 0xa0, 0x1a, 0x31, 0x62, 0xc4, 0x31, 0xab, 0xc7, + 0xf4, 0x04, 0xe7, 0x9d, 0xfe, 0xa7, 0xb9, 0x52, 0x4b, 0xa9, 0x55, 0xab, + 0xa1, 0x90, 0x35, 0x95, 0xa8, 0x56, 0x7b, 0x3f, 0xc6, 0x44, 0x3f, 0x1f, + 0x91, 0x6e, 0x54, 0x42, 0x4e, 0x2a, 0x32, 0xf2, 0x2f, 0x6b, 0x4c, 0x8b, + 0x83, 0x95, 0xc0, 0x34, 0x8a, 0x86, 0x96, 0x08, 0x4d, 0x03, 0x4a, 0x60, + 0xe0, 0xe4, 0x36, 0x00, 0x97, 0x95, 0x56, 0x53, 0xbc, 0x2e, 0xd2, 0xad, + 0x01, 0xef, 0xde, 0x77, 0x47, 0x9c, 0x02, 0x13, 0xce, 0x21, 0x86, 0x01, + 0x46, 0xa2, 0xdb, 0x51, 0x8d, 0xb7, 0x74, 0x39, 0xd0, 0xff, 0x0f, 0x57, + 0x75, 0x5b, 0x3c, 0x3d, 0xe8, 0xaa, 0x3d, 0x16, 0x8b, 0xc9, 0x25, 0x78, + 0xaa, 0xfd, 0xab, 0xf7, 0x6a, 0x13, 0x1d, 0xf3, 0x04, 0xe6, 0x0c, 0xc4, + 0xc2, 0xf1, 0xf4, 0x24, 0x9d, 0x29, 0xaf, 0x00, 0x76, 0xee, 0x2b, 0x11, + 0xd4, 0x83, 0x58, 0x57, 0x1e, 0xe7, 0x7c, 0x6b, 0x46, 0x84, 0x65, 0x20, + 0x11, 0xd1, 0x2d, 0x23, 0x1f, 0x11, 0x9d, 0xd1, 0x0f, 0x8c, 0x9d, 0x0e, + 0x90, 0xf8, 0x53, 0x02, 0x0a, 0x63, 0x06, 0x46, 0x72, 0x05, 0xd5, 0xb7, + 0xe4, 0x49, 0xdb, 0x55, 0xbb, 0x14, 0x6b, 0x3a, 0x9c, 0x20, 0xd3, 0x46, + 0x15, 0xe8, 0xec, 0xb0, 0x73, 0x05, 0xe1, 0x5b, 0x02, 0x24, 0xe2, 0xf9, + 0x7f, 0x0b, 0x21, 0x6a, 0xe5, 0xe0, 0x61, 0x2b, 0x07, 0x2b, 0xcc, 0x0a, + 0xc3, 0xb2, 0x60, 0x43, 0x60, 0x65, 0xb0, 0x32, 0x5a, 0x09, 0x20, 0xd9, + 0x16, 0x2d, 0x0e, 0xa3, 0x16, 0x47, 0x4b, 0xb7, 0x1a, 0xa0, 0xd1, 0x34, + 0x9a, 0x56, 0x84, 0x46, 0xc4, 0x86, 0x45, 0x2b, 0x62, 0xf3, 0xc1, 0xe6, + 0x83, 0xcb, 0x1a, 0x6f, 0x02, 0x70, 0x59, 0x15, 0x5c, 0xd6, 0x75, 0x5d, + 0xf7, 0x55, 0xc0, 0xab, 0x80, 0x77, 0xf7, 0xee, 0xc0, 0x35, 0xa6, 0xf0, + 0x0e, 0x4e, 0x01, 0x06, 0x23, 0x9c, 0x42, 0xbc, 0x43, 0x1a, 0xef, 0x88, + 0x73, 0x88, 0x79, 0xe8, 0xb6, 0x60, 0xe8, 0xb6, 0x78, 0x54, 0xa0, 0xeb, + 0x81, 0xa7, 0x6a, 0x83, 0xa7, 0xca, 0xf3, 0xe5, 0x84, 0xe7, 0xeb, 0xa7, + 0x84, 0x54, 0xb7, 0x61, 0xcc, 0x7a, 0x74, 0x45, 0x95, 0x8b, 0xa7, 0xdf, + 0x4e, 0xa0, 0xee, 0x65, 0xb1, 0xea, 0x23, 0x12, 0xf5, 0xfa, 0xf5, 0x38, + 0x94, 0x4a, 0xe8, 0xd3, 0xaa, 0x44, 0xbd, 0xb8, 0x9c, 0x04, 0xe4, 0x01, + 0x97, 0x69, 0xa2, 0x0d, 0xfc, 0xbf, 0x14, 0xce, 0xcd, 0xb7, 0xe4, 0xf9, + 0xcf, 0x3a, 0xf1, 0xff, 0x35, 0x86, 0x3f, 0x6c, 0x85, 0xf9, 0x18, 0x1b, + 0xa3, 0xf7, 0x28, 0x2c, 0x0b, 0xbe, 0xa6, 0xb4, 0x50, 0xab, 0x8a, 0xfb, + 0x37, 0xd9, 0x8a, 0x00, 0xf6, 0xf6, 0x2a, 0xbd, 0xeb, 0x01, 0x8b, 0xc3, + 0xdb, 0x19, 0xb7, 0x11, 0x6c, 0x08, 0xf7, 0x01, 0x9c, 0xe6, 0x82, 0x8b, + 0x22, 0x01, 0x2f, 0x8d, 0xde, 0x42, 0x00, 0x7e, 0x81, 0x46, 0x03, 0xf6, + 0xc0, 0xbb, 0x43, 0x3b, 0xa1, 0xf7, 0x3e, 0x78, 0x9a, 0x5c, 0x9a, 0xfd, + 0x7e, 0x3b, 0xde, 0x6e, 0xf7, 0x9b, 0xdf, 0xba, 0xfe, 0x39, 0x7b, 0x00, + 0x31, 0x9b, 0xe1, 0x8e, 0x4b, 0xdf, 0xce, 0xce, 0x90, 0x90, 0x50, 0x94, + 0x94, 0x14, 0x1d, 0x53, 0x8d, 0x76, 0x13, 0xd0, 0xea, 0x73, 0x6e, 0xaa, + 0x84, 0x37, 0x47, 0x96, 0xa7, 0x45, 0xb7, 0x82, 0xba, 0x86, 0x44, 0x41, + 0xde, 0x9f, 0xd7, 0x9c, 0x39, 0x58, 0x57, 0x44, 0x9c, 0xa0, 0xac, 0x1b, + 0x46, 0xdd, 0x47, 0x13, 0x6b, 0x35, 0x1d, 0x14, 0x50, 0x68, 0x79, 0x9d, + 0x5d, 0x79, 0x73, 0xe5, 0xfd, 0x3f, 0x55, 0x64, 0xd7, 0x2e, 0x5f, 0xb8, + 0xb7, 0x2e, 0xb2, 0xab, 0xc2, 0x15, 0xfe, 0x79, 0x7d, 0x81, 0x32, 0xb1, + 0x44, 0x9f, 0x4e, 0x25, 0x1d, 0x8a, 0x99, 0xaa, 0x58, 0xed, 0xa2, 0xc3, + 0x06, 0xe5, 0x7d, 0x2f, 0x65, 0x45, 0x46, 0x6a, 0x17, 0x2a, 0x21, 0xbb, + 0xa7, 0xc8, 0xa6, 0x4a, 0x26, 0x8b, 0xb2, 0xa1, 0xd2, 0x10, 0xfd, 0x3a, + 0x93, 0x41, 0x8e, 0x34, 0xff, 0xf7, 0x92, 0xc9, 0x0a, 0xd3, 0x50, 0xaa, + 0xd7, 0xc9, 0x3a, 0x29, 0xe9, 0xa8, 0x5a, 0x5a, 0xcf, 0x7f, 0xa1, 0x94, + 0x86, 0x50, 0x2c, 0x91, 0xcf, 0x9f, 0x4f, 0x19, 0xfa, 0x85, 0xe2, 0x22, + 0x61, 0x43, 0xef, 0x3a, 0x1d, 0x92, 0xff, 0xfa, 0xa2, 0x34, 0x54, 0x8c, + 0xe9, 0xe8, 0x40, 0xef, 0x34, 0xff, 0x3e, 0xc5, 0x91, 0x53, 0x35, 0x64, + 0xb5, 0xfa, 0xd7, 0xd2, 0xd2, 0x32, 0x7b, 0x6b, 0x39, 0x09, 0x8a, 0xe4, + 0x75, 0xd6, 0x36, 0x2c, 0x3a, 0x74, 0xe8, 0x78, 0x6b, 0x15, 0x2a, 0x6a, + 0x35, 0x28, 0x95, 0x4e, 0x93, 0x26, 0x28, 0xa0, 0xa0, 0x42, 0x45, 0x12, + 0xf1, 0x0a, 0x2b, 0x07, 0x9e, 0xda, 0x4d, 0x1f, 0xbc, 0xc9, 0xba, 0xf1, + 0xbd, 0xff, 0x5b, 0x0c, 0x9f, 0x3c, 0xbd, 0x97, 0x4f, 0x96, 0x9c, 0x24, + 0x2b, 0x20, 0xd2, 0x91, 0xa6, 0x2a, 0xe9, 0x78, 0xa5, 0x24, 0x42, 0x04, + 0x4f, 0x73, 0x0e, 0xe4, 0x7b, 0xe7, 0xf1, 0x2e, 0x20, 0xb5, 0x02, 0x29, + 0x69, 0x2b, 0xac, 0x1a, 0x39, 0xa7, 0x69, 0xd6, 0x47, 0x06, 0x4e, 0xb7, + 0x0f, 0xbe, 0xc3, 0x0e, 0x2b, 0xf0, 0xc8, 0xc2, 0xf9, 0x0d, 0x37, 0xb0, + 0xc3, 0x65, 0x0b, 0xfb, 0xa3, 0xd4, 0xe2, 0xdc, 0x66, 0x63, 0x87, 0x3d, + 0x80, 0x48, 0x42, 0x39, 0x2f, 0x52, 0x84, 0x1d, 0x4e, 0xd5, 0xe0, 0x7c, + 0x38, 0x5c, 0x81, 0x47, 0x33, 0x9c, 0xa7, 0x48, 0xb1, 0xc2, 0x53, 0x45, + 0xce, 0x65, 0x64, 0xb4, 0x78, 0x3b, 0x24, 0x72, 0x05, 0x2a, 0xef, 0x9b, + 0x1b, 0x21, 0xa1, 0xa8, 0x17, 0x3b, 0xe4, 0x7c, 0x65, 0x85, 0xfd, 0x19, + 0x2a, 0x6f, 0xce, 0x5d, 0x5c, 0x58, 0x27, 0x1e, 0x78, 0x00, 0x02, 0xd9, + 0xa1, 0x11, 0x23, 0x2b, 0xcc, 0x79, 0xdb, 0x72, 0xfe, 0xc3, 0x0f, 0x2b, + 0x1c, 0xf5, 0x02, 0xf2, 0x5e, 0x8f, 0x1e, 0xff, 0x47, 0x33, 0xff, 0xed, + 0x0f, 0xce, 0x81, 0x3e, 0x3e, 0xcd, 0x9a, 0x5f, 0x5a, 0xb2, 0x9b, 0x5a, + 0xab, 0xff, 0x68, 0xf4, 0xdf, 0xee, 0xe1, 0x9c, 0xfd, 0xe1, 0x3c, 0xb8, + 0xc2, 0xff, 0x42, 0x94, 0x58, 0x0c, 0x45, 0x69, 0xa8, 0x77, 0x9a, 0x21, + 0xa7, 0xae, 0x20, 0xfe, 0x34, 0x4d, 0x6d, 0x68, 0x67, 0x47, 0xce, 0xad, + 0xb5, 0x8d, 0xd0, 0x11, 0x5b, 0x64, 0xf7, 0x00, 0x22, 0xc8, 0xd3, 0x91, + 0xe6, 0xe6, 0x5b, 0xa2, 0xa3, 0x03, 0x29, 0x9e, 0x96, 0x0c, 0x22, 0xec, + 0xfd, 0x88, 0xfd, 0xf1, 0xc3, 0x25, 0x8b, 0x07, 0xca, 0x83, 0x07, 0x2d, + 0x25, 0x15, 0xe7, 0x5c, 0x5d, 0xe5, 0x56, 0xbb, 0x67, 0xfe, 0xed, 0x76, + 0xf0, 0xb4, 0xfe, 0xf1, 0xd7, 0xa9, 0xc3, 0x06, 0x27, 0x38, 0xee, 0x53, + 0x93, 0x06, 0x21, 0x78, 0xeb, 0x64, 0x10, 0x0e, 0x4f, 0x93, 0x4b, 0x4b, + 0x4a, 0x43, 0xb7, 0x18, 0x3c, 0x72, 0xb6, 0xda, 0xc6, 0xa6, 0xc8, 0x66, + 0x9d, 0x5e, 0x00, 0xc0, 0x45, 0x02, 0x8a, 0x84, 0x8b, 0x84, 0x4b, 0x17, + 0xce, 0x6d, 0x7d, 0xe9, 0x71, 0x82, 0xf5, 0xc5, 0xa9, 0xf8, 0x62, 0xf7, + 0xac, 0x30, 0x3f, 0xd6, 0x70, 0xb3, 0xdb, 0xc7, 0xd5, 0x11, 0x6b, 0x07, + 0xbb, 0x2c, 0xe3, 0xda, 0x8a, 0xfa, 0xd1, 0x35, 0xc2, 0x13, 0xa6, 0x94, + 0xf4, 0x06, 0x69, 0x77, 0x7a, 0x67, 0x15, 0xca, 0x07, 0x6a, 0x29, 0xa9, + 0x97, 0x97, 0x97, 0x93, 0x22, 0xfb, 0x88, 0x35, 0xe1, 0x05, 0x39, 0x29, + 0xb9, 0xa4, 0x81, 0x8b, 0xa4, 0xd4, 0xda, 0x60, 0x46, 0xce, 0x54, 0x8d, + 0x12, 0xb4, 0x00, 0x02, 0x89, 0xd0, 0x61, 0x43, 0x08, 0xc9, 0xa5, 0x9c, + 0xad, 0x78, 0xc4, 0xd6, 0x2e, 0xbc, 0x22, 0xfb, 0x5e, 0x0a, 0xd5, 0x36, + 0xad, 0xd5, 0x4a, 0x6b, 0x75, 0xc4, 0xb6, 0x3f, 0x94, 0xb7, 0xcb, 0x8d, + 0x45, 0xed, 0xc2, 0x03, 0xb0, 0xb5, 0xba, 0x7a, 0xeb, 0xda, 0x26, 0xa6, + 0xfd, 0xd1, 0x9c, 0x55, 0x6a, 0x99, 0xa3, 0x99, 0x22, 0x23, 0x2b, 0xe8, + 0xe8, 0x00, 0xfb, 0x33, 0xdb, 0x41, 0x1b, 0x4f, 0xeb, 0x1d, 0xc7, 0x0e, + 0xb3, 0x6e, 0x80, 0xd0, 0xc3, 0xff, 0x54, 0x8d, 0xb9, 0x76, 0x59, 0xe1, + 0x5a, 0x6d, 0xb3, 0xc2, 0x40, 0x1e, 0x4c, 0xd5, 0xb0, 0x83, 0x6f, 0x9d, + 0x75, 0xa3, 0x73, 0xfe, 0x7c, 0x7e, 0xbc, 0xca, 0x49, 0xf2, 0xd5, 0x36, + 0x45, 0x46, 0xa4, 0x5a, 0x20, 0x36, 0x31, 0x93, 0xe8, 0x90, 0x92, 0x4a, + 0xad, 0xa0, 0x7f, 0xf5, 0xde, 0x69, 0x39, 0x09, 0xca, 0x64, 0x82, 0x09, + 0x26, 0x24, 0xe5, 0xd6, 0xac, 0x1b, 0x2f, 0xbc, 0xf0, 0x02, 0x07, 0x38, + 0xb1, 0x52, 0x4b, 0x03, 0x0d, 0x34, 0xe0, 0xc0, 0x45, 0x6a, 0xb6, 0x4b, + 0x4b, 0x30, 0xd8, 0x88, 0x66, 0x68, 0xb6, 0x32, 0x64, 0xc8, 0x50, 0xc2, + 0x09, 0x8a, 0x7a, 0xb5, 0x68, 0xd1, 0x02, 0x47, 0xce, 0xd6, 0x6c, 0x6f, + 0xdc, 0xb8, 0x31, 0x04, 0x12, 0x91, 0x5c, 0xe2, 0xc1, 0x83, 0xc7, 0x0d, + 0x39, 0x9b, 0x1d, 0xc4, 0xe1, 0xec, 0x66, 0xab, 0x25, 0x6b, 0xc9, 0x42, + 0xf5, 0x6f, 0x6a, 0x6a, 0x2a, 0x46, 0x6b, 0xc1, 0x14, 0x5f, 0xd9, 0x9f, + 0x66, 0x0b, 0xc3, 0x70, 0x50, 0x6d, 0xf3, 0xd6, 0x3c, 0xf0, 0xc0, 0x43, + 0x0d, 0x37, 0x16, 0xd1, 0x2d, 0xab, 0xb6, 0x2b, 0xea, 0x75, 0x75, 0x75, + 0xd5, 0x02, 0x0f, 0x94, 0xa9, 0xb5, 0x8a, 0xe3, 0x38, 0x06, 0x94, 0xaa, + 0xb5, 0x52, 0x51, 0x51, 0x39, 0xd2, 0x50, 0xa6, 0x22, 0x1b, 0x0a, 0x85, + 0x0a, 0x61, 0x87, 0xcd, 0x9a, 0x17, 0x00, 0x48, 0xd7, 0x97, 0x3b, 0x8a, + 0xc3, 0xe1, 0x12, 0xc0, 0x0e, 0xa1, 0x4c, 0x20, 0x80, 0x00, 0x02, 0x09, + 0x8a, 0x6c, 0x3b, 0xd8, 0x43, 0x0f, 0x3d, 0x20, 0xff, 0x93, 0x41, 0x42, + 0x04, 0xdb, 0x1f, 0x76, 0x50, 0xa6, 0xc8, 0x48, 0xb3, 0x46, 0x4a, 0x34, + 0x43, 0xe7, 0x8a, 0x25, 0x83, 0xb4, 0x6f, 0x3d, 0xcb, 0x44, 0xc2, 0xff, + 0xe7, 0xcd, 0x1a, 0xd9, 0x07, 0x6f, 0x0d, 0x24, 0x22, 0xb2, 0xdc, 0xfa, + 0xf0, 0xf4, 0x65, 0x4e, 0x3c, 0xfa, 0xd6, 0x32, 0xf0, 0xf4, 0xb3, 0x78, + 0x62, 0x36, 0xc6, 0x6f, 0x8d, 0x6d, 0xb3, 0x26, 0x28, 0x73, 0xab, 0x21, + 0x11, 0x09, 0x9f, 0x34, 0x81, 0xe2, 0xbf, 0x62, 0x86, 0x57, 0xab, 0xcf, + 0x98, 0x90, 0xc3, 0x80, 0xf1, 0x3a, 0x59, 0xe4, 0x92, 0x3a, 0xf6, 0x9b, + 0x3a, 0x09, 0x01, 0x04, 0x1a, 0x02, 0x85, 0x21, 0x58, 0x7a, 0x4a, 0xa6, + 0x8a, 0x48, 0x2f, 0x19, 0x1a, 0xea, 0x64, 0x90, 0xe7, 0x37, 0x67, 0x1e, + 0x93, 0xc6, 0x3a, 0x0c, 0x45, 0xa0, 0xa1, 0x83, 0x15, 0xb7, 0x5f, 0xaf, + 0x67, 0x43, 0x36, 0xfb, 0xe0, 0x04, 0x6e, 0xfa, 0xd6, 0x59, 0x3c, 0x0c, + 0x98, 0xa5, 0x1d, 0xd8, 0xd8, 0x01, 0xb1, 0xb1, 0xcb, 0xad, 0xcf, 0x13, + 0xc6, 0xa3, 0x99, 0xaa, 0x50, 0x4f, 0x05, 0xe7, 0x54, 0x0d, 0x25, 0xc9, + 0x7b, 0xa9, 0xe3, 0x75, 0x3a, 0xf9, 0x6e, 0x18, 0xa2, 0x86, 0x32, 0x39, + 0x85, 0x73, 0xb3, 0xa6, 0x58, 0x35, 0x22, 0xca, 0x2f, 0xcb, 0x39, 0x1b, + 0x14, 0x89, 0x91, 0xad, 0xfe, 0xf1, 0x68, 0xbc, 0xb5, 0xf2, 0x96, 0xff, + 0xc7, 0x4e, 0xd3, 0xcc, 0x73, 0xeb, 0xb2, 0x65, 0x06, 0xdf, 0xac, 0x09, + 0xba, 0xa3, 0x40, 0x0f, 0x04, 0xf2, 0x96, 0x33, 0x9c, 0xd8, 0xee, 0x89, + 0x3f, 0x8e, 0x73, 0x2b, 0x14, 0xc9, 0x0e, 0xb9, 0xdb, 0xe1, 0x04, 0xd9, + 0x4d, 0xcc, 0x67, 0x32, 0xff, 0xb3, 0x78, 0x68, 0xd0, 0x9c, 0xe7, 0xe0, + 0xb3, 0x2f, 0x8e, 0x98, 0xab, 0x39, 0x38, 0x4e, 0xec, 0x33, 0xfa, 0x7c, + 0x38, 0x37, 0xe5, 0x0d, 0x64, 0x8a, 0xf7, 0x66, 0x1d, 0x70, 0x23, 0x8a, + 0x9c, 0x9f, 0xc0, 0xe3, 0xfc, 0x59, 0x03, 0xfa, 0xc1, 0xd3, 0xda, 0x06, + 0x07, 0x04, 0x08, 0x10, 0x1a, 0x6a, 0x08, 0xf0, 0x60, 0xc5, 0xc5, 0x84, + 0x8e, 0xf0, 0x65, 0x32, 0xd8, 0x34, 0x40, 0x83, 0xc7, 0xb7, 0xe6, 0x23, + 0x35, 0x55, 0xb7, 0x18, 0x76, 0x10, 0x04, 0x40, 0x7a, 0x33, 0xb0, 0xf6, + 0xd6, 0xcb, 0x16, 0xe7, 0xb3, 0xa6, 0xc3, 0xec, 0x3e, 0xc9, 0xf4, 0x00, + 0x64, 0x2c, 0xb2, 0xcc, 0x84, 0xe6, 0xbc, 0x23, 0x49, 0x28, 0x6a, 0x81, + 0x06, 0x81, 0x50, 0xb9, 0xf5, 0x36, 0x6b, 0x07, 0x24, 0x7b, 0xbc, 0x53, + 0x17, 0x78, 0x93, 0x34, 0x8f, 0x1f, 0xec, 0xec, 0xfc, 0x70, 0xc3, 0xe0, + 0xae, 0x33, 0x16, 0x8b, 0xe2, 0x57, 0xdc, 0xad, 0x69, 0x78, 0xda, 0x7b, + 0x68, 0xdc, 0xe9, 0x07, 0x0a, 0x08, 0x40, 0x4c, 0xcc, 0x12, 0x87, 0x1a, + 0xc0, 0x6d, 0x8e, 0xa0, 0x82, 0x06, 0xb8, 0x49, 0x60, 0xb0, 0x28, 0x8e, + 0xc5, 0xc3, 0x6d, 0xf2, 0xe5, 0xfd, 0x42, 0xcd, 0xf0, 0x7c, 0xa1, 0xe2, + 0xd8, 0xaa, 0x79, 0xe4, 0xa9, 0x09, 0x8c, 0x8c, 0xa7, 0x50, 0x0c, 0x70, + 0xda, 0x3c, 0x9f, 0x4c, 0x1c, 0x6a, 0x1a, 0x7e, 0xb0, 0x93, 0x06, 0x1b, + 0x2c, 0xac, 0x16, 0xfe, 0x66, 0x82, 0xeb, 0x9d, 0xd6, 0x9c, 0xdb, 0xbc, + 0x79, 0xa6, 0xbe, 0x9b, 0x01, 0x5b, 0x05, 0xde, 0x90, 0x7a, 0xc6, 0x61, + 0xb1, 0xe0, 0xdf, 0xa9, 0xcd, 0xf4, 0x44, 0x22, 0x07, 0xfe, 0x7d, 0x3e, + 0xea, 0x2f, 0xad, 0x2f, 0x72, 0x5c, 0x2b, 0xae, 0x21, 0x34, 0x6b, 0x8c, + 0x7a, 0x95, 0x90, 0x37, 0x12, 0xf2, 0x55, 0xdf, 0x82, 0x82, 0x2c, 0xd2, + 0xfe, 0x3f, 0xa5, 0xaa, 0x6a, 0x74, 0xab, 0xb4, 0xf4, 0xaa, 0x5d, 0xda, + 0x7c, 0x5e, 0xd3, 0xc4, 0x00, 0xac, 0x98, 0x3c, 0x39, 0xd2, 0xdc, 0x4d, + 0x37, 0x76, 0x93, 0xf2, 0x36, 0xfe, 0xd3, 0x74, 0xe0, 0xda, 0x6c, 0x85, + 0x93, 0x41, 0xea, 0x0a, 0xcc, 0x48, 0x01, 0xce, 0x3c, 0xbb, 0x49, 0x49, + 0xd7, 0x9b, 0x81, 0x57, 0xb8, 0x15, 0x98, 0x75, 0x83, 0x5b, 0x09, 0x00, + 0x25, 0x05, 0x96, 0x7f, 0xca, 0xdb, 0x0e, 0xca, 0x28, 0xe9, 0xa0, 0x54, + 0x3f, 0x19, 0x26, 0x3e, 0x4d, 0x79, 0x0b, 0x8f, 0x34, 0x2d, 0xc8, 0xba, + 0x31, 0xc5, 0x71, 0x57, 0x40, 0x59, 0x28, 0x27, 0xd9, 0xc1, 0x94, 0x94, + 0x17, 0x28, 0x92, 0xde, 0xce, 0x37, 0xb4, 0x02, 0x6b, 0x9b, 0xff, 0xda, + 0x86, 0xd7, 0xf5, 0xeb, 0x3d, 0x67, 0xc7, 0x1c, 0x59, 0xd6, 0xe9, 0x62, + 0x2b, 0x9c, 0x53, 0x9b, 0x3d, 0x57, 0x20, 0x94, 0x09, 0xa6, 0x64, 0x81, + 0x52, 0x4a, 0x34, 0xef, 0x7a, 0x4d, 0xff, 0xc2, 0x9b, 0x7b, 0xa9, 0xbc, + 0x9f, 0xec, 0xa0, 0x92, 0xce, 0x37, 0x94, 0x43, 0x14, 0x52, 0xce, 0x40, + 0x49, 0x4d, 0x2e, 0x29, 0x6f, 0x5f, 0x54, 0x46, 0x52, 0x62, 0xa1, 0xb5, + 0xb2, 0x83, 0x3d, 0xaf, 0xc1, 0x0d, 0x29, 0x60, 0x58, 0xe8, 0x01, 0xc4, + 0xed, 0x03, 0xb9, 0x82, 0x0b, 0x29, 0xb5, 0x15, 0xb6, 0x83, 0x31, 0xe0, + 0x90, 0x6f, 0xe6, 0x9c, 0x66, 0x1e, 0x69, 0x62, 0xb0, 0x15, 0x95, 0x5a, + 0xed, 0x78, 0xec, 0x29, 0xa5, 0x4a, 0x17, 0xcc, 0xf3, 0x08, 0x3c, 0x4a, + 0xad, 0xde, 0x85, 0x37, 0x3e, 0x39, 0x88, 0x82, 0x72, 0x88, 0xee, 0x53, + 0xfd, 0xd3, 0x72, 0x0a, 0xe6, 0x00, 0x89, 0x64, 0x9a, 0x56, 0x22, 0xf4, + 0xb4, 0x8d, 0x2c, 0x4c, 0x36, 0xe0, 0x91, 0x42, 0x48, 0xcb, 0x01, 0x60, + 0x3e, 0x00, 0x55, 0x2b, 0x29, 0x41, 0xa4, 0x48, 0x7b, 0x0a, 0x4b, 0x00, + 0xa2, 0x5f, 0x29, 0x77, 0x0a, 0xd5, 0x27, 0xe5, 0xbe, 0x92, 0xf6, 0xe3, + 0xdf, 0x55, 0x31, 0x65, 0x97, 0x52, 0xaa, 0x44, 0xd9, 0x44, 0x19, 0x04, + 0x10, 0x47, 0x16, 0x3b, 0xd8, 0x83, 0xa7, 0xb7, 0x8f, 0x9f, 0x6f, 0x07, + 0xa8, 0x47, 0x45, 0x30, 0x38, 0xd4, 0xf9, 0x11, 0xcf, 0xbf, 0xe5, 0x09, + 0xf0, 0x2c, 0xbf, 0xc1, 0x90, 0x6e, 0x7c, 0x26, 0x3f, 0x13, 0xd2, 0x22, + 0x04, 0xf6, 0x45, 0x0b, 0x69, 0xa9, 0x6a, 0x63, 0x88, 0x21, 0x06, 0x58, + 0x0d, 0x29, 0x54, 0xb5, 0x45, 0x95, 0x9f, 0xe5, 0x84, 0x29, 0x52, 0x15, + 0xda, 0x8a, 0x4a, 0x01, 0x54, 0x3e, 0x45, 0x4b, 0xa5, 0x46, 0xa5, 0xa5, + 0xf9, 0xaf, 0xac, 0x6a, 0xd2, 0x84, 0x50, 0x63, 0x72, 0x05, 0x68, 0x0c, + 0xca, 0x5b, 0xa7, 0xd3, 0xc5, 0x40, 0xa9, 0x65, 0x07, 0xbf, 0xaa, 0xc1, + 0x77, 0x9f, 0x70, 0x82, 0x6a, 0x44, 0x2c, 0x1e, 0x1b, 0xe6, 0x5c, 0x1d, + 0x71, 0x6e, 0x9d, 0xab, 0x46, 0xb4, 0x81, 0x2e, 0x17, 0xb4, 0x54, 0x1a, + 0xf5, 0x5e, 0xe2, 0x58, 0xe0, 0xd6, 0xea, 0x09, 0xa5, 0x68, 0xb6, 0x04, + 0x31, 0xa3, 0x54, 0x28, 0x30, 0x53, 0xc0, 0x43, 0x84, 0x08, 0xc1, 0x44, + 0x14, 0x64, 0x01, 0x14, 0x38, 0x11, 0x03, 0x0a, 0x7a, 0xc3, 0x99, 0x25, + 0x0e, 0xcf, 0x06, 0xd4, 0x3e, 0x34, 0xfd, 0x0e, 0x39, 0xe0, 0x4c, 0xe0, + 0x4c, 0x48, 0xf1, 0x98, 0x08, 0x04, 0xb9, 0xd0, 0x47, 0xbc, 0x80, 0x87, + 0x70, 0x97, 0x19, 0x1d, 0x2b, 0x9f, 0x0f, 0x6e, 0x47, 0x21, 0xec, 0x70, + 0x04, 0xd3, 0xd2, 0x47, 0x28, 0xff, 0x3d, 0xa4, 0x3e, 0x40, 0x9a, 0xba, + 0xc2, 0x4f, 0x24, 0x07, 0x86, 0x79, 0xa8, 0xf3, 0xf5, 0xa2, 0x34, 0xdf, + 0x56, 0xc6, 0x66, 0x64, 0x04, 0x0c, 0x22, 0xa0, 0x00, 0x73, 0x93, 0x4a, + 0x30, 0x16, 0x0c, 0x48, 0x02, 0x49, 0x53, 0xd3, 0xde, 0x03, 0x63, 0x44, + 0xc4, 0x58, 0x1a, 0x0a, 0x18, 0x80, 0x01, 0x00, 0x03, 0x02, 0x06, 0x00, + 0x03, 0x8c, 0x05, 0x00, 0x00, 0x04, 0x30, 0x01, 0x00, 0x0c, 0x00, 0xc0, + 0x90, 0xc4, 0x03, 0x03, 0xd0, 0xad, 0xa1, 0x76, 0x51, 0xd2, 0xa5, 0xf6, + 0x80, 0xdc, 0x99, 0x4b, 0xa5, 0x31, 0x61, 0x8e, 0xde, 0xea, 0x35, 0xae, + 0x32, 0x26, 0x35, 0xf0, 0xdc, 0x90, 0xea, 0x00, 0x9f, 0x9b, 0x28, 0x5f, + 0x3a, 0x6e, 0xdb, 0x58, 0x39, 0x06, 0xec, 0xc2, 0xda, 0x4e, 0x6e, 0x3a, + 0xa0, 0x3b, 0x6c, 0xab, 0x4c, 0x62, 0xd7, 0x15, 0xb5, 0x5a, 0xa6, 0x01, + 0xa8, 0xbb, 0xf9, 0x7b, 0x01, 0xec, 0x76, 0xef, 0x4b, 0xca, 0x3e, 0x98, + 0x7e, 0xc6, 0x93, 0xe7, 0xdd, 0xee, 0x80, 0x55, 0x93, 0xa4, 0xc4, 0xcb, + 0xc2, 0x12, 0x64, 0xcd, 0xca, 0xc7, 0x60, 0x8c, 0x7d, 0x7a, 0x24, 0x0e, + 0xdf, 0xa9, 0xbc, 0x91, 0x5a, 0x04, 0x03, 0xf0, 0xae, 0xd3, 0x69, 0x51, + 0x6c, 0x8f, 0x04, 0xb1, 0x92, 0x18, 0x80, 0xe4, 0x0c, 0xa8, 0xf3, 0x0b, + 0x28, 0xbb, 0xad, 0xe3, 0x5f, 0x74, 0x28, 0x64, 0x3c, 0xa0, 0x9f, 0xd3, + 0xb2, 0x0e, 0xcb, 0xc8, 0xde, 0x0b, 0xed, 0x66, 0xf8, 0x52, 0xd4, 0x80, + 0x3d, 0x4e, 0x13, 0x8d, 0xef, 0x76, 0x01, 0x59, 0x03, 0x0d, 0xe8, 0x4e, + 0xec, 0xd7, 0x96, 0x5e, 0x76, 0x70, 0x37, 0xe6, 0xed, 0x46, 0x3c, 0x0b, + 0x84, 0xd7, 0x64, 0xde, 0x9a, 0x84, 0xcd, 0x87, 0x1e, 0xf1, 0x3c, 0xea, + 0x4c, 0x69, 0x8f, 0xfc, 0xff, 0x74, 0xe6, 0xdf, 0x31, 0xf6, 0x2e, 0x96, + 0x0f, 0xe8, 0x94, 0x18, 0x8c, 0xc3, 0x71, 0x03, 0xc3, 0x76, 0x92, 0x6a, + 0x08, 0x7b, 0x3f, 0xd5, 0x03, 0xfa, 0xb5, 0xd5, 0xbb, 0x15, 0xa0, 0xa7, + 0x9f, 0xc4, 0x1e, 0x80, 0x66, 0x2c, 0x6c, 0x6b, 0xc0, 0x46, 0x8e, 0xfa, + 0x12, 0x4a, 0x35, 0x80, 0xdd, 0xc6, 0xa3, 0x21, 0xae, 0x6e, 0xd8, 0xa7, + 0xb3, 0xeb, 0xf8, 0xb8, 0x73, 0xdb, 0xf4, 0x61, 0x75, 0x58, 0x3e, 0xa0, + 0x09, 0x0b, 0xdf, 0x4d, 0x6e, 0x5b, 0xf2, 0xd6, 0x9b, 0xb2, 0xfa, 0x6c, + 0x13, 0xd5, 0x4e, 0xbd, 0x08, 0x1d, 0xa1, 0xd9, 0xaa, 0xcd, 0x5a, 0xe2, + 0xd8, 0x85, 0x3d, 0x80, 0x54, 0xf4, 0x0c, 0xd0, 0x1f, 0x68, 0xaa, 0x3d, + 0xe2, 0xd3, 0x2a, 0xfc, 0x58, 0xe6, 0xf9, 0xd4, 0x04, 0xb2, 0x28, 0xbf, + 0xd7, 0xaf, 0x6f, 0xeb, 0x5b, 0xa4, 0x0c, 0xb8, 0x32, 0x60, 0x1d, 0x7b, + 0x71, 0x02, 0xec, 0x94, 0x6f, 0x3b, 0x93, 0xf3, 0x49, 0x53, 0x8a, 0x70, + 0x05, 0xdb, 0x9d, 0x11, 0xf3, 0x8e, 0xf0, 0x62, 0x80, 0xa4, 0x33, 0x20, + 0x23, 0x97, 0x01, 0x88, 0x0c, 0x01, 0x09, 0xc6, 0xd0, 0x32, 0x29, 0xe4, + 0x2e, 0x40, 0x22, 0x18, 0xac, 0x08, 0xd0, 0x25, 0x31, 0xe0, 0x7a, 0xb3, + 0xb0, 0x30, 0x40, 0x08, 0xb3, 0x0b, 0x13, 0xb9, 0xeb, 0x22, 0x75, 0xf5, + 0x4f, 0x09, 0x82, 0x39, 0xe0, 0xa6, 0xe0, 0x39, 0xc0, 0xdb, 0xfd, 0x6e, + 0x2e, 0xd1, 0x28, 0x64, 0x98, 0x59, 0x38, 0x25, 0x06, 0xdc, 0x6a, 0x96, + 0x29, 0xf8, 0xd8, 0xad, 0xd1, 0xeb, 0x2e, 0xe7, 0xce, 0x85, 0x77, 0xa9, + 0x8d, 0x3d, 0xc9, 0x34, 0xd2, 0xd4, 0x32, 0xcf, 0x18, 0x00, 0x34, 0xce, + 0x61, 0xd0, 0x81, 0x36, 0x86, 0x2e, 0x03, 0x6e, 0x19, 0xdb, 0xfe, 0xfe, + 0x9b, 0x03, 0x9c, 0x07, 0xe8, 0x8e, 0x76, 0x00, 0xea, 0x10, 0x71, 0x40, + 0x5c, 0x5c, 0xa3, 0xdd, 0xc9, 0x0c, 0x0e, 0xe1, 0xbb, 0xf6, 0xc3, 0x45, + 0x7b, 0xf8, 0x17, 0x34, 0x14, 0x83, 0xd7, 0xc8, 0x35, 0x1f, 0x4b, 0x06, + 0xe8, 0xf0, 0x59, 0xac, 0xc8, 0x48, 0x5a, 0x62, 0xd3, 0x06, 0x89, 0x6d, + 0x55, 0x01, 0xbb, 0xeb, 0x0c, 0x5a, 0x50, 0x93, 0x8f, 0xae, 0xe8, 0x1f, + 0x50, 0xd9, 0xe7, 0xbd, 0xd8, 0x33, 0x99, 0x96, 0xbe, 0x74, 0x6b, 0x10, + 0x8d, 0x01, 0xf1, 0x3c, 0xef, 0x31, 0x7a, 0x6d, 0x14, 0x4b, 0x32, 0x03, + 0x08, 0x92, 0x5b, 0x8e, 0x67, 0x46, 0xef, 0x8e, 0xc3, 0x01, 0x28, 0x2d, + 0x37, 0x09, 0xb2, 0xe3, 0x80, 0xb9, 0x60, 0xbc, 0xcb, 0xba, 0x5c, 0x2b, + 0xdb, 0xc5, 0xa1, 0x87, 0xba, 0x03, 0x7c, 0x71, 0x55, 0xc4, 0xd4, 0xf7, + 0xa3, 0xd9, 0xe9, 0x0e, 0xb0, 0xf2, 0xf7, 0xc3, 0xe3, 0xaf, 0x06, 0x67, + 0x27, 0x4f, 0x38, 0x6e, 0x0f, 0x68, 0xae, 0x51, 0xe3, 0xc1, 0x67, 0xd0, + 0xc1, 0x67, 0x2a, 0x9a, 0x1c, 0x10, 0x7f, 0xef, 0x9e, 0xee, 0x6e, 0x7e, + 0x6b, 0xb6, 0xd0, 0x63, 0x8a, 0x9c, 0x15, 0x98, 0x66, 0x25, 0x8d, 0xd3, + 0x0f, 0x78, 0x55, 0xf4, 0x01, 0x08, 0xf5, 0x22, 0xb7, 0x7f, 0x55, 0x26, + 0xd1, 0x72, 0x00, 0x96, 0x97, 0x67, 0x3f, 0xbb, 0x9b, 0x3d, 0x83, 0x99, + 0xbc, 0xd1, 0x60, 0xde, 0x2e, 0x02, 0xb8, 0xb6, 0x2a, 0x0c, 0x56, 0x61, + 0x68, 0x0c, 0xfd, 0xd1, 0xe0, 0xdb, 0x75, 0x2e, 0x21, 0x77, 0x94, 0xea, + 0xd8, 0x8c, 0x9a, 0xbd, 0x21, 0xaa, 0x00, 0x9a, 0xb3, 0x37, 0x01, 0x23, + 0xbb, 0x2d, 0xf7, 0x9f, 0x1c, 0xa1, 0x2e, 0x4a, 0xdb, 0x45, 0xff, 0x21, + 0xe9, 0xd2, 0xb5, 0x0c, 0xfb, 0x3c, 0x01, 0x03, 0x3f, 0xb1, 0x3f, 0x08, + 0xd9, 0xb9, 0x8b, 0xc8, 0x47, 0x8c, 0x19, 0x66, 0xb1, 0x2b, 0xac, 0x08, + 0x75, 0x57, 0x77, 0xb2, 0xa7, 0x0c, 0x7e, 0x88, 0x1d, 0x97, 0x1e, 0x80, + 0x88, 0xeb, 0x03, 0xd6, 0xfd, 0xec, 0xbf, 0xa9, 0xe1, 0x60, 0x96, 0xc6, + 0x07, 0x87, 0x98, 0x7e, 0x68, 0xdc, 0xda, 0x6e, 0x58, 0x42, 0xda, 0xc0, + 0x8a, 0xb1, 0xf1, 0x7a, 0x3e, 0xa7, 0xe3, 0x68, 0x47, 0x85, 0x3a, 0x8f, + 0x08, 0xc6, 0x3a, 0x8d, 0xae, 0x17, 0x8a, 0x79, 0x21, 0x18, 0xf7, 0xbc, + 0x67, 0x87, 0xb2, 0x2e, 0x1b, 0x00, 0xa1, 0x9d, 0xa7, 0x01, 0x08, 0x9c, + 0x54, 0xe8, 0xaa, 0x67, 0xb1, 0xf2, 0x11, 0xd1, 0x80, 0x9a, 0x7a, 0xc0, + 0x68, 0x82, 0x93, 0x16, 0x0d, 0xcf, 0x0f, 0x55, 0x03, 0x72, 0xe5, 0x01, + 0x19, 0x4d, 0xab, 0xca, 0xbc, 0x28, 0xfa, 0x1d, 0x89, 0xc0, 0xd7, 0x34, + 0x00, 0x76, 0x7b, 0x84, 0x7e, 0x5a, 0xb1, 0xc4, 0x1d, 0xc0, 0x90, 0xe9, + 0x01, 0x48, 0xfc, 0x80, 0x18, 0x00, 0xd1, 0x7c, 0x07, 0x2c, 0x4b, 0x03, + 0x68, 0xe3, 0xbe, 0x5b, 0x0d, 0xf8, 0x3e, 0x8b, 0x07, 0x04, 0x45, 0x06, + 0xdc, 0xe0, 0xef, 0x01, 0xa8, 0x55, 0xec, 0x61, 0x5d, 0x5d, 0x7b, 0x22, + 0x35, 0xe1, 0x83, 0x79, 0x80, 0x00, 0x36, 0x00, 0x79, 0x9a, 0xcc, 0x82, + 0xfc, 0x8d, 0x5f, 0x0e, 0x80, 0xae, 0xfa, 0x01, 0xe8, 0x24, 0x65, 0x01, + 0x41, 0x31, 0x11, 0xaa, 0xad, 0xfa, 0x1b, 0x80, 0x0d, 0xc8, 0xa2, 0x26, + 0x9c, 0x21, 0x5f, 0x43, 0x0c, 0x20, 0xa8, 0x2c, 0x24, 0xf3, 0x3e, 0xa2, + 0xf0, 0xb2, 0x01, 0xe8, 0x02, 0x00, 0x5a, 0x40, 0x78, 0x8d, 0x53, 0x1c, + 0x80, 0x32, 0x80, 0xef, 0xc0, 0x03, 0x0f, 0x9b, 0x0f, 0x18, 0x9d, 0x9b, + 0x5f, 0x65, 0x5f, 0xc6, 0xf2, 0x48, 0xf0, 0x77, 0xd9, 0x80, 0x65, 0x6b, + 0xbc, 0x2c, 0xc3, 0x2a, 0xf9, 0x75, 0x00, 0x3a, 0x5f, 0xee, 0x59, 0x6a, + 0x78, 0x6a, 0x2a, 0x6f, 0xd5, 0xa1, 0xbb, 0xf2, 0x38, 0x60, 0xb2, 0x9b, + 0x52, 0x2d, 0xb0, 0x69, 0x7d, 0xed, 0x00, 0xd4, 0x7f, 0x17, 0xfa, 0x1e, + 0x3a, 0x62, 0x94, 0x19, 0xc6, 0x2b, 0x69, 0x1b, 0x80, 0x98, 0x55, 0xf4, + 0xb0, 0x1d, 0x80, 0x6a, 0xab, 0x77, 0x04, 0x97, 0xc7, 0x5a, 0xc9, 0xe7, + 0x00, 0xba, 0x30, 0xcc, 0xe1, 0xc3, 0x87, 0x90, 0xe1, 0x0e, 0xa3, 0x3e, + 0x0d, 0xb0, 0xe1, 0x7c, 0x7a, 0x18, 0xf6, 0x93, 0x1c, 0x4e, 0x4c, 0x29, + 0xbe, 0x58, 0x42, 0x4b, 0xe8, 0x01, 0x2a, 0xd7, 0x18, 0x2d, 0x8d, 0x04, + 0x0c, 0x8a, 0x3d, 0xc9, 0x54, 0x94, 0x7d, 0xc2, 0x20, 0xb3, 0x3e, 0x43, + 0x41, 0x99, 0x46, 0x27, 0xba, 0x96, 0x99, 0xf7, 0xf1, 0x99, 0x56, 0x06, + 0x8f, 0x83, 0xe6, 0x05, 0x63, 0x92, 0x0d, 0x40, 0x88, 0x2e, 0x57, 0xbf, + 0xbe, 0x35, 0x7c, 0x1f, 0xae, 0x8d, 0xf6, 0x1d, 0xc1, 0xed, 0x01, 0xfd, + 0x39, 0x20, 0x64, 0xf3, 0x2b, 0xf5, 0xda, 0x1b, 0xb4, 0x47, 0x2b, 0xa8, + 0x57, 0x9a, 0xb0, 0x32, 0xaa, 0x44, 0x19, 0xdb, 0x23, 0xb9, 0x82, 0x3b, + 0x11, 0x3b, 0x5b, 0x10, 0xb5, 0x12, 0xc1, 0x99, 0x68, 0xf2, 0x49, 0xe0, + 0x0f, 0x60, 0x9c, 0x18, 0x55, 0xb6, 0x60, 0xd9, 0x09, 0x61, 0xee, 0xa1, + 0x43, 0x67, 0x48, 0x8b, 0x05, 0x9f, 0x10, 0x5f, 0x6a, 0x55, 0x45, 0x57, + 0x07, 0x58, 0x12, 0x03, 0x10, 0xfd, 0x02, 0x92, 0xc9, 0xf6, 0x0a, 0x95, + 0xd9, 0x84, 0x39, 0xcf, 0xca, 0x31, 0x5b, 0x02, 0x94, 0x0d, 0xd0, 0xd1, + 0x82, 0x1c, 0x94, 0x12, 0x10, 0x5b, 0x15, 0xc6, 0xb1, 0x89, 0x9e, 0x39, + 0xe9, 0x37, 0x99, 0xf2, 0x91, 0x5d, 0xc0, 0xbf, 0xde, 0x49, 0x5a, 0x7e, + 0x14, 0xe2, 0xf6, 0xce, 0x65, 0xc5, 0xed, 0x64, 0x1b, 0x00, 0xfd, 0x63, + 0x81, 0xcc, 0x88, 0x8f, 0x65, 0x03, 0x90, 0x94, 0x07, 0x94, 0xd5, 0xe9, + 0xa6, 0xa0, 0x6e, 0xe9, 0x8d, 0x6d, 0x15, 0xbd, 0x03, 0x56, 0x67, 0x28, + 0x35, 0xa3, 0xc7, 0x19, 0x2e, 0xca, 0x95, 0xb2, 0xe9, 0x86, 0x52, 0xef, + 0x80, 0x32, 0x33, 0x4a, 0xb3, 0x22, 0x14, 0x1b, 0x4e, 0xa6, 0x0e, 0xa0, + 0x3c, 0xeb, 0x07, 0x83, 0xc3, 0xc1, 0xa2, 0x77, 0xc0, 0x96, 0xe7, 0x15, + 0xb8, 0x58, 0x11, 0x06, 0x99, 0x01, 0x4b, 0x77, 0x40, 0xa3, 0x53, 0xde, + 0x3a, 0xd1, 0x18, 0xbf, 0x5a, 0x2f, 0x4b, 0xe8, 0xdd, 0x20, 0x39, 0x3a, + 0x40, 0xf5, 0x50, 0x77, 0x04, 0x67, 0xce, 0x92, 0x09, 0x09, 0xd8, 0xcf, + 0x1e, 0x02, 0x66, 0x5e, 0xe0, 0x34, 0x21, 0x4f, 0x03, 0xe4, 0x5e, 0x60, + 0x35, 0xcb, 0x83, 0xb4, 0x64, 0x2b, 0xe3, 0xfa, 0xd6, 0x36, 0xb9, 0xa3, + 0x03, 0x42, 0x42, 0x83, 0xc2, 0xd6, 0x3a, 0x33, 0xde, 0x8d, 0x05, 0xb4, + 0x03, 0x76, 0x9c, 0x17, 0x25, 0x5b, 0x4c, 0xcd, 0x00, 0x75, 0x2d, 0xde, + 0x3c, 0x40, 0xba, 0xf1, 0x80, 0x78, 0xfa, 0x00, 0x68, 0xf8, 0x9d, 0x6b, + 0x40, 0xe4, 0x95, 0xfd, 0xa0, 0xb8, 0xb1, 0xb4, 0x5c, 0x19, 0x5a, 0x09, + 0x84, 0xe4, 0x45, 0x60, 0xc0, 0x05, 0xbd, 0xf3, 0x1b, 0xed, 0xb0, 0x58, + 0x3c, 0x57, 0x99, 0xb1, 0x0b, 0x9b, 0x79, 0x62, 0xf6, 0x90, 0xf2, 0x01, + 0x9b, 0x85, 0xb5, 0x05, 0x04, 0x4e, 0xa7, 0x01, 0xbb, 0x40, 0x5c, 0xb7, + 0x24, 0x10, 0x3e, 0x61, 0x02, 0x97, 0x37, 0x13, 0x89, 0xaf, 0x4b, 0x78, + 0x4b, 0x5b, 0x30, 0x96, 0x5a, 0x90, 0xc0, 0xa1, 0x76, 0x6c, 0x9c, 0xcc, + 0xc7, 0xa8, 0x83, 0x62, 0x76, 0x76, 0x24, 0x56, 0x4f, 0x5e, 0x25, 0xdb, + 0xd5, 0xc5, 0xdf, 0x06, 0x78, 0xe1, 0x14, 0x1b, 0x1d, 0x35, 0x92, 0x8c, + 0xc0, 0xac, 0xad, 0xc3, 0x69, 0xb3, 0xd4, 0xf1, 0x1b, 0x72, 0xf5, 0x72, + 0x20, 0x58, 0x1d, 0x1b, 0x46, 0x95, 0x98, 0x44, 0x0f, 0x8c, 0x4d, 0xe3, + 0x36, 0x02, 0x11, 0xcf, 0x37, 0x6a, 0x40, 0xb1, 0x1c, 0xa3, 0x8a, 0x62, + 0x9b, 0x4d, 0x1f, 0x09, 0xcb, 0x0a, 0x54, 0x33, 0xf3, 0x7f, 0xbd, 0x06, + 0x58, 0x7c, 0x6b, 0x58, 0x57, 0x02, 0xba, 0x2e, 0x51, 0x4a, 0x0e, 0x98, + 0x5c, 0x30, 0x96, 0x41, 0x75, 0x44, 0xdf, 0xa9, 0x27, 0xc5, 0x51, 0x62, + 0x9d, 0x3f, 0x68, 0x4e, 0x4e, 0x86, 0x6f, 0xe5, 0x4d, 0xed, 0xd5, 0xcd, + 0xae, 0xb6, 0x81, 0x51, 0xa4, 0xf1, 0x44, 0x5b, 0x0a, 0xf0, 0xca, 0x32, + 0x6d, 0x47, 0x1f, 0x24, 0xd8, 0xe3, 0x65, 0xec, 0x29, 0xd6, 0xa9, 0xb2, + 0x6e, 0x75, 0xb3, 0x4b, 0xe5, 0xbe, 0x09, 0x0c, 0x80, 0x25, 0x91, 0x36, + 0x24, 0x64, 0x9a, 0x07, 0x10, 0xdd, 0xeb, 0xe4, 0xda, 0xcc, 0x9b, 0x0f, + 0x78, 0xb6, 0x7f, 0xea, 0x80, 0x31, 0x1e, 0xf0, 0x07, 0xf4, 0x56, 0x72, + 0xa1, 0xe3, 0x53, 0xa0, 0x89, 0x5e, 0x71, 0x9b, 0xc1, 0xd2, 0xab, 0xda, + 0x8e, 0xba, 0x0c, 0x47, 0xe6, 0x00, 0x61, 0x25, 0x77, 0xd5, 0x58, 0x27, + 0x9c, 0x91, 0x55, 0x8c, 0x80, 0xc1, 0x7f, 0x80, 0x14, 0x4b, 0x76, 0xda, + 0xd9, 0x74, 0x32, 0x5b, 0x35, 0x7c, 0xef, 0x5e, 0x8b, 0x5b, 0xf9, 0x26, + 0x74, 0x56, 0xa8, 0xc1, 0x76, 0x8c, 0x96, 0xd6, 0xa1, 0xb6, 0x0e, 0x2b, + 0xc7, 0xbf, 0x80, 0x8a, 0x76, 0xe1, 0xfe, 0xf1, 0x18, 0x72, 0x77, 0x73, + 0x80, 0x1a, 0x2f, 0x62, 0x81, 0xd9, 0x49, 0x3a, 0x91, 0xda, 0xfb, 0x4a, + 0xb9, 0x03, 0xfc, 0x34, 0x63, 0xc4, 0x38, 0x3a, 0x9a, 0xa1, 0x6e, 0x76, + 0x80, 0x5d, 0x82, 0xf6, 0x3b, 0xc0, 0x6f, 0x4b, 0x18, 0xe0, 0x34, 0x3b, + 0xf2, 0xac, 0x9d, 0xbe, 0x01, 0x2b, 0x64, 0x3d, 0x00, 0xf1, 0xdb, 0x3d, + 0x6f, 0x56, 0x04, 0x92, 0x06, 0x38, 0xde, 0x16, 0xa9, 0xf9, 0x94, 0x6f, + 0x6e, 0xaa, 0x89, 0x5e, 0x96, 0xe1, 0xb7, 0x0a, 0xa2, 0xf7, 0x1b, 0xdf, + 0x21, 0xeb, 0x0e, 0x85, 0x4e, 0x9c, 0x1a, 0x11, 0xd7, 0xda, 0x69, 0xea, + 0x2e, 0xce, 0xa1, 0x64, 0x03, 0x64, 0xc5, 0xdf, 0xde, 0xeb, 0x8c, 0x1f, + 0x91, 0xa1, 0xb0, 0x81, 0xd5, 0xcc, 0x07, 0x48, 0x79, 0x76, 0xce, 0x06, + 0xb8, 0xb1, 0x22, 0xee, 0x84, 0x86, 0xac, 0xb2, 0x37, 0x84, 0x11, 0xe4, + 0xfc, 0x52, 0x00, 0x50, 0x2c, 0x50, 0x2f, 0xd1, 0x51, 0x19, 0x13, 0x1c, + 0x9c, 0x46, 0x60, 0x4c, 0xcf, 0xf4, 0x3d, 0x05, 0xa8, 0xe3, 0xfc, 0x60, + 0x9a, 0xc6, 0xbe, 0xd9, 0x13, 0xe2, 0x56, 0xed, 0x2e, 0xe0, 0x80, 0x66, + 0x81, 0x5b, 0xf8, 0x51, 0x00, 0xf1, 0xf8, 0x2c, 0x0e, 0xf8, 0xba, 0x20, + 0xae, 0xb2, 0x0b, 0x9e, 0xab, 0x7a, 0x7a, 0xc0, 0x48, 0xff, 0xc3, 0xb5, + 0x97, 0x39, 0xc1, 0x71, 0x1d, 0xc0, 0xa3, 0x39, 0x18, 0x8e, 0x0c, 0x56, + 0xb3, 0xe0, 0x51, 0x03, 0xde, 0xee, 0x28, 0xab, 0xf1, 0xb2, 0xb7, 0x4c, + 0xcd, 0x8f, 0xaa, 0x2b, 0xa3, 0xdc, 0x26, 0xbd, 0xe0, 0xb6, 0x58, 0xef, + 0x14, 0xa4, 0x10, 0x7e, 0x3a, 0x0a, 0xc0, 0xdb, 0x19, 0x16, 0x64, 0xc2, + 0x77, 0x80, 0xbb, 0x7f, 0x84, 0x60, 0x1b, 0xc0, 0x5c, 0x49, 0x7c, 0x4d, + 0xf2, 0xb2, 0x4a, 0x65, 0xf6, 0x00, 0xad, 0x7c, 0xc8, 0xce, 0x41, 0x6a, + 0xaa, 0xa9, 0x45, 0x60, 0xf2, 0x06, 0x54, 0x3e, 0xe0, 0x6f, 0xfe, 0x16, + 0x66, 0xf6, 0xb3, 0x1b, 0x07, 0x44, 0xb5, 0xaf, 0x54, 0xcb, 0x2a, 0x3d, + 0xd2, 0xd8, 0xe8, 0x37, 0x2f, 0xc9, 0x6e, 0xcf, 0x80, 0x2d, 0x1b, 0x09, + 0x71, 0x7d, 0x99, 0x9d, 0x5a, 0x4d, 0x3b, 0xb1, 0xd6, 0x61, 0x90, 0xe5, + 0x55, 0xf4, 0xdd, 0xe2, 0x9d, 0xf5, 0xb1, 0x85, 0x79, 0xba, 0x3b, 0xd9, + 0x1d, 0xd9, 0x50, 0xe7, 0xd5, 0xa3, 0x2b, 0xb9, 0xdf, 0xec, 0x07, 0x87, + 0xc5, 0x11, 0x30, 0xba, 0x0e, 0xdb, 0x86, 0xa5, 0xb7, 0x24, 0xe4, 0x51, + 0x23, 0x66, 0xb2, 0xd0, 0x62, 0xa6, 0xe6, 0x4b, 0x0e, 0x98, 0x72, 0x26, + 0x30, 0x36, 0xec, 0x75, 0xdf, 0x5f, 0xc8, 0xc6, 0xf7, 0x91, 0xb4, 0x3f, + 0x7b, 0x40, 0xb3, 0x56, 0x72, 0x1c, 0x50, 0x7e, 0x8a, 0x3c, 0xdb, 0xd6, + 0x3f, 0x23, 0x60, 0xd7, 0x63, 0xce, 0x00, 0xd2, 0x66, 0x01, 0xed, 0x5a, + 0xf9, 0xe9, 0x63, 0x2e, 0x82, 0x2b, 0x06, 0x67, 0x20, 0x97, 0x01, 0xce, + 0x58, 0x05, 0x50, 0x35, 0x32, 0x66, 0x2e, 0x3a, 0x05, 0xce, 0x44, 0x8d, + 0x9f, 0xdc, 0x64, 0xab, 0x61, 0x7d, 0xeb, 0x1b, 0x1c, 0xe3, 0x59, 0xc5, + 0x73, 0x76, 0xab, 0x33, 0x3d, 0x32, 0xc2, 0xb4, 0xde, 0xb6, 0xce, 0x66, + 0x22, 0x59, 0x13, 0x87, 0x09, 0xf1, 0x0e, 0xa8, 0xd1, 0x0c, 0x68, 0x7b, + 0xd2, 0x05, 0x89, 0xa3, 0xaf, 0x04, 0x66, 0xa7, 0xb8, 0xcf, 0x69, 0x90, + 0xe8, 0x31, 0x93, 0x03, 0x68, 0x59, 0x37, 0xe6, 0x11, 0xb4, 0x93, 0xd2, + 0x00, 0x1c, 0xeb, 0xa2, 0xa8, 0x6f, 0xb1, 0xd4, 0x98, 0xb4, 0xaa, 0x73, + 0xd1, 0x5a, 0x8a, 0x5d, 0xb9, 0x38, 0x20, 0x3f, 0x34, 0x2b, 0xb4, 0xf1, + 0xc5, 0x3e, 0x77, 0xed, 0x85, 0xd1, 0x07, 0x3c, 0x38, 0x60, 0x4c, 0xda, + 0x01, 0x17, 0xa0, 0xe9, 0x1d, 0xb6, 0x6b, 0x74, 0xff, 0x1b, 0xfb, 0x72, + 0x80, 0xaa, 0x05, 0xff, 0xb4, 0x20, 0x35, 0x57, 0x4b, 0x6d, 0x50, 0x3d, + 0x4f, 0x29, 0xa7, 0x4b, 0x9b, 0xc6, 0x7f, 0x05, 0x7b, 0xfb, 0x74, 0xc4, + 0x80, 0x03, 0x8c, 0x0c, 0x88, 0xde, 0xee, 0x9f, 0x36, 0x3e, 0xbd, 0x6f, + 0x38, 0x71, 0x4d, 0x5e, 0x7a, 0xf0, 0xd2, 0x20, 0x49, 0x5f, 0xae, 0xc6, + 0x1b, 0x79, 0xf8, 0xa1, 0x9c, 0x26, 0xd3, 0x66, 0xb2, 0x6e, 0x2f, 0xd9, + 0x03, 0x37, 0xdd, 0xe0, 0xe1, 0x07, 0x67, 0xa7, 0x38, 0x08, 0x5c, 0x1a, + 0x15, 0x7c, 0xac, 0xdd, 0xd8, 0xed, 0x97, 0xc5, 0x64, 0xff, 0xa1, 0x57, + 0xb4, 0x07, 0x97, 0x71, 0x51, 0xb1, 0x86, 0xb6, 0x01, 0xea, 0x1e, 0xb5, + 0xbe, 0x22, 0x9e, 0xe9, 0x05, 0xec, 0x01, 0xa4, 0x4f, 0x97, 0x1b, 0xe0, + 0x6d, 0xeb, 0xfa, 0x3e, 0xd9, 0x83, 0xfd, 0x04, 0x1a, 0x10, 0x1b, 0x3d, + 0x00, 0xc4, 0x49, 0x93, 0x84, 0x57, 0x26, 0xa0, 0x9b, 0x4c, 0x86, 0xeb, + 0x80, 0xcc, 0xd0, 0xc4, 0x01, 0x8d, 0x7e, 0x24, 0xd8, 0x09, 0x13, 0x85, + 0x6e, 0x08, 0x71, 0x1b, 0x18, 0x98, 0xa1, 0x6a, 0xcd, 0x4d, 0x00, 0x36, + 0x7f, 0x80, 0x05, 0x88, 0x24, 0x64, 0x8a, 0xf4, 0x11, 0xfb, 0x89, 0x59, + 0x8d, 0x46, 0xe1, 0x02, 0xdd, 0xcd, 0x24, 0x0a, 0x53, 0xc3, 0x01, 0x8d, + 0xc6, 0x8c, 0xb5, 0xee, 0xdd, 0x74, 0x25, 0xbb, 0x63, 0xab, 0x3c, 0xee, + 0xfc, 0xad, 0xb8, 0xf3, 0x1e, 0x80, 0x0a, 0x20, 0x4e, 0x49, 0x6a, 0x29, + 0xf5, 0x39, 0xae, 0xf2, 0xde, 0x57, 0x0b, 0x1d, 0x67, 0xf3, 0x23, 0x24, + 0x94, 0x87, 0xdb, 0x8d, 0xb8, 0x08, 0x63, 0x05, 0x29, 0xc6, 0x57, 0xbb, + 0x3f, 0x84, 0x2e, 0xee, 0xd0, 0x57, 0xd4, 0x85, 0xb7, 0xa5, 0x76, 0xdc, + 0xcd, 0x05, 0xc8, 0x2c, 0xbe, 0xb1, 0x87, 0x0a, 0x4c, 0x60, 0x0c, 0x9a, + 0x94, 0x43, 0x55, 0x77, 0x1a, 0xcf, 0x80, 0xe8, 0xe2, 0x01, 0x3f, 0xb6, + 0xe1, 0xdc, 0xee, 0xe1, 0xd2, 0xb4, 0x5a, 0xe6, 0x07, 0x0b, 0xd5, 0x3d, + 0xa2, 0xe7, 0xca, 0xd8, 0x2e, 0x8b, 0x8f, 0x29, 0xb9, 0x3d, 0x36, 0x3e, + 0xd2, 0xf5, 0xb2, 0x1e, 0xf2, 0xac, 0xb3, 0x48, 0x34, 0xb1, 0xed, 0x76, + 0x67, 0xc0, 0xd6, 0xdb, 0xf4, 0x21, 0x60, 0x75, 0xe2, 0xf3, 0x5d, 0x56, + 0xac, 0xb9, 0x87, 0x5d, 0x63, 0xf8, 0x90, 0x03, 0x39, 0x0d, 0x51, 0xc3, + 0x4c, 0x4c, 0x68, 0xfa, 0x80, 0xc0, 0xca, 0x80, 0x8a, 0xb9, 0x2e, 0x08, + 0x06, 0x9c, 0x09, 0x5e, 0x9c, 0x4c, 0x1c, 0xa8, 0xbf, 0xfb, 0x20, 0xeb, + 0x82, 0x0c, 0x30, 0x50, 0x8a, 0x01, 0xb8, 0x5c, 0xd1, 0x71, 0x54, 0xa3, + 0x45, 0x2e, 0xed, 0x36, 0xf3, 0xd4, 0xcc, 0x6a, 0x94, 0x11, 0xc0, 0xda, + 0x26, 0xc2, 0x56, 0x31, 0xc9, 0x3f, 0xdf, 0xe8, 0x01, 0x71, 0xe0, 0x30, + 0x5b, 0x82, 0xfd, 0x7e, 0x28, 0xdd, 0x9c, 0xcd, 0xa7, 0xdf, 0x95, 0x31, + 0x5f, 0x18, 0x78, 0xff, 0x75, 0x63, 0x99, 0xfc, 0xec, 0xce, 0x0c, 0x57, + 0x66, 0xdb, 0x7b, 0x18, 0xbe, 0xdc, 0xd9, 0x65, 0xff, 0x7e, 0x38, 0x76, + 0xef, 0x05, 0xad, 0x8e, 0x72, 0xc0, 0x16, 0xff, 0xd6, 0xb4, 0xce, 0x04, + 0x03, 0xdc, 0xf5, 0x37, 0xe5, 0xb6, 0x02, 0x3a, 0xe7, 0xef, 0xd8, 0xa5, + 0x7b, 0xe2, 0x24, 0x4a, 0xcf, 0xef, 0x5e, 0x38, 0x4d, 0x47, 0x72, 0x0f, + 0x9a, 0x10, 0xf4, 0x4b, 0xab, 0x16, 0x67, 0x1b, 0xf3, 0x6e, 0x1a, 0x71, + 0x15, 0x5a, 0xa5, 0x08, 0xba, 0x48, 0xc9, 0xa8, 0xce, 0x95, 0x1a, 0xab, + 0x18, 0xdf, 0xee, 0xef, 0xee, 0xf1, 0x3c, 0x80, 0x36, 0x6b, 0x6d, 0x62, + 0x62, 0x87, 0xcb, 0x24, 0x81, 0x87, 0x01, 0x54, 0xe2, 0x5a, 0xa4, 0x1d, + 0x4a, 0xc0, 0xb4, 0xec, 0xdd, 0xb0, 0x17, 0x57, 0x05, 0xa9, 0x66, 0xb1, + 0xe5, 0xc2, 0xaf, 0x35, 0x08, 0x8c, 0x41, 0xb1, 0xd8, 0x86, 0x4e, 0x05, + 0x9b, 0x96, 0xb6, 0xbf, 0xf2, 0x49, 0xc5, 0x2e, 0xf7, 0x37, 0x7c, 0xcc, + 0x32, 0x37, 0x00, 0x2f, 0xbd, 0xd6, 0x1d, 0x9b, 0x26, 0x83, 0x03, 0x40, + 0x99, 0x5a, 0xb3, 0x63, 0xd3, 0x15, 0xcd, 0x89, 0xaa, 0x1b, 0xaa, 0x9e, + 0xbd, 0x06, 0x5e, 0x3a, 0xf3, 0xe9, 0xb8, 0xdf, 0xea, 0xfb, 0x0d, 0x16, + 0x49, 0xbd, 0x20, 0xa6, 0xa0, 0xb9, 0x0e, 0xbb, 0x1e, 0xd6, 0x2e, 0x3e, + 0xbb, 0x0f, 0x72, 0x34, 0x1b, 0xed, 0x01, 0x45, 0xe6, 0xd0, 0x07, 0xd4, + 0x06, 0x92, 0x33, 0xab, 0x9c, 0xb7, 0xca, 0x70, 0x26, 0x8d, 0xb7, 0x21, + 0xab, 0x98, 0x03, 0x2a, 0x1d, 0xbe, 0x22, 0xcf, 0x2c, 0x98, 0x88, 0xb6, + 0x74, 0x40, 0x81, 0x0d, 0x70, 0xbe, 0xaa, 0x8c, 0xdb, 0x5e, 0x2b, 0x91, + 0xe6, 0x80, 0xd7, 0xbd, 0x28, 0x35, 0x12, 0x70, 0x3e, 0x0b, 0x27, 0x8e, + 0x87, 0x60, 0x19, 0xc8, 0x2e, 0x10, 0x8e, 0x06, 0x30, 0xec, 0x75, 0x13, + 0x7a, 0xc0, 0xc4, 0x4d, 0xaa, 0x57, 0xd9, 0x0d, 0xa0, 0xa7, 0x1f, 0xa0, + 0xdf, 0x70, 0x6f, 0x8d, 0xaa, 0x20, 0xc6, 0x77, 0xc0, 0xca, 0x45, 0x78, + 0x75, 0x1a, 0x4b, 0x77, 0x00, 0x8e, 0x93, 0xad, 0xc5, 0x62, 0xd1, 0xb4, + 0xb4, 0xfe, 0xed, 0x7d, 0x73, 0x13, 0xb9, 0xfc, 0x32, 0xc8, 0x3f, 0xa3, + 0x19, 0x05, 0xf4, 0x3f, 0x97, 0x5d, 0x7e, 0xb2, 0x85, 0xb5, 0x04, 0x4b, + 0x9d, 0xa1, 0xde, 0x2d, 0x95, 0x4f, 0xca, 0x2e, 0xe9, 0xdd, 0x76, 0x0a, + 0x7c, 0xc8, 0x44, 0x17, 0xb2, 0xce, 0x3c, 0x15, 0xab, 0xb9, 0xa9, 0x59, + 0x7c, 0x54, 0x4c, 0x83, 0xe7, 0x09, 0x34, 0x27, 0x04, 0x54, 0x5c, 0xa3, + 0x35, 0x57, 0x2d, 0x8f, 0x1e, 0x26, 0xa8, 0xf4, 0x28, 0xda, 0xa2, 0xb4, + 0xdb, 0x54, 0x0b, 0xb4, 0x07, 0x63, 0xc5, 0xdb, 0xb4, 0x20, 0x6a, 0x00, + 0xf1, 0xa5, 0xe8, 0x8b, 0xe4, 0x35, 0xc4, 0x96, 0x54, 0x76, 0x00, 0x5e, + 0x37, 0x72, 0x7e, 0x15, 0xe8, 0x6e, 0x8b, 0x98, 0x13, 0x2d, 0x06, 0x64, + 0x71, 0x80, 0x43, 0x96, 0x60, 0x1b, 0x00, 0xe7, 0x70, 0x48, 0xf6, 0xf4, + 0x23, 0x0b, 0x16, 0x8a, 0x4c, 0x28, 0x50, 0x83, 0x32, 0x23, 0x34, 0x65, + 0x72, 0xb1, 0xcb, 0x84, 0x01, 0x34, 0xc2, 0x28, 0x96, 0x51, 0x1d, 0x06, + 0x65, 0x6f, 0xe1, 0x0a, 0x9f, 0xce, 0x80, 0xa3, 0x77, 0xf5, 0x36, 0x04, + 0x3e, 0x7b, 0xe8, 0xe7, 0xac, 0x6a, 0x04, 0x6e, 0x0a, 0x8c, 0xe8, 0x01, + 0x65, 0xec, 0xbd, 0x1b, 0x99, 0xea, 0x4b, 0xde, 0x7d, 0xc1, 0x9d, 0xa0, + 0xcc, 0x1b, 0x1f, 0xe0, 0x0a, 0xa5, 0x1f, 0x7a, 0x26, 0x02, 0x6a, 0x5a, + 0xe2, 0x4c, 0x58, 0x77, 0x2f, 0x04, 0x73, 0xe8, 0x60, 0x68, 0xc0, 0x26, + 0xf1, 0x0d, 0x56, 0x16, 0xa7, 0x0b, 0x47, 0x28, 0x00, 0x4a, 0x3b, 0xa9, + 0x8b, 0x56, 0xb9, 0xee, 0xf9, 0x2c, 0x33, 0xbd, 0xf2, 0x3a, 0xc4, 0x40, + 0xf6, 0x8b, 0x62, 0x40, 0x06, 0xd8, 0x22, 0x43, 0x8d, 0xa3, 0x05, 0xc2, + 0x73, 0xd1, 0x04, 0x4e, 0x65, 0x5d, 0x26, 0xe0, 0xd7, 0x5d, 0x7d, 0x4c, + 0x24, 0x7f, 0x8d, 0x27, 0xa7, 0xfd, 0xae, 0xd1, 0x8e, 0xf6, 0x75, 0xd9, + 0x4d, 0x1d, 0x23, 0x69, 0xb5, 0x20, 0xe0, 0x00, 0xce, 0xe2, 0x28, 0xdb, + 0x41, 0x07, 0xda, 0x01, 0xb4, 0x53, 0x29, 0xd9, 0x75, 0x0d, 0xd1, 0x98, + 0x9a, 0x5c, 0x5b, 0xf4, 0x7c, 0x79, 0xde, 0x64, 0x1e, 0x10, 0x32, 0x19, + 0xd7, 0x58, 0x6c, 0xc6, 0x00, 0x50, 0x4d, 0x67, 0x44, 0x7f, 0x09, 0xd8, + 0x92, 0x65, 0x1b, 0x3a, 0x8c, 0x81, 0x2f, 0x90, 0x70, 0xd3, 0x80, 0x2a, + 0x53, 0xaa, 0xb0, 0xd0, 0x15, 0x55, 0x9a, 0x5a, 0x70, 0x6a, 0x2f, 0xc4, + 0x6b, 0xac, 0xa5, 0x21, 0x61, 0xa0, 0x62, 0xae, 0x0a, 0xc9, 0xd2, 0x79, + 0xd2, 0xe8, 0x8c, 0x7a, 0xe1, 0xe8, 0x2e, 0x3b, 0x1e, 0x20, 0xe6, 0xa5, + 0x39, 0x32, 0xcd, 0xf4, 0x91, 0x03, 0x3b, 0x4c, 0x99, 0x3f, 0x60, 0x00, + 0x97, 0xed, 0xc0, 0x40, 0xa5, 0x1b, 0xe6, 0x02, 0x60, 0x1e, 0xa9, 0x73, + 0x9e, 0x27, 0xc6, 0x56, 0x7a, 0x66, 0xc9, 0x55, 0x8b, 0xf9, 0x0f, 0x49, + 0x13, 0x82, 0x0f, 0xa3, 0x4b, 0x44, 0xbc, 0x5a, 0x1c, 0xd1, 0xec, 0xf4, + 0xfc, 0xd9, 0xba, 0x6b, 0x2e, 0xad, 0xdd, 0x93, 0xe7, 0x5b, 0xc6, 0x1a, + 0x31, 0x8c, 0xb4, 0x0a, 0xab, 0x65, 0x4d, 0xd9, 0xbc, 0x27, 0x98, 0x2e, + 0x02 +}; + +/** + * Destination for decoding \c #srcZstd. + */ +static char dstDxt1[sizeof rawDxt1] = {}; + +#ifndef ZSTD_VERSION_MAJOR +/** + * For the case where the decompression library hasn't been included we add a + * dummy function to fake the process and stop the buffers being optimised out. + */ +size_t ZSTD_decompress(void* dst, size_t dstLen, const void* src, size_t srcLen) { + return (memcmp(dst, src, (srcLen < dstLen) ? srcLen : dstLen)) ? dstLen : 0; +} +#endif + +//****************************************************************************/ + +/** + * Simple single-file test to decompress \c #srcZstd into \c # dstDxt1 then + * compare the resulting bytes with \c #rawDxt1. + * \n + * As a (naive) comparison, removing Zstd and building with "-Os -g0 simple.c" + * results in a 48kB binary (macOS 10.14, Clang 10); re-adding Zstd increases + * the binary by 74kB. + */ +int main() { + size_t bytes = ZSTD_decompress(dstDxt1, sizeof dstDxt1, srcZstd, sizeof srcZstd); + printf("Decompressed size: %ld (expected %ld)\n", bytes, sizeof dstDxt1); + printf("Byte comparison: %s\n", (memcmp(rawDxt1, dstDxt1, sizeof dstDxt1)) ? "failed" : "succeeded"); + return 0; +} diff --git a/contrib/declib/zstddeclib-in.c b/contrib/declib/zstddeclib-in.c new file mode 100755 index 000000000..8f06c2617 --- /dev/null +++ b/contrib/declib/zstddeclib-in.c @@ -0,0 +1,66 @@ +/** + * \file zstddeclib.c + * Single-file Zstandard decompressor. + * + * Generate using: + * \code + * makelib.sh -r "../../lib ../../lib/common ../../lib/decompress" zstddeclib-in.c > zstddeclib.c + * \endcode + */ +/* + * BSD License + * + * For Zstandard software + * + * Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name Facebook nor the names of its contributors may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Settings to bake for the standalone decompressor. + */ +#define DEBUGLEVEL 0 +#define XXH_NAMESPACE ZSTD_ +#define XXH_PRIVATE_API +#define XXH_INLINE_ALL +#define ZSTD_LEGACY_SUPPORT 0 +#define ZSTD_LIB_COMPRESSION 0 +#define ZSTD_LIB_DEPRECATED 0 +#define ZSTD_NOBENCH +#define ZSTD_STATIC_LINKING_ONLY +#define ZSTD_STRIP_ERROR_STRINGS + +#include "debug.c" +#include "entropy_common.c" +#include "error_private.c" +#include "fse_decompress.c" +#include "xxhash.c" +#include "zstd_common.c" +#include "huf_decompress.c" +#include "zstd_ddict.c" +#include "zstd_decompress.c" +#include "zstd_decompress_block.c" From 5144e66095a7e0a8d6a1395b84aed1a081f3c261 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Fri, 23 Aug 2019 23:04:21 +0200 Subject: [PATCH 035/163] Revert "Merge remote-tracking branch 'origin/master' into dev" This reverts commit 0df29a4e5ff118ec7aa870ea9c032e9f99870e43, reversing changes made to 69c875a0cc771098f9ae9bb7a0a3e3ff6eb3f5c1. --- lib/common/compiler.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/common/compiler.h b/lib/common/compiler.h index f22093110..6686b837d 100644 --- a/lib/common/compiler.h +++ b/lib/common/compiler.h @@ -128,7 +128,7 @@ } /* vectorization */ -#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 5 +#if !defined(__clang__) && defined(__GNUC__) # define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize"))) #else # define DONT_VECTORIZE From 36a59336da12d172e58f3768cd9e072ae59edfb7 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Fri, 23 Aug 2019 23:09:13 +0200 Subject: [PATCH 036/163] Minor fix for files with spaces. Typo. --- contrib/declib/combine.sh | 2 +- contrib/declib/zstddeclib-in.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/declib/combine.sh b/contrib/declib/combine.sh index 4a4afc3a5..ba05028ba 100755 --- a/contrib/declib/combine.sh +++ b/contrib/declib/combine.sh @@ -46,7 +46,7 @@ function add_file { # And we've not previously encountered it FOUND="$FOUND $inc" echo "/**** start inlining $inc ****/" - add_file $inc + add_file "$inc" echo "/**** ended inlining $inc ****/" else echo "/**** skipping file: $inc ****/" diff --git a/contrib/declib/zstddeclib-in.c b/contrib/declib/zstddeclib-in.c index 8f06c2617..73320af7f 100755 --- a/contrib/declib/zstddeclib-in.c +++ b/contrib/declib/zstddeclib-in.c @@ -4,7 +4,7 @@ * * Generate using: * \code - * makelib.sh -r "../../lib ../../lib/common ../../lib/decompress" zstddeclib-in.c > zstddeclib.c + * combine.sh -r "../../lib ../../lib/common ../../lib/decompress" zstddeclib-in.c > zstddeclib.c * \endcode */ /* From d760e35ebcd3fd1e06baefd1ed0e6d06eebc3293 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Sun, 25 Aug 2019 22:49:01 +0200 Subject: [PATCH 037/163] Preparing to run tests Combine script more robust and can output to a specified file. Initial buck files added (work in progress). --- contrib/declib/BUCK | 11 ++++++++ contrib/declib/README.md | 2 +- contrib/declib/combine.sh | 51 ++++++++++++++++++++++++++-------- contrib/declib/tests/BUCK | 5 ++++ contrib/declib/tests/simple.c | 12 +++++--- contrib/declib/zstddeclib-in.c | 2 +- 6 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 contrib/declib/BUCK create mode 100644 contrib/declib/tests/BUCK diff --git a/contrib/declib/BUCK b/contrib/declib/BUCK new file mode 100644 index 000000000..e04f5e82d --- /dev/null +++ b/contrib/declib/BUCK @@ -0,0 +1,11 @@ +sh_test( + name='combine', + visibility=['PUBLIC'], + test='combine.sh', + args=[ + '-r', '../../lib', + '-r', '../../lib/common', + '-r', '../../lib/decompress', + '-o', 'zstddeclib.c', + 'zstddeclib-in.c'] +) diff --git a/contrib/declib/README.md b/contrib/declib/README.md index 727b3e8fa..bb22c2423 100644 --- a/contrib/declib/README.md +++ b/contrib/declib/README.md @@ -3,6 +3,6 @@ Create the file using the shell script: ``` cd zstd/contrib/declib -./combine.sh -r "../../lib ../../lib/common ../../lib/decompress" zstddeclib-in.c > zstddeclib.c +./combine.sh -r ../../lib -r ../../lib/common -r ../../lib/decompress -o zstddeclib.c zstddeclib-in.c ``` Then add the resulting file to your project (see the [test sources](tests) for examples). diff --git a/contrib/declib/combine.sh b/contrib/declib/combine.sh index ba05028ba..b95977e32 100755 --- a/contrib/declib/combine.sh +++ b/contrib/declib/combine.sh @@ -1,6 +1,8 @@ #!/bin/bash # Tool to bundle multiple C/C++ source files, inlining any includes. +# +# TODO: ROOTS and FOUND as arrays (since they fail on paths with spaces) # Common file roots ROOTS="./" @@ -8,11 +10,15 @@ ROOTS="./" # Files previously visited FOUND="" +# Optional destination file (empty string to write to stdout) +DESTN="" + # Prints the script usage then exits function usage { - echo "Usage: $0 [-r ] infile" + echo "Usage: $0 [-r ] [-o ] infile" echo " -r file root search paths" - echo "Example: $0 -r \"../my/path ../my/other\" in.c > out.c" + echo " -o output file (otherwise stdout)" + echo "Example: $0 -r ../my/path - r ../other/path -o out.c in.c" exit 1 } @@ -26,6 +32,15 @@ function list_has_item { return 1 } +# Adds a new line with the supplied arguments to $DESTN (or stdout) +function write_line { + if [ -n "$DESTN" ]; then + printf "%s\n" "$@" >> "$DESTN" + else + printf "%s\n" "$@" + fi +} + # Adds the contents of $1 with any of its includes inlined function add_file { # Match the path @@ -35,7 +50,7 @@ function add_file { file="$root/$1" fi done - if [ "$file" != "" ]; then + if [ -n "$file" ]; then # Read the file local line while IFS= read -r line; do @@ -45,26 +60,29 @@ function add_file { if ! `list_has_item "$FOUND" "$inc"`; then # And we've not previously encountered it FOUND="$FOUND $inc" - echo "/**** start inlining $inc ****/" + write_line "/**** start inlining $inc ****/" add_file "$inc" - echo "/**** ended inlining $inc ****/" + write_line "/**** ended inlining $inc ****/" else - echo "/**** skipping file: $inc ****/" + write_line "/**** skipping file: $inc ****/" fi else # Otherwise write the source line - echo "$line" + write_line "$line" fi done < "$file" else - echo "#error Unable to find \"$1\"" + write_line "#error Unable to find \"$1\"" fi } -while getopts ":r:" opts; do +while getopts ":r:o:" opts; do case $opts in r) - ROOTS="$ROOTS $OPTARG" + ROOTS="$OPTARG $ROOTS" + ;; + o) + DESTN="$OPTARG" ;; *) usage @@ -73,8 +91,17 @@ while getopts ":r:" opts; do done shift $((OPTIND-1)) -if [ "$1" != "" ]; then - add_file $1 +if [ -n "$1" ]; then + if [ -f "$1" ]; then + if [ -n "$DESTN" ]; then + printf "" > "$DESTN" + fi + add_file $1 + else + echo "Input file not found: '$1'" + exit 1 + fi else usage fi +exit 0 diff --git a/contrib/declib/tests/BUCK b/contrib/declib/tests/BUCK new file mode 100644 index 000000000..9e3621ae4 --- /dev/null +++ b/contrib/declib/tests/BUCK @@ -0,0 +1,5 @@ +cxx_test( + name='simple', + srcs=['simple.c'], + deps=['//contrib/declib:combine'] +) diff --git a/contrib/declib/tests/simple.c b/contrib/declib/tests/simple.c index cb200c938..2dda4b06e 100644 --- a/contrib/declib/tests/simple.c +++ b/contrib/declib/tests/simple.c @@ -3385,8 +3385,12 @@ size_t ZSTD_decompress(void* dst, size_t dstLen, const void* src, size_t srcLen) * the binary by 74kB. */ int main() { - size_t bytes = ZSTD_decompress(dstDxt1, sizeof dstDxt1, srcZstd, sizeof srcZstd); - printf("Decompressed size: %ld (expected %ld)\n", bytes, sizeof dstDxt1); - printf("Byte comparison: %s\n", (memcmp(rawDxt1, dstDxt1, sizeof dstDxt1)) ? "failed" : "succeeded"); - return 0; + size_t size = ZSTD_decompress(dstDxt1, sizeof dstDxt1, srcZstd, sizeof srcZstd); + int compare = memcmp(rawDxt1, dstDxt1, sizeof dstDxt1); + printf("Decompressed size: %ld (expected %ld)\n", size, sizeof dstDxt1); + printf("Byte comparison: %s\n", (compare) ? "failed" : "succeeded"); + if (size == sizeof dstDxt1 && compare == 0) { + return EXIT_SUCCESS; + } + return EXIT_FAILURE; } diff --git a/contrib/declib/zstddeclib-in.c b/contrib/declib/zstddeclib-in.c index 73320af7f..e0c8d51a0 100755 --- a/contrib/declib/zstddeclib-in.c +++ b/contrib/declib/zstddeclib-in.c @@ -4,7 +4,7 @@ * * Generate using: * \code - * combine.sh -r "../../lib ../../lib/common ../../lib/decompress" zstddeclib-in.c > zstddeclib.c + * combine.sh -r ../../lib -r ../../lib/common -r ../../lib/decompress -o zstddeclib.c zstddeclib-in.c * \endcode */ /* From ea8f6d2a079051ce944d6b8e69fe1d50cce9aea9 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Mon, 26 Aug 2019 07:48:57 +0200 Subject: [PATCH 038/163] Able to test combine script; minor tidy --- contrib/declib/BUCK | 10 +++++----- contrib/declib/combine.sh | 14 +++++++++----- contrib/declib/tests/BUCK | 4 +++- contrib/declib/tests/simple.c | 11 ++++++----- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/contrib/declib/BUCK b/contrib/declib/BUCK index e04f5e82d..bfbca1244 100644 --- a/contrib/declib/BUCK +++ b/contrib/declib/BUCK @@ -3,9 +3,9 @@ sh_test( visibility=['PUBLIC'], test='combine.sh', args=[ - '-r', '../../lib', - '-r', '../../lib/common', - '-r', '../../lib/decompress', - '-o', 'zstddeclib.c', - 'zstddeclib-in.c'] + '-r', 'lib', + '-r', 'lib/common', + '-r', 'lib/decompress', + '-o', 'contrib/declib/zstddeclib.c', + 'contrib/declib/zstddeclib-in.c'] ) diff --git a/contrib/declib/combine.sh b/contrib/declib/combine.sh index b95977e32..b798a8a3e 100755 --- a/contrib/declib/combine.sh +++ b/contrib/declib/combine.sh @@ -45,11 +45,15 @@ function write_line { function add_file { # Match the path local file= - for root in $ROOTS; do - if test -f "$root/$1"; then - file="$root/$1" - fi - done + if [ -f "$1" ]; then + file="$1" + else + for root in $ROOTS; do + if test -f "$root/$1"; then + file="$root/$1" + fi + done + fi if [ -n "$file" ]; then # Read the file local line diff --git a/contrib/declib/tests/BUCK b/contrib/declib/tests/BUCK index 9e3621ae4..4e707f10e 100644 --- a/contrib/declib/tests/BUCK +++ b/contrib/declib/tests/BUCK @@ -1,5 +1,7 @@ -cxx_test( +# Note: we need to undef ZSTD_LEGACY_SUPPORT since Buck defines it elsewhere +cxx_binary( name='simple', srcs=['simple.c'], + preprocessor_flags=['-UZSTD_LEGACY_SUPPORT'], deps=['//contrib/declib:combine'] ) diff --git a/contrib/declib/tests/simple.c b/contrib/declib/tests/simple.c index 2dda4b06e..aad14666e 100644 --- a/contrib/declib/tests/simple.c +++ b/contrib/declib/tests/simple.c @@ -2,10 +2,11 @@ * \file simple.c * Simple standalone example of using the single-file \c zstddeclib. */ -#include "../zstddeclib.c" + +#include +#include -#include "stdio.h" -#include "string.h" +#include "../zstddeclib.c" //************************* Test Data (DXT texture) **************************/ @@ -3387,8 +3388,8 @@ size_t ZSTD_decompress(void* dst, size_t dstLen, const void* src, size_t srcLen) int main() { size_t size = ZSTD_decompress(dstDxt1, sizeof dstDxt1, srcZstd, sizeof srcZstd); int compare = memcmp(rawDxt1, dstDxt1, sizeof dstDxt1); - printf("Decompressed size: %ld (expected %ld)\n", size, sizeof dstDxt1); - printf("Byte comparison: %s\n", (compare) ? "failed" : "succeeded"); + printf("Decompressed size: %s\n", (size == sizeof dstDxt1) ? "OK" : "FAILED"); + printf("Byte comparison: %s\n", (compare == 0) ? "OK" : "FAILED"); if (size == sizeof dstDxt1 && compare == 0) { return EXIT_SUCCESS; } From 7c6fa8157984ce19d2b810f35de9bd0555f56f0d Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Mon, 26 Aug 2019 21:28:19 +0200 Subject: [PATCH 039/163] Added Emscripten example, removed Buck, minor tidy Work-in-progress. Added simple Emscripten WebGL example that adds 25kB when build with Zstd. Removed Buck (will replace). Minor correctness. --- contrib/declib/.gitignore | 2 + contrib/declib/BUCK | 11 - contrib/declib/tests/BUCK | 7 - contrib/declib/tests/emscripten.c | 952 ++++++++++++++++++++++++++++++ contrib/declib/tests/shell.html | 31 + contrib/declib/tests/simple.c | 8 +- 6 files changed, 990 insertions(+), 21 deletions(-) create mode 100644 contrib/declib/.gitignore delete mode 100644 contrib/declib/BUCK delete mode 100644 contrib/declib/tests/BUCK create mode 100644 contrib/declib/tests/emscripten.c create mode 100644 contrib/declib/tests/shell.html diff --git a/contrib/declib/.gitignore b/contrib/declib/.gitignore new file mode 100644 index 000000000..aa062d1e6 --- /dev/null +++ b/contrib/declib/.gitignore @@ -0,0 +1,2 @@ +zstddeclib.c + diff --git a/contrib/declib/BUCK b/contrib/declib/BUCK deleted file mode 100644 index bfbca1244..000000000 --- a/contrib/declib/BUCK +++ /dev/null @@ -1,11 +0,0 @@ -sh_test( - name='combine', - visibility=['PUBLIC'], - test='combine.sh', - args=[ - '-r', 'lib', - '-r', 'lib/common', - '-r', 'lib/decompress', - '-o', 'contrib/declib/zstddeclib.c', - 'contrib/declib/zstddeclib-in.c'] -) diff --git a/contrib/declib/tests/BUCK b/contrib/declib/tests/BUCK deleted file mode 100644 index 4e707f10e..000000000 --- a/contrib/declib/tests/BUCK +++ /dev/null @@ -1,7 +0,0 @@ -# Note: we need to undef ZSTD_LEGACY_SUPPORT since Buck defines it elsewhere -cxx_binary( - name='simple', - srcs=['simple.c'], - preprocessor_flags=['-UZSTD_LEGACY_SUPPORT'], - deps=['//contrib/declib:combine'] -) diff --git a/contrib/declib/tests/emscripten.c b/contrib/declib/tests/emscripten.c new file mode 100644 index 000000000..8902947fc --- /dev/null +++ b/contrib/declib/tests/emscripten.c @@ -0,0 +1,952 @@ +/** + * \file emscripten.c + * Emscripten example of using the single-file \c zstddeclib. Draws a rotating + * textured quad with data from the in-line Zstd compressed DXT1 texture (DXT1 + * being hardware compression, further compressed with Zstd). + * \n + * Compile using: + * \code + * emcc -Wall -Wextra -Os -g0 -lGL -s WASM=1 -o out.html emscripten.c + * \endcode + */ + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "../zstddeclib.c" + +//************************* Test Data (DXT texture) **************************/ + +/** + * Zstd compressed DXT1 256x256 texture source. + */ +static uint8_t const srcZstd[] = { + 0x28, 0xb5, 0x2f, 0xfd, 0x60, 0x00, 0x7f, 0xfd, 0xe2, 0x00, 0x8a, 0x05, + 0xc9, 0x3c, 0x5c, 0x00, 0x8e, 0x39, 0xb3, 0x01, 0xb3, 0xa8, 0xf4, 0xeb, + 0x13, 0x29, 0xfe, 0x37, 0xcd, 0x0a, 0x2e, 0xa8, 0xc3, 0xc2, 0xaf, 0xdf, + 0x28, 0x0b, 0x96, 0x5f, 0x79, 0x8b, 0xf8, 0xa2, 0xb8, 0x4f, 0x23, 0x4b, + 0xd4, 0xe8, 0x9c, 0xeb, 0xc9, 0xf8, 0xc3, 0xcd, 0xeb, 0xed, 0x68, 0xae, + 0x60, 0x7c, 0xe7, 0x61, 0x90, 0x00, 0x9d, 0x43, 0xbf, 0x2e, 0x88, 0x22, + 0x90, 0xab, 0x1b, 0x84, 0x37, 0x82, 0x73, 0x3e, 0x92, 0x9c, 0xbd, 0x83, + 0x34, 0x6e, 0x7a, 0x88, 0x92, 0x6c, 0x28, 0x06, 0x9a, 0x6c, 0xef, 0x65, + 0xb9, 0x6f, 0x66, 0xfe, 0x0a, 0x4c, 0x6a, 0xb8, 0x26, 0x21, 0x3d, 0x9a, + 0x03, 0xc3, 0x03, 0xb7, 0x03, 0x9d, 0xcf, 0x34, 0x91, 0x71, 0xff, 0x4f, + 0xd3, 0x76, 0x70, 0x0d, 0xfe, 0x12, 0x20, 0xc6, 0x61, 0x46, 0x4b, 0x47, + 0xe5, 0x9c, 0xd3, 0x71, 0x0e, 0x35, 0x47, 0x6a, 0x82, 0xf0, 0x19, 0x00, + 0x26, 0xe1, 0x6b, 0x00, 0x8f, 0x2f, 0xe0, 0x73, 0x51, 0xf1, 0x43, 0x02, + 0xd7, 0x31, 0x7f, 0x56, 0xf4, 0x7e, 0x44, 0x58, 0x3c, 0x5c, 0x49, 0x3a, + 0xee, 0xc9, 0x39, 0x0f, 0x57, 0x5d, 0x22, 0x86, 0x21, 0x64, 0xc4, 0xc3, + 0x75, 0x53, 0x79, 0x8f, 0x8a, 0x8a, 0x8a, 0xb9, 0x4f, 0x48, 0xe4, 0xef, + 0xd7, 0xf4, 0xff, 0x7c, 0xba, 0x4f, 0x32, 0xa7, 0x51, 0x96, 0x91, 0x76, + 0x0f, 0x2d, 0x83, 0xe7, 0xdc, 0x1a, 0xf5, 0x7a, 0xba, 0x48, 0x4e, 0x3b, + 0x3b, 0x6f, 0x6d, 0x07, 0x69, 0xba, 0xd7, 0xb3, 0xe9, 0xb5, 0x0d, 0x4b, + 0x1f, 0x0e, 0x81, 0x6e, 0x41, 0x1d, 0x71, 0xc7, 0x05, 0x38, 0xa7, 0x18, + 0xd0, 0x91, 0x3c, 0xde, 0x3b, 0xe4, 0x7d, 0x41, 0xed, 0xd2, 0x1b, 0x32, + 0x35, 0xd3, 0xc3, 0x38, 0xbe, 0xc9, 0x80, 0xf6, 0x70, 0x40, 0x89, 0xac, + 0x15, 0x74, 0x14, 0x0c, 0x66, 0x1b, 0xbd, 0x2f, 0xa0, 0x65, 0x9e, 0x4f, + 0x0c, 0xc8, 0x90, 0x82, 0xd7, 0x09, 0x25, 0x43, 0x10, 0x74, 0x12, 0x16, + 0xd6, 0x4b, 0x8a, 0xbd, 0xe2, 0x5f, 0x06, 0x27, 0x5e, 0x32, 0x38, 0x79, + 0x9d, 0xb4, 0x71, 0x9e, 0x6f, 0x2e, 0x92, 0x70, 0x2d, 0xf7, 0x69, 0xaa, + 0x00, 0xb4, 0x31, 0xa8, 0xf6, 0xea, 0x10, 0x5d, 0xca, 0x5c, 0xa8, 0x28, + 0x53, 0x86, 0x20, 0xdc, 0x27, 0x5a, 0x86, 0x84, 0x36, 0x71, 0xfe, 0x3f, + 0x55, 0x80, 0xd7, 0x69, 0x34, 0x42, 0xd5, 0x1b, 0xfc, 0xf7, 0xfe, 0xdf, + 0x03, 0x08, 0x26, 0x9a, 0xe6, 0x5c, 0x26, 0xab, 0xd5, 0x6e, 0x31, 0xa2, + 0x5e, 0xb0, 0xff, 0x57, 0x1a, 0x7a, 0x6b, 0x9c, 0x0e, 0x3a, 0x3c, 0xa8, + 0xda, 0x06, 0xea, 0xd7, 0x95, 0x52, 0x64, 0xae, 0x2f, 0x50, 0x23, 0xde, + 0x04, 0x7f, 0xd6, 0xac, 0x64, 0x68, 0x9a, 0x46, 0xe2, 0xf0, 0xde, 0x6c, + 0x45, 0x03, 0x79, 0x64, 0x76, 0x9f, 0x6e, 0x1f, 0x20, 0xe0, 0x22, 0x31, + 0xf7, 0x38, 0xff, 0x15, 0x47, 0xfc, 0xfc, 0xfe, 0xdf, 0x27, 0xb7, 0xc6, + 0xf8, 0x5f, 0x69, 0xce, 0x6f, 0xcd, 0xa3, 0xe1, 0x42, 0xd1, 0x07, 0x49, + 0x75, 0x91, 0x6e, 0x1f, 0xcf, 0xe7, 0x33, 0x9d, 0xb5, 0x8b, 0x2c, 0x1b, + 0x7f, 0xb0, 0x9a, 0x91, 0xdd, 0x7d, 0x82, 0x52, 0xed, 0xdc, 0x10, 0xa3, + 0x81, 0xc2, 0x7d, 0xaa, 0x5d, 0x7a, 0x3d, 0xe4, 0xd7, 0x0d, 0x3b, 0x08, + 0x04, 0x0e, 0xbb, 0xb6, 0x78, 0x3c, 0xa8, 0xe8, 0xd6, 0x6c, 0x26, 0x13, + 0xc7, 0x43, 0x22, 0xbb, 0x1d, 0xf2, 0xc9, 0xf3, 0x29, 0xc3, 0x64, 0xfa, + 0xe7, 0xf4, 0x91, 0x86, 0xd3, 0x54, 0xf7, 0x29, 0xba, 0xc5, 0x02, 0x02, + 0xc2, 0x11, 0x72, 0xd2, 0xbd, 0xb4, 0xc2, 0xc9, 0xf4, 0x76, 0x9e, 0x8d, + 0x54, 0x22, 0x51, 0xc6, 0x01, 0x24, 0x3a, 0x3a, 0x46, 0x26, 0x2f, 0x54, + 0x16, 0xcf, 0x5b, 0x1f, 0x77, 0x9c, 0x7f, 0x87, 0xa7, 0x53, 0xbc, 0x56, + 0x93, 0xa1, 0x70, 0x65, 0xd4, 0xce, 0x3b, 0x3a, 0x93, 0x93, 0xde, 0x5a, + 0xa8, 0xaa, 0xaa, 0xea, 0x16, 0x83, 0xb3, 0x30, 0x9f, 0x20, 0x01, 0xef, + 0x85, 0x7a, 0x86, 0x78, 0x9d, 0xcd, 0x9a, 0xd6, 0x8a, 0x68, 0x86, 0xe5, + 0x16, 0x87, 0x82, 0x52, 0xc1, 0x53, 0xd6, 0xe9, 0x88, 0xe5, 0xbc, 0x27, + 0x7d, 0x9d, 0xca, 0x9b, 0xdb, 0x40, 0x29, 0xbe, 0x50, 0xc9, 0xa5, 0x25, + 0x4e, 0xbb, 0x09, 0xaa, 0x58, 0x8d, 0x8a, 0x8a, 0x82, 0xa7, 0x46, 0xb6, + 0xe7, 0x41, 0x45, 0x3d, 0xe1, 0x20, 0xe4, 0xf5, 0x72, 0x6b, 0x16, 0x0f, + 0x0e, 0xd7, 0xc1, 0x06, 0xaf, 0xf3, 0x5e, 0x72, 0xfe, 0x94, 0xd5, 0x5c, + 0x24, 0xdf, 0x12, 0x12, 0x62, 0x92, 0x41, 0x5e, 0xe7, 0x5b, 0x3b, 0xa1, + 0x54, 0xc9, 0xdf, 0xeb, 0x24, 0xda, 0x00, 0xe7, 0x3d, 0xe3, 0xee, 0x67, + 0x14, 0x41, 0x54, 0xaa, 0xf8, 0x5c, 0x9e, 0xc8, 0xe2, 0x51, 0x42, 0xd3, + 0xb4, 0x2b, 0x23, 0x67, 0x7b, 0xeb, 0x3b, 0xba, 0x82, 0x26, 0xca, 0x32, + 0x38, 0x41, 0x2e, 0xd2, 0x0c, 0xaf, 0x33, 0xb7, 0xd6, 0x76, 0x72, 0xb6, + 0x7b, 0x79, 0x8b, 0xf1, 0xf5, 0x9f, 0x5c, 0xca, 0xad, 0x36, 0x64, 0x24, + 0x70, 0x0e, 0x4f, 0xb3, 0x78, 0x64, 0x10, 0xeb, 0x71, 0xe0, 0x0f, 0x21, + 0xd0, 0x45, 0xe2, 0x32, 0x0c, 0xb4, 0x32, 0xf8, 0x1a, 0xe4, 0x5b, 0x77, + 0x2e, 0x0e, 0x45, 0xc2, 0x8d, 0xbe, 0x86, 0x73, 0x7a, 0x8a, 0x73, 0x6e, + 0x4c, 0xe6, 0xd6, 0x66, 0x1b, 0x93, 0x00, 0x25, 0x76, 0x91, 0xa0, 0x48, + 0x48, 0xf8, 0x67, 0x32, 0x88, 0x31, 0xc9, 0xf9, 0x5b, 0x37, 0x67, 0x14, + 0x2b, 0x7c, 0xa4, 0x71, 0x79, 0xeb, 0xe2, 0xeb, 0x3c, 0xd2, 0x20, 0x73, + 0xb6, 0xd7, 0x79, 0x63, 0xe1, 0x2c, 0x21, 0x75, 0x63, 0x81, 0x13, 0xaf, + 0xbe, 0xd7, 0xd9, 0xbb, 0x12, 0x17, 0x29, 0x67, 0xeb, 0x6c, 0xac, 0xe9, + 0x04, 0x4d, 0x62, 0xe7, 0x1d, 0xf5, 0x80, 0x98, 0xb3, 0xc9, 0x2c, 0x80, + 0x44, 0x44, 0xbd, 0xee, 0xa5, 0x91, 0x91, 0x91, 0x30, 0x69, 0xb7, 0xdb, + 0x3d, 0x79, 0x9d, 0x45, 0x46, 0x6e, 0x1f, 0x38, 0x37, 0x20, 0x15, 0xef, + 0x7d, 0x3d, 0x59, 0x61, 0xa5, 0xd6, 0x4d, 0x74, 0x2b, 0x67, 0x63, 0xf2, + 0x5a, 0x16, 0x7a, 0xf6, 0xfe, 0xee, 0x93, 0x2c, 0xc4, 0xe3, 0xb7, 0x86, + 0x22, 0x81, 0xd5, 0x36, 0x39, 0xdb, 0x8a, 0xd7, 0x79, 0xc4, 0xda, 0x3d, + 0x2b, 0x4c, 0x26, 0x53, 0xa6, 0x5a, 0xad, 0xc6, 0x5c, 0x24, 0x39, 0xc9, + 0xc6, 0xe4, 0x5f, 0x79, 0x1b, 0x19, 0xf1, 0x7f, 0x9d, 0x38, 0x41, 0xbd, + 0x77, 0xfa, 0x16, 0x03, 0x48, 0xc4, 0xd7, 0xd7, 0x17, 0xf2, 0x16, 0xc3, + 0x47, 0xc4, 0xa7, 0xf7, 0xb7, 0x36, 0xfe, 0x7e, 0xbf, 0xdc, 0xda, 0xb9, + 0xfe, 0xc9, 0xf4, 0x44, 0x22, 0x31, 0xb7, 0xca, 0xb2, 0x0c, 0x4f, 0x39, + 0xe7, 0xb9, 0x15, 0x4a, 0x55, 0x73, 0x91, 0xf8, 0x9d, 0x9d, 0x1d, 0x9c, + 0xb8, 0xfe, 0x7d, 0xaf, 0xd7, 0x83, 0xa7, 0x50, 0x24, 0x32, 0xb3, 0xd9, + 0x0c, 0xe7, 0xd6, 0x3b, 0x8f, 0x89, 0x89, 0x89, 0x7a, 0x3d, 0x8f, 0xc7, + 0x83, 0xa7, 0xb5, 0x0b, 0xbf, 0xb9, 0xb9, 0xf9, 0x38, 0x8e, 0x5f, 0x67, + 0xd4, 0x0b, 0x06, 0x83, 0x71, 0x91, 0x10, 0x0a, 0x85, 0x50, 0x2a, 0x78, + 0xfa, 0x58, 0x58, 0x58, 0x2e, 0xd2, 0xfa, 0xf3, 0x3c, 0x33, 0xbd, 0x35, + 0xcf, 0x91, 0x23, 0x47, 0xd4, 0xcb, 0xe8, 0xf3, 0xf9, 0xde, 0xba, 0x77, + 0x78, 0xba, 0xf2, 0xff, 0x87, 0x52, 0xe5, 0x6c, 0x5f, 0xab, 0xd5, 0x5e, + 0x67, 0x6d, 0x13, 0xc6, 0xae, 0x1d, 0x79, 0x8e, 0x05, 0x83, 0xca, 0x17, + 0xe2, 0x88, 0x71, 0x30, 0xc3, 0xd5, 0x52, 0xd8, 0xe1, 0x1d, 0xd5, 0x19, + 0x6d, 0x34, 0xa7, 0xe1, 0xfa, 0x42, 0x9b, 0x4c, 0xcc, 0xf8, 0x2f, 0x93, + 0xf1, 0x7a, 0x0f, 0x56, 0x3b, 0x08, 0x58, 0xc4, 0xda, 0xeb, 0x84, 0x22, + 0x91, 0xcd, 0xc8, 0xb1, 0xf5, 0x7a, 0xbd, 0xb7, 0xde, 0xf1, 0x7a, 0xbc, + 0xe9, 0x59, 0x9c, 0xe1, 0xaa, 0x56, 0x56, 0x50, 0x62, 0x30, 0xa5, 0xa1, + 0xff, 0x1b, 0x8b, 0xde, 0x7b, 0xbc, 0xdd, 0x6f, 0x56, 0x7c, 0xf2, 0x28, + 0x29, 0x62, 0x4e, 0xd0, 0x50, 0x31, 0x89, 0x67, 0x07, 0xa1, 0x50, 0x02, + 0x2c, 0xe0, 0x3f, 0xba, 0x15, 0x93, 0x89, 0x80, 0xb1, 0x92, 0x99, 0xca, + 0x0a, 0x2c, 0x76, 0x53, 0xf5, 0x7f, 0x64, 0x41, 0xfe, 0xc8, 0xb2, 0xef, + 0xf6, 0xc1, 0x3a, 0xc9, 0xf0, 0xde, 0xff, 0x61, 0x28, 0xbd, 0x5f, 0xd5, + 0x66, 0x45, 0xce, 0x7b, 0xe2, 0xc4, 0x2f, 0x73, 0x81, 0x05, 0x1f, 0x11, + 0xda, 0xfa, 0x6c, 0x4b, 0x9b, 0x81, 0xd5, 0xdc, 0xc4, 0x5e, 0xa0, 0xf0, + 0xec, 0xa5, 0x0e, 0xcc, 0x5c, 0x02, 0x8d, 0x18, 0x1b, 0xc2, 0x1a, 0x8e, + 0x1d, 0x26, 0x8c, 0x48, 0x04, 0xd4, 0x20, 0x64, 0x88, 0xcd, 0x04, 0xb7, + 0x23, 0xb1, 0x74, 0x8a, 0xc3, 0xe9, 0xff, 0xde, 0xa9, 0x22, 0xbc, 0xf1, + 0x84, 0x9f, 0xe9, 0xca, 0xbd, 0x64, 0xd6, 0x38, 0x9b, 0x6d, 0xff, 0xb6, + 0x96, 0x5b, 0xed, 0x26, 0xab, 0x22, 0xcd, 0x2b, 0xa2, 0x19, 0x8a, 0xb8, + 0xff, 0x18, 0xac, 0xab, 0xa0, 0xce, 0x28, 0x06, 0x73, 0x5c, 0x88, 0x8e, + 0x80, 0x0a, 0x24, 0x87, 0x1d, 0xf4, 0x2d, 0x39, 0xe6, 0x0c, 0xd5, 0x3f, + 0x21, 0x99, 0x06, 0x12, 0x11, 0x45, 0x95, 0x51, 0x81, 0xcc, 0x44, 0x31, + 0x91, 0x2a, 0xc2, 0x57, 0x91, 0x0b, 0x84, 0x70, 0xa0, 0xed, 0xb2, 0x7b, + 0x7e, 0x3d, 0xcf, 0x59, 0x0d, 0xab, 0x84, 0xf5, 0x59, 0x16, 0xd6, 0xc2, + 0x5a, 0x98, 0x2d, 0x46, 0x83, 0xcd, 0x70, 0x30, 0x13, 0xab, 0x41, 0x99, + 0xce, 0xc4, 0x6e, 0x60, 0x68, 0xdc, 0xc0, 0xbc, 0x80, 0x79, 0x01, 0xa3, + 0x13, 0xf3, 0xa5, 0x13, 0xe3, 0x13, 0x33, 0xc7, 0x94, 0x50, 0x23, 0xa1, + 0x84, 0x1a, 0x8d, 0x1a, 0x8d, 0x9a, 0x0d, 0x13, 0x54, 0x1b, 0x26, 0x84, + 0x2d, 0xa6, 0xc2, 0x16, 0x38, 0x5a, 0xe0, 0x68, 0x91, 0xc3, 0x45, 0x0e, + 0x17, 0x46, 0x17, 0x32, 0xe4, 0x8b, 0x1a, 0x5e, 0x20, 0x5f, 0xd4, 0xf0, + 0x42, 0x48, 0x90, 0x90, 0x78, 0x48, 0x5c, 0x15, 0x0f, 0x09, 0x1a, 0x12, + 0x74, 0x44, 0xc8, 0x89, 0x09, 0x84, 0xa4, 0x42, 0x18, 0x90, 0x0a, 0x4d, + 0x67, 0x50, 0xa7, 0x33, 0x98, 0xcc, 0x50, 0x81, 0xc9, 0x0c, 0xea, 0x04, + 0xe8, 0x18, 0xc0, 0xa0, 0xc6, 0x7a, 0xbb, 0x99, 0x88, 0xda, 0xc1, 0xd7, + 0x08, 0xb8, 0x22, 0xe7, 0x54, 0x11, 0xfa, 0x01, 0x74, 0xa8, 0x22, 0xa8, + 0x40, 0x08, 0x15, 0x49, 0x53, 0x6a, 0xa5, 0xf8, 0x96, 0xd4, 0x2e, 0x40, + 0xf9, 0xc7, 0xe3, 0xfc, 0x39, 0xf3, 0x2d, 0xb1, 0x7b, 0x84, 0x6d, 0xd7, + 0x3f, 0x5f, 0x61, 0xec, 0xb7, 0xb0, 0x0f, 0x81, 0x06, 0xfb, 0x18, 0xb6, + 0xd8, 0x67, 0x80, 0xcd, 0xc0, 0x0c, 0x4d, 0xc6, 0x0b, 0xd8, 0x0b, 0x98, + 0x27, 0xa2, 0x13, 0xf3, 0x30, 0x68, 0x8b, 0xcc, 0x31, 0xb4, 0x4f, 0xcc, + 0xca, 0xcc, 0x8b, 0x00, 0x4a, 0xa8, 0x15, 0xc9, 0x11, 0xe3, 0x37, 0x58, + 0x3b, 0x62, 0x8f, 0xa3, 0xc5, 0x0b, 0x1f, 0x6e, 0x3b, 0x39, 0x5c, 0xec, + 0x70, 0xb1, 0x92, 0x83, 0xd1, 0xc5, 0xca, 0x96, 0x0b, 0x03, 0xf2, 0x05, + 0x07, 0xa6, 0x90, 0xa2, 0x54, 0xc5, 0xb2, 0x15, 0x5b, 0x43, 0x82, 0xde, + 0x27, 0x26, 0x80, 0xab, 0x47, 0x84, 0x7a, 0xae, 0x84, 0x54, 0x88, 0xc9, + 0x8c, 0x15, 0x78, 0xf0, 0x15, 0xa8, 0xa8, 0x33, 0xfe, 0x63, 0x51, 0x41, + 0x56, 0x4c, 0x3d, 0x88, 0x89, 0x38, 0xa6, 0xf4, 0x44, 0x92, 0x20, 0xe7, + 0xfc, 0xa9, 0x33, 0x56, 0xa0, 0x1a, 0x31, 0x62, 0xc4, 0x31, 0xab, 0xc7, + 0xf4, 0x04, 0xe7, 0x9d, 0xfe, 0xa7, 0xb9, 0x52, 0x4b, 0xa9, 0x55, 0xab, + 0xa1, 0x90, 0x35, 0x95, 0xa8, 0x56, 0x7b, 0x3f, 0xc6, 0x44, 0x3f, 0x1f, + 0x91, 0x6e, 0x54, 0x42, 0x4e, 0x2a, 0x32, 0xf2, 0x2f, 0x6b, 0x4c, 0x8b, + 0x83, 0x95, 0xc0, 0x34, 0x8a, 0x86, 0x96, 0x08, 0x4d, 0x03, 0x4a, 0x60, + 0xe0, 0xe4, 0x36, 0x00, 0x97, 0x95, 0x56, 0x53, 0xbc, 0x2e, 0xd2, 0xad, + 0x01, 0xef, 0xde, 0x77, 0x47, 0x9c, 0x02, 0x13, 0xce, 0x21, 0x86, 0x01, + 0x46, 0xa2, 0xdb, 0x51, 0x8d, 0xb7, 0x74, 0x39, 0xd0, 0xff, 0x0f, 0x57, + 0x75, 0x5b, 0x3c, 0x3d, 0xe8, 0xaa, 0x3d, 0x16, 0x8b, 0xc9, 0x25, 0x78, + 0xaa, 0xfd, 0xab, 0xf7, 0x6a, 0x13, 0x1d, 0xf3, 0x04, 0xe6, 0x0c, 0xc4, + 0xc2, 0xf1, 0xf4, 0x24, 0x9d, 0x29, 0xaf, 0x00, 0x76, 0xee, 0x2b, 0x11, + 0xd4, 0x83, 0x58, 0x57, 0x1e, 0xe7, 0x7c, 0x6b, 0x46, 0x84, 0x65, 0x20, + 0x11, 0xd1, 0x2d, 0x23, 0x1f, 0x11, 0x9d, 0xd1, 0x0f, 0x8c, 0x9d, 0x0e, + 0x90, 0xf8, 0x53, 0x02, 0x0a, 0x63, 0x06, 0x46, 0x72, 0x05, 0xd5, 0xb7, + 0xe4, 0x49, 0xdb, 0x55, 0xbb, 0x14, 0x6b, 0x3a, 0x9c, 0x20, 0xd3, 0x46, + 0x15, 0xe8, 0xec, 0xb0, 0x73, 0x05, 0xe1, 0x5b, 0x02, 0x24, 0xe2, 0xf9, + 0x7f, 0x0b, 0x21, 0x6a, 0xe5, 0xe0, 0x61, 0x2b, 0x07, 0x2b, 0xcc, 0x0a, + 0xc3, 0xb2, 0x60, 0x43, 0x60, 0x65, 0xb0, 0x32, 0x5a, 0x09, 0x20, 0xd9, + 0x16, 0x2d, 0x0e, 0xa3, 0x16, 0x47, 0x4b, 0xb7, 0x1a, 0xa0, 0xd1, 0x34, + 0x9a, 0x56, 0x84, 0x46, 0xc4, 0x86, 0x45, 0x2b, 0x62, 0xf3, 0xc1, 0xe6, + 0x83, 0xcb, 0x1a, 0x6f, 0x02, 0x70, 0x59, 0x15, 0x5c, 0xd6, 0x75, 0x5d, + 0xf7, 0x55, 0xc0, 0xab, 0x80, 0x77, 0xf7, 0xee, 0xc0, 0x35, 0xa6, 0xf0, + 0x0e, 0x4e, 0x01, 0x06, 0x23, 0x9c, 0x42, 0xbc, 0x43, 0x1a, 0xef, 0x88, + 0x73, 0x88, 0x79, 0xe8, 0xb6, 0x60, 0xe8, 0xb6, 0x78, 0x54, 0xa0, 0xeb, + 0x81, 0xa7, 0x6a, 0x83, 0xa7, 0xca, 0xf3, 0xe5, 0x84, 0xe7, 0xeb, 0xa7, + 0x84, 0x54, 0xb7, 0x61, 0xcc, 0x7a, 0x74, 0x45, 0x95, 0x8b, 0xa7, 0xdf, + 0x4e, 0xa0, 0xee, 0x65, 0xb1, 0xea, 0x23, 0x12, 0xf5, 0xfa, 0xf5, 0x38, + 0x94, 0x4a, 0xe8, 0xd3, 0xaa, 0x44, 0xbd, 0xb8, 0x9c, 0x04, 0xe4, 0x01, + 0x97, 0x69, 0xa2, 0x0d, 0xfc, 0xbf, 0x14, 0xce, 0xcd, 0xb7, 0xe4, 0xf9, + 0xcf, 0x3a, 0xf1, 0xff, 0x35, 0x86, 0x3f, 0x6c, 0x85, 0xf9, 0x18, 0x1b, + 0xa3, 0xf7, 0x28, 0x2c, 0x0b, 0xbe, 0xa6, 0xb4, 0x50, 0xab, 0x8a, 0xfb, + 0x37, 0xd9, 0x8a, 0x00, 0xf6, 0xf6, 0x2a, 0xbd, 0xeb, 0x01, 0x8b, 0xc3, + 0xdb, 0x19, 0xb7, 0x11, 0x6c, 0x08, 0xf7, 0x01, 0x9c, 0xe6, 0x82, 0x8b, + 0x22, 0x01, 0x2f, 0x8d, 0xde, 0x42, 0x00, 0x7e, 0x81, 0x46, 0x03, 0xf6, + 0xc0, 0xbb, 0x43, 0x3b, 0xa1, 0xf7, 0x3e, 0x78, 0x9a, 0x5c, 0x9a, 0xfd, + 0x7e, 0x3b, 0xde, 0x6e, 0xf7, 0x9b, 0xdf, 0xba, 0xfe, 0x39, 0x7b, 0x00, + 0x31, 0x9b, 0xe1, 0x8e, 0x4b, 0xdf, 0xce, 0xce, 0x90, 0x90, 0x50, 0x94, + 0x94, 0x14, 0x1d, 0x53, 0x8d, 0x76, 0x13, 0xd0, 0xea, 0x73, 0x6e, 0xaa, + 0x84, 0x37, 0x47, 0x96, 0xa7, 0x45, 0xb7, 0x82, 0xba, 0x86, 0x44, 0x41, + 0xde, 0x9f, 0xd7, 0x9c, 0x39, 0x58, 0x57, 0x44, 0x9c, 0xa0, 0xac, 0x1b, + 0x46, 0xdd, 0x47, 0x13, 0x6b, 0x35, 0x1d, 0x14, 0x50, 0x68, 0x79, 0x9d, + 0x5d, 0x79, 0x73, 0xe5, 0xfd, 0x3f, 0x55, 0x64, 0xd7, 0x2e, 0x5f, 0xb8, + 0xb7, 0x2e, 0xb2, 0xab, 0xc2, 0x15, 0xfe, 0x79, 0x7d, 0x81, 0x32, 0xb1, + 0x44, 0x9f, 0x4e, 0x25, 0x1d, 0x8a, 0x99, 0xaa, 0x58, 0xed, 0xa2, 0xc3, + 0x06, 0xe5, 0x7d, 0x2f, 0x65, 0x45, 0x46, 0x6a, 0x17, 0x2a, 0x21, 0xbb, + 0xa7, 0xc8, 0xa6, 0x4a, 0x26, 0x8b, 0xb2, 0xa1, 0xd2, 0x10, 0xfd, 0x3a, + 0x93, 0x41, 0x8e, 0x34, 0xff, 0xf7, 0x92, 0xc9, 0x0a, 0xd3, 0x50, 0xaa, + 0xd7, 0xc9, 0x3a, 0x29, 0xe9, 0xa8, 0x5a, 0x5a, 0xcf, 0x7f, 0xa1, 0x94, + 0x86, 0x50, 0x2c, 0x91, 0xcf, 0x9f, 0x4f, 0x19, 0xfa, 0x85, 0xe2, 0x22, + 0x61, 0x43, 0xef, 0x3a, 0x1d, 0x92, 0xff, 0xfa, 0xa2, 0x34, 0x54, 0x8c, + 0xe9, 0xe8, 0x40, 0xef, 0x34, 0xff, 0x3e, 0xc5, 0x91, 0x53, 0x35, 0x64, + 0xb5, 0xfa, 0xd7, 0xd2, 0xd2, 0x32, 0x7b, 0x6b, 0x39, 0x09, 0x8a, 0xe4, + 0x75, 0xd6, 0x36, 0x2c, 0x3a, 0x74, 0xe8, 0x78, 0x6b, 0x15, 0x2a, 0x6a, + 0x35, 0x28, 0x95, 0x4e, 0x93, 0x26, 0x28, 0xa0, 0xa0, 0x42, 0x45, 0x12, + 0xf1, 0x0a, 0x2b, 0x07, 0x9e, 0xda, 0x4d, 0x1f, 0xbc, 0xc9, 0xba, 0xf1, + 0xbd, 0xff, 0x5b, 0x0c, 0x9f, 0x3c, 0xbd, 0x97, 0x4f, 0x96, 0x9c, 0x24, + 0x2b, 0x20, 0xd2, 0x91, 0xa6, 0x2a, 0xe9, 0x78, 0xa5, 0x24, 0x42, 0x04, + 0x4f, 0x73, 0x0e, 0xe4, 0x7b, 0xe7, 0xf1, 0x2e, 0x20, 0xb5, 0x02, 0x29, + 0x69, 0x2b, 0xac, 0x1a, 0x39, 0xa7, 0x69, 0xd6, 0x47, 0x06, 0x4e, 0xb7, + 0x0f, 0xbe, 0xc3, 0x0e, 0x2b, 0xf0, 0xc8, 0xc2, 0xf9, 0x0d, 0x37, 0xb0, + 0xc3, 0x65, 0x0b, 0xfb, 0xa3, 0xd4, 0xe2, 0xdc, 0x66, 0x63, 0x87, 0x3d, + 0x80, 0x48, 0x42, 0x39, 0x2f, 0x52, 0x84, 0x1d, 0x4e, 0xd5, 0xe0, 0x7c, + 0x38, 0x5c, 0x81, 0x47, 0x33, 0x9c, 0xa7, 0x48, 0xb1, 0xc2, 0x53, 0x45, + 0xce, 0x65, 0x64, 0xb4, 0x78, 0x3b, 0x24, 0x72, 0x05, 0x2a, 0xef, 0x9b, + 0x1b, 0x21, 0xa1, 0xa8, 0x17, 0x3b, 0xe4, 0x7c, 0x65, 0x85, 0xfd, 0x19, + 0x2a, 0x6f, 0xce, 0x5d, 0x5c, 0x58, 0x27, 0x1e, 0x78, 0x00, 0x02, 0xd9, + 0xa1, 0x11, 0x23, 0x2b, 0xcc, 0x79, 0xdb, 0x72, 0xfe, 0xc3, 0x0f, 0x2b, + 0x1c, 0xf5, 0x02, 0xf2, 0x5e, 0x8f, 0x1e, 0xff, 0x47, 0x33, 0xff, 0xed, + 0x0f, 0xce, 0x81, 0x3e, 0x3e, 0xcd, 0x9a, 0x5f, 0x5a, 0xb2, 0x9b, 0x5a, + 0xab, 0xff, 0x68, 0xf4, 0xdf, 0xee, 0xe1, 0x9c, 0xfd, 0xe1, 0x3c, 0xb8, + 0xc2, 0xff, 0x42, 0x94, 0x58, 0x0c, 0x45, 0x69, 0xa8, 0x77, 0x9a, 0x21, + 0xa7, 0xae, 0x20, 0xfe, 0x34, 0x4d, 0x6d, 0x68, 0x67, 0x47, 0xce, 0xad, + 0xb5, 0x8d, 0xd0, 0x11, 0x5b, 0x64, 0xf7, 0x00, 0x22, 0xc8, 0xd3, 0x91, + 0xe6, 0xe6, 0x5b, 0xa2, 0xa3, 0x03, 0x29, 0x9e, 0x96, 0x0c, 0x22, 0xec, + 0xfd, 0x88, 0xfd, 0xf1, 0xc3, 0x25, 0x8b, 0x07, 0xca, 0x83, 0x07, 0x2d, + 0x25, 0x15, 0xe7, 0x5c, 0x5d, 0xe5, 0x56, 0xbb, 0x67, 0xfe, 0xed, 0x76, + 0xf0, 0xb4, 0xfe, 0xf1, 0xd7, 0xa9, 0xc3, 0x06, 0x27, 0x38, 0xee, 0x53, + 0x93, 0x06, 0x21, 0x78, 0xeb, 0x64, 0x10, 0x0e, 0x4f, 0x93, 0x4b, 0x4b, + 0x4a, 0x43, 0xb7, 0x18, 0x3c, 0x72, 0xb6, 0xda, 0xc6, 0xa6, 0xc8, 0x66, + 0x9d, 0x5e, 0x00, 0xc0, 0x45, 0x02, 0x8a, 0x84, 0x8b, 0x84, 0x4b, 0x17, + 0xce, 0x6d, 0x7d, 0xe9, 0x71, 0x82, 0xf5, 0xc5, 0xa9, 0xf8, 0x62, 0xf7, + 0xac, 0x30, 0x3f, 0xd6, 0x70, 0xb3, 0xdb, 0xc7, 0xd5, 0x11, 0x6b, 0x07, + 0xbb, 0x2c, 0xe3, 0xda, 0x8a, 0xfa, 0xd1, 0x35, 0xc2, 0x13, 0xa6, 0x94, + 0xf4, 0x06, 0x69, 0x77, 0x7a, 0x67, 0x15, 0xca, 0x07, 0x6a, 0x29, 0xa9, + 0x97, 0x97, 0x97, 0x93, 0x22, 0xfb, 0x88, 0x35, 0xe1, 0x05, 0x39, 0x29, + 0xb9, 0xa4, 0x81, 0x8b, 0xa4, 0xd4, 0xda, 0x60, 0x46, 0xce, 0x54, 0x8d, + 0x12, 0xb4, 0x00, 0x02, 0x89, 0xd0, 0x61, 0x43, 0x08, 0xc9, 0xa5, 0x9c, + 0xad, 0x78, 0xc4, 0xd6, 0x2e, 0xbc, 0x22, 0xfb, 0x5e, 0x0a, 0xd5, 0x36, + 0xad, 0xd5, 0x4a, 0x6b, 0x75, 0xc4, 0xb6, 0x3f, 0x94, 0xb7, 0xcb, 0x8d, + 0x45, 0xed, 0xc2, 0x03, 0xb0, 0xb5, 0xba, 0x7a, 0xeb, 0xda, 0x26, 0xa6, + 0xfd, 0xd1, 0x9c, 0x55, 0x6a, 0x99, 0xa3, 0x99, 0x22, 0x23, 0x2b, 0xe8, + 0xe8, 0x00, 0xfb, 0x33, 0xdb, 0x41, 0x1b, 0x4f, 0xeb, 0x1d, 0xc7, 0x0e, + 0xb3, 0x6e, 0x80, 0xd0, 0xc3, 0xff, 0x54, 0x8d, 0xb9, 0x76, 0x59, 0xe1, + 0x5a, 0x6d, 0xb3, 0xc2, 0x40, 0x1e, 0x4c, 0xd5, 0xb0, 0x83, 0x6f, 0x9d, + 0x75, 0xa3, 0x73, 0xfe, 0x7c, 0x7e, 0xbc, 0xca, 0x49, 0xf2, 0xd5, 0x36, + 0x45, 0x46, 0xa4, 0x5a, 0x20, 0x36, 0x31, 0x93, 0xe8, 0x90, 0x92, 0x4a, + 0xad, 0xa0, 0x7f, 0xf5, 0xde, 0x69, 0x39, 0x09, 0xca, 0x64, 0x82, 0x09, + 0x26, 0x24, 0xe5, 0xd6, 0xac, 0x1b, 0x2f, 0xbc, 0xf0, 0x02, 0x07, 0x38, + 0xb1, 0x52, 0x4b, 0x03, 0x0d, 0x34, 0xe0, 0xc0, 0x45, 0x6a, 0xb6, 0x4b, + 0x4b, 0x30, 0xd8, 0x88, 0x66, 0x68, 0xb6, 0x32, 0x64, 0xc8, 0x50, 0xc2, + 0x09, 0x8a, 0x7a, 0xb5, 0x68, 0xd1, 0x02, 0x47, 0xce, 0xd6, 0x6c, 0x6f, + 0xdc, 0xb8, 0x31, 0x04, 0x12, 0x91, 0x5c, 0xe2, 0xc1, 0x83, 0xc7, 0x0d, + 0x39, 0x9b, 0x1d, 0xc4, 0xe1, 0xec, 0x66, 0xab, 0x25, 0x6b, 0xc9, 0x42, + 0xf5, 0x6f, 0x6a, 0x6a, 0x2a, 0x46, 0x6b, 0xc1, 0x14, 0x5f, 0xd9, 0x9f, + 0x66, 0x0b, 0xc3, 0x70, 0x50, 0x6d, 0xf3, 0xd6, 0x3c, 0xf0, 0xc0, 0x43, + 0x0d, 0x37, 0x16, 0xd1, 0x2d, 0xab, 0xb6, 0x2b, 0xea, 0x75, 0x75, 0x75, + 0xd5, 0x02, 0x0f, 0x94, 0xa9, 0xb5, 0x8a, 0xe3, 0x38, 0x06, 0x94, 0xaa, + 0xb5, 0x52, 0x51, 0x51, 0x39, 0xd2, 0x50, 0xa6, 0x22, 0x1b, 0x0a, 0x85, + 0x0a, 0x61, 0x87, 0xcd, 0x9a, 0x17, 0x00, 0x48, 0xd7, 0x97, 0x3b, 0x8a, + 0xc3, 0xe1, 0x12, 0xc0, 0x0e, 0xa1, 0x4c, 0x20, 0x80, 0x00, 0x02, 0x09, + 0x8a, 0x6c, 0x3b, 0xd8, 0x43, 0x0f, 0x3d, 0x20, 0xff, 0x93, 0x41, 0x42, + 0x04, 0xdb, 0x1f, 0x76, 0x50, 0xa6, 0xc8, 0x48, 0xb3, 0x46, 0x4a, 0x34, + 0x43, 0xe7, 0x8a, 0x25, 0x83, 0xb4, 0x6f, 0x3d, 0xcb, 0x44, 0xc2, 0xff, + 0xe7, 0xcd, 0x1a, 0xd9, 0x07, 0x6f, 0x0d, 0x24, 0x22, 0xb2, 0xdc, 0xfa, + 0xf0, 0xf4, 0x65, 0x4e, 0x3c, 0xfa, 0xd6, 0x32, 0xf0, 0xf4, 0xb3, 0x78, + 0x62, 0x36, 0xc6, 0x6f, 0x8d, 0x6d, 0xb3, 0x26, 0x28, 0x73, 0xab, 0x21, + 0x11, 0x09, 0x9f, 0x34, 0x81, 0xe2, 0xbf, 0x62, 0x86, 0x57, 0xab, 0xcf, + 0x98, 0x90, 0xc3, 0x80, 0xf1, 0x3a, 0x59, 0xe4, 0x92, 0x3a, 0xf6, 0x9b, + 0x3a, 0x09, 0x01, 0x04, 0x1a, 0x02, 0x85, 0x21, 0x58, 0x7a, 0x4a, 0xa6, + 0x8a, 0x48, 0x2f, 0x19, 0x1a, 0xea, 0x64, 0x90, 0xe7, 0x37, 0x67, 0x1e, + 0x93, 0xc6, 0x3a, 0x0c, 0x45, 0xa0, 0xa1, 0x83, 0x15, 0xb7, 0x5f, 0xaf, + 0x67, 0x43, 0x36, 0xfb, 0xe0, 0x04, 0x6e, 0xfa, 0xd6, 0x59, 0x3c, 0x0c, + 0x98, 0xa5, 0x1d, 0xd8, 0xd8, 0x01, 0xb1, 0xb1, 0xcb, 0xad, 0xcf, 0x13, + 0xc6, 0xa3, 0x99, 0xaa, 0x50, 0x4f, 0x05, 0xe7, 0x54, 0x0d, 0x25, 0xc9, + 0x7b, 0xa9, 0xe3, 0x75, 0x3a, 0xf9, 0x6e, 0x18, 0xa2, 0x86, 0x32, 0x39, + 0x85, 0x73, 0xb3, 0xa6, 0x58, 0x35, 0x22, 0xca, 0x2f, 0xcb, 0x39, 0x1b, + 0x14, 0x89, 0x91, 0xad, 0xfe, 0xf1, 0x68, 0xbc, 0xb5, 0xf2, 0x96, 0xff, + 0xc7, 0x4e, 0xd3, 0xcc, 0x73, 0xeb, 0xb2, 0x65, 0x06, 0xdf, 0xac, 0x09, + 0xba, 0xa3, 0x40, 0x0f, 0x04, 0xf2, 0x96, 0x33, 0x9c, 0xd8, 0xee, 0x89, + 0x3f, 0x8e, 0x73, 0x2b, 0x14, 0xc9, 0x0e, 0xb9, 0xdb, 0xe1, 0x04, 0xd9, + 0x4d, 0xcc, 0x67, 0x32, 0xff, 0xb3, 0x78, 0x68, 0xd0, 0x9c, 0xe7, 0xe0, + 0xb3, 0x2f, 0x8e, 0x98, 0xab, 0x39, 0x38, 0x4e, 0xec, 0x33, 0xfa, 0x7c, + 0x38, 0x37, 0xe5, 0x0d, 0x64, 0x8a, 0xf7, 0x66, 0x1d, 0x70, 0x23, 0x8a, + 0x9c, 0x9f, 0xc0, 0xe3, 0xfc, 0x59, 0x03, 0xfa, 0xc1, 0xd3, 0xda, 0x06, + 0x07, 0x04, 0x08, 0x10, 0x1a, 0x6a, 0x08, 0xf0, 0x60, 0xc5, 0xc5, 0x84, + 0x8e, 0xf0, 0x65, 0x32, 0xd8, 0x34, 0x40, 0x83, 0xc7, 0xb7, 0xe6, 0x23, + 0x35, 0x55, 0xb7, 0x18, 0x76, 0x10, 0x04, 0x40, 0x7a, 0x33, 0xb0, 0xf6, + 0xd6, 0xcb, 0x16, 0xe7, 0xb3, 0xa6, 0xc3, 0xec, 0x3e, 0xc9, 0xf4, 0x00, + 0x64, 0x2c, 0xb2, 0xcc, 0x84, 0xe6, 0xbc, 0x23, 0x49, 0x28, 0x6a, 0x81, + 0x06, 0x81, 0x50, 0xb9, 0xf5, 0x36, 0x6b, 0x07, 0x24, 0x7b, 0xbc, 0x53, + 0x17, 0x78, 0x93, 0x34, 0x8f, 0x1f, 0xec, 0xec, 0xfc, 0x70, 0xc3, 0xe0, + 0xae, 0x33, 0x16, 0x8b, 0xe2, 0x57, 0xdc, 0xad, 0x69, 0x78, 0xda, 0x7b, + 0x68, 0xdc, 0xe9, 0x07, 0x0a, 0x08, 0x40, 0x4c, 0xcc, 0x12, 0x87, 0x1a, + 0xc0, 0x6d, 0x8e, 0xa0, 0x82, 0x06, 0xb8, 0x49, 0x60, 0xb0, 0x28, 0x8e, + 0xc5, 0xc3, 0x6d, 0xf2, 0xe5, 0xfd, 0x42, 0xcd, 0xf0, 0x7c, 0xa1, 0xe2, + 0xd8, 0xaa, 0x79, 0xe4, 0xa9, 0x09, 0x8c, 0x8c, 0xa7, 0x50, 0x0c, 0x70, + 0xda, 0x3c, 0x9f, 0x4c, 0x1c, 0x6a, 0x1a, 0x7e, 0xb0, 0x93, 0x06, 0x1b, + 0x2c, 0xac, 0x16, 0xfe, 0x66, 0x82, 0xeb, 0x9d, 0xd6, 0x9c, 0xdb, 0xbc, + 0x79, 0xa6, 0xbe, 0x9b, 0x01, 0x5b, 0x05, 0xde, 0x90, 0x7a, 0xc6, 0x61, + 0xb1, 0xe0, 0xdf, 0xa9, 0xcd, 0xf4, 0x44, 0x22, 0x07, 0xfe, 0x7d, 0x3e, + 0xea, 0x2f, 0xad, 0x2f, 0x72, 0x5c, 0x2b, 0xae, 0x21, 0x34, 0x6b, 0x8c, + 0x7a, 0x95, 0x90, 0x37, 0x12, 0xf2, 0x55, 0xdf, 0x82, 0x82, 0x2c, 0xd2, + 0xfe, 0x3f, 0xa5, 0xaa, 0x6a, 0x74, 0xab, 0xb4, 0xf4, 0xaa, 0x5d, 0xda, + 0x7c, 0x5e, 0xd3, 0xc4, 0x00, 0xac, 0x98, 0x3c, 0x39, 0xd2, 0xdc, 0x4d, + 0x37, 0x76, 0x93, 0xf2, 0x36, 0xfe, 0xd3, 0x74, 0xe0, 0xda, 0x6c, 0x85, + 0x93, 0x41, 0xea, 0x0a, 0xcc, 0x48, 0x01, 0xce, 0x3c, 0xbb, 0x49, 0x49, + 0xd7, 0x9b, 0x81, 0x57, 0xb8, 0x15, 0x98, 0x75, 0x83, 0x5b, 0x09, 0x00, + 0x25, 0x05, 0x96, 0x7f, 0xca, 0xdb, 0x0e, 0xca, 0x28, 0xe9, 0xa0, 0x54, + 0x3f, 0x19, 0x26, 0x3e, 0x4d, 0x79, 0x0b, 0x8f, 0x34, 0x2d, 0xc8, 0xba, + 0x31, 0xc5, 0x71, 0x57, 0x40, 0x59, 0x28, 0x27, 0xd9, 0xc1, 0x94, 0x94, + 0x17, 0x28, 0x92, 0xde, 0xce, 0x37, 0xb4, 0x02, 0x6b, 0x9b, 0xff, 0xda, + 0x86, 0xd7, 0xf5, 0xeb, 0x3d, 0x67, 0xc7, 0x1c, 0x59, 0xd6, 0xe9, 0x62, + 0x2b, 0x9c, 0x53, 0x9b, 0x3d, 0x57, 0x20, 0x94, 0x09, 0xa6, 0x64, 0x81, + 0x52, 0x4a, 0x34, 0xef, 0x7a, 0x4d, 0xff, 0xc2, 0x9b, 0x7b, 0xa9, 0xbc, + 0x9f, 0xec, 0xa0, 0x92, 0xce, 0x37, 0x94, 0x43, 0x14, 0x52, 0xce, 0x40, + 0x49, 0x4d, 0x2e, 0x29, 0x6f, 0x5f, 0x54, 0x46, 0x52, 0x62, 0xa1, 0xb5, + 0xb2, 0x83, 0x3d, 0xaf, 0xc1, 0x0d, 0x29, 0x60, 0x58, 0xe8, 0x01, 0xc4, + 0xed, 0x03, 0xb9, 0x82, 0x0b, 0x29, 0xb5, 0x15, 0xb6, 0x83, 0x31, 0xe0, + 0x90, 0x6f, 0xe6, 0x9c, 0x66, 0x1e, 0x69, 0x62, 0xb0, 0x15, 0x95, 0x5a, + 0xed, 0x78, 0xec, 0x29, 0xa5, 0x4a, 0x17, 0xcc, 0xf3, 0x08, 0x3c, 0x4a, + 0xad, 0xde, 0x85, 0x37, 0x3e, 0x39, 0x88, 0x82, 0x72, 0x88, 0xee, 0x53, + 0xfd, 0xd3, 0x72, 0x0a, 0xe6, 0x00, 0x89, 0x64, 0x9a, 0x56, 0x22, 0xf4, + 0xb4, 0x8d, 0x2c, 0x4c, 0x36, 0xe0, 0x91, 0x42, 0x48, 0xcb, 0x01, 0x60, + 0x3e, 0x00, 0x55, 0x2b, 0x29, 0x41, 0xa4, 0x48, 0x7b, 0x0a, 0x4b, 0x00, + 0xa2, 0x5f, 0x29, 0x77, 0x0a, 0xd5, 0x27, 0xe5, 0xbe, 0x92, 0xf6, 0xe3, + 0xdf, 0x55, 0x31, 0x65, 0x97, 0x52, 0xaa, 0x44, 0xd9, 0x44, 0x19, 0x04, + 0x10, 0x47, 0x16, 0x3b, 0xd8, 0x83, 0xa7, 0xb7, 0x8f, 0x9f, 0x6f, 0x07, + 0xa8, 0x47, 0x45, 0x30, 0x38, 0xd4, 0xf9, 0x11, 0xcf, 0xbf, 0xe5, 0x09, + 0xf0, 0x2c, 0xbf, 0xc1, 0x90, 0x6e, 0x7c, 0x26, 0x3f, 0x13, 0xd2, 0x22, + 0x04, 0xf6, 0x45, 0x0b, 0x69, 0xa9, 0x6a, 0x63, 0x88, 0x21, 0x06, 0x58, + 0x0d, 0x29, 0x54, 0xb5, 0x45, 0x95, 0x9f, 0xe5, 0x84, 0x29, 0x52, 0x15, + 0xda, 0x8a, 0x4a, 0x01, 0x54, 0x3e, 0x45, 0x4b, 0xa5, 0x46, 0xa5, 0xa5, + 0xf9, 0xaf, 0xac, 0x6a, 0xd2, 0x84, 0x50, 0x63, 0x72, 0x05, 0x68, 0x0c, + 0xca, 0x5b, 0xa7, 0xd3, 0xc5, 0x40, 0xa9, 0x65, 0x07, 0xbf, 0xaa, 0xc1, + 0x77, 0x9f, 0x70, 0x82, 0x6a, 0x44, 0x2c, 0x1e, 0x1b, 0xe6, 0x5c, 0x1d, + 0x71, 0x6e, 0x9d, 0xab, 0x46, 0xb4, 0x81, 0x2e, 0x17, 0xb4, 0x54, 0x1a, + 0xf5, 0x5e, 0xe2, 0x58, 0xe0, 0xd6, 0xea, 0x09, 0xa5, 0x68, 0xb6, 0x04, + 0x31, 0xa3, 0x54, 0x28, 0x30, 0x53, 0xc0, 0x43, 0x84, 0x08, 0xc1, 0x44, + 0x14, 0x64, 0x01, 0x14, 0x38, 0x11, 0x03, 0x0a, 0x7a, 0xc3, 0x99, 0x25, + 0x0e, 0xcf, 0x06, 0xd4, 0x3e, 0x34, 0xfd, 0x0e, 0x39, 0xe0, 0x4c, 0xe0, + 0x4c, 0x48, 0xf1, 0x98, 0x08, 0x04, 0xb9, 0xd0, 0x47, 0xbc, 0x80, 0x87, + 0x70, 0x97, 0x19, 0x1d, 0x2b, 0x9f, 0x0f, 0x6e, 0x47, 0x21, 0xec, 0x70, + 0x04, 0xd3, 0xd2, 0x47, 0x28, 0xff, 0x3d, 0xa4, 0x3e, 0x40, 0x9a, 0xba, + 0xc2, 0x4f, 0x24, 0x07, 0x86, 0x79, 0xa8, 0xf3, 0xf5, 0xa2, 0x34, 0xdf, + 0x56, 0xc6, 0x66, 0x64, 0x04, 0x0c, 0x22, 0xa0, 0x00, 0x73, 0x93, 0x4a, + 0x30, 0x16, 0x0c, 0x48, 0x02, 0x49, 0x53, 0xd3, 0xde, 0x03, 0x63, 0x44, + 0xc4, 0x58, 0x1a, 0x0a, 0x18, 0x80, 0x01, 0x00, 0x03, 0x02, 0x06, 0x00, + 0x03, 0x8c, 0x05, 0x00, 0x00, 0x04, 0x30, 0x01, 0x00, 0x0c, 0x00, 0xc0, + 0x90, 0xc4, 0x03, 0x03, 0xd0, 0xad, 0xa1, 0x76, 0x51, 0xd2, 0xa5, 0xf6, + 0x80, 0xdc, 0x99, 0x4b, 0xa5, 0x31, 0x61, 0x8e, 0xde, 0xea, 0x35, 0xae, + 0x32, 0x26, 0x35, 0xf0, 0xdc, 0x90, 0xea, 0x00, 0x9f, 0x9b, 0x28, 0x5f, + 0x3a, 0x6e, 0xdb, 0x58, 0x39, 0x06, 0xec, 0xc2, 0xda, 0x4e, 0x6e, 0x3a, + 0xa0, 0x3b, 0x6c, 0xab, 0x4c, 0x62, 0xd7, 0x15, 0xb5, 0x5a, 0xa6, 0x01, + 0xa8, 0xbb, 0xf9, 0x7b, 0x01, 0xec, 0x76, 0xef, 0x4b, 0xca, 0x3e, 0x98, + 0x7e, 0xc6, 0x93, 0xe7, 0xdd, 0xee, 0x80, 0x55, 0x93, 0xa4, 0xc4, 0xcb, + 0xc2, 0x12, 0x64, 0xcd, 0xca, 0xc7, 0x60, 0x8c, 0x7d, 0x7a, 0x24, 0x0e, + 0xdf, 0xa9, 0xbc, 0x91, 0x5a, 0x04, 0x03, 0xf0, 0xae, 0xd3, 0x69, 0x51, + 0x6c, 0x8f, 0x04, 0xb1, 0x92, 0x18, 0x80, 0xe4, 0x0c, 0xa8, 0xf3, 0x0b, + 0x28, 0xbb, 0xad, 0xe3, 0x5f, 0x74, 0x28, 0x64, 0x3c, 0xa0, 0x9f, 0xd3, + 0xb2, 0x0e, 0xcb, 0xc8, 0xde, 0x0b, 0xed, 0x66, 0xf8, 0x52, 0xd4, 0x80, + 0x3d, 0x4e, 0x13, 0x8d, 0xef, 0x76, 0x01, 0x59, 0x03, 0x0d, 0xe8, 0x4e, + 0xec, 0xd7, 0x96, 0x5e, 0x76, 0x70, 0x37, 0xe6, 0xed, 0x46, 0x3c, 0x0b, + 0x84, 0xd7, 0x64, 0xde, 0x9a, 0x84, 0xcd, 0x87, 0x1e, 0xf1, 0x3c, 0xea, + 0x4c, 0x69, 0x8f, 0xfc, 0xff, 0x74, 0xe6, 0xdf, 0x31, 0xf6, 0x2e, 0x96, + 0x0f, 0xe8, 0x94, 0x18, 0x8c, 0xc3, 0x71, 0x03, 0xc3, 0x76, 0x92, 0x6a, + 0x08, 0x7b, 0x3f, 0xd5, 0x03, 0xfa, 0xb5, 0xd5, 0xbb, 0x15, 0xa0, 0xa7, + 0x9f, 0xc4, 0x1e, 0x80, 0x66, 0x2c, 0x6c, 0x6b, 0xc0, 0x46, 0x8e, 0xfa, + 0x12, 0x4a, 0x35, 0x80, 0xdd, 0xc6, 0xa3, 0x21, 0xae, 0x6e, 0xd8, 0xa7, + 0xb3, 0xeb, 0xf8, 0xb8, 0x73, 0xdb, 0xf4, 0x61, 0x75, 0x58, 0x3e, 0xa0, + 0x09, 0x0b, 0xdf, 0x4d, 0x6e, 0x5b, 0xf2, 0xd6, 0x9b, 0xb2, 0xfa, 0x6c, + 0x13, 0xd5, 0x4e, 0xbd, 0x08, 0x1d, 0xa1, 0xd9, 0xaa, 0xcd, 0x5a, 0xe2, + 0xd8, 0x85, 0x3d, 0x80, 0x54, 0xf4, 0x0c, 0xd0, 0x1f, 0x68, 0xaa, 0x3d, + 0xe2, 0xd3, 0x2a, 0xfc, 0x58, 0xe6, 0xf9, 0xd4, 0x04, 0xb2, 0x28, 0xbf, + 0xd7, 0xaf, 0x6f, 0xeb, 0x5b, 0xa4, 0x0c, 0xb8, 0x32, 0x60, 0x1d, 0x7b, + 0x71, 0x02, 0xec, 0x94, 0x6f, 0x3b, 0x93, 0xf3, 0x49, 0x53, 0x8a, 0x70, + 0x05, 0xdb, 0x9d, 0x11, 0xf3, 0x8e, 0xf0, 0x62, 0x80, 0xa4, 0x33, 0x20, + 0x23, 0x97, 0x01, 0x88, 0x0c, 0x01, 0x09, 0xc6, 0xd0, 0x32, 0x29, 0xe4, + 0x2e, 0x40, 0x22, 0x18, 0xac, 0x08, 0xd0, 0x25, 0x31, 0xe0, 0x7a, 0xb3, + 0xb0, 0x30, 0x40, 0x08, 0xb3, 0x0b, 0x13, 0xb9, 0xeb, 0x22, 0x75, 0xf5, + 0x4f, 0x09, 0x82, 0x39, 0xe0, 0xa6, 0xe0, 0x39, 0xc0, 0xdb, 0xfd, 0x6e, + 0x2e, 0xd1, 0x28, 0x64, 0x98, 0x59, 0x38, 0x25, 0x06, 0xdc, 0x6a, 0x96, + 0x29, 0xf8, 0xd8, 0xad, 0xd1, 0xeb, 0x2e, 0xe7, 0xce, 0x85, 0x77, 0xa9, + 0x8d, 0x3d, 0xc9, 0x34, 0xd2, 0xd4, 0x32, 0xcf, 0x18, 0x00, 0x34, 0xce, + 0x61, 0xd0, 0x81, 0x36, 0x86, 0x2e, 0x03, 0x6e, 0x19, 0xdb, 0xfe, 0xfe, + 0x9b, 0x03, 0x9c, 0x07, 0xe8, 0x8e, 0x76, 0x00, 0xea, 0x10, 0x71, 0x40, + 0x5c, 0x5c, 0xa3, 0xdd, 0xc9, 0x0c, 0x0e, 0xe1, 0xbb, 0xf6, 0xc3, 0x45, + 0x7b, 0xf8, 0x17, 0x34, 0x14, 0x83, 0xd7, 0xc8, 0x35, 0x1f, 0x4b, 0x06, + 0xe8, 0xf0, 0x59, 0xac, 0xc8, 0x48, 0x5a, 0x62, 0xd3, 0x06, 0x89, 0x6d, + 0x55, 0x01, 0xbb, 0xeb, 0x0c, 0x5a, 0x50, 0x93, 0x8f, 0xae, 0xe8, 0x1f, + 0x50, 0xd9, 0xe7, 0xbd, 0xd8, 0x33, 0x99, 0x96, 0xbe, 0x74, 0x6b, 0x10, + 0x8d, 0x01, 0xf1, 0x3c, 0xef, 0x31, 0x7a, 0x6d, 0x14, 0x4b, 0x32, 0x03, + 0x08, 0x92, 0x5b, 0x8e, 0x67, 0x46, 0xef, 0x8e, 0xc3, 0x01, 0x28, 0x2d, + 0x37, 0x09, 0xb2, 0xe3, 0x80, 0xb9, 0x60, 0xbc, 0xcb, 0xba, 0x5c, 0x2b, + 0xdb, 0xc5, 0xa1, 0x87, 0xba, 0x03, 0x7c, 0x71, 0x55, 0xc4, 0xd4, 0xf7, + 0xa3, 0xd9, 0xe9, 0x0e, 0xb0, 0xf2, 0xf7, 0xc3, 0xe3, 0xaf, 0x06, 0x67, + 0x27, 0x4f, 0x38, 0x6e, 0x0f, 0x68, 0xae, 0x51, 0xe3, 0xc1, 0x67, 0xd0, + 0xc1, 0x67, 0x2a, 0x9a, 0x1c, 0x10, 0x7f, 0xef, 0x9e, 0xee, 0x6e, 0x7e, + 0x6b, 0xb6, 0xd0, 0x63, 0x8a, 0x9c, 0x15, 0x98, 0x66, 0x25, 0x8d, 0xd3, + 0x0f, 0x78, 0x55, 0xf4, 0x01, 0x08, 0xf5, 0x22, 0xb7, 0x7f, 0x55, 0x26, + 0xd1, 0x72, 0x00, 0x96, 0x97, 0x67, 0x3f, 0xbb, 0x9b, 0x3d, 0x83, 0x99, + 0xbc, 0xd1, 0x60, 0xde, 0x2e, 0x02, 0xb8, 0xb6, 0x2a, 0x0c, 0x56, 0x61, + 0x68, 0x0c, 0xfd, 0xd1, 0xe0, 0xdb, 0x75, 0x2e, 0x21, 0x77, 0x94, 0xea, + 0xd8, 0x8c, 0x9a, 0xbd, 0x21, 0xaa, 0x00, 0x9a, 0xb3, 0x37, 0x01, 0x23, + 0xbb, 0x2d, 0xf7, 0x9f, 0x1c, 0xa1, 0x2e, 0x4a, 0xdb, 0x45, 0xff, 0x21, + 0xe9, 0xd2, 0xb5, 0x0c, 0xfb, 0x3c, 0x01, 0x03, 0x3f, 0xb1, 0x3f, 0x08, + 0xd9, 0xb9, 0x8b, 0xc8, 0x47, 0x8c, 0x19, 0x66, 0xb1, 0x2b, 0xac, 0x08, + 0x75, 0x57, 0x77, 0xb2, 0xa7, 0x0c, 0x7e, 0x88, 0x1d, 0x97, 0x1e, 0x80, + 0x88, 0xeb, 0x03, 0xd6, 0xfd, 0xec, 0xbf, 0xa9, 0xe1, 0x60, 0x96, 0xc6, + 0x07, 0x87, 0x98, 0x7e, 0x68, 0xdc, 0xda, 0x6e, 0x58, 0x42, 0xda, 0xc0, + 0x8a, 0xb1, 0xf1, 0x7a, 0x3e, 0xa7, 0xe3, 0x68, 0x47, 0x85, 0x3a, 0x8f, + 0x08, 0xc6, 0x3a, 0x8d, 0xae, 0x17, 0x8a, 0x79, 0x21, 0x18, 0xf7, 0xbc, + 0x67, 0x87, 0xb2, 0x2e, 0x1b, 0x00, 0xa1, 0x9d, 0xa7, 0x01, 0x08, 0x9c, + 0x54, 0xe8, 0xaa, 0x67, 0xb1, 0xf2, 0x11, 0xd1, 0x80, 0x9a, 0x7a, 0xc0, + 0x68, 0x82, 0x93, 0x16, 0x0d, 0xcf, 0x0f, 0x55, 0x03, 0x72, 0xe5, 0x01, + 0x19, 0x4d, 0xab, 0xca, 0xbc, 0x28, 0xfa, 0x1d, 0x89, 0xc0, 0xd7, 0x34, + 0x00, 0x76, 0x7b, 0x84, 0x7e, 0x5a, 0xb1, 0xc4, 0x1d, 0xc0, 0x90, 0xe9, + 0x01, 0x48, 0xfc, 0x80, 0x18, 0x00, 0xd1, 0x7c, 0x07, 0x2c, 0x4b, 0x03, + 0x68, 0xe3, 0xbe, 0x5b, 0x0d, 0xf8, 0x3e, 0x8b, 0x07, 0x04, 0x45, 0x06, + 0xdc, 0xe0, 0xef, 0x01, 0xa8, 0x55, 0xec, 0x61, 0x5d, 0x5d, 0x7b, 0x22, + 0x35, 0xe1, 0x83, 0x79, 0x80, 0x00, 0x36, 0x00, 0x79, 0x9a, 0xcc, 0x82, + 0xfc, 0x8d, 0x5f, 0x0e, 0x80, 0xae, 0xfa, 0x01, 0xe8, 0x24, 0x65, 0x01, + 0x41, 0x31, 0x11, 0xaa, 0xad, 0xfa, 0x1b, 0x80, 0x0d, 0xc8, 0xa2, 0x26, + 0x9c, 0x21, 0x5f, 0x43, 0x0c, 0x20, 0xa8, 0x2c, 0x24, 0xf3, 0x3e, 0xa2, + 0xf0, 0xb2, 0x01, 0xe8, 0x02, 0x00, 0x5a, 0x40, 0x78, 0x8d, 0x53, 0x1c, + 0x80, 0x32, 0x80, 0xef, 0xc0, 0x03, 0x0f, 0x9b, 0x0f, 0x18, 0x9d, 0x9b, + 0x5f, 0x65, 0x5f, 0xc6, 0xf2, 0x48, 0xf0, 0x77, 0xd9, 0x80, 0x65, 0x6b, + 0xbc, 0x2c, 0xc3, 0x2a, 0xf9, 0x75, 0x00, 0x3a, 0x5f, 0xee, 0x59, 0x6a, + 0x78, 0x6a, 0x2a, 0x6f, 0xd5, 0xa1, 0xbb, 0xf2, 0x38, 0x60, 0xb2, 0x9b, + 0x52, 0x2d, 0xb0, 0x69, 0x7d, 0xed, 0x00, 0xd4, 0x7f, 0x17, 0xfa, 0x1e, + 0x3a, 0x62, 0x94, 0x19, 0xc6, 0x2b, 0x69, 0x1b, 0x80, 0x98, 0x55, 0xf4, + 0xb0, 0x1d, 0x80, 0x6a, 0xab, 0x77, 0x04, 0x97, 0xc7, 0x5a, 0xc9, 0xe7, + 0x00, 0xba, 0x30, 0xcc, 0xe1, 0xc3, 0x87, 0x90, 0xe1, 0x0e, 0xa3, 0x3e, + 0x0d, 0xb0, 0xe1, 0x7c, 0x7a, 0x18, 0xf6, 0x93, 0x1c, 0x4e, 0x4c, 0x29, + 0xbe, 0x58, 0x42, 0x4b, 0xe8, 0x01, 0x2a, 0xd7, 0x18, 0x2d, 0x8d, 0x04, + 0x0c, 0x8a, 0x3d, 0xc9, 0x54, 0x94, 0x7d, 0xc2, 0x20, 0xb3, 0x3e, 0x43, + 0x41, 0x99, 0x46, 0x27, 0xba, 0x96, 0x99, 0xf7, 0xf1, 0x99, 0x56, 0x06, + 0x8f, 0x83, 0xe6, 0x05, 0x63, 0x92, 0x0d, 0x40, 0x88, 0x2e, 0x57, 0xbf, + 0xbe, 0x35, 0x7c, 0x1f, 0xae, 0x8d, 0xf6, 0x1d, 0xc1, 0xed, 0x01, 0xfd, + 0x39, 0x20, 0x64, 0xf3, 0x2b, 0xf5, 0xda, 0x1b, 0xb4, 0x47, 0x2b, 0xa8, + 0x57, 0x9a, 0xb0, 0x32, 0xaa, 0x44, 0x19, 0xdb, 0x23, 0xb9, 0x82, 0x3b, + 0x11, 0x3b, 0x5b, 0x10, 0xb5, 0x12, 0xc1, 0x99, 0x68, 0xf2, 0x49, 0xe0, + 0x0f, 0x60, 0x9c, 0x18, 0x55, 0xb6, 0x60, 0xd9, 0x09, 0x61, 0xee, 0xa1, + 0x43, 0x67, 0x48, 0x8b, 0x05, 0x9f, 0x10, 0x5f, 0x6a, 0x55, 0x45, 0x57, + 0x07, 0x58, 0x12, 0x03, 0x10, 0xfd, 0x02, 0x92, 0xc9, 0xf6, 0x0a, 0x95, + 0xd9, 0x84, 0x39, 0xcf, 0xca, 0x31, 0x5b, 0x02, 0x94, 0x0d, 0xd0, 0xd1, + 0x82, 0x1c, 0x94, 0x12, 0x10, 0x5b, 0x15, 0xc6, 0xb1, 0x89, 0x9e, 0x39, + 0xe9, 0x37, 0x99, 0xf2, 0x91, 0x5d, 0xc0, 0xbf, 0xde, 0x49, 0x5a, 0x7e, + 0x14, 0xe2, 0xf6, 0xce, 0x65, 0xc5, 0xed, 0x64, 0x1b, 0x00, 0xfd, 0x63, + 0x81, 0xcc, 0x88, 0x8f, 0x65, 0x03, 0x90, 0x94, 0x07, 0x94, 0xd5, 0xe9, + 0xa6, 0xa0, 0x6e, 0xe9, 0x8d, 0x6d, 0x15, 0xbd, 0x03, 0x56, 0x67, 0x28, + 0x35, 0xa3, 0xc7, 0x19, 0x2e, 0xca, 0x95, 0xb2, 0xe9, 0x86, 0x52, 0xef, + 0x80, 0x32, 0x33, 0x4a, 0xb3, 0x22, 0x14, 0x1b, 0x4e, 0xa6, 0x0e, 0xa0, + 0x3c, 0xeb, 0x07, 0x83, 0xc3, 0xc1, 0xa2, 0x77, 0xc0, 0x96, 0xe7, 0x15, + 0xb8, 0x58, 0x11, 0x06, 0x99, 0x01, 0x4b, 0x77, 0x40, 0xa3, 0x53, 0xde, + 0x3a, 0xd1, 0x18, 0xbf, 0x5a, 0x2f, 0x4b, 0xe8, 0xdd, 0x20, 0x39, 0x3a, + 0x40, 0xf5, 0x50, 0x77, 0x04, 0x67, 0xce, 0x92, 0x09, 0x09, 0xd8, 0xcf, + 0x1e, 0x02, 0x66, 0x5e, 0xe0, 0x34, 0x21, 0x4f, 0x03, 0xe4, 0x5e, 0x60, + 0x35, 0xcb, 0x83, 0xb4, 0x64, 0x2b, 0xe3, 0xfa, 0xd6, 0x36, 0xb9, 0xa3, + 0x03, 0x42, 0x42, 0x83, 0xc2, 0xd6, 0x3a, 0x33, 0xde, 0x8d, 0x05, 0xb4, + 0x03, 0x76, 0x9c, 0x17, 0x25, 0x5b, 0x4c, 0xcd, 0x00, 0x75, 0x2d, 0xde, + 0x3c, 0x40, 0xba, 0xf1, 0x80, 0x78, 0xfa, 0x00, 0x68, 0xf8, 0x9d, 0x6b, + 0x40, 0xe4, 0x95, 0xfd, 0xa0, 0xb8, 0xb1, 0xb4, 0x5c, 0x19, 0x5a, 0x09, + 0x84, 0xe4, 0x45, 0x60, 0xc0, 0x05, 0xbd, 0xf3, 0x1b, 0xed, 0xb0, 0x58, + 0x3c, 0x57, 0x99, 0xb1, 0x0b, 0x9b, 0x79, 0x62, 0xf6, 0x90, 0xf2, 0x01, + 0x9b, 0x85, 0xb5, 0x05, 0x04, 0x4e, 0xa7, 0x01, 0xbb, 0x40, 0x5c, 0xb7, + 0x24, 0x10, 0x3e, 0x61, 0x02, 0x97, 0x37, 0x13, 0x89, 0xaf, 0x4b, 0x78, + 0x4b, 0x5b, 0x30, 0x96, 0x5a, 0x90, 0xc0, 0xa1, 0x76, 0x6c, 0x9c, 0xcc, + 0xc7, 0xa8, 0x83, 0x62, 0x76, 0x76, 0x24, 0x56, 0x4f, 0x5e, 0x25, 0xdb, + 0xd5, 0xc5, 0xdf, 0x06, 0x78, 0xe1, 0x14, 0x1b, 0x1d, 0x35, 0x92, 0x8c, + 0xc0, 0xac, 0xad, 0xc3, 0x69, 0xb3, 0xd4, 0xf1, 0x1b, 0x72, 0xf5, 0x72, + 0x20, 0x58, 0x1d, 0x1b, 0x46, 0x95, 0x98, 0x44, 0x0f, 0x8c, 0x4d, 0xe3, + 0x36, 0x02, 0x11, 0xcf, 0x37, 0x6a, 0x40, 0xb1, 0x1c, 0xa3, 0x8a, 0x62, + 0x9b, 0x4d, 0x1f, 0x09, 0xcb, 0x0a, 0x54, 0x33, 0xf3, 0x7f, 0xbd, 0x06, + 0x58, 0x7c, 0x6b, 0x58, 0x57, 0x02, 0xba, 0x2e, 0x51, 0x4a, 0x0e, 0x98, + 0x5c, 0x30, 0x96, 0x41, 0x75, 0x44, 0xdf, 0xa9, 0x27, 0xc5, 0x51, 0x62, + 0x9d, 0x3f, 0x68, 0x4e, 0x4e, 0x86, 0x6f, 0xe5, 0x4d, 0xed, 0xd5, 0xcd, + 0xae, 0xb6, 0x81, 0x51, 0xa4, 0xf1, 0x44, 0x5b, 0x0a, 0xf0, 0xca, 0x32, + 0x6d, 0x47, 0x1f, 0x24, 0xd8, 0xe3, 0x65, 0xec, 0x29, 0xd6, 0xa9, 0xb2, + 0x6e, 0x75, 0xb3, 0x4b, 0xe5, 0xbe, 0x09, 0x0c, 0x80, 0x25, 0x91, 0x36, + 0x24, 0x64, 0x9a, 0x07, 0x10, 0xdd, 0xeb, 0xe4, 0xda, 0xcc, 0x9b, 0x0f, + 0x78, 0xb6, 0x7f, 0xea, 0x80, 0x31, 0x1e, 0xf0, 0x07, 0xf4, 0x56, 0x72, + 0xa1, 0xe3, 0x53, 0xa0, 0x89, 0x5e, 0x71, 0x9b, 0xc1, 0xd2, 0xab, 0xda, + 0x8e, 0xba, 0x0c, 0x47, 0xe6, 0x00, 0x61, 0x25, 0x77, 0xd5, 0x58, 0x27, + 0x9c, 0x91, 0x55, 0x8c, 0x80, 0xc1, 0x7f, 0x80, 0x14, 0x4b, 0x76, 0xda, + 0xd9, 0x74, 0x32, 0x5b, 0x35, 0x7c, 0xef, 0x5e, 0x8b, 0x5b, 0xf9, 0x26, + 0x74, 0x56, 0xa8, 0xc1, 0x76, 0x8c, 0x96, 0xd6, 0xa1, 0xb6, 0x0e, 0x2b, + 0xc7, 0xbf, 0x80, 0x8a, 0x76, 0xe1, 0xfe, 0xf1, 0x18, 0x72, 0x77, 0x73, + 0x80, 0x1a, 0x2f, 0x62, 0x81, 0xd9, 0x49, 0x3a, 0x91, 0xda, 0xfb, 0x4a, + 0xb9, 0x03, 0xfc, 0x34, 0x63, 0xc4, 0x38, 0x3a, 0x9a, 0xa1, 0x6e, 0x76, + 0x80, 0x5d, 0x82, 0xf6, 0x3b, 0xc0, 0x6f, 0x4b, 0x18, 0xe0, 0x34, 0x3b, + 0xf2, 0xac, 0x9d, 0xbe, 0x01, 0x2b, 0x64, 0x3d, 0x00, 0xf1, 0xdb, 0x3d, + 0x6f, 0x56, 0x04, 0x92, 0x06, 0x38, 0xde, 0x16, 0xa9, 0xf9, 0x94, 0x6f, + 0x6e, 0xaa, 0x89, 0x5e, 0x96, 0xe1, 0xb7, 0x0a, 0xa2, 0xf7, 0x1b, 0xdf, + 0x21, 0xeb, 0x0e, 0x85, 0x4e, 0x9c, 0x1a, 0x11, 0xd7, 0xda, 0x69, 0xea, + 0x2e, 0xce, 0xa1, 0x64, 0x03, 0x64, 0xc5, 0xdf, 0xde, 0xeb, 0x8c, 0x1f, + 0x91, 0xa1, 0xb0, 0x81, 0xd5, 0xcc, 0x07, 0x48, 0x79, 0x76, 0xce, 0x06, + 0xb8, 0xb1, 0x22, 0xee, 0x84, 0x86, 0xac, 0xb2, 0x37, 0x84, 0x11, 0xe4, + 0xfc, 0x52, 0x00, 0x50, 0x2c, 0x50, 0x2f, 0xd1, 0x51, 0x19, 0x13, 0x1c, + 0x9c, 0x46, 0x60, 0x4c, 0xcf, 0xf4, 0x3d, 0x05, 0xa8, 0xe3, 0xfc, 0x60, + 0x9a, 0xc6, 0xbe, 0xd9, 0x13, 0xe2, 0x56, 0xed, 0x2e, 0xe0, 0x80, 0x66, + 0x81, 0x5b, 0xf8, 0x51, 0x00, 0xf1, 0xf8, 0x2c, 0x0e, 0xf8, 0xba, 0x20, + 0xae, 0xb2, 0x0b, 0x9e, 0xab, 0x7a, 0x7a, 0xc0, 0x48, 0xff, 0xc3, 0xb5, + 0x97, 0x39, 0xc1, 0x71, 0x1d, 0xc0, 0xa3, 0x39, 0x18, 0x8e, 0x0c, 0x56, + 0xb3, 0xe0, 0x51, 0x03, 0xde, 0xee, 0x28, 0xab, 0xf1, 0xb2, 0xb7, 0x4c, + 0xcd, 0x8f, 0xaa, 0x2b, 0xa3, 0xdc, 0x26, 0xbd, 0xe0, 0xb6, 0x58, 0xef, + 0x14, 0xa4, 0x10, 0x7e, 0x3a, 0x0a, 0xc0, 0xdb, 0x19, 0x16, 0x64, 0xc2, + 0x77, 0x80, 0xbb, 0x7f, 0x84, 0x60, 0x1b, 0xc0, 0x5c, 0x49, 0x7c, 0x4d, + 0xf2, 0xb2, 0x4a, 0x65, 0xf6, 0x00, 0xad, 0x7c, 0xc8, 0xce, 0x41, 0x6a, + 0xaa, 0xa9, 0x45, 0x60, 0xf2, 0x06, 0x54, 0x3e, 0xe0, 0x6f, 0xfe, 0x16, + 0x66, 0xf6, 0xb3, 0x1b, 0x07, 0x44, 0xb5, 0xaf, 0x54, 0xcb, 0x2a, 0x3d, + 0xd2, 0xd8, 0xe8, 0x37, 0x2f, 0xc9, 0x6e, 0xcf, 0x80, 0x2d, 0x1b, 0x09, + 0x71, 0x7d, 0x99, 0x9d, 0x5a, 0x4d, 0x3b, 0xb1, 0xd6, 0x61, 0x90, 0xe5, + 0x55, 0xf4, 0xdd, 0xe2, 0x9d, 0xf5, 0xb1, 0x85, 0x79, 0xba, 0x3b, 0xd9, + 0x1d, 0xd9, 0x50, 0xe7, 0xd5, 0xa3, 0x2b, 0xb9, 0xdf, 0xec, 0x07, 0x87, + 0xc5, 0x11, 0x30, 0xba, 0x0e, 0xdb, 0x86, 0xa5, 0xb7, 0x24, 0xe4, 0x51, + 0x23, 0x66, 0xb2, 0xd0, 0x62, 0xa6, 0xe6, 0x4b, 0x0e, 0x98, 0x72, 0x26, + 0x30, 0x36, 0xec, 0x75, 0xdf, 0x5f, 0xc8, 0xc6, 0xf7, 0x91, 0xb4, 0x3f, + 0x7b, 0x40, 0xb3, 0x56, 0x72, 0x1c, 0x50, 0x7e, 0x8a, 0x3c, 0xdb, 0xd6, + 0x3f, 0x23, 0x60, 0xd7, 0x63, 0xce, 0x00, 0xd2, 0x66, 0x01, 0xed, 0x5a, + 0xf9, 0xe9, 0x63, 0x2e, 0x82, 0x2b, 0x06, 0x67, 0x20, 0x97, 0x01, 0xce, + 0x58, 0x05, 0x50, 0x35, 0x32, 0x66, 0x2e, 0x3a, 0x05, 0xce, 0x44, 0x8d, + 0x9f, 0xdc, 0x64, 0xab, 0x61, 0x7d, 0xeb, 0x1b, 0x1c, 0xe3, 0x59, 0xc5, + 0x73, 0x76, 0xab, 0x33, 0x3d, 0x32, 0xc2, 0xb4, 0xde, 0xb6, 0xce, 0x66, + 0x22, 0x59, 0x13, 0x87, 0x09, 0xf1, 0x0e, 0xa8, 0xd1, 0x0c, 0x68, 0x7b, + 0xd2, 0x05, 0x89, 0xa3, 0xaf, 0x04, 0x66, 0xa7, 0xb8, 0xcf, 0x69, 0x90, + 0xe8, 0x31, 0x93, 0x03, 0x68, 0x59, 0x37, 0xe6, 0x11, 0xb4, 0x93, 0xd2, + 0x00, 0x1c, 0xeb, 0xa2, 0xa8, 0x6f, 0xb1, 0xd4, 0x98, 0xb4, 0xaa, 0x73, + 0xd1, 0x5a, 0x8a, 0x5d, 0xb9, 0x38, 0x20, 0x3f, 0x34, 0x2b, 0xb4, 0xf1, + 0xc5, 0x3e, 0x77, 0xed, 0x85, 0xd1, 0x07, 0x3c, 0x38, 0x60, 0x4c, 0xda, + 0x01, 0x17, 0xa0, 0xe9, 0x1d, 0xb6, 0x6b, 0x74, 0xff, 0x1b, 0xfb, 0x72, + 0x80, 0xaa, 0x05, 0xff, 0xb4, 0x20, 0x35, 0x57, 0x4b, 0x6d, 0x50, 0x3d, + 0x4f, 0x29, 0xa7, 0x4b, 0x9b, 0xc6, 0x7f, 0x05, 0x7b, 0xfb, 0x74, 0xc4, + 0x80, 0x03, 0x8c, 0x0c, 0x88, 0xde, 0xee, 0x9f, 0x36, 0x3e, 0xbd, 0x6f, + 0x38, 0x71, 0x4d, 0x5e, 0x7a, 0xf0, 0xd2, 0x20, 0x49, 0x5f, 0xae, 0xc6, + 0x1b, 0x79, 0xf8, 0xa1, 0x9c, 0x26, 0xd3, 0x66, 0xb2, 0x6e, 0x2f, 0xd9, + 0x03, 0x37, 0xdd, 0xe0, 0xe1, 0x07, 0x67, 0xa7, 0x38, 0x08, 0x5c, 0x1a, + 0x15, 0x7c, 0xac, 0xdd, 0xd8, 0xed, 0x97, 0xc5, 0x64, 0xff, 0xa1, 0x57, + 0xb4, 0x07, 0x97, 0x71, 0x51, 0xb1, 0x86, 0xb6, 0x01, 0xea, 0x1e, 0xb5, + 0xbe, 0x22, 0x9e, 0xe9, 0x05, 0xec, 0x01, 0xa4, 0x4f, 0x97, 0x1b, 0xe0, + 0x6d, 0xeb, 0xfa, 0x3e, 0xd9, 0x83, 0xfd, 0x04, 0x1a, 0x10, 0x1b, 0x3d, + 0x00, 0xc4, 0x49, 0x93, 0x84, 0x57, 0x26, 0xa0, 0x9b, 0x4c, 0x86, 0xeb, + 0x80, 0xcc, 0xd0, 0xc4, 0x01, 0x8d, 0x7e, 0x24, 0xd8, 0x09, 0x13, 0x85, + 0x6e, 0x08, 0x71, 0x1b, 0x18, 0x98, 0xa1, 0x6a, 0xcd, 0x4d, 0x00, 0x36, + 0x7f, 0x80, 0x05, 0x88, 0x24, 0x64, 0x8a, 0xf4, 0x11, 0xfb, 0x89, 0x59, + 0x8d, 0x46, 0xe1, 0x02, 0xdd, 0xcd, 0x24, 0x0a, 0x53, 0xc3, 0x01, 0x8d, + 0xc6, 0x8c, 0xb5, 0xee, 0xdd, 0x74, 0x25, 0xbb, 0x63, 0xab, 0x3c, 0xee, + 0xfc, 0xad, 0xb8, 0xf3, 0x1e, 0x80, 0x0a, 0x20, 0x4e, 0x49, 0x6a, 0x29, + 0xf5, 0x39, 0xae, 0xf2, 0xde, 0x57, 0x0b, 0x1d, 0x67, 0xf3, 0x23, 0x24, + 0x94, 0x87, 0xdb, 0x8d, 0xb8, 0x08, 0x63, 0x05, 0x29, 0xc6, 0x57, 0xbb, + 0x3f, 0x84, 0x2e, 0xee, 0xd0, 0x57, 0xd4, 0x85, 0xb7, 0xa5, 0x76, 0xdc, + 0xcd, 0x05, 0xc8, 0x2c, 0xbe, 0xb1, 0x87, 0x0a, 0x4c, 0x60, 0x0c, 0x9a, + 0x94, 0x43, 0x55, 0x77, 0x1a, 0xcf, 0x80, 0xe8, 0xe2, 0x01, 0x3f, 0xb6, + 0xe1, 0xdc, 0xee, 0xe1, 0xd2, 0xb4, 0x5a, 0xe6, 0x07, 0x0b, 0xd5, 0x3d, + 0xa2, 0xe7, 0xca, 0xd8, 0x2e, 0x8b, 0x8f, 0x29, 0xb9, 0x3d, 0x36, 0x3e, + 0xd2, 0xf5, 0xb2, 0x1e, 0xf2, 0xac, 0xb3, 0x48, 0x34, 0xb1, 0xed, 0x76, + 0x67, 0xc0, 0xd6, 0xdb, 0xf4, 0x21, 0x60, 0x75, 0xe2, 0xf3, 0x5d, 0x56, + 0xac, 0xb9, 0x87, 0x5d, 0x63, 0xf8, 0x90, 0x03, 0x39, 0x0d, 0x51, 0xc3, + 0x4c, 0x4c, 0x68, 0xfa, 0x80, 0xc0, 0xca, 0x80, 0x8a, 0xb9, 0x2e, 0x08, + 0x06, 0x9c, 0x09, 0x5e, 0x9c, 0x4c, 0x1c, 0xa8, 0xbf, 0xfb, 0x20, 0xeb, + 0x82, 0x0c, 0x30, 0x50, 0x8a, 0x01, 0xb8, 0x5c, 0xd1, 0x71, 0x54, 0xa3, + 0x45, 0x2e, 0xed, 0x36, 0xf3, 0xd4, 0xcc, 0x6a, 0x94, 0x11, 0xc0, 0xda, + 0x26, 0xc2, 0x56, 0x31, 0xc9, 0x3f, 0xdf, 0xe8, 0x01, 0x71, 0xe0, 0x30, + 0x5b, 0x82, 0xfd, 0x7e, 0x28, 0xdd, 0x9c, 0xcd, 0xa7, 0xdf, 0x95, 0x31, + 0x5f, 0x18, 0x78, 0xff, 0x75, 0x63, 0x99, 0xfc, 0xec, 0xce, 0x0c, 0x57, + 0x66, 0xdb, 0x7b, 0x18, 0xbe, 0xdc, 0xd9, 0x65, 0xff, 0x7e, 0x38, 0x76, + 0xef, 0x05, 0xad, 0x8e, 0x72, 0xc0, 0x16, 0xff, 0xd6, 0xb4, 0xce, 0x04, + 0x03, 0xdc, 0xf5, 0x37, 0xe5, 0xb6, 0x02, 0x3a, 0xe7, 0xef, 0xd8, 0xa5, + 0x7b, 0xe2, 0x24, 0x4a, 0xcf, 0xef, 0x5e, 0x38, 0x4d, 0x47, 0x72, 0x0f, + 0x9a, 0x10, 0xf4, 0x4b, 0xab, 0x16, 0x67, 0x1b, 0xf3, 0x6e, 0x1a, 0x71, + 0x15, 0x5a, 0xa5, 0x08, 0xba, 0x48, 0xc9, 0xa8, 0xce, 0x95, 0x1a, 0xab, + 0x18, 0xdf, 0xee, 0xef, 0xee, 0xf1, 0x3c, 0x80, 0x36, 0x6b, 0x6d, 0x62, + 0x62, 0x87, 0xcb, 0x24, 0x81, 0x87, 0x01, 0x54, 0xe2, 0x5a, 0xa4, 0x1d, + 0x4a, 0xc0, 0xb4, 0xec, 0xdd, 0xb0, 0x17, 0x57, 0x05, 0xa9, 0x66, 0xb1, + 0xe5, 0xc2, 0xaf, 0x35, 0x08, 0x8c, 0x41, 0xb1, 0xd8, 0x86, 0x4e, 0x05, + 0x9b, 0x96, 0xb6, 0xbf, 0xf2, 0x49, 0xc5, 0x2e, 0xf7, 0x37, 0x7c, 0xcc, + 0x32, 0x37, 0x00, 0x2f, 0xbd, 0xd6, 0x1d, 0x9b, 0x26, 0x83, 0x03, 0x40, + 0x99, 0x5a, 0xb3, 0x63, 0xd3, 0x15, 0xcd, 0x89, 0xaa, 0x1b, 0xaa, 0x9e, + 0xbd, 0x06, 0x5e, 0x3a, 0xf3, 0xe9, 0xb8, 0xdf, 0xea, 0xfb, 0x0d, 0x16, + 0x49, 0xbd, 0x20, 0xa6, 0xa0, 0xb9, 0x0e, 0xbb, 0x1e, 0xd6, 0x2e, 0x3e, + 0xbb, 0x0f, 0x72, 0x34, 0x1b, 0xed, 0x01, 0x45, 0xe6, 0xd0, 0x07, 0xd4, + 0x06, 0x92, 0x33, 0xab, 0x9c, 0xb7, 0xca, 0x70, 0x26, 0x8d, 0xb7, 0x21, + 0xab, 0x98, 0x03, 0x2a, 0x1d, 0xbe, 0x22, 0xcf, 0x2c, 0x98, 0x88, 0xb6, + 0x74, 0x40, 0x81, 0x0d, 0x70, 0xbe, 0xaa, 0x8c, 0xdb, 0x5e, 0x2b, 0x91, + 0xe6, 0x80, 0xd7, 0xbd, 0x28, 0x35, 0x12, 0x70, 0x3e, 0x0b, 0x27, 0x8e, + 0x87, 0x60, 0x19, 0xc8, 0x2e, 0x10, 0x8e, 0x06, 0x30, 0xec, 0x75, 0x13, + 0x7a, 0xc0, 0xc4, 0x4d, 0xaa, 0x57, 0xd9, 0x0d, 0xa0, 0xa7, 0x1f, 0xa0, + 0xdf, 0x70, 0x6f, 0x8d, 0xaa, 0x20, 0xc6, 0x77, 0xc0, 0xca, 0x45, 0x78, + 0x75, 0x1a, 0x4b, 0x77, 0x00, 0x8e, 0x93, 0xad, 0xc5, 0x62, 0xd1, 0xb4, + 0xb4, 0xfe, 0xed, 0x7d, 0x73, 0x13, 0xb9, 0xfc, 0x32, 0xc8, 0x3f, 0xa3, + 0x19, 0x05, 0xf4, 0x3f, 0x97, 0x5d, 0x7e, 0xb2, 0x85, 0xb5, 0x04, 0x4b, + 0x9d, 0xa1, 0xde, 0x2d, 0x95, 0x4f, 0xca, 0x2e, 0xe9, 0xdd, 0x76, 0x0a, + 0x7c, 0xc8, 0x44, 0x17, 0xb2, 0xce, 0x3c, 0x15, 0xab, 0xb9, 0xa9, 0x59, + 0x7c, 0x54, 0x4c, 0x83, 0xe7, 0x09, 0x34, 0x27, 0x04, 0x54, 0x5c, 0xa3, + 0x35, 0x57, 0x2d, 0x8f, 0x1e, 0x26, 0xa8, 0xf4, 0x28, 0xda, 0xa2, 0xb4, + 0xdb, 0x54, 0x0b, 0xb4, 0x07, 0x63, 0xc5, 0xdb, 0xb4, 0x20, 0x6a, 0x00, + 0xf1, 0xa5, 0xe8, 0x8b, 0xe4, 0x35, 0xc4, 0x96, 0x54, 0x76, 0x00, 0x5e, + 0x37, 0x72, 0x7e, 0x15, 0xe8, 0x6e, 0x8b, 0x98, 0x13, 0x2d, 0x06, 0x64, + 0x71, 0x80, 0x43, 0x96, 0x60, 0x1b, 0x00, 0xe7, 0x70, 0x48, 0xf6, 0xf4, + 0x23, 0x0b, 0x16, 0x8a, 0x4c, 0x28, 0x50, 0x83, 0x32, 0x23, 0x34, 0x65, + 0x72, 0xb1, 0xcb, 0x84, 0x01, 0x34, 0xc2, 0x28, 0x96, 0x51, 0x1d, 0x06, + 0x65, 0x6f, 0xe1, 0x0a, 0x9f, 0xce, 0x80, 0xa3, 0x77, 0xf5, 0x36, 0x04, + 0x3e, 0x7b, 0xe8, 0xe7, 0xac, 0x6a, 0x04, 0x6e, 0x0a, 0x8c, 0xe8, 0x01, + 0x65, 0xec, 0xbd, 0x1b, 0x99, 0xea, 0x4b, 0xde, 0x7d, 0xc1, 0x9d, 0xa0, + 0xcc, 0x1b, 0x1f, 0xe0, 0x0a, 0xa5, 0x1f, 0x7a, 0x26, 0x02, 0x6a, 0x5a, + 0xe2, 0x4c, 0x58, 0x77, 0x2f, 0x04, 0x73, 0xe8, 0x60, 0x68, 0xc0, 0x26, + 0xf1, 0x0d, 0x56, 0x16, 0xa7, 0x0b, 0x47, 0x28, 0x00, 0x4a, 0x3b, 0xa9, + 0x8b, 0x56, 0xb9, 0xee, 0xf9, 0x2c, 0x33, 0xbd, 0xf2, 0x3a, 0xc4, 0x40, + 0xf6, 0x8b, 0x62, 0x40, 0x06, 0xd8, 0x22, 0x43, 0x8d, 0xa3, 0x05, 0xc2, + 0x73, 0xd1, 0x04, 0x4e, 0x65, 0x5d, 0x26, 0xe0, 0xd7, 0x5d, 0x7d, 0x4c, + 0x24, 0x7f, 0x8d, 0x27, 0xa7, 0xfd, 0xae, 0xd1, 0x8e, 0xf6, 0x75, 0xd9, + 0x4d, 0x1d, 0x23, 0x69, 0xb5, 0x20, 0xe0, 0x00, 0xce, 0xe2, 0x28, 0xdb, + 0x41, 0x07, 0xda, 0x01, 0xb4, 0x53, 0x29, 0xd9, 0x75, 0x0d, 0xd1, 0x98, + 0x9a, 0x5c, 0x5b, 0xf4, 0x7c, 0x79, 0xde, 0x64, 0x1e, 0x10, 0x32, 0x19, + 0xd7, 0x58, 0x6c, 0xc6, 0x00, 0x50, 0x4d, 0x67, 0x44, 0x7f, 0x09, 0xd8, + 0x92, 0x65, 0x1b, 0x3a, 0x8c, 0x81, 0x2f, 0x90, 0x70, 0xd3, 0x80, 0x2a, + 0x53, 0xaa, 0xb0, 0xd0, 0x15, 0x55, 0x9a, 0x5a, 0x70, 0x6a, 0x2f, 0xc4, + 0x6b, 0xac, 0xa5, 0x21, 0x61, 0xa0, 0x62, 0xae, 0x0a, 0xc9, 0xd2, 0x79, + 0xd2, 0xe8, 0x8c, 0x7a, 0xe1, 0xe8, 0x2e, 0x3b, 0x1e, 0x20, 0xe6, 0xa5, + 0x39, 0x32, 0xcd, 0xf4, 0x91, 0x03, 0x3b, 0x4c, 0x99, 0x3f, 0x60, 0x00, + 0x97, 0xed, 0xc0, 0x40, 0xa5, 0x1b, 0xe6, 0x02, 0x60, 0x1e, 0xa9, 0x73, + 0x9e, 0x27, 0xc6, 0x56, 0x7a, 0x66, 0xc9, 0x55, 0x8b, 0xf9, 0x0f, 0x49, + 0x13, 0x82, 0x0f, 0xa3, 0x4b, 0x44, 0xbc, 0x5a, 0x1c, 0xd1, 0xec, 0xf4, + 0xfc, 0xd9, 0xba, 0x6b, 0x2e, 0xad, 0xdd, 0x93, 0xe7, 0x5b, 0xc6, 0x1a, + 0x31, 0x8c, 0xb4, 0x0a, 0xab, 0x65, 0x4d, 0xd9, 0xbc, 0x27, 0x98, 0x2e, + 0x02 +}; + +/** + * Uncompressed size of \c #srcZstd. + */ +#define DXT1_256x256 32768 + +/** + * Destination for decoding \c #srcZstd. + */ +static uint8_t dstDxt1[DXT1_256x256] = {}; + +#ifndef ZSTD_VERSION_MAJOR +/** + * For the case where the decompression library hasn't been included we add a + * dummy function to fake the process and stop the buffers being optimised out. + */ +size_t ZSTD_decompress(void* dst, size_t dstLen, const void* src, size_t srcLen) { + return (memcmp(dst, src, (srcLen < dstLen) ? srcLen : dstLen)) ? dstLen : 0; +} +#endif + +//*************************** Program and Shaders ***************************/ + +/** + * Program object ID. + */ +static GLuint progId = 0; + +/** + * Vertex shader ID. + */ +static GLuint vertId = 0; + +/** + * Fragment shader ID. + */ +static GLuint fragId = 0; + +//********************************* Uniforms *********************************/ + +/** + * Quad rotation angle ID. + */ +static GLint uRotId = -1; + +/** + * Draw colour ID. + */ +static GLint uColId = -1; + +/** + * Draw colour ID. + */ +static GLint uTx0Id = -1; + +//******************************* Shader Source ******************************/ + +/** + * Vertex shader to draw texture mapped polys with an applied rotation. + */ +static GLchar const vertShader2D[] = +#if GL_ES_VERSION_2_0 + "#version 100\n" + "precision mediump float;\n" +#else + "#version 120\n" +#endif + "uniform float uRot;" // rotation + "attribute vec2 aPos;" // vertex position coords + "attribute vec2 aUV0;" // vertex texture UV0 + "varying vec2 vUV0;" // (passed to fragment shader) + "void main() {" + " float cosA = cos(radians(uRot));" + " float sinA = sin(radians(uRot));" + " mat3 rot = mat3(cosA, -sinA, 0.0," + " sinA, cosA, 0.0," + " 0.0, 0.0, 1.0);" + " gl_Position = vec4(rot * vec3(aPos, 1.0), 1.0);" + " vUV0 = aUV0;" + "}"; + +/** + * Fragment shader for the above polys. + */ +static GLchar const fragShader2D[] = +#if GL_ES_VERSION_2_0 + "#version 100\n" + "precision mediump float;\n" +#else + "#version 120\n" +#endif + "uniform sampler2D uTx0;" + "varying vec2 vUV0;" // (passed from fragment shader) + "void main() {" + " gl_FragColor = texture2D(uTx0, vUV0);" + "}"; + +/** + * Helper to compile a shader. + * + * \param type shader type + * \param text shader source + * \return the shader ID (or zero if compilation failed) + */ +static GLuint compileShader(GLenum const type, const GLchar* text) { + GLuint shader = glCreateShader(type); + if (shader) { + glShaderSource (shader, 1, &text, NULL); + glCompileShader(shader); + GLint compiled; + glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); + if (compiled) { + return shader; + } else { + GLint logLen; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLen); + if (logLen > 1) { + GLchar* logStr = malloc(logLen); + glGetShaderInfoLog(shader, logLen, NULL, logStr); + #ifndef NDEBUG + printf("Shader compilation error: %s\n", logStr); + #endif + free(logStr); + } + glDeleteShader(shader); + } + } + return 0; +} + +//********************************** Helpers *********************************/ + +/** + * Vertex position index. + */ +#define GL_VERT_POSXY_ID 0 + +/** + * Vertex colour index. + */ +#define GL_VERT_COLOR_ID 1 + +/** + * Vertex UV0 index. + */ +#define GL_VERT_TXUV0_ID 2 + + /** + * \c GL vec2 storage type. + */ +struct vec2 { + float x; + float y; +}; + +/** + * Combined 2D vertex and 2D texture coordinates. + */ +struct posTex2d { + struct vec2 pos; + struct vec2 uv0; +}; + +//****************************************************************************/ + +/** + * Current quad rotation angle (in degrees, updated per frame). + */ +static float rotDeg = 0.0f; + +/** + * Emscripten (single) GL context. + */ +static EMSCRIPTEN_WEBGL_CONTEXT_HANDLE glCtx = 0; + +/** + * Emscripten resize handler. + */ +static EM_BOOL resize(int type, const EmscriptenUiEvent* e, void* data) { + double surfaceW; + double surfaceH; + if (emscripten_get_element_css_size ("#canvas", &surfaceW, &surfaceH) == EMSCRIPTEN_RESULT_SUCCESS) { + emscripten_set_canvas_element_size("#canvas", surfaceW, surfaceH); + if (glCtx) { + glViewport(0, 0, (int) surfaceW, (int) surfaceH); + } + } + (void) type; + (void) data; + (void) e; + return EM_FALSE; +} + +/** + * Boilerplate to create a WebGL context. + */ +static EM_BOOL initContext() { + // Default attributes + EmscriptenWebGLContextAttributes attr; + emscripten_webgl_init_context_attributes(&attr); + if ((glCtx = emscripten_webgl_create_context("#canvas", &attr))) { + // Bind the context and fire a resize to get the initial size + emscripten_webgl_make_context_current(glCtx); + emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, EM_FALSE, resize); + resize(0, NULL, NULL); + return EM_TRUE; + } + return EM_FALSE; +} + +/** + * Called once per frame (clears the screen and draws the rotating quad). + */ +static void tick() { + glClearColor(1.0f, 0.0f, 1.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (uRotId >= 0) { + glUniform1f(uRotId, rotDeg); + rotDeg += 0.1f; + if (rotDeg >= 360.0f) { + rotDeg -= 360.0f; + } + } + + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0); + glFlush(); +} + +/** + * Creates the GL context, shaders and quad data, decompresses the Zstd data + * and 'uploads' the resulting texture. + * + * As a (naive) comparison, removing Zstd and building with "-Os -g0 s WASM=1 + * -lGL emscripten.c" results in a 23kB WebAssembly file; re-adding Zstd + * increases the Wasm by 25kB. + */ +int main() { + if (initContext()) { + // Compile shaders and set the initial GL state + if ((progId = glCreateProgram())) { + vertId = compileShader(GL_VERTEX_SHADER, vertShader2D); + fragId = compileShader(GL_FRAGMENT_SHADER, fragShader2D); + + glBindAttribLocation(progId, GL_VERT_POSXY_ID, "aPos"); + glBindAttribLocation(progId, GL_VERT_COLOR_ID, "aCol"); + glBindAttribLocation(progId, GL_VERT_TXUV0_ID, "aUV0"); + + glAttachShader(progId, vertId); + glAttachShader(progId, fragId); + glLinkProgram (progId); + glUseProgram (progId); + uRotId = glGetUniformLocation(progId, "uRot"); + uColId = glGetUniformLocation(progId, "uCol"); + uTx0Id = glGetUniformLocation(progId, "uTx0"); + if (uTx0Id >= 0) { + glUniform1i(uTx0Id, 0); + } + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glDisable(GL_DITHER); + + glCullFace(GL_BACK); + glEnable(GL_CULL_FACE); + } + + GLuint vertsBuf = 0; + GLuint indexBuf = 0; + GLuint txName = 0; + // Create the textured quad (vert positions then UVs) + struct posTex2d verts2d[] = { + {{-0.85f, -0.85f}, {0.0f, 0.0f}}, // BL + {{ 0.85f, -0.85f}, {1.0f, 0.0f}}, // BR + {{-0.85f, 0.85f}, {0.0f, 1.0f}}, // TL + {{ 0.85f, 0.85f}, {1.0f, 1.0f}}, // TR + }; + uint16_t index2d[] = { + 0, 1, 2, + 2, 1, 3, + }; + glGenBuffers(1, &vertsBuf); + glBindBuffer(GL_ARRAY_BUFFER, vertsBuf); + glBufferData(GL_ARRAY_BUFFER, + sizeof(verts2d), verts2d, GL_STATIC_DRAW); + glVertexAttribPointer(GL_VERT_POSXY_ID, 2, + GL_FLOAT, GL_FALSE, sizeof(struct posTex2d), 0); + glVertexAttribPointer(GL_VERT_TXUV0_ID, 2, + GL_FLOAT, GL_FALSE, sizeof(struct posTex2d), + (void*) offsetof(struct posTex2d, uv0)); + glGenBuffers(1, &indexBuf); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuf); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, + sizeof(index2d), index2d, GL_STATIC_DRAW); + glEnableVertexAttribArray(GL_VERT_POSXY_ID); + glEnableVertexAttribArray(GL_VERT_TXUV0_ID); + + // Decode the Zstd data and create the texture + if (ZSTD_decompress(dstDxt1, DXT1_256x256, srcZstd, sizeof srcZstd) == DXT1_256x256) { + glGenTextures(1, &txName); + glBindTexture(GL_TEXTURE_2D, txName); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glCompressedTexImage2D(GL_TEXTURE_2D, 0, + GL_COMPRESSED_RGB_S3TC_DXT1_EXT, + 256, 256, 0, DXT1_256x256, dstDxt1); + } else { + printf("Failed to decode Zstd data\n"); + } + emscripten_set_main_loop(tick, 0, EM_FALSE); + emscripten_exit_with_live_runtime(); + } + return EXIT_FAILURE; +} diff --git a/contrib/declib/tests/shell.html b/contrib/declib/tests/shell.html new file mode 100644 index 000000000..502a9b93c --- /dev/null +++ b/contrib/declib/tests/shell.html @@ -0,0 +1,31 @@ + + + + + + + + Emscripten Shell + + + + + +{{{ SCRIPT }}} + + diff --git a/contrib/declib/tests/simple.c b/contrib/declib/tests/simple.c index aad14666e..1cf7b61c8 100644 --- a/contrib/declib/tests/simple.c +++ b/contrib/declib/tests/simple.c @@ -3,7 +3,9 @@ * Simple standalone example of using the single-file \c zstddeclib. */ +#include#include +#include #include #include "../zstddeclib.c" @@ -13,7 +15,7 @@ /** * Raw 256x256 DXT1 data (used to compare the result). */ -static char const rawDxt1[] = { +static uint8_t const rawDxt1[] = { 0x3c, 0xe7, 0xc7, 0x39, 0x25, 0x25, 0x25, 0x00, 0x28, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0x08, 0x42, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x55, 0xe8, 0x41, 0xba, 0xd6, @@ -2750,7 +2752,7 @@ static char const rawDxt1[] = { /** * Zstd compressed version of \c #rawDxt1. */ -static char const srcZstd[] = { +static uint8_t const srcZstd[] = { 0x28, 0xb5, 0x2f, 0xfd, 0x60, 0x00, 0x7f, 0xfd, 0xe2, 0x00, 0x8a, 0x05, 0xc9, 0x3c, 0x5c, 0x00, 0x8e, 0x39, 0xb3, 0x01, 0xb3, 0xa8, 0xf4, 0xeb, 0x13, 0x29, 0xfe, 0x37, 0xcd, 0x0a, 0x2e, 0xa8, 0xc3, 0xc2, 0xaf, 0xdf, @@ -3363,7 +3365,7 @@ static char const srcZstd[] = { /** * Destination for decoding \c #srcZstd. */ -static char dstDxt1[sizeof rawDxt1] = {}; +static uint8_t dstDxt1[sizeof rawDxt1] = {}; #ifndef ZSTD_VERSION_MAJOR /** From 0932de54bc0dbc6d29008b9e6087b88721ca8bb0 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Mon, 26 Aug 2019 18:19:29 -0700 Subject: [PATCH 040/163] [dictBuilder] Fix deadlock in *COVER error case The COVER and FASTCOVER dictionary builders can deadlock when dictionary construction errors, likely because there are too few samples, or too few distinct dmers. The deadlock only occurs when there are errors. Fixes #1746. --- lib/dictBuilder/cover.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/dictBuilder/cover.c b/lib/dictBuilder/cover.c index 621996759..4721205da 100644 --- a/lib/dictBuilder/cover.c +++ b/lib/dictBuilder/cover.c @@ -919,13 +919,12 @@ void COVER_best_finish(COVER_best_t *best, ZDICT_cover_params_t parameters, } } /* Save the dictionary, parameters, and size */ - if (!dict) { - return; + if (dict) { + memcpy(best->dict, dict, dictSize); + best->dictSize = dictSize; + best->parameters = parameters; + best->compressedSize = compressedSize; } - memcpy(best->dict, dict, dictSize); - best->dictSize = dictSize; - best->parameters = parameters; - best->compressedSize = compressedSize; } if (liveJobs == 0) { ZSTD_pthread_cond_broadcast(&best->cond); From 793c71d6aeb775dddc8f8825d36d88fc495cc8c1 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Mon, 26 Aug 2019 18:32:08 -0700 Subject: [PATCH 041/163] [test][dictBuilder] Add multithreaded tests --- tests/playTests.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/playTests.sh b/tests/playTests.sh index ad096fddd..19fc514f6 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -526,6 +526,15 @@ $ZSTD -o tmpDict --train "$TESTDIR"/*.c "$PRGDIR"/*.c test -f tmpDict $ZSTD --train "$TESTDIR"/*.c "$PRGDIR"/*.c test -f dictionary +println "- Test dictionary training fails" +echo "000000000000000000000000000000000" > tmpz +$ZSTD --train tmpz tmpz tmpz tmpz tmpz tmpz tmpz tmpz tmpz && die "Dictionary training should fail : source is all zeros" +if [ -n "$hasMT" ] +then + $ZSTD --train -T0 tmpz tmpz tmpz tmpz tmpz tmpz tmpz tmpz tmpz && die "Dictionary training should fail : source is all zeros" + println "- Create dictionary with multithreading enabled" + $ZSTD --train -T0 "$TESTDIR"/*.c "$PRGDIR"/*.c -o tmpDict +fi rm tmp* dictionary From a57de4ac893be6414a576e9ecfb68b4bd8fc7dae Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Tue, 27 Aug 2019 15:36:06 +0200 Subject: [PATCH 042/163] Added test script; tidied and documented The test script combines the sources then builds and runs an example. A futher example is built if the Emscripten compiler is available on the system. Documentation covers building. --- contrib/declib/README.md | 8 ++- contrib/declib/build.sh | 57 +++++++++++++++++++ contrib/declib/examples/README.md | 7 +++ .../declib/{tests => examples}/emscripten.c | 22 +++---- contrib/declib/{tests => examples}/shell.html | 2 +- contrib/declib/{tests => examples}/simple.c | 17 ++++-- contrib/declib/zstddeclib-in.c | 4 +- 7 files changed, 94 insertions(+), 23 deletions(-) create mode 100755 contrib/declib/build.sh create mode 100644 contrib/declib/examples/README.md rename contrib/declib/{tests => examples}/emscripten.c (99%) rename contrib/declib/{tests => examples}/shell.html (91%) rename contrib/declib/{tests => examples}/simple.c (99%) diff --git a/contrib/declib/README.md b/contrib/declib/README.md index bb22c2423..d1e25ca06 100644 --- a/contrib/declib/README.md +++ b/contrib/declib/README.md @@ -1,8 +1,12 @@ # Single File Zstandard Decompression Library -Create the file using the shell script: +The script `combine.sh` creates an _amalgamted_ source file that can be used with out without `zstd.h`. This isn't a _header-only_ file but it does offer a similar level of simplicity when integrating into a project. + +Create `zstddeclib.c` from the Zstd source using: ``` cd zstd/contrib/declib ./combine.sh -r ../../lib -r ../../lib/common -r ../../lib/decompress -o zstddeclib.c zstddeclib-in.c ``` -Then add the resulting file to your project (see the [test sources](tests) for examples). +Then add the resulting file to your project (see the [example files](examples)). + +`build.sh` will run the above script then compile and test the resulting library. diff --git a/contrib/declib/build.sh b/contrib/declib/build.sh new file mode 100755 index 000000000..5dd4af96a --- /dev/null +++ b/contrib/declib/build.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Where to find the sources +ZSTD_SRC_ROOT="../../lib" + +# Temporary compiled binary +OUT_FILE="tempbin" + +# Optional temporary compiled WebAssembly +OUT_WASM="temp.wasm" + +# Amalgamate the sources +./combine.sh -r "$ZSTD_SRC_ROOT" -r "$ZSTD_SRC_ROOT/common" -r "$ZSTD_SRC_ROOT/decompress" -o zstddeclib.c zstddeclib-in.c +# Did combining work? +if [ $? -ne 0 ]; then + echo "Combine script: FAILED" + exit 1 +fi +echo "Combine script: PASSED" + +# Compile the generated output +cc -Os -g0 -o $OUT_FILE examples/simple.c +# Did compilation work? +if [ $? -ne 0 ]; then + echo "Compiling simple.c: FAILED" + exit 1 +fi +echo "Compiling simple.c: PASSED" + +# Run then delete the compiled output +./$OUT_FILE +retVal=$? +rm -f $OUT_FILE +# Did the test work? +if [ $retVal -ne 0 ]; then + echo "Running simple.c: FAILED" + exit 1 +fi +echo "Running simple.c: PASSED" + +# Is Emscripten available? +which emcc > /dev/null +if [ $? -ne 0 ]; then + echo "(Skipping Emscripten test)" +fi +# Compile the Emscripten example +CC_FLAGS="-Wall -Wextra -Os -g0 -flto --llvm-lto 3 -lGL -DNDEBUG=1" +emcc $CC_FLAGS -s WASM=1 -o $OUT_WASM examples/emscripten.c +# Did compilation work? +if [ $? -ne 0 ]; then + echo "Compiling emscripten.c: FAILED" + exit 1 +fi +echo "Compiling emscripten.c: PASSED" +rm -f $OUT_WASM + +exit 0 diff --git a/contrib/declib/examples/README.md b/contrib/declib/examples/README.md new file mode 100644 index 000000000..1e88c911e --- /dev/null +++ b/contrib/declib/examples/README.md @@ -0,0 +1,7 @@ +# Single File ZStandard Examples + +The examples `#include` the generated `zstddeclib.c` directly but work equally as well when including `zstd.h` and compiling the amalgamated source separately. + +`simple.c` is the most basic example of decompressing content and verifying the result. + +`emscripten.c` is a bare-bones [Emscripten](https://github.com/emscripten-core/emscripten) compiled WebGL demo using Zstd to further compress a DXT1 texture. The 256x256 texture would normally be 32kB, but even when bundled with the Zstd decompressor the resulting WebAssembly weighs in at 45kB. diff --git a/contrib/declib/tests/emscripten.c b/contrib/declib/examples/emscripten.c similarity index 99% rename from contrib/declib/tests/emscripten.c rename to contrib/declib/examples/emscripten.c index 8902947fc..4b336ce0c 100644 --- a/contrib/declib/tests/emscripten.c +++ b/contrib/declib/examples/emscripten.c @@ -6,7 +6,9 @@ * \n * Compile using: * \code - * emcc -Wall -Wextra -Os -g0 -lGL -s WASM=1 -o out.html emscripten.c + * export CC_FLAGS="-Wall -Wextra -Os -g0 -flto --llvm-lto 3 -lGL -DNDEBUG=1" + * export EM_FLAGS="-s WASM=1 -s ENVIRONMENT=web --shell-file shell.html --closure 1" + * emcc $CC_FLAGS $EM_FLAGS -o out.html emscripten.c * \endcode */ @@ -27,6 +29,8 @@ /** * Zstd compressed DXT1 256x256 texture source. + * + * File credit: https://commons.wikimedia.org/wiki/File:FuBK-Testbild.png */ static uint8_t const srcZstd[] = { 0x28, 0xb5, 0x2f, 0xfd, 0x60, 0x00, 0x7f, 0xfd, 0xe2, 0x00, 0x8a, 0x05, @@ -682,11 +686,6 @@ static GLuint fragId = 0; */ static GLint uRotId = -1; -/** - * Draw colour ID. - */ -static GLint uColId = -1; - /** * Draw colour ID. */ @@ -774,15 +773,10 @@ static GLuint compileShader(GLenum const type, const GLchar* text) { */ #define GL_VERT_POSXY_ID 0 -/** - * Vertex colour index. - */ -#define GL_VERT_COLOR_ID 1 - /** * Vertex UV0 index. */ -#define GL_VERT_TXUV0_ID 2 +#define GL_VERT_TXUV0_ID 1 /** * \c GL vec2 storage type. @@ -871,7 +865,7 @@ static void tick() { * and 'uploads' the resulting texture. * * As a (naive) comparison, removing Zstd and building with "-Os -g0 s WASM=1 - * -lGL emscripten.c" results in a 23kB WebAssembly file; re-adding Zstd + * -lGL emscripten.c" results in a 19kB WebAssembly file; re-adding Zstd * increases the Wasm by 25kB. */ int main() { @@ -882,7 +876,6 @@ int main() { fragId = compileShader(GL_FRAGMENT_SHADER, fragShader2D); glBindAttribLocation(progId, GL_VERT_POSXY_ID, "aPos"); - glBindAttribLocation(progId, GL_VERT_COLOR_ID, "aCol"); glBindAttribLocation(progId, GL_VERT_TXUV0_ID, "aUV0"); glAttachShader(progId, vertId); @@ -890,7 +883,6 @@ int main() { glLinkProgram (progId); glUseProgram (progId); uRotId = glGetUniformLocation(progId, "uRot"); - uColId = glGetUniformLocation(progId, "uCol"); uTx0Id = glGetUniformLocation(progId, "uTx0"); if (uTx0Id >= 0) { glUniform1i(uTx0Id, 0); diff --git a/contrib/declib/tests/shell.html b/contrib/declib/examples/shell.html similarity index 91% rename from contrib/declib/tests/shell.html rename to contrib/declib/examples/shell.html index 502a9b93c..5beb0e6d5 100644 --- a/contrib/declib/tests/shell.html +++ b/contrib/declib/examples/shell.html @@ -12,7 +12,7 @@ body {background:#333; font-family:"Verdana","Helvetica Neue","Helvetica","Ari - +