-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_mseed.c
331 lines (303 loc) · 30.4 KB
/
create_mseed.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
/*
* miniSEED: reduced SEED format with data portion only (FSDH)
*
* Code is based on libmseed: https://github.com/iris-edu/libmseed
* SEED format specification: http://www.fdsn.org/pdf/SEEDManual_V2.4.pdf (p.112 as well as Appendix G on p.199)
*
* 2022, rdaforno
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
/* Config */
#define OUTPUT_FILE "sinewave.mseed"
#define NUM_SAMPLES 498
#define SAMPLE_SIZE 4
#define SAMPLE_RATE 100
#define SEQUENCE_NUMBER 1
#define USE_BIG_ENDIAN 0
/* MINISEED DEFINITIONS */
/* Fixed Section of Data Header length */
#define MSEED_FSDH_LEN 48
#define MSEED_BLOCKETTE_1000_LEN 8
/* Activity flags */
#define MSEED_ACTFLAG_TIME_CORR 0x02 /* time correction already applied */
/* I/O flags */
#define MSEED_IOFLAG_SHORT_RECORD 0x04 /* padded record due to missed samples */
#define MSEED_IOFLAG_START 0x08 /* start of time series */
#define MSEED_IOFLAG_END 0x10 /* end of time series */
/* Data quality flags */
#define MSEED_DQFLAG_AMP_SAT 0x01 /* amplifier saturation detected */
#define MSEED_DQFLAG_DIG_CLIP 0x02 /* digitizer clipping detected */
#define MSEED_DQFLAG_SPIKES 0x04 /* spikes detected */
#define MSEED_DQFLAG_GLITCHES 0x08 /* glitches detected */
#define MSEED_DQFLAG_MISSING 0x10 /* missing samples (padded) */
/* Data record encodings */
#define MSEED_DATA_ENCODING_INT16 0x01 /* 16-bit integers */
#define MSEED_DATA_ENCODING_INT24 0x02 /* 24-bit integers */
#define MSEED_DATA_ENCODING_INT32 0x03 /* 32-bit integers */
/* Endianness */
#define MSEED_DATA_LITTLE_ENDIAN 0x0
#define MSEED_DATA_BIG_ENDIAN 0x1
#pragma pack(1) /* align the following structs to 1 byte */
/* miniSEED v2.4 FSDH (Fixed Section of Data Header)
* Note: SEED uses big endian word order as its standard, but libmseed can work with both
* (automatically determines endianness based on the 'year' field of the start time */
typedef struct
{
char seq_no[6];
char data_quality;
char reserved;
char station[5];
char location[2];
char channel[3];
char network[2];
/* record start time (10 bytes) */
struct {
uint16_t year;
uint16_t day;
uint8_t hour;
uint8_t min;
uint8_t sec;
uint8_t unused;
uint16_t fract;
} start_time;
uint16_t num_samples;
int16_t samprate_fact;
int16_t samprate_mult;
uint8_t act_flags;
uint8_t io_flags;
uint8_t dq_flags;
uint8_t num_blockettes;
int32_t time_correct;
uint16_t data_ofs;
uint16_t blockette_ofs;
} mseed2_fsdh_t;
/* miniSEED v2.4 blockette 1000 */
typedef struct
{
uint16_t type;
uint16_t next;
uint8_t encoding;
uint8_t endian;
uint8_t data_len;
uint8_t reserved;
} mseed2_bl1k_t;
#pragma pack()
#ifndef MIN
#define MIN(a, b) ((a) <= (b) ? (a) : (b))
#endif
uint8_t waveform_big[];
uint8_t waveform_little[];
/* Helper functions */
uint32_t num_bits(uint32_t val)
{
/* returns ceil(Log2(val)) */
uint32_t bits = 31;
while (bits > 0) {
if (val & (1 << bits)) {
if ((val & (val - 1)) != 0) { /* if not a power of two, increase by one */
bits++;
}
break;
}
bits--;
}
return bits;
}
/* MAIN function */
int main(void)
{
char buf[128];
if ( (sizeof(mseed2_fsdh_t) != MSEED_FSDH_LEN) || (sizeof(mseed2_bl1k_t) != MSEED_BLOCKETTE_1000_LEN) ) {
printf("invalid struct size\r\n");
return 1;
}
mseed2_fsdh_t header;
memset(&header, 0, sizeof(mseed2_fsdh_t)); /* make sure all unused fields are set to 0 */
snprintf(buf, 7, "%06u", SEQUENCE_NUMBER);
memcpy(header.seq_no, buf, 6); /* 6 chars, padded with zeros on the left */
header.data_quality = 'R';
memcpy(header.station, "DEV1 ", 5); /* 5 chars, padded with white spaces at the end */
memcpy(header.location, "XY", 2); /* 2 chars, padded with white spaces at the end */
memcpy(header.channel, "Z ", 3); /* 3 chars, padded with white spaces at the end */
memcpy(header.network, " ", 2); /* 2 chars, padded with white spaces at the end */
header.start_time.year = 2022;
header.start_time.day = 1;
header.start_time.hour = 12;
header.start_time.min = 0;
header.start_time.sec = 0;
header.start_time.fract = 0;
header.num_samples = NUM_SAMPLES;
header.samprate_fact = SAMPLE_RATE;
header.samprate_mult = 1;
header.act_flags = MSEED_ACTFLAG_TIME_CORR;
header.io_flags = 0;
header.dq_flags = 0;
header.num_blockettes = 1;
header.time_correct = 0; /* time correction to apply, in 100us steps */
header.data_ofs = sizeof(mseed2_fsdh_t) + sizeof(mseed2_bl1k_t);
header.blockette_ofs = sizeof(mseed2_fsdh_t);
mseed2_bl1k_t blockette1k;
blockette1k.type = 1000; /* blockette 1000 */
blockette1k.next = 0; /* no more blockettes follow */
blockette1k.encoding = MSEED_DATA_ENCODING_INT32;
blockette1k.endian = USE_BIG_ENDIAN ? MSEED_DATA_BIG_ENDIAN : MSEED_DATA_LITTLE_ENDIAN;
uint32_t record_len = sizeof(mseed2_fsdh_t) + sizeof(mseed2_bl1k_t) + NUM_SAMPLES * SAMPLE_SIZE;
blockette1k.data_len = num_bits(record_len); /* exponent (2^x) of data record length, min. value is 8 (256 bytes) */
blockette1k.reserved = 0;
FILE* mseed_file = fopen(OUTPUT_FILE, "wb");
if (!mseed_file) {
printf("failed to open output file\r\n");
return 1;
}
fwrite(&header, sizeof(mseed2_fsdh_t), 1, mseed_file);
fwrite(&blockette1k, sizeof(mseed2_bl1k_t), 1, mseed_file);
fwrite((USE_BIG_ENDIAN ? waveform_big : waveform_little), NUM_SAMPLES, SAMPLE_SIZE, mseed_file);
/* add padding bytes to fill the remaining space in the data record to the next power of two */
uint32_t remaining_bytes = (1 << blockette1k.data_len) - record_len;
memset(buf, 0, 128);
while (remaining_bytes) {
uint32_t bytes_to_write = MIN(128, remaining_bytes);
fwrite(buf, bytes_to_write, 1, mseed_file);
remaining_bytes -= bytes_to_write;
}
fclose(mseed_file);
printf("data written to file '%s'\r\n", OUTPUT_FILE);
return 0;
}
/* DATA */
/* sine wave, 32-bit samples in big endian format */
uint8_t waveform_big[] =
{
0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x01, 0x8d, 0x00, 0x00, 0x03, 0x77, 0x00, 0x00, 0x06, 0x16, 0x00, 0x00, 0x09, 0x5d, 0x00, 0x00, 0x0d, 0x3c, 0x00, 0x00, 0x11, 0x9e,
0x00, 0x00, 0x16, 0x6b, 0x00, 0x00, 0x1b, 0x8a, 0x00, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x26, 0x4b, 0x00, 0x00, 0x2b, 0xb0, 0x00, 0x00, 0x30, 0xee, 0x00, 0x00, 0x35, 0xe4, 0x00, 0x00, 0x3a, 0x72,
0x00, 0x00, 0x3e, 0x79, 0x00, 0x00, 0x41, 0xda, 0x00, 0x00, 0x44, 0x79, 0x00, 0x00, 0x46, 0x3c, 0x00, 0x00, 0x47, 0x0a, 0x00, 0x00, 0x46, 0xcf, 0x00, 0x00, 0x45, 0x7b, 0x00, 0x00, 0x42, 0xff,
0x00, 0x00, 0x3f, 0x53, 0x00, 0x00, 0x3a, 0x72, 0x00, 0x00, 0x34, 0x5b, 0x00, 0x00, 0x2d, 0x13, 0x00, 0x00, 0x24, 0xa4, 0x00, 0x00, 0x1b, 0x1a, 0x00, 0x00, 0x10, 0x8a, 0x00, 0x00, 0x05, 0x09,
0xff, 0xff, 0xf8, 0xb4, 0xff, 0xff, 0xeb, 0xaa, 0xff, 0xff, 0xde, 0x10, 0xff, 0xff, 0xd0, 0x0b, 0xff, 0xff, 0xc1, 0xc5, 0xff, 0xff, 0xb3, 0x6c, 0xff, 0xff, 0xa5, 0x2d, 0xff, 0xff, 0x97, 0x39,
0xff, 0xff, 0x89, 0xc0, 0xff, 0xff, 0x7c, 0xf3, 0xff, 0xff, 0x71, 0x02, 0xff, 0xff, 0x66, 0x1d, 0xff, 0xff, 0x5c, 0x72, 0xff, 0xff, 0x54, 0x2b, 0xff, 0xff, 0x4d, 0x72, 0xff, 0xff, 0x48, 0x6c,
0xff, 0xff, 0x45, 0x38, 0xff, 0xff, 0x43, 0xf4, 0xff, 0xff, 0x44, 0xb6, 0xff, 0xff, 0x47, 0x8f, 0xff, 0xff, 0x4c, 0x8c, 0xff, 0xff, 0x53, 0xb2, 0xff, 0xff, 0x5c, 0xff, 0xff, 0xff, 0x68, 0x6b,
0xff, 0xff, 0x75, 0xe9, 0xff, 0xff, 0x85, 0x63, 0xff, 0xff, 0x96, 0xbd, 0xff, 0xff, 0xa9, 0xd5, 0xff, 0xff, 0xbe, 0x83, 0xff, 0xff, 0xd4, 0x98, 0xff, 0xff, 0xeb, 0xe0, 0x00, 0x00, 0x04, 0x23,
0x00, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x36, 0x9f, 0x00, 0x00, 0x50, 0x52, 0x00, 0x00, 0x69, 0xf5, 0x00, 0x00, 0x83, 0x40, 0x00, 0x00, 0x9b, 0xe8, 0x00, 0x00, 0xb3, 0xa5, 0x00, 0x00, 0xca, 0x2d,
0x00, 0x00, 0xdf, 0x38, 0x00, 0x00, 0xf2, 0x82, 0x00, 0x01, 0x03, 0xc8, 0x00, 0x01, 0x12, 0xce, 0x00, 0x01, 0x1f, 0x5a, 0x00, 0x01, 0x29, 0x39, 0x00, 0x01, 0x30, 0x3e, 0x00, 0x01, 0x34, 0x44,
0x00, 0x01, 0x35, 0x2d, 0x00, 0x01, 0x32, 0xe1, 0x00, 0x01, 0x2d, 0x54, 0x00, 0x01, 0x24, 0x80, 0x00, 0x01, 0x18, 0x6a, 0x00, 0x01, 0x09, 0x1f, 0x00, 0x00, 0xf6, 0xb6, 0x00, 0x00, 0xe1, 0x4e,
0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0xae, 0x2f, 0x00, 0x00, 0x90, 0xe3, 0x00, 0x00, 0x71, 0x6e, 0x00, 0x00, 0x50, 0x1a, 0x00, 0x00, 0x2d, 0x36, 0x00, 0x00, 0x09, 0x19, 0xff, 0xff, 0xe4, 0x1d,
0xff, 0xff, 0xbe, 0xa1, 0xff, 0xff, 0x99, 0x07, 0xff, 0xff, 0x73, 0xb5, 0xff, 0xff, 0x4f, 0x10, 0xff, 0xff, 0x2b, 0x7e, 0xff, 0xff, 0x09, 0x64, 0xff, 0xfe, 0xe9, 0x25, 0xff, 0xfe, 0xcb, 0x20,
0xff, 0xfe, 0xaf, 0xb2, 0xff, 0xfe, 0x97, 0x30, 0xff, 0xfe, 0x81, 0xea, 0xff, 0xfe, 0x70, 0x28, 0xff, 0xfe, 0x62, 0x2b, 0xff, 0xfe, 0x58, 0x29, 0xff, 0xfe, 0x52, 0x51, 0xff, 0xfe, 0x50, 0xc5,
0xff, 0xfe, 0x53, 0x9c, 0xff, 0xfe, 0x5a, 0xe4, 0xff, 0xfe, 0x66, 0x9d, 0xff, 0xfe, 0x76, 0xbb, 0xff, 0xfe, 0x8b, 0x28, 0xff, 0xfe, 0xa3, 0xc0, 0xff, 0xfe, 0xc0, 0x54, 0xff, 0xfe, 0xe0, 0xaa,
0xff, 0xff, 0x04, 0x7b, 0xff, 0xff, 0x2b, 0x79, 0xff, 0xff, 0x55, 0x48, 0xff, 0xff, 0x81, 0x86, 0xff, 0xff, 0xaf, 0xc9, 0xff, 0xff, 0xdf, 0x9e, 0x00, 0x00, 0x10, 0x8d, 0x00, 0x00, 0x42, 0x18,
0x00, 0x00, 0x73, 0xc1, 0x00, 0x00, 0xa5, 0x04, 0x00, 0x00, 0xd5, 0x5e, 0x00, 0x01, 0x04, 0x4b, 0x00, 0x01, 0x31, 0x4a, 0x00, 0x01, 0x5b, 0xdd, 0x00, 0x01, 0x83, 0x8a, 0x00, 0x01, 0xa7, 0xdf,
0x00, 0x01, 0xc8, 0x6e, 0x00, 0x01, 0xe4, 0xd4, 0x00, 0x01, 0xfc, 0xb6, 0x00, 0x02, 0x0f, 0xc5, 0x00, 0x02, 0x1d, 0xbd, 0x00, 0x02, 0x26, 0x67, 0x00, 0x02, 0x29, 0x98, 0x00, 0x02, 0x27, 0x34,
0x00, 0x02, 0x1f, 0x2f, 0x00, 0x02, 0x11, 0x88, 0x00, 0x01, 0xfe, 0x50, 0x00, 0x01, 0xe5, 0xa5, 0x00, 0x01, 0xc7, 0xb5, 0x00, 0x01, 0xa4, 0xbd, 0x00, 0x01, 0x7d, 0x07, 0x00, 0x01, 0x50, 0xeb,
0x00, 0x01, 0x20, 0xcd, 0x00, 0x00, 0xed, 0x1d, 0x00, 0x00, 0xb6, 0x58, 0x00, 0x00, 0x7d, 0x02, 0x00, 0x00, 0x41, 0xaa, 0x00, 0x00, 0x04, 0xe2, 0xff, 0xff, 0xc7, 0x47, 0xff, 0xff, 0x89, 0x75,
0xff, 0xff, 0x4c, 0x0f, 0xff, 0xff, 0x0f, 0xb7, 0xff, 0xfe, 0xd5, 0x0c, 0xff, 0xfe, 0x9c, 0xad, 0xff, 0xfe, 0x67, 0x37, 0xff, 0xfe, 0x35, 0x3b, 0xff, 0xfe, 0x07, 0x4a, 0xff, 0xfd, 0xdd, 0xe5,
0xff, 0xfd, 0xb9, 0x89, 0xff, 0xfd, 0x9a, 0xa2, 0xff, 0xfd, 0x81, 0x92, 0xff, 0xfd, 0x6e, 0xad, 0xff, 0xfd, 0x62, 0x35, 0xff, 0xfd, 0x5c, 0x5f, 0xff, 0xfd, 0x5d, 0x4d, 0xff, 0xfd, 0x65, 0x11,
0xff, 0xfd, 0x73, 0xab, 0xff, 0xfd, 0x89, 0x09, 0xff, 0xfd, 0xa5, 0x06, 0xff, 0xfd, 0xc7, 0x6d, 0xff, 0xfd, 0xef, 0xf6, 0xff, 0xfe, 0x1e, 0x4a, 0xff, 0xfe, 0x52, 0x00, 0xff, 0xfe, 0x8a, 0xa2,
0xff, 0xfe, 0xc7, 0xa8, 0xff, 0xff, 0x08, 0x81, 0xff, 0xff, 0x4c, 0x8f, 0xff, 0xff, 0x93, 0x29, 0xff, 0xff, 0xdb, 0x9f, 0x00, 0x00, 0x25, 0x3a, 0x00, 0x00, 0x6f, 0x3d, 0x00, 0x00, 0xb8, 0xe8,
0x00, 0x01, 0x01, 0x7c, 0x00, 0x01, 0x48, 0x3a, 0x00, 0x01, 0x8c, 0x63, 0x00, 0x01, 0xcd, 0x40, 0x00, 0x02, 0x0a, 0x21, 0x00, 0x02, 0x42, 0x5c, 0x00, 0x02, 0x75, 0x53, 0x00, 0x02, 0xa2, 0x75,
0x00, 0x02, 0xc9, 0x3d, 0x00, 0x02, 0xe9, 0x36, 0x00, 0x03, 0x01, 0xfc, 0x00, 0x03, 0x13, 0x3c, 0x00, 0x03, 0x1c, 0xb6, 0x00, 0x03, 0x1e, 0x3e, 0x00, 0x03, 0x17, 0xbd, 0x00, 0x03, 0x09, 0x2f,
0x00, 0x02, 0xf2, 0xa5, 0x00, 0x02, 0xd4, 0x48, 0x00, 0x02, 0xae, 0x52, 0x00, 0x02, 0x81, 0x13, 0x00, 0x02, 0x4c, 0xee, 0x00, 0x02, 0x12, 0x5b, 0x00, 0x01, 0xd1, 0xe1, 0x00, 0x01, 0x8c, 0x1a,
0x00, 0x01, 0x41, 0xae, 0x00, 0x00, 0xf3, 0x52, 0x00, 0x00, 0xa1, 0xc9, 0x00, 0x00, 0x4d, 0xde, 0xff, 0xff, 0xf8, 0x65, 0xff, 0xff, 0xa2, 0x37, 0xff, 0xff, 0x4c, 0x33, 0xff, 0xfe, 0xf7, 0x38,
0xff, 0xfe, 0xa4, 0x24, 0xff, 0xfe, 0x53, 0xd2, 0xff, 0xfe, 0x07, 0x19, 0xff, 0xfd, 0xbe, 0xc8, 0xff, 0xfd, 0x7b, 0xa3, 0xff, 0xfd, 0x3e, 0x65, 0xff, 0xfd, 0x07, 0xb9, 0xff, 0xfc, 0xd8, 0x3c,
0xff, 0xfc, 0xb0, 0x77, 0xff, 0xfc, 0x90, 0xe4, 0xff, 0xfc, 0x79, 0xe6, 0xff, 0xfc, 0x6b, 0xcb, 0xff, 0xfc, 0x66, 0xcb, 0xff, 0xfc, 0x6b, 0x07, 0xff, 0xfc, 0x78, 0x88, 0xff, 0xfc, 0x8f, 0x3f,
0xff, 0xfc, 0xaf, 0x05, 0xff, 0xfc, 0xd7, 0x9c, 0xff, 0xfd, 0x08, 0xac, 0xff, 0xfd, 0x41, 0xca, 0xff, 0xfd, 0x82, 0x72, 0xff, 0xfd, 0xca, 0x0d, 0xff, 0xfe, 0x17, 0xf1, 0xff, 0xfe, 0x6b, 0x62,
0xff, 0xfe, 0xc3, 0x92, 0xff, 0xff, 0x1f, 0xa9, 0xff, 0xff, 0x7e, 0xc0, 0xff, 0xff, 0xdf, 0xe7, 0x00, 0x00, 0x42, 0x28, 0x00, 0x00, 0xa4, 0x87, 0x00, 0x01, 0x06, 0x06, 0x00, 0x01, 0x65, 0xa8,
0x00, 0x01, 0xc2, 0x71, 0x00, 0x02, 0x1b, 0x6c, 0x00, 0x02, 0x6f, 0xab, 0x00, 0x02, 0xbe, 0x4d, 0x00, 0x03, 0x06, 0x79, 0x00, 0x03, 0x47, 0x6a, 0x00, 0x03, 0x80, 0x69, 0x00, 0x03, 0xb0, 0xd3,
0x00, 0x03, 0xd8, 0x1b, 0x00, 0x03, 0xf5, 0xca, 0x00, 0x04, 0x09, 0x80, 0x00, 0x04, 0x12, 0xf6, 0x00, 0x04, 0x12, 0x02, 0x00, 0x04, 0x06, 0x91, 0x00, 0x03, 0xf0, 0xae, 0x00, 0x03, 0xd0, 0x7b,
0x00, 0x03, 0xa6, 0x3a, 0x00, 0x03, 0x72, 0x45, 0x00, 0x03, 0x35, 0x0e, 0x00, 0x02, 0xef, 0x23, 0x00, 0x02, 0xa1, 0x28, 0x00, 0x02, 0x4b, 0xd7, 0x00, 0x01, 0xef, 0xff, 0x00, 0x01, 0x8e, 0x81,
0x00, 0x01, 0x28, 0x4e, 0x00, 0x00, 0xbe, 0x64, 0x00, 0x00, 0x51, 0xcf, 0xff, 0xff, 0xe3, 0xa1, 0xff, 0xff, 0x74, 0xf5, 0xff, 0xff, 0x06, 0xe6, 0xff, 0xfe, 0x9a, 0x91, 0xff, 0xfe, 0x31, 0x12,
0xff, 0xfd, 0xcb, 0x7d, 0xff, 0xfd, 0x6a, 0xdf, 0xff, 0xfd, 0x10, 0x3a, 0xff, 0xfc, 0xbc, 0x83, 0xff, 0xfc, 0x70, 0x9e, 0xff, 0xfc, 0x2d, 0x5b, 0xff, 0xfb, 0xf3, 0x79, 0xff, 0xfb, 0xc3, 0x9c,
0xff, 0xfb, 0x9e, 0x51, 0xff, 0xfb, 0x84, 0x0a, 0xff, 0xfb, 0x75, 0x1f, 0xff, 0xfb, 0x71, 0xca, 0xff, 0xfb, 0x7a, 0x27, 0xff, 0xfb, 0x8e, 0x33, 0xff, 0xfb, 0xad, 0xd1, 0xff, 0xfb, 0xd8, 0xc2,
0xff, 0xfc, 0x0e, 0xa9, 0xff, 0xfc, 0x4f, 0x10, 0xff, 0xfc, 0x99, 0x62, 0xff, 0xfc, 0xec, 0xef, 0xff, 0xfd, 0x48, 0xf0, 0xff, 0xfd, 0xac, 0x86, 0xff, 0xfe, 0x16, 0xbc, 0xff, 0xfe, 0x86, 0x8d,
0xff, 0xfe, 0xfa, 0xe1, 0xff, 0xff, 0x72, 0x94, 0xff, 0xff, 0xec, 0x77, 0x00, 0x00, 0x67, 0x54, 0x00, 0x00, 0xe1, 0xef, 0x00, 0x01, 0x5b, 0x0d, 0x00, 0x01, 0xd1, 0x73, 0x00, 0x02, 0x43, 0xeb,
0x00, 0x02, 0xb1, 0x49, 0x00, 0x03, 0x18, 0x6a, 0x00, 0x03, 0x78, 0x3b, 0x00, 0x03, 0xcf, 0xb9, 0x00, 0x04, 0x1d, 0xf6, 0x00, 0x04, 0x62, 0x1a, 0x00, 0x04, 0x9b, 0x65, 0x00, 0x04, 0xc9, 0x32,
0x00, 0x04, 0xea, 0xfb, 0x00, 0x05, 0x00, 0x54, 0x00, 0x05, 0x08, 0xf3, 0x00, 0x05, 0x04, 0xaf, 0x00, 0x04, 0xf3, 0x7e, 0x00, 0x04, 0xd5, 0x78, 0x00, 0x04, 0xaa, 0xd8, 0x00, 0x04, 0x73, 0xf8,
0x00, 0x04, 0x31, 0x51, 0x00, 0x03, 0xe3, 0x7f, 0x00, 0x03, 0x8b, 0x37, 0x00, 0x03, 0x29, 0x4e, 0x00, 0x02, 0xbe, 0xb0, 0x00, 0x02, 0x4c, 0x64, 0x00, 0x01, 0xd3, 0x83, 0x00, 0x01, 0x55, 0x3c,
0x00, 0x00, 0xd2, 0xcb, 0x00, 0x00, 0x4d, 0x79, 0xff, 0xff, 0xc6, 0x9a, 0xff, 0xff, 0x3f, 0x86, 0xff, 0xfe, 0xb9, 0x99, 0xff, 0xfe, 0x36, 0x2d, 0xff, 0xfd, 0xb6, 0x98, 0xff, 0xfd, 0x3c, 0x28,
0xff, 0xfc, 0xc8, 0x1f, 0xff, 0xfc, 0x5b, 0xb2, 0xff, 0xfb, 0xf8, 0x03, 0xff, 0xfb, 0x9e, 0x1e, 0xff, 0xfb, 0x4e, 0xfa, 0xff, 0xfb, 0x0b, 0x71, 0xff, 0xfa, 0xd4, 0x42, 0xff, 0xfa, 0xaa, 0x0c,
0xff, 0xfa, 0x8d, 0x50, 0xff, 0xfa, 0x7e, 0x69, 0xff, 0xfa, 0x7d, 0x92, 0xff, 0xfa, 0x8a, 0xe1, 0xff, 0xfa, 0xa6, 0x47, 0xff, 0xfa, 0xcf, 0x93, 0xff, 0xfb, 0x06, 0x6e, 0xff, 0xfb, 0x4a, 0x5c,
0xff, 0xfb, 0x9a, 0xc3, 0xff, 0xfb, 0xf6, 0xe4, 0xff, 0xfc, 0x5d, 0xe3, 0xff, 0xfc, 0xce, 0xc6, 0xff, 0xfd, 0x48, 0x78, 0xff, 0xfd, 0xc9, 0xcc, 0xff, 0xfe, 0x51, 0x81, 0xff, 0xfe, 0xde, 0x41,
0xff, 0xff, 0x6e, 0xab, 0x00, 0x00, 0x01, 0x4f, 0x00, 0x00, 0x94, 0xb7, 0x00, 0x01, 0x27, 0x6a, 0x00, 0x01, 0xb7, 0xec, 0x00, 0x02, 0x44, 0xc8, 0x00, 0x02, 0xcc, 0x8e, 0x00, 0x03, 0x4d, 0xdb,
0x00, 0x03, 0xc7, 0x58, 0x00, 0x04, 0x37, 0xc4, 0x00, 0x04, 0x9d, 0xf1, 0x00, 0x04, 0xf8, 0xcb, 0x00, 0x05, 0x47, 0x59, 0x00, 0x05, 0x88, 0xc0, 0x00, 0x05, 0xbc, 0x48, 0x00, 0x05, 0xe1, 0x5a,
0x00, 0x05, 0xf7, 0x83, 0x00, 0x05, 0xfe, 0x76, 0x00, 0x05, 0xf6, 0x0f, 0x00, 0x05, 0xde, 0x4e, 0x00, 0x05, 0xb7, 0x5d, 0x00, 0x05, 0x81, 0x8c, 0x00, 0x05, 0x3d, 0x53, 0x00, 0x04, 0xeb, 0x4d,
0x00, 0x04, 0x8c, 0x3d, 0x00, 0x04, 0x21, 0x06, 0x00, 0x03, 0xaa, 0xac, 0x00, 0x03, 0x2a, 0x50, 0x00, 0x02, 0xa1, 0x31, 0x00, 0x02, 0x10, 0xa3, 0x00, 0x01, 0x7a, 0x11, 0x00, 0x00, 0xde, 0xf6,
0x00, 0x00, 0x40, 0xdb, 0xff, 0xff, 0xa1, 0x52, 0xff, 0xff, 0x01, 0xf5, 0xff, 0xfe, 0x64, 0x5c, 0xff, 0xfd, 0xca, 0x1f, 0xff, 0xfd, 0x34, 0xce, 0xff, 0xfc, 0xa5, 0xf0, 0xff, 0xfc, 0x1e, 0xfc,
0xff, 0xfb, 0xa1, 0x55, 0xff, 0xfb, 0x2e, 0x4b, 0xff, 0xfa, 0xc7, 0x13, 0xff, 0xfa, 0x6c, 0xc3, 0xff, 0xfa, 0x20, 0x55, 0xff, 0xf9, 0xe2, 0x9d, 0xff, 0xf9, 0xb4, 0x4b, 0xff, 0xf9, 0x95, 0xeb,
0xff, 0xf9, 0x87, 0xdc, 0xff, 0xf9, 0x8a, 0x57, 0xff, 0xf9, 0x9d, 0x6a, 0xff, 0xf9, 0xc0, 0xf7, 0xff, 0xf9, 0xf4, 0xb7, 0xff, 0xfa, 0x38, 0x39, 0xff, 0xfa, 0x8a, 0xe1, 0xff, 0xfa, 0xeb, 0xee,
0xff, 0xfb, 0x5a, 0x77, 0xff, 0xfb, 0xd5, 0x70, 0xff, 0xfc, 0x5b, 0xac, 0xff, 0xfc, 0xeb, 0xe0, 0xff, 0xfd, 0x84, 0xa5, 0xff, 0xfe, 0x24, 0x7c, 0xff, 0xfe, 0xc9, 0xd3, 0xff, 0xff, 0x73, 0x08,
0x00, 0x00, 0x1e, 0x6d, 0x00, 0x00, 0xca, 0x4b, 0x00, 0x01, 0x74, 0xea, 0x00, 0x02, 0x1c, 0x93, 0x00, 0x02, 0xbf, 0x92, 0x00, 0x03, 0x5c, 0x40, 0x00, 0x03, 0xf1, 0x03, 0x00, 0x04, 0x7c, 0x54,
0x00, 0x04, 0xfc, 0xc2, 0x00, 0x05, 0x70, 0xf7, 0x00, 0x05, 0xd7, 0xbb, 0x00, 0x06, 0x2f, 0xf5, 0x00, 0x06, 0x78, 0xb3, 0x00, 0x06, 0xb1, 0x29, 0x00, 0x06, 0xd8, 0xb2, 0x00, 0x06, 0xee, 0xd7,
0x00, 0x06, 0xf3, 0x4a, 0x00, 0x06, 0xe5, 0xed, 0x00, 0x06, 0xc6, 0xce, 0x00, 0x06, 0x96, 0x29, 0x00, 0x06, 0x54, 0x67, 0x00, 0x06, 0x02, 0x1d, 0x00, 0x05, 0xa0, 0x0e, 0x00, 0x05, 0x2f, 0x23,
0x00, 0x04, 0xb0, 0x6d, 0x00, 0x04, 0x25, 0x23, 0x00, 0x03, 0x8e, 0x9d, 0x00, 0x02, 0xee, 0x51, 0x00, 0x02, 0x45, 0xd0, 0x00, 0x01, 0x96, 0xc1, 0x00, 0x00, 0xe2, 0xdf, 0x00, 0x00, 0x2b, 0xf3,
0xff, 0xff, 0x73, 0xcf, 0xff, 0xfe, 0xbc, 0x4a, 0xff, 0xfe, 0x07, 0x3c, 0xff, 0xfd, 0x56, 0x7a, 0xff, 0xfc, 0xab, 0xcd, 0xff, 0xfc, 0x08, 0xf3, 0xff, 0xfb, 0x6f, 0x95, 0xff, 0xfa, 0xe1, 0x48,
0xff, 0xfa, 0x5f, 0x86, 0xff, 0xf9, 0xeb, 0xa8, 0xff, 0xf9, 0x86, 0xe7, 0xff, 0xf9, 0x32, 0x56, 0xff, 0xf8, 0xee, 0xe0, 0xff, 0xf8, 0xbd, 0x42, 0xff, 0xf8, 0x9e, 0x11, 0xff, 0xf8, 0x91, 0xaf,
0xff, 0xf8, 0x98, 0x50, 0xff, 0xf8, 0xb1, 0xf6, 0xff, 0xf8, 0xde, 0x75, 0xff, 0xf9, 0x1d, 0x6d, 0xff, 0xf9, 0x6e, 0x51, 0xff, 0xf9, 0xd0, 0x62, 0xff, 0xfa, 0x42, 0xb8, 0xff, 0xfa, 0xc4, 0x3e,
0xff, 0xfb, 0x53, 0xb6, 0xff, 0xfb, 0xef, 0xc0, 0xff, 0xfc, 0x96, 0xd7, 0xff, 0xfd, 0x47, 0x59, 0xff, 0xfd, 0xff, 0x8d,
};
/* sine wave, 32-bit samples in little endian format */
uint8_t waveform_little[] =
{
0x0a, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x77, 0x03, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00, 0x5d, 0x09, 0x00, 0x00, 0x3c, 0x0d, 0x00, 0x00, 0x9e, 0x11, 0x00, 0x00,
0x6b, 0x16, 0x00, 0x00, 0x8a, 0x1b, 0x00, 0x00, 0xdf, 0x20, 0x00, 0x00, 0x4b, 0x26, 0x00, 0x00, 0xb0, 0x2b, 0x00, 0x00, 0xee, 0x30, 0x00, 0x00, 0xe4, 0x35, 0x00, 0x00, 0x72, 0x3a, 0x00, 0x00,
0x79, 0x3e, 0x00, 0x00, 0xda, 0x41, 0x00, 0x00, 0x79, 0x44, 0x00, 0x00, 0x3c, 0x46, 0x00, 0x00, 0x0a, 0x47, 0x00, 0x00, 0xcf, 0x46, 0x00, 0x00, 0x7b, 0x45, 0x00, 0x00, 0xff, 0x42, 0x00, 0x00,
0x53, 0x3f, 0x00, 0x00, 0x72, 0x3a, 0x00, 0x00, 0x5b, 0x34, 0x00, 0x00, 0x13, 0x2d, 0x00, 0x00, 0xa4, 0x24, 0x00, 0x00, 0x1a, 0x1b, 0x00, 0x00, 0x8a, 0x10, 0x00, 0x00, 0x09, 0x05, 0x00, 0x00,
0xb4, 0xf8, 0xff, 0xff, 0xaa, 0xeb, 0xff, 0xff, 0x10, 0xde, 0xff, 0xff, 0x0b, 0xd0, 0xff, 0xff, 0xc5, 0xc1, 0xff, 0xff, 0x6c, 0xb3, 0xff, 0xff, 0x2d, 0xa5, 0xff, 0xff, 0x39, 0x97, 0xff, 0xff,
0xc0, 0x89, 0xff, 0xff, 0xf3, 0x7c, 0xff, 0xff, 0x02, 0x71, 0xff, 0xff, 0x1d, 0x66, 0xff, 0xff, 0x72, 0x5c, 0xff, 0xff, 0x2b, 0x54, 0xff, 0xff, 0x72, 0x4d, 0xff, 0xff, 0x6c, 0x48, 0xff, 0xff,
0x38, 0x45, 0xff, 0xff, 0xf4, 0x43, 0xff, 0xff, 0xb6, 0x44, 0xff, 0xff, 0x8f, 0x47, 0xff, 0xff, 0x8c, 0x4c, 0xff, 0xff, 0xb2, 0x53, 0xff, 0xff, 0xff, 0x5c, 0xff, 0xff, 0x6b, 0x68, 0xff, 0xff,
0xe9, 0x75, 0xff, 0xff, 0x63, 0x85, 0xff, 0xff, 0xbd, 0x96, 0xff, 0xff, 0xd5, 0xa9, 0xff, 0xff, 0x83, 0xbe, 0xff, 0xff, 0x98, 0xd4, 0xff, 0xff, 0xe0, 0xeb, 0xff, 0xff, 0x23, 0x04, 0x00, 0x00,
0x23, 0x1d, 0x00, 0x00, 0x9f, 0x36, 0x00, 0x00, 0x52, 0x50, 0x00, 0x00, 0xf5, 0x69, 0x00, 0x00, 0x40, 0x83, 0x00, 0x00, 0xe8, 0x9b, 0x00, 0x00, 0xa5, 0xb3, 0x00, 0x00, 0x2d, 0xca, 0x00, 0x00,
0x38, 0xdf, 0x00, 0x00, 0x82, 0xf2, 0x00, 0x00, 0xc8, 0x03, 0x01, 0x00, 0xce, 0x12, 0x01, 0x00, 0x5a, 0x1f, 0x01, 0x00, 0x39, 0x29, 0x01, 0x00, 0x3e, 0x30, 0x01, 0x00, 0x44, 0x34, 0x01, 0x00,
0x2d, 0x35, 0x01, 0x00, 0xe1, 0x32, 0x01, 0x00, 0x54, 0x2d, 0x01, 0x00, 0x80, 0x24, 0x01, 0x00, 0x6a, 0x18, 0x01, 0x00, 0x1f, 0x09, 0x01, 0x00, 0xb6, 0xf6, 0x00, 0x00, 0x4e, 0xe1, 0x00, 0x00,
0x11, 0xc9, 0x00, 0x00, 0x2f, 0xae, 0x00, 0x00, 0xe3, 0x90, 0x00, 0x00, 0x6e, 0x71, 0x00, 0x00, 0x1a, 0x50, 0x00, 0x00, 0x36, 0x2d, 0x00, 0x00, 0x19, 0x09, 0x00, 0x00, 0x1d, 0xe4, 0xff, 0xff,
0xa1, 0xbe, 0xff, 0xff, 0x07, 0x99, 0xff, 0xff, 0xb5, 0x73, 0xff, 0xff, 0x10, 0x4f, 0xff, 0xff, 0x7e, 0x2b, 0xff, 0xff, 0x64, 0x09, 0xff, 0xff, 0x25, 0xe9, 0xfe, 0xff, 0x20, 0xcb, 0xfe, 0xff,
0xb2, 0xaf, 0xfe, 0xff, 0x30, 0x97, 0xfe, 0xff, 0xea, 0x81, 0xfe, 0xff, 0x28, 0x70, 0xfe, 0xff, 0x2b, 0x62, 0xfe, 0xff, 0x29, 0x58, 0xfe, 0xff, 0x51, 0x52, 0xfe, 0xff, 0xc5, 0x50, 0xfe, 0xff,
0x9c, 0x53, 0xfe, 0xff, 0xe4, 0x5a, 0xfe, 0xff, 0x9d, 0x66, 0xfe, 0xff, 0xbb, 0x76, 0xfe, 0xff, 0x28, 0x8b, 0xfe, 0xff, 0xc0, 0xa3, 0xfe, 0xff, 0x54, 0xc0, 0xfe, 0xff, 0xaa, 0xe0, 0xfe, 0xff,
0x7b, 0x04, 0xff, 0xff, 0x79, 0x2b, 0xff, 0xff, 0x48, 0x55, 0xff, 0xff, 0x86, 0x81, 0xff, 0xff, 0xc9, 0xaf, 0xff, 0xff, 0x9e, 0xdf, 0xff, 0xff, 0x8d, 0x10, 0x00, 0x00, 0x18, 0x42, 0x00, 0x00,
0xc1, 0x73, 0x00, 0x00, 0x04, 0xa5, 0x00, 0x00, 0x5e, 0xd5, 0x00, 0x00, 0x4b, 0x04, 0x01, 0x00, 0x4a, 0x31, 0x01, 0x00, 0xdd, 0x5b, 0x01, 0x00, 0x8a, 0x83, 0x01, 0x00, 0xdf, 0xa7, 0x01, 0x00,
0x6e, 0xc8, 0x01, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0xb6, 0xfc, 0x01, 0x00, 0xc5, 0x0f, 0x02, 0x00, 0xbd, 0x1d, 0x02, 0x00, 0x67, 0x26, 0x02, 0x00, 0x98, 0x29, 0x02, 0x00, 0x34, 0x27, 0x02, 0x00,
0x2f, 0x1f, 0x02, 0x00, 0x88, 0x11, 0x02, 0x00, 0x50, 0xfe, 0x01, 0x00, 0xa5, 0xe5, 0x01, 0x00, 0xb5, 0xc7, 0x01, 0x00, 0xbd, 0xa4, 0x01, 0x00, 0x07, 0x7d, 0x01, 0x00, 0xeb, 0x50, 0x01, 0x00,
0xcd, 0x20, 0x01, 0x00, 0x1d, 0xed, 0x00, 0x00, 0x58, 0xb6, 0x00, 0x00, 0x02, 0x7d, 0x00, 0x00, 0xaa, 0x41, 0x00, 0x00, 0xe2, 0x04, 0x00, 0x00, 0x47, 0xc7, 0xff, 0xff, 0x75, 0x89, 0xff, 0xff,
0x0f, 0x4c, 0xff, 0xff, 0xb7, 0x0f, 0xff, 0xff, 0x0c, 0xd5, 0xfe, 0xff, 0xad, 0x9c, 0xfe, 0xff, 0x37, 0x67, 0xfe, 0xff, 0x3b, 0x35, 0xfe, 0xff, 0x4a, 0x07, 0xfe, 0xff, 0xe5, 0xdd, 0xfd, 0xff,
0x89, 0xb9, 0xfd, 0xff, 0xa2, 0x9a, 0xfd, 0xff, 0x92, 0x81, 0xfd, 0xff, 0xad, 0x6e, 0xfd, 0xff, 0x35, 0x62, 0xfd, 0xff, 0x5f, 0x5c, 0xfd, 0xff, 0x4d, 0x5d, 0xfd, 0xff, 0x11, 0x65, 0xfd, 0xff,
0xab, 0x73, 0xfd, 0xff, 0x09, 0x89, 0xfd, 0xff, 0x06, 0xa5, 0xfd, 0xff, 0x6d, 0xc7, 0xfd, 0xff, 0xf6, 0xef, 0xfd, 0xff, 0x4a, 0x1e, 0xfe, 0xff, 0x00, 0x52, 0xfe, 0xff, 0xa2, 0x8a, 0xfe, 0xff,
0xa8, 0xc7, 0xfe, 0xff, 0x81, 0x08, 0xff, 0xff, 0x8f, 0x4c, 0xff, 0xff, 0x29, 0x93, 0xff, 0xff, 0x9f, 0xdb, 0xff, 0xff, 0x3a, 0x25, 0x00, 0x00, 0x3d, 0x6f, 0x00, 0x00, 0xe8, 0xb8, 0x00, 0x00,
0x7c, 0x01, 0x01, 0x00, 0x3a, 0x48, 0x01, 0x00, 0x63, 0x8c, 0x01, 0x00, 0x40, 0xcd, 0x01, 0x00, 0x21, 0x0a, 0x02, 0x00, 0x5c, 0x42, 0x02, 0x00, 0x53, 0x75, 0x02, 0x00, 0x75, 0xa2, 0x02, 0x00,
0x3d, 0xc9, 0x02, 0x00, 0x36, 0xe9, 0x02, 0x00, 0xfc, 0x01, 0x03, 0x00, 0x3c, 0x13, 0x03, 0x00, 0xb6, 0x1c, 0x03, 0x00, 0x3e, 0x1e, 0x03, 0x00, 0xbd, 0x17, 0x03, 0x00, 0x2f, 0x09, 0x03, 0x00,
0xa5, 0xf2, 0x02, 0x00, 0x48, 0xd4, 0x02, 0x00, 0x52, 0xae, 0x02, 0x00, 0x13, 0x81, 0x02, 0x00, 0xee, 0x4c, 0x02, 0x00, 0x5b, 0x12, 0x02, 0x00, 0xe1, 0xd1, 0x01, 0x00, 0x1a, 0x8c, 0x01, 0x00,
0xae, 0x41, 0x01, 0x00, 0x52, 0xf3, 0x00, 0x00, 0xc9, 0xa1, 0x00, 0x00, 0xde, 0x4d, 0x00, 0x00, 0x65, 0xf8, 0xff, 0xff, 0x37, 0xa2, 0xff, 0xff, 0x33, 0x4c, 0xff, 0xff, 0x38, 0xf7, 0xfe, 0xff,
0x24, 0xa4, 0xfe, 0xff, 0xd2, 0x53, 0xfe, 0xff, 0x19, 0x07, 0xfe, 0xff, 0xc8, 0xbe, 0xfd, 0xff, 0xa3, 0x7b, 0xfd, 0xff, 0x65, 0x3e, 0xfd, 0xff, 0xb9, 0x07, 0xfd, 0xff, 0x3c, 0xd8, 0xfc, 0xff,
0x77, 0xb0, 0xfc, 0xff, 0xe4, 0x90, 0xfc, 0xff, 0xe6, 0x79, 0xfc, 0xff, 0xcb, 0x6b, 0xfc, 0xff, 0xcb, 0x66, 0xfc, 0xff, 0x07, 0x6b, 0xfc, 0xff, 0x88, 0x78, 0xfc, 0xff, 0x3f, 0x8f, 0xfc, 0xff,
0x05, 0xaf, 0xfc, 0xff, 0x9c, 0xd7, 0xfc, 0xff, 0xac, 0x08, 0xfd, 0xff, 0xca, 0x41, 0xfd, 0xff, 0x72, 0x82, 0xfd, 0xff, 0x0d, 0xca, 0xfd, 0xff, 0xf1, 0x17, 0xfe, 0xff, 0x62, 0x6b, 0xfe, 0xff,
0x92, 0xc3, 0xfe, 0xff, 0xa9, 0x1f, 0xff, 0xff, 0xc0, 0x7e, 0xff, 0xff, 0xe7, 0xdf, 0xff, 0xff, 0x28, 0x42, 0x00, 0x00, 0x87, 0xa4, 0x00, 0x00, 0x06, 0x06, 0x01, 0x00, 0xa8, 0x65, 0x01, 0x00,
0x71, 0xc2, 0x01, 0x00, 0x6c, 0x1b, 0x02, 0x00, 0xab, 0x6f, 0x02, 0x00, 0x4d, 0xbe, 0x02, 0x00, 0x79, 0x06, 0x03, 0x00, 0x6a, 0x47, 0x03, 0x00, 0x69, 0x80, 0x03, 0x00, 0xd3, 0xb0, 0x03, 0x00,
0x1b, 0xd8, 0x03, 0x00, 0xca, 0xf5, 0x03, 0x00, 0x80, 0x09, 0x04, 0x00, 0xf6, 0x12, 0x04, 0x00, 0x02, 0x12, 0x04, 0x00, 0x91, 0x06, 0x04, 0x00, 0xae, 0xf0, 0x03, 0x00, 0x7b, 0xd0, 0x03, 0x00,
0x3a, 0xa6, 0x03, 0x00, 0x45, 0x72, 0x03, 0x00, 0x0e, 0x35, 0x03, 0x00, 0x23, 0xef, 0x02, 0x00, 0x28, 0xa1, 0x02, 0x00, 0xd7, 0x4b, 0x02, 0x00, 0xff, 0xef, 0x01, 0x00, 0x81, 0x8e, 0x01, 0x00,
0x4e, 0x28, 0x01, 0x00, 0x64, 0xbe, 0x00, 0x00, 0xcf, 0x51, 0x00, 0x00, 0xa1, 0xe3, 0xff, 0xff, 0xf5, 0x74, 0xff, 0xff, 0xe6, 0x06, 0xff, 0xff, 0x91, 0x9a, 0xfe, 0xff, 0x12, 0x31, 0xfe, 0xff,
0x7d, 0xcb, 0xfd, 0xff, 0xdf, 0x6a, 0xfd, 0xff, 0x3a, 0x10, 0xfd, 0xff, 0x83, 0xbc, 0xfc, 0xff, 0x9e, 0x70, 0xfc, 0xff, 0x5b, 0x2d, 0xfc, 0xff, 0x79, 0xf3, 0xfb, 0xff, 0x9c, 0xc3, 0xfb, 0xff,
0x51, 0x9e, 0xfb, 0xff, 0x0a, 0x84, 0xfb, 0xff, 0x1f, 0x75, 0xfb, 0xff, 0xca, 0x71, 0xfb, 0xff, 0x27, 0x7a, 0xfb, 0xff, 0x33, 0x8e, 0xfb, 0xff, 0xd1, 0xad, 0xfb, 0xff, 0xc2, 0xd8, 0xfb, 0xff,
0xa9, 0x0e, 0xfc, 0xff, 0x10, 0x4f, 0xfc, 0xff, 0x62, 0x99, 0xfc, 0xff, 0xef, 0xec, 0xfc, 0xff, 0xf0, 0x48, 0xfd, 0xff, 0x86, 0xac, 0xfd, 0xff, 0xbc, 0x16, 0xfe, 0xff, 0x8d, 0x86, 0xfe, 0xff,
0xe1, 0xfa, 0xfe, 0xff, 0x94, 0x72, 0xff, 0xff, 0x77, 0xec, 0xff, 0xff, 0x54, 0x67, 0x00, 0x00, 0xef, 0xe1, 0x00, 0x00, 0x0d, 0x5b, 0x01, 0x00, 0x73, 0xd1, 0x01, 0x00, 0xeb, 0x43, 0x02, 0x00,
0x49, 0xb1, 0x02, 0x00, 0x6a, 0x18, 0x03, 0x00, 0x3b, 0x78, 0x03, 0x00, 0xb9, 0xcf, 0x03, 0x00, 0xf6, 0x1d, 0x04, 0x00, 0x1a, 0x62, 0x04, 0x00, 0x65, 0x9b, 0x04, 0x00, 0x32, 0xc9, 0x04, 0x00,
0xfb, 0xea, 0x04, 0x00, 0x54, 0x00, 0x05, 0x00, 0xf3, 0x08, 0x05, 0x00, 0xaf, 0x04, 0x05, 0x00, 0x7e, 0xf3, 0x04, 0x00, 0x78, 0xd5, 0x04, 0x00, 0xd8, 0xaa, 0x04, 0x00, 0xf8, 0x73, 0x04, 0x00,
0x51, 0x31, 0x04, 0x00, 0x7f, 0xe3, 0x03, 0x00, 0x37, 0x8b, 0x03, 0x00, 0x4e, 0x29, 0x03, 0x00, 0xb0, 0xbe, 0x02, 0x00, 0x64, 0x4c, 0x02, 0x00, 0x83, 0xd3, 0x01, 0x00, 0x3c, 0x55, 0x01, 0x00,
0xcb, 0xd2, 0x00, 0x00, 0x79, 0x4d, 0x00, 0x00, 0x9a, 0xc6, 0xff, 0xff, 0x86, 0x3f, 0xff, 0xff, 0x99, 0xb9, 0xfe, 0xff, 0x2d, 0x36, 0xfe, 0xff, 0x98, 0xb6, 0xfd, 0xff, 0x28, 0x3c, 0xfd, 0xff,
0x1f, 0xc8, 0xfc, 0xff, 0xb2, 0x5b, 0xfc, 0xff, 0x03, 0xf8, 0xfb, 0xff, 0x1e, 0x9e, 0xfb, 0xff, 0xfa, 0x4e, 0xfb, 0xff, 0x71, 0x0b, 0xfb, 0xff, 0x42, 0xd4, 0xfa, 0xff, 0x0c, 0xaa, 0xfa, 0xff,
0x50, 0x8d, 0xfa, 0xff, 0x69, 0x7e, 0xfa, 0xff, 0x92, 0x7d, 0xfa, 0xff, 0xe1, 0x8a, 0xfa, 0xff, 0x47, 0xa6, 0xfa, 0xff, 0x93, 0xcf, 0xfa, 0xff, 0x6e, 0x06, 0xfb, 0xff, 0x5c, 0x4a, 0xfb, 0xff,
0xc3, 0x9a, 0xfb, 0xff, 0xe4, 0xf6, 0xfb, 0xff, 0xe3, 0x5d, 0xfc, 0xff, 0xc6, 0xce, 0xfc, 0xff, 0x78, 0x48, 0xfd, 0xff, 0xcc, 0xc9, 0xfd, 0xff, 0x81, 0x51, 0xfe, 0xff, 0x41, 0xde, 0xfe, 0xff,
0xab, 0x6e, 0xff, 0xff, 0x4f, 0x01, 0x00, 0x00, 0xb7, 0x94, 0x00, 0x00, 0x6a, 0x27, 0x01, 0x00, 0xec, 0xb7, 0x01, 0x00, 0xc8, 0x44, 0x02, 0x00, 0x8e, 0xcc, 0x02, 0x00, 0xdb, 0x4d, 0x03, 0x00,
0x58, 0xc7, 0x03, 0x00, 0xc4, 0x37, 0x04, 0x00, 0xf1, 0x9d, 0x04, 0x00, 0xcb, 0xf8, 0x04, 0x00, 0x59, 0x47, 0x05, 0x00, 0xc0, 0x88, 0x05, 0x00, 0x48, 0xbc, 0x05, 0x00, 0x5a, 0xe1, 0x05, 0x00,
0x83, 0xf7, 0x05, 0x00, 0x76, 0xfe, 0x05, 0x00, 0x0f, 0xf6, 0x05, 0x00, 0x4e, 0xde, 0x05, 0x00, 0x5d, 0xb7, 0x05, 0x00, 0x8c, 0x81, 0x05, 0x00, 0x53, 0x3d, 0x05, 0x00, 0x4d, 0xeb, 0x04, 0x00,
0x3d, 0x8c, 0x04, 0x00, 0x06, 0x21, 0x04, 0x00, 0xac, 0xaa, 0x03, 0x00, 0x50, 0x2a, 0x03, 0x00, 0x31, 0xa1, 0x02, 0x00, 0xa3, 0x10, 0x02, 0x00, 0x11, 0x7a, 0x01, 0x00, 0xf6, 0xde, 0x00, 0x00,
0xdb, 0x40, 0x00, 0x00, 0x52, 0xa1, 0xff, 0xff, 0xf5, 0x01, 0xff, 0xff, 0x5c, 0x64, 0xfe, 0xff, 0x1f, 0xca, 0xfd, 0xff, 0xce, 0x34, 0xfd, 0xff, 0xf0, 0xa5, 0xfc, 0xff, 0xfc, 0x1e, 0xfc, 0xff,
0x55, 0xa1, 0xfb, 0xff, 0x4b, 0x2e, 0xfb, 0xff, 0x13, 0xc7, 0xfa, 0xff, 0xc3, 0x6c, 0xfa, 0xff, 0x55, 0x20, 0xfa, 0xff, 0x9d, 0xe2, 0xf9, 0xff, 0x4b, 0xb4, 0xf9, 0xff, 0xeb, 0x95, 0xf9, 0xff,
0xdc, 0x87, 0xf9, 0xff, 0x57, 0x8a, 0xf9, 0xff, 0x6a, 0x9d, 0xf9, 0xff, 0xf7, 0xc0, 0xf9, 0xff, 0xb7, 0xf4, 0xf9, 0xff, 0x39, 0x38, 0xfa, 0xff, 0xe1, 0x8a, 0xfa, 0xff, 0xee, 0xeb, 0xfa, 0xff,
0x77, 0x5a, 0xfb, 0xff, 0x70, 0xd5, 0xfb, 0xff, 0xac, 0x5b, 0xfc, 0xff, 0xe0, 0xeb, 0xfc, 0xff, 0xa5, 0x84, 0xfd, 0xff, 0x7c, 0x24, 0xfe, 0xff, 0xd3, 0xc9, 0xfe, 0xff, 0x08, 0x73, 0xff, 0xff,
0x6d, 0x1e, 0x00, 0x00, 0x4b, 0xca, 0x00, 0x00, 0xea, 0x74, 0x01, 0x00, 0x93, 0x1c, 0x02, 0x00, 0x92, 0xbf, 0x02, 0x00, 0x40, 0x5c, 0x03, 0x00, 0x03, 0xf1, 0x03, 0x00, 0x54, 0x7c, 0x04, 0x00,
0xc2, 0xfc, 0x04, 0x00, 0xf7, 0x70, 0x05, 0x00, 0xbb, 0xd7, 0x05, 0x00, 0xf5, 0x2f, 0x06, 0x00, 0xb3, 0x78, 0x06, 0x00, 0x29, 0xb1, 0x06, 0x00, 0xb2, 0xd8, 0x06, 0x00, 0xd7, 0xee, 0x06, 0x00,
0x4a, 0xf3, 0x06, 0x00, 0xed, 0xe5, 0x06, 0x00, 0xce, 0xc6, 0x06, 0x00, 0x29, 0x96, 0x06, 0x00, 0x67, 0x54, 0x06, 0x00, 0x1d, 0x02, 0x06, 0x00, 0x0e, 0xa0, 0x05, 0x00, 0x23, 0x2f, 0x05, 0x00,
0x6d, 0xb0, 0x04, 0x00, 0x23, 0x25, 0x04, 0x00, 0x9d, 0x8e, 0x03, 0x00, 0x51, 0xee, 0x02, 0x00, 0xd0, 0x45, 0x02, 0x00, 0xc1, 0x96, 0x01, 0x00, 0xdf, 0xe2, 0x00, 0x00, 0xf3, 0x2b, 0x00, 0x00,
0xcf, 0x73, 0xff, 0xff, 0x4a, 0xbc, 0xfe, 0xff, 0x3c, 0x07, 0xfe, 0xff, 0x7a, 0x56, 0xfd, 0xff, 0xcd, 0xab, 0xfc, 0xff, 0xf3, 0x08, 0xfc, 0xff, 0x95, 0x6f, 0xfb, 0xff, 0x48, 0xe1, 0xfa, 0xff,
0x86, 0x5f, 0xfa, 0xff, 0xa8, 0xeb, 0xf9, 0xff, 0xe7, 0x86, 0xf9, 0xff, 0x56, 0x32, 0xf9, 0xff, 0xe0, 0xee, 0xf8, 0xff, 0x42, 0xbd, 0xf8, 0xff, 0x11, 0x9e, 0xf8, 0xff, 0xaf, 0x91, 0xf8, 0xff,
0x50, 0x98, 0xf8, 0xff, 0xf6, 0xb1, 0xf8, 0xff, 0x75, 0xde, 0xf8, 0xff, 0x6d, 0x1d, 0xf9, 0xff, 0x51, 0x6e, 0xf9, 0xff, 0x62, 0xd0, 0xf9, 0xff, 0xb8, 0x42, 0xfa, 0xff, 0x3e, 0xc4, 0xfa, 0xff,
0xb6, 0x53, 0xfb, 0xff, 0xc0, 0xef, 0xfb, 0xff, 0xd7, 0x96, 0xfc, 0xff, 0x59, 0x47, 0xfd, 0xff, 0x8d, 0xff, 0xfd, 0xff,
};