zhyinch
2020-05-08 829eef8555abe71bc3eb5b090d690fbe53763ad7
基本测试完成V1.14
已添加1个文件
已修改7个文件
1347 ■■■■■ 文件已修改
源码/核心板/MDK-ARM/1 905 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/MDK-ARM/Project.uvguix.Administrator 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/MDK-ARM/Project.uvoptx 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/application/dw_app.c 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/application/dw_app.h 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/application/global_param.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/main.c 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/stm32f10x_it.c 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Ô´Âë/ºËÐİå/MDK-ARM/1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,905 @@
#include "dw_app.h"
#include "ADC.h"
enum enumtagstate
{
    DISCPOLL,
    GETNEARMSG,
    NEARPOLL,
}tag_state;
static dwt_config_t config = {
    2,               /* Channel number. */
    DWT_PRF_64M,     /* Pulse repetition frequency. */
    DWT_PLEN_128,    /* Preamble length. */
    DWT_PAC8,        /* Preamble acquisition chunk size. Used in RX only. */
    9,               /* TX preamble code. Used in TX only. */
    9,               /* RX preamble code. Used in RX only. */
    0,               /* Use non-standard SFD (Boolean) */
    DWT_BR_6M8,      /* Data rate. */
    DWT_PHRMODE_STD, /* PHY header mode. */
    (129 + 8 - 8)    /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */
};
static uint8_t tx_poll_msg[20] = {0};
static uint8_t tx_sync_msg[14] = {0};
static uint8_t tx_final_msg[60] = {0};
static uint8_t tx_resp_msg[22] = {0};
static uint8_t tx_nearpoll_msg[80] = {0};
static uint8_t tx_nearresp_msg[80] = {0};
static uint8_t tx_nearfinal_msg[80] = {0};
static uint32_t frame_seq_nb = 0;
static uint32_t status_reg = 0;
static uint8_t rx_buffer[100];
static uint64_t poll_tx_ts;
static uint64_t resp_rx_ts;
static uint64_t final_tx_ts;
static uint64_t poll_rx_ts;
static uint64_t resp_tx_ts;
static uint64_t final_rx_ts;
static double tof;
int32_t anchor_dist_last_frm[TAG_NUM_IN_SYS],his_dist[TAG_NUM_IN_SYS];    ;
uint32_t tag_id = 0;
uint32_t tag_id_recv = 0;
uint32_t anc_id_recv = 0;
uint8_t random_delay_tim = 0;
double distance, dist_no_bias, dist_cm;
uint32_t g_UWB_com_interval = 0;
float dis_after_filter;                //当前距离值
LPFilter_Frac* p_Dis_Filter;        //测距用的低通滤波器
uint16_t g_Tagdist[TAG_NUM_IN_SYS];
uint8_t g_flag_Taggetdist[256];
static uint64_t get_tx_timestamp_u64(void)
{
    uint8_t ts_tab[5];
    uint64_t ts = 0;
    int i;
    dwt_readtxtimestamp(ts_tab);
    for (i = 4; i >= 0; i--)
    {
        ts <<= 8;
        ts |= ts_tab[i];
    }
    return ts;
}
static uint64_t get_rx_timestamp_u64(void)
{
    uint8_t ts_tab[5];
    uint64_t ts = 0;
    int i;
    dwt_readrxtimestamp(ts_tab);
    for (i = 4; i >= 0; i--)
    {
        ts <<= 8;
        ts |= ts_tab[i];
    }
    return ts;
}
static void final_msg_set_ts(uint8_t *ts_field, uint64_t ts)
{
    int i;
    for (i = 0; i < FINAL_MSG_TS_LEN; i++)
    {
        ts_field[i] = (uint8_t) ts;
        ts >>= 8;
    }
}
static void final_msg_get_ts(const uint8_t *ts_field, uint32_t *ts)
{
    int i;
    *ts = 0;
    for (i = 0; i < FINAL_MSG_TS_LEN; i++)
    {
        *ts += ts_field[i] << (i * 8);
    }
}
void TagDistClear(void)
{
    static uint16_t clear_judge_cnt;
    uint16_t i;
    if(clear_judge_cnt++>1000)  //设定1S分频,每秒进一次。判断标志位大于等于2,2s没收到数据就把数据变成0xffff,不触发警报。
    {
        clear_judge_cnt=0;
        for(i=0;i<255;i++)
        {
            g_flag_Taggetdist[i]++;
            if(g_flag_Taggetdist[i]>=2)
            {
                g_Tagdist[i]=0xffff;
            }
        }
    }
}
void Dw1000_Init(void)
{
    /* Reset and initialise DW1000.
     * For initialisation, DW1000 clocks must be temporarily set to crystal speed. After initialisation SPI rate can be increased for optimum
     * performance. */
    Reset_DW1000();//重启DW1000 /* Target specific drive of RSTn line into DW1000 low for a period. */
    dwt_initialise(DWT_LOADUCODE);//初始化DW1000
    Spi_ChangePrescaler(SPIx_PRESCALER_FAST);    //设置为快速模式
    /* Configure DW1000. See NOTE 6 below. */
    dwt_configure(&config);//配置DW1000
    /* Apply default antenna delay value. See NOTE 1 below. */
    dwt_setrxantennadelay(RX_ANT_DLY);        //设置接收天线延迟
    dwt_settxantennadelay(TX_ANT_DLY);        //设置发射天线延迟
    /* Set expected response's delay and timeout. See NOTE 4 and 5 below.
     * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */
                //设置接收超时时间
}
void Dw1000_App_Init(void)
{
//g_com_map[DEV_ID] = 0x0b;
    tx_poll_msg[MESSAGE_TYPE_IDX]=POLL;
    tx_resp_msg[MESSAGE_TYPE_IDX]=RESPONSE;
    tx_final_msg[MESSAGE_TYPE_IDX]=FINAL;
    tx_sync_msg[MESSAGE_TYPE_IDX]=SYNC;
    memcpy(&tx_poll_msg[TAG_ID_IDX], &dev_id, 2);
    memcpy(&tx_final_msg[TAG_ID_IDX], &dev_id, 2);
    memcpy(&tx_resp_msg[ANCHOR_ID_IDX], &dev_id, 2);
    memcpy(&tx_sync_msg[ANCHOR_ID_IDX], &dev_id, 2);
    memcpy(&tx_nearresp_msg[ANCHOR_ID_IDX], &dev_id, 2);
    memcpy(&tx_nearpoll_msg[TAG_ID_IDX], &dev_id, 2);
    memcpy(&tx_nearfinal_msg[TAG_ID_IDX], &dev_id, 2);
}
uint16_t Checksum_u16(uint8_t* pdata, uint32_t len)
{
    uint16_t sum = 0;
    uint32_t i;
    for(i=0; i<len; i++)
        sum += pdata[i];
    sum = ~sum;
    return sum;
}
u16 tag_time_recv[TAG_NUM_IN_SYS];
u8 usart_send[100],usart_send_anc[100];
u8 battary,button;
extern uint8_t g_pairstart;
void tag_sleep_configuraion(void)
{
    dwt_configuresleep(0x940, 0x7);
    dwt_entersleep();
}
extern uint8_t g_start_send_flag;
u8 g_start_sync_flag;
void SyncPoll(u8 sync_seq,uint32_t sync_baseid)
{u8 result;
    g_start_sync_flag=1;   //中断模式,退出终端后,需要重新来过
    dwt_forcetrxoff();       //关闭接收,以防在RX ON çŠ¶æ€
    tx_sync_msg[SYNC_SEQ_IDX]=sync_seq;
    memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&sync_baseid,4);
    dwt_writetxdata(sizeof(tx_sync_msg), tx_sync_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
    dwt_writetxfctrl(sizeof(tx_sync_msg), 0);//设置超宽带发送数据长度
    dwt_starttx(DWT_START_TX_IMMEDIATE);
    if(result==0)
            {
             while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成
                { };
        }
             dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//清楚标志位
}
uint16_t g_Resttimer;
uint8_t result;
u8 tag_succ_times=0;
int32_t hex_dist;
u16 checksum;
int8_t tag_delaytime;
extern uint16_t sync_timer;
u16 tmp_time;
int32_t temp_dist;
u16 tagslotpos;
u16 anclist_num=0,anclist_pos; //list æ€»æ•°é‡å’Œå½“前位置
u16 ancid_list[TAG_NUM_IN_SYS];
u8 nearbase_num=0;
u16 nearbaseid_list[MAX_NEARBASE_NUM],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM];
int32_t mainbase_dist,nearbase_distlist[MAX_NEARBASE_NUM],true_nearbase_distlist[MAX_NEARBASE_NUM];
uint8_t trygetnearmsg_times;
u8 FindNearBasePos(u16 baseid)
{
    u8 i;
    for(i=0;i<=nearbase_num;i++)
    {
        if(baseid==nearbaseid_list[i])
            return i;
    }
    return i+1;
}
u8 recbase_num=0;
#define CHANGE_BASE_THRESHOLD  5
void NearAncSelect(void)
{static u16 last_mainbase_id,change_base_count;
    int32_t nearbase_mindist=99999, nearbase_minpos;
    u8 i;
    for(i=0;i<recbase_num-1;i++)
    {
        if(nearbase_mindist>nearbase_distlist[i])
        {
            nearbase_mindist=nearbase_distlist[i];
            nearbase_minpos=i;
        }
    }
    if(nearbase_mindist<mainbase_dist-THRESHOLD_CHANGE_MAINBASE_DIST)
    {
        if(last_mainbase_id==nearbaseid_list[nearbase_minpos])
        {
            change_base_count++;
            if(change_base_count>CHANGE_BASE_THRESHOLD)
            {
                mainbase_id=last_mainbase_id;
                tag_state=GETNEARMSG;
            }
        }else{
            change_base_count=0;
        }
        last_mainbase_id=nearbaseid_list[nearbase_minpos];
    }else{
        change_base_count=0;
    }
}
u8 anclost_times=0;
u8 exsistbase_list[MAX_NEARBASE_NUM],report_num;
u16 temp_sync_timer1,temp_sync_timer2;
void NearPoll(void)
{
    static u8 mainbase_lost_count=0,flag_finalsend;
    uint32_t temp1,temp2,dw_systime;
    uint32_t frame_len;
    uint32_t final_tx_time;
    u32 start_poll;
    u8 i,j,getsync_flag=0,timeout;
//    printf("%d",sync_timer);
        dwt_forcetrxoff();
    dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);            //设置发送后开启接收,并设定延迟时间
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);
    tag_succ_times = 0;
    if(nearbase_num>=MAX_NEARBASE_NUM)
    {
        nearbase_num = MAX_NEARBASE_NUM-1;
    }
    //nearbase_num=0;
    recbase_num=0;
    tx_nearpoll_msg[BATTARY_IDX] = Get_Battary();
    tx_nearpoll_msg[BUTTON_IDX] = !READ_KEY0;
    tx_nearpoll_msg[SEQUENCE_IDX] = frame_seq_nb++;
    tx_nearpoll_msg[NEARBASENUM_INDEX] = nearbase_num;
    memcpy(&tx_nearpoll_msg[NEARBASEID_INDEX],&nearbaseid_list,nearbase_num*2);
    tx_nearpoll_msg[MESSAGE_TYPE_IDX] = NEAR_POLL;
    memcpy(&tx_nearpoll_msg[ANCHOR_ID_IDX],&mainbase_id,2);
    dwt_writetxdata(13+2*nearbase_num, tx_nearpoll_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
    dwt_writetxfctrl(13+2*nearbase_num, 0);//设置超宽带发送数据长度
    dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//开启发送,发送完成后等待一段时间开启接收,等待时间在dwt_setrxaftertxdelay中设置
    for(i=0;i<MAX_NEARBASE_NUM;i++)
    exsistbase_list[i]=0;
    flag_finalsend=0;
    neartimout_timer=0;
    timeout=nearbase_num/4+2;
    mainbase_dist=100000;
    mainbase_lost_count++;
            while(neartimout_timer<timeout)
            {
                    while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到成功接收或者发生错误
                    {
                        if(flag_finalsend)
                        {
                            dw_systime=dwt_readsystimestamphi32();
                            if(dw_systime>temp1&&dw_systime<temp2)
                            {
                                flag_finalsend=0;
                                dwt_forcetrxoff();
                                dwt_setdelayedtrxtime(final_tx_time);
                                result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送
                                break;
                            }
                        }
                         if(neartimout_timer>timeout)
                                break;
                    };
                    if(status_reg==0xffffffff)
                    {
                        NVIC_SystemReset();
                    }
                    if (status_reg & SYS_STATUS_RXFCG)//如果成功接收
                        {
                            dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚寄存器标志位
                            frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;    //获得接收到的数据长度
                            dwt_readrxdata(rx_buffer, frame_len, 0);   //读取接收数据
                            dwt_setrxtimeout(0);//DELAY_BETWEEN_TWO_FRAME_UUS*(nearbase_num+1-recbase_num)+10);//设定接收超时时间,0位没有超时时间
                            dwt_rxenable(0);//打开接收
                            if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)) //判断接收到的数据是否是response数据
                            {    u16 rec_nearbaseid,rec_nearbasepos;
                                int32_t temp_dist;
                                poll_tx_ts = get_tx_timestamp_u64();                                        //获得POLL发送时间T1
                                resp_rx_ts = get_rx_timestamp_u64();                                        //获得RESPONSE接收时间T4
                                recbase_num++;
                                memcpy(&rec_nearbaseid,&rx_buffer[ANCHOR_ID_IDX],2);
                                if(nearbase_num==0)
                                {
                                nearbaseid_list[0]=rec_nearbaseid;
                                nearbase_num=1;
                                memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2);
                                }
                                if(rec_nearbaseid==nearbaseid_list[0])
                                {
                                    //////////////////////////////////时间同步
                                    temp_sync_timer2=sync_timer;
                                    memcpy(&temp_sync_timer1,&rx_buffer[ANCTIMEMS],2);
                                    memcpy(&tmp_time,&rx_buffer[ANCTIMEUS],2);
                                    sync_timer=temp_sync_timer1;
                                    exsistbase_list[0]=1;
////                                    memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2);
//
                                    tmp_time=tmp_time+450;
                                    if(tmp_time>999)
                                    {
                                        tmp_time-=999;
                                        sync_timer++;
                                        if(sync_timer>=1010)
                                            {sync_timer=0;}
                                    }
                                    TIM3->CNT=tmp_time;
//                                    if(tagslotpos>max_slotpos)
//                                        tagslotpos=tagslotpos%(max_slotpos+1);
//                                        tyncpoll_time=(tagslotpos-1)*slottime;
                                    ////////////////////////////
                                    rec_nearbasepos=0;
                                    exsistbase_list[rec_nearbasepos]=1;
                                    memcpy(&temp_dist,&rx_buffer[DIST_IDX],4);
                                    nearbase_distlist[rec_nearbasepos]=temp_dist;
                                    mainbase_lost_count=0;
                                    flag_finalsend=1;
                                    final_tx_time = (resp_rx_ts + ((RESP_RX_TO_FINAL_TX_DLY_UUS+DELAY_BETWEEN_TWO_FRAME_UUS*nearbase_num+500) * UUS_TO_DWT_TIME)) >> 8;
                                    temp1=final_tx_time-((350*UUS_TO_DWT_TIME)>>8);
                                    temp2=final_tx_time+((100*UUS_TO_DWT_TIME)>>8);
                                //    dwt_setdelayedtrxtime(final_tx_time);//设置final包发送时间T5
                                    final_tx_ts = (((uint64_t)(final_tx_time & 0xFFFFFFFE)) << 8) + TX_ANT_DLY;//final包实际发送时间是计算时间加上发送天线delay
                                    final_msg_set_ts(&tx_nearfinal_msg[FINAL_MSG_POLL_TX_TS_IDX], poll_tx_ts);//将T1,T4,T5写入发送数据
                                    final_msg_set_ts(&tx_nearfinal_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX], resp_rx_ts);
                                    final_msg_set_ts(&tx_nearfinal_msg[FINAL_MSG_FINAL_TX_TS_IDX], final_tx_ts);
                                    tx_nearfinal_msg[MESSAGE_TYPE_IDX]=NEAR_FINAL;
                                    dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//将发送数据写入DW1000
                                    dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度
                                    if(temp_dist!=0x1ffff)
                                    {
                                    #ifndef USART_INTEGRATE_OUTPUT
                                        usart_send[2] = 1;//正常模式
                                        usart_send[3] = 17;//数据段长度
                                        usart_send[4] = frame_seq_nb;//数据段长度
                                        memcpy(&usart_send[5],&dev_id,2);
                                        memcpy(&usart_send[7],&rec_nearbaseid,2);
                                        memcpy(&usart_send[9],&rx_buffer[DIST_IDX],4);
                                        usart_send[13] = battary;
                                        usart_send[14] = button;
                                        checksum = Checksum_u16(&usart_send[2],17);
                                        memcpy(&usart_send[19],&checksum,2);
                                        UART_PushFrame(usart_send,21);
                                    #endif
                                    }
                                    //result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送
                                }else{
                                    rec_nearbasepos=FindNearBasePos(rec_nearbaseid);
                                    if(rec_nearbasepos>nearbase_num)          //发现新的基站
                                    {
                                        nearbase_num++;
                                        nearbaseid_list[nearbase_num] = rec_nearbaseid;
                                        memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2);
                                    }
                                    exsistbase_list[rec_nearbasepos]=1;
                                    memcpy(&temp_dist,&rx_buffer[DIST_IDX],4);
                                    nearbase_distlist[rec_nearbasepos]=temp_dist;
                                    final_msg_set_ts(&tx_nearfinal_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos)*4], resp_rx_ts);
                                    dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//将发送数据写入DW1000
                                    dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度
                                    LED0_BLINK;
                                    if(temp_dist!=0x1ffff)
                                    {
                                        #ifndef USART_INTEGRATE_OUTPUT
                                        usart_send[2] = 1;//正常模式
                                        usart_send[3] = 17;//数据段长度
                                        usart_send[4] = frame_seq_nb;//数据段长度
                                        memcpy(&usart_send[5],&dev_id,2);
                                        memcpy(&usart_send[7],&rec_nearbaseid,2);
                                        memcpy(&usart_send[9],&rx_buffer[DIST_IDX],4);
                                        usart_send[13] = battary;
                                        usart_send[14] = button;
                                        checksum = Checksum_u16(&usart_send[2],17);
                                        memcpy(&usart_send[19],&checksum,2);
                                        UART_PushFrame(usart_send,21);
                                        #endif
                                    //dwt_setdelayedtrxtime(final_tx_time);//设置final包发送时间T5
                                //    result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送
                                    //dwt_writetxdata(4,&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos+1)*4], FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos+1)*4);//将发送数据写入DW1000
                                }
                            }
                            }
                        }else{
                        dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR);
                        dwt_rxenable(0);
                        }
            }
            dwt_forcetrxoff();
            dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR);
            nearbase_num=recbase_num;
            j=0;
            if(exsistbase_list[0]==0)
            {
             u8 temp_adc,random_value;
                random_value=0;
                for(i=0;i<8;i++)
                {
                    temp_adc=Get_ADC_Value();
                    random_value=random_value|((temp_adc&0x01)<<i);
                }
                tyncpoll_time=(random_value%max_slotpos)*slottime;
            }
            for(i=0;i<MAX_NEARBASE_NUM;i++)
            {
                if(exsistbase_list[i]==1)
                {
                    true_nearbase_idlist[j]=nearbaseid_list[i];
                    true_nearbase_distlist[j++]=nearbase_distlist[i];
                }
            }
            for(i=0;i<nearbase_num-1;i++)
            {
                for(j=0;j<nearbase_num-1;j++)
                {
                    if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1])
                    {
                        u32 temp_dist,temp_id;
                        temp_dist=true_nearbase_distlist[j];
                        temp_id = true_nearbase_idlist[j];
                        true_nearbase_distlist[j]=true_nearbase_distlist[j+1];
                        true_nearbase_idlist[j]=true_nearbase_idlist[j+1];
                        true_nearbase_distlist[j+1]=temp_dist;
                        true_nearbase_idlist[j+1]=temp_id;
                    }
                }
            }
            report_num=0;
    for (i=0;i<nearbase_num;i++)
            {
                nearbaseid_list[i]=true_nearbase_idlist[i];
                nearbase_distlist[i]=true_nearbase_distlist[i];
                if(nearbase_distlist[i]!=0x1ffff)
                {
                    memcpy(&usart_send[4+6*report_num],&nearbaseid_list[i],2);
                    memcpy(&usart_send[6+6*report_num],&nearbase_distlist[i],4);
                    report_num++;
                }
            }
        //    printf("%d,%d",temp_sync_timer2,temp_sync_timer1);
            #ifdef USART_INTEGRATE_OUTPUT
                usart_send[2] = 4;//正常模式
                usart_send[3] = report_num*6+2;//正常模式
                checksum = Checksum_u16(&usart_send[2],report_num*6+2);
                memcpy(&usart_send[4+report_num*6],&checksum,2);
                UART_PushFrame(usart_send,6+report_num*6);
            #endif
