added k60d100m project
[adk-bluetooth-test.git] / adk-stack / BT.c
blobc094a8e550d421e0e7fb3399646243ed02277f30
1 /*
2 * Copyright (C) 2012 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 #define ADK_INTERNAL
17 #include "fwk.h"
18 #include "BT.h"
19 #include "HCI.h"
20 #include "dbg.h"
21 #include "coop.h"
22 #include "sgBuf.h"
24 #define BT_TASK_STACK_SIZE 3000
25 uint32_t bt_task_handle = 0;
27 int bt_init_done = 0;
28 extern void l2capAclLinkDownAll();
29 extern unsigned int usbdev_check_attached();
32 #define BT_VERBOSE 0
34 #define PACKET_RX_BACKLOG_SZ 4
35 #if defined(BT_MODULE_CC256X)
36 extern const uint8_t cc256x_init_script[];
37 #endif
39 static uint8_t* backlog[PACKET_RX_BACKLOG_SZ] = {0, };
40 static uint8_t btThreadDie;
41 static BtFuncs cbks;
43 #define RESET PORTA(0)
44 #define TX PORTA(10)
45 #define RX PORTA(11)
46 #define RTS PORTB(25)
47 #define CTS PORTB(26)
49 // liutest add
50 #define PACKET_STORE_MAXSZ (BT_RX_BUF_SZ)
51 static uint32_t packetStore[(BT_RX_BUF_SZ + 3) >> 2];
52 static uint8_t* packet = (uint8_t*)packetStore;
53 static uint8_t pageState;
54 static uint16_t gAclPacketsCanSend = 0;
56 typedef struct BtEnqueuedNode{
58 struct BtEnqueuedNode* next;
60 sg_buf* buf;
61 uint16_t conn;
62 char first;
63 uint8_t bcastType;
65 }BtEnqueuedNode;
67 BtEnqueuedNode* enqueuedPackets = NULL;
69 static char btDiscoverableConnectable(void);
71 static uint8_t* hciCmdPacketStart(uint16_t ogf, uint16_t ocf){ //start a packet in "packet", return "state" pointer
73 HCI_Cmd* cmd = (HCI_Cmd*)packetStore;
75 cmd->opcode = HCI_OPCODE(ogf, ocf);
76 return packet + 3;
79 static uint8_t* hciCmdPacketAddU32(uint8_t* state, uint32_t val){ //add a uint32 to packet, update state
81 *state++ = val;
82 *state++ = val >> 8;
83 *state++ = val >> 16;
84 *state++ = val >> 24;
86 return state;
89 static uint8_t* hciCmdPacketAddU24(uint8_t* state, uint32_t val){ //add a uint24 to packet, update state
91 *state++ = val;
92 *state++ = val >> 8;
93 *state++ = val >> 16;
95 return state;
98 static uint8_t* hciCmdPacketAddU16(uint8_t* state, uint16_t val){ //add a uint32 to packet, update state
100 *state++ = val;
101 *state++ = val >> 8;
103 return state;
106 static uint8_t* hciCmdPacketAddU8(uint8_t* state, uint8_t val){ //add a uint32 to packet, update state
108 *state++ = val;
110 return state;
113 static uint32_t hciCmdPacketFinish(uint8_t* state){ //finish, return size to send
115 HCI_Cmd* cmd = (HCI_Cmd*)packetStore;
116 uint32_t paramLen = state - packet - 3;
118 cmd->totalParamLen = paramLen;
119 return paramLen + 3;
122 static void btTxCmdPacketEx(const HCI_Cmd* cmd){
124 uint8_t typ = UART_PKT_TYP_CMD;
125 hci_write (typ, (uint8_t*)cmd, 3 + cmd->totalParamLen);
126 //btUartSend(&typ, 1);
127 //btUartSend((uint8_t*)cmd, 3 + cmd->totalParamLen); //cannot use sizeof thanks to gcc
130 static void btTxCmdPacket(void){
132 btTxCmdPacketEx((HCI_Cmd*)packetStore);
135 static void btAclDataTxBuf(uint16_t conn, char first, uint8_t bcastType, const uint8_t* data, uint16_t sz){
137 uint8_t typ = UART_PKT_TYP_ACL;
138 HCI_ACL_Data* acl = (HCI_ACL_Data*)packetStore;
139 acl->info = conn | (first ? 0x2000 : 0x1000) | ((uint32_t)bcastType) << 14;
140 acl->totalDataLen = sz;
141 #if 0
142 if(sz <= PACKET_STORE_MAXSZ - 4) {
143 memcpy( ((uint8_t*)packetStore) + 4,data,sz);
144 hci_write (typ, (uint8_t*)acl, 4 + sz);
146 else {
147 hci_write (typ, (uint8_t*)acl, 4 );
148 hci_write (typ, (uint8_t*)data, sz );
150 #else
151 hci_write (typ, (uint8_t*)acl, 4 );
152 hci_write (typ, (uint8_t*)data, sz );
153 #endif
155 //btUartSend(&typ, 1);
156 //btUartSend((uint8_t*)acl, 4);
157 //btUartSend(data, sz);
160 static void btAclDoDataTx(uint16_t conn, char first, uint8_t bcastType, sg_buf* buf){
162 #if 0
163 sg_iter iter;
164 uint8_t typ = UART_PKT_TYP_ACL;
165 HCI_ACL_Data* acl = (HCI_ACL_Data*)packetStore;
166 const uint8_t* data;
167 uint32_t len ,total = 4;
169 gAclPacketsCanSend --;
170 acl->info = conn | (first ? 0x2000 : 0x1000) | ((uint32_t)bcastType) << 14;
171 acl->totalDataLen = sg_length(buf);
173 // total = 4;
175 iter = sg_iter_start(buf);
176 while(sg_iter_next(&iter, &data, &len)) {
177 if ((total + len) >1024) {
178 hci_write (typ, (uint8_t*)acl, total );
179 printf("acl tx total %d\n",len);
180 acl = (HCI_ACL_Data*)packetStore;
181 total = len;
183 else {
184 memcpy(((uint8_t *)acl + total),data,len);
185 total += len;
189 if(total > 0) {
190 hci_write (typ, (uint8_t*)acl, total );
193 //btUartSend(&typ, 1);
194 //btUartSend((uint8_t*)acl, 4);
195 //iter = sg_iter_start(buf);
196 //while(sg_iter_next(&iter, &data, &len)) btUartSend(data, len);
198 sg_free(buf);
199 free(buf);
200 #else
201 sg_iter iter;
202 uint8_t typ = UART_PKT_TYP_ACL;
203 HCI_ACL_Data* acl = (HCI_ACL_Data*)packetStore;
204 const uint8_t* data;
205 uint32_t len;
207 gAclPacketsCanSend --;
208 acl->info = conn | (first ? 0x2000 : 0x1000) | ((uint32_t)bcastType) << 14;
209 acl->totalDataLen = sg_length(buf);
211 hci_write (typ, (uint8_t*)acl, 4 );
212 //printf("acl4\n");
214 iter = sg_iter_start(buf);
215 while(sg_iter_next(&iter, &data, &len)) {/* printf("acl%d\n",len);*/ hci_write (typ, (uint8_t*)data, len );}
217 sg_free(buf);
218 free(buf);
219 #endif
222 void btAclDataTx(uint16_t conn, char first, uint8_t bcastType, sg_buf* buf){
224 if(gAclPacketsCanSend){
226 btAclDoDataTx(conn, first, bcastType, buf);
228 else{
230 BtEnqueuedNode *q = enqueuedPackets, *n = malloc(sizeof(BtEnqueuedNode));
231 if(!n){
233 //packet dropped due to lack of memory...sorry
234 sg_free(buf);
235 free(buf);
236 return;
238 n->buf = buf;
239 n->conn = conn;
240 n->first = first;
241 n->bcastType = bcastType;
242 n->next = NULL;
244 while(q && q->next) q = q->next;
245 if(q) q->next = n;
246 else enqueuedPackets = n;
250 static void btEnqueuePacket(uint8_t typ){ //we got a packet but it's not for us - enqueue it for someone else to use
252 uint8_t* copy;
253 unsigned sz, i;
255 switch(typ){
256 case UART_PKT_TYP_ACL:
257 sz = ((HCI_ACL_Data*)packetStore)->totalDataLen + 4L;
258 break;
260 case UART_PKT_TYP_SCO:
261 sz = ((HCI_SCO_Data*)packetStore)->totalDataLen + 3L;
262 break;
264 case UART_PKT_TYP_EVT:
265 sz = ((HCI_Event*)packetStore)->totalParamLen + 2L;
266 if(!bt_init_done)
267 printf("EVT:%d\n",sz);
268 break;
270 default:
271 //no idea what it is...drop it on the floor
272 return;
275 copy = malloc(sz + 1);
276 if(!copy) return; //cannot alloc -> fail
278 copy[0] = typ;
279 for(i = 0; i < sz; i++) copy[i + 1] = packet[i];
280 for(i = 0; i < PACKET_RX_BACKLOG_SZ; i++) if(!backlog[i]) break;
281 if(i == PACKET_RX_BACKLOG_SZ){ //we have to drop something
283 #if BT_VERBOSE
285 dbgPrintf("BT: dropping backlog item: %d, 0x%x\n", backlog[0][0], backlog[0][1]);
287 #endif
288 free(backlog[0]);
289 for(i = 0; i < PACKET_RX_BACKLOG_SZ - 1; i++) backlog[i] = backlog[i + 1];
291 backlog[i] = copy;
294 static uint8_t btRxPacket(void){ //return type
296 uint8_t typ;
297 uint8_t* dst;
298 unsigned sz,acl_len;
300 sz = BT_RX_BUF_SZ;
301 dst = packet ;
302 if(!hci_read ((HCI_TYPE *)&typ, dst,&sz)) // todo judge sz in the hci_read
303 return 0;
305 switch(typ){
306 case UART_PKT_TYP_ACL:
307 acl_len = ((HCI_ACL_Data*)packetStore)->totalDataLen;
308 break;
310 case UART_PKT_TYP_SCO:
311 acl_len = ((HCI_SCO_Data*)packetStore)->totalDataLen;
312 break;
314 case UART_PKT_TYP_EVT:
315 acl_len = ((HCI_Event*)packetStore)->totalParamLen;
316 break;
318 default:
319 //no idea what it is...drop it on the floor
320 printf("no idea what it is...drop it on the floor\n");
321 return 0;
324 if(sz > BT_RX_BUF_SZ) {
325 dbgPrintf("BT: Incoming packet too big. Dropping hcilen=%d,acllen=%d\n",sz,acl_len);
326 return 0;
330 #if BT_VERBOSE
332 uint8_t *start = packet, *end = dst + sz;
334 dbgPrintf("RX: %02X", typ);
335 while(start < end) dbgPrintf(" %02X", *start++);
336 dbgPrintf("\n");
338 #endif
340 return typ;
343 static void btTaskF(void* ptr){
345 HCI_Event* e = (HCI_Event*)packetStore;
346 HCI_ACL_Data* acl = (HCI_ACL_Data*)packetStore;
347 uint8_t* packetState;
348 uint16_t conn;
349 uint8_t mac[6];
350 uint8_t buf[16];
351 unsigned i, j;
353 printf("btTaskF start\n");
354 while(!btThreadDie && usbdev_check_attached()){
356 uint8_t typ;
358 if((typ = btRxPacket())){
359 //printf("1\n");
360 if ((!bt_init_done) && ((typ >= UART_PKT_TYP_CMD) ||(typ <= UART_PKT_TYP_EVT))) {
361 btEnqueuePacket(typ);
362 continue;
366 if(typ == UART_PKT_TYP_ACL){
367 cbks.BtAclDataRxF(cbks.userData, acl->info & 0x0FFF, ((acl->info >> 12) & 3) == 2, acl->info >> 14, acl->data, acl->totalDataLen); /* btAclDataRxF */
369 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Connection_Request_Event){
370 //printf("UART_PKT_TYP_EVT\n");
371 uint32_t dc = e->params[6] + (((uint32_t)e->params[7]) << 8) + (((uint32_t)e->params[8]) << 16);
373 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
375 if(cbks.BtConnReqF(cbks.userData, mac, dc, e->params[9])){ //accept it
377 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_Accept_Connection_Request);
378 i = 1;
380 else{ //reject it
382 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_Reject_Connection_Request);
383 i = 0x0F; //rejected...
385 packetState = hciCmdPacketAddU8(packetState, mac[0]);
386 packetState = hciCmdPacketAddU8(packetState, mac[1]);
387 packetState = hciCmdPacketAddU8(packetState, mac[2]);
388 packetState = hciCmdPacketAddU8(packetState, mac[3]);
389 packetState = hciCmdPacketAddU8(packetState, mac[4]);
390 packetState = hciCmdPacketAddU8(packetState, mac[5]);
391 packetState = hciCmdPacketAddU8(packetState, i); //we'll be the slave on the connection...for now
392 hciCmdPacketFinish(packetState);
393 btTxCmdPacket();
395 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Connection_Complete_Event && !e->params[0]){
397 conn = e->params[1] + (((uint32_t)e->params[2]) << 8);
398 printf("new connect %d\n",conn);
400 cbks.BtConnStartF(cbks.userData, conn, e->params + 3, e->params[9], e->params[10]);
402 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Disconnection_Complete_Event){
404 BtEnqueuedNode *t, *n = enqueuedPackets, *p = NULL;
405 conn = e->params[1] + (((uint32_t)e->params[2]) << 8);
406 //printf("get disconnect %d\n",conn);
408 cbks.BtConnEndF(cbks.userData, conn, e->params[3]);
410 while(n){
412 if(n->conn == conn){
414 if(p) p->next = n->next;
415 else enqueuedPackets = n->next;
416 t = n;
417 n = n->next;
418 sg_free(t->buf);
419 free(t->buf);
420 free(t);
422 else{
424 p = n;
425 n = n->next;
429 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_PIN_Code_Request_Event){
430 //printf("HCI_EVT_PIN_Code_Request_Event\n");
432 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
433 i = cbks.BtPinRequestF(cbks.userData, mac, buf);
434 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, i ? HCI_CMD_PIN_Code_Request_Reply : HCI_CMD_PIN_Code_Request_Negative_Reply);
435 packetState = hciCmdPacketAddU8(packetState, mac[0]);
436 packetState = hciCmdPacketAddU8(packetState, mac[1]);
437 packetState = hciCmdPacketAddU8(packetState, mac[2]);
438 packetState = hciCmdPacketAddU8(packetState, mac[3]);
439 packetState = hciCmdPacketAddU8(packetState, mac[4]);
440 packetState = hciCmdPacketAddU8(packetState, mac[5]);
442 if(i){ //accept
444 packetState = hciCmdPacketAddU8(packetState, i);
445 for(j = 0; j < 16; j++) packetState = hciCmdPacketAddU8(packetState, buf[j]);
447 hciCmdPacketFinish(packetState);
448 btTxCmdPacket();
450 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Number_Of_Completed_Packets_Event){
452 uint8_t numHandles = e->params[0];
453 //printf("HCI_EVT_Number_Of_Completed_Packets_Event\n");
454 for(i = 0; i < numHandles; i++) gAclPacketsCanSend += (((uint16_t)e->params[1 + i * 4 + 3]) << 8) | e->params[1 + i * 4 + 2];
456 while(gAclPacketsCanSend && enqueuedPackets){
458 BtEnqueuedNode* n = enqueuedPackets;
460 enqueuedPackets = n->next;
461 btAclDoDataTx(n->conn, n->first, n->bcastType, n->buf);
462 free(n);
465 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Link_Key_Request_Event){
466 //printf("HCI_EVT_Link_Key_Request_Event\n");
467 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
468 i = cbks.BtLinkKeyRequestF(cbks.userData, mac, buf);
469 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, i ? HCI_CMD_Link_Key_Request_Reply : HCI_CMD_Link_Key_Request_Negative_Reply);
470 packetState = hciCmdPacketAddU8(packetState, mac[0]);
471 packetState = hciCmdPacketAddU8(packetState, mac[1]);
472 packetState = hciCmdPacketAddU8(packetState, mac[2]);
473 packetState = hciCmdPacketAddU8(packetState, mac[3]);
474 packetState = hciCmdPacketAddU8(packetState, mac[4]);
475 packetState = hciCmdPacketAddU8(packetState, mac[5]);
477 if(i){ //link key given to us
479 for(j = 0; j < 16; j++) packetState = hciCmdPacketAddU8(packetState, buf[j]);
481 hciCmdPacketFinish(packetState);
482 btTxCmdPacket(); /* run to this pendig */
484 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Link_Key_Notification_Event){
485 //printf("HCI_EVT_Link_Key_Notification_Event\n");
486 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
487 for(i = 0; i < 16; i++) buf[i] = e->params[i + sizeof(mac)];
489 cbks.BtLinkKeyCreatedF(cbks.userData, mac, buf);
491 #if SUPORT_SSP //this was done last minute, but should work :) -DG
493 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_IO_Capability_Request_Event){
495 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
497 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_IO_Capability_Request_Reply);
498 packetState = hciCmdPacketAddU8(packetState, mac[0]);
499 packetState = hciCmdPacketAddU8(packetState, mac[1]);
500 packetState = hciCmdPacketAddU8(packetState, mac[2]);
501 packetState = hciCmdPacketAddU8(packetState, mac[3]);
502 packetState = hciCmdPacketAddU8(packetState, mac[4]);
503 packetState = hciCmdPacketAddU8(packetState, mac[5]);
505 packetState = hciCmdPacketAddU8(packetState, 0); //we claim to be display-only - it works for us
506 packetState = hciCmdPacketAddU8(packetState, 0); //we do not support OOB
507 packetState = hciCmdPacketAddU8(packetState, 2); //we don't care about MITM and like Dedicated Bonding
508 hciCmdPacketFinish(packetState);
509 btTxCmdPacket();
511 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_User_Confirmation_Request_Event){
513 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
514 uint32_t val = 0;
516 for(i = 0; i < 4; i++) val = (val << 8) | e->params[sizeof(mac) + 3 - i];
518 //we are disaply-only so accept it unconditionally
519 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_User_Confirmation_Request_Reply);
520 packetState = hciCmdPacketAddU8(packetState, mac[0]);
521 packetState = hciCmdPacketAddU8(packetState, mac[1]);
522 packetState = hciCmdPacketAddU8(packetState, mac[2]);
523 packetState = hciCmdPacketAddU8(packetState, mac[3]);
524 packetState = hciCmdPacketAddU8(packetState, mac[4]);
525 packetState = hciCmdPacketAddU8(packetState, mac[5]);
526 hciCmdPacketFinish(packetState);
527 btTxCmdPacket();
529 cbks.BtSspShow(cbks.userData, mac, val);
531 else if(typ == UART_PKT_TYP_EVT && e->eventCode == HCI_EVT_Simple_Pairing_Complete_Event){
533 for(i = 0; i < sizeof(mac); i++) mac[i] = e->params[i];
534 uint32_t val = 0;
536 for(i = 0; i < 4; i++) val = (val << 8) | e->params[sizeof(mac) + 3 - i];
538 cbks.BtSspShow(cbks.userData, mac, BT_SSP_DONE_VAL);
541 #endif
542 else{
543 //printf("btEnqueuePacket\n");
544 if ((typ >= UART_PKT_TYP_CMD) ||(typ <= UART_PKT_TYP_EVT)) btEnqueuePacket(typ);
549 printf("free enqueuedPackets \n");
551 // free all connect enqueuedpakets memory after task exit
553 BtEnqueuedNode *t, *n = enqueuedPackets;
555 while(n){
556 printf("disconnet %d\n",n->conn);
557 cbks.BtConnEndF(cbks.userData, n->conn, 0); // btConnEndF
559 //enqueuedPackets = n->next;
560 t = n;
561 n = n->next;
562 sg_free(t->buf);
563 free(t->buf);
564 free(t);
566 ASSERT(enqueuedPackets == NULL);
567 l2capAclLinkDownAll();
569 printf("btThreadDie = 1\n");
570 //btThreadDie = 0;
571 btThreadDie = 1;
573 //OS_Task_suspend(0); /* block this task */
576 static char btTryRxEventPacket(uint8_t wantedType){
578 uint8_t i, j;
580 for(i = 0; i < PACKET_RX_BACKLOG_SZ; i++){
582 if(backlog[i] && backlog[i][0] == UART_PKT_TYP_EVT && (!wantedType || backlog[i][1] == wantedType)){
584 for(j = 0; j < 2; j++) packet[j] = backlog[i][j + 1]; //copy packet header
585 for(j = 0; j < ((HCI_Event*)packetStore)->totalParamLen; j++) packet[j + 2] = backlog[i][j + 3];
586 free(backlog[i]);
587 for(; i < PACKET_RX_BACKLOG_SZ - 1; i++) backlog[i] = backlog[i + 1];
588 backlog[i] = NULL;
589 return 1;
592 return 0;
595 static void btRxEventPacket(uint8_t wantedType){
597 while ((!btTryRxEventPacket(wantedType)) && usbdev_check_attached()) coopYield();
600 char btInit(const BtFuncs* btf){
602 HCI_Cmd* cmd;
603 HCI_Event* evt = (HCI_Event*)packetStore;
604 int num = 0;
605 #if defined(BT_MODULE_CC256X)
606 const uint8_t* script = cc256x_init_script;
607 #endif
608 uint8_t* packetState;
609 int i;
611 dbgPrintf("inBtInit\n");
612 bt_init_done = 0;
614 btThreadDie = 0;
615 if(!coopSpawn(btTaskF, NULL, /*2048*/BT_TASK_STACK_SIZE,&bt_task_handle)){
616 dbgPrintf("Failed to start BT task\n");
617 return 0;
619 dbgPrintf("Bt initing...\n");
621 #if defined(BT_MODULE_CC256X)
622 //init script
623 while(*script++){
625 dbgPrintf("\r%d", num++);
626 cmd = (HCI_Cmd*)script;
627 btTxCmdPacketEx(cmd);
628 script += 3 + cmd->totalParamLen;
629 btRxEventPacket(0);
630 #if BT_VERBOSE
631 dbgPrintf(" -> %d, %d:", evt->eventCode ,evt->totalParamLen);
632 for(i = 0; i < evt->totalParamLen; i++) dbgPrintf(" %02X", evt->params[i]);
633 dbgPrintf("\n");
634 #endif
636 #else
637 // Reset
638 #if 1
639 dbgPrintf("Bt Reset...\n");
640 packetState = hciCmdPacketStart(HCI_OGF_Controller_and_Baseband, HCI_CMD_Reset);
641 hciCmdPacketFinish(packetState);
642 btTxCmdPacket();
643 btRxEventPacket(HCI_EVT_Command_Complete_Event);
644 dbgPrintf("Bt Reset,end\n");
645 #endif
646 #endif
648 //get buffer size
649 packetState = hciCmdPacketStart(HCI_OGF_Informational, HCI_CMD_Read_Buffer_Size);
650 hciCmdPacketFinish(packetState);
651 btTxCmdPacket();
653 btRxEventPacket(HCI_EVT_Command_Complete_Event);
654 }while(evt->params[1] != (HCI_OPCODE(HCI_OGF_Informational, HCI_CMD_Read_Buffer_Size) & 0xFF) ||
655 evt->params[2] != (HCI_OPCODE(HCI_OGF_Informational, HCI_CMD_Read_Buffer_Size) >> 8));
657 uint16_t aclLen, aclNum, scoNum;
658 uint8_t scoLen;
660 aclLen = (((uint16_t)evt->params[5]) << 8) | evt->params[4];
661 scoLen = evt->params[6];
662 aclNum = (((uint16_t)evt->params[8]) << 8) | evt->params[7];
663 scoNum = (((uint16_t)evt->params[10]) << 8) | evt->params[9];
665 #if BT_VERBOSE
666 dbgPrintf("BT chip buffers: %ux%ub ACL, %ux%ub SCO\n", aclNum, aclLen, scoNum, scoLen);
667 #endif
669 gAclPacketsCanSend = aclNum;
671 //set connectibility/discoverability
672 pageState = 0;
673 btDiscoverableConnectable();
675 //enable simple passcodes
676 if(SUPORT_SSP){
677 packetState = hciCmdPacketStart(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Simple_Pairing_Mode);
678 packetState = hciCmdPacketAddU8(packetState, 1); //enable it
679 hciCmdPacketFinish(packetState);
680 btTxCmdPacket();
682 btRxEventPacket(HCI_EVT_Command_Complete_Event);
683 }while(evt->params[1] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Simple_Pairing_Mode) & 0xFF) ||
684 evt->params[2] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Simple_Pairing_Mode) >> 8));
687 cbks = *btf; // move before start btTaskF
689 dbgPrintf("\nBT up\n");
690 bt_init_done = 1;
692 return 1;
695 void btDeinit(void){
697 int i;
699 // btThreadDie = 1;
700 while((btThreadDie == 0) && (bt_task_handle != 0) ) coopYield();
702 if(bt_task_handle != 0) {
703 coopDoom(bt_task_handle);
704 bt_task_handle = 0;
708 for(i = 0; i < PACKET_RX_BACKLOG_SZ; i++) if(backlog[i]) free(backlog[i]);
711 char btLocalMac(uint8_t* buf){
713 int i;
714 HCI_Event* evt = (HCI_Event*)packetStore;
715 uint8_t* packetState;
717 packetState = hciCmdPacketStart(HCI_OGF_Informational, HCI_CMD_Read_BD_ADDR);
718 hciCmdPacketFinish(packetState);
719 btTxCmdPacket();
720 btRxEventPacket(HCI_EVT_Command_Complete_Event);
721 if(evt->totalParamLen != 10 ||
722 evt->params[1] != (HCI_OPCODE(HCI_OGF_Informational, HCI_CMD_Read_BD_ADDR) & 0xFF) ||
723 evt->params[2] != (HCI_OPCODE(HCI_OGF_Informational, HCI_CMD_Read_BD_ADDR) >> 8) || evt->params[3] != 0){
724 return 0;
727 for(i = 0; i < 6; i++) buf[i] = evt->params[4 + i];
728 return 1;
731 char btSetLocalName(const char* name){
733 HCI_Cmd* cmd = (HCI_Cmd*)packetStore;
734 HCI_Event* evt = (HCI_Event*)packetStore;
735 uint8_t* packetState;
737 packetState = hciCmdPacketStart(HCI_OGF_Controller_and_Baseband, HCI_CMD_Change_Local_Name);
738 while(name && *name) packetState = hciCmdPacketAddU8(packetState, *name++);
739 packetState = hciCmdPacketAddU8(packetState, 0);
740 hciCmdPacketFinish(packetState);
741 if(cmd->totalParamLen > 248) return 0; //too long
742 cmd->totalParamLen = 248;
743 btTxCmdPacket();
744 btRxEventPacket(HCI_EVT_Command_Complete_Event);
746 if(evt->totalParamLen != 4 ||
747 evt->params[1] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Change_Local_Name) & 0xFF) ||
748 evt->params[2] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Change_Local_Name) >> 8) || evt->params[3] != 0){
749 return 0;
751 return 1;
754 void btScan(void){
756 //HCI_Cmd* cmd = (HCI_Cmd*)packet;
757 HCI_Event* evt = (HCI_Event*)packet;
758 uint8_t* packetState;
759 int i, done = 0;
761 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_Inquiry);
762 packetState = hciCmdPacketAddU24(packetState, HCI_LAP_Unlimited_Inquiry);
763 packetState = hciCmdPacketAddU8(packetState, 0x30);
764 packetState = hciCmdPacketAddU8(packetState, 0);
765 hciCmdPacketFinish(packetState);
766 btTxCmdPacket();
768 while(1){
769 coopYield();
770 if(!done && btTryRxEventPacket(HCI_EVT_Inquiry_Result_Event)){
772 uint8_t* MACs = evt->params + evt->params[0]*0 + 1;
773 uint8_t* PSRMs = evt->params + evt->params[0]*6 + 1;
774 uint8_t* PSPMs = evt->params + evt->params[0]*7 + 1;
775 uint8_t* PSMs = evt->params + evt->params[0]*8 + 1;
776 uint8_t* DCs = evt->params + evt->params[0]*9 + 1;
777 uint8_t* COs = evt->params + evt->params[0]*12 + 1;
779 for(i = 0; i < evt->params[0]; i++){
781 BtDiscoveryResult dr;
783 dr.dc = DCs[0] + (((uint32_t)DCs[1]) << 8) + (((uint32_t)DCs[2]) << 16) ;
784 dr.mac[0] = *MACs++;
785 dr.mac[1] = *MACs++;
786 dr.mac[2] = *MACs++;
787 dr.mac[3] = *MACs++;
788 dr.mac[4] = *MACs++;
789 dr.mac[5] = *MACs++;
790 dr.PSRM = *PSRMs++;
791 dr.PSPM = *PSPMs++;
792 dr.PSM = *PSMs++;
793 dr.co = (((uint16_t)COs[1]) << 8) + COs[0];
795 if(!cbks.BtDiscoveryF(cbks.userData, &dr)){
797 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_Inquiry_Cancel);
798 hciCmdPacketFinish(packetState);
799 btTxCmdPacket();
800 done = 1;
801 break;
803 COs += 2;
804 DCs += 3;
807 if(btTryRxEventPacket(HCI_EVT_Inquiry_Complete_Event)) break;
808 if(btTryRxEventPacket(HCI_EVT_Command_Complete_Event)) break;
812 char btGetRemoteName(const uint8_t* mac, uint8_t PSRM, uint8_t PSM, uint16_t co, char* nameBuf){
814 HCI_Event* evt = (HCI_Event*)packet;
815 uint8_t* packetState;
816 int i = 0;
818 packetState = hciCmdPacketStart(HCI_OGF_Link_Control, HCI_CMD_Remote_Name_Request);
819 packetState = hciCmdPacketAddU8(packetState, mac[0]);
820 packetState = hciCmdPacketAddU8(packetState, mac[1]);
821 packetState = hciCmdPacketAddU8(packetState, mac[2]);
822 packetState = hciCmdPacketAddU8(packetState, mac[3]);
823 packetState = hciCmdPacketAddU8(packetState, mac[4]);
824 packetState = hciCmdPacketAddU8(packetState, mac[5]);
825 packetState = hciCmdPacketAddU8(packetState, PSRM);
826 packetState = hciCmdPacketAddU8(packetState, PSM);
827 packetState = hciCmdPacketAddU16(packetState, co);
828 hciCmdPacketFinish(packetState);
829 btTxCmdPacket();
831 btRxEventPacket(HCI_EVT_Remote_Name_Request_Complete_Event);
833 if(evt->params[0] == 0){
835 while(i < 248 && evt->params[7 + i]){
836 nameBuf[i] = evt->params[7 + i];
837 i++;
839 nameBuf[i] = 0;
840 return 1;
842 else return 0;
845 static char btDiscoverableConnectable(void){
847 HCI_Event* evt = (HCI_Event*)packet;
848 uint8_t* packetState;
850 packetState = hciCmdPacketStart(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Scan_Enable);
851 packetState = hciCmdPacketAddU8(packetState, pageState);
852 hciCmdPacketFinish(packetState);
853 btTxCmdPacket();
854 btRxEventPacket(HCI_EVT_Command_Complete_Event);
855 if(evt->totalParamLen != 4 ||
856 evt->params[1] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Scan_Enable) & 0xFF) ||
857 evt->params[2] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Scan_Enable) >> 8) || evt->params[3] != 0){
858 return 0;
861 return 1;
864 char btDiscoverable(char on){
866 uint8_t nv = (pageState &~ PAGE_STATE_INQUIRY) | (on ? PAGE_STATE_INQUIRY : 0);
867 if(nv == pageState) return 1;
868 pageState = nv;
870 return btDiscoverableConnectable();
873 char btConnectable(char on){
875 uint8_t nv = (pageState &~ PAGE_STATE_PAGE) | (on ? PAGE_STATE_PAGE : 0);
876 if(nv == pageState) return 1;
877 pageState = nv;
879 return btDiscoverableConnectable();
882 char btSetDeviceClass(uint32_t cls){
884 HCI_Event* evt = (HCI_Event*)packet;
885 uint8_t* packetState;
887 packetState = hciCmdPacketStart(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Class_Of_Device);
888 packetState = hciCmdPacketAddU24(packetState, cls);
889 hciCmdPacketFinish(packetState);
890 btTxCmdPacket();
891 btRxEventPacket(HCI_EVT_Command_Complete_Event);
892 if(evt->totalParamLen != 4 ||
893 evt->params[1] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Class_Of_Device) & 0xFF) ||
894 evt->params[2] != (HCI_OPCODE(HCI_OGF_Controller_and_Baseband, HCI_CMD_Write_Class_Of_Device) >> 8) || evt->params[3] != 0){
895 return 0;
898 return 1;
913 #if defined(BT_MODULE_CC256X)
914 const uint8_t cc256x_init_script[] = {
915 // #--------------------------------------------------------------------------------
916 // # Description : Trio Orca 5500 L ROM Initialization Script
917 // #
918 // # Compatibility: Trio/Orca/5500, 6.0.15 ROM
919 // #
920 // # Last Updated: 09-Aug-2011 10:06:07.86
921 // #
922 // # Version : TI_P6_15.41
923 // #
924 // #
925 // #
926 // # Trio LMP Subversion: 1f29
927 // # Orca LMP Subversion: 1b29
928 // #
929 // # Notes : Use this script on Trio, Orca or 5500, 6.0.15 ROM device only (FW v6.0.15)
930 // #--------------------------------------------------------------------------------
932 // #################################################################
933 // ## START of Panasonic Adds-On
934 // #################################################################
936 // ## Change UART baudrate
939 // #################################################################
940 // ## END of Panasonic Adds-On
941 // #################################################################
943 0x01, 0x37, 0xfe, 0x02, 0x06, 0x0f,
947 0x01, 0x05, 0xff, 0xff, 0xa0, 0x62, 0x08, 0x00, 0xfa, 0x06, 0x0f, 0x3d, 0x29, 0x05, 0xc0,
948 0x03, 0xc0, 0x1e, 0x08, 0x05, 0x00, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0x3d, 0x01, 0x04,
949 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0x76, 0x02, 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0xae, 0x03,
950 0x04, 0xc0, 0x03, 0xc0, 0x1e, 0x08, 0xae, 0x0b, 0x01, 0x00, 0x34, 0x30, 0x41, 0x02, 0x00,
951 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x58, 0x00, 0x00, 0x1b, 0x59, 0x00, 0x00, 0x40, 0x59,
952 0x00, 0x00, 0x41, 0x59, 0x00, 0x00, 0x65, 0x59, 0x00, 0x00, 0xdc, 0x74, 0x00, 0x00, 0xdd,
953 0x74, 0x00, 0x00, 0x4b, 0xf4, 0x00, 0x00, 0x5c, 0xf4, 0x00, 0x00, 0x5d, 0xf4, 0x00, 0x00,
954 0xcb, 0xf4, 0x00, 0x00, 0xdc, 0xf4, 0x00, 0x00, 0xdd, 0xf4, 0x00, 0x00, 0x40, 0x19, 0x02,
955 0x00, 0x48, 0x19, 0x02, 0x00, 0xdb, 0x48, 0x02, 0x00, 0x1c, 0x49, 0x02, 0x00, 0x40, 0x49,
956 0x02, 0x00, 0x41, 0x49, 0x02, 0x00, 0x45, 0x49, 0x02, 0x00, 0xb9, 0x50, 0x02, 0x00, 0x45,
957 0x51, 0x02, 0x00, 0x1b, 0x58, 0x02, 0x00, 0x1c, 0x58, 0x02, 0x00, 0x38, 0x58, 0x02, 0x00,
958 0x41, 0x58, 0x02, 0x00, 0x98, 0x58, 0x02, 0x00, 0xb8, 0x58, 0x02, 0x00, 0xb9, 0x58, 0x02,
959 0x00, 0xdb, 0x58, 0x02, 0x00, 0xdc, 0x58, 0x02, 0x00, 0x01, 0x59, 0x02, 0x00, 0x05, 0x59,
960 0x02, 0x00, 0x18, 0x59, 0x02, 0x00, 0x19, 0x59, 0x02, 0x00, 0x1b, 0x59, 0x02, 0x00, 0x1c,
961 0x59, 0x02, 0x00, 0x40, 0x59, 0x02, 0x00, 0x41, 0x59, 0x02, 0x00, 0x42, 0x59, 0x02, 0x00,
962 0x45, 0x59, 0x02, 0x00, 0x47, 0x59, 0x02, 0x00, 0x48, 0x59, 0x02, 0x00, 0x56, 0x59, 0x02,
963 0x00, 0x57, 0x59, 0x02, 0x00, 0x60, 0x59, 0x02, 0x00, 0x62, 0x59, 0x02, 0x00, 0x63, 0x59,
964 0x02, 0x00, 0x64, 0x59,
966 0x01, 0x05, 0xff, 0xff, 0x9a, 0x63, 0x08, 0x00, 0xfa, 0x02, 0x00, 0x65, 0x59, 0x02, 0x00,
967 0x84, 0x59, 0x02, 0x00, 0x8c, 0x59, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
968 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
969 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
970 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
971 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
972 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
973 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb5, 0x43, 0x4d, 0xae, 0x7f, 0x01, 0x24, 0xa6,
974 0x46, 0x3f, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xb0, 0x42, 0xf8, 0xd1, 0x03, 0x20, 0x17, 0x21,
975 0x89, 0x01, 0xa6, 0x46, 0x3b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xad, 0x7f, 0xa6, 0x46, 0x38,
976 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa8, 0x42, 0xf9, 0xd1, 0xfe, 0xe7, 0xf0, 0xb5, 0x37, 0x49,
977 0x4f, 0x68, 0x33, 0x20, 0xc0, 0x5d, 0xc0, 0x06, 0xc0, 0x0f, 0x84, 0x46, 0x08, 0x78, 0x02,
978 0x28, 0x3e, 0xd1, 0x33, 0x48, 0x06, 0x78, 0x00, 0x24, 0x25, 0x1c, 0x22, 0x1c, 0x1b, 0xe0,
979 0x11, 0x20, 0x40, 0x01, 0x50, 0x43, 0x30, 0x49, 0x0b, 0x18, 0x38, 0x20, 0xc0, 0x5c, 0x00,
980 0x28, 0x0f, 0xd0, 0x18, 0x78, 0xa8, 0x21, 0x41, 0x43, 0x2d, 0x48, 0x41, 0x30, 0x40, 0x5c,
981 0x01, 0x28, 0x07, 0xd0, 0xff, 0x20, 0x1e, 0x30, 0xc0, 0x5c, 0x01, 0x28, 0x01, 0xd1, 0x01,
982 0x25, 0x00, 0xe0, 0x01, 0x24, 0x50, 0x1c, 0x02, 0x06, 0x12, 0x0e, 0xb2, 0x42, 0xe1, 0xdb,
983 0x00, 0x20, 0x00, 0x2d,
985 0x01, 0x05, 0xff, 0xff, 0x94, 0x64, 0x08, 0x00, 0xfa, 0x02, 0xd0, 0x00, 0x2c, 0x00, 0xd1,
986 0x01, 0x20, 0x22, 0x49, 0x0a, 0x78, 0x60, 0x45, 0x10, 0xd0, 0x33, 0x21, 0xcb, 0x19, 0x10,
987 0x24, 0x19, 0x78, 0xa1, 0x43, 0x04, 0x01, 0x10, 0x20, 0x20, 0x40, 0x08, 0x43, 0x18, 0x70,
988 0x19, 0x48, 0x01, 0x2a, 0x00, 0xd1, 0x2c, 0x38, 0x01, 0x21, 0x49, 0x02, 0x01, 0x80, 0xf0,
989 0xbd, 0x70, 0xb5, 0x07, 0x26, 0x15, 0x4d, 0x40, 0x20, 0x40, 0x5d, 0x02, 0x28, 0x0c, 0xd1,
990 0x45, 0x20, 0x40, 0x5d, 0x14, 0x49, 0x08, 0x18, 0x40, 0x00, 0x02, 0x21, 0x01, 0x24, 0xa6,
991 0x46, 0x12, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x03, 0xd1, 0xa8, 0x35, 0x01, 0x3e,
992 0xeb, 0xd1, 0x70, 0xbd, 0x0e, 0x48, 0x09, 0x21, 0xa6, 0x46, 0x0e, 0x4a, 0xfe, 0x44, 0x10,
993 0x47, 0x70, 0xbd, 0xc0, 0x46, 0x8b, 0x05, 0x05, 0x00, 0xf5, 0xd3, 0x04, 0x00, 0x8c, 0x4f,
994 0x08, 0x00, 0xe4, 0x21, 0x08, 0x00, 0x83, 0x50, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x70,
995 0x7c, 0x1a, 0x00, 0x60, 0x19, 0x08, 0x00, 0xe8, 0x57, 0x08, 0x00, 0x11, 0x01, 0x0d, 0x00,
996 0x57, 0x4a, 0x05, 0x00, 0x46, 0x7f, 0x1a, 0x00, 0x61, 0x48, 0x05, 0x00, 0x70, 0xb5, 0x9f,
997 0x48, 0x00, 0x78, 0x01, 0x28, 0x27, 0xd0, 0x00, 0x28, 0x12, 0xd1, 0x9d, 0x4d, 0x28, 0x1c,
998 0x04, 0x21, 0x01, 0x24, 0xa6, 0x46, 0x9b, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x28, 0x2d,
999 0xd1, 0x03, 0x21, 0xc9, 0x01, 0x28, 0x1c, 0x0a, 0x1c, 0xa6, 0x46, 0x97, 0x4b, 0xfe, 0x44,
1000 0x18, 0x47, 0x70, 0xbd, 0x02, 0x28, 0x22, 0xd1, 0x95, 0x48, 0x41, 0x88, 0x09, 0x09, 0x1e,
1001 0xd2, 0x41, 0x88, 0x49, 0x08, 0x1b, 0xd2, 0x42, 0x88, 0x10, 0x21, 0x11, 0x43, 0x41, 0x80,
1002 0x02, 0x88, 0x01, 0x21,
1004 0x01, 0x05, 0xff, 0xff, 0x8e, 0x65, 0x08, 0x00, 0xfa, 0x89, 0x03, 0x11, 0x43, 0x01, 0x80,
1005 0x70, 0xbd, 0xe4, 0x4e, 0x30, 0x1c, 0x00, 0x25, 0x29, 0x1c, 0x01, 0x24, 0xa6, 0x46, 0xe3,
1006 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xe0, 0x49, 0x08, 0x80, 0x30, 0x1c, 0x1c, 0x21, 0x2a, 0x1c,
1007 0xa6, 0x46, 0xdf, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x70, 0xbd, 0x30, 0xb5, 0xdb, 0x4d, 0x28,
1008 0x1c, 0x01, 0x88, 0x7d, 0x48, 0x00, 0x78, 0x01, 0x28, 0x26, 0xd0, 0x00, 0x28, 0x12, 0xd1,
1009 0x7b, 0x4d, 0x28, 0x1c, 0x04, 0x21, 0x01, 0x24, 0xa6, 0x46, 0x7a, 0x4a, 0xfe, 0x44, 0x10,
1010 0x47, 0x00, 0x28, 0x26, 0xd1, 0x28, 0x1c, 0x00, 0x21, 0x03, 0x22, 0xd2, 0x01, 0xa6, 0x46,
1011 0x76, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x30, 0xbd, 0x02, 0x28, 0x1b, 0xd1, 0x74, 0x48, 0x41,
1012 0x88, 0x09, 0x09, 0x17, 0xd2, 0x41, 0x88, 0x49, 0x08, 0x14, 0xd2, 0x10, 0x22, 0x41, 0x88,
1013 0x91, 0x43, 0x41, 0x80, 0x01, 0x21, 0x89, 0x03, 0x04, 0x88, 0x8c, 0x43, 0x0a, 0xe0, 0xd7,
1014 0x4c, 0xa1, 0x42, 0x08, 0xd0, 0xc1, 0x48, 0x00, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xc2, 0x4b,
1015 0xfe, 0x44, 0x18, 0x47, 0x28, 0x1c, 0x04, 0x80, 0x30, 0xbd, 0x00, 0xb5, 0x61, 0x49, 0x09,
1016 0x78, 0x01, 0x29, 0x08, 0xd1, 0x40, 0x69, 0x00, 0x7a, 0x15, 0x28, 0x04, 0xd1, 0x01, 0x20,
1017 0x86, 0x46, 0xe0, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0xbd, 0xf0, 0xb5, 0x04, 0x69, 0xc7,
1018 0x26, 0x30, 0x5d, 0x04, 0x28, 0x24, 0xd1, 0xc8, 0x25, 0x28, 0x5d, 0x18, 0x28, 0x03, 0xd1,
1019 0x6a, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x16, 0xd0, 0x28, 0x5d, 0x19, 0x28, 0x19, 0xd1, 0xce,
1020 0x20, 0x00, 0x5d, 0x16, 0x28, 0x15, 0xd1, 0xb5, 0x27, 0x38, 0x5d, 0x01, 0x21, 0x8e, 0x46,
1021 0xea, 0x4a, 0xfe, 0x44,
1023 0x01, 0x05, 0xff, 0xff, 0x88, 0x66, 0x08, 0x00, 0xfa, 0x10, 0x47, 0x00, 0x22, 0x38, 0x5d,
1024 0x60, 0x21, 0x41, 0x43, 0xe8, 0x48, 0x42, 0x54, 0x32, 0x55, 0x2a, 0x55, 0xf0, 0xbd, 0x20,
1025 0x1c, 0x01, 0x21, 0x8e, 0x46, 0xe5, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xf0, 0xbd, 0xf0, 0xb5,
1026 0x06, 0x1c, 0xb5, 0x69, 0xb4, 0x8a, 0x42, 0x48, 0x02, 0x78, 0x00, 0x27, 0xe0, 0x49, 0xe1,
1027 0x48, 0x8c, 0x42, 0x0e, 0xdc, 0xe0, 0x4a, 0x8c, 0x42, 0x51, 0xd0, 0x71, 0x39, 0x61, 0x1a,
1028 0x57, 0xd0, 0x01, 0x39, 0x4c, 0xd0, 0x43, 0x39, 0x34, 0xd0, 0x29, 0x39, 0x51, 0xd0, 0x01,
1029 0x39, 0x57, 0xd0, 0xf0, 0xbd, 0x48, 0x31, 0x61, 0x1a, 0x23, 0xd0, 0x0b, 0x39, 0x34, 0xd0,
1030 0x01, 0x39, 0x14, 0xd0, 0x01, 0x39, 0x64, 0xd1, 0xe1, 0x48, 0x00, 0x78, 0x02, 0x28, 0x2a,
1031 0xd1, 0xe8, 0x7a, 0x00, 0x07, 0x00, 0x0f, 0xdf, 0x49, 0x0a, 0x1c, 0xb6, 0x3a, 0x10, 0x70,
1032 0x02, 0x01, 0x02, 0x43, 0x12, 0x01, 0x02, 0x43, 0x12, 0x01, 0x02, 0x43, 0x0a, 0x80, 0x20,
1033 0xe0, 0x01, 0x2a, 0x01, 0xd0, 0x04, 0x2a, 0x1c, 0xd1, 0x28, 0x1c, 0x01, 0x21, 0x8e, 0x46,
1034 0xe8, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x15, 0xe0, 0x0e, 0x21, 0x01, 0x22, 0x96, 0x46, 0xe6,
1035 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x28, 0x08, 0xd0, 0xf0, 0xbd, 0x0d, 0x21, 0x01, 0x22,
1036 0x96, 0x46, 0xe1, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x28, 0x35, 0xd1, 0x0c, 0x27, 0x02,
1037 0xe0, 0xe8, 0x7a, 0xde, 0x49, 0x08, 0x70, 0x28, 0x1c, 0x21, 0x1c, 0x3a, 0x1c, 0x01, 0x23,
1038 0x9e, 0x46, 0xdc, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x24, 0xe0, 0x10, 0x1c, 0x39, 0x1c, 0x06,
1039 0x22, 0x01, 0x23, 0x9e, 0x46, 0xf0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xf0, 0xbd, 0x10, 0x1c,
1040 0x03, 0x21, 0x06, 0x22,
1042 0x01, 0x05, 0xff, 0xff, 0x82, 0x67, 0x08, 0x00, 0xfa, 0x01, 0x23, 0x9e, 0x46, 0xec, 0x4b,
1043 0xfe, 0x44, 0x18, 0x47, 0xeb, 0x48, 0x00, 0x68, 0x00, 0x28, 0x12, 0xd0, 0x04, 0x20, 0x01,
1044 0x24, 0xa6, 0x46, 0xe9, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x47, 0x21, 0x09, 0x02, 0x01, 0x80,
1045 0x85, 0x80, 0x29, 0x0c, 0xc1, 0x80, 0xa6, 0x46, 0xe5, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xdf,
1046 0x48, 0x9e, 0x30, 0x30, 0x62, 0xf0, 0xbd, 0xe8, 0x57, 0x08, 0x00, 0x7e, 0x7c, 0x1a, 0x00,
1047 0x43, 0x4a, 0x05, 0x00, 0xdb, 0x4a, 0x05, 0x00, 0x60, 0x7a, 0x1a, 0x00, 0xf8, 0xb5, 0x06,
1048 0x1c, 0xb5, 0x69, 0xb0, 0x8a, 0xdb, 0x49, 0x40, 0x1a, 0x00, 0xd1, 0x99, 0xe0, 0x65, 0x49,
1049 0x89, 0x09, 0x40, 0x1a, 0x69, 0xd0, 0xd8, 0x49, 0x40, 0x1a, 0xa2, 0x49, 0x25, 0xd0, 0x07,
1050 0x38, 0x00, 0xd0, 0x96, 0xe0, 0x0e, 0x20, 0x40, 0x19, 0x06, 0x22, 0xaa, 0x80, 0x08, 0x22,
1051 0x6a, 0x80, 0x09, 0x78, 0x02, 0x29, 0x0c, 0xd1, 0xd1, 0x49, 0x01, 0x24, 0xa6, 0x46, 0xd1,
1052 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x21, 0xa6, 0x46, 0xce, 0x4a, 0xfe, 0x44, 0x10, 0x47,
1053 0x00, 0x22, 0x00, 0xe0, 0x0c, 0x22, 0x28, 0x1c, 0x87, 0x21, 0x89, 0x00, 0x01, 0x23, 0x9e,
1054 0x46, 0xca, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xc9, 0x48, 0xfa, 0x30, 0x30, 0x62, 0xf8, 0xbd,
1055 0x08, 0x78, 0x02, 0x28, 0x33, 0xd1, 0x0b, 0x20, 0x40, 0x19, 0x01, 0x24, 0xa6, 0x46, 0xef,
1056 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x90, 0xa6, 0x46, 0xc2, 0x49, 0xfe, 0x44, 0x08, 0x47,
1057 0x00, 0x06, 0x00, 0x0e, 0xa6, 0x46, 0xc0, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x07, 0x1c, 0x0e,
1058 0x20, 0x40, 0x19, 0x00, 0x99, 0xa6, 0x46, 0xed, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x06, 0x21,
1059 0xa9, 0x80, 0x07, 0x21,
1061 0x01, 0x05, 0xff, 0xff, 0x7c, 0x68, 0x08, 0x00, 0xfa, 0x69, 0x80, 0x00, 0x2f, 0x0b, 0xd0,
1062 0x00, 0x99, 0xc9, 0x0a, 0x08, 0xd3, 0x3a, 0x21, 0xc9, 0x19, 0x05, 0x22, 0xa6, 0x46, 0xe6,
1063 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0x22, 0x08, 0xe0, 0x00, 0x21, 0x05, 0x22, 0xa6, 0x46,
1064 0xe3, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x02, 0x22, 0x00, 0xe0, 0x0c, 0x22, 0x28, 0x1c, 0xe1,
1065 0x49, 0x01, 0x23, 0x9e, 0x46, 0xe0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xbb, 0xe7, 0x2f, 0x1c,
1066 0x06, 0x20, 0xa8, 0x80, 0x0e, 0x20, 0x40, 0x19, 0x40, 0x21, 0x01, 0x24, 0xa6, 0x46, 0xea,
1067 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xea, 0x48, 0x01, 0x1c, 0xcf, 0x22, 0x0a, 0x72, 0x08, 0x31,
1068 0x61, 0x22, 0x0a, 0x74, 0x19, 0x21, 0x02, 0x78, 0xba, 0x73, 0x01, 0x37, 0x01, 0x30, 0x01,
1069 0x39, 0xf9, 0xd1, 0x04, 0x20, 0xe3, 0x49, 0x0a, 0x78, 0xba, 0x73, 0x01, 0x37, 0x01, 0x31,
1070 0x01, 0x38, 0xf9, 0xd1, 0x40, 0x20, 0x68, 0x80, 0x28, 0x1c, 0x81, 0x21, 0x49, 0x00, 0x00,
1071 0x22, 0xa6, 0x46, 0x92, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x8f, 0xe7, 0x4b, 0x48, 0x00, 0x21,
1072 0x06, 0x22, 0x01, 0x23, 0x9e, 0x46, 0x86, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xf8, 0xbd, 0xc0,
1073 0x46, 0x58, 0x74, 0x1a, 0x00, 0xb0, 0x63, 0x08, 0x00, 0x6b, 0x4a, 0x05, 0x00, 0x15, 0x49,
1074 0x05, 0x00, 0x30, 0xb5, 0x05, 0x1c, 0xeb, 0x48, 0x00, 0x78, 0x00, 0x28, 0x17, 0xd1, 0x01,
1075 0x24, 0xa6, 0x46, 0xe9, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x00, 0x28, 0x0b, 0xd1, 0xa6, 0x46,
1076 0xe7, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x01, 0x28, 0x05, 0xd0, 0xa6, 0x46, 0xe5, 0x48, 0xfe,
1077 0x44, 0x00, 0x47, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x20, 0x28, 0x60, 0xe3, 0x48, 0x52, 0x30,
1078 0x28, 0x62, 0x30, 0xbd,
1080 0x01, 0x05, 0xff, 0xff, 0x76, 0x69, 0x08, 0x00, 0xfa, 0xc0, 0x46, 0xff, 0xff, 0x00, 0x00,
1081 0x70, 0xb5, 0xe9, 0x49, 0x80, 0x8a, 0x88, 0x42, 0x20, 0xd1, 0xe8, 0x4b, 0xe8, 0x4a, 0x00,
1082 0x21, 0x40, 0x20, 0x80, 0x5c, 0x00, 0x28, 0x0e, 0xd0, 0x18, 0x78, 0xe6, 0x4e, 0x8c, 0x00,
1083 0xe6, 0x4d, 0x2c, 0x19, 0x25, 0x6a, 0xb5, 0x42, 0x0b, 0xd8, 0x64, 0x68, 0xb4, 0x42, 0x08,
1084 0xd8, 0x01, 0x24, 0x8c, 0x40, 0xa0, 0x43, 0x18, 0x70, 0xa8, 0x32, 0x01, 0x31, 0x07, 0x29,
1085 0xe8, 0xdb, 0x70, 0xbd, 0x0a, 0x06, 0x12, 0x0e, 0x01, 0x21, 0x91, 0x40, 0x01, 0x43, 0x19,
1086 0x70, 0x70, 0xbd, 0xc0, 0x46, 0xe7, 0x46, 0x04, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0xae, 0x69,
1087 0x47, 0x20, 0x00, 0x02, 0x31, 0x88, 0x09, 0x12, 0x09, 0x02, 0x81, 0x42, 0x23, 0xd1, 0x55,
1088 0x48, 0x00, 0x68, 0x00, 0x28, 0x0e, 0xd1, 0xf0, 0x88, 0x00, 0x04, 0xb1, 0x88, 0x08, 0x43,
1089 0x01, 0x24, 0xa6, 0x46, 0x4e, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x30, 0x1c, 0xa6, 0x46, 0xcd,
1090 0x49, 0xfe, 0x44, 0x08, 0x47, 0x0b, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x01, 0x24, 0xa6, 0x46,
1091 0xcb, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x30, 0x1c, 0xa6, 0x46, 0x49, 0x49, 0xfe, 0x44, 0x08,
1092 0x47, 0xc6, 0x49, 0x05, 0x20, 0x00, 0x02, 0x40, 0x18, 0x28, 0x62, 0x70, 0xbd, 0xc0, 0x46,
1093 0xc9, 0xa2, 0x00, 0x00, 0x76, 0xa0, 0x1b, 0x00, 0x6d, 0x97, 0x00, 0x00, 0x88, 0xfd, 0x00,
1094 0x00, 0xc0, 0x61, 0x1a, 0x00, 0x6a, 0x0a, 0x1a, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x6e, 0x69,
1095 0x20, 0x48, 0x00, 0x78, 0x01, 0x28, 0x0f, 0xd1, 0x03, 0x20, 0xbb, 0x49, 0x03, 0x39, 0x01,
1096 0x24, 0xa6, 0x46, 0xba, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x1c, 0xa6, 0x46, 0xb3, 0x49,
1097 0xfe, 0x44, 0x08, 0x47,
1099 0x01, 0x05, 0xff, 0xff, 0x70, 0x6a, 0x08, 0x00, 0xfa, 0xb4, 0x48, 0x1a, 0x30, 0x28, 0x62,
1100 0x70, 0xbd, 0x41, 0x10, 0x08, 0x00, 0x4c, 0xa6, 0x1b, 0x00, 0x30, 0xb5, 0x04, 0x1c, 0xa1,
1101 0x69, 0x00, 0x29, 0x1c, 0xd0, 0x20, 0x69, 0x02, 0x78, 0xff, 0x2a, 0x18, 0xd0, 0x8a, 0x88,
1102 0x89, 0x18, 0x08, 0x22, 0xca, 0x42, 0x13, 0xd0, 0x39, 0x22, 0x12, 0x5c, 0x0a, 0x2a, 0x0f,
1103 0xd1, 0x09, 0x7a, 0x4a, 0x08, 0x0f, 0x2a, 0x0b, 0xd1, 0xc9, 0x07, 0xc9, 0x0f, 0x0f, 0x22,
1104 0x2a, 0x23, 0x01, 0x25, 0xae, 0x46, 0xa5, 0x4d, 0xfe, 0x44, 0x28, 0x47, 0xa5, 0x48, 0xf0,
1105 0x30, 0x20, 0x62, 0x30, 0xbd, 0xc0, 0x46, 0x81, 0x08, 0x18, 0x00, 0x2f, 0x4a, 0x05, 0x00,
1106 0xfb, 0x63, 0x08, 0x00, 0x99, 0x77, 0x05, 0x00, 0x70, 0xb5, 0x85, 0xb0, 0x05, 0x1c, 0x68,
1107 0x69, 0x9d, 0x4e, 0x01, 0x24, 0x34, 0x70, 0x01, 0x7a, 0x89, 0x06, 0x09, 0x0e, 0x9b, 0x4a,
1108 0x52, 0x58, 0x69, 0x46, 0xa6, 0x46, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x20, 0x30, 0x70, 0x68,
1109 0x46, 0x01, 0x7c, 0x6e, 0x46, 0x72, 0x7c, 0x14, 0x20, 0xa6, 0x46, 0x95, 0x4b, 0xfe, 0x44,
1110 0x18, 0x47, 0x68, 0x46, 0x01, 0x7c, 0x06, 0x29, 0x04, 0xd0, 0xa6, 0x46, 0x92, 0x49, 0xfe,
1111 0x44, 0x08, 0x47, 0x04, 0xe0, 0x91, 0x4a, 0x34, 0x21, 0x88, 0x5c, 0x01, 0x30, 0x88, 0x54,
1112 0x90, 0x48, 0x4e, 0x30, 0x28, 0x62, 0x05, 0xb0, 0x70, 0xbd, 0x81, 0x60, 0x00, 0x00, 0x91,
1113 0x48, 0x05, 0x00, 0x2c, 0x51, 0x08, 0x00, 0x9b, 0x60, 0x04, 0x00, 0xe9, 0x3f, 0x05, 0x00,
1114 0x03, 0x0c, 0x00, 0x00, 0x13, 0x10, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1f, 0x53, 0x2c, 0x00,
1115 0x00, 0xc1, 0x50, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0x71, 0x8b, 0x04, 0x00, 0x9b, 0x8b,
1116 0x04, 0x00, 0xf0, 0xb5,
1118 0x01, 0x05, 0xff, 0xff, 0x6a, 0x6b, 0x08, 0x00, 0xfa, 0x05, 0x1c, 0x6c, 0x69, 0x2e, 0x69,
1119 0x28, 0x7f, 0x17, 0x21, 0x40, 0x1a, 0x0f, 0xd0, 0x0d, 0x38, 0x53, 0xd1, 0x01, 0x24, 0xa6,
1120 0x46, 0x7b, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x7a, 0x49, 0xfe, 0x44, 0x08, 0x47,
1121 0x00, 0x28, 0x48, 0xd0, 0x7a, 0x48, 0xb2, 0x38, 0x42, 0xe0, 0xff, 0x20, 0x7d, 0x30, 0x07,
1122 0x19, 0x30, 0x78, 0x38, 0x70, 0x39, 0x78, 0x02, 0x20, 0x08, 0x40, 0x38, 0x70, 0x01, 0x36,
1123 0x30, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0x15, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x78, 0x80, 0x02,
1124 0x36, 0x30, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0x11, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xb8, 0x80,
1125 0xff, 0x20, 0x83, 0x30, 0x04, 0x19, 0x02, 0x36, 0x30, 0x1c, 0x01, 0x21, 0x8e, 0x46, 0x0b,
1126 0x49, 0xfe, 0x44, 0x08, 0x47, 0x20, 0x80, 0x02, 0x36, 0x30, 0x1c, 0x01, 0x21, 0x8e, 0x46,
1127 0x07, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x60, 0x80, 0xb8, 0x88, 0x79, 0x88, 0x01, 0x43, 0x49,
1128 0x08, 0x10, 0xd2, 0x21, 0x88, 0x00, 0x29, 0x0d, 0xd0, 0x42, 0x08, 0x91, 0x42, 0x0a, 0xdc,
1129 0x01, 0xe0, 0x73, 0x2c, 0x00, 0x00, 0x08, 0x28, 0x02, 0xda, 0xff, 0xe7, 0x5a, 0x48, 0x03,
1130 0xe0, 0x59, 0x48, 0x12, 0x30, 0x00, 0xe0, 0x58, 0x48, 0x56, 0x49, 0x40, 0x18, 0x28, 0x62,
1131 0xf0, 0xbd, 0xc0, 0x46, 0x69, 0x2c, 0x00, 0x00, 0x21, 0xa7, 0x05, 0x00, 0xc1, 0xad, 0x05,
1132 0x00, 0x15, 0x20, 0x00, 0x00, 0xa7, 0x50, 0x02, 0x00, 0x10, 0xb5, 0x56, 0x48, 0x00, 0x78,
1133 0x01, 0x28, 0x01, 0xd0, 0x04, 0x28, 0x08, 0xd1, 0x01, 0x24, 0xa6, 0x46, 0x4d, 0x48, 0xfe,
1134 0x44, 0x00, 0x47, 0xa6, 0x46, 0x4c, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x01, 0x24, 0xa6, 0x46,
1135 0x4a, 0x48, 0xfe, 0x44,
1137 0x01, 0x05, 0xff, 0xff, 0x64, 0x6c, 0x08, 0x00, 0xfa, 0x00, 0x47, 0xa6, 0x46, 0x49, 0x48,
1138 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x48, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x10, 0xbd, 0x91,
1139 0x1c, 0x04, 0x00, 0xb3, 0x11, 0x08, 0x00, 0xf0, 0x63, 0x08, 0x00, 0x10, 0xb5, 0x45, 0x4c,
1140 0x45, 0x48, 0x00, 0x78, 0x21, 0x78, 0x81, 0x42, 0x0d, 0xdd, 0x07, 0x21, 0x43, 0x48, 0x00,
1141 0x22, 0x40, 0x23, 0x1b, 0x5c, 0x00, 0x2b, 0x02, 0xd0, 0x52, 0x1c, 0x12, 0x06, 0x12, 0x0e,
1142 0xa8, 0x30, 0x01, 0x39, 0xf5, 0xd1, 0x22, 0x70, 0x10, 0xbd, 0xf0, 0xb5, 0x01, 0x24, 0xa6,
1143 0x46, 0x2e, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xa6, 0x46, 0x2d, 0x49, 0xfe, 0x44, 0x08, 0x47,
1144 0x00, 0x28, 0x10, 0xd0, 0x11, 0x27, 0x09, 0x26, 0x36, 0x4d, 0x3e, 0x20, 0x40, 0x5d, 0xff,
1145 0x28, 0x06, 0xd0, 0x3b, 0x20, 0x47, 0x55, 0x28, 0x1c, 0xa6, 0x46, 0x33, 0x49, 0xfe, 0x44,
1146 0x08, 0x47, 0x50, 0x35, 0x01, 0x3e, 0xf1, 0xd1, 0xf0, 0xbd, 0xef, 0x22, 0x08, 0x00, 0x5d,
1147 0x8b, 0x04, 0x00, 0x7b, 0x5f, 0x03, 0x00, 0xab, 0xb9, 0x03, 0x00, 0xbf, 0x70, 0x05, 0x00,
1148 0x00, 0xb5, 0x2b, 0x48, 0x00, 0x88, 0x02, 0x28, 0x01, 0xda, 0x01, 0x21, 0x02, 0xe0, 0x40,
1149 0x1e, 0x01, 0x04, 0x09, 0x0c, 0x27, 0x48, 0x00, 0x22, 0x01, 0x23, 0x9e, 0x46, 0x26, 0x4b,
1150 0xfe, 0x44, 0x18, 0x47, 0x00, 0xbd, 0x76, 0x81, 0x00, 0x00, 0xb5, 0x63, 0x08, 0x00, 0x60,
1151 0x19, 0x08, 0x00, 0x10, 0x27, 0x00, 0x00, 0xcc, 0x24, 0x08, 0x00, 0x2d, 0x61, 0x04, 0x00,
1152 0xd5, 0xb4, 0x02, 0x00, 0xbb, 0x16, 0x04, 0x00, 0x5d, 0xf0, 0x03, 0x00, 0xae, 0x05, 0x00,
1153 0x00, 0xf5, 0xd3, 0x04, 0x00, 0x55, 0xf6, 0x00, 0x00, 0x5b, 0xf5, 0x00, 0x00, 0xfc, 0x63,
1154 0x08, 0x00, 0xb4, 0x8a,
1156 0x01, 0x05, 0xff, 0xff, 0x5e, 0x6d, 0x08, 0x00, 0xfa, 0x06, 0x00, 0xa9, 0xd3, 0x04, 0x00,
1157 0x61, 0x97, 0x04, 0x00, 0x28, 0x19, 0x08, 0x00, 0x57, 0x98, 0x04, 0x00, 0x37, 0x98, 0x01,
1158 0x00, 0x37, 0x9b, 0x01, 0x00, 0x0d, 0xe2, 0x00, 0x00, 0xca, 0x0c, 0x00, 0x00, 0x3a, 0x0e,
1159 0x00, 0x00, 0x33, 0x64, 0x08, 0x00, 0xc9, 0x64, 0x08, 0x00, 0xb1, 0x6c, 0x08, 0x00, 0x01,
1160 0x6d, 0x08, 0x00, 0x85, 0x6c, 0x08, 0x00, 0xe8, 0x57, 0x08, 0x00, 0xbf, 0x0f, 0x08, 0x00,
1161 0x83, 0x50, 0x08, 0x00, 0x60, 0x19, 0x08, 0x00, 0xf4, 0x46, 0x08, 0x00, 0xa5, 0x1e, 0x02,
1162 0x00, 0x8c, 0x18, 0x08, 0x00, 0x36, 0x02, 0x1a, 0x00, 0x15, 0x49, 0x05, 0x00, 0xf0, 0xb5,
1163 0x87, 0xb0, 0x06, 0x1c, 0xf0, 0x4d, 0x28, 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x27, 0xff,
1164 0x03, 0x01, 0xe0, 0x7d, 0x27, 0x3f, 0x02, 0xed, 0x48, 0x00, 0x21, 0x01, 0x24, 0xa6, 0x46,
1165 0xd5, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xe9, 0x49, 0x48, 0x43, 0x39, 0x1c, 0xa6, 0x46, 0xe9,
1166 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x01, 0x91, 0x28, 0x78, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x21,
1167 0xc9, 0x03, 0x01, 0xe0, 0x7d, 0x21, 0x09, 0x02, 0xee, 0x48, 0xa6, 0x46, 0xe2, 0x4a, 0xfe,
1168 0x44, 0x10, 0x47, 0x02, 0x91, 0x76, 0x69, 0xf0, 0x7a, 0x03, 0x90, 0x30, 0x1c, 0x21, 0x1c,
1169 0xa6, 0x46, 0xf2, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x04, 0x90, 0x30, 0x1c, 0x05, 0x21, 0xa6,
1170 0x46, 0xee, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, 0x90, 0x30, 0x7f, 0x06, 0x90, 0xf7, 0x7e,
1171 0x00, 0x97, 0x06, 0x9b, 0x03, 0x20, 0xf1, 0x49, 0xde, 0x31, 0x04, 0x9a, 0xa6, 0x46, 0xe8,
1172 0x4e, 0xfe, 0x44, 0x30, 0x47, 0x03, 0x98, 0xff, 0x28, 0x04, 0xd0, 0x03, 0x98, 0xa6, 0x46,
1173 0xe5, 0x49, 0xfe, 0x44,
1175 0x01, 0x05, 0xff, 0xff, 0x58, 0x6e, 0x08, 0x00, 0xfa, 0x08, 0x47, 0x04, 0x98, 0x40, 0x1c,
1176 0x07, 0xd0, 0x04, 0x98, 0x03, 0x99, 0x06, 0x9a, 0x3b, 0x1c, 0xa6, 0x46, 0xe1, 0x4e, 0xfe,
1177 0x44, 0x30, 0x47, 0xe5, 0x48, 0x00, 0x78, 0x02, 0x28, 0x00, 0xd0, 0xb2, 0xe0, 0x28, 0x78,
1178 0xdd, 0x4e, 0x01, 0x2f, 0x52, 0xd0, 0xb1, 0x89, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0,
1179 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x04, 0x99, 0x48, 0x43, 0xd8, 0x49, 0x08, 0x18,
1180 0xbb, 0x49, 0xa6, 0x46, 0xd7, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb1, 0x81, 0x28, 0x78, 0x01,
1181 0x28, 0x02, 0xd1, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0xd2, 0x4d,
1182 0x0f, 0x27, 0x29, 0x88, 0x39, 0x40, 0x2a, 0x88, 0x12, 0x09, 0x3a, 0x40, 0x8a, 0x42, 0x04,
1183 0xdd, 0x29, 0x88, 0x09, 0x11, 0x09, 0x07, 0x0f, 0x0f, 0x01, 0xe0, 0x29, 0x88, 0x0f, 0x40,
1184 0x04, 0x99, 0x41, 0x43, 0xc7, 0x48, 0x40, 0x18, 0xaa, 0x49, 0xa6, 0x46, 0xc6, 0x4a, 0xfe,
1185 0x44, 0x10, 0x47, 0x30, 0x1c, 0x9c, 0x30, 0x00, 0x88, 0x1f, 0x22, 0x10, 0x40, 0x40, 0x18,
1186 0xa9, 0x89, 0x11, 0x40, 0x08, 0x18, 0x31, 0x8a, 0x08, 0x18, 0xe4, 0x49, 0x09, 0x88, 0x09,
1187 0x0a, 0x08, 0x18, 0xe2, 0x49, 0x09, 0x89, 0x09, 0x0a, 0x08, 0x18, 0x39, 0x18, 0x06, 0x98,
1188 0x40, 0x18, 0x05, 0x30, 0x01, 0x04, 0x09, 0x0c, 0x9c, 0x48, 0x00, 0x22, 0xa6, 0x46, 0xed,
1189 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x50, 0xe0, 0x31, 0x88, 0x01, 0x28, 0x02, 0xd1, 0x01, 0x20,
1190 0xc0, 0x03, 0x01, 0xe0, 0x7d, 0x20, 0x00, 0x02, 0x04, 0x99, 0x48, 0x43, 0xae, 0x49, 0x08,
1191 0x18, 0x91, 0x49, 0xa6, 0x46, 0xad, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x31, 0x80, 0x28, 0x78,
1192 0x01, 0x28, 0x02, 0xd1,
1194 0x01, 0x05, 0xff, 0xff, 0x52, 0x6f, 0x08, 0x00, 0xfa, 0x01, 0x20, 0xc0, 0x03, 0x01, 0xe0,
1195 0x7d, 0x20, 0x00, 0x02, 0xa8, 0x4d, 0x0f, 0x27, 0xa9, 0x88, 0x09, 0x09, 0x39, 0x40, 0xaa,
1196 0x88, 0x3a, 0x40, 0x8a, 0x42, 0x03, 0xdd, 0xa9, 0x88, 0x09, 0x07, 0x0f, 0x0f, 0x02, 0xe0,
1197 0xa9, 0x88, 0x09, 0x09, 0x0f, 0x40, 0x04, 0x99, 0x41, 0x43, 0x9d, 0x48, 0x40, 0x18, 0x80,
1198 0x49, 0xa6, 0x46, 0x9c, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x30, 0x89, 0x1f, 0x22, 0x10, 0x40,
1199 0x40, 0x18, 0xb1, 0x88, 0x11, 0x40, 0x08, 0x18, 0x29, 0x89, 0x11, 0x40, 0x08, 0x18, 0xbb,
1200 0x49, 0x09, 0x88, 0x09, 0x0a, 0x08, 0x18, 0xb9, 0x49, 0x09, 0x89, 0x09, 0x0a, 0x08, 0x18,
1201 0x39, 0x18, 0x06, 0x98, 0x40, 0x18, 0x05, 0x30, 0x01, 0x04, 0x09, 0x0c, 0x73, 0x48, 0x00,
1202 0x22, 0xa6, 0x46, 0xc4, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x01, 0x98, 0x02, 0x99, 0x41, 0x18,
1203 0x8c, 0x48, 0x40, 0x18, 0xde, 0x49, 0xa6, 0x46, 0x88, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07,
1204 0xe0, 0x88, 0x48, 0x01, 0x99, 0x40, 0x18, 0xda, 0x49, 0xa6, 0x46, 0x84, 0x4a, 0xfe, 0x44,
1205 0x10, 0x47, 0xc8, 0x1c, 0xd6, 0x49, 0x08, 0x80, 0xd7, 0x48, 0x05, 0x99, 0x49, 0x1c, 0x01,
1206 0xd0, 0x59, 0x30, 0x00, 0xe0, 0x61, 0x30, 0x07, 0xb0, 0xf0, 0xbd, 0x70, 0xb5, 0x06, 0x1c,
1207 0x01, 0x25, 0xae, 0x46, 0xeb, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xeb, 0x48, 0xae, 0x46, 0xeb,
1208 0x49, 0xfe, 0x44, 0x08, 0x47, 0xea, 0x48, 0x00, 0x78, 0xea, 0x4c, 0x00, 0x28, 0x04, 0xd1,
1209 0xae, 0x46, 0xe9, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x03, 0xe0, 0xae, 0x46, 0xe8, 0x49, 0xfe,
1210 0x44, 0x08, 0x47, 0x60, 0x62, 0x74, 0x61, 0x60, 0x6a, 0x70, 0x60, 0xe5, 0x48, 0x4f, 0x30,
1211 0x70, 0xbd, 0xc0, 0x1e,
1213 0x01, 0x05, 0xff, 0xff, 0x4c, 0x70, 0x08, 0x00, 0xfa, 0x02, 0xd0, 0x02, 0x38, 0x02, 0xd0,
1214 0x03, 0xe0, 0xe2, 0x48, 0xf7, 0x46, 0xe2, 0x48, 0xf7, 0x46, 0x00, 0x20, 0xc0, 0x43, 0xf7,
1215 0x46, 0xf0, 0xb5, 0xc2, 0x69, 0x11, 0x06, 0x09, 0x0e, 0xd9, 0x4c, 0x27, 0x68, 0x66, 0x4b,
1216 0x1b, 0x78, 0xdd, 0x4e, 0x02, 0x2b, 0x03, 0xd0, 0x42, 0x60, 0x30, 0x1c, 0x51, 0x30, 0xf0,
1217 0xbd, 0x08, 0x1c, 0x01, 0x25, 0xae, 0x46, 0xea, 0x49, 0xfe, 0x44, 0x08, 0x47, 0xe1, 0x69,
1218 0xd4, 0x48, 0x02, 0x1c, 0x52, 0x00, 0x91, 0x42, 0x01, 0xd0, 0x81, 0x42, 0x1e, 0xd1, 0xa0,
1219 0x6a, 0xeb, 0x49, 0x88, 0x42, 0x04, 0xd0, 0xea, 0x49, 0x88, 0x42, 0x03, 0xd1, 0xea, 0x48,
1220 0x00, 0xe0, 0xea, 0x48, 0x20, 0x60, 0x36, 0x48, 0x1a, 0x30, 0x0c, 0x21, 0xae, 0x46, 0xe9,
1221 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x41, 0x1c, 0x20, 0x68, 0xae, 0x46, 0x4d, 0x4a, 0xfe, 0x44,
1222 0x10, 0x47, 0x21, 0x61, 0xae, 0x46, 0xe2, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x27, 0x60, 0x03,
1223 0xe0, 0xae, 0x46, 0xdf, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x30, 0x1c, 0x59, 0x30, 0xf0, 0xbd,
1224 0x40, 0x1e, 0x80, 0x00, 0xde, 0x4b, 0x19, 0x50, 0xdc, 0x49, 0x0a, 0x50, 0xf7, 0x46, 0x80,
1225 0x69, 0xb8, 0x21, 0x09, 0x5c, 0x01, 0x29, 0x06, 0xd0, 0xb5, 0x21, 0x08, 0x5c, 0x60, 0x21,
1226 0x41, 0x43, 0xd8, 0x4a, 0x00, 0x20, 0x50, 0x54, 0xd8, 0x48, 0x1b, 0x30, 0xf7, 0x46, 0x10,
1227 0xb5, 0x04, 0x1c, 0xd6, 0x48, 0x00, 0x68, 0x01, 0x21, 0x8e, 0x46, 0xd5, 0x49, 0xfe, 0x44,
1228 0x08, 0x47, 0xe0, 0x68, 0x0c, 0x30, 0xe0, 0x60, 0xd3, 0x48, 0xff, 0x30, 0x02, 0x30, 0x10,
1229 0xbd, 0xa7, 0x4a, 0x05, 0x00, 0x30, 0xb5, 0x42, 0x69, 0x11, 0x88, 0x09, 0x06, 0x0b, 0x0e,
1230 0xcf, 0x49, 0x02, 0x2b,
1232 0x01, 0x05, 0xff, 0xff, 0x46, 0x71, 0x08, 0x00, 0xfa, 0x1a, 0xd1, 0xca, 0x4b, 0x1b, 0x6b,
1233 0x9b, 0x68, 0xdb, 0x88, 0x01, 0x24, 0xa4, 0x02, 0x1d, 0x05, 0xad, 0x0f, 0xad, 0x02, 0xa5,
1234 0x42, 0x06, 0xdb, 0x05, 0x24, 0x24, 0x02, 0x1b, 0x05, 0x1b, 0x0f, 0x1b, 0x02, 0xa3, 0x42,
1235 0x02, 0xdb, 0xd2, 0x88, 0x52, 0x1d, 0x01, 0xe0, 0x52, 0x88, 0x52, 0x1c, 0x42, 0x60, 0x08,
1236 0x1c, 0x9f, 0x30, 0x30, 0xbd, 0x08, 0x1c, 0x87, 0x30, 0x30, 0xbd, 0x5e, 0x56, 0x08, 0x00,
1237 0x40, 0x42, 0x0f, 0x00, 0x04, 0x60, 0x1a, 0x00, 0x6d, 0x94, 0x05, 0x00, 0x00, 0xb5, 0x01,
1238 0x1c, 0x48, 0x68, 0xc9, 0x69, 0xb5, 0x22, 0x51, 0x5c, 0xdc, 0x22, 0x4a, 0x43, 0xea, 0x49,
1239 0x89, 0x18, 0x08, 0x22, 0x01, 0x23, 0x9e, 0x46, 0xe9, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe8,
1240 0x48, 0x3f, 0x30, 0x00, 0xbd, 0xc0, 0x46, 0x80, 0xc3, 0xc9, 0x01, 0x40, 0x69, 0x01, 0x8f,
1241 0xc0, 0x8e, 0x40, 0x1a, 0x00, 0x04, 0x02, 0x0c, 0xe9, 0x49, 0x49, 0x0a, 0x0c, 0x48, 0x8a,
1242 0x42, 0x01, 0xd3, 0xfa, 0x38, 0x00, 0xe0, 0xa2, 0x30, 0xe4, 0x49, 0x40, 0x18, 0xf7, 0x46,
1243 0xc0, 0x46, 0xe5, 0x2b, 0x00, 0x00, 0x19, 0xd4, 0x04, 0x00, 0x81, 0x42, 0x02, 0x00, 0x55,
1244 0x3f, 0x02, 0x00, 0xc0, 0x79, 0x1a, 0x00, 0x3f, 0x42, 0x0f, 0x00, 0x05, 0x9a, 0x05, 0x00,
1245 0x28, 0x79, 0x1a, 0x00, 0xe1, 0x04, 0x00, 0x00, 0xe8, 0x57, 0x08, 0x00, 0xf8, 0xb5, 0x81,
1246 0x69, 0x08, 0x04, 0x00, 0x0c, 0x00, 0x90, 0xd9, 0x4d, 0xda, 0x4c, 0xc8, 0x08, 0x2a, 0xd3,
1247 0xd6, 0x48, 0xff, 0x21, 0x3d, 0x31, 0x0f, 0x18, 0x29, 0x5c, 0x00, 0x26, 0x21, 0xe0, 0xa8,
1248 0x00, 0x30, 0x58, 0xc2, 0x22, 0x12, 0x5c, 0x00, 0x2a, 0x0a, 0xd0, 0xb5, 0x21, 0x08, 0x5c,
1249 0x0a, 0x30, 0x00, 0x06,
1251 0x01, 0x05, 0xff, 0xff, 0x40, 0x72, 0x08, 0x00, 0xfa, 0x00, 0x0e, 0x01, 0x21, 0x8e, 0x46,
1252 0xce, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x21, 0x78, 0x01, 0x35, 0x19, 0xe0, 0xb0, 0x00, 0x38,
1253 0x58, 0xc2, 0x22, 0x12, 0x5c, 0x00, 0x2a, 0x07, 0xd0, 0xb5, 0x21, 0x08, 0x5c, 0x01, 0x21,
1254 0x8e, 0x46, 0xc6, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x21, 0x78, 0x01, 0x36, 0x8e, 0x42, 0xee,
1255 0xd3, 0x00, 0x98, 0x00, 0x09, 0x07, 0xd3, 0xbf, 0x48, 0xff, 0x21, 0x3d, 0x31, 0x0e, 0x18,
1256 0x29, 0x5c, 0x00, 0x25, 0x8d, 0x42, 0xd0, 0xd3, 0xbf, 0x48, 0x87, 0x30, 0xf8, 0xbd, 0x2c,
1257 0x7a, 0x1a, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0xb0, 0x68, 0xbc, 0x4d, 0x00, 0x28, 0x02, 0xd1,
1258 0x28, 0x1c, 0xdf, 0x30, 0x70, 0xbd, 0x73, 0x4c, 0x04, 0x3c, 0x20, 0x7a, 0x02, 0x28, 0x08,
1259 0xd0, 0xb7, 0x49, 0x08, 0x5c, 0x01, 0x21, 0x8e, 0x46, 0xb6, 0x49, 0xfe, 0x44, 0x08, 0x47,
1260 0x00, 0x28, 0x02, 0xd0, 0x28, 0x1c, 0xcf, 0x30, 0x70, 0xbd, 0x00, 0x20, 0x20, 0x60, 0x70,
1261 0x60, 0x28, 0x1c, 0xff, 0x30, 0x20, 0x30, 0x70, 0xbd, 0xc0, 0x46, 0xc9, 0x49, 0x05, 0x00,
1262 0x10, 0xb5, 0x9c, 0x49, 0x11, 0x31, 0x06, 0x22, 0x00, 0x23, 0x0c, 0x78, 0xff, 0x2c, 0x02,
1263 0xd1, 0x5b, 0x1c, 0x1b, 0x06, 0x1b, 0x0e, 0xdc, 0x31, 0x01, 0x3a, 0xf6, 0xd1, 0x43, 0x60,
1264 0xa7, 0x48, 0x19, 0x30, 0x10, 0xbd, 0x01, 0x1c, 0xa7, 0x4b, 0x1a, 0x78, 0xa5, 0x48, 0x05,
1265 0x2a, 0x04, 0xd1, 0xa5, 0x4a, 0x12, 0x68, 0x12, 0x78, 0x01, 0x2a, 0x02, 0xd0, 0x4b, 0x60,
1266 0x5b, 0x30, 0xf7, 0x46, 0x7d, 0x30, 0xf7, 0x46, 0x10, 0xb5, 0x01, 0x1c, 0xa0, 0x48, 0x00,
1267 0x68, 0xa1, 0x4c, 0x00, 0x28, 0x0b, 0xd0, 0x88, 0x69, 0x09, 0x7a, 0x01, 0x22, 0x96, 0x46,
1268 0x9d, 0x4a, 0xfe, 0x44,
1270 0x01, 0x05, 0xff, 0xff, 0x3a, 0x73, 0x08, 0x00, 0xfa, 0x10, 0x47, 0x00, 0x28, 0x02, 0xd0,
1271 0x20, 0x1c, 0x21, 0x30, 0x10, 0xbd, 0x20, 0x1c, 0x33, 0x30, 0x10, 0xbd, 0x48, 0x53, 0x08,
1272 0x00, 0xe2, 0x04, 0x00, 0x00, 0x71, 0x55, 0x00, 0x00, 0xf8, 0xb5, 0x81, 0x69, 0x00, 0x91,
1273 0x92, 0x4c, 0x25, 0x1c, 0x0c, 0x3d, 0xe9, 0x68, 0x08, 0x22, 0x57, 0x18, 0x40, 0x69, 0x90,
1274 0x4a, 0x00, 0x28, 0x02, 0xd0, 0x10, 0x1c, 0xd3, 0x30, 0xf8, 0xbd, 0x00, 0x26, 0x04, 0xe0,
1275 0x70, 0x1c, 0x06, 0x06, 0x36, 0x0e, 0x06, 0x37, 0x21, 0x68, 0x48, 0x88, 0x86, 0x42, 0x14,
1276 0xda, 0x38, 0x1c, 0x00, 0x99, 0x01, 0x22, 0x96, 0x46, 0x87, 0x4a, 0xfe, 0x44, 0x10, 0x47,
1277 0x00, 0x28, 0xee, 0xd1, 0x0c, 0x34, 0xe8, 0x68, 0x41, 0x88, 0x01, 0x20, 0x88, 0x40, 0xe1,
1278 0x6f, 0x81, 0x43, 0xe1, 0x67, 0xe9, 0x68, 0x48, 0x88, 0x01, 0x38, 0x48, 0x80, 0x7e, 0x48,
1279 0xff, 0x30, 0x14, 0x30, 0xf8, 0xbd, 0xc0, 0x46, 0xc1, 0x0b, 0x04, 0x00, 0x98, 0x3a, 0x00,
1280 0x00, 0xbb, 0x16, 0x04, 0x00, 0xc2, 0x4f, 0x08, 0x00, 0x24, 0x56, 0x08, 0x00, 0x6d, 0x0b,
1281 0x04, 0x00, 0x4b, 0x70, 0x08, 0x00, 0xc9, 0x4c, 0x02, 0x00, 0x00, 0x59, 0x00, 0x01, 0x40,
1282 0x31, 0xf7, 0x00, 0xdd, 0xd6, 0x02, 0x00, 0x70, 0xb5, 0x72, 0x48, 0x05, 0x78, 0x00, 0x24,
1283 0x71, 0x48, 0x00, 0x88, 0x80, 0x09, 0x10, 0xd3, 0x01, 0x20, 0x06, 0x1c, 0x86, 0x46, 0x6f,
1284 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x28, 0x08, 0xd0, 0x3f, 0x22, 0x6d, 0x49, 0x08, 0x78,
1285 0x02, 0x28, 0x03, 0xd1, 0x50, 0x5c, 0x00, 0x28, 0x00, 0xd0, 0x34, 0x1c, 0x6a, 0x48, 0xff,
1286 0x2d, 0x01, 0xd0, 0x00, 0x2c, 0x01, 0xd0, 0x41, 0x30, 0x70, 0xbd, 0x0d, 0x30, 0x70, 0xbd,
1287 0xd1, 0xcd, 0x02, 0x00,
1289 0x01, 0x05, 0xff, 0xff, 0x34, 0x74, 0x08, 0x00, 0xfa, 0x01, 0x1c, 0x66, 0x48, 0x02, 0x78,
1290 0x64, 0x48, 0x00, 0x2a, 0x01, 0xd0, 0xed, 0x30, 0xf7, 0x46, 0x41, 0x22, 0x4a, 0x60, 0x39,
1291 0x30, 0xf7, 0x46, 0x00, 0x5a, 0x62, 0x02, 0x00, 0x6c, 0xdc, 0x02, 0x38, 0x58, 0xdb, 0x02,
1292 0xcc, 0xb5, 0x62, 0x02, 0x99, 0x29, 0x03, 0x00, 0x57, 0x4a, 0x05, 0x00, 0x04, 0xf3, 0x1a,
1293 0x00, 0x80, 0x7b, 0x08, 0x00, 0x76, 0xa0, 0x1b, 0x00, 0x6d, 0x97, 0x00, 0x00, 0x6c, 0x55,
1294 0x08, 0x00, 0x4f, 0x61, 0x04, 0x00, 0x39, 0xc1, 0x02, 0x00, 0x7d, 0xc4, 0x02, 0x00, 0xf8,
1295 0xb5, 0x06, 0x1c, 0x75, 0x69, 0xb7, 0x69, 0x31, 0x6a, 0x30, 0x7f, 0x00, 0x28, 0x2d, 0xd1,
1296 0x01, 0x21, 0xa8, 0x8d, 0x18, 0x28, 0x27, 0xdc, 0x50, 0x48, 0x00, 0x78, 0x00, 0x90, 0x00,
1297 0x24, 0x01, 0x22, 0xa2, 0x40, 0x00, 0x98, 0x10, 0x42, 0x1b, 0xd0, 0x49, 0x48, 0x20, 0x5c,
1298 0x11, 0x21, 0x49, 0x01, 0x41, 0x43, 0x47, 0x48, 0x41, 0x18, 0xff, 0x20, 0x1e, 0x30, 0x40,
1299 0x5c, 0x01, 0x28, 0x01, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20, 0xc9, 0x78, 0x08, 0x18,
1300 0x44, 0x49, 0x08, 0x5c, 0xa9, 0x8d, 0x01, 0x22, 0x96, 0x46, 0x43, 0x4a, 0xfe, 0x44, 0x10,
1301 0x47, 0x48, 0x1c, 0x01, 0x06, 0x09, 0x0e, 0x01, 0x34, 0x07, 0x2c, 0xdb, 0xdb, 0xa8, 0x8d,
1302 0x01, 0xe0, 0x48, 0x7d, 0xa9, 0x8d, 0x48, 0x43, 0x39, 0x68, 0x40, 0x18, 0x80, 0x01, 0x80,
1303 0x09, 0x38, 0x60, 0x70, 0x60, 0x36, 0x48, 0x5d, 0x30, 0xf8, 0xbd, 0x01, 0x1c, 0x4a, 0x68,
1304 0x13, 0x06, 0x1b, 0x0e, 0x36, 0x48, 0x03, 0xd1, 0x22, 0x4b, 0x1b, 0x78, 0x03, 0x2b, 0x05,
1305 0xd0, 0x00, 0x2a, 0x01, 0xd0, 0x1d, 0x30, 0xf7, 0x46, 0xff, 0x30, 0xf7, 0x46, 0x13, 0x4a,
1306 0x30, 0x23, 0x9b, 0x5c,
1308 0x01, 0x05, 0xff, 0xff, 0x2e, 0x75, 0x08, 0x00, 0xfa, 0x00, 0x2b, 0x07, 0xd1, 0x30, 0x4b,
1309 0x92, 0x88, 0x9a, 0x42, 0x03, 0xd1, 0x2d, 0x4a, 0x12, 0x78, 0x00, 0x2a, 0x01, 0xd0, 0x00,
1310 0x22, 0x00, 0xe0, 0x07, 0x22, 0x4a, 0x60, 0xff, 0x30, 0xa2, 0x30, 0xf7, 0x46, 0x5c, 0x27,
1311 0x08, 0x00, 0x4b, 0x1e, 0x04, 0x00, 0x05, 0x5e, 0x02, 0x00, 0x40, 0x69, 0x78, 0x21, 0x09,
1312 0x5a, 0x25, 0x48, 0xac, 0x29, 0x01, 0xda, 0x3b, 0x30, 0xf7, 0x46, 0x89, 0x30, 0xf7, 0x46,
1313 0xc9, 0x98, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x48, 0x25, 0x08, 0x00, 0x6a, 0x0a, 0x00,
1314 0x00, 0x47, 0x93, 0x02, 0x00, 0xb2, 0x2f, 0x08, 0x00, 0x49, 0xa0, 0x02, 0x00, 0x25, 0x6e,
1315 0x03, 0x00, 0x3c, 0x91, 0x06, 0x00, 0x17, 0x62, 0x04, 0x00, 0xef, 0x8a, 0x04, 0x00, 0xd9,
1316 0xae, 0x02, 0x00, 0x41, 0x10, 0x08, 0x00, 0xa8, 0x63, 0x08, 0x00, 0xec, 0x0e, 0x08, 0x00,
1317 0x5d, 0x86, 0x01, 0x00, 0xdd, 0xf8, 0x03, 0x00, 0x79, 0x1c, 0x04, 0x00, 0xc2, 0x22, 0x08,
1318 0x00, 0x7a, 0x7f, 0x1a, 0x00, 0x93, 0x68, 0x04, 0x00, 0xe4, 0x21, 0x08, 0x00, 0xe9, 0xcb,
1319 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0xfc, 0x63, 0x08, 0x00, 0x00, 0x16, 0x08, 0x00, 0x00,
1320 0x00, 0x08, 0x00, 0x09, 0x82, 0x01, 0x00, 0xb5, 0x63, 0x08, 0x00, 0xac, 0x63, 0x08, 0x00,
1321 0x6d, 0x94, 0x05, 0x00, 0xbd, 0x7b, 0x03, 0x00, 0xf5, 0x50, 0x08, 0x00, 0xff, 0xff, 0x00,
1322 0x00, 0xe5, 0x85, 0x00, 0x00, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x3e, 0xfa, 0xff, 0xbd,
1323 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x1d, 0xfa, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff,
1324 0xf7, 0xb2, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x0d, 0xfb, 0xff, 0xbd,
1325 0xff, 0xb5, 0x68, 0x46,
1327 0x01, 0x05, 0xff, 0x65, 0x28, 0x76, 0x08, 0x00, 0x60, 0xff, 0xf7, 0x9e, 0xfa, 0xff, 0xbd,
1328 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x51, 0xfa, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe,
1329 0xf7, 0xfa, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x04, 0xf8, 0xff, 0xbd,
1330 0xff, 0xb5, 0x68, 0x46, 0xfe, 0xf7, 0x74, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xfe,
1331 0xf7, 0xaf, 0xff, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0x68, 0xf9, 0xff, 0xbd,
1332 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xaf, 0xf9, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff,
1333 0xf7, 0x17, 0xf8, 0xff, 0xbd, 0xff, 0xb5, 0x68, 0x46, 0xff, 0xf7, 0xa5, 0xf8, 0xff, 0xbd,
1336 0x01, 0x05, 0xff, 0x8d, 0x78, 0x7b, 0x08, 0x00, 0x88, 0x00, 0xb5, 0xf8, 0xf0, 0x31, 0xfd,
1337 0x00, 0xbd, 0x95, 0x71, 0x08, 0x00, 0x15, 0x71, 0x08, 0x00, 0x39, 0x71, 0x08, 0x00, 0xc1,
1338 0x71, 0x08, 0x00, 0xc1, 0x71, 0x08, 0x00, 0xf5, 0x06, 0x18, 0x00, 0xf7, 0x70, 0x08, 0x00,
1339 0x0d, 0x72, 0x08, 0x00, 0x95, 0x72, 0x08, 0x00, 0xdd, 0x72, 0x08, 0x00, 0x01, 0x73, 0x08,
1340 0x00, 0x21, 0x73, 0x08, 0x00, 0xed, 0x73, 0x08, 0x00, 0xbd, 0x6d, 0x08, 0x00, 0x59, 0x07,
1341 0x18, 0x00, 0x35, 0x74, 0x08, 0x00, 0x85, 0x74, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59,
1342 0x73, 0x08, 0x00, 0x09, 0x75, 0x08, 0x00, 0x63, 0x70, 0x08, 0x00, 0x5d, 0x75, 0x08, 0x00,
1343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1344 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1347 0x01, 0x05, 0xff, 0x85, 0x04, 0xf3, 0x1a, 0x00, 0x80, 0x36, 0x5e, 0x02, 0x00, 0x38, 0xc2,
1348 0x02, 0x00, 0x00, 0xc5, 0x02, 0x00, 0x9c, 0x9c, 0x00, 0x00, 0x08, 0x9c, 0x00, 0x00, 0x02,
1349 0x69, 0x00, 0x00, 0x84, 0x97, 0x00, 0x00, 0x6a, 0xa0, 0x02, 0x00, 0xf0, 0x6e, 0x03, 0x00,
1350 0xf0, 0x8a, 0x04, 0x00, 0x32, 0xaf, 0x02, 0x00, 0xf4, 0xf8, 0x03, 0x00, 0xf4, 0xcb, 0x01,
1351 0x00, 0xa8, 0x55, 0x00, 0x00, 0x00, 0x16, 0x04, 0x00, 0x14, 0x85, 0x01, 0x00, 0x54, 0x82,
1352 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xac, 0xf9, 0x03, 0x00, 0xd6, 0x7b, 0x03, 0x00, 0x2c,
1353 0xd7, 0x02, 0x00, 0x1c, 0x86, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1354 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1355 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1356 0xff, 0xff,
1358 0x01, 0x05, 0xff, 0xff, 0x00, 0x00, 0x18, 0x00, 0xfa, 0xf0, 0xb5, 0x8c, 0xb0, 0xad, 0x48,
1359 0x06, 0xc8, 0x6f, 0x46, 0x68, 0x46, 0x06, 0xc0, 0xac, 0x48, 0x06, 0xc8, 0x02, 0xa8, 0x06,
1360 0xc0, 0xfb, 0x48, 0x06, 0xc8, 0x04, 0xa8, 0x06, 0xc0, 0xfa, 0x48, 0x06, 0xc8, 0x06, 0xa8,
1361 0x06, 0xc0, 0xf9, 0x48, 0x06, 0xc8, 0x08, 0xa8, 0x06, 0xc0, 0xf8, 0x48, 0x06, 0xc8, 0x0a,
1362 0xa8, 0x06, 0xc0, 0x0c, 0x26, 0xf1, 0x48, 0x48, 0x30, 0x31, 0x1c, 0x01, 0x24, 0xa6, 0x46,
1363 0xf4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x9e, 0x4d, 0xa8, 0x78, 0x00, 0x28, 0x19, 0xd1, 0x03,
1364 0x20, 0x01, 0x1c, 0xf0, 0x48, 0xa6, 0x46, 0xee, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xef, 0x48,
1365 0x03, 0x21, 0xa6, 0x46, 0xeb, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xed, 0x48, 0x00, 0x21, 0x32,
1366 0x1c, 0xa6, 0x46, 0xec, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe8, 0x48, 0x02, 0x21, 0xa6, 0x46,
1367 0xea, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xde, 0x48, 0x04, 0x21, 0xa6, 0x46, 0xe7, 0x4a, 0xfe,
1368 0x44, 0x10, 0x47, 0xea, 0x4e, 0x30, 0x1c, 0x4c, 0x38, 0x02, 0x21, 0xa6, 0x46, 0xde, 0x4a,
1369 0xfe, 0x44, 0x10, 0x47, 0xe2, 0x48, 0x0a, 0x99, 0x01, 0x60, 0xb9, 0x8d, 0x81, 0x80, 0x27,
1370 0x1c, 0x21, 0x1c, 0xe0, 0x48, 0x98, 0x30, 0x8e, 0x46, 0xd7, 0x4a, 0xfe, 0x44, 0x10, 0x47,
1371 0xdd, 0x48, 0x00, 0x99, 0x01, 0x60, 0x01, 0x99, 0x41, 0x60, 0x02, 0x99, 0x01, 0x62, 0x03,
1372 0x99, 0x41, 0x62, 0x04, 0x99, 0x01, 0x63, 0x05, 0x99, 0x41, 0x63, 0x06, 0x99, 0x81, 0x64,
1373 0x07, 0x99, 0xc1, 0x64, 0x08, 0x99, 0x01, 0x66, 0x09, 0x99, 0x41, 0x66, 0x9c, 0x30, 0x21,
1374 0x1c, 0x8e, 0x46, 0xca, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xd0, 0x48, 0x00, 0x78, 0x01, 0x28,
1375 0x00, 0xd1, 0xa3, 0xe0,
1377 0x01, 0x05, 0xff, 0xff, 0xfa, 0x00, 0x18, 0x00, 0xfa, 0x00, 0x28, 0x00, 0xd1, 0xda, 0xe0,
1378 0x02, 0x28, 0x00, 0xd0, 0xd7, 0xe0, 0x30, 0x1c, 0x05, 0x21, 0xbe, 0x46, 0xf9, 0x4a, 0xfe,
1379 0x44, 0x10, 0x47, 0x01, 0x1c, 0xc8, 0x48, 0x00, 0x22, 0xbe, 0x46, 0xc2, 0x4b, 0xfe, 0x44,
1380 0x18, 0x47, 0xa8, 0x78, 0x00, 0x28, 0x16, 0xd1, 0x13, 0x20, 0xc5, 0x49, 0x08, 0x80, 0x03,
1381 0x25, 0x29, 0x1c, 0x20, 0x1c, 0xa6, 0x46, 0xc3, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb8, 0x48,
1382 0x29, 0x1c, 0xbe, 0x46, 0xb4, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xb6, 0x48, 0x00, 0x21, 0x0c,
1383 0x22, 0xbe, 0x46, 0xb5, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xaa, 0x4e, 0x06, 0x3e, 0x30, 0x1c,
1384 0x02, 0x21, 0x00, 0x22, 0xbe, 0x46, 0xb9, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xa6, 0x4d, 0x04,
1385 0x3d, 0xb8, 0x4f, 0x38, 0x1c, 0xc8, 0x38, 0x28, 0x60, 0x30, 0x1c, 0x03, 0x21, 0x00, 0x22,
1386 0xa6, 0x46, 0xb3, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x2f, 0x60, 0x30, 0x1c, 0x04, 0x21, 0x00,
1387 0x22, 0xa6, 0x46, 0xaf, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xaf, 0x4f, 0x38, 0x1c, 0xd1, 0x38,
1388 0x28, 0x60, 0x30, 0x1c, 0x05, 0x21, 0x00, 0x22, 0xa6, 0x46, 0xa9, 0x4b, 0xfe, 0x44, 0x18,
1389 0x47, 0x2f, 0x60, 0x30, 0x1c, 0x06, 0x21, 0x00, 0x22, 0xa6, 0x46, 0xa5, 0x4b, 0xfe, 0x44,
1390 0x18, 0x47, 0x38, 0x1c, 0x32, 0x30, 0x28, 0x60, 0x30, 0x1c, 0x07, 0x21, 0x00, 0x22, 0xa6,
1391 0x46, 0xa0, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x38, 0x1c, 0x62, 0x30, 0x28, 0x60, 0x30, 0x1c,
1392 0x08, 0x21, 0x00, 0x22, 0xa6, 0x46, 0x9b, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xc2, 0x37, 0x2f,
1393 0x60, 0x30, 0x1c, 0x09, 0x21, 0x00, 0x22, 0xa6, 0x46, 0x97, 0x4b, 0xfe, 0x44, 0x18, 0x47,
1394 0xea, 0x48, 0x28, 0x60,
1396 0x01, 0x05, 0xff, 0xff, 0xf4, 0x01, 0x18, 0x00, 0xfa, 0x30, 0x1c, 0x0a, 0x21, 0x00, 0x22,
1397 0xa6, 0x46, 0x92, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe7, 0x48, 0x28, 0x60, 0x30, 0x1c, 0x0b,
1398 0x21, 0x00, 0x22, 0xa6, 0x46, 0x8e, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0xe3, 0x48, 0x28, 0x60,
1399 0xe3, 0x48, 0x00, 0x88, 0x80, 0x0b, 0x4a, 0xd3, 0x00, 0x22, 0x10, 0x1c, 0xc3, 0x00, 0x82,
1400 0x49, 0x06, 0x39, 0xc9, 0x18, 0x0c, 0x88, 0x24, 0x06, 0x24, 0x0e, 0x0c, 0x80, 0x7e, 0x49,
1401 0x04, 0x39, 0xca, 0x52, 0x01, 0x30, 0x14, 0x28, 0xf1, 0xdb, 0x39, 0xe0, 0xbe, 0x46, 0xd9,
1402 0x48, 0xfe, 0x44, 0x00, 0x47, 0xbe, 0x46, 0xda, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xc0, 0x06,
1403 0xc0, 0x0e, 0x81, 0x02, 0xd6, 0x48, 0x00, 0x78, 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x03,
1404 0x21, 0x09, 0x02, 0x01, 0x43, 0xd1, 0x48, 0x00, 0x68, 0x81, 0x86, 0xd3, 0x48, 0x04, 0x70,
1405 0xd4, 0x48, 0xd2, 0x49, 0x08, 0x80, 0xd3, 0x4d, 0x28, 0x1c, 0x08, 0x38, 0x02, 0x21, 0xbe,
1406 0x46, 0x64, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x28, 0x1c, 0x07, 0x21, 0x0c, 0x22, 0xbe, 0x46,
1407 0xce, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0x26, 0x32, 0x1c, 0xce, 0x4d, 0x28, 0x1c, 0x04,
1408 0x38, 0x37, 0x21, 0xbe, 0x46, 0xca, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x28, 0x1c, 0x31, 0x1c,
1409 0xbe, 0x46, 0x58, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x0c, 0xb0, 0xf0, 0xbd, 0xc0, 0x46, 0xa4,
1410 0x62, 0x08, 0x00, 0xac, 0x62, 0x08, 0x00, 0x60, 0x56, 0x08, 0x00, 0xf0, 0xb5, 0x5a, 0x48,
1411 0x00, 0x78, 0x01, 0x28, 0x44, 0xd0, 0x00, 0x28, 0x34, 0xd0, 0x02, 0x28, 0x00, 0xd0, 0x90,
1412 0xe0, 0xbe, 0x49, 0x48, 0x20, 0x40, 0x18, 0x03, 0x88, 0x01, 0x22, 0x1a, 0x43, 0x02, 0x80,
1413 0xaf, 0x4a, 0x70, 0x3a,
1415 0x01, 0x05, 0xff, 0xff, 0xee, 0x02, 0x18, 0x00, 0xfa, 0x13, 0x88, 0x9b, 0x10, 0x9b, 0x00,
1416 0x13, 0x80, 0x7c, 0x23, 0x82, 0x8e, 0x9a, 0x43, 0x32, 0x23, 0x13, 0x43, 0x83, 0x86, 0xb6,
1417 0x48, 0x7a, 0x30, 0x02, 0x88, 0x52, 0x09, 0x53, 0x01, 0x08, 0x22, 0x1a, 0x43, 0x02, 0x80,
1418 0x08, 0x88, 0x40, 0x10, 0x40, 0x00, 0x08, 0x80, 0xf3, 0x4b, 0xff, 0x24, 0x18, 0x88, 0x20,
1419 0x40, 0x03, 0x22, 0x12, 0x02, 0x02, 0x43, 0x1a, 0x80, 0x18, 0x89, 0x20, 0x40, 0xff, 0x22,
1420 0x01, 0x32, 0x02, 0x43, 0x1a, 0x81, 0x02, 0x22, 0x08, 0x88, 0x90, 0x43, 0x08, 0x80, 0xf0,
1421 0xbd, 0x07, 0x21, 0x09, 0x02, 0xea, 0x48, 0xc2, 0x38, 0x0a, 0x1c, 0x01, 0x24, 0xa6, 0x46,
1422 0xe7, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x99, 0x48, 0x01, 0x38, 0x04, 0x70, 0xf0, 0xbd, 0x00,
1423 0x26, 0xe4, 0x48, 0x31, 0x1c, 0x02, 0x22, 0x01, 0x24, 0xa6, 0x46, 0xe0, 0x4b, 0xfe, 0x44,
1424 0x18, 0x47, 0x96, 0x4d, 0x28, 0x1c, 0x08, 0x38, 0x02, 0x21, 0xa6, 0x46, 0x26, 0x4a, 0xfe,
1425 0x44, 0x10, 0x47, 0x02, 0x35, 0x28, 0x1c, 0x07, 0x27, 0x31, 0x1c, 0x0a, 0x1c, 0x39, 0x1c,
1426 0xa6, 0x46, 0x8f, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x28, 0x1c, 0x39, 0x1c, 0x03, 0x22, 0xa6,
1427 0x46, 0x8c, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x8c, 0x4d, 0x28, 0x1c, 0x04, 0x38, 0x08, 0x21,
1428 0x3a, 0x1c, 0xa6, 0x46, 0xec, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x28, 0x1c, 0x02, 0x38, 0x04,
1429 0x21, 0xa6, 0x46, 0xea, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x28, 0x1c, 0x31, 0x1c, 0xa6, 0x46,
1430 0x13, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x0c, 0x49, 0x58, 0x31, 0x0e, 0x80, 0x0c, 0x25, 0x29,
1431 0x1c, 0x81, 0x48, 0xa6, 0x46, 0x13, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xc3, 0x48, 0xa6, 0x38,
1432 0x31, 0x1c, 0x0a, 0x1c,
1434 0x01, 0x05, 0xff, 0xff, 0xe8, 0x03, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0x79, 0x4b, 0xfe, 0x44,
1435 0x18, 0x47, 0xbf, 0x48, 0x64, 0x38, 0x29, 0x1c, 0xa6, 0x46, 0x06, 0x4a, 0xfe, 0x44, 0x10,
1436 0x47, 0xf0, 0xbd, 0x10, 0x60, 0x1a, 0x00, 0xb4, 0x62, 0x08, 0x00, 0xbc, 0x62, 0x08, 0x00,
1437 0xc4, 0x62, 0x08, 0x00, 0xcc, 0x62, 0x08, 0x00, 0x61, 0x48, 0x05, 0x00, 0x08, 0xf0, 0x1a,
1438 0x00, 0x1e, 0xf6, 0x1a, 0x00, 0x14, 0xf6, 0x1a, 0x00, 0xd3, 0x48, 0x05, 0x00, 0x79, 0x48,
1439 0x05, 0x00, 0x98, 0x0b, 0x1a, 0x00, 0x08, 0x09, 0x1a, 0x00, 0xe8, 0x57, 0x08, 0x00, 0x6a,
1440 0x31, 0x19, 0x00, 0xc4, 0x61, 0x1a, 0x00, 0x9e, 0x13, 0x08, 0x00, 0x21, 0x99, 0x05, 0x00,
1441 0xff, 0x48, 0x05, 0x00, 0xdc, 0x09, 0x04, 0x00, 0x25, 0x0d, 0x04, 0x00, 0xf0, 0xb5, 0xba,
1442 0xb0, 0xa5, 0x4d, 0x2e, 0x1c, 0x56, 0x36, 0x30, 0x1c, 0x08, 0x21, 0x01, 0x24, 0xa6, 0x46,
1443 0xc0, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x06, 0x00, 0x0e, 0x37, 0x90, 0x30, 0x1c, 0x00,
1444 0x21, 0xa6, 0x46, 0xbc, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x06, 0x04, 0x28, 0x1c, 0x54, 0x30,
1445 0x00, 0x88, 0x06, 0x43, 0x2f, 0x1c, 0x52, 0x37, 0x38, 0x1c, 0x08, 0x21, 0xa6, 0x46, 0xb7,
1446 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x06, 0x00, 0x0e, 0x38, 0x90, 0x50, 0x35, 0x28, 0x1c,
1447 0x00, 0x21, 0xa6, 0x46, 0xb3, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x39, 0x90, 0x28, 0x1c, 0x0c,
1448 0x21, 0xa6, 0x46, 0x0f, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x05, 0x1c, 0x38, 0x1c, 0x00, 0x21,
1449 0xa6, 0x46, 0xaa, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x00, 0x01, 0x28, 0x43, 0x05, 0x04, 0x2d,
1450 0x0c, 0x02, 0xa8, 0xa9, 0x49, 0xd4, 0x22, 0xa6, 0x46, 0xa8, 0x4b, 0xfe, 0x44, 0x18, 0x47,
1451 0x37, 0x98, 0x08, 0x28,
1453 0x01, 0x05, 0xff, 0xff, 0xe2, 0x04, 0x18, 0x00, 0xfa, 0x58, 0xd1, 0xa6, 0x48, 0xa7, 0x49,
1454 0x42, 0x79, 0x0b, 0x78, 0x93, 0x42, 0x52, 0xd1, 0x02, 0xe0, 0xc0, 0x46, 0x57, 0x4a, 0x05,
1455 0x00, 0x02, 0x79, 0x4b, 0x78, 0x93, 0x42, 0x4a, 0xd1, 0xc2, 0x78, 0x8b, 0x78, 0x93, 0x42,
1456 0x46, 0xd1, 0xff, 0xe7, 0x82, 0x78, 0xcb, 0x78, 0x93, 0x42, 0x41, 0xd1, 0x42, 0x78, 0x0b,
1457 0x79, 0x93, 0x42, 0x3d, 0xd1, 0x00, 0x78, 0x49, 0x79, 0x81, 0x42, 0x39, 0xd1, 0x00, 0x21,
1458 0x08, 0x1c, 0x0b, 0xe0, 0x35, 0x28, 0x34, 0xda, 0x82, 0x00, 0x02, 0xab, 0x9a, 0x58, 0x96,
1459 0x42, 0x03, 0xd0, 0x40, 0x1c, 0x00, 0x06, 0x00, 0x0e, 0x00, 0xe0, 0x21, 0x1c, 0x00, 0x29,
1460 0xf1, 0xd0, 0x78, 0x22, 0x69, 0x46, 0x0a, 0x70, 0xde, 0x22, 0x4a, 0x70, 0xe4, 0x22, 0x8a,
1461 0x70, 0x42, 0x01, 0x38, 0x98, 0x02, 0x43, 0x90, 0x01, 0x28, 0x43, 0x80, 0x01, 0x39, 0x9a,
1462 0x10, 0x43, 0x02, 0x0c, 0xca, 0x70, 0x02, 0x0a, 0x0a, 0x71, 0x48, 0x71, 0x86, 0x48, 0x05,
1463 0x1c, 0xa6, 0x46, 0x86, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x1f, 0x20, 0xa6, 0x46, 0x84, 0x49,
1464 0xfe, 0x44, 0x08, 0x47, 0x84, 0x48, 0x00, 0x78, 0x02, 0x28, 0x05, 0xd1, 0x28, 0x1c, 0x00,
1465 0x21, 0xa6, 0x46, 0x81, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x3a, 0xb0, 0xf0, 0xbd, 0xc0, 0x46,
1466 0x2f, 0x0e, 0x04, 0x00, 0x6a, 0x12, 0x40, 0x00, 0x85, 0x12, 0x00, 0x00, 0x5c, 0x7b, 0x1a,
1467 0x00, 0x55, 0x04, 0x18, 0x00, 0xe8, 0x21, 0x08, 0x00, 0x0f, 0x51, 0x08, 0x00, 0x4f, 0x76,
1468 0x04, 0x00, 0x09, 0x51, 0x08, 0x00, 0xb0, 0x63, 0x08, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a,
1469 0x30, 0x1a, 0x00, 0xa7, 0x48, 0x05, 0x00, 0x15, 0x49, 0x05, 0x00, 0x08, 0x0f, 0x1a, 0x00,
1470 0x24, 0x79, 0x1a, 0x00,
1472 0x01, 0x05, 0xff, 0xff, 0xdc, 0x05, 0x18, 0x00, 0xfa, 0xda, 0x7c, 0x1a, 0x00, 0xf0, 0xb5,
1473 0x6e, 0x4e, 0x06, 0x25, 0x35, 0x70, 0x0f, 0x23, 0x73, 0x70, 0x3d, 0x20, 0xb0, 0x70, 0x29,
1474 0x20, 0xf0, 0x70, 0x03, 0x20, 0x2a, 0x1c, 0x7d, 0x49, 0xe4, 0x31, 0x01, 0x24, 0xa6, 0x46,
1475 0x67, 0x4f, 0xfe, 0x44, 0x38, 0x47, 0xb2, 0x78, 0xf3, 0x78, 0x03, 0x20, 0x78, 0x49, 0xe5,
1476 0x31, 0xa6, 0x46, 0x63, 0x4e, 0xfe, 0x44, 0x30, 0x47, 0x03, 0x20, 0x75, 0x49, 0xe6, 0x31,
1477 0xa6, 0x46, 0x60, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0xa6, 0x46, 0x5f, 0x48, 0xfe, 0x44, 0x00,
1478 0x47, 0x5f, 0x4a, 0x00, 0x21, 0x08, 0x1c, 0x13, 0x68, 0x00, 0x2b, 0x04, 0xd0, 0x03, 0x07,
1479 0x1e, 0x0f, 0x23, 0x1c, 0xb3, 0x40, 0x19, 0x43, 0x03, 0x07, 0x1b, 0x0f, 0x0f, 0x2b, 0x05,
1480 0xd1, 0xc6, 0x08, 0x2b, 0x1c, 0x33, 0x40, 0x57, 0x4e, 0xf1, 0x52, 0x00, 0x21, 0x04, 0x32,
1481 0x01, 0x30, 0x20, 0x28, 0xe9, 0xd3, 0x00, 0x27, 0x54, 0x48, 0x07, 0x70, 0x19, 0x20, 0x40,
1482 0x01, 0x53, 0x49, 0x08, 0x80, 0xff, 0x20, 0x52, 0x49, 0x08, 0x70, 0x52, 0x49, 0x08, 0x70,
1483 0x52, 0x48, 0x07, 0x70, 0x53, 0x48, 0x52, 0x49, 0x08, 0x60, 0x53, 0x48, 0x24, 0x21, 0x01,
1484 0x70, 0x18, 0x21, 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0x10, 0x21, 0xc1, 0x70, 0x57, 0x48,
1485 0x4f, 0x49, 0x08, 0x80, 0xa6, 0x46, 0x4e, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x4e, 0x4e, 0x4e,
1486 0x4d, 0xa6, 0x46, 0x4e, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x31, 0x88, 0x01, 0x40, 0x48, 0x08,
1487 0x04, 0xd0, 0x00, 0x20, 0xc0, 0x43, 0x45, 0x19, 0x85, 0x42, 0xf2, 0xd1, 0xa6, 0x46, 0x48,
1488 0x48, 0xfe, 0x44, 0x00, 0x47, 0x31, 0x88, 0x01, 0x40, 0x48, 0x08, 0x04, 0xd0, 0x5c, 0x20,
1489 0xa6, 0x46, 0x44, 0x49,
1491 0x01, 0x05, 0xff, 0xff, 0xd6, 0x06, 0x18, 0x00, 0xfa, 0xfe, 0x44, 0x08, 0x47, 0xa6, 0x46,
1492 0x43, 0x48, 0xfe, 0x44, 0x00, 0x47, 0x37, 0x80, 0xf0, 0xbd, 0xc0, 0x46, 0x2c, 0x7a, 0x1a,
1493 0x00, 0xdb, 0x4a, 0x05, 0x00, 0xc2, 0x74, 0x1a, 0x00, 0x10, 0xb5, 0x43, 0x69, 0x31, 0x49,
1494 0x09, 0x78, 0x3e, 0x4a, 0x12, 0x78, 0x01, 0x2a, 0x04, 0xd1, 0x1c, 0x78, 0x00, 0x2c, 0x01,
1495 0xd1, 0x2c, 0x49, 0x09, 0x78, 0x3e, 0x4c, 0x24, 0x78, 0x00, 0x2c, 0x1b, 0xd0, 0xff, 0x29,
1496 0x19, 0xd0, 0x01, 0x2a, 0x08, 0xd0, 0x37, 0x4a, 0x12, 0x78, 0x01, 0x2a, 0x13, 0xd0, 0x1a,
1497 0x78, 0x01, 0x2a, 0x01, 0xd0, 0x02, 0x2a, 0x0e, 0xd1, 0x10, 0x22, 0xd4, 0x56, 0x8c, 0x42,
1498 0x0a, 0xdd, 0x61, 0x1a, 0x09, 0x06, 0x09, 0x0e, 0x5b, 0x1c, 0x00, 0x24, 0x1c, 0x57, 0x64,
1499 0x1a, 0x1c, 0x70, 0x01, 0x33, 0x01, 0x3a, 0xf8, 0xd1, 0x2c, 0x49, 0x81, 0x60, 0x2c, 0x48,
1500 0x15, 0x30, 0x10, 0xbd, 0x2c, 0x48, 0x15, 0x30, 0xf7, 0x46, 0xc0, 0x46, 0x2b, 0x49, 0x05,
1501 0x00, 0x41, 0x49, 0x05, 0x00, 0x61, 0x4a, 0x05, 0x00, 0x7f, 0x4a, 0x05, 0x00, 0x6b, 0x4a,
1502 0x05, 0x00, 0xa7, 0x4a, 0x05, 0x00, 0xd4, 0x62, 0x08, 0x00, 0x21, 0xa7, 0x05, 0x00, 0x22,
1503 0x17, 0x08, 0x00, 0x12, 0x56, 0x08, 0x00, 0x79, 0x10, 0x08, 0x00, 0x87, 0x1c, 0x04, 0x00,
1504 0x9d, 0x31, 0x05, 0x00, 0x41, 0x10, 0x08, 0x00, 0xc3, 0x7a, 0x03, 0x00, 0x0c, 0x51, 0x08,
1505 0x00, 0x0b, 0xd4, 0x04, 0x00, 0xf5, 0xd3, 0x04, 0x00, 0x8d, 0x0a, 0x18, 0x00, 0x80, 0x7b,
1506 0x08, 0x00, 0x84, 0xf3, 0x1a, 0x00, 0xb5, 0x63, 0x08, 0x00, 0xcc, 0x24, 0x08, 0x00, 0xf4,
1507 0x63, 0x08, 0x00, 0xf5, 0x63, 0x08, 0x00, 0xfc, 0x63, 0x08, 0x00, 0xa8, 0x63, 0x08, 0x00,
1508 0x36, 0xa0, 0x1b, 0x00,
1510 0x01, 0x05, 0xff, 0xff, 0xd0, 0x07, 0x18, 0x00, 0xfa, 0xac, 0x63, 0x08, 0x00, 0x4c, 0x25,
1511 0x08, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x7c, 0x1a, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x07,
1512 0xff, 0x03, 0x00, 0xd7, 0xd3, 0x04, 0x00, 0xc9, 0x02, 0x18, 0x00, 0xe1, 0x04, 0x00, 0x00,
1513 0xff, 0xff, 0x00, 0x00, 0xfa, 0x63, 0x08, 0x00, 0xf7, 0x63, 0x08, 0x00, 0x10, 0x30, 0x19,
1514 0x00, 0xef, 0x68, 0x00, 0x00, 0xe8, 0x57, 0x08, 0x00, 0xff, 0x15, 0x04, 0x00, 0xf0, 0xb5,
1515 0xc3, 0x49, 0x0c, 0x78, 0x0e, 0x2c, 0x2c, 0xda, 0xc2, 0x4e, 0x3f, 0x20, 0x85, 0x19, 0x60,
1516 0x1c, 0x00, 0x06, 0x00, 0x0e, 0x28, 0x70, 0xbf, 0x4b, 0xa2, 0x00, 0xbf, 0x4f, 0x9f, 0x50,
1517 0x0e, 0x28, 0x18, 0xda, 0xa2, 0x1c, 0x12, 0x06, 0x12, 0x0e, 0x6a, 0x70, 0x80, 0x00, 0xbc,
1518 0x4d, 0x1d, 0x50, 0x0e, 0x2a, 0x08, 0xda, 0xe0, 0x1c, 0x70, 0x72, 0x90, 0x00, 0xb9, 0x4a,
1519 0x1a, 0x50, 0x08, 0x78, 0x03, 0x30, 0x08, 0x70, 0xf0, 0xbd, 0x0a, 0x70, 0x01, 0x20, 0x86,
1520 0x46, 0xb6, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xfe, 0xe7, 0x08, 0x70, 0x01, 0x20, 0x86, 0x46,
1521 0xb2, 0x48, 0xfe, 0x44, 0x00, 0x47, 0xfe, 0xe7, 0x01, 0x20, 0x86, 0x46, 0xaf, 0x48, 0xfe,
1522 0x44, 0x00, 0x47, 0xfe, 0xe7, 0xf8, 0xb5, 0x07, 0x1c, 0xfb, 0x7a, 0xad, 0x48, 0x03, 0x70,
1523 0x3a, 0x7b, 0xac, 0x48, 0x02, 0x70, 0xac, 0x49, 0x7c, 0x7b, 0x0c, 0x70, 0xac, 0x48, 0xbd,
1524 0x7b, 0x05, 0x70, 0xb3, 0x4e, 0x00, 0x2b, 0x00, 0xd0, 0xbe, 0xe0, 0xad, 0x4a, 0x15, 0x1c,
1525 0x8c, 0x3d, 0xb6, 0x4e, 0xb6, 0x0b, 0x01, 0x24, 0xa6, 0x46, 0xa6, 0x48, 0xfe, 0x44, 0x00,
1526 0x47, 0x29, 0x88, 0x01, 0x40, 0x48, 0x08, 0x05, 0xd0, 0x30, 0x1c, 0x41, 0x1e, 0x0e, 0x04,
1527 0x36, 0x0c, 0x00, 0x28,
1529 0x01, 0x05, 0xff, 0xff, 0xca, 0x08, 0x18, 0x00, 0xfa, 0xf0, 0xd1, 0xa6, 0x46, 0x9f, 0x48,
1530 0xfe, 0x44, 0x00, 0x47, 0x29, 0x88, 0x01, 0x40, 0x48, 0x08, 0x04, 0xd0, 0x58, 0x20, 0xa6,
1531 0x46, 0x9b, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x98, 0x48, 0x00, 0x78, 0x9a, 0x4e, 0x01, 0x28,
1532 0x34, 0xd0, 0x00, 0x20, 0x01, 0x1c, 0x0c, 0x20, 0x02, 0x1c, 0x30, 0x1c, 0xa6, 0x46, 0x96,
1533 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x96, 0x48, 0x00, 0x21, 0x08, 0x22, 0xa6, 0x46, 0x95, 0x4b,
1534 0xfe, 0x44, 0x18, 0x47, 0x92, 0x4e, 0x24, 0x36, 0x30, 0x1c, 0x21, 0x1c, 0x0c, 0x22, 0xa6,
1535 0x46, 0x9a, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x07, 0x20, 0x01, 0x1c, 0x20, 0x1c, 0xa6, 0x46,
1536 0x8e, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x14, 0x20, 0xa6, 0x46, 0x8c, 0x49, 0xfe, 0x44, 0x08,
1537 0x47, 0x07, 0x20, 0xa6, 0x46, 0x8c, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x89, 0x49, 0x08, 0x70,
1538 0x30, 0x1c, 0x00, 0x21, 0x0c, 0x22, 0xa6, 0x46, 0x8d, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x85,
1539 0x4e, 0x5b, 0xe0, 0x30, 0x1c, 0x00, 0x21, 0x08, 0x22, 0xa6, 0x46, 0x7d, 0x4b, 0xfe, 0x44,
1540 0x18, 0x47, 0x30, 0x1c, 0x00, 0x21, 0x0c, 0x22, 0xa6, 0x46, 0x79, 0x4b, 0xfe, 0x44, 0x18,
1541 0x47, 0x79, 0x48, 0x00, 0x21, 0x0a, 0x1c, 0xa6, 0x46, 0x78, 0x4b, 0xfe, 0x44, 0x18, 0x47,
1542 0x75, 0x48, 0x00, 0x21, 0x08, 0x22, 0xa6, 0x46, 0x74, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x03,
1543 0x20, 0x02, 0x1c, 0x71, 0x48, 0x02, 0x21, 0xa6, 0x46, 0x7a, 0x4b, 0xfe, 0x44, 0x18, 0x47,
1544 0x0b, 0x20, 0x02, 0x1c, 0x6d, 0x48, 0x21, 0x1c, 0x8e, 0x46, 0x76, 0x4b, 0xfe, 0x44, 0x18,
1545 0x47, 0x20, 0x1c, 0x06, 0x21, 0xa6, 0x46, 0x6a, 0x4a, 0xfe, 0x44, 0x10, 0x47, 0x07, 0x20,
1546 0x01, 0x1c, 0x20, 0x1c,
1548 0x01, 0x05, 0xff, 0xff, 0xc4, 0x09, 0x18, 0x00, 0xfa, 0xa6, 0x46, 0x67, 0x4a, 0xfe, 0x44,
1549 0x10, 0x47, 0x14, 0x20, 0xa6, 0x46, 0x65, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x65, 0x4e, 0x07,
1550 0x20, 0xa6, 0x46, 0x64, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x00, 0x90, 0x06, 0x20, 0xa6, 0x46,
1551 0x61, 0x49, 0xfe, 0x44, 0x08, 0x47, 0x41, 0x00, 0x00, 0x98, 0x01, 0x43, 0x31, 0x70, 0x59,
1552 0x48, 0x00, 0x21, 0x03, 0x22, 0xa6, 0x46, 0x62, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x55, 0x48,
1553 0x00, 0x21, 0x0b, 0x22, 0xa6, 0x46, 0x5e, 0x4b, 0xfe, 0x44, 0x18, 0x47, 0x00, 0x20, 0x28,
1554 0x80, 0x4b, 0x48, 0x04, 0x78, 0x4b, 0x48, 0x05, 0x78, 0x32, 0x78, 0x01, 0xe0, 0x30, 0x1c,
1555 0x02, 0x70, 0xfb, 0x7b, 0x01, 0x2d, 0x25, 0xd1, 0x00, 0x2c, 0x0d, 0xd1, 0x10, 0x1c, 0x09,
1556 0xd0, 0x01, 0x38, 0x05, 0xd0, 0x01, 0x38, 0x01, 0xd0, 0x06, 0x20, 0x16, 0xe0, 0x04, 0x20,
1557 0x14, 0xe0, 0x02, 0x20, 0x12, 0xe0, 0x00, 0x20, 0x10, 0xe0, 0x10, 0x1c, 0x0d, 0xd0, 0x01,
1558 0x38, 0x09, 0xd0, 0x01, 0x38, 0x05, 0xd0, 0x01, 0x38, 0x01, 0xd0, 0x10, 0x20, 0x06, 0xe0,
1559 0x0e, 0x20, 0x04, 0xe0, 0x0c, 0x20, 0x02, 0xe0, 0x0a, 0x20, 0x00, 0xe0, 0x08, 0x20, 0xc0,
1560 0x19, 0xc1, 0x7b, 0x40, 0x4b, 0x19, 0x70, 0x03, 0x7c, 0x3f, 0x48, 0x03, 0x70, 0x03, 0x20,
1561 0x3f, 0x49, 0x01, 0x24, 0xa6, 0x46, 0x3e, 0x4c, 0xfe, 0x44, 0x20, 0x47, 0xf8, 0xbd, 0x30,
1562 0xb5, 0x00, 0x20, 0x4c, 0x49, 0x08, 0x70, 0x4c, 0x48, 0xf7, 0x21, 0x01, 0x70, 0xff, 0x21,
1563 0x41, 0x70, 0x81, 0x70, 0x7f, 0x21, 0xc1, 0x70, 0x20, 0x4a, 0x10, 0x1f, 0x38, 0x49, 0x08,
1564 0x60, 0x1d, 0x4b, 0x01, 0x21, 0x19, 0x70, 0x37, 0x48, 0x10, 0x60, 0x02, 0x25, 0x38, 0x48,
1565 0x04, 0x1c, 0x33, 0x34,
1567 0x01, 0x05, 0xff, 0xff, 0xbe, 0x0a, 0x18, 0x00, 0xfa, 0x25, 0x70, 0x34, 0x4c, 0x54, 0x60,
1568 0x03, 0x24, 0x1c, 0x71, 0x33, 0x4c, 0x94, 0x60, 0x04, 0x24, 0x04, 0x70, 0x33, 0x4c, 0xd4,
1569 0x60, 0x05, 0x24, 0xc4, 0x73, 0x32, 0x4c, 0x14, 0x61, 0x06, 0x24, 0x9c, 0x71, 0x31, 0x4c,
1570 0x54, 0x61, 0x07, 0x24, 0xdc, 0x71, 0xdc, 0x1d, 0x30, 0x4d, 0x95, 0x61, 0x08, 0x25, 0x15,
1571 0x38, 0x05, 0x70, 0x2e, 0x48, 0xd0, 0x61, 0x09, 0x20, 0x60, 0x77, 0x2d, 0x48, 0x10, 0x62,
1572 0x0a, 0x20, 0xc3, 0x18, 0x18, 0x70, 0x2c, 0x48, 0x50, 0x62, 0x0b, 0x20, 0xd8, 0x75, 0x2b,
1573 0x4b, 0x93, 0x62, 0x03, 0x4a, 0x10, 0x70, 0x8e, 0x46, 0x29, 0x48, 0xfe, 0x44, 0x00, 0x47,
1574 0x30, 0xbd, 0xb4, 0x63, 0x08, 0x00, 0x8c, 0x53, 0x08, 0x00, 0xb8, 0x63, 0x08, 0x00, 0x4d,
1575 0x76, 0x08, 0x00, 0x57, 0x76, 0x08, 0x00, 0x39, 0x76, 0x08, 0x00, 0x01, 0x64, 0x08, 0x00,
1576 0xf6, 0x63, 0x08, 0x00, 0xf9, 0x63, 0x08, 0x00, 0xf8, 0x63, 0x08, 0x00, 0xfa, 0x63, 0x08,
1577 0x00, 0x07, 0xff, 0x03, 0x00, 0xd7, 0xd3, 0x04, 0x00, 0x16, 0xf6, 0x1a, 0x00, 0xd3, 0x48,
1578 0x05, 0x00, 0x8c, 0x7c, 0x1a, 0x00, 0xa7, 0x48, 0x05, 0x00, 0x21, 0x99, 0x05, 0x00, 0xbb,
1579 0x16, 0x04, 0x00, 0xf7, 0x63, 0x08, 0x00, 0x67, 0x99, 0x05, 0x00, 0xf4, 0x63, 0x08, 0x00,
1580 0xf5, 0x63, 0x08, 0x00, 0xae, 0x05, 0x00, 0x00, 0x0b, 0xd4, 0x04, 0x00, 0xff, 0xff, 0xff,
1581 0x1f, 0x91, 0x48, 0x05, 0x00, 0x88, 0x53, 0x08, 0x00, 0x1b, 0x76, 0x08, 0x00, 0x43, 0x76,
1582 0x08, 0x00, 0x75, 0x76, 0x08, 0x00, 0xca, 0x53, 0x08, 0x00, 0x7f, 0x76, 0x08, 0x00, 0x61,
1583 0x76, 0x08, 0x00, 0x6b, 0x76, 0x08, 0x00, 0x11, 0x76, 0x08, 0x00, 0x07, 0x76, 0x08, 0x00,
1584 0xfd, 0x75, 0x08, 0x00,
1586 0x01, 0x05, 0xff, 0x19, 0xb8, 0x0b, 0x18, 0x00, 0x14, 0x2f, 0x76, 0x08, 0x00, 0x25, 0x76,
1587 0x08, 0x00, 0x11, 0x08, 0x18, 0x00, 0xfb, 0x63, 0x08, 0x00, 0xf0, 0x63, 0x08, 0x00,
1589 0x01, 0x83, 0xff, 0x14, 0x79, 0x7b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1590 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1594 0x01, 0xdc, 0xfd, 0x05, 0x00, 0x00, 0x00, 0x00, 0x12,
1596 0x01, 0x0f, 0xfd, 0x01, 0x01,
1600 // ##--------------------------------------------------------------------------------
1601 // ## Description: QRCA_L_TRIOL PHY FW Initialization Script
1602 // ## Version: 3.17_3 (based on ROM version)
1603 // ##--------------------------------------------------------------------------------
1604 0x01, 0x01, 0xff, 0x06, 0xc6, 0x32, 0x19, 0x00, 0x10, 0x10,
1606 0x01, 0x01, 0xff, 0x06, 0x60, 0x32, 0x19, 0x00, 0x32, 0x10,
1608 0x01, 0x82, 0xfd, 0x14, 0x00, 0x9c, 0x18, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xdc,
1609 0xe6, 0xf0, 0xfa, 0x04, 0x0e, 0x18, 0xff, 0x00, 0x00,
1611 0x01, 0x82, 0xfd, 0x14, 0x01, 0x9c, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xd8,
1612 0xe2, 0xec, 0xf6, 0x00, 0x0a, 0x14, 0xff, 0x00, 0x00,
1614 0x01, 0x82, 0xfd, 0x14, 0x02, 0x9c, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xd8,
1615 0xe2, 0xec, 0xf6, 0x00, 0x0a, 0x14, 0xff, 0x00, 0x00,
1617 0x01, 0x87, 0xfd, 0x03, 0x0d, 0x0d, 0x0d,
1619 0x01, 0x76, 0xfd, 0x31, 0x01, 0x21, 0x54, 0x00, 0x00, 0x61, 0x57, 0x00, 0x00, 0x14, 0x05,
1620 0x0a, 0x05, 0x00, 0x07, 0x06, 0x0a, 0x04, 0x05, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x10,
1621 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
1622 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
1624 0x01, 0x80, 0xfd, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
1626 0x01, 0x80, 0xfd, 0x06, 0x3c, 0xf0, 0x5f, 0x00, 0x00, 0x00,
1631 0x01, 0x38, 0xfe, 0x00,
1634 // # BLE
1635 // #--------------------------------------------------------------------------------
1636 // # Description: BRF6450 WB FW Initialization Script
1637 // #
1638 // # Compatibility: BRF6450 PG1 ROM
1639 // #
1640 // # Last Updated: 07-Oct-2010 15:19:44.57
1641 // #
1642 // # Version: 1.0
1643 // #
1644 // #--------------------------------------------------------------------------------
1647 // #BLE Enable
1648 0x01, 0x5b, 0xfd, 0x02, 0x01, 0x01,
1651 // # Disable Cortex Sleep
1652 0x01, 0xa8, 0xfd, 0x01, 0x01,
1656 // # Cortex Reset (hold in reset while loading IMEM)
1657 0x01, 0x09, 0xfd, 0x08, 0x00, 0xc0, 0x1b, 0x00, 0x01, 0x00, 0x01, 0x00,
1659 // ########################
1660 // # Patch Start
1661 // ########################
1663 0x01, 0x05, 0xff, 0x41, 0x60, 0x5c, 0x1b, 0x00, 0x3c, 0x01, 0x68, 0xb1, 0xf1, 0xff, 0x3f,
1664 0x1c, 0xbf, 0x49, 0x1c, 0x01, 0x60, 0x13, 0xd1, 0x41, 0x68, 0x00, 0x23, 0x03, 0x60, 0x01,
1665 0xf0, 0x7f, 0x02, 0x7f, 0x2a, 0x04, 0xbf, 0x21, 0xf0, 0x7f, 0x01, 0x41, 0x60, 0x4f, 0xea,
1666 0x41, 0x62, 0x06, 0xd0, 0x02, 0xf1, 0x00, 0x72, 0x21, 0xf0, 0x7f, 0x01, 0x41, 0xea, 0x52,
1667 0x61, 0x41, 0x60, 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5,
1669 0x01, 0x05, 0xff, 0xcd, 0x8c, 0x6e, 0x1b, 0x00, 0xc8, 0x40, 0xf2, 0x00, 0x04, 0xc2, 0xf2,
1670 0x00, 0x04, 0xd4, 0xf8, 0x8c, 0x25, 0x40, 0xf2, 0x00, 0x05, 0x01, 0x78, 0x6f, 0xf3, 0x1f,
1671 0x42, 0xc2, 0xf2, 0x30, 0x05, 0x15, 0x43, 0x42, 0xf2, 0x6c, 0x4b, 0x29, 0x80, 0x43, 0xf2,
1672 0x00, 0x02, 0xc4, 0xf2, 0x00, 0x0b, 0x00, 0x23, 0xab, 0xf8, 0x00, 0x30, 0x4f, 0xf4, 0x20,
1673 0x63, 0xc2, 0xf2, 0x31, 0x02, 0x01, 0x21, 0x41, 0xf2, 0x08, 0x46, 0x40, 0x27, 0x4f, 0xf0,
1674 0x78, 0x0c, 0x53, 0x80, 0x16, 0x80, 0xd7, 0x83, 0xa2, 0xf8, 0x1c, 0xc0, 0x91, 0x80, 0x11,
1675 0x84, 0x02, 0x78, 0x10, 0x2a, 0x80, 0xf2, 0xbf, 0x80, 0x13, 0x46, 0x00, 0x2b, 0x05, 0xf1,
1676 0x02, 0x05, 0x2b, 0xd0, 0x5b, 0x1e, 0x1d, 0xd0, 0x5b, 0x1e, 0x0e, 0xd0, 0x5b, 0x1e, 0x30,
1677 0xd1, 0x42, 0xf2, 0x46, 0x42, 0xc2, 0xf2, 0x31, 0x02, 0x00, 0x23, 0x93, 0x80, 0x11, 0x80,
1678 0x02, 0x78, 0x4f, 0xf4, 0x80, 0x7a, 0x41, 0xf2, 0x11, 0x08, 0x23, 0xe0, 0x42, 0xf2, 0x46,
1679 0x42, 0xc2, 0xf2, 0x31, 0x02, 0x02, 0x23, 0x93, 0x80, 0x11, 0x80, 0x02, 0x78, 0x4f, 0xf4,
1680 0x80, 0x7a, 0x41, 0xf2, 0x11, 0x08, 0x16, 0xe0, 0x42, 0xf2, 0x46, 0x42, 0xc2, 0xf2, 0x31,
1681 0x02, 0x02, 0x23, 0x93, 0x80, 0x11, 0x80, 0x02, 0x78, 0x8a, 0x46, 0x41, 0xf2, 0x01, 0x18,
1682 0x0a, 0xe0, 0x42, 0xf2, 0x46, 0x42, 0xc2, 0xf2, 0x31, 0x02, 0x00, 0x23, 0x93, 0x80,
1684 0x01, 0x05, 0xff, 0xcd, 0x54, 0x6f, 0x1b, 0x00, 0xc8, 0x11, 0x80, 0x41, 0xf2, 0x10, 0x18,
1685 0x8a, 0x46, 0x02, 0x78, 0x42, 0xf2, 0x48, 0x49, 0x4f, 0xf2, 0x04, 0x07, 0x10, 0x2a, 0x7c,
1686 0xda, 0xc2, 0xf2, 0x31, 0x09, 0xc2, 0xf2, 0x32, 0x07, 0x00, 0x20, 0x00, 0x26, 0xab, 0xf8,
1687 0x00, 0x00, 0x25, 0xf8, 0x02, 0x6b, 0x4f, 0xf0, 0x15, 0x0e, 0xa9, 0xf8, 0x00, 0xe0, 0x94,
1688 0xf8, 0x05, 0x26, 0x10, 0x2a, 0x04, 0xda, 0x39, 0x88, 0x01, 0x20, 0x90, 0x40, 0x08, 0x43,
1689 0x38, 0x80, 0xc6, 0xf1, 0xfa, 0x00, 0x80, 0xb2, 0xfe, 0xf7, 0xb7, 0xfb, 0x11, 0x20, 0xa9,
1690 0xf8, 0x00, 0x00, 0x94, 0xf8, 0x10, 0x26, 0x10, 0x2a, 0x04, 0xda, 0x39, 0x88, 0x01, 0x20,
1691 0x90, 0x40, 0x08, 0x43, 0x38, 0x80, 0xfa, 0x20, 0xfe, 0xf7, 0xa8, 0xfb, 0xbb, 0xf8, 0x00,
1692 0x00, 0x1a, 0xea, 0x00, 0x0f, 0x25, 0xf8, 0x02, 0x0b, 0x02, 0xd0, 0x18, 0xea, 0x00, 0x0f,
1693 0x09, 0xd0, 0x94, 0xf8, 0x49, 0x06, 0x40, 0xf0, 0x04, 0x00, 0x84, 0xf8, 0x49, 0x06, 0x4f,
1694 0xf4, 0xfa, 0x70, 0xfe, 0xf7, 0x94, 0xfb, 0x10, 0x20, 0xa9, 0xf8, 0x00, 0x00, 0x94, 0xf8,
1695 0x10, 0x26, 0x38, 0x46, 0x10, 0x2a, 0x08, 0xda, 0x01, 0x88, 0x4f, 0xf0, 0x01, 0x0e, 0x0e,
1696 0xfa, 0x02, 0xf0, 0x81, 0x43, 0xbc, 0x46, 0xac, 0xf8, 0x00, 0x10, 0x32, 0x20, 0xfe, 0xf7,
1697 0x80, 0xfb, 0x14, 0x20, 0xa9, 0xf8, 0x00, 0x00, 0x94, 0xf8, 0x05, 0x26, 0x38, 0x46,
1699 0x01, 0x05, 0xff, 0xcd, 0x1c, 0x70, 0x1b, 0x00, 0xc8, 0x10, 0x2a, 0x08, 0xda, 0x01, 0x88,
1700 0x4f, 0xf0, 0x01, 0x0e, 0x0e, 0xfa, 0x02, 0xf0, 0x81, 0x43, 0xbc, 0x46, 0xac, 0xf8, 0x00,
1701 0x10, 0x32, 0x20, 0xfe, 0xf7, 0x6c, 0xfb, 0xbb, 0xf8, 0x00, 0x00, 0x41, 0xf2, 0x11, 0x11,
1702 0x25, 0xf8, 0x02, 0x0b, 0x01, 0x42, 0x1e, 0xbf, 0x94, 0xf8, 0x49, 0x06, 0x40, 0xf0, 0x08,
1703 0x00, 0x84, 0xf8, 0x49, 0x06, 0xc8, 0x20, 0xfe, 0xf7, 0x5b, 0xfb, 0x76, 0x1c, 0xfa, 0x2e,
1704 0x4f, 0xf0, 0x00, 0x00, 0x88, 0xd3, 0x94, 0xf8, 0x49, 0x06, 0x00, 0xf0, 0x7f, 0x00, 0x84,
1705 0xf8, 0x49, 0x06, 0xbd, 0xe8, 0xf0, 0x8f, 0x30, 0xb5, 0x41, 0xf6, 0x48, 0x44, 0x41, 0xf6,
1706 0x30, 0x45, 0x00, 0x21, 0x03, 0x20, 0xc2, 0xf2, 0x00, 0x04, 0xc2, 0xf2, 0x00, 0x05, 0x0a,
1707 0x46, 0x63, 0x7a, 0xe8, 0x75, 0xf9, 0xf7, 0x57, 0xfb, 0x63, 0x7a, 0xe8, 0x7d, 0x00, 0x22,
1708 0x01, 0x21, 0xf9, 0xf7, 0x51, 0xfb, 0x40, 0xf6, 0x6a, 0x20, 0x07, 0x21, 0xc2, 0xf2, 0x32,
1709 0x00, 0xff, 0xf7, 0xbc, 0xfa, 0x00, 0x21, 0x22, 0x7a, 0x31, 0x20, 0xff, 0xf7, 0x0d, 0xfa,
1710 0x43, 0xf2, 0x5c, 0x10, 0x00, 0x21, 0xc2, 0xf2, 0x31, 0x00, 0xff, 0xf7, 0xb0, 0xfa, 0x20,
1711 0x7a, 0x10, 0xb9, 0x00, 0xf0, 0x79, 0xff, 0x30, 0xbd, 0x00, 0xf0, 0xdf, 0xfe, 0x30, 0xbd,
1712 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1714 0x01, 0x05, 0xff, 0xcd, 0xe4, 0x70, 0x1b, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1715 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1716 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1717 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1718 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1719 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1720 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1721 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1722 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1723 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1724 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1725 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1726 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1727 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1729 0x01, 0x05, 0xff, 0x11, 0xac, 0x71, 0x1b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1730 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1732 0x01, 0x05, 0xff, 0x15, 0x0c, 0x7f, 0x1b, 0x00, 0x10, 0x10, 0xbd, 0x00, 0xb5, 0x41, 0xf6,
1733 0x50, 0x40, 0xc2, 0xf2, 0x00, 0x00, 0x00, 0x21, 0x02, 0x78,
1735 0x01, 0x05, 0xff, 0x15, 0x30, 0x7f, 0x1b, 0x00, 0x10, 0xff, 0xf7, 0xa0, 0xf8, 0x00, 0xbd,
1736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1739 // ########################
1740 // # Patch End
1741 // ########################
1743 // #release Cortex Reset
1744 0x01, 0x09, 0xfd, 0x08, 0x00, 0xc0, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00,
1747 // # Enable Cortex Sleep
1748 0x01, 0xa8, 0xfd, 0x01, 0x00,
1751 // #RESET BLE
1752 0x01, 0x5b, 0xfd, 0x02, 0x01, 0x00,
1755 0x01, 0xdd, 0xfd, 0x01, 0x01,
1758 // #################################################################
1759 // ## START of Panasonic Adds-On
1760 // #################################################################
1762 // ## Enable fast clock XTAL support
1763 0x01, 0x1c, 0xfd, 0x14, 0x01, 0x88, 0x13, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0xff, 0xff,
1764 0x04, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00,
1767 // ## Enable LPS
1768 0x01, 0x2e, 0xfd, 0x0d, 0x01, 0x58, 0x02, 0x06, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
1769 0x00, 0x00,
1772 // ## Enable eHCILL
1773 // 0x01, 0x2b, 0xfd, 0x05, 0x10, 0x00, 0x50, 0x00, 0x96,
1775 //DGV: disable eHCILL
1776 0x01, 0x0c, 0xfd, 0x09 , 0x01, 0, 0, 0xff, 0xff, 0xff, 0xff, 100, 0,
1779 // 0x01, 0x0c, 0xfd, 0x09, 0x01, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x64, 0x00,
1782 // #################################################################
1783 // ## END of Panasonic Adds-On
1784 // #################################################################
1787 //terminate
1788 0x00
1790 #endif // #if defined(BT_MODULE_CC256X)