This commit is contained in:
Patrick Moessler 2025-02-24 00:29:15 +01:00
parent 178c8e0803
commit fc4005cc49
16 changed files with 1088 additions and 26 deletions

3
.gitignore vendored
View file

@ -2,4 +2,5 @@ build/
managed_components/
sdkconfig.old
sdkconfig.ci
sdkconfig
sdkconfig
*.wav

10
.vscode/launch.json vendored
View file

@ -10,6 +10,14 @@
"type": "espidf",
"name": "Launch",
"request": "launch"
},
{
"name": "python sim",
"type": "debugpy",
"request": "launch",
"program": "sim.py",
"cwd": "${workspaceFolder}/python",
"console": "integratedTerminal"
}
]
}
}

View file

@ -11,6 +11,10 @@
"*.config": "ini",
"freertos.h": "c",
"esp_system.h": "c",
"esp_flash.h": "c"
"esp_flash.h": "c",
"array": "cpp",
"string": "cpp",
"string_view": "cpp",
"span": "cpp"
}
}

View file

@ -2,4 +2,5 @@ idf_component_register(SRCS "ledstick_main.c"
PRIV_REQUIRES
spi_flash
esp_driver_i2s
esp_driver_uart
INCLUDE_DIRS "")

View file

@ -10,20 +10,65 @@
#include <stdio.h>
#include "driver/i2s_std.h"
#include "driver/uart.h"
#include "esp_dsp.h"
#define SAMPLE_RATE 24000
#define SAMPLE_COUNT 256
#define BUF_COUNT 4
static const char *TAG = "main";
/*
24000 hz sample rate
16bit per channel
2 channel i2s input, second zeros
complex format: buf[0]=re[0], buf[1]=im[0]
*/
#define I2S_MIC_SCLK_PIN GPIO_NUM_4
#define I2S_MIC_SD_PIN GPIO_NUM_5
#define I2S_MIC_WS_PIN GPIO_NUM_6
#define SAMPLE_SIZE (2 * SAMPLE_COUNT)
#define SAMPLE_RATE 24000
#define SAMPLE_COUNT 512
#define SAMPLE_CHANNELS 2
#define SAMPLE_TYPE int16_t
#define BUF_COUNT 4
#define BANDS_COUNT 3
// ----------------------------------------------------------------
/*
512:
bass: 1-4
mid: 5-42
treb: 43-255
*/
#define SAMPLE_BYTES (sizeof(SAMPLE_TYPE))
#define BUF_SIZE_SAMPLES (SAMPLE_COUNT * SAMPLE_CHANNELS)
#define BUF_SIZE_BYTES (BUF_SIZE_SAMPLES * SAMPLE_BYTES)
#define FALLOFF(OLD_V, NEW_V) ((OLD_V >> 1) + (OLD_V >> 2) + (NEW_V >> 2))
#define ABS(T, V) ((v < 0 ? (((T)0) - v) : v))
#define MAX(a, b) ((b > a) ? (b) : (a))
i2s_chan_handle_t rx_handle = NULL;
static int16_t i2s_readraw_buff[SAMPLE_COUNT * 2 * BUF_COUNT]; // 2 channels/complex
TaskHandle_t proc_task = NULL;
TaskHandle_t output_task = NULL;
SemaphoreHandle_t output_mutex;
__attribute__((aligned(16))) static SAMPLE_TYPE i2s_readraw_buff[BUF_SIZE_BYTES * BUF_COUNT];
uint32_t current_powers[BANDS_COUNT];
uint32_t avg_powers[BANDS_COUNT];
int16_t floating_max;
void app_init_mic(void)
{
@ -35,7 +80,7 @@ void app_init_mic(void)
/* The default mono slot is the left slot (whose 'select pin' of the PDM microphone is pulled down) */
.slot_cfg =
{
.data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
.data_bit_width = 8 * SAMPLE_BYTES,
.slot_bit_width = I2S_SLOT_BIT_WIDTH_32BIT,
.slot_mode = I2S_SLOT_MODE_MONO,
.slot_mask = I2S_STD_SLOT_BOTH,
@ -61,15 +106,6 @@ void app_init_mic(void)
},
};
ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle, &i2s_rx_cfg));
// i2s_event_callbacks_t i2s_cbs = {
// .on_recv = app_i2s_rx_cb,
// .on_recv_q_ovf = NULL,
// .on_send_q_ovf = NULL,
// .on_sent = NULL,
// };
// ESP_ERROR_CHECK(i2s_channel_register_event_callback(rx_handle, &i2s_cbs, NULL));
ESP_ERROR_CHECK(i2s_channel_enable(rx_handle));
}
@ -80,15 +116,110 @@ static void app_process_task(void *args)
while (1)
{
xTaskNotifyWait(0, 0, &notify_value, portMAX_DELAY);
if (notify_value >= BUF_COUNT)
{
printf("process buf count wrong: %ld", notify_value);
continue;
}
int16_t *buf = i2s_readraw_buff + notify_value * SAMPLE_COUNT * 2;
printf("%08lx - %08lx - %08lx", (uint32_t)i2s_readraw_buff, (uint32_t)buf, (uint32_t)(buf - i2s_readraw_buff));
SAMPLE_TYPE *buf = i2s_readraw_buff + notify_value * BUF_SIZE_SAMPLES;
// printf("%08lx - %08lx - %08lx\n", (uint32_t)i2s_readraw_buff, (uint32_t)buf,
// (uint32_t)(buf - i2s_readraw_buff));
dsps_fft2r_sc16(buf, SAMPLE_COUNT);
dsps_bit_rev_sc16_ansi(buf, SAMPLE_COUNT);
dsps_cplx2real_sc16_ansi(buf, SAMPLE_COUNT);
int16_t max = 0;
for (int i = 0; i < SAMPLE_COUNT; i++)
{
max = MAX(max, buf[i * 2]);
}
printf("[0] %08x [1] %08x [2] %08x [3]%08x ...\n", (buf[0]), (buf[1]), (buf[2]), (buf[3]));
floating_max = (max > floating_max) ? max : FALLOFF(floating_max, FALLOFF(floating_max,max));
// int16_t scale = 0x7fff / floating_max;
int16_t scale = 8;
// for (int16_t max_tmp = floating_max; scale < 15 && ((max_tmp & 0x8000) == 0); scale++, max_tmp <<= 1)
// ;
for (int i = 0; i < SAMPLE_COUNT; i++)
{
buf[i * 2] <<= scale-1;
}
// dsps_mulc_s16_ae32(buf,buf,SAMPLE_COUNT,scale,1,1);
// dsps_fft2r_sc16(buf, SAMPLE_COUNT);
// dsps_bit_rev_sc16_ansi(buf, SAMPLE_COUNT);
// dsps_cplx2real_sc16_ansi(buf, SAMPLE_COUNT);
xSemaphoreTake(output_mutex, portMAX_DELAY);
// current_powers[band] = 0;
// for (int band=START;band<END;band++){
// current_powers[band] = ;
// }
// for (int band = 0; band < BANDS_COUNT; band++)
// {
// current_powers[band] = 0;
// for (int freq = 0; freq < FREQS_PER_BAND; freq++)
// {
// // current_powers[band] += abs(buf[band * FREQS_PER_BAND + freq]);
// SAMPLE_TYPE v = buf[band * FREQS_PER_BAND + freq];
// if (v < 0)
// {
// current_powers[band] -= v;
// }
// else
// {
// current_powers[band] += v;
// }
// if(band==0 && freq<BANDS_COUNT){
// avg_powers[freq] = v; //current_powers[band];
// }
// }
// uint32_t old_band_avg_power = avg_powers[band];
// // avg_powers[band] = 0; // (old_band_avg_power >> 1) + (old_band_avg_power >> 2) + (current_powers[band]
// >> 2);
// }
xSemaphoreGive(output_mutex);
xTaskNotify(output_task, notify_value, eSetValueWithOverwrite);
// printf("[0] %08x [1] %08x [2] %08x [3]%08x ...\n", (buf[0]), (buf[1]), (buf[2]), (buf[3]));
}
}
static void app_output_task(void *args)
{
uint32_t notify_value;
const uint8_t sync_word[] = {0x00,0x11,0x80,0x00,0x7f,0xff,0x11,0x00};
while (1)
{
xTaskNotifyWait(0, 0, &notify_value, portMAX_DELAY);
if (notify_value >= BUF_COUNT)
{
printf("output buf count wrong: %ld", notify_value);
continue;
}
SAMPLE_TYPE *buf = i2s_readraw_buff + notify_value * BUF_SIZE_SAMPLES;
buf[SAMPLE_COUNT - 1] = floating_max;
uart_write_bytes(UART_NUM_0, sync_word, sizeof(sync_word));
uart_write_bytes(UART_NUM_0, buf, BUF_SIZE_BYTES);
// xSemaphoreTake(output_mutex, portMAX_DELAY);
// uart_write_bytes(UART_NUM_0, avg_powers, sizeof(avg_powers));
// uart_write_bytes(UART_NUM_0, current_powers, sizeof(current_powers));
// xSemaphoreGive(output_mutex);
}
}
@ -96,19 +227,42 @@ void app_main(void)
{
size_t bytes_read = 0;
uint32_t next_rx = 0;
TaskHandle_t proc_task;
esp_err_t ret;
app_init_mic();
uart_config_t uart_cfg = {
.baud_rate = 1000000,
.data_bits = UART_DATA_8_BITS,
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
};
uart_param_config(UART_NUM_0, &uart_cfg);
uart_set_pin(UART_NUM_0, 17, 18, -1, -1);
uart_driver_install(UART_NUM_0, 256, 256, 0, NULL, 0);
ret = dsps_fft2r_init_sc16(NULL, SAMPLE_COUNT);
if (ret != ESP_OK)
{
ESP_LOGE(TAG, "Not possible to initialize FFT. Error = %i", ret);
return;
}
output_mutex = xSemaphoreCreateMutex();
xTaskCreate(&app_output_task, "app_output_task", 4096, NULL, 5, &output_task);
xTaskCreate(&app_process_task, "app_process_task", 4096, NULL, 5, &proc_task);
while (1)
{
if (i2s_channel_read(rx_handle, (char *)i2s_readraw_buff + (SAMPLE_COUNT * 2 * next_rx), SAMPLE_SIZE * 2,
if (i2s_channel_read(rx_handle, (char *)i2s_readraw_buff + (BUF_SIZE_BYTES * next_rx), BUF_SIZE_BYTES,
&bytes_read, 1000) == ESP_OK)
{
xTaskNotify(proc_task, next_rx, eSetValueWithOverwrite);
next_rx = (next_rx + 1) & (BUF_COUNT - 1);
// printf("main buf next %ld\n", next_rx);
taskYIELD();
}
}

1
python/.python-version Normal file
View file

@ -0,0 +1 @@
3.13

0
python/README.md Normal file
View file

252
python/fft_1.txt Normal file
View file

@ -0,0 +1,252 @@
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] ffffffff [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] 0000 [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] ffffffff [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] fffffffe [192] ffffffff [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffd [16] fffffffe [32] fffffffe [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffd [16] fffffffe [32] ffffffff [48] 0000 [64] ffffffff [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] 0000 [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffd [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] ffffffff [16] fffffffe [32] ffffffff [48] ffffffff [64] fffffffd [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] fffffffe [32] fffffffe [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] ffffffff [144] 0000 [160] ffffffff [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] fffffffe [32] ffffffff [48] 0000 [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffffd [16] fffffffe [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] 0000 [64] ffffffff [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] ffffffff [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] ffffffff [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] fffffffe [32] 0000 [48] ffffffff [64] 0000 [80] fffffffe [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] ffffffff [16] 0000 [32] ffffffff [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] fffffffe [32] 0000 [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] 0000 [32] ffffffff [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] ffffffff [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] fffffffe [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] ffffffff [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] 0000 [32] ffffffff [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] fffffffe [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffd [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] ffffffff [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] ffffffff [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] ffffffff [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffd [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] ffffffff [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] fffffffe [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] fffffffe [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0001 [192] 0000 [208] ffffffff [224] ffffffff [240] 0001
[0] fffffffa [16] ffffffff [32] fffffffe [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] 0000
[0] fffffffd [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffd [16] 0000 [32] ffffffff [48] 0000 [64] ffffffff [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] 0000
[0] fffffffc [16] 0000 [32] ffffffff [48] 0000 [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] ffffffff [144] 0000 [160] ffffffff [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffffc [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffc [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] ffffffff [128] ffffffff [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffffe [16] 0000 [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffc [16] 0000 [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] 0001 [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] ffffffff [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] fffffffe [32] 0000 [48] 0000 [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] fffffffe [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] ffffffff [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 0000 [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] ffffffff [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] fffffffe [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] 0000 [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff9 [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] ffffffd5 [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] ffffffff [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] ffffffff [32] ffffffff [48] fffffffe [64] ffffffff [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] 0000 [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffa [16] ffffffff [32] 0000 [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffff5 [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffff1 [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] 0000 [96] ffffffff [112] 0000 [128] ffffffff [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff5 [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] 0000 [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 0000 [16] fffffffe [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] 0000 [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] 0000 [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 0000 [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] 0000 [16] 0000 [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] 0000 [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] 0000 [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] ffffffff [144] ffffffff [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] 0000 [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] ffffffff [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] ffffffff [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] ffffffff [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] ffffffff [32] ffffffff [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffffe [16] ffffffff [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffffd [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] ffffffff [16] ffffffff [32] 0000 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffe [16] ffffffff [32] 0000 [48] ffffffff [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] ffffffff [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] ffffffff [16] fffffffe [32] 0000 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] 000e [16] fffffffe [32] fffffffd [48] fffffffe [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] ffffffff
[0] 000e [16] 0000 [32] ffffffff [48] ffffffff [64] ffffffff [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] ffffffc5 [16] fffffff9 [32] ffffffe4 [48] ffffffff [64] 0003 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 000f [16] 0002 [32] 0058 [48] fffffff9 [64] fffffffe [80] fffffffd [96] fffffffd [112] fffffffe [128] fffffffe [144] fffffffe [160] fffffffe [176] fffffffe [192] fffffffe [208] fffffffe [224] fffffffe [240] fffffffe
[0] fffffffd [16] fffffffd [32] ffffff73 [48] fffffffe [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] fffffffe [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffa [16] fffffffa [32] 0041 [48] ffffffff [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] ffffffea [16] 0000 [32] 0005 [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] 0006 [16] 0000 [32] ffffffe8 [48] fffffffe [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] ffffffff [208] ffffffff [224] 0000 [240] 0000
[0] 0003 [16] 0002 [32] 003f [48] fffffffc [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] 000c [16] 0001 [32] 0034 [48] fffffffc [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] 0000 [160] ffffffff [176] 0000 [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] ffffffe3 [16] fffffff8 [32] ffffffb6 [48] 0003 [64] 0001 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffa [16] fffffffb [32] ffffffe6 [48] 0000 [64] ffffffff [80] ffffffff [96] ffffffff [112] fffffffe [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] fffffffe
[0] fffffff9 [16] ffffffff [32] 0039 [48] fffffffa [64] fffffffe [80] fffffffe [96] fffffffe [112] fffffffe [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] fffffffe [240] ffffffff
[0] fffffff7 [16] ffffffff [32] 0033 [48] fffffffd [64] fffffffe [80] fffffffe [96] fffffffe [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] 0000 [16] fffffffa [32] ffffffba [48] 0002 [64] 0000 [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] 0000 [240] ffffffff
[0] 0005 [16] ffffffff [32] 0038 [48] fffffffb [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffff6 [16] fffffff7 [32] ffffffa1 [48] 0002 [64] 0001 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] 0000 [32] 003b [48] fffffffd [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] fffffffb [16] fffffffa [32] ffffffc9 [48] 0001 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] fffffffd [32] 0024 [48] fffffffe [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
[0] 0008 [16] 0000 [32] 0034 [48] fffffffe [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] 000d [16] ffffffff [32] 0014 [48] ffffffff [64] fffffffe [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] 0000
[0] 0004 [16] 0001 [32] ffffffaf [48] 0000 [64] fffffffe [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffb [16] fffffffa [32] ffffff6a [48] 0000 [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] fffffff8 [16] fffffffd [32] ffffff1c [48] ffffffff [64] 0002 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] 0000 [240] ffffffff
[0] fffffffc [16] ffffffff [32] ffffff6d [48] 0000 [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] 0000 [240] ffffffff
[0] 0003 [16] ffffffff [32] ffffffe5 [48] ffffffff [64] fffffffe [80] 0000 [96] ffffffff [112] 0000 [128] ffffffff [144] ffffffff [160] 0000 [176] ffffffff [192] 0000 [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffff7 [16] fffffffe [32] 004b [48] fffffffd [64] fffffffe [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] fffffffe [240] fffffffe
[0] 0007 [16] 0002 [32] 00e8 [48] fffffffd [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] 0009 [16] fffffffe [32] ffffffcd [48] 0000 [64] fffffffe [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff9 [16] fffffffa [32] ffffff68 [48] 0001 [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] fffffffe [32] ffffffc8 [48] ffffffff [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] 000d [16] 0003 [32] 0083 [48] fffffffd [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff9 [16] fffffffa [32] ffffff3d [48] 0002 [64] 0002 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff6 [16] fffffff9 [32] ffffffd7 [48] fffffffe [64] fffffffd [80] fffffffe [96] fffffffe [112] fffffffe [128] ffffffff [144] ffffffff [160] fffffffe [176] ffffffff [192] fffffffe [208] ffffffff [224] fffffffe [240] ffffffff
[0] 0007 [16] ffffffff [32] 004a [48] ffffffff [64] ffffffff [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff3 [16] fffffff6 [32] ffffff3a [48] 0004 [64] 0002 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] 0007 [16] 0003 [32] 00a7 [48] fffffffa [64] fffffffe [80] fffffffe [96] ffffffff [112] fffffffe [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] fffffffe [240] ffffffff
[0] fffffffa [16] fffffff9 [32] ffffff9a [48] 0002 [64] 0000 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 0007 [16] 0005 [32] 0087 [48] fffffffb [64] fffffffe [80] fffffffe [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] fffffffb [32] ffffff9f [48] 0001 [64] 0000 [80] 0001 [96] 0001 [112] 0001 [128] 0001 [144] 0001 [160] 0000 [176] 0001 [192] 0000 [208] 0001 [224] 0000 [240] 0000
[0] fffffffc [16] 0006 [32] 009e [48] fffffff9 [64] fffffffc [80] fffffffd [96] fffffffe [112] fffffffe [128] fffffffe [144] ffffffff [160] ffffffff [176] fffffffe [192] ffffffff [208] fffffffe [224] fffffffe [240] fffffffe
[0] 0001 [16] fffffff8 [32] ffffff56 [48] 0004 [64] 0001 [80] 0000 [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] 0000 [240] ffffffff
[0] fffffff6 [16] ffffffff [32] 0030 [48] fffffffc [64] fffffffd [80] fffffffe [96] fffffffe [112] ffffffff [128] fffffffe [144] fffffffe [160] fffffffe [176] fffffffe [192] fffffffe [208] fffffffe [224] fffffffe [240] fffffffe
[0] ffffffed [16] fffffff9 [32] ffffffa6 [48] 0003 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffb [16] fffffffd [32] 0000 [48] fffffffe [64] fffffffe [80] ffffffff [96] fffffffe [112] fffffffe [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] ffffffff [16] fffffffb [32] ffffffc5 [48] 0000 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 0000 [16] 0000 [32] 003e [48] fffffffd [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffa [16] fffffff9 [32] ffffffbd [48] 0001 [64] 0000 [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] 0004 [16] 0000 [32] 004b [48] fffffffd [64] fffffffe [80] fffffffe [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffa [16] fffffffa [32] ffffffd6 [48] 0001 [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffff6 [16] fffffffc [32] ffffffb7 [48] 0002 [64] 0000 [80] 0000 [96] 0001 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0001
[0] 0003 [16] 0003 [32] 0086 [48] fffffffb [64] fffffffd [80] fffffffe [96] ffffffff [112] ffffffff [128] ffffffff [144] fffffffe [160] ffffffff [176] fffffffe [192] fffffffe [208] ffffffff [224] ffffffff [240] ffffffff
[0] ffffffee [16] fffffffd [32] ffffff94 [48] 0001 [64] ffffffff [80] 0000 [96] 0001 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] fffffff9 [32] ffffff86 [48] 0001 [64] 0000 [80] 0000 [96] ffffffff [112] 0000 [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] 000d [16] 0002 [32] 0082 [48] fffffffb [64] ffffffff [80] fffffffe [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] ffffffff [32] 0032 [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 0000 [16] fffffffa [32] ffffffa9 [48] 0001 [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] fffffffe [224] ffffffff [240] ffffffff
[0] 0007 [16] 0004 [32] 0068 [48] fffffffc [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] ffffffe4 [16] fffffff7 [32] ffffff41 [48] 0006 [64] 0002 [80] 0001 [96] 0001 [112] 0001 [128] 0001 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0001 [240] 0000
[0] 0000 [16] 0006 [32] 008e [48] fffffffa [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] 000a [16] fffffffe [32] 0045 [48] fffffffa [64] fffffffc [80] fffffffd [96] fffffffd [112] fffffffd [128] fffffffe [144] fffffffe [160] fffffffe [176] fffffffe [192] fffffffe [208] fffffffe [224] fffffffe [240] fffffffe
[0] fffffff5 [16] fffffff5 [32] ffffff83 [48] 0003 [64] 0001 [80] 0000 [96] ffffffff [112] 0000 [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] 0004 [16] 0004 [32] 0065 [48] fffffffc [64] fffffffd [80] fffffffe [96] fffffffe [112] fffffffe [128] ffffffff [144] ffffffff [160] ffffffff [176] fffffffe [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] fffffff7 [32] ffffff8a [48] 0002 [64] 0000 [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] fffffffd [16] 0000 [32] 0029 [48] fffffffe [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffa [16] fffffffa [32] ffffff9c [48] 0002 [64] 0001 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffc [16] fffffffc [32] ffffffc3 [48] 0001 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffa [16] 0000 [32] 0019 [48] fffffffe [64] fffffffd [80] fffffffe [96] fffffffe [112] ffffffff [128] ffffffff [144] ffffffff [160] fffffffe [176] ffffffff [192] ffffffff [208] fffffffe [224] fffffffe [240] ffffffff
[0] ffffffff [16] fffffffb [32] ffffffcd [48] 0000 [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffd [16] fffffffd [32] ffffffd4 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] ffffffff [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffe [16] fffffffc [32] ffffffdc [48] 0001 [64] 0000 [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff4 [16] 0001 [32] 0019 [48] fffffffd [64] fffffffe [80] fffffffe [96] fffffffe [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] fffffffe [192] fffffffe [208] ffffffff [224] fffffffe [240] ffffffff
[0] fffffff7 [16] 0000 [32] 0000 [48] fffffffe [64] fffffffe [80] fffffffe [96] ffffffff [112] fffffffe [128] ffffffff [144] ffffffff [160] ffffffff [176] fffffffe [192] ffffffff [208] fffffffe [224] fffffffe [240] ffffffff
[0] fffffffb [16] fffffffc [32] ffffffe0 [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffff6 [16] fffffffa [32] ffffff92 [48] 0002 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffb [16] fffffffd [32] ffffffe4 [48] ffffffff [64] fffffffe [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] fffffffe [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] fffffffe
[0] 0002 [16] 0001 [32] 0048 [48] fffffffe [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffffd [16] fffffffd [32] ffffff93 [48] 0000 [64] 0000 [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] fffffff7 [16] fffffffe [32] ffffffe6 [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffb [16] 0000 [32] 004a [48] fffffffd [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] ffffffff
[0] fffffff1 [16] fffffffa [32] ffffffa9 [48] 0000 [64] 0000 [80] ffffffff [96] 0000 [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] 0001 [16] 0002 [32] 0040 [48] fffffffe [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffa [16] fffffff7 [32] ffffff70 [48] 0004 [64] 0001 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] ffffffff [224] 0000 [240] 0000
[0] 0005 [16] 0007 [32] 00ad [48] fffffffa [64] ffffffff [80] fffffffe [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffffc [16] fffffffc [32] ffffffa4 [48] 0002 [64] 0000 [80] 0001 [96] 0001 [112] 0001 [128] 0001 [144] 0001 [160] 0001 [176] 0001 [192] 0000 [208] 0001 [224] 0001 [240] 0001
[0] 0002 [16] 0003 [32] 0090 [48] fffffff9 [64] fffffffb [80] fffffffd [96] fffffffd [112] fffffffe [128] fffffffe [144] fffffffe [160] fffffffe [176] fffffffe [192] fffffffe [208] fffffffe [224] fffffffe [240] fffffffe
[0] 0000 [16] fffffff7 [32] ffffff61 [48] 0004 [64] 0000 [80] 0000 [96] 0000 [112] 0001 [128] 0001 [144] 0001 [160] 0000 [176] 0001 [192] 0000 [208] 0000 [224] 0001 [240] 0001
[0] fffffffc [16] fffffff7 [32] ffffff55 [48] 0002 [64] 0001 [80] ffffffff [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] fffffffe [176] ffffffff [192] fffffffe [208] ffffffff [224] ffffffff [240] ffffffff
[0] 0000 [16] 0003 [32] 004a [48] fffffffd [64] ffffffff [80] ffffffff [96] ffffffff [112] 0001 [128] 0000 [144] 0000 [160] 0001 [176] 0001 [192] 0000 [208] 0001 [224] 0001 [240] 0000
[0] fffffffc [16] fffffff6 [32] ffffff5f [48] 0004 [64] 0001 [80] 0000 [96] 0000 [112] ffffffff [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] 000d [16] 0005 [32] 00bc [48] fffffffb [64] ffffffff [80] fffffffe [96] ffffffff [112] ffffffff [128] ffffffff [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffff7 [16] fffffff7 [32] ffffff70 [48] 0002 [64] 0001 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] ffffffff
[0] fffffff8 [16] 0002 [32] 006b [48] fffffffc [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffb [16] fffffff7 [32] ffffff75 [48] 0004 [64] 0001 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] ffffffff [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] 0001 [32] 0028 [48] fffffffe [64] ffffffff [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff8 [16] fffffffa [32] ffffff8e [48] 0002 [64] 0001 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] fffffff5 [16] ffffffff [32] 0026 [48] ffffffff [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffffc [16] ffffffff [32] 0023 [48] fffffffd [64] fffffffd [80] fffffffe [96] fffffffe [112] ffffffff [128] ffffffff [144] fffffffe [160] ffffffff [176] ffffffff [192] ffffffff [208] fffffffe [224] fffffffe [240] ffffffff
[0] 0002 [16] 0002 [32] 0048 [48] fffffffc [64] ffffffff [80] ffffffff [96] ffffffff [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] 0000 [208] 0000 [224] 0000 [240] 0000
[0] fffffff3 [16] fffffffe [32] 0009 [48] fffffffe [64] fffffffe [80] fffffffe [96] fffffffe [112] fffffffe [128] ffffffff [144] fffffffe [160] fffffffe [176] fffffffe [192] ffffffff [208] ffffffff [224] fffffffe [240] ffffffff
[0] fffffffb [16] fffffffb [32] ffffffa5 [48] 0002 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000
[0] fffffff8 [16] fffffffe [32] 000e [48] fffffffe [64] fffffffe [80] fffffffe [96] fffffffe [112] fffffffe [128] ffffffff [144] fffffffe [160] fffffffe [176] ffffffff [192] ffffffff [208] ffffffff [224] fffffffe [240] ffffffff
[0] fffffffa [16] fffffffb [32] ffffffb5 [48] 0001 [64] 0000 [80] 0000 [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] 0000 [240] 0000
[0] 0007 [16] 0000 [32] 0034 [48] fffffffd [64] ffffffff [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] 0000 [192] 0000 [208] 0000 [224] ffffffff [240] ffffffff
[0] fffffff2 [16] fffffffb [32] ffffffaf [48] 0002 [64] 0000 [80] 0000 [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] ffffffff [192] ffffffff [208] ffffffff [224] ffffffff [240] 0000
[0] 0000 [16] ffffffff [32] 0004 [48] ffffffff [64] ffffffff [80] ffffffff [96] 0000 [112] 0000 [128] 0000 [144] 0000 [160] 0000 [176] 0000 [192] ffffffff [208] 0000 [224] 0000 [240] 0000

6
python/hello.py Normal file
View file

@ -0,0 +1,6 @@
def main():
print("Hello from python!")
if __name__ == "__main__":
main()

25
python/parse_fft.py Normal file
View file

@ -0,0 +1,25 @@
# /// script
# requires-python = ">=3.11"
# dependencies = []
# ///
from pathlib import Path
import re
from math import log10
# [0] fffffffe [16] fffffffe [32] ffffffff [48] ffffffff [64] 0000 [80] ffffffff [96] ffffffff [112] ffffffff [128] 0000 [144] ffffffff [160] ffffffff [176] ffffffff [192] 0000 [208] ffffffff [224] ffffffff [240] 0000
line_re = re.compile(r"\[([0-9]+)\] ([0-9a-f]+)")
def main() -> None:
for line in Path("fft_1.txt").open().readlines():
bins = [
int.from_bytes(bytes.fromhex(m[2]), "little", signed=True)
for m in line_re.finditer(line)
]
print(bins)
if __name__ == "__main__":
main()

114
python/plotserial_fft.py Normal file
View file

@ -0,0 +1,114 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "matplotlib",
# "numpy",
# "pyserial",
# ]
# ///
from struct import unpack
from threading import Thread
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
from serial import Serial
SYNC = bytes.fromhex("001180007fff1100")
BLOCK_LENGTH = 256
BLOCK_SIZE = 2 * 2 * BLOCK_LENGTH
data: list[bytes] = []
do_recv = True
recv_thread = None
def recv_main():
ser = Serial("COM5", baudrate=1000000)
def sync():
syncbuf = bytearray(ser.read(len(SYNC)))
if syncbuf[: len(SYNC)] == SYNC:
return
print("not in sync...")
synced = False
while not synced:
if syncbuf[: len(SYNC)] == SYNC:
synced = True
break
syncbuf.append(ser.read(1)[0])
syncbuf.pop(0)
if not synced:
raise ConnectionError
print("synced")
while do_recv:
sync()
data.append(ser.read(BLOCK_SIZE))
def main() -> None:
global recv_thread
x1 = np.arange(BLOCK_LENGTH)
y1 = np.zeros(BLOCK_LENGTH)
x2 = np.arange(BLOCK_LENGTH)
y2 = np.zeros(BLOCK_LENGTH)
fig, ax = plt.subplots()
fig.canvas.mpl_connect("close_event", on_close)
graph1 = ax.plot(x1, y1)[0]
graph2 = ax.plot(x2, y2)[0]
plt.ylim(-32767, 32768)
np.set_printoptions(suppress=True, precision=2)
recv_thread = Thread(target=recv_main)
recv_thread.start()
def update(frame):
if data:
block = data.pop(0)
else:
return
if len(data) > 4:
print(f"buffer overflow: {len(data)}")
data.clear()
values = unpack(f"{2*BLOCK_LENGTH}h", block)
y1[:] = values[:BLOCK_LENGTH]
y1[-1] = values[BLOCK_LENGTH - 1]
y2[:] = abs(y1)
graph1.set_ydata(y1)
# graph2.set_ydata(y2)
anim = FuncAnimation(
fig, update, frames=None, cache_frame_data=False, interval=64 / 24000
)
plt.show()
# while True:
# block = ser.read(2 * BLOCK_LENGTH)
# values = unpack(f"{BLOCK_LENGTH}h", block)
# y[:] = values[:]
# graph.set_ydata(y)
# print(values)
# n = int.from_bytes(ser.read(2), "little", signed=True)
# print(n)
def on_close(_):
global do_recv
do_recv = False
if recv_thread:
recv_thread.join()
if __name__ == "__main__":
main()

View file

@ -0,0 +1,77 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "matplotlib",
# "numpy",
# "pyserial",
# ]
# ///
import time
from struct import unpack
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
from serial import Serial
SYNC = bytes.fromhex("001180007fff1100")
BLOCK_LENGTH = 8
last_time = time.time()
def main() -> None:
ser = Serial("COM5", baudrate=1000000)
x1 = np.arange(BLOCK_LENGTH)
y1 = np.zeros(BLOCK_LENGTH)
x2 = np.arange(BLOCK_LENGTH)
y2 = np.zeros(BLOCK_LENGTH)
fig, ax = plt.subplots()
graph1 = ax.plot(x1, y1)[0]
graph2 = ax.plot(x2, y2)[0]
plt.ylim(0, 2 ** 32)
def sync():
synced = False
syncbuf = bytearray(ser.read(len(SYNC)))
while not synced:
if syncbuf[: len(SYNC)] == SYNC:
synced = True
break
syncbuf.append(ser.read(1)[0])
syncbuf.pop(0)
if not synced:
raise ConnectionError
print(syncbuf.hex())
print("waiting for sync...")
sync()
print("synced")
def update(frame):
global last_time
sync()
block = ser.read(4 * 2 * BLOCK_LENGTH)
x = unpack(f"{BLOCK_LENGTH}I{BLOCK_LENGTH}I", block)
now = time.time()
print(block.hex())
print(x)
print(f"elapsed: {now-last_time}")
last_time = now
avg, current = x[:BLOCK_LENGTH], x[BLOCK_LENGTH:]
y1[:] = avg[:]
y2[:] = current[:]
graph1.set_ydata(y1)
graph2.set_ydata(y2)
anim = FuncAnimation(
fig, update, frames=None, cache_frame_data=False, interval=256 / 24000
)
plt.show()
if __name__ == "__main__":
main()

12
python/pyproject.toml Normal file
View file

@ -0,0 +1,12 @@
[project]
name = "python"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
"matplotlib>=3.10.0",
"numpy>=2.2.3",
"sounddevice>=0.5.1",
"soundfile>=0.13.1",
]

79
python/sim.py Normal file
View file

@ -0,0 +1,79 @@
from pathlib import Path
from typing import Generator, Iterable
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.artist import Artist
import numpy as np
import numpy.typing as npt
import soundfile
SAMPLE_TYPE = np.int16
SAMPLE_COUNT = 256
def mic_sim_file(
filename: Path, start: float = 0, duration: float = 60
) -> Generator[npt.NDArray[SAMPLE_TYPE]]:
sf = soundfile.SoundFile(file=filename)
pos = start * sf.samplerate
sf.seek(pos)
yield from sf.blocks(
blocksize=SAMPLE_COUNT, dtype="int16", frames=duration * sf.samplerate
)
class Sim:
"""Simulator"""
def __init__(self) -> None:
self.mic = mic_sim_file(Path("24000_s16.wav"), 115)
self.x1 = np.arange(SAMPLE_COUNT)
self.y1 = np.zeros(SAMPLE_COUNT)
self.x2 = np.arange(SAMPLE_COUNT)
self.y2 = np.zeros(SAMPLE_COUNT)
self.fig, self.ax = plt.subplots(2)
self.graph1 = self.ax.plot(self.x1, self.y1)[0]
self.graph2 = self.ax.plot(self.x2, self.y2)[0]
plt.ylim(-32767, 32768)
np.set_printoptions(suppress=True, precision=2)
self.anim = FuncAnimation(
self.fig,
self.update,
frames=None,
cache_frame_data=False,
interval=64 / 24000,
)
plt.show()
def process(self)->None:
np.fft.
def update(self, frame: npt.NDArray[SAMPLE_TYPE]) -> Iterable[Artist]:
try:
values = next(self.mic)
except StopIteration:
return []
self.y1[:] = values[:SAMPLE_COUNT]
self.graph1.set_ydata(self.y1)
return [self.graph1]
if __name__ == "__main__":
sim = Sim()

24
python/sinegen.py Normal file
View file

@ -0,0 +1,24 @@
# /// script
# requires-python = ">=3.11"
# dependencies = [
# "numpy",
# ]
# ///
import numpy as np
FS=24000
SAMPLE_COUNT=256
def main() -> None:
t_v = np.arange(SAMPLE_COUNT) / FS
signal = (0x7FFF*np.sin(t_v * 2* np.pi * 440)).astype(np.int16)
print(signal)
if __name__ == "__main__":
main()

304
python/uv.lock generated Normal file
View file

@ -0,0 +1,304 @@
version = 1
requires-python = ">=3.13"
[[package]]
name = "cffi"
version = "1.17.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pycparser" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 },
{ url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 },
{ url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 },
{ url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 },
{ url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 },
{ url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 },
{ url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 },
{ url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 },
{ url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 },
{ url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 },
{ url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 },
]
[[package]]
name = "contourpy"
version = "1.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
]
sdist = { url = "https://files.pythonhosted.org/packages/25/c2/fc7193cc5383637ff390a712e88e4ded0452c9fbcf84abe3de5ea3df1866/contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", size = 13465753 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/9a/e7/de62050dce687c5e96f946a93546910bc67e483fe05324439e329ff36105/contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2", size = 271548 },
{ url = "https://files.pythonhosted.org/packages/78/4d/c2a09ae014ae984c6bdd29c11e74d3121b25eaa117eca0bb76340efd7e1c/contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5", size = 255576 },
{ url = "https://files.pythonhosted.org/packages/ab/8a/915380ee96a5638bda80cd061ccb8e666bfdccea38d5741cb69e6dbd61fc/contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81", size = 306635 },
{ url = "https://files.pythonhosted.org/packages/29/5c/c83ce09375428298acd4e6582aeb68b1e0d1447f877fa993d9bf6cd3b0a0/contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2", size = 345925 },
{ url = "https://files.pythonhosted.org/packages/29/63/5b52f4a15e80c66c8078a641a3bfacd6e07106835682454647aca1afc852/contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7", size = 318000 },
{ url = "https://files.pythonhosted.org/packages/9a/e2/30ca086c692691129849198659bf0556d72a757fe2769eb9620a27169296/contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c", size = 322689 },
{ url = "https://files.pythonhosted.org/packages/6b/77/f37812ef700f1f185d348394debf33f22d531e714cf6a35d13d68a7003c7/contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3", size = 1268413 },
{ url = "https://files.pythonhosted.org/packages/3f/6d/ce84e79cdd128542ebeb268f84abb4b093af78e7f8ec504676673d2675bc/contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1", size = 1326530 },
{ url = "https://files.pythonhosted.org/packages/72/22/8282f4eae20c73c89bee7a82a19c4e27af9b57bb602ecaa00713d5bdb54d/contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82", size = 175315 },
{ url = "https://files.pythonhosted.org/packages/e3/d5/28bca491f65312b438fbf076589dcde7f6f966b196d900777f5811b9c4e2/contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd", size = 220987 },
{ url = "https://files.pythonhosted.org/packages/2f/24/a4b285d6adaaf9746e4700932f579f1a7b6f9681109f694cfa233ae75c4e/contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30", size = 285001 },
{ url = "https://files.pythonhosted.org/packages/48/1d/fb49a401b5ca4f06ccf467cd6c4f1fd65767e63c21322b29b04ec40b40b9/contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751", size = 268553 },
{ url = "https://files.pythonhosted.org/packages/79/1e/4aef9470d13fd029087388fae750dccb49a50c012a6c8d1d634295caa644/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342", size = 310386 },
{ url = "https://files.pythonhosted.org/packages/b0/34/910dc706ed70153b60392b5305c708c9810d425bde12499c9184a1100888/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c", size = 349806 },
{ url = "https://files.pythonhosted.org/packages/31/3c/faee6a40d66d7f2a87f7102236bf4780c57990dd7f98e5ff29881b1b1344/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f", size = 321108 },
{ url = "https://files.pythonhosted.org/packages/17/69/390dc9b20dd4bb20585651d7316cc3054b7d4a7b4f8b710b2b698e08968d/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda", size = 327291 },
{ url = "https://files.pythonhosted.org/packages/ef/74/7030b67c4e941fe1e5424a3d988080e83568030ce0355f7c9fc556455b01/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242", size = 1263752 },
{ url = "https://files.pythonhosted.org/packages/f0/ed/92d86f183a8615f13f6b9cbfc5d4298a509d6ce433432e21da838b4b63f4/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", size = 1318403 },
{ url = "https://files.pythonhosted.org/packages/b3/0e/c8e4950c77dcfc897c71d61e56690a0a9df39543d2164040301b5df8e67b/contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", size = 185117 },
{ url = "https://files.pythonhosted.org/packages/c1/31/1ae946f11dfbd229222e6d6ad8e7bd1891d3d48bde5fbf7a0beb9491f8e3/contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", size = 236668 },
]
[[package]]
name = "cycler"
version = "0.12.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 },
]
[[package]]
name = "fonttools"
version = "4.56.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/1c/8c/9ffa2a555af0e5e5d0e2ed7fdd8c9bef474ed676995bb4c57c9cd0014248/fonttools-4.56.0.tar.gz", hash = "sha256:a114d1567e1a1586b7e9e7fc2ff686ca542a82769a296cef131e4c4af51e58f4", size = 3462892 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/a5/55/f06b48d48e0b4ec3a3489efafe9bd4d81b6e0802ac51026e3ee4634e89ba/fonttools-4.56.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f20e2c0dfab82983a90f3d00703ac0960412036153e5023eed2b4641d7d5e692", size = 2735127 },
{ url = "https://files.pythonhosted.org/packages/59/db/d2c7c9b6dd5cbd46f183e650a47403ffb88fca17484eb7c4b1cd88f9e513/fonttools-4.56.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f36a0868f47b7566237640c026c65a86d09a3d9ca5df1cd039e30a1da73098a0", size = 2272519 },
{ url = "https://files.pythonhosted.org/packages/4d/a2/da62d779c34a0e0c06415f02eab7fa3466de5d46df459c0275a255cefc65/fonttools-4.56.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62b4c6802fa28e14dba010e75190e0e6228513573f1eeae57b11aa1a39b7e5b1", size = 4762423 },
{ url = "https://files.pythonhosted.org/packages/be/6a/fd4018e0448c8a5e12138906411282c5eab51a598493f080a9f0960e658f/fonttools-4.56.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05d1f07eb0a7d755fbe01fee1fd255c3a4d3730130cf1bfefb682d18fd2fcea", size = 4834442 },
{ url = "https://files.pythonhosted.org/packages/6d/63/fa1dec8efb35bc11ef9c39b2d74754b45d48a3ccb2cf78c0109c0af639e8/fonttools-4.56.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0073b62c3438cf0058488c002ea90489e8801d3a7af5ce5f7c05c105bee815c3", size = 4742800 },
{ url = "https://files.pythonhosted.org/packages/dd/f4/963247ae8c73ccc4cf2929e7162f595c81dbe17997d1d0ea77da24a217c9/fonttools-4.56.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cad98c94833465bcf28f51c248aaf07ca022efc6a3eba750ad9c1e0256d278", size = 4963746 },
{ url = "https://files.pythonhosted.org/packages/ea/e0/46f9600c39c644b54e4420f941f75fa200d9288c9ae171e5d80918b8cbb9/fonttools-4.56.0-cp313-cp313-win32.whl", hash = "sha256:d0cb73ccf7f6d7ca8d0bc7ea8ac0a5b84969a41c56ac3ac3422a24df2680546f", size = 2140927 },
{ url = "https://files.pythonhosted.org/packages/27/6d/3edda54f98a550a0473f032d8050315fbc8f1b76a0d9f3879b72ebb2cdd6/fonttools-4.56.0-cp313-cp313-win_amd64.whl", hash = "sha256:62cc1253827d1e500fde9dbe981219fea4eb000fd63402283472d38e7d8aa1c6", size = 2186709 },
{ url = "https://files.pythonhosted.org/packages/bf/ff/44934a031ce5a39125415eb405b9efb76fe7f9586b75291d66ae5cbfc4e6/fonttools-4.56.0-py3-none-any.whl", hash = "sha256:1088182f68c303b50ca4dc0c82d42083d176cba37af1937e1a976a31149d4d14", size = 1089800 },
]
[[package]]
name = "kiwisolver"
version = "1.4.8"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 },
{ url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 },
{ url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 },
{ url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 },
{ url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 },
{ url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 },
{ url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 },
{ url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 },
{ url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 },
{ url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 },
{ url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 },
{ url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 },
{ url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 },
{ url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 },
{ url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 },
{ url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 },
{ url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 },
{ url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 },
{ url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 },
{ url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 },
{ url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 },
{ url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 },
{ url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 },
{ url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 },
{ url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 },
{ url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 },
{ url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 },
{ url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 },
]
[[package]]
name = "matplotlib"
version = "3.10.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "contourpy" },
{ name = "cycler" },
{ name = "fonttools" },
{ name = "kiwisolver" },
{ name = "numpy" },
{ name = "packaging" },
{ name = "pillow" },
{ name = "pyparsing" },
{ name = "python-dateutil" },
]
sdist = { url = "https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz", hash = "sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278", size = 36686418 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/72/11/1b2a094d95dcb6e6edd4a0b238177c439006c6b7a9fe8d31801237bf512f/matplotlib-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25", size = 8173073 },
{ url = "https://files.pythonhosted.org/packages/0d/c4/87b6ad2723070511a411ea719f9c70fde64605423b184face4e94986de9d/matplotlib-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908", size = 8043892 },
{ url = "https://files.pythonhosted.org/packages/57/69/cb0812a136550b21361335e9ffb7d459bf6d13e03cb7b015555d5143d2d6/matplotlib-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2", size = 8450532 },
{ url = "https://files.pythonhosted.org/packages/ea/3a/bab9deb4fb199c05e9100f94d7f1c702f78d3241e6a71b784d2b88d7bebd/matplotlib-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf", size = 8593905 },
{ url = "https://files.pythonhosted.org/packages/8b/66/742fd242f989adc1847ddf5f445815f73ad7c46aa3440690cc889cfa423c/matplotlib-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae", size = 9399609 },
{ url = "https://files.pythonhosted.org/packages/fa/d6/54cee7142cef7d910a324a7aedf335c0c147b03658b54d49ec48166f10a6/matplotlib-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442", size = 8039076 },
{ url = "https://files.pythonhosted.org/packages/43/14/815d072dc36e88753433bfd0385113405efb947e6895ff7b4d2e8614a33b/matplotlib-3.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06", size = 8211000 },
{ url = "https://files.pythonhosted.org/packages/9a/76/34e75f364194ec352678adcb540964be6f35ec7d3d8c75ebcb17e6839359/matplotlib-3.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff", size = 8087707 },
{ url = "https://files.pythonhosted.org/packages/c3/2b/b6bc0dff6a72d333bc7df94a66e6ce662d224e43daa8ad8ae4eaa9a77f55/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593", size = 8477384 },
{ url = "https://files.pythonhosted.org/packages/c2/2d/b5949fb2b76e9b47ab05e25a5f5f887c70de20d8b0cbc704a4e2ee71c786/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e", size = 8610334 },
{ url = "https://files.pythonhosted.org/packages/d6/9a/6e3c799d5134d9af44b01c787e1360bee38cf51850506ea2e743a787700b/matplotlib-3.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede", size = 9406777 },
{ url = "https://files.pythonhosted.org/packages/0e/dd/e6ae97151e5ed648ab2ea48885bc33d39202b640eec7a2910e2c843f7ac0/matplotlib-3.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c", size = 8109742 },
]
[[package]]
name = "numpy"
version = "2.2.3"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/fb/90/8956572f5c4ae52201fdec7ba2044b2c882832dcec7d5d0922c9e9acf2de/numpy-2.2.3.tar.gz", hash = "sha256:dbdc15f0c81611925f382dfa97b3bd0bc2c1ce19d4fe50482cb0ddc12ba30020", size = 20262700 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/0e/8b/88b98ed534d6a03ba8cddb316950fe80842885709b58501233c29dfa24a9/numpy-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bfdb06b395385ea9b91bf55c1adf1b297c9fdb531552845ff1d3ea6e40d5aba", size = 20916001 },
{ url = "https://files.pythonhosted.org/packages/d9/b4/def6ec32c725cc5fbd8bdf8af80f616acf075fe752d8a23e895da8c67b70/numpy-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23c9f4edbf4c065fddb10a4f6e8b6a244342d95966a48820c614891e5059bb50", size = 14130721 },
{ url = "https://files.pythonhosted.org/packages/20/60/70af0acc86495b25b672d403e12cb25448d79a2b9658f4fc45e845c397a8/numpy-2.2.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:a0c03b6be48aaf92525cccf393265e02773be8fd9551a2f9adbe7db1fa2b60f1", size = 5130999 },
{ url = "https://files.pythonhosted.org/packages/2e/69/d96c006fb73c9a47bcb3611417cf178049aae159afae47c48bd66df9c536/numpy-2.2.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:2376e317111daa0a6739e50f7ee2a6353f768489102308b0d98fcf4a04f7f3b5", size = 6665299 },
{ url = "https://files.pythonhosted.org/packages/5a/3f/d8a877b6e48103733ac224ffa26b30887dc9944ff95dffdfa6c4ce3d7df3/numpy-2.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fb62fe3d206d72fe1cfe31c4a1106ad2b136fcc1606093aeab314f02930fdf2", size = 14064096 },
{ url = "https://files.pythonhosted.org/packages/e4/43/619c2c7a0665aafc80efca465ddb1f260287266bdbdce517396f2f145d49/numpy-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52659ad2534427dffcc36aac76bebdd02b67e3b7a619ac67543bc9bfe6b7cdb1", size = 16114758 },
{ url = "https://files.pythonhosted.org/packages/d9/79/ee4fe4f60967ccd3897aa71ae14cdee9e3c097e3256975cc9575d393cb42/numpy-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b416af7d0ed3271cad0f0a0d0bee0911ed7eba23e66f8424d9f3dfcdcae1304", size = 15259880 },
{ url = "https://files.pythonhosted.org/packages/fb/c8/8b55cf05db6d85b7a7d414b3d1bd5a740706df00bfa0824a08bf041e52ee/numpy-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1402da8e0f435991983d0a9708b779f95a8c98c6b18a171b9f1be09005e64d9d", size = 17876721 },
{ url = "https://files.pythonhosted.org/packages/21/d6/b4c2f0564b7dcc413117b0ffbb818d837e4b29996b9234e38b2025ed24e7/numpy-2.2.3-cp313-cp313-win32.whl", hash = "sha256:136553f123ee2951bfcfbc264acd34a2fc2f29d7cdf610ce7daf672b6fbaa693", size = 6290195 },
{ url = "https://files.pythonhosted.org/packages/97/e7/7d55a86719d0de7a6a597949f3febefb1009435b79ba510ff32f05a8c1d7/numpy-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5b732c8beef1d7bc2d9e476dbba20aaff6167bf205ad9aa8d30913859e82884b", size = 12619013 },
{ url = "https://files.pythonhosted.org/packages/a6/1f/0b863d5528b9048fd486a56e0b97c18bf705e88736c8cea7239012119a54/numpy-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:435e7a933b9fda8126130b046975a968cc2d833b505475e588339e09f7672890", size = 20944621 },
{ url = "https://files.pythonhosted.org/packages/aa/99/b478c384f7a0a2e0736177aafc97dc9152fc036a3fdb13f5a3ab225f1494/numpy-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7678556eeb0152cbd1522b684dcd215250885993dd00adb93679ec3c0e6e091c", size = 14142502 },
{ url = "https://files.pythonhosted.org/packages/fb/61/2d9a694a0f9cd0a839501d362de2a18de75e3004576a3008e56bdd60fcdb/numpy-2.2.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2e8da03bd561504d9b20e7a12340870dfc206c64ea59b4cfee9fceb95070ee94", size = 5176293 },
{ url = "https://files.pythonhosted.org/packages/33/35/51e94011b23e753fa33f891f601e5c1c9a3d515448659b06df9d40c0aa6e/numpy-2.2.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:c9aa4496fd0e17e3843399f533d62857cef5900facf93e735ef65aa4bbc90ef0", size = 6691874 },
{ url = "https://files.pythonhosted.org/packages/ff/cf/06e37619aad98a9d03bd8d65b8e3041c3a639be0f5f6b0a0e2da544538d4/numpy-2.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4ca91d61a4bf61b0f2228f24bbfa6a9facd5f8af03759fe2a655c50ae2c6610", size = 14036826 },
{ url = "https://files.pythonhosted.org/packages/0c/93/5d7d19955abd4d6099ef4a8ee006f9ce258166c38af259f9e5558a172e3e/numpy-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deaa09cd492e24fd9b15296844c0ad1b3c976da7907e1c1ed3a0ad21dded6f76", size = 16096567 },
{ url = "https://files.pythonhosted.org/packages/af/53/d1c599acf7732d81f46a93621dab6aa8daad914b502a7a115b3f17288ab2/numpy-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:246535e2f7496b7ac85deffe932896a3577be7af8fb7eebe7146444680297e9a", size = 15242514 },
{ url = "https://files.pythonhosted.org/packages/53/43/c0f5411c7b3ea90adf341d05ace762dad8cb9819ef26093e27b15dd121ac/numpy-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:daf43a3d1ea699402c5a850e5313680ac355b4adc9770cd5cfc2940e7861f1bf", size = 17872920 },
{ url = "https://files.pythonhosted.org/packages/5b/57/6dbdd45ab277aff62021cafa1e15f9644a52f5b5fc840bc7591b4079fb58/numpy-2.2.3-cp313-cp313t-win32.whl", hash = "sha256:cf802eef1f0134afb81fef94020351be4fe1d6681aadf9c5e862af6602af64ef", size = 6346584 },
{ url = "https://files.pythonhosted.org/packages/97/9b/484f7d04b537d0a1202a5ba81c6f53f1846ae6c63c2127f8df869ed31342/numpy-2.2.3-cp313-cp313t-win_amd64.whl", hash = "sha256:aee2512827ceb6d7f517c8b85aa5d3923afe8fc7a57d028cffcd522f1c6fd082", size = 12706784 },
]
[[package]]
name = "packaging"
version = "24.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 },
]
[[package]]
name = "pillow"
version = "11.1.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f3/af/c097e544e7bd278333db77933e535098c259609c4eb3b85381109602fb5b/pillow-11.1.0.tar.gz", hash = "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", size = 46742715 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b3/31/9ca79cafdce364fd5c980cd3416c20ce1bebd235b470d262f9d24d810184/pillow-11.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", size = 3226640 },
{ url = "https://files.pythonhosted.org/packages/ac/0f/ff07ad45a1f172a497aa393b13a9d81a32e1477ef0e869d030e3c1532521/pillow-11.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", size = 3101437 },
{ url = "https://files.pythonhosted.org/packages/08/2f/9906fca87a68d29ec4530be1f893149e0cb64a86d1f9f70a7cfcdfe8ae44/pillow-11.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", size = 4326605 },
{ url = "https://files.pythonhosted.org/packages/b0/0f/f3547ee15b145bc5c8b336401b2d4c9d9da67da9dcb572d7c0d4103d2c69/pillow-11.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", size = 4411173 },
{ url = "https://files.pythonhosted.org/packages/b1/df/bf8176aa5db515c5de584c5e00df9bab0713548fd780c82a86cba2c2fedb/pillow-11.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", size = 4369145 },
{ url = "https://files.pythonhosted.org/packages/de/7c/7433122d1cfadc740f577cb55526fdc39129a648ac65ce64db2eb7209277/pillow-11.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", size = 4496340 },
{ url = "https://files.pythonhosted.org/packages/25/46/dd94b93ca6bd555588835f2504bd90c00d5438fe131cf01cfa0c5131a19d/pillow-11.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", size = 4296906 },
{ url = "https://files.pythonhosted.org/packages/a8/28/2f9d32014dfc7753e586db9add35b8a41b7a3b46540e965cb6d6bc607bd2/pillow-11.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", size = 4431759 },
{ url = "https://files.pythonhosted.org/packages/33/48/19c2cbe7403870fbe8b7737d19eb013f46299cdfe4501573367f6396c775/pillow-11.1.0-cp313-cp313-win32.whl", hash = "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", size = 2291657 },
{ url = "https://files.pythonhosted.org/packages/3b/ad/285c556747d34c399f332ba7c1a595ba245796ef3e22eae190f5364bb62b/pillow-11.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", size = 2626304 },
{ url = "https://files.pythonhosted.org/packages/e5/7b/ef35a71163bf36db06e9c8729608f78dedf032fc8313d19bd4be5c2588f3/pillow-11.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", size = 2375117 },
{ url = "https://files.pythonhosted.org/packages/79/30/77f54228401e84d6791354888549b45824ab0ffde659bafa67956303a09f/pillow-11.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", size = 3230060 },
{ url = "https://files.pythonhosted.org/packages/ce/b1/56723b74b07dd64c1010fee011951ea9c35a43d8020acd03111f14298225/pillow-11.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", size = 3106192 },
{ url = "https://files.pythonhosted.org/packages/e1/cd/7bf7180e08f80a4dcc6b4c3a0aa9e0b0ae57168562726a05dc8aa8fa66b0/pillow-11.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", size = 4446805 },
{ url = "https://files.pythonhosted.org/packages/97/42/87c856ea30c8ed97e8efbe672b58c8304dee0573f8c7cab62ae9e31db6ae/pillow-11.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", size = 4530623 },
{ url = "https://files.pythonhosted.org/packages/ff/41/026879e90c84a88e33fb00cc6bd915ac2743c67e87a18f80270dfe3c2041/pillow-11.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", size = 4465191 },
{ url = "https://files.pythonhosted.org/packages/e5/fb/a7960e838bc5df57a2ce23183bfd2290d97c33028b96bde332a9057834d3/pillow-11.1.0-cp313-cp313t-win32.whl", hash = "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", size = 2295494 },
{ url = "https://files.pythonhosted.org/packages/d7/6c/6ec83ee2f6f0fda8d4cf89045c6be4b0373ebfc363ba8538f8c999f63fcd/pillow-11.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", size = 2631595 },
{ url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 },
]
[[package]]
name = "pycparser"
version = "2.22"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 },
]
[[package]]
name = "pyparsing"
version = "3.2.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", size = 1067694 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716 },
]
[[package]]
name = "python"
version = "0.1.0"
source = { virtual = "." }
dependencies = [
{ name = "matplotlib" },
{ name = "numpy" },
{ name = "sounddevice" },
{ name = "soundfile" },
]
[package.metadata]
requires-dist = [
{ name = "matplotlib", specifier = ">=3.10.0" },
{ name = "numpy", specifier = ">=2.2.3" },
{ name = "sounddevice", specifier = ">=0.5.1" },
{ name = "soundfile", specifier = ">=0.13.1" },
]
[[package]]
name = "python-dateutil"
version = "2.9.0.post0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "six" },
]
sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 },
]
[[package]]
name = "six"
version = "1.17.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
]
[[package]]
name = "sounddevice"
version = "0.5.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi" },
]
sdist = { url = "https://files.pythonhosted.org/packages/80/2d/b04ae180312b81dbb694504bee170eada5372242e186f6298139fd3a0513/sounddevice-0.5.1.tar.gz", hash = "sha256:09ca991daeda8ce4be9ac91e15a9a81c8f81efa6b695a348c9171ea0c16cb041", size = 52896 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/06/d1/464b5fca3decdd0cfec8c47f7b4161a0b12972453201c1bf03811f367c5e/sounddevice-0.5.1-py3-none-any.whl", hash = "sha256:e2017f182888c3f3c280d9fbac92e5dbddac024a7e3442f6e6116bd79dab8a9c", size = 32276 },
{ url = "https://files.pythonhosted.org/packages/6f/f6/6703fe7cf3d7b7279040c792aeec6334e7305956aba4a80f23e62c8fdc44/sounddevice-0.5.1-py3-none-macosx_10_6_x86_64.macosx_10_6_universal2.whl", hash = "sha256:d16cb23d92322526a86a9490c427bf8d49e273d9ccc0bd096feecd229cde6031", size = 107916 },
{ url = "https://files.pythonhosted.org/packages/57/a5/78a5e71f5ec0faedc54f4053775d61407bfbd7d0c18228c7f3d4252fd276/sounddevice-0.5.1-py3-none-win32.whl", hash = "sha256:d84cc6231526e7a08e89beff229c37f762baefe5e0cc2747cbe8e3a565470055", size = 312494 },
{ url = "https://files.pythonhosted.org/packages/af/9b/15217b04f3b36d30de55fef542389d722de63f1ad81f9c72d8afc98cb6ab/sounddevice-0.5.1-py3-none-win_amd64.whl", hash = "sha256:4313b63f2076552b23ac3e0abd3bcfc0c1c6a696fc356759a13bd113c9df90f1", size = 363634 },
]
[[package]]
name = "soundfile"
version = "0.13.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi" },
{ name = "numpy" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e1/41/9b873a8c055582859b239be17902a85339bec6a30ad162f98c9b0288a2cc/soundfile-0.13.1.tar.gz", hash = "sha256:b2c68dab1e30297317080a5b43df57e302584c49e2942defdde0acccc53f0e5b", size = 46156 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/64/28/e2a36573ccbcf3d57c00626a21fe51989380636e821b341d36ccca0c1c3a/soundfile-0.13.1-py2.py3-none-any.whl", hash = "sha256:a23c717560da2cf4c7b5ae1142514e0fd82d6bbd9dfc93a50423447142f2c445", size = 25751 },
{ url = "https://files.pythonhosted.org/packages/ea/ab/73e97a5b3cc46bba7ff8650a1504348fa1863a6f9d57d7001c6b67c5f20e/soundfile-0.13.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:82dc664d19831933fe59adad199bf3945ad06d84bc111a5b4c0d3089a5b9ec33", size = 1142250 },
{ url = "https://files.pythonhosted.org/packages/a0/e5/58fd1a8d7b26fc113af244f966ee3aecf03cb9293cb935daaddc1e455e18/soundfile-0.13.1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:743f12c12c4054921e15736c6be09ac26b3b3d603aef6fd69f9dde68748f2593", size = 1101406 },
{ url = "https://files.pythonhosted.org/packages/58/ae/c0e4a53d77cf6e9a04179535766b3321b0b9ced5f70522e4caf9329f0046/soundfile-0.13.1-py2.py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:9c9e855f5a4d06ce4213f31918653ab7de0c5a8d8107cd2427e44b42df547deb", size = 1235729 },
{ url = "https://files.pythonhosted.org/packages/57/5e/70bdd9579b35003a489fc850b5047beeda26328053ebadc1fb60f320f7db/soundfile-0.13.1-py2.py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:03267c4e493315294834a0870f31dbb3b28a95561b80b134f0bd3cf2d5f0e618", size = 1313646 },
{ url = "https://files.pythonhosted.org/packages/fe/df/8c11dc4dfceda14e3003bb81a0d0edcaaf0796dd7b4f826ea3e532146bba/soundfile-0.13.1-py2.py3-none-win32.whl", hash = "sha256:c734564fab7c5ddf8e9be5bf70bab68042cd17e9c214c06e365e20d64f9a69d5", size = 899881 },
{ url = "https://files.pythonhosted.org/packages/14/e9/6b761de83277f2f02ded7e7ea6f07828ec78e4b229b80e4ca55dd205b9dc/soundfile-0.13.1-py2.py3-none-win_amd64.whl", hash = "sha256:1e70a05a0626524a69e9f0f4dd2ec174b4e9567f4d8b6c11d38b5c289be36ee9", size = 1019162 },
]