//            if(mainbase_lost_count>5)
//            {
//                //tag_state=DISCPOLL;
//            }
//            NearAncSelect();
//            if(recbase_num<g_com_map[MIN_REPORT_ANC_NUM] )
//            {
//                anclost_times++;
//                if(anclost_times>3)
//                {
//                    tagslotpos=poll_tx_ts%(max_slotpos+1);
//                }
//            }else{
//                anclost_times=0;
//            }
    dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
}
//void GetNearMsg(void)
//{
//    u32 start_poll,frame_len;
//    memcpy(&tx_near_msg[ANCHOR_ID_IDX],&mainbase_id,2);
//    memcpy(&tx_near_msg[TAG_ID_IDX],&dev_id,2);
//    tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_MSG;
//
//    dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);            //设置发送后开启接收,并设定延迟时间
//  dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);
//    dwt_writetxdata(12, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
//    dwt_writetxfctrl(12, 0);//设置超宽带发送数据长度
//    dwt_starttx(DWT_START_TX_IMMEDIATE| DWT_RESPONSE_EXPECTED);
//    start_poll = time32_incr;
//    /* We assume that the transmission is achieved correctly, poll for reception of a frame or error/timeout. See NOTE 8 below. */
//    while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到成功接收或者发生错误
//    { if(time32_incr - start_poll>20)
//        NVIC_SystemReset();
//    };
//    if(status_reg==0xffffffff)
//    {
//        NVIC_SystemReset();
//    }
//    if (status_reg & SYS_STATUS_RXFCG)//如果成功接收
//    {
//        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚寄存器标志位
//        frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;    //获得接收到的数据长度
//        dwt_readrxdata(rx_buffer, frame_len, 0);   //读取接收数据
//        if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_MSG&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)) //判断接收到的数据是否是response数据
//        {
//            nearbase_num=rx_buffer[NEARBASENUM_INDEX];
//            tagslotpos=rx_buffer[TAGSLOTPOS];
//            memcpy(nearbaseid_list,&rx_buffer[NEARBASEID_INDEX],nearbase_num*2);
//            slottime=ceil((nearbase_num+2)*0.3)+1;
//            tyncpoll_time=tagslotpos*slottime;
//            tag_state=NEARPOLL;
//        }
//    }
//}
void Tag_App(void)//发送模式(TAG标签)
{
    //LED0_ON;
    g_Resttimer=0;
    NearPoll();
}
int8_t correction_time,new_tagid=0;
extern uint8_t sync_seq;
u16 taglist_num=0,taglist_pos;
u16 tagid_list[TAG_NUM_IN_SYS];
u8 tagofflinetime[TAG_NUM_IN_SYS];
int32_t tagdist_list[TAG_NUM_IN_SYS];
void TagListUpdate(void)
{
    u16 i,j=0,temp[TAG_NUM_IN_SYS];
    for(i=0;i<taglist_num;i++)
    {
        if(tagofflinetime[i]++<QUIT_SLOT_TIME)
        {
            tagid_list[j]=tagid_list[i];
            tagofflinetime[j++]=tagofflinetime[i];
        }
    }
    taglist_num=j;
}
u16 CmpTagInList(u16 tagid)
{u16 i;
    for(i=0;i<taglist_num;i++)
    {
        if(memcmp(&tagid,&tagid_list[i],2)==0)
            return i+1;
    }
    return 0;
}
uint32_t frame_len;
uint32_t resp_tx_time;
uint8_t rec_nearbase_num,anc_report_num;
void Anchor_RecPoll(void)
{
            tmp_time=TIM3->CNT;
            memcpy(&tx_resp_msg[ANCTIMEMS],&sync_timer,2);
            memcpy(&tx_resp_msg[ANCTIMEUS],&tmp_time,2);
            memcpy(&tx_resp_msg[TAGSLOTPOS],&taglist_pos,1);
            poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2
            resp_tx_time = (poll_rx_ts + (POLL_RX_TO_RESP_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
            dwt_setdelayedtrxtime(resp_tx_time);//设置Response发送时间T3
            dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS);//设置发送完成后开启接收延迟时间
            dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间
            memcpy(&tx_resp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
            memcpy(&tx_resp_msg[TAG_ID_IDX],&tag_id_recv,2);
            dwt_writetxdata(sizeof(tx_resp_msg), tx_resp_msg, 0);//写入发送数据
            dwt_writetxfctrl(sizeof(tx_resp_msg), 0);//设定发送长度
            result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收
            battary = rx_buffer[BATTARY_IDX];
            button = rx_buffer[BUTTON_IDX];
            frame_seq_nb = rx_buffer[SEQUENCE_IDX];
            if(result==0)
            {
                while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))///不断查询芯片状态直到接收成功或者出现错误
            { };
        }
            if (status_reg & SYS_STATUS_RXFCG)//接收成功
            {
                dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚标志位
                frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;//数据长度
                dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据
            if (rx_buffer[MESSAGE_TYPE_IDX] == FINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)) //判断是否为Final包
                {
                    uint32_t poll_tx_ts, resp_rx_ts, final_tx_ts;
                    uint32_t poll_rx_ts_32, resp_tx_ts_32, final_rx_ts_32;
                    double Ra, Rb, Da, Db;
                    int64_t tof_dtu;
                    resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3
                    final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6
                    final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5
                    final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_TS_IDX], &resp_rx_ts);
                    final_msg_get_ts(&rx_buffer[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts);
                    poll_rx_ts_32 = (uint32_t)poll_rx_ts;//使用32位数据计算
                    resp_tx_ts_32 = (uint32_t)resp_tx_ts;
                    final_rx_ts_32 = (uint32_t)final_rx_ts;
                    Ra = (double)(resp_rx_ts - poll_tx_ts);//Tround1 = T4 - T1
                    Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);//Tround2 = T6 - T3
                    Da = (double)(final_tx_ts - resp_rx_ts);//Treply2 = T5 - T4
                    Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);//Treply1 = T3 - T2
                    tof_dtu = (int64_t)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));//计算公式
                    tof = tof_dtu * DWT_TIME_UNITS;
                    distance = tof * SPEED_OF_LIGHT;//距离=光速*飞行时间
                    dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //距离减去矫正系数
                    dist_cm = dist_no_bias * 100; //dis ä¸ºå•位为cm的距离
                    /*--------------------------以下为非测距逻辑------------------------*/
                    //dist_cm=33000;
                    LED0_BLINK; //每成功一次通讯则闪烁一次
                    dis_after_filter=dist_cm;
                    hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET];
                    if(abs(hex_dist-his_dist[tag_id_recv-TAG_ID_START])<1000)
                        {
                            tagdist_list[taglist_pos] = hex_dist;
                                }
                        his_dist[taglist_pos]=hex_dist;
                }
            }else{
                dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
            }
}
u8 misdist_num,seize_anchor;
u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase  1 first near_base
{
            tmp_time=TIM3->CNT;
            memcpy(&tx_nearresp_msg[ANCTIMEMS],&sync_timer,2);
            memcpy(&tx_nearresp_msg[ANCTIMEUS],&tmp_time,2);
            memcpy(&tx_nearresp_msg[TAGSLOTPOS],&taglist_pos,2);
            memcpy(&tx_nearresp_msg[TAG_ID_IDX],&tag_id_recv,2);
            poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2
            resp_tx_time = (poll_rx_ts + ((POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
            dwt_setdelayedtrxtime(resp_tx_time);//设置Response发送时间T3
            dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS+(rec_nearbase_num+1-ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS);//设置发送完成后开启接收延迟时间
            dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间
            if(new_tagid)
            {
                tagdist_list[taglist_pos]=0x1ffff;
                memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
            }else{
                memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
            }
            tx_nearresp_msg[MESSAGE_TYPE_IDX]=NEAR_RESPONSE;
            dwt_writetxdata(20, tx_nearresp_msg, 0);//写入发送数据
            dwt_writetxfctrl(20, 0);//设定发送长度
            result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收
            battary = rx_buffer[BATTARY_IDX];
            button = rx_buffer[BUTTON_IDX];
            frame_seq_nb = rx_buffer[SEQUENCE_IDX];
            if(result==0)
            {
                while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_sync_flag)///不断查询芯片状态直到接收成功或者出现错误
            { };
        }else{
            result++;
        }
            if (status_reg & SYS_STATUS_RXFCG)//接收成功
            {
                dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚标志位
                frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;//数据长度
                dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据
            if(seize_anchor&&memcmp(&rx_buffer[ANCHOR_ID_IDX],&dev_id,2)) //抢占anchor å¤±è´¥
            {
                return 1;
            }
            if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_FINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)) //判断是否为Final包
                {
                    uint32_t poll_tx_ts, resp_rx_ts, final_tx_ts;
                    uint32_t poll_rx_ts_32, resp_tx_ts_32, final_rx_ts_32;
                    double Ra, Rb, Da, Db;
                    int64_t tof_dtu;
                    resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3
                    final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6
                    final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5
                    final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_NEARBASE_IDX+ancrec_nearbasepos*4], &resp_rx_ts);
                    final_msg_get_ts(&rx_buffer[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts);
                    poll_rx_ts_32 = (uint32_t)poll_rx_ts;//使用32位数据计算
                    resp_tx_ts_32 = (uint32_t)resp_tx_ts;
                    final_rx_ts_32 = (uint32_t)final_rx_ts;
                    Ra = (double)(resp_rx_ts - poll_tx_ts);//Tround1 = T4 - T1
                    Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);//Tround2 = T6 - T3
                    Da = (double)(final_tx_ts - resp_rx_ts);//Treply2 = T5 - T4
                    Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);//Treply1 = T3 - T2
                    tof_dtu = (int64_t)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));//计算公式
                    tof = tof_dtu * DWT_TIME_UNITS;
                    distance = tof * SPEED_OF_LIGHT;//距离=光速*飞行时间
                    dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //距离减去矫正系数
                    dist_cm = dist_no_bias * 100; //dis ä¸ºå•位为cm的距离
                    /*--------------------------以下为非测距逻辑------------------------*/
                    //dist_cm=33000;
                    LED0_BLINK; //每成功一次通讯则闪烁一次
                    dis_after_filter=dist_cm;
                    hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET];
                    if(hex_dist>-1000&&hex_dist<100000)
                    {
                    if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num>3)
                    {
                        misdist_num=0;
                    tagdist_list[taglist_pos] = hex_dist;
                    his_dist[taglist_pos]=hex_dist;
                #ifndef USART_INTEGRATE_OUTPUT
                    usart_send[2] = 1;//正常模式
                    usart_send[3] = 17;//数据段长度
                    usart_send[4] = frame_seq_nb;//数据段长度
                    memcpy(&usart_send[5],&tag_id_recv,2);
                    memcpy(&usart_send[7],&dev_id,2);
                    memcpy(&usart_send[9],&tagdist_list[taglist_pos],4);
                    usart_send[13] = battary;
                    usart_send[14] = button;
                    checksum = Checksum_u16(&usart_send[2],17);
                    memcpy(&usart_send[19],&checksum,2);
                    UART_PushFrame(usart_send,21);
                #else
                    memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2);
                    memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4);
                    anc_report_num++;
                #endif
                    }else{
                        printf("%d",hex_dist);
                        misdist_num++;
                    }
                }
            }
            }else{
                //    printf("%x/n",status_reg);
                dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
            }
}
uint32_t current_syncid=0xffffffff,synclost_timer;
extern u8 flag_syncbase;
void Anchor_App(void)
{
    u8 send_len,i;
    u16 tempid;
    uint32_t rec_syncid;
    g_start_sync_flag=0;
    dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
    dwt_rxenable(0);//打开接收
    while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_send_flag&&!g_start_sync_flag)//不断查询芯片状态直到接收成功或者出现错误
    {
        IdleTask();
        g_Resttimer=0;
    };
    if (status_reg & SYS_STATUS_RXFCG)//成功接收
    { u16 tag_recv_interval;
        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//清除标志位
        frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度
        dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据
        //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据
        //tag_id_recv = rx_buffer[TAG_ID_IDX];
        memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
        memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2);
        taglist_pos=CmpTagInList(tag_id_recv);
        if(taglist_pos==0)
        {
            synclost_timer=0;
            tagid_list[taglist_num++]=tag_id_recv;
            taglist_pos=taglist_num;
            new_tagid=1;
        }else{
            new_tagid=0;
        }
        tagofflinetime[taglist_pos-1]=0;
        switch(rx_buffer[MESSAGE_TYPE_IDX])
        {
//            case POLL:
//                if (anchor_type == rx_buffer[ANC_TYPE_IDX])
//                Anchor_RecPoll();
//                break;
            case SYNC:
                memcpy(&rec_syncid,&rx_buffer[ANCHOR_ID_IDX],4);
                if(rec_syncid<current_syncid)
                {
                    current_syncid=rec_syncid;
                    flag_syncbase=0;
                    sync_seq=rx_buffer[SYNC_SEQ_IDX]+1;
                    TIM3->CNT = sync_seq*325%1000+15;
                    sync_timer = sync_seq*325/1000;
                    synclost_timer=0;
                    SyncPoll(sync_seq,rec_syncid);
                    }else if(rec_syncid==current_syncid)
                {
                    if(rx_buffer[SYNC_SEQ_IDX]<sync_seq)
                        {
                            flag_syncbase=0;
                            sync_seq=rx_buffer[SYNC_SEQ_IDX]+1;
                            TIM3->CNT = sync_seq*325%1000+15;
                            sync_timer = sync_seq*325/1000;
                            synclost_timer=0;
                            SyncPoll(sync_seq,rec_syncid);
                        }
                }
                break;
//            case NEAR_MSG:
//                if(anc_id_recv==dev_id)
//                {
//                    rx_buffer[TAGSLOTPOS]=taglist_pos;
//                    tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_MSG;
//                    memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2);
//                    tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM];
//                    memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2);
//                    send_len=11+g_com_map[NEARBASE_NUM]*2+2;
//                    dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
//                    dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度
//                    dwt_starttx(DWT_START_TX_IMMEDIATE);
//                }
//                break;
//
            case NEAR_POLL:
                rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX];
                for(i=0;i<rec_nearbase_num;i++)
                {
                     memcpy(&tempid,&rx_buffer[NEARBASEID_INDEX+i*2],2);
                    if(tempid==dev_id)
                    {
                        seize_anchor=0;  //非抢占。已存在列表中
                        Anchor_RecNearPoll(i);
                        break;
                    }
                }
                    if(i==rec_nearbase_num)
                    {
                        seize_anchor=1;   //抢占anchor
                        Anchor_RecNearPoll(i);
                    }
                break;
        }
    }
    else
    {
        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
    }
}
Ô´Âë/ºËÐİå/MDK-ARM/Project.uvguix.Administrator
@@ -15,17 +15,17 @@
    <View>
      <WinId>38003</WinId>
      <ViewName>Registers</ViewName>
      <TableColWidths>183 101</TableColWidths>
      <TableColWidths>183 184</TableColWidths>
    </View>
    <View>
      <WinId>346</WinId>
      <ViewName>Code Coverage</ViewName>
      <TableColWidths>610 497</TableColWidths>
      <TableColWidths>610 160</TableColWidths>
    </View>
    <View>
      <WinId>204</WinId>
      <ViewName>Performance Analyzer</ViewName>
      <TableColWidths>777 115 115 100</TableColWidths>
      <TableColWidths>770</TableColWidths>
    </View>
  </SECTreeCtrl>
