diff --git a/Downstream/.cproject b/Downstream/.cproject
index e7f3c64..2f3dd93 100644
--- a/Downstream/.cproject
+++ b/Downstream/.cproject
@@ -79,6 +79,7 @@
+
@@ -91,7 +92,7 @@
-
+
@@ -131,7 +132,7 @@
-
+
@@ -140,7 +141,7 @@
-
+
@@ -153,6 +154,12 @@
+
+
+
+
+
+
@@ -176,6 +183,11 @@
+
+
+
@@ -183,6 +195,7 @@
+
diff --git a/Downstream/.settings/language.settings.xml b/Downstream/.settings/language.settings.xml
index 7febaad..7a9fc8b 100644
--- a/Downstream/.settings/language.settings.xml
+++ b/Downstream/.settings/language.settings.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs
index a78566d..3c47024 100644
--- a/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs
+++ b/Downstream/.settings/org.eclipse.cdt.managedbuilder.core.prefs
@@ -5,7 +5,17 @@ environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.
environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/C_INCLUDE_PATH/operation=remove
environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/append=true
environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/appendContributed=true
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/CPATH/delimiter=\:
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/CPATH/operation=remove
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/C_INCLUDE_PATH/delimiter=\:
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/C_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/append=true
+environment/buildEnvironmentInclude/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/appendContributed=true
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/LIBRARY_PATH/delimiter=\:
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/LIBRARY_PATH/operation=remove
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/append=true
environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.110983800/appendContributed=true
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/LIBRARY_PATH/delimiter=\:
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/LIBRARY_PATH/operation=remove
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/append=true
+environment/buildEnvironmentLibrary/ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1300395207/appendContributed=true
diff --git a/Downstream/Downstream Debug.launch b/Downstream/Downstream Debug.launch
index 5f7fe32..e9b4910 100644
--- a/Downstream/Downstream Debug.launch
+++ b/Downstream/Downstream Debug.launch
@@ -1,6 +1,6 @@
-
+
@@ -61,6 +61,6 @@
-
+
diff --git a/Downstream/Downstream Release.launch b/Downstream/Downstream Release.launch
new file mode 100644
index 0000000..2eb546d
--- /dev/null
+++ b/Downstream/Downstream Release.launch
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
index 22ed0db..0ff780e 100644
--- a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
+++ b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
@@ -451,7 +451,7 @@ void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd)
USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
uint32_t i = 0 , interrupt = 0;
- /* Ensure that we are in device mode */
+ /* Ensure that we are in host mode */
if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST)
{
/* Avoid spurious interrupt */
@@ -821,7 +821,6 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_XFRC)
{
-
if (hhcd->Init.dma_enable)
{
hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].xfer_len - \
@@ -862,10 +861,11 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
else if (hhcd->hc[chnum].state == HC_STALL)
{
hhcd->hc[chnum].urb_state = URB_STALL;
- }
+ }
else if((hhcd->hc[chnum].state == HC_XACTERR) ||
- (hhcd->hc[chnum].state == HC_DATATGLERR))
+ (hhcd->hc[chnum].state == HC_DATATGLERR) ||
+ (hhcd->hc[chnum].state == HC_NAK))
{
if(hhcd->hc[chnum].ErrCnt++ > 3)
{
@@ -897,20 +897,21 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
}
else if ((USBx_HC(chnum)->HCINT) & USB_OTG_HCINT_NAK)
{
- if(hhcd->hc[chnum].ep_type == EP_TYPE_INTR)
- {
+ hhcd->hc[chnum].ErrCnt = 0;
+// if(hhcd->hc[chnum].ep_type == EP_TYPE_INTR)
+// {
__HAL_HCD_UNMASK_HALT_HC_INT(chnum);
USB_HC_Halt(hhcd->Instance, chnum);
- }
- else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL)||
- (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
- {
- /* re-activate the channel */
- tmpreg = USBx_HC(chnum)->HCCHAR;
- tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
- tmpreg |= USB_OTG_HCCHAR_CHENA;
- USBx_HC(chnum)->HCCHAR = tmpreg;
- }
+// }
+// else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL)||
+// (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+// {
+// /* re-activate the channel */
+// tmpreg = USBx_HC(chnum)->HCCHAR;
+// tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
+// tmpreg |= USB_OTG_HCCHAR_CHENA;
+// USBx_HC(chnum)->HCCHAR = tmpreg;
+// }
hhcd->hc[chnum].state = HC_NAK;
__HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK);
}
@@ -1020,10 +1021,10 @@ static void HCD_HC_OUT_IRQHandler (HCD_HandleTypeDef *hhcd, uint8_t chnum)
hhcd->hc[chnum].toggle_out ^= 1;
}
}
- else if (hhcd->hc[chnum].state == HC_NAK)
+ else if (hhcd->hc[chnum].state == HC_NAK)
{
hhcd->hc[chnum].urb_state = URB_NOTREADY;
- }
+ }
else if (hhcd->hc[chnum].state == HC_NYET)
{
diff --git a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
index b8ee9e0..b5f3405 100644
--- a/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
+++ b/Downstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
@@ -102,7 +102,7 @@
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
-#define SPI_TIMEOUT_VALUE 10
+#define SPI_TIMEOUT_VALUE 2
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
@@ -1933,6 +1933,8 @@ static void SPI_RxISR(SPI_HandleTypeDef *hspi)
*/
static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
{
+ __IO uint16_t tmpreg;
+
SPI_HandleTypeDef* hspi = ( SPI_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
/* DMA Normal Mode */
@@ -1963,7 +1965,7 @@ static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
__HAL_SPI_CLEAR_OVRFLAG(hspi);
}
- /* Check if Errors has been detected during transfer */
+ /* Check if Errors has been detected during transfer */
if(hspi->ErrorCode != HAL_SPI_ERROR_NONE)
{
HAL_SPI_ErrorCallback(hspi);
@@ -2066,14 +2068,14 @@ static void SPI_DMAEndTransmitReceive(SPI_HandleTypeDef *hspi)
if(hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
{
/* Check if CRC is done on going (RXNE flag set) */
- if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
- {
+// if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
+// {
/* Wait until RXNE flag is set to send data */
if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, SPI_TIMEOUT_VALUE) != HAL_OK)
{
hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
}
- }
+// }
/* Read CRC */
tmpreg = hspi->Instance->DR;
UNUSED(tmpreg);
@@ -2097,7 +2099,10 @@ static void SPI_DMAEndTransmitReceive(SPI_HandleTypeDef *hspi)
/* Wait until Busy flag is reset before disabling SPI */
if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_BSY, SET, SPI_TIMEOUT_VALUE) != HAL_OK)
{
- hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
+ //The Busy flag occasionally fails to reset within timeout. No idea why.
+ //But in this case WaitOnFlagUntilTimeout disables the SPI for us,
+ //so we can ignore the error and carry on.
+ //hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
}
/* Disable Rx DMA Request */
@@ -2121,7 +2126,7 @@ static void SPI_DMATransmitReceiveCplt(DMA_HandleTypeDef *hdma)
SPI_DMAEndTransmitReceive(hspi);
hspi->State = HAL_SPI_STATE_READY;
-
+
/* Check if Errors has been detected during transfer */
if(hspi->ErrorCode != HAL_SPI_ERROR_NONE)
{
diff --git a/Downstream/Inc/board_config.h b/Downstream/Inc/board_config.h
index c319324..62762f9 100644
--- a/Downstream/Inc/board_config.h
+++ b/Downstream/Inc/board_config.h
@@ -40,10 +40,10 @@
#define FAULT_LED_OFF STAT_LED_OFF
-//#define SPI_DMA_ACTIVE_PIN GPIO_PIN_5 /////////Temporary indicator of SPI & DMA activity
-//#define SPI_DMA_ACTIVE_PORT GPIOB
-//#define SPI_DMA_ACTIVE_ON SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_LOW)
-//#define SPI_DMA_ACTIVE_OFF SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_HIGH)
+#define SPI_INT_ACTIVE_PIN GPIO_PIN_2 /////////Temporary indicator of SPI activity
+#define SPI_INT_ACTIVE_PORT GPIOA
+#define SPI_INT_ACTIVE_ON SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_HIGH)
+#define SPI_INT_ACTIVE_OFF SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_LOW)
//#define SPI1_NSS_PIN GPIO_PIN_4
//#define SPI1_NSS_PORT GPIOA
diff --git a/Downstream/Inc/downstream_msc.h b/Downstream/Inc/downstream_msc.h
index 168e163..dffe63e 100644
--- a/Downstream/Inc/downstream_msc.h
+++ b/Downstream/Inc/downstream_msc.h
@@ -17,13 +17,13 @@
typedef void (*DownstreamMSCCallbackPacketTypeDef)(DownstreamPacketTypeDef* receivedPacket,
- uint16_t dataLength);
+ uint16_t dataLength8);
HAL_StatusTypeDef Downstream_MSC_ApproveConnectedDevice(void);
void Downstream_MSC_PacketProcessor(DownstreamPacketTypeDef* receivedPacket);
HAL_StatusTypeDef Downstream_MSC_PutStreamDataPacket(DownstreamPacketTypeDef* packetToSend,
- uint32_t dataLength);
+ uint32_t dataLength8);
HAL_StatusTypeDef Downstream_MSC_GetStreamDataPacket(DownstreamMSCCallbackPacketTypeDef callback);
diff --git a/Downstream/Inc/downstream_spi.h b/Downstream/Inc/downstream_spi.h
index 9542e4a..42b0cfc 100644
--- a/Downstream/Inc/downstream_spi.h
+++ b/Downstream/Inc/downstream_spi.h
@@ -12,16 +12,19 @@
#include "usbh_config.h"
-#define DOWNSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
-#define DOWNSTREAM_PACKET_LEN (DOWNSTREAM_PACKET_HEADER_LEN + USBH_MAX_DATA_BUFFER)
-#define DOWNSTREAM_PACKET_LEN_MIN (DOWNSTREAM_PACKET_HEADER_LEN)
+#define DOWNSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
+#define DOWNSTREAM_PACKET_LEN (DOWNSTREAM_PACKET_HEADER_LEN + USBH_MAX_DATA_BUFFER)
+#define DOWNSTREAM_PACKET_LEN_MIN (DOWNSTREAM_PACKET_HEADER_LEN)
+#define DOWNSTREAM_PACKET_HEADER_LEN_16 (DOWNSTREAM_PACKET_HEADER_LEN / 2)
+#define DOWNSTREAM_PACKET_LEN_16 (DOWNSTREAM_PACKET_LEN / 2)
+#define DOWNSTREAM_PACKET_LEN_MIN_16 (DOWNSTREAM_PACKET_LEN_MIN / 2)
#define DOWNSTREAM_SPI_FREAKOUT \
do { \
LED_Fault_SetBlinkRate(LED_FAST_BLINK_RATE); \
- Downstream_PacketProcessor_SetErrorState(); \
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_ERROR; \
+ /*Downstream_PacketProcessor_SetErrorState();*/ \
+ /*DownstreamInterfaceState = DOWNSTREAM_INTERFACE_ERROR;*/ \
while (1); \
} while (0);
@@ -50,11 +53,10 @@ PacketBusyTypeDef;
typedef struct
{
PacketBusyTypeDef Busy; //Everything after Busy should be word-aligned
- uint16_t Length __ALIGN_END; //Packet length includes CommandClass, Command, and Data
+ uint16_t Length16 __ALIGN_END; //Packet length includes CommandClass, Command, and Data
uint8_t CommandClass;
uint8_t Command;
uint8_t Data[USBH_MAX_DATA_BUFFER]; //Should (must?) be word-aligned, for USB copy routine
- uint8_t RxCrc;
}
DownstreamPacketTypeDef;
@@ -70,6 +72,7 @@ DownstreamPacketTypeDef* Downstream_GetFreePacketImmediately(void);
void Downstream_ReleasePacket(DownstreamPacketTypeDef* packetToRelease);
HAL_StatusTypeDef Downstream_ReceivePacket(SpiPacketReceivedCallbackTypeDef callback);
HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWrite);
+void Downstream_SPIProcess(void);
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
diff --git a/Downstream/Inc/interrupts.h b/Downstream/Inc/interrupts.h
index 3d94804..6771194 100644
--- a/Downstream/Inc/interrupts.h
+++ b/Downstream/Inc/interrupts.h
@@ -44,8 +44,9 @@
/* Exported constants --------------------------------------------------------*/
#define INT_PRIORITY_SYSTICK 2
-#define INT_PRIORITY_SPI_DMA 10 //SPI interacts heavily with USB_OTG,
-#define INT_PRIORITY_OTG_FS 10 //so set them at the same priority.
+//#define INT_PRIORITY_SPI_DMA 10
+#define INT_PRIORITY_SPI 8 //Interrupt-based SPI must be highest priority!
+#define INT_PRIORITY_OTG_FS 10
/* Exported macro ------------------------------------------------------------*/
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h
index 6164a86..f557a2d 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h
@@ -89,9 +89,11 @@ BOT_CSWStatusTypeDef;
typedef enum {
BOT_SEND_CBW = 1,
BOT_SEND_CBW_WAIT,
- BOT_DATA_IN,
+ BOT_DATA_IN,
+ BOT_DATA_IN_WAIT_FREE_PACKET,
BOT_DATA_IN_WAIT,
BOT_DATA_OUT,
+ BOT_DATA_OUT_WAIT_RECEIVE_PACKET,
BOT_DATA_OUT_WAIT,
BOT_RECEIVE_CSW,
BOT_RECEIVE_CSW_WAIT,
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
index e805fbd..d837ccb 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc.c
@@ -477,19 +477,13 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
default:
break;
}
-
-#if (USBH_USE_OS == 1)
- osMessagePut ( phost->os_event, USBH_CLASS_EVENT, 0);
-#endif
}
else
{
- MSC_Handle->current_lun = 0;
- MSC_Handle->state = MSC_IDLE;
-#if (USBH_USE_OS == 1)
- osMessagePut ( phost->os_event, USBH_CLASS_EVENT, 0);
-#endif
- phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
+ MSC_Handle->current_lun = 0;
+ MSC_Handle->state = MSC_IDLE;
+
+ phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
}
break;
@@ -499,10 +493,6 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
case MSC_READ:
case MSC_WRITE:
- //USBH_MSC_RdWrProcess interacts heavily with downstream SPI code.
- //So to protect against preemption we elevate our priority here.
- __set_BASEPRI(INT_PRIORITY_OTG_FS);
-
error = USBH_MSC_RdWrProcess(phost, MSC_Handle->rw_lun);
if(((int32_t)(phost->Timer - MSC_Handle->timeout) > 0) || (phost->device.is_connected == 0))
{
@@ -518,8 +508,6 @@ static USBH_StatusTypeDef USBH_MSC_Process(USBH_HandleTypeDef *phost)
MSC_Handle->RdWrCompleteCallback = NULL;
}
}
-
- __set_BASEPRI(0);
break;
default:
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
index 29576f8..13b667b 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_bot.c
@@ -177,10 +177,10 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
break;
case BOT_DATA_IN:
- MSC_Handle->hbot.state = BOT_DATA_IN_WAIT;
if (MSC_Handle->hbot.pbuf != NULL)
{
//Simple single-buffer operation
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT;
MSC_Handle->hbot.this_URB_size = MIN(MSC_Handle->hbot.cbw.field.DataTransferLength,
MSC_Handle->InEpSize);
USBH_BulkReceiveData (phost,
@@ -191,6 +191,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
else
{
//Asynchronous multi-packet operation: get first packet
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT_FREE_PACKET;
Callback_MSC_phost = phost;
if (Downstream_GetFreePacket(USBH_MSC_BOT_Read_Multipacket_FreePacketCallback) != HAL_OK)
{
@@ -199,11 +200,19 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
}
break;
+ case BOT_DATA_IN_WAIT_FREE_PACKET:
+ break;
+
case BOT_DATA_IN_WAIT:
URB_Status = USBH_LL_GetURBState(phost, MSC_Handle->InPipe);
if (URB_Status == USBH_URB_DONE)
{
+ if (USBH_LL_GetLastXferSize(phost, MSC_Handle->InPipe) != MSC_Handle->hbot.this_URB_size)
+ {
+ while(1);
+ }
+
MSC_Handle->hbot.cbw.field.DataTransferLength -= MSC_Handle->hbot.this_URB_size;
if (MSC_Handle->hbot.pbuf != NULL)
@@ -236,6 +245,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
MSC_Handle->hbot.state = BOT_ERROR_IN;
break;
}
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT_FREE_PACKET;
if (Downstream_GetFreePacket(USBH_MSC_BOT_Read_Multipacket_FreePacketCallback) != HAL_OK)
{
MSC_Handle->hbot.state = BOT_ERROR_IN;
@@ -251,7 +261,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
}
}
- else if(URB_Status == USBH_URB_STALL)
+ else if (URB_Status == USBH_URB_STALL)
{
/* This is Data IN Stage STALL Condition */
MSC_Handle->hbot.state = BOT_ERROR_IN;
@@ -266,10 +276,10 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
break;
case BOT_DATA_OUT:
- MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT;
if (MSC_Handle->hbot.pbuf != NULL)
{
//Simple single-buffer operation
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT;
MSC_Handle->hbot.this_URB_size = MIN(MSC_Handle->hbot.cbw.field.DataTransferLength,
MSC_Handle->OutEpSize);
USBH_BulkSendData (phost,
@@ -281,6 +291,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
else
{
//Asynchronous multi-packet operation: get first packet
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT_RECEIVE_PACKET;
Callback_MSC_phost = phost;
if (Downstream_MSC_GetStreamDataPacket(USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback) != HAL_OK)
{
@@ -288,6 +299,9 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
}
}
break;
+
+ case BOT_DATA_OUT_WAIT_RECEIVE_PACKET:
+ break;
case BOT_DATA_OUT_WAIT:
URB_Status = USBH_LL_GetURBState(phost, MSC_Handle->OutPipe);
@@ -309,6 +323,7 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
if (MSC_Handle->hbot.cbw.field.DataTransferLength == 0)
{
//End of transmission
+ Downstream_ReleasePacket(MSC_Handle->hbot.bot_packet);
MSC_Handle->hbot.state = BOT_RECEIVE_CSW;
}
else
@@ -317,9 +332,11 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
if (MSC_Handle->hbot.bot_packet_bytes_remaining == 0)
{
//Get next bot_packet
+ Downstream_ReleasePacket(MSC_Handle->hbot.bot_packet);
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT_RECEIVE_PACKET;
if (Downstream_MSC_GetStreamDataPacket(USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback) != HAL_OK)
{
- MSC_Handle->hbot.state = BOT_ERROR_OUT;
+ MSC_Handle->hbot.state = BOT_ERROR_OUT;
}
}
else
@@ -333,13 +350,20 @@ USBH_StatusTypeDef USBH_MSC_BOT_Process (USBH_HandleTypeDef *phost, uint8_t lun)
else if(URB_Status == USBH_URB_NOTREADY)
{
- /* Resend same data */
- MSC_Handle->hbot.state = BOT_DATA_OUT;
+ /* Resend same data */
+ if (MSC_Handle->hbot.pbuf != NULL)
+ {
+ MSC_Handle->hbot.state = BOT_DATA_OUT;
+ }
+ else
+ {
+ USBH_MSC_BOT_Write_Multipacket_PrepareURB(phost);
+ }
}
else if(URB_Status == USBH_URB_STALL)
{
- MSC_Handle->hbot.state = BOT_ERROR_OUT;
+ MSC_Handle->hbot.state = BOT_ERROR_OUT;
/* Refer to USB Mass-Storage Class : BOT (www.usb.org)
6.7.3 Ho - Host expects to send data to the device
@@ -437,12 +461,13 @@ void USBH_MSC_BOT_Read_Multipacket_FreePacketCallback(DownstreamPacketTypeDef* f
{
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) Callback_MSC_phost->pActiveClass->pData;
- if (MSC_Handle->hbot.state != BOT_DATA_IN_WAIT)
+ if (MSC_Handle->hbot.state != BOT_DATA_IN_WAIT_FREE_PACKET)
{
Downstream_PacketProcessor_FreakOut();
return;
}
+ MSC_Handle->hbot.state = BOT_DATA_IN_WAIT;
MSC_Handle->hbot.bot_packet = freePacket;
MSC_Handle->hbot.bot_packet_pbuf = freePacket->Data;
MSC_Handle->hbot.bot_packet_bytes_remaining = BOT_PAGE_LENGTH;
@@ -452,17 +477,19 @@ void USBH_MSC_BOT_Read_Multipacket_FreePacketCallback(DownstreamPacketTypeDef* f
void USBH_MSC_BOT_Read_Multipacket_PrepareURB(USBH_HandleTypeDef *phost)
{
+ uint32_t temp_URB_size;
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) phost->pActiveClass->pData;
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
+ temp_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
+ if (temp_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
+ temp_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
}
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->InEpSize)
+ if (temp_URB_size > MSC_Handle->InEpSize)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->InEpSize;
+ temp_URB_size = MSC_Handle->InEpSize;
}
+ MSC_Handle->hbot.this_URB_size = (uint16_t)temp_URB_size;
USBH_BulkReceiveData(phost,
MSC_Handle->hbot.bot_packet_pbuf,
@@ -476,12 +503,13 @@ void USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback(DownstreamPacketTypeDe
{
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) Callback_MSC_phost->pActiveClass->pData;
- if (MSC_Handle->hbot.state != BOT_DATA_OUT_WAIT)
+ if (MSC_Handle->hbot.state != BOT_DATA_OUT_WAIT_RECEIVE_PACKET)
{
Downstream_PacketProcessor_FreakOut();
return;
}
+ MSC_Handle->hbot.state = BOT_DATA_OUT_WAIT;
MSC_Handle->hbot.bot_packet = receivedPacket;
MSC_Handle->hbot.bot_packet_pbuf = receivedPacket->Data;
MSC_Handle->hbot.bot_packet_bytes_remaining = dataLength;
@@ -491,17 +519,20 @@ void USBH_MSC_BOT_Write_Multipacket_ReceivePacketCallback(DownstreamPacketTypeDe
void USBH_MSC_BOT_Write_Multipacket_PrepareURB(USBH_HandleTypeDef *phost)
{
+ uint32_t temp_URB_size;
MSC_HandleTypeDef *MSC_Handle = (MSC_HandleTypeDef *) phost->pActiveClass->pData;
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
+ temp_URB_size = MSC_Handle->hbot.cbw.field.DataTransferLength;
+ if (temp_URB_size > MSC_Handle->hbot.bot_packet_bytes_remaining)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
+ temp_URB_size = MSC_Handle->hbot.bot_packet_bytes_remaining;
}
- if (MSC_Handle->hbot.this_URB_size > MSC_Handle->OutEpSize)
+ if (temp_URB_size > MSC_Handle->OutEpSize)
{
- MSC_Handle->hbot.this_URB_size = MSC_Handle->OutEpSize;
+ temp_URB_size = MSC_Handle->OutEpSize;
}
+ MSC_Handle->hbot.this_URB_size = (uint16_t)temp_URB_size;
+
USBH_BulkSendData (phost,
MSC_Handle->hbot.bot_packet_pbuf,
MSC_Handle->hbot.this_URB_size,
diff --git a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
index ac7ed08..db0c9cc 100644
--- a/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
+++ b/Downstream/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Src/usbh_msc_scsi.c
@@ -387,9 +387,8 @@ USBH_StatusTypeDef USBH_MSC_SCSI_Read(USBH_HandleTypeDef *phost,
switch(MSC_Handle->hbot.cmd_state)
{
- case BOT_CMD_SEND:
-
- /*Prepare the CBW and relevent field*/
+ case BOT_CMD_SEND:
+ /*Prepare the CBW and relevant fields*/
MSC_Handle->hbot.cbw.field.DataTransferLength = length * MSC_Handle->unit[lun].capacity.block_size;;
MSC_Handle->hbot.cbw.field.Flags = USB_EP_DIR_IN;
MSC_Handle->hbot.cbw.field.CBLength = CBW_LENGTH;
diff --git a/Downstream/Src/downstream_msc.c b/Downstream/Src/downstream_msc.c
index a73671d..e0a402a 100644
--- a/Downstream/Src/downstream_msc.c
+++ b/Downstream/Src/downstream_msc.c
@@ -28,7 +28,7 @@ void Downstream_MSC_PacketProcessor_GetCapacity(DownstreamPacketTypeDef* receive
void Downstream_MSC_PacketProcessor_BeginRead(DownstreamPacketTypeDef* receivedPacket);
void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* receivedPacket);
void Downstream_MSC_PacketProcessor_RdWrCompleteCallback(USBH_StatusTypeDef result);
-void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* replyPacket);
+void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* receivedPacket);
//High-level checks on the connected device. We don't want some weirdly
@@ -94,7 +94,7 @@ void Downstream_MSC_PacketProcessor_TestUnitReady(DownstreamPacketTypeDef* recei
{
receivedPacket->Data[0] = HAL_ERROR;
}
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
Downstream_PacketProcessor_ClassReply(receivedPacket);
}
@@ -103,7 +103,7 @@ void Downstream_MSC_PacketProcessor_GetCapacity(DownstreamPacketTypeDef* receive
{
MSC_HandleTypeDef* MSC_Handle = (MSC_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 8;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + (8 / 2);
*(uint32_t*)&(receivedPacket->Data[0]) = MSC_Handle->unit[MSC_FIXED_LUN].capacity.block_nbr;
*(uint32_t*)&(receivedPacket->Data[4]) = (uint32_t)MSC_Handle->unit[MSC_FIXED_LUN].capacity.block_size;
Downstream_PacketProcessor_ClassReply(receivedPacket);
@@ -118,7 +118,7 @@ void Downstream_MSC_PacketProcessor_BeginRead(DownstreamPacketTypeDef* receivedP
uint64_t readByteCount;
MSC_HandleTypeDef* MSC_Handle = (MSC_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
- if (receivedPacket->Length != (DOWNSTREAM_PACKET_HEADER_LEN + (4 * 3)))
+ if (receivedPacket->Length16 != (DOWNSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2)))
{
Downstream_PacketProcessor_FreakOut();
return;
@@ -136,7 +136,7 @@ void Downstream_MSC_PacketProcessor_BeginRead(DownstreamPacketTypeDef* receivedP
}
receivedPacket->Data[0] = HAL_ERROR;
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
if (USBH_MSC_UnitIsReady(&hUsbHostFS, MSC_FIXED_LUN))
{
if (USBH_MSC_Read(&hUsbHostFS,
@@ -171,7 +171,7 @@ void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* received
uint64_t writeByteCount;
MSC_HandleTypeDef* MSC_Handle = (MSC_HandleTypeDef*)hUsbHostFS.pActiveClass->pData;
- if (receivedPacket->Length != (DOWNSTREAM_PACKET_HEADER_LEN + (4 * 3)))
+ if (receivedPacket->Length16 != (DOWNSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2)))
{
Downstream_PacketProcessor_FreakOut();
return;
@@ -193,7 +193,7 @@ void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* received
ByteCount = (uint32_t)writeByteCount;
receivedPacket->Data[0] = HAL_ERROR;
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
//Our host stack has no way to detect if write-protection is enabled.
//So currently we can't return HAL_BUSY to Upstream in this situation.
@@ -214,11 +214,16 @@ void Downstream_MSC_PacketProcessor_BeginWrite(DownstreamPacketTypeDef* received
//Used by USB MSC host driver
HAL_StatusTypeDef Downstream_MSC_PutStreamDataPacket(DownstreamPacketTypeDef* packetToSend,
- uint32_t dataLength)
+ uint32_t dataLength8)
{
- packetToSend->Length = dataLength + DOWNSTREAM_PACKET_HEADER_LEN;
+ if ((dataLength8 % 2) != 0)
+ {
+ return HAL_ERROR;
+ }
+
+ packetToSend->Length16 = (dataLength8 / 2) + DOWNSTREAM_PACKET_HEADER_LEN_16;
packetToSend->CommandClass = COMMAND_CLASS_MASS_STORAGE | COMMAND_CLASS_DATA_FLAG;
- packetToSend->Command = COMMAND_MSC_BEGIN_WRITE;
+ packetToSend->Command = COMMAND_MSC_BEGIN_READ;
return Downstream_TransmitPacket(packetToSend);
}
@@ -244,28 +249,30 @@ HAL_StatusTypeDef Downstream_MSC_GetStreamDataPacket(DownstreamMSCCallbackPacket
}
-void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* replyPacket)
+void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* receivedPacket)
{
- uint16_t dataLength;
+ uint16_t dataLength8;
ReadStreamBusy = 0;
if (GetStreamDataCallback == NULL)
{
- ReadStreamPacket = replyPacket; //We used up our callback already, so save this one for later.
+ ReadStreamPacket = receivedPacket; //We used up our callback already, so save this one for later.
return;
}
- if (((replyPacket->CommandClass & COMMAND_CLASS_DATA_FLAG) == 0) || //Any incoming 'command' (as opposed to incoming 'data') is an automatic fail here
- (replyPacket->Length <= DOWNSTREAM_PACKET_HEADER_LEN) || //Should be at least one data byte in the packet.
- (replyPacket->Length > ByteCount))
+ dataLength8 = (receivedPacket->Length16 - DOWNSTREAM_PACKET_HEADER_LEN_16) * 2;
+
+ if ((receivedPacket->CommandClass != (COMMAND_CLASS_MASS_STORAGE | COMMAND_CLASS_DATA_FLAG)) || //Must be MSC command with data flag set
+ (receivedPacket->Command != COMMAND_MSC_BEGIN_WRITE) || //Must be write command
+ (receivedPacket->Length16 <= DOWNSTREAM_PACKET_HEADER_LEN_16) || //Should be at least one data byte in the packet.
+ (dataLength8 > ByteCount))
{
Downstream_PacketProcessor_FreakOut();
return;
}
- dataLength = replyPacket->Length - DOWNSTREAM_PACKET_HEADER_LEN;
- ByteCount -= dataLength;
- GetStreamDataCallback(replyPacket, dataLength); //usb_msc_scsi will use this packet, so don't release now
+ ByteCount -= dataLength8;
+ GetStreamDataCallback(receivedPacket, dataLength8); //usb_msc_scsi will use this packet, so don't release now
if (ByteCount > 0)
{
Downstream_MSC_GetStreamDataPacket(NULL); //Try to get the next packet now, before USB asks for it
@@ -273,3 +280,4 @@ void Downstream_MSC_GetStreamDataPacketCallback(DownstreamPacketTypeDef* replyPa
}
+
diff --git a/Downstream/Src/downstream_spi.c b/Downstream/Src/downstream_spi.c
index c330b3c..a1db17f 100644
--- a/Downstream/Src/downstream_spi.c
+++ b/Downstream/Src/downstream_spi.c
@@ -23,6 +23,8 @@ InterfaceStateTypeDef DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
FreePacketCallbackTypeDef PendingFreePacketCallback = NULL; //Indicates someone is waiting for a packet buffer to become available
SpiPacketReceivedCallbackTypeDef ReceivePacketCallback = NULL; //Indicates someone is waiting for a received packet
+uint32_t TemporaryIncomingPacketLength = 0;
+uint8_t SpiInterruptCompleted = 0;
HAL_StatusTypeDef Downstream_CheckPreparePacketReception(void);
@@ -38,7 +40,7 @@ void Downstream_InitSPI(void)
Hspi1.Instance = SPI1;
Hspi1.Init.Mode = SPI_MODE_SLAVE;
Hspi1.Init.Direction = SPI_DIRECTION_2LINES;
- Hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+ Hspi1.Init.DataSize = SPI_DATASIZE_16BIT; //SPI_DATASIZE_8BIT;
Hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
Hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
Hspi1.Init.NSS = SPI_NSS_HARD_INPUT;
@@ -116,7 +118,6 @@ void Downstream_ReleasePacket(DownstreamPacketTypeDef* packetToRelease)
}
-
//Used by Downstream state machine and USB classes.
//Ok to call when idle or transmitting.
//Not OK to call when receiving or awaiting reception.
@@ -173,9 +174,10 @@ void Downstream_PrepareReceivePacketSize(DownstreamPacketTypeDef* freePacket)
CurrentWorkingPacket = freePacket;
//CurrentWorkingPacket->Length = 0;
//if (HAL_SPI_TransmitReceive_DMA(... ????
- if (HAL_SPI_Receive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (2 + 1)) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1, //////////////
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&CurrentWorkingPacket->Length16, //////////////
+ 2) != HAL_OK) //We only need to read one word, but the peripheral library freaks out...
{
DOWNSTREAM_SPI_FREAKOUT;
return;
@@ -198,49 +200,49 @@ void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
return;
}
- if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_SIZE_WAIT)
- {
- if ((CurrentWorkingPacket->Length < DOWNSTREAM_PACKET_LEN_MIN) ||
- (CurrentWorkingPacket->Length > DOWNSTREAM_PACKET_LEN))
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_RX_PACKET_WAIT;
- if ((HAL_SPI_Receive_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- CurrentWorkingPacket->Length + 1)) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- UPSTREAM_TX_REQUEST_ASSERT;
- return;
- }
-
- if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_PACKET_WAIT)
- {
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback == NULL)
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- //Packet processor may want to receive another packet immediately,
- //so clear ReceivePacketCallback before the call.
- //It is the callback's responsibility to release the packet buffer we are passing to it!
- tempPacketCallback = ReceivePacketCallback;
- ReceivePacketCallback = NULL;
- tempPacketCallback(CurrentWorkingPacket);
- return;
- }
+// if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_SIZE_WAIT)
+// {
+// if ((CurrentWorkingPacket->Length < DOWNSTREAM_PACKET_LEN_MIN) ||
+// (CurrentWorkingPacket->Length > DOWNSTREAM_PACKET_LEN))
+// {
+// DOWNSTREAM_SPI_FREAKOUT;
+// return;
+// }
+// DownstreamInterfaceState = DOWNSTREAM_INTERFACE_RX_PACKET_WAIT;
+// if (HAL_SPI_TransmitReceive_DMA(&Hspi1, ////////////////
+// &CurrentWorkingPacket->CommandClass,
+// &CurrentWorkingPacket->CommandClass, ////////////////
+// CurrentWorkingPacket->Length) != HAL_OK)
+// {
+// DOWNSTREAM_SPI_FREAKOUT;
+// return;
+// }
+// UPSTREAM_TX_REQUEST_ASSERT;
+// return;
+// }
+//
+// if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_PACKET_WAIT)
+// {
+// DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
+// if (ReceivePacketCallback == NULL)
+// {
+// DOWNSTREAM_SPI_FREAKOUT;
+// return;
+// }
+// //Packet processor may want to receive another packet immediately,
+// //so clear ReceivePacketCallback before the call.
+// //It is the callback's responsibility to release the packet buffer we are passing to it!
+// tempPacketCallback = ReceivePacketCallback;
+// ReceivePacketCallback = NULL;
+// tempPacketCallback(CurrentWorkingPacket);
+// return;
+// }
//case default:
DOWNSTREAM_SPI_FREAKOUT;
}
-
//Used by Downstream state machine (and USB classes?).
//Call when idle or transmitting.
//It doesn't make sense to call when receiving or awaiting reception.
@@ -259,8 +261,8 @@ HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWri
return HAL_ERROR;
}
if ((packetToWrite->Busy != BUSY) ||
- (packetToWrite->Length < DOWNSTREAM_PACKET_LEN_MIN) ||
- (packetToWrite->Length > DOWNSTREAM_PACKET_LEN))
+ (packetToWrite->Length16 < DOWNSTREAM_PACKET_LEN_MIN_16) ||
+ (packetToWrite->Length16 > DOWNSTREAM_PACKET_LEN_16))
{
DOWNSTREAM_SPI_FREAKOUT;
return HAL_ERROR;
@@ -281,10 +283,13 @@ HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWri
case DOWNSTREAM_INTERFACE_IDLE:
DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
CurrentWorkingPacket = packetToWrite;
- if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (uint8_t*)&CurrentWorkingPacket->Length,
- 2 + 1) != HAL_OK) //"When the CRC feature is enabled the pRxData Length must be Size + 1"
+
+ //if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ //if (HAL_SPI_Transmit_IT(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
{
DOWNSTREAM_SPI_FREAKOUT;
return HAL_ERROR;
@@ -301,74 +306,101 @@ HAL_StatusTypeDef Downstream_TransmitPacket(DownstreamPacketTypeDef* packetToWri
}
-//Called at the end of the SPI TxRx DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-//We use TxRx to send our reply packet to check if Upstream was trying
-//to send us a packet at the same time.
-void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
+
+//Do stuff at main loop priority after SPI transaction is complete
+void Downstream_SPIProcess(void)
{
- UPSTREAM_TX_REQUEST_DEASSERT;
+ SpiPacketReceivedCallbackTypeDef tempPacketCallback;
- if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
+ if (SpiInterruptCompleted == 0)
{
return;
}
- if (DownstreamInterfaceState != DOWNSTREAM_INTERFACE_TX_SIZE_WAIT)
+ SpiInterruptCompleted = 0;
+ UPSTREAM_TX_REQUEST_DEASSERT;
+
+ if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
{
- DOWNSTREAM_SPI_FREAKOUT;
return;
}
- if (CurrentWorkingPacket->Length != 0)
+ //Finished transmitting packet size
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_TX_SIZE_WAIT)
{
- //Currently we just freak out if Upstream sends us an unexpected command.
- //Theoretically we could reset our downstream state machine and accept the new command...
- DOWNSTREAM_SPI_FREAKOUT;
+ if (TemporaryIncomingPacketLength != 0)
+ {
+ //Currently we just freak out if Upstream sends us an unexpected command.
+ //Theoretically we could reset our downstream state machine and accept the new command...
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_PACKET_WAIT;
+ //if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ //if (HAL_SPI_Transmit_IT(&Hspi1,
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass,
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ UPSTREAM_TX_REQUEST_ASSERT;
return;
}
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_PACKET_WAIT;
- if ((HAL_SPI_Transmit_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- CurrentWorkingPacket->Length)) != HAL_OK)
+ //Finished transmitting packet body
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_TX_PACKET_WAIT)
{
- DOWNSTREAM_SPI_FREAKOUT;
+ Downstream_ReleasePacket(CurrentWorkingPacket);
+ if (NextTxPacket != NULL)
+ {
+ //NextTxPacket has already passed the checks in Downstream_TransmitPacket.
+ //So we just need to pass it to HAL_SPI_Transmit_DMA.
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
+ CurrentWorkingPacket = NextTxPacket;
+ NextTxPacket = NULL;
+ //if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1,
+ //if (HAL_SPI_Transmit_IT(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ UPSTREAM_TX_REQUEST_ASSERT;
+ return;
+ }
+
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
+ if (ReceivePacketCallback != NULL)
+ {
+ Downstream_CheckPreparePacketReception();
+ }
return;
}
- UPSTREAM_TX_REQUEST_ASSERT;
-}
-//Called at the end of the SPI TX DMA transfer,
-//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
-{
- UPSTREAM_TX_REQUEST_DEASSERT;
- if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
- {
- return;
- }
- if (DownstreamInterfaceState != DOWNSTREAM_INTERFACE_TX_PACKET_WAIT)
- {
- DOWNSTREAM_SPI_FREAKOUT;
- return;
- }
- Downstream_ReleasePacket(CurrentWorkingPacket);
- if (NextTxPacket != NULL)
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_SIZE_WAIT)
{
- //NextTxPacket has already passed the checks in Downstream_TransmitPacket.
- //So we just need to pass it to HAL_SPI_Transmit_DMA.
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
- CurrentWorkingPacket = NextTxPacket;
- NextTxPacket = NULL;
- if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (uint8_t*)&CurrentWorkingPacket->Length,
- 2 + 1) != HAL_OK) //"When the CRC feature is enabled the pRxData Length must be Size + 1"
+ if ((CurrentWorkingPacket->Length16 < DOWNSTREAM_PACKET_LEN_MIN_16) ||
+ (CurrentWorkingPacket->Length16 > DOWNSTREAM_PACKET_LEN_16))
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_RX_PACKET_WAIT;
+ if (HAL_SPI_TransmitReceive_IT(&Hspi1, ////////////////
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass, ////////////////
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
{
DOWNSTREAM_SPI_FREAKOUT;
return;
@@ -377,15 +409,96 @@ void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
return;
}
- DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback != NULL)
+ if (DownstreamInterfaceState == DOWNSTREAM_INTERFACE_RX_PACKET_WAIT)
{
- Downstream_CheckPreparePacketReception();
+ DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
+ if (ReceivePacketCallback == NULL)
+ {
+ DOWNSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ //Packet processor may want to receive another packet immediately,
+ //so clear ReceivePacketCallback before the call.
+ //It is the callback's responsibility to release the packet buffer we are passing to it!
+ tempPacketCallback = ReceivePacketCallback;
+ ReceivePacketCallback = NULL;
+ tempPacketCallback(CurrentWorkingPacket);
+ return;
}
+
+
+
+
+ //case default:
+ DOWNSTREAM_SPI_FREAKOUT;
}
+//Called at the end of the SPI TxRx DMA transfer,
+//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
+//We use TxRx to send our reply packet to check if Upstream was trying
+//to send us a packet at the same time.
+//We also TxRx our packet body because the SPI silicon is buggy at the end of
+//a transmit-only DMA transfer with CRC! (it does not clear RXNE flag on request)
+void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
+{
+ SpiInterruptCompleted = 1;
+}
+
+
+void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
+{
+ SpiInterruptCompleted = 1;
+}
+
+//
+////Called at the end of the SPI TX DMA transfer,
+////at DMA2 interrupt priority. Assume *hspi points to our hspi1.
+//void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
+//{
+// UPSTREAM_TX_REQUEST_DEASSERT;
+//
+// if (DownstreamInterfaceState >= DOWNSTREAM_INTERFACE_ERROR)
+// {
+// return;
+// }
+//
+// if (DownstreamInterfaceState != DOWNSTREAM_INTERFACE_TX_PACKET_WAIT)
+// {
+// DOWNSTREAM_SPI_FREAKOUT;
+// return;
+// }
+//
+// Downstream_ReleasePacket(CurrentWorkingPacket);
+// if (NextTxPacket != NULL)
+// {
+// //NextTxPacket has already passed the checks in Downstream_TransmitPacket.
+// //So we just need to pass it to HAL_SPI_Transmit_DMA.
+// DownstreamInterfaceState = DOWNSTREAM_INTERFACE_TX_SIZE_WAIT;
+// CurrentWorkingPacket = NextTxPacket;
+// NextTxPacket = NULL;
+// if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
+// (uint8_t*)&CurrentWorkingPacket->Length,
+// (uint8_t*)&TemporaryUpstreamPacketLengthStore,
+// 2) != HAL_OK)
+// {
+// DOWNSTREAM_SPI_FREAKOUT;
+// return;
+// }
+// UPSTREAM_TX_REQUEST_ASSERT;
+// return;
+// }
+//
+// DownstreamInterfaceState = DOWNSTREAM_INTERFACE_IDLE;
+// if (ReceivePacketCallback != NULL)
+// {
+// Downstream_CheckPreparePacketReception();
+// }
+//}
+
+
+
//Something bad happened! Possibly CRC error...
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
{
diff --git a/Downstream/Src/downstream_statemachine.c b/Downstream/Src/downstream_statemachine.c
index ab2f1e0..8aa0cbf 100644
--- a/Downstream/Src/downstream_statemachine.c
+++ b/Downstream/Src/downstream_statemachine.c
@@ -13,7 +13,6 @@
#include "usbh_core.h"
#include "usbh_msc.h"
#include "led.h"
-#include "interrupts.h"
@@ -58,7 +57,7 @@ void Downstream_PacketProcessor(DownstreamPacketTypeDef* receivedPacket)
//we need to tell Upstream of the fact (and not freak out).
if (DownstreamState == STATE_DEVICE_NOT_READY)
{
- receivedPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN;
+ receivedPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16;
receivedPacket->CommandClass = COMMAND_CLASS_ERROR;
receivedPacket->Command = COMMAND_ERROR_DEVICE_DISCONNECTED;
Downstream_PacketProcessor_ClassReply(receivedPacket);
@@ -135,7 +134,7 @@ void Downstream_PacketProcessor_Interface(DownstreamPacketTypeDef* receivedPacke
void Downstream_PacketProcessor_Interface_ReplyNotifyDevice(DownstreamPacketTypeDef* replyPacket)
{
- replyPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN + 1;
+ replyPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16 + 1;
replyPacket->CommandClass = COMMAND_CLASS_INTERFACE;
replyPacket->Command = COMMAND_INTERFACE_NOTIFY_DEVICE;
replyPacket->Data[0] = ConfiguredDeviceClass;
@@ -150,7 +149,7 @@ void Downstream_PacketProcessor_Interface_ReplyNotifyDevice(DownstreamPacketType
void Downstream_PacketProcessor_GenericErrorReply(DownstreamPacketTypeDef* replyPacket)
{
- replyPacket->Length = DOWNSTREAM_PACKET_HEADER_LEN;
+ replyPacket->Length16 = DOWNSTREAM_PACKET_HEADER_LEN_16;
replyPacket->CommandClass = COMMAND_CLASS_ERROR;
replyPacket->Command = COMMAND_ERROR_GENERIC;
@@ -168,7 +167,7 @@ void Downstream_PacketProcessor_ClassReply(DownstreamPacketTypeDef* replyPacket)
//This callback receives various event ids from the host stack,
//either at INT_PRIORITY_OTG_FS or from main().
-//We should therefore elevate our execution priority to INT_PRIORITY_OTG_FS where necessary.
+//We therefore require interrupts be disabled when being called from main().
void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
{
InterfaceCommandClassTypeDef newActiveClass = COMMAND_CLASS_INTERFACE;
@@ -185,17 +184,14 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
return;
}
- __set_BASEPRI(INT_PRIORITY_OTG_FS); //Elevate our priority level so we aren't interrupted
-
- //Called from main()
+ //Called from main(). Elevate priority before calling!
if (id == HOST_USER_UNRECOVERED_ERROR)
{
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
- //Called from main()
+ //Called from main(). Elevate priority before calling!
if (id == HOST_USER_CLASS_ACTIVE)
{
switch (phost->pActiveClass->ClassCode)
@@ -214,7 +210,6 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
default:
LED_Fault_SetBlinkRate(LED_SLOW_BLINK_RATE);
DownstreamState = STATE_ERROR;
- __set_BASEPRI(0);
return;
}
@@ -223,7 +218,6 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
if (newActiveClass == COMMAND_CLASS_INTERFACE)
{
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
@@ -233,7 +227,6 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
(ConfiguredDeviceClass != newActiveClass))
{
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
ConfiguredDeviceClass = newActiveClass;
@@ -241,19 +234,16 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id)
if (DownstreamState == STATE_WAIT_DEVICE_READY)
{
Downstream_GetFreePacket(Downstream_PacketProcessor_Interface_ReplyNotifyDevice);
- __set_BASEPRI(0);
return;
}
if (DownstreamState == STATE_DEVICE_NOT_READY)
{
DownstreamState = STATE_DEVICE_READY;
- __set_BASEPRI(0);
return;
}
DOWNSTREAM_STATEMACHINE_FREAKOUT;
- __set_BASEPRI(0);
return;
}
}
diff --git a/Downstream/Src/hal_msp.c b/Downstream/Src/hal_msp.c
index b2db449..5d16165 100644
--- a/Downstream/Src/hal_msp.c
+++ b/Downstream/Src/hal_msp.c
@@ -56,7 +56,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
if(hspi->Instance==SPI1)
{
__SPI1_CLK_ENABLE();
- __DMA2_CLK_ENABLE();
+// __DMA2_CLK_ENABLE();
/**SPI1 GPIO Configuration
PA4 ------> SPI_NSS
@@ -64,50 +64,59 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
- GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
+ GPIO_InitStruct.Pin = GPIO_PIN_4; //NSS is active low so pull up
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; //SCK & data are active high so pull down
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
UPSTREAM_TX_REQUEST_DEASSERT;
GPIO_InitStruct.Pin = UPSTREAM_TX_REQUEST_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(UPSTREAM_TX_REQUEST_PORT, &GPIO_InitStruct);
- /* Peripheral DMA init*/
- hdma_spi1_rx.Instance = DMA2_Stream2;
- hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
- hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_spi1_rx.Init.Mode = DMA_NORMAL;
- hdma_spi1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
- hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- HAL_DMA_Init(&hdma_spi1_rx);
- __HAL_LINKDMA(hspi,hdmarx,hdma_spi1_rx);
-
- hdma_spi1_tx.Instance = DMA2_Stream3;
- hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;
- hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_spi1_tx.Init.Mode = DMA_NORMAL;
- hdma_spi1_tx.Init.Priority = DMA_PRIORITY_MEDIUM;
- hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- HAL_DMA_Init(&hdma_spi1_tx);
- __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);
-
- /* DMA interrupt init */
- HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
- HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
+ //Interrupt-based SPI now!
+ HAL_NVIC_SetPriority(SPI1_IRQn, INT_PRIORITY_SPI, 0);
+ HAL_NVIC_EnableIRQ(SPI1_IRQn);
+
+// /* Peripheral DMA init*/
+// hdma_spi1_rx.Instance = DMA2_Stream2;
+// hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
+// hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+// hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+// hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
+// hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+// hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+// hdma_spi1_rx.Init.Mode = DMA_NORMAL;
+// hdma_spi1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
+// hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+// HAL_DMA_Init(&hdma_spi1_rx);
+// __HAL_LINKDMA(hspi,hdmarx,hdma_spi1_rx);
+//
+// hdma_spi1_tx.Instance = DMA2_Stream3;
+// hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;
+// hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+// hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+// hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
+// hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+// hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+// hdma_spi1_tx.Init.Mode = DMA_NORMAL;
+// hdma_spi1_tx.Init.Priority = DMA_PRIORITY_MEDIUM;
+// hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
+// HAL_DMA_Init(&hdma_spi1_tx);
+// __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);
+//
+// /* DMA interrupt init */
+// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0);
+// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
+// HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0);
+// HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
}
}
@@ -127,8 +136,8 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
/* Peripheral DMA DeInit*/
- HAL_DMA_DeInit(hspi->hdmarx);
- HAL_DMA_DeInit(hspi->hdmatx);
+// HAL_DMA_DeInit(hspi->hdmarx);
+// HAL_DMA_DeInit(hspi->hdmatx);
}
}
diff --git a/Downstream/Src/interrupts.c b/Downstream/Src/interrupts.c
index dc3a99d..6de5e35 100644
--- a/Downstream/Src/interrupts.c
+++ b/Downstream/Src/interrupts.c
@@ -35,12 +35,15 @@
#include "stm32f4xx.h"
#include "interrupts.h"
#include "led.h"
+#include "board_config.h"
/* External variables --------------------------------------------------------*/
extern HCD_HandleTypeDef hhcd_USB_OTG_FS;
-extern DMA_HandleTypeDef hdma_spi1_rx;
-extern DMA_HandleTypeDef hdma_spi1_tx;
+extern SPI_HandleTypeDef Hspi1;
+
+//extern DMA_HandleTypeDef hdma_spi1_rx;
+//extern DMA_HandleTypeDef hdma_spi1_tx;
/******************************************************************************/
/* Cortex-M4 Processor Interruption and Exception Handlers */
@@ -62,22 +65,31 @@ void SysTick_Handler(void)
/* please refer to the startup file (startup_stm32f4xx.s). */
/******************************************************************************/
-/**
-* @brief This function handles DMA2 Stream2 global interrupt.
-*/
-void DMA2_Stream2_IRQHandler(void)
-{
- HAL_DMA_IRQHandler(&hdma_spi1_rx);
-}
+///**
+//* @brief This function handles DMA2 Stream2 global interrupt.
+//*/
+//void DMA2_Stream2_IRQHandler(void)
+//{
+// HAL_DMA_IRQHandler(&hdma_spi1_rx);
+//}
+//
+///**
+//* @brief This function handles DMA2 Stream3 global interrupt.
+//*/
+//void DMA2_Stream3_IRQHandler(void)
+//{
+// HAL_DMA_IRQHandler(&hdma_spi1_tx);
+//}
-/**
-* @brief This function handles DMA2 Stream3 global interrupt.
-*/
-void DMA2_Stream3_IRQHandler(void)
+
+void SPI1_IRQHandler(void)
{
- HAL_DMA_IRQHandler(&hdma_spi1_tx);
+ SPI_INT_ACTIVE_ON;
+ HAL_SPI_IRQHandler(&Hspi1);
+ SPI_INT_ACTIVE_OFF;
}
+
/**
* @brief This function handles USB On The Go FS global interrupt.
*/
diff --git a/Downstream/Src/main.c b/Downstream/Src/main.c
index 57d8e8d..b97587e 100644
--- a/Downstream/Src/main.c
+++ b/Downstream/Src/main.c
@@ -35,10 +35,10 @@
#include "usb_host.h"
#include "board_config.h"
#include "downstream_statemachine.h"
+#include "downstream_spi.h"
#include "led.h"
-
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void GPIO_Init(void);
@@ -63,7 +63,7 @@ int main(void)
while (1)
{
USB_Host_Process();
-
+ Downstream_SPIProcess();
}
}
@@ -158,6 +158,11 @@ void GPIO_Init(void)
STAT_LED_OFF;
GPIO_InitStruct.Pin = STAT_LED_PIN;
HAL_GPIO_Init(STAT_LED_PORT, &GPIO_InitStruct);
+
+ //SPI_INT_ACTIVE indicator
+ GPIO_InitStruct.Pin = SPI_INT_ACTIVE_PIN;
+ HAL_GPIO_Init(SPI_INT_ACTIVE_PORT, &GPIO_InitStruct);
+ SPI_INT_ACTIVE_OFF;
}
diff --git a/Downstream/Src/usb_host.c b/Downstream/Src/usb_host.c
index e3ef322..6e5573f 100644
--- a/Downstream/Src/usb_host.c
+++ b/Downstream/Src/usb_host.c
@@ -42,7 +42,6 @@
USBH_HandleTypeDef hUsbHostFS;
-
/* init function */
void USB_Host_Init(void)
{
@@ -60,7 +59,8 @@ void USB_Host_Init(void)
void USB_Host_Process()
{
/* USB Host Background task */
- USBH_Process(&hUsbHostFS);
+ USBH_Process(&hUsbHostFS);
+
}
diff --git a/Upstream/.cproject b/Upstream/.cproject
index 0983f0b..09f2839 100755
--- a/Upstream/.cproject
+++ b/Upstream/.cproject
@@ -15,7 +15,7 @@
-
+
diff --git a/Upstream/.settings/language.settings.xml b/Upstream/.settings/language.settings.xml
index c8d28e9..07797fa 100755
--- a/Upstream/.settings/language.settings.xml
+++ b/Upstream/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/Upstream/Debug/Upstream.elf b/Upstream/Debug/Upstream.elf
index 98c54d1..d2413b5 100755
Binary files a/Upstream/Debug/Upstream.elf and b/Upstream/Debug/Upstream.elf differ
diff --git a/Upstream/Debug/Upstream.hex b/Upstream/Debug/Upstream.hex
index 3326866..90f6fe1 100644
--- a/Upstream/Debug/Upstream.hex
+++ b/Upstream/Debug/Upstream.hex
@@ -1,1783 +1,2887 @@
:020000040800F2
-:1000000000C00120656B0008B16B0008B16B0008EF
-:10001000B16B0008B16B0008B16B00080000000074
-:10002000000000000000000000000000B16B0008AC
-:10003000B16B000800000000B16B00081106000859
-:10004000B16B0008B16B0008B16B0008B16B000820
-:10005000B16B0008B16B0008B16B0008B16B000810
-:10006000B16B000879060008B16B0008B16B00089D
-:10007000B16B0008B16B0008B16B0008B16B0008F0
-:10008000B16B0008B16B0008B16B0008B16B0008E0
-:10009000B16B0008B16B0008B16B0008B16B0008D0
-:1000A000B16B0008B16B0008B16B0008B16B0008C0
-:1000B000B16B0008B16B0008B16B0008B16B0008B0
-:1000C000B16B0008B16B0008B16B0008B16B0008A0
-:1000D000B16B0008B16B0008B16B0008B16B000890
-:1000E000B16B0008B16B0008B16B0008B16B000880
-:1000F000B16B0008B16B0008B16B0008B16B000870
-:10010000B16B0008B16B0008B16B0008B16B00085F
-:10011000B16B0008B16B0008B16B0008B16B00084F
-:10012000B16B0008B16B00083906000859060008D9
-:10013000B16B00080000000000000000B16B000877
-:10014000B16B0008B16B0008B16B0008190600081C
-:10015000B16B0008B16B0008B16B0008B16B00080F
-:10016000B16B0008B16B0008B16B0008B16B0008FF
-:10017000B16B0008B16B0008000000000000000037
-:10018000B16B0008B16B000812230B800048704768
-:100190002000002004230B80004870471C00002032
-:1001A00010B50A46034C0448214601F0D5F8204614
-:1001B00010BD00BF5C010020446D000810B50A4668
-:1001C000034C0448214601F0C7F8204610BD00BF8B
-:1001D0005C010020586D000810B50A46034C044825
-:1001E000214601F0B9F8204610BD00BF5C01002097
-:1001F0006C6D000810B50A46034C0448214601F016
-:10020000ABF8204610BD00BF5C0100207C6D0008EB
-:1002100010B50A46034C0448214601F09DF82046DB
-:1002200010BD00BF5C010020886D00080368B3F1B9
-:10023000A04F22D130B587B0104B5A6B42F08002EC
-:100240005A635A6C42F480425A644FF4C05301938B
-:10025000022302930024039404940A250595084878
-:1002600001A904F095F843202946224606F0C8FB70
-:10027000432006F0F7FB07B030BD7047003802405E
-:100280000000024008B50146D0F8AC0301F55F71EB
-:1002900001F0BAF808BD00BF08B5C1EBC1039B006F
-:1002A0000344D0F8AC03D3F8E02101F0DBF808BD3B
-:1002B00008B5C1EBC1039B000344D0F8AC03DA6B73
-:1002C00001F000F908BD00BF08B5D0F8AC0301F09B
-:1002D00073F908BD10B50446C3680BB9002100E0EE
-:1002E0000121D4F8AC0301F053F9D4F8AC0301F0C8
-:1002F0002FF910BD10B50446D0F8AC0301F04CF94D
-:100300002268D2F8003E43F00103C2F8003E10BD5F
-:1003100008B50268D2F8003E23F00103C2F8003E9F
-:10032000D0F8AC0301F042F908BD00BF08B5D0F821
-:10033000AC0301F04FF908BD08B5D0F8AC0301F0EB
-:1003400047F908BD08B5D0F8AC0301F045F908BD80
-:1003500008B5D0F8AC0301F041F908BD08B5D0F8F4
-:10036000AC0301F047F908BD38B503782BBB144C3A
-:10037000C4F8AC03C0F820424FF0A0432360072329
-:1003800063600223E360002525616561A361E56187
-:1003900025626562A562E562204603F0EBFB20461C
-:1003A000802103F08BFB20462946402203F062FBAC
-:1003B00020460121802203F05DFB002038BD00BFF4
-:1003C0005C03002008B5D0F8200203F043FC0020B5
-:1003D00008BD00BF10B51446D0F820021A462346C7
-:1003E00003F088FE002010BD08B5D0F8200203F00D
-:1003F000B5FE002008BD00BF08B5D0F8200203F00C
-:10040000ABFF002008BD00BF08B5D0F8200203F004
-:1004100045FF002008BD00BF08B5D0F8200203F05A
-:100420006FFF002008BD00BFD0F8202211F0800F20
-:1004300008D001F07F03C3EBC3039B00134493F880
-:100440003200704701F07F01C1EBC1018900114406
-:1004500091F8D601704700BF08B5D0F8200203F02C
-:1004600037FE002008BD00BF08B5D0F8200203F019
-:10047000E1FE002008BD00BF08B5D0F8200203F05F
-:1004800099FE002008BD00BF08B5D0F8200203F097
-:10049000C7FE08BD10B5074C20460749002200F0F2
-:1004A00079FF2046054900F08BFF204600F090FFC1
-:1004B00010BD00BF0C0700200000002080000020BD
-:1004C0002DE9F04186B0294B1A6B42F001021A6304
-:1004D0001A6B42F002021A631A6B42F004021A63AA
-:1004E0001A6B42F008021A6341F6FF73019300246D
-:1004F000029401270397049405941D4801A903F071
-:1005000047FF4FF6E77301931A4E304601A903F0F7
-:100510003FFF4FF6FF730193174D284601A903F0E3
-:1005200037FF164801A903F033FF1023019303237B
-:100530000293284601A903F02BFF4FF48058CDF811
-:10054000048002970394284601A903F021FFC5F80F
-:1005500018802025019502970394304601A903F0E5
-:1005600017FFB56106B0BDE8F08100BF003802405A
-:10057000000002400004024000080240000C02405B
-:1005800000B593B01B4A136C43F080531364A2F57B
-:10059000E432136823F4404343F40043136001231F
-:1005A0000693079302230C934FF480030D930823C3
-:1005B0000E934FF4A8730F93042310930723119302
-:1005C00006A802F051FF00B1FEE70D2301930221BE
-:1005D0000291002303934FF4A05304934FF48053EC
-:1005E000059301A803F0C8F800B1FEE713B05DF869
-:1005F00004FB00BF0038024008B506F05DFAFFF7C3
-:10060000BFFFFFF75DFFFFF745FF00F023F9FEE7AF
-:1006100008B506F06BFA08BD10B5054C4FF08053D5
-:10062000A361044803F02CFB4FF48053A36110BD79
-:10063000000802405C03002010B5054C4FF4001385
-:10064000A361044804F014F82023A36110BD00BF87
-:10065000000402403009002010B5054C4FF400138F
-:10066000A361044804F004F82023A36110BD00BF77
-:10067000000402408009002010B5064C4FF400131E
-:10068000A3610322044B5A6100F082F92023A36185
-:1006900010BD00BF00040240003C014008B54FF00F
-:1006A000FF300221002206F0ABF908BD0268404B82
-:1006B0009A427BD12DE9F04786B0044603F5843396
-:1006C0005A6C42F480525A641A6B42F480021A63E4
-:1006D000E023019302270297002503954FF00109BB
-:1006E000CDF8109005230593324E304601A903F052
-:1006F0004FFE4FF01008CDF80480CDF8089030463A
-:1007000001A903F045FEC6F818802B4820642B4B46
-:10071000036084634FF0C06AC0F804A04023836084
-:10072000C5604FF48069C0F8109045618561C5616E
-:100730004FF48038C0F82080456203F025FF3B204D
-:100740000A212A4606F05CF93B2006F08BF91C488A
-:1007500060641C4B03608463C0F804A08560C560BE
-:10076000C0F8109045618561C561C0F82080456280
-:1007700003F00AFF3A200A212A4606F041F93A20FE
-:1007800006F070F9082301930F4B0293039730464C
-:1007900001A903F0FDFD09200A212A4606F030F9DF
-:1007A000092006F05FF906B0BDE8F087704700BF8A
-:1007B00000300140000002408009002058640240DF
-:1007C00030090020406402400000211008B50E48A6
-:1007D0000E4B0360002380F851304FF48272426068
-:1007E0008360C360036143614FF400728261202221
-:1007F000C261036243624FF4005383620723C36202
-:1008000002F042FB08BD00BFFC0D0020003001409B
-:1008100008B50C4B1B78072B00D0FEE701460822D9
-:10082000084B1A70084B1860002321F8043F4FF45E
-:100830008012064B9A610648032202F06DFC00B15B
-:10084000FEE708BDD1090020F00D002000000240A5
-:10085000FC0D002010B500240B4B1C70FFF7B6FFF9
-:100860000A4B1C700A4B1C700A4B1C600A4B1C6024
-:100870000A4B1C600A4B1B6913F0080FFAD10222C5
-:10088000014B1A7010BD00BFD1090020E40B0020FD
-:10089000D4090020F80D0020540E0020E00B0020A9
-:1008A0000000024008B5104B1B78023BDBB2082B5E
-:1008B00000D9FEE70D4B1B6803B1FEE703460C4A67
-:1008C000127822B90A4801220270984709E0094AC1
-:1008D000127822B9074801220270984701E0034AC2
-:1008E0001060002008BD00BFD1090020540E002078
-:1008F000E40B0020D409002008B50D4B1A78931E94
-:10090000DBB2082B00D9FEE7022A02D10722084BEE
-:100910001A70074B1B78072B07D1064B1B6913F086
-:10092000080F02D10448FFF7BDFF002008BD00BF3B
-:10093000D109002000000240110800080A4B1B7872
-:10094000023BDBB2082B00D9FEE7084B1B781BB932
-:100950000648012303707047054B1B781BB90448F8
-:10096000012303707047FEE7D1090020E40B00204B
-:10097000D409002008B5054B1B6823B10021034AA8
-:100980001160984708BD0023037008BD540E002075
-:1009900008B5214B1B78033B062B3BD8DFE803F05F
-:1009A000043A143A243A280004221B4B1A704FF4DC
-:1009B00080121A4B9A611A4B19681A4804310222A4
-:1009C00002F0A4FA38B3FEE70622134B1A704FF474
-:1009D0008012124B9A61124B1B681248991D9A881B
-:1009E00002F094FAB8B1FEE70F48FFF75BFF08BDCD
-:1009F0000A22094B1A704FF48012084B9A61084B77
-:100A000019688A8801320748063192B202F084FBE5
-:100A100008B1FEE7FEE708BDD10900200000024052
-:100A2000F00D0020FC0D00201108000808B51F4B38
-:100A3000984203D01E4B984200D0FEE70378012B6A
-:100A400006D18388012B03D940F20222934200D9B8
-:100A5000FEE70022174B1A60174B1B78023B082B4E
-:100A600021D8DFE803F00D050505050C0C0C0C0082
-:100A7000124B1B6803B1FEE7104B186014E0FEE751
-:100A800003220D4B1A700E4B186082790D4B1A70B1
-:100A9000C2790D4B1A700D4B1B6913F0080F03D16F
-:100AA000FFF776FF00E0FEE7002008BDE40B002022
-:100AB000D4090020E00B0020D1090020F80D00200F
-:100AC000F00D0020F40D0020D009002000000240AD
-:100AD00008B510221B4B9A611B4B1B78042B02D0CC
-:100AE000062B00D0FEE7042B0AD10522164B1A7004
-:100AF000144B1B6913F0080F23D1FFF749FF08BD02
-:100B0000062B1ED1114B1868FFF734FF104B1B68E2
-:100B10007BB103210C4A11700C4A136000220C4B6C
-:100B20001A60084B1B6913F0080F0AD1FFF730FF5A
-:100B300008BD0222044B1A70064B1B680BB1FFF76D
-:100B4000DBFE08BD00000240D1090020F00D0020AE
-:100B5000F80D0020E00B002008B510221D4B9A6113
-:100B60001D4B1B78082B02D00A2B00D0FEE7082B68
-:100B700013D11A4B1B689B88023B9BB2B3F5007FD5
-:100B800000D9FEE70922144B1A70124B1B6913F0AF
-:100B9000080F1ED1FFF7FCFE08BD0A2B19D1022257
-:100BA0000D4B1A700E4B1A780C4B1868837903F0B2
-:100BB0007F03934204D1C2790A4B1B789A4200D03A
-:100BC000FEE7094B1B6803B9FEE70021064A1160E6
-:100BD000984708BD00000240D1090020F00D002018
-:100BE000F40D0020D0090020E00B0020FEE700BF3C
-:100BF00000B583B002464FF4802181604FF400734A
-:100C0000C36000910193044B1B680020694698471C
-:100C100003B05DF804FB00BF6C0E002008B5FFF7C1
-:100C2000A9FE024B1B680020984708BD740E0020E7
-:100C300010B50446FFF79EFE024B1B68207A9847CA
-:100C400010BD00BF740E002008B5094B1860FFF7F7
-:100C500075FE02228280012282710022C271FFF79A
-:100C6000E5FE18B90348FFF71DFE08BD08BD00BF2B
-:100C7000740E00201D0C000808B5084B1860FFF723
-:100C80005DFE0222828001218171C271FFF7CEFEDA
-:100C900018B90348FFF706FE08BD08BD6C0E00201A
-:100CA000F10B0008F8B50021134C2160134C2170A2
-:100CB00013490860134DC5E90023134C069B2360BC
-:100CC000124B079A1A60FFF739FE0E22828001222A
-:100CD00082710322C271D5E90067C0E90267226808
-:100CE0000261FFF7A3FE10B1054A12689047084859
-:100CF000FFF7D8FDF8BD00BF580E0020680E002099
-:100D0000740E0020600E0020700E00207C0E00206B
-:100D10001D0C000808B50C4B18600C4B1B788BB9E8
-:100D200001220A4B1A700A4B1B683BB130B11846BE
-:100D300000F012F80020064B186008BD0548FFF7C8
-:100D4000B1FD08BD002008BD780E0020680E00200F
-:100D5000580E0020590D000838B500220F4B1A70AC
-:100D60000F4B1D6815B90F4B186038BD01460E4C6E
-:100D70002068821C40F202239A4228BF1A4692B28F
-:100D80008A80023A92B2801A20600020A847236825
-:100D900013B10020FFF7BEFF38BD00BF680E002072
-:100DA000780E0020580E00207C0E0020F8B5104967
-:100DB0000860104DC5E900230F4C069B2360FFF728
-:100DC000BDFD0E228280012282710422C271D5E90A
-:100DD0000067C0E9026722680261FFF727FE10B1D1
-:100DE000034A126890470548FFF75CFDF8BD00BF55
-:100DF000740E0020600E0020700E0020310C0008E0
-:100E000008B502318180812282710422C271FFF70C
-:100E10000DFE08BD38B50D4613460222C0F8F42178
-:100E20008361C36100212A46FFF71EFB002038BD05
-:100E300010B50C46134600212246FFF715FB002093
-:100E400010BD00BF10B50C46134600212246FFF727
-:100E500013FB002010BD00BF08B50423C0F8F43117
-:100E600000210A460B46FFF7FFFA002008BD00BF2D
-:100E700008B50523C0F8F43100210A460B46FFF7F8
-:100E8000FBFA002008BD00BF0346002002E001304D
-:100E9000C0B201331A78002AF9D170474B88012B70
-:100EA0000BD110B50446C0F80432D0F814329B6858
-:100EB00098472046FFF7D0FF10BD70470B780370AE
-:100EC0004B7843708B78CA7803EB022343800B790D
-:100ED0004A7903EB022383808B79CA7903EB0223DF
-:100EE000C380704710B504468021FFF78DFA204675
-:100EF0000021FFF789FA10BD30B583B004460D46D6
-:100F00004A88130A013B062B00F28580DFE803F0D4
-:100F1000040D238383657300D0F810321B68007CB6
-:100F20000DF106019847014679E0037C4BB9D0F8F2
-:100F30001432DB6A0DF10600984701460223437024
-:100F40006DE0D0F814321B6B0DF106009847014696
-:100F50000223437063E0D2B2052A3AD8DFE802F0F8
-:100F6000030C151E2730D0F810325B68007C0DF1A1
-:100F700006019847014652E0D0F810329B68007C89
-:100F80000DF106019847014649E0D0F81032DB68C0
-:100F9000007C0DF106019847014640E0D0F8103280
-:100FA0001B69007C0DF106019847014637E0D0F837
-:100FB00010325B69007C0DF10601984701462EE076
-:100FC000D0F810329B69007C0DF10601984701466C
-:100FD00025E02946FFF786FF2EE0037C3BB9D0F8D9
-:100FE00014329B6B0DF106009847014617E0294625
-:100FF000FFF778FF20E0037C4BB9D0F814325B6B2D
-:101000000DF10600984701460723437007E0294683
-:10101000FFF768FF10E02946FFF764FF0CE0BDF81A
-:1010200006304BB1EA883AB19A4228BF1A46ADF869
-:1010300006202046FFF7EEFE03B030BD38B504466B
-:101040008B88E3B9CB88D3B98D7805F07F0590F80C
-:10105000FC31032B02D1FFF745FF38BD80F8FE516C
-:101060002946FFF7F9F92046FFF7F6FE1DB10223E6
-:1010700084F8FC3138BD012384F8FC3138BD2046AA
-:10108000FFF730FF38BD00BF38B504460D468978FC
-:10109000264B1970012903D92946FFF723FF38BDD4
-:1010A00090F8FC31022B02D0032B15D039E081B12E
-:1010B0004160032380F8FC3100F090F9022804D14C
-:1010C00020462946FFF70EFF38BD2046FFF7C4FE35
-:1010D00038BDFFF7C1FE38BD49B9022380F8FC31A5
-:1010E000416000F089F92046FFF7B6FE38BD43683D
-:1010F000994213D0D9B200F07FF90C4B1978616096
-:10110000204600F06BF9022804D120462946FFF75B
-:10111000E9FE38BD2046FFF79FFE38BDFFF79CFE75
-:1011200038BD2946FFF7DEFE38BD00BF480100206C
-:1011300008B50346CA88012A02D0FFF7D3FE08BDCE
-:1011400090F8FC21022A02D0032A08D00CE00146C4
-:10115000002241F8082F0122FFF75CFE08BD191D8F
-:101160000122FFF757FE08BDFFF7BCFE08BD00BF18
-:1011700008B5034690F8FC21023A012A0DD8012255
-:10118000C260D0F804220AB10322C260184603F1FB
-:101190000C010222FFF73EFE08BDFFF7A3FE08BDCB
-:1011A00010B5044690F8FC31023B012B0DD84B885A
-:1011B000012B0CD10023C0F80432D0F814329B6804
-:1011C00098472046FFF748FE10BDFFF78BFE10BD85
-:1011D00008B54B78092B1BD8DFE803F011171A1458
-:1011E0001A08051A0E0BFFF787FE13E0FFF726FF1C
-:1011F00010E0FFF749FF0DE0FFF79AFF0AE0FFF765
-:10120000B7FF07E0FFF74AFE04E0FFF7C9FF01E080
-:10121000FFF768FE002008BD38B504460D4690F87B
-:10122000FC31032B0FD10B79012B09D8D0F81432E4
-:101230009B689847EB8843B92046FFF70DFE04E012
-:10124000FFF750FE01E0FFF74DFE002038BD00BF64
-:1012500038B505460C468A88D1B26378012B26D072
-:10126000002B48D0032B74D190F8FC31022B02D014
-:10127000032B07D017E000296BD0802969D0FFF736
-:10128000C3F866E0638823B919B1802901D0FFF75C
-:10129000BBF8D5F814329B68284621469847284663
-:1012A000FFF7DAFD55E02146FFF71CFE51E090F80C
-:1012B000FC31022B02D0032B07D018E0002948D0C4
-:1012C000802946D0FFF7A0F843E06388002B40D187
-:1012D00011F07F0F07D0FFF79FF8D5F814329B6805
-:1012E0002846214698472846FFF7B6FD31E02146BB
-:1012F000FFF7F8FD2DE090F8FC31022B02D0032B14
-:1013000006D023E011F07F0F23D0FFF77DF820E017
-:1013100012F0800F05D001F07F0400EB04141434A8
-:1013200005E001F07F0400EB041404F58274284604
-:10133000FFF77AF810B10123236001E00023236056
-:10134000284621460222FFF765FD02E02146FFF70D
-:10135000C9FD002038BD00BFD0B170B50D4616469E
-:101360000446FFF791FD0130400080B230802870C4
-:1013700003236B70022307E05A1CD2B20134E954F4
-:10138000531CDBB20021A95421780029F4D170BD8F
-:10139000704700BF90B108B503460020C3F814029F
-:1013A000C3F8180209B1C3F81012012183F8FC1127
-:1013B0001A701846FEF7D8FF002008BD02207047BB
-:1013C00019B1C0F81412002070470220704700BF06
-:1013D00008B5FEF7F7FF002008BD00BF08B5D0F83C
-:1013E000143223B11B68984718B1022008BD0220AF
-:1013F00008BD002008BD00BF08B5D0F814325B68F6
-:101400009847002008BD00BF38B5044600F50275B6
-:101410002846FFF753FD0123C4F8F431B4F80E3227
-:10142000C4F8F83194F8081201F01F03012B08D01A
-:1014300013B1022B0AD00EE020462946FFF7C8FE62
-:101440000EE020462946FFF7E7FE09E02046294640
-:10145000FFF7FEFE04E0204601F08001FEF7D4FF16
-:10146000002038BD38B5044609BBD0F8F431032B51
-:1014700026D1D0F80C31D0F810118B420AD95B1A62
-:10148000C0F80C318B4228BF0B4611469AB2FFF7C9
-:10149000D9FC15E0D0F814321B6923B190F8FC2177
-:1014A000032A00D198472046FFF7D6FC08E0D0F881
-:1014B00014329B6923B190F8FC21032A00D198478C
-:1014C000002038BD38B50446B9BBD0F8F431022B42
-:1014D0002BD1C169036A994206D9CB1AC36111465F
-:1014E0009AB2FFF7A5FC20E08169B1FBF3F203FBA0
-:1014F00012126AB98B420BD8D0F8F831994207D250
-:1015000000210A46FFF794FC0023C4F8F8310CE0F0
-:10151000D4F81432DB682BB194F8FC21032A01D1F2
-:10152000204698472046FFF7A3FC94F80032012B91
-:101530000CD1002384F8003208E0D0F814325B6943
-:1015400023B190F8FC21032A00D19847002038BD30
-:1015500038B5044600210A464023FEF73BFF4025EC
-:10156000C4F810512046802100222B46FEF732FF9E
-:101570002562012384F8FC31D4F818322BB1D4F859
-:1015800014325B68204621799847002038BD00BF9F
-:1015900001740020704700BF90F8FC3180F8FD31E5
-:1015A000042380F8FC310020704700BF90F8FD3123
-:1015B00080F8FC310020704708B590F8FC31032B0F
-:1015C00004D1D0F81432DB6903B19847002008BD7C
-:1015D00000207047002070470020704708B50122A6
-:1015E00080F8FC21D0F8142252680179904700203D
-:1015F00008BD00BF08B5D0F814329B6A9847002098
-:1016000008BD00BF08B5044B1B6800205881034B80
-:101610001B68984708BD00BF800E00208C0E00207C
-:1016200008B5FFF78BF9284B1B6818610830D860A4
-:10163000002306E0244A1268D2680021D154013305
-:10164000DBB2112BF6D9204B1A68D26870211170C9
-:101650001B68DA680C21D17193F8642093F8651047
-:101660008A4222D0D96803EBC20393F844308B70CE
-:10167000154B1B68D96893F8642003EBC20292F8FB
-:1016800049200A73D96893F8642003EBC20292F8E8
-:1016900048204A7393F864200132D2B283F8642060
-:1016A000042A02D1002283F86420074B1B6812220F
-:1016B0005A81064A12681279122A00D85A81044BBC
-:1016C0001B680020984708BD800E0020840E002073
-:1016D0008C0E002008B5FFF731F9144B1A68106121
-:1016E0000830D060124B1B68597811F0010F08D1F7
-:1016F0001049097905311B798B4205D90B460D48F4
-:1017000003E007230C4800E00A48538106E0013B50
-:101710009BB2064A1268D268C15CD154002BF6D144
-:10172000064B1B680020984708BD00BF800E0020B4
-:10173000840E0020986D0008BC6D00088C0E0020FF
-:1017400008B5FFF7FBF80B4B1A6810610830D06042
-:101750000823538107E0013B9BB2064A1268D26816
-:101760000549C95CD154002BF5D1044B1B680020FE
-:10177000984708BD800E0020CC6D00088C0E00201C
-:1017800008B5FFF7DBF80B4B1A6810610830D06022
-:101790000823538107E0013B9BB2064A1268D268D6
-:1017A0000549C95CD154002BF5D1044B1B680020BE
-:1017B000984708BD800E0020C46D00088C0E0020E4
-:1017C00008B50B4B1B68186100F10802DA60DB6B8F
-:1017D000B3F5007F28BF4FF4007306490868012164
-:1017E0009BB2FEF749FE044B1B680020984708BDDA
-:1017F000800E0020900E00208C0E002010B4D0F837
-:10180000184294F8651001F1080004EBC000027161
-:101810001B0283600131C9B284F86510042902D12A
-:10182000002384F865305DF8044B704708B5014427
-:10183000084B1B689B6E994209D9074B1868074BE8
-:10184000197805222123FFF7D9FFFF2000E00020AF
-:1018500040B208BD800E0020900E0020880E0020AF
-:1018600008B5154B1B685B7813F0020F0DD0134BB6
-:101870001868134B197805222423FFF7BFFF114B7B
-:101880001B684FF0FF30984708BD0F4B1B68D86EA0
-:10189000B3F87010FFF7CAFF002805DA094B1B6880
-:1018A0004FF0FF30984708BD074B1B680020588158
-:1018B000044B1B68984708BD840E0020900E002042
-:1018C000880E00208C0E0020800E002008B588B104
-:1018D0000C4B18680C4B197802223A23FFF78EFF45
-:1018E0000A4B1B6805221A72094B1B684FF0FF3028
-:1018F000984708BD054B1B6800205881044B1B68A6
-:10190000984708BD900E0020880E0020800E002011
-:101910008C0E002008B5104B1B68DB696BB10F4BB8
-:1019200018680F4B197805222023FFF767FF0D4B2E
-:101930001B684FF0FF30984708BD094B1B781BB15F
-:101940000120FFF7C3FF08BD0748FFF77DF910B17D
-:101950000120FFF7BBFF08BD800E0020900E002085
-:10196000880E00208C0E0020CD18000810B568B13C
-:10197000214B1868214B197802223A23FFF73EFFCA
-:101980001F4B1B684FF0FF30984710BD1D4C23685C
-:101990001A6102F10800D860086898664968A3F8DF
-:1019A00066100138000E1072DA689B6E013BC3F3BB
-:1019B000074353702368DA689B6E013BC3F3072328
-:1019C00093702368DA689B6E013BD3702368DA68F2
-:1019D00000211171DA685171D968B3F86620120AD2
-:1019E0008A71DA6893F86610D17108225A81044B23
-:1019F0001B680020984710BD900E0020880E002024
-:101A00008C0E0020800E002008B50548FFF734F941
-:101A100020B1012000210A46FFF7A8FF08BD00BF42
-:101A20006D19000810B568B1234B1868234B19785D
-:101A300002223A23FFF7E2FE214B1B684FF0FF30F2
-:101A4000984710BD1F4B1C68226102F10800E0603E
-:101A500000201072E26850701A68D26890701A689C
-:101A6000D2680824D4701B68DC680A68013A120E38
-:101A70002271DC680A68013AC2F307426271DC68CD
-:101A80000A68013AC2F30722A271DC680A68013AC7
-:101A9000E271DA6802241472DA688C795472DA68B6
-:101AA0004C799472DA680979D1720C225A81044B0C
-:101AB0001B68984710BD00BF900E0020880E0020C4
-:101AC0008C0E0020800E002008B50548FFF7D4F8E2
-:101AD00020B1012000210A46FFF7A4FF08BD00BF86
-:101AE000251A000810B568B1154B1868154B197800
-:101AF00004221123FFF782FE134B1B684FF0FF30C7
-:101B0000984710BD1446114B1B681A6902B1FEE7D5
-:101B1000196101F10802DA60094B18688121234636
-:101B2000FEF7A2FC094B1A68D36B1B1BD3630BB9DE
-:101B300003231372044B1B680020984710BD00BF9D
-:101B4000900E0020880E00208C0E0020800E0020B9
-:101B500008B568B10D4B18680D4B197802223A236D
-:101B6000FFF74CFE0B4B1B684FF0FF30984708BD4A
-:101B7000094B1B6802221A720848FFF7CBF820B104
-:101B8000012000210A46FFF7ADFF08BD900E00209E
-:101B9000880E00208C0E0020800E0020E51A000820
-:101BA00010B582B0364B1B681A7A002A5DD193F9C2
-:101BB0002020002A0DDB334A106893F821100522FB
-:101BC0002023FFF71BFE304B1B684FF0FF30984778
-:101BD00054E02E4A1468A078E278120442EA0062C7
-:101BE000207942EA002260791043D866E279217AAE
-:101BF00041EA0221A3F87010FFF718FE00280FDA5F
-:101C00001F4B1B681F4A106893F8211005222023E0
-:101C1000FFF7F4FD1C4B1B684FF0FF3098472DE099
-:101C2000174B1B68D969B3F87000B3F8662002FB44
-:101C300000F291420DD0134A106893F8211005224A
-:101C40002023FFF7DBFD104B1B684FF0FF30984758
-:101C500014E0DA6E009001910D480023FFF722F89E
-:101C600060B10120FFF774FF08E00A48FFF752F85F
-:101C700020B1012000210A46FFF734FF02B010BD59
-:101C8000800E0020900E00208C0E0020840E00207C
-:101C9000511B0008E51A000808B502280DD1194BA0
-:101CA0001868194B197802222723FFF7A7FD174B55
-:101CB0001B684FF0FF30984708BD68B1114B18689A
-:101CC000114B197802223A23FFF798FD0F4B1B683E
-:101CD0004FF0FF30984708BD0D4B1B6801221A7268
-:101CE0000C48FEF7DFFD60B1064B1868064B19780B
-:101CF00002223A23FFF782FD044B1B684FF0FF30AE
-:101D0000984708BD900E0020880E00208C0E002001
-:101D1000800E0020C117000810B582B04F4B1A6822
-:101D2000137A002B5DD192F92030002B0DDA4C4B49
-:101D3000186892F8211005222023FFF75FFD494B18
-:101D40001B684FF0FF30984785E0474B1C68A07830
-:101D5000E3781B0443EA0063207943EA00236079B7
-:101D60001843D066E379217A41EA0321A2F8701082
-:101D7000FFF75CFD00280FDA384B1B68384A106803
-:101D800093F8211005222023FFF738FD354B1B68FF
-:101D90004FF0FF3098475EE0304B1B68D869B3F8CE
-:101DA0007010B3F8662002FB01F290420DD02C4A6D
-:101DB000106893F8211005222023FFF71FFD294BFF
-:101DC0001B684FF0FF30984745E0DA6E00912748D6
-:101DD0000023FEF7EBFF00283DD00120FFF75CFF5A
-:101DE00039E0D46BB4F5007F28BF4FF4007410695C
-:101DF0002146FFF705F868B1194B18681C4B197894
-:101E000004220323FFF7FAFC164B1B684FF0FF3048
-:101E1000984720E0114B1A68D36B1C1BD4634CB954
-:101E20000F4B1868002100F051F90E4B1B68002081
-:101E3000984710E00F48FEF735FD60B1084B186871
-:101E40000B4B197802223A23FFF7D8FC054B1B688D
-:101E50004FF0FF30984702B010BD00BF800E002049
-:101E6000900E00208C0E0020840E0020991C00088B
-:101E7000880E0020C117000810B5364C2060364C83
-:101E80002260364C2170364C2360D0F81842354B16
-:101E90001C6013785A2B53D8DFE803F02E525231CE
-:101EA0005252525252525252525252525252345230
-:101EB0005252525252523D3752523A525252524359
-:101EC0005246525249524C525252524F5252525210
-:101ED00052525252525252525252525252525252E2
-:101EE00052525252525252525252525252525252D2
-:101EF0005252525252524000FFF70CFD10BDFFF7F4
-:101F00008FFB10BDFFF7E6FB10BDFFF77BFB10BD9D
-:101F1000FFF778FB10BDFFF713FC10BDFFF730FC97
-:101F200010BDFFF7D1FD10BDFFF76EFD10BDFFF72F
-:101F300037FE10BDFFF7F0FE10BDFFF791FC10BD9E
-:101F400005222023FFF75AFC054B1B684FF0FF309A
-:101F5000984710BD900E0020840E0020880E0020AF
-:101F60008C0E0020800E002038B50546D0F81842AF
-:101F700094F8203033B9E36923B1637A13B90121AE
-:101F8000FEF742FA28468121FEF73EFA637A022BD9
-:101F900006D12846012104F114021F23FEF76CFA32
-:101FA00038BD00BF38B50546D0F81842A369A36311
-:101FB000E369E3630121FEF767FA1F280CD1626928
-:101FC000114B9A4208D194F82110012904D894F8B1
-:101FD00022300BB1102B0CD9284694F82110052281
-:101FE0002023FFF70BFC022363722846FFF7BCFF98
-:101FF00038BD064B1D60064B1C60284604F12302C9
-:10200000044BFFF739FF38BD55534243940E00206F
-:10201000980E00206921000810B50C46D0F818125F
-:10202000CB699A4228BF1A4693B2CA6BD21ACA63C6
-:10203000002281F8402004220A7281212246FEF704
-:1020400013FA10BD38B50546D0F8184200232372A4
-:10205000637284F8653084F864300121FEF7CCF9AE
-:1020600028468121FEF7C8F92846012104F114020F
-:102070001F23FEF701FA38BD08B5D0F81822002357
-:1020800013720121517214321F23FEF7F5F908BDB6
-:10209000D0F8183200221A72704700BF08B5D0F885
-:1020A0001822137A13B1012B03D008BDFFF77AFF72
-:1020B00008BD044B186092F821102332024BFFF741
-:1020C000DBFE08BD940E00205121000838B50546FE
-:1020D000D0F81842094B636384F840100023237240
-:1020E000812104F134020D23FEF7BEF928460121B7
-:1020F00004F114021F23FEF7BFF938BD55534253B4
-:1021000008B5D0F81822137A022B03D00ED3042B73
-:1021100009D908BD064B186092F821102332054BEF
-:10212000FFF7AAFE08BD0021FFF7D0FF08BD00BFE2
-:10213000940E002039210008002806DA08B5034B68
-:1021400018680121FFF7C2FF08BD7047940E0020F8
-:10215000002806DA08B5034B18680121FFF7B6FF1F
-:1021600008BD7047940E002008B500280FDA134B05
-:102170001B681B7A052B05D1114B18680121FFF74D
-:10218000A5FF08BD0E4B1868FFF7EEFE08BD0B4B10
-:1021900019680B7A013BDBB2022B0DD94A892AB1AF
-:1021A000074B1868C968FFF737FF08BD22B9044B11
-:1021B00018680021FFF78AFF08BD00BF980E0020B5
-:1021C000940E002010B5D0F81842637A022B05D186
-:1021D0008121FEF719F90023637210BD11F0800F01
-:1021E00004D0012B02D00121FFF770FF10BD00BF0A
-:1021F00020230380004870476000002020230380D4
-:1022000000487047BC00002020230380004870472E
-:10221000340000200A230380004870475400002047
-:1022200010B50446037C6BB9012102224FF4007300
-:10223000FEF7D0F82046812102224FF40073FEF70A
-:10224000C9F80AE0012102224023FEF7C3F8204624
-:10225000812102224023FEF7BDF8742004F0AAFC7D
-:10226000C4F8180238B12046FFF7ECFED4F8183253
-:102270000020186110BD012010BD00BF10B504463C
-:102280000121FEF7B1F820468121FEF7ADF8204686
-:10229000FFF7FEFED4F8180220B104F093FC0023EF
-:1022A000C4F81832002010BD70B506460C46D0F8B0
-:1022B0001812237813F0600530D0202D6FD162788A
-:1022C000FE2A02D0FF2A13D023E0628852B9E288A6
-:1022D000012A07D113F0800F04D000250D60FEF70E
-:1022E00099FD5DE030462146FEF7FCFD022557E0F2
-:1022F000628842B9E28832B913F0800F03D1FFF748
-:10230000BBFE00254CE030462146FEF7EBFD0225E2
-:1023100046E02146FEF7E6FD022541E063780A2B00
-:1023200004D00B2B07D0012B3AD107E00431012256
-:10233000FEF770FD34E0A3784B6031E02179FEF7C1
-:102340005BF830462179FEF74FF894F90430002B02
-:1023500010DA337C3BB93046812102224FF40073FE
-:10236000FEF738F816E03046812102224023FEF7BE
-:1023700031F80FE0337C3BB93046012102224FF4A3
-:102380000073FEF727F805E03046012102224023C2
-:10239000FEF720F830462179FFF714FF00E0002512
-:1023A000284670BD08B5FFF7ABFE002008BD00BF92
-:1023B00008B5FFF773FE002008BD00BFD0F8183243
-:1023C00063B11B6953B110B504461846FEF7D2FA43
-:1023D000D4F8183200221A61002010BD0020704786
-:1023E0000C4B01E0013B10D00269002AFADA0369C4
-:1023F00043F001030361074B01E0013B07D0026991
-:1024000012F0010FF9D1002070470320704703201C
-:10241000704700BF400D030084B010B5044603A808
-:1024200080E80E00089B012B18D1A36B23F48033A6
-:10243000A363E36823F4840323F04003E360E368C9
-:1024400023F44013E3600D9B012B03D1E36843F4B5
-:102450008013E3602046FFF7C3FF09E0E36843F021
-:102460004003E3602046FFF7BBFF4FF48033A363D4
-:10247000069B012B07D1A36843F00C03A360A3685C
-:1024800043F02003A3600020BDE8104004B0704773
-:10249000836843F00103836000207047836823F062
-:1024A000010383600020704708B5C36823F0C04370
-:1024B000C360012904D1C36843F00053C36004E042
-:1024C00019B9C36843F08043C360322004F01CFB99
-:1024D000002008BD490141F020010161054B01E0E8
-:1024E000013B05D0026912F0200FF9D1002070479E
-:1024F00003207047400D030010230361054B01E0EA
-:10250000013B05D0026912F0100FF9D1002070478D
-:1025100003207047400D0300D0F800381943C0F87D
-:1025200000180020704700BF84B0F8B5044607A823
-:1025300080E80E00A36B43F40023A3630F9E1EB933
-:10254000A36B43F40013A3630023C4F8003E04F517
-:102550000065D4F80038C4F800380C9B012B0BD16F
-:10256000099B23B920460021FFF7D6FF08E020464B
-:102570000121FFF7D1FF03E020460321FFF7CCFF45
-:1025800020461021FFF7A6FF2046FFF7B5FF0023E6
-:102590002B616B614FF0FF32AA61EB61079848B382
-:1025A00004F51063002219461F68002F03DA4FF06C
-:1025B00090471F6001E000271F6000270F61FF2781
-:1025C0008F60013220338242EDD304F53063002264
-:1025D00019461F68002F03DA4FF090471F6001E093
-:1025E00000271F6000270F61FF278F600132203313
-:1025F0008242EDD12B6923F480732B610A9B012B5E
-:102600000ED1184B2B632B6B43F4803343F0030341
-:102610002B632B6B0023A3616FF08043636109E0A0
-:102620000022A2616FF0804262611BB9A36943F08E
-:102630001003A361A2690C4B1343A3610D9B1BB153
-:10264000A36943F00803A361012E05D1A36943F0F8
-:10265000804343F00403A3610020BDE8F84004B0C8
-:10266000704700BF0001800000383C80D0F8083877
-:1026700000F5006013F0060F10D0836803F0060326
-:10268000022B0DD0836803F00603062B0AD0836863
-:1026900003F00603042B07D1022070470020704787
-:1026A00003207047032070470020704770B44B78B8
-:1026B000012B1FD1D0F81C280D78AB409BB21343DF
-:1026C000C0F81C380E78730103F510631A5812F421
-:1026D000004F2DD11C5844F0805545F400458A68C0
-:1026E000C2F30A042C43CA7844EA824242EA865280
-:1026F0001A501DE0D0F81C280D784FF48033AB4001
-:102700001343C0F81C380B785B0103F530631A588B
-:1027100012F4004F0CD11A5842F0805444F4004493
-:102720008A68C2F30A022243C97842EA81421A50F7
-:10273000002070BC704700BF30B44B78012B1BD118
-:10274000D0F83C580C7803FA04F4A4B225EA040447
-:10275000C0F83C48D0F81C480D78AB409BB224EA46
-:102760000303C0F81C380B785B0103F510631A589B
-:1027700022F400421A5019E0D0F83C480D780122AA
-:1027800002FA05F524EA0544C0F83C48D0F81C4894
-:102790000D78AA4024EA0242C0F81C280B785B019D
-:1027A00003F530631A5822F400421A50002030BC5E
-:1027B000704700BF30B44B78012B68D14B69EBB93F
-:1027C0000B7800EB4313D3F8104924F0FF5424F4A2
-:1027D000C014C3F810490B7800EB4313D3F8104929
-:1027E00044F40024C3F810490B7800EB4313D3F8EA
-:1027F0001049E40CE404C3F810492CE00B7800EB1A
-:102800004313D3F81049E40CE404C3F810490B78DF
-:1028100000EB4313D3F8104924F0FF5424F4C01400
-:10282000C3F810498B684C699C4200D94B610B7806
-:1028300000EB4313D3F8104944F40024C3F81049C3
-:102840000B7800EB4313D3F810594C69C4F312040E
-:102850002C43C3F81049012A06D10B7800EB43132F
-:102860000A69C3F8142909E04B693BB1D0F8342850
-:102870000D780123AB401343C0F834380B785B016B
-:1028800003F51063C25842F00442C2503BE00B789B
-:1028900000EB4313D3F8104BE40CE404C3F8104BE3
-:1028A0000B7800EB4313D3F8104B24F0FF5424F4BF
-:1028B000C014C3F8104B4B690BB18B684B610B789C
-:1028C00000EB4313D3F8104B44F40024C3F8104B2F
-:1028D0000B7800EB4313D3F8105B8C68C4F312043D
-:1028E0002C43C3F8104B012A05D10B7800EB43139E
-:1028F000CA68C3F8142B0B785B0103F53063C25828
-:1029000042F00442C250002030BC704730B49DF801
-:10291000084064B903339B1009D000F5805000EBE8
-:10292000023251F8045B15600134A342F9D1002052
-:1029300030BC704770B582B04B78012B40F0A98055
-:102940004B69EBB90B7800EB4313D3F8104924F033
-:10295000FF5424F4C014C3F810490B7800EB431360
-:10296000D3F8104944F40024C3F810490B7800EB65
-:102970004313D3F81049E40CE404C3F8104945E0CC
-:102980000B7800EB4313D3F81049E40CE404C3F8CC
-:1029900010490B7800EB4313D3F8104924F0FF548F
-:1029A00024F4C014C3F810490C7800EB4414D4F894
-:1029B00010598E684B693344013BB3FBF6F3724EFA
-:1029C00006EAC3432B43C4F810390B7800EB4313DA
-:1029D000D3F810594C69C4F312042C43C3F81049BE
-:1029E000CB78012B40F0C8800B7800EB4313D3F871
-:1029F000104924F0C044C3F810490B7800EB43138E
-:102A0000D3F8104944F00054C3F81049012A06D104
-:102A10000B7800EB43130C69C3F814490CE0CB7836
-:102A2000012B0CD04B6903B3D0F834480E78012346
-:102A3000B3402343C0F83438CB78012B15D1D0F8FC
-:102A4000083813F4807F08D10B785B0103F510631D
-:102A5000C45844F00054C45007E00B785B0103F500
-:102A60001063C45844F08054C4500B785B0103F5E4
-:102A70001063C45844F00444C450CB78012B7FD178
-:102A800014460B46C9681A789B8A0094FFF73EFFEC
-:102A900076E00B7800EB4313D3F8104BE40CE4041E
-:102AA000C3F8104B0B7800EB4313D3F8104B24F012
-:102AB000FF5424F4C014C3F8104B4B69A3B90B782E
-:102AC00000EB4313D3F8105B8C68C4F312042C435F
-:102AD000C3F8104B0B7800EB4313D3F8104B44F4BE
-:102AE0000024C3F8104B1DE08D680C7800EB4414F3
-:102AF000D4F8106B2B44013BB3FBF5F39BB2224D92
-:102B000005EAC3453543C4F8105B0C7800EB441468
-:102B1000D4F8106B8D6805FB03F3C3F31203334342
-:102B2000C4F8103B012A05D10B7800EB4313CA68A7
-:102B3000C3F8142BCB78012B15D1D0F8083813F437
-:102B4000807F08D10B785B0103F53063C25842F0F7
-:102B50000052C25007E00B785B0103F53063C258A6
-:102B600042F08052C2500B785B0103F53063C258CB
-:102B700042F00442C25003E0012A7FF453AF47E71A
-:102B8000002002B070BD00BF0000F81F0332921099
-:102B90000FD030B40C46002300F580552D6844F862
-:102BA000045B01339A42F7D101EB8201084630BC45
-:102BB00070470846704700BF4B78012B13D10B7844
-:102BC0005B0103F51063C258002A03DBC25822F0F0
-:102BD0008042C2500B785B0103F51063C25842F487
-:102BE0000012C25012E00B785B0103F53063C2584B
-:102BF000002A03DBC25822F08042C2500B785B01EE
-:102C000003F53063C25842F40012C25000207047EE
-:102C10004B78012B15D10B785B0103F51063C2587B
-:102C200022F40012C250CB78023BDBB2012B1DD83C
-:102C30000B785B0103F51063C25842F08052C2501A
-:102C400014E00B785B0103F53063C25822F40012E4
-:102C5000C250CB78023BDBB2012B07D80B785B016B
-:102C600003F53063C25842F08052C25000207047D2
-:102C7000D0F8003823F4FE63C0F80038D0F80038EC
-:102C8000090101F4FE610B43C0F8003800207047D1
-:102C900008B5D0F8043823F00203C0F80438032044
-:102CA00003F032FF002008BD08B5D0F8043843F027
-:102CB0000203C0F80438032003F026FF002008BDFB
-:102CC0004369806918407047D0F8183800F50060F3
-:102CD000C0691840000C704700F50063D0F8180870
-:102CE000DB69184080B2704700F5306303EB411197
-:102CF0008B6800F5006040691840704710B4D0F848
-:102D00001048D0F8343800EB4110D0F80809CB4017
-:102D1000DB01DBB2234318405DF8044B704700BF72
-:102D2000406900F001007047D0F8003923F4FF63D8
-:102D300023F00703C0F8003900F500639A6802F039
-:102D40000602042A05D1D0F8002942F00302C0F897
-:102D500000295A6842F480725A600020704700BF10
-:102D600010B40024C0F8104BD0F8104B44F40024E9
-:102D7000C0F8104BD0F8104B44F01804C0F8104BBA
-:102D8000D0F8104B44F0C044C0F8104B012905D1D5
-:102D9000C0F8142B4FF08023C0F8003B00205DF8F2
-:102DA000044B70472DE9F04106460C4690461D46FF
-:102DB00003F0A4FE0746B8F1000F2AD05BE0B5F19E
-:102DC000FF3F26D025B103F099FEC01BA84220D9B1
-:102DD0003268536823F0E00353603268136823F0CD
-:102DE00040031360B36AB3F5005F09D1326813681A
-:102DF00023F4005313603268136843F400531360E4
-:102E0000012386F85130002386F850300320BDE8B6
-:102E1000F08133689B682340A342D0D10020BDE8F5
-:102E2000F081B5F1FF3F26D025B103F067FEC01B4E
-:102E3000A84220D93268536823F0E0035360326817
-:102E4000136823F040031360B36AB3F5005F09D140
-:102E50003268136823F4005313603268136843F434
-:102E600000531360012386F85130002386F8503058
-:102E70000320BDE8F08133689B682340A342D0D093
-:102E80000020BDE8F08100BF00283CD010B504460A
-:102E900090F8513013F0FF0F01D1FDF707FC02232A
-:102EA00084F851302268136823F0400313602168CE
-:102EB0006268A3681A43E3681A4323691A43636983
-:102EC0001A43A36903F400731343E2691343226AAC
-:102ED0001343A26A1A430A602168638B03F0040259
-:102EE000636A13434B602368E26A1A612268D369FC
-:102EF00023F40063D36100206065012384F851301E
-:102F000084F8500010BD0120704700BF10B5044682
-:102F100090F85130DBB2012B50D1002950D0002A5B
-:102F200050D090F85030012B4ED0012380F8503013
-:102F3000122380F851300023436501638286C286E4
-:102F4000C36483648387C3878368B3F5004F04D168
-:102F50000268136843F480431360A36AB3F5005F0B
-:102F600009D12268136823F40053136022681368A0
-:102F700043F400531360236C154A1A64236C154AFA
-:102F8000DA63236C144A9A642268206C216B0C3239
-:102F9000E38E01F037FB2268536843F0020353606D
-:102FA000002384F8503023681A6812F0400F0DD1C6
-:102FB0001A6842F040021A60002010BD022010BDC5
-:102FC000012010BD012010BD022010BD002010BD49
-:102FD000113200085D3200083D32000838B5044661
-:102FE00090F85100C0B2012808D06568B5F5827F1D
-:102FF0007AD1A568002D79D1222879D1002979D0FC
-:10300000002A79D0002B79D094F85000012877D08D
-:10301000012084F8500094F85100C0B2222802D058
-:10302000322084F85100002060652163A386E38686
-:10303000A263A387E387A064E064A36AB3F5005F9B
-:1030400009D12268136823F40053136022681368BF
-:1030500043F40053136094F85130DBB2222B06D1B5
-:10306000636C284A1A64636C274ADA6305E0636C70
-:10307000264A1A64636C264ADA63636C254A9A64AA
-:103080002168606C0C31A26BE38F01F0BBFA2268FF
-:10309000536843F001035360236C0022DA6394F811
-:1030A0005130DBB2322B03D1236C1A4A9A6402E00E
-:1030B000236C00229A642268206C216B0C32E38E10
-:1030C00001F0A0FA23681A6812F0400F03D11A68C1
-:1030D00042F040021A602268536843F002035360D2
-:1030E000002084F8500038BD022038BD022038BDD1
-:1030F000022038BD012038BD012038BD012038BD77
-:10310000022038BD21320008D532000831320008D3
-:103110009D3300083D32000838B50446134690F848
-:103120005120D2B2012A5ED10D4600295DD0002B7C
-:103130005DD090F85020012A5BD0012280F8502009
-:10314000222280F8512000224265A1638387C38731
-:103150008264C2648286C2868268B2F5004F05D15D
-:103160000268136823F4804313600BE052B942688D
-:10317000B2F5827F06D1002280F850202A46FFF760
-:103180002DFF38BDA36AB3F5005F09D1226813682B
-:1031900023F4005313602268136843F40053136050
-:1031A000636C164A1A64636C154ADA63636C154AD9
-:1031B0009A642168606C0C31A26BE38F01F022FAF3
-:1031C0002268536843F001035360002384F85030B1
-:1031D00023681A6812F0400F0DD11A6842F04002BD
-:1031E0001A60002038BD022038BD012038BD012002
-:1031F00038BD022038BD002038BD00BF2132000894
-:10320000D53200083D320008704700BF704700BF4C
-:1032100008B5806BFFF7FAFF08BD00BF704700BF1D
-:1032200008B5806BFFF7FAFF08BD00BF704700BF0D
-:1032300008B5806BFFF7FAFF08BD00BF08B5806BCB
-:103240000023C386C387012380F85130436D43F0C8
-:1032500010034365FDF7CAFC08BD00BF10B582B07E
-:10326000846B03681B6813F4807F1FD12046022102
-:1032700000220A23FFF796FD18B1636D43F0100397
-:1032800063652268536823F002035360204680215F
-:1032900001220A23FFF786FD18B1636D43F0100386
-:1032A00063650023E386012384F85130A3682BB9BA
-:1032B0002368DA6801929B680193019B636D1BB1DF
-:1032C0002046FDF793FC02E02046FDF701FC02B02A
-:1032D00010BD00BF10B582B0846B03681B6813F487
-:1032E000807F55D16368B3F5827F0BD1A368B3F5B6
-:1032F000004F02D0B3F5806F04D12268136823F029
-:10330000400313602268536823F00103536022686E
-:10331000536823F0020353600023E387012384F8FA
-:103320005130A36AB3F5005F28D120460121002265
-:103330000A23FFF737FD18B1636D43F0100363658F
-:103340002368DB689BB2ADF80630BDF80630204636
-:1033500001210A460A23FFF725FD18B1636D43F0EA
-:103360001003636523689A6812F0100F06D0626D2F
-:1033700042F0020262656FF010029A60636D1BB149
-:103380002046FDF733FC06E02046FDF7E5FB02E0B2
-:103390002046FDF7E1FB02B010BD00BF10B582B0C2
-:1033A000846B03681B6813F4807F57D1A36AB3F55D
-:1033B000005F23D1204601210A460A23FFF7F2FCD1
-:1033C00050B92046012100220A23FFF7EBFC18B177
-:1033D000636D43F0100363652268D3689BB2ADF858
-:1033E0000630BDF80630936813F0100F06D0636DF9
-:1033F00043F0020363656FF01003936020460221DF
-:1034000000220A23FFF7CEFC18B1636D43F01003CE
-:1034100063652268536823F00203536020468021CD
-:1034200001220A23FFF7BEFC18B1636D43F01003BD
-:1034300063652268536823F0010353600023E38629
-:10344000E387012384F85130636D1BB12046FDF7FB
-:10345000CDFB06E02046FFF7D7FE02E02046FFF74F
-:10346000D3FE02B010BD00BF38B50446036813F0A8
-:10347000010F3AD0B34B9B6803F00C03042B00F010
-:103480004B81B04B9B6803F00C03082B05D1AD4B6F
-:103490005B6813F4800F40F041810022AA4B1A7040
-:1034A00003F02CFB054606E003F028FB401BB0F5BB
-:1034B000FA7F00F23581A34B1B6813F4003FF3D170
-:1034C0002279A14B1A7063687BB103F017FB0546A4
-:1034D00006E003F013FB401BB0F5FA7F00F22281F7
-:1034E000984B1B6813F4003FF3D0236813F0020FCE
-:1034F00049D0944B9B6813F00C0F0AD0914B9B68FA
-:1035000003F00C03082B09D18E4B5B6813F4800F7A
-:1035100004D1E368012B40F0078126E0E36893B112
-:1035200001228A4B1A6003F0E9FA054605E003F030
-:10353000E5FA401B642800F2F980824B1B6813F007
-:10354000020FF4D011E00022804B1A6003F0D6FA8B
-:10355000054605E003F0D2FA401B642800F2E8803B
-:10356000784B1B6813F0020FF4D17648026822F002
-:10357000F8012269F82393FAA3F3B3FA83F3DBB2D9
-:103580009A400A430260236813F0080F26D063694B
-:1035900093B101226E4B1A6003F0B0FA054605E0C4
-:1035A00003F0ACFA401B642800F2C480654B5B6FEB
-:1035B00013F0020FF4D011E00022654B1A6003F003
-:1035C0009DFA054605E003F099FA401B642800F2D5
-:1035D000B3805C4B5B6F13F0020FF4D1236813F0E0
-:1035E000040F42D0574A136C43F080531364A2F582
-:1035F000E432136843F48073136003F07FFA0546E6
-:1036000005E003F07BFA401B642800F29780514BE1
-:103610001B6813F4807FF4D000224F4B1A7003F024
-:103620006DFA054607E003F069FA401B41F2883362
-:10363000984200F28580434B1B6F13F0020FF2D1CA
-:10364000227A454B1A70A3687BB103F057FA0546FE
-:1036500006E003F053FA401B41F2883398427FD8CA
-:10366000384B1B6F13F0020FF3D0A369002B79D0F6
-:10367000344B9B6803F00C03082B75D00022374BAA
-:103680001A6003F03BFA054604E003F037FA401BEA
-:1036900064286BD82B4B1B6813F0007FF5D1A3690E
-:1036A000022B65D1216A626A47F6C07393FAA3F3CD
-:1036B000B3FA83F3DBB29A401143A36A5B08013B80
-:1036C0004FF4403292FAA2F2B2FA82F2D2B29340AE
-:1036D0000B43E2691343E26A4FF0706191FAA1F182
-:1036E000B1FA81F1C9B28A40134343F00053154A3D
-:1036F00053600122194B1A6003F000FA044604E0FB
-:1037000003F0FCF9001B642834D80E4B1B6813F03F
-:10371000007FF5D0002038BD012038BD012038BD24
-:10372000032038BD032038BD012038BD032038BD3B
-:10373000032038BD032038BD032038BD032038BD29
-:10374000032038BD003802400238024000004742E2
-:10375000800E4742007000407038024060004742CF
-:10376000032038BD002038BD012038BD032038BDFE
-:10377000002038BD032038BD70B504460D46874B88
-:103780001B6803F00F038B426BD2CAB2834B1A70D3
-:103790001B6803F00F038B4240F0E480036813F0D2
-:1037A000020F06D07E498B6823F0F0028368134332
-:1037B0008B60236813F0010F00F0B8806268012A63
-:1037C00005D1774B1B6813F4003F0ED1CCE0022AE1
-:1037D00005D1734B1B6813F0007F06D1C6E0704B18
-:1037E0001B6813F0020F00F0C3806D498B6823F053
-:1037F000030313438B6003F081F905466368012BD3
-:103800000FD107E003F07AF9401B41F28833984268
-:1038100000F2B080624B9B6803F00C03042BF1D1E3
-:1038200084E0022B17D107E003F068F9401B41F256
-:103830008833984200F2A080594B9B6803F00C0338
-:10384000082BF1D172E003F059F9401B41F28833A3
-:10385000984200F29380524B9B6813F00C0FF2D108
-:1038600064E0036813F0020F06D04D498B6823F023
-:10387000F002836813438B60236813F0010F4DD06F
-:103880006268012A05D1464B1B6813F4003F0DD135
-:1038900076E0022A05D1424B1B6813F0007F05D168
-:1038A00070E03F4B1B6813F0020F6DD03C498B68F2
-:1038B00023F0030313438B6003F020F9064663688B
-:1038C000012B0ED106E003F019F9801B41F2883379
-:1038D00098425BD8324B9B6803F00C03042BF2D167
-:1038E0001CE0022B15D106E003F008F9801B41F221
-:1038F000883398424CD82A4B9B6803F00C03082B62
-:10390000F2D10BE003F0FAF8801B41F288339842C1
-:1039100040D8234B9B6813F00C0FF3D1EAB21F4B36
-:103920001A701B6803F00F03AB4235D1236813F004
-:10393000040F06D01A498B6823F4E052E36813435E
-:103940008B60236813F0080F07D0154A936823F49F
-:103950006043216943EAC1039360002003F09EF8AD
-:10396000002070BD012070BD012070BD012070BD20
-:10397000012070BD032070BD032070BD032070BD09
-:10398000012070BD012070BD012070BD032070BDFD
-:10399000032070BD032070BD012070BD003C0240BB
-:1039A00000380240224B9B6803F00C03042B3DD0EF
-:1039B000082B01D01F4870471D4B586800F03F008E
-:1039C0005B6813F4800F10D01B4BB3FBF0F3184A65
-:1039D000506847F6C072104092FAA2F2B2FA82F230
-:1039E000D2B2D04000FB03F30FE0124BB3FBF0F375
-:1039F0000F4A506847F6C072104092FAA2F2B2FA2B
-:103A000082F2D2B2D04000FB03F3094A506800F4BE
-:103A100040304FF4403292FAA2F2B2FA82F2D2B2BD
-:103A2000D04001304000B3FBF0F0704702487047CF
-:103A3000003802400024F40000127A0008B5FFF7B5
-:103A4000B1FF094B9B6803F0F002F02393FAA3F354
-:103A5000B3FA83F3DBB222FA03F3044AD35CD8400F
-:103A6000034B186008BD00BF00380240D46D000849
-:103A7000DC00002030B40468636A19B943EA0240EC
-:103A8000A06218E00D46A06A03EB1040002308E096
-:103A900003F1400104EB8101496800EB114001335F
-:103AA000DBB2691E8B42F3DB40EA024005F13F01C5
-:103AB00004EB81014860002030BC70470368596204
-:103AC000002070472DE9F04383B007460E46D0F83A
-:103AD0000080CB005B1A9B0003445D6C9A6CAD1AAE
-:103AE0009B6B9D4200D91D46EB1C00D503339B10F8
-:103AF0001BE0F400A41BA4003C44E16B3B7C00935E
-:103B00004046F2B2ABB2FEF701FFE36B2B44E36336
-:103B1000A36C1D44A564636C5D1BA36B9D4200D91F
-:103B20001D46EB1C00D503339B10414608EB4612A3
-:103B300002F51062926992B29A4209D3F3009B1B7C
-:103B40009B003B449A6C5B6C9A4201D2002BD0D113
-:103B5000002D0ADC0123B340D1F8342822EA030304
-:103B6000C1F834383846FCF7F9FB002003B0BDE853
-:103B7000F08300BF002869D0F0B589B00446032364
-:103B800080F87933FCF752FB2068FEF787FC254666
-:103B900055F8107B6E460FCD0FC695E80F0086E8EE
-:103BA0000F00231D0ECB3846FEF736FC206800219F
-:103BB000FEF77AFC002210E0D3009B1A9B002344FE
-:103BC000012183F8311083F83020DA86002183F850
-:103BD00033109963D963596401320E2AECD900225B
-:103BE00018E0D3009B1A9B002344002183F8D511D1
-:103BF00083F8D421DA8683F8D711C3F8DC11C3F82F
-:103C0000E011C3F8E811236802F1400003EB8003E0
-:103C1000596001320E2AE4D9254655F8107B6E46CC
-:103C20000FCD0FC695E80F0086E80F00231D0ECBC1
-:103C30003846FEF779FC012384F87933002584F8AF
-:103C400078532068FFF730F8284601E001207047DC
-:103C500009B0F0BD90F87833012B0ED010B50446B2
-:103C6000012380F878330068FFF712F82068FEF728
-:103C70000FFC002084F8780310BD0220704700BFBD
-:103C80002DE9F84F044606683046FFF749F800284A
-:103C900040F01B822068FFF713F8002800F015821F
-:103CA0002068FFF70DF810F0020F02D023680222FF
-:103CB0005A612068FFF704F810F4002F5CD02068E8
-:103CC000FFF702F80746002553E017F0010F4ED02A
-:103CD0005FFA85F920684946FFF706F8804610F03C
-:103CE000010F31D006EB45130122C3F8082B03F571
-:103CF00030632269012A12D1EA00521B9200224449
-:103D000002F5EC71D2F8DC011B69C3F31203C01A8F
-:103D1000C2F8EC01D2F8E0214B6813448B602046D6
-:103D20004946FCF7B9FA2369012B0DD165B9C5EBFA
-:103D3000C5039B002344D3F8E8312BB92068012147
-:103D400004F55F72FFF70CF818F0080F07D0204653
-:103D5000FCF798FA06EB45130822C3F8082B18F075
-:103D6000100F04D006EB45131022C3F8082B0135C1
-:103D70007F08002FA9D100E000252068FEF7A0FFF2
-:103D800010F4802F6BD02068FEF7A6FF07460025B1
-:103D900063E017F0010F5ED05FFA85F920684946AD
-:103DA000FEF7ACFF804610F0010F2DD0012202FA81
-:103DB00005F0D6F8343823EA0003C6F8343806EBA9
-:103DC0004513C3F808292369934209D1EB005B1B13
-:103DD0009B00234403F13802D96B9B6B0B44536067
-:103DE00020464946FCF764FA2369012B0CD15DB9E2
-:103DF000C5EBC5039B0023445B6C2BB920680121F4
-:103E000004F55F72FEF7ACFF18F0080F04D006EB64
-:103E100045130822C3F8082918F0100F04D006EB48
-:103E200045131022C3F8082918F0400F04D006EB00
-:103E300045134022C3F8082918F0020F04D006EBFE
-:103E400045130222C3F8082918F0800F03D020463A
-:103E50002946FFF737FE01357F08002F99D12068EA
-:103E6000FEF72EFF00280CDAD6F8043823F0010301
-:103E7000C6F804382046FCF74BFA23684FF000429E
-:103E80005A612068FEF71CFF10F4006F0BD0D6F8C3
-:103E9000083813F0010F02D02046FCF72BFA2368F4
-:103EA0004FF400625A612068FEF70AFF10F4805F49
-:103EB0004ED0374606F50068D8F8043023F00103E9
-:103EC000C8F8043020680021FEF704FB002207E058
-:103ED00007EB4213FF21C3F80819C3F8081B01328E
-:103EE00063689342F4D84FF0FF33C8F81830D8F81D
-:103EF0001C3043F00113C8F81C30A36A63B1D8F832
-:103F0000843043F00B03C8F88430D8F8443043F0D1
-:103F10000B03C8F844300BE0D8F8143043F00B031F
-:103F2000C8F81430D8F8103043F00B03C8F810303C
-:103F3000D6F8003823F4FE63C6F800382068217CE8
-:103F400004F55F72FEF70CFF23684FF480525A614C
-:103F50002068FEF7B5FE10F4005F26D02068FEF75B
-:103F6000E3FE2268D36823F47053D3602068FEF721
-:103F70007DFB50B90023E3604FF400736361226856
-:103F8000D36843F41053D36008E00323E360402375
-:103F900063612268D36843F4A053D3602046FCF7E2
-:103FA00099F923684FF400525A612068FEF788FEA1
-:103FB00010F0100F42D02268936923F01003936130
-:103FC000376A07F00F08C7F34343022B1CD147F6AB
-:103FD000F0731F402DD03F094FEAC809C8EB090A0A
-:103FE0004FEA8A0AA2443046DAF8E0113A46FEF770
-:103FF000CDFDDAF8E0313B44CAF8E031DAF8EC31D3
-:104000001F44CAF8EC7114E0062B12D1304604F5B7
-:104010005F710822FEF7BAFDC7F30A174FEAC8031B
-:10402000C8EB030292002244D2F8EC313B44C2F8C0
-:10403000EC312268936943F0100393612068FEF726
-:104040003FFE10F0080F05D02046FCF73DF923682D
-:1040500008225A612068FEF733FE10F4801F07D053
-:104060002046E9B2FCF768F923684FF480125A61E0
-:104070002068FEF725FE10F4001F07D02046E9B2A5
-:10408000FCF754F923684FF400125A612068FEF7D8
-:1040900017FE10F0804F06D02046FCF753F9236836
-:1040A0004FF080425A612068FEF70AFE10F0040FBC
-:1040B0000BD023685D6815F0040F02D02046FCF792
-:1040C00047F923685A6815435D60BDE8F88F00BF63
-:1040D00090F87833012B0BD010B50446012380F8FB
-:1040E00078330068FEF7C4FD002084F8780310BD23
-:1040F0000220704738B50546C8B210F0800F07D0CF
-:1041000001F07F04C4EBC404A40030342C4407E065
-:1041100001F07F04C4EBC404A4002C4404F5EA7449
-:1041200001F07F012170C0096070A260E37000B1EE
-:10413000E180022B01D10023237195F87833012B04
-:104140000AD0012385F8783328682146FEF7AEFAB5
-:10415000002085F8780338BD022038BD10B504462C
-:10416000CAB212F0800F07D001F07F03C3EBC30384
-:104170009B003033034407E001F07F03C3EBC3032C
-:104180009B00034403F5EA7301F07F011970D20923
-:104190005A7094F87823012A0AD0012284F87823EF
-:1041A00020681946FEF7C8FA002084F8780310BD8D
-:1041B000022010BD70B501F07F06F400A51BAD0014
-:1041C000054405F5EA712C46C5F8E021C5F8E8314B
-:1041D0000023C4F8EC3184F8D53184F8D461036944
-:1041E000012B05D1C6EBC604A4000444C4F8E421A5
-:1041F00090F87823012A11D00446012280F8782310
-:1042000026B90068DAB2FEF7D5FA03E00068DAB240
-:10421000FEF790FB002084F8780370BD022070BD8B
-:1042200001F07F01C1EBC10189000844B0F8EC0145
-:10423000704700BF70B501F07F06F400A51BAD000C
-:1042400030354119A41BA4000444E26363640023D5
-:10425000A364012384F8313084F830600369012BB2
-:1042600004D1C6EBC604A4000444226490F8782369
-:10427000012A11D00446012280F8782326B900686B
-:10428000DAB2FEF797FA03E00068DAB2FEF752FB03
-:10429000002084F8780370BD022070BD38B5044654
-:1042A000CAB212F0800F07D001F07F03C3EBC30343
-:1042B0009B003033034405E0C1EBC1039B00034482
-:1042C00003F5EA730120987001F07F051D70D20993
-:1042D0005A7094F87823824210D084F878032068CA
-:1042E0001946FEF769FC2DB92068217C04F55F7240
-:1042F000FEF736FD002084F8780338BD022038BD73
-:1043000010B50446CAB212F0800F07D001F07F0347
-:10431000C3EBC3039B003033034405E0C1EBC1038F
-:104320009B00034403F5EA730020987001F07F01BD
-:104330001970D2095A7094F87823012A0AD0012200
-:1043400084F8782320681946FEF762FC002084F880
-:10435000780310BD022010BD90F87833012B14D0E3
-:1043600010B50446012380F8783311F0800F05D092
-:10437000006801F07F01FEF7ADF802E00068FEF78B
-:10438000BBF8002084F8780310BD0220704700BFFE
-:104390002DE9F0410023D3E09C4601229A400C68AD
-:1043A0001440944240F0CB804D68022D01D0122D74
-:1043B00014D14FEAD30808F1080850F8287003F028
-:1043C000070E4FEA8E0E0F2505FA0EF527EA0506B1
-:1043D0000D6905FA0EF5354340F8285006684FEA96
-:1043E000430E032505FA0EF5ED4305EA06074E6870
-:1043F00006F0030606FA0EF63E4306604E68771E88
-:10440000012F03D9112E01D0122E12D1866805EA90
-:104410000607CE6806FA0EF63E438660476827EA2E
-:1044200002074E68C6F3001202FA0CF646EA0702CB
-:104430004260C2682A408D6805FA0EF51543C560D2
-:104440004A6812F0805F7AD0404D6A6C42F4804234
-:104450006A649A08961CA5F5803555F8266003F025
-:104460000307BF000F25BD4026EA0506384DA842C8
-:1044700031D005F58065A8422BD005F58065A842AE
-:1044800025D005F58065A8421FD005F58065A842B6
-:1044900019D005F58065A84213D005F58065A842BE
-:1044A0000DD005F58065A84207D005F58065A842C6
-:1044B00001D1082510E009250EE007250CE00625AE
-:1044C0000AE0052508E0042506E0032504E00225AE
-:1044D00002E0012500E00025BD40354302321D4EBB
-:1044E00046F822501C4A1568E24302EA05064F6866
-:1044F00017F4803F01D044EA0506174D2E606D6821
-:1045000002EA05064F6817F4003F01D044EA0506A9
-:10451000114D6E60AD6802EA05064F6817F4801F02
-:1045200001D044EA05060C4DAE60ED682A404E68A5
-:1045300016F4001F01D044EA0502074CE260013383
-:104540000F2B7FF629AFBDE8F08100BF0038024095
-:104550000000024000380140003C014030B40568D2
-:104560002C6824F480242C60046863608368402BEA
-:1045700004D103689A600368D96003E00368996016
-:104580000368DA6030BC7047002833D010B40346AB
-:10459000022280F8352004682168194A0A404068E0
-:1045A00099680843D9680843196908435969084359
-:1045B00099690843D9690843196A01430A43596A4A
-:1045C000042903D1D86A196B01430A432260196890
-:1045D0004A6922F00702586A0243042801D1986A06
-:1045E00002434A610020D864012283F8352083F811
-:1045F000340001E0012070475DF8044B704700BFB4
-:104600003F8010F038B590F83440012C2ED004468D
-:10461000012084F83400022084F8350025682868D9
-:1046200020F0010028602046FFF798FF22681368F9
-:1046300043F0100313602268136843F0080313600B
-:104640002268136843F0040313602268536943F03F
-:10465000800353612268136843F0020313602268E9
-:10466000136843F001031360002038BD022038BDF9
-:1046700010B504460368B24A934257D9583A526873
-:10468000B0498B424CD001F580618B4246D0A1F5F8
-:1046900068718B4240D001F580618B423AD0A1F520
-:1046A00089618B4233D001F580618B422CD0A1F51A
-:1046B00068718B4225D001F580618B421ED0A1F537
-:1046C00089618B4217D001F580618B4210D0A1F532
-:1046D00068718B4209D001F580618B4202D14FF4A1
-:1046E00000211EE04FF000711BE04FF4002118E0A4
-:1046F0004FF4002115E04FF4002112E04FF4007157
-:104700000FE04FF400710CE04FF4007109E04FF43A
-:10471000007106E0082104E0082102E0082100E021
-:1047200008210A4214BF0122002218E1864A93425E
-:1047300058D902F55272126882498B424CD001F569
-:1047400080618B4246D0A1F568718B4240D001F563
-:1047500080618B423AD0A1F589618B4233D001F55B
-:1047600080618B422CD0A1F568718B4225D001F578
-:1047700080618B421ED0A1F589618B4217D001F573
-:1047800080618B4210D0A1F568718B4209D001F590
-:1047900080618B4202D14FF400211EE04FF0007186
-:1047A0001BE04FF4002118E04FF4002115E04FF416
-:1047B000002112E04FF400710FE04FF400710CE0A3
-:1047C0004FF4007109E04FF4007106E0082104E0A5
-:1047D000082102E0082100E008210A4214BF01225A
-:1047E0000022BCE0594A934257D9583A5268554979
-:1047F0008B424CD001F580618B4246D0A1F56871A7
-:104800008B4240D001F580618B423AD0A1F589619D
-:104810008B4233D001F580618B422CD0A1F56871B9
-:104820008B4225D001F580618B421ED0A1F58961B4
-:104830008B4217D001F580618B4210D0A1F56871D1
-:104840008B4209D001F580618B4202D14FF40021E7
-:104850001EE04FF000711BE04FF4002118E04FF410
-:10486000002115E04FF4002112E04FF400710FE039
-:104870004FF400710CE04FF4007109E04FF4007147
-:1048800006E0082104E0082102E0082100E00821F8
-:104890000A4214BF0122002261E02D4A1268294910
-:1048A0008B4257D001F580618B4246D0A1F56871EB
-:1048B0008B4240D001F580618B423AD0A1F58961ED
-:1048C0008B4233D001F580618B422CD0A1F5687109
-:1048D0008B4225D001F580618B421ED0A1F5896104
-:1048E0008B4217D001F580618B4210D0A1F5687121
-:1048F0008B4209D001F580618B4202D14FF4002137
-:1049000029E04FF0007126E04FF4002123E04FF43E
-:10491000002120E04FF400211DE04FF400711AE067
-:104920004FF4007117E04FF4007114E04FF4007180
-:1049300011E008210FE008210DE008210BE000BF85
-:104940005864024010600240B86002405860024063
-:104950000060024008210A4214BF01220022002AFE
-:1049600000F07D811A6812F0040F00F078811A6857
-:1049700022F004021A602368AA4A934254D9A2F58D
-:10498000896293424CD002F58062934246D0A2F5F0
-:104990006872934240D002F5806293423AD0A2F509
-:1049A0008962934233D002F5806293422CD0A2F503
-:1049B0006872934225D002F5806293421ED0A2F520
-:1049C0008962934217D002F58062934210D0A2F51B
-:1049D0006872934209D002F58062934202D14FF48B
-:1049E00000221EE04FF000721BE04FF4002218E09E
-:1049F0004FF4002215E04FF4002212E04FF4007251
-:104A00000FE04FF400720CE04FF4007209E04FF435
-:104A1000007206E0082204E0082202E0082200E01A
-:104A20000822814BDA600CE1804A934253D9A83ABC
-:104A300093424CD002F58062934246D0A2F5687250
-:104A4000934240D002F5806293423AD0A2F5896247
-:104A5000934233D002F5806293422CD0A2F5687263
-:104A6000934225D002F5806293421ED0A2F589625E
-:104A7000934217D002F58062934210D0A2F568727B
-:104A8000934209D002F58062934202D14FF4002292
-:104A90001EE04FF000721BE04FF4002218E04FF4CC
-:104AA000002215E04FF4002212E04FF400720FE0F4
-:104AB0004FF400720CE04FF4007209E04FF4007202
-:104AC00006E0082204E0082202E0082200E00822B2
-:104AD000554B9A60B5E0564A934253D9483A9342AF
-:104AE0004CD002F58062934246D0A2F568729342A0
-:104AF00040D002F5806293423AD0A2F58962934297
-:104B000033D002F5806293422CD0A2F568729342B2
-:104B100025D002F5806293421ED0A2F589629342AD
-:104B200017D002F58062934210D0A2F568729342CA
-:104B300009D002F58062934202D14FF400221EE0B8
-:104B40004FF000721BE04FF4002218E04FF40022F7
-:104B500015E04FF4002212E04FF400720FE04FF422
-:104B600000720CE04FF4007209E04FF4007206E0AE
-:104B7000082204E0082202E0082200E008222D4B6F
-:104B8000DA605EE02C4A934258D002F5806293428C
-:104B900046D0A2F56872934240D002F580629342FB
-:104BA0003AD0A2F58962934233D002F580629342F3
-:104BB0002CD0A2F56872934225D002F58062934210
-:104BC0001ED0A2F58962934217D002F5806293420B
-:104BD00010D0A2F56872934209D002F58062934228
-:104BE00002D14FF400222AE04FF0007227E04FF488
-:104BF000002224E04FF4002221E04FF400221EE0C6
-:104C00004FF400721BE04FF4007218E04FF4007292
-:104C100015E04FF4007212E0082210E008220EE0C6
-:104C200008220CE05864024000640240B860024070
-:104C30005860024000600240106002400822B24BFF
-:104C40009A60E36C43F00103E364042384F8353095
-:104C5000002384F83430A36C0BB1204698472368B6
-:104C6000AA4A934253D9583A5268A9498B4248D02C
-:104C700001F580618B4242D0A1F568718B423CD036
-:104C800001F580618B4236D0A1F589618B4230D02D
-:104C900001F580618B422AD0A1F568718B4224D046
-:104CA00001F580618B421ED0A1F589618B4217D03E
-:104CB00001F580618B4210D0A1F568718B4209D05B
-:104CC00001F580618B4202D14FF480311AE04FF43C
-:104CD000800117E04FF4803114E04FF4803111E08F
-:104CE0004FF480310EE040210CE040210AE04021E9
-:104CF00008E0402106E0874904E0864902E0854952
-:104D000000E084490A4214BF012200220DE1824AD8
-:104D1000934254D902F5527212687D498B4248D0B1
-:104D200001F580618B4242D0A1F568718B423CD085
-:104D300001F580618B4236D0A1F589618B4230D07C
-:104D400001F580618B422AD0A1F568718B4224D095
-:104D500001F580618B421ED0A1F589618B4217D08D
-:104D600001F580618B4210D0A1F568718B4209D0AA
-:104D700001F580618B4202D14FF480311AE04FF48B
-:104D8000800117E04FF4803114E04FF4803111E0DE
-:104D90004FF480310EE040210CE040210AE0402138
-:104DA00008E0402106E05B4904E05A4902E0594925
-:104DB00000E058490A4214BF01220022B5E0574AD8
-:104DC000934253D9583A526851498B4248D001F521
-:104DD00080618B4242D0A1F568718B423CD001F5D5
-:104DE00080618B4236D0A1F589618B4230D001F5CC
-:104DF00080618B422AD0A1F568718B4224D001F5E5
-:104E000080618B421ED0A1F589618B4217D001F5DC
-:104E100080618B4210D0A1F568718B4209D001F5F9
-:104E200080618B4202D14FF480311AE04FF480014F
-:104E300017E04FF4803114E04FF4803111E04FF46B
-:104E400080310EE040210CE040210AE0402108E0E2
-:104E5000402106E02F4904E02E4902E02D4900E000
-:104E60002C490A4214BF012200225EE0264A126841
-:104E700027498B4254D001F580618B4242D0A1F585
-:104E800068718B423CD001F580618B4236D0A1F530
-:104E900089618B4230D001F580618B422AD0A1F527
-:104EA00068718B4224D001F580618B421ED0A1F540
-:104EB00089618B4217D001F580618B4210D0A1F53A
-:104EC00068718B4209D001F580618B4202D14FF4A9
-:104ED000803126E04FF4800123E04FF4803120E060
-:104EE0004FF480311DE04FF480311AE0402118E08A
-:104EF000402116E0402114E0402112E0054910E075
-:104F000004490EE003490CE000600240586402408E
-:104F10001060024001008000B8600240586002400A
-:104F2000AB490A4214BF01220022002A00F06F811F
-:104F30005A6912F0800F00F06A815A6922F08002EB
-:104F40005A612368A34A934250D9A2F589629342D9
-:104F500048D002F58062934242D0A2F56872934233
-:104F60003CD002F58062934236D0A2F5896293422A
-:104F700030D002F5806293422AD0A2F56872934243
-:104F800024D002F5806293421ED0A2F5896293423A
-:104F900017D002F58062934210D0A2F56872934256
-:104FA00009D002F58062934202D14FF480321AE0B8
-:104FB0004FF4800217E04FF4803214E04FF4803257
-:104FC00011E04FF480320EE040220CE040220AE073
-:104FD000402208E0402206E07D4A04E07C4A02E0EC
-:104FE0007B4A00E07A4A7C4BDA6002E17B4A9342DA
-:104FF0004FD9A83A934248D002F58062934242D0FA
-:10500000A2F5687293423CD002F58062934236D09A
-:10501000A2F58962934230D002F5806293422AD091
-:10502000A2F56872934224D002F5806293421ED0AA
-:10503000A2F58962934217D002F58062934210D0A4
-:10504000A2F56872934209D002F58062934202D1C0
-:105050004FF480321AE04FF4800217E04FF48032B0
-:1050600014E04FF4803211E04FF480320EE0402221
-:105070000CE040220AE0402208E0402206E0544AC8
-:1050800004E0534A02E0524A00E0514A524B9A600F
-:10509000AFE0534A93424FD9483A934248D002F581
-:1050A0008062934242D0A2F5687293423CD002F5EE
-:1050B0008062934236D0A2F58962934230D002F5E5
-:1050C000806293422AD0A2F56872934224D002F5FE
-:1050D000806293421ED0A2F58962934217D002F5F6
-:1050E0008062934210D0A2F56872934209D002F513
-:1050F0008062934202D14FF480321AE04FF4800272
-:1051000017E04FF4803214E04FF4803211E04FF496
-:1051100080320EE040220CE040220AE0402208E00B
-:10512000402206E02A4A04E0294A02E0284A00E038
-:10513000274A2C4BDA605CE02B4A934256D002F5AA
-:105140008062934242D0A2F5687293423CD002F54D
-:105150008062934236D0A2F58962934230D002F544
-:10516000806293422AD0A2F56872934224D002F55D
-:10517000806293421ED0A2F58962934217D002F555
-:105180008062934210D0A2F56872934209D002F572
-:105190008062934202D14FF4803228E04FF48002C3
-:1051A00025E04FF4803222E04FF480321FE04FF4CC
-:1051B00080321CE040221AE0402218E0402216E033
-:1051C000402214E0024A12E0014A10E0004A0EE0D8
-:1051D000010080005864024000640240B860024050
-:1051E000586002400060024010600240B44AB54B73
-:1051F0009A60E36C43F00203E364042384F83530DF
-:10520000002384F83430A36C0BB120469847236800
-:10521000AD4A934257D9583A5268AC498B424CD068
-:1052200001F580618B4246D0A1F568718B4240D078
-:1052300001F580618B423AD0A1F589618B4233D070
-:1052400001F580618B422CD0A1F568718B4225D08D
-:1052500001F580618B421ED0A1F589618B4217D088
-:1052600001F580618B4210D0A1F568718B4209D0A5
-:1052700001F580618B4202D14FF480211EE04FF096
-:1052800080711BE04FF4802118E04FF4802115E07D
-:105290004FF4802112E04FF480710FE04FF48071E1
-:1052A0000CE04FF4807109E04FF4807106E088490A
-:1052B00004E0874902E0864900E085490A4214BFBC
-:1052C000012200221BE1834A934258D902F552720F
-:1052D00012687E498B424CD001F580618B4246D0EA
-:1052E000A1F568718B4240D001F580618B423AD0C4
-:1052F000A1F589618B4233D001F580618B422CD0BE
-:10530000A1F568718B4225D001F580618B421ED0DA
-:10531000A1F589618B4217D001F580618B4210D0D5
-:10532000A1F568718B4209D001F580618B4202D1F1
-:105330004FF480211EE04FF080711BE04FF480217C
-:1053400018E04FF4802115E04FF4802112E04FF473
-:1053500080710FE04FF480710CE04FF4807109E030
-:105360004FF4807106E05A4904E0594902E0584977
-:1053700000E057490A4214BF01220022BFE0564A0A
-:10538000934257D9583A526850498B424CD001F554
-:1053900080618B4246D0A1F568718B4240D001F507
-:1053A00080618B423AD0A1F589618B4233D001F5FF
-:1053B00080618B422CD0A1F568718B4225D001F51C
-:1053C00080618B421ED0A1F589618B4217D001F517
-:1053D00080618B4210D0A1F568718B4209D001F534
-:1053E00080618B4202D14FF480211EE04FF080712A
-:1053F0001BE04FF4802118E04FF4802115E04FF4BA
-:10540000802112E04FF480710FE04FF480710CE0C6
-:105410004FF4807109E04FF4807106E02C4904E0FC
-:105420002B4902E02A4900E029490A4214BF01221F
-:10543000002264E0234A126824498B425AD001F5C5
-:1054400080618B4254D0A1F568718B424ED001F53A
-:1054500080618B4248D0A1F589618B4241D001F532
-:1054600080618B423AD0A1F568718B4225D001F55D
-:1054700080618B421ED0A1F589618B4217D001F566
-:1054800080618B4210D0A1F568718B4209D001F583
-:1054900080618B4202D14FF480212CE04FF080716B
-:1054A00029E04FF4802126E04FF4802123E04FF4DF
-:1054B000802120E04FF480711DE04FF480711AE0EC
-:1054C0000100800000600240586402401060024009
-:1054D00004008000B8600240586002404FF48071C0
-:1054E00009E04FF4807106E0B54904E0B44902E0F8
-:1054F000B34900E0B2490A4214BF01220022002A47
-:1055000000F07F811A6812F0020F00F07A811A68A9
-:1055100022F002021A602368AA4A934254D9A2F5E3
-:10552000896293424CD002F58062934246D0A2F544
-:105530006872934240D002F5806293423AD0A2F55D
-:105540008962934233D002F5806293422CD0A2F557
-:105550006872934225D002F5806293421ED0A2F574
-:105560008962934217D002F58062934210D0A2F56F
-:105570006872934209D002F58062934202D14FF4DF
-:1055800080221EE04FF080721BE04FF4802218E072
-:105590004FF4802215E04FF4802212E04FF4807225
-:1055A0000FE04FF480720CE04FF4807209E04FF48A
-:1055B000807206E0824A04E0814A02E0804A00E00C
-:1055C0007F4A814BDA600EE1804A934253D9A83A70
-:1055D00093424CD002F58062934246D0A2F56872A5
-:1055E000934240D002F5806293423AD0A2F589629C
-:1055F000934233D002F5806293422CD0A2F56872B8
-:10560000934225D002F5806293421ED0A2F58962B2
-:10561000934217D002F58062934210D0A2F56872CF
-:10562000934209D002F58062934202D14FF4802266
-:105630001EE04FF080721BE04FF4802218E04FF420
-:10564000802215E04FF4802212E04FF480720FE0C8
-:105650004FF480720CE04FF4807209E04FF48072D6
-:1056600006E0574A04E0564A02E0554A00E0544A30
-:10567000554B9A60B7E0564A934253D9483A934201
-:105680004CD002F58062934246D0A2F568729342F4
-:1056900040D002F5806293423AD0A2F589629342EB
-:1056A00033D002F5806293422CD0A2F56872934207
-:1056B00025D002F5806293421ED0A2F58962934202
-:1056C00017D002F58062934210D0A2F5687293421F
-:1056D00009D002F58062934202D14FF480221EE08D
-:1056E0004FF080721BE04FF4802218E04FF48022CC
-:1056F00015E04FF4802212E04FF480720FE04FF477
-:1057000080720CE04FF4807209E04FF4807206E082
-:105710002B4A04E02A4A02E0294A00E0284A2D4B9D
-:10572000DA6060E02C4A93425AD002F580629342DC
-:1057300054D0A2F56872934240D002F58062934241
-:105740003AD0A2F58962934233D002F58062934247
-:105750002CD0A2F56872934225D002F58062934264
-:105760001ED0A2F58962934217D002F5806293425F
-:1057700010D0A2F56872934209D002F5806293427C
-:1057800002D14FF480222CE04FF0807229E04FF4D8
-:10579000802226E04FF4802223E04FF4802220E094
-:1057A0004FF480721DE04FF480721AE04FF4807263
-:1057B00017E04FF4807214E0014A12E0004A10E052
-:1057C000040080005864024000640240B860024057
-:1057D000586002400060024010600240B84A00E099
-:1057E000B74AB84B9A60E36C43F00403E3640423C4
-:1057F00084F83530002384F83430A36C0BB1204694
-:1058000098472368B04A934257D9583A5268AF49EB
-:105810008B424CD001F580618B4246D0A1F5687176
-:105820008B4240D001F580618B423AD0A1F589616D
-:105830008B4233D001F580618B422CD0A1F5687189
-:105840008B4225D001F580618B421ED0A1F5896184
-:105850008B4217D001F580618B4210D0A1F56871A1
-:105860008B4209D001F580618B4202D14FF4801147
-:105870001EE04FF080611BE04FF4801118E04FF400
-:10588000801115E04FF4801112E04FF480610FE0B9
-:105890004FF480610CE04FF4806109E04FF48061C7
-:1058A00006E0102104E0102102E0102100E01021A8
-:1058B0000A4214BF0122002219E1854A934258D9B5
-:1058C00002F55272126881498B424CD001F5806119
-:1058D0008B4246D0A1F568718B4240D001F58061C2
-:1058E0008B423AD0A1F589618B4233D001F58061BA
-:1058F0008B422CD0A1F568718B4225D001F58061D7
-:105900008B421ED0A1F589618B4217D001F58061D1
-:105910008B4210D0A1F568718B4209D001F58061EE
-:105920008B4202D14FF480111EE04FF080611BE0EA
-:105930004FF4801118E04FF4801115E04FF48011FE
-:1059400012E04FF480610FE04FF480610CE04FF4FF
-:10595000806109E04FF4806106E0102104E010212D
-:1059600002E0102100E010210A4214BF01220022AF
-:10597000BDE0584A934257D9583A526853498B422E
-:105980004CD001F580618B4246D0A1F568718B4205
-:1059900040D001F580618B423AD0A1F589618B42FC
-:1059A00033D001F580618B422CD0A1F568718B4218
-:1059B00025D001F580618B421ED0A1F589618B4213
-:1059C00017D001F580618B4210D0A1F568718B4230
-:1059D00009D001F580618B4202D14FF480111EE0A5
-:1059E0004FF080611BE04FF4801118E04FF48011FC
-:1059F00015E04FF4801112E04FF480610FE04FF496
-:105A000080610CE04FF4806109E04FF4806106E0B2
-:105A1000102104E0102102E0102100E010210A42D0
-:105A200014BF0122002262E0264A126827498B42F5
-:105A300058D001F580618B4252D0A1F568718B423C
-:105A40004CD001F580618B4246D0A1F589618B4233
-:105A500033D001F580618B422CD0A1F568718B4267
-:105A600025D001F580618B421ED0A1F589618B4262
-:105A700017D001F580618B4210D0A1F568718B427F
-:105A800009D001F580618B4202D14FF480112AE0E8
-:105A90004FF0806127E04FF4801124E04FF4801133
-:105AA00021E04FF480111EE04FF480611BE04FF4C1
-:105AB000806118E04FF4806115E04FF4806112E0DE
-:105AC0000400800000600240586402401060024000
-:105AD000B860024058600240102104E0102102E04A
-:105AE000102100E010210A4214BF01220022002AE6
-:105AF00000F0F8821A6812F0080F00F0F3821A68BA
-:105B000012F4802F00F07881B54A934254D9A2F55F
-:105B1000896293424CD002F58062934246D0A2F54E
-:105B20006872934240D002F5806293423AD0A2F567
-:105B30008962934233D002F5806293422CD0A2F561
-:105B40006872934225D002F5806293421ED0A2F57E
-:105B50008962934217D002F58062934210D0A2F579
-:105B60006872934209D002F58062934202D14FF4E9
-:105B700080121EE04FF080621BE04FF4801218E0AC
-:105B80004FF4801215E04FF4801212E04FF480625F
-:105B90000FE04FF480620CE04FF4806209E04FF4B4
-:105BA000806206E0102204E0102202E0102200E0F1
-:105BB00010228C4BDA6000E18B4A934253D9A83A09
-:105BC00093424CD002F58062934246D0A2F56872AF
-:105BD000934240D002F5806293423AD0A2F58962A6
-:105BE000934233D002F5806293422CD0A2F56872C2
-:105BF000934225D002F5806293421ED0A2F58962BD
-:105C0000934217D002F58062934210D0A2F56872D9
-:105C1000934209D002F58062934202D14FF4801280
-:105C20001EE04FF080621BE04FF4801218E04FF44A
-:105C3000801215E04FF4801212E04FF480620FE002
-:105C40004FF480620CE04FF4806209E04FF4806210
-:105C500006E0102204E0102202E0102200E01022F0
-:105C6000604B9A60A9E0614A934253D9483A934203
-:105C70004CD002F58062934246D0A2F568729342FE
-:105C800040D002F5806293423AD0A2F589629342F5
-:105C900033D002F5806293422CD0A2F56872934211
-:105CA00025D002F5806293421ED0A2F5896293420C
-:105CB00017D002F58062934210D0A2F56872934229
-:105CC00009D002F58062934202D14FF480131EE0A6
-:105CD0004FF080631BE04FF4801318E04FF4801303
-:105CE00015E04FF4801312E04FF480630FE04FF49F
-:105CF00080630CE04FF4806309E04FF4806306E0BA
-:105D0000102304E0102302E0102300E01023384A9F
-:105D1000D36052E0374A93424CD002F580629342FE
-:105D200046D0A2F56872934240D002F58062934259
-:105D30003AD0A2F58962934233D002F58062934251
-:105D40002CD0A2F56872934225D002F5806293426E
-:105D50001ED0A2F58962934217D002F58062934269
-:105D600010D0A2F56872934209D002F58062934286
-:105D700002D14FF480131EE04FF080631BE04FF41C
-:105D8000801318E04FF4801315E04FF4801312E0F5
-:105D90004FF480630FE04FF480630CE04FF48063B6
-:105DA00009E04FF4806306E0102304E0102302E0D2
-:105DB000102300E010230E4A936023681A6812F43F
-:105DC000002F03D1312384F8353087E11B6813F4A9
-:105DD000002F00F08381412384F835307EE100BF3D
-:105DE0005864024000640240B860024058600240BB
-:105DF00000600240106002401A6812F4807F03D1F4
-:105E00001A6822F008021A602368AB4A934254D9F8
-:105E1000A2F5896293424CD002F58062934246D04B
-:105E2000A2F56872934240D002F5806293423AD064
-:105E3000A2F58962934233D002F5806293422CD05E
-:105E4000A2F56872934225D002F5806293421ED07B
-:105E5000A2F58962934217D002F58062934210D076
-:105E6000A2F56872934209D002F58062934202D192
-:105E70004FF480121EE04FF080621BE04FF480125E
-:105E800018E04FF4801215E04FF4801212E04FF446
-:105E900080620FE04FF480620CE04FF4806209E012
-:105EA0004FF4806206E0102204E0102202E010228B
-:105EB00000E01022814BDA600DE1814A934253D910
-:105EC000A83A93424CD002F58062934246D0A2F5A4
-:105ED0006872934240D002F5806293423AD0A2F5B4
-:105EE0008962934233D002F5806293422CD0A2F5AE
-:105EF0006872934225D002F5806293421ED0A2F5CB
-:105F00008962934217D002F58062934210D0A2F5C5
-:105F10006872934209D002F58062934202D14FF435
-:105F200080121EE04FF080621BE04FF4801218E0F8
-:105F30004FF4801215E04FF4801212E04FF48062AB
-:105F40000FE04FF480620CE04FF4806209E04FF400
-:105F5000806206E0102204E0102202E0102200E03D
-:105F60001022564B9A60B6E0564A934253D9483AAB
-:105F700093424CD002F58062934246D0A2F56872FB
-:105F8000934240D002F5806293423AD0A2F58962F2
-:105F9000934233D002F5806293422CD0A2F568720E
-:105FA000934225D002F5806293421ED0A2F5896209
-:105FB000934217D002F58062934210D0A2F5687226
-:105FC000934209D002F58062934202D14FF48013CC
-:105FD0001EE04FF080631BE04FF4801318E04FF495
-:105FE000801315E04FF4801312E04FF480630FE04C
-:105FF0004FF480630CE04FF4806309E04FF480635A
-:1060000006E0102304E0102302E0102300E0102338
-:106010002D4AD3605FE02D4A934259D002F5806249
-:10602000934246D0A2F56872934240D002F5806256
-:1060300093423AD0A2F58962934233D002F580624E
-:1060400093422CD0A2F56872934225D002F580626B
-:1060500093421ED0A2F58962934217D002F5806266
-:10606000934210D0A2F56872934209D002F5806283
-:10607000934202D14FF480132BE04FF0806328E06D
-:106080004FF4801325E04FF4801322E04FF4801387
-:106090001FE04FF480631CE04FF4806319E04FF47D
-:1060A000806316E04FF4806313E0102311E01023A7
-:1060B0000FE010230DE000BF58640240006402406E
-:1060C000B860024058600240006002401060024028
-:1060D0001023B74A9360312384F83530236C0BB119
-:1060E000204698472368B34A934257D9583A526892
-:1060F000B1498B424CD001F580618B4246D0A1F56D
-:1061000068718B4240D001F580618B423AD0A1F595
-:1061100089618B4233D001F580618B422CD0A1F58F
-:1061200068718B4225D001F580618B421ED0A1F5AC
-:1061300089618B4217D001F580618B4210D0A1F5A7
-:1061400068718B4209D001F580618B4202D14FF416
-:1061500000111EE04FF000611BE04FF4001118E049
-:106160004FF4001115E04FF4001112E04FF40061FC
-:106170000FE04FF400610CE04FF4006109E04FF4D0
-:10618000006106E0202104E0202102E0202100E05F
-:1061900020210A4214BF0122002218E1874A9342BB
-:1061A00058D902F55272126883498B424CD001F5DE
-:1061B00080618B4246D0A1F568718B4240D001F5D9
-:1061C00080618B423AD0A1F589618B4233D001F5D1
-:1061D00080618B422CD0A1F568718B4225D001F5EE
-:1061E00080618B421ED0A1F589618B4217D001F5E9
-:1061F00080618B4210D0A1F568718B4209D001F506
-:1062000080618B4202D14FF400111EE04FF000611B
-:106210001BE04FF4001118E04FF4001115E04FF4AB
-:10622000001112E04FF400610FE04FF400610CE048
-:106230004FF4006109E04FF4006106E0202104E022
-:10624000202102E0202100E020210A4214BF012287
-:106250000022BCE05A4A934257D9583A52685649EC
-:106260008B424CD001F580618B4246D0A1F568711C
-:106270008B4240D001F580618B423AD0A1F5896113
-:106280008B4233D001F580618B422CD0A1F568712F
-:106290008B4225D001F580618B421ED0A1F589612A
-:1062A0008B4217D001F580618B4210D0A1F5687147
-:1062B0008B4209D001F580618B4202D14FF400116D
-:1062C0001EE04FF000611BE04FF4001118E04FF4A6
-:1062D000001115E04FF4001112E04FF400610FE0DF
-:1062E0004FF400610CE04FF4006109E04FF40061ED
-:1062F00006E0202104E0202102E0202100E020210E
-:106300000A4214BF0122002261E0294A12682A4988
-:106310008B4257D001F580618B4246D0A1F5687160
-:106320008B4240D001F580618B423AD0A1F5896162
-:106330008B4233D001F580618B422CD0A1F568717E
-:106340008B4225D001F580618B421ED0A1F5896179
-:106350008B4217D001F580618B4210D0A1F5687196
-:106360008B4209D001F580618B4202D14FF40011BC
-:1063700029E04FF0006126E04FF4001123E04FF4D4
-:10638000001120E04FF400111DE04FF400611AE00D
-:106390004FF4006117E04FF4006114E04FF4006126
-:1063A00011E020210FE020210DE020210BE000BFB3
-:1063B000006002405864024010600240B860024031
-:1063C0005860024020210A4214BF01220022002A04
-:1063D00000F0F6821A6812F0100F00F0F1821A68CD
-:1063E00012F4802F00F07E81B84A934254D9A2F56E
-:1063F000896293424CD002F58062934246D0A2F566
-:106400006872934240D002F5806293423AD0A2F57E
-:106410008962934233D002F5806293422CD0A2F578
-:106420006872934225D002F5806293421ED0A2F595
-:106430008962934217D002F58062934210D0A2F590
-:106440006872934209D002F58062934202D14FF400
-:1064500000121EE04FF000621BE04FF4001218E043
-:106460004FF4001215E04FF4001212E04FF40062F6
-:106470000FE04FF400620CE04FF4006209E04FF4CB
-:10648000006206E0202204E0202202E0202200E058
-:1064900020228F4BDA6000E18E4A934253D9A83A0A
-:1064A00093424CD002F58062934246D0A2F56872C6
-:1064B000934240D002F5806293423AD0A2F58962BD
-:1064C000934233D002F5806293422CD0A2F56872D9
-:1064D000934225D002F5806293421ED0A2F58962D4
-:1064E000934217D002F58062934210D0A2F56872F1
-:1064F000934209D002F58062934202D14FF4001218
-:106500001EE04FF000621BE04FF4001218E04FF461
-:10651000001215E04FF4001212E04FF400620FE099
-:106520004FF400620CE04FF4006209E04FF40062A7
-:1065300006E0202204E0202202E0202200E02022C7
-:10654000634B9A60A9E0644A934253D9483A934214
-:106550004CD002F58062934246D0A2F56872934215
-:1065600040D002F5806293423AD0A2F5896293420C
-:1065700033D002F5806293422CD0A2F56872934228
-:1065800025D002F5806293421ED0A2F58962934223
-:1065900017D002F58062934210D0A2F56872934240
-:1065A00009D002F58062934202D14FF400131EE03D
-:1065B0004FF000631BE04FF4001318E04FF400139A
-:1065C00015E04FF4001312E04FF400630FE04FF4B6
-:1065D00000630CE04FF4006309E04FF4006306E051
-:1065E000202304E0202302E0202300E020233B4A74
-:1065F000D36052E03A4A93424CD002F58062934213
-:1066000046D0A2F56872934240D002F58062934270
-:106610003AD0A2F58962934233D002F58062934268
-:106620002CD0A2F56872934225D002F58062934285
-:106630001ED0A2F58962934217D002F58062934280
-:1066400010D0A2F56872934209D002F5806293429D
-:1066500002D14FF400131EE04FF000631BE04FF433
-:10666000001318E04FF4001315E04FF4001312E08C
-:106670004FF400630FE04FF400630CE04FF400634D
-:1066800009E04FF4006306E0202304E0202302E049
-:10669000202300E02023114A936023681A6812F433
-:1066A000002F06D1636C002B00F08A8120469847AA
-:1066B00010BD1B6813F4002F00F08281E36B002BE8
-:1066C00000F07E812046984710BD00BF586402400C
-:1066D00000640240B860024058600240006002401E
-:1066E000106002401A6812F4807F03D11A6822F009
-:1066F00010021A602368B34A934254D9A2F5896202
-:1067000093424CD002F58062934246D0A2F5687263
-:10671000934240D002F5806293423AD0A2F589625A
-:10672000934233D002F5806293422CD0A2F5687276
-:10673000934225D002F5806293421ED0A2F5896271
-:10674000934217D002F58062934210D0A2F568728E
-:10675000934209D002F58062934202D14FF40012B5
-:106760001EE04FF000621BE04FF4001218E04FF4FF
-:10677000001215E04FF4001212E04FF400620FE037
-:106780004FF400620CE04FF4006209E04FF4006245
-:1067900006E0202204E0202202E0202200E0202265
-:1067A000894BDA6000E1894A934253D9A83A93426F
-:1067B0004CD002F58062934246D0A2F568729342B3
-:1067C00040D002F5806293423AD0A2F589629342AA
-:1067D00033D002F5806293422CD0A2F568729342C6
-:1067E00025D002F5806293421ED0A2F589629342C1
-:1067F00017D002F58062934210D0A2F568729342DE
-:1068000009D002F58062934202D14FF400121EE0DB
-:106810004FF000621BE04FF4001218E04FF400123A
-:1068200015E04FF4001212E04FF400620FE04FF455
-:1068300000620CE04FF4006209E04FF4006206E0F1
-:10684000202204E0202202E0202200E020225E4BF1
-:106850009A60A9E05E4A934253D9483A93424CD099
-:1068600002F58062934246D0A2F56872934240D00E
-:1068700002F5806293423AD0A2F58962934233D006
-:1068800002F5806293422CD0A2F56872934225D023
-:1068900002F5806293421ED0A2F58962934217D01E
-:1068A00002F58062934210D0A2F56872934209D03B
-:1068B00002F58062934202D14FF400131EE04FF0C4
-:1068C00000631BE04FF4001318E04FF4001315E0D1
-:1068D0004FF4001312E04FF400630FE04FF4006335
-:1068E0000CE04FF4006309E04FF4006306E020235E
-:1068F00004E0202302E0202300E02023354AD36077
-:1069000052E0354A93424CD002F58062934246D021
-:10691000A2F56872934240D002F5806293423AD069
-:10692000A2F58962934233D002F5806293422CD063
-:10693000A2F56872934225D002F5806293421ED080
-:10694000A2F58962934217D002F58062934210D07B
-:10695000A2F56872934209D002F58062934202D197
-:106960004FF400131EE04FF000631BE04FF40013E0
-:1069700018E04FF4001315E04FF4001312E04FF449
-:1069800000630FE04FF400630CE04FF4006309E094
-:106990004FF4006306E0202304E0202302E02023DC
-:1069A00000E020230B4A9360E36CE364112384F836
-:1069B0003530002384F83430E36B0BB12046984720
-:1069C00010BD00BF5864024000640240B86002403D
-:1069D00058600240006002401060024000F0070072
-:1069E000064AD36823F4E0631B041B0C43EA00202F
-:1069F00040F0BF6040F40030D060704700ED00E030
-:106A000030B4164BDC68C4F30224C4F10705042D2E
-:106A100028BF0425231D062B01D9033C00E00024D8
-:106A2000012303FA05F5013D2940A140A340013BA4
-:106A30001A400A43002806DA00F00F001201D2B211
-:106A4000074B1A5407E01201D2B200F1604000F582
-:106A5000614080F8002330BC704700BF00ED00E0CB
-:106A600014ED00E0410900F01F0001238340024AB9
-:106A700042F82130704700BF00E100E00138B0F17A
-:106A8000807F06D2044B58600020986007221A606D
-:106A900070470120704700BF10E000E008B5FCF728
-:106AA000CDFF044BA3FB00308009FFF7E7FF002078
-:106AB00008BD00BFD34D621008B50B4B1A6842F4F5
-:106AC00000721A601A6842F480621A601A6842F40E
-:106AD00080721A600320FFF781FF0020FFF7DEFFBE
-:106AE000F9F7DCFD002008BD003C0240024A1368B3
-:106AF00001331360704700BF4C010020014B186840
-:106B0000704700BF4C01002010B582B00190FFF724
-:106B1000F5FF0446FFF7F2FF001B019B9842F9D3F3
-:106B200002B010BD0C4B1A6842F001021A6000213D
-:106B300099601A6822F0847222F480321A60074A3F
-:106B40005A601A6822F480221A60D9604FF00062FD
-:106B5000034B9A60704700BF003802401030002499
-:106B600000ED00E0DFF830D0002103E00B4B5B5874
-:106B7000435004310A480B4B42189A42F6D30A4A52
-:106B800002E0002342F8043B084B9A42F9D3FFF796
-:106B9000C9FFF9F731FD704700C00120E66D00081C
-:106BA000000000204401002048010020A00E002029
-:106BB000FEE70000024B0146186800F04FB800BF26
-:106BC00040010020024B0146186800F003B800BFE6
-:106BD0004001002030B500293CD051F8042C0B1F97
-:106BE0001D49002AB8BF9B180A680C4612B95A60A2
-:106BF0000B6030BD93420DD219685818904201BF06
-:106C00005A5852181A60426823605A6030BD99423F
-:106C100003D80A4651680029F9D1146815199D4214
-:106C20000AD11B682344D0188842136012D1086827
-:106C3000034413604B680CE002D90C23036030BDA1
-:106C40001C681819884201BF086849680019186053
-:106C50005960536030BD00BF5401002070B5CC1C9A
-:106C600024F0030408340C2C38BF0C24002C0646F6
-:106C700003DA0C233360002070BD8C42F9D3204A24
-:106C8000136810461946A1B10A68121B0ED40B2ACC
-:106C900003D90A608B188C501FE08B420BBF5A68D7
-:106CA0004A6802605A6018BF0B4616E00B464968F6
-:106CB000E9E7144D2B681BB9304600F025F8286031
-:106CC0003046214600F020F8421C0346D1D0C51CB6
-:106CD00025F0030585420AD11C6003F10B001A1D43
-:106CE00020F00700821A0AD05142995070BD3046F8
-:106CF000E91A00F009F80130BBD02B46ECE770BD73
-:106D0000540100205001002038B5064C00230546F0
-:106D10000846236000F008F8431C02D1236803B141
-:106D20002B6038BD9C0E0020044A05491368002BD7
-:106D300008BF0B46184410601846704758010020E1
-:106D4000A00E002053544D3332204D6173732053F5
-:106D5000746F72616765000053544D6963726F65AB
-:106D60006C656374726F6E6963730000303030302D
-:106D70003030303030303141000000004D5343207E
-:106D8000436F6E66696700004D534320496E74651A
-:106D90007266616365000000008002021F0000004F
-:106DA00053544D202020202050726F64756374204E
-:106DB0002020202020202020302E30310000000311
-:106DC00000808300000600000000000000000000BA
-:106DD000000000000000000001020304010203049F
-:066DE0000607080943004C
-:106DE6008901000895010008BD010008A1010008FD
-:106DF600D9010008F501000811020008040309047E
-:106E0600120100020000004083042A57000201021A
-:106E16000301000009072000010104C03209040033
-:106E2600000208065005070581024000000705011B
-:106E3600024000000A0600020000004001000000B7
-:106E460009022000010104C0FA0904000002080634
-:106E56005005070581020002000705010200020035
-:106E6600212200087D220008A92200080000000057
-:106E760000000000A5230008B12300080000000060
-:106E86000000000000000000BD230008F1210008FA
-:106E9600FD21000809220008152200080902200029
-:106EA600010104C032090400000208065005070566
-:106EB6008102400000070501024000000024F400A2
-:106EC60000000000000000000000000000000000BC
-:106ED60000000000000000000000000000000000AC
-:106EE600E46D000800000000000000000000000043
-:106EF600000000000000000000000000000000008C
-:106F0600000000000000000000000000000000007B
-:106F1600000000000000000000000000000000006B
-:046F2600E000002067
-:0400000508006B651F
+:1000000000C0012061B00008ADB00008ADB000082C
+:10001000ADB00008ADB00008ADB0000800000000B1
+:10002000000000000000000000000000ADB000086B
+:10003000ADB0000800000000ADB000087D19000858
+:10004000ADB00008ADB00008ADB00008ADB000081C
+:10005000ADB00008ADB00008ADB00008ADB000080C
+:10006000ADB00008BD190008ADB00008ADB0000883
+:10007000ADB00008ADB00008ADB00008ADB00008EC
+:10008000ADB00008ADB00008ADB00008ADB00008DC
+:10009000ADB00008ADB00008ADB00008ADB00008CC
+:1000A000ADB00008ADB00008ADB00008ADB00008BC
+:1000B000ADB00008ADB00008ADB00008ADB00008AC
+:1000C000ADB00008ADB00008ADB00008ADB000089C
+:1000D000ADB00008ADB00008ADB00008ADB000088C
+:1000E000ADB00008ADB00008ADB00008ADB000087C
+:1000F000ADB00008ADB00008ADB00008ADB000086C
+:10010000ADB00008ADB00008ADB00008ADB000085B
+:10011000ADB00008ADB00008ADB00008ADB000084B
+:10012000ADB00008ADB000089D190008AD19000879
+:10013000ADB000080000000000000000ADB00008F5
+:10014000ADB00008ADB00008ADB000088D190008D2
+:10015000ADB00008ADB00008ADB00008ADB000080B
+:10016000ADB00008ADB00008ADB00008ADB00008FB
+:10017000ADB00008ADB000080000000000000000B5
+:10018000ADB00008ADB0000880B483B000AF034646
+:100190003960FB713B6812221A80034B18460C37FA
+:1001A000BD465DF8047B70471C00002080B483B01E
+:1001B00000AF03463960FB713B6804221A80034B91
+:1001C00018460C37BD465DF8047B704730000020B0
+:1001D00080B582B000AF03463960FB710448054921
+:1001E0003A6802F035F9034B18460837BD4680BD22
+:1001F00064B200087001002080B582B000AF0346F1
+:100200003960FB71044805493A6802F021F9034B53
+:1002100018460837BD4680BD78B20008700100203E
+:1002200080B582B000AF03463960FB7104480549D0
+:100230003A6802F00DF9034B18460837BD4680BDF9
+:100240008CB200087001002080B582B000AF034678
+:100250003960FB71044805493A6802F0F9F8034B2C
+:1002600018460837BD4680BD9CB2000870010020CA
+:1002700080B582B000AF03463960FB710448054980
+:100280003A6802F0E5F8034B18460837BD4680BDD2
+:10029000A8B200087001002080B588B000AF786077
+:1002A0007B681B68B3F1A04F24D1144A134B5B6BDE
+:1002B00043F080035363114A104B5B6C43F480435B
+:1002C00053644FF4C053FB6002233B6100237B6106
+:1002D0000023BB610A23FB6107F10C0308481946A0
+:1002E00007F014F943200A2100220AF0D1FD43202F
+:1002F0000AF0EAFD2037BD4680BD00BF003802404D
+:100300000000024080B582B000AF78607B68D3F80F
+:10031000B0237B6803F560731046194602F098F924
+:100320000837BD4680BD00BF80B582B000AF7860A1
+:100330000B46FB707B68D3F8B003FA7879681346F4
+:10034000DB009B1A9B000B4403F5F0735B68FA78A3
+:1003500011461A4602F0C6F90837BD4680BD00BFF7
+:1003600080B582B000AF78600B46FB707B68D3F835
+:10037000B003FA7879681346DB009B1A9B000B44A4
+:1003800038339B68FA7811461A4602F007FA0837A4
+:10039000BD4680BD80B582B000AF78607B68D3F881
+:1003A000B033184602F0F2FA0837BD4680BD00BFF0
+:1003B00080B584B000AF78600123FB737B68DB6895
+:1003C000002B02D0022B03D005E00023FB7305E0D5
+:1003D0000123FB7302E00123FB7300BF7B68D3F8AA
+:1003E000B023FB7B1046194602F098FA7B68D3F8DD
+:1003F000B033184602F062FA1037BD4680BD00BF28
+:1004000080B582B000AF78607B68D3F8B03318460F
+:1004100002F094FA7B681B6803F560631A467B68F8
+:100420001B6803F560631B6843F001031360083722
+:10043000BD4680BD80B582B000AF78607B681B6828
+:1004400003F560631A467B681B6803F560631B68ED
+:1004500023F0010313607B68D3F8B033184602F031
+:1004600083FA0837BD4680BD80B582B000AF7860A2
+:100470000B46FB707B68D3F8B023FB781046194617
+:1004800002F0ACFA0837BD4680BD00BF80B582B02F
+:1004900000AF78600B46FB707B68D3F8B023FB7825
+:1004A0001046194602F08CFA0837BD4680BD00BFE1
+:1004B00080B582B000AF78607B68D3F8B03318465F
+:1004C00002F09AFA0837BD4680BD00BF80B582B001
+:1004D00000AF78607B68D3F8B033184602F098FA22
+:1004E0000837BD4680BD00BF80B582B000AF7860E0
+:1004F0007B68D3F8B033184602F0A2FA0837BD463D
+:1005000080BD00BF80B582B000AF78607B681B788B
+:10051000002B3AD11F4A7B68C2F8B0337B681D4A72
+:10052000C3F820221B4B4FF0A0421A60194B072240
+:100530005A60184B0222DA60164B00221A61154BE2
+:1005400000225A61134B02229A61124B0022DA6197
+:10055000104B00221A620F4B00229A620D4B0022B0
+:10056000DA620C4B00221A630A4805F0C5FF0948FD
+:10057000802105F0AFFF07480021402205F05CFF15
+:1005800004480121802205F057FF00231846083750
+:10059000BD4680BD7003002080B582B000AF78609A
+:1005A0007B68D3F82032184606F0AEF800231846D0
+:1005B0000837BD4680BD00BF80B582B000AF78600F
+:1005C0007B68D3F82032184606F0C0F8002318469E
+:1005D0000837BD4680BD00BF80B582B000AF7860EF
+:1005E000084611461A460346FB700B46BB7013467D
+:1005F0003B807B68D3F82002F9783A88BB7806F014
+:10060000A1FC002318460837BD4680BD80B582B0E6
+:1006100000AF78600B46FB707B68D3F82022FB7834
+:100620001046194606F0F6FC002318460837BD466A
+:1006300080BD00BF80B582B000AF78600B46FB7014
+:100640007B68D3F82022FB781046194606F0A4FEFA
+:10065000002318460837BD4680BD00BF80B582B074
+:1006600000AF78600B46FB707B68D3F82022FB78E4
+:100670001046194606F0EAFD002318460837BD4625
+:1006800080BD00BF80B582B000AF78600B46FB70C4
+:100690007B68D3F82022FB781046194606F032FE1C
+:1006A000002318460837BD4680BD00BF80B485B022
+:1006B00000AF78600B46FB707B68D3F82032FB609C
+:1006C000FB785BB2002B0BDAFB7803F07F02F96852
+:1006D0001346DB009B1A9B000B4430339B790BE0E5
+:1006E000FB7803F07F02F9681346DB009B1A9B003E
+:1006F0000B4403F5EC739B7818461437BD465DF840
+:10070000047B704780B582B000AF78600B46FB7009
+:100710007B68D3F82022FB781046194606F0F0FBE0
+:10072000002318460837BD4680BD00BF80B584B0A1
+:1007300000AFF8607A601A460B46FB7213463B81A5
+:10074000FB68D3F820123B89FA7A084611467A688A
+:1007500006F020FD002318461037BD4680BD00BFBF
+:1007600080B584B000AFF8607A601A460B46FB7221
+:1007700013463B81FB68D3F820123B89FA7A08467E
+:1007800011467A6806F090FC002318461037BD46E3
+:1007900080BD00BF80B582B000AF78600B46FB70B3
+:1007A0007B68D3F82022FB781046194606F0D8FC67
+:1007B000034618460837BD4680BD00BF80B500AF70
+:1007C00002480349002201F09DFE80BD240700205D
+:1007D0000000002080B582B000AF00F04BF900F0BF
+:1007E000D7F938603B68002B03D1174B03221A70EE
+:1007F00026E03B6840F201129A803B6800229A7121
+:100800003B680022DA71FF237B710023FB800AE042
+:10081000FB883A6813447A791A727B7927337B71A3
+:10082000FB880133FB80FB88B3F5007FF0D3386889
+:1008300000F01AFA0346002B02D1044800F08EFBA8
+:100840000837BD4680BD00BF44010020B108000844
+:1008500080B500AF074B03221A70074B1B78002BA3
+:1008600006D0054B1B78012B02D8044801F09AFEF4
+:1008700080BD00BF44010020450100202407002066
+:1008800080B500AF094B1B78032B01D101230AE08F
+:10089000064B1B78022B05D0642001F01DF8FFF7F2
+:1008A000D7FFFEE70023184680BD00BF44010020AB
+:1008B00080B584B000AF78601F4B1B78022B00D945
+:1008C00037E01D4B1B78002B02D17B68002B05D134
+:1008D000642001F001F8FFF7BBFFFEE77B689B880F
+:1008E00040F20112934205D0642000F0F5FFFFF7BB
+:1008F000AFFFFEE7FF237B730023FB8112E0FB8940
+:100900007A6813441B7A7A7B9A4205D0642000F0FF
+:10091000E3FFFFF79DFFFEE77B7B27337B73FB89BC
+:100920000133FB81FB89B3F5007FE8D3786800F0E1
+:1009300005F81037BD4680BD4401002080B582B067
+:1009400000AF78600B4B01221A707B6801229A80FD
+:100950007B6800229A717B680122DA71786800F066
+:1009600083F90346002B02D1034800F0F7FA083759
+:10097000BD4680BD440100207D09000880B584B0DB
+:1009800000AF78600023FB73274B1B78022B00D944
+:1009900047E0254B1B78012B02D17B68002B05D14A
+:1009A000642000F099FFFFF753FFFEE77B689B8808
+:1009B000022B05D0642000F08FFFFFF749FFFEE710
+:1009C0007B681B7A012B04D10123FB73174BBB609F
+:1009D00000BF786800F012F9FB7B002B05D1642082
+:1009E00000F07AFFFFF734FFFEE7114B1B78002B76
+:1009F0000AD00F4B1B78FA7B9A4205D0642000F096
+:100A00006BFFFFF725FFFEE7074B02221A70084A2B
+:100A1000FB7B13700748B96801F09EFD054801F0A3
+:100A2000B5FD1037BD4680BD4401002034000020D4
+:100A3000450100202407002080B500AF0A4B1B7839
+:100A4000002B03D0084B1B78012B05D9642000F044
+:100A500043FFFFF7FDFEFEE7044801F0A3FD044855
+:100A600000F056F880BD00BF45010020240700209B
+:100A70003D09000880B500AF1F4B00221A701F4BC4
+:100A800000221A701E4B1F4A1A601D4B002283F869
+:100A900051201B4B4FF482725A60194B00229A600E
+:100AA000174B4FF40062DA60154B00221A61144BA9
+:100AB00000225A61124B4FF400729A61104B2022AF
+:100AC000DA610F4B00221A620D4B00225A620C4B66
+:100AD0004FF400529A620A4B0722DA62084804F087
+:100AE00051FD094B1B6903F00803002B02D1074B92
+:100AF00001221A7080BD00BF5C0B0020500900204D
+:100B0000680D002000300140000002405801002024
+:100B100080B582B000AF7860194B1B78082B01D9E3
+:100B2000012328E0174B1B68002B08D0642000F03D
+:100B3000D3FE134B09221A70FFF78AFEFEE7124B11
+:100B40001B78002B07D1104B01221A707B680E48CE
+:100B5000984700230FE00D4B1B78002B07D10B4B60
+:100B600001221A707B6809489847002303E0054A70
+:100B70007B681360002318460837BD4680BD00BF60
+:100B80004C010020500100205C0B00205009002087
+:100B900080B582B000AF154B1B78082B01D900231C
+:100BA00020E0134B1B68002B01D00023FB71114B7D
+:100BB0001B78002B04D10F4B01221A700D4B11E052
+:100BC0000D4B1B78002B04D10B4B01221A700A4BE2
+:100BD00008E0642000F080FE044B09221A70FFF741
+:100BE00037FEFEE718460837BD4680BD4C010020A1
+:100BF000480100205C0B00205009002080B584B023
+:100C000000AF7860144B1B78082B00D921E07B687B
+:100C1000124A93420CD07B68114A934208D0642058
+:100C200000F05AFE0C4B09221A70FFF711FEFEE786
+:100C30000C4B1B68002B09D00A4B1B68FB60094B4F
+:100C400000221A60FB687868984702E07B680022FF
+:100C50001A701037BD4680BD4C0100205C0B00208F
+:100C6000500900205001002080B582B000AF7860AC
+:100C7000374B1B78082B01D9012364E07B68354A88
+:100C800093420CD07B68344A934208D0642000F031
+:100C900023FE2F4B09221A70FFF7DAFDFEE77B686F
+:100CA0001B78012B08D17B689B88002B04D07B68C4
+:100CB0009B88B3F5817F08D3642000F00DFE244BA0
+:100CC00009221A70FFF7C4FDFEE7244B1B68002BB6
+:100CD00008D0642000F000FE1D4B09221A70FFF7B7
+:100CE000B7FDFEE71A4B1B78002B07D0002B20DB4B
+:100CF000042B1EDC194A7B68136023E0144B01228D
+:100D00001A70174A7B681360154B1B689A79154B4C
+:100D10001A70134B1B68DA79134B1A70134B1B783C
+:100D2000002B05D0114B00221A7000F0ADF909E03C
+:100D300008E0642000F0D0FD054B09221A70FFF78F
+:100D400087FDFEE7002318460837BD4680BD00BF7B
+:100D50004C0100205C0B00205009002048010020BD
+:100D6000580B0020640D00204C0900205801002081
+:100D700080B584B000AF78606F4B10229A616F4BE2
+:100D80001B78082B00D9D3E06C4B1B78022B0DD1BC
+:100D90006A4B03221A706A4B1B78002B05D0684BF4
+:100DA00000221A7000F09AF9C2E0C1E0634B1B7890
+:100DB000042B3ED1634B1B68002B0CD0624B1B688D
+:100DC000002B08D1642000F087FD5C4B09221A70CB
+:100DD000FFF73EFDFEE75D4B1B681846FFF70EFF71
+:100DE000564B1B78092B00D1A2E0574B1B68002BF8
+:100DF00014D0524B01221A70534B1B68534A136094
+:100E0000514B00221A604E4B1B78002B05D04C4BE7
+:100E100000221A7000F038F98AE089E0474B00227E
+:100E20001A704B4B1B68002B02D000F0BDF87FE01E
+:100E30007EE0424B1B78062B21D1444B1B689B88DC
+:100E4000002B05D0414B1B689B88B3F5817F08D3ED
+:100E5000642000F041FD394B09221A70FFF7F8FCBD
+:100E6000FEE7364B07221A70354B1B78002B05D056
+:100E7000334B00221A7000F0B1F959E058E02F4BC3
+:100E80001B78082B4BD12D4B00221A70304B1B685E
+:100E9000002B08D1642000F01FFD284B09221A7096
+:100EA000FFF7D6FCFEE7294B1B689B79022B0FD17D
+:100EB000264B1B68DB79012B0AD1244B1B68184693
+:100EC000FFF79CFE224B00221A60FFF7B5FD2FE0D2
+:100ED0001E4B1B689B791A461E4B1B78534003F030
+:100EE0007F03002B06D1194B1B68DA791A4B1B784C
+:100EF0009A4208D0642000F0EFFC104B09221A70CF
+:100F0000FFF7A6FCFEE7124B1B68FB60104B0022AC
+:100F10001A600E4B1A68FB681046984708E0642078
+:100F200000F0DAFC054B09221A70FFF791FCFEE78E
+:100F30001037BD4680BD00BF000002404C010020BC
+:100F4000580100205001002048010020580B0020CB
+:100F500054010020640D00204C09002080B582B0AF
+:100F600000AF78600E4B1B78082B01D9012312E0EB
+:100F70000C4B1B68002B08D0642000F0ADFC084B24
+:100F800009221A70FFF764FCFEE7064A7B681360CB
+:100F900000F00AF8034618460837BD4680BD00BF7A
+:100FA0004C0100205401002080B500AF134B1B788A
+:100FB000082B01D901231EE0104B1B78042B08D904
+:100FC000642000F089FC0D4B09221A70FFF740FCE9
+:100FD000FEE70A4B1B78002B0CD1084B05221A7038
+:100FE000074B1B78002B05D0054B00221A700548D3
+:100FF000FFF78EFD0023184680BD00BF4C01002086
+:10100000580100204911000880B500AF1B4B1B7828
+:10101000082B00D930E0194B1B78072B23D801A2ED
+:1010200052F823F0451000084D1000086710000822
+:1010300053100008671000085910000867100008D6
+:10104000611000080E4B01221A7015E000F01CF828
+:1010500012E000F043F80FE00A48FFF759FD0BE0FB
+:1010600000F0BCF808E0642000F036FC034B0922D5
+:101070001A70FFF7EDFBFEE780BD00BF4C010020BA
+:10108000580100204911000880B500AF0E4B022224
+:101090001A700E4B4FF480129A610D4B1B6804338B
+:1010A0000C4819460C4A022304F0D2FA0346002BDE
+:1010B00008D0642000F010FC034B09221A70FFF7DF
+:1010C000C7FBFEE780BD00BF4C01002000000240CE
+:1010D000580B0020680D00204809002080B500AFA3
+:1010E000154B04221A70154B4FF480129A61144B61
+:1010F0001B689B88C82B02D90F4B04221A70104B17
+:101100001B68991D0E4B1B689A1D0D4B1B689B8815
+:10111000022B38BF02239BB20A4804F099FA034617
+:10112000002B08D0642000F0D7FB034B09221A7073
+:10113000FFF78EFBFEE780BD4C010020000002405F
+:10114000580B0020680D002080B582B000AF786099
+:101150001D4B1B78082B00D932E01B4B1B78052B4D
+:1011600008D0642000F0B8FB174B09221A70FFF773
+:101170006FFBFEE7144B06221A70144A7B6813605B
+:10118000124B1B6800229A80114B4FF480129A6117
+:10119000104B00221A600D4B1B6804330E480D499A
+:1011A0001A46022304F054FA0346002B08D06420A8
+:1011B00000F092FB044B09221A70FFF749FBFEE78F
+:1011C0000837BD4680BD00BF4C010020580B0020F1
+:1011D0000000024048090020680D002080B500AFE3
+:1011E000114B08221A70114B4FF480129A61104B68
+:1011F0001B68991D0E4B1B689A1D0D4B1B689B8825
+:10120000022B38BF02239BB20A4804F021FA03469E
+:10121000002B08D0642000F05FFB034B09221A70FA
+:10122000FFF716FBFEE780BD4C01002000000240E6
+:10123000580B0020680D002080B582B000AF7860A8
+:10124000094B10229A61094B1B78082B00D908E042
+:10125000642000F041FB054B09221A70FFF7F8FAF1
+:10126000FEE70837BD4680BD000002404C0100206B
+:1012700080B582B000AF7860084B1B78082B00D98E
+:1012800008E0642000F028FB044B09221A70FFF7E5
+:10129000DFFAFEE70837BD4680BD00BF4C010020E5
+:1012A00080B584B000AF7860FFF7EAFA0346002B00
+:1012B00001D001231FE0124A7B681360FFF768FC2E
+:1012C000F860FB68002B01D1012314E0FB680122C8
+:1012D0009A80FB6801229A71FB680022DA71F86833
+:1012E000FFF7C2FC0346002B04D10648FFF736FE89
+:1012F000034600E0012318461037BD4680BD00BFFD
+:10130000CC0D00200913000880B582B000AF7860D2
+:10131000FFF7B6FA0346002B00D01EE07B68002BD7
+:1013200004D10F4B1B680120984716E07B689B880F
+:10133000022B03D17B681B7A002B07D07868FFF75C
+:101340005DFC074B1B680120984706E07868FFF7B3
+:1013500055FC034B1B68002098470837BD4680BDED
+:10136000CC0D002080B584B000AF7860FFF788FA1C
+:101370000346002B01D001231FE0124A7B68136053
+:10138000FFF706FCF860FB68002B01D1012314E095
+:10139000FB6801229A80FB6801229A71FB68012296
+:1013A000DA71F868FFF760FC0346002B04D10648A9
+:1013B000FFF7D4FD034600E0012318461037BD4671
+:1013C00080BD00BFC80D0020CD13000880B584B0DB
+:1013D00000AF7860FFF754FA0346002B00D022E0FC
+:1013E0007B68002B06D1114B1B68002000210022D6
+:1013F000984718E07B689B88052B06D00B4B1B6831
+:1014000000200021002298470DE07B6808331B680C
+:10141000FB607B680C331B68BB60044B1B687868FF
+:10142000F968BA6898471037BD4680BDC80D0020DE
+:1014300080B586B000AFF860C7E90023FFF720FA57
+:101440000346002B01D0012333E01C4B00221A601D
+:101450001B4B00221A701B4A7B6A13601A4AFB68F6
+:101460001360FFF795FB78617B69002B01D10123A5
+:101470001FE07B6907229A807B6901229A717B6950
+:101480000222DA717B6903F10801D7E90023C1E97F
+:1014900000237B6910333A6A1A607869FFF7E4FB2E
+:1014A0000346002B04D10948FFF758FD034600E02E
+:1014B000012318461837BD4680BD00BFC00D00206F
+:1014C000C40D0020D40D0020CC0D0020091300080D
+:1014D00080B582B000AF7860FFF7D2F90346002BE9
+:1014E00001D0012321E0134A7B681360124B1B7863
+:1014F000002B01D0002318E00F4B01221A700F4B74
+:101500001B68002B0DD00B4B1B68002B09D00B4B1D
+:101510001B68184600F016F8084B00221A600023DA
+:1015200003E00748FFF71AFD034618460837BD4693
+:1015300080BD00BFD00D0020C40D0020C00D0020D4
+:101540004515000880B584B000AF7860254B0022B7
+:101550001A70FFF795F90346002B00D03EE0224BAE
+:101560001B68002B03D1214A7B68136036E07B683F
+:10157000002B05D11C4B1B680020002198472DE053
+:101580007B689B88013B9BB25B00FB817B689B79FE
+:10159000DBB25BB2002B08DA7B689B88012B04D995
+:1015A000FA89134B1B689A4205D90F4B1B68002020
+:1015B0000021984712E00E4B1A68FB89D31A0C4A97
+:1015C0001360094B1B68FA89786811469847084BE5
+:1015D0001B68002B02D00020FFF77AFF1037BD46B2
+:1015E00080BD00BFC40D0020D00D0020C00D002024
+:1015F000D40D002080B586B000AFF860C7E90023A5
+:10160000FFF73EF90346002B01D001232AE0174AD9
+:10161000FB681360FFF7BCFA78617B69002B01D18E
+:1016200001231FE07B6907229A807B6901229A715E
+:101630007B690322DA717B6903F10801D7E9002392
+:10164000C1E900237B6910333A6A1A607869FFF7B1
+:101650000BFB0346002B04D10548FFF77FFC034634
+:1016600000E0012318461837BD4680BDCC0D002090
+:101670007516000880B584B000AF7860FFF700F9F8
+:101680000346002B00D026E07B68002B04D1134BCF
+:101690001B68012098471EE07B689B88022B07D1BE
+:1016A0007B681B7A002B0BD07B681B7A022B07D040
+:1016B0007868FFF7A3FA094B1B68012098470AE0F6
+:1016C0007B681B7AFB737868FFF798FA034B1B68FB
+:1016D000FA7B104698471037BD4680BDCC0D0020E0
+:1016E00080B582B000AF78603960FFF7C9F8034673
+:1016F000002B01D0012317E03B6803F00103002B0E
+:1017000001D0012310E03B685B089BB201339AB221
+:101710007B689A807B6881229A717B680322DA71E8
+:101720007868FFF7A1FA034618460837BD4680BD22
+:1017300080B500AF00F00CF809F0FCFB00F054F8A5
+:1017400000F0B8F8FFF73AF8FFF744F8FEE700BFFB
+:1017500080B592B000AF224A214B1B6C43F08053FE
+:101760001364204A1F4B1B6823F4404343F4004397
+:1017700013600123BB610123FB6102233B634FF430
+:1017800080037B630823BB634FF4A873FB630423CC
+:101790003B6407237B6407F11803184604F058FAEA
+:1017A0000346002B00D0FEE70D237B600223BB60C5
+:1017B0000023FB604FF4A0533B614FF480537B61E7
+:1017C0003B1D1846022104F027FC0346002B00D0E5
+:1017D000FEE7042009F092FB4837BD4680BD00BFFC
+:1017E000003802400070004080B586B000AF2C4A3F
+:1017F0002B4B1B6B43F001031363294A284B1B6BD4
+:1018000043F002031363264A254B1B6B43F004038A
+:101810001363234A224B1B6B43F00803136341F607
+:10182000FF737B600023BB600123FB6000233B61EF
+:1018300000237B613B1D1B48194605F067FE4FF6F0
+:10184000E7737B603B1D1848194605F05FFE4FF6B5
+:10185000FF737B603B1D1548194605F057FE3B1D85
+:101860001348194605F052FE10237B600323BB602A
+:101870003B1D0E48194605F049FE4FF480537B602E
+:101880000123BB600023FB603B1D0848194605F09F
+:101890003DFE064B4FF480529A611837BD4680BD1D
+:1018A00000380240000002400004024000080240EC
+:1018B000000C024080B500AF064B4FF080529A6199
+:1018C0004FF4FA7009F088FB024B4FF480529A6192
+:1018D00080BD00BF0008024080B483B000AF034663
+:1018E000FB80094AFB881380FB88002B06D1074B3D
+:1018F00000221A70064B4FF480529A610C37BD4695
+:101900005DF8047B704700BF5A0100205E01002093
+:101910000008024080B400AF144B1B88002B21D07C
+:10192000134B1B8801339AB2114B1A80104B1A8843
+:101930000E4B1B889A4215D30D4B00221A800D4B7B
+:101940001B78002B07D00B4B00221A700A4B4FF468
+:1019500080529A6106E0074B01221A70064B4FF045
+:1019600080529A61BD465DF8047B70475A010020A1
+:101970005C0100205E0100200008024080B500AF3D
+:1019800009F010FBFFF7C6FF80BD00BF80B500AFB8
+:10199000014804F003FF80BD7003002080B500AF54
+:1019A000014806F013F880BDD80D002080B500AFC7
+:1019B000014806F00BF880BD280E002080B500AF6E
+:1019C000024B08225A61FFF71FFB80BD003C01401B
+:1019D00080B500AF4FF0FF300221002209F058FA25
+:1019E00080BD00BF80B588B000AF78607B681B68A1
+:1019F000564A934240F0A780554A554B5B6C43F4DE
+:101A000080535364524A524B1B6B43F4800313635D
+:101A1000E023FB6002233B6102237B610123BB6166
+:101A20000523FB6107F10C034A48194605F06EFDDA
+:101A3000484B10229A611023FB6001233B61002375
+:101A40007B6107F10C034348194605F05FFD08234D
+:101A5000FB60414B3B6101237B6107F10C033D4877
+:101A6000194605F053FD09200A21002209F010FA59
+:101A7000092009F029FA7B68384A1A64374B384A3A
+:101A80001A60364A7B689363344B4FF0C0625A60E9
+:101A9000324B40229A60314B0022DA602F4B4FF4D8
+:101AA00080621A612D4B4FF400625A612B4B4FF448
+:101AB00000529A61294B0022DA61284B4FF48032A0
+:101AC0001A62264B00225A62244805F0B5FE3B20DC
+:101AD0000A21002209F0DCF93B2009F0F5F97B68C6
+:101AE000204A5A641F4B204A1A601E4A7B6893633F
+:101AF0001C4B4FF0C0625A601A4B00229A60194B7F
+:101B00000022DA60174B4FF480621A61154B4FF4D4
+:101B100000625A61134B4FF400529A61114B00223C
+:101B2000DA61104B4FF480321A620E4B00225A6277
+:101B30000C4805F081FE3A200A21002209F0A8F99C
+:101B40003A2009F0C1F92037BD4680BD0030014080
+:101B5000003802400000024000002110280E002042
+:101B600058640240D80D00204064024080B584B023
+:101B700000AFF860B9601346FB80FB680222C3F82F
+:101B8000F421FA88FB689A61FA88FB68DA61FB88BD
+:101B9000F8680021BA68FEF7C9FD0023184610371F
+:101BA000BD4680BD80B584B000AFF860B960134613
+:101BB000FB80FB88F8680021BA68FEF7B7FD0023B8
+:101BC00018461037BD4680BD80B584B000AFF860C0
+:101BD000B9601346FB80FB88F8680021BA68FEF7FD
+:101BE000BFFD002318461037BD4680BD80B582B0CA
+:101BF00000AF78607B680422C3F8F4217868002184
+:101C000000220023FEF792FD002318460837BD4648
+:101C100080BD00BF80B582B000AF78607B680522D0
+:101C2000C3F8F4217868002100220023FEF798FD14
+:101C3000002318460837BD4680BD00BF80B584B07C
+:101C400000AF786039600023FB733B685B78092B39
+:101C500039D801A252F823F0A91C0008BD1C0008C5
+:101C6000C71C0008B31C0008C71C00088B1C000818
+:101C7000811C0008C71C00089F1C0008951C000858
+:101C80007868396800F036F922E07868396800F041
+:101C90002DFA1DE07868396800F066FA18E0786877
+:101CA000396800F0EBFA13E07868396800F018FB47
+:101CB0000EE07868396800F03DFB09E07868396823
+:101CC00000F052FB04E07868396800F0B1FB00BF17
+:101CD000FB7B18461037BD4680BD00BF80B584B081
+:101CE00000AF786039600023FB737B6893F8FC31A8
+:101CF000032B1CD13B689B88DBB2012B11D87B687E
+:101D0000D3F814329B687868396898473B68DB8859
+:101D1000002B0BD1FB7B002B08D17868FFF766FF07
+:101D20000AE07868396800F083FB05E004E0786831
+:101D3000396800F07DFB00BF002318461037BD4610
+:101D400080BD00BF80B584B000AF786039600023EB
+:101D5000FB733B689B88BB733B681B7803F0600395
+:101D6000202B08D17B68D3F814329B6878683968D7
+:101D700098470023B9E03B685B78012B39D0032BEF
+:101D800002D0002B6AD0AFE07B6893F8FC31022BC5
+:101D900002D0032B0DD026E0BB7B002B08D0BB7BF1
+:101DA000802B05D0BB7B78681946FEF757FC1FE0F7
+:101DB0001EE03B685B88002B0AD1BB7B002B07D061
+:101DC000BB7B802B04D0BB7B78681946FEF746FCB2
+:101DD0007B68D3F814329B687868396898477868CC
+:101DE000FFF704FF04E07868396800F021FB00BFCA
+:101DF0007AE07B6893F8FC31022B02D0032B0DD0E4
+:101E000026E0BB7B002B08D0BB7B802B05D0BB7BA7
+:101E100078681946FEF722FC1FE01EE03B685B88ED
+:101E2000002B14D1BB7B03F07F03002B0BD0BB7BBB
+:101E300078681946FEF726FC7B68D3F814329B6855
+:101E40007868396898477868FFF7D0FE05E004E0C5
+:101E50007868396800F0ECFA00BF45E07B6893F8D9
+:101E6000FC31022B02D0032B0CD037E0BB7B03F0FC
+:101E70007F03002B05D0BB7B78681946FEF7EEFB8D
+:101E800031E030E0BB7B5BB2002B08DABB7B03F0B8
+:101E90007F0301331B017A681344043307E0BB7BE3
+:101EA00003F07F0310331B017A6813440433BB60D3
+:101EB000BB7B78681946FEF7F9FB0346002B03D07D
+:101EC000BB6801221A6002E0BB6800221A60BB688E
+:101ED000786819460222FFF749FE04E078683968FD
+:101EE00000F0A6FA00BF00BFFB7B18461037BD46C6
+:101EF00080BD00BF80B584B000AF786039603B68BA
+:101F00005B881B0A9BB2013B062B00F2D18001A229
+:101F100052F823F0311F00084B1F00088B1F0008E8
+:101F2000B1200008B12000085D20000883200008CF
+:101F30007B68D3F810321B687A68117C07F10A02BB
+:101F4000084611469847F860B7E07B681B7C002B79
+:101F50000DD17B68D3F81432DB6A07F10A02104610
+:101F60009847F860FB68013302221A70A5E07B688D
+:101F7000D3F814321B6B07F10A0210469847F86039
+:101F8000FB68013302221A7097E03B685B88DBB282
+:101F9000052B5DD801A252F823F000BFB51F000841
+:101FA000CF1F0008E91F0008032000081D200008BB
+:101FB000372000087B68D3F810325B687A68117CA0
+:101FC00007F10A02084611469847F86045E07B6829
+:101FD000D3F810329B687A68117C07F10A02084630
+:101FE00011469847F86038E07B68D3F81032DB6818
+:101FF0007A68117C07F10A02084611469847F86092
+:102000002BE07B68D3F810321B697A68117C07F1EA
+:102010000A02084611469847F8601EE07B68D3F82C
+:1020200010325B697A68117C07F10A020846114692
+:102030009847F86011E07B68D3F810329B697A68A2
+:10204000117C07F10A02084611469847F86004E03F
+:102050007868396800F0ECF944E02EE07B681B7C7E
+:10206000002B09D17B68D3F814329B6B07F10A026D
+:1020700010469847F86020E07868396800F0D8F991
+:1020800030E07B681B7C002B0DD17B68D3F81432C9
+:102090005B6B07F10A0210469847F860FB68013352
+:1020A00007221A7009E07868396800F0C1F919E070
+:1020B0007868396800F0BCF914E07B89002B11D0F6
+:1020C0003B68DB88002B0DD03B68DA887B89934224
+:1020D00028BF13469BB27B817B897868F9681A46D2
+:1020E000FFF744FD1037BD4680BD00BF80B584B00A
+:1020F00000AF786039603B689B88002B2DD13B682E
+:10210000DB88002B29D13B685B88DBB203F07F03BF
+:10211000FB737B6893F8FC31032B04D17868396832
+:1021200000F086F918E07B68FA7B83F8FE21FB7BE0
+:1021300078681946FEF7E6FA7868FFF757FDFB7BEB
+:10214000002B04D07B68022283F8FC2104E07B682A
+:10215000012283F8FC2104E003E07868396800F08C
+:1021600067F91037BD4680BD80B582B000AF78609A
+:1021700039603B685B88DAB23F4B1A703E4B1B7884
+:10218000012B04D97868396800F052F970E07B6857
+:1021900093F8FC31022B02D0032B23D063E0364BA3
+:1021A0001B78002B1AD0344B1B781A467B685A6078
+:1021B0007B68032283F8FC212F4B1B787868194633
+:1021C00000F012FA0346022B04D17868396800F057
+:1021D0002FF94DE07868FFF709FD49E07868FFF7CF
+:1021E00005FD45E0244B1B78002B12D17B680222B1
+:1021F00083F8FC21204B1B781A467B685A601E4BE3
+:102200001B787868194600F00FFA7868FFF7EEFC43
+:1022100028E0194B1B781A467B685B689A421DD0F0
+:102220007B685B68DBB27868194600F0FDF9124BF9
+:102230001B781A467B685A600F4B1B7878681946E2
+:1022400000F0D2F90346022B04D17868396800F017
+:10225000EFF80DE07868FFF7C9FC03E07868FFF756
+:10226000C5FC05E004E07868396800F0E1F800BFDB
+:102270000837BD4680BD00BF5F01002080B582B039
+:1022800000AF786039603B68DB88012B04D0786848
+:10229000396800F0CDF81FE07B6893F8FC31022B21
+:1022A00002D0032B0BD012E07B6800229A607B687F
+:1022B0000833786819460122FFF758FC0CE07B6868
+:1022C0000433786819460122FFF750FC04E078686F
+:1022D000396800F0ADF800BF0837BD4680BD00BFCB
+:1022E00080B582B000AF786039607B6893F8FC31CC
+:1022F000023B012B15D87B680122DA607B68D3F89A
+:102300000432002B05D07B68DB6843F002027B6857
+:10231000DA607B680C33786819460222FFF726FCE6
+:1023200004E07868396800F083F800BF0837BD46DC
+:1023300080BD00BF80B582B000AF786039603B6877
+:102340005B88012B0DD17B680122C3F804227B68D6
+:10235000D3F814329B687868396898477868FFF733
+:1023600045FC0837BD4680BD80B582B000AF7860BF
+:1023700039607B6893F8FC31023B012B13D83B6832
+:102380005B88012B0ED17B680022C3F804227B6896
+:10239000D3F814329B687868396898477868FFF7F3
+:1023A00025FC05E004E07868396800F041F800BFDA
+:1023B0000837BD4680BD00BF80B483B000AF7860F1
+:1023C00039603B681A787B681A703B685A787B687A
+:1023D0005A703B6802331B789AB23B6803331B7810
+:1023E0009BB21B029BB213449AB27B685A803B6833
+:1023F00004331B789AB23B6805331B789BB21B02EF
+:102400009BB213449AB27B689A803B6806331B7870
+:102410009AB23B6807331B789BB21B029BB21344F2
+:102420009AB27B68DA800C37BD465DF8047B704752
+:1024300080B582B000AF7860396078688021FEF79F
+:102440000DF978680021FEF709F90837BD4680BD0F
+:1024500080B586B000AFF860B9607A600023FB7584
+:10246000FB68002B33D0F86800F034F803460133E2
+:102470009BB25B009AB27B681A80FB7D5A1CFA758E
+:102480001A46BB6813447A681288D2B21A70FB7D70
+:102490005A1CFA751A46BB68134403221A7012E0DC
+:1024A000FB7D5A1CFA751A46BB681A44FB68591C16
+:1024B000F9601B781370FB7D5A1CFA751A46BB68CD
+:1024C000134400221A70FB681B78002BE8D11837E0
+:1024D000BD4680BD80B485B000AF78600023FB733B
+:1024E00005E0FB7B0133FB737B6801337B607B681A
+:1024F0001B78002BF5D1FB7B18461437BD465DF8E1
+:10250000047B704780B584B000AFF860B9601346B3
+:10251000FB71FB68002B01D1022319E0FB6800224C
+:10252000C3F81422FB680022C3F81822BB68002BF2
+:1025300003D0FB68BA68C3F81022FB68012283F855
+:10254000FC21FB68FA791A70F868FDF7DBFF0023BD
+:1025500018461037BD4680BD80B485B000AF7860A6
+:1025600039600023FB733B68002B06D07B683A6818
+:10257000C3F814220023FB7301E00223FB73FB7BEF
+:1025800018461437BD465DF8047B704780B582B0AD
+:1025900000AF78607868FDF7FFFF00231846083722
+:1025A000BD4680BD80B582B000AF78607B68D3F84F
+:1025B00014325B687A685268D2B2786811469847DC
+:1025C0007868FDF7F9FF002318460837BD4680BD3F
+:1025D00080B483B000AF7860002318460C37BD4646
+:1025E0005DF8047B704700BF80B584B000AF7860B1
+:1025F0000B46FB700223FB737B68D3F81432002B6D
+:102600000CD07B68D3F814321B68FA7878681146CE
+:1026100098470346002B01D10023FB73FB7B184630
+:102620001037BD4680BD00BF80B582B000AF786076
+:102630000B46FB707B68D3F814325B68FA787868D5
+:1026400011469847002318460837BD4680BD00BF95
+:1026500080B582B000AF786039607B6803F50273A3
+:1026600018463968FFF7A8FE7B680122C3F8F421F9
+:102670007B68B3F80E321A467B68C3F8F8217B6892
+:1026800093F8083203F01F03012B0BD0022B11D05B
+:10269000002B17D17B6803F5027378681946FFF7A2
+:1026A000CDFA1AE07B6803F5027378681946FFF7E4
+:1026B00015FB12E07B6803F5027378681946FFF793
+:1026C00041FB0AE07B6893F8083223F07F03DBB21A
+:1026D00078681946FDF7C2FF00BF00231846083787
+:1026E000BD4680BD80B586B000AFF8600B467A600D
+:1026F000FB72FB7A002B38D1FB6803F582737B6198
+:10270000FB68D3F8F431032B42D17B699A687B696B
+:10271000DB689A4214D97B699A687B69DB68D21AB4
+:102720007B699A607B69DA687B699B68934228BF02
+:1027300013469BB2F86879681A46FFF745FA27E016
+:10274000FB68D3F814321B69002B0AD0FB6893F89E
+:10275000FC31032B05D1FB68D3F814321B69F868F0
+:102760009847F868FFF742FA12E0FB68D3F8143292
+:102770009B69002B0CD0FB6893F8FC31032B07D12D
+:10278000FB68D3F814329B69FA7AF86811469847C7
+:10279000002318461837BD4680BD00BF80B586B0FF
+:1027A00000AFF8600B467A60FB72FB7A002B6CD1AD
+:1027B000FB6814337B61FB68D3F8F431022B57D1EB
+:1027C0007B699A687B69DB689A420FD97B699A6852
+:1027D0007B69DB68D21A7B699A607B699B689BB2D4
+:1027E000F86879681A46FFF7DDF905E0F868002116
+:1027F00000220023FDF7B4FF7B695B687A69D26829
+:10280000B3FBF2F102FB01F29B1A002B16D17B699C
+:102810005A687B69DB689A4210D37B695A68FB6807
+:10282000D3F8F8319A4209D2F86800210022FFF764
+:10283000B9F9FB680022C3F8F82105E0F868002127
+:1028400000220023FDF78CFFFB68D3F81432DB680D
+:10285000002B0AD0FB6893F8FC31032B05D1FB68F1
+:10286000D3F81432DB68F8689847F868FFF7D2F9B4
+:10287000FB6893F80032012B1AD1F868FFF7A8FE25
+:10288000FB68002283F8002212E0FB68D3F81432C0
+:102890005B69002B0CD0FB6893F8FC31032B07D14C
+:1028A000FB68D3F814325B69FA7AF86811469847E6
+:1028B000002318461837BD4680BD00BF80B582B0E2
+:1028C00000AF78607868002100224023FDF784FE85
+:1028D0007B684022C3F810217868802100224023C1
+:1028E000FDF77AFE7B6840221A627B68012283F83A
+:1028F000FC217B68D3F81832002B09D07B68D3F811
+:1029000014325B687A685268D2B278681146984788
+:10291000002318460837BD4680BD00BF80B483B091
+:1029200000AF78600B46FB707B68FA781A7400235E
+:1029300018460C37BD465DF8047B704780B483B001
+:1029400000AF78607B6893F8FC217B6883F8FD21F9
+:102950007B68042283F8FC21002318460C37BD460F
+:102960005DF8047B704700BF80B483B000AF78602F
+:102970007B6893F8FD217B6883F8FC2100231846CF
+:102980000C37BD465DF8047B704700BF80B582B050
+:1029900000AF78607B6893F8FC31032B0BD17B6828
+:1029A000D3F81432DB69002B05D07B68D3F81432DE
+:1029B000DB6978689847002318460837BD4680BD14
+:1029C00080B483B000AF78600B46FB7000231846DC
+:1029D0000C37BD465DF8047B704700BF80B483B000
+:1029E00000AF78600B46FB70002318460C37BD46DD
+:1029F0005DF8047B704700BF80B483B000AF78609F
+:102A0000002318460C37BD465DF8047B704700BFB5
+:102A100080B582B000AF78607B68012283F8FC212A
+:102A20007B68D3F814325B687A685268D2B27868EF
+:102A300011469847002318460837BD4680BD00BFA1
+:102A400080B582B000AF78607B68D3F814329B6A9F
+:102A500078689847002318460837BD4680BD00BFF8
+:102A600080B584B000AFF8607A603B600B46FB72C3
+:102A7000814AFB681360814A7B681360804AFB7A55
+:102A80001370804A3B681360FB68D3F818327E4AA3
+:102A900013607B681B785A2B00F2DE8001A252F88B
+:102AA00023F000BF112C0008592C0008592C0008F5
+:102AB000172C0008592C0008592C0008592C000824
+:102AC000592C0008592C0008592C0008592C0008D2
+:102AD000592C0008592C0008592C0008592C0008C2
+:102AE000592C0008592C0008592C00081D2C0008EE
+:102AF000592C0008592C0008592C0008592C0008A2
+:102B0000592C0008592C0008592C00082F2C0008BB
+:102B1000232C0008592C0008592C0008292C0008E7
+:102B2000592C0008592C0008592C0008592C000871
+:102B30003B2C0008592C0008412C0008592C000897
+:102B4000592C0008472C0008592C00084D2C00086F
+:102B5000592C0008592C0008592C0008592C000841
+:102B6000532C0008592C0008592C0008592C000837
+:102B7000592C0008592C0008592C0008592C000821
+:102B8000592C0008592C0008592C0008592C000811
+:102B9000592C0008592C0008592C0008592C000801
+:102BA000592C0008592C0008592C0008592C0008F1
+:102BB000592C0008592C0008592C0008592C0008E1
+:102BC000592C0008592C0008592C0008592C0008D1
+:102BD000592C0008592C0008592C0008592C0008C1
+:102BE000592C0008592C0008592C0008592C0008B1
+:102BF000592C0008592C0008592C0008592C0008A1
+:102C0000592C0008592C0008592C0008352C0008B4
+:102C100000F03CF82CE000F09DFA29E000F09AF872
+:102C200026E000F06DFB23E000F06AFB20E000F0FE
+:102C30002DFA1DE000F05CFA1AE000F089F917E0C7
+:102C400000F0E0F814E000F06BFB11E000F0B2FCE3
+:102C50000EE000F035FE0BE0FB7AF868194605221D
+:102C6000202300F00FFB074B1B684FF0FF30984705
+:102C70001037BD4680BD00BF880E00207C0E0020AE
+:102C8000800E0020840E0020780E002080B500AF5A
+:102C9000134B1B68DB69002B0FD0124B1A68124BC9
+:102CA0001B78104619460522202300F0EBFA0F4B43
+:102CB0001B684FF0FF30984710E00B4B1B78002B40
+:102CC00003D0012000F016F808E00948FEF7E8FA02
+:102CD0000346002B02D0012000F00CF880BD00BF9D
+:102CE000780E0020880E0020800E0020840E002028
+:102CF000F52C000880B582B000AF0346FB71FB796C
+:102D0000002B13D00F4B1A680F4B1B781046194637
+:102D100002223A2300F0B6FA0C4B1B6805221A7205
+:102D20000B4B1B684FF0FF30984707E0074B1B68C1
+:102D300000225A81064B1B68002098470837BD4681
+:102D400080BD00BF880E0020800E0020780E00207D
+:102D5000840E002080B584B000AFFDF719FF7860C5
+:102D6000234B1B687A681A61214B1B687A6808320A
+:102D7000DA60204B1B6801331B7803F00103002B42
+:102D800004D01D4BFB6007237B8114E01B4BFB60D1
+:102D9000FB6804331B789BB205337B81154B1B68A2
+:102DA00004331B789BB27A899A4204D3114B1B6877
+:102DB00004331B787B810E4B1B687A895A810CE0A7
+:102DC0007B89013B7B810A4B1B68DA687B89134452
+:102DD0007A89F9680A4412781A707B89002BEFD13E
+:102DE000074B1B68002098471037BD4680BD00BFC9
+:102DF000780E00207C0E0020B8B2000840B2000817
+:102E0000840E002080B500AF0548FEF7ABFA0346FC
+:102E1000002B04D000200021002200F003F880BD28
+:102E2000252E000880B584B000AFF860B9607A60E4
+:102E3000FB68002B0FD1424B1A68424B1B7810469F
+:102E4000194602223A2300F01DFA3F4B1B684FF04F
+:102E5000FF30984771E03D4B1B68FA681A613B4BA5
+:102E60001B68FA680832DA60384B1B68BA689A66E1
+:102E7000364B1B687A6892B2A3F86620334B1B6806
+:102E8000DB68324A1268926E013A120ED2B21A70A0
+:102E90002E4B1B68DB6801332C4A1268926E013A94
+:102EA000120CD2B21A70294B1B68DB680233274A16
+:102EB0001268926E013A120AD2B21A70234B1B6842
+:102EC000DB680333214A1268926ED2B2013AD2B261
+:102ED0001A701E4B1B68DB6804331C4A1268B2F878
+:102EE00066201216D2B21A70184B1B68DB680533C5
+:102EF000164A1268B2F866201214D2B21A70134B36
+:102F00001B68DB680633114A1268B2F86620120AA1
+:102F100092B2D2B21A700D4B1B68DB6807330B4AB2
+:102F20001268B2F86620D2B21A70084B1B680822E9
+:102F30005A81054B1B68002098471037BD4680BD5D
+:102F4000880E0020800E0020840E0020780E0020C5
+:102F500080B500AF0548FEF705FA0346002B04D004
+:102F600000200021002200F003F880BD712F00082E
+:102F700080B584B000AFF860B9607A60FB68002B60
+:102F80000FD13E4B1A683E4B1B7810461946022261
+:102F90003A2300F077F93B4B1B684FF0FF3098471E
+:102FA00068E0394B1B68FA681A61374B1B68FA688E
+:102FB0000832DA60344B1B68DB6800221A70324B2F
+:102FC0001B68DB68013300221A702F4B1B68DB681B
+:102FD000023300221A702C4B1B68DB680333082273
+:102FE0001A70294B1B68DB680433BA68013A120E69
+:102FF000D2B21A70244B1B68DB680533BA68013AF9
+:10300000120CD2B21A70204B1B68DB680633BA6808
+:10301000013A120AD2B21A701B4B1B68DB680733E5
+:10302000BA68D2B2013AD2B21A70174B1B68DB6889
+:10303000083302221A70144B1B68DB6809337A6864
+:10304000120CD2B21A70104B1B68DB680A337A6814
+:10305000120AD2B21A700C4B1B68DB680B337A6809
+:10306000D2B21A70084B1B680C225A81054B1B68A0
+:10307000002098471037BD4680BD00BF880E002055
+:10308000800E0020840E0020780E002080B582B0D3
+:1030900000AF0823FB80FDF77BFD3860114B1B68F8
+:1030A0003A681A610F4B1B683A680832DA600D4BB8
+:1030B0001B68FA885A810BE0FB88013BFB80094BB7
+:1030C0001B68DA68FB881344FA8807498A5C1A701F
+:1030D000FB88002BF0D1054B1B6800209847083770
+:1030E000BD4680BD780E0020C0B20008840E0020CE
+:1030F00080B582B000AF0823FB80FDF749FD386042
+:10310000114B1B683A681A610F4B1B683A6808320A
+:10311000DA600D4B1B68FA885A810BE0FB88013B93
+:10312000FB80094B1B68DA68FB881344FA8807495F
+:103130008A5C1A70FB88002BF0D1054B1B680020BD
+:1031400098470837BD4680BD780E0020C8B20008F9
+:10315000840E002080B582B000AFFDF719FD386005
+:10316000454B1B683A681A61434B1B683A68083242
+:10317000DA600023FB7109E03F4B1B68DA68FB79DA
+:10318000134400221A70FB790133FB71FB79112B78
+:10319000F2D9394B1B68DB6870221A70364B1B68FA
+:1031A000DB6807330C221A70334B1B6893F86420DA
+:1031B000314B1B6893F865309A4244D02E4B1B6804
+:1031C000DB689A1C2C4B19682B4B1B6893F86430F6
+:1031D0000833DB000B441B79DBB21370264B1B68F2
+:1031E000DB6803F10C02244B1968234B1B6893F82E
+:1031F00064300833DB000B445B7ADBB213701E4B88
+:103200001B68DB6803F10D021B4B19681A4B1B6826
+:1032100093F864300833DB000B441B7ADBB2137085
+:10322000154B1B6893F864200132D2B283F86420F6
+:10323000114B1B6893F86430042B04D10E4B1B68B0
+:10324000002283F864200C4B1B6812225A810B4B1E
+:103250001B6804331B78122B07D8074B1B68074ADF
+:1032600012680432127892B25A81054B1B68002012
+:1032700098470837BD4680BD780E00207C0E0020A0
+:10328000840E002080B485B000AF786008461146F7
+:103290001A460346FB700B46BB7013467B707B6877
+:1032A000D3F81832FB60FB6893F86530B978FA6898
+:1032B0000833DB0013440A461A71FB6893F8653043
+:1032C00018467B781B021946FA6800F10803DB00F8
+:1032D00013449960FB6893F865300133DAB2FB68F8
+:1032E00083F86520FB6893F86530042B03D1FB68F5
+:1032F000002283F865201437BD465DF8047B7047D3
+:1033000080B500AF044B1B6800225A81034B1B6839
+:103310000020984780BD00BF780E0020840E00205A
+:1033200080B582B002AF5A4B1B681B7A002B40F06D
+:10333000A280574B1B6893F82030DBB25BB2002BA6
+:1033400011DB544B1A68524B1B6893F8213010461E
+:10335000194605222023FFF795FF4F4B1B684FF0BE
+:10336000FF30984791E04A4B1B684C4A1268023282
+:1033700012781106494A1268033212781204114376
+:10338000464A12680432127812020A434349096815
+:10339000053109780A43DA663D4B1B683F4A1268DB
+:1033A00007321278120291B23C4A1268083212783F
+:1033B00092B20A4392B292B2A3F87020344B1B68C7
+:1033C000DA6E334B1B68B3F870301046194600F0C4
+:1033D000B9FA0346002B11DA2E4B1A682C4B1B68E6
+:1033E00093F821301046194605222023FFF74AFFA3
+:1033F000294B1B684FF0FF30984746E0244B1B6871
+:10340000DB69234A1268B2F870201146204A12681C
+:10341000B2F8662002FB01F2934211D01D4B1A68EC
+:103420001B4B1B6893F821301046194605222023B8
+:10343000FFF728FF184B1B684FF0FF30984724E038
+:10344000134B1B68DB6E1A464FF0000310490968E6
+:10345000B1F8701008460E490968C96900900191D9
+:103460000F48FDF7E5FF0346002B03D0012000F0D5
+:103470001BF80AE009E00B48FEF72AF80346002B88
+:1034800003D00020002100F043F8BD4680BD00BFFE
+:10349000780E0020880E0020840E00207C0E002074
+:1034A000A93400081135000880B582B000AF03468A
+:1034B000FB71FB79002B0FD0104B1A68104B1B7857
+:1034C0001046194602223A23FFF7DCFE0D4B1B681B
+:1034D0004FF0FF3098470DE00B4B1B6802221A7229
+:1034E0000A48FDF7F5FF0346002B03D0002000211A
+:1034F00000F00EF80837BD4680BD00BF880E0020E2
+:10350000800E0020840E0020780E00201135000867
+:1035100080B582B000AF78600B467B807B68002B63
+:103520000FD1204B1A68204B1B78104619460422F5
+:103530001123FFF7A7FE1D4B1B684FF0FF30984784
+:103540002DE01B4B1B681B69002B00D0FEE7184BBE
+:103550001B687A681A61164B1B687A680832DA6051
+:10356000104B1968124B1B68DA687B88084681216A
+:10357000FDF7DCF80E4B1B680D4A1268D16B7A8898
+:103580008A1ADA630A4B1B68DB6B002B03D1084BEA
+:103590001B6803221A72054B1B68002098470837E6
+:1035A000BD4680BD880E0020800E0020840E0020C5
+:1035B000780E002080B584B002AF7B4B1B681B7A6D
+:1035C000002B40F09D80784B1B6893F82030DBB2D5
+:1035D0005BB2002B11DA754B1A68734B1B6893F8BA
+:1035E00021301046194605222023FFF74BFE704B71
+:1035F0001B684FF0FF309847D2E06B4B1B686D4A59
+:1036000012680232127811066A4A1268033212787E
+:1036100012041143674A12680432127812020A43F4
+:1036200064490968053109780A43DA665E4B1B680C
+:10363000604A126807321278120291B25D4A12682B
+:103640000832127892B20A4392B292B2A3F8702072
+:10365000554B1B68DA6E544B1B68B3F8703010463C
+:10366000194600F06FF90346002B11DA4F4B1A6828
+:103670004D4B1B6893F82130104619460522202334
+:10368000FFF700FE4A4B1B684FF0FF30984787E07A
+:10369000454B1B68DB69444A1268B2F8702011463A
+:1036A000414A1268B2F8662002FB01F2934211D03F
+:1036B0003E4B1A683C4B1B6893F821301046194664
+:1036C00005222023FFF7DEFD394B1B684FF0FF304A
+:1036D000984765E0344B1B68DB6E1A464FF00003D9
+:1036E00031490968B1F8701000913348FDF782FF45
+:1036F0000346002B03D0012000F064F850E04FE0B7
+:10370000294B1B68DB6BB3F5007F28BF4FF40073B8
+:103710007B60254B1B681B6918467968FDF7E0FF45
+:103720000346002B0FD0214B1A68244B1B78104600
+:10373000194604220323FFF7A5FD1D4B1B684FF01C
+:10374000FF3098472CE0184B1B68174A1268D16B62
+:103750007A688A1ADA63144B1B68DB6B002B0AD178
+:10376000124B1B681846002100F0C0FA104B1B6872
+:103770000020984714E01248FDF7CAF90346002BD1
+:103780000ED00A4B1A680D4B1B78104619460222C0
+:103790003A23FFF777FD064B1B684FF0FF30984741
+:1037A0000837BD4680BD00BF780E0020880E00207F
+:1037B000840E00207C0E0020C5370008800E0020FB
+:1037C0006938000880B582B000AF0346FB71FB7911
+:1037D000022B0FD11F4B1A681F4B1B78104619463E
+:1037E00002222723FFF74EFD1C4B1B684FF0FF30D2
+:1037F00098472BE0FB79002B0FD0164B1A68164B1D
+:103800001B781046194602223A23FFF73BFD134B63
+:103810001B684FF0FF30984718E0114B1B680122DE
+:103820001A721048FDF774F90346002B0ED0094BAD
+:103830001A68094B1B781046194602223A23FFF7F3
+:1038400021FD064B1B684FF0FF3098470837BD46F7
+:1038500080BD00BF880E0020800E0020840E002056
+:10386000780E00206938000880B582B000AF78601B
+:10387000104B1B687A681A610E4B1B687A68083215
+:10388000DA600D4B19680B4B1B68DA68094B1B6833
+:10389000DB6BB3F5007F28BF4FF400739BB2084683
+:1038A0000121FCF75DFF054B1B6800209847083796
+:1038B000BD4680BD780E0020880E0020840E0020BA
+:1038C00080B500AF1A4B1B6801331B7803F002036D
+:1038D000002B0FD0174B1A68174B1B781046194650
+:1038E00005222423FFF7CEFC144B1B684FF0FF305A
+:1038F00098471BE0124B1B68DA6E114B1B68B3F83C
+:1039000070301046194600F01DF80346002B05DA0A
+:103910000A4B1B684FF0FF30984707E0084B1B68C5
+:1039200000225A81054B1B680020984780BD00BFCC
+:103930007C0E0020880E0020800E0020840E0020C7
+:10394000780E002080B582B000AF78600B467B8097
+:103950000F4B1B689A6E7B689A4207D37A887B6804
+:103960001A440B4B1B689B6E9A420BD9094B1A6881
+:10397000094B1B781046194605222123FFF782FCCC
+:10398000FF2300E000235BB218460837BD4680BD28
+:10399000780E0020880E0020800E002080B584B0B4
+:1039A00000AF78607B68D3F81832FB60FB680022B8
+:1039B0001A72FB6800225A72FB68002283F86520A5
+:1039C000FB68002283F8642078680121FCF732FE4E
+:1039D00078688121FCF72EFEFB681433786801219A
+:1039E0001A461F23FCF7BCFE1037BD4680BD00BF42
+:1039F00080B584B000AF78607B68D3F81832FB6084
+:103A0000FB6800221A72FB6801225A72FB681433A9
+:103A1000786801211A461F23FCF7A2FE1037BD4625
+:103A200080BD00BF80B485B000AF78607B68D3F8FC
+:103A30001832FB60FB6800221A721437BD465DF82D
+:103A4000047B704780B584B000AF78600B46FB7094
+:103A50007B68D3F81832FB60FB681B7A022B04D01A
+:103A6000022B16DB042B14DC0EE00C4A7B6813607F
+:103A7000FB6893F82120FB682333786811461A46C7
+:103A8000074BFEF7EDFF05E07868002100F02EF906
+:103A900000E000BF1037BD4680BD00BF8C0E002087
+:103AA000A53A000880B582B000AF0346FB7197F9D4
+:103AB0000730002B05DA044B1B681846012100F083
+:103AC00015F90837BD4680BD8C0E002080B584B046
+:103AD00000AF78600B46FB707B68D3F81832FB6050
+:103AE000FB681B7A002B02D0012B04D012E078680F
+:103AF00000F02CF80EE0094A7B681360FB6893F82D
+:103B00002120FB682333786811461A46044BFEF7E0
+:103B1000A7FF00BF1037BD4680BD00BF8C0E002040
+:103B2000253B000880B582B000AF0346FB7197F9D2
+:103B30000730002B05DA044B1B681846012100F002
+:103B4000D5F80837BD4680BD8C0E002080B584B006
+:103B500000AF78607B68D3F81832FB60FB689A6925
+:103B6000FB689A63FB68DA69FB68DA6378680121AD
+:103B7000FCF710FE03461F2B13D1FB685B691B4A41
+:103B800093420ED1FB6893F82130012B09D8FB68D2
+:103B900093F82230002B04D0FB6893F82230102BCE
+:103BA0000FD9FB6893F82130786819460522202345
+:103BB000FFF768FBFB6802225A72786800F0C0F8D1
+:103BC00010E00B4A7B6813600A4AFB681360FB68CD
+:103BD00093F82120FB682333786811461A46064B78
+:103BE000FEF73EFF1037BD4680BD00BF5553424330
+:103BF0008C0E0020900E0020FD3B000880B582B0A6
+:103C000000AF0346FB7197F90730002B11DA214B07
+:103C10001B681B7A052B06D11F4B1B681846012118
+:103C200000F064F832E01C4B1B68184600F088F87E
+:103C30002CE0184B1B681B7A022B27D0154B1B68F6
+:103C40001B7A012B22D0134B1B681B7A032B1DD030
+:103C5000104B1B685B89002B0DD00F4B19680D4B67
+:103C60001B68DA680B4B1B685B89084611461A46CD
+:103C700000F014F80AE0074B1B685B89002B05D1A4
+:103C8000054B1B681846002100F030F80837BD4688
+:103C900080BD00BF900E00208C0E002080B586B045
+:103CA00000AFF860B9601346FB80FB68D3F81832A8
+:103CB0007B61FA887B69DB69934228BF1346FB80EE
+:103CC0007B69DA6BFB88D21A7B69DA637B69002235
+:103CD00083F840207B6904221A72FB88F8688121EE
+:103CE000BA68FCF723FD1837BD4680BD80B584B0A7
+:103CF00000AF78600B46FB707B68D3F81832FB602E
+:103D0000FB680E4A5A63FB68FA7883F84020FB6828
+:103D100000221A72FB683433786881211A460D2319
+:103D2000FCF704FDFB681433786801211A461F2351
+:103D3000FCF716FD1037BD4680BD00BF55534253FA
+:103D400080B584B000AF78607B68D3F81832FB6030
+:103D5000FB6893F82030002B0BD1FB68DB69002B4C
+:103D600007D0FB685B7A002B03D178680121FCF750
+:103D700075FC78688121FCF771FCFB685B7A022B8B
+:103D800007D1FB681433786801211A461F23FCF71A
+:103D9000E7FC1037BD4680BD80B584B000AF7860C9
+:103DA0000B46FB707B68D3F81832FB60FB685B7ACC
+:103DB000022B07D178688121FCF750FCFB680022B8
+:103DC0005A720BE0FB785BB2002B07DAFB685B7A78
+:103DD000012B03D078680121FFF788FF1037BD461B
+:103DE00080BD00BF80B584B000AF78600B46FB702B
+:103DF0000023FB817B681B7C002B0ED1786801219E
+:103E000002224FF40073FCF7E7FB7868812102225D
+:103E10004FF40073FCF7E0FB0BE07868012102220D
+:103E20004023FCF7D9FB7868812102224023FCF76C
+:103E3000D3FB742007F03CF903461A467B68C3F8AD
+:103E400018227B68D3F81832002B02D10123FB81A2
+:103E500009E07868FFF7A2FD7B68D3F818320022EA
+:103E60001A610023FB81FB89DBB218461037BD467F
+:103E700080BD00BF80B582B000AF78600B46FB709C
+:103E800078680121FCF7C2FB78688121FCF7BEFB52
+:103E90007868FFF7C7FD7B68D3F81832002B09D08C
+:103EA0007B68D3F81832184607F00AF97B680022BD
+:103EB000C3F81822002318460837BD4680BD00BF4E
+:103EC00080B584B000AF786039607B68D3F8183271
+:103ED000FB603B681B7803F06003002B46D0202B6F
+:103EE00000D09DE03B685B78FE2B02D0FF2B1ED0FC
+:103EF00035E03B685B88002B13D13B68DB88012BE6
+:103F00000FD13B681B78DBB25BB2002B09DAFB6890
+:103F100000221A60FB68786819460122FDF726FE28
+:103F200023E078683968FEF783FA022379E03B687A
+:103F30005B88002B0DD13B68DB88002B09D13B68E7
+:103F40001B78DBB25BB2002B03DB7868FFF750FD18
+:103F50000BE078683968FEF76BFA022361E0786855
+:103F60003968FEF765FA02235BE059E03B685B784D
+:103F70000A2B04D00B2B0AD0012B0FD04FE0FB688B
+:103F80000433786819460122FDF7F0FD47E03B68ED
+:103F90005B88DBB21A46FB685A6040E03B689B884E
+:103FA000DBB278681946FCF745FB3B689B88DBB2BF
+:103FB00078681946FCF72AFB3B689B88DBB25BB24A
+:103FC000002B12DA7B681B7C002B07D178688121DB
+:103FD00002224FF40073FCF7FFFA18E078688121A1
+:103FE00002224023FCF7F8FA11E07B681B7C002BCF
+:103FF00007D17868012102224FF40073FCF7ECFA34
+:1040000005E07868012102224023FCF7E5FA3B68CD
+:104010009B88DBB278681946FFF7BEFE00BF00BF81
+:10402000002318461037BD4680BD00BF80B582B062
+:1040300000AF78600B46FB70FB7878681946FFF795
+:1040400001FD002318460837BD4680BD80B582B00B
+:1040500000AF78600B46FB70FB7878681946FFF775
+:1040600035FD002318460837BD4680BD80B582B0B7
+:1040700000AF78607B68D3F81832002B11D07B68D2
+:10408000D3F818321B69002B0BD07B68D3F8183299
+:104090001B691846FCF7B2FD7B68D3F81832002282
+:1040A0001A61002318460837BD4680BD80B483B02E
+:1040B00000AF78607B6820221A80034B18460C37CB
+:1040C000BD465DF8047B70477000002080B483B06B
+:1040D00000AF78607B6820221A80034B18460C37AB
+:1040E000BD465DF8047B70479000002080B483B02B
+:1040F00000AF78607B6820221A80034B18460C378B
+:10410000BD465DF8047B7047B000002080B483B0EA
+:1041100000AF78607B680A221A80034B18460C3780
+:10412000BD465DF8047B7047D000002084B080B5A8
+:1041300082B000AF786007F1140080E80E00BB6A1F
+:10414000012B20D17B689B6B23F480327B689A63C0
+:104150007B68DB6823F4840323F040037A68D36030
+:104160007B68DB6823F440127B68DA603B6C012BD0
+:1041700005D17B68DB6843F480127B68DA6078687D
+:1041800001F0CCF90CE07B68DB6843F040027B680F
+:10419000DA60786801F0C2F97B684FF480329A6384
+:1041A0003B6A012B0BD17B689B6843F00C027B6858
+:1041B0009A607B689B6843F020027B689A600023CA
+:1041C00018460837BD46BDE8804004B0704700BFC0
+:1041D00080B483B000AF78607B689B6843F00102D5
+:1041E0007B689A60002318460C37BD465DF8047B57
+:1041F000704700BF80B483B000AF78607B689B6875
+:1042000023F001027B689A60002318460C37BD46F4
+:104210005DF8047B704700BF80B582B000AF786066
+:104220000B46FB707B68DB6823F0C0427B68DA607A
+:10423000FB78012B06D17B68DB6843F000527B687A
+:10424000DA6008E0FB78002B05D17B68DB6843F07F
+:1042500080427B68DA60322006F0BEFE00231846FA
+:104260000837BD4680BD00BF84B080B584B000AFC4
+:10427000786007F11C0080E80E000023FB607B687B
+:104280009B6B43F400227B689A633B6C002B05D147
+:104290007B689B6B43F400127B689A637B6803F531
+:1042A00060631A46002313607B6803F500631A46B7
+:1042B0007B6803F500631B6813603B6B012B0CD11B
+:1042C0007B6A002B04D17868002100F041F908E0F6
+:1042D0007868012100F03CF903E07868032100F0E0
+:1042E00037F97868102100F0EBF8786800F00EF9E3
+:1042F0007B6803F500631A46002313617B6803F5AE
+:1043000000631A46002353617B6803F500631A4675
+:104310004FF0FF3393617B6803F500631A46002377
+:10432000D3610023FB6031E0FB685A017B681344D2
+:1043300003F510631B68002B0ADAFB685A017B68DF
+:10434000134403F510631A464FF09043136008E0DE
+:10435000FB685A017B68134403F510631A46002377
+:104360001360FB685A017B68134403F510631A4617
+:1043700000231361FB685A017B68134403F5106343
+:104380001A46FF239360FB680133FB60FA69FB6800
+:104390009A42C9D80023FB6031E0FB685A017B6870
+:1043A000134403F530631B68002B0ADAFB685A01DB
+:1043B0007B68134403F530631A464FF09043136053
+:1043C00008E0FB685A017B68134403F530631A4622
+:1043D00000231360FB685A017B68134403F53063C4
+:1043E0001A4600231361FB685A017B68134403F5E6
+:1043F00030631A46FF239360FB680133FB60FA6960
+:10440000FB689A42C9D87B6803F500631A467B684B
+:1044100003F500631B6923F480731361BB6A012BEE
+:1044200017D17B6803F500631A46234B13637B683F
+:1044300003F500631A467B6803F500631B6B43F4C6
+:10444000803343F0030313637B6803F500631B6B46
+:10445000FB607B6800229A617B686FF080425A6142
+:10446000BB6A002B05D17B689B6943F010027B6817
+:104470009A617B689A69114B13437A6893617B6BED
+:10448000002B05D07B689B6943F008027B689A612A
+:104490003B6C012B07D17B689B6943F0804343F061
+:1044A00004037A689361002318461037BD46BDE8BF
+:1044B000804004B0704700BF0001800000383C809D
+:1044C00080B485B000AF786039600023FB603B6842
+:1044D0009B0143F020027B681A61FB680133FB609B
+:1044E000FB68094A934201D9032306E07B681B69F4
+:1044F00003F02003002BF0D1002318461437BD46EB
+:104500005DF8047B704700BF400D030080B485B0A8
+:1045100000AF78600023FB607B6810221A61FB68A3
+:104520000133FB60FB68094A934201D9032306E08B
+:104530007B681B6903F01003002BF0D100231846A1
+:104540001437BD465DF8047B704700BF400D030083
+:1045500080B483B000AF78600B46FB707B6803F5D6
+:10456000006319467B6803F500631A68FB78134300
+:104570000B60002318460C37BD465DF8047B70477E
+:1045800080B485B000AF78600023FB737B6803F5CF
+:1045900000639B6803F00603002B02D10023FB732A
+:1045A0001CE07B6803F500639B6803F00603022BA5
+:1045B00007D07B6803F500639B6803F00603062BB6
+:1045C00002D10323FB7309E07B6803F500639B685A
+:1045D00003F00603042B01D10223FB73FB7B184677
+:1045E0001437BD465DF8047B704700BF80B483B0CC
+:1045F00000AF786039603B685B78012B3ED17B6807
+:1046000003F5006319467B6803F50063DA693B68CC
+:104610001B781846012383409BB21343CB613B6850
+:104620001B785A017B68134403F510631B6803F47D
+:104630000043002B5CD13B681B785A017B68134414
+:1046400003F5106318463B681B785A017B681344D6
+:1046500003F510631A683B689B68C3F30A03396863
+:10466000C97889040B433968097889050B431343DA
+:1046700043F0805343F40043036039E07B6803F563
+:10468000006319467B6803F50063DB693A681278BA
+:1046900010460122824012041343CB613B681B7811
+:1046A0005A017B68134403F530631B6803F400432D
+:1046B000002B1DD13B681B785A017B68134403F51E
+:1046C000306318463B681B785A017B68134403F536
+:1046D00030631A683B689B68C3F30A033968C9787A
+:1046E00089040B43134343F0805343F400430360B6
+:1046F000002318460C37BD465DF8047B704700BFA9
+:1047000080B483B000AF786039603B685B78012B80
+:1047100035D17B6803F5006319467B6803F50063B8
+:10472000DA6B3B681B781846012383409BB2DB435E
+:104730001340CB637B6803F5006319467B6803F580
+:104740000063DA693B681B781846012383409BB2FB
+:10475000DB431340CB613B681B785A017B681344F1
+:1047600003F5106319463B681B785A017B681344B4
+:1047700003F510631B6823F400430B6034E07B688F
+:1047800003F5006319467B6803F50063DA6B3B6849
+:104790001B781846012383401B04DB431340CB6383
+:1047A0007B6803F5006319467B6803F50063DA69EB
+:1047B0003B681B781846012383401B04DB431340EE
+:1047C000CB613B681B785A017B68134403F5306367
+:1047D00019463B681B785A017B68134403F5306324
+:1047E0001B6823F400430B60002318460C37BD46BA
+:1047F0005DF8047B704700BF90B589B002AFF860E8
+:10480000B9601346FB710023FB82BB685B78012B08
+:1048100040F04681BB685B69002B3BD1BB681B78CD
+:104820005A01FB68134403F510631946BB681B78F3
+:104830005A01FB68134403F510631B6923F0FF530F
+:1048400023F4C0130B61BB681B785A01FB68134447
+:1048500003F510631946BB681B785A01FB681344C3
+:1048600003F510631B6943F400230B61BB681B78DD
+:104870005A01FB68134403F510631946BB681B78A3
+:104880005A01FB68134403F510631B69DB0CDB045E
+:104890000B6186E0BB681B785A01FB68134403F583
+:1048A00010631946BB681B785A01FB68134403F573
+:1048B00010631B69DB0CDB040B61BB681B785A01BE
+:1048C000FB68134403F510631946BB681B785A0153
+:1048D000FB68134403F510631B6923F0FF5323F4B3
+:1048E000C0130B61BB681B785A01FB68134403F5C6
+:1048F00010631846BB681B785A01FB68134403F524
+:1049000010631A69BB685969BB689B680B44591EE0
+:10491000BB689B68B1FBF3F3D9048C4B0B4013438A
+:104920000361BB681B785A01FB68134403F51063ED
+:104930001946BB681B785A01FB68134403F51063E2
+:104940001A69BB685B69C3F3120313430B61BB684D
+:10495000DB78012B25D1BB681B785A01FB68134417
+:1049600003F510631946BB681B785A01FB681344B2
+:1049700003F510631B6923F0C0430B61BB681B7810
+:104980005A01FB68134403F510631946BB681B7892
+:104990005A01FB68134403F510631B6943F000538D
+:1049A0000B61FB79012B0BD1BB681B785A01FB68AB
+:1049B000134403F510631A46BB681B69536116E084
+:1049C000BB68DB78012B12D0BB685B69002B0ED073
+:1049D000FB6803F500631946FB6803F500635B6B36
+:1049E000BA68127810460122824013434B63BB68B9
+:1049F000DB78012B2ED1FB6803F500639B6803F481
+:104A00008073002B13D1BB681B785A01FB681344D9
+:104A100003F510631946BB681B785A01FB68134401
+:104A200003F510631B6843F000530B6012E0BB6892
+:104A30001B785A01FB68134403F510631946BB68E1
+:104A40001B785A01FB68134403F510631B6843F09D
+:104A500080530B60BB681B785A01FB68134403F555
+:104A600010631946BB681B785A01FB68134403F5B1
+:104A700010631B6843F004430B60BB68DB78012BB9
+:104A800040F0F580BB68D968BB681A78BB685B6981
+:104A90009CB2FB790093F868234600F04DFAE6E0FB
+:104AA000BB681B785A01FB68134403F53063194651
+:104AB000BB681B785A01FB68134403F530631B691C
+:104AC000DB0CDB040B61BB681B785A01FB681344E9
+:104AD00003F530631946BB681B785A01FB68134421
+:104AE00003F530631B6923F0FF5323F4C0130B61FC
+:104AF000BB685B69002B2BD1BB681B785A01FB6834
+:104B0000134403F530631946BB681B785A01FB68F0
+:104B1000134403F530631A69BB689B68C3F312033F
+:104B200013430B61BB681B785A01FB68134403F500
+:104B300030631946BB681B785A01FB68134403F5C0
+:104B400030631B6943F400230B613CE00000F81F55
+:104B5000BB685A69BB689B6813445A1EBB689B6854
+:104B6000B2FBF3F3FB82BB681B785A01FB6813446A
+:104B700003F530631946BB681B785A01FB68134480
+:104B800003F530631A69FB8ADB0418463A4B03408D
+:104B900013430B61BB681B785A01FB68134403F590
+:104BA00030631846BB681B785A01FB68134403F551
+:104BB00030631A69BB689B68F98A01FB03F3C3F38E
+:104BC000120313430361FB79012B0AD1BB681B78E5
+:104BD0005A01FB68134403F530631A46BB68DB686F
+:104BE0005361BB68DB78012B2ED1FB6803F50063B2
+:104BF0009B6803F48073002B13D1BB681B785A01A8
+:104C0000FB68134403F530631946BB681B785A01EF
+:104C1000FB68134403F530631B6843F000530B60DB
+:104C200012E0BB681B785A01FB68134403F530633C
+:104C30001946BB681B785A01FB68134403F53063BF
+:104C40001B6843F080530B60BB681B785A01FB68FC
+:104C5000134403F530631946BB681B785A01FB689F
+:104C6000134403F530631B6843F004430B600023D7
+:104C700018461C37BD4690BD0000F81F80B485B0B3
+:104C800000AFF860B9601346FB71BB685B78012B1D
+:104C900040F0D180BB685B69002B3BD1BB681B78BF
+:104CA0005A01FB68134403F510631946BB681B786F
+:104CB0005A01FB68134403F510631B6923F0FF538B
+:104CC00023F4C0130B61BB681B785A01FB681344C3
+:104CD00003F510631946BB681B785A01FB6813443F
+:104CE00003F510631B6943F400230B61BB681B7859
+:104CF0005A01FB68134403F510631946BB681B781F
+:104D00005A01FB68134403F510631B69DB0CDB04D9
+:104D10000B615AE0BB681B785A01FB68134403F52A
+:104D200010631946BB681B785A01FB68134403F5EE
+:104D300010631B69DB0CDB040B61BB681B785A0139
+:104D4000FB68134403F510631946BB681B785A01CE
+:104D5000FB68134403F510631B6923F0FF5323F42E
+:104D6000C0130B61BB685A69BB689B689A4203D940
+:104D7000BB689A68BB685A61BB681B785A01FB68BC
+:104D8000134403F510631946BB681B785A01FB688E
+:104D9000134403F510631B6943F400230B61BB68E4
+:104DA0001B785A01FB68134403F510631946BB686E
+:104DB0001B785A01FB68134403F510631A69BB683A
+:104DC0005B69C3F3120313430B61FB79012B0BD116
+:104DD000BB681B785A01FB68134403F510631A463D
+:104DE000BB681B69536112E0BB685B69002B0ED086
+:104DF000FB6803F500631946FB6803F500635B6B12
+:104E0000BA68127810460122824013434B63BB6894
+:104E10001B785A01FB68134403F510631946BB68FD
+:104E20001B785A01FB68134403F510631B6843F0B9
+:104E300004430B6079E0BB681B785A01FB6813449C
+:104E400003F530631946BB681B785A01FB681344AD
+:104E500003F530631B69DB0CDB040B61BB681B785B
+:104E60005A01FB68134403F530631946BB681B788D
+:104E70005A01FB68134403F530631B6923F0FF53A9
+:104E800023F4C0130B61BB685B69002B03D0BB68C4
+:104E90009A68BB685A61BB681B785A01FB68134467
+:104EA00003F530631946BB681B785A01FB6813444D
+:104EB00003F530631B6943F400230B61BB681B7867
+:104EC0005A01FB68134403F530631946BB681B782D
+:104ED0005A01FB68134403F530631A69BB689B6889
+:104EE000C3F3120313430B61FB79012B0AD1BB6897
+:104EF0001B785A01FB68134403F530631A46BB68FC
+:104F0000DB685361BB681B785A01FB68134403F5E7
+:104F100030631946BB681B785A01FB68134403F5DC
+:104F200030631B6843F004430B60002318461437BA
+:104F3000BD465DF8047B704780B487B000AFF86071
+:104F4000B96011461A460B46FB711346BB8000231D
+:104F50003B6100237B6197F82030002B1DD1BB887B
+:104F60000333002B00DA03339B103B6100237B618A
+:104F70000FE0FB791A03FB68134403F580531A46CC
+:104F8000BB681B6813607B6901337B61BB680433BA
+:104F9000BB607A693B699A42EBD3002318461C3701
+:104FA000BD465DF8047B704780B487B000AFF86001
+:104FB000B9601346FB8000237B61FB880333002B21
+:104FC00000DA03339B103B6100237B610BE0FB683D
+:104FD00003F580531A68BB681A607B6901337B61F3
+:104FE000BB680433BB607A693B699A42EFD3BB6804
+:104FF00018461C37BD465DF8047B704780B483B00B
+:1050000000AF786039603B685B78012B30D13B683A
+:105010001B785A017B68134403F510631B68002B4F
+:1050200012DB3B681B785A017B68134403F510635D
+:1050300019463B681B785A017B68134403F51063DB
+:105040001B6823F080430B603B681B785A017B6828
+:10505000134403F5106319463B681B785A017B68BB
+:10506000134403F510631B6843F400130B602FE037
+:105070003B681B785A017B68134403F530631B6857
+:10508000002B12DB3B681B785A017B68134403F545
+:10509000306319463B681B785A017B68134403F55B
+:1050A00030631B6823F080430B603B681B785A0118
+:1050B0007B68134403F5306319463B681B785A013B
+:1050C0007B68134403F530631B6843F400130B60E3
+:1050D000002318460C37BD465DF8047B704700BFBF
+:1050E00080B483B000AF786039603B685B78012B97
+:1050F0002ED13B681B785A017B68134403F510637B
+:1051000019463B681B785A017B68134403F510630A
+:105110001B6823F400130B603B68DB78032B03D080
+:105120003B68DB78022B41D13B681B785A017B68D6
+:10513000134403F5106319463B681B785A017B68DA
+:10514000134403F510631B6843F080530B602DE09C
+:105150003B681B785A017B68134403F5306319469A
+:105160003B681B785A017B68134403F530631B6866
+:1051700023F400130B603B68DB78032B03D03B6800
+:10518000DB78022B12D13B681B785A017B681344F1
+:1051900003F5306319463B681B785A017B6813445A
+:1051A00003F530631B6843F080530B6000231846FF
+:1051B0000C37BD465DF8047B704700BF80B584B0F6
+:1051C00000AF78600023FB6014E0FB685A017B6845
+:1051D000134403F510631A46FF239360FB685A01DA
+:1051E0007B68134403F530631A46FF239360FB6822
+:1051F0000133FB60FB680E2BE7D97B6803F5006386
+:105200001A464FF0FF3393617B6803F500631A463B
+:10521000002313617B6803F500631A460023536182
+:105220007B6803F500631A460023D3617868FFF7B3
+:105230006DF978681021FFF743F9002318461037FD
+:10524000BD4680BD80B483B000AF78600B46FB7074
+:105250007B6803F500631A467B6803F500631B68EF
+:1052600023F4FE6313607B6803F5006319467B68D3
+:1052700003F500631A68FB781B0103F4FE63134314
+:105280000B60002318460C37BD465DF8047B704761
+:1052900080B582B000AF78607B6803F500631A4682
+:1052A0007B6803F500635B6823F00203536003200F
+:1052B00005F092FE002318460837BD4680BD00BFAA
+:1052C00080B582B000AF78607B6803F500631A4652
+:1052D0007B6803F500635B6843F0020353600320BF
+:1052E00005F07AFE002318460837BD4680BD00BF92
+:1052F00080B485B000AF78600023FB607B685B6999
+:10530000FB607B689B69FA681340FB60FB6818468A
+:105310001437BD465DF8047B704700BF80B485B08C
+:1053200000AF78607B6803F500639B69FB607B6876
+:1053300003F50063DB69FA681340FB60FB681B0C34
+:1053400018461437BD465DF8047B704780B485B0BD
+:1053500000AF78607B6803F500639B69FB607B6846
+:1053600003F50063DB69FA681340FB60FB689BB2DE
+:1053700018461437BD465DF8047B704780B485B08D
+:1053800000AF78600B46FB70FB785A017B681344D2
+:1053900003F530639B68FB607B6803F500635B6922
+:1053A000FA681340FB60FB6818461437BD465DF889
+:1053B000047B704780B487B000AF78600B46FB7009
+:1053C0007B6803F500631B697B617B6803F5006301
+:1053D0005B6B3B61FB783A6922FA03F3DB01DBB2DA
+:1053E0007A6913437B61FB785A017B68134403F5A8
+:1053F00010639A687B691340FB60FB6818461C3792
+:10540000BD465DF8047B704780B483B000AF786020
+:105410007B685B6903F0010318460C37BD465DF8F5
+:10542000047B704780B483B000AF78607B6803F57D
+:1054300010631A467B6803F510631B6823F4FF634F
+:1054400023F0070313607B6803F500639B6803F098
+:105450000603042B0AD17B6803F510631A467B68A8
+:1054600003F510631B6843F0030313607B6803F5C7
+:1054700000631A467B6803F500635B6843F480733E
+:105480005360002318460C37BD465DF8047B704717
+:1054900080B485B000AFF8600B467A60FB72FB68A1
+:1054A00003F530631A4600231361FB6803F530638C
+:1054B0001A46FB6803F530631B6943F4002313614C
+:1054C000FB6803F530631A46FB6803F530631B691C
+:1054D00043F018031361FB6803F530631A46FB6859
+:1054E00003F530631B6943F0C0431361FB7A012B62
+:1054F0000CD1FB6803F530631A467B685361FB6887
+:1055000003F530631A464FF08023136000231846DA
+:105510001437BD465DF8047B704700BF80B485B08A
+:1055200000AF78600023FB60FB680133FB60FB6821
+:10553000134A934201D903231BE07B681B69002BAC
+:10554000F2DA0023FB607B681B6943F001027B6891
+:105550001A61FB680133FB60FB68094A934201D979
+:10556000032306E07B681B6903F00103002BF0D1E5
+:10557000002318461437BD465DF8047B704700BF12
+:10558000400D030080B582B000AF78607B68002BCF
+:1055900001D1012357E07B6893F85130DBB2002B37
+:1055A00006D17B68002283F850207868FCF71AFA4D
+:1055B0007B68022283F851207B681B687A68126836
+:1055C000126822F040021A607B681B687A68516892
+:1055D0007A68926811437A68D26811437A681269CE
+:1055E00011437A68526911437A68926902F4007231
+:1055F00011437A68D26911437A68126A11437A6852
+:10560000926A0A431A607B681B687A689269120C76
+:1056100002F004017A68526A0A435A607B681B6888
+:105620007A68D26A1A617B681B687A681268D269E4
+:1056300022F40062DA617B6800225A657B680122ED
+:1056400083F85120002318460837BD4680BD00BFAF
+:1056500090B587B000AFF860B9607A607B800023B6
+:105660007B61FB6893F85130DBB27B617B69012B76
+:105670000ED0FB685B68B3F5827F40F0CA80FB68A0
+:105680009B68002B40F0C5807B69222B40F0C180D5
+:10569000BB68002B05D07B68002B02D07B88002BD9
+:1056A00001D10123B6E0FB6893F85030012B01D102
+:1056B0000223AFE0FB68012283F85020FB6893F8D7
+:1056C0005130DBB2222B03D0FB68322283F8512009
+:1056D000FB6800225A65FB68BA681A63FB687A881F
+:1056E0009A86FB687A88DA86FB687A689A63FB6830
+:1056F0007A889A87FB687A88DA87FB6800229A643E
+:10570000FB680022DA64FB689B6AB3F5005F0FD187
+:10571000FB681B68FA681268126822F400521A606B
+:10572000FB681B68FA681268126842F400521A603B
+:10573000FB6893F85130DBB2222B08D1FB685B6C1D
+:10574000364A1A64FB685B6C354ADA6307E0FB682B
+:105750005B6C344A1A64FB685B6C334ADA63FB683F
+:105760005B6C324A9A64FB685A6CFB681B680C33AA
+:105770001946FB689B6B1C46FB68DB8F1046224674
+:1057800002F0CAF8FB681B68FA681268526842F0B7
+:1057900001025A60FB681B6C0022DA63FB6893F815
+:1057A0005130DBB2322B04D1FB681B6C1F4A9A6468
+:1057B00003E0FB681B6C00229A64FB681A6CFB68B0
+:1057C0001B6B1946FB681B680C331C46FB68DB8EA1
+:1057D0001046224602F0A0F8FB68002283F8502011
+:1057E000FB681B681B6803F04003002B07D1FB68B4
+:1057F0001B68FA681268126842F040021A60FB687F
+:105800001B68FA681268526842F002025A6000236C
+:1058100000E0022318461C37BD4690BD955A00088B
+:1058200059580008B15A0008455A0008CD5A0008D6
+:1058300080B483B000AF78600C37BD465DF8047B60
+:10584000704700BF80B483B000AF78600C37BD46AE
+:105850005DF8047B704700BF80B584B000AF78600E
+:105860007B689B6BFB607B681B681B6803F4807321
+:10587000002B79D1FB689B68002B08D1FB685B6823
+:10588000B3F5827F03D1F86800F074F85CE0FB6840
+:105890005B68B3F5827F11D1FB689B68B3F5004F5D
+:1058A00004D0FB689B68B3F5806F07D1FB681B6869
+:1058B000FA681268126822F040021A60FB681B68DE
+:1058C000FA681268526822F001025A60FB680022EE
+:1058D000DA87FB689B6AB3F5005F35D1F868012170
+:1058E00000220A2300F010F90346002B05D0FB68C4
+:1058F0005B6D43F02002FB685A65FB681B68DB6840
+:105900009BB27B817B89F868012101220A2300F088
+:10591000FBF80346002B05D0FB685B6D43F02002CB
+:10592000FB685A65FB681B689B6803F01003002B3B
+:105930000AD0FB685B6D43F00202FB685A65FB68A6
+:105940001B686FF010029A60FB68012283F85120F7
+:10595000FB685B6D002B03D0F868FBF789FC06E061
+:10596000F868FBF769FC02E0F868FBF765FC1037A4
+:10597000BD4680BD80B584B000AF78607B689B6A0F
+:10598000B3F5005F26D17868012100220A2300F0D8
+:10599000BBF80346002B05D07B685B6D43F020020B
+:1059A0007B685A657B681B68DB689BB2FB81FB895F
+:1059B0007B681B689B6803F01003002B0AD07B6890
+:1059C0005B6D43F002027B685A657B681B686FF071
+:1059D00010029A607868022100220A2300F094F8ED
+:1059E0000346002B05D07B685B6D43F020027B688B
+:1059F0005A657B681B687A681268526822F0020256
+:105A00005A607868802101220A2300F07DF803465D
+:105A1000002B05D07B685B6D43F020027B685A65E4
+:105A20007B681B687A681268526822F001025A602B
+:105A30007B680022DA867B680022DA871037BD4651
+:105A400080BD00BF80B584B000AF78607B689B6B81
+:105A5000FB607B681B681B6803F48073002B12D10A
+:105A6000F868FFF787FFFB68012283F85120FB6885
+:105A70005B6D002B03D0F868FBF7FAFB06E0F868D3
+:105A8000FBF776F902E0F868FBF772F91037BD46CC
+:105A900080BD00BF80B584B000AF78607B689B6B31
+:105AA000FB60F868FFF7C4FE1037BD4680BD00BF3D
+:105AB00080B584B000AF78607B689B6BFB60F86852
+:105AC000FFF7C0FE1037BD4680BD00BF80B584B073
+:105AD00000AF78607B689B6BFB60FB680022DA8616
+:105AE000FB680022DA87FB68012283F85120FB68FB
+:105AF0005B6D43F01002FB685A65F868FBF7B8FB72
+:105B00001037BD4680BD00BF80B586B000AFF860DD
+:105B1000B9603B601346FB7100237B6105F050FACE
+:105B20007861FB79002B47D13DE03B68B3F1FF3F43
+:105B300039D03B68002B07D005F042FA02467B695A
+:105B4000D21A3B689A422ED9FB681B68FA68126821
+:105B5000526822F0E0025A60FB681B68FA6812681B
+:105B6000126822F040021A60FB689B6AB3F5005F7E
+:105B70000FD1FB681B68FA681268126822F40052A1
+:105B80001A60FB681B68FA681268126842F40052D7
+:105B90001A60FB68012283F85120FB68002283F819
+:105BA0005020032350E0FB681B689A68BB681A40CA
+:105BB000BB689A42B9D146E03DE03B68B3F1FF3F94
+:105BC00039D03B68002B07D005F0FAF902467B6913
+:105BD000D21A3B689A422ED9FB681B68FA68126891
+:105BE000526822F0E0025A60FB681B68FA6812688B
+:105BF000126822F040021A60FB689B6AB3F5005FEE
+:105C00000FD1FB681B68FA681268126822F4005210
+:105C10001A60FB681B68FA681268126842F4005246
+:105C20001A60FB68012283F85120FB68002283F888
+:105C30005020032308E0FB681B689A68BB681A4081
+:105C4000BB689A42B9D0002318461837BD4680BDBC
+:105C500080B594B000AF78600023FB647B681B685C
+:105C600003F00103002B47D09D4B9B6803F00C030E
+:105C7000042B0BD09A4B9B6803F00C03082B07D125
+:105C8000974B5B6803F48003002B01D00123BBE139
+:105C9000944B00221A7005F093F9F86409E005F0BE
+:105CA0008FF90246FB6CD31AB3F5FA7F01D90323AF
+:105CB000AAE18B4B1B6803F40033002BEFD1894A18
+:105CC0007B685B68DBB213707B685B68002B13D06A
+:105CD00005F076F9F86409E005F072F90246FB6C0C
+:105CE000D31AB3F5FA7F01D903238DE17C4B1B68EE
+:105CF00003F40033002BEFD07B681B6803F0020332
+:105D0000002B61D0764B9B6803F00C03002B0BD06B
+:105D1000734B9B6803F00C03082B0CD1704B5B6832
+:105D200003F48003002B06D17B68DB68012B01D0D4
+:105D3000012369E130E07B68DB68002B16D06A4BF9
+:105D400001221A6005F03CF9F86408E005F038F922
+:105D50000246FB6CD31A642B01D9032354E1604B38
+:105D60001B6803F00203002BF0D015E05E4B00220D
+:105D70001A6005F025F9F86408E005F021F90246FB
+:105D8000FB6CD31A642B01D903233DE1544B1B68F0
+:105D900003F00203002BF0D15148514B1B6823F054
+:105DA000F8027B681B69F821B964B96C91FAA1F11A
+:105DB0007964796C3964396CB1FA81F1F963F96B02
+:105DC000C9B28B40134303607B681B6803F0080370
+:105DD000002B30D07B685B69002B16D0434B01222F
+:105DE0001A6005F0EDF8F86408E005F0E9F80246FD
+:105DF000FB6CD31A642B01D9032305E1384B5B6F8D
+:105E000003F00203002BF0D015E0384B00221A609B
+:105E100005F0D6F8F86408E005F0D2F80246FB6C0D
+:105E2000D31A642B01D90323EEE02D4B5B6F03F0F3
+:105E30000203002BF0D17B681B6803F00403002BE6
+:105E400060D0274A264B1B6C43F080531364284ACA
+:105E5000274B1B6843F48073136005F0B1F8F864B6
+:105E600008E005F0ADF80246FB6CD31A642B01D9AB
+:105E70000323C9E01E4B1B6803F48073002BF0D092
+:105E80001C4B00221A7005F09BF8F8640AE005F03C
+:105E900097F80246FB6CD31A41F28832934201D93B
+:105EA0000323B1E00E4B1B6F03F00203002BEED176
+:105EB000104A7B689B68DBB213707B689B68002B81
+:105EC00020D005F07DF8F86416E005F079F8024678
+:105ED000FB6CD31A41F2883293420DD9032393E02D
+:105EE000003802400238024000004742800E47421C
+:105EF0000070004070380240454B1B6F03F00203F6
+:105F0000002BE2D07B689B69002B7CD0404B9B68C8
+:105F100003F00C03082B74D03E4B00221A6005F0EE
+:105F20004FF8F86408E005F04BF80246FB6CD31A12
+:105F3000642B01D9032367E0354B1B6803F0007322
+:105F4000002BF0D17B689B69022B5CD130487B68C9
+:105F50001A6A7B685B6A47F6C071B963B96B91FADC
+:105F6000A1F17963796B3963396BB1FA81F1F96227
+:105F7000F96AC9B28B401A437B689B6A5B08013B94
+:105F80004FF44031B962B96A91FAA1F17962796A44
+:105F90003962396AB1FA81F1F961F969C9B28B40A4
+:105FA0001A437B68DB691A437B68DB6A4FF07061D8
+:105FB000B961B96991FAA1F1796179693961396990
+:105FC000B1FA81F1F960F968C9B28B40134343F02B
+:105FD000005343600F4B01221A6004F0F1FFF86494
+:105FE00008E004F0EDFF0246FB6CD31A642B01D9E4
+:105FF000032309E0064B1B6803F00073002BF0D06D
+:1060000001E0012300E0002318465037BD4680BD63
+:10601000003802406000474280B584B000AF78602D
+:1060200039600023FB60A64B1B6803F00F023B683E
+:106030009A4280F09080A24B3A68D2B21A70A04B7C
+:106040001B6803F00F023B689A4201D0012333E141
+:106050007B681B6803F00203002B08D09949994B19
+:106060009B6823F0F0027B689B6813438B607B681E
+:106070001B6803F00103002B00F0FB807B685B686A
+:10608000012B07D18F4B1B6803F40033002B15D174
+:10609000012311E17B685B68022B07D1894B1B68E8
+:1060A00003F00073002B09D1012305E1854B1B6828
+:1060B00003F00203002B01D10123FDE08149814B54
+:1060C0009B6823F003027B685B6813438B6004F0DA
+:1060D00077FFF8607B685B68012B12D10AE004F05F
+:1060E0006FFF0246FB68D31A41F28832934201D90E
+:1060F0000323E1E0734B9B6803F00C03042BEED108
+:10610000B7E07B685B68022B12D10AE004F058FF0D
+:106110000246FB68D31A41F28832934201D9032325
+:10612000CAE0684B9B6803F00C03082BEED1A0E09B
+:106130000AE004F045FF0246FB68D31A41F28832B8
+:10614000934201D90323B7E05E4B9B6803F00C0335
+:10615000002BEED18DE07B681B6803F00203002B5F
+:1061600008D05849574B9B6823F0F0027B689B6826
+:1061700013438B607B681B6803F00103002B6BD01B
+:106180007B685B68012B07D14E4B1B6803F400331F
+:10619000002B15D101238FE07B685B68022B07D1B0
+:1061A000484B1B6803F00073002B09D1012383E0E7
+:1061B000444B1B6803F00203002B01D101237BE059
+:1061C0004049404B9B6823F003027B685B681343A4
+:1061D0008B6004F0F5FEF8607B685B68012B12D1E0
+:1061E0000AE004F0EDFE0246FB68D31A41F2883261
+:1061F000934201D903235FE0324B9B6803F00C0309
+:10620000042BEED128E07B685B68022B12D10AE0F8
+:1062100004F0D6FE0246FB68D31A41F2883293425C
+:1062200001D9032348E0274B9B6803F00C03082B9C
+:10623000EED111E00AE004F0C3FE0246FB68D31A77
+:1062400041F28832934201D9032335E01D4B9B680C
+:1062500003F00C03002BEED1194B3A68D2B21A703E
+:10626000174B1B6803F00F023B689A4201D00123D1
+:1062700022E07B681B6803F00403002B08D011495F
+:10628000104B9B6823F4E0527B68DB6813438B6000
+:106290007B681B6803F00803002B09D00949094BF0
+:1062A0009B6823F460427B681B69DB0013438B60AF
+:1062B000002004F061FE002318461037BD4680BD63
+:1062C000003C02400038024080B491B000AF00238F
+:1062D0007B630023FB6300233B630023BB633D4BD5
+:1062E0009B6803F00C03042B06D0082B07D0002B6F
+:1062F00066D1394BBB6366E0384BBB6363E0354B1B
+:106300005B6803F03F037B63324B5B6803F48003FD
+:10631000002B1CD0314A7B6BB2FBF3F22D4B59683A
+:1063200047F6C0730B4047F6C071F962F96A91FAFB
+:10633000A1F1B962B96A7962796AB1FA81F1396217
+:10634000396AC9B2CB4003FB02F3FB631BE0224A6C
+:106350007B6BB2FBF3F21F4B596847F6C0730B40DF
+:1063600047F6C071F961F96991FAA1F1B961B969AA
+:1063700079617969B1FA81F139613969C9B2CB4082
+:1063800003FB02F3FB63134B5B6803F440334FF4EE
+:106390004032FA60FA6892FAA2F2BA60BA687A6099
+:1063A0007A68B2FA82F23A603A68D2B2D3400133E4
+:1063B0005B003B63FA6B3B6BB2FBF3F3BB6302E046
+:1063C000054BBB6300BFBB6B18464437BD465DF849
+:1063D000047B7047003802400024F40000127A0069
+:1063E00080B584B000AFFFF76FFF01460F4B9B688D
+:1063F00003F0F003F022FA60FA6892FAA2F2BA60AF
+:10640000BA687A607A68B2FA82F23A603A68D2B2CE
+:10641000D340074AD35C21FA03F3064A1360054BC5
+:106420001B6818461037BD4680BD00BF00380240CB
+:10643000D0B20008DC00002080B485B000AF7860E6
+:106440000B46FB7013463B800023FB730023BB60AD
+:106450007B681B685B6ABB60FB78002B08D17B689C
+:106460001B683A8812041146BA680A439A6229E006
+:106470007B681B689B6A1B0CBA681344BB600023D3
+:10648000FB730DE07B681A68FB7B40339B00134471
+:106490005B681B0CBA681344BB60FB7B0133FB7366
+:1064A000FA7BFB78013B9A42ECDB7B681968FB784E
+:1064B000013B3A8812041046BA68024340339B00FD
+:1064C0000B445A60002318461437BD465DF8047B20
+:1064D000704700BF80B483B000AF78600B467B800C
+:1064E0007B681B687A885A62002318460C37BD46C1
+:1064F0005DF8047B704700BFF0B58FB00AAF7860DD
+:106500000023FB607B68002B01D10123F7E07B684F
+:10651000032283F87D237868F9F7BEFE7B681B6849
+:106520001846FDF767FE7B68D3F800E07E686D468D
+:1065300006F110040FCC0FC50FCC0FC523682B60DC
+:10654000331D0ECB7046FDF7F1FD7B681B681846C6
+:106550000021FDF761FE0023FB604CE07968FA68DA
+:106560001346DB009B1A9B000B44303301225A7107
+:10657000FB68D8B27968FA681346DB009B1A9B0067
+:106580000B44303302461A71FB6898B27968FA6896
+:106590001346DB009B1A9B000B44303302465A81A2
+:1065A0007968FA681346DB009B1A9B000B44303372
+:1065B0000022DA717968FA681346DB009B1A9B00A7
+:1065C0000B44383300225A607968FA681346DB00BE
+:1065D0009B1A9B000B44383300229A607968FA6852
+:1065E0001346DB009B1A9B000B44403300229A6049
+:1065F000FB680133FB60FB680E2BAFD90023FB6007
+:106600005AE07968FA681346DB009B1A9B000B443A
+:1066100003F5EC7300225A70FB68D8B27968FA6807
+:106620001346DB009B1A9B000B4403F5EC730246F8
+:106630001A70FB6898B27968FA681346DB009B1AF7
+:106640009B000B44303302465A817968FA6813463E
+:10665000DB009B1A9B000B4403F5EC730022DA70FD
+:106660007968FA681346DB009B1A9B000B4403F51C
+:10667000F07300221A607968FA681346DB009B1AEF
+:106680009B000B4403F5F07300225A607968FA68A6
+:106690001346DB009B1A9B000B4403F5F4730022A6
+:1066A0005A607B681A68FB6840339B0013440022E1
+:1066B0005A60FB680133FB60FB680E2BA1D97B6835
+:1066C000D3F800E07E686D4606F110040FCC0FC5CC
+:1066D0000FCC0FC523682B60331D0ECB7046FDF722
+:1066E000C3FD7B68012283F87D237B68002283F849
+:1066F0007C237B681B681846FEF7E2FD00231846E2
+:106700001437BD46F0BD00BF80B582B000AF7860E1
+:106710007B6893F87C33012B01D1022312E07B6864
+:10672000012283F87C237B681B681846FEF7B0FDC6
+:106730007B681B681846FDF74BFD7B68002283F8D9
+:106740007C23002318460837BD4680BD80B582B043
+:1067500000AF78607B6893F87C33012B01D1022372
+:1067600017E07B68012283F87C237B681B6818464E
+:10677000FDF740FD7B681B681846FEF71FFD7B6830
+:106780001B681846FEF79CFD7B68002283F87C237B
+:10679000002318460837BD4680BD00BF80B58AB0CB
+:1067A00000AF78607B681B68BB6100237B620023BD
+:1067B0003B6200237B610023FB6100233B610023DC
+:1067C000FB607B681B681846FEF71EFE0346002B25
+:1067D00040F092837B681B681846FEF789FD0346EC
+:1067E000002B00D188E37B681B681846FEF780FD0C
+:1067F000034603F00203002B03D07B681B680222D0
+:106800005A617B681B681846FEF772FD034603F465
+:106810000023002B00F0B3800023FB617B681B6822
+:106820001846FEF77BFD3862A5E03B6A03F00103E2
+:10683000002B00F09A807B681A68FB69DBB2104677
+:106840001946FEF79BFD78617B6903F00103002B7D
+:106850006CD0FB695A01BB69134403F530631A46D7
+:10686000012393607B681B69012B3CD17968FA692D
+:106870001346DB009B1A9B000B4403F5F0731A6868
+:10688000FB695901BB690B4403F530631B69C3F312
+:106890001203D11A7868FA691346DB009B1A9B0031
+:1068A000034403F5F87319607968FA691346DB004D
+:1068B0009B1A9B000B4403F5F07359687868FA69DA
+:1068C0001346DB009B1A9B00034403F5F0731B681F
+:1068D00019447868FA691346DB009B1A9B0003444D
+:1068E00003F5F0735960FB69DBB278681946F9F774
+:1068F0001BFD7B681B69012B18D1FB69002B15D18F
+:106900007968FA691346DB009B1A9B000B4403F578
+:10691000F4735B68002B09D17B681A687B6803F508
+:106920006073104601211A46FEF7B2FD7B6903F041
+:106930000803002B0BD07868F9F7E4FCFB695A01D7
+:10694000BB69134403F530631A46082393607B69DF
+:1069500003F01003002B08D0FB695A01BB691344F4
+:1069600003F530631A4610239360FB690133FB6122
+:106970003B6A5B083B623B6A002B7FF456AF7B6847
+:106980001B681846FEF7B4FC034603F48023002B73
+:1069900000F0C4807B681B681846FEF7D7FC38629D
+:1069A0000023FB61B6E03B6A03F00103002B00F01B
+:1069B000AB807B681A68FB69DBB210461946FEF7AC
+:1069C000F9FC78617B6903F00103002B5BD0FB6964
+:1069D000012202FA03F33B61BB6903F50063194628
+:1069E000BB6903F500635A6B3B69DB4313404B63A0
+:1069F000FB695A01BB69134403F510631A4601236E
+:106A000093607B681B69012B1BD17968FA69134677
+:106A1000DB009B1A9B000B44383399687868FA694D
+:106A20001346DB009B1A9B00034438335B68194410
+:106A30007868FA691346DB009B1A9B0003443833DD
+:106A40009960FB69DBB278681946F9F789FC7B68C5
+:106A50001B69012B17D1FB69002B14D17968FA69E6
+:106A60001346DB009B1A9B000B4440339B68002BB2
+:106A700009D17B681A687B6803F5607310460121B1
+:106A80001A46FEF705FD7B6903F00803002B08D0CA
+:106A9000FB695A01BB69134403F510631A460823C6
+:106AA00093607B6903F01003002B08D0FB695A0147
+:106AB000BB69134403F510631A46102393607B6986
+:106AC00003F04003002B08D0FB695A01BB69134453
+:106AD00003F510631A46402393607B6903F00203B9
+:106AE000002B08D0FB695A01BB69134403F51063FE
+:106AF0001A46022393607B6903F08003002B03D0C6
+:106B00007868F96900F076FCFB690133FB613B6A48
+:106B10005B083B623B6A002B7FF445AF7B681B68D8
+:106B20001846FEF7E5FB0346002B12DABB6903F5B6
+:106B300000631A46BB6903F500635B6823F0010339
+:106B400053607868F9F776FC7B681B684FF0004269
+:106B50005A617B681B681846FEF7CAFB034603F4BC
+:106B60000063002B0FD0BB6903F500639B6803F043
+:106B70000103002B02D07868F9F742FC7B681B68A0
+:106B80004FF400625A617B681B681846FEF7B0FB41
+:106B9000034603F48053002B00F09080BB6903F59B
+:106BA00000631A46BB6903F500635B6823F00103C9
+:106BB00053607B681B6818460021FDF781FC0023A9
+:106BC0007B6214E07B6A5A01BB69134403F51063CE
+:106BD0001A46FF2393607B6A5A01BB69134403F58D
+:106BE00030631A46FF2393607B6A01337B627B68C4
+:106BF0005A687B6A9A42E5D8BB6903F500631A4676
+:106C00004FF0FF339361BB6903F500631A46BB691C
+:106C100003F50063DB6943F00113D3617B68DB6A32
+:106C2000002B18D0BB6903F500631A46BB6903F556
+:106C30000063D3F8843043F00B03C2F88430BB699F
+:106C400003F500631A46BB6903F500635B6C43F010
+:106C50000B03536415E0BB6903F500631A46BB6977
+:106C600003F500635B6943F00B035361BB6903F5F4
+:106C700000631A46BB6903F500631B6943F00B030D
+:106C80001361BB6903F500631A46BB6903F5006332
+:106C90001B6823F4FE6313607B6819687B681B69BB
+:106CA000DAB27B6803F56073084611461A46FEF7B0
+:106CB000EFFB7B681B684FF480525A617B681B684E
+:106CC0001846FEF715FB034603F40053002B3AD099
+:106CD0007B681B681846FEF7A5FB7B681B687A6813
+:106CE0001268D26822F47052DA607B681B6818461A
+:106CF000FDF746FC0346002B0FD17B680022DA60CB
+:106D00007B684FF400725A617B681B687A6812686E
+:106D1000D26842F41052DA600DE07B680322DA6038
+:106D20007B6840225A617B681B687A681268D26867
+:106D300042F4A052DA607868F9F73AFB7B681B6886
+:106D40004FF400525A617B681B681846FEF7D0FA70
+:106D5000034603F01003002B63D07B681B687A683E
+:106D60001268926922F010029A61BB691B6AFB608B
+:106D7000FB6803F00F021346DB009B1A9B0003F530
+:106D8000EC737A681344BB60FB6803F4F0135B0C8C
+:106D9000022B26D1FA6847F6F0731340002B38D047
+:106DA000BB68D968FA6847F6F07313401B099BB2B9
+:106DB000B8691A46FEF7F8F8BB68DA68F96847F66A
+:106DC000F0730B401B091A44BB68DA60BB689A6910
+:106DD000F96847F6F0730B401B091A44BB689A61C7
+:106DE00017E0FB6803F4F0135B0C062B11D17B68F2
+:106DF00003F56073B86919460822FEF7D5F8BB6839
+:106E00009A69F96847F6F0730B401B091A44BB688E
+:106E10009A617B681B687A681268926942F0100276
+:106E20009A617B681B681846FEF762FA034603F016
+:106E30000803002B06D07868F9F7ACFA7B681B686A
+:106E400008225A617B681B681846FEF751FA034610
+:106E500003F48013002B0AD0FB69DBB27868194673
+:106E6000F9F714FB7B681B684FF480125A617B684A
+:106E70001B681846FEF73CFA034603F40013002B88
+:106E80000AD0FB69DBB278681946F9F7EDFA7B683E
+:106E90001B684FF400125A617B681B681846FEF7A6
+:106EA00027FA034603F08043002B07D07868F9F7F0
+:106EB000FFFA7B681B684FF080425A617B681B6851
+:106EC0001846FEF715FA034603F00403002B13D00F
+:106ED0007B681B685B68FB60FB6803F00403002BA6
+:106EE00002D07868F9F7F2FA7B681B687A68126852
+:106EF0005168FA680A435A602837BD4680BD00BF12
+:106F000080B582B000AF78600B46FB707B6893F869
+:106F10007C33012B01D102230FE07B68012283F82F
+:106F20007C237B681A68FB7810461946FEF78AF9BD
+:106F30007B68002283F87C23002318460837BD466F
+:106F400080BD00BF80B584B000AF786008461146B0
+:106F50001A460346FB700B463B801346BB7000236A
+:106F6000FB72FB785BB2002B0CDAFB7803F07F023C
+:106F70001346DB009B1A9B0030337A6813440433BA
+:106F8000FB600BE0FB7803F07F021346DB009B1AEB
+:106F90009B0003F5EC737A681344FB60FB7803F005
+:106FA0007F03DAB2FB681A70FB78DB09DBB21A46A2
+:106FB000FB685A703A88FB689A60FB68BA78DA70A6
+:106FC000FB685B78002B04D0FB681B789AB2FB68E7
+:106FD000DA80BB78022B02D1FB6800221A717B6831
+:106FE00093F87C33012B01D102230EE07B68012250
+:106FF00083F87C237B681B681846F968FDF7F6FA6E
+:107000007B68002283F87C23FB7A18461037BD4644
+:1070100080BD00BF80B584B000AF78600B46FB70C8
+:10702000FB785BB2002B0CDAFB7803F07F0213468F
+:10703000DB009B1A9B0030337A6813440433FB60F7
+:107040000BE0FB7803F07F021346DB009B1A9B00EA
+:1070500003F5EC737A681344FB60FB7803F07F035D
+:10706000DAB2FB681A70FB78DB09DBB21A46FB6800
+:107070005A707B6893F87C33012B01D102230EE018
+:107080007B68012283F87C237B681B681846F968BB
+:10709000FDF736FB7B68002283F87C23002318462B
+:1070A0001037BD4680BD00BF80B586B000AFF86028
+:1070B0007A603B600B46FB72FB7A03F07F0213465B
+:1070C000DB009B1A9B0003F5EC73FA6813447B61A9
+:1070D0007B697A68DA607B693A685A617B69002269
+:1070E0009A617B6900225A70FB7A03F07F03DAB25F
+:1070F0007B691A70FB681B69012B02D17A687B6976
+:107100001A61FB6893F87C33012B01D1022322E042
+:10711000FB68012283F87C23FB7A03F07F03002BBA
+:107120000AD1FB681A68FB681B69DBB210467969F3
+:107130001A46FDF7A3FD09E0FB681A68FB681B69A6
+:10714000DBB2104679691A46FDF756FBFB68002250
+:1071500083F87C23002318461837BD4680BD00BF46
+:1071600080B483B000AF78600B46FB70FB7803F00F
+:107170007F0279681346DB009B1A9B000B4403F5E2
+:10718000F8731B689BB218460C37BD465DF8047B4C
+:10719000704700BF80B586B000AFF8607A603B6092
+:1071A0000B46FB72FB7A03F07F021346DB009B1A4F
+:1071B0009B003033FA68134404337B617B697A683F
+:1071C000DA607B693A685A617B6900229A617B695F
+:1071D00001225A70FB7A03F07F03DAB27B691A70DE
+:1071E000FB681B69012B02D17A687B691A61FB6815
+:1071F00093F87C33012B01D1022322E0FB680122AA
+:1072000083F87C23FB7A03F07F03002B0AD1FB6811
+:107210001A68FB681B69DBB2104679691A46FDF7EC
+:107220002DFD09E0FB681A68FB681B69DBB210469C
+:1072300079691A46FDF7E0FAFB68002283F87C239F
+:10724000002318461837BD4680BD00BF80B584B006
+:1072500000AF78600B46FB70FB785BB2002B0CDA5A
+:10726000FB7803F07F021346DB009B1A9B00303350
+:107270007A6813440433FB6009E0FA781346DB00B4
+:107280009B1A9B0003F5EC737A681344FB60FB6860
+:1072900001229A70FB7803F07F03DAB2FB681A7060
+:1072A000FB78DB09DBB21A46FB685A707B6893F8FF
+:1072B0007C33012B01D1022320E07B68012283F87B
+:1072C0007C237B681B681846F968FDF797FEFB78FE
+:1072D00003F07F03002B0CD17B6819687B681B6966
+:1072E000DAB27B6803F56073084611461A46FEF76A
+:1072F000CFF87B68002283F87C23002318461037E0
+:10730000BD4680BD80B584B000AF78600B46FB7091
+:10731000FB785BB2002B0CDAFB7803F07F0213469C
+:10732000DB009B1A9B0030337A6813440433FB6004
+:1073300009E0FA781346DB009B1A9B0003F5EC7317
+:107340007A681344FB60FB6800229A70FB7803F0B4
+:107350007F03DAB2FB681A70FB78DB09DBB21A46EE
+:10736000FB685A707B6893F87C33012B01D10223B0
+:107370000EE07B68012283F87C237B681B6818463B
+:10738000F968FDF7ADFE7B68002283F87C230023BB
+:1073900018461037BD4680BD80B582B000AF78601A
+:1073A0000B46FB707B6893F87C33012B01D10223E1
+:1073B0001BE07B68012283F87C23FB785BB2002B07
+:1073C00009DA7B681A68FB7803F07F0310461946D8
+:1073D000FDF776F804E07B681B681846FDF796F821
+:1073E0007B68002283F87C23002318460837BD46BB
+:1073F00080BD00BF90B58BB002AF786039607B680C
+:107400001B687B610023FB6100233B613A681346E4
+:10741000DB009B1A9B0030337A6813440433FB6013
+:10742000FB685A69FB689B69D31AFB61FA69FB68C0
+:107430009B689A4202D9FB689B68FB61FB69033336
+:10744000002B00DA03339B10BB612EE0FB68D96888
+:107450003B68DAB2FB699CB27B681B69DBB20093C4
+:1074600078692346FDF768FDFB68DA68FB691A4412
+:10747000FB68DA60FB689A69FB691A44FB689A61E9
+:10748000FB685A69FB689B69D31AFB61FA69FB6860
+:107490009B689A4202D9FB689B68FB61FB690333D6
+:1074A000002B00DA03339B10BB613B685A017B69F8
+:1074B000134403F510639B699AB2BB699A4209D3DE
+:1074C000FB689A69FB685B699A4203D2FB685B6957
+:1074D000002BBBD1FB69002B13DC3B68012202FAB5
+:1074E00003F33B617B6903F5006319467B6903F590
+:1074F00000635A6B3B69DB4313404B637868F8F7D2
+:10750000F3FF002318462437BD4690BD80B487B0F2
+:1075100000AF786039600023FB600023BB6000236C
+:107520003B6100237B6165E17B69012202FA03F381
+:10753000FB603B681A68FB681340BB60BA68FB6875
+:107540009A4240F054813B685B68022B03D03B6851
+:107550005B68122B22D17B69DA087B68083253F80A
+:1075600022303B617B6903F007039B001A460F231F
+:107570009340DB433A6913403B613B681B697A697E
+:1075800002F00702920093403A6913433B617B6922
+:10759000DA087B680832396943F822107B681B6877
+:1075A0003B617B695B001A4603239340DB433A69E6
+:1075B00013403B613B685B6803F003037A69520048
+:1075C00093403A6913433B617B683A691A603B68B0
+:1075D0005B68012B0BD03B685B68022B07D03B68D4
+:1075E0005B68112B03D03B685B68122B2FD17B6843
+:1075F0009B683B617B695B001A4603239340DB4336
+:107600003A6913403B613B68DB687A6952009340FA
+:107610003A6913433B617B683A699A607B685B68AF
+:107620003B617B69012202FA03F3DB433A691340B1
+:107630003B613B685B6803F010031A097B6902FA3F
+:1076400003F33A6913433B617B683A695A607B688C
+:10765000DB683B617B695B001A4603239340DB4395
+:107660003A6913403B613B689B687A6952009340DA
+:107670003A6913433B617B683A69DA603B685B684F
+:1076800003F08053002B00F0B2805F4A5E4B5B6CCE
+:1076900043F4804353645D4A7B699B08023352F88C
+:1076A00023303B617B6903F003039B001A460F23E1
+:1076B0009340DB433A6913403B617B68544A9342F1
+:1076C00031D07B68534A93422BD07B68524A934215
+:1076D00025D07B68514A93421FD07B68504A934221
+:1076E00019D07B684F4A934213D07B684E4A93422D
+:1076F0000DD07B684D4A934207D07B684C4A934239
+:1077000001D1082310E009230EE007230CE0062333
+:107710000AE0052308E0042306E0032304E0022333
+:1077200002E0012300E000237A6902F003029200E4
+:1077300093403A6913433B6134497B699B080233A8
+:107740003A6941F823203B4B1B683B61BB68DB4334
+:107750003A6913403B613B685B6803F48033002B5C
+:1077600003D03A69BB6813433B61324A3B691360FB
+:10777000304B5B683B61BB68DB433A6913403B615C
+:107780003B685B6803F40033002B03D03A69BB68A5
+:1077900013433B61274A3B695360264B9B683B611F
+:1077A000BB68DB433A6913403B613B685B6803F4A9
+:1077B0008013002B03D03A69BB6813433B611D4A19
+:1077C0003B6993601B4BDB683B61BB68DB433A69F9
+:1077D00013403B613B685B6803F40013002B03D04C
+:1077E0003A69BB6813433B61124A3B69D3607B69CA
+:1077F00001337B617B690F2B7FF696AE1C37BD464C
+:107800005DF8047B704700BF00380240003801403B
+:10781000000002400004024000080240000C024048
+:10782000001002400014024000180240001C0240F8
+:1078300000200240003C014080B485B000AF786079
+:107840000023FB607B68002B01D101235BE07B6898
+:10785000022283F835207B681B681B68FB60FA688E
+:107860002C4B1340FB607B685A687B689B681A430B
+:107870007B68DB681A437B681B691A437B685B691A
+:107880001A437B689B691A437B68DB691A437B68F0
+:107890001B6A1343FA681343FB607B685B6A042B23
+:1078A00007D17B68DA6A7B681B6B1343FA68134362
+:1078B000FB607B681B68FA681A607B681B685B6901
+:1078C000FB60FB6823F00703FB607B685B6AFA6878
+:1078D0001343FB607B685B6A042B04D17B689B6A63
+:1078E000FA681343FB607B681B68FA685A617B681F
+:1078F0000022DA647B68012283F835207B6800224D
+:1079000083F83420002318461437BD465DF8047B05
+:10791000704700BF3F8010F080B584B000AFF860C2
+:10792000B9607A603B60FB6893F83430012B01D179
+:10793000022346E0FB68012283F83420FB68022220
+:1079400083F83520FB681B68FA681268126822F019
+:1079500001021A60F868B9687A683B6803F09AF91E
+:10796000FB681B68FA681268126842F010021A601D
+:10797000FB681B68FA681268126842F008021A6015
+:10798000FB681B68FA681268126842F004021A6009
+:10799000FB681B68FA681268526942F080025A61FB
+:1079A000FB681B68FA681268126842F002021A60EB
+:1079B000FB681B68FA681268126842F001021A60DC
+:1079C000002318461037BD4680BD00BF80B582B089
+:1079D00000AF78607B681B681A46784B9A4272D970
+:1079E000774B5A687B681B681946764B994262D080
+:1079F0007B681B681946744B99425AD07B681B6898
+:107A00001946724B994252D07B681B681946704BDD
+:107A100099424AD07B681B6819466E4B994241D007
+:107A20007B681B6819466C4B994238D07B681B6891
+:107A300019466A4B99422FD07B681B681946684BE0
+:107A4000994226D07B681B681946664B99421DD027
+:107A50007B681B681946644B994214D07B681B688D
+:107A60001946624B99420BD07B681B681946604BE4
+:107A7000994202D14FF400231EE04FF000731BE047
+:107A80004FF4002318E04FF4002315E04FF40023D7
+:107A900012E04FF400730FE04FF400730CE04FF46A
+:107AA000007309E04FF4007306E0082304E00823A4
+:107AB00002E0082300E008231340002B14BF012339
+:107AC0000023DBB29FE17B681B681A46494B9A4250
+:107AD00040F292803A4B1A687B681B681946394B12
+:107AE000994262D07B681B681946374B99425AD03D
+:107AF0007B681B681946354B994252D07B681B68DE
+:107B00001946334B99424AD07B681B681946314B62
+:107B1000994241D07B681B6819462F4B994238D057
+:107B20007B681B6819462D4B99422FD07B681B68D8
+:107B300019462B4B994226D07B681B681946294B66
+:107B400099421DD07B681B681946274B994214D077
+:107B50007B681B681946254B99420BD07B681B68D4
+:107B60001946234B994202D14FF400231EE04FF0F7
+:107B700000731BE04FF4002318E04FF4002315E0DE
+:107B80004FF4002312E04FF400730FE04FF4007342
+:107B90000CE04FF4007309E04FF4007306E0082393
+:107BA00004E0082302E0082300E008231340002B30
+:107BB00014BF01230023DBB225E100BF586402405B
+:107BC0000064024010600240106402407060024095
+:107BD00070640240286002402864024088600240CD
+:107BE000886402404060024040640240A06002405D
+:107BF000A0640240B86002407B681B681A46704B64
+:107C00009A4272D96F4B5A687B681B6819466E4B53
+:107C1000994262D07B681B6819466C4B99425AD0D6
+:107C20007B681B6819466A4B994252D07B681B6877
+:107C30001946684B99424AD07B681B681946664BC7
+:107C4000994241D07B681B681946644B994238D0F1
+:107C50007B681B681946624B99422FD07B681B6872
+:107C60001946604B994226D07B681B6819465E4BCB
+:107C700099421DD07B681B6819465C4B994214D011
+:107C80007B681B6819465A4B99420BD07B681B686E
+:107C90001946584B994202D14FF400231EE04FF091
+:107CA00000731BE04FF4002318E04FF4002315E0AD
+:107CB0004FF4002312E04FF400730FE04FF4007311
+:107CC0000CE04FF4007309E04FF4007306E0082362
+:107CD00004E0082302E0082300E008231340002BFF
+:107CE00014BF01230023DBB28DE0364B1A687B689A
+:107CF0001B681946344B99427ED07B681B68194635
+:107D0000324B99425AD07B681B681946304B9942D6
+:107D100052D07B681B6819462E4B99424AD07B682B
+:107D20001B6819462C4B994241D07B681B68194649
+:107D30002A4B994238D07B681B681946284B9942D8
+:107D40002FD07B681B681946264B994226D07B684A
+:107D50001B681946244B99421DD07B681B68194645
+:107D6000224B994214D07B681B681946204B9942DC
+:107D70000BD07B681B6819461E4B994202D14FF409
+:107D800000233AE04FF0007337E04FF4002334E073
+:107D90004FF4002331E04FF400232EE04FF4007342
+:107DA0002BE04FF4007328E04FF4007325E04FF40C
+:107DB000007322E0082320E008231EE008231CE0D3
+:107DC00058600240006002401060024010640240AF
+:107DD00070600240706402402860024028640240E3
+:107DE0008860024088640240406002404064024073
+:107DF000A0600240A064024008231340002B14BF7F
+:107E000001230023DBB2002B00F010827B681B688B
+:107E10001B6803F00403002B00F008827B681B68DA
+:107E20007A681268126822F004021A607B681B6884
+:107E30001A46A04B9A426CD99F4A7B681B68194628
+:107E40009E4B994262D07B681B6819469C4B9942B5
+:107E50005AD07B681B6819469A4B994252D07B686E
+:107E60001B681946984B99424AD07B681B68194693
+:107E7000964B994241D07B681B681946944B9942B6
+:107E800038D07B681B681946924B99422FD07B688B
+:107E90001B681946904B994226D07B681B6819468F
+:107EA0008E4B99421DD07B681B6819468C4B9942BA
+:107EB00014D07B681B6819468A4B99420BD07B68AB
+:107EC0001B681946884B994202D14FF400231EE0EB
+:107ED0004FF000731BE04FF4002318E04FF4002331
+:107EE00015E04FF4002312E04FF400730FE04FF45D
+:107EF00000730CE04FF4007309E04FF4007306E0E8
+:107F0000082304E0082302E0082300E00823D360EC
+:107F100076E17B681B681A46744B9A426CD9664AB4
+:107F20007B681B681946654B994262D07B681B6869
+:107F30001946634B99425AD07B681B681946614BBE
+:107F4000994252D07B681B6819465F4B99424AD0D0
+:107F50007B681B6819465D4B994241D07B681B6862
+:107F600019465B4B994238D07B681B681946594BC0
+:107F700099422FD07B681B681946574B994226D0EF
+:107F80007B681B681946554B99421DD07B681B685E
+:107F90001946534B994214D07B681B681946514BC4
+:107FA00099420BD07B681B6819464F4B994202D10E
+:107FB0004FF400231EE04FF000731BE04FF400234A
+:107FC00018E04FF4002315E04FF4002312E04FF4C3
+:107FD00000730FE04FF400730CE04FF4007309E0FE
+:107FE0004FF4007306E0082304E0082302E00823AE
+:107FF00000E00823936003E17B681B681A463C4B52
+:108000009A4240F291803B4A7B681B6819462B4B91
+:10801000994200F086807B681B681946284B99427C
+:108020007DD07B681B681946264B994275D07B68CA
+:108030001B681946244B99426DD07B681B68194612
+:10804000224B994264D07B681B681946204B9942A9
+:108050005BD07B681B6819461E4B994252D07B68E7
+:108060001B6819461C4B994249D07B681B6819460E
+:108070001A4B994240D07B681B681946184B9942AD
+:1080800014D07B681B681946164B99420BD07B684D
+:108090001B681946144B994202D14FF4002341E06A
+:1080A0004FF000733EE04FF400233BE04FF4002319
+:1080B00038E000BF58640240006402401060024093
+:1080C0001064024070600240706402402860024008
+:1080D0002864024088600240886402404060024098
+:1080E00040640240A0600240A0640240B8600240C8
+:1080F00058600240006002404FF4002312E04FF449
+:1081000000730FE04FF400730CE04FF4007309E0CC
+:108110004FF4007306E0082304E0082302E008237C
+:1081200000E00823D3606BE07B4A7B681B6819463C
+:108130007A4B994262D07B681B681946784B99420A
+:108140005AD07B681B681946764B994252D07B689F
+:108150001B681946744B99424AD07B681B681946C4
+:10816000724B994241D07B681B681946704B99420B
+:1081700038D07B681B6819466E4B99422FD07B68BC
+:108180001B6819466C4B994226D07B681B681946C0
+:108190006A4B99421DD07B681B681946684B99420F
+:1081A00014D07B681B681946664B99420BD07B68DC
+:1081B0001B681946644B994202D14FF400231EE01C
+:1081C0004FF000731BE04FF4002318E04FF400233E
+:1081D00015E04FF4002312E04FF400730FE04FF46A
+:1081E00000730CE04FF4007309E04FF4007306E0F5
+:1081F000082304E0082302E0082300E0082393603A
+:108200007B68DB6C43F001027B68DA647B680422E4
+:1082100083F835207B68002283F834207B689B6CD0
+:10822000002B03D07B689B6C786898477B681B6841
+:108230001A46464B9A4240F28F80454B5A687B68FB
+:108240001B681946354B99425ED07B681B681946FE
+:10825000334B994256D07B681B681946314B994283
+:108260004ED07B681B6819462F4B994246D07B68DD
+:108270001B6819462D4B99423ED07B681B681946F6
+:108280002B4B994236D07B681B681946294B994283
+:108290002ED07B681B681946274B994226D07B68F5
+:1082A0001B681946254B99421DD07B681B681946EF
+:1082B000234B994214D07B681B681946214B994285
+:1082C0000BD07B681B6819461F4B994202D14FF4B3
+:1082D00080331AE04FF4800317E04FF4803314E04A
+:1082E0004FF4803311E04FF480330EE040230CE074
+:1082F00040230AE0402308E0402306E0154B04E059
+:10830000144B02E0134B00E0124B1340002B14BF40
+:1083100001230023DBB29AE10060024010600240BA
+:1083200010640240706002407064024028600240A5
+:108330002864024088600240886402404060024035
+:1083400040640240A0600240A064024058640240C1
+:1083500000640240010080007B681B681A469A4B4B
+:108360009A426ED9994B1A687B681B681946984BDC
+:1083700099425ED07B681B681946964B994256D04D
+:108380007B681B681946944B99424ED07B681B68EA
+:108390001946924B994246D07B681B681946904B10
+:1083A00099423ED07B681B6819468E4B994236D065
+:1083B0007B681B6819468C4B99422ED07B681B68E2
+:1083C00019468A4B994226D07B681B681946884B10
+:1083D00099421DD07B681B681946864B994214D080
+:1083E0007B681B681946844B99420BD07B681B68DD
+:1083F0001946824B994202D14FF480331AE04FF470
+:10840000800317E04FF4803314E04FF4803311E021
+:108410004FF480330EE040230CE040230AE0402379
+:1084200008E0402306E0764B04E0754B02E0744B15
+:1084300000E0734B1340002B14BF01230023DBB279
+:1084400005E17B681B681A466E4B9A426ED96E4BEB
+:108450005A687B681B6819465D4B99425ED07B6801
+:108460001B6819465B4B994256D07B681B681946BE
+:10847000594B99424ED07B681B681946574B99421D
+:1084800046D07B681B681946554B99423ED07B68A5
+:108490001B681946534B994236D07B681B681946B6
+:1084A000514B99422ED07B681B6819464F4B99421D
+:1084B00026D07B681B6819464D4B99421DD07B68BE
+:1084C0001B6819464B4B994214D07B681B681946B0
+:1084D000494B99420BD07B681B681946474B994220
+:1084E00002D14FF480331AE04FF4800317E04FF4C9
+:1084F000803314E04FF4803311E04FF480330EE00A
+:1085000040230CE040230AE0402308E0402306E03B
+:108510003B4B04E03A4B02E0394B00E0384B134050
+:10852000002B14BF01230023DBB290E0364B1A6806
+:108530007B681B681946264B994200F081807B6856
+:108540001B681946234B994278D07B681B681946F3
+:10855000214B994270D07B681B6819461F4B99428A
+:1085600068D07B681B6819461D4B994260D07B68B8
+:108570001B6819461B4B994258D07B681B681946EB
+:10858000194B994250D07B681B681946174B99428A
+:1085900048D07B681B681946154B99423FD07B68D1
+:1085A0001B681946134B994236D07B681B681946E5
+:1085B000114B99422DD07B681B6819460F4B99428D
+:1085C00024D14FF480333CE0B860024000640240A4
+:1085D000106002401064024070600240706402400B
+:1085E000286002402864024088600240886402409B
+:1085F0004060024040640240A0600240A06402402B
+:108600000100800058600240006002404FF4800387
+:1086100017E04FF4803314E04FF4803311E04FF44F
+:1086200080330EE040230CE040230AE0402308E0C2
+:10863000402306E07F4B04E07E4B02E07D4B00E0F0
+:108640007C4B1340002B14BF01230023DBB2002B13
+:1086500000F01C827B681B685B6903F08003002BC1
+:1086600000F014827B681B687A681268526922F0F5
+:1086700080025A617B681B681A466F4B9A4268D920
+:108680006E4A7B681B6819466D4B99425ED07B68C9
+:108690001B6819466B4B994256D07B681B6819467C
+:1086A000694B99424ED07B681B681946674B9942CB
+:1086B00046D07B681B681946654B99423ED07B6863
+:1086C0001B681946634B994236D07B681B68194674
+:1086D000614B99422ED07B681B6819465F4B9942CB
+:1086E00026D07B681B6819465D4B99421DD07B687C
+:1086F0001B6819465B4B994214D07B681B6819466E
+:10870000594B99420BD07B681B681946574B9942CD
+:1087100002D14FF480331AE04FF4800317E04FF496
+:10872000803314E04FF4803311E04FF480330EE0D7
+:1087300040230CE040230AE0402308E0402306E009
+:108740003C4B04E03B4B02E03A4B00E0394BD3603A
+:1087500086E17B681B681A46454B9A4240F28A8044
+:10876000364A7B681B681946354B99425ED07B6858
+:108770001B681946334B994256D07B681B681946D3
+:10878000314B99424ED07B681B6819462F4B99425A
+:1087900046D07B681B6819462D4B99423ED07B68BA
+:1087A0001B6819462B4B994236D07B681B681946CB
+:1087B000294B99422ED07B681B681946274B99425A
+:1087C00026D07B681B681946254B99421DD07B68D3
+:1087D0001B681946234B994214D07B681B681946C5
+:1087E000214B99420BD07B681B6819461F4B99425D
+:1087F00002D14FF480331AE04FF4800317E04FF4B6
+:10880000803314E04FF4803311E04FF480330EE0F6
+:1088100040230CE040230AE0402308E0402306E028
+:10882000044B04E0034B02E0024B00E0014B936079
+:1088300016E100BF0100800058640240006402405D
+:108840001060024010640240706002407064024098
+:108850002860024028640240886002408864024028
+:108860004060024040640240A0600240A0640240B8
+:10887000B86002407B681B681A46694B9A4268D907
+:10888000684A7B681B681946674B99425ED07B68D3
+:108890001B681946654B994256D07B681B68194680
+:1088A000634B99424ED07B681B681946614B9942D5
+:1088B00046D07B681B6819465F4B99423ED07B6867
+:1088C0001B6819465D4B994236D07B681B68194678
+:1088D0005B4B99422ED07B681B681946594B9942D5
+:1088E00026D07B681B681946574B99421DD07B6880
+:1088F0001B681946554B994214D07B681B68194672
+:10890000534B99420BD07B681B681946514B9942D7
+:1089100002D14FF480331AE04FF4800317E04FF494
+:10892000803314E04FF4803311E04FF480330EE0D5
+:1089300040230CE040230AE0402308E0402306E007
+:10894000454B04E0444B02E0434B00E0424BD36014
+:1089500086E0344A7B681B681946334B99427DD0C8
+:108960007B681B681946314B994256D07B681B685F
+:1089700019462F4B99424ED07B681B6819462D4BE8
+:10898000994246D07B681B6819462B4B99423ED0D2
+:108990007B681B681946294B994236D07B681B6857
+:1089A0001946274B99422ED07B681B681946254BE8
+:1089B000994226D07B681B681946234B99421DD0EB
+:1089C0007B681B681946214B994214D07B681B6851
+:1089D00019461F4B99420BD07B681B6819461D4BEB
+:1089E000994202D14FF4803339E04FF4800336E0EE
+:1089F0004FF4803333E04FF4803330E04FF4803372
+:108A00002DE040232BE0402329E0402327E04023B2
+:108A100025E0114B23E0104B21E00F4B1FE000BF7E
+:108A20005860024000600240106002401064024042
+:108A30007060024070640240286002402864024076
+:108A40008860024088640240406002404064024006
+:108A5000A0600240A064024001008000854B93604A
+:108A60007B68DB6C43F002027B68DA647B6804227B
+:108A700083F835207B68002283F834207B689B6C68
+:108A8000002B03D07B689B6C786898477B681B68D9
+:108A90001A46794B9A4272D9784B5A687B681B68A0
+:108AA0001946774B994262D07B681B681946754B13
+:108AB00099425AD07B681B681946734B994252D031
+:108AC0007B681B681946714B99424AD07B681B68CA
+:108AD00019466F4B994241D07B681B6819466D4B14
+:108AE000994238D07B681B6819466B4B99422FD04E
+:108AF0007B681B681946694B994226D07B681B68C6
+:108B00001946674B99421DD07B681B681946654B17
+:108B1000994214D07B681B681946634B99420BD06D
+:108B20007B681B681946614B994202D14FF4802340
+:108B30001EE04FF080731BE04FF4802318E04FF4E9
+:108B4000802315E04FF4802312E04FF480730FE090
+:108B50004FF480730CE04FF4807309E04FF480739E
+:108B600006E0534B04E0524B02E0514B00E0504B07
+:108B70001340002B14BF01230023DBB2A7E17B6865
+:108B80001B681A464B4B9A4240F296803B4B1A6840
+:108B90007B681B6819463A4B994262D07B681B6818
+:108BA0001946384B99425AD07B681B681946364B98
+:108BB000994252D07B681B681946344B99424AD07F
+:108BC0007B681B681946324B994241D07B681B6811
+:108BD0001946304B994238D07B681B6819462E4B9A
+:108BE00099422FD07B681B6819462C4B994226D09E
+:108BF0007B681B6819462A4B99421DD07B681B680D
+:108C00001946284B994214D07B681B681946264B9D
+:108C100099420BD07B681B681946244B994202D1BC
+:108C20004FF480231EE04FF080731BE04FF480234D
+:108C300018E04FF4802315E04FF4802312E04FF446
+:108C400080730FE04FF480730CE04FF4807309E001
+:108C50004FF4807306E0164B04E0154B02E0144B12
+:108C600000E0134B1340002B14BF01230023DBB2A1
+:108C70002DE100BF01008000586402400064024002
+:108C80001060024010640240706002407064024054
+:108C900028600240286402408860024088640240E4
+:108CA0004060024040640240A0600240A064024074
+:108CB00004008000B86002407B681B681A46714B54
+:108CC0009A4272D9704B5A687B681B6819466F4B81
+:108CD000994262D07B681B6819466D4B99425AD005
+:108CE0007B681B6819466B4B994252D07B681B68A6
+:108CF0001946694B99424AD07B681B681946674BF5
+:108D0000994241D07B681B681946654B994238D01F
+:108D10007B681B681946634B99422FD07B681B68A0
+:108D20001946614B994226D07B681B6819465F4BF8
+:108D300099421DD07B681B6819465D4B994214D03F
+:108D40007B681B6819465B4B99420BD07B681B689C
+:108D50001946594B994202D14FF480231EE04FF03F
+:108D600080731BE04FF4802318E04FF4802315E05C
+:108D70004FF4802312E04FF480730FE04FF48073C0
+:108D80000CE04FF4807309E04FF4807306E04B4B26
+:108D900004E04A4B02E0494B00E0484B1340002BF3
+:108DA00014BF01230023DBB291E0374B1A687B68C4
+:108DB0001B681946354B994200F082807B681B681E
+:108DC0001946334B99425AD07B681B681946314B80
+:108DD000994252D07B681B6819462F4B99424AD062
+:108DE0007B681B6819462D4B994241D07B681B68F4
+:108DF00019462B4B994238D07B681B681946294B82
+:108E000099422FD07B681B681946274B994226D080
+:108E10007B681B681946254B99421DD07B681B68EF
+:108E20001946234B994214D07B681B681946214B85
+:108E300099420BD07B681B6819461F4B994202D19F
+:108E40004FF480233DE04FF080733AE04FF48023ED
+:108E500037E04FF4802334E04FF4802331E04FF4C7
+:108E600080732EE04FF480732BE04FF4807328E082
+:108E70004FF4807325E0114B23E0104B21E00F4BA2
+:108E80001FE000BF586002400060024010600240D6
+:108E9000106402407060024070640240286002402A
+:108EA00028640240886002408864024040600240BA
+:108EB00040640240A0600240A064024004008000C0
+:108EC000804B1340002B14BF01230023DBB2002B87
+:108ED00000F02C827B681B681B6803F00203002BE8
+:108EE00000F024827B681B687A681268126822F09E
+:108EF00002021A607B681B681A46734B9A426CD94F
+:108F0000724A7B681B681946714B994262D07B6834
+:108F10001B6819466F4B99425AD07B681B681946EB
+:108F20006D4B994252D07B681B6819466B4B994236
+:108F30004AD07B681B681946694B994241D07B68CF
+:108F40001B681946674B994238D07B681B681946E5
+:108F5000654B99422FD07B681B681946634B994239
+:108F600026D07B681B681946614B99421DD07B68EF
+:108F70001B6819465F4B994214D07B681B681946E1
+:108F80005D4B99420BD07B681B6819465B4B99423D
+:108F900002D14FF480231EE04FF080731BE04FF4AA
+:108FA000802318E04FF4802315E04FF4802312E073
+:108FB0004FF480730FE04FF480730CE04FF4807334
+:108FC00009E04FF4807306E03E4B04E03D4B02E0C5
+:108FD0003C4B00E03B4BD36092E17B681B681A4638
+:108FE000474B9A4240F28E80384A7B681B6819468C
+:108FF000374B994262D07B681B681946354B9942C2
+:109000005AD07B681B681946334B994252D07B6813
+:109010001B681946314B99424AD07B681B68194638
+:109020002F4B994241D07B681B6819462D4B9942C2
+:1090300038D07B681B6819462B4B99422FD07B6830
+:109040001B681946294B994226D07B681B68194634
+:10905000274B99421DD07B681B681946254B9942C6
+:1090600014D07B681B681946234B99420BD07B6850
+:109070001B681946214B994202D14FF480231EE010
+:109080004FF080731BE04FF4802318E04FF48023EF
+:1090900015E04FF4802312E04FF480730FE04FF49B
+:1090A00080730CE04FF4807309E04FF4807306E0A6
+:1090B000044B04E0034B02E0024B00E0014B9360E1
+:1090C0001EE100BF040080005864024000640240BA
+:1090D0001060024010640240706002407064024000
+:1090E0002860024028640240886002408864024090
+:1090F0004060024040640240A0600240A064024020
+:10910000B86002407B681B681A466D4B9A426CD966
+:109110006C4A7B681B6819466B4B994262D07B682E
+:109120001B681946694B99425AD07B681B681946DF
+:10913000674B994252D07B681B681946654B994230
+:109140004AD07B681B681946634B994241D07B68C3
+:109150001B681946614B994238D07B681B681946D9
+:109160005F4B99422FD07B681B6819465D4B994233
+:1091700026D07B681B6819465B4B99421DD07B68E3
+:109180001B681946594B994214D07B681B681946D5
+:10919000574B99420BD07B681B681946554B994237
+:1091A00002D14FF480231EE04FF080731BE04FF498
+:1091B000802318E04FF4802315E04FF4802312E061
+:1091C0004FF480730FE04FF480730CE04FF4807322
+:1091D00009E04FF4807306E0474B04E0464B02E0A1
+:1091E000454B00E0444BD3608AE0364A7B681B68FD
+:1091F0001946354B994200F081807B681B681946FF
+:10920000324B99425AD07B681B681946304B9942C1
+:1092100052D07B681B6819462E4B99424AD07B6816
+:109220001B6819462C4B994241D07B681B68194634
+:109230002A4B994238D07B681B681946284B9942C3
+:109240002FD07B681B681946264B994226D07B6835
+:109250001B681946244B99421DD07B681B68194630
+:10926000224B994214D07B681B681946204B9942C7
+:109270000BD07B681B6819461E4B994202D14FF4F4
+:1092800080233CE04FF0807339E04FF4802336E0D8
+:109290004FF4802333E04FF4802330E04FF48073A9
+:1092A0002DE04FF480732AE04FF4807327E04FF4F1
+:1092B000807324E0104B22E00F4B20E00E4B1EE0A9
+:1092C000586002400060024010600240106402409A
+:1092D00070600240706402402860024028640240CE
+:1092E000886002408864024040600240406402405E
+:1092F000A0600240A064024004008000854B93609F
+:109300007B68DB6C43F004027B68DA647B680422D0
+:1093100083F835207B68002283F834207B689B6CBF
+:10932000002B03D07B689B6C786898477B681B6830
+:109330001A46794B9A4272D9784B5A687B681B68F7
+:109340001946774B994262D07B681B681946754B6A
+:1093500099425AD07B681B681946734B994252D088
+:109360007B681B681946714B99424AD07B681B6821
+:1093700019466F4B994241D07B681B6819466D4B6B
+:10938000994238D07B681B6819466B4B99422FD0A5
+:109390007B681B681946694B994226D07B681B681D
+:1093A0001946674B99421DD07B681B681946654B6F
+:1093B000994214D07B681B681946634B99420BD0C5
+:1093C0007B681B681946614B994202D14FF48013A8
+:1093D0001EE04FF080631BE04FF4801318E04FF461
+:1093E000801315E04FF4801312E04FF480630FE018
+:1093F0004FF480630CE04FF4806309E04FF4806326
+:1094000006E0102304E0102302E0102300E0102304
+:109410001340002B14BF01230023DBB2A1E17B68C2
+:109420001B681A464A4B9A4240F294803B4B1A689A
+:109430007B681B6819463A4B994262D07B681B686F
+:109440001946384B99425AD07B681B681946364BEF
+:10945000994252D07B681B681946344B99424AD0D6
+:109460007B681B681946324B994241D07B681B6868
+:109470001946304B994238D07B681B6819462E4BF1
+:1094800099422FD07B681B6819462C4B994226D0F5
+:109490007B681B6819462A4B99421DD07B681B6864
+:1094A0001946284B994214D07B681B681946264BF5
+:1094B00099420BD07B681B681946244B994202D114
+:1094C0004FF480131EE04FF080631BE04FF48013D5
+:1094D00018E04FF4801315E04FF4801312E04FF4BE
+:1094E00080630FE04FF480630CE04FF4806309E089
+:1094F0004FF4806306E0102304E0102302E0102301
+:1095000000E010231340002B14BF01230023DBB223
+:1095100027E100BF0400800058640240006402405C
+:1095200010600240106402407060024070640240AB
+:10953000286002402864024088600240886402403B
+:109540004060024040640240A0600240A0640240CB
+:10955000B86002407B681B681A46704B9A4272D909
+:109560006F4B5A687B681B6819466E4B994262D0F4
+:109570007B681B6819466C4B99425AD07B681B6804
+:1095800019466A4B994252D07B681B681946684B52
+:1095900099424AD07B681B681946664B994241D074
+:1095A0007B681B681946644B994238D07B681B68FE
+:1095B0001946624B99422FD07B681B681946604B55
+:1095C000994226D07B681B6819465E4B99421DD094
+:1095D0007B681B6819465C4B994214D07B681B68FA
+:1095E00019465A4B99420BD07B681B681946584B59
+:1095F000994202D14FF480131EE04FF080631BE0CC
+:109600004FF4801318E04FF4801315E04FF48013EB
+:1096100012E04FF480630FE04FF480630CE04FF4EE
+:10962000806309E04FF4806306E0102304E0102318
+:1096300002E0102300E010231340002B14BF01238D
+:109640000023DBB28DE0364B1A687B681B68194635
+:10965000344B99427ED07B681B681946324B994245
+:109660005AD07B681B681946304B994252D07B68B0
+:109670001B6819462E4B99424AD07B681B681946D5
+:109680002C4B994241D07B681B6819462A4B994262
+:1096900038D07B681B681946284B99422FD07B68CD
+:1096A0001B681946264B994226D07B681B681946D1
+:1096B000244B99421DD07B681B681946224B994266
+:1096C00014D07B681B681946204B99420BD07B68ED
+:1096D0001B6819461E4B994202D14FF480133AE0A1
+:1096E0004FF0806337E04FF4801334E04FF4801381
+:1096F00031E04FF480132EE04FF480632BE04FF401
+:10970000806328E04FF4806325E04FF4806322E01B
+:10971000102320E010231EE010231CE058600240BC
+:10972000006002401060024010640240706002401D
+:109730007064024028600240286402408860024051
+:10974000886402404060024040640240A0600240E1
+:10975000A064024010231340002B14BF01230023F8
+:10976000DBB2002B00F033847B681B681B6803F0BE
+:109770000803002B00F02B847B681B681B6803F434
+:109780008023002B00F003827B681B681A46A04BE5
+:109790009A426CD99F4A7B681B6819469E4B994236
+:1097A00062D07B681B6819469C4B99425AD07B68F3
+:1097B0001B6819469A4B994252D07B681B68194620
+:1097C000984B99424AD07B681B681946964B994240
+:1097D00041D07B681B681946944B994238D07B680E
+:1097E0001B681946924B99422FD07B681B6819461B
+:1097F000904B994226D07B681B6819468E4B994244
+:109800001DD07B681B6819468C4B994214D07B682D
+:109810001B6819468A4B99420BD07B681B68194616
+:10982000884B994202D14FF480131EE04FF08063C1
+:109830001BE04FF4801318E04FF4801315E04FF451
+:10984000801312E04FF480630FE04FF480630CE06C
+:109850004FF4806309E04FF4806306E0102304E0D6
+:10986000102302E0102300E01023D36076E17B6830
+:109870001B681A46744B9A426CD9664A7B681B680F
+:109880001946654B994262D07B681B681946634B49
+:1098900099425AD07B681B681946614B994252D055
+:1098A0007B681B6819465F4B99424AD07B681B68EE
+:1098B00019465D4B994241D07B681B6819465B4B4A
+:1098C000994238D07B681B681946594B99422FD072
+:1098D0007B681B681946574B994226D07B681B68EA
+:1098E0001946554B99421DD07B681B681946534B4E
+:1098F000994214D07B681B681946514B99420BD092
+:109900007B681B6819464F4B994202D14FF4801374
+:109910001EE04FF080631BE04FF4801318E04FF41B
+:10992000801315E04FF4801312E04FF480630FE0D2
+:109930004FF480630CE04FF4806309E04FF48063E0
+:1099400006E0102304E0102302E0102300E01023BF
+:10995000936003E17B681B681A463C4B9A4240F2D5
+:1099600091803B4A7B681B6819462B4B994200F05B
+:1099700086807B681B681946284B99427DD07B689E
+:109980001B681946264B994275D07B681B6819469F
+:10999000244B99426DD07B681B681946224B994233
+:1099A00064D07B681B681946204B99425BD07B686A
+:1099B0001B6819461E4B994252D07B681B6819469A
+:1099C0001C4B994249D07B681B6819461A4B994237
+:1099D00040D07B681B681946184B994214D07B68AD
+:1099E0001B681946164B99420BD07B681B681946B9
+:1099F000144B994202D14FF4801341E04FF0806341
+:109A00003EE04FF480133BE04FF4801338E000BF9A
+:109A1000586402400064024010600240106402403A
+:109A20007060024070640240286002402864024076
+:109A30008860024088640240406002404064024006
+:109A4000A0600240A0640240B8600240586002403A
+:109A5000006002404FF4801312E04FF480630FE087
+:109A60004FF480630CE04FF4806309E04FF48063AF
+:109A700006E0102304E0102302E0102300E010238E
+:109A8000D3606BE0834A7B681B681946824B99421E
+:109A900062D07B681B681946804B99425AD07B681C
+:109AA0001B6819467E4B994252D07B681B68194649
+:109AB0007C4B99424AD07B681B6819467A4B994285
+:109AC00041D07B681B681946784B994238D07B6837
+:109AD0001B681946764B99422FD07B681B68194644
+:109AE000744B994226D07B681B681946724B994289
+:109AF0001DD07B681B681946704B994214D07B6857
+:109B00001B6819466E4B99420BD07B681B6819463F
+:109B10006C4B994202D14FF480131EE04FF08063EA
+:109B20001BE04FF4801318E04FF4801315E04FF45E
+:109B3000801312E04FF480630FE04FF480630CE079
+:109B40004FF4806309E04FF4806306E0102304E0E3
+:109B5000102302E0102300E0102393607B681B6851
+:109B60001B6803F40023002B04D17B68312283F8A7
+:109B7000352024E27B681B681B6803F40023002B5C
+:109B800000F01D827B68412283F8352017E27B6854
+:109B90001B681B6803F48073002B07D17B681B686C
+:109BA0007A681268126822F008021A607B681B68E3
+:109BB0001A46454B9A4240F28B80444A7B681B68A8
+:109BC0001946354B994262D07B681B681946334B66
+:109BD00099425AD07B681B681946314B994252D042
+:109BE0007B681B6819462F4B99424AD07B681B68DB
+:109BF00019462D4B994241D07B681B6819462B4B67
+:109C0000994238D07B681B681946294B99422FD05E
+:109C10007B681B681946274B994226D07B681B68D6
+:109C20001946254B99421DD07B681B681946234B6A
+:109C3000994214D07B681B681946214B99420BD07E
+:109C40007B681B6819461F4B994202D14FF4801361
+:109C50001EE04FF080631BE04FF4801318E04FF4D8
+:109C6000801315E04FF4801312E04FF480630FE08F
+:109C70004FF480630CE04FF4806309E04FF480639D
+:109C800006E0102304E0102302E0102300E010237C
+:109C9000D36090E100600240106002401064024016
+:109CA00070600240706402402860024028640240F4
+:109CB0008860024088640240406002404064024084
+:109CC000A0600240A0640240586402400064024068
+:109CD0007B681B681A469F4B9A426CD99E4A7B68E8
+:109CE0001B6819469D4B994262D07B681B681946D8
+:109CF0009B4B99425AD07B681B681946994B9942F5
+:109D000052D07B681B681946974B99424AD07B68B2
+:109D10001B681946954B994241D07B681B681946D0
+:109D2000934B994238D07B681B681946914B9942F6
+:109D30002FD07B681B6819468F4B994226D07B68D1
+:109D40001B6819468D4B99421DD07B681B681946CC
+:109D50008B4B994214D07B681B681946894B9942FA
+:109D60000BD07B681B681946874B994202D14FF490
+:109D700080131EE04FF080631BE04FF4801318E067
+:109D80004FF4801315E04FF4801312E04FF480631A
+:109D90000FE04FF480630CE04FF4806309E04FF470
+:109DA000806306E0102304E0102302E0102300E0AB
+:109DB00010239360FFE07B681B681A46734B9A423E
+:109DC0006CD9734A7B681B681946644B994262D010
+:109DD0007B681B681946624B99425AD07B681B68A6
+:109DE0001946604B994252D07B681B6819465E4BFE
+:109DF00099424AD07B681B6819465C4B994241D016
+:109E00007B681B6819465A4B994238D07B681B689F
+:109E10001946584B99422FD07B681B681946564B00
+:109E2000994226D07B681B681946544B99421DD035
+:109E30007B681B681946524B994214D07B681B689B
+:109E40001946504B99420BD07B681B6819464E4B04
+:109E5000994202D14FF480131EE04FF080631BE063
+:109E60004FF4801318E04FF4801315E04FF4801383
+:109E700012E04FF480630FE04FF480630CE04FF486
+:109E8000806309E04FF4806306E0102304E01023B0
+:109E900002E0102300E01023D3608CE03C4A7B6892
+:109EA0001B6819462D4B994200F083807B681B6824
+:109EB00019462B4B99427AD07B681B681946294B6F
+:109EC000994272D07B681B681946274B99426AD029
+:109ED0007B681B681946254B994261D07B681B68DB
+:109EE0001946234B994258D07B681B681946214B71
+:109EF00099424FD07B681B6819461F4B994226D068
+:109F00007B681B6819461D4B99421DD07B681B68F6
+:109F100019461B4B994214D07B681B681946194B94
+:109F200099420BD07B681B681946174B994202D1A6
+:109F30004FF480133EE04FF080633BE04FF480131A
+:109F400038E04FF4801335E04FF4801332E04FF4E3
+:109F500080632FE0B860024000640240106002405D
+:109F60001064024070600240706402402860024049
+:109F700028640240886002408864024040600240D9
+:109F800040640240A0600240A06402405860024069
+:109F9000006002404FF480630CE04FF4806309E0FE
+:109FA0004FF4806306E0102304E0102302E0102346
+:109FB00000E0102393607B68312283F835207B68B2
+:109FC0001B6C002B03D07B681B6C786898477B6800
+:109FD0001B681A46774B9A4272D9774B5A687B684E
+:109FE0001B681946754B994262D07B681B681946FD
+:109FF000734B99425AD07B681B681946714B994242
+:10A0000052D07B681B6819466F4B99424AD07B68D7
+:10A010001B6819466D4B994241D07B681B681946F5
+:10A020006B4B994238D07B681B681946694B994243
+:10A030002FD07B681B681946674B994226D07B68F6
+:10A040001B681946654B99421DD07B681B681946F1
+:10A05000634B994214D07B681B681946614B994247
+:10A060000BD07B681B6819465F4B994202D14FF4B5
+:10A0700000131EE04FF000631BE04FF4001318E0E4
+:10A080004FF4001315E04FF4001312E04FF4006397
+:10A090000FE04FF400630CE04FF4006309E04FF46D
+:10A0A000006306E0202304E0202302E0202300E0F8
+:10A0B00020231340002B14BF01230023DBB29EE1B9
+:10A0C0007B681B681A46494B9A4240F291803A4B92
+:10A0D0001A687B681B681946384B994262D07B68C6
+:10A0E0001B681946364B99425AD07B681B68194643
+:10A0F000344B994252D07B681B681946324B9942C7
+:10A100004AD07B681B681946304B994241D07B6826
+:10A110001B6819462E4B994238D07B681B6819463C
+:10A120002C4B99422FD07B681B6819462A4B9942C9
+:10A1300026D07B681B681946284B99421DD07B6846
+:10A140001B681946264B994214D07B681B68194638
+:10A15000244B99420BD07B681B681946224B9942CD
+:10A1600002D14FF400131EE04FF000631BE04FF4E8
+:10A17000001318E04FF4001315E04FF4001312E041
+:10A180004FF400630FE04FF400630CE04FF4006302
+:10A1900009E04FF4006306E0202304E0202302E0FE
+:10A1A000202300E020231340002B14BF01230023B1
+:10A1B000DBB224E1586402400064024010600240B7
+:10A1C00010640240706002407064024028600240E7
+:10A1D0002864024088600240886402404060024077
+:10A1E00040640240A0600240A0640240B8600240A7
+:10A1F0007B681B681A46704B9A4272D96F4B5A683B
+:10A200007B681B6819466E4B994262D07B681B685D
+:10A2100019466C4B99425AD07B681B6819466A4BA9
+:10A22000994252D07B681B681946684B99424AD0C4
+:10A230007B681B681946664B994241D07B681B6856
+:10A240001946644B994238D07B681B681946624BAB
+:10A2500099422FD07B681B681946604B994226D0E3
+:10A260007B681B6819465E4B99421DD07B681B6852
+:10A2700019465C4B994214D07B681B6819465A4BAF
+:10A2800099420BD07B681B681946584B994202D102
+:10A290004FF400131EE04FF000631BE04FF4001377
+:10A2A00018E04FF4001315E04FF4001312E04FF4E0
+:10A2B00000630FE04FF400630CE04FF4006309E02B
+:10A2C0004FF4006306E0202304E0202302E0202373
+:10A2D00000E020231340002B14BF01230023DBB236
+:10A2E0008DE0364B1A687B681B681946344B9942DF
+:10A2F0007ED07B681B681946324B99425AD07B68E6
+:10A300001B681946304B994252D07B681B6819462E
+:10A310002E4B99424AD07B681B6819462C4B9942B8
+:10A3200041D07B681B6819462A4B994238D07B681C
+:10A330001B681946284B99422FD07B681B68194629
+:10A34000264B994226D07B681B681946244B9942BC
+:10A350001DD07B681B681946224B994214D07B683C
+:10A360001B681946204B99420BD07B681B68194625
+:10A370001E4B994202D14FF400133AE04FF00063B4
+:10A3800037E04FF4001334E04FF4001331E04FF4A2
+:10A3900000132EE04FF400632BE04FF4006328E03D
+:10A3A0004FF4006325E04FF4006322E0202320E017
+:10A3B00020231EE020231CE0586002400060024081
+:10A3C00010600240106402407060024070640240FD
+:10A3D000286002402864024088600240886402408D
+:10A3E0004060024040640240A0600240A06402401D
+:10A3F00020231340002B14BF01230023DBB2002BCA
+:10A4000000F045847B681B681B6803F01003002B79
+:10A4100000F03D847B681B681B6803F48023002BDD
+:10A4200000F00D827B681B681A46A04B9A426CD9DB
+:10A430009F4A7B681B6819469E4B994262D07B6895
+:10A440001B6819469C4B99425AD07B681B68194679
+:10A450009A4B994252D07B681B681946984B994297
+:10A460004AD07B681B681946964B994241D07B685D
+:10A470001B681946944B994238D07B681B68194673
+:10A48000924B99422FD07B681B681946904B99429A
+:10A4900026D07B681B6819468E4B99421DD07B687D
+:10A4A0001B6819468C4B994214D07B681B6819466F
+:10A4B0008A4B99420BD07B681B681946884B99429E
+:10A4C00002D14FF400131EE04FF000631BE04FF485
+:10A4D000001318E04FF4001315E04FF4001312E0DE
+:10A4E0004FF400630FE04FF400630CE04FF400639F
+:10A4F00009E04FF4006306E0202304E0202302E09B
+:10A50000202300E02023D36076E17B681B681A4695
+:10A51000744B9A426CD9664A7B681B681946654B36
+:10A52000994262D07B681B681946634B99425AD0A6
+:10A530007B681B681946614B994252D07B681B6847
+:10A5400019465F4B99424AD07B681B6819465D4BA0
+:10A55000994241D07B681B6819465B4B994238D0C1
+:10A560007B681B681946594B99422FD07B681B6842
+:10A570001946574B994226D07B681B681946554BA4
+:10A5800099421DD07B681B681946534B994214D0E1
+:10A590007B681B681946514B99420BD07B681B683E
+:10A5A00019464F4B994202D14FF400131EE04FF071
+:10A5B00000631BE04FF4001318E04FF4001315E0A4
+:10A5C0004FF4001312E04FF400630FE04FF4006308
+:10A5D0000CE04FF4006309E04FF4006306E0202331
+:10A5E00004E0202302E0202300E02023936003E125
+:10A5F0007B681B681A463C4B9A4240F291803B4A6A
+:10A600007B681B6819462B4B994200F086807B685B
+:10A610001B681946284B99427DD07B681B681946F8
+:10A62000264B994275D07B681B681946244B99428A
+:10A630006DD07B681B681946224B994264D07B68B9
+:10A640001B681946204B99425BD07B681B681946F2
+:10A650001E4B994252D07B681B6819461C4B99428D
+:10A6600049D07B681B6819461A4B994240D07B68D9
+:10A670001B681946184B994214D07B681B68194611
+:10A68000164B99420BD07B681B681946144B9942B4
+:10A6900002D14FF4001341E04FF000633EE04FF46D
+:10A6A00000133BE04FF4001338E000BF5864024051
+:10A6B000006402401060024010640240706002407A
+:10A6C00070640240286002402864024088600240B2
+:10A6D000886402404060024040640240A060024042
+:10A6E000A0640240B860024058600240006002402E
+:10A6F0004FF4001312E04FF400630FE04FF40063D7
+:10A700000CE04FF4006309E04FF4006306E02023FF
+:10A7100004E0202302E0202300E02023D3606BE04C
+:10A72000884A7B681B681946874B994262D07B68D0
+:10A730001B681946854B99425AD07B681B6819469D
+:10A74000834B994252D07B681B681946814B9942D2
+:10A750004AD07B681B6819467F4B994241D07B6881
+:10A760001B6819467D4B994238D07B681B68194697
+:10A770007B4B99422FD07B681B681946794B9942D5
+:10A7800026D07B681B681946774B99421DD07B68A1
+:10A790001B681946754B994214D07B681B68194693
+:10A7A000734B99420BD07B681B681946714B9942D9
+:10A7B00002D14FF400131EE04FF000631BE04FF492
+:10A7C000001318E04FF4001315E04FF4001312E0EB
+:10A7D0004FF400630FE04FF400630CE04FF40063AC
+:10A7E00009E04FF4006306E0202304E0202302E0A8
+:10A7F000202300E0202393607B681B681B6803F420
+:10A800000023002B09D17B685B6C002B00F03F829A
+:10A810007B685B6C7868984739E27B681B681B68CB
+:10A8200003F40023002B00F032827B68DB6B002BEB
+:10A8300000F02D827B68DB6B7868984727E27B68A5
+:10A840001B681B6803F48073002B07D17B681B68AF
+:10A850007A681268126822F010021A607B681B681E
+:10A860001A46454B9A4240F28B80444A7B681B68EB
+:10A870001946354B994262D07B681B681946334BA9
+:10A8800099425AD07B681B681946314B994252D085
+:10A890007B681B6819462F4B99424AD07B681B681E
+:10A8A00019462D4B994241D07B681B6819462B4BAA
+:10A8B000994238D07B681B681946294B99422FD0A2
+:10A8C0007B681B681946274B994226D07B681B681A
+:10A8D0001946254B99421DD07B681B681946234BAE
+:10A8E000994214D07B681B681946214B99420BD0C2
+:10A8F0007B681B6819461F4B994202D14FF4001325
+:10A900001EE04FF000631BE04FF4001318E04FF41B
+:10A91000001315E04FF4001312E04FF400630FE052
+:10A920004FF400630CE04FF4006309E04FF4006360
+:10A9300006E0202304E0202302E0202300E020237F
+:10A94000D36090E100600240106002401064024059
+:10A950007060024070640240286002402864024037
+:10A9600088600240886402404060024040640240C7
+:10A97000A0600240A06402405864024000640240AB
+:10A980007B681B681A469F4B9A426CD99E4A7B682B
+:10A990001B6819469D4B994262D07B681B6819461B
+:10A9A0009B4B99425AD07B681B681946994B994238
+:10A9B00052D07B681B681946974B99424AD07B68F6
+:10A9C0001B681946954B994241D07B681B68194614
+:10A9D000934B994238D07B681B681946914B99423A
+:10A9E0002FD07B681B6819468F4B994226D07B6815
+:10A9F0001B6819468D4B99421DD07B681B68194610
+:10AA00008B4B994214D07B681B681946894B99423D
+:10AA10000BD07B681B681946874B994202D14FF4D3
+:10AA200000131EE04FF000631BE04FF4001318E02A
+:10AA30004FF4001315E04FF4001312E04FF40063DD
+:10AA40000FE04FF400630CE04FF4006309E04FF4B3
+:10AA5000006306E0202304E0202302E0202300E03E
+:10AA600020239360FFE07B681B681A46734B9A4271
+:10AA70006CD9734A7B681B681946644B994262D053
+:10AA80007B681B681946624B99425AD07B681B68E9
+:10AA90001946604B994252D07B681B6819465E4B41
+:10AAA00099424AD07B681B6819465C4B994241D059
+:10AAB0007B681B6819465A4B994238D07B681B68E3
+:10AAC0001946584B99422FD07B681B681946564B44
+:10AAD000994226D07B681B681946544B99421DD079
+:10AAE0007B681B681946524B994214D07B681B68DF
+:10AAF0001946504B99420BD07B681B6819464E4B48
+:10AB0000994202D14FF400131EE04FF000631BE0A6
+:10AB10004FF4001318E04FF4001315E04FF4001346
+:10AB200012E04FF400630FE04FF400630CE04FF4C9
+:10AB3000006309E04FF4006306E0202304E02023D3
+:10AB400002E0202300E02023D3608CE03C4A7B68B5
+:10AB50001B6819462D4B994200F083807B681B6867
+:10AB600019462B4B99427AD07B681B681946294BB2
+:10AB7000994272D07B681B681946274B99426AD06C
+:10AB80007B681B681946254B994261D07B681B681E
+:10AB90001946234B994258D07B681B681946214BB4
+:10ABA00099424FD07B681B6819461F4B994226D0AB
+:10ABB0007B681B6819461D4B99421DD07B681B683A
+:10ABC00019461B4B994214D07B681B681946194BD8
+:10ABD00099420BD07B681B681946174B994202D1EA
+:10ABE0004FF400133EE04FF000633BE04FF40013DE
+:10ABF00038E04FF4001335E04FF4001332E04FF427
+:10AC000000632FE0B8600240006402401060024020
+:10AC1000106402407060024070640240286002408C
+:10AC2000286402408860024088640240406002401C
+:10AC300040640240A0600240A064024058600240AC
+:10AC4000006002404FF400630CE04FF4006309E041
+:10AC50004FF4006306E0202304E0202302E02023D9
+:10AC600000E0202393607B68DA6C7B68DA647B68A1
+:10AC7000112283F835207B68002283F834207B681A
+:10AC8000DB6B002B03D07B68DB6B78689847083759
+:10AC9000BD4680BD80B485B000AFF860B9607A6011
+:10ACA0003B60FB681B68FA681268126822F4802215
+:10ACB0001A60FB681B683A685A60FB689B68402B07
+:10ACC00008D1FB681B687A689A60FB681B68BA68E1
+:10ACD000DA6007E0FB681B68BA689A60FB681B686B
+:10ACE0007A68DA601437BD465DF8047B704700BFB0
+:10ACF00080B485B000AF78607B6803F00703FB6029
+:10AD00000C4BDB68BB60BA684FF6FF031340BB60B7
+:10AD1000FB681A02BB68134343F0BF6343F400337C
+:10AD2000BB60044ABB68D3601437BD465DF8047B42
+:10AD3000704700BF00ED00E080B400AF044BDB685B
+:10AD400003F4E0631B0A1846BD465DF8047B7047B8
+:10AD500000ED00E080B483B000AF0346FB7108490A
+:10AD600097F907305B09FA7902F01F02012000FA17
+:10AD700002F241F823200C37BD465DF8047B704792
+:10AD800000E100E080B483B000AF03463960FB719E
+:10AD900097F90730002B0BDA0D49FB7903F00F030D
+:10ADA000043B3A68D2B21201D2B20B441A7609E0DF
+:10ADB000084997F907303A68D2B21201D2B20B446F
+:10ADC00083F800230C37BD465DF8047B704700BF55
+:10ADD00000ED00E000E100E080B489B000AFF86071
+:10ADE000B9607A60FB6803F00703FB61FB69C3F19C
+:10ADF0000703042B28BF0423BB61FB690433062B24
+:10AE000002D9FB69033B00E000237B61BB6901229F
+:10AE100002FA03F3013B1A46BB681A407B699A4069
+:10AE20007B69012101FA03F3013B19467B680B4062
+:10AE3000134318462437BD465DF8047B704700BFB6
+:10AE400080B483B000AF78607B68013BB3F1807F52
+:10AE500001D301230AE0084A7B68013B5360064B9B
+:10AE600000229A60044B07221A60002318460C3710
+:10AE7000BD465DF8047B704710E000E080B582B00D
+:10AE800000AF78607868FFF733FF0837BD4680BDB4
+:10AE900080B586B000AF0346B9607A60FB730023CB
+:10AEA0007B61FFF749FF78617869B9687A68FFF7D5
+:10AEB00093FF024697F90F3018461146FFF762FFDD
+:10AEC0001837BD4680BD00BF80B582B000AF0346D5
+:10AED000FB7197F907301846FFF73CFF0837BD466E
+:10AEE00080BD00BF80B582B000AF78607868FFF7A2
+:10AEF000A7FF034618460837BD4680BD80B483B01F
+:10AF000000AF78607B68042B06D1094A084B1B68A8
+:10AF100043F00403136005E0054A054B1B6823F06A
+:10AF2000040313600C37BD465DF8047B704700BF17
+:10AF300010E000E080B500AF0E4A0E4B1B6843F4F2
+:10AF4000007313600B4A0B4B1B6843F48063136060
+:10AF5000084A084B1B6843F4807313600320FFF713
+:10AF60008DFF002000F008F8F6F732FD00231846A8
+:10AF700080BD00BF003C024080B582B000AF786069
+:10AF8000FBF72EFA0246064BA3FB02239B09184649
+:10AF9000FFF7A8FF002318460837BD4680BD00BF55
+:10AFA000D34D621080B400AF044B1B680133034AD9
+:10AFB0001360BD465DF8047B704700BF6001002050
+:10AFC00080B400AF034B1B681846BD465DF8047B98
+:10AFD000704700BF6001002080B584B000AF78608A
+:10AFE0000023FB60FFF7ECFFF86000BFFFF7E8FF0E
+:10AFF0000246FB68D21A7B689A42F7D31037BD46E7
+:10B0000080BD00BF80B400AF124A124B1B6843F0F2
+:10B01000010313600F4B00229A600E4A0D4B1B6810
+:10B0200023F0847323F4803313600A4B0A4A5A6076
+:10B03000084A084B1B6823F480231360054B002249
+:10B04000DA60064B4FF000629A60BD465DF8047B03
+:10B05000704700BF003802401030002400ED00E0CF
+:10B06000DFF830D0002103E00B4B5B584350043134
+:10B070000A480B4B42189A42F6D30A4A02E00023D0
+:10B0800042F8043B084B9A42F9D3FFF7BBFFF6F7AF
+:10B090004FFB704700C00120E2B200080000002012
+:10B0A0004401002044010020980E0020FEE700002B
+:10B0B000024B0146186800F04FB800BF4001002065
+:10B0C000024B0146186800F003B800BF40010020A1
+:10B0D00030B500293CD051F8042C0B1F1D49002A23
+:10B0E000B8BF9B180A680C4612B95A600B6030BD95
+:10B0F00093420DD219685818904201BF5A585218FD
+:10B100001A60426823605A6030BD994203D80A46EB
+:10B1100051680029F9D1146815199D420AD11B689C
+:10B120002344D0188842136012D108680344136086
+:10B130004B680CE002D90C23036030BD1C68181961
+:10B14000884201BF08684968001918605960536057
+:10B1500030BD00BF6801002070B5CC1C24F0030492
+:10B1600008340C2C38BF0C24002C064603DA0C23C0
+:10B170003360002070BD8C42F9D3204A136810461A
+:10B180001946A1B10A68121B0ED40B2A03D90A6012
+:10B190008B188C501FE08B420BBF5A684A680260C4
+:10B1A0005A6018BF0B4616E00B464968E9E7144D94
+:10B1B0002B681BB9304600F025F828603046214640
+:10B1C00000F020F8421C0346D1D0C51C25F0030531
+:10B1D00085420AD11C6003F10B001A1D20F0070004
+:10B1E000821A0AD05142995070BD3046E91A00F0D7
+:10B1F00009F80130BBD02B46ECE770BD6801002098
+:10B200006401002038B5064C00230546084623603B
+:10B2100000F008F8431C02D1236803B12B6038BD4D
+:10B22000940E0020044A05491368002B08BF0B4602
+:10B2300018441060184670476C010020980E0020DA
+:10B24000008000011F00000053544D2020202020CA
+:10B2500050726F64756374202020202020202020ED
+:10B26000302E303153544D3332204D61737320539F
+:10B27000746F72616765000053544D6963726F6546
+:10B280006C656374726F6E696373000030303030C8
+:10B290003030303030303141000000004D53432019
+:10B2A000436F6E66696700004D534320496E7465B5
+:10B2B0007266616365000000000000030080830087
+:10B2C0000000000000000000000600000000000078
+:10B2D000000000000102030401020304060708093C
+:02B2E000430029
+:10B2E20089010008AD010008F9010008D101000838
+:10B2F200210200084902000871020008120100023E
+:10B302000000004083042A570002010203010000EA
+:10B3120004030904E53D0008753E0008C13E00082B
+:10B3220000000000000000002D4000084D40000811
+:10B332000000000000000000000000006D40000856
+:10B34200AD400008CD400008ED4000080D41000866
+:10B3520009022000010104C0FA09040000020806E3
+:10B3620050050705810200020007050102000200E4
+:10B3720009022000010104C032090400000208068B
+:10B382005005070581024000000705010240000048
+:10B3920009072000010104C0320904000002080666
+:10B3A2005005070581024000000705010240000028
+:10B3B2000A06000200000040010000000024F40020
+:10B3C200000000000000000000000000000000007B
+:10B3D200000000000000000000000000000000006B
+:10B3E200E0B20008000000000000000000000000C1
+:10B3F200000000000000000000000000000000004B
+:10B40200000000000000000000000000000000003A
+:10B41200000000000000000000000000000000002A
+:04B42200E000002026
+:040000050800B061DE
:00000001FF
diff --git a/Upstream/Debug/Upstream.map b/Upstream/Debug/Upstream.map
index 7590deb..d4e65d9 100644
--- a/Upstream/Debug/Upstream.map
+++ b/Upstream/Debug/Upstream.map
@@ -19,46 +19,39 @@ Allocating common symbols
Common symbol size file
hUsbDeviceFS 0x224 Src/usb_device.o
-ReadStreamPacket 0x4 Src/downstream_interface_msc_mock.o
+ReadStreamPacket 0x4 Src/upstream_msc.o
+TemporaryIncomingPacketLength
+ 0x4 Src/upstream_spi.o
SCSI_ProcessCmd_hmsc
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-BlockStart 0x8 Src/downstream_interface_msc_mock.o
SCSI_ProcessCmd_params
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
errno 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
-hpcd_USB_OTG_FS 0x3b0 Src/usbd_config.o
+hpcd_USB_OTG_FS 0x3b4 Src/usbd_config.o
spiRxDmaHandle 0x50 Src/hal_msp.o
-ReadStreamBusy 0x1 Src/downstream_interface_msc_mock.o
-SentCommand 0x1 Src/downstream_spi.o
+ReadStreamBusy 0x1 Src/upstream_msc.o
+SentCommand 0x1 Src/upstream_spi.o
GetCapacityCallback
- 0x4 Src/downstream_interface_msc_mock.o
-DownstreamInterfaceState
- 0x1 Src/downstream_spi.o
-BlockCount 0x4 Src/downstream_interface_msc_mock.o
-TestReadyCallback 0x4 Src/downstream_interface_msc_mock.o
+ 0x4 Src/upstream_msc.o
+UpstreamPacket1 0x208 Src/upstream_spi.o
+TestReadyCallback 0x4 Src/upstream_msc.o
SCSI_ProcessCmd_lun
0x1 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-DownstreamPacket1 0x20c Src/downstream_spi.o
SCSI_ProcessCmd_callback
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-ReceivePacketCallback
- 0x4 Src/downstream_spi.o
SCSI_ProcessCmd_pdev
0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
-DownstreamPacket0 0x20c Src/downstream_spi.o
CurrentWorkingPacket
- 0x4 Src/downstream_spi.o
+ 0x4 Src/upstream_spi.o
MSC_BOT_pdev 0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+UpstreamPacket0 0x208 Src/upstream_spi.o
GetStreamDataCallback
- 0x4 Src/downstream_interface_msc_mock.o
-SentCommandClass 0x1 Src/downstream_spi.o
+ 0x4 Src/upstream_msc.o
+SentCommandClass 0x1 Src/upstream_spi.o
MSC_BOT_hmsc 0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
-NextTxPacket 0x4 Src/downstream_spi.o
-ByteCount 0x4 Src/downstream_interface_msc_mock.o
-hspi1 0x58 Src/downstream_spi.o
+ByteCount 0x4 Src/upstream_msc.o
spiTxDmaHandle 0x50 Src/hal_msp.o
-PendingFreePacketCallback
- 0x4 Src/downstream_spi.o
+Hspi1 0x58 Src/upstream_spi.o
USBD_StrDesc 0x200 Src/usbd_descriptors.o
Discarded input sections
@@ -193,13 +186,11 @@ Discarded input sections
.data 0x00000000 0x0 Src/usbd_config.o
.bss 0x00000000 0x0 Src/usbd_config.o
.text.HAL_PCD_MspDeInit
- 0x00000000 0x38 Src/usbd_config.o
+ 0x00000000 0x48 Src/usbd_config.o
.text.USBD_LL_DeInit
- 0x00000000 0x10 Src/usbd_config.o
- .text.USBD_LL_Stop
- 0x00000000 0x10 Src/usbd_config.o
+ 0x00000000 0x20 Src/usbd_config.o
.text.USBD_LL_Delay
- 0x00000000 0x8 Src/usbd_config.o
+ 0x00000000 0x14 Src/usbd_config.o
.debug_macro 0x00000000 0x868 Src/usbd_config.o
.debug_macro 0x00000000 0x2e Src/usbd_config.o
.debug_macro 0x00000000 0x28 Src/usbd_config.o
@@ -384,8 +375,393 @@ Discarded input sections
.debug_macro 0x00000000 0x1b6 Src/usb_device.o
.debug_macro 0x00000000 0x82 Src/usb_device.o
.debug_macro 0x00000000 0x160 Src/usb_device.o
- .debug_macro 0x00000000 0x22 Src/usb_device.o
+ .debug_macro 0x00000000 0x2e Src/usb_device.o
.debug_macro 0x00000000 0x34 Src/usb_device.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_statemachine.o
+ .text 0x00000000 0x0 Src/upstream_statemachine.o
+ .data 0x00000000 0x0 Src/upstream_statemachine.o
+ .bss 0x00000000 0x0 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x868 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1a7 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x28 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x3b Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x22 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x44 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1c Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1f7 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2d Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x26 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xd39 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x8861 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x43 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2694 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x64 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xa22 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x39f Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x15b Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x11e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x130 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x27 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x272 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x5f Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x5d Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x133 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x217 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x13a Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x5e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x97 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x209 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1df Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x109 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x125 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x58 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x35 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x9c Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x97 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x27a Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xf6 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x10 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x52 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x43 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x180 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x10 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x22 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0xbd Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16d Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x35 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x29 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x1b6 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x6a Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x2e Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x82 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x160 Src/upstream_statemachine.o
+ .debug_macro 0x00000000 0x34 Src/upstream_statemachine.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_spi.o
+ .text 0x00000000 0x0 Src/upstream_spi.o
+ .data 0x00000000 0x0 Src/upstream_spi.o
+ .bss 0x00000000 0x0 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x868 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1c Src/upstream_spi.o
+ .debug_macro 0x00000000 0x58 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x22 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x35 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x9c Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x4a Src/upstream_spi.o
+ .debug_macro 0x00000000 0x97 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x27a Src/upstream_spi.o
+ .debug_macro 0x00000000 0xf6 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x10 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x52 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x43 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x180 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x10 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x22 Src/upstream_spi.o
+ .debug_macro 0x00000000 0xbd Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16d Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x35 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x29 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x16 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x28 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x3b Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1c Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1f7 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2d Src/upstream_spi.o
+ .debug_macro 0x00000000 0x26 Src/upstream_spi.o
+ .debug_macro 0x00000000 0xd39 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x8861 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x43 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1a7 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2694 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x57 Src/upstream_spi.o
+ .debug_macro 0x00000000 0xa22 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x39f Src/upstream_spi.o
+ .debug_macro 0x00000000 0x15b Src/upstream_spi.o
+ .debug_macro 0x00000000 0x11e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x130 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x27 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x272 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x5f Src/upstream_spi.o
+ .debug_macro 0x00000000 0x5d Src/upstream_spi.o
+ .debug_macro 0x00000000 0x133 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x217 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x13a Src/upstream_spi.o
+ .debug_macro 0x00000000 0x5e Src/upstream_spi.o
+ .debug_macro 0x00000000 0x97 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x209 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1df Src/upstream_spi.o
+ .debug_macro 0x00000000 0x109 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x125 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x1b6 Src/upstream_spi.o
+ .debug_macro 0x00000000 0x6a Src/upstream_spi.o
+ .debug_macro 0x00000000 0x2e Src/upstream_spi.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .group 0x00000000 0x8 Src/upstream_msc.o
+ .text 0x00000000 0x0 Src/upstream_msc.o
+ .data 0x00000000 0x0 Src/upstream_msc.o
+ .bss 0x00000000 0x0 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x868 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1c Src/upstream_msc.o
+ .debug_macro 0x00000000 0x58 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x22 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x35 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x9c Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x4a Src/upstream_msc.o
+ .debug_macro 0x00000000 0x97 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x27a Src/upstream_msc.o
+ .debug_macro 0x00000000 0xf6 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x10 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x52 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x43 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x180 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x10 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x22 Src/upstream_msc.o
+ .debug_macro 0x00000000 0xbd Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16d Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x35 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x29 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x16 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x28 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x3b Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1c Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1f7 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2d Src/upstream_msc.o
+ .debug_macro 0x00000000 0x26 Src/upstream_msc.o
+ .debug_macro 0x00000000 0xd39 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x8861 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x43 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1a7 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2694 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x57 Src/upstream_msc.o
+ .debug_macro 0x00000000 0xa22 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x39f Src/upstream_msc.o
+ .debug_macro 0x00000000 0x15b Src/upstream_msc.o
+ .debug_macro 0x00000000 0x11e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x130 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x27 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x272 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x5f Src/upstream_msc.o
+ .debug_macro 0x00000000 0x5d Src/upstream_msc.o
+ .debug_macro 0x00000000 0x133 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x217 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x13a Src/upstream_msc.o
+ .debug_macro 0x00000000 0x5e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x97 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x209 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1df Src/upstream_msc.o
+ .debug_macro 0x00000000 0x109 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x125 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1b6 Src/upstream_msc.o
+ .debug_macro 0x00000000 0x6a Src/upstream_msc.o
+ .debug_macro 0x00000000 0x2e Src/upstream_msc.o
+ .debug_macro 0x00000000 0x1c Src/upstream_msc.o
.group 0x00000000 0x8 Src/main.o
.group 0x00000000 0x8 Src/main.o
.group 0x00000000 0x8 Src/main.o
@@ -451,33 +827,12 @@ Discarded input sections
.data 0x00000000 0x0 Src/main.o
.bss 0x00000000 0x0 Src/main.o
.debug_macro 0x00000000 0x868 Src/main.o
- .debug_macro 0x00000000 0x58 Src/main.o
- .debug_macro 0x00000000 0x22 Src/main.o
- .debug_macro 0x00000000 0x35 Src/main.o
- .debug_macro 0x00000000 0x9c Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x4a Src/main.o
- .debug_macro 0x00000000 0x97 Src/main.o
- .debug_macro 0x00000000 0x27a Src/main.o
- .debug_macro 0x00000000 0xf6 Src/main.o
- .debug_macro 0x00000000 0x10 Src/main.o
- .debug_macro 0x00000000 0x52 Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x43 Src/main.o
- .debug_macro 0x00000000 0x180 Src/main.o
- .debug_macro 0x00000000 0x10 Src/main.o
- .debug_macro 0x00000000 0x22 Src/main.o
- .debug_macro 0x00000000 0xbd Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x16d Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x35 Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
- .debug_macro 0x00000000 0x29 Src/main.o
- .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x1a7 Src/main.o
.debug_macro 0x00000000 0x2e Src/main.o
.debug_macro 0x00000000 0x28 Src/main.o
.debug_macro 0x00000000 0x3b Src/main.o
+ .debug_macro 0x00000000 0x22 Src/main.o
+ .debug_macro 0x00000000 0x44 Src/main.o
.debug_macro 0x00000000 0x1c Src/main.o
.debug_macro 0x00000000 0x1f7 Src/main.o
.debug_macro 0x00000000 0x2d Src/main.o
@@ -485,9 +840,8 @@ Discarded input sections
.debug_macro 0x00000000 0xd39 Src/main.o
.debug_macro 0x00000000 0x8861 Src/main.o
.debug_macro 0x00000000 0x43 Src/main.o
- .debug_macro 0x00000000 0x1a7 Src/main.o
.debug_macro 0x00000000 0x2694 Src/main.o
- .debug_macro 0x00000000 0x57 Src/main.o
+ .debug_macro 0x00000000 0x64 Src/main.o
.debug_macro 0x00000000 0xa22 Src/main.o
.debug_macro 0x00000000 0x39f Src/main.o
.debug_macro 0x00000000 0x15b Src/main.o
@@ -507,9 +861,110 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Src/main.o
.debug_macro 0x00000000 0x109 Src/main.o
.debug_macro 0x00000000 0x125 Src/main.o
- .debug_macro 0x00000000 0x1b6 Src/main.o
- .debug_macro 0x00000000 0x6a Src/main.o
+ .debug_macro 0x00000000 0x58 Src/main.o
+ .debug_macro 0x00000000 0x35 Src/main.o
+ .debug_macro 0x00000000 0x9c Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x97 Src/main.o
+ .debug_macro 0x00000000 0x27a Src/main.o
+ .debug_macro 0x00000000 0xf6 Src/main.o
+ .debug_macro 0x00000000 0x10 Src/main.o
+ .debug_macro 0x00000000 0x52 Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x43 Src/main.o
+ .debug_macro 0x00000000 0x180 Src/main.o
+ .debug_macro 0x00000000 0x10 Src/main.o
.debug_macro 0x00000000 0x22 Src/main.o
+ .debug_macro 0x00000000 0xbd Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x16d Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x35 Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x29 Src/main.o
+ .debug_macro 0x00000000 0x16 Src/main.o
+ .debug_macro 0x00000000 0x6a Src/main.o
+ .debug_macro 0x00000000 0x1b6 Src/main.o
+ .debug_macro 0x00000000 0x8e Src/main.o
+ .debug_macro 0x00000000 0x1c Src/main.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .group 0x00000000 0x8 Src/led.o
+ .text 0x00000000 0x0 Src/led.o
+ .data 0x00000000 0x0 Src/led.o
+ .bss 0x00000000 0x0 Src/led.o
+ .debug_macro 0x00000000 0x868 Src/led.o
+ .debug_macro 0x00000000 0x1a7 Src/led.o
+ .debug_macro 0x00000000 0x2e Src/led.o
+ .debug_macro 0x00000000 0x28 Src/led.o
+ .debug_macro 0x00000000 0x3b Src/led.o
+ .debug_macro 0x00000000 0x22 Src/led.o
+ .debug_macro 0x00000000 0x44 Src/led.o
+ .debug_macro 0x00000000 0x1c Src/led.o
+ .debug_macro 0x00000000 0x1f7 Src/led.o
+ .debug_macro 0x00000000 0x2d Src/led.o
+ .debug_macro 0x00000000 0x26 Src/led.o
+ .debug_macro 0x00000000 0xd39 Src/led.o
+ .debug_macro 0x00000000 0x8861 Src/led.o
+ .debug_macro 0x00000000 0x43 Src/led.o
+ .debug_macro 0x00000000 0x2694 Src/led.o
+ .debug_macro 0x00000000 0x64 Src/led.o
+ .debug_macro 0x00000000 0xa22 Src/led.o
+ .debug_macro 0x00000000 0x39f Src/led.o
+ .debug_macro 0x00000000 0x15b Src/led.o
+ .debug_macro 0x00000000 0x11e Src/led.o
+ .debug_macro 0x00000000 0x130 Src/led.o
+ .debug_macro 0x00000000 0x27 Src/led.o
+ .debug_macro 0x00000000 0x272 Src/led.o
+ .debug_macro 0x00000000 0x5f Src/led.o
+ .debug_macro 0x00000000 0x5d Src/led.o
+ .debug_macro 0x00000000 0x133 Src/led.o
+ .debug_macro 0x00000000 0x217 Src/led.o
+ .debug_macro 0x00000000 0x2e Src/led.o
+ .debug_macro 0x00000000 0x13a Src/led.o
+ .debug_macro 0x00000000 0x5e Src/led.o
+ .debug_macro 0x00000000 0x97 Src/led.o
+ .debug_macro 0x00000000 0x209 Src/led.o
+ .debug_macro 0x00000000 0x1df Src/led.o
+ .debug_macro 0x00000000 0x109 Src/led.o
+ .debug_macro 0x00000000 0x125 Src/led.o
+ .debug_macro 0x00000000 0x16 Src/led.o
+ .debug_macro 0x00000000 0x8e Src/led.o
+ .group 0x00000000 0x8 Src/interrupts.o
.group 0x00000000 0x8 Src/interrupts.o
.group 0x00000000 0x8 Src/interrupts.o
.group 0x00000000 0x8 Src/interrupts.o
@@ -577,12 +1032,33 @@ Discarded input sections
.bss 0x00000000 0x0 Src/interrupts.o
.debug_macro 0x00000000 0x868 Src/interrupts.o
.debug_macro 0x00000000 0x1c Src/interrupts.o
- .debug_macro 0x00000000 0x1a7 Src/interrupts.o
+ .debug_macro 0x00000000 0x58 Src/interrupts.o
+ .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0x35 Src/interrupts.o
+ .debug_macro 0x00000000 0x9c Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x4a Src/interrupts.o
+ .debug_macro 0x00000000 0x97 Src/interrupts.o
+ .debug_macro 0x00000000 0x27a Src/interrupts.o
+ .debug_macro 0x00000000 0xf6 Src/interrupts.o
+ .debug_macro 0x00000000 0x10 Src/interrupts.o
+ .debug_macro 0x00000000 0x52 Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x43 Src/interrupts.o
+ .debug_macro 0x00000000 0x180 Src/interrupts.o
+ .debug_macro 0x00000000 0x10 Src/interrupts.o
+ .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0xbd Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x16d Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x35 Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
+ .debug_macro 0x00000000 0x29 Src/interrupts.o
+ .debug_macro 0x00000000 0x16 Src/interrupts.o
.debug_macro 0x00000000 0x2e Src/interrupts.o
.debug_macro 0x00000000 0x28 Src/interrupts.o
.debug_macro 0x00000000 0x3b Src/interrupts.o
- .debug_macro 0x00000000 0x22 Src/interrupts.o
- .debug_macro 0x00000000 0x44 Src/interrupts.o
.debug_macro 0x00000000 0x1c Src/interrupts.o
.debug_macro 0x00000000 0x1f7 Src/interrupts.o
.debug_macro 0x00000000 0x2d Src/interrupts.o
@@ -590,8 +1066,9 @@ Discarded input sections
.debug_macro 0x00000000 0xd39 Src/interrupts.o
.debug_macro 0x00000000 0x8861 Src/interrupts.o
.debug_macro 0x00000000 0x43 Src/interrupts.o
+ .debug_macro 0x00000000 0x1a7 Src/interrupts.o
.debug_macro 0x00000000 0x2694 Src/interrupts.o
- .debug_macro 0x00000000 0x64 Src/interrupts.o
+ .debug_macro 0x00000000 0x57 Src/interrupts.o
.debug_macro 0x00000000 0xa22 Src/interrupts.o
.debug_macro 0x00000000 0x39f Src/interrupts.o
.debug_macro 0x00000000 0x15b Src/interrupts.o
@@ -611,32 +1088,11 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Src/interrupts.o
.debug_macro 0x00000000 0x109 Src/interrupts.o
.debug_macro 0x00000000 0x125 Src/interrupts.o
- .debug_macro 0x00000000 0x9a Src/interrupts.o
- .debug_macro 0x00000000 0x58 Src/interrupts.o
- .debug_macro 0x00000000 0x35 Src/interrupts.o
- .debug_macro 0x00000000 0x9c Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x97 Src/interrupts.o
- .debug_macro 0x00000000 0x27a Src/interrupts.o
- .debug_macro 0x00000000 0xf6 Src/interrupts.o
- .debug_macro 0x00000000 0x10 Src/interrupts.o
- .debug_macro 0x00000000 0x52 Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x43 Src/interrupts.o
- .debug_macro 0x00000000 0x180 Src/interrupts.o
- .debug_macro 0x00000000 0x10 Src/interrupts.o
- .debug_macro 0x00000000 0x22 Src/interrupts.o
- .debug_macro 0x00000000 0xbd Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x16d Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x35 Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
- .debug_macro 0x00000000 0x29 Src/interrupts.o
- .debug_macro 0x00000000 0x16 Src/interrupts.o
.debug_macro 0x00000000 0x1b6 Src/interrupts.o
.debug_macro 0x00000000 0x6a Src/interrupts.o
- .debug_macro 0x00000000 0x22 Src/interrupts.o
+ .debug_macro 0x00000000 0x2e Src/interrupts.o
+ .debug_macro 0x00000000 0x8e Src/interrupts.o
+ .debug_macro 0x00000000 0x1c Src/interrupts.o
.group 0x00000000 0x8 Src/hal_msp.o
.group 0x00000000 0x8 Src/hal_msp.o
.group 0x00000000 0x8 Src/hal_msp.o
@@ -678,7 +1134,7 @@ Discarded input sections
.data 0x00000000 0x0 Src/hal_msp.o
.bss 0x00000000 0x0 Src/hal_msp.o
.text.HAL_SPI_MspDeInit
- 0x00000000 0x50 Src/hal_msp.o
+ 0x00000000 0x64 Src/hal_msp.o
.debug_macro 0x00000000 0x868 Src/hal_msp.o
.debug_macro 0x00000000 0x1a7 Src/hal_msp.o
.debug_macro 0x00000000 0x2e Src/hal_msp.o
@@ -715,260 +1171,7 @@ Discarded input sections
.debug_macro 0x00000000 0x109 Src/hal_msp.o
.debug_macro 0x00000000 0x125 Src/hal_msp.o
.debug_macro 0x00000000 0x1c Src/hal_msp.o
- .debug_macro 0x00000000 0x9a Src/hal_msp.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_spi.o
- .text 0x00000000 0x0 Src/downstream_spi.o
- .data 0x00000000 0x0 Src/downstream_spi.o
- .bss 0x00000000 0x0 Src/downstream_spi.o
- .text.Downstream_GetPacket
- 0x00000000 0x18 Src/downstream_spi.o
- .debug_macro 0x00000000 0x868 Src/downstream_spi.o
- .debug_macro 0x00000000 0x58 Src/downstream_spi.o
- .debug_macro 0x00000000 0x22 Src/downstream_spi.o
- .debug_macro 0x00000000 0x35 Src/downstream_spi.o
- .debug_macro 0x00000000 0x9c Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x4a Src/downstream_spi.o
- .debug_macro 0x00000000 0x97 Src/downstream_spi.o
- .debug_macro 0x00000000 0x27a Src/downstream_spi.o
- .debug_macro 0x00000000 0xf6 Src/downstream_spi.o
- .debug_macro 0x00000000 0x10 Src/downstream_spi.o
- .debug_macro 0x00000000 0x52 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x43 Src/downstream_spi.o
- .debug_macro 0x00000000 0x180 Src/downstream_spi.o
- .debug_macro 0x00000000 0x10 Src/downstream_spi.o
- .debug_macro 0x00000000 0x22 Src/downstream_spi.o
- .debug_macro 0x00000000 0xbd Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16d Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x35 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x29 Src/downstream_spi.o
- .debug_macro 0x00000000 0x16 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2e Src/downstream_spi.o
- .debug_macro 0x00000000 0x28 Src/downstream_spi.o
- .debug_macro 0x00000000 0x3b Src/downstream_spi.o
- .debug_macro 0x00000000 0x1c Src/downstream_spi.o
- .debug_macro 0x00000000 0x1f7 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2d Src/downstream_spi.o
- .debug_macro 0x00000000 0x26 Src/downstream_spi.o
- .debug_macro 0x00000000 0xd39 Src/downstream_spi.o
- .debug_macro 0x00000000 0x8861 Src/downstream_spi.o
- .debug_macro 0x00000000 0x43 Src/downstream_spi.o
- .debug_macro 0x00000000 0x1a7 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2694 Src/downstream_spi.o
- .debug_macro 0x00000000 0x57 Src/downstream_spi.o
- .debug_macro 0x00000000 0xa22 Src/downstream_spi.o
- .debug_macro 0x00000000 0x39f Src/downstream_spi.o
- .debug_macro 0x00000000 0x15b Src/downstream_spi.o
- .debug_macro 0x00000000 0x11e Src/downstream_spi.o
- .debug_macro 0x00000000 0x130 Src/downstream_spi.o
- .debug_macro 0x00000000 0x27 Src/downstream_spi.o
- .debug_macro 0x00000000 0x272 Src/downstream_spi.o
- .debug_macro 0x00000000 0x5f Src/downstream_spi.o
- .debug_macro 0x00000000 0x5d Src/downstream_spi.o
- .debug_macro 0x00000000 0x133 Src/downstream_spi.o
- .debug_macro 0x00000000 0x217 Src/downstream_spi.o
- .debug_macro 0x00000000 0x2e Src/downstream_spi.o
- .debug_macro 0x00000000 0x13a Src/downstream_spi.o
- .debug_macro 0x00000000 0x5e Src/downstream_spi.o
- .debug_macro 0x00000000 0x97 Src/downstream_spi.o
- .debug_macro 0x00000000 0x209 Src/downstream_spi.o
- .debug_macro 0x00000000 0x1df Src/downstream_spi.o
- .debug_macro 0x00000000 0x109 Src/downstream_spi.o
- .debug_macro 0x00000000 0x125 Src/downstream_spi.o
- .debug_macro 0x00000000 0x1b6 Src/downstream_spi.o
- .debug_macro 0x00000000 0x6a Src/downstream_spi.o
- .debug_macro 0x00000000 0x22 Src/downstream_spi.o
- .debug_macro 0x00000000 0x9a Src/downstream_spi.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .group 0x00000000 0x8 Src/downstream_interface_msc_mock.o
- .text 0x00000000 0x0 Src/downstream_interface_msc_mock.o
- .data 0x00000000 0x0 Src/downstream_interface_msc_mock.o
- .bss 0x00000000 0x0 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x868 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1a7 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x28 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x3b Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x44 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1c Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1f7 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2d Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x26 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xd39 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x8861 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x43 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2694 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x64 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xa22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x39f Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x15b Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x11e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x130 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x27 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x272 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x5f Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x5d Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x133 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x217 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x2e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x13a Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x5e Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x97 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x209 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1df Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x109 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x125 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x58 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x35 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x9c Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x97 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x27a Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xf6 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x10 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x52 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x43 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x180 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x10 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0xbd Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16d Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x35 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x29 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x16 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1b6 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x6a Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x22 Src/downstream_interface_msc_mock.o
- .debug_macro 0x00000000 0x1c Src/downstream_interface_msc_mock.o
+ .debug_macro 0x00000000 0x8e Src/hal_msp.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
@@ -1032,9 +1235,9 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.text.USBD_CtlPrepareRx
- 0x00000000 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x00000000 0x3c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.text.USBD_GetRxCount
- 0x00000000 0xc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x00000000 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
@@ -1278,11 +1481,7 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.text.USBD_DeInit
- 0x00000000 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .text.USBD_Stop
- 0x00000000 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .text.USBD_RunTestMode
- 0x00000000 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x00000000 0x3c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
@@ -1411,6 +1610,7 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x35 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
@@ -1469,10 +1669,9 @@ Discarded input sections
.debug_macro 0x00000000 0x125 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x1b6 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x6a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x00000000 0x2e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_macro 0x00000000 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
@@ -1722,7 +1921,7 @@ Discarded input sections
.debug_macro 0x00000000 0x6a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_macro 0x00000000 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_macro 0x00000000 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_macro 0x00000000 0x2e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_macro 0x00000000 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
@@ -1792,6 +1991,7 @@ Discarded input sections
.data 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.bss 0x00000000 0x0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x868 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x35 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
@@ -1850,11 +2050,10 @@ Discarded input sections
.debug_macro 0x00000000 0x125 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x1b6 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x6a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_macro 0x00000000 0x2e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_macro 0x00000000 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_macro 0x00000000 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_macro 0x00000000 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
@@ -1894,38 +2093,36 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_ActivateDedicatedEndpoint
- 0x00000000 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x188 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_DeactivateDedicatedEndpoint
- 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .text.USB_StopDevice
- 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0xb4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_ClearInterrupts
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .text.USB_HostInit
+ 0x00000000 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_InitFSLSPClkSel
- 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x74 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_ResetPort
- 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_DriveVbus
- 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .text.USB_HostInit
- 0x00000000 0x11c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_GetHostSpeed
- 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_GetCurrentFrame
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_HC_Init
- 0x00000000 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x1f8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .text.USB_HC_StartXfer
+ 0x00000000 0x278 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_HC_ReadInterrupt
0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_HC_Halt
0x00000000 0x200 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_DoPing
- 0x00000000 0x84 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .text.USB_HC_StartXfer
- 0x00000000 0x288 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000000 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.USB_StopHost
0x00000000 0x100 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .bss.debug.6299
+ .bss.debug.6300
0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
@@ -2000,52 +2197,64 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_DeInit
+ 0x00000000 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_MspInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_MspDeInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_DeInit
- 0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Transmit
- 0x00000000 0x1b4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_TransmitReceive
- 0x00000000 0x340 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x278 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Receive
- 0x00000000 0x21c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x310 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TransmitReceive
+ 0x00000000 0x4b8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Transmit_IT
- 0x00000000 0xbc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_TransmitReceive_IT
- 0x00000000 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x124 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_Receive_IT
- 0x00000000 0xc8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x134 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TransmitReceive_IT
+ 0x00000000 0x12c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_Transmit_DMA
+ 0x00000000 0x144 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_Receive_DMA
+ 0x00000000 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_DMAPause
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_DMAResume
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_DMAStop
- 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_IRQHandler
+ 0x00000000 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_TxCpltCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_RxCpltCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TxRxCpltCallback
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_TxHalfCpltCallback
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_SPI_ErrorCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_GetState
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.HAL_SPI_GetError
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.SPI_TxCloseIRQHandler
- 0x00000000 0x98 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0xd4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.SPI_TxISR
- 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x74 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.SPI_RxCloseIRQHandler
- 0x00000000 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_RxISR
- 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x138 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.SPI_2LinesRxISR
- 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_IRQHandler
- 0x00000000 0xc8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_GetState
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.HAL_SPI_GetError
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_RxISR
+ 0x00000000 0x80 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMATransmitCplt
+ 0x00000000 0xac Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAHalfTransmitCplt
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
@@ -2120,12 +2329,11 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.text.HAL_RCCEx_PeriphCLKConfig
- 0x00000000 0x168 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ 0x00000000 0x1d4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.text.HAL_RCCEx_GetPeriphCLKConfig
- 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_info 0x00000000 0x610 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_abbrev 0x00000000 0x1ea Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_loc 0x00000000 0x1ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ 0x00000000 0x98 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_info 0x00000000 0x5aa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_abbrev 0x00000000 0x19c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_aranges
0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_ranges 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
@@ -2165,10 +2373,10 @@ Discarded input sections
.debug_macro 0x00000000 0x1df Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_macro 0x00000000 0x109 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.debug_macro 0x00000000 0x125 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_line 0x00000000 0x600 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_str 0x00000000 0x602a3 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_line 0x00000000 0x5f7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_str 0x00000000 0x60298 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
- .debug_frame 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
+ .debug_frame 0x00000000 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.ARM.attributes
0x00000000 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o
.group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
@@ -2210,25 +2418,25 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_DeInit
- 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_MCOConfig
- 0x00000000 0x84 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0xac Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_EnableCSS
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_DisableCSS
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetPCLK1Freq
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetPCLK2Freq
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetOscConfig
- 0x00000000 0x108 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x19c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_GetClockConfig
- 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .text.HAL_RCC_CSSCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.text.HAL_RCC_NMI_IRQHandler
- 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .text.HAL_RCC_CSSCallback
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
@@ -2375,46 +2583,44 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .text.HAL_PCD_DeInit
+ 0x00000000 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_MspInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_MspDeInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .text.HAL_PCD_Stop
- 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .text.HAL_PCD_DeInit
- 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DataOutStageCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DataInStageCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_SetupStageCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_SOFCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ResetCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_SuspendCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ResumeCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ISOOUTIncompleteCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ISOINIncompleteCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ConnectCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DisconnectCallback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DevConnect
- 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DevDisconnect
- 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_ActivateRemoteWakeup
- 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_DeActivateRemoteWakeup
- 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_PCD_GetState
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
@@ -2489,19 +2695,19 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_DeInit
- 0x00000000 0x9c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x204 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_ReadPin
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_WritePin
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_TogglePin
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_LockPin
+ 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .text.HAL_GPIO_EXTI_IRQHandler
0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.text.HAL_GPIO_EXTI_Callback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .text.HAL_GPIO_EXTI_IRQHandler
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
@@ -2576,17 +2782,17 @@ Discarded input sections
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_DeInit
- 0x00000000 0xe3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x140c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_Start
- 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_Abort
- 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_PollForTransfer
- 0x00000000 0x243c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x3308 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_GetState
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.text.HAL_DMA_GetError
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
@@ -2660,28 +2866,42 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_DisableIRQ
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetPendingIRQ
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_SetPendingIRQ
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_ClearPendingIRQ
+ 0x00000000 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetActive
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetPriority
+ 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_DecodePriority
+ 0x00000000 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_SystemReset
+ 0x00000000 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_DisableIRQ
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SystemReset
- 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetPriorityGrouping
0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetPriority
- 0x00000000 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SetPendingIRQ
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetPendingIRQ
0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_ClearPendingIRQ
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_GetActive
0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .text.HAL_SYSTICK_CLKSourceConfig
- 0x00000000 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .text.HAL_SYSTICK_Callback
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_SYSTICK_IRQHandler
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.HAL_SYSTICK_Callback
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
@@ -2755,38 +2975,38 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .text.HAL_DeInit
+ 0x00000000 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_MspInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_MspDeInit
- 0x00000000 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .text.HAL_DeInit
- 0x00000000 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_SuspendTick
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_ResumeTick
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_GetHalVersion
- 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_GetREVID
- 0x00000000 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_GetDEVID
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_EnableDBGSleepMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_DisableDBGSleepMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_EnableDBGStopMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_DisableDBGStopMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_EnableDBGStandbyMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DBGMCU_DisableDBGStandbyMode
- 0x00000000 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_EnableCompensationCell
- 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.text.HAL_DisableCompensationCell
- 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000000 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
@@ -2838,10 +3058,10 @@ Discarded input sections
.text 0x00000000 0x0 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.data 0x00000000 0x0 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.bss 0x00000000 0x0 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .text.SystemCoreClockUpdate
- 0x00000000 0xa4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.data.AHBPrescTable
0x00000000 0x10 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .text.SystemCoreClockUpdate
+ 0x00000000 0xf8 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_macro 0x00000000 0x868 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_macro 0x00000000 0x2e Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.debug_macro 0x00000000 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
@@ -2900,11 +3120,13 @@ Linker script and memory map
LOAD Src/usbd_descriptors.o
LOAD Src/usbd_config.o
LOAD Src/usb_device.o
+LOAD Src/upstream_statemachine.o
+LOAD Src/upstream_spi.o
+LOAD Src/upstream_msc.o
LOAD Src/main.o
+LOAD Src/led.o
LOAD Src/interrupts.o
LOAD Src/hal_msp.o
-LOAD Src/downstream_spi.o
-LOAD Src/downstream_interface_msc_mock.o
LOAD Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
LOAD Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
LOAD Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
@@ -2940,7 +3162,7 @@ LOAD /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/
LOAD /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a
END GROUP
-.text 0x08000000 0x6de6
+.text 0x08000000 0xb2e2
*(.vectors)
.vectors 0x08000000 0x188 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
0x08000000 __Vectors
@@ -2949,809 +3171,866 @@ END GROUP
0x08000188 __end__ = .
*(.text*)
.text.USBD_FS_DeviceDescriptor
- 0x08000188 0xc Src/usbd_descriptors.o
+ 0x08000188 0x24 Src/usbd_descriptors.o
0x08000188 USBD_FS_DeviceDescriptor
.text.USBD_FS_LangIDStrDescriptor
- 0x08000194 0xc Src/usbd_descriptors.o
- 0x08000194 USBD_FS_LangIDStrDescriptor
+ 0x080001ac 0x24 Src/usbd_descriptors.o
+ 0x080001ac USBD_FS_LangIDStrDescriptor
.text.USBD_FS_ProductStrDescriptor
- 0x080001a0 0x1c Src/usbd_descriptors.o
- 0x080001a0 USBD_FS_ProductStrDescriptor
+ 0x080001d0 0x28 Src/usbd_descriptors.o
+ 0x080001d0 USBD_FS_ProductStrDescriptor
.text.USBD_FS_ManufacturerStrDescriptor
- 0x080001bc 0x1c Src/usbd_descriptors.o
- 0x080001bc USBD_FS_ManufacturerStrDescriptor
+ 0x080001f8 0x28 Src/usbd_descriptors.o
+ 0x080001f8 USBD_FS_ManufacturerStrDescriptor
.text.USBD_FS_SerialStrDescriptor
- 0x080001d8 0x1c Src/usbd_descriptors.o
- 0x080001d8 USBD_FS_SerialStrDescriptor
+ 0x08000220 0x28 Src/usbd_descriptors.o
+ 0x08000220 USBD_FS_SerialStrDescriptor
.text.USBD_FS_ConfigStrDescriptor
- 0x080001f4 0x1c Src/usbd_descriptors.o
- 0x080001f4 USBD_FS_ConfigStrDescriptor
+ 0x08000248 0x28 Src/usbd_descriptors.o
+ 0x08000248 USBD_FS_ConfigStrDescriptor
.text.USBD_FS_InterfaceStrDescriptor
- 0x08000210 0x1c Src/usbd_descriptors.o
- 0x08000210 USBD_FS_InterfaceStrDescriptor
+ 0x08000270 0x28 Src/usbd_descriptors.o
+ 0x08000270 USBD_FS_InterfaceStrDescriptor
.text.HAL_PCD_MspInit
- 0x0800022c 0x58 Src/usbd_config.o
- 0x0800022c HAL_PCD_MspInit
+ 0x08000298 0x6c Src/usbd_config.o
+ 0x08000298 HAL_PCD_MspInit
.text.HAL_PCD_SetupStageCallback
- 0x08000284 0x14 Src/usbd_config.o
- 0x08000284 HAL_PCD_SetupStageCallback
+ 0x08000304 0x24 Src/usbd_config.o
+ 0x08000304 HAL_PCD_SetupStageCallback
.text.HAL_PCD_DataOutStageCallback
- 0x08000298 0x18 Src/usbd_config.o
- 0x08000298 HAL_PCD_DataOutStageCallback
+ 0x08000328 0x38 Src/usbd_config.o
+ 0x08000328 HAL_PCD_DataOutStageCallback
.text.HAL_PCD_DataInStageCallback
- 0x080002b0 0x18 Src/usbd_config.o
- 0x080002b0 HAL_PCD_DataInStageCallback
+ 0x08000360 0x34 Src/usbd_config.o
+ 0x08000360 HAL_PCD_DataInStageCallback
.text.HAL_PCD_SOFCallback
- 0x080002c8 0xc Src/usbd_config.o
- 0x080002c8 HAL_PCD_SOFCallback
+ 0x08000394 0x1c Src/usbd_config.o
+ 0x08000394 HAL_PCD_SOFCallback
.text.HAL_PCD_ResetCallback
- 0x080002d4 0x20 Src/usbd_config.o
- 0x080002d4 HAL_PCD_ResetCallback
+ 0x080003b0 0x50 Src/usbd_config.o
+ 0x080003b0 HAL_PCD_ResetCallback
.text.HAL_PCD_SuspendCallback
- 0x080002f4 0x1c Src/usbd_config.o
- 0x080002f4 HAL_PCD_SuspendCallback
+ 0x08000400 0x34 Src/usbd_config.o
+ 0x08000400 HAL_PCD_SuspendCallback
.text.HAL_PCD_ResumeCallback
- 0x08000310 0x1c Src/usbd_config.o
- 0x08000310 HAL_PCD_ResumeCallback
+ 0x08000434 0x34 Src/usbd_config.o
+ 0x08000434 HAL_PCD_ResumeCallback
.text.HAL_PCD_ISOOUTIncompleteCallback
- 0x0800032c 0xc Src/usbd_config.o
- 0x0800032c HAL_PCD_ISOOUTIncompleteCallback
+ 0x08000468 0x24 Src/usbd_config.o
+ 0x08000468 HAL_PCD_ISOOUTIncompleteCallback
.text.HAL_PCD_ISOINIncompleteCallback
- 0x08000338 0xc Src/usbd_config.o
- 0x08000338 HAL_PCD_ISOINIncompleteCallback
+ 0x0800048c 0x24 Src/usbd_config.o
+ 0x0800048c HAL_PCD_ISOINIncompleteCallback
.text.HAL_PCD_ConnectCallback
- 0x08000344 0xc Src/usbd_config.o
- 0x08000344 HAL_PCD_ConnectCallback
+ 0x080004b0 0x1c Src/usbd_config.o
+ 0x080004b0 HAL_PCD_ConnectCallback
.text.HAL_PCD_DisconnectCallback
- 0x08000350 0xc Src/usbd_config.o
- 0x08000350 HAL_PCD_DisconnectCallback
+ 0x080004cc 0x1c Src/usbd_config.o
+ 0x080004cc HAL_PCD_DisconnectCallback
.text.HAL_PCD_BufferFreedCallBack
- 0x0800035c 0xc Src/usbd_config.o
- 0x0800035c HAL_PCD_BufferFreedCallBack
+ 0x080004e8 0x1c Src/usbd_config.o
+ 0x080004e8 HAL_PCD_BufferFreedCallBack
.text.USBD_LL_Init
- 0x08000368 0x5c Src/usbd_config.o
- 0x08000368 USBD_LL_Init
+ 0x08000504 0x94 Src/usbd_config.o
+ 0x08000504 USBD_LL_Init
.text.USBD_LL_Start
- 0x080003c4 0x10 Src/usbd_config.o
- 0x080003c4 USBD_LL_Start
+ 0x08000598 0x20 Src/usbd_config.o
+ 0x08000598 USBD_LL_Start
+ .text.USBD_LL_Stop
+ 0x080005b8 0x20 Src/usbd_config.o
+ 0x080005b8 USBD_LL_Stop
.text.USBD_LL_OpenEP
- 0x080003d4 0x14 Src/usbd_config.o
- 0x080003d4 USBD_LL_OpenEP
+ 0x080005d8 0x34 Src/usbd_config.o
+ 0x080005d8 USBD_LL_OpenEP
.text.USBD_LL_CloseEP
- 0x080003e8 0x10 Src/usbd_config.o
- 0x080003e8 USBD_LL_CloseEP
+ 0x0800060c 0x28 Src/usbd_config.o
+ 0x0800060c USBD_LL_CloseEP
.text.USBD_LL_FlushEP
- 0x080003f8 0x10 Src/usbd_config.o
- 0x080003f8 USBD_LL_FlushEP
+ 0x08000634 0x28 Src/usbd_config.o
+ 0x08000634 USBD_LL_FlushEP
.text.USBD_LL_StallEP
- 0x08000408 0x10 Src/usbd_config.o
- 0x08000408 USBD_LL_StallEP
+ 0x0800065c 0x28 Src/usbd_config.o
+ 0x0800065c USBD_LL_StallEP
.text.USBD_LL_ClearStallEP
- 0x08000418 0x10 Src/usbd_config.o
- 0x08000418 USBD_LL_ClearStallEP
+ 0x08000684 0x28 Src/usbd_config.o
+ 0x08000684 USBD_LL_ClearStallEP
.text.USBD_LL_IsStallEP
- 0x08000428 0x30 Src/usbd_config.o
- 0x08000428 USBD_LL_IsStallEP
+ 0x080006ac 0x58 Src/usbd_config.o
+ 0x080006ac USBD_LL_IsStallEP
.text.USBD_LL_SetUSBAddress
- 0x08000458 0x10 Src/usbd_config.o
- 0x08000458 USBD_LL_SetUSBAddress
+ 0x08000704 0x28 Src/usbd_config.o
+ 0x08000704 USBD_LL_SetUSBAddress
.text.USBD_LL_Transmit
- 0x08000468 0x10 Src/usbd_config.o
- 0x08000468 USBD_LL_Transmit
+ 0x0800072c 0x34 Src/usbd_config.o
+ 0x0800072c USBD_LL_Transmit
.text.USBD_LL_PrepareReceive
- 0x08000478 0x10 Src/usbd_config.o
- 0x08000478 USBD_LL_PrepareReceive
+ 0x08000760 0x34 Src/usbd_config.o
+ 0x08000760 USBD_LL_PrepareReceive
.text.USBD_LL_GetRxDataSize
- 0x08000488 0xc Src/usbd_config.o
- 0x08000488 USBD_LL_GetRxDataSize
+ 0x08000794 0x28 Src/usbd_config.o
+ 0x08000794 USBD_LL_GetRxDataSize
.text.USB_Device_Init
- 0x08000494 0x2c Src/usb_device.o
- 0x08000494 USB_Device_Init
- .text.GPIO_Init
- 0x080004c0 0xc0 Src/main.o
+ 0x080007bc 0x18 Src/usb_device.o
+ 0x080007bc USB_Device_Init
+ .text.Upstream_InitStateMachine
+ 0x080007d4 0x7c Src/upstream_statemachine.o
+ 0x080007d4 Upstream_InitStateMachine
+ .text.Upstream_StateMachine_SetErrorState
+ 0x08000850 0x30 Src/upstream_statemachine.o
+ 0x08000850 Upstream_StateMachine_SetErrorState
+ .text.Upstream_StateMachine_CheckClassOperationOk
+ 0x08000880 0x30 Src/upstream_statemachine.o
+ 0x08000880 Upstream_StateMachine_CheckClassOperationOk
+ .text.Upstream_StateMachine_TestInterfaceReplyCallback
+ 0x080008b0 0x8c Src/upstream_statemachine.o
+ 0x080008b0 Upstream_StateMachine_TestInterfaceReplyCallback
+ .text.Upstream_StateMachine_NotifyDevice
+ 0x0800093c 0x40 Src/upstream_statemachine.o
+ 0x0800093c Upstream_StateMachine_NotifyDevice
+ .text.Upstream_StateMachine_NotifyDeviceReplyCallback
+ 0x0800097c 0xbc Src/upstream_statemachine.o
+ 0x0800097c Upstream_StateMachine_NotifyDeviceReplyCallback
+ .text.Upstream_StateMachine_DeviceDisconnected
+ 0x08000a38 0x3c Src/upstream_statemachine.o
+ 0x08000a38 Upstream_StateMachine_DeviceDisconnected
+ .text.Upstream_InitSPI
+ 0x08000a74 0x9c Src/upstream_spi.o
+ 0x08000a74 Upstream_InitSPI
+ .text.Upstream_GetFreePacket
+ 0x08000b10 0x80 Src/upstream_spi.o
+ 0x08000b10 Upstream_GetFreePacket
+ .text.Upstream_GetFreePacketImmediately
+ 0x08000b90 0x6c Src/upstream_spi.o
+ 0x08000b90 Upstream_GetFreePacketImmediately
+ .text.Upstream_ReleasePacket
+ 0x08000bfc 0x6c Src/upstream_spi.o
+ 0x08000bfc Upstream_ReleasePacket
+ .text.Upstream_TransmitPacket
+ 0x08000c68 0x108 Src/upstream_spi.o
+ 0x08000c68 Upstream_TransmitPacket
+ .text.HAL_SPI_TxRxCpltCallback
+ 0x08000d70 0x1ec Src/upstream_spi.o
+ 0x08000d70 HAL_SPI_TxRxCpltCallback
+ .text.Upstream_ReceivePacket
+ 0x08000f5c 0x4c Src/upstream_spi.o
+ 0x08000f5c Upstream_ReceivePacket
+ .text.Upstream_CheckBeginPacketReception
+ 0x08000fa8 0x60 Src/upstream_spi.o
+ 0x08000fa8 Upstream_CheckBeginPacketReception
+ .text.Upstream_TxOkInterrupt
+ 0x08001008 0x80 Src/upstream_spi.o
+ 0x08001008 Upstream_TxOkInterrupt
+ .text.Upstream_BeginTransmitPacketSize
+ 0x08001088 0x54 Src/upstream_spi.o
+ 0x08001088 Upstream_BeginTransmitPacketSize
+ .text.Upstream_BeginTransmitPacketBody
+ 0x080010dc 0x6c Src/upstream_spi.o
+ 0x080010dc Upstream_BeginTransmitPacketBody
+ .text.Upstream_BeginReceivePacketSize
+ 0x08001148 0x94 Src/upstream_spi.o
+ 0x08001148 Upstream_BeginReceivePacketSize
+ .text.Upstream_BeginReceivePacketBody
+ 0x080011dc 0x5c Src/upstream_spi.o
+ 0x080011dc Upstream_BeginReceivePacketBody
+ .text.HAL_SPI_RxCpltCallback
+ 0x08001238 0x38 Src/upstream_spi.o
+ 0x08001238 HAL_SPI_RxCpltCallback
+ .text.HAL_SPI_ErrorCallback
+ 0x08001270 0x30 Src/upstream_spi.o
+ 0x08001270 HAL_SPI_ErrorCallback
+ .text.Upstream_MSC_TestReady
+ 0x080012a0 0x68 Src/upstream_msc.o
+ 0x080012a0 Upstream_MSC_TestReady
+ .text.Upstream_MSC_TestReadyReplyCallback
+ 0x08001308 0x5c Src/upstream_msc.o
+ .text.Upstream_MSC_GetCapacity
+ 0x08001364 0x68 Src/upstream_msc.o
+ 0x08001364 Upstream_MSC_GetCapacity
+ .text.Upstream_MSC_GetCapacityReplyCallback
+ 0x080013cc 0x64 Src/upstream_msc.o
+ .text.Upstream_MSC_BeginRead
+ 0x08001430 0xa0 Src/upstream_msc.o
+ 0x08001430 Upstream_MSC_BeginRead
+ .text.Upstream_MSC_GetStreamDataPacket
+ 0x080014d0 0x74 Src/upstream_msc.o
+ 0x080014d0 Upstream_MSC_GetStreamDataPacket
+ .text.Upstream_MSC_GetStreamDataPacketCallback
+ 0x08001544 0xb0 Src/upstream_msc.o
+ .text.Upstream_MSC_BeginWrite
+ 0x080015f4 0x80 Src/upstream_msc.o
+ 0x080015f4 Upstream_MSC_BeginWrite
+ .text.Upstream_MSC_BeginWriteReplyCallback
+ 0x08001674 0x6c Src/upstream_msc.o
+ .text.Upstream_MSC_PutStreamDataPacket
+ 0x080016e0 0x50 Src/upstream_msc.o
+ 0x080016e0 Upstream_MSC_PutStreamDataPacket
+ .text.main 0x08001730 0x20 Src/main.o
+ 0x08001730 main
.text.SystemClock_Config
- 0x08000580 0x78 Src/main.o
- 0x08000580 SystemClock_Config
- .text.main 0x080005f8 0x18 Src/main.o
- 0x080005f8 main
+ 0x08001750 0x98 Src/main.o
+ 0x08001750 SystemClock_Config
+ .text.GPIO_Init
+ 0x080017e8 0xcc Src/main.o
+ .text.LED_Init
+ 0x080018b4 0x24 Src/led.o
+ 0x080018b4 LED_Init
+ .text.LED_Fault_SetBlinkRate
+ 0x080018d8 0x3c Src/led.o
+ 0x080018d8 LED_Fault_SetBlinkRate
+ .text.LED_DoBlinks
+ 0x08001914 0x68 Src/led.o
+ 0x08001914 LED_DoBlinks
.text.SysTick_Handler
- 0x08000610 0x8 Src/interrupts.o
- 0x08000610 SysTick_Handler
+ 0x0800197c 0x10 Src/interrupts.o
+ 0x0800197c SysTick_Handler
.text.OTG_FS_IRQHandler
- 0x08000618 0x20 Src/interrupts.o
- 0x08000618 OTG_FS_IRQHandler
+ 0x0800198c 0x10 Src/interrupts.o
+ 0x0800198c OTG_FS_IRQHandler
.text.DMA2_Stream2_IRQHandler
- 0x08000638 0x20 Src/interrupts.o
- 0x08000638 DMA2_Stream2_IRQHandler
+ 0x0800199c 0x10 Src/interrupts.o
+ 0x0800199c DMA2_Stream2_IRQHandler
.text.DMA2_Stream3_IRQHandler
- 0x08000658 0x20 Src/interrupts.o
- 0x08000658 DMA2_Stream3_IRQHandler
+ 0x080019ac 0x10 Src/interrupts.o
+ 0x080019ac DMA2_Stream3_IRQHandler
.text.EXTI3_IRQHandler
- 0x08000678 0x24 Src/interrupts.o
- 0x08000678 EXTI3_IRQHandler
+ 0x080019bc 0x14 Src/interrupts.o
+ 0x080019bc EXTI3_IRQHandler
.text.HAL_MspInit
- 0x0800069c 0x10 Src/hal_msp.o
- 0x0800069c HAL_MspInit
+ 0x080019d0 0x14 Src/hal_msp.o
+ 0x080019d0 HAL_MspInit
.text.HAL_SPI_MspInit
- 0x080006ac 0x120 Src/hal_msp.o
- 0x080006ac HAL_SPI_MspInit
- .text.SPI1_Init
- 0x080007cc 0x44 Src/downstream_spi.o
- .text.Downstream_BeginPacketReception
- 0x08000810 0x44 Src/downstream_spi.o
- .text.Downstream_InitInterface
- 0x08000854 0x50 Src/downstream_spi.o
- 0x08000854 Downstream_InitInterface
- .text.Downstream_GetFreePacket
- 0x080008a4 0x54 Src/downstream_spi.o
- 0x080008a4 Downstream_GetFreePacket
- .text.Downstream_CheckBeginPacketReception
- 0x080008f8 0x44 Src/downstream_spi.o
- .text.Downstream_GetFreePacketImmediately
- 0x0800093c 0x38 Src/downstream_spi.o
- 0x0800093c Downstream_GetFreePacketImmediately
- .text.Downstream_ReleasePacket
- 0x08000974 0x1c Src/downstream_spi.o
- 0x08000974 Downstream_ReleasePacket
- .text.Downstream_TxOkInterrupt
- 0x08000990 0x9c Src/downstream_spi.o
- 0x08000990 Downstream_TxOkInterrupt
- .text.Downstream_SendPacket
- 0x08000a2c 0xa4 Src/downstream_spi.o
- 0x08000a2c Downstream_SendPacket
- .text.HAL_SPI_TxCpltCallback
- 0x08000ad0 0x88 Src/downstream_spi.o
- 0x08000ad0 HAL_SPI_TxCpltCallback
- .text.HAL_SPI_RxCpltCallback
- 0x08000b58 0x94 Src/downstream_spi.o
- 0x08000b58 HAL_SPI_RxCpltCallback
- .text.HAL_SPI_ErrorCallback
- 0x08000bec 0x4 Src/downstream_spi.o
- 0x08000bec HAL_SPI_ErrorCallback
- .text.DownstreamInterface_GetCapacityReplyCallback
- 0x08000bf0 0x2c Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_TestReadyReplyCallback
- 0x08000c1c 0x14 Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_BeginWriteReplyCallback
- 0x08000c30 0x18 Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_TestReady
- 0x08000c48 0x30 Src/downstream_interface_msc_mock.o
- 0x08000c48 DownstreamInterface_TestReady
- .text.DownstreamInterface_GetCapacity
- 0x08000c78 0x2c Src/downstream_interface_msc_mock.o
- 0x08000c78 DownstreamInterface_GetCapacity
- .text.DownstreamInterface_BeginRead
- 0x08000ca4 0x70 Src/downstream_interface_msc_mock.o
- 0x08000ca4 DownstreamInterface_BeginRead
- .text.DownstreamInterface_GetStreamDataPacket
- 0x08000d14 0x44 Src/downstream_interface_msc_mock.o
- 0x08000d14 DownstreamInterface_GetStreamDataPacket
- .text.DownstreamInterface_GetStreamDataPacketCallback
- 0x08000d58 0x54 Src/downstream_interface_msc_mock.o
- .text.DownstreamInterface_BeginWrite
- 0x08000dac 0x54 Src/downstream_interface_msc_mock.o
- 0x08000dac DownstreamInterface_BeginWrite
- .text.DownstreamInterface_PutStreamDataPacket
- 0x08000e00 0x14 Src/downstream_interface_msc_mock.o
- 0x08000e00 DownstreamInterface_PutStreamDataPacket
+ 0x080019e4 0x188 Src/hal_msp.o
+ 0x080019e4 HAL_SPI_MspInit
.text.USBD_CtlSendData
- 0x08000e14 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e14 USBD_CtlSendData
+ 0x08001b6c 0x38 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001b6c USBD_CtlSendData
.text.USBD_CtlContinueSendData
- 0x08000e30 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e30 USBD_CtlContinueSendData
+ 0x08001ba4 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001ba4 USBD_CtlContinueSendData
.text.USBD_CtlContinueRx
- 0x08000e44 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e44 USBD_CtlContinueRx
+ 0x08001bc8 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001bc8 USBD_CtlContinueRx
.text.USBD_CtlSendStatus
- 0x08000e58 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e58 USBD_CtlSendStatus
+ 0x08001bec 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001bec USBD_CtlSendStatus
.text.USBD_CtlReceiveStatus
- 0x08000e70 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x08000e70 USBD_CtlReceiveStatus
- .text.USBD_GetLen
- 0x08000e88 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .text.USBD_SetFeature
- 0x08000e9c 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .text.USBD_ParseSetupRequest
- 0x08000ebc 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08000ebc USBD_ParseSetupRequest
- .text.USBD_CtlError
- 0x08000ee4 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08000ee4 USBD_CtlError
+ 0x08001c14 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x08001c14 USBD_CtlReceiveStatus
+ .text.USBD_StdDevReq
+ 0x08001c3c 0xa0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001c3c USBD_StdDevReq
+ .text.USBD_StdItfReq
+ 0x08001cdc 0x68 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001cdc USBD_StdItfReq
+ .text.USBD_StdEPReq
+ 0x08001d44 0x1b0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001d44 USBD_StdEPReq
.text.USBD_GetDescriptor
- 0x08000ef8 0x144 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08001ef4 0x1f8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_SetAddress
- 0x0800103c 0x4c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x080020ec 0x7c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_SetConfig
- 0x08001088 0xa8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08002168 0x114 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_GetConfig
- 0x08001130 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x0800227c 0x64 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_GetStatus
- 0x08001170 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x080022e0 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .text.USBD_SetFeature
+ 0x08002334 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_ClrFeature
- 0x080011a0 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .text.USBD_StdDevReq
- 0x080011d0 0x48 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x080011d0 USBD_StdDevReq
- .text.USBD_StdItfReq
- 0x08001218 0x38 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08001218 USBD_StdItfReq
- .text.USBD_StdEPReq
- 0x08001250 0x108 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08001250 USBD_StdEPReq
+ 0x08002368 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .text.USBD_ParseSetupRequest
+ 0x080023b8 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x080023b8 USBD_ParseSetupRequest
+ .text.USBD_CtlError
+ 0x08002430 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08002430 USBD_CtlError
.text.USBD_GetString
- 0x08001358 0x3c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x08001358 USBD_GetString
+ 0x08002450 0x84 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x08002450 USBD_GetString
+ .text.USBD_GetLen
+ 0x080024d4 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.text.USBD_Init
- 0x08001394 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001394 USBD_Init
+ 0x08002504 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002504 USBD_Init
.text.USBD_RegisterClass
- 0x080013c0 0x10 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013c0 USBD_RegisterClass
+ 0x08002558 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002558 USBD_RegisterClass
.text.USBD_Start
- 0x080013d0 0xc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013d0 USBD_Start
+ 0x0800258c 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800258c USBD_Start
+ .text.USBD_Stop
+ 0x080025a4 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080025a4 USBD_Stop
+ .text.USBD_RunTestMode
+ 0x080025d0 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080025d0 USBD_RunTestMode
.text.USBD_SetClassConfig
- 0x080013dc 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013dc USBD_SetClassConfig
+ 0x080025e8 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080025e8 USBD_SetClassConfig
.text.USBD_ClrClassConfig
- 0x080013f8 0x10 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080013f8 USBD_ClrClassConfig
+ 0x08002628 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002628 USBD_ClrClassConfig
.text.USBD_SetupStage
- 0x08001408 0x5c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001408 USBD_SetupStage
+ 0x08002650 0x94 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002650 USBD_SetupStage
.text.USBD_DataOutStage
- 0x08001464 0x60 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001464 USBD_DataOutStage
+ 0x080026e4 0xb8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080026e4 USBD_DataOutStage
.text.USBD_DataInStage
- 0x080014c4 0x8c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080014c4 USBD_DataInStage
+ 0x0800279c 0x120 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800279c USBD_DataInStage
.text.USBD_Reset
- 0x08001550 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001550 USBD_Reset
+ 0x080028bc 0x60 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080028bc USBD_Reset
.text.USBD_SetSpeed
- 0x08001590 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001590 USBD_SetSpeed
+ 0x0800291c 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800291c USBD_SetSpeed
.text.USBD_Suspend
- 0x08001598 0x14 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x08001598 USBD_Suspend
+ 0x0800293c 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800293c USBD_Suspend
.text.USBD_Resume
- 0x080015ac 0xc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015ac USBD_Resume
+ 0x08002968 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002968 USBD_Resume
.text.USBD_SOF
- 0x080015b8 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015b8 USBD_SOF
+ 0x0800298c 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x0800298c USBD_SOF
.text.USBD_IsoINIncomplete
- 0x080015d0 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015d0 USBD_IsoINIncomplete
+ 0x080029c0 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080029c0 USBD_IsoINIncomplete
.text.USBD_IsoOUTIncomplete
- 0x080015d4 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015d4 USBD_IsoOUTIncomplete
+ 0x080029dc 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080029dc USBD_IsoOUTIncomplete
.text.USBD_DevConnected
- 0x080015d8 0x4 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015d8 USBD_DevConnected
+ 0x080029f8 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x080029f8 USBD_DevConnected
.text.USBD_DevDisconnected
- 0x080015dc 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015dc USBD_DevDisconnected
+ 0x08002a10 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002a10 USBD_DevDisconnected
.text.USBD_BufferFreed
- 0x080015f4 0x10 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x080015f4 USBD_BufferFreed
- .text.SCSI_StartStopUnit
- 0x08001604 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_RequestSense
- 0x08001620 0xb4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002a40 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x08002a40 USBD_BufferFreed
+ .text.SCSI_ProcessCmd
+ 0x08002a60 0x22c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002a60 SCSI_ProcessCmd
+ .text.SCSI_TestUnitReady
+ 0x08002c8c 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_TestUnitReadyCallback
+ 0x08002cf4 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002cf4 SCSI_TestUnitReadyCallback
.text.SCSI_Inquiry
- 0x080016d4 0x6c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002d54 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_ReadCapacity10
+ 0x08002e04 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_ReadCapacity10Callback
+ 0x08002e24 0x12c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002e24 SCSI_ReadCapacity10Callback
+ .text.SCSI_ReadFormatCapacity
+ 0x08002f50 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_ReadFormatCapacityCallback
+ 0x08002f70 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08002f70 SCSI_ReadFormatCapacityCallback
.text.SCSI_ModeSense6
- 0x08001740 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x0800308c 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.SCSI_ModeSense10
- 0x08001780 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Write10FreePacketCallback
- 0x080017c0 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x080017c0 SCSI_Write10FreePacketCallback
+ 0x080030f0 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_RequestSense
+ 0x08003154 0x130 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.SCSI_SenseCode
- 0x080017fc 0x30 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x080017fc SCSI_SenseCode
- .text.SCSI_CheckAddressRange
- 0x0800182c 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Verify10
- 0x08001860 0x6c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_TestUnitReadyCallback
- 0x080018cc 0x48 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x080018cc SCSI_TestUnitReadyCallback
- .text.SCSI_TestUnitReady
- 0x08001914 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_ReadCapacity10Callback
- 0x0800196c 0x9c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x0800196c SCSI_ReadCapacity10Callback
- .text.SCSI_ReadCapacity10
- 0x08001a08 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_ReadFormatCapacityCallback
- 0x08001a24 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001a24 SCSI_ReadFormatCapacityCallback
- .text.SCSI_ReadFormatCapacity
- 0x08001ac8 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Read10ReplyCallback
- 0x08001ae4 0x6c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001ae4 SCSI_Read10ReplyCallback
- .text.SCSI_Read10BeginCallback
- 0x08001b50 0x50 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001b50 SCSI_Read10BeginCallback
+ 0x08003284 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08003284 SCSI_SenseCode
+ .text.SCSI_StartStopUnit
+ 0x08003300 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.SCSI_Read10
- 0x08001ba0 0xf8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_Write10BeginCallback
- 0x08001c98 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001c98 SCSI_Write10BeginCallback
+ 0x08003320 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_Read10BeginCallback
+ 0x080034a8 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x080034a8 SCSI_Read10BeginCallback
+ .text.SCSI_Read10ReplyCallback
+ 0x08003510 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08003510 SCSI_Read10ReplyCallback
.text.SCSI_Write10
- 0x08001d18 0x160 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .text.SCSI_ProcessCmd
- 0x08001e78 0xf0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x08001e78 SCSI_ProcessCmd
- .text.MSC_BOT_Abort
- 0x08001f68 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .text.MSC_BOT_CBW_Decode
- 0x08001fa4 0x74 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .text.MSC_BOT_SendData
- 0x08002018 0x2c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x080035b4 0x210 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_Write10BeginCallback
+ 0x080037c4 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x080037c4 SCSI_Write10BeginCallback
+ .text.SCSI_Write10FreePacketCallback
+ 0x08003868 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x08003868 SCSI_Write10FreePacketCallback
+ .text.SCSI_Verify10
+ 0x080038c0 0x84 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .text.SCSI_CheckAddressRange
+ 0x08003944 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.text.MSC_BOT_Init
- 0x08002044 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002044 MSC_BOT_Init
+ 0x0800399c 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x0800399c MSC_BOT_Init
.text.MSC_BOT_Reset
- 0x08002078 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002078 MSC_BOT_Reset
+ 0x080039f0 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x080039f0 MSC_BOT_Reset
.text.MSC_BOT_DeInit
- 0x08002090 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002090 MSC_BOT_DeInit
- .text.MSC_BOT_DataOut
- 0x0800209c 0x30 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x0800209c MSC_BOT_DataOut
- .text.MSC_BOT_SendCSW
- 0x080020cc 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x080020cc MSC_BOT_SendCSW
+ 0x08003a24 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003a24 MSC_BOT_DeInit
.text.MSC_BOT_DataIn
- 0x08002100 0x38 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002100 MSC_BOT_DataIn
+ 0x08003a44 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003a44 MSC_BOT_DataIn
.text.MSC_BOT_DataIn_Callback
- 0x08002138 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002138 MSC_BOT_DataIn_Callback
+ 0x08003aa4 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003aa4 MSC_BOT_DataIn_Callback
+ .text.MSC_BOT_DataOut
+ 0x08003acc 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003acc MSC_BOT_DataOut
.text.MSC_BOT_DataOut_Callback
- 0x08002150 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002150 MSC_BOT_DataOut_Callback
+ 0x08003b24 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003b24 MSC_BOT_DataOut_Callback
+ .text.MSC_BOT_CBW_Decode
+ 0x08003b4c 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.text.MSC_BOT_CBW_Decode_Callback
- 0x08002168 0x5c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x08002168 MSC_BOT_CBW_Decode_Callback
+ 0x08003bfc 0xa0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003bfc MSC_BOT_CBW_Decode_Callback
+ .text.MSC_BOT_SendData
+ 0x08003c9c 0x50 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .text.MSC_BOT_SendCSW
+ 0x08003cec 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003cec MSC_BOT_SendCSW
+ .text.MSC_BOT_Abort
+ 0x08003d40 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.text.MSC_BOT_CplClrFeature
- 0x080021c4 0x2c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x080021c4 MSC_BOT_CplClrFeature
- .text.USBD_MSC_GetHSCfgDesc
- 0x080021f0 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080021f0 USBD_MSC_GetHSCfgDesc
- .text.USBD_MSC_GetFSCfgDesc
- 0x080021fc 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080021fc USBD_MSC_GetFSCfgDesc
- .text.USBD_MSC_GetOtherSpeedCfgDesc
- 0x08002208 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x08002208 USBD_MSC_GetOtherSpeedCfgDesc
- .text.USBD_MSC_GetDeviceQualifierDescriptor
- 0x08002214 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x08002214 USBD_MSC_GetDeviceQualifierDescriptor
+ 0x08003d98 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x08003d98 MSC_BOT_CplClrFeature
.text.USBD_MSC_Init
- 0x08002220 0x5c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x08002220 USBD_MSC_Init
+ 0x08003de4 0x90 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003de4 USBD_MSC_Init
.text.USBD_MSC_DeInit
- 0x0800227c 0x2c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x0800227c USBD_MSC_DeInit
+ 0x08003e74 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003e74 USBD_MSC_DeInit
.text.USBD_MSC_Setup
- 0x080022a8 0xfc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080022a8 USBD_MSC_Setup
+ 0x08003ec0 0x16c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x08003ec0 USBD_MSC_Setup
.text.USBD_MSC_DataIn
- 0x080023a4 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080023a4 USBD_MSC_DataIn
+ 0x0800402c 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x0800402c USBD_MSC_DataIn
.text.USBD_MSC_DataOut
- 0x080023b0 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080023b0 USBD_MSC_DataOut
+ 0x0800404c 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x0800404c USBD_MSC_DataOut
.text.USBD_MSC_BufferFreed
- 0x080023bc 0x24 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x080023bc USBD_MSC_BufferFreed
- .text.USB_CoreReset
- 0x080023e0 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800406c 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x0800406c USBD_MSC_BufferFreed
+ .text.USBD_MSC_GetHSCfgDesc
+ 0x080040ac 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x080040ac USBD_MSC_GetHSCfgDesc
+ .text.USBD_MSC_GetFSCfgDesc
+ 0x080040cc 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x080040cc USBD_MSC_GetFSCfgDesc
+ .text.USBD_MSC_GetOtherSpeedCfgDesc
+ 0x080040ec 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x080040ec USBD_MSC_GetOtherSpeedCfgDesc
+ .text.USBD_MSC_GetDeviceQualifierDescriptor
+ 0x0800410c 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x0800410c USBD_MSC_GetDeviceQualifierDescriptor
.text.USB_CoreInit
- 0x08002418 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002418 USB_CoreInit
+ 0x0800412c 0xa4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800412c USB_CoreInit
.text.USB_EnableGlobalInt
- 0x08002490 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002490 USB_EnableGlobalInt
+ 0x080041d0 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080041d0 USB_EnableGlobalInt
.text.USB_DisableGlobalInt
- 0x0800249c 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x0800249c USB_DisableGlobalInt
+ 0x080041f4 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080041f4 USB_DisableGlobalInt
.text.USB_SetCurrentMode
- 0x080024a8 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080024a8 USB_SetCurrentMode
+ 0x08004218 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004218 USB_SetCurrentMode
+ .text.USB_DevInit
+ 0x08004268 0x258 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004268 USB_DevInit
.text.USB_FlushTxFifo
- 0x080024d4 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080024d4 USB_FlushTxFifo
+ 0x080044c0 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080044c0 USB_FlushTxFifo
.text.USB_FlushRxFifo
- 0x080024f8 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080024f8 USB_FlushRxFifo
+ 0x0800450c 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800450c USB_FlushRxFifo
.text.USB_SetDevSpeed
- 0x08002518 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002518 USB_SetDevSpeed
- .text.USB_DevInit
- 0x08002528 0x144 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002528 USB_DevInit
+ 0x08004550 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004550 USB_SetDevSpeed
.text.USB_GetDevSpeed
- 0x0800266c 0x40 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x0800266c USB_GetDevSpeed
+ 0x08004580 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004580 USB_GetDevSpeed
.text.USB_ActivateEndpoint
- 0x080026ac 0x8c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080026ac USB_ActivateEndpoint
+ 0x080045ec 0x114 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080045ec USB_ActivateEndpoint
.text.USB_DeactivateEndpoint
- 0x08002738 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002738 USB_DeactivateEndpoint
+ 0x08004700 0xf8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004700 USB_DeactivateEndpoint
+ .text.USB_EPStartXfer
+ 0x080047f8 0x484 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080047f8 USB_EPStartXfer
.text.USB_EP0StartXfer
- 0x080027b4 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x080027b4 USB_EP0StartXfer
+ 0x08004c7c 0x2bc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004c7c USB_EP0StartXfer
.text.USB_WritePacket
- 0x0800290c 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x0800290c USB_WritePacket
- .text.USB_EPStartXfer
- 0x08002934 0x258 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002934 USB_EPStartXfer
+ 0x08004f38 0x70 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004f38 USB_WritePacket
.text.USB_ReadPacket
- 0x08002b8c 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002b8c USB_ReadPacket
+ 0x08004fa8 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004fa8 USB_ReadPacket
.text.USB_EPSetStall
- 0x08002bb8 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002bb8 USB_EPSetStall
+ 0x08004ffc 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08004ffc USB_EPSetStall
.text.USB_EPClearStall
- 0x08002c10 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002c10 USB_EPClearStall
+ 0x080050e0 0xdc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080050e0 USB_EPClearStall
+ .text.USB_StopDevice
+ 0x080051bc 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080051bc USB_StopDevice
.text.USB_SetDevAddress
- 0x08002c70 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002c70 USB_SetDevAddress
+ 0x08005244 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005244 USB_SetDevAddress
.text.USB_DevConnect
- 0x08002c90 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002c90 USB_DevConnect
+ 0x08005290 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005290 USB_DevConnect
.text.USB_DevDisconnect
- 0x08002ca8 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002ca8 USB_DevDisconnect
+ 0x080052c0 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080052c0 USB_DevDisconnect
.text.USB_ReadInterrupts
- 0x08002cc0 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cc0 USB_ReadInterrupts
+ 0x080052f0 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080052f0 USB_ReadInterrupts
.text.USB_ReadDevAllOutEpInterrupt
- 0x08002cc8 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cc8 USB_ReadDevAllOutEpInterrupt
+ 0x0800531c 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800531c USB_ReadDevAllOutEpInterrupt
.text.USB_ReadDevAllInEpInterrupt
- 0x08002cd8 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cd8 USB_ReadDevAllInEpInterrupt
+ 0x0800534c 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800534c USB_ReadDevAllInEpInterrupt
.text.USB_ReadDevOutEPInterrupt
- 0x08002ce8 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002ce8 USB_ReadDevOutEPInterrupt
+ 0x0800537c 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x0800537c USB_ReadDevOutEPInterrupt
.text.USB_ReadDevInEPInterrupt
- 0x08002cfc 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002cfc USB_ReadDevInEPInterrupt
+ 0x080053b4 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x080053b4 USB_ReadDevInEPInterrupt
.text.USB_GetMode
- 0x08002d20 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002d20 USB_GetMode
+ 0x08005408 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005408 USB_GetMode
.text.USB_ActivateSetup
- 0x08002d28 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002d28 USB_ActivateSetup
+ 0x08005424 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005424 USB_ActivateSetup
.text.USB_EP0_OutStart
- 0x08002d60 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x08002d60 USB_EP0_OutStart
- .text.SPI_WaitOnFlagUntilTimeout
- 0x08002da4 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005490 0x8c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x08005490 USB_EP0_OutStart
+ .text.USB_CoreReset
+ 0x0800551c 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.text.HAL_SPI_Init
- 0x08002e88 0x84 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08002e88 HAL_SPI_Init
- .text.HAL_SPI_Transmit_DMA
- 0x08002f0c 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08002f0c HAL_SPI_Transmit_DMA
+ 0x08005584 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005584 HAL_SPI_Init
.text.HAL_SPI_TransmitReceive_DMA
- 0x08002fdc 0x13c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08002fdc HAL_SPI_TransmitReceive_DMA
- .text.HAL_SPI_Receive_DMA
- 0x08003118 0xf0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08003118 HAL_SPI_Receive_DMA
- .text.HAL_SPI_TxRxCpltCallback
- 0x08003208 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x08003208 HAL_SPI_TxRxCpltCallback
- .text.HAL_SPI_TxHalfCpltCallback
- 0x0800320c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x0800320c HAL_SPI_TxHalfCpltCallback
- .text.SPI_DMAHalfTransmitCplt
- 0x08003210 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005650 0x1e0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005650 HAL_SPI_TransmitReceive_DMA
.text.HAL_SPI_RxHalfCpltCallback
- 0x0800321c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x0800321c HAL_SPI_RxHalfCpltCallback
- .text.SPI_DMAHalfReceiveCplt
- 0x08003220 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005830 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005830 HAL_SPI_RxHalfCpltCallback
.text.HAL_SPI_TxRxHalfCpltCallback
- 0x0800322c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x0800322c HAL_SPI_TxRxHalfCpltCallback
- .text.SPI_DMAHalfTransmitReceiveCplt
- 0x08003230 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_DMAError
- 0x0800323c 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .text.SPI_DMATransmitCplt
- 0x0800325c 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005844 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005844 HAL_SPI_TxRxHalfCpltCallback
.text.SPI_DMAReceiveCplt
- 0x080032d4 0xc8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005858 0x11c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAEndTransmitReceive
+ 0x08005974 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.SPI_DMATransmitReceiveCplt
- 0x0800339c 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x08005a44 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAHalfReceiveCplt
+ 0x08005a94 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAHalfTransmitReceiveCplt
+ 0x08005ab0 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_DMAError
+ 0x08005acc 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .text.SPI_WaitOnFlagUntilTimeout
+ 0x08005b08 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.text.HAL_RCC_OscConfig
- 0x08003468 0x310 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08003468 HAL_RCC_OscConfig
+ 0x08005c50 0x3c8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x08005c50 HAL_RCC_OscConfig
.text.HAL_RCC_ClockConfig
- 0x08003778 0x22c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08003778 HAL_RCC_ClockConfig
+ 0x08006018 0x2b0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x08006018 HAL_RCC_ClockConfig
.text.HAL_RCC_GetSysClockFreq
- 0x080039a4 0x98 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x080039a4 HAL_RCC_GetSysClockFreq
+ 0x080062c8 0x118 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x080062c8 HAL_RCC_GetSysClockFreq
.text.HAL_RCC_GetHCLKFreq
- 0x08003a3c 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08003a3c HAL_RCC_GetHCLKFreq
+ 0x080063e0 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x080063e0 HAL_RCC_GetHCLKFreq
.text.HAL_PCDEx_SetTxFiFo
- 0x08003a74 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- 0x08003a74 HAL_PCDEx_SetTxFiFo
+ 0x08006438 0x9c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x08006438 HAL_PCDEx_SetTxFiFo
.text.HAL_PCDEx_SetRxFiFo
- 0x08003abc 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- 0x08003abc HAL_PCDEx_SetRxFiFo
- .text.PCD_WriteEmptyTxFifo
- 0x08003ac4 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080064d4 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x080064d4 HAL_PCDEx_SetRxFiFo
.text.HAL_PCD_Init
- 0x08003b74 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08003b74 HAL_PCD_Init
+ 0x080064f8 0x210 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080064f8 HAL_PCD_Init
.text.HAL_PCD_Start
- 0x08003c54 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08003c54 HAL_PCD_Start
+ 0x08006708 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08006708 HAL_PCD_Start
+ .text.HAL_PCD_Stop
+ 0x0800674c 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x0800674c HAL_PCD_Stop
.text.HAL_PCD_IRQHandler
- 0x08003c80 0x450 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08003c80 HAL_PCD_IRQHandler
+ 0x0800679c 0x764 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x0800679c HAL_PCD_IRQHandler
.text.HAL_PCD_SetAddress
- 0x080040d0 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x080040d0 HAL_PCD_SetAddress
+ 0x08006f00 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08006f00 HAL_PCD_SetAddress
.text.HAL_PCD_EP_Open
- 0x080040f4 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x080040f4 HAL_PCD_EP_Open
+ 0x08006f44 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08006f44 HAL_PCD_EP_Open
.text.HAL_PCD_EP_Close
- 0x0800415c 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x0800415c HAL_PCD_EP_Close
+ 0x08007014 0x94 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007014 HAL_PCD_EP_Close
.text.HAL_PCD_EP_Receive
- 0x080041b4 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x080041b4 HAL_PCD_EP_Receive
+ 0x080070a8 0xb8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x080070a8 HAL_PCD_EP_Receive
.text.HAL_PCD_EP_GetRxCount
- 0x08004220 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004220 HAL_PCD_EP_GetRxCount
+ 0x08007160 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007160 HAL_PCD_EP_GetRxCount
.text.HAL_PCD_EP_Transmit
- 0x08004234 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004234 HAL_PCD_EP_Transmit
+ 0x08007194 0xb8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007194 HAL_PCD_EP_Transmit
.text.HAL_PCD_EP_SetStall
- 0x0800429c 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x0800429c HAL_PCD_EP_SetStall
+ 0x0800724c 0xb8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x0800724c HAL_PCD_EP_SetStall
.text.HAL_PCD_EP_ClrStall
- 0x08004300 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004300 HAL_PCD_EP_ClrStall
+ 0x08007304 0x94 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007304 HAL_PCD_EP_ClrStall
.text.HAL_PCD_EP_Flush
- 0x08004358 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x08004358 HAL_PCD_EP_Flush
+ 0x08007398 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x08007398 HAL_PCD_EP_Flush
+ .text.PCD_WriteEmptyTxFifo
+ 0x080073f4 0x118 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.text.HAL_GPIO_Init
- 0x08004390 0x1cc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- 0x08004390 HAL_GPIO_Init
- .text.DMA_SetConfig
- 0x0800455c 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x0800750c 0x32c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x0800750c HAL_GPIO_Init
.text.HAL_DMA_Init
- 0x08004588 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x08004588 HAL_DMA_Init
+ 0x08007838 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x08007838 HAL_DMA_Init
.text.HAL_DMA_Start_IT
- 0x08004604 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x08004604 HAL_DMA_Start_IT
+ 0x08007918 0xb4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x08007918 HAL_DMA_Start_IT
.text.HAL_DMA_IRQHandler
- 0x08004670 0x236c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x08004670 HAL_DMA_IRQHandler
+ 0x080079cc 0x32c8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x080079cc HAL_DMA_IRQHandler
+ .text.DMA_SetConfig
+ 0x0800ac94 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .text.NVIC_SetPriorityGrouping
+ 0x0800acf0 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_GetPriorityGrouping
+ 0x0800ad38 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_EnableIRQ
+ 0x0800ad54 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_SetPriority
+ 0x0800ad84 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.NVIC_EncodePriority
+ 0x0800add8 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .text.SysTick_Config
+ 0x0800ae40 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SetPriorityGrouping
- 0x080069dc 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x080069dc HAL_NVIC_SetPriorityGrouping
+ 0x0800ae7c 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x0800ae7c HAL_NVIC_SetPriorityGrouping
.text.HAL_NVIC_SetPriority
- 0x08006a00 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x08006a00 HAL_NVIC_SetPriority
+ 0x0800ae90 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x0800ae90 HAL_NVIC_SetPriority
.text.HAL_NVIC_EnableIRQ
- 0x08006a64 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x08006a64 HAL_NVIC_EnableIRQ
+ 0x0800aec8 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x0800aec8 HAL_NVIC_EnableIRQ
.text.HAL_SYSTICK_Config
- 0x08006a7c 0x20 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x08006a7c HAL_SYSTICK_Config
- .text.HAL_InitTick
- 0x08006a9c 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006a9c HAL_InitTick
+ 0x0800aee4 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x0800aee4 HAL_SYSTICK_Config
+ .text.HAL_SYSTICK_CLKSourceConfig
+ 0x0800aefc 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x0800aefc HAL_SYSTICK_CLKSourceConfig
.text.HAL_Init
- 0x08006ab8 0x34 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006ab8 HAL_Init
+ 0x0800af34 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x0800af34 HAL_Init
+ .text.HAL_InitTick
+ 0x0800af78 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x0800af78 HAL_InitTick
.text.HAL_IncTick
- 0x08006aec 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006aec HAL_IncTick
+ 0x0800afa4 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x0800afa4 HAL_IncTick
.text.HAL_GetTick
- 0x08006afc 0xc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006afc HAL_GetTick
+ 0x0800afc0 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x0800afc0 HAL_GetTick
.text.HAL_Delay
- 0x08006b08 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x08006b08 HAL_Delay
+ 0x0800afd8 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x0800afd8 HAL_Delay
.text.SystemInit
- 0x08006b24 0x40 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- 0x08006b24 SystemInit
+ 0x0800b004 0x5c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x0800b004 SystemInit
.text.Reset_Handler
- 0x08006b64 0x4c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
- 0x08006b64 Reset_Handler
+ 0x0800b060 0x4c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x0800b060 Reset_Handler
.text.Default_Handler
- 0x08006bb0 0x2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
- 0x08006bb0 RTC_Alarm_IRQHandler
- 0x08006bb0 HASH_RNG_IRQHandler
- 0x08006bb0 EXTI2_IRQHandler
- 0x08006bb0 TIM8_CC_IRQHandler
- 0x08006bb0 DebugMon_Handler
- 0x08006bb0 TIM1_CC_IRQHandler
- 0x08006bb0 DMA2_Stream5_IRQHandler
- 0x08006bb0 HardFault_Handler
- 0x08006bb0 DMA1_Stream5_IRQHandler
- 0x08006bb0 PVD_IRQHandler
- 0x08006bb0 SDIO_IRQHandler
- 0x08006bb0 TAMP_STAMP_IRQHandler
- 0x08006bb0 PendSV_Handler
- 0x08006bb0 NMI_Handler
- 0x08006bb0 CAN2_RX1_IRQHandler
- 0x08006bb0 TIM8_TRG_COM_TIM14_IRQHandler
- 0x08006bb0 TIM1_UP_TIM10_IRQHandler
- 0x08006bb0 TIM8_UP_TIM13_IRQHandler
- 0x08006bb0 I2C3_ER_IRQHandler
- 0x08006bb0 EXTI0_IRQHandler
- 0x08006bb0 I2C2_EV_IRQHandler
- 0x08006bb0 DMA1_Stream2_IRQHandler
- 0x08006bb0 CAN1_RX0_IRQHandler
- 0x08006bb0 FPU_IRQHandler
- 0x08006bb0 OTG_HS_WKUP_IRQHandler
- 0x08006bb0 UsageFault_Handler
- 0x08006bb0 CAN2_SCE_IRQHandler
- 0x08006bb0 SPI1_IRQHandler
- 0x08006bb0 TIM6_DAC_IRQHandler
- 0x08006bb0 TIM1_BRK_TIM9_IRQHandler
- 0x08006bb0 CAN2_RX0_IRQHandler
- 0x08006bb0 USART6_IRQHandler
- 0x08006bb0 USART3_IRQHandler
- 0x08006bb0 CAN1_RX1_IRQHandler
- 0x08006bb0 UART5_IRQHandler
- 0x08006bb0 DMA2_Stream0_IRQHandler
- 0x08006bb0 TIM4_IRQHandler
- 0x08006bb0 I2C1_EV_IRQHandler
- 0x08006bb0 DMA1_Stream6_IRQHandler
- 0x08006bb0 DMA1_Stream1_IRQHandler
- 0x08006bb0 UART4_IRQHandler
- 0x08006bb0 TIM3_IRQHandler
- 0x08006bb0 RCC_IRQHandler
- 0x08006bb0 TIM8_BRK_TIM12_IRQHandler
- 0x08006bb0 Default_Handler
- 0x08006bb0 EXTI15_10_IRQHandler
- 0x08006bb0 ADC_IRQHandler
- 0x08006bb0 DMA1_Stream7_IRQHandler
- 0x08006bb0 TIM7_IRQHandler
- 0x08006bb0 CAN2_TX_IRQHandler
- 0x08006bb0 TIM5_IRQHandler
- 0x08006bb0 DMA2_Stream7_IRQHandler
- 0x08006bb0 I2C3_EV_IRQHandler
- 0x08006bb0 EXTI9_5_IRQHandler
- 0x08006bb0 RTC_WKUP_IRQHandler
- 0x08006bb0 SPI2_IRQHandler
- 0x08006bb0 OTG_HS_EP1_IN_IRQHandler
- 0x08006bb0 MemManage_Handler
- 0x08006bb0 DMA1_Stream0_IRQHandler
- 0x08006bb0 CAN1_TX_IRQHandler
- 0x08006bb0 SVC_Handler
- 0x08006bb0 EXTI4_IRQHandler
- 0x08006bb0 FSMC_IRQHandler
- 0x08006bb0 OTG_HS_EP1_OUT_IRQHandler
- 0x08006bb0 WWDG_IRQHandler
- 0x08006bb0 TIM2_IRQHandler
- 0x08006bb0 OTG_FS_WKUP_IRQHandler
- 0x08006bb0 TIM1_TRG_COM_TIM11_IRQHandler
- 0x08006bb0 OTG_HS_IRQHandler
- 0x08006bb0 EXTI1_IRQHandler
- 0x08006bb0 USART2_IRQHandler
- 0x08006bb0 I2C2_ER_IRQHandler
- 0x08006bb0 DMA2_Stream1_IRQHandler
- 0x08006bb0 CAN1_SCE_IRQHandler
- 0x08006bb0 FLASH_IRQHandler
- 0x08006bb0 DMA2_Stream4_IRQHandler
- 0x08006bb0 BusFault_Handler
- 0x08006bb0 USART1_IRQHandler
- 0x08006bb0 SPI3_IRQHandler
- 0x08006bb0 DMA1_Stream4_IRQHandler
- 0x08006bb0 I2C1_ER_IRQHandler
- 0x08006bb0 DMA2_Stream6_IRQHandler
- 0x08006bb0 DMA1_Stream3_IRQHandler
- *fill* 0x08006bb2 0x2
- .text.malloc 0x08006bb4 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
- 0x08006bb4 malloc
- .text.free 0x08006bc4 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
- 0x08006bc4 free
- .text._free_r 0x08006bd4 0x88 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
- 0x08006bd4 _free_r
+ 0x0800b0ac 0x2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x0800b0ac RTC_Alarm_IRQHandler
+ 0x0800b0ac HASH_RNG_IRQHandler
+ 0x0800b0ac EXTI2_IRQHandler
+ 0x0800b0ac TIM8_CC_IRQHandler
+ 0x0800b0ac DebugMon_Handler
+ 0x0800b0ac TIM1_CC_IRQHandler
+ 0x0800b0ac DMA2_Stream5_IRQHandler
+ 0x0800b0ac HardFault_Handler
+ 0x0800b0ac DMA1_Stream5_IRQHandler
+ 0x0800b0ac PVD_IRQHandler
+ 0x0800b0ac SDIO_IRQHandler
+ 0x0800b0ac TAMP_STAMP_IRQHandler
+ 0x0800b0ac PendSV_Handler
+ 0x0800b0ac NMI_Handler
+ 0x0800b0ac CAN2_RX1_IRQHandler
+ 0x0800b0ac TIM8_TRG_COM_TIM14_IRQHandler
+ 0x0800b0ac TIM1_UP_TIM10_IRQHandler
+ 0x0800b0ac TIM8_UP_TIM13_IRQHandler
+ 0x0800b0ac I2C3_ER_IRQHandler
+ 0x0800b0ac EXTI0_IRQHandler
+ 0x0800b0ac I2C2_EV_IRQHandler
+ 0x0800b0ac DMA1_Stream2_IRQHandler
+ 0x0800b0ac CAN1_RX0_IRQHandler
+ 0x0800b0ac FPU_IRQHandler
+ 0x0800b0ac OTG_HS_WKUP_IRQHandler
+ 0x0800b0ac UsageFault_Handler
+ 0x0800b0ac CAN2_SCE_IRQHandler
+ 0x0800b0ac SPI1_IRQHandler
+ 0x0800b0ac TIM6_DAC_IRQHandler
+ 0x0800b0ac TIM1_BRK_TIM9_IRQHandler
+ 0x0800b0ac CAN2_RX0_IRQHandler
+ 0x0800b0ac USART6_IRQHandler
+ 0x0800b0ac USART3_IRQHandler
+ 0x0800b0ac CAN1_RX1_IRQHandler
+ 0x0800b0ac UART5_IRQHandler
+ 0x0800b0ac DMA2_Stream0_IRQHandler
+ 0x0800b0ac TIM4_IRQHandler
+ 0x0800b0ac I2C1_EV_IRQHandler
+ 0x0800b0ac DMA1_Stream6_IRQHandler
+ 0x0800b0ac DMA1_Stream1_IRQHandler
+ 0x0800b0ac UART4_IRQHandler
+ 0x0800b0ac TIM3_IRQHandler
+ 0x0800b0ac RCC_IRQHandler
+ 0x0800b0ac TIM8_BRK_TIM12_IRQHandler
+ 0x0800b0ac Default_Handler
+ 0x0800b0ac EXTI15_10_IRQHandler
+ 0x0800b0ac ADC_IRQHandler
+ 0x0800b0ac DMA1_Stream7_IRQHandler
+ 0x0800b0ac TIM7_IRQHandler
+ 0x0800b0ac CAN2_TX_IRQHandler
+ 0x0800b0ac TIM5_IRQHandler
+ 0x0800b0ac DMA2_Stream7_IRQHandler
+ 0x0800b0ac I2C3_EV_IRQHandler
+ 0x0800b0ac EXTI9_5_IRQHandler
+ 0x0800b0ac RTC_WKUP_IRQHandler
+ 0x0800b0ac SPI2_IRQHandler
+ 0x0800b0ac OTG_HS_EP1_IN_IRQHandler
+ 0x0800b0ac MemManage_Handler
+ 0x0800b0ac DMA1_Stream0_IRQHandler
+ 0x0800b0ac CAN1_TX_IRQHandler
+ 0x0800b0ac SVC_Handler
+ 0x0800b0ac EXTI4_IRQHandler
+ 0x0800b0ac FSMC_IRQHandler
+ 0x0800b0ac OTG_HS_EP1_OUT_IRQHandler
+ 0x0800b0ac WWDG_IRQHandler
+ 0x0800b0ac TIM2_IRQHandler
+ 0x0800b0ac OTG_FS_WKUP_IRQHandler
+ 0x0800b0ac TIM1_TRG_COM_TIM11_IRQHandler
+ 0x0800b0ac OTG_HS_IRQHandler
+ 0x0800b0ac EXTI1_IRQHandler
+ 0x0800b0ac USART2_IRQHandler
+ 0x0800b0ac I2C2_ER_IRQHandler
+ 0x0800b0ac DMA2_Stream1_IRQHandler
+ 0x0800b0ac CAN1_SCE_IRQHandler
+ 0x0800b0ac FLASH_IRQHandler
+ 0x0800b0ac DMA2_Stream4_IRQHandler
+ 0x0800b0ac BusFault_Handler
+ 0x0800b0ac USART1_IRQHandler
+ 0x0800b0ac SPI3_IRQHandler
+ 0x0800b0ac DMA1_Stream4_IRQHandler
+ 0x0800b0ac I2C1_ER_IRQHandler
+ 0x0800b0ac DMA2_Stream6_IRQHandler
+ 0x0800b0ac DMA1_Stream3_IRQHandler
+ *fill* 0x0800b0ae 0x2
+ .text.malloc 0x0800b0b0 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ 0x0800b0b0 malloc
+ .text.free 0x0800b0c0 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ 0x0800b0c0 free
+ .text._free_r 0x0800b0d0 0x88 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
+ 0x0800b0d0 _free_r
.text._malloc_r
- 0x08006c5c 0xac /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- 0x08006c5c _malloc_r
- .text._sbrk_r 0x08006d08 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
- 0x08006d08 _sbrk_r
- .text._sbrk 0x08006d28 0x1c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
- 0x08006d28 _sbrk
+ 0x0800b158 0xac /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x0800b158 _malloc_r
+ .text._sbrk_r 0x0800b204 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
+ 0x0800b204 _sbrk_r
+ .text._sbrk 0x0800b224 0x1c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+ 0x0800b224 _sbrk
*(.init)
*(.fini)
*(.rodata*)
- .rodata.str1.4
- 0x08006d44 0x54 Src/usbd_descriptors.o
.rodata.STORAGE_Inquirydata_FS
- 0x08006d98 0x24 Src/usbd_descriptors.o
- 0x08006d98 STORAGE_Inquirydata_FS
+ 0x0800b240 0x24 Src/usbd_descriptors.o
+ 0x0800b240 STORAGE_Inquirydata_FS
+ .rodata 0x0800b264 0x54 Src/usbd_descriptors.o
.rodata.MSC_Page00_Inquiry_Data
- 0x08006dbc 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x08006dbc MSC_Page00_Inquiry_Data
- .rodata.MSC_Mode_Sense10_data
- 0x08006dc4 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x08006dc4 MSC_Mode_Sense10_data
+ 0x0800b2b8 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x0800b2b8 MSC_Page00_Inquiry_Data
.rodata.MSC_Mode_Sense6_data
- 0x08006dcc 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x08006dcc MSC_Mode_Sense6_data
+ 0x0800b2c0 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x0800b2c0 MSC_Mode_Sense6_data
+ .rodata.MSC_Mode_Sense10_data
+ 0x0800b2c8 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x0800b2c8 MSC_Mode_Sense10_data
.rodata.APBAHBPrescTable
- 0x08006dd4 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x08006dd4 APBAHBPrescTable
+ 0x0800b2d0 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x0800b2d0 APBAHBPrescTable
.rodata.str1.1
- 0x08006de4 0x2 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
+ 0x0800b2e0 0x2 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
*(.eh_frame*)
- 0x08006de6 __etext = .
+ 0x0800b2e2 __etext = .
-.glue_7 0x08006de8 0x0
+.glue_7 0x0800b2e4 0x0
.glue_7 0x00000000 0x0 linker stubs
-.glue_7t 0x08006de8 0x0
+.glue_7t 0x0800b2e4 0x0
.glue_7t 0x00000000 0x0 linker stubs
-.vfp11_veneer 0x08006de8 0x0
+.vfp11_veneer 0x0800b2e4 0x0
.vfp11_veneer 0x00000000 0x0 linker stubs
-.v4_bx 0x08006de8 0x0
+.v4_bx 0x0800b2e4 0x0
.v4_bx 0x00000000 0x0 linker stubs
-.iplt 0x08006de8 0x0
+.iplt 0x0800b2e4 0x0
.iplt 0x00000000 0x0 Src/usbd_descriptors.o
-.rel.dyn 0x08006de8 0x0
+.rel.dyn 0x0800b2e4 0x0
.rel.iplt 0x00000000 0x0 Src/usbd_descriptors.o
-.data 0x20000000 0x144 load address 0x08006de6
+.data 0x20000000 0x144 load address 0x0800b2e2
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
.data.FS_Desc 0x20000000 0x1c Src/usbd_descriptors.o
0x20000000 FS_Desc
- .data.USBD_LangIDDesc
- 0x2000001c 0x4 Src/usbd_descriptors.o
- 0x2000001c USBD_LangIDDesc
.data.USBD_FS_DeviceDesc
- 0x20000020 0x14 Src/usbd_descriptors.o
- 0x20000020 USBD_FS_DeviceDesc
- .data.USBD_MSC_OtherSpeedCfgDesc
- 0x20000034 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000034 USBD_MSC_OtherSpeedCfgDesc
- .data.USBD_MSC_DeviceQualifierDesc
- 0x20000054 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000054 USBD_MSC_DeviceQualifierDesc
- .data.USBD_MSC_CfgHSDesc
- 0x20000060 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000060 USBD_MSC_CfgHSDesc
+ 0x2000001c 0x14 Src/usbd_descriptors.o
+ 0x2000001c USBD_FS_DeviceDesc
+ .data.USBD_LangIDDesc
+ 0x20000030 0x4 Src/usbd_descriptors.o
+ 0x20000030 USBD_LangIDDesc
.data.USBD_MSC
- 0x20000080 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x20000080 USBD_MSC
+ 0x20000034 0x3c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x20000034 USBD_MSC
+ .data.USBD_MSC_CfgHSDesc
+ 0x20000070 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x20000070 USBD_MSC_CfgHSDesc
.data.USBD_MSC_CfgFSDesc
- 0x200000bc 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x200000bc USBD_MSC_CfgFSDesc
+ 0x20000090 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x20000090 USBD_MSC_CfgFSDesc
+ .data.USBD_MSC_OtherSpeedCfgDesc
+ 0x200000b0 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x200000b0 USBD_MSC_OtherSpeedCfgDesc
+ .data.USBD_MSC_DeviceQualifierDesc
+ 0x200000d0 0xc Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x200000d0 USBD_MSC_DeviceQualifierDesc
.data.SystemCoreClock
0x200000dc 0x4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
0x200000dc SystemCoreClock
@@ -3762,77 +4041,104 @@ END GROUP
0x20000140 _impure_ptr
0x20000144 __data_end__ = .
-.igot.plt 0x20000144 0x0 load address 0x08006f2c
+.igot.plt 0x20000144 0x0 load address 0x0800b428
.igot.plt 0x00000000 0x0 Src/usbd_descriptors.o
-.bss 0x20000148 0xd58 load address 0x08006f30
- 0x20000148 . = ALIGN (0x4)
- 0x20000148 __bss_start__ = .
+.bss 0x20000144 0xd54 load address 0x0800b428
+ 0x20000144 . = ALIGN (0x4)
+ 0x20000144 __bss_start__ = .
*(.bss*)
- .bss.cfgidx.8045
- 0x20000148 0x1 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- *fill* 0x20000149 0x3
- .bss.uwTick 0x2000014c 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .bss.UpstreamState
+ 0x20000144 0x1 Src/upstream_statemachine.o
+ 0x20000144 UpstreamState
+ .bss.ConfiguredDeviceClass
+ 0x20000145 0x1 Src/upstream_statemachine.o
+ 0x20000145 ConfiguredDeviceClass
+ *fill* 0x20000146 0x2
+ .bss.NextTxPacket
+ 0x20000148 0x4 Src/upstream_spi.o
+ 0x20000148 NextTxPacket
+ .bss.UpstreamInterfaceState
+ 0x2000014c 0x1 Src/upstream_spi.o
+ 0x2000014c UpstreamInterfaceState
+ *fill* 0x2000014d 0x3
+ .bss.PendingFreePacketCallback
+ 0x20000150 0x4 Src/upstream_spi.o
+ 0x20000150 PendingFreePacketCallback
+ .bss.ReceivePacketCallback
+ 0x20000154 0x4 Src/upstream_spi.o
+ 0x20000154 ReceivePacketCallback
+ .bss.TxOkInterruptReceived
+ 0x20000158 0x1 Src/upstream_spi.o
+ 0x20000158 TxOkInterruptReceived
+ *fill* 0x20000159 0x1
+ .bss.FaultLedBlinkRate
+ 0x2000015a 0x2 Src/led.o
+ 0x2000015a FaultLedBlinkRate
+ .bss.FaultLedBlinkCounter
+ 0x2000015c 0x2 Src/led.o
+ 0x2000015c FaultLedBlinkCounter
+ .bss.FaultLedState
+ 0x2000015e 0x1 Src/led.o
+ 0x2000015e FaultLedState
+ .bss.cfgidx.8046
+ 0x2000015f 0x1 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .bss.uwTick 0x20000160 0x4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.bss.__malloc_sbrk_start
- 0x20000150 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- 0x20000150 __malloc_sbrk_start
+ 0x20000164 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x20000164 __malloc_sbrk_start
.bss.__malloc_free_list
- 0x20000154 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- 0x20000154 __malloc_free_list
+ 0x20000168 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x20000168 __malloc_free_list
.bss.heap_end.4079
- 0x20000158 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+ 0x2000016c 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
*(COMMON)
- COMMON 0x2000015c 0x200 Src/usbd_descriptors.o
- 0x2000015c USBD_StrDesc
- COMMON 0x2000035c 0x3b0 Src/usbd_config.o
- 0x2000035c hpcd_USB_OTG_FS
- COMMON 0x2000070c 0x224 Src/usb_device.o
- 0x2000070c hUsbDeviceFS
- COMMON 0x20000930 0xa0 Src/hal_msp.o
- 0x20000930 spiRxDmaHandle
- 0x20000980 spiTxDmaHandle
- COMMON 0x200009d0 0x488 Src/downstream_spi.o
- 0x200009d0 SentCommand
- 0x200009d1 DownstreamInterfaceState
- 0x200009d4 DownstreamPacket1
- 0x20000be0 ReceivePacketCallback
- 0x20000be4 DownstreamPacket0
- 0x20000df0 CurrentWorkingPacket
- 0x20000df4 SentCommandClass
- 0x20000df8 NextTxPacket
- 0x20000dfc hspi1
- 0x20000e54 PendingFreePacketCallback
- COMMON 0x20000e58 0x28 Src/downstream_interface_msc_mock.o
- 0x20000e58 ReadStreamPacket
- 0x20000e60 BlockStart
- 0x20000e68 ReadStreamBusy
- 0x20000e6c GetCapacityCallback
- 0x20000e70 BlockCount
- 0x20000e74 TestReadyCallback
- 0x20000e78 GetStreamDataCallback
- 0x20000e7c ByteCount
- COMMON 0x20000e80 0x14 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x20000e80 SCSI_ProcessCmd_hmsc
- 0x20000e84 SCSI_ProcessCmd_params
- 0x20000e88 SCSI_ProcessCmd_lun
- 0x20000e8c SCSI_ProcessCmd_callback
- 0x20000e90 SCSI_ProcessCmd_pdev
- COMMON 0x20000e94 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x20000e94 MSC_BOT_pdev
- 0x20000e98 MSC_BOT_hmsc
- COMMON 0x20000e9c 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
- 0x20000e9c errno
- 0x20000ea0 . = ALIGN (0x4)
- 0x20000ea0 __bss_end__ = .
+ COMMON 0x20000170 0x200 Src/usbd_descriptors.o
+ 0x20000170 USBD_StrDesc
+ COMMON 0x20000370 0x3b4 Src/usbd_config.o
+ 0x20000370 hpcd_USB_OTG_FS
+ COMMON 0x20000724 0x224 Src/usb_device.o
+ 0x20000724 hUsbDeviceFS
+ COMMON 0x20000948 0x478 Src/upstream_spi.o
+ 0x20000948 TemporaryIncomingPacketLength
+ 0x2000094c SentCommand
+ 0x20000950 UpstreamPacket1
+ 0x20000b58 CurrentWorkingPacket
+ 0x20000b5c UpstreamPacket0
+ 0x20000d64 SentCommandClass
+ 0x20000d68 Hspi1
+ COMMON 0x20000dc0 0x18 Src/upstream_msc.o
+ 0x20000dc0 ReadStreamPacket
+ 0x20000dc4 ReadStreamBusy
+ 0x20000dc8 GetCapacityCallback
+ 0x20000dcc TestReadyCallback
+ 0x20000dd0 GetStreamDataCallback
+ 0x20000dd4 ByteCount
+ COMMON 0x20000dd8 0xa0 Src/hal_msp.o
+ 0x20000dd8 spiRxDmaHandle
+ 0x20000e28 spiTxDmaHandle
+ COMMON 0x20000e78 0x14 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x20000e78 SCSI_ProcessCmd_hmsc
+ 0x20000e7c SCSI_ProcessCmd_params
+ 0x20000e80 SCSI_ProcessCmd_lun
+ 0x20000e84 SCSI_ProcessCmd_callback
+ 0x20000e88 SCSI_ProcessCmd_pdev
+ COMMON 0x20000e8c 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x20000e8c MSC_BOT_pdev
+ 0x20000e90 MSC_BOT_hmsc
+ COMMON 0x20000e94 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
+ 0x20000e94 errno
+ 0x20000e98 . = ALIGN (0x4)
+ 0x20000e98 __bss_end__ = .
-.heap 0x20000ea0 0x0
- 0x20000ea0 __HeapBase = .
- 0x20000ea0 __end__ = .
- 0x20000ea0 end = __end__
+.heap 0x20000e98 0x0
+ 0x20000e98 __HeapBase = .
+ 0x20000e98 __end__ = .
+ 0x20000e98 end = __end__
*(.heap*)
- 0x20000ea0 __HeapLimit = .
+ 0x20000e98 __HeapLimit = .
-.stack_dummy 0x20000ea0 0x0
+.stack_dummy 0x20000e98 0x0
*(.stack*)
0x2001c000 __StackTop = (ORIGIN (SRAM1) + 0x1c000)
0x2001c000 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
@@ -3855,86 +4161,67 @@ END GROUP
0x10000000 _eccmram = .
OUTPUT(Upstream.elf elf32-littlearm)
-.debug_info 0x00000000 0x1246a
- .debug_info 0x00000000 0x47e Src/usbd_descriptors.o
- .debug_info 0x0000047e 0x18a4 Src/usbd_config.o
- .debug_info 0x00001d22 0x5a1 Src/usb_device.o
- .debug_info 0x000022c3 0x6e5 Src/main.o
- .debug_info 0x000029a8 0x883 Src/interrupts.o
- .debug_info 0x0000322b 0xd1a Src/hal_msp.o
- .debug_info 0x00003f45 0xb4f Src/downstream_spi.o
- .debug_info 0x00004a94 0x712 Src/downstream_interface_msc_mock.o
- .debug_info 0x000051a6 0x7a2 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_info 0x00005948 0xe56 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_info 0x0000679e 0xced Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_info 0x0000748b 0x14b0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_info 0x0000893b 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_info 0x00008a57 0xe19 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_info 0x00009870 0xe05 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_info 0x0000a675 0x165c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_info 0x0000bcd1 0x1652 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_info 0x0000d323 0xf4e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_info 0x0000e271 0x542 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_info 0x0000e7b3 0x1580 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_info 0x0000fd33 0x6d1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_info 0x00010404 0x733 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_info 0x00010b37 0xca8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_info 0x000117df 0x747 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_info 0x00011f26 0x4a7 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_info 0x000123cd 0x9d Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-
-.debug_abbrev 0x00000000 0x32a2
- .debug_abbrev 0x00000000 0x15f Src/usbd_descriptors.o
- .debug_abbrev 0x0000015f 0x27e Src/usbd_config.o
- .debug_abbrev 0x000003dd 0x17c Src/usb_device.o
- .debug_abbrev 0x00000559 0x1c5 Src/main.o
- .debug_abbrev 0x0000071e 0x1b1 Src/interrupts.o
- .debug_abbrev 0x000008cf 0x1b2 Src/hal_msp.o
- .debug_abbrev 0x00000a81 0x2e5 Src/downstream_spi.o
- .debug_abbrev 0x00000d66 0x1fe Src/downstream_interface_msc_mock.o
- .debug_abbrev 0x00000f64 0x16d Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_abbrev 0x000010d1 0x281 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_abbrev 0x00001352 0x217 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_abbrev 0x00001569 0x2cb Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_abbrev 0x00001834 0x78 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_abbrev 0x000018ac 0x291 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_abbrev 0x00001b3d 0x213 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_abbrev 0x00001d50 0x247 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_abbrev 0x00001f97 0x261 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_abbrev 0x000021f8 0x2ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_abbrev 0x000024a6 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_abbrev 0x00002616 0x2b2 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_abbrev 0x000028c8 0x1c2 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_abbrev 0x00002a8a 0x201 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_abbrev 0x00002c8b 0x2aa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_abbrev 0x00002f35 0x257 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_abbrev 0x0000318c 0x104 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_abbrev 0x00003290 0x12 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+.debug_info 0x00000000 0xee67
+ .debug_info 0x00000000 0x3bd Src/usbd_descriptors.o
+ .debug_info 0x000003bd 0x12ff Src/usbd_config.o
+ .debug_info 0x000016bc 0x4de Src/usb_device.o
+ .debug_info 0x00001b9a 0x71b Src/upstream_statemachine.o
+ .debug_info 0x000022b5 0xa4a Src/upstream_spi.o
+ .debug_info 0x00002cff 0x507 Src/upstream_msc.o
+ .debug_info 0x00003206 0x54e Src/main.o
+ .debug_info 0x00003754 0x1fe Src/led.o
+ .debug_info 0x00003952 0x77c Src/interrupts.o
+ .debug_info 0x000040ce 0xaa7 Src/hal_msp.o
+ .debug_info 0x00004b75 0x673 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_info 0x000051e8 0x873 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_info 0x00005a5b 0x93c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_info 0x00006397 0xc44 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_info 0x00006fdb 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_info 0x000070f7 0xa8b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_info 0x00007b82 0xa41 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_info 0x000085c3 0x13d5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_info 0x00009998 0xf65 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_info 0x0000a8fd 0xd54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_info 0x0000b651 0x54b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_info 0x0000bb9c 0xe89 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_info 0x0000ca25 0x6c6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_info 0x0000d0eb 0x638 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_info 0x0000d723 0xb57 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_info 0x0000e27a 0x6ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_info 0x0000e928 0x4a2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_info 0x0000edca 0x9d Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_loc 0x00000000 0x7901
- .debug_loc 0x00000000 0x1c3 Src/usbd_descriptors.o
- .debug_loc 0x000001c3 0x6a7 Src/usbd_config.o
- .debug_loc 0x0000086a 0x4a Src/hal_msp.o
- .debug_loc 0x000008b4 0x1b8 Src/downstream_spi.o
- .debug_loc 0x00000a6c 0x36a Src/downstream_interface_msc_mock.o
- .debug_loc 0x00000dd6 0x204 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_loc 0x00000fda 0xb07 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_loc 0x00001ae1 0x63f Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_loc 0x00002120 0xb26 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_loc 0x00002c46 0x41d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_loc 0x00003063 0x382 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_loc 0x000033e5 0x1277 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_loc 0x0000465c 0x108c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_loc 0x000056e8 0x853 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_loc 0x00005f3b 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_loc 0x0000600b 0xa96 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_loc 0x00006aa1 0x33e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_loc 0x00006ddf 0x48c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_loc 0x0000726b 0x4b4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_loc 0x0000771f 0xab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_loc 0x000077ca 0x137 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+.debug_abbrev 0x00000000 0x2d6a
+ .debug_abbrev 0x00000000 0x144 Src/usbd_descriptors.o
+ .debug_abbrev 0x00000144 0x20e Src/usbd_config.o
+ .debug_abbrev 0x00000352 0x12e Src/usb_device.o
+ .debug_abbrev 0x00000480 0x1a5 Src/upstream_statemachine.o
+ .debug_abbrev 0x00000625 0x223 Src/upstream_spi.o
+ .debug_abbrev 0x00000848 0x164 Src/upstream_msc.o
+ .debug_abbrev 0x000009ac 0x138 Src/main.o
+ .debug_abbrev 0x00000ae4 0x106 Src/led.o
+ .debug_abbrev 0x00000bea 0x16d Src/interrupts.o
+ .debug_abbrev 0x00000d57 0x16d Src/hal_msp.o
+ .debug_abbrev 0x00000ec4 0x12e Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_abbrev 0x00000ff2 0x1ee Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_abbrev 0x000011e0 0x1be Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_abbrev 0x0000139e 0x26e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_abbrev 0x0000160c 0x78 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_abbrev 0x00001684 0x20b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_abbrev 0x0000188f 0x1c7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_abbrev 0x00001a56 0x216 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_abbrev 0x00001c6c 0x20d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_abbrev 0x00001e79 0x252 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_abbrev 0x000020cb 0x161 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_abbrev 0x0000222c 0x23b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_abbrev 0x00002467 0x1a4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_abbrev 0x0000260b 0x1c5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_abbrev 0x000027d0 0x282 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_abbrev 0x00002a52 0x202 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_abbrev 0x00002c54 0x104 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_abbrev 0x00002d58 0x12 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_aranges 0x00000000 0xd50
+.debug_aranges 0x00000000 0xe58
.debug_aranges
0x00000000 0x50 Src/usbd_descriptors.o
.debug_aranges
@@ -3942,80 +4229,86 @@ OUTPUT(Upstream.elf elf32-littlearm)
.debug_aranges
0x00000150 0x20 Src/usb_device.o
.debug_aranges
- 0x00000170 0x30 Src/main.o
+ 0x00000170 0x50 Src/upstream_statemachine.o
.debug_aranges
- 0x000001a0 0x40 Src/interrupts.o
+ 0x000001c0 0x90 Src/upstream_spi.o
.debug_aranges
- 0x000001e0 0x30 Src/hal_msp.o
+ 0x00000250 0x68 Src/upstream_msc.o
.debug_aranges
- 0x00000210 0x80 Src/downstream_spi.o
+ 0x000002b8 0x30 Src/main.o
.debug_aranges
- 0x00000290 0x68 Src/downstream_interface_msc_mock.o
+ 0x000002e8 0x30 Src/led.o
.debug_aranges
- 0x000002f8 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x00000318 0x40 Src/interrupts.o
.debug_aranges
- 0x00000348 0x88 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x00000358 0x30 Src/hal_msp.o
.debug_aranges
- 0x000003d0 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x00000388 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.debug_aranges
- 0x00000490 0xc0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x000003d8 0x88 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.debug_aranges
- 0x00000550 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x00000460 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.debug_aranges
- 0x00000568 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x00000520 0xc0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.debug_aranges
- 0x000005e8 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x000005e0 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.debug_aranges
- 0x00000650 0x180 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x000005f8 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.debug_aranges
- 0x000007d0 0x150 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000678 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.debug_aranges
- 0x00000920 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x000006e0 0x180 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.debug_aranges
- 0x000009a8 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x00000860 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.debug_aranges
- 0x000009d0 0x120 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x000009b8 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_aranges
- 0x00000af0 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000a40 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
.debug_aranges
- 0x00000b48 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000a68 0x120 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.debug_aranges
- 0x00000bb0 0x90 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x00000b88 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_aranges
- 0x00000c40 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x00000be0 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.debug_aranges
- 0x00000d00 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x00000c48 0x100 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_aranges
- 0x00000d28 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x00000d48 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_aranges
+ 0x00000e08 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_aranges
+ 0x00000e30 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_ranges 0x00000000 0xbb0
+.debug_ranges 0x00000000 0xc98
.debug_ranges 0x00000000 0x40 Src/usbd_descriptors.o
.debug_ranges 0x00000040 0xf0 Src/usbd_config.o
.debug_ranges 0x00000130 0x10 Src/usb_device.o
- .debug_ranges 0x00000140 0x20 Src/main.o
- .debug_ranges 0x00000160 0x30 Src/interrupts.o
- .debug_ranges 0x00000190 0x20 Src/hal_msp.o
- .debug_ranges 0x000001b0 0x70 Src/downstream_spi.o
- .debug_ranges 0x00000220 0x58 Src/downstream_interface_msc_mock.o
- .debug_ranges 0x00000278 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_ranges 0x000002b8 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_ranges 0x00000330 0xb0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_ranges 0x000003e0 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_ranges 0x00000490 0x70 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_ranges 0x00000500 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_ranges 0x00000558 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_ranges 0x000006c8 0x140 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_ranges 0x00000808 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_ranges 0x00000880 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_ranges 0x00000898 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_ranges 0x000009a8 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_ranges 0x000009f0 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_ranges 0x00000a48 0x80 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_ranges 0x00000ac8 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_ranges 0x00000b78 0x18 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_ranges 0x00000b90 0x20 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ .debug_ranges 0x00000140 0x40 Src/upstream_statemachine.o
+ .debug_ranges 0x00000180 0x80 Src/upstream_spi.o
+ .debug_ranges 0x00000200 0x58 Src/upstream_msc.o
+ .debug_ranges 0x00000258 0x20 Src/main.o
+ .debug_ranges 0x00000278 0x20 Src/led.o
+ .debug_ranges 0x00000298 0x30 Src/interrupts.o
+ .debug_ranges 0x000002c8 0x20 Src/hal_msp.o
+ .debug_ranges 0x000002e8 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_ranges 0x00000328 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_ranges 0x000003a0 0xb0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_ranges 0x00000450 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_ranges 0x00000500 0x70 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_ranges 0x00000570 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_ranges 0x000005c8 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_ranges 0x00000738 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_ranges 0x00000880 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_ranges 0x000008f8 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_ranges 0x00000910 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_ranges 0x00000a20 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_ranges 0x00000a68 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_ranges 0x00000ac0 0xf0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_ranges 0x00000bb0 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_ranges 0x00000c60 0x18 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_ranges 0x00000c78 0x20 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_macro 0x00000000 0x139c8
+.debug_macro 0x00000000 0x13f50
.debug_macro 0x00000000 0x379 Src/usbd_descriptors.o
.debug_macro 0x00000379 0x868 Src/usbd_descriptors.o
.debug_macro 0x00000be1 0x58 Src/usbd_descriptors.o
@@ -4078,131 +4371,143 @@ OUTPUT(Upstream.elf elf32-littlearm)
.debug_macro 0x0000fa78 0x6a Src/usbd_descriptors.o
.debug_macro 0x0000fae2 0x82 Src/usbd_descriptors.o
.debug_macro 0x0000fb64 0x160 Src/usbd_descriptors.o
- .debug_macro 0x0000fcc4 0x22 Src/usbd_descriptors.o
- .debug_macro 0x0000fce6 0x34 Src/usbd_descriptors.o
- .debug_macro 0x0000fd1a 0x316 Src/usbd_config.o
- .debug_macro 0x00010030 0x44 Src/usbd_config.o
- .debug_macro 0x00010074 0x64 Src/usbd_config.o
- .debug_macro 0x000100d8 0x1c Src/usbd_config.o
- .debug_macro 0x000100f4 0x353 Src/usb_device.o
- .debug_macro 0x00010447 0x303 Src/main.o
- .debug_macro 0x0001074a 0x9a Src/main.o
- .debug_macro 0x000107e4 0x308 Src/interrupts.o
- .debug_macro 0x00010aec 0x1b1 Src/hal_msp.o
- .debug_macro 0x00010c9d 0x302 Src/downstream_spi.o
- .debug_macro 0x00010f9f 0x1c Src/downstream_spi.o
- .debug_macro 0x00010fbb 0x30d Src/downstream_interface_msc_mock.o
- .debug_macro 0x000112c8 0x303 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_macro 0x000115cb 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_macro 0x000118d2 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_macro 0x00011bd9 0x377 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00011f50 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00011fcc 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_macro 0x00011fee 0x2f0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_macro 0x000122de 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_macro 0x000122fa 0x34d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_macro 0x00012647 0x34e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_macro 0x00012995 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_macro 0x00012b3b 0x1a5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_macro 0x00012ce0 0x1e1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_macro 0x00012ec1 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_macro 0x00013060 0x1ab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_macro 0x0001320b 0x1d7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_macro 0x000133e2 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_macro 0x00013588 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_macro 0x00013727 0x1ed Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_macro 0x00013914 0xb4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_macro 0x0000fcc4 0x2e Src/usbd_descriptors.o
+ .debug_macro 0x0000fcf2 0x34 Src/usbd_descriptors.o
+ .debug_macro 0x0000fd26 0x316 Src/usbd_config.o
+ .debug_macro 0x0001003c 0x44 Src/usbd_config.o
+ .debug_macro 0x00010080 0x64 Src/usbd_config.o
+ .debug_macro 0x000100e4 0x1c Src/usbd_config.o
+ .debug_macro 0x00010100 0x353 Src/usb_device.o
+ .debug_macro 0x00010453 0x373 Src/upstream_statemachine.o
+ .debug_macro 0x000107c6 0x16 Src/upstream_statemachine.o
+ .debug_macro 0x000107dc 0x1c Src/upstream_statemachine.o
+ .debug_macro 0x000107f8 0x31b Src/upstream_spi.o
+ .debug_macro 0x00010b13 0x1c Src/upstream_spi.o
+ .debug_macro 0x00010b2f 0x8e Src/upstream_spi.o
+ .debug_macro 0x00010bbd 0x31c Src/upstream_msc.o
+ .debug_macro 0x00010ed9 0x317 Src/main.o
+ .debug_macro 0x000111f0 0x1b7 Src/led.o
+ .debug_macro 0x000113a7 0x30b Src/interrupts.o
+ .debug_macro 0x000116b2 0x1b1 Src/hal_msp.o
+ .debug_macro 0x00011863 0x303 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_macro 0x00011b66 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_macro 0x00011e6d 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_macro 0x00012174 0x36f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x000124e3 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x0001255f 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_macro 0x00012581 0x2f0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_macro 0x00012871 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_macro 0x0001288d 0x34d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_macro 0x00012bda 0x34a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_macro 0x00012f24 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_macro 0x000130c3 0x1a5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_macro 0x00013268 0x1e1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_macro 0x00013449 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_macro 0x000135e8 0x1ab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_macro 0x00013793 0x1d7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_macro 0x0001396a 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_macro 0x00013b10 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_macro 0x00013caf 0x1ed Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_macro 0x00013e9c 0xb4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
-.debug_line 0x00000000 0xeaa7
- .debug_line 0x00000000 0x7e9 Src/usbd_descriptors.o
- .debug_line 0x000007e9 0x8e2 Src/usbd_config.o
- .debug_line 0x000010cb 0x787 Src/usb_device.o
- .debug_line 0x00001852 0x725 Src/main.o
- .debug_line 0x00001f77 0x712 Src/interrupts.o
- .debug_line 0x00002689 0x5ae Src/hal_msp.o
- .debug_line 0x00002c37 0x8b1 Src/downstream_spi.o
- .debug_line 0x000034e8 0x7e7 Src/downstream_interface_msc_mock.o
- .debug_line 0x00003ccf 0x762 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_line 0x00004431 0x8b0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_line 0x00004ce1 0x8c5 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_line 0x000055a6 0xa64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_line 0x0000600a 0x720 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- .debug_line 0x0000672a 0x8c2 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_line 0x00006fec 0x8a6 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_line 0x00007892 0xaea Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_line 0x0000837c 0xd60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_line 0x000090dc 0x87f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_line 0x0000995b 0x588 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_line 0x00009ee3 0xa27 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_line 0x0000a90a 0x69b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_line 0x0000afa5 0x299d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_line 0x0000d942 0x6da Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_line 0x0000e01c 0x6e4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_line 0x0000e700 0x2fa Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_line 0x0000e9fa 0xad Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+.debug_line 0x00000000 0x11c78
+ .debug_line 0x00000000 0x7ee Src/usbd_descriptors.o
+ .debug_line 0x000007ee 0x904 Src/usbd_config.o
+ .debug_line 0x000010f2 0x784 Src/usb_device.o
+ .debug_line 0x00001876 0x8f0 Src/upstream_statemachine.o
+ .debug_line 0x00002166 0x9a5 Src/upstream_spi.o
+ .debug_line 0x00002b0b 0x832 Src/upstream_msc.o
+ .debug_line 0x0000333d 0x732 Src/main.o
+ .debug_line 0x00003a6f 0x579 Src/led.o
+ .debug_line 0x00003fe8 0x717 Src/interrupts.o
+ .debug_line 0x000046ff 0x5b0 Src/hal_msp.o
+ .debug_line 0x00004caf 0x768 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_line 0x00005417 0x919 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_line 0x00005d30 0x8e0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_line 0x00006610 0xa8f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_line 0x0000709f 0x720 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ .debug_line 0x000077bf 0x8e7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_line 0x000080a6 0x8b7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_line 0x0000895d 0xb86 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_line 0x000094e3 0xd52 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_line 0x0000a235 0x855 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_line 0x0000aa8a 0x58c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_line 0x0000b016 0xa4f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_line 0x0000ba65 0x742 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_line 0x0000c1a7 0x481d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_line 0x000109c4 0x80f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_line 0x000111d3 0x6fa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_line 0x000118cd 0x2fe Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_line 0x00011bcb 0xad Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
-.debug_str 0x00000000 0x68996
- .debug_str 0x00000000 0x641be Src/usbd_descriptors.o
- 0x644d6 (size before relaxing)
- .debug_str 0x000641be 0x106c Src/usbd_config.o
- 0x64b2a (size before relaxing)
- .debug_str 0x0006522a 0x69 Src/usb_device.o
+.debug_str 0x00000000 0x68d9c
+ .debug_str 0x00000000 0x64290 Src/usbd_descriptors.o
0x645a8 (size before relaxing)
- .debug_str 0x00065293 0x52c Src/main.o
- 0x640bf (size before relaxing)
- .debug_str 0x000657bf 0x32b Src/interrupts.o
- 0x6442d (size before relaxing)
- .debug_str 0x00065aea 0x1f9 Src/hal_msp.o
- 0x60fa7 (size before relaxing)
- .debug_str 0x00065ce3 0x4ad Src/downstream_spi.o
- 0x64737 (size before relaxing)
- .debug_str 0x00066190 0x3c4 Src/downstream_interface_msc_mock.o
- 0x63f73 (size before relaxing)
- .debug_str 0x00066554 0xc9 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- 0x63d8f (size before relaxing)
- .debug_str 0x0006661d 0x14c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- 0x63e62 (size before relaxing)
- .debug_str 0x00066769 0x7b Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- 0x63f1e (size before relaxing)
- .debug_str 0x000667e4 0x50f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- 0x64dc3 (size before relaxing)
- .debug_str 0x00066cf3 0x49 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
- 0x6395a (size before relaxing)
- .debug_str 0x00066d3c 0x14b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- 0x64921 (size before relaxing)
- .debug_str 0x00066e87 0x17f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- 0x64a14 (size before relaxing)
- .debug_str 0x00067006 0x744 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- 0x609c5 (size before relaxing)
- .debug_str 0x0006774a 0x348 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- 0x6089c (size before relaxing)
- .debug_str 0x00067a92 0x32a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- 0x60677 (size before relaxing)
- .debug_str 0x00067dbc 0x4a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- 0x6039b (size before relaxing)
- .debug_str 0x00067e06 0x101 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- 0x60a7c (size before relaxing)
- .debug_str 0x00067f07 0x240 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- 0x6042e (size before relaxing)
- .debug_str 0x00068147 0x127 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- 0x6045d (size before relaxing)
- .debug_str 0x0006826e 0x2c0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- 0x60901 (size before relaxing)
- .debug_str 0x0006852e 0x3df Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- 0x606c2 (size before relaxing)
- .debug_str 0x0006890d 0x89 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- 0x39fc1 (size before relaxing)
+ .debug_str 0x00064290 0xe29 Src/usbd_config.o
+ 0x648b6 (size before relaxing)
+ .debug_str 0x000650b9 0x41 Src/usb_device.o
+ 0x64629 (size before relaxing)
+ .debug_str 0x000650fa 0x485 Src/upstream_statemachine.o
+ 0x64ab0 (size before relaxing)
+ .debug_str 0x0006557f 0xb3d Src/upstream_spi.o
+ 0x64915 (size before relaxing)
+ .debug_str 0x000660bc 0x2e0 Src/upstream_msc.o
+ 0x64021 (size before relaxing)
+ .debug_str 0x0006639c 0x140 Src/main.o
+ 0x63f75 (size before relaxing)
+ .debug_str 0x000664dc 0x7c Src/led.o
+ 0x603ff (size before relaxing)
+ .debug_str 0x00066558 0xb2 Src/interrupts.o
+ 0x6443d (size before relaxing)
+ .debug_str 0x0006660a 0x3f Src/hal_msp.o
+ 0x60e44 (size before relaxing)
+ .debug_str 0x00066649 0xc9 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x63d52 (size before relaxing)
+ .debug_str 0x00066712 0x133 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x63dca (size before relaxing)
+ .debug_str 0x00066845 0x19c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x63e31 (size before relaxing)
+ .debug_str 0x000669e1 0x50a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x64c71 (size before relaxing)
+ .debug_str 0x00066eeb 0x49 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x6395b (size before relaxing)
+ .debug_str 0x00066f34 0x15b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x64931 (size before relaxing)
+ .debug_str 0x0006708f 0x17f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x64a01 (size before relaxing)
+ .debug_str 0x0006720e 0x73e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x609c1 (size before relaxing)
+ .debug_str 0x0006794c 0x364 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x6088c (size before relaxing)
+ .debug_str 0x00067cb0 0x343 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x60651 (size before relaxing)
+ .debug_str 0x00067ff3 0x4a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x603a7 (size before relaxing)
+ .debug_str 0x0006803d 0x1f0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x60857 (size before relaxing)
+ .debug_str 0x0006822d 0x25e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x6042f (size before relaxing)
+ .debug_str 0x0006848b 0x175 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x60452 (size before relaxing)
+ .debug_str 0x00068600 0x306 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x60902 (size before relaxing)
+ .debug_str 0x00068906 0x40d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x6067f (size before relaxing)
+ .debug_str 0x00068d13 0x89 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x39fc2 (size before relaxing)
.comment 0x00000000 0x70
.comment 0x00000000 0x70 Src/usbd_descriptors.o
0x71 (size before relaxing)
.comment 0x00000000 0x71 Src/usbd_config.o
.comment 0x00000000 0x71 Src/usb_device.o
+ .comment 0x00000000 0x71 Src/upstream_statemachine.o
+ .comment 0x00000000 0x71 Src/upstream_spi.o
+ .comment 0x00000000 0x71 Src/upstream_msc.o
.comment 0x00000000 0x71 Src/main.o
+ .comment 0x00000000 0x71 Src/led.o
.comment 0x00000000 0x71 Src/interrupts.o
.comment 0x00000000 0x71 Src/hal_msp.o
- .comment 0x00000000 0x71 Src/downstream_spi.o
- .comment 0x00000000 0x71 Src/downstream_interface_msc_mock.o
.comment 0x00000000 0x71 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.comment 0x00000000 0x71 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.comment 0x00000000 0x71 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
@@ -4230,94 +4535,100 @@ OUTPUT(Upstream.elf elf32-littlearm)
.ARM.attributes
0x00000066 0x33 Src/usb_device.o
.ARM.attributes
- 0x00000099 0x33 Src/main.o
+ 0x00000099 0x33 Src/upstream_statemachine.o
+ .ARM.attributes
+ 0x000000cc 0x33 Src/upstream_spi.o
+ .ARM.attributes
+ 0x000000ff 0x33 Src/upstream_msc.o
.ARM.attributes
- 0x000000cc 0x33 Src/interrupts.o
+ 0x00000132 0x33 Src/main.o
.ARM.attributes
- 0x000000ff 0x33 Src/hal_msp.o
+ 0x00000165 0x33 Src/led.o
.ARM.attributes
- 0x00000132 0x33 Src/downstream_spi.o
+ 0x00000198 0x33 Src/interrupts.o
.ARM.attributes
- 0x00000165 0x33 Src/downstream_interface_msc_mock.o
+ 0x000001cb 0x33 Src/hal_msp.o
.ARM.attributes
- 0x00000198 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ 0x000001fe 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
.ARM.attributes
- 0x000001cb 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ 0x00000231 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
.ARM.attributes
- 0x000001fe 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ 0x00000264 0x33 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
.ARM.attributes
- 0x00000231 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ 0x00000297 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
.ARM.attributes
- 0x00000264 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
+ 0x000002ca 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o
.ARM.attributes
- 0x00000297 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ 0x000002fd 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
.ARM.attributes
- 0x000002ca 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ 0x00000330 0x33 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
.ARM.attributes
- 0x000002fd 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ 0x00000363 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
.ARM.attributes
- 0x00000330 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ 0x00000396 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
.ARM.attributes
- 0x00000363 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ 0x000003c9 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.ARM.attributes
- 0x00000396 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ 0x000003fc 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
.ARM.attributes
- 0x000003c9 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ 0x0000042f 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
.ARM.attributes
- 0x000003fc 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ 0x00000462 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.ARM.attributes
- 0x0000042f 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ 0x00000495 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
.ARM.attributes
- 0x00000462 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ 0x000004c8 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.ARM.attributes
- 0x00000495 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ 0x000004fb 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.ARM.attributes
- 0x000004c8 0x33 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ 0x0000052e 0x33 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
.ARM.attributes
- 0x000004fb 0x21 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
+ 0x00000561 0x21 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o
.ARM.attributes
- 0x0000051c 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ 0x00000582 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
.ARM.attributes
- 0x00000549 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
+ 0x000005af 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
.ARM.attributes
- 0x00000576 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ 0x000005dc 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
.ARM.attributes
- 0x000005a3 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
+ 0x00000609 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
.ARM.attributes
- 0x000005d0 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
+ 0x00000636 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o)
.ARM.attributes
- 0x000005fd 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
+ 0x00000663 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
.ARM.attributes
- 0x0000062a 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+ 0x00000690 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
-.debug_frame 0x00000000 0x228c
- .debug_frame 0x00000000 0xa8 Src/usbd_descriptors.o
- .debug_frame 0x000000a8 0x2d4 Src/usbd_config.o
- .debug_frame 0x0000037c 0x28 Src/usb_device.o
- .debug_frame 0x000003a4 0x6c Src/main.o
- .debug_frame 0x00000410 0x88 Src/interrupts.o
- .debug_frame 0x00000498 0x78 Src/hal_msp.o
- .debug_frame 0x00000510 0x138 Src/downstream_spi.o
- .debug_frame 0x00000648 0x118 Src/downstream_interface_msc_mock.o
- .debug_frame 0x00000760 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
- .debug_frame 0x00000820 0x178 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
- .debug_frame 0x00000998 0x1dc Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
- .debug_frame 0x00000b74 0x21c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
- .debug_frame 0x00000d90 0x158 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
- .debug_frame 0x00000ee8 0xe8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
- .debug_frame 0x00000fd0 0x47c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
- .debug_frame 0x0000144c 0x3d8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
- .debug_frame 0x00001824 0x13c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
- .debug_frame 0x00001960 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
- .debug_frame 0x0000199c 0x310 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
- .debug_frame 0x00001cac 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
- .debug_frame 0x00001d6c 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
- .debug_frame 0x00001e7c 0x128 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
- .debug_frame 0x00001fa4 0x188 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
- .debug_frame 0x0000212c 0x30 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
- .debug_frame 0x0000215c 0x30 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
- .debug_frame 0x0000218c 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
- .debug_frame 0x000021b8 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
- .debug_frame 0x000021e4 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
- .debug_frame 0x00002210 0x5c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
- .debug_frame 0x0000226c 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
+.debug_frame 0x00000000 0x383c
+ .debug_frame 0x00000000 0x114 Src/usbd_descriptors.o
+ .debug_frame 0x00000114 0x428 Src/usbd_config.o
+ .debug_frame 0x0000053c 0x2c Src/usb_device.o
+ .debug_frame 0x00000568 0xf4 Src/upstream_statemachine.o
+ .debug_frame 0x0000065c 0x1fc Src/upstream_spi.o
+ .debug_frame 0x00000858 0x178 Src/upstream_msc.o
+ .debug_frame 0x000009d0 0x74 Src/main.o
+ .debug_frame 0x00000a44 0x74 Src/led.o
+ .debug_frame 0x00000ab8 0x9c Src/interrupts.o
+ .debug_frame 0x00000b54 0x74 Src/hal_msp.o
+ .debug_frame 0x00000bc8 0x10c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+ .debug_frame 0x00000cd4 0x210 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
+ .debug_frame 0x00000ee4 0x324 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
+ .debug_frame 0x00001208 0x2e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o
+ .debug_frame 0x000014f0 0x1e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o
+ .debug_frame 0x000016d8 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o
+ .debug_frame 0x00001860 0x718 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+ .debug_frame 0x00001f78 0x604 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o
+ .debug_frame 0x0000257c 0x204 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
+ .debug_frame 0x00002780 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o
+ .debug_frame 0x000027e0 0x508 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o
+ .debug_frame 0x00002ce8 0x14c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
+ .debug_frame 0x00002e34 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o
+ .debug_frame 0x00002fc8 0x42c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
+ .debug_frame 0x000033f4 0x2c0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
+ .debug_frame 0x000036b4 0x58 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o
+ .debug_frame 0x0000370c 0x30 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o)
+ .debug_frame 0x0000373c 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o)
+ .debug_frame 0x00003768 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o)
+ .debug_frame 0x00003794 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o)
+ .debug_frame 0x000037c0 0x5c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o)
+ .debug_frame 0x0000381c 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o)
diff --git a/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c b/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
index b8ee9e0..60ee967 100644
--- a/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
+++ b/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
@@ -2066,14 +2066,14 @@ static void SPI_DMAEndTransmitReceive(SPI_HandleTypeDef *hspi)
if(hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
{
/* Check if CRC is done on going (RXNE flag set) */
- if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
- {
+// if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, SET, SPI_TIMEOUT_VALUE) == HAL_OK)
+// {
/* Wait until RXNE flag is set to send data */
if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_RXNE, RESET, SPI_TIMEOUT_VALUE) != HAL_OK)
{
hspi->ErrorCode |= HAL_SPI_ERROR_FLAG;
}
- }
+// }
/* Read CRC */
tmpreg = hspi->Instance->DR;
UNUSED(tmpreg);
diff --git a/Upstream/Inc/upstream_msc.h b/Upstream/Inc/upstream_msc.h
index 94597fa..3ebaa76 100644
--- a/Upstream/Inc/upstream_msc.h
+++ b/Upstream/Inc/upstream_msc.h
@@ -14,7 +14,7 @@
typedef void (*UpstreamMSCCallbackTypeDef)(HAL_StatusTypeDef result);
typedef void (*UpstreamMSCCallbackPacketTypeDef)(UpstreamPacketTypeDef* upstreamPacket,
- uint16_t dataLength);
+ uint16_t dataLength8);
typedef void (*UpstreamMSCCallbackUintPacketTypeDef)(UpstreamPacketTypeDef* upstreamPacket,
uint32_t result_uint1,
uint32_t result_uint2);
@@ -31,7 +31,7 @@ HAL_StatusTypeDef Upstream_MSC_BeginWrite(UpstreamMSCCallbackTypeDef callback,
uint64_t readBlockStart,
uint32_t readBlockCount);
HAL_StatusTypeDef Upstream_MSC_PutStreamDataPacket(UpstreamPacketTypeDef* packetToSend,
- uint32_t dataLength);
+ uint32_t dataLength8);
diff --git a/Upstream/Inc/upstream_spi.h b/Upstream/Inc/upstream_spi.h
index 22241c7..6959ef5 100644
--- a/Upstream/Inc/upstream_spi.h
+++ b/Upstream/Inc/upstream_spi.h
@@ -12,9 +12,13 @@
#include "usbd_config.h"
-#define UPSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
-#define UPSTREAM_PACKET_LEN (UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET)
-#define UPSTREAM_PACKET_LEN_MIN (UPSTREAM_PACKET_HEADER_LEN)
+#define UPSTREAM_PACKET_HEADER_LEN (2) //Min length = CommandClass & Command bytes
+#define UPSTREAM_PACKET_LEN (UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET)
+#define UPSTREAM_PACKET_LEN_MIN (UPSTREAM_PACKET_HEADER_LEN)
+
+#define UPSTREAM_PACKET_HEADER_LEN_16 (UPSTREAM_PACKET_HEADER_LEN / 2)
+#define UPSTREAM_PACKET_LEN_16 (UPSTREAM_PACKET_LEN / 2)
+#define UPSTREAM_PACKET_LEN_MIN_16 (UPSTREAM_PACKET_LEN_MIN / 2)
#define UPSTREAM_SPI_FREAKOUT \
@@ -54,11 +58,10 @@ PacketBusyTypeDef;
typedef struct
{
PacketBusyTypeDef Busy; //Everything after Busy should be word-aligned
- uint16_t Length __ALIGN_END; //Packet length includes CommandClass, Command, and Data
+ uint16_t Length16 __ALIGN_END; //Packet length includes CommandClass, Command, and Data
uint8_t CommandClass;
uint8_t Command;
uint8_t Data[MSC_MEDIA_PACKET]; //Should (must?) be word-aligned, for USB copy routine
- uint8_t RxCrc;
}
UpstreamPacketTypeDef;
diff --git a/Upstream/Inc/upstream_statemachine.h b/Upstream/Inc/upstream_statemachine.h
index 53c64fe..33066b3 100644
--- a/Upstream/Inc/upstream_statemachine.h
+++ b/Upstream/Inc/upstream_statemachine.h
@@ -26,6 +26,7 @@ typedef enum
do { \
LED_Fault_SetBlinkRate(LED_FAST_BLINK_RATE); \
Upstream_StateMachine_SetErrorState(); \
+ while (1); \
} while (0);
diff --git a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
index 3ed5b07..d89b628 100755
--- a/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
+++ b/Upstream/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
@@ -285,6 +285,7 @@ static void SCSI_Inquiry(void)
}
else
{
+ //Standard INQUIRY data
//Return the same info for any LUN requested
pPage = (uint8_t *)&STORAGE_Inquirydata_FS;
len = pPage[4] + 5;
@@ -589,9 +590,9 @@ static void SCSI_Read10(void)
}
if (Upstream_MSC_BeginRead(SCSI_Read10BeginCallback,
- SCSI_ProcessCmd_hmsc->scsi_blk_addr,
- SCSI_ProcessCmd_hmsc->scsi_blk_len,
- SCSI_ProcessCmd_hmsc->cbw.dDataLength) != HAL_OK)
+ SCSI_ProcessCmd_hmsc->scsi_blk_addr,
+ SCSI_ProcessCmd_hmsc->scsi_blk_len,
+ SCSI_ProcessCmd_hmsc->cbw.dDataLength) != HAL_OK)
{
SCSI_Read10BeginCallback(HAL_ERROR);
}
diff --git a/Upstream/Src/hal_msp.c b/Upstream/Src/hal_msp.c
index ec75a86..b4e3024 100755
--- a/Upstream/Src/hal_msp.c
+++ b/Upstream/Src/hal_msp.c
@@ -74,7 +74,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
@@ -82,6 +82,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
SPI1_NSS_DEASSERT;
GPIO_InitStruct.Pin = SPI1_NSS_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(SPI1_NSS_PORT, &GPIO_InitStruct);
//Configure downstream request pin and interrupt
@@ -100,8 +101,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
spiTxDmaHandle.Init.Direction = DMA_MEMORY_TO_PERIPH;
spiTxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
spiTxDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- spiTxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- spiTxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ spiTxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE;
+ spiTxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE;
spiTxDmaHandle.Init.Mode = DMA_NORMAL;
spiTxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
spiTxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
@@ -117,8 +118,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
spiRxDmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
spiRxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
spiRxDmaHandle.Init.MemInc = DMA_MINC_ENABLE;
- spiRxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- spiRxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+ spiRxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE;
+ spiRxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE;
spiRxDmaHandle.Init.Mode = DMA_NORMAL;
spiRxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM;
spiRxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
diff --git a/Upstream/Src/interrupts.c b/Upstream/Src/interrupts.c
index 5ee1148..f287490 100755
--- a/Upstream/Src/interrupts.c
+++ b/Upstream/Src/interrupts.c
@@ -88,7 +88,7 @@ void DMA2_Stream3_IRQHandler(void)
void EXTI3_IRQHandler(void)
{
//SPI_DMA_ACTIVE_ON;
- __HAL_GPIO_EXTI_CLEAR_IT(3);
+ __HAL_GPIO_EXTI_CLEAR_IT(DOWNSTREAM_TX_OK_PIN);
Upstream_TxOkInterrupt();
//SPI_DMA_ACTIVE_OFF;
}
diff --git a/Upstream/Src/upstream_msc.c b/Upstream/Src/upstream_msc.c
index a2ecb0f..1c7d414 100644
--- a/Upstream/Src/upstream_msc.c
+++ b/Upstream/Src/upstream_msc.c
@@ -45,7 +45,7 @@ HAL_StatusTypeDef Upstream_MSC_TestReady(UpstreamMSCCallbackTypeDef callback)
return HAL_ERROR;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN;
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
freePacket->Command = COMMAND_MSC_TEST_UNIT_READY;
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
@@ -70,7 +70,7 @@ void Upstream_MSC_TestReadyReplyCallback(UpstreamPacketTypeDef* replyPacket)
return;
}
- if ((replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 1)) ||
+ if ((replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + 1)) ||
(replyPacket->Data[0] != HAL_OK))
{
Upstream_ReleasePacket(replyPacket);
@@ -100,7 +100,7 @@ HAL_StatusTypeDef Upstream_MSC_GetCapacity(UpstreamMSCCallbackUintPacketTypeDef
return HAL_ERROR;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN;
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
freePacket->Command = COMMAND_MSC_GET_CAPACITY;
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
@@ -128,7 +128,7 @@ void Upstream_MSC_GetCapacityReplyCallback(UpstreamPacketTypeDef* replyPacket)
return;
}
- if (replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 8))
+ if (replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + (8 / 2)))
{
GetCapacityCallback(NULL, 0, 0);
return;
@@ -164,7 +164,7 @@ HAL_StatusTypeDef Upstream_MSC_BeginRead(UpstreamMSCCallbackTypeDef callback,
return HAL_ERROR;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN + (4 * 3);
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2);
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
freePacket->Command = COMMAND_MSC_BEGIN_READ;
*(uint64_t*)&(freePacket->Data[0]) = readBlockStart;
@@ -206,7 +206,7 @@ HAL_StatusTypeDef Upstream_MSC_GetStreamDataPacket(UpstreamMSCCallbackPacketType
void Upstream_MSC_GetStreamDataPacketCallback(UpstreamPacketTypeDef* replyPacket)
{
- uint16_t dataLength;
+ uint16_t dataLength8;
ReadStreamBusy = 0;
@@ -227,21 +227,21 @@ void Upstream_MSC_GetStreamDataPacketCallback(UpstreamPacketTypeDef* replyPacket
return;
}
- dataLength = replyPacket->Length - UPSTREAM_PACKET_HEADER_LEN;
+ dataLength8 = (replyPacket->Length16 - UPSTREAM_PACKET_HEADER_LEN_16) * 2;
if (((replyPacket->CommandClass & COMMAND_CLASS_DATA_FLAG) == 0) || //Any 'command' reply (as opposed to 'data' reply) is an automatic fail here
- (replyPacket->Length <= UPSTREAM_PACKET_HEADER_LEN) || //Should be at least one data byte in the reply.
- (dataLength > ByteCount)) //No more data than expected transfer length
+ (replyPacket->Length16 <= UPSTREAM_PACKET_HEADER_LEN_16) || //Should be at least one data byte in the reply.
+ (dataLength8 > ByteCount)) //No more data than expected transfer length
{
GetStreamDataCallback(NULL, 0);
return;
}
- ByteCount -= dataLength;
- GetStreamDataCallback(replyPacket, dataLength); //usb_msc_scsi will use this packet, so don't release now
+ ByteCount -= dataLength8;
+ GetStreamDataCallback(replyPacket, dataLength8); //usb_msc_scsi will use this packet, so don't release now
if (ByteCount > 0)
{
- Upstream_MSC_GetStreamDataPacket(NULL); //Try to get the next packet now, before USB asks for it
+ Upstream_MSC_GetStreamDataPacket(NULL); //Try to get the next packet now, before USB asks for it
}
}
@@ -265,7 +265,7 @@ HAL_StatusTypeDef Upstream_MSC_BeginWrite(UpstreamMSCCallbackTypeDef callback,
return HAL_ERROR;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN + (4 * 3);
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16 + ((4 * 3) / 2);
freePacket->CommandClass = COMMAND_CLASS_MASS_STORAGE;
freePacket->Command = COMMAND_MSC_BEGIN_WRITE;
*(uint64_t*)&(freePacket->Data[0]) = readBlockStart;
@@ -295,7 +295,7 @@ void Upstream_MSC_BeginWriteReplyCallback(UpstreamPacketTypeDef* replyPacket)
return;
}
- if ((replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 1)) ||
+ if ((replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + 1)) ||
((replyPacket->Data[0] != HAL_OK) && (replyPacket->Data[0] != HAL_BUSY)))
{
Upstream_ReleasePacket(replyPacket);
@@ -311,14 +311,19 @@ void Upstream_MSC_BeginWriteReplyCallback(UpstreamPacketTypeDef* replyPacket)
HAL_StatusTypeDef Upstream_MSC_PutStreamDataPacket(UpstreamPacketTypeDef* packetToSend,
- uint32_t dataLength)
+ uint32_t dataLength8)
{
if (Upstream_StateMachine_CheckClassOperationOk() != HAL_OK)
{
return HAL_ERROR;
}
- packetToSend->Length = dataLength + UPSTREAM_PACKET_HEADER_LEN;
+ if ((dataLength8 % 2) != 0)
+ {
+ return HAL_ERROR;
+ }
+
+ packetToSend->Length16 = (dataLength8 / 2) + UPSTREAM_PACKET_HEADER_LEN_16;
packetToSend->CommandClass = COMMAND_CLASS_MASS_STORAGE | COMMAND_CLASS_DATA_FLAG;
packetToSend->Command = COMMAND_MSC_BEGIN_WRITE;
return Upstream_TransmitPacket(packetToSend);
diff --git a/Upstream/Src/upstream_spi.c b/Upstream/Src/upstream_spi.c
index f7ecee6..d77aba7 100644
--- a/Upstream/Src/upstream_spi.c
+++ b/Upstream/Src/upstream_spi.c
@@ -24,6 +24,7 @@ InterfaceStateTypeDef UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
FreePacketCallbackTypeDef PendingFreePacketCallback = NULL; //Indicates someone is waiting for a packet buffer to become available
SpiPacketReceivedCallbackTypeDef ReceivePacketCallback = NULL; //Indicates someone is waiting for a received packet
+uint32_t TemporaryIncomingPacketLength; //We don't actually care about what Downstream sends us when we are transmitting. We just need somewhere to put it so that our own packet length is not overwritten.
uint8_t TxOkInterruptReceived = 0;
uint8_t SentCommandClass;
uint8_t SentCommand;
@@ -46,7 +47,7 @@ void Upstream_InitSPI(void)
Hspi1.State = HAL_SPI_STATE_RESET;
Hspi1.Init.Mode = SPI_MODE_MASTER;
Hspi1.Init.Direction = SPI_DIRECTION_2LINES;
- Hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+ Hspi1.Init.DataSize = SPI_DATASIZE_16BIT; //SPI_DATASIZE_8BIT;
Hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
Hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
Hspi1.Init.NSS = SPI_NSS_SOFT;
@@ -56,6 +57,11 @@ void Upstream_InitSPI(void)
Hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_ENABLED;
Hspi1.Init.CRCPolynomial = SPI_CRC_DEFAULTPOLYNOMIAL;
HAL_SPI_Init(&Hspi1);
+
+ if (DOWNSTREAM_TX_OK_ACTIVE)
+ {
+ TxOkInterruptReceived = 1;
+ }
}
@@ -97,11 +103,18 @@ HAL_StatusTypeDef Upstream_GetFreePacket(FreePacketCallbackTypeDef callback)
UpstreamPacketTypeDef* Upstream_GetFreePacketImmediately(void)
{
+uint8_t temp;
+
if (UpstreamInterfaceState >= UPSTREAM_INTERFACE_ERROR)
{
return NULL;
}
+ if (NextTxPacket != NULL)
+ {
+ temp = 0;
+ }
+
//We are expecting a free buffer now
if (UpstreamPacket0.Busy == NOT_BUSY)
{
@@ -169,8 +182,8 @@ HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite)
return HAL_ERROR;
}
if ((packetToWrite->Busy != BUSY) ||
- (packetToWrite->Length < UPSTREAM_PACKET_LEN_MIN) ||
- (packetToWrite->Length > UPSTREAM_PACKET_LEN))
+ (packetToWrite->Length16 < UPSTREAM_PACKET_LEN_MIN_16) ||
+ (packetToWrite->Length16 > UPSTREAM_PACKET_LEN_16))
{
UPSTREAM_SPI_FREAKOUT;
return HAL_ERROR;
@@ -214,10 +227,13 @@ HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite)
-//Called at the end of the SPI TX DMA transfer,
+//Called at the end of the SPI TxRx DMA transfer,
//at DMA2 interrupt priority. Assume *hspi points to our hspi1.
-void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
+//We TxRx our outgoing packet because the SPI hardware freaks out if we only Tx it :-/
+void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
{
+ SpiPacketReceivedCallbackTypeDef tempPacketCallback; /////////
+
SPI1_NSS_DEASSERT;
if (UpstreamInterfaceState >= UPSTREAM_INTERFACE_ERROR)
@@ -274,6 +290,62 @@ void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
return;
}
+
+
+ if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_SIZE)
+ {
+ if ((CurrentWorkingPacket->Length16 < UPSTREAM_PACKET_LEN_MIN_16) ||
+ (CurrentWorkingPacket->Length16 > UPSTREAM_PACKET_LEN_16))
+ {
+ UPSTREAM_SPI_FREAKOUT;
+ return;
+ }
+ UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET_WAIT;
+ if (TxOkInterruptReceived)
+ {
+ TxOkInterruptReceived = 0;
+ Upstream_BeginReceivePacketBody();
+ }
+ return;
+ }
+
+ if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_PACKET)
+ {
+ UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
+ if (ReceivePacketCallback == NULL)
+ {
+ UPSTREAM_SPI_FREAKOUT;
+ return;
+ }
+
+ if ((CurrentWorkingPacket->CommandClass == COMMAND_CLASS_ERROR) &&
+ (CurrentWorkingPacket->Command == COMMAND_ERROR_DEVICE_DISCONNECTED))
+ {
+ Upstream_ReleasePacket(CurrentWorkingPacket);
+ ReceivePacketCallback = NULL;
+ Upstream_StateMachine_DeviceDisconnected();
+ return;
+ }
+
+ if (((CurrentWorkingPacket->CommandClass & COMMAND_CLASS_MASK) != (SentCommandClass & COMMAND_CLASS_MASK)) ||
+ (CurrentWorkingPacket->Command != SentCommand))
+ {
+ UPSTREAM_SPI_FREAKOUT;
+ Upstream_ReleasePacket(CurrentWorkingPacket);
+ CurrentWorkingPacket = NULL; //Call back with a NULL packet to indicate error
+ }
+
+ //USB interface may want to receive another packet immediately,
+ //so clear ReceivePacketCallback before the call.
+ //It is the callback's responsibility to release the packet buffer we are passing to it!
+ tempPacketCallback = ReceivePacketCallback;
+ ReceivePacketCallback = NULL;
+ tempPacketCallback(CurrentWorkingPacket);
+ return;
+ }
+
+
+
//case default:
UPSTREAM_SPI_FREAKOUT;
}
@@ -368,9 +440,10 @@ void Upstream_BeginTransmitPacketSize(void)
{
UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_SIZE;
SPI1_NSS_ASSERT;
- if (HAL_SPI_Transmit_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- 2) != HAL_OK)
+ if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ (uint8_t*)&TemporaryIncomingPacketLength,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -381,9 +454,16 @@ void Upstream_BeginTransmitPacketBody(void)
{
UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_PACKET;
SPI1_NSS_ASSERT;
- if ((HAL_SPI_Transmit_DMA(&Hspi1,
- &CurrentWorkingPacket->CommandClass,
- CurrentWorkingPacket->Length)) != HAL_OK)
+
+ if (CurrentWorkingPacket->Length16 > 200)
+ {
+ UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_PACKET; /////////////////////////
+ }
+
+ if (HAL_SPI_TransmitReceive_DMA(&Hspi1,
+ &CurrentWorkingPacket->CommandClass,
+ &CurrentWorkingPacket->CommandClass,
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -406,11 +486,13 @@ void Upstream_BeginReceivePacketSize(UpstreamPacketTypeDef* freePacket)
}
UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_SIZE;
CurrentWorkingPacket = freePacket;
- CurrentWorkingPacket->Length = 0; //Our RX buffer is used by HAL_SPI_Receive_DMA as dummy TX data, we set Length to 0 so downstream will know this is a dummy packet.
+ CurrentWorkingPacket->Length16 = 0; //Our RX buffer is used by HAL_SPI_Receive_DMA as dummy TX data, we set Length to 0 so downstream will know this is a dummy packet.
SPI1_NSS_ASSERT;
- if (HAL_SPI_Receive_DMA(&Hspi1,
- (uint8_t*)&CurrentWorkingPacket->Length,
- (2 + 1)) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
+ TemporaryIncomingPacketLength = 0; ////////////////
+ if (HAL_SPI_TransmitReceive_DMA(&Hspi1, //////////////
+ (uint8_t*)&TemporaryIncomingPacketLength, /////////////
+ (uint8_t*)&CurrentWorkingPacket->Length16,
+ 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out...
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -421,9 +503,10 @@ void Upstream_BeginReceivePacketBody(void)
{
UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET;
SPI1_NSS_ASSERT;
- if ((HAL_SPI_Receive_DMA(&Hspi1,
+ if (HAL_SPI_TransmitReceive_DMA(&Hspi1, ////////////////
+ &CurrentWorkingPacket->CommandClass, /////////////////////
&CurrentWorkingPacket->CommandClass,
- (CurrentWorkingPacket->Length + 1))) != HAL_OK) //"When the CRC feature is enabled the pData Length must be Size + 1"
+ ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK)
{
UPSTREAM_SPI_FREAKOUT;
}
@@ -443,57 +526,57 @@ void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
return;
}
- if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_SIZE)
- {
- if ((CurrentWorkingPacket->Length < UPSTREAM_PACKET_LEN_MIN) ||
- (CurrentWorkingPacket->Length > UPSTREAM_PACKET_LEN))
- {
- UPSTREAM_SPI_FREAKOUT;
- return;
- }
- UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET_WAIT;
- if (TxOkInterruptReceived)
- {
- TxOkInterruptReceived = 0;
- Upstream_BeginReceivePacketBody();
- }
- return;
- }
-
- if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_PACKET)
- {
- UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
- if (ReceivePacketCallback == NULL)
- {
- UPSTREAM_SPI_FREAKOUT;
- return;
- }
-
- if ((CurrentWorkingPacket->CommandClass == COMMAND_CLASS_ERROR) &&
- (CurrentWorkingPacket->Command == COMMAND_ERROR_DEVICE_DISCONNECTED))
- {
- Upstream_ReleasePacket(CurrentWorkingPacket);
- ReceivePacketCallback = NULL;
- Upstream_StateMachine_DeviceDisconnected();
- return;
- }
-
- if (((CurrentWorkingPacket->CommandClass & COMMAND_CLASS_MASK) != SentCommandClass) ||
- (CurrentWorkingPacket->Command != SentCommand))
- {
- UPSTREAM_SPI_FREAKOUT;
- Upstream_ReleasePacket(CurrentWorkingPacket);
- CurrentWorkingPacket = NULL; //Call back with a NULL packet to indicate error
- }
-
- //USB interface may want to receive another packet immediately,
- //so clear ReceivePacketCallback before the call.
- //It is the callback's responsibility to release the packet buffer we are passing to it!
- tempPacketCallback = ReceivePacketCallback;
- ReceivePacketCallback = NULL;
- tempPacketCallback(CurrentWorkingPacket);
- return;
- }
+// if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_SIZE)
+// {
+// if ((CurrentWorkingPacket->Length < UPSTREAM_PACKET_LEN_MIN) ||
+// (CurrentWorkingPacket->Length > UPSTREAM_PACKET_LEN))
+// {
+// UPSTREAM_SPI_FREAKOUT;
+// return;
+// }
+// UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET_WAIT;
+// if (TxOkInterruptReceived)
+// {
+// TxOkInterruptReceived = 0;
+// Upstream_BeginReceivePacketBody();
+// }
+// return;
+// }
+//
+// if (UpstreamInterfaceState == UPSTREAM_INTERFACE_RX_PACKET)
+// {
+// UpstreamInterfaceState = UPSTREAM_INTERFACE_IDLE;
+// if (ReceivePacketCallback == NULL)
+// {
+// UPSTREAM_SPI_FREAKOUT;
+// return;
+// }
+//
+// if ((CurrentWorkingPacket->CommandClass == COMMAND_CLASS_ERROR) &&
+// (CurrentWorkingPacket->Command == COMMAND_ERROR_DEVICE_DISCONNECTED))
+// {
+// Upstream_ReleasePacket(CurrentWorkingPacket);
+// ReceivePacketCallback = NULL;
+// Upstream_StateMachine_DeviceDisconnected();
+// return;
+// }
+//
+// if (((CurrentWorkingPacket->CommandClass & COMMAND_CLASS_MASK) != SentCommandClass) ||
+// (CurrentWorkingPacket->Command != SentCommand))
+// {
+// UPSTREAM_SPI_FREAKOUT;
+// Upstream_ReleasePacket(CurrentWorkingPacket);
+// CurrentWorkingPacket = NULL; //Call back with a NULL packet to indicate error
+// }
+//
+// //USB interface may want to receive another packet immediately,
+// //so clear ReceivePacketCallback before the call.
+// //It is the callback's responsibility to release the packet buffer we are passing to it!
+// tempPacketCallback = ReceivePacketCallback;
+// ReceivePacketCallback = NULL;
+// tempPacketCallback(CurrentWorkingPacket);
+// return;
+// }
//case default:
UPSTREAM_SPI_FREAKOUT;
diff --git a/Upstream/Src/upstream_statemachine.c b/Upstream/Src/upstream_statemachine.c
index bf66935..1f51da5 100644
--- a/Upstream/Src/upstream_statemachine.c
+++ b/Upstream/Src/upstream_statemachine.c
@@ -40,7 +40,7 @@ void Upstream_InitStateMachine(void)
return;
}
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET;
+ freePacket->Length16 = UPSTREAM_PACKET_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_INTERFACE;
freePacket->Command = COMMAND_INTERFACE_ECHO;
@@ -105,7 +105,7 @@ void Upstream_StateMachine_TestInterfaceReplyCallback(UpstreamPacketTypeDef* rep
return;
}
- if (replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + MSC_MEDIA_PACKET))
+ if (replyPacket->Length16 != UPSTREAM_PACKET_LEN_16)
{
UPSTREAM_STATEMACHINE_FREAKOUT;
return;
@@ -130,7 +130,7 @@ void Upstream_StateMachine_TestInterfaceReplyCallback(UpstreamPacketTypeDef* rep
void Upstream_StateMachine_NotifyDevice(UpstreamPacketTypeDef* freePacket)
{
UpstreamState = STATE_WAIT_DEVICE;
- freePacket->Length = UPSTREAM_PACKET_HEADER_LEN;
+ freePacket->Length16 = UPSTREAM_PACKET_HEADER_LEN_16;
freePacket->CommandClass = COMMAND_CLASS_INTERFACE;
freePacket->Command = COMMAND_INTERFACE_NOTIFY_DEVICE;
if (Upstream_TransmitPacket(freePacket) == HAL_OK)
@@ -157,7 +157,7 @@ void Upstream_StateMachine_NotifyDeviceReplyCallback(UpstreamPacketTypeDef* repl
return;
}
- if (replyPacket->Length != (UPSTREAM_PACKET_HEADER_LEN + 1))
+ if (replyPacket->Length16 != (UPSTREAM_PACKET_HEADER_LEN_16 + 1))
{
UPSTREAM_STATEMACHINE_FREAKOUT;
return;
@@ -173,6 +173,8 @@ void Upstream_StateMachine_NotifyDeviceReplyCallback(UpstreamPacketTypeDef* repl
//Add other supported classes here...
}
+ Upstream_ReleasePacket(replyPacket);
+
if (newActiveClass == COMMAND_CLASS_INTERFACE)
{
UPSTREAM_STATEMACHINE_FREAKOUT;
diff --git a/Upstream/Upstream Debug.launch b/Upstream/Upstream Debug.launch
index 7050715..02b5f91 100644
--- a/Upstream/Upstream Debug.launch
+++ b/Upstream/Upstream Debug.launch
@@ -61,6 +61,6 @@
-
+
diff --git a/Upstream/Upstream Release.launch b/Upstream/Upstream Release.launch
new file mode 100644
index 0000000..3819eb6
--- /dev/null
+++ b/Upstream/Upstream Release.launch
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+