@@ -90,28 +90,28 @@
    <sActiveDebugView></sActiveDebugView>
    <WindowPosition>
      <length>44</length>
      <flags>2</flags>
      <showCmd>3</showCmd>
      <flags>0</flags>
      <showCmd>1</showCmd>
      <MinPosition>
        <xPos>-1</xPos>
        <yPos>-1</yPos>
        <xPos>-32000</xPos>
        <yPos>-32000</yPos>
      </MinPosition>
      <MaxPosition>
        <xPos>-1</xPos>
        <yPos>-1</yPos>
      </MaxPosition>
      <NormalPosition>
        <Top>-841</Top>
        <Left>1218</Left>
        <Right>2507</Right>
        <Bottom>-156</Bottom>
        <Top>0</Top>
        <Left>-5</Left>
        <Right>1284</Right>
        <Bottom>685</Bottom>
      </NormalPosition>
    </WindowPosition>
    <MDIClientArea>
      <RegID>0</RegID>
      <MDITabState>
        <Len>590</Len>
        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000500000000000000010000003B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E63000000000864775F6170702E6300000000C5D4F200FFFFFFFF35453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000FFDC7800FFFFFFFF2D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF3F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F6465766963652E63000000000D646563615F6465766963652E6300000000F0A0A100FFFFFFFF3B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E68000000000864775F6170702E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FE0300002EFCFFFF010A000039FFFFFF</Data>
        <Len>1329</Len>
        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000D00000002000000010000003B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E63000000000864775F6170702E6300000000C5D4F200FFFFFFFF35453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000FFDC7800FFFFFFFF2D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF3F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F6465766963652E63000000000D646563615F6465766963652E6300000000F0A0A100FFFFFFFF3B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E68000000000864775F6170702E6800000000BCA8E100FFFFFFFF41453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E63000000000E676C6F62616C5F706172616D2E63000000009CC1B600FFFFFFFF41453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E68000000000E676C6F62616C5F706172616D2E6800000000F7B88600FFFFFFFF43453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C626565705F6C6F6769635F6170702E630000000010626565705F6C6F6769635F6170702E6300000000D9ADC200FFFFFFFF3A453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5370692E6300000000055370692E6300000000A5C2D700FFFFFFFF3C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C55736172742E63000000000755736172742E6300000000B3A6BE00FFFFFFFF2C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C4D444B2D41524D5C3100000000013100000000EAD6A300FFFFFFFF3C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C55736172742E68000000000755736172742E6800000000F6FA7D00FFFFFFFF60453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C696E635C73746D3332663130785F6770696F2E68000000001073746D3332663130785F6770696F2E6800000000B5E99D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000800100006E000000FC040000DB010000</Data>
      </MDITabState>
    </MDIClientArea>
    <ViewEx>
@@ -134,7 +134,7 @@
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>250300002EFCFFFF3106000092FCFFFF</Data>
          <Data>A70000006E000000B3030000D2000000</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -150,7 +150,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000660000007601000041030000</Data>
          <Data>030000006600000076010000A3010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -170,7 +170,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000660000007601000041030000</Data>
          <Data>030000006600000076010000A3010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -450,7 +450,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000660000007601000041030000</Data>
          <Data>030000006600000076010000A3010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -470,7 +470,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000660000007601000041030000</Data>
          <Data>030000006600000076010000A3010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -490,7 +490,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000750300007D070000CD030000</Data>
          <Data>03000000D7010000F60400005A020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -530,7 +530,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000750300007D070000CD030000</Data>
          <Data>03000000D7010000F60400005A020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1150,7 +1150,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000660000007601000041030000</Data>
          <Data>030000006600000076010000A3010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1170,7 +1170,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000750300007D070000CD030000</Data>
          <Data>03000000D7010000F60400005A020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1190,7 +1190,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000750300007D070000CD030000</Data>
          <Data>03000000D7010000F60400005A020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1250,7 +1250,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000750300007D070000CD030000</Data>
          <Data>03000000D7010000F60400005A020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1270,7 +1270,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>03000000750300007D070000CD030000</Data>
          <Data>03000000D7010000F60400005A020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1730,7 +1730,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>00000000E603000080070000F9030000</Data>
          <Data>0000000073020000F904000086020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1799,14 +1799,14 @@
      </Window>
      <DockMan>
        <Len>3312</Len>
        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFA4000000B3000000B0030000B7000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000250300002EFCFFFF3106000092FCFFFFA40000004F000000B0030000B30000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F000000100300003F010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000910500002EFCFFFF310600001EFDFFFF100300004F000000B00300003F01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF790100004F0000007D0100005A03000001000000020000100400000001000000DAFEFFFF4F060000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000810200002EFCFFFFFA03000039FFFFFF000000004F000000790100005A0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000037010000B00300003B01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000810200001AFDFFFF3106000086FDFFFF000000003B010000B0030000A701000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD80100003B010000DC010000A701000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005A030000800700005E03000001000000010000100400000001000000BCFEFFFFE0000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000810200003DFFFFFF010A0000C5FFFFFF000000005E03000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFA4000000B3000000B0030000B7000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000A70000006E000000B3030000D2000000A40000004F000000B0030000B30000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F000000100300003F010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000130300006E000000B30300005E010000100300004F000000B00300003F01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF790100004F0000007D010000BC01000001000000020000100400000001000000DAFEFFFF4F060000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000030000006E0000007C010000DB010000000000004F00000079010000BC0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000037010000B00300003B01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000030000005A010000B3030000C6010000000000003B010000B0030000A701000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD80100003B010000DC010000A701000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000BC010000F9040000C001000001000000010000100400000001000000D4FEFFFFED000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000003000000DF010000FC0400009202000000000000C0010000F9040000730200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
      </DockMan>
      <ToolBar>
        <RegID>59392</RegID>
        <Name>File</Name>
        <Buttons>
          <Len>2898</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000B74785F6E6561725F6D7367960000000000000014000B74785F6E6561725F6D73670C7365697A655F616E63686F72084E656172506F6C6C0B75736172745F74696D65720B675F5265737474696D65720D75736172745F73656E645B305D0A75736172745F73656E640E7461675F726563765F74696D65720F657873697374626173655F6C697374116E656172626173655F646973746C69737416747275655F6E656172626173655F646973746C6973740F6E6561726261736569645F6C6973740D5461674C6973745570646174650E7461676F66666C696E6574696D650A746167736C6F74706F730B7461676C6973745F706F730B726563626173655F6E756D0A55534152545F707574630C6E656172626173655F6E756D0A6D61696E5F6C6F6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
          <Len>2894</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000067072696E746696000000000000001400067072696E74660D74796E63706F6C6C5F74696D6511675F73746172745F73796E635F666C61670873796E635F7365710D666C61675F73796E63626173650B675F5265737474696D65720853796E63506F6C6C0B74785F6E6561725F6D73670C7365697A655F616E63686F72084E656172506F6C6C0B75736172745F74696D65720D75736172745F73656E645B305D0A75736172745F73656E640E7461675F726563765F74696D65720F657873697374626173655F6C697374116E656172626173655F646973746C69737416747275655F6E656172626173655F646973746C6973740F6E6561726261736569645F6C6973740D5461674C6973745570646174650E7461676F66666C696E6574696D650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
        </Buttons>
        <OriginalItems>
          <Len>1423</Len>
@@ -1822,7 +1822,7 @@
        <Name>Build</Name>
        <Buttons>
          <Len>970</Len>
          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
        </Buttons>
        <OriginalItems>
          <Len>583</Len>
@@ -1838,7 +1838,7 @@
        <Name>Debug</Name>
        <Buttons>
          <Len>2373</Len>
          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
          <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
        </Buttons>
        <OriginalItems>
          <Len>898</Len>
@@ -1871,11 +1871,11 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2A0100004F00000087050000B4000000</Data>
          <Data>2D0100004F00000087050000B4000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
          <Data>AB0300002EFCFFFF0808000093FCFFFF</Data>
          <Data>AE0300002EFCFFFF0808000093FCFFFF</Data>
        </RectRecentFloat>
      </Window>
      <Window>
@@ -1891,7 +1891,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000230100001C030000</Data>
          <Data>0300000066000000260100001C030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1911,7 +1911,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000230100001C030000</Data>
          <Data>0300000066000000260100001C030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2031,7 +2031,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2191,7 +2191,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000230100001C030000</Data>
          <Data>0300000066000000260100001C030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2211,7 +2211,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000230100001C030000</Data>
          <Data>0300000066000000260100001C030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2291,7 +2291,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2A0100006300000087050000B4000000</Data>
          <Data>2D0100006300000087050000B4000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2311,7 +2311,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2391,7 +2391,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2411,7 +2411,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2431,7 +2431,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2451,7 +2451,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -2891,7 +2891,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000230100001C030000</Data>
          <Data>0300000066000000260100001C030000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3031,7 +3031,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>2D01000066000000840500009B000000</Data>
          <Data>3001000066000000840500009B000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3451,7 +3451,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0000000000000000D10300001C000000</Data>
          <Data>0100000000000000D20300001C000000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3540,14 +3540,14 @@
      </Window>
      <DockMan>
        <Len>3418</Len>
        <Data>000000000C000000000000000020000001000000FFFFFFFFFFFFFFFF2A010000B400000087050000B8000000010000000100001004000000010000009EFFFFFF79020000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000AB0300002EFCFFFF0808000093FCFFFF2A0100004F00000087050000B40000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F000000100300003F010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000910500002EFCFFFF310600001EFDFFFF100300004F000000B00300003F01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF260100004F0000002A010000350300000100000002000010040000000100000062FFFFFF65030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000810200002EFCFFFFA703000014FFFFFF000000004F00000026010000350300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000035030000870500003903000001000000010000100400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC003000039030000C4030000D003000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000B001000000050000B4010000000000000100000004000000010000003EFEFFFF62000000FFFFFFFF05000000C5000000B4010000D2010000CF01000077940000018000800000000000008102000093FDFFFF810700005DFEFFFF00000000B4010000000500007E0200000000000040820046050000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF870500004F0000008B050000D003000001000000020000100400000001000000A8FBFFFFF301000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000400000010000000C0800002EFCFFFF010A0000AFFFFFFF8B0500004F00000080070000D003000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F0700000000000001000000C7000000008000000100000081020000AFFFFFFF010A00006500000001000000010000000100000000000000</Data>
        <Data>000000000C000000000000000020000001000000FFFFFFFFFFFFFFFF2D010000B400000087050000B8000000010000000100001004000000010000009EFFFFFF79020000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000AE0300002EFCFFFF0808000093FCFFFF2D0100004F00000087050000B40000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF0C0300004F000000100300003F010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000910500002EFCFFFF310600001EFDFFFF100300004F000000B00300003F01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF290100004F0000002D0100003503000001000000020000100400000001000000DCFEFFFF58040000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000810200002EFCFFFFAA03000014FFFFFF000000004F00000029010000350300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000035030000870500003903000001000000010000100400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC003000039030000C4030000D003000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000B001000000050000B4010000000000000100000004000000010000003EFEFFFF62000000FFFFFFFF05000000C5000000B4010000D2010000CF01000077940000018000800000000000008102000093FDFFFF810700005DFEFFFF00000000B4010000000500007E0200000000000040820046050000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF870500004F0000008B050000D003000001000000020000100400000001000000A8FBFFFFF301000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000400000010000000C0800002EFCFFFF010A0000AFFFFFFF8B0500004F00000080070000D003000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F0700000000000001000000C7000000008000000100000081020000AFFFFFFF010A00006500000001000000010000000100000000000000</Data>
      </DockMan>
      <ToolBar>
        <RegID>59392</RegID>
        <Name>File</Name>
        <Buttons>
          <Len>2898</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000B74785F6E6561725F6D7367960000000000000014000B74785F6E6561725F6D73670C7365697A655F616E63686F72084E656172506F6C6C0B75736172745F74696D65720B675F5265737474696D65720D75736172745F73656E645B305D0A75736172745F73656E640E7461675F726563765F74696D65720F657873697374626173655F6C697374116E656172626173655F646973746C69737416747275655F6E656172626173655F646973746C6973740F6E6561726261736569645F6C6973740D5461674C6973745570646174650E7461676F66666C696E6574696D650A746167736C6F74706F730B7461676C6973745F706F730B726563626173655F6E756D0A55534152545F707574630C6E656172626173655F6E756D0A6D61696E5F6C6F6769630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
          <Len>2894</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000067072696E746696000000000000001400067072696E74660D74796E63706F6C6C5F74696D6511675F73746172745F73796E635F666C61670873796E635F7365710D666C61675F73796E63626173650B675F5265737474696D65720853796E63506F6C6C0B74785F6E6561725F6D73670C7365697A655F616E63686F72084E656172506F6C6C0B75736172745F74696D65720D75736172745F73656E645B305D0A75736172745F73656E640E7461675F726563765F74696D65720F657873697374626173655F6C697374116E656172626173655F646973746C69737416747275655F6E656172626173655F646973746C6973740F6E6561726261736569645F6C6973740D5461674C6973745570646174650E7461676F66666C696E6574696D650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
        </Buttons>
        <OriginalItems>
          <Len>1423</Len>
@@ -3563,7 +3563,7 @@
        <Name>Build</Name>
        <Buttons>
          <Len>970</Len>
          <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
          <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
        </Buttons>
        <OriginalItems>
          <Len>583</Len>
@@ -3579,7 +3579,7 @@
        <Name>Debug</Name>
        <Buttons>
          <Len>2362</Len>
          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
        </Buttons>
        <OriginalItems>
          <Len>898</Len>
@@ -3603,39 +3603,39 @@
    <ActiveMDIGroup>0</ActiveMDIGroup>
    <MDIGroup>
      <Size>100</Size>
      <ActiveTab>0</ActiveTab>
      <ActiveTab>2</ActiveTab>
      <Doc>
        <Name>..\Src\application\dw_app.c</Name>
        <ColumnNumber>6</ColumnNumber>
        <TopLine>421</TopLine>
        <CurrentLine>438</CurrentLine>
        <TopLine>293</TopLine>
        <CurrentLine>294</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\stm32f10x_it.c</Name>
        <ColumnNumber>16</ColumnNumber>
        <TopLine>46</TopLine>
        <CurrentLine>71</CurrentLine>
        <ColumnNumber>4</ColumnNumber>
        <TopLine>94</TopLine>
        <CurrentLine>111</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\main.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>132</TopLine>
        <CurrentLine>157</CurrentLine>
        <ColumnNumber>30</ColumnNumber>
        <TopLine>82</TopLine>
        <CurrentLine>68</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\decadriver\deca_device.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <ColumnNumber>35</ColumnNumber>
        <TopLine>2736</TopLine>
        <CurrentLine>2747</CurrentLine>
        <CurrentLine>2738</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
@@ -3643,8 +3643,80 @@
      <Doc>
        <Name>..\Src\application\dw_app.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>70</TopLine>
        <CurrentLine>81</CurrentLine>
        <TopLine>41</TopLine>
        <CurrentLine>54</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\application\global_param.c</Name>
        <ColumnNumber>18</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\application\global_param.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>12</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\application\beep_logic_app.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>30</TopLine>
        <CurrentLine>44</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\OnChipDevices\Spi.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>154</TopLine>
        <CurrentLine>171</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\OnChipDevices\Usart.c</Name>
        <ColumnNumber>33</ColumnNumber>
        <TopLine>71</TopLine>
        <CurrentLine>85</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>E:\GIT\UWB_SmallModule\源码\核心板\MDK-ARM\1</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>888</TopLine>
        <CurrentLine>906</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\OnChipDevices\Usart.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>6</TopLine>
        <CurrentLine>23</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\Src\Libraries\STM32F10x_StdPeriph_Driver\inc\stm32f10x_gpio.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>117</TopLine>
        <CurrentLine>112</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
Ô´Âë/ºËÐİå/MDK-ARM/Project.uvoptx
@@ -120,7 +120,7 @@
        <SetRegEntry>
          <Number>0</Number>
          <Key>DLGUARM</Key>
          <Name></Name>
          <Name>d</Name>
        </SetRegEntry>
        <SetRegEntry>
          <Number>0</Number>
@@ -159,7 +159,7 @@
          <Type>0</Type>
          <LineNumber>2747</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>134256476</Address>
          <Address>134256892</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
@@ -173,7 +173,55 @@
        <Bp>
          <Number>1</Number>
          <Type>0</Type>
          <LineNumber>709</LineNumber>
          <LineNumber>75</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>134248176</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
          <SizeOfObject>0</SizeOfObject>
          <BreakByAccess>0</BreakByAccess>
          <BreakIfRCount>1</BreakIfRCount>
          <Filename>E:\GIT\UWB_SmallModule\婧愮爜\Src\main.c</Filename>
          <ExecCommand></ExecCommand>
          <Expression>\\UWB_Projects\../Src/main.c\75</Expression>
        </Bp>
        <Bp>
          <Number>2</Number>
          <Type>0</Type>
          <LineNumber>296</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>134246560</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
          <SizeOfObject>0</SizeOfObject>
          <BreakByAccess>0</BreakByAccess>
          <BreakIfRCount>1</BreakIfRCount>
          <Filename>E:\GIT\UWB_SmallModule\婧愮爜\Src\application\dw_app.c</Filename>
          <ExecCommand></ExecCommand>
          <Expression>\\UWB_Projects\../Src/application/dw_app.c\296</Expression>
        </Bp>
        <Bp>
          <Number>3</Number>
          <Type>0</Type>
          <LineNumber>296</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>134247298</Address>
          <ByteObject>0</ByteObject>
          <HtxType>0</HtxType>
          <ManyObjects>0</ManyObjects>
          <SizeOfObject>0</SizeOfObject>
          <BreakByAccess>0</BreakByAccess>
          <BreakIfRCount>1</BreakIfRCount>
          <Filename>E:\GIT\UWB_SmallModule\婧愮爜\Src\application\dw_app.c</Filename>
          <ExecCommand></ExecCommand>
          <Expression>\\UWB_Projects\../Src/application/dw_app.c\296</Expression>
        </Bp>
        <Bp>
          <Number>4</Number>
          <Type>0</Type>
          <LineNumber>297</LineNumber>
          <EnabledFlag>1</EnabledFlag>
          <Address>0</Address>
          <ByteObject>0</ByteObject>
@@ -283,6 +331,36 @@
          <WinNumber>1</WinNumber>
          <ItemText>sync_timer,0x0A</ItemText>
        </Ww>
        <Ww>
          <count>19</count>
          <WinNumber>1</WinNumber>
          <ItemText>tyncpoll_time</ItemText>
        </Ww>
        <Ww>
          <count>20</count>
          <WinNumber>1</WinNumber>
          <ItemText>synclost_timer,0x0A</ItemText>
        </Ww>
        <Ww>
          <count>21</count>
          <WinNumber>1</WinNumber>
          <ItemText>current_syncid,0x0A</ItemText>
        </Ww>
        <Ww>
          <count>22</count>
          <WinNumber>1</WinNumber>
          <ItemText>flag_syncbase</ItemText>
        </Ww>
        <Ww>
          <count>23</count>
          <WinNumber>1</WinNumber>
          <ItemText>status_reg</ItemText>
        </Ww>
        <Ww>
          <count>24</count>
          <WinNumber>1</WinNumber>
          <ItemText>g_com_map[DEV_ID]</ItemText>
        </Ww>
      </WatchWindow1>
      <MemoryWindow1>
        <Mm>
Ô´Âë/ºËÐİå/Src/application/dw_app.c
@@ -171,14 +171,23 @@
}
extern uint8_t g_start_send_flag;
u8 g_start_sync_flag;
void SyncPoll(u8 sync_seq)
{
    g_start_sync_flag=1;
    dwt_forcetrxoff();
void SyncPoll(u8 sync_seq,uint32_t sync_baseid)
{u8 result;
    g_start_sync_flag=1;   //中断模式,退出终端后,需要重新来过
    dwt_forcetrxoff();       //关闭接收,以防在RX ON çŠ¶æ€
    tx_sync_msg[SYNC_SEQ_IDX]=sync_seq;
    memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&sync_baseid,4);
    dwt_writetxdata(sizeof(tx_sync_msg), tx_sync_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
    dwt_writetxfctrl(sizeof(tx_sync_msg), 0);//设置超宽带发送数据长度
    dwt_starttx(DWT_START_TX_IMMEDIATE);
    if(result==0)
            {
             while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成
                { };
        }
             dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//清楚标志位
}
uint16_t g_Resttimer;
uint8_t result;
@@ -194,8 +203,8 @@
u16 anclist_num=0,anclist_pos; //list æ€»æ•°é‡å’Œå½“前位置
u16 ancid_list[TAG_NUM_IN_SYS];
u8 nearbase_num=0;
u16 nearbaseid_list[10],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM];
int32_t mainbase_dist,nearbase_distlist[10],true_nearbase_distlist[MAX_NEARBASE_NUM];
u16 nearbaseid_list[MAX_NEARBASE_NUM],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM];
int32_t mainbase_dist,nearbase_distlist[MAX_NEARBASE_NUM],true_nearbase_distlist[MAX_NEARBASE_NUM];
uint8_t trygetnearmsg_times;
u8 FindNearBasePos(u16 baseid)
@@ -242,9 +251,10 @@
}
u8 anclost_times=0;
u8 exsistbase_list[MAX_NEARBASE_NUM],report_num;
u16 temp_sync_timer1,temp_sync_timer2;
void NearPoll(void)
{
    static u8 mainbase_lost_count=0,flag_finalsend;
    static u8 mainbase_lost_count=0,flag_finalsend,flag_rxon;
    uint32_t temp1,temp2,dw_systime;
    uint32_t frame_len;
    uint32_t final_tx_time;
@@ -255,13 +265,13 @@
    dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);            //设置发送后开启接收,并设定延迟时间
    dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);        
    tag_succ_times = 0;
    GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET);
    if(nearbase_num>=MAX_NEARBASE_NUM)
    {
        nearbase_num = MAX_NEARBASE_NUM-1;
    }
    //nearbase_num=0;
    recbase_num=0;
    tx_nearpoll_msg[BATTARY_IDX] = Get_Battary();
    tx_nearpoll_msg[BUTTON_IDX] = !READ_KEY0;
    tx_nearpoll_msg[SEQUENCE_IDX] = frame_seq_nb++;
@@ -277,9 +287,11 @@
    exsistbase_list[i]=0;
    
    flag_finalsend=0;
    flag_rxon=1;
    neartimout_timer=0;
    timeout=nearbase_num/4+2;
    timeout=ceil((float)nearbase_num/4)+2;
    //timeout=5;
    mainbase_dist=100000;
    mainbase_lost_count++;
            while(neartimout_timer<timeout)
@@ -292,6 +304,7 @@
                            if(dw_systime>temp1&&dw_systime<temp2)
                            {
                                flag_finalsend=0;
                                flag_rxon=0;
                                dwt_forcetrxoff();
                                dwt_setdelayedtrxtime(final_tx_time);
                                result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送    
@@ -328,8 +341,10 @@
                                if(rec_nearbaseid==nearbaseid_list[0])
                                {
                                    //////////////////////////////////时间同步
                                    memcpy(&sync_timer,&rx_buffer[ANCTIMEMS],2);
                                    temp_sync_timer2=sync_timer;
                                    memcpy(&temp_sync_timer1,&rx_buffer[ANCTIMEMS],2);
                                    memcpy(&tmp_time,&rx_buffer[ANCTIMEUS],2);
                                    sync_timer=temp_sync_timer1;
                                    exsistbase_list[0]=1;
////                                    memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2);        
//                                    
@@ -421,9 +436,22 @@
                                }
                            }                                    
                            }
                        }
                        }else{
                        dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR);
                        if(flag_rxon)
                            {dwt_rxenable(0);
                            }
                        }
            }
                GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET);
//            if(result==0)
//            {
//             while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成
//                { };
//        }
//             dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//清楚标志位
            dwt_write32bitreg(SYS_STATUS_ID,SYS_STATUS_RXFCG| SYS_STATUS_ALL_RX_ERR);
            nearbase_num=recbase_num;
            j=0;
            if(exsistbase_list[0]==0)
@@ -475,6 +503,7 @@
                    report_num++;
                }
            }
        //    printf("%d,%d",temp_sync_timer2,temp_sync_timer1);
            #ifdef USART_INTEGRATE_OUTPUT        
                usart_send[2] = 4;//正常模式
                usart_send[3] = report_num*6+2;//正常模式
@@ -757,21 +786,27 @@
                    anc_report_num++;
                #endif
                    }else{
                    //    printf("%d",hex_dist);
                        misdist_num++;
                    }
                }
            }
        
            }else{
                    //printf("%x/n",status_reg);
                dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
            }
    
}
uint32_t current_syncid=0xffffffff,synclost_timer;
extern u8 flag_syncbase;
void Anchor_App(void)
{
    
    u8 send_len,i;
    u16 tempid;
    uint32_t rec_syncid;
    g_start_sync_flag=0;
    dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
    dwt_rxenable(0);//打开接收
@@ -795,6 +830,7 @@
        taglist_pos=CmpTagInList(tag_id_recv);
        if(taglist_pos==0)
        {
            synclost_timer=0;
            tagid_list[taglist_num++]=tag_id_recv;
            taglist_pos=taglist_num;
            new_tagid=1;
@@ -809,13 +845,30 @@
//                Anchor_RecPoll();
//                break;
            case SYNC:
                if(rx_buffer[SYNC_SEQ_IDX]<sync_seq)
                    {
                        sync_seq=rx_buffer[SYNC_SEQ_IDX]+1;
                        TIM3->CNT = sync_seq*325%1000+15;
                        sync_timer = sync_seq*325/1000;
                        SyncPoll(sync_seq);
                    }
                memcpy(&rec_syncid,&rx_buffer[ANCHOR_ID_IDX],4);
                if(rec_syncid<current_syncid)
                {
                    current_syncid=rec_syncid;
                    flag_syncbase=0;
                    sync_seq=rx_buffer[SYNC_SEQ_IDX]+1;
                    TIM3->CNT = sync_seq*325%1000+15;
                    sync_timer = sync_seq*325/1000;
                    synclost_timer=0;
                    SyncPoll(sync_seq,rec_syncid);
                    }else if(rec_syncid==current_syncid)
                {
                    if(rx_buffer[SYNC_SEQ_IDX]<sync_seq)
                        {
                            flag_syncbase=0;
                            sync_seq=rx_buffer[SYNC_SEQ_IDX]+1;
                            TIM3->CNT = sync_seq*325%1000+15;
                            sync_timer = sync_seq*325/1000;
                            synclost_timer=0;
                            SyncPoll(sync_seq,rec_syncid);
                        }
                }
                break;
//            case NEAR_MSG:
//                if(anc_id_recv==dev_id)
Ô´Âë/ºËÐİå/Src/application/dw_app.h
@@ -26,7 +26,7 @@
//#define TAG_OUTPUT
#define HEX_OUTPUT
#define MAX_NEARBASE_NUM 10
#define MAX_NEARBASE_NUM 12
#define REPOET_ANC_NUM 1
#define REPOET_ANC_NUM_MIN 1
@@ -57,7 +57,7 @@
#define DELAY_BETWEEN_TWO_FRAME_UUS 240
#define POLL_RX_TO_RESP_TX_DLY_UUS 420
#define POLL_RX_TO_RESP_TX_DLY_UUS 470
/* This is the delay from the end of the frame transmission to the enable of the receiver, as programmed for the DW1000's wait for response feature. */
#define RESP_TX_TO_FINAL_RX_DLY_UUS 200
/* Receive final timeout. See NOTE 5 below. */
@@ -93,6 +93,7 @@
#define FINAL_MSG_RESP_RX_NEARBASE_IDX  22
#define FINAL_MSG_TS_LEN 4
//SYNC
#define ANCHOR_ID_IDX                1
#define SYNC_SEQ_IDX                5
//NEAR MSG
#define NEARBASENUM_INDEX    10
@@ -128,5 +129,5 @@
extern void TagDistClear(void);
void Dw1000_App_Init(void);
void TagListUpdate(void);
void SyncPoll(u8 sync_seq);
void SyncPoll(u8 sync_seq,uint32_t sync_baseid);
#endif
Ô´Âë/ºËÐİå/Src/application/global_param.h
@@ -6,7 +6,7 @@
#define COM_MAP_SIZE            512        //MAP表的最大空间
#define    DEFAULT_DISTANCE    1000        //初始测距距离为10ç±³
#define DEFAULT_DEV_ID        5555        //默认设备ID是5555
#define SYNCLOST_TIME     10000  //多久收不到信号变成同步基站
/*---------------Map Definition-------------------*/
#define     VERSION                      0x1        
#define     DEV_ID                                0x2        //设备的Id
Ô´Âë/ºËÐİå/Src/main.c
@@ -65,9 +65,9 @@
        save_com_map_to_flash();
#endif
    OUT485_ENABLE;
    g_com_map[VERSION] = 0x010c;
    g_com_map[VERSION] = 0x010e;
    dev_id = g_com_map[DEV_ID];
    slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]/3)+1;
    slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]/4)+4;
    max_slotpos=g_com_map[COM_INTERVAL]/slottime;
    tyncpoll_time=(g_com_map[DEV_ID]%max_slotpos)*slottime;    
    
@@ -112,7 +112,7 @@
u16 heartbeat_timer,poll_timer,sync_timer;
void IdleTask(void)
{
    g_start_sync_flag=0;
        main_logic();
            UART_CheckReceive();
        UART_CheckSend();
    if(heartbeat_timer>1000)
@@ -168,7 +168,7 @@
    
    while(1)
    {
    g_start_sync_flag=0;
    if(g_start_send_flag)
    {
        g_start_send_flag = 0;        
@@ -177,6 +177,7 @@
        IdleTask();        
if(g_com_map[DEV_ROLE]==0)
        Anchor_App();
    }
}
Ô´Âë/ºËÐİå/Src/stm32f10x_it.c
@@ -35,12 +35,12 @@
uint8_t g_start_send_flag = 0,sync_seq=0,usart_send_flag;
u16 usart_timer=0;
uint16_t sysscal;
u16 tag_recv_timer, tag_timer;
u16 tag_recv_timer, tag_timer,last_polltime;
extern uint16_t g_Resttimer,heartbeat_timer,sync_timer;
extern uint8_t g_pairstart;
u8 neartimout_timer=0;
u8 neartimout_timer=0,flag_syncbase=0;
extern u16 tyncpoll_time;
extern uint32_t synclost_timer,current_syncid;
void TIM3_IRQHandler(void)   //TIM3??
{
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //??TIM3????????
@@ -50,13 +50,17 @@
    time32_incr++;
    heartbeat_timer++;
    sync_timer++;    
    neartimout_timer++;
    if(sync_timer>=1010)
        {sync_timer=0;}
    neartimout_timer++;
    synclost_timer++;
    if(sync_timer>=1000)
        {
            sync_timer=0;
          TagListUpdate();
        }
        
    if(g_Resttimer++>2000)
    {
        //NVIC_SystemReset();
        NVIC_SystemReset();
    }
@@ -68,17 +72,16 @@
        TagDistClear();
    if(g_com_map[ANC_POLL])
        {
            if((sync_timer-10)%g_com_map[COM_INTERVAL]==tyncpoll_time&&sync_timer>=10&&sync_timer!=1010)
            if(sync_timer%g_com_map[COM_INTERVAL]==tyncpoll_time&&sync_timer<990&&sync_timer!=last_polltime)
            {
            g_start_send_flag=1;
            }
        }
        //if(g_com_map[ALARM_DEV]!=0)
            main_logic();
        #ifdef USART_INTEGRATE_OUTPUT
        if(usart_timer++>=g_com_map[COM_INTERVAL])
        if(sync_timer%g_com_map[COM_INTERVAL]==tyncpoll_time&&sync_timer<990)
        {
            usart_timer=0;
            usart_send_flag=1;        
        }
        #endif
@@ -86,16 +89,24 @@
        {
         sync_seq=0xff;
        }
        if(sync_timer==0)
        if(synclost_timer>SYNCLOST_TIME)
        {
            TagListUpdate();
            if(dev_id==0)
                SyncPoll(0);
            flag_syncbase=1;
        }
    }else{        //标签同步处理
        if((sync_timer-10)%g_com_map[COM_INTERVAL]==tyncpoll_time&&sync_timer>=10&&sync_timer!=1010)
        if(flag_syncbase)  //本模块是同步基站
        {
        if(sync_timer==995)
        {
            current_syncid = g_com_map[DEV_ID];
            sync_seq=0;
                SyncPoll(sync_seq,current_syncid);
        }
    }
    }else{        //标签同步处理
        if(sync_timer%g_com_map[COM_INTERVAL]==tyncpoll_time&&sync_timer<990&&sync_timer!=last_polltime)
        {
            last_polltime=sync_timer;
        //    GPIO_WriteBit(GPIOA, GPIO_Pin_9, Bit_SET);
        g_start_send_flag=1;
